You've already forked matrix-react-sdk
mirror of
https://github.com/matrix-org/matrix-react-sdk.git
synced 2025-11-17 17:42:41 +03:00
Integrate handleHomeEnd
This commit is contained in:
@@ -23,6 +23,7 @@ import React, {
|
|||||||
useRef,
|
useRef,
|
||||||
useReducer,
|
useReducer,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
import PropTypes from "prop-types";
|
||||||
import {Key} from "../Keyboard";
|
import {Key} from "../Keyboard";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -128,7 +129,7 @@ const reducer = (state, action) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const RovingTabIndexProvider = ({children}) => {
|
export const RovingTabIndexProvider = ({children, handleHomeEnd}) => {
|
||||||
const [state, dispatch] = useReducer(reducer, {
|
const [state, dispatch] = useReducer(reducer, {
|
||||||
activeRef: null,
|
activeRef: null,
|
||||||
refs: [],
|
refs: [],
|
||||||
@@ -136,13 +137,24 @@ export const RovingTabIndexProvider = ({children}) => {
|
|||||||
|
|
||||||
const context = useMemo(() => ({state, dispatch}), [state]);
|
const context = useMemo(() => ({state, dispatch}), [state]);
|
||||||
|
|
||||||
|
if (handleHomeEnd) {
|
||||||
|
return <RovingTabIndexContext.Provider value={context}>
|
||||||
|
<HomeEndHelper>
|
||||||
|
{ children }
|
||||||
|
</HomeEndHelper>
|
||||||
|
</RovingTabIndexContext.Provider>
|
||||||
|
}
|
||||||
|
|
||||||
return <RovingTabIndexContext.Provider value={context}>
|
return <RovingTabIndexContext.Provider value={context}>
|
||||||
{ children }
|
{ children }
|
||||||
</RovingTabIndexContext.Provider>;
|
</RovingTabIndexContext.Provider>;
|
||||||
};
|
};
|
||||||
|
RovingTabIndexProvider.propTypes = {
|
||||||
|
handleHomeEnd: PropTypes.bool,
|
||||||
|
};
|
||||||
|
|
||||||
// Helper to handle Home/End to jump to first/last roving-tab-index for widgets such as treeview
|
// Helper to handle Home/End to jump to first/last roving-tab-index for widgets such as treeview
|
||||||
export const RovingTabIndexHomeEndHelper = ({children}) => {
|
export const HomeEndHelper = ({children}) => {
|
||||||
const context = useContext(RovingTabIndexContext);
|
const context = useContext(RovingTabIndexContext);
|
||||||
|
|
||||||
const onKeyDown = useCallback((ev) => {
|
const onKeyDown = useCallback((ev) => {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ import * as sdk from "../../../index";
|
|||||||
import * as Receipt from "../../../utils/Receipt";
|
import * as Receipt from "../../../utils/Receipt";
|
||||||
import {Resizer} from '../../../resizer';
|
import {Resizer} from '../../../resizer';
|
||||||
import {Layout, Distributor} from '../../../resizer/distributors/roomsublist2';
|
import {Layout, Distributor} from '../../../resizer/distributors/roomsublist2';
|
||||||
import {RovingTabIndexProvider, RovingTabIndexHomeEndHelper} from "../../../accessibility/RovingTabIndex";
|
import {RovingTabIndexProvider} from "../../../accessibility/RovingTabIndex";
|
||||||
|
|
||||||
const HIDE_CONFERENCE_CHANS = true;
|
const HIDE_CONFERENCE_CHANS = true;
|
||||||
const STANDARD_TAGS_REGEX = /^(m\.(favourite|lowpriority|server_notice)|im\.vector\.fake\.(invite|recent|direct|archived))$/;
|
const STANDARD_TAGS_REGEX = /^(m\.(favourite|lowpriority|server_notice)|im\.vector\.fake\.(invite|recent|direct|archived))$/;
|
||||||
@@ -788,10 +788,8 @@ export default createReactClass({
|
|||||||
onMouseMove={this.onMouseMove}
|
onMouseMove={this.onMouseMove}
|
||||||
onMouseLeave={this.onMouseLeave}
|
onMouseLeave={this.onMouseLeave}
|
||||||
>
|
>
|
||||||
<RovingTabIndexProvider>
|
<RovingTabIndexProvider handleHomeEnd={true}>
|
||||||
<RovingTabIndexHomeEndHelper>
|
|
||||||
{ subListComponents }
|
{ subListComponents }
|
||||||
</RovingTabIndexHomeEndHelper>
|
|
||||||
</RovingTabIndexProvider>
|
</RovingTabIndexProvider>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user