@applicaster/zapp-react-native-ui-components 14.0.0-rc.61 → 14.0.0-rc.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Components/Focusable/Touchable.tsx +5 -3
- package/Components/Focusable/index.android.tsx +8 -4
- package/Components/FocusableList/FocusableItem.tsx +4 -3
- package/Components/FocusableList/FocusableListItemWrapper.tsx +2 -1
- package/Components/FocusableList/hooks/useCellState.android.ts +13 -3
- package/Components/FocusableList/index.tsx +14 -7
- package/Components/ScreenRevealManager/__tests__/ScreenRevealManager.test.ts +2 -2
- package/events/index.ts +2 -0
- package/package.json +5 -5
|
@@ -9,7 +9,8 @@ type Props = {
|
|
|
9
9
|
onLongPress?: (ref: FocusManager.TouchableRef) => void;
|
|
10
10
|
onFocus?: (
|
|
11
11
|
ref: FocusManager.TouchableRef,
|
|
12
|
-
options: FocusManager.Android.CallbackOptions
|
|
12
|
+
options: FocusManager.Android.CallbackOptions,
|
|
13
|
+
context: Option<FocusManager.FocusContext>
|
|
13
14
|
) => void;
|
|
14
15
|
onBlur?: (
|
|
15
16
|
ref: FocusManager.TouchableRef,
|
|
@@ -39,9 +40,10 @@ export class Touchable extends React.Component<Props> {
|
|
|
39
40
|
|
|
40
41
|
onFocus(
|
|
41
42
|
focusableRef: FocusManager.TouchableRef,
|
|
42
|
-
options: FocusManager.Android.CallbackOptions
|
|
43
|
+
options: FocusManager.Android.CallbackOptions,
|
|
44
|
+
context: Option<FocusManager.FocusContext>
|
|
43
45
|
): void {
|
|
44
|
-
this.props?.onFocus?.(focusableRef, options);
|
|
46
|
+
this.props?.onFocus?.(focusableRef, options, context);
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
onBlur(
|
|
@@ -22,7 +22,8 @@ type Props = {
|
|
|
22
22
|
onPress?: (ref: FocusManager.FocusableRef) => void;
|
|
23
23
|
onFocus?: (
|
|
24
24
|
ref: FocusManager.FocusableRef,
|
|
25
|
-
options: FocusManager.Android.CallbackOptions
|
|
25
|
+
options: FocusManager.Android.CallbackOptions,
|
|
26
|
+
context?: FocusManager.FocusContext
|
|
26
27
|
) => void;
|
|
27
28
|
onBlur?: (
|
|
28
29
|
ref: FocusManager.FocusableRef,
|
|
@@ -32,6 +33,7 @@ type Props = {
|
|
|
32
33
|
onPressOut?: (ref: FocusManager.FocusableRef) => void;
|
|
33
34
|
onLongPress?: (ref: FocusManager.FocusableRef) => void;
|
|
34
35
|
onRegister?: () => void;
|
|
36
|
+
onUnregister?: () => void;
|
|
35
37
|
isFocusableCell?: boolean;
|
|
36
38
|
/** only for FocusableScrollView */
|
|
37
39
|
onSetIsFocusable?: (isFocusable: boolean) => void;
|
|
@@ -70,6 +72,7 @@ function FocusableComponent(props: Props, forwardedRef) {
|
|
|
70
72
|
onPressOut,
|
|
71
73
|
onLongPress,
|
|
72
74
|
onRegister = noop,
|
|
75
|
+
onUnregister = noop,
|
|
73
76
|
isFocusableCell = true,
|
|
74
77
|
onSetIsFocusable,
|
|
75
78
|
} = props;
|
|
@@ -113,9 +116,10 @@ function FocusableComponent(props: Props, forwardedRef) {
|
|
|
113
116
|
|
|
114
117
|
return () => {
|
|
115
118
|
unregister();
|
|
119
|
+
onUnregister();
|
|
116
120
|
};
|
|
117
121
|
}
|
|
118
|
-
}, [id, onRegister, isFocusableCell, parentFocusableId]);
|
|
122
|
+
}, [id, onRegister, onUnregister, isFocusableCell, parentFocusableId]);
|
|
119
123
|
|
|
120
124
|
if (R.isNil(id)) {
|
|
121
125
|
// eslint-disable-next-line no-console
|
|
@@ -125,9 +129,9 @@ function FocusableComponent(props: Props, forwardedRef) {
|
|
|
125
129
|
}
|
|
126
130
|
|
|
127
131
|
const _onFocus = React.useCallback(
|
|
128
|
-
(ref, options) => {
|
|
132
|
+
(ref, options, context) => {
|
|
129
133
|
setFocused(true);
|
|
130
|
-
onFocus?.(ref, options);
|
|
134
|
+
onFocus?.(ref, options, context);
|
|
131
135
|
},
|
|
132
136
|
[onFocus]
|
|
133
137
|
);
|
|
@@ -10,7 +10,8 @@ type FocusableItemComponentProps = {
|
|
|
10
10
|
onFocus: (
|
|
11
11
|
element: FocusManager.FocusableRef,
|
|
12
12
|
renderArgs: { item: FocusableItemComponentProps["item"]; index: number },
|
|
13
|
-
|
|
13
|
+
options: FocusManager.Android.CallbackOptions,
|
|
14
|
+
context: Option<FocusManager.FocusContext>
|
|
14
15
|
) => void;
|
|
15
16
|
onListElementFocus?: (any, RenderItemProps, Direction) => void;
|
|
16
17
|
onListElementBlur?: (any, RenderItemProps, Direction) => void;
|
|
@@ -45,8 +46,8 @@ const FocusableItemComponent = ({
|
|
|
45
46
|
const renderArgs = { item, index };
|
|
46
47
|
|
|
47
48
|
const onFocusHandler = React.useCallback(
|
|
48
|
-
(element,
|
|
49
|
-
onFocus?.(element, renderArgs,
|
|
49
|
+
(element, options, context) => {
|
|
50
|
+
onFocus?.(element, renderArgs, options, context);
|
|
50
51
|
},
|
|
51
52
|
[item, onFocus]
|
|
52
53
|
);
|
|
@@ -17,7 +17,8 @@ type Props = {
|
|
|
17
17
|
onFocus: (
|
|
18
18
|
element: FocusManager.FocusableRef,
|
|
19
19
|
renderArgs: { item: Item; index: number },
|
|
20
|
-
|
|
20
|
+
options: FocusManager.Android.CallbackOptions,
|
|
21
|
+
context: FocusManager.FocusContext
|
|
21
22
|
) => void;
|
|
22
23
|
onListElementBlur?: (any, RenderItemProps, Direction) => void;
|
|
23
24
|
onListElementPress?: (any, RenderItemProps) => void;
|
|
@@ -10,15 +10,25 @@ export const useCellState = (id: string) => {
|
|
|
10
10
|
);
|
|
11
11
|
|
|
12
12
|
React.useEffect(() => {
|
|
13
|
-
const
|
|
13
|
+
const focusHandler = (focusable) => {
|
|
14
14
|
const isChildren = focusManager.isFocusableChildOf(focusable, id);
|
|
15
|
+
|
|
15
16
|
setCurrentCellFocused(isChildren);
|
|
16
17
|
};
|
|
17
18
|
|
|
18
|
-
focusManager.on(FOCUS_EVENTS.FOCUS,
|
|
19
|
+
focusManager.on(FOCUS_EVENTS.FOCUS, focusHandler);
|
|
20
|
+
|
|
21
|
+
const resetHandler = ({ focusedId }) => {
|
|
22
|
+
if (id === focusedId) {
|
|
23
|
+
setCurrentCellFocused(false);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
focusManager.on(FOCUS_EVENTS.RESET, resetHandler);
|
|
19
28
|
|
|
20
29
|
return () => {
|
|
21
|
-
focusManager.removeHandler(FOCUS_EVENTS.FOCUS,
|
|
30
|
+
focusManager.removeHandler(FOCUS_EVENTS.FOCUS, focusHandler);
|
|
31
|
+
focusManager.removeHandler(FOCUS_EVENTS.RESET, resetHandler);
|
|
22
32
|
};
|
|
23
33
|
}, [id]);
|
|
24
34
|
|
|
@@ -30,17 +30,24 @@ export type IListRenderItem<ItemT> = (
|
|
|
30
30
|
export const getFocusableId = (parentId, index) =>
|
|
31
31
|
`${parentId}___index:${index}`;
|
|
32
32
|
|
|
33
|
+
type Item = ZappEntry | ZappUIComponent | any;
|
|
34
|
+
|
|
33
35
|
export type Props<ItemT> = FlatListProps<ItemT> & {
|
|
34
36
|
id?: number | string;
|
|
35
37
|
horizontal?: boolean;
|
|
36
38
|
loop?: boolean;
|
|
37
39
|
numColumns?: number;
|
|
38
40
|
data: ZappEntry[] | ZappUIComponent[] | any[];
|
|
39
|
-
onListElementFocus?: (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
onListElementFocus?: (
|
|
42
|
+
element: FocusManager.FocusableRef,
|
|
43
|
+
renderItemProps: { item: Item; index: number },
|
|
44
|
+
options: FocusManager.Android.CallbackOptions,
|
|
45
|
+
context: FocusManager.FocusContext
|
|
46
|
+
) => void;
|
|
47
|
+
onListElementBlur?: (element, renderItemProps, direction) => void;
|
|
48
|
+
onListElementPress?: (element, renderItemProps) => void;
|
|
49
|
+
onListElementPressOut?: (element, renderItemProps) => void;
|
|
50
|
+
onListElementLongPress?: (element, renderItemProps) => void;
|
|
44
51
|
focusableItemProps?: any;
|
|
45
52
|
focused?: boolean;
|
|
46
53
|
initialScrollIndex?: number;
|
|
@@ -138,11 +145,11 @@ function FocusableListComponent<ItemT>(props: Props<ItemT>, ref) {
|
|
|
138
145
|
);
|
|
139
146
|
|
|
140
147
|
const onFocus = React.useCallback(
|
|
141
|
-
(element, renderArgs,
|
|
148
|
+
(element, renderArgs, options, context) => {
|
|
142
149
|
const { index } = renderArgs;
|
|
143
150
|
|
|
144
151
|
updateFocusedIndex?.(index);
|
|
145
|
-
onListElementFocus?.(element, renderArgs,
|
|
152
|
+
onListElementFocus?.(element, renderArgs, options, context);
|
|
146
153
|
},
|
|
147
154
|
[onListElementFocus, updateFocusedIndex]
|
|
148
155
|
);
|
|
@@ -19,9 +19,9 @@ describe("ScreenRevealManager", () => {
|
|
|
19
19
|
|
|
20
20
|
const manager = new ScreenRevealManager(componentsToRender, mockCallback);
|
|
21
21
|
|
|
22
|
-
expect(manager
|
|
22
|
+
expect(manager.numberOfComponentsWaitToLoadBeforePresent).toBe(3);
|
|
23
23
|
|
|
24
|
-
expect(manager
|
|
24
|
+
expect(manager.renderingState).toEqual([
|
|
25
25
|
COMPONENT_LOADING_STATE.UNKNOWN,
|
|
26
26
|
COMPONENT_LOADING_STATE.UNKNOWN,
|
|
27
27
|
COMPONENT_LOADING_STATE.UNKNOWN,
|
package/events/index.ts
CHANGED
|
@@ -3,4 +3,6 @@ export enum QBUIComponentEvents {
|
|
|
3
3
|
topMenuBarTV_onFocus = "topMenuBarTV_onFocus",
|
|
4
4
|
navigatorReplaceItem = "navigatorReplaceItem",
|
|
5
5
|
scrollVerticallyToInitialOffset = "scrollVerticallyToInitialOffset",
|
|
6
|
+
focusOnSelectedTab = "focusOnSelectedTab",
|
|
7
|
+
focusOnSelectedTopMenuItem = "focusOnSelectedTopMenuItem",
|
|
6
8
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/zapp-react-native-ui-components",
|
|
3
|
-
"version": "14.0.0-rc.
|
|
3
|
+
"version": "14.0.0-rc.62",
|
|
4
4
|
"description": "Applicaster Zapp React Native ui components for the Quick Brick App",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://github.com/applicaster/quickbrick#readme",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@applicaster/applicaster-types": "14.0.0-rc.
|
|
32
|
-
"@applicaster/zapp-react-native-bridge": "14.0.0-rc.
|
|
33
|
-
"@applicaster/zapp-react-native-redux": "14.0.0-rc.
|
|
34
|
-
"@applicaster/zapp-react-native-utils": "14.0.0-rc.
|
|
31
|
+
"@applicaster/applicaster-types": "14.0.0-rc.62",
|
|
32
|
+
"@applicaster/zapp-react-native-bridge": "14.0.0-rc.62",
|
|
33
|
+
"@applicaster/zapp-react-native-redux": "14.0.0-rc.62",
|
|
34
|
+
"@applicaster/zapp-react-native-utils": "14.0.0-rc.62",
|
|
35
35
|
"promise": "^8.3.0",
|
|
36
36
|
"url": "^0.11.0",
|
|
37
37
|
"uuid": "^3.3.2"
|