@applicaster/zapp-react-native-ui-components 13.0.0-rc.15 → 13.0.0-rc.17
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/AppContainer/__tests__/__snapshots__/AppContainer.test.js.snap +1 -1
- package/Components/AudioPlayer/__tests__/__snapshots__/Runtime.test.js.snap +4 -4
- package/Components/AudioPlayer/__tests__/__snapshots__/artWork.test.js.snap +3 -3
- package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayer.test.js.snap +6 -6
- package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayerLayout.test.js.snap +7 -7
- package/Components/AudioPlayer/__tests__/__snapshots__/channel.test.js.snap +3 -3
- package/Components/AudioPlayer/__tests__/__snapshots__/summary.test.js.snap +2 -2
- package/Components/AudioPlayer/__tests__/__snapshots__/title.test.js.snap +2 -2
- package/Components/BaseFocusable/index.tsx +65 -28
- package/Components/CellRendererResolver/__tests__/__snapshots__/cellRendererResolver.test.js.snap +20 -20
- package/Components/CellRendererResolver/__tests__/cellRendererResolver.test.js +5 -3
- package/Components/ComponentResolver/__tests__/__snapshots__/componentResolver.test.js.snap +5 -5
- package/Components/ComponentResolver/__tests__/componentResolver.test.js +11 -9
- package/Components/DisplayState/__tests__/__snapshots__/displayState.test.js.snap +2 -2
- package/Components/Focusable/Focusable.tsx +0 -54
- package/Components/GeneralContentScreen/utils/__tests__/useCurationAPI.test.js +9 -0
- package/Components/GeneralContentScreen/utils/useCurationAPI.ts +1 -1
- package/Components/Layout/TV/__tests__/ScreenContainer.test.tsx +1 -0
- package/Components/Layout/TV/__tests__/__snapshots__/LayoutContainer.test.tsx.snap +1 -1
- package/Components/Layout/TV/__tests__/__snapshots__/NavBarContainer.test.tsx.snap +3 -3
- package/Components/Layout/TV/__tests__/__snapshots__/ScreenContainer.test.tsx.snap +9 -9
- package/Components/Layout/TV/__tests__/__snapshots__/index.test.tsx.snap +1 -1
- package/Components/Layout/TV/__tests__/index.test.tsx +7 -3
- package/Components/MasterCell/DefaultComponents/SecondaryImage/__tests__/__snapshots__/Image.test.tsx.snap +3 -3
- package/Components/MasterCell/SharedUI/CollapsibleTextContainer/__tests__/__snapshots__/index.test.tsx.snap +1 -1
- package/Components/MasterCell/__tests__/__snapshots__/dataAdapter.test.js.snap +180 -180
- package/Components/MasterCell/__tests__/__snapshots__/elementMapper.test.js.snap +7 -7
- package/Components/MasterCell/__tests__/__snapshots__/masterCell.test.js.snap +34 -34
- package/Components/OfflineHandler/__tests__/__snapshots__/index.test.tsx.snap +7 -7
- package/Components/OfflineHandler/__tests__/index.test.tsx +28 -25
- package/Components/PlayerContainer/PlayerContainer.tsx +2 -4
- package/Components/River/RefreshControl.tsx +1 -1
- package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +17 -17
- package/Components/River/__tests__/__snapshots__/river.test.js.snap +12 -12
- package/Components/River/__tests__/componentsMap.test.js +47 -12
- package/Components/RouteManager/__tests__/__snapshots__/routeManager.test.js.snap +1 -1
- package/Components/RouteManager/__tests__/__snapshots__/testId.test.js.snap +1 -1
- package/Components/Screen/__tests__/Screen.test.tsx +41 -27
- package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +4 -4
- package/Components/ScreenResolver/__tests__/__snapshots__/screenResolver.test.js.snap +2 -2
- package/Components/ScreenResolver/__tests__/screenResolver.test.js +31 -27
- package/Components/Tabs/Tab.tsx +1 -0
- package/Components/TextInputTv/__tests__/TextInputTv.test.js +42 -42
- package/Components/TextInputTv/__tests__/__snapshots__/TextInputTv.test.js.snap +7 -0
- package/Components/TextInputTv/index.tsx +2 -2
- package/Components/Touchable/__tests__/__snapshots__/touchable.test.tsx.snap +2 -2
- package/Components/Transitioner/__tests__/__snapshots__/AnimationManager.test.js.snap +26 -26
- package/Components/Transitioner/__tests__/__snapshots__/Scene.test.js.snap +9 -9
- package/Components/Transitioner/__tests__/__snapshots__/config.test.js.snap +20 -20
- package/Components/Transitioner/__tests__/__snapshots__/transitioner.test.js.snap +2 -2
- package/Components/VideoLive/__tests__/PlayerLiveImageComponent.test.tsx +12 -7
- package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +6 -6
- package/Components/VideoModal/ModalAnimation/ModalAnimationContext.tsx +4 -10
- package/Components/VideoModal/ModalAnimation/index.ts +2 -1
- package/Components/VideoModal/ModalAnimation/useModalAnimationContext.ts +6 -0
- package/Components/VideoModal/__tests__/PlayerDetails.test.tsx +5 -2
- package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +12 -9
- package/Components/VideoModal/__tests__/__snapshots__/PlayerDetails.test.tsx.snap +4 -4
- package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +78 -78
- package/Components/VideoModal/utils.ts +2 -4
- package/Components/Viewport/ViewportAware/__tests__/__snapshots__/viewportAware.test.js.snap +2 -2
- package/Components/Viewport/ViewportTracker/__tests__/__snapshots__/viewportTracker.test.js.snap +1 -1
- package/Components/ZappUIComponent/__tests__/__snapshots__/ZappUIComponent.test.js.snap +11 -11
- package/Components/default-cell-renderer/__tests__/__snapshots__/defaultCellRenderer.test.tsx.snap +30 -30
- package/Contexts/ConfigutaionContext/__tests__/__snapshots__/ConfigurationProvider.test.tsx.snap +1 -1
- package/Decorators/Navigator/__tests__/__snapshots__/navigator.test.js.snap +2 -2
- package/Decorators/RiverFeedLoader/__tests__/__snapshots__/riverFeedLoader.test.tsx.snap +77 -77
- package/Decorators/RiverFeedLoader/__tests__/riverFeedLoader.test.tsx +34 -39
- package/Decorators/RiverFeedLoader/__tests__/utils.test.ts +0 -9
- package/Decorators/RiverFeedLoader/index.tsx +1 -1
- package/Decorators/RiverFeedLoader/utils/getDatasourceUrl.ts +39 -0
- package/Decorators/RiverFeedLoader/utils/index.ts +29 -0
- package/Decorators/RiverFeedLoader/utils/usePipesContexts.ts +40 -0
- package/Decorators/RiverResolver/__tests__/__snapshots__/riverResolver.test.tsx.snap +5 -5
- package/Decorators/RiverResolver/__tests__/riverResolver.test.tsx +16 -10
- package/Decorators/ZappPipesDataConnector/index.tsx +1 -1
- package/package.json +12 -6
- package/Decorators/RiverFeedLoader/utils.ts +0 -100
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`<Runtime /> LTR renders correctly 1`] = `
|
|
4
4
|
<View
|
|
5
5
|
style={
|
|
6
|
-
|
|
6
|
+
{
|
|
7
7
|
"height": 40,
|
|
8
8
|
"justifyContent": "flex-start",
|
|
9
9
|
"width": 600,
|
|
@@ -12,7 +12,7 @@ exports[`<Runtime /> LTR renders correctly 1`] = `
|
|
|
12
12
|
>
|
|
13
13
|
<Text
|
|
14
14
|
style={
|
|
15
|
-
|
|
15
|
+
{
|
|
16
16
|
"alignItems": "flex-end",
|
|
17
17
|
"color": "white",
|
|
18
18
|
"flexDirection": "row",
|
|
@@ -32,7 +32,7 @@ exports[`<Runtime /> LTR renders correctly 1`] = `
|
|
|
32
32
|
exports[`<Runtime /> RTL renders correctly 1`] = `
|
|
33
33
|
<View
|
|
34
34
|
style={
|
|
35
|
-
|
|
35
|
+
{
|
|
36
36
|
"height": 40,
|
|
37
37
|
"justifyContent": "flex-end",
|
|
38
38
|
"width": 600,
|
|
@@ -41,7 +41,7 @@ exports[`<Runtime /> RTL renders correctly 1`] = `
|
|
|
41
41
|
>
|
|
42
42
|
<Text
|
|
43
43
|
style={
|
|
44
|
-
|
|
44
|
+
{
|
|
45
45
|
"alignItems": "flex-start",
|
|
46
46
|
"color": "white",
|
|
47
47
|
"flexDirection": "row-reverse",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`<Artwork /> renders correctly 1`] = `
|
|
4
4
|
<View
|
|
5
5
|
style={
|
|
6
|
-
|
|
6
|
+
{
|
|
7
7
|
"marginHorizontal": 24,
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -12,12 +12,12 @@ exports[`<Artwork /> renders correctly 1`] = `
|
|
|
12
12
|
fadeDuration={0}
|
|
13
13
|
resizeMode="cover"
|
|
14
14
|
source={
|
|
15
|
-
|
|
15
|
+
{
|
|
16
16
|
"uri": "https://example.com",
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
style={
|
|
20
|
-
|
|
20
|
+
{
|
|
21
21
|
"height": 400,
|
|
22
22
|
"width": 400,
|
|
23
23
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`<AudioPlayer /> renders correctly 1`] = `
|
|
4
4
|
<AudioPlayerLayout
|
|
5
5
|
config={
|
|
6
|
-
|
|
6
|
+
{
|
|
7
7
|
"artworkAspectRatio": "1:1",
|
|
8
8
|
"audioPlayerBackgroundImageQuery": "",
|
|
9
9
|
"backgroundColor": "black",
|
|
@@ -21,11 +21,11 @@ exports[`<AudioPlayer /> renders correctly 1`] = `
|
|
|
21
21
|
"titleFontSize": undefined,
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
style={
|
|
24
|
+
style={{}}
|
|
25
25
|
>
|
|
26
26
|
<Channel
|
|
27
27
|
config={
|
|
28
|
-
|
|
28
|
+
{
|
|
29
29
|
"artworkAspectRatio": "1:1",
|
|
30
30
|
"audioPlayerBackgroundImageQuery": "",
|
|
31
31
|
"backgroundColor": "black",
|
|
@@ -47,7 +47,7 @@ exports[`<AudioPlayer /> renders correctly 1`] = `
|
|
|
47
47
|
/>
|
|
48
48
|
<Title
|
|
49
49
|
config={
|
|
50
|
-
|
|
50
|
+
{
|
|
51
51
|
"artworkAspectRatio": "1:1",
|
|
52
52
|
"audioPlayerBackgroundImageQuery": "",
|
|
53
53
|
"backgroundColor": "black",
|
|
@@ -69,7 +69,7 @@ exports[`<AudioPlayer /> renders correctly 1`] = `
|
|
|
69
69
|
/>
|
|
70
70
|
<Summary
|
|
71
71
|
config={
|
|
72
|
-
|
|
72
|
+
{
|
|
73
73
|
"artworkAspectRatio": "1:1",
|
|
74
74
|
"audioPlayerBackgroundImageQuery": "",
|
|
75
75
|
"backgroundColor": "black",
|
|
@@ -98,7 +98,7 @@ exports[`<AudioPlayer /> renders correctly 1`] = `
|
|
|
98
98
|
audio_player_summary_color="white"
|
|
99
99
|
audio_player_title_color="white"
|
|
100
100
|
config={
|
|
101
|
-
|
|
101
|
+
{
|
|
102
102
|
"artworkAspectRatio": "1:1",
|
|
103
103
|
"audioPlayerBackgroundImageQuery": "",
|
|
104
104
|
"backgroundColor": "black",
|
|
@@ -4,7 +4,7 @@ exports[`<AudioPlayerLayout /> renders correctly 1`] = `
|
|
|
4
4
|
<View
|
|
5
5
|
pointerEvents="none"
|
|
6
6
|
style={
|
|
7
|
-
|
|
7
|
+
{
|
|
8
8
|
"backgroundColor": "transparent",
|
|
9
9
|
"overflow": "hidden",
|
|
10
10
|
}
|
|
@@ -12,12 +12,12 @@ exports[`<AudioPlayerLayout /> renders correctly 1`] = `
|
|
|
12
12
|
>
|
|
13
13
|
<ForwardRef(AnimatedComponentWrapper)
|
|
14
14
|
style={
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
[
|
|
16
|
+
{
|
|
17
17
|
"backgroundColor": "transparent",
|
|
18
18
|
"overflow": "hidden",
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
{
|
|
21
21
|
"opacity": 0,
|
|
22
22
|
},
|
|
23
23
|
]
|
|
@@ -26,19 +26,19 @@ exports[`<AudioPlayerLayout /> renders correctly 1`] = `
|
|
|
26
26
|
<ImageBackground
|
|
27
27
|
resizeMode="cover"
|
|
28
28
|
source={
|
|
29
|
-
|
|
29
|
+
{
|
|
30
30
|
"uri": "https://example.com",
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
style={
|
|
34
|
-
|
|
34
|
+
{
|
|
35
35
|
"flex": 1,
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
>
|
|
39
39
|
<View
|
|
40
40
|
style={
|
|
41
|
-
|
|
41
|
+
{
|
|
42
42
|
"backgroundColor": "transparent",
|
|
43
43
|
"overflow": "hidden",
|
|
44
44
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`<Channel /> renders correctly 1`] = `
|
|
4
4
|
<View
|
|
5
5
|
style={
|
|
6
|
-
|
|
6
|
+
{
|
|
7
7
|
"height": 72,
|
|
8
8
|
"marginBottom": 30,
|
|
9
9
|
"width": 128,
|
|
@@ -13,12 +13,12 @@ exports[`<Channel /> renders correctly 1`] = `
|
|
|
13
13
|
<Image
|
|
14
14
|
fadeDuration={0}
|
|
15
15
|
source={
|
|
16
|
-
|
|
16
|
+
{
|
|
17
17
|
"uri": "https://example.com",
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
style={
|
|
21
|
-
|
|
21
|
+
{
|
|
22
22
|
"height": 72,
|
|
23
23
|
"width": 128,
|
|
24
24
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`<Summary /> renders correctly 1`] = `
|
|
4
4
|
<View
|
|
5
5
|
style={
|
|
6
|
-
|
|
6
|
+
{
|
|
7
7
|
"height": 80,
|
|
8
8
|
"marginBottom": 30,
|
|
9
9
|
"width": 600,
|
|
@@ -13,7 +13,7 @@ exports[`<Summary /> renders correctly 1`] = `
|
|
|
13
13
|
<Text
|
|
14
14
|
numberOfLines={2}
|
|
15
15
|
style={
|
|
16
|
-
|
|
16
|
+
{
|
|
17
17
|
"color": "white",
|
|
18
18
|
"fontFamily": null,
|
|
19
19
|
"fontSize": 20,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
exports[`<Title /> renders correctly 1`] = `
|
|
4
4
|
<View
|
|
5
5
|
style={
|
|
6
|
-
|
|
6
|
+
{
|
|
7
7
|
"height": 100,
|
|
8
8
|
"marginBottom": 12,
|
|
9
9
|
"width": 600,
|
|
@@ -13,7 +13,7 @@ exports[`<Title /> renders correctly 1`] = `
|
|
|
13
13
|
<Text
|
|
14
14
|
numberOfLines={2}
|
|
15
15
|
style={
|
|
16
|
-
|
|
16
|
+
{
|
|
17
17
|
"color": "white",
|
|
18
18
|
"fontFamily": null,
|
|
19
19
|
"fontSize": 38,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import * as R from "ramda";
|
|
2
3
|
|
|
3
4
|
import {
|
|
4
5
|
BaseFocusable as BaseFocusableInterface,
|
|
@@ -7,7 +8,6 @@ import {
|
|
|
7
8
|
|
|
8
9
|
import { createReactRef } from "@applicaster/zapp-react-native-utils/reactUtils";
|
|
9
10
|
import { focusManager } from "@applicaster/zapp-react-native-utils/appUtils/focusManager";
|
|
10
|
-
import * as FOCUS_EVENTS from "@applicaster/zapp-react-native-utils/appUtils/focusManager/events";
|
|
11
11
|
import { noop } from "@applicaster/zapp-react-native-utils/functionUtils";
|
|
12
12
|
|
|
13
13
|
type ScrollDirection = FocusManager.IOS.Direction | FocusManager.Web.Direction;
|
|
@@ -131,12 +131,6 @@ export class BaseFocusable<
|
|
|
131
131
|
willLoseFocus: FocusManager.FocusEventCB = (focusable, scrollDirection) => {
|
|
132
132
|
const { willLoseFocus = noop } = this.props;
|
|
133
133
|
willLoseFocus(focusable, scrollDirection);
|
|
134
|
-
|
|
135
|
-
focusManager.invokeHandler?.(
|
|
136
|
-
FOCUS_EVENTS.WILL_LOSE_FOCUS,
|
|
137
|
-
this,
|
|
138
|
-
scrollDirection
|
|
139
|
-
);
|
|
140
134
|
};
|
|
141
135
|
|
|
142
136
|
willReceiveFocus: FocusManager.FocusEventCB = (
|
|
@@ -145,12 +139,6 @@ export class BaseFocusable<
|
|
|
145
139
|
) => {
|
|
146
140
|
const { willReceiveFocus = noop } = this.props;
|
|
147
141
|
willReceiveFocus(focusable, scrollDirection);
|
|
148
|
-
|
|
149
|
-
focusManager.invokeHandler?.(
|
|
150
|
-
FOCUS_EVENTS.WILL_RECEIVE_FOCUS,
|
|
151
|
-
this,
|
|
152
|
-
scrollDirection
|
|
153
|
-
);
|
|
154
142
|
};
|
|
155
143
|
|
|
156
144
|
/**
|
|
@@ -163,8 +151,6 @@ export class BaseFocusable<
|
|
|
163
151
|
const { onFocus = noop } = this.props;
|
|
164
152
|
this.setFocusedState(true);
|
|
165
153
|
onFocus(focusable, scrollDirection);
|
|
166
|
-
|
|
167
|
-
focusManager.invokeHandler?.(FOCUS_EVENTS.FOCUS, this, scrollDirection);
|
|
168
154
|
};
|
|
169
155
|
|
|
170
156
|
/**
|
|
@@ -179,12 +165,6 @@ export class BaseFocusable<
|
|
|
179
165
|
) => {
|
|
180
166
|
const { hasReceivedFocus = noop } = this.props;
|
|
181
167
|
hasReceivedFocus(focusable, scrollDirection);
|
|
182
|
-
|
|
183
|
-
focusManager.invokeHandler?.(
|
|
184
|
-
FOCUS_EVENTS.HAS_RECEIVED_FOCUS,
|
|
185
|
-
this,
|
|
186
|
-
scrollDirection
|
|
187
|
-
);
|
|
188
168
|
};
|
|
189
169
|
|
|
190
170
|
/**
|
|
@@ -196,12 +176,6 @@ export class BaseFocusable<
|
|
|
196
176
|
hasLostFocus: FocusManager.FocusEventCB = (focusable, scrollDirection) => {
|
|
197
177
|
const { hasLostFocus = noop } = this.props;
|
|
198
178
|
hasLostFocus(focusable, scrollDirection);
|
|
199
|
-
|
|
200
|
-
focusManager.invokeHandler?.(
|
|
201
|
-
FOCUS_EVENTS.HAS_LOST_FOCUS,
|
|
202
|
-
this,
|
|
203
|
-
scrollDirection
|
|
204
|
-
);
|
|
205
179
|
};
|
|
206
180
|
|
|
207
181
|
/**
|
|
@@ -228,7 +202,6 @@ export class BaseFocusable<
|
|
|
228
202
|
const { onBlur = noop } = this.props;
|
|
229
203
|
this.setFocusedState(false);
|
|
230
204
|
onBlur(focusable, scrollDirection);
|
|
231
|
-
focusManager.invokeHandler?.(FOCUS_EVENTS.BLUR, this, scrollDirection);
|
|
232
205
|
};
|
|
233
206
|
|
|
234
207
|
onPress = (keyEvent?: Nullable<React.MouseEvent>) => {
|
|
@@ -269,4 +242,68 @@ export class BaseFocusable<
|
|
|
269
242
|
this.setState({ focused });
|
|
270
243
|
}
|
|
271
244
|
};
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* will invoke the underlying component's focus method
|
|
248
|
+
* @param {Object} scrollDirection
|
|
249
|
+
* @returns {Promise}
|
|
250
|
+
*/
|
|
251
|
+
focus(_, scrollDirection) {
|
|
252
|
+
return this.onFocus(this, scrollDirection); // invokeComponentMethod(this, "onFocus", scrollDirection);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* will invoke the underlying component's blur method
|
|
257
|
+
* @param {Object} scrollDirection
|
|
258
|
+
* @returns {Promise}
|
|
259
|
+
*/
|
|
260
|
+
blur(
|
|
261
|
+
_,
|
|
262
|
+
scrollDirection?: FocusManager.Web.Direction | FocusManager.IOS.Direction
|
|
263
|
+
) {
|
|
264
|
+
return this.onBlur(this, scrollDirection);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Sets the focus on this item. Will trigger sequentially a sequence of
|
|
269
|
+
* functions (willReceiveFocus, focus, hasReceivedFocus). If these functions (defined in the Focusable
|
|
270
|
+
* Item underlying component) return promises, execution will wait before it proceeds to the next. This
|
|
271
|
+
* is useful for triggering sequential operations that specifically require to fully run before or after
|
|
272
|
+
* focus is actually set on that item.
|
|
273
|
+
* @param {string} scrollDirection string representation of the direction of the navigation which landed
|
|
274
|
+
* to this item being focused
|
|
275
|
+
*/
|
|
276
|
+
_executeFocusSequence(methodNames, scrollDirection) {
|
|
277
|
+
return R.reduce(
|
|
278
|
+
(sequence, methodName) => {
|
|
279
|
+
const method = this[methodName]; // Access the method by name
|
|
280
|
+
|
|
281
|
+
if (typeof method !== "function") {
|
|
282
|
+
throw new Error(
|
|
283
|
+
`Method '${methodName}' not found or not a function.`
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return sequence
|
|
288
|
+
.then(() => method.call(this, scrollDirection))
|
|
289
|
+
.catch((e) => {
|
|
290
|
+
throw e; // Re-throw for consistent error handling
|
|
291
|
+
});
|
|
292
|
+
},
|
|
293
|
+
Promise.resolve(),
|
|
294
|
+
methodNames
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
setFocus(scrollDirection) {
|
|
299
|
+
const focusMethods = ["willReceiveFocus", "focus", "hasReceivedFocus"];
|
|
300
|
+
|
|
301
|
+
return this._executeFocusSequence(focusMethods, scrollDirection);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
setBlur(scrollDirection) {
|
|
305
|
+
const blurMethods = ["willLoseFocus", "blur", "hasLostFocus"];
|
|
306
|
+
|
|
307
|
+
return this._executeFocusSequence(blurMethods, scrollDirection);
|
|
308
|
+
}
|
|
272
309
|
}
|
package/Components/CellRendererResolver/__tests__/__snapshots__/cellRendererResolver.test.js.snap
CHANGED
|
@@ -3,24 +3,24 @@
|
|
|
3
3
|
exports[`CellRendererResolver renders correctly 1`] = `
|
|
4
4
|
<View
|
|
5
5
|
someProp={
|
|
6
|
-
|
|
7
|
-
"cellOptions":
|
|
8
|
-
"cellStyles":
|
|
9
|
-
"ABCDE-123456":
|
|
10
|
-
"configuration":
|
|
6
|
+
{
|
|
7
|
+
"cellOptions": {},
|
|
8
|
+
"cellStyles": {
|
|
9
|
+
"ABCDE-123456": {
|
|
10
|
+
"configuration": {},
|
|
11
11
|
"plugin_identifier": "custom_renderer_plugin",
|
|
12
12
|
},
|
|
13
|
-
"FGHIJ-123456":
|
|
14
|
-
"configuration":
|
|
13
|
+
"FGHIJ-123456": {
|
|
14
|
+
"configuration": {},
|
|
15
15
|
"plugin_identifier": "unknown_plugin",
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
|
-
"component":
|
|
19
|
-
"styles":
|
|
18
|
+
"component": {
|
|
19
|
+
"styles": {
|
|
20
20
|
"cell_plugin_configuration_id": "ABCDE-123456",
|
|
21
21
|
},
|
|
22
22
|
},
|
|
23
|
-
"styles":
|
|
23
|
+
"styles": {},
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
/>
|
|
@@ -29,24 +29,24 @@ exports[`CellRendererResolver renders correctly 1`] = `
|
|
|
29
29
|
exports[`CellRendererResolver with a default renderer plugin renders correctly 1`] = `
|
|
30
30
|
<View
|
|
31
31
|
someProp={
|
|
32
|
-
|
|
33
|
-
"cellOptions":
|
|
34
|
-
"cellStyles":
|
|
35
|
-
"ABCDE-123456":
|
|
36
|
-
"configuration":
|
|
32
|
+
{
|
|
33
|
+
"cellOptions": {},
|
|
34
|
+
"cellStyles": {
|
|
35
|
+
"ABCDE-123456": {
|
|
36
|
+
"configuration": {},
|
|
37
37
|
"plugin_identifier": "custom_renderer_plugin",
|
|
38
38
|
},
|
|
39
|
-
"FGHIJ-123456":
|
|
40
|
-
"configuration":
|
|
39
|
+
"FGHIJ-123456": {
|
|
40
|
+
"configuration": {},
|
|
41
41
|
"plugin_identifier": "unknown_plugin",
|
|
42
42
|
},
|
|
43
43
|
},
|
|
44
|
-
"component":
|
|
45
|
-
"styles":
|
|
44
|
+
"component": {
|
|
45
|
+
"styles": {
|
|
46
46
|
"cell_plugin_configuration_id": "ABCDE-123456",
|
|
47
47
|
},
|
|
48
48
|
},
|
|
49
|
-
"styles":
|
|
49
|
+
"styles": {},
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
/>
|
|
@@ -2,9 +2,11 @@ import * as React from "react";
|
|
|
2
2
|
import { View } from "react-native";
|
|
3
3
|
import { shallow } from "enzyme";
|
|
4
4
|
|
|
5
|
-
jest.mock("../../default-cell-renderer", () =>
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
jest.mock("../../default-cell-renderer", () => {
|
|
6
|
+
const View = jest.requireActual("react-native").View;
|
|
7
|
+
|
|
8
|
+
return jest.fn((prop) => <View whoAmI="default renderer" someProp={prop} />);
|
|
9
|
+
});
|
|
8
10
|
|
|
9
11
|
const { CellRendererResolver } = require("../index");
|
|
10
12
|
|
|
@@ -5,22 +5,22 @@ exports[`ComponentResolver renders correctly 1`] = `
|
|
|
5
5
|
value={null}
|
|
6
6
|
>
|
|
7
7
|
<Memo(ComponentResolver)
|
|
8
|
-
cellStyles={
|
|
8
|
+
cellStyles={{}}
|
|
9
9
|
component={
|
|
10
|
-
|
|
10
|
+
{
|
|
11
11
|
"component_type": "some_component",
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
components={
|
|
15
|
-
|
|
15
|
+
{
|
|
16
16
|
"SomeComponent": [MockFunction],
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
decorators={[MockFunction]}
|
|
20
20
|
dispatch={[Function]}
|
|
21
|
-
plugins={
|
|
21
|
+
plugins={[]}
|
|
22
22
|
store={
|
|
23
|
-
|
|
23
|
+
{
|
|
24
24
|
"clearActions": [Function],
|
|
25
25
|
"dispatch": [Function],
|
|
26
26
|
"getActions": [Function],
|
|
@@ -4,19 +4,21 @@ import { shallow } from "enzyme";
|
|
|
4
4
|
import { shallowToJson } from "enzyme-to-json";
|
|
5
5
|
import configureStore from "redux-mock-store";
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const mockLogger = {
|
|
8
8
|
warning: jest.fn(),
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
jest.mock("../../../Helpers/logger", () => ({
|
|
12
12
|
componentsLogger: {
|
|
13
|
-
addSubsystem: jest.fn(() =>
|
|
13
|
+
addSubsystem: jest.fn(() => mockLogger),
|
|
14
14
|
},
|
|
15
15
|
}));
|
|
16
16
|
|
|
17
|
-
jest.mock("../../default-cell-renderer", () =>
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
jest.mock("../../default-cell-renderer", () => {
|
|
18
|
+
const View = jest.requireActual("react-native").View;
|
|
19
|
+
|
|
20
|
+
return jest.fn((prop) => <View whoAmI="default renderer" someProp={prop} />);
|
|
21
|
+
});
|
|
20
22
|
|
|
21
23
|
const mock_rtl_flag = false;
|
|
22
24
|
|
|
@@ -48,7 +50,7 @@ function clearAllMocks() {
|
|
|
48
50
|
SomeComponent.mockClear();
|
|
49
51
|
decorators.mockClear();
|
|
50
52
|
renderFunction.mockClear();
|
|
51
|
-
|
|
53
|
+
mockLogger.warning.mockClear();
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
describe("ComponentResolver", () => {
|
|
@@ -104,16 +106,16 @@ describe("ComponentResolverComponent", () => {
|
|
|
104
106
|
expect(shallowToJson(wrapper)).toMatchSnapshot();
|
|
105
107
|
expect(wrapper.isEmptyRender()).toBe(true);
|
|
106
108
|
|
|
107
|
-
expect(
|
|
109
|
+
expect(mockLogger.warning).toHaveBeenCalledTimes(2);
|
|
108
110
|
|
|
109
|
-
expect(
|
|
111
|
+
expect(mockLogger.warning).toHaveBeenNthCalledWith(
|
|
110
112
|
1,
|
|
111
113
|
expect.objectContaining({
|
|
112
114
|
message: "Could not resolve cell builder plugin",
|
|
113
115
|
})
|
|
114
116
|
);
|
|
115
117
|
|
|
116
|
-
expect(
|
|
118
|
+
expect(mockLogger.warning).toHaveBeenNthCalledWith(
|
|
117
119
|
2,
|
|
118
120
|
expect.objectContaining({
|
|
119
121
|
message: warningMessage,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`DISPLAY_STATES matches the snapshot 1`] = `
|
|
4
|
-
|
|
4
|
+
{
|
|
5
5
|
"CONTENT": "CONTENT",
|
|
6
6
|
"CONTROLS": "CONTROLS",
|
|
7
7
|
"DISCOVERY": "DISCOVERY",
|
|
@@ -9,7 +9,7 @@ Object {
|
|
|
9
9
|
`;
|
|
10
10
|
|
|
11
11
|
exports[`DisplayStateContext has the correct properties 1`] = `
|
|
12
|
-
|
|
12
|
+
{
|
|
13
13
|
"Consumer": [MockFunction],
|
|
14
14
|
"Provider": [MockFunction],
|
|
15
15
|
"withConsumer": [MockFunction],
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import * as R from "ramda";
|
|
3
2
|
|
|
4
3
|
import { BaseFocusable } from "../BaseFocusable";
|
|
5
4
|
import { focusManager } from "@applicaster/zapp-react-native-utils/appUtils/focusManager";
|
|
@@ -42,8 +41,6 @@ class Focusable extends BaseFocusable<Props> {
|
|
|
42
41
|
this.resetLongPressTimeout = this.resetLongPressTimeout.bind(this);
|
|
43
42
|
this.longPress = this.longPress.bind(this);
|
|
44
43
|
this.press = this.press.bind(this);
|
|
45
|
-
this.focus = this.focus.bind(this);
|
|
46
|
-
this.blur = this.blur.bind(this);
|
|
47
44
|
}
|
|
48
45
|
|
|
49
46
|
/**
|
|
@@ -55,37 +52,6 @@ class Focusable extends BaseFocusable<Props> {
|
|
|
55
52
|
return this.preferredFocus();
|
|
56
53
|
}
|
|
57
54
|
|
|
58
|
-
/**
|
|
59
|
-
* Sets the focus on this item. Will trigger sequentially a sequence of
|
|
60
|
-
* functions (willReceiveFocus, focus, hasReceivedFocus). If these functions (defined in the Focusable
|
|
61
|
-
* Item underlying component) return promises, execution will wait before it proceeds to the next. This
|
|
62
|
-
* is useful for triggering sequential operations that specifically require to fully run before or after
|
|
63
|
-
* focus is actually set on that item.
|
|
64
|
-
* @param {string} scrollDirection string representation of the direction of the navigation which landed
|
|
65
|
-
* to this item being focused
|
|
66
|
-
*/
|
|
67
|
-
setFocus(scrollDirection) {
|
|
68
|
-
const focusMethods = [
|
|
69
|
-
this.willReceiveFocus,
|
|
70
|
-
this.focus,
|
|
71
|
-
this.hasReceivedFocus,
|
|
72
|
-
];
|
|
73
|
-
|
|
74
|
-
const self = this;
|
|
75
|
-
|
|
76
|
-
return R.reduce(
|
|
77
|
-
(sequence, method) => {
|
|
78
|
-
return sequence
|
|
79
|
-
.then(() => method.apply(self, [scrollDirection]))
|
|
80
|
-
.catch((e) => {
|
|
81
|
-
throw e;
|
|
82
|
-
});
|
|
83
|
-
},
|
|
84
|
-
Promise.resolve(),
|
|
85
|
-
focusMethods
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
55
|
startLongPressTimeout() {
|
|
90
56
|
this.longPressTimeout = setTimeout(() => {
|
|
91
57
|
this.longPress(null);
|
|
@@ -102,26 +68,6 @@ class Focusable extends BaseFocusable<Props> {
|
|
|
102
68
|
}
|
|
103
69
|
}
|
|
104
70
|
|
|
105
|
-
/**
|
|
106
|
-
* will invoke the underlying component's focus method
|
|
107
|
-
* @param {Object} scrollDirection
|
|
108
|
-
* @returns {Promise}
|
|
109
|
-
*/
|
|
110
|
-
focus(scrollDirection) {
|
|
111
|
-
return this.onFocus(this, scrollDirection); // invokeComponentMethod(this, "onFocus", scrollDirection);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* will invoke the underlying component's blur method
|
|
116
|
-
* @param {Object} scrollDirection
|
|
117
|
-
* @returns {Promise}
|
|
118
|
-
*/
|
|
119
|
-
blur(
|
|
120
|
-
scrollDirection?: FocusManager.Web.Direction | FocusManager.IOS.Direction
|
|
121
|
-
) {
|
|
122
|
-
return this.onBlur(this, scrollDirection);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
71
|
/**
|
|
126
72
|
* will invoke the underlying component's press method
|
|
127
73
|
* @param {Object} keyEvent
|
|
@@ -16,6 +16,15 @@ import { PathnameContext } from "@applicaster/zapp-react-native-ui-components/Co
|
|
|
16
16
|
import { Provider } from "react-redux";
|
|
17
17
|
import configureStore from "redux-mock-store";
|
|
18
18
|
|
|
19
|
+
jest.mock(
|
|
20
|
+
"@applicaster/zapp-react-native-utils/reactHooks/navigation/useRoute",
|
|
21
|
+
() => ({
|
|
22
|
+
useRoute: jest.fn().mockReturnValue({
|
|
23
|
+
pathname: "/home",
|
|
24
|
+
}),
|
|
25
|
+
})
|
|
26
|
+
);
|
|
27
|
+
|
|
19
28
|
const homeStack = {
|
|
20
29
|
route: "/home",
|
|
21
30
|
state: {
|
|
@@ -9,7 +9,7 @@ import { loadPipesData } from "@applicaster/zapp-react-native-redux/ZappPipes";
|
|
|
9
9
|
import { isEmptyOrNil } from "@applicaster/zapp-react-native-utils/cellUtils";
|
|
10
10
|
import { Categories } from "./logger";
|
|
11
11
|
import { createLogger } from "@applicaster/zapp-react-native-utils/logger";
|
|
12
|
-
import { useRoute } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
|
|
12
|
+
import { useRoute } from "@applicaster/zapp-react-native-utils/reactHooks/navigation/useRoute";
|
|
13
13
|
import {
|
|
14
14
|
ZappPipesEntryContext,
|
|
15
15
|
ZappPipesScreenContext,
|