@applicaster/zapp-react-native-ui-components 13.0.0-rc.81 → 13.0.0-rc.83
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/Cell/Cell.tsx +3 -13
- package/Components/Cell/CellWithFocusable.tsx +17 -13
- package/Components/Cell/CellWrapper.ts +5 -0
- package/Components/Cell/styles.ts +17 -0
- package/Components/MasterCell/DefaultComponents/Image/Image.ios.tsx +4 -3
- package/Components/MasterCell/DefaultComponents/Image/hooks/useImage.ts +11 -7
- package/package.json +5 -5
- package/Components/Cell/CellStyles/FallbackCellStyle/index.js +0 -157
- package/Components/Cell/CellStyles/Hero/index.js +0 -111
- package/Components/Cell/CellStyles/ScreenSelector/index.js +0 -68
- package/Components/Cell/CellStyles/cellStylesResolver.ts +0 -19
- package/Components/Cell/CellStyles/colors.js +0 -40
- package/Components/Cell/CellStyles/index.js +0 -15
package/Components/Cell/Cell.tsx
CHANGED
|
@@ -12,6 +12,7 @@ import { noop } from "@applicaster/zapp-react-native-utils/functionUtils";
|
|
|
12
12
|
import { CellWithFocusable } from "./CellWithFocusable";
|
|
13
13
|
import { BaseFocusable } from "../BaseFocusable";
|
|
14
14
|
import { AccessibilityManager } from "@applicaster/zapp-react-native-utils/appUtils/accessibilityManager";
|
|
15
|
+
import { styles } from "./styles";
|
|
15
16
|
|
|
16
17
|
type Props = {
|
|
17
18
|
item: ZappEntry;
|
|
@@ -68,17 +69,6 @@ type State = {
|
|
|
68
69
|
hasFocusableInside: boolean;
|
|
69
70
|
};
|
|
70
71
|
|
|
71
|
-
const baseCellStyles = {
|
|
72
|
-
height: "100%",
|
|
73
|
-
display: "flex",
|
|
74
|
-
flex: 1,
|
|
75
|
-
} as const;
|
|
76
|
-
|
|
77
|
-
const touchableStyles = {
|
|
78
|
-
flex: 1,
|
|
79
|
-
height: "100%",
|
|
80
|
-
} as const;
|
|
81
|
-
|
|
82
72
|
export class CellComponent extends React.Component<Props, State> {
|
|
83
73
|
constructor(props) {
|
|
84
74
|
super(props);
|
|
@@ -252,7 +242,7 @@ export class CellComponent extends React.Component<Props, State> {
|
|
|
252
242
|
<View
|
|
253
243
|
testID={`${component?.id}-${id}`}
|
|
254
244
|
accessible={false}
|
|
255
|
-
style={
|
|
245
|
+
style={styles.touchableCell}
|
|
256
246
|
>
|
|
257
247
|
<Focusable
|
|
258
248
|
id={focusableId}
|
|
@@ -264,7 +254,7 @@ export class CellComponent extends React.Component<Props, State> {
|
|
|
264
254
|
hasReceivedFocus={hasReceivedFocus || this.hasReceivedFocus}
|
|
265
255
|
preferredFocus={preferredFocus}
|
|
266
256
|
offsetUpdater={offsetUpdater}
|
|
267
|
-
style={
|
|
257
|
+
style={styles.baseCell}
|
|
268
258
|
isFocusable={isFocusable}
|
|
269
259
|
skipFocusManagerRegistration={skipFocusManagerRegistration}
|
|
270
260
|
>
|
|
@@ -5,6 +5,8 @@ import { toBooleanWithDefaultFalse } from "@applicaster/zapp-react-native-utils/
|
|
|
5
5
|
|
|
6
6
|
import { useCellState } from "../MasterCell/utils";
|
|
7
7
|
import { FocusableGroup } from "../FocusableGroup";
|
|
8
|
+
import { CellWrapper } from "./CellWrapper";
|
|
9
|
+
import { styles } from "./styles";
|
|
8
10
|
|
|
9
11
|
type Props = {
|
|
10
12
|
item: ZappEntry;
|
|
@@ -88,19 +90,21 @@ export function CellWithFocusable(props: Props) {
|
|
|
88
90
|
onBlur={onGroupBlur}
|
|
89
91
|
skipFocusManagerRegistration={skipFocusManagerRegistration}
|
|
90
92
|
>
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
93
|
+
<CellWrapper style={styles.cellWrapper}>
|
|
94
|
+
<CellRenderer
|
|
95
|
+
testID={"cell-with-focusable-cell-renderer"}
|
|
96
|
+
item={item}
|
|
97
|
+
groupId={`focusable-cell-wrapper-${id}`}
|
|
98
|
+
onToggleFocus={handleToggleFocus}
|
|
99
|
+
state={state}
|
|
100
|
+
prefixId={id}
|
|
101
|
+
focusedButtonId={focusedButtonId}
|
|
102
|
+
preferredFocus={true}
|
|
103
|
+
skipFocusManagerRegistration={skipFocusManagerRegistration}
|
|
104
|
+
isFocusable={isFocusable}
|
|
105
|
+
focused={focused}
|
|
106
|
+
/>
|
|
107
|
+
</CellWrapper>
|
|
104
108
|
</FocusableGroup>
|
|
105
109
|
);
|
|
106
110
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StyleSheet } from "react-native";
|
|
2
|
+
|
|
3
|
+
export const styles = StyleSheet.create({
|
|
4
|
+
cellWrapper: {
|
|
5
|
+
flex: 0,
|
|
6
|
+
height: "100%",
|
|
7
|
+
},
|
|
8
|
+
baseCell: {
|
|
9
|
+
height: "100%",
|
|
10
|
+
display: "flex",
|
|
11
|
+
flex: 1,
|
|
12
|
+
},
|
|
13
|
+
touchableCell: {
|
|
14
|
+
flex: 1,
|
|
15
|
+
height: "100%",
|
|
16
|
+
},
|
|
17
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { Image as RnImage, ImageStyle } from "react-native";
|
|
3
|
-
import
|
|
3
|
+
import { equals, omit } from "ramda";
|
|
4
4
|
|
|
5
5
|
import { useImageSource } from "./hooks";
|
|
6
6
|
|
|
@@ -17,7 +17,7 @@ type Props = Record<string, any> & {
|
|
|
17
17
|
withDimensions: (source: Source) => Source;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const MemoizedImage = React.memo(RnImage,
|
|
20
|
+
const MemoizedImage = React.memo(RnImage, equals);
|
|
21
21
|
|
|
22
22
|
function Image({
|
|
23
23
|
style,
|
|
@@ -44,11 +44,12 @@ function Image({
|
|
|
44
44
|
|
|
45
45
|
return (
|
|
46
46
|
<MemoizedImage
|
|
47
|
+
key={_source?.uri || "no-image"}
|
|
47
48
|
style={style as ImageStyle}
|
|
48
49
|
onError={React.useCallback(() => setErrorState(true), [])}
|
|
49
50
|
// as we have defaults as "" for placeholder image, we need to pass undefined to source to not throw warnings
|
|
50
51
|
source={_source?.uri ? _source : undefined}
|
|
51
|
-
{...
|
|
52
|
+
{...omit(["source"], otherProps)}
|
|
52
53
|
/>
|
|
53
54
|
);
|
|
54
55
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import
|
|
2
|
+
import { path } from "ramda";
|
|
3
3
|
|
|
4
4
|
import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
|
|
5
5
|
import { useActions } from "@applicaster/zapp-react-native-utils/reactHooks/actions";
|
|
@@ -7,9 +7,13 @@ import { extractAsset } from "./utils";
|
|
|
7
7
|
|
|
8
8
|
type Return = { uri: string } | null;
|
|
9
9
|
|
|
10
|
+
const getSourceContext = path(["source", "context"]);
|
|
11
|
+
const getSourceUri = path(["source", "uri"]);
|
|
12
|
+
const getState = path(["state"]);
|
|
13
|
+
|
|
10
14
|
export const useImageSource = ({ uri, entry, otherProps }): Return => {
|
|
11
|
-
const uriContext =
|
|
12
|
-
const uriState =
|
|
15
|
+
const uriContext = getSourceContext(otherProps);
|
|
16
|
+
const uriState = getState(otherProps);
|
|
13
17
|
|
|
14
18
|
const action = useActions(uriContext);
|
|
15
19
|
|
|
@@ -34,7 +38,7 @@ export const useImageSource = ({ uri, entry, otherProps }): Return => {
|
|
|
34
38
|
return { uri };
|
|
35
39
|
}
|
|
36
40
|
|
|
37
|
-
const uriFromSource =
|
|
41
|
+
const uriFromSource = getSourceUri(otherProps);
|
|
38
42
|
|
|
39
43
|
if (uriFromSource) {
|
|
40
44
|
return { uri: uriFromSource };
|
|
@@ -56,7 +60,7 @@ const getSource = (uri, showDefault, placeholderImage, otherProps) => {
|
|
|
56
60
|
return { uri };
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
const uriFromSource =
|
|
63
|
+
const uriFromSource = getSourceUri(otherProps);
|
|
60
64
|
|
|
61
65
|
if (uriFromSource) {
|
|
62
66
|
return { uri: uriFromSource };
|
|
@@ -72,8 +76,8 @@ export const useImageSourceWithDefault = ({
|
|
|
72
76
|
placeholderImage,
|
|
73
77
|
otherProps,
|
|
74
78
|
}): Return => {
|
|
75
|
-
const uriContext =
|
|
76
|
-
const uriState =
|
|
79
|
+
const uriContext = getSourceContext(otherProps);
|
|
80
|
+
const uriState = getState(otherProps);
|
|
77
81
|
|
|
78
82
|
const action = useActions(uriContext);
|
|
79
83
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/zapp-react-native-ui-components",
|
|
3
|
-
"version": "13.0.0-rc.
|
|
3
|
+
"version": "13.0.0-rc.83",
|
|
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",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"redux-mock-store": "^1.5.3"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@applicaster/applicaster-types": "13.0.0-rc.
|
|
35
|
-
"@applicaster/zapp-react-native-bridge": "13.0.0-rc.
|
|
36
|
-
"@applicaster/zapp-react-native-redux": "13.0.0-rc.
|
|
37
|
-
"@applicaster/zapp-react-native-utils": "13.0.0-rc.
|
|
34
|
+
"@applicaster/applicaster-types": "13.0.0-rc.83",
|
|
35
|
+
"@applicaster/zapp-react-native-bridge": "13.0.0-rc.83",
|
|
36
|
+
"@applicaster/zapp-react-native-redux": "13.0.0-rc.83",
|
|
37
|
+
"@applicaster/zapp-react-native-utils": "13.0.0-rc.83",
|
|
38
38
|
"promise": "^8.3.0",
|
|
39
39
|
"react-router-native": "^5.1.2",
|
|
40
40
|
"url": "^0.11.0",
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getColor,
|
|
3
|
-
ACTIVE_COLOR,
|
|
4
|
-
BACKGROUND_COLOR,
|
|
5
|
-
MAIN_TEXT_COLOR,
|
|
6
|
-
FOCUSED_TEXT_COLOR,
|
|
7
|
-
} from "../colors";
|
|
8
|
-
|
|
9
|
-
const Image = "Image";
|
|
10
|
-
const View = "View";
|
|
11
|
-
const Text = "Text";
|
|
12
|
-
|
|
13
|
-
const containerStyles = (styles) => ({
|
|
14
|
-
flex: 1,
|
|
15
|
-
flexDirection: "column",
|
|
16
|
-
width: 384,
|
|
17
|
-
height: 436,
|
|
18
|
-
borderRadius: 4,
|
|
19
|
-
backgroundColor: getColor(BACKGROUND_COLOR, styles),
|
|
20
|
-
marginRight: 48,
|
|
21
|
-
marginBottom: 48,
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
const focusedContainerStyles = (styles) => ({
|
|
25
|
-
...containerStyles(styles),
|
|
26
|
-
backgroundColor: getColor(ACTIVE_COLOR, styles),
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const imageStyle = {
|
|
30
|
-
width: 384,
|
|
31
|
-
height: 216,
|
|
32
|
-
borderTopRightRadius: 4,
|
|
33
|
-
borderTopLeftRadius: 4,
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const titleContainerStyles = {
|
|
37
|
-
width: 336,
|
|
38
|
-
height: 60,
|
|
39
|
-
marginHorizontal: 24,
|
|
40
|
-
marginTop: 24,
|
|
41
|
-
overflow: "hidden",
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const titleStyles = (styles) => ({
|
|
45
|
-
fontSize: 26,
|
|
46
|
-
color: getColor(MAIN_TEXT_COLOR, styles),
|
|
47
|
-
fontWeight: "bold",
|
|
48
|
-
fontStyle: "normal",
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
const focusedTitleStyles = (styles) => ({
|
|
52
|
-
...titleStyles(styles),
|
|
53
|
-
color: getColor(FOCUSED_TEXT_COLOR, styles),
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
const subtitleContainerStyles = {
|
|
57
|
-
width: 336,
|
|
58
|
-
height: 88,
|
|
59
|
-
marginHorizontal: 24,
|
|
60
|
-
marginTop: 24,
|
|
61
|
-
overflow: "hidden",
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
const subtitleStyles = (styles) => ({
|
|
65
|
-
fontSize: 24,
|
|
66
|
-
fontWeight: "normal",
|
|
67
|
-
opacity: 0.8,
|
|
68
|
-
color: getColor(MAIN_TEXT_COLOR, styles),
|
|
69
|
-
fontStyle: "normal",
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
const focusedSubtitleStyles = (styles) => ({
|
|
73
|
-
...subtitleStyles(styles),
|
|
74
|
-
color: getColor(FOCUSED_TEXT_COLOR, styles),
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
const viewTree = (state, styles) => [
|
|
78
|
-
{
|
|
79
|
-
type: View,
|
|
80
|
-
style:
|
|
81
|
-
state === "focused"
|
|
82
|
-
? focusedContainerStyles(styles)
|
|
83
|
-
: containerStyles(styles),
|
|
84
|
-
elements: [
|
|
85
|
-
{
|
|
86
|
-
type: Image,
|
|
87
|
-
style: imageStyle,
|
|
88
|
-
data: [
|
|
89
|
-
{
|
|
90
|
-
func: "image_src_from_media_item",
|
|
91
|
-
args: ["thumbnail-small"],
|
|
92
|
-
propName: "uri",
|
|
93
|
-
},
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
type: View,
|
|
98
|
-
style: titleContainerStyles,
|
|
99
|
-
elements: [
|
|
100
|
-
{
|
|
101
|
-
type: Text,
|
|
102
|
-
style:
|
|
103
|
-
state === "focused"
|
|
104
|
-
? focusedTitleStyles(styles)
|
|
105
|
-
: titleStyles(styles),
|
|
106
|
-
data: [
|
|
107
|
-
{
|
|
108
|
-
func: "path",
|
|
109
|
-
args: ["title"],
|
|
110
|
-
propName: "label",
|
|
111
|
-
},
|
|
112
|
-
],
|
|
113
|
-
additionalProps: {
|
|
114
|
-
numberOfLines: 2,
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
type: View,
|
|
121
|
-
style: subtitleContainerStyles,
|
|
122
|
-
elements: [
|
|
123
|
-
{
|
|
124
|
-
type: Text,
|
|
125
|
-
style:
|
|
126
|
-
state === "focused"
|
|
127
|
-
? focusedSubtitleStyles(styles)
|
|
128
|
-
: subtitleStyles(styles),
|
|
129
|
-
data: [
|
|
130
|
-
{
|
|
131
|
-
func: "path",
|
|
132
|
-
args: ["summary"],
|
|
133
|
-
propName: "label",
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
additionalProps: {
|
|
137
|
-
numberOfLines: 3,
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
},
|
|
144
|
-
];
|
|
145
|
-
|
|
146
|
-
export const fallbackCellStyle = (styles) => ({
|
|
147
|
-
content_types: {
|
|
148
|
-
default: {
|
|
149
|
-
states: {
|
|
150
|
-
default: viewTree("default", styles),
|
|
151
|
-
focused: viewTree("focused", styles),
|
|
152
|
-
selected: viewTree("selected", styles),
|
|
153
|
-
focused_selected: viewTree("focused_selected", styles),
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
});
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getColor,
|
|
3
|
-
ACTIVE_COLOR,
|
|
4
|
-
BACKGROUND_COLOR,
|
|
5
|
-
MAIN_TEXT_COLOR,
|
|
6
|
-
FOCUSED_TEXT_COLOR,
|
|
7
|
-
} from "../colors";
|
|
8
|
-
|
|
9
|
-
const Image = "Image";
|
|
10
|
-
const View = "View";
|
|
11
|
-
const Text = "Text";
|
|
12
|
-
|
|
13
|
-
const containerStyles = (styles) => ({
|
|
14
|
-
flex: 1,
|
|
15
|
-
flexDirection: "column",
|
|
16
|
-
width: 1280,
|
|
17
|
-
height: 436,
|
|
18
|
-
borderRadius: 4,
|
|
19
|
-
backgroundColor: getColor(BACKGROUND_COLOR, styles),
|
|
20
|
-
marginRight: 48,
|
|
21
|
-
marginBottom: 48,
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
const focusedContainerStyles = (styles) => ({
|
|
25
|
-
...containerStyles(styles),
|
|
26
|
-
backgroundColor: getColor(ACTIVE_COLOR, styles),
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const imageStyle = {
|
|
30
|
-
width: 1280,
|
|
31
|
-
height: 352,
|
|
32
|
-
borderTopRightRadius: 4,
|
|
33
|
-
borderTopLeftRadius: 4,
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const titleContainerStyles = {
|
|
37
|
-
width: 1184,
|
|
38
|
-
height: 60,
|
|
39
|
-
marginHorizontal: 24,
|
|
40
|
-
marginTop: 24,
|
|
41
|
-
overflow: "hidden",
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const titleStyles = (styles) => ({
|
|
45
|
-
fontSize: 26,
|
|
46
|
-
color: getColor(MAIN_TEXT_COLOR, styles),
|
|
47
|
-
fontWeight: "bold",
|
|
48
|
-
fontStyle: "normal",
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
const focusedTitleStyles = (styles) => ({
|
|
52
|
-
...titleStyles(styles),
|
|
53
|
-
color: getColor(FOCUSED_TEXT_COLOR, styles),
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
const viewTree = (state, styles) => [
|
|
57
|
-
{
|
|
58
|
-
type: View,
|
|
59
|
-
style:
|
|
60
|
-
state === "focused"
|
|
61
|
-
? focusedContainerStyles(styles)
|
|
62
|
-
: containerStyles(styles),
|
|
63
|
-
elements: [
|
|
64
|
-
{
|
|
65
|
-
type: Image,
|
|
66
|
-
style: imageStyle,
|
|
67
|
-
data: [
|
|
68
|
-
{
|
|
69
|
-
func: "image_src_from_media_item",
|
|
70
|
-
args: ["thumbnail-small"],
|
|
71
|
-
propName: "uri",
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
type: View,
|
|
77
|
-
style: titleContainerStyles,
|
|
78
|
-
elements: [
|
|
79
|
-
{
|
|
80
|
-
type: Text,
|
|
81
|
-
style:
|
|
82
|
-
state === "focused"
|
|
83
|
-
? focusedTitleStyles(styles)
|
|
84
|
-
: titleStyles(styles),
|
|
85
|
-
data: [
|
|
86
|
-
{
|
|
87
|
-
func: "path",
|
|
88
|
-
args: ["title"],
|
|
89
|
-
propName: "label",
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
additionalProps: {
|
|
93
|
-
numberOfLines: 2,
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
|
-
},
|
|
100
|
-
];
|
|
101
|
-
|
|
102
|
-
export const hero = (styles) => ({
|
|
103
|
-
content_types: {
|
|
104
|
-
default: {
|
|
105
|
-
states: {
|
|
106
|
-
default: viewTree("default", styles),
|
|
107
|
-
focused: viewTree("focused", styles),
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
});
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
const viewTree = (state) => [
|
|
2
|
-
{
|
|
3
|
-
type: "View",
|
|
4
|
-
style: {
|
|
5
|
-
flex: 1,
|
|
6
|
-
// aspectRatio: 1.0487804878,
|
|
7
|
-
paddingTop: 14,
|
|
8
|
-
paddingBottom: 14,
|
|
9
|
-
paddingRight: 30,
|
|
10
|
-
},
|
|
11
|
-
elements: [
|
|
12
|
-
{
|
|
13
|
-
type: "View",
|
|
14
|
-
|
|
15
|
-
elements: [
|
|
16
|
-
{
|
|
17
|
-
type: "Text",
|
|
18
|
-
|
|
19
|
-
style: {
|
|
20
|
-
// paddingHorizontal: "15%",
|
|
21
|
-
paddingTop: "2%",
|
|
22
|
-
paddingBottom: "2%",
|
|
23
|
-
fontSize: 26,
|
|
24
|
-
lineHeight: 32,
|
|
25
|
-
color:
|
|
26
|
-
state === "focused" || state === "selected"
|
|
27
|
-
? "rgba(239,239,239,1.0)"
|
|
28
|
-
: "rgba(239,239,239,0.61)",
|
|
29
|
-
fontWeight: "700",
|
|
30
|
-
},
|
|
31
|
-
data: [
|
|
32
|
-
{
|
|
33
|
-
func: "path",
|
|
34
|
-
args: ["title"],
|
|
35
|
-
propName: "label",
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
additionalProps: {
|
|
39
|
-
numberOfLines: 2,
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
type: "View",
|
|
44
|
-
style: {
|
|
45
|
-
height: 10,
|
|
46
|
-
alignItems: "center",
|
|
47
|
-
justifyContent: "center",
|
|
48
|
-
borderColor: state === "focused" ? "#FC461B" : "transparent",
|
|
49
|
-
borderBottomWidth: 6,
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
},
|
|
56
|
-
];
|
|
57
|
-
|
|
58
|
-
export const screenSelector = {
|
|
59
|
-
content_types: {
|
|
60
|
-
default: {
|
|
61
|
-
states: {
|
|
62
|
-
default: viewTree("default"),
|
|
63
|
-
focused: viewTree("focused"),
|
|
64
|
-
selected: viewTree("selected"),
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as R from "ramda";
|
|
2
|
-
|
|
3
|
-
import { cellStyles } from "./index";
|
|
4
|
-
|
|
5
|
-
type Props = {
|
|
6
|
-
cellStyle: string | null | undefined;
|
|
7
|
-
componentType: string | null | undefined;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function cellStylesResolver({ cellStyle, componentType }: Props) {
|
|
11
|
-
const componentCellStyles =
|
|
12
|
-
R.prop(componentType, cellStyles) || cellStyles.default;
|
|
13
|
-
|
|
14
|
-
const result =
|
|
15
|
-
R.prop(cellStyle || "fallbackCellStyle", componentCellStyles) ||
|
|
16
|
-
componentCellStyles.fallbackCellStyle;
|
|
17
|
-
|
|
18
|
-
return result;
|
|
19
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { transformColorCode as fixColorHexCode } from "@applicaster/zapp-react-native-utils/transform";
|
|
2
|
-
import * as R from "ramda";
|
|
3
|
-
|
|
4
|
-
export const ACTIVE_COLOR = "ACTIVE_COLOR";
|
|
5
|
-
|
|
6
|
-
export const BACKGROUND_COLOR = "BACKGROUND_COLOR";
|
|
7
|
-
|
|
8
|
-
export const MAIN_TEXT_COLOR = "MAIN_TEXT_COLOR";
|
|
9
|
-
|
|
10
|
-
export const FOCUSED_TEXT_COLOR = "FOCUSED_TEXT_COLOR";
|
|
11
|
-
|
|
12
|
-
const colorKeyPath = (keyName) => ["tv", keyName, "color"];
|
|
13
|
-
|
|
14
|
-
const COLORS = {
|
|
15
|
-
[ACTIVE_COLOR]: {
|
|
16
|
-
path: colorKeyPath("active"),
|
|
17
|
-
default: "#FC461B",
|
|
18
|
-
},
|
|
19
|
-
[BACKGROUND_COLOR]: {
|
|
20
|
-
path: colorKeyPath("background"),
|
|
21
|
-
default: "#2F2F2F",
|
|
22
|
-
},
|
|
23
|
-
[MAIN_TEXT_COLOR]: {
|
|
24
|
-
path: colorKeyPath("main_text"),
|
|
25
|
-
default: "#EFEFEF",
|
|
26
|
-
},
|
|
27
|
-
[FOCUSED_TEXT_COLOR]: {
|
|
28
|
-
path: colorKeyPath("focused_text_color"),
|
|
29
|
-
default: "#FFFFFF",
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export const getColor = (name, styles) => {
|
|
34
|
-
const colorKeyPath = R.path([name, "path"], COLORS);
|
|
35
|
-
|
|
36
|
-
return (
|
|
37
|
-
fixColorHexCode(R.path(colorKeyPath, styles)) ||
|
|
38
|
-
R.path([name, "default"], COLORS)
|
|
39
|
-
);
|
|
40
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { fallbackCellStyle } from "./FallbackCellStyle";
|
|
2
|
-
import { hero } from "./Hero";
|
|
3
|
-
import { screenSelector } from "./ScreenSelector";
|
|
4
|
-
|
|
5
|
-
export const cellStyles = {
|
|
6
|
-
default: {
|
|
7
|
-
default: fallbackCellStyle,
|
|
8
|
-
},
|
|
9
|
-
hero: {
|
|
10
|
-
default: hero,
|
|
11
|
-
},
|
|
12
|
-
screenSelector: {
|
|
13
|
-
default: screenSelector,
|
|
14
|
-
},
|
|
15
|
-
};
|