@momo-kits/foundation 0.162.2-beta.17 → 0.162.2-beta.18
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/Button/index.tsx +6 -17
- package/Button/styles.ts +0 -3
- package/IconButton/index.tsx +29 -7
- package/IconButton/styles.ts +2 -12
- package/package.json +6 -6
package/Button/index.tsx
CHANGED
|
@@ -49,12 +49,6 @@ export interface ButtonProps extends TouchableOpacityProps {
|
|
|
49
49
|
iconRight?: string;
|
|
50
50
|
iconLeft?: string;
|
|
51
51
|
title: string;
|
|
52
|
-
/**
|
|
53
|
-
* When true, hides the label and renders only the centered icon.
|
|
54
|
-
* `title` stays required and is used as the accessibility label.
|
|
55
|
-
* Icon-only buttons hug their icon, so the `full` prop is ignored.
|
|
56
|
-
*/
|
|
57
|
-
iconOnly?: boolean;
|
|
58
52
|
tintColor?: string;
|
|
59
53
|
loading?: boolean;
|
|
60
54
|
onPress: () => void;
|
|
@@ -68,7 +62,6 @@ const Button: FC<ButtonProps> = ({
|
|
|
68
62
|
full = true,
|
|
69
63
|
iconRight,
|
|
70
64
|
iconLeft,
|
|
71
|
-
iconOnly = false,
|
|
72
65
|
loading = false,
|
|
73
66
|
title = 'Button',
|
|
74
67
|
params,
|
|
@@ -270,8 +263,8 @@ const Button: FC<ButtonProps> = ({
|
|
|
270
263
|
{
|
|
271
264
|
width: iconSize,
|
|
272
265
|
height: iconSize,
|
|
273
|
-
marginRight:
|
|
274
|
-
marginLeft:
|
|
266
|
+
marginRight: isLeft ? space : 0,
|
|
267
|
+
marginLeft: isLeft ? 0 : space,
|
|
275
268
|
},
|
|
276
269
|
];
|
|
277
270
|
|
|
@@ -319,14 +312,10 @@ const Button: FC<ButtonProps> = ({
|
|
|
319
312
|
const sizeStyle = getSizeStyle();
|
|
320
313
|
const typeStyle = getTypeStyle();
|
|
321
314
|
const containerStyle: ViewStyle = StyleSheet.flatten([
|
|
322
|
-
full &&
|
|
315
|
+
full && { width: '100%' },
|
|
323
316
|
loading && { opacity: 0.75 },
|
|
324
317
|
]);
|
|
325
|
-
const buttonStyle = StyleSheet.flatten([
|
|
326
|
-
sizeStyle,
|
|
327
|
-
typeStyle,
|
|
328
|
-
iconOnly && styles.iconOnly,
|
|
329
|
-
]);
|
|
318
|
+
const buttonStyle = StyleSheet.flatten([sizeStyle, typeStyle]);
|
|
330
319
|
|
|
331
320
|
const animatedStyle = useAnimatedStyle(() => {
|
|
332
321
|
return {
|
|
@@ -363,8 +352,8 @@ const Button: FC<ButtonProps> = ({
|
|
|
363
352
|
onPressOut={animateOut}
|
|
364
353
|
>
|
|
365
354
|
<Reanimated.View style={[buttonStyle, animatedStyle]}>
|
|
366
|
-
|
|
367
|
-
{
|
|
355
|
+
{renderIcon('left')}
|
|
356
|
+
{renderTitle()}
|
|
368
357
|
{renderIcon('right')}
|
|
369
358
|
{gradientPros && (
|
|
370
359
|
<LinearGradient {...gradientPros} style={styles.gradientView} />
|
package/Button/styles.ts
CHANGED
package/IconButton/index.tsx
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
ComponentContext,
|
|
10
10
|
MiniAppContext,
|
|
11
11
|
} from '../Context';
|
|
12
|
-
import { Colors } from '../Consts';
|
|
12
|
+
import { Colors, Radius } from '../Consts';
|
|
13
13
|
import { Icon } from '../Icon';
|
|
14
14
|
import styles from './styles';
|
|
15
15
|
|
|
@@ -30,6 +30,11 @@ export interface IconButtonProps extends TouchableOpacityProps {
|
|
|
30
30
|
*/
|
|
31
31
|
size?: 'large' | 'small';
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Optional. Defines the shape of the IconButton. Defaults to 'circle'.
|
|
35
|
+
*/
|
|
36
|
+
shape?: 'circle' | 'square' | 'rectangle';
|
|
37
|
+
|
|
33
38
|
/**
|
|
34
39
|
* Optional. Params auto tracking component.
|
|
35
40
|
*/
|
|
@@ -40,6 +45,7 @@ const IconButton: React.FC<IconButtonProps> = ({
|
|
|
40
45
|
type = 'primary',
|
|
41
46
|
icon,
|
|
42
47
|
size,
|
|
48
|
+
shape = 'circle',
|
|
43
49
|
params,
|
|
44
50
|
...rest
|
|
45
51
|
}) => {
|
|
@@ -49,13 +55,25 @@ const IconButton: React.FC<IconButtonProps> = ({
|
|
|
49
55
|
const showBaseLineDebug = context?.features?.showBaseLineDebug ?? false;
|
|
50
56
|
|
|
51
57
|
/**
|
|
52
|
-
* get size icon button
|
|
58
|
+
* get box size + border radius for icon button by size and shape.
|
|
59
|
+
* circle keeps the fully-rounded default; square/rectangle use Radius.S.
|
|
60
|
+
* rectangle is wider than tall.
|
|
53
61
|
*/
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
const getShapeStyle = () => {
|
|
63
|
+
const box = size === 'small' ? 40 : 48;
|
|
64
|
+
switch (shape) {
|
|
65
|
+
case 'square':
|
|
66
|
+
return { width: box, height: box, borderRadius: Radius.S };
|
|
67
|
+
case 'rectangle':
|
|
68
|
+
return {
|
|
69
|
+
width: size === 'small' ? 48 : 56,
|
|
70
|
+
height: box,
|
|
71
|
+
borderRadius: Radius.S,
|
|
72
|
+
};
|
|
73
|
+
case 'circle':
|
|
74
|
+
default:
|
|
75
|
+
return { width: box, height: box, borderRadius: Radius.XL };
|
|
57
76
|
}
|
|
58
|
-
return styles.large;
|
|
59
77
|
};
|
|
60
78
|
|
|
61
79
|
/**
|
|
@@ -117,7 +135,11 @@ const IconButton: React.FC<IconButtonProps> = ({
|
|
|
117
135
|
};
|
|
118
136
|
|
|
119
137
|
const activeOpacity = type === 'disabled' ? 0.75 : 0.5;
|
|
120
|
-
const buttonStyle = StyleSheet.flatten([
|
|
138
|
+
const buttonStyle = StyleSheet.flatten([
|
|
139
|
+
getTypeStyle(),
|
|
140
|
+
getShapeStyle(),
|
|
141
|
+
styles.base,
|
|
142
|
+
]);
|
|
121
143
|
const iconSize = size === 'small' ? 16 : 24;
|
|
122
144
|
|
|
123
145
|
return (
|
package/IconButton/styles.ts
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
import { StyleSheet } from 'react-native';
|
|
2
|
-
import {
|
|
2
|
+
import { Colors } from '../Consts';
|
|
3
3
|
|
|
4
4
|
export default StyleSheet.create({
|
|
5
|
-
|
|
6
|
-
width: 48,
|
|
7
|
-
height: 48,
|
|
8
|
-
borderRadius: Radius.XL,
|
|
9
|
-
justifyContent: 'center',
|
|
10
|
-
alignItems: 'center',
|
|
11
|
-
},
|
|
12
|
-
small: {
|
|
13
|
-
width: 40,
|
|
14
|
-
height: 40,
|
|
15
|
-
borderRadius: Radius.XL,
|
|
5
|
+
base: {
|
|
16
6
|
justifyContent: 'center',
|
|
17
7
|
alignItems: 'center',
|
|
18
8
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@momo-kits/foundation",
|
|
3
|
-
"version": "0.162.2-beta.
|
|
3
|
+
"version": "0.162.2-beta.18",
|
|
4
4
|
"description": "React Native Component Kits",
|
|
5
5
|
"main": "index.ts",
|
|
6
6
|
"scripts": {},
|
|
@@ -8,19 +8,19 @@
|
|
|
8
8
|
"@momo-kits/foundation"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": {
|
|
11
|
+
"react-native-fast-image": "git+https://oauth2:TGi6oBj-LdzsKpLXQSoH@gitlab.mservice.com.vn/momo-platform/public/react-native-fast-image.git#v8.11.0",
|
|
11
12
|
"@react-navigation/bottom-tabs": "7.4.2",
|
|
12
13
|
"@react-navigation/core": "7.12.1",
|
|
13
14
|
"@react-navigation/elements": "2.5.2",
|
|
14
15
|
"@react-navigation/native": "7.1.14",
|
|
15
16
|
"@react-navigation/routers": "7.4.1",
|
|
16
17
|
"@react-navigation/stack": "7.4.2",
|
|
17
|
-
"@shopify/flash-list": "2.1.0",
|
|
18
|
-
"lottie-react-native": "7.2.4",
|
|
19
|
-
"react-native-fast-image": "git+https://oauth2:TGi6oBj-LdzsKpLXQSoH@gitlab.mservice.com.vn/momo-platform/public/react-native-fast-image.git#v8.11.0",
|
|
20
18
|
"react-native-gesture-handler": "2.27.1",
|
|
21
19
|
"react-native-linear-gradient": "git+https://oauth2:TGi6oBj-LdzsKpLXQSoH@gitlab.mservice.com.vn/momo-platform/public/react-native-linear-gradient#v3.0.0",
|
|
22
20
|
"react-native-reanimated": "4.2.2",
|
|
23
|
-
"react-native-safe-area-context": "5.5.2"
|
|
21
|
+
"react-native-safe-area-context": "5.5.2",
|
|
22
|
+
"@shopify/flash-list": "2.1.0",
|
|
23
|
+
"lottie-react-native": "7.2.4"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"react-native": "*"
|
|
@@ -32,4 +32,4 @@
|
|
|
32
32
|
"registry": "https://registry.npmjs.org/"
|
|
33
33
|
},
|
|
34
34
|
"license": "MoMo"
|
|
35
|
-
}
|
|
35
|
+
}
|