@momo-kits/foundation 0.81.43-api.1 → 0.81.43-api.2
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/Application/Components.tsx +75 -43
- package/Application/Navigator.ts +7 -0
- package/Application/types.ts +10 -5
- package/Application/utils.tsx +15 -0
- package/Badge/styles.ts +5 -2
- package/package.json +1 -1
|
@@ -95,7 +95,7 @@ const styles = StyleSheet.create({
|
|
|
95
95
|
badge: {
|
|
96
96
|
position: 'absolute',
|
|
97
97
|
top: -8,
|
|
98
|
-
right: -
|
|
98
|
+
right: -6,
|
|
99
99
|
},
|
|
100
100
|
});
|
|
101
101
|
|
|
@@ -127,17 +127,19 @@ const NavigationButton: React.FC<NavigationButtonProps> = ({
|
|
|
127
127
|
}, [badgeType, badgeValue]);
|
|
128
128
|
|
|
129
129
|
return (
|
|
130
|
-
<
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
130
|
+
<View style={{width: scaleSize(28)}}>
|
|
131
|
+
<TouchableOpacity
|
|
132
|
+
accessibilityLabel={`NavigationButton/${accessibilityLabel}`}
|
|
133
|
+
style={[styles.navigationButton, buttonStyle]}
|
|
134
|
+
onPress={onPress}>
|
|
135
|
+
<Icon
|
|
136
|
+
source={icon}
|
|
137
|
+
color={tintColor ?? theme.colors.text.default}
|
|
138
|
+
size={20}
|
|
139
|
+
/>
|
|
140
|
+
</TouchableOpacity>
|
|
139
141
|
{renderBadge()}
|
|
140
|
-
</
|
|
142
|
+
</View>
|
|
141
143
|
);
|
|
142
144
|
};
|
|
143
145
|
|
|
@@ -347,10 +349,14 @@ const HeaderRightAction: React.FC<any> = ({children, ...restProps}) => {
|
|
|
347
349
|
return <View style={styles.headerRightButton}>{renderAction()}</View>;
|
|
348
350
|
};
|
|
349
351
|
|
|
350
|
-
const HeaderToolkitAction: React.FC<any> = ({
|
|
352
|
+
const HeaderToolkitAction: React.FC<any> = ({
|
|
353
|
+
tintColor,
|
|
354
|
+
pinnedTool,
|
|
355
|
+
preventBack,
|
|
356
|
+
}) => {
|
|
351
357
|
const {theme, navigator} = useContext(ApplicationContext);
|
|
352
|
-
const [toolConfig, setToolConfig] = useState<
|
|
353
|
-
const {appCode,
|
|
358
|
+
const [toolConfig, setToolConfig] = useState<any>();
|
|
359
|
+
const {appCode, onAction} = toolConfig ?? {};
|
|
354
360
|
|
|
355
361
|
let backgroundColor;
|
|
356
362
|
if (tintColor != Colors.black_01) {
|
|
@@ -361,20 +367,21 @@ const HeaderToolkitAction: React.FC<any> = ({tintColor}) => {
|
|
|
361
367
|
if (navigator?.toolkitConfig) {
|
|
362
368
|
setToolConfig(navigator?.toolkitConfig);
|
|
363
369
|
} else {
|
|
364
|
-
navigator?.requestApi('
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
370
|
+
navigator?.requestApi('getToolkitConfig', [undefined], (config: any) => {
|
|
371
|
+
navigator.toolkitConfig = {
|
|
372
|
+
configs: [
|
|
373
|
+
...config?.miniappTools?.customTools,
|
|
374
|
+
...config?.defaultTools,
|
|
375
|
+
],
|
|
376
|
+
appCode: config?.appCode,
|
|
377
|
+
};
|
|
378
|
+
setToolConfig({
|
|
379
|
+
configs: [
|
|
380
|
+
...config?.miniappTools?.customTools,
|
|
381
|
+
...config?.defaultTools,
|
|
382
|
+
],
|
|
383
|
+
appCode: config?.appCode,
|
|
384
|
+
});
|
|
378
385
|
});
|
|
379
386
|
}
|
|
380
387
|
}, []);
|
|
@@ -417,39 +424,64 @@ const HeaderToolkitAction: React.FC<any> = ({tintColor}) => {
|
|
|
417
424
|
};
|
|
418
425
|
}, [appCode]);
|
|
419
426
|
|
|
420
|
-
const onUtilityTool = () => {
|
|
421
|
-
onAction?.('onUtilityTool');
|
|
422
|
-
navigator?.requestApi(type, undefined, undefined);
|
|
423
|
-
};
|
|
424
|
-
|
|
425
427
|
const onMore = () => {
|
|
426
428
|
onAction?.('onMore');
|
|
427
|
-
navigator?.requestApi(
|
|
429
|
+
navigator?.requestApi(
|
|
430
|
+
'showTools',
|
|
431
|
+
[toolConfig],
|
|
432
|
+
(res: {item: {action?: string; key: string}}) => {
|
|
433
|
+
const {item} = res;
|
|
434
|
+
navigator?.toolkitCallback?.(item);
|
|
435
|
+
},
|
|
436
|
+
);
|
|
428
437
|
};
|
|
429
438
|
|
|
430
439
|
const onClose = () => {
|
|
431
|
-
|
|
432
|
-
|
|
440
|
+
if (preventBack) {
|
|
441
|
+
navigator?.showModal({
|
|
442
|
+
screen: () => (
|
|
443
|
+
<PopupNotify
|
|
444
|
+
{...preventBack}
|
|
445
|
+
primary={{
|
|
446
|
+
title: preventBack.primary.title,
|
|
447
|
+
onPress: () => {
|
|
448
|
+
preventBack?.primary.onPress();
|
|
449
|
+
navigator?.requestApi('dismiss', undefined, undefined);
|
|
450
|
+
},
|
|
451
|
+
}}
|
|
452
|
+
/>
|
|
453
|
+
),
|
|
454
|
+
});
|
|
455
|
+
} else {
|
|
456
|
+
navigator?.requestApi('dismiss', undefined, undefined);
|
|
457
|
+
}
|
|
433
458
|
};
|
|
434
459
|
|
|
435
|
-
const
|
|
436
|
-
|
|
460
|
+
const renderPinnedTool = () => {
|
|
461
|
+
const pinTool = toolConfig?.configs?.find(
|
|
462
|
+
(i: any) => i.key === pinnedTool?.key,
|
|
463
|
+
);
|
|
464
|
+
const {badgeValue, badgeType} = pinnedTool ?? {};
|
|
465
|
+
|
|
466
|
+
if (pinTool)
|
|
437
467
|
return (
|
|
438
468
|
<NavigationButton
|
|
439
469
|
accessibilityLabel={'UtilityTool'}
|
|
440
|
-
icon={
|
|
470
|
+
icon={pinTool.icon as string}
|
|
441
471
|
tintColor={tintColor}
|
|
442
|
-
|
|
472
|
+
badgeValue={badgeValue}
|
|
473
|
+
badgeType={badgeType}
|
|
474
|
+
onPress={() => {
|
|
475
|
+
navigator?.toolkitCallback?.(pinnedTool?.key);
|
|
476
|
+
}}
|
|
443
477
|
/>
|
|
444
478
|
);
|
|
445
|
-
}
|
|
446
|
-
return null;
|
|
447
479
|
};
|
|
448
480
|
|
|
449
481
|
if (toolConfig) {
|
|
450
482
|
return (
|
|
451
483
|
<View style={styles.headerRightButton}>
|
|
452
|
-
{
|
|
484
|
+
{renderPinnedTool()}
|
|
453
485
|
<View
|
|
454
486
|
style={[
|
|
455
487
|
styles.toolkitContainer,
|
package/Application/Navigator.ts
CHANGED
|
@@ -13,6 +13,7 @@ class Navigator {
|
|
|
13
13
|
maxApi?: any;
|
|
14
14
|
trackingInfo?: TrackingInfo;
|
|
15
15
|
dismissData?: any;
|
|
16
|
+
toolkitCallback?: (item: any) => void;
|
|
16
17
|
|
|
17
18
|
constructor(navigation: any) {
|
|
18
19
|
this.ref = navigation;
|
|
@@ -121,6 +122,12 @@ class Navigator {
|
|
|
121
122
|
this.maxApi[func]?.(...args, callback);
|
|
122
123
|
}
|
|
123
124
|
};
|
|
125
|
+
|
|
126
|
+
setToolkitCallback = (
|
|
127
|
+
callback: (item: {key: string; action: string}) => void,
|
|
128
|
+
) => {
|
|
129
|
+
this.toolkitCallback = callback;
|
|
130
|
+
};
|
|
124
131
|
}
|
|
125
132
|
|
|
126
133
|
export default Navigator;
|
package/Application/types.ts
CHANGED
|
@@ -128,8 +128,14 @@ export type NavigationButtonProps = {
|
|
|
128
128
|
useBorder?: boolean;
|
|
129
129
|
onPress: () => void;
|
|
130
130
|
accessibilityLabel?: string;
|
|
131
|
-
badgeType?: 'dot' | 'number'
|
|
132
|
-
badgeValue?: number
|
|
131
|
+
badgeType?: 'dot' | 'number';
|
|
132
|
+
badgeValue?: number;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
export type PinnedToolType = {
|
|
136
|
+
key: string;
|
|
137
|
+
badgeValue?: number;
|
|
138
|
+
badgeType?: 'number' | 'dot';
|
|
133
139
|
};
|
|
134
140
|
|
|
135
141
|
export interface NavigationOptions extends StackNavigationOptions {
|
|
@@ -138,6 +144,7 @@ export interface NavigationOptions extends StackNavigationOptions {
|
|
|
138
144
|
surface?: boolean;
|
|
139
145
|
hiddenBack?: boolean;
|
|
140
146
|
customTitle?: TitleCustomProps;
|
|
147
|
+
pinnedTool?: PinnedToolType;
|
|
141
148
|
}
|
|
142
149
|
|
|
143
150
|
export interface HeaderBackProps extends NavigationButtonProps {
|
|
@@ -166,9 +173,7 @@ export type TitleCustomProps = {
|
|
|
166
173
|
export type HeaderToolkitProps = {
|
|
167
174
|
[key: string]: any;
|
|
168
175
|
appCode: string;
|
|
169
|
-
|
|
170
|
-
type: string;
|
|
171
|
-
onAction?: (action: string) => void;
|
|
176
|
+
configs: any[];
|
|
172
177
|
};
|
|
173
178
|
|
|
174
179
|
export type HeaderAnimatedProps = {
|
package/Application/utils.tsx
CHANGED
|
@@ -126,6 +126,21 @@ const getOptions = (params: NavigationOptions, theme: Theme) => {
|
|
|
126
126
|
};
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
+
if (params.pinnedTool) {
|
|
130
|
+
options = {
|
|
131
|
+
...options,
|
|
132
|
+
headerRight: (props: any) => {
|
|
133
|
+
return (
|
|
134
|
+
<HeaderToolkitAction
|
|
135
|
+
preventBack={params.preventBack}
|
|
136
|
+
pinnedTool={params.pinnedTool}
|
|
137
|
+
{...props}
|
|
138
|
+
/>
|
|
139
|
+
);
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
129
144
|
return {
|
|
130
145
|
...params,
|
|
131
146
|
...options,
|
package/Badge/styles.ts
CHANGED
|
@@ -4,13 +4,16 @@ import {scaleSize} from '../Text';
|
|
|
4
4
|
|
|
5
5
|
export default StyleSheet.create({
|
|
6
6
|
badge: {
|
|
7
|
+
paddingHorizontal: Spacing.XS,
|
|
7
8
|
borderRadius: Radius.M,
|
|
8
9
|
justifyContent: 'center',
|
|
10
|
+
alignItems: 'center',
|
|
9
11
|
height: scaleSize(16),
|
|
12
|
+
minWidth: scaleSize(16),
|
|
10
13
|
flexDirection: 'row',
|
|
14
|
+
borderWidth: 1,
|
|
11
15
|
borderColor: Colors.black_01,
|
|
12
|
-
|
|
13
|
-
alignItems: 'center',
|
|
16
|
+
alignSelf: 'baseline',
|
|
14
17
|
},
|
|
15
18
|
dot: {
|
|
16
19
|
width: 16,
|