@applicaster/zapp-react-native-utils 13.0.0-alpha.3332871333 → 13.0.0-alpha.3390783725
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/actionsExecutor/ActionExecutorContext.tsx +22 -0
- package/actionsExecutor/consts.ts +4 -0
- package/appUtils/__tests__/__snapshots__/localizationsHelper.test.ts.snap +151 -0
- package/appUtils/__tests__/allZappLocales.ts +79 -0
- package/appUtils/__tests__/{localizationsHelper.test.js → localizationsHelper.test.ts} +11 -0
- package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +1 -0
- package/appUtils/focusManager/index.ios.ts +14 -4
- package/appUtils/focusManager/utils/__tests__/findChild.test.ts +35 -0
- package/appUtils/focusManager/utils/index.ts +5 -0
- package/appUtils/localizationsHelper.ts +2 -1
- package/manifestUtils/defaultManifestConfigurations/generalContent.js +13 -0
- package/manifestUtils/keys.js +18 -2
- package/package.json +2 -2
- package/reactHooks/useListenEventBusEvent.ts +1 -1
|
@@ -26,6 +26,8 @@ import {
|
|
|
26
26
|
useContentTypes,
|
|
27
27
|
usePickFromState,
|
|
28
28
|
} from "@applicaster/zapp-react-native-redux/hooks";
|
|
29
|
+
import { TOGGLE_FLAG_MAX_ITEMS_REACHED_EVENT } from "./consts";
|
|
30
|
+
import { postEvent } from "../reactHooks/useSubscriberFor";
|
|
29
31
|
|
|
30
32
|
export const { log_error, log_info, log_debug } = createLogger({
|
|
31
33
|
subsystem: "ActionExecutorContext",
|
|
@@ -74,6 +76,19 @@ function findParentComponent(
|
|
|
74
76
|
return null;
|
|
75
77
|
}
|
|
76
78
|
|
|
79
|
+
// send all data just in case (like for message string formatting)
|
|
80
|
+
// Type is not exported for now
|
|
81
|
+
type MaxTagsReachedEvent = {
|
|
82
|
+
selectedItems: string[];
|
|
83
|
+
maxItems: number;
|
|
84
|
+
tag: string;
|
|
85
|
+
keyNamespace: string;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
async function onMaxTagsReached(data: MaxTagsReachedEvent) {
|
|
89
|
+
postEvent(TOGGLE_FLAG_MAX_ITEMS_REACHED_EVENT, [data]);
|
|
90
|
+
}
|
|
91
|
+
|
|
77
92
|
const prepareDefaultActions = (actionExecutor) => {
|
|
78
93
|
actionExecutor.registerAction("localStorageSet", async (action) => {
|
|
79
94
|
const namespaces = action.options.content;
|
|
@@ -241,6 +256,13 @@ const prepareDefaultActions = (actionExecutor) => {
|
|
|
241
256
|
`handleAction: localStorageToggleFlag event reached max items limit: ${maxItems}, cannot add tag: ${tag}`
|
|
242
257
|
);
|
|
243
258
|
|
|
259
|
+
await onMaxTagsReached({
|
|
260
|
+
selectedItems,
|
|
261
|
+
maxItems,
|
|
262
|
+
tag,
|
|
263
|
+
keyNamespace,
|
|
264
|
+
});
|
|
265
|
+
|
|
244
266
|
return ActionResult.Cancel;
|
|
245
267
|
}
|
|
246
268
|
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`toDayJSLocaleMap [af] returns a valid dayjs locale 1`] = `"af"`;
|
|
4
|
+
|
|
5
|
+
exports[`toDayJSLocaleMap [ar] returns a valid dayjs locale 1`] = `"ar"`;
|
|
6
|
+
|
|
7
|
+
exports[`toDayJSLocaleMap [bg] returns a valid dayjs locale 1`] = `"bg"`;
|
|
8
|
+
|
|
9
|
+
exports[`toDayJSLocaleMap [bn] returns a valid dayjs locale 1`] = `"bn"`;
|
|
10
|
+
|
|
11
|
+
exports[`toDayJSLocaleMap [bo] returns a valid dayjs locale 1`] = `"bo"`;
|
|
12
|
+
|
|
13
|
+
exports[`toDayJSLocaleMap [ca] returns a valid dayjs locale 1`] = `"ca"`;
|
|
14
|
+
|
|
15
|
+
exports[`toDayJSLocaleMap [cs] returns a valid dayjs locale 1`] = `"cs"`;
|
|
16
|
+
|
|
17
|
+
exports[`toDayJSLocaleMap [da] returns a valid dayjs locale 1`] = `"da"`;
|
|
18
|
+
|
|
19
|
+
exports[`toDayJSLocaleMap [de] returns a valid dayjs locale 1`] = `"de"`;
|
|
20
|
+
|
|
21
|
+
exports[`toDayJSLocaleMap [el] returns a valid dayjs locale 1`] = `"el"`;
|
|
22
|
+
|
|
23
|
+
exports[`toDayJSLocaleMap [en] returns a valid dayjs locale 1`] = `"en"`;
|
|
24
|
+
|
|
25
|
+
exports[`toDayJSLocaleMap [en-GB] returns a valid dayjs locale 1`] = `"en-gb"`;
|
|
26
|
+
|
|
27
|
+
exports[`toDayJSLocaleMap [en-UK] returns a valid dayjs locale 1`] = `"en-gb"`;
|
|
28
|
+
|
|
29
|
+
exports[`toDayJSLocaleMap [es] returns a valid dayjs locale 1`] = `"es"`;
|
|
30
|
+
|
|
31
|
+
exports[`toDayJSLocaleMap [es-LA] returns a valid dayjs locale 1`] = `"es"`;
|
|
32
|
+
|
|
33
|
+
exports[`toDayJSLocaleMap [es-MX] returns a valid dayjs locale 1`] = `"es-mx"`;
|
|
34
|
+
|
|
35
|
+
exports[`toDayJSLocaleMap [es-US] returns a valid dayjs locale 1`] = `"es-us"`;
|
|
36
|
+
|
|
37
|
+
exports[`toDayJSLocaleMap [et] returns a valid dayjs locale 1`] = `"et"`;
|
|
38
|
+
|
|
39
|
+
exports[`toDayJSLocaleMap [eu] returns a valid dayjs locale 1`] = `"eu"`;
|
|
40
|
+
|
|
41
|
+
exports[`toDayJSLocaleMap [fa] returns a valid dayjs locale 1`] = `"fa"`;
|
|
42
|
+
|
|
43
|
+
exports[`toDayJSLocaleMap [fi] returns a valid dayjs locale 1`] = `"fi"`;
|
|
44
|
+
|
|
45
|
+
exports[`toDayJSLocaleMap [fj] returns a valid dayjs locale 1`] = `"en"`;
|
|
46
|
+
|
|
47
|
+
exports[`toDayJSLocaleMap [fr] returns a valid dayjs locale 1`] = `"fr"`;
|
|
48
|
+
|
|
49
|
+
exports[`toDayJSLocaleMap [ga] returns a valid dayjs locale 1`] = `"ga"`;
|
|
50
|
+
|
|
51
|
+
exports[`toDayJSLocaleMap [gu] returns a valid dayjs locale 1`] = `"gu"`;
|
|
52
|
+
|
|
53
|
+
exports[`toDayJSLocaleMap [he] returns a valid dayjs locale 1`] = `"he"`;
|
|
54
|
+
|
|
55
|
+
exports[`toDayJSLocaleMap [hi] returns a valid dayjs locale 1`] = `"hi"`;
|
|
56
|
+
|
|
57
|
+
exports[`toDayJSLocaleMap [hr] returns a valid dayjs locale 1`] = `"hr"`;
|
|
58
|
+
|
|
59
|
+
exports[`toDayJSLocaleMap [hu] returns a valid dayjs locale 1`] = `"hu"`;
|
|
60
|
+
|
|
61
|
+
exports[`toDayJSLocaleMap [hy] returns a valid dayjs locale 1`] = `"hy-am"`;
|
|
62
|
+
|
|
63
|
+
exports[`toDayJSLocaleMap [id] returns a valid dayjs locale 1`] = `"id"`;
|
|
64
|
+
|
|
65
|
+
exports[`toDayJSLocaleMap [is] returns a valid dayjs locale 1`] = `"is"`;
|
|
66
|
+
|
|
67
|
+
exports[`toDayJSLocaleMap [it] returns a valid dayjs locale 1`] = `"it"`;
|
|
68
|
+
|
|
69
|
+
exports[`toDayJSLocaleMap [ja] returns a valid dayjs locale 1`] = `"ja"`;
|
|
70
|
+
|
|
71
|
+
exports[`toDayJSLocaleMap [ka] returns a valid dayjs locale 1`] = `"ka"`;
|
|
72
|
+
|
|
73
|
+
exports[`toDayJSLocaleMap [km] returns a valid dayjs locale 1`] = `"km"`;
|
|
74
|
+
|
|
75
|
+
exports[`toDayJSLocaleMap [ko] returns a valid dayjs locale 1`] = `"ko"`;
|
|
76
|
+
|
|
77
|
+
exports[`toDayJSLocaleMap [la] returns a valid dayjs locale 1`] = `"en"`;
|
|
78
|
+
|
|
79
|
+
exports[`toDayJSLocaleMap [lt] returns a valid dayjs locale 1`] = `"lt"`;
|
|
80
|
+
|
|
81
|
+
exports[`toDayJSLocaleMap [lv] returns a valid dayjs locale 1`] = `"lv"`;
|
|
82
|
+
|
|
83
|
+
exports[`toDayJSLocaleMap [mi] returns a valid dayjs locale 1`] = `"mi"`;
|
|
84
|
+
|
|
85
|
+
exports[`toDayJSLocaleMap [mk] returns a valid dayjs locale 1`] = `"mk"`;
|
|
86
|
+
|
|
87
|
+
exports[`toDayJSLocaleMap [ml] returns a valid dayjs locale 1`] = `"ml"`;
|
|
88
|
+
|
|
89
|
+
exports[`toDayJSLocaleMap [mn] returns a valid dayjs locale 1`] = `"mn"`;
|
|
90
|
+
|
|
91
|
+
exports[`toDayJSLocaleMap [mr] returns a valid dayjs locale 1`] = `"mr"`;
|
|
92
|
+
|
|
93
|
+
exports[`toDayJSLocaleMap [ms] returns a valid dayjs locale 1`] = `"ms"`;
|
|
94
|
+
|
|
95
|
+
exports[`toDayJSLocaleMap [mt] returns a valid dayjs locale 1`] = `"mt"`;
|
|
96
|
+
|
|
97
|
+
exports[`toDayJSLocaleMap [ne] returns a valid dayjs locale 1`] = `"ne"`;
|
|
98
|
+
|
|
99
|
+
exports[`toDayJSLocaleMap [nl] returns a valid dayjs locale 1`] = `"nl"`;
|
|
100
|
+
|
|
101
|
+
exports[`toDayJSLocaleMap [no] returns a valid dayjs locale 1`] = `"en"`;
|
|
102
|
+
|
|
103
|
+
exports[`toDayJSLocaleMap [pa] returns a valid dayjs locale 1`] = `"pa-in"`;
|
|
104
|
+
|
|
105
|
+
exports[`toDayJSLocaleMap [pl] returns a valid dayjs locale 1`] = `"pl"`;
|
|
106
|
+
|
|
107
|
+
exports[`toDayJSLocaleMap [pt] returns a valid dayjs locale 1`] = `"pt"`;
|
|
108
|
+
|
|
109
|
+
exports[`toDayJSLocaleMap [pt-BR] returns a valid dayjs locale 1`] = `"pt-br"`;
|
|
110
|
+
|
|
111
|
+
exports[`toDayJSLocaleMap [qu] returns a valid dayjs locale 1`] = `"en"`;
|
|
112
|
+
|
|
113
|
+
exports[`toDayJSLocaleMap [ro] returns a valid dayjs locale 1`] = `"ro"`;
|
|
114
|
+
|
|
115
|
+
exports[`toDayJSLocaleMap [ru] returns a valid dayjs locale 1`] = `"ru"`;
|
|
116
|
+
|
|
117
|
+
exports[`toDayJSLocaleMap [sk] returns a valid dayjs locale 1`] = `"sk"`;
|
|
118
|
+
|
|
119
|
+
exports[`toDayJSLocaleMap [sl] returns a valid dayjs locale 1`] = `"sl"`;
|
|
120
|
+
|
|
121
|
+
exports[`toDayJSLocaleMap [sm] returns a valid dayjs locale 1`] = `"en"`;
|
|
122
|
+
|
|
123
|
+
exports[`toDayJSLocaleMap [sq] returns a valid dayjs locale 1`] = `"sq"`;
|
|
124
|
+
|
|
125
|
+
exports[`toDayJSLocaleMap [sr] returns a valid dayjs locale 1`] = `"sr"`;
|
|
126
|
+
|
|
127
|
+
exports[`toDayJSLocaleMap [sv] returns a valid dayjs locale 1`] = `"sv"`;
|
|
128
|
+
|
|
129
|
+
exports[`toDayJSLocaleMap [sw] returns a valid dayjs locale 1`] = `"sw"`;
|
|
130
|
+
|
|
131
|
+
exports[`toDayJSLocaleMap [ta] returns a valid dayjs locale 1`] = `"ta"`;
|
|
132
|
+
|
|
133
|
+
exports[`toDayJSLocaleMap [te] returns a valid dayjs locale 1`] = `"te"`;
|
|
134
|
+
|
|
135
|
+
exports[`toDayJSLocaleMap [th] returns a valid dayjs locale 1`] = `"th"`;
|
|
136
|
+
|
|
137
|
+
exports[`toDayJSLocaleMap [to] returns a valid dayjs locale 1`] = `"en"`;
|
|
138
|
+
|
|
139
|
+
exports[`toDayJSLocaleMap [tr] returns a valid dayjs locale 1`] = `"tr"`;
|
|
140
|
+
|
|
141
|
+
exports[`toDayJSLocaleMap [tt] returns a valid dayjs locale 1`] = `"en"`;
|
|
142
|
+
|
|
143
|
+
exports[`toDayJSLocaleMap [uk] returns a valid dayjs locale 1`] = `"uk"`;
|
|
144
|
+
|
|
145
|
+
exports[`toDayJSLocaleMap [ur] returns a valid dayjs locale 1`] = `"ur"`;
|
|
146
|
+
|
|
147
|
+
exports[`toDayJSLocaleMap [uz] returns a valid dayjs locale 1`] = `"uz"`;
|
|
148
|
+
|
|
149
|
+
exports[`toDayJSLocaleMap [vi] returns a valid dayjs locale 1`] = `"vi"`;
|
|
150
|
+
|
|
151
|
+
exports[`toDayJSLocaleMap [zh] returns a valid dayjs locale 1`] = `"zh"`;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export default [
|
|
2
|
+
// common locales from https://rubygems.org/gems/language_list
|
|
3
|
+
"en",
|
|
4
|
+
"fr",
|
|
5
|
+
"de",
|
|
6
|
+
"nl",
|
|
7
|
+
"ru",
|
|
8
|
+
"es",
|
|
9
|
+
"he",
|
|
10
|
+
"hy",
|
|
11
|
+
"sq",
|
|
12
|
+
"af",
|
|
13
|
+
"ar",
|
|
14
|
+
"eu",
|
|
15
|
+
"bn",
|
|
16
|
+
"bg",
|
|
17
|
+
"zh",
|
|
18
|
+
"cs",
|
|
19
|
+
"km",
|
|
20
|
+
"ca",
|
|
21
|
+
"hr",
|
|
22
|
+
"da",
|
|
23
|
+
"et",
|
|
24
|
+
"fj",
|
|
25
|
+
"fi",
|
|
26
|
+
"gu",
|
|
27
|
+
"ka",
|
|
28
|
+
"hu",
|
|
29
|
+
"hi",
|
|
30
|
+
"it",
|
|
31
|
+
"is",
|
|
32
|
+
"id",
|
|
33
|
+
"ga",
|
|
34
|
+
"ja",
|
|
35
|
+
"ko",
|
|
36
|
+
"la",
|
|
37
|
+
"lv",
|
|
38
|
+
"lt",
|
|
39
|
+
"ms",
|
|
40
|
+
"mi",
|
|
41
|
+
"mn",
|
|
42
|
+
"mt",
|
|
43
|
+
"mk",
|
|
44
|
+
"el",
|
|
45
|
+
"mr",
|
|
46
|
+
"ml",
|
|
47
|
+
"ne",
|
|
48
|
+
"no",
|
|
49
|
+
"pa",
|
|
50
|
+
"pl",
|
|
51
|
+
"pt",
|
|
52
|
+
"fa",
|
|
53
|
+
"qu",
|
|
54
|
+
"ro",
|
|
55
|
+
"sk",
|
|
56
|
+
"sm",
|
|
57
|
+
"sr",
|
|
58
|
+
"sw",
|
|
59
|
+
"sv",
|
|
60
|
+
"sl",
|
|
61
|
+
"to",
|
|
62
|
+
"tr",
|
|
63
|
+
"th",
|
|
64
|
+
"te",
|
|
65
|
+
"bo",
|
|
66
|
+
"tt",
|
|
67
|
+
"ta",
|
|
68
|
+
"uk",
|
|
69
|
+
"ur",
|
|
70
|
+
"uz",
|
|
71
|
+
"vi",
|
|
72
|
+
// Extra locales https://github.com/applicaster/zapp/blob/5604794f15cfd270ae494b0db85e542de4cebfaa/config/additional_languages.yml
|
|
73
|
+
"en-UK",
|
|
74
|
+
"en-GB",
|
|
75
|
+
"es-LA",
|
|
76
|
+
"pt-BR",
|
|
77
|
+
"es-MX",
|
|
78
|
+
"es-US",
|
|
79
|
+
];
|
|
@@ -8,6 +8,7 @@ const {
|
|
|
8
8
|
getLocale,
|
|
9
9
|
getLanguageCode,
|
|
10
10
|
getCountryCode,
|
|
11
|
+
toDayJSLocaleMap,
|
|
11
12
|
} = require("../localizationsHelper");
|
|
12
13
|
|
|
13
14
|
describe("getLocale", () => {
|
|
@@ -69,3 +70,13 @@ describe("getCountryCode", () => {
|
|
|
69
70
|
expect(currentValue).toEqual(expectedValue);
|
|
70
71
|
});
|
|
71
72
|
});
|
|
73
|
+
|
|
74
|
+
describe("toDayJSLocaleMap", () => {
|
|
75
|
+
const allZappLocales: string[] = require("./allZappLocales").default;
|
|
76
|
+
|
|
77
|
+
it.each(allZappLocales)("[%s] returns a valid dayjs locale", (locale) => {
|
|
78
|
+
const dayJSLocale = toDayJSLocaleMap(locale);
|
|
79
|
+
expect(dayJSLocale).toBeDefined();
|
|
80
|
+
expect(dayJSLocale).toMatchSnapshot();
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -61,6 +61,7 @@ exports[`focusManagerIOS should be defined 1`] = `
|
|
|
61
61
|
"getCurrentGroup": [Function],
|
|
62
62
|
"getGroupById": [Function],
|
|
63
63
|
"getGroupRootById": [Function],
|
|
64
|
+
"getPreferredFocusChild": [Function],
|
|
64
65
|
"invokeHandler": [Function],
|
|
65
66
|
"isGroupItemFocused": [Function],
|
|
66
67
|
"moveFocus": [Function],
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { NativeModules } from "react-native";
|
|
2
2
|
import * as R from "ramda";
|
|
3
|
+
|
|
3
4
|
import { Tree } from "./treeDataStructure/Tree";
|
|
4
5
|
import { findFocusableNode } from "./treeDataStructure/Utils";
|
|
5
6
|
import { subscriber } from "../../functionUtils";
|
|
7
|
+
import { findChild } from "./utils";
|
|
6
8
|
|
|
7
9
|
const { FocusableManagerModule } = NativeModules;
|
|
8
10
|
|
|
@@ -52,10 +54,7 @@ export const focusManager = (function () {
|
|
|
52
54
|
const node = focusableTree.findInTree(groupId);
|
|
53
55
|
|
|
54
56
|
if (node?.children?.length > 0) {
|
|
55
|
-
const preferredFocus =
|
|
56
|
-
R.find(R.pathEq(["component", "props", "preferredFocus"], true)),
|
|
57
|
-
R.prop("children")
|
|
58
|
-
)(node);
|
|
57
|
+
const preferredFocus = findChild(true, node);
|
|
59
58
|
|
|
60
59
|
if (preferredFocus?.component?.isGroup) {
|
|
61
60
|
return getPreferredFocusInGroup({ groupId: preferredFocus?.id });
|
|
@@ -382,6 +381,16 @@ export const focusManager = (function () {
|
|
|
382
381
|
forceFocusOnItem({ focusableItem, callback });
|
|
383
382
|
}
|
|
384
383
|
|
|
384
|
+
function getPreferredFocusChild(id) {
|
|
385
|
+
const node = focusableTree.findInTree(id);
|
|
386
|
+
|
|
387
|
+
if (node?.children?.length > 0) {
|
|
388
|
+
return findChild(true, node) || findChild(false, node);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return node;
|
|
392
|
+
}
|
|
393
|
+
|
|
385
394
|
return {
|
|
386
395
|
on,
|
|
387
396
|
invokeHandler,
|
|
@@ -402,5 +411,6 @@ export const focusManager = (function () {
|
|
|
402
411
|
getCurrentGroup,
|
|
403
412
|
getGroupRootById,
|
|
404
413
|
isGroupItemFocused,
|
|
414
|
+
getPreferredFocusChild,
|
|
405
415
|
};
|
|
406
416
|
})();
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { findChild } from "../index";
|
|
2
|
+
|
|
3
|
+
describe("findChild", () => {
|
|
4
|
+
const makeNode = (children = []) => ({ children });
|
|
5
|
+
|
|
6
|
+
const child = (preferredFocus: boolean) => ({
|
|
7
|
+
component: { props: { preferredFocus } },
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it("returns the child with preferredFocus=true", () => {
|
|
11
|
+
const node = makeNode([child(false), child(true), child(false)]);
|
|
12
|
+
expect(findChild(true, node)).toBe(node.children[1]);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("returns the child with preferredFocus=false", () => {
|
|
16
|
+
const node = makeNode([child(false), child(true), child(false)]);
|
|
17
|
+
expect(findChild(false, node)).toBe(node.children[0]);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("returns undefined if no child matches preferredFocus", () => {
|
|
21
|
+
const node = makeNode([child(false), child(false)]);
|
|
22
|
+
expect(findChild(true, node)).toBeUndefined();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("returns undefined if node has no children", () => {
|
|
26
|
+
const node = makeNode();
|
|
27
|
+
expect(findChild(true, node)).toBeUndefined();
|
|
28
|
+
expect(findChild(false, node)).toBeUndefined();
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it("returns undefined if children is not an array", () => {
|
|
32
|
+
const node = { children: null };
|
|
33
|
+
expect(findChild(true, node)).toBeUndefined();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
@@ -98,3 +98,8 @@ export const waitForContent = (focusableTree) => {
|
|
|
98
98
|
conditionFn: contentHasAnyChildren,
|
|
99
99
|
});
|
|
100
100
|
};
|
|
101
|
+
|
|
102
|
+
export const findChild = (preferredFocus: boolean, node) =>
|
|
103
|
+
(node?.children || []).find(
|
|
104
|
+
(child) => child?.component?.props?.preferredFocus === preferredFocus
|
|
105
|
+
);
|
|
@@ -82,6 +82,7 @@ export const toDayJSLocaleMap = (code) => {
|
|
|
82
82
|
sm: null,
|
|
83
83
|
to: null,
|
|
84
84
|
xh: null,
|
|
85
|
+
tt: null,
|
|
85
86
|
"es-LA": "es",
|
|
86
87
|
"en-UK": "en-gb",
|
|
87
88
|
};
|
|
@@ -91,7 +92,7 @@ export const toDayJSLocaleMap = (code) => {
|
|
|
91
92
|
} else if (map[code]) {
|
|
92
93
|
return map[code];
|
|
93
94
|
} else {
|
|
94
|
-
return code;
|
|
95
|
+
return code.toLowerCase();
|
|
95
96
|
}
|
|
96
97
|
};
|
|
97
98
|
|
|
@@ -251,6 +251,19 @@ const generalContent = () => ({
|
|
|
251
251
|
key: "screen_title",
|
|
252
252
|
initial_value: null,
|
|
253
253
|
},
|
|
254
|
+
{
|
|
255
|
+
type: "text_input",
|
|
256
|
+
label: "Maximum Selection Reached - Alert Description",
|
|
257
|
+
key: "msg_maximum_selection_reached_message",
|
|
258
|
+
initial_value:
|
|
259
|
+
"You’ve reached the maximum number of items you can select.",
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
type: "text_input",
|
|
263
|
+
label: "Maximum Selection Reached - Alert Button",
|
|
264
|
+
key: "msg_maximum_selection_reached_message_ok_button",
|
|
265
|
+
initial_value: "Got it",
|
|
266
|
+
},
|
|
254
267
|
],
|
|
255
268
|
},
|
|
256
269
|
advertising: {
|
package/manifestUtils/keys.js
CHANGED
|
@@ -21,7 +21,14 @@ const ZAPPIFEST_FIELDS = {
|
|
|
21
21
|
},
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const
|
|
24
|
+
const TV_PLATFORMS_FOR_FONTS = [
|
|
25
|
+
"tvOS",
|
|
26
|
+
"android",
|
|
27
|
+
"LG",
|
|
28
|
+
"samsung",
|
|
29
|
+
"roku",
|
|
30
|
+
"vizio",
|
|
31
|
+
];
|
|
25
32
|
|
|
26
33
|
const MOBILE_PLATFORMS = [
|
|
27
34
|
"ios",
|
|
@@ -30,6 +37,15 @@ const MOBILE_PLATFORMS = [
|
|
|
30
37
|
"android_for_quickbrick",
|
|
31
38
|
];
|
|
32
39
|
|
|
40
|
+
const TV_PLATFORMS = [
|
|
41
|
+
"android_tv_for_quickbrick",
|
|
42
|
+
"amazon_fire_tv_for_quickbrick",
|
|
43
|
+
"tvos_for_quickbrick",
|
|
44
|
+
"samsung_tv",
|
|
45
|
+
"lg_tv",
|
|
46
|
+
"vizio",
|
|
47
|
+
];
|
|
48
|
+
|
|
33
49
|
const FontPropsForTVPlatform = (platform) => ({
|
|
34
50
|
[`${R.toLower(platform)}FontFamily`]: {
|
|
35
51
|
name: `${platform} font family`,
|
|
@@ -99,7 +115,7 @@ const TV_FONT_KEY_DATA = {
|
|
|
99
115
|
name: "focused font color",
|
|
100
116
|
type: ZAPPIFEST_FIELDS.color_picker,
|
|
101
117
|
},
|
|
102
|
-
...R.reduce(addTVFontsForPlatform, {},
|
|
118
|
+
...R.reduce(addTVFontsForPlatform, {}, TV_PLATFORMS_FOR_FONTS),
|
|
103
119
|
textAlignment: {
|
|
104
120
|
name: "text alignment",
|
|
105
121
|
type: ZAPPIFEST_FIELDS.select,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/zapp-react-native-utils",
|
|
3
|
-
"version": "13.0.0-alpha.
|
|
3
|
+
"version": "13.0.0-alpha.3390783725",
|
|
4
4
|
"description": "Applicaster Zapp React Native utilities package",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"homepage": "https://github.com/applicaster/quickbrick#readme",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@applicaster/applicaster-types": "13.0.0-alpha.
|
|
30
|
+
"@applicaster/applicaster-types": "13.0.0-alpha.3390783725",
|
|
31
31
|
"buffer": "^5.2.1",
|
|
32
32
|
"camelize": "^1.0.0",
|
|
33
33
|
"dayjs": "^1.11.10",
|