Skip to content

Commit

Permalink
Allow numbers as preferredChildIndex; support updates
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesplease committed Jul 19, 2021
1 parent 757fe6c commit eded252
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 4 deletions.
2 changes: 2 additions & 0 deletions src/focus-node.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,7 @@ export function FocusNode(
wrapping,
trap: isTrap,
forgetTrapFocusHierarchy,
preferredChildIndex,
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
Expand All @@ -395,6 +396,7 @@ export function FocusNode(
wrapping,
isTrap,
forgetTrapFocusHierarchy,
preferredChildIndex,
]);

useEffect(() => {
Expand Down
3 changes: 3 additions & 0 deletions src/focus-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ interface CreateFocusStoreOptions {
// When these props of a node change, then the store
// will alert subscribers.
const dynamicNodeProps = [
'preferredChildIndex',
'disabled',
'isExiting',
'defaultFocusColumn',
Expand Down Expand Up @@ -321,6 +322,8 @@ export default function createFocusStore({
forgetTrapFocusHierarchy:
update.forgetTrapFocusHierarchy ??
currentNode.forgetTrapFocusHierarchy,
preferredChildIndex:
update.preferredChildIndex ?? currentNode.preferredChildIndex,
};

const updatedChildren = recursivelyUpdateChildren(
Expand Down
9 changes: 5 additions & 4 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ export interface RootFocusNode extends BaseNode {
wrapping: boolean;
disabled: boolean;
trap: boolean;
preferredChildIndex?: () => number;
preferredChildIndex?: number | (() => number);

defaultFocusColumn: number;
defaultFocusRow: number;
Expand All @@ -136,6 +136,7 @@ export interface NodeUpdate {
forgetTrapFocusHierarchy?: boolean;
defaultFocusColumn?: number;
defaultFocusRow?: number;
preferredChildIndex?: number | (() => number);
}

export interface FocusNode extends BaseNode {
Expand All @@ -150,7 +151,7 @@ export interface FocusNode extends BaseNode {
disabled: boolean;
navigationStyle: NavigationStyle;
nodeNavigationItem: NodeNavigationItem;
preferredChildIndex?: () => number;
preferredChildIndex?: number | (() => number);

defaultFocusColumn: number;
defaultFocusRow: number;
Expand Down Expand Up @@ -191,7 +192,7 @@ export interface NodeDefinition extends FocusNodeEvents {
trap?: boolean;
navigationStyle?: NavigationStyle;
initiallyDisabled?: boolean;
preferredChildIndex?: () => number;
preferredChildIndex?: number | (() => number);

wrapGridVertical?: boolean;
wrapGridHorizontal?: boolean;
Expand Down Expand Up @@ -254,7 +255,7 @@ export interface FocusNodeProps extends FocusNodeEvents {
isExiting?: boolean;
onMountAssignFocusTo?: Id;
disabled?: boolean;
preferredChildIndex?: () => number;
preferredChildIndex?: number | (() => number);

onClick?: (e: any) => void;
onMouseOver?: (e: any) => void;
Expand Down

0 comments on commit eded252

Please sign in to comment.