@holper/react-native-holper-storybook 0.7.0 → 0.7.1
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/README.md +1 -1
- package/package.json +5 -1
- package/.expo/README.md +0 -8
- package/.nvmrc +0 -1
- package/.prettierignore +0 -5
- package/.storybook/index.jsx +0 -11
- package/.storybook/main.js +0 -8
- package/.storybook/preview.jsx +0 -51
- package/.storybook/storybook.requires.js +0 -43
- package/.yarn/releases/yarn-4.5.0.cjs +0 -925
- package/.yarnrc.yml +0 -3
- package/App.jsx +0 -29
- package/app.config.js +0 -77
- package/assets/adaptive-icon.png +0 -0
- package/assets/favicon.png +0 -0
- package/assets/fonts/Poppins-Bold.ttf +0 -0
- package/assets/fonts/Poppins-Regular.ttf +0 -0
- package/assets/fonts/Poppins-SemiBold.ttf +0 -0
- package/assets/icon.png +0 -0
- package/assets/splash.png +0 -0
- package/babel.config.js +0 -7
- package/build.sh +0 -11
- package/components/Button/index.tsx +0 -66
- package/components/Button/style.ts +0 -111
- package/components/Card/index.tsx +0 -33
- package/components/Card/style.ts +0 -34
- package/components/ConfirmationModal/index.tsx +0 -104
- package/components/ConfirmationModal/style.tsx +0 -53
- package/components/Container/index.tsx +0 -33
- package/components/Container/style.ts +0 -13
- package/components/CustomChatView/index.tsx +0 -65
- package/components/CustomChatView/style.ts +0 -10
- package/components/DeckSwiper/index.tsx +0 -90
- package/components/DeckSwiper/style.ts +0 -59
- package/components/DonutCountdown/index.tsx +0 -86
- package/components/DonutCountdown/style.ts +0 -8
- package/components/FloatingContainer/index.tsx +0 -35
- package/components/FloatingContainer/style.ts +0 -25
- package/components/Footer/index.tsx +0 -35
- package/components/Footer/style.ts +0 -40
- package/components/Header/index.tsx +0 -21
- package/components/Header/style.ts +0 -34
- package/components/ImagePicker/index.tsx +0 -18
- package/components/ImageResponsive/index.tsx +0 -24
- package/components/ImageResponsive/style.ts +0 -9
- package/components/ImageViewer/index.tsx +0 -36
- package/components/ImageViewer/style.ts +0 -38
- package/components/Input/index.tsx +0 -62
- package/components/Input/style.ts +0 -91
- package/components/InputPin/index.tsx +0 -21
- package/components/InputPin/style.ts +0 -22
- package/components/MenuItem/index.tsx +0 -25
- package/components/MenuItem/style.ts +0 -44
- package/components/NavigationTitle/index.tsx +0 -53
- package/components/NavigationTitle/style.ts +0 -49
- package/components/Notification/index.tsx +0 -44
- package/components/Notification/style.ts +0 -50
- package/components/PreventDoubleClick/index.tsx +0 -28
- package/components/Select/index.tsx +0 -51
- package/components/Select/style.ts +0 -64
- package/components/SwipeablePanel/index.tsx +0 -208
- package/components/SwipeablePanel/style.ts +0 -81
- package/components/Switch/index.tsx +0 -30
- package/components/TakePicture/confirmPictureModal.tsx +0 -37
- package/components/TakePicture/index.tsx +0 -148
- package/components/TakePicture/style.ts +0 -95
- package/components/Text/index.tsx +0 -33
- package/components/Text/style.ts +0 -101
- package/components/Textarea/index.tsx +0 -26
- package/components/Textarea/style.ts +0 -38
- package/components/TimeOutButton/index.tsx +0 -67
- package/components/TimeOutButton/style.ts +0 -42
- package/components/Toast/index.tsx +0 -34
- package/components/Toast/style.ts +0 -12
- package/components/UploadDocument/index.tsx +0 -179
- package/components/UploadDocument/style.ts +0 -57
- package/components/VirtualKeyboard/index.tsx +0 -75
- package/components/VirtualKeyboard/style.ts +0 -25
- package/components/index.ts +0 -29
- package/configs/constants.ts +0 -273
- package/configs/types.ts +0 -326
- package/eas.json +0 -27
- package/eslint.config.mjs +0 -205
- package/hooks/index.ts +0 -2
- package/hooks/useDebounce.tsx +0 -24
- package/hooks/useLoadFonts.tsx +0 -13
- package/metro.config.js +0 -11
- package/prettier.config.mjs +0 -23
- package/stories/Button.stories.tsx +0 -181
- package/stories/Card.stories.tsx +0 -22
- package/stories/Colors.stories.tsx +0 -57
- package/stories/ConfirmationModal.stories.tsx +0 -142
- package/stories/Container.stories.tsx +0 -105
- package/stories/DeckSwiper.stories.tsx +0 -43
- package/stories/DonutCountdown.stories.tsx +0 -134
- package/stories/FloatingContainer.stories.tsx +0 -139
- package/stories/Footer.stories.tsx +0 -65
- package/stories/Header.stories.tsx +0 -37
- package/stories/ImagePicker.stories.tsx +0 -14
- package/stories/ImageResponsive.stories.tsx +0 -18
- package/stories/ImageViewer.stories.tsx +0 -24
- package/stories/Input.stories.tsx +0 -119
- package/stories/InputPin.stories.tsx +0 -40
- package/stories/Menu.stories.tsx +0 -53
- package/stories/MenuItem.stories.tsx +0 -30
- package/stories/NavigationTitle.stories.tsx +0 -51
- package/stories/Notification.stories.tsx +0 -58
- package/stories/Select.stories.tsx +0 -270
- package/stories/SwipeablePanel.stories.tsx +0 -360
- package/stories/Switch.stories.tsx +0 -36
- package/stories/TakePicture.stories.tsx +0 -59
- package/stories/Text.stories.tsx +0 -61
- package/stories/Textarea.stories.tsx +0 -48
- package/stories/TimeOutButton.stories.tsx +0 -55
- package/stories/Toast.stories.tsx +0 -37
- package/stories/UploadDocument.stories.tsx +0 -179
- package/stories/VirtualKeyboard.stories.tsx +0 -14
- package/tsconfig.json +0 -21
- package/utilities/ScrollView.tsx +0 -19
- package/utilities/index.ts +0 -2
- package/utilities/utils.ts +0 -29
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { Dimensions, StyleSheet } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import { borderRadius, Colors } from '../../configs/constants';
|
|
4
|
-
|
|
5
|
-
const { width } = Dimensions.get('window');
|
|
6
|
-
|
|
7
|
-
export default StyleSheet.create({
|
|
8
|
-
container: {
|
|
9
|
-
marginVertical: 8,
|
|
10
|
-
},
|
|
11
|
-
label: {
|
|
12
|
-
marginBottom: 4,
|
|
13
|
-
fontSize: 14,
|
|
14
|
-
fontFamily: 'poppins_regular',
|
|
15
|
-
color: Colors.darkblue,
|
|
16
|
-
fontWeight: 'bold',
|
|
17
|
-
},
|
|
18
|
-
inputWrapper: {
|
|
19
|
-
position: 'relative',
|
|
20
|
-
},
|
|
21
|
-
input: {
|
|
22
|
-
height: 50,
|
|
23
|
-
borderRadius,
|
|
24
|
-
borderWidth: 1,
|
|
25
|
-
paddingHorizontal: 20,
|
|
26
|
-
color: Colors.darkblue,
|
|
27
|
-
fontFamily: 'poppins_regular',
|
|
28
|
-
backgroundColor: Colors.white,
|
|
29
|
-
marginVertical: 6,
|
|
30
|
-
},
|
|
31
|
-
fixedSize: {
|
|
32
|
-
width: width - 60,
|
|
33
|
-
},
|
|
34
|
-
fitSize: {
|
|
35
|
-
width: '100%',
|
|
36
|
-
},
|
|
37
|
-
default: {
|
|
38
|
-
borderColor: Colors.midblue,
|
|
39
|
-
},
|
|
40
|
-
completed: {
|
|
41
|
-
borderColor: Colors.green,
|
|
42
|
-
},
|
|
43
|
-
error: {
|
|
44
|
-
borderColor: Colors.red,
|
|
45
|
-
color: Colors.red,
|
|
46
|
-
},
|
|
47
|
-
disabled: {
|
|
48
|
-
opacity: 0.5,
|
|
49
|
-
},
|
|
50
|
-
leftIcon: {
|
|
51
|
-
paddingLeft: 40,
|
|
52
|
-
},
|
|
53
|
-
rightIcon: {
|
|
54
|
-
paddingRight: 40,
|
|
55
|
-
},
|
|
56
|
-
leftIconWide: {
|
|
57
|
-
paddingLeft: 70,
|
|
58
|
-
},
|
|
59
|
-
rightIconWide: {
|
|
60
|
-
paddingRight: 70,
|
|
61
|
-
},
|
|
62
|
-
rightIconContainer: {
|
|
63
|
-
position: 'absolute',
|
|
64
|
-
right: 10,
|
|
65
|
-
top: 10,
|
|
66
|
-
height: 42,
|
|
67
|
-
justifyContent: 'center',
|
|
68
|
-
},
|
|
69
|
-
leftIconContainer: {
|
|
70
|
-
position: 'absolute',
|
|
71
|
-
left: 10,
|
|
72
|
-
top: 10,
|
|
73
|
-
height: 42,
|
|
74
|
-
justifyContent: 'center',
|
|
75
|
-
},
|
|
76
|
-
rightWideIconContainer: {
|
|
77
|
-
paddingLeft: 2,
|
|
78
|
-
borderLeftWidth: 1,
|
|
79
|
-
},
|
|
80
|
-
leftWideIconContainer: {
|
|
81
|
-
paddingRight: 2,
|
|
82
|
-
borderRightWidth: 1,
|
|
83
|
-
},
|
|
84
|
-
count: {
|
|
85
|
-
textAlign: 'right',
|
|
86
|
-
fontSize: 12,
|
|
87
|
-
color: Colors.gray,
|
|
88
|
-
fontFamily: 'poppins_regular',
|
|
89
|
-
width: '100%',
|
|
90
|
-
},
|
|
91
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { times } from 'lodash';
|
|
2
|
-
import { View } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import Text from '../Text';
|
|
5
|
-
import style from './style';
|
|
6
|
-
|
|
7
|
-
import type { InputPinProps } from '../../configs/types';
|
|
8
|
-
|
|
9
|
-
const InputPin = ({ values = [] }: InputPinProps) => (
|
|
10
|
-
<View style={style.container}>
|
|
11
|
-
{times(4, (index) => (
|
|
12
|
-
<View style={style.input} key={`value-${index}`}>
|
|
13
|
-
<Text size="large" weight="semiBold">
|
|
14
|
-
{values[index]}
|
|
15
|
-
</Text>
|
|
16
|
-
</View>
|
|
17
|
-
))}
|
|
18
|
-
</View>
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
export default InputPin;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Dimensions, StyleSheet } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import { Colors } from '../../configs/constants';
|
|
4
|
-
|
|
5
|
-
const { width } = Dimensions.get('window');
|
|
6
|
-
|
|
7
|
-
export default StyleSheet.create({
|
|
8
|
-
container: {
|
|
9
|
-
flexDirection: 'row',
|
|
10
|
-
justifyContent: 'space-between',
|
|
11
|
-
width: width - 60,
|
|
12
|
-
},
|
|
13
|
-
input: {
|
|
14
|
-
borderColor: Colors.gray,
|
|
15
|
-
borderWidth: 1,
|
|
16
|
-
borderRadius: 15,
|
|
17
|
-
width: width / 6,
|
|
18
|
-
height: width / 6,
|
|
19
|
-
justifyContent: 'center',
|
|
20
|
-
alignItems: 'center',
|
|
21
|
-
},
|
|
22
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Feather } from '@expo/vector-icons';
|
|
2
|
-
import { TouchableOpacity, View } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import { Colors } from '../../configs/constants';
|
|
5
|
-
import Text from '../Text';
|
|
6
|
-
import style from './style';
|
|
7
|
-
|
|
8
|
-
import type { MenuItemProps } from '../../configs/types';
|
|
9
|
-
|
|
10
|
-
const MenuItem = ({ icon, text, disabled, onPress, last }: MenuItemProps) => (
|
|
11
|
-
<TouchableOpacity
|
|
12
|
-
style={[style.menuItem, last ? style.last : {}, disabled ? style.disabled : {}]}
|
|
13
|
-
onPress={onPress}
|
|
14
|
-
disabled={disabled}
|
|
15
|
-
>
|
|
16
|
-
<View style={style.left}>
|
|
17
|
-
{icon}
|
|
18
|
-
<Text style={style.text}>{text}</Text>
|
|
19
|
-
</View>
|
|
20
|
-
|
|
21
|
-
<Feather name="chevron-right" size={16} color={Colors.darkblue} style={style.rightIcon} />
|
|
22
|
-
</TouchableOpacity>
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
export default MenuItem;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { StyleSheet } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import { Colors } from '../../configs/constants';
|
|
4
|
-
|
|
5
|
-
export default StyleSheet.create({
|
|
6
|
-
// Default MenuItem
|
|
7
|
-
menuItem: {
|
|
8
|
-
backgroundColor: Colors.white,
|
|
9
|
-
width: '100%',
|
|
10
|
-
height: 50,
|
|
11
|
-
paddingHorizontal: 8,
|
|
12
|
-
paddingVertical: 6,
|
|
13
|
-
flexDirection: 'row',
|
|
14
|
-
justifyContent: 'space-between',
|
|
15
|
-
alignItems: 'center',
|
|
16
|
-
borderBottomWidth: 1,
|
|
17
|
-
borderBottomColor: Colors.lightblue,
|
|
18
|
-
},
|
|
19
|
-
left: {
|
|
20
|
-
flexDirection: 'row',
|
|
21
|
-
justifyContent: 'flex-start',
|
|
22
|
-
alignItems: 'center',
|
|
23
|
-
},
|
|
24
|
-
text: {
|
|
25
|
-
marginLeft: 10,
|
|
26
|
-
},
|
|
27
|
-
rightIcon: {
|
|
28
|
-
height: 20,
|
|
29
|
-
width: 20,
|
|
30
|
-
backgroundColor: Colors.lightblue,
|
|
31
|
-
borderRadius: 10,
|
|
32
|
-
paddingLeft: 3,
|
|
33
|
-
paddingTop: 2,
|
|
34
|
-
overflow: 'hidden',
|
|
35
|
-
justifyContent: 'center',
|
|
36
|
-
alignItems: 'center',
|
|
37
|
-
},
|
|
38
|
-
last: {
|
|
39
|
-
borderBottomColor: Colors.transparent,
|
|
40
|
-
},
|
|
41
|
-
disabled: {
|
|
42
|
-
opacity: 0.5,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Ionicons } from '@expo/vector-icons';
|
|
2
|
-
import { TouchableOpacity, View } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import { Colors } from '../../configs/constants';
|
|
5
|
-
import Text from '../Text';
|
|
6
|
-
import style from './style';
|
|
7
|
-
|
|
8
|
-
import type { NavigationTitleProps } from '../../configs/types';
|
|
9
|
-
|
|
10
|
-
const NavigationTitle = ({
|
|
11
|
-
type = 'close',
|
|
12
|
-
title,
|
|
13
|
-
noShadow,
|
|
14
|
-
xlarge,
|
|
15
|
-
blockNavigation,
|
|
16
|
-
onPress,
|
|
17
|
-
}: NavigationTitleProps) => (
|
|
18
|
-
<View
|
|
19
|
-
style={[
|
|
20
|
-
style.container,
|
|
21
|
-
type === 'close' ? style.containerClose : style.containerBack,
|
|
22
|
-
noShadow ? style.noShadow : {},
|
|
23
|
-
]}
|
|
24
|
-
>
|
|
25
|
-
{!blockNavigation && (
|
|
26
|
-
<>
|
|
27
|
-
{type === 'back' && (
|
|
28
|
-
<TouchableOpacity onPress={onPress} style={style.buttonBack}>
|
|
29
|
-
<Ionicons name="arrow-back-outline" size={20} color={Colors.darkblue} />
|
|
30
|
-
</TouchableOpacity>
|
|
31
|
-
)}
|
|
32
|
-
</>
|
|
33
|
-
)}
|
|
34
|
-
{typeof title === 'string' ? (
|
|
35
|
-
<Text size={xlarge ? 'extra-large' : 'large'} weight="semiBold">
|
|
36
|
-
{title}
|
|
37
|
-
</Text>
|
|
38
|
-
) : (
|
|
39
|
-
<>{title}</>
|
|
40
|
-
)}
|
|
41
|
-
{!blockNavigation && (
|
|
42
|
-
<>
|
|
43
|
-
{type === 'close' && (
|
|
44
|
-
<TouchableOpacity onPress={onPress} style={style.button}>
|
|
45
|
-
<Ionicons name="close-outline" size={24} color={Colors.darkblue} />
|
|
46
|
-
</TouchableOpacity>
|
|
47
|
-
)}
|
|
48
|
-
</>
|
|
49
|
-
)}
|
|
50
|
-
</View>
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
export default NavigationTitle;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Dimensions, StyleSheet } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import { Colors } from '../../configs/constants';
|
|
4
|
-
|
|
5
|
-
const { width } = Dimensions.get('window');
|
|
6
|
-
|
|
7
|
-
export default StyleSheet.create({
|
|
8
|
-
container: {
|
|
9
|
-
flexDirection: 'row',
|
|
10
|
-
alignItems: 'center',
|
|
11
|
-
height: 60,
|
|
12
|
-
backgroundColor: Colors.white,
|
|
13
|
-
paddingHorizontal: 20,
|
|
14
|
-
borderRadius: 10,
|
|
15
|
-
width,
|
|
16
|
-
shadowOffset: { width: 0, height: 3 },
|
|
17
|
-
shadowOpacity: 0.4,
|
|
18
|
-
shadowRadius: 3,
|
|
19
|
-
elevation: 5,
|
|
20
|
-
shadowColor: Colors.lightblue,
|
|
21
|
-
},
|
|
22
|
-
noShadow: {
|
|
23
|
-
shadowOpacity: 0,
|
|
24
|
-
elevation: 0,
|
|
25
|
-
},
|
|
26
|
-
containerClose: {
|
|
27
|
-
justifyContent: 'space-between',
|
|
28
|
-
},
|
|
29
|
-
containerBack: {
|
|
30
|
-
justifyContent: 'flex-start',
|
|
31
|
-
},
|
|
32
|
-
button: {
|
|
33
|
-
height: 30,
|
|
34
|
-
width: 30,
|
|
35
|
-
borderRadius: 15,
|
|
36
|
-
backgroundColor: Colors.lightblue,
|
|
37
|
-
alignItems: 'center',
|
|
38
|
-
justifyContent: 'center',
|
|
39
|
-
},
|
|
40
|
-
buttonBack: {
|
|
41
|
-
height: 30,
|
|
42
|
-
width: 30,
|
|
43
|
-
borderRadius: 15,
|
|
44
|
-
marginRight: 10,
|
|
45
|
-
backgroundColor: Colors.lightblue,
|
|
46
|
-
alignItems: 'center',
|
|
47
|
-
justifyContent: 'center',
|
|
48
|
-
},
|
|
49
|
-
});
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { Ionicons } from '@expo/vector-icons';
|
|
2
|
-
import dayjs from 'dayjs';
|
|
3
|
-
import relativeTime from 'dayjs/plugin/relativeTime';
|
|
4
|
-
import { TouchableOpacity, View } from 'react-native';
|
|
5
|
-
|
|
6
|
-
import { Colors } from '../../configs/constants';
|
|
7
|
-
import ImageResponsive from '../ImageResponsive';
|
|
8
|
-
import Text from '../Text';
|
|
9
|
-
import style from './style';
|
|
10
|
-
|
|
11
|
-
import type { NotificationProps } from '../../configs/types';
|
|
12
|
-
|
|
13
|
-
dayjs.extend(relativeTime);
|
|
14
|
-
|
|
15
|
-
const Notification = ({
|
|
16
|
-
first,
|
|
17
|
-
active,
|
|
18
|
-
hideAvatar,
|
|
19
|
-
avatar,
|
|
20
|
-
title,
|
|
21
|
-
description,
|
|
22
|
-
date = dayjs().fromNow(),
|
|
23
|
-
onPress,
|
|
24
|
-
}: NotificationProps) => (
|
|
25
|
-
<TouchableOpacity style={[style.container, first ? style.first : {}, active ? style.active : {}]} onPress={onPress}>
|
|
26
|
-
{!hideAvatar && <ImageResponsive source={avatar} avatar style={style.avatar} />}
|
|
27
|
-
<View style={style.textContainer}>
|
|
28
|
-
<View style={style.text}>
|
|
29
|
-
<View style={style.textInner}>
|
|
30
|
-
<Text weight="semiBold">{title}</Text>
|
|
31
|
-
{active && <Ionicons name="ellipse" color={Colors.green} size={12} style={style.icon} />}
|
|
32
|
-
</View>
|
|
33
|
-
<Text color="light" size="tiny" style={style.time}>
|
|
34
|
-
{dayjs(date).fromNow()}
|
|
35
|
-
</Text>
|
|
36
|
-
</View>
|
|
37
|
-
<Text color="light" size="small" ellipsizeMode="tail" numberOfLines={3}>
|
|
38
|
-
{description}
|
|
39
|
-
</Text>
|
|
40
|
-
</View>
|
|
41
|
-
</TouchableOpacity>
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
export default Notification;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { StyleSheet } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import { Colors } from '../../configs/constants';
|
|
4
|
-
|
|
5
|
-
export default StyleSheet.create({
|
|
6
|
-
container: {
|
|
7
|
-
flexDirection: 'row',
|
|
8
|
-
alignItems: 'center',
|
|
9
|
-
borderBottomWidth: 1,
|
|
10
|
-
borderBottomColor: Colors.lightblue,
|
|
11
|
-
paddingVertical: 8,
|
|
12
|
-
borderLeftWidth: 6,
|
|
13
|
-
borderLeftColor: Colors.transparent,
|
|
14
|
-
paddingHorizontal: 10,
|
|
15
|
-
},
|
|
16
|
-
first: {
|
|
17
|
-
borderTopWidth: 1,
|
|
18
|
-
borderTopColor: Colors.lightblue,
|
|
19
|
-
},
|
|
20
|
-
active: {
|
|
21
|
-
borderLeftColor: Colors.green,
|
|
22
|
-
},
|
|
23
|
-
avatar: {
|
|
24
|
-
height: 60,
|
|
25
|
-
width: 60,
|
|
26
|
-
borderWidth: 1,
|
|
27
|
-
borderColor: Colors.lightblue,
|
|
28
|
-
marginRight: 15,
|
|
29
|
-
},
|
|
30
|
-
textContainer: {
|
|
31
|
-
flex: 1,
|
|
32
|
-
justifyContent: 'space-evenly',
|
|
33
|
-
height: 60,
|
|
34
|
-
},
|
|
35
|
-
text: {
|
|
36
|
-
flexDirection: 'row',
|
|
37
|
-
justifyContent: 'space-between',
|
|
38
|
-
},
|
|
39
|
-
textInner: {
|
|
40
|
-
flexDirection: 'row',
|
|
41
|
-
alignItems: 'center',
|
|
42
|
-
},
|
|
43
|
-
time: {
|
|
44
|
-
alignSelf: 'flex-start',
|
|
45
|
-
},
|
|
46
|
-
icon: {
|
|
47
|
-
marginLeft: 5,
|
|
48
|
-
marginTop: 2,
|
|
49
|
-
},
|
|
50
|
-
});
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { ComponentType } from 'react';
|
|
2
|
-
|
|
3
|
-
import { debounce } from 'lodash';
|
|
4
|
-
import { PureComponent } from 'react';
|
|
5
|
-
|
|
6
|
-
import type { withPreventDoubleClickProps } from '../../configs/types';
|
|
7
|
-
|
|
8
|
-
function withPreventDoubleClick<P extends withPreventDoubleClickProps>(WrappedComponent: ComponentType<P>) {
|
|
9
|
-
class PreventDoubleClick extends PureComponent<P> {
|
|
10
|
-
debouncedOnPress = () => {
|
|
11
|
-
if (this.props.onPress) {
|
|
12
|
-
this.props.onPress();
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
onPress = debounce(this.debouncedOnPress, 300, { leading: true, trailing: false });
|
|
17
|
-
static displayName: string;
|
|
18
|
-
|
|
19
|
-
render() {
|
|
20
|
-
return <WrappedComponent {...this.props} onPress={this.onPress} />;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
PreventDoubleClick.displayName = `withPreventDoubleClick(${WrappedComponent.displayName || WrappedComponent.name})`;
|
|
25
|
-
return PreventDoubleClick;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export default withPreventDoubleClick;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Feather } from '@expo/vector-icons';
|
|
2
|
-
import { View } from 'react-native';
|
|
3
|
-
import RNPickerSelect from 'react-native-picker-select';
|
|
4
|
-
|
|
5
|
-
import style from './style';
|
|
6
|
-
|
|
7
|
-
import type { SelectProps } from '../../configs/types';
|
|
8
|
-
|
|
9
|
-
const Select = ({
|
|
10
|
-
disabled,
|
|
11
|
-
fitToContainer,
|
|
12
|
-
items = [],
|
|
13
|
-
onValueChange,
|
|
14
|
-
placeholder,
|
|
15
|
-
value = '',
|
|
16
|
-
variant = 'default',
|
|
17
|
-
}: SelectProps) => (
|
|
18
|
-
<View style={[style.container, disabled ? style.disabled : {}, fitToContainer ? style.fit : {}]}>
|
|
19
|
-
<RNPickerSelect
|
|
20
|
-
value={value}
|
|
21
|
-
onValueChange={(val) => onValueChange?.(val)}
|
|
22
|
-
disabled={disabled}
|
|
23
|
-
placeholder={{
|
|
24
|
-
label: placeholder,
|
|
25
|
-
value: '',
|
|
26
|
-
color: style.placeholderStyle.color,
|
|
27
|
-
}}
|
|
28
|
-
items={items}
|
|
29
|
-
Icon={() => <Feather name="chevron-down" size={24} style={style.iconStyle} />}
|
|
30
|
-
useNativeAndroidPickerStyle={false}
|
|
31
|
-
pickerProps={{ mode: 'dropdown', enabled: !disabled, itemStyle: style.itemStyle }}
|
|
32
|
-
style={{
|
|
33
|
-
inputIOSContainer: { pointerEvents: 'none', ...style.basicStyle, ...style[`${variant}Container`] },
|
|
34
|
-
inputAndroidContainer: { ...style.basicStyle, ...style[`${variant}Container`] },
|
|
35
|
-
inputIOS: {
|
|
36
|
-
...style.fontStyle,
|
|
37
|
-
...(variant === 'error' ? style.errorFontStyle : {}),
|
|
38
|
-
},
|
|
39
|
-
inputAndroid: {
|
|
40
|
-
...style.fontStyle,
|
|
41
|
-
...(variant === 'error' ? style.errorFontStyle : {}),
|
|
42
|
-
},
|
|
43
|
-
placeholder: style.placeholderStyle,
|
|
44
|
-
chevronUp: style.selectIcon,
|
|
45
|
-
chevronDown: style.selectIcon,
|
|
46
|
-
}}
|
|
47
|
-
/>
|
|
48
|
-
</View>
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
export default Select;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Dimensions, StyleSheet } from 'react-native';
|
|
2
|
-
|
|
3
|
-
import { borderRadius, Colors } from '../../configs/constants';
|
|
4
|
-
|
|
5
|
-
const { width } = Dimensions.get('window');
|
|
6
|
-
|
|
7
|
-
export default StyleSheet.create({
|
|
8
|
-
container: {
|
|
9
|
-
width: width - 60,
|
|
10
|
-
position: 'relative',
|
|
11
|
-
},
|
|
12
|
-
fit: {
|
|
13
|
-
width: '100%',
|
|
14
|
-
position: 'relative',
|
|
15
|
-
},
|
|
16
|
-
selectIcon: {
|
|
17
|
-
marginTop: 20,
|
|
18
|
-
marginRight: 15,
|
|
19
|
-
},
|
|
20
|
-
disabled: {
|
|
21
|
-
opacity: 0.5,
|
|
22
|
-
},
|
|
23
|
-
basicStyle: {
|
|
24
|
-
height: 50,
|
|
25
|
-
width: '100%',
|
|
26
|
-
borderRadius,
|
|
27
|
-
borderWidth: 1,
|
|
28
|
-
paddingHorizontal: 10,
|
|
29
|
-
backgroundColor: Colors.white,
|
|
30
|
-
marginVertical: 6,
|
|
31
|
-
},
|
|
32
|
-
defaultContainer: {
|
|
33
|
-
borderColor: Colors.midblue,
|
|
34
|
-
},
|
|
35
|
-
completedContainer: {
|
|
36
|
-
borderColor: Colors.green,
|
|
37
|
-
},
|
|
38
|
-
errorContainer: {
|
|
39
|
-
borderColor: Colors.red,
|
|
40
|
-
},
|
|
41
|
-
fontStyle: {
|
|
42
|
-
flex: 1,
|
|
43
|
-
color: Colors.darkblue,
|
|
44
|
-
fontFamily: 'poppins_regular',
|
|
45
|
-
},
|
|
46
|
-
errorFontStyle: {
|
|
47
|
-
color: Colors.red,
|
|
48
|
-
},
|
|
49
|
-
placeholderStyle: {
|
|
50
|
-
fontSize: 14,
|
|
51
|
-
fontFamily: 'poppins_regular',
|
|
52
|
-
color: Colors.midblue,
|
|
53
|
-
},
|
|
54
|
-
iconStyle: {
|
|
55
|
-
marginRight: 10,
|
|
56
|
-
marginTop: 12,
|
|
57
|
-
color: Colors.darkblue,
|
|
58
|
-
},
|
|
59
|
-
itemStyle: {
|
|
60
|
-
color: Colors.darkblue,
|
|
61
|
-
fontFamily: 'poppins_regular',
|
|
62
|
-
fontSize: 16,
|
|
63
|
-
},
|
|
64
|
-
});
|