@tactics/toddle-styleguide 1.2.4 → 1.2.6
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/App.tsx +8 -0
- package/index.d.ts +2 -1
- package/index.tsx +2 -0
- package/package.json +2 -2
- package/src/components/atoms/backdrop/backdrop.component.d.ts +2 -1
- package/src/components/atoms/backdrop/backdrop.component.tsx +8 -2
- package/src/components/atoms/calendar/__snapshots__/calendar.test.js.snap +18 -18
- package/src/components/atoms/text-input/text-input.component.d.ts +4 -5
- package/src/components/atoms/text-input/text-input.component.tsx +9 -13
- package/src/components/atoms/text-input/text-input.preview.tsx +5 -5
- package/src/components/atoms/text-input/text-input.test.js +4 -4
- package/src/components/molecules/button/__snapshots__/button.test.js.snap +144 -0
- package/src/components/molecules/button/button.component.d.ts +6 -4
- package/src/components/molecules/button/button.component.tsx +30 -9
- package/src/components/molecules/button/button.preview.tsx +16 -1
- package/src/components/molecules/button/button.styles.d.ts +13 -16
- package/src/components/molecules/button/button.styles.js +2 -4
- package/src/components/molecules/button/button.test.js +12 -0
- package/src/components/molecules/message-input/__snapshots__/message-input.test.js.snap +4 -0
- package/src/components/molecules/message-input/message-input.component.d.ts +4 -6
- package/src/components/molecules/message-input/message-input.component.tsx +10 -12
- package/src/components/molecules/message-input/message-input.preview.tsx +28 -15
- package/src/components/molecules/password-input/password-input.component.d.ts +4 -6
- package/src/components/molecules/password-input/password-input.component.tsx +11 -15
- package/src/components/molecules/swipe/__snapshots__/swipe.test.js.snap +263 -420
- package/src/components/molecules/swipe/swipe.component.d.ts +4 -4
- package/src/components/molecules/swipe/swipe.component.tsx +47 -20
- package/src/components/molecules/swipe/swipe.preview.tsx +111 -51
- package/src/components/molecules/swipe/swipe.styles.d.ts +28 -0
- package/src/components/molecules/swipe/swipe.styles.js +32 -0
- package/src/components/molecules/swipe/swipe.test.js +1 -1
- package/src/components/molecules/tag/__snapshots__/tag.test.js.snap +13 -13
- package/src/components/molecules/tag/tag.component.d.ts +3 -8
- package/src/components/molecules/tag/tag.component.tsx +14 -25
- package/src/components/molecules/tag/tag.preview.tsx +78 -20
- package/src/components/molecules/tag/tag.styles.js +4 -2
- package/src/components/molecules/tag/tag.test.js +12 -2
- package/src/components/molecules/timestamp/__snapshots__/timestamp.test.js.snap +1 -1
- package/src/components/molecules/timestamp/timestamp.component.tsx +0 -2
- package/src/components/organisms/text-bubble/__snapshots__/text-bubble.test.js.snap +7 -7
- package/src/components/templates/modal/modal.component.tsx +0 -1
- package/src/components/templates/popover-action/popover-action.component.d.ts +8 -0
- package/src/components/templates/popover-action/popover-action.component.tsx +119 -0
- package/src/components/templates/popover-action/popover-action.preview.d.ts +1 -0
- package/src/components/templates/popover-action/popover-action.preview.tsx +142 -0
- package/src/components/templates/popover-action/popover-action.styles.d.ts +26 -0
- package/src/components/templates/popover-action/popover-action.styles.js +31 -0
- package/src/utilities/toddle-datetime/toddle-datetime.class.d.ts +4 -0
- package/src/utilities/toddle-datetime/toddle-datetime.class.tsx +16 -0
- package/src/components/molecules/swipe/Swipe.styles.d.ts +0 -7
- package/src/components/molecules/swipe/Swipe.styles.js +0 -10
package/App.tsx
CHANGED
|
@@ -68,6 +68,7 @@ import {ToddleDateTimePreview} from './src/utilities/toddle-datetime/toddle-date
|
|
|
68
68
|
import {BackgroundGradientPreview} from './src/components/atoms/background-gradient/background-gradient.preview';
|
|
69
69
|
import {PersonInfoCardPreview} from './src/components/organisms/person-info-card/person-info-card.preview';
|
|
70
70
|
import {TimePickerPreview} from './src/components/molecules/time-picker/time-picker.preview';
|
|
71
|
+
import {PopOverActionPreview} from './src/components/templates/popover-action/popover-action.preview';
|
|
71
72
|
|
|
72
73
|
const Stack = createNativeStackNavigator();
|
|
73
74
|
|
|
@@ -208,6 +209,10 @@ const HomeScreen = ({navigation}: {navigation: any}) => {
|
|
|
208
209
|
/>
|
|
209
210
|
<ReactBtn title="Pill" onPress={() => navigation.push('pill')} />
|
|
210
211
|
<ReactBtn title="Popover" onPress={() => navigation.push('popover')} />
|
|
212
|
+
<ReactBtn
|
|
213
|
+
title="Popover Action"
|
|
214
|
+
onPress={() => navigation.push('popover-action')}
|
|
215
|
+
/>
|
|
211
216
|
<ReactBtn
|
|
212
217
|
title="Pressable Icon"
|
|
213
218
|
onPress={() => navigation.push('pressable-icon')}
|
|
@@ -389,6 +394,9 @@ function App() {
|
|
|
389
394
|
<Stack.Screen name="popover" options={{headerShown: false}}>
|
|
390
395
|
{() => <PopoverPreview />}
|
|
391
396
|
</Stack.Screen>
|
|
397
|
+
<Stack.Screen name="popover-action" options={{headerShown: false}}>
|
|
398
|
+
{() => <PopOverActionPreview />}
|
|
399
|
+
</Stack.Screen>
|
|
392
400
|
<Stack.Screen name="pressable-icon">
|
|
393
401
|
{() => <PressableIconPreview />}
|
|
394
402
|
</Stack.Screen>
|
package/index.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ import { WaveBackground } from './src/components/molecules/wave-background/wave.
|
|
|
53
53
|
import { BackgroundGradient } from './src/components/atoms/background-gradient/background-gradient.component';
|
|
54
54
|
import { PersonInfoCard } from './src/components/organisms/person-info-card/person-info-card.component';
|
|
55
55
|
import { TimePicker } from './src/components/molecules/time-picker/time-picker.component';
|
|
56
|
+
import { PopOverAction } from './src/components/templates/popover-action/popover-action.component';
|
|
56
57
|
import { BubbleAlignment } from './src/types/bubble-alignment.enum';
|
|
57
58
|
import { KeyBoardTypes } from './src/types/keyboard-types.enum';
|
|
58
59
|
import { Size } from './src/types/size.enum';
|
|
@@ -62,4 +63,4 @@ import { ToddleDateTime } from './src/utilities/toddle-datetime/toddle-datetime.
|
|
|
62
63
|
import { ThemeCtx } from './src/context/theme.context';
|
|
63
64
|
import { Scale } from './src/theme/scale/index';
|
|
64
65
|
import CreateResponsiveStyle from './src/theme/responsive/index';
|
|
65
|
-
export { Initials, BubbleAlignment, KeyBoardTypes, Size, Scale, CreateResponsiveStyle, VisualState, ThemeCtx, ToddleDateTime, Avatar, Button, CancelLink, Check, Checkbox, ChildListItem, ContactItem, FilterTab, SplitContainer, ImageBubble, Info, Pill, Popover, PressableIcon, QuickFilter, Search, SelectListItem, Snackbar, Tag, TextBubble, TextInput, TimeTracker, WideButton, Icon, Calendar, IncrementInput, Swipe, Logo, DaySelect, BlockedMessage, DepartmentLogo, ContactRole, TimeLine, SelectPicker, CalendarSelect, DateInput, FilterRange, Footer, DefaultSelect, PasswordInput, MessageInput, Heading1, Heading2, Heading3, Heading4, AllCapsHeading, Paragraph, SmallText, TinyText, SelectLink, MyChildListItem, MoreInfoButton, LanguageButton, Modal, LoadingIndicator, WaveBackground, BackgroundGradient, PersonInfoCard, TimePicker, };
|
|
66
|
+
export { Initials, BubbleAlignment, KeyBoardTypes, Size, Scale, CreateResponsiveStyle, VisualState, ThemeCtx, ToddleDateTime, Avatar, Button, CancelLink, Check, Checkbox, ChildListItem, ContactItem, FilterTab, SplitContainer, ImageBubble, Info, Pill, Popover, PressableIcon, QuickFilter, Search, SelectListItem, Snackbar, Tag, TextBubble, TextInput, TimeTracker, WideButton, Icon, Calendar, IncrementInput, Swipe, Logo, DaySelect, BlockedMessage, DepartmentLogo, ContactRole, TimeLine, SelectPicker, CalendarSelect, DateInput, FilterRange, Footer, DefaultSelect, PasswordInput, MessageInput, Heading1, Heading2, Heading3, Heading4, AllCapsHeading, Paragraph, SmallText, TinyText, SelectLink, MyChildListItem, MoreInfoButton, LanguageButton, Modal, LoadingIndicator, WaveBackground, BackgroundGradient, PersonInfoCard, TimePicker, PopOverAction, };
|
package/index.tsx
CHANGED
|
@@ -71,6 +71,7 @@ import {WaveBackground} from './src/components/molecules/wave-background/wave.co
|
|
|
71
71
|
import {BackgroundGradient} from './src/components/atoms/background-gradient/background-gradient.component';
|
|
72
72
|
import {PersonInfoCard} from './src/components/organisms/person-info-card/person-info-card.component';
|
|
73
73
|
import {TimePicker} from './src/components/molecules/time-picker/time-picker.component';
|
|
74
|
+
import {PopOverAction} from './src/components/templates/popover-action/popover-action.component';
|
|
74
75
|
|
|
75
76
|
// Exports of enums
|
|
76
77
|
import {BubbleAlignment} from './src/types/bubble-alignment.enum';
|
|
@@ -162,4 +163,5 @@ export {
|
|
|
162
163
|
BackgroundGradient,
|
|
163
164
|
PersonInfoCard,
|
|
164
165
|
TimePicker,
|
|
166
|
+
PopOverAction,
|
|
165
167
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tactics/toddle-styleguide",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.6",
|
|
4
4
|
"main": "index.tsx",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"prepublish": "tsc",
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
"react-native-calendar-strip": "^2.2.6",
|
|
49
49
|
"react-native-calendars": "^1.1299.0",
|
|
50
50
|
"react-native-gesture-handler": "~2.9.0",
|
|
51
|
+
"react-native-pager-view": "6.1.2",
|
|
51
52
|
"react-native-picker-select": "^8.0.4",
|
|
52
53
|
"react-native-reanimated": "~2.14.4",
|
|
53
54
|
"react-native-safe-area-context": "4.5.0",
|
|
54
55
|
"react-native-screens": "~3.20.0",
|
|
55
56
|
"react-native-svg": "13.4.0",
|
|
56
57
|
"react-native-swipe-gestures": "^1.0.5",
|
|
57
|
-
"react-native-swiper": "^1.6.0",
|
|
58
58
|
"react-native-web": "~0.18.10",
|
|
59
59
|
"react-native-wheel-picker-expo": "^0.5.4",
|
|
60
60
|
"react-test-renderer": "^18.2.0"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
type PopoverBackdropProps = {
|
|
2
2
|
isVisible: boolean;
|
|
3
|
+
touchBackDrop?: (value: boolean) => void;
|
|
3
4
|
};
|
|
4
|
-
declare const Backdrop: ({ isVisible }: PopoverBackdropProps) => JSX.Element;
|
|
5
|
+
declare const Backdrop: ({ isVisible, touchBackDrop }: PopoverBackdropProps) => JSX.Element;
|
|
5
6
|
export { Backdrop as Backdrop };
|
|
@@ -7,9 +7,10 @@ import {Stylesheet} from './backdrop.styles';
|
|
|
7
7
|
|
|
8
8
|
type PopoverBackdropProps = {
|
|
9
9
|
isVisible: boolean;
|
|
10
|
+
touchBackDrop?: (value: boolean) => void;
|
|
10
11
|
};
|
|
11
12
|
|
|
12
|
-
const Backdrop = ({isVisible}: PopoverBackdropProps) => {
|
|
13
|
+
const Backdrop = ({isVisible, touchBackDrop}: PopoverBackdropProps) => {
|
|
13
14
|
const context = useContext(ThemeCtx);
|
|
14
15
|
const opacity = useMemo(() => new Animated.Value(0), []);
|
|
15
16
|
|
|
@@ -37,6 +38,11 @@ const Backdrop = ({isVisible}: PopoverBackdropProps) => {
|
|
|
37
38
|
close();
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
return
|
|
41
|
+
return (
|
|
42
|
+
<Animated.View
|
|
43
|
+
onTouchStart={() => (touchBackDrop ? touchBackDrop(false) : null)}
|
|
44
|
+
style={[styles.element, {opacity: opacity}]}
|
|
45
|
+
/>
|
|
46
|
+
);
|
|
41
47
|
};
|
|
42
48
|
export {Backdrop as Backdrop};
|
|
@@ -1389,7 +1389,7 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
1389
1389
|
}
|
|
1390
1390
|
>
|
|
1391
1391
|
<View
|
|
1392
|
-
accessibilityLabel="
|
|
1392
|
+
accessibilityLabel=" Vrijdag 7 Juli 2023 "
|
|
1393
1393
|
accessibilityRole="button"
|
|
1394
1394
|
accessibilityState={
|
|
1395
1395
|
{
|
|
@@ -1421,10 +1421,6 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
1421
1421
|
style={
|
|
1422
1422
|
{
|
|
1423
1423
|
"alignItems": "center",
|
|
1424
|
-
"borderColor": "#7B93DB",
|
|
1425
|
-
"borderRadius": 21,
|
|
1426
|
-
"borderStyle": "solid",
|
|
1427
|
-
"borderWidth": 1,
|
|
1428
1424
|
"height": 42,
|
|
1429
1425
|
"justifyContent": "center",
|
|
1430
1426
|
"opacity": 1,
|
|
@@ -1444,9 +1440,6 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
1444
1440
|
"lineHeight": 22.4,
|
|
1445
1441
|
"marginTop": 4,
|
|
1446
1442
|
},
|
|
1447
|
-
{
|
|
1448
|
-
"color": "#7B93DB",
|
|
1449
|
-
},
|
|
1450
1443
|
]
|
|
1451
1444
|
}
|
|
1452
1445
|
>
|
|
@@ -1892,7 +1885,7 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
1892
1885
|
}
|
|
1893
1886
|
>
|
|
1894
1887
|
<View
|
|
1895
|
-
accessibilityLabel=" Donderdag 13 Juli 2023 "
|
|
1888
|
+
accessibilityLabel="today Donderdag 13 Juli 2023 "
|
|
1896
1889
|
accessibilityRole="button"
|
|
1897
1890
|
accessibilityState={
|
|
1898
1891
|
{
|
|
@@ -1924,6 +1917,10 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
1924
1917
|
style={
|
|
1925
1918
|
{
|
|
1926
1919
|
"alignItems": "center",
|
|
1920
|
+
"borderColor": "#7B93DB",
|
|
1921
|
+
"borderRadius": 21,
|
|
1922
|
+
"borderStyle": "solid",
|
|
1923
|
+
"borderWidth": 1,
|
|
1927
1924
|
"height": 42,
|
|
1928
1925
|
"justifyContent": "center",
|
|
1929
1926
|
"opacity": 1,
|
|
@@ -1943,6 +1940,9 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
1943
1940
|
"lineHeight": 22.4,
|
|
1944
1941
|
"marginTop": 4,
|
|
1945
1942
|
},
|
|
1943
|
+
{
|
|
1944
|
+
"color": "#7B93DB",
|
|
1945
|
+
},
|
|
1946
1946
|
]
|
|
1947
1947
|
}
|
|
1948
1948
|
>
|
|
@@ -5357,8 +5357,7 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
5357
5357
|
}
|
|
5358
5358
|
>
|
|
5359
5359
|
<View
|
|
5360
|
-
accessibilityLabel="
|
|
5361
|
-
accessibilityRole="button"
|
|
5360
|
+
accessibilityLabel=" Vrijdag 7 Juli 2023 "
|
|
5362
5361
|
accessibilityState={
|
|
5363
5362
|
{
|
|
5364
5363
|
"busy": undefined,
|
|
@@ -5389,10 +5388,6 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
5389
5388
|
style={
|
|
5390
5389
|
{
|
|
5391
5390
|
"alignItems": "center",
|
|
5392
|
-
"borderColor": "#7B93DB",
|
|
5393
|
-
"borderRadius": 21,
|
|
5394
|
-
"borderStyle": "solid",
|
|
5395
|
-
"borderWidth": 1,
|
|
5396
5391
|
"height": 42,
|
|
5397
5392
|
"justifyContent": "center",
|
|
5398
5393
|
"opacity": 1,
|
|
@@ -5413,7 +5408,7 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
5413
5408
|
"marginTop": 4,
|
|
5414
5409
|
},
|
|
5415
5410
|
{
|
|
5416
|
-
"color": "#
|
|
5411
|
+
"color": "#9AA5B1",
|
|
5417
5412
|
},
|
|
5418
5413
|
]
|
|
5419
5414
|
}
|
|
@@ -5870,7 +5865,8 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
5870
5865
|
}
|
|
5871
5866
|
>
|
|
5872
5867
|
<View
|
|
5873
|
-
accessibilityLabel=" Donderdag 13 Juli 2023 "
|
|
5868
|
+
accessibilityLabel="today Donderdag 13 Juli 2023 "
|
|
5869
|
+
accessibilityRole="button"
|
|
5874
5870
|
accessibilityState={
|
|
5875
5871
|
{
|
|
5876
5872
|
"busy": undefined,
|
|
@@ -5901,6 +5897,10 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
5901
5897
|
style={
|
|
5902
5898
|
{
|
|
5903
5899
|
"alignItems": "center",
|
|
5900
|
+
"borderColor": "#7B93DB",
|
|
5901
|
+
"borderRadius": 21,
|
|
5902
|
+
"borderStyle": "solid",
|
|
5903
|
+
"borderWidth": 1,
|
|
5904
5904
|
"height": 42,
|
|
5905
5905
|
"justifyContent": "center",
|
|
5906
5906
|
"opacity": 1,
|
|
@@ -5921,7 +5921,7 @@ exports[`Test for the calendar component renders a calendar where you can select
|
|
|
5921
5921
|
"marginTop": 4,
|
|
5922
5922
|
},
|
|
5923
5923
|
{
|
|
5924
|
-
"color": "#
|
|
5924
|
+
"color": "#7B93DB",
|
|
5925
5925
|
},
|
|
5926
5926
|
]
|
|
5927
5927
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import { TextInputProps as NativeTextInputProps } from 'react-native';
|
|
1
2
|
import { KeyBoardTypes } from '../../../types/keyboard-types.enum';
|
|
2
|
-
|
|
3
|
-
placeholder?: string;
|
|
4
|
-
onchangeText?: (text: string) => void;
|
|
3
|
+
interface TextInputProps extends NativeTextInputProps {
|
|
5
4
|
keyboardType: KeyBoardTypes;
|
|
6
5
|
border?: boolean;
|
|
7
|
-
}
|
|
8
|
-
declare const TextInput: ({
|
|
6
|
+
}
|
|
7
|
+
declare const TextInput: ({ keyboardType, border, ...props }: TextInputProps) => JSX.Element;
|
|
9
8
|
export { TextInput as TextInput };
|
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import {useContext} from 'react';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
View,
|
|
6
|
+
TextInput as NativeTextInput,
|
|
7
|
+
TextInputProps as NativeTextInputProps,
|
|
8
|
+
} from 'react-native';
|
|
5
9
|
import {ThemeCtx} from '../../../context/theme.context';
|
|
6
10
|
import {Stylesheet} from './text-input.styles';
|
|
7
11
|
import {KeyBoardTypes} from '../../../types/keyboard-types.enum';
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
onchangeText?: (text: string) => void;
|
|
13
|
+
interface TextInputProps extends NativeTextInputProps {
|
|
12
14
|
keyboardType: KeyBoardTypes;
|
|
13
15
|
border?: boolean;
|
|
14
|
-
}
|
|
16
|
+
}
|
|
15
17
|
|
|
16
|
-
const TextInput = ({
|
|
17
|
-
placeholder,
|
|
18
|
-
onchangeText,
|
|
19
|
-
keyboardType,
|
|
20
|
-
border,
|
|
21
|
-
}: TextInputProps) => {
|
|
18
|
+
const TextInput = ({keyboardType, border, ...props}: TextInputProps) => {
|
|
22
19
|
const context = useContext(ThemeCtx);
|
|
23
20
|
const styles = Stylesheet(context, border);
|
|
24
21
|
|
|
25
22
|
return (
|
|
26
23
|
<View style={styles.container}>
|
|
27
24
|
<NativeTextInput
|
|
28
|
-
placeholder={placeholder}
|
|
29
25
|
placeholderTextColor={context.colors.ui.grey}
|
|
30
26
|
style={styles.input}
|
|
31
|
-
onChangeText={onchangeText}
|
|
32
27
|
keyboardType={keyboardType}
|
|
28
|
+
{...props}
|
|
33
29
|
/>
|
|
34
30
|
</View>
|
|
35
31
|
);
|
|
@@ -7,33 +7,33 @@ export const TextInputPreview = ({} = {}) => {
|
|
|
7
7
|
return (
|
|
8
8
|
<SafeAreaView style={{flex: 1, justifyContent: 'space-around'}}>
|
|
9
9
|
<TextInput
|
|
10
|
-
|
|
10
|
+
onChangeText={(text: string) =>
|
|
11
11
|
console.log('text is changed to: ' + text)
|
|
12
12
|
}
|
|
13
13
|
keyboardType={KeyBoardTypes.DECIMAL_PAD}
|
|
14
14
|
/>
|
|
15
15
|
<TextInput
|
|
16
16
|
placeholder={'placeholder text'}
|
|
17
|
-
|
|
17
|
+
onChangeText={(text: string) =>
|
|
18
18
|
console.log('text is changed to: ' + text)
|
|
19
19
|
}
|
|
20
20
|
keyboardType={KeyBoardTypes.DEFAULT}
|
|
21
21
|
/>
|
|
22
22
|
<TextInput
|
|
23
|
-
|
|
23
|
+
onChangeText={(text: string) =>
|
|
24
24
|
console.log('text is changed to: ' + text)
|
|
25
25
|
}
|
|
26
26
|
keyboardType={KeyBoardTypes.EMAIL_ADDRESS}
|
|
27
27
|
/>
|
|
28
28
|
<TextInput
|
|
29
29
|
keyboardType={KeyBoardTypes.DEFAULT}
|
|
30
|
-
|
|
30
|
+
onChangeText={(text: string) => console.log('text: ' + text)}
|
|
31
31
|
placeholder={'with border'}
|
|
32
32
|
border={true}
|
|
33
33
|
/>
|
|
34
34
|
<TextInput
|
|
35
35
|
keyboardType={KeyBoardTypes.DEFAULT}
|
|
36
|
-
|
|
36
|
+
onChangeText={(text: string) => console.log('text: ' + text)}
|
|
37
37
|
border={true}
|
|
38
38
|
/>
|
|
39
39
|
</SafeAreaView>
|
|
@@ -10,7 +10,7 @@ describe('test input texts', () => {
|
|
|
10
10
|
<TextInput
|
|
11
11
|
keyboardType={KeyBoardTypes.DEFAULT}
|
|
12
12
|
placeholder="dummy placeholder"
|
|
13
|
-
|
|
13
|
+
onChangeText={() => console.log('text changed')}
|
|
14
14
|
/>
|
|
15
15
|
)
|
|
16
16
|
.toJSON();
|
|
@@ -22,7 +22,7 @@ describe('test input texts', () => {
|
|
|
22
22
|
.create(
|
|
23
23
|
<TextInput
|
|
24
24
|
keyboardType={KeyBoardTypes.EMAIL_ADDRESS}
|
|
25
|
-
|
|
25
|
+
onChangeText={() => console.log('text changed')}
|
|
26
26
|
/>
|
|
27
27
|
)
|
|
28
28
|
.toJSON();
|
|
@@ -34,7 +34,7 @@ describe('test input texts', () => {
|
|
|
34
34
|
.create(
|
|
35
35
|
<TextInput
|
|
36
36
|
keyboardType={KeyBoardTypes.EMAIL_ADDRESS}
|
|
37
|
-
|
|
37
|
+
onChangeText={() => console.log('text changed')}
|
|
38
38
|
border={true}
|
|
39
39
|
/>
|
|
40
40
|
)
|
|
@@ -47,7 +47,7 @@ describe('test input texts', () => {
|
|
|
47
47
|
.create(
|
|
48
48
|
<TextInput
|
|
49
49
|
keyboardType={KeyBoardTypes.EMAIL_ADDRESS}
|
|
50
|
-
|
|
50
|
+
onChangeText={() => console.log('text changed')}
|
|
51
51
|
border={true}
|
|
52
52
|
placeholder={'Text input field with a border'}
|
|
53
53
|
/>
|
|
@@ -428,3 +428,147 @@ exports[`test button component should render a button component with a solid ico
|
|
|
428
428
|
</View>
|
|
429
429
|
</View>
|
|
430
430
|
`;
|
|
431
|
+
|
|
432
|
+
exports[`test button component should render a success button component 1`] = `
|
|
433
|
+
<View
|
|
434
|
+
accessibilityState={
|
|
435
|
+
{
|
|
436
|
+
"busy": undefined,
|
|
437
|
+
"checked": undefined,
|
|
438
|
+
"disabled": undefined,
|
|
439
|
+
"expanded": undefined,
|
|
440
|
+
"selected": undefined,
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
accessibilityValue={
|
|
444
|
+
{
|
|
445
|
+
"max": undefined,
|
|
446
|
+
"min": undefined,
|
|
447
|
+
"now": undefined,
|
|
448
|
+
"text": undefined,
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
accessible={true}
|
|
452
|
+
collapsable={false}
|
|
453
|
+
focusable={true}
|
|
454
|
+
onBlur={[Function]}
|
|
455
|
+
onClick={[Function]}
|
|
456
|
+
onFocus={[Function]}
|
|
457
|
+
onResponderGrant={[Function]}
|
|
458
|
+
onResponderMove={[Function]}
|
|
459
|
+
onResponderRelease={[Function]}
|
|
460
|
+
onResponderTerminate={[Function]}
|
|
461
|
+
onResponderTerminationRequest={[Function]}
|
|
462
|
+
onStartShouldSetResponder={[Function]}
|
|
463
|
+
>
|
|
464
|
+
<View
|
|
465
|
+
style={
|
|
466
|
+
{
|
|
467
|
+
"alignItems": "center",
|
|
468
|
+
"backgroundColor": "#67C14E",
|
|
469
|
+
"borderRadius": 50,
|
|
470
|
+
"flexDirection": "row",
|
|
471
|
+
"justifyContent": "center",
|
|
472
|
+
"paddingHorizontal": 24,
|
|
473
|
+
"paddingVertical": 12,
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
>
|
|
477
|
+
<View>
|
|
478
|
+
<Text
|
|
479
|
+
style={
|
|
480
|
+
[
|
|
481
|
+
[
|
|
482
|
+
{
|
|
483
|
+
"fontFamily": "SourceSansPro",
|
|
484
|
+
"fontSize": 16,
|
|
485
|
+
"lineHeight": 22.4,
|
|
486
|
+
},
|
|
487
|
+
],
|
|
488
|
+
{
|
|
489
|
+
"color": "#FFFFFF",
|
|
490
|
+
"textAlign": "center",
|
|
491
|
+
"width": "100%",
|
|
492
|
+
},
|
|
493
|
+
undefined,
|
|
494
|
+
]
|
|
495
|
+
}
|
|
496
|
+
>
|
|
497
|
+
Success button
|
|
498
|
+
</Text>
|
|
499
|
+
</View>
|
|
500
|
+
</View>
|
|
501
|
+
</View>
|
|
502
|
+
`;
|
|
503
|
+
|
|
504
|
+
exports[`test button component should render an error button component 1`] = `
|
|
505
|
+
<View
|
|
506
|
+
accessibilityState={
|
|
507
|
+
{
|
|
508
|
+
"busy": undefined,
|
|
509
|
+
"checked": undefined,
|
|
510
|
+
"disabled": undefined,
|
|
511
|
+
"expanded": undefined,
|
|
512
|
+
"selected": undefined,
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
accessibilityValue={
|
|
516
|
+
{
|
|
517
|
+
"max": undefined,
|
|
518
|
+
"min": undefined,
|
|
519
|
+
"now": undefined,
|
|
520
|
+
"text": undefined,
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
accessible={true}
|
|
524
|
+
collapsable={false}
|
|
525
|
+
focusable={true}
|
|
526
|
+
onBlur={[Function]}
|
|
527
|
+
onClick={[Function]}
|
|
528
|
+
onFocus={[Function]}
|
|
529
|
+
onResponderGrant={[Function]}
|
|
530
|
+
onResponderMove={[Function]}
|
|
531
|
+
onResponderRelease={[Function]}
|
|
532
|
+
onResponderTerminate={[Function]}
|
|
533
|
+
onResponderTerminationRequest={[Function]}
|
|
534
|
+
onStartShouldSetResponder={[Function]}
|
|
535
|
+
>
|
|
536
|
+
<View
|
|
537
|
+
style={
|
|
538
|
+
{
|
|
539
|
+
"alignItems": "center",
|
|
540
|
+
"backgroundColor": "#D25E5E",
|
|
541
|
+
"borderRadius": 50,
|
|
542
|
+
"flexDirection": "row",
|
|
543
|
+
"justifyContent": "center",
|
|
544
|
+
"paddingHorizontal": 24,
|
|
545
|
+
"paddingVertical": 12,
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
>
|
|
549
|
+
<View>
|
|
550
|
+
<Text
|
|
551
|
+
style={
|
|
552
|
+
[
|
|
553
|
+
[
|
|
554
|
+
{
|
|
555
|
+
"fontFamily": "SourceSansPro",
|
|
556
|
+
"fontSize": 16,
|
|
557
|
+
"lineHeight": 22.4,
|
|
558
|
+
},
|
|
559
|
+
],
|
|
560
|
+
{
|
|
561
|
+
"color": "#FFFFFF",
|
|
562
|
+
"textAlign": "center",
|
|
563
|
+
"width": "100%",
|
|
564
|
+
},
|
|
565
|
+
undefined,
|
|
566
|
+
]
|
|
567
|
+
}
|
|
568
|
+
>
|
|
569
|
+
Error button
|
|
570
|
+
</Text>
|
|
571
|
+
</View>
|
|
572
|
+
</View>
|
|
573
|
+
</View>
|
|
574
|
+
`;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import { PressableProps } from 'react-native';
|
|
1
2
|
import { IconNameType, IconStyleType } from '../../../types/icontype.type';
|
|
2
|
-
type
|
|
3
|
+
type ButtonType = 'regular' | 'error' | 'success';
|
|
4
|
+
interface ButtonProps extends PressableProps {
|
|
3
5
|
label: string;
|
|
4
6
|
icon?: boolean;
|
|
5
7
|
iconStyle?: IconStyleType;
|
|
6
8
|
iconName?: IconNameType;
|
|
7
9
|
iconSize?: number;
|
|
8
10
|
disabled?: boolean;
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
declare const Button: ({ label, icon, iconStyle, iconName, iconSize, disabled,
|
|
11
|
+
type?: ButtonType;
|
|
12
|
+
}
|
|
13
|
+
declare const Button: ({ label, icon, iconStyle, iconName, iconSize, disabled, type, ...props }: ButtonProps) => JSX.Element;
|
|
12
14
|
export { Button as Button };
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import {useContext} from 'react';
|
|
3
3
|
|
|
4
|
-
import {Pressable, View} from 'react-native';
|
|
4
|
+
import {Pressable, PressableProps, View} from 'react-native';
|
|
5
5
|
import {ThemeCtx} from '../../../context/theme.context';
|
|
6
6
|
import {Stylesheet} from './button.styles';
|
|
7
7
|
import {Heading4} from '../../atoms/heading-components';
|
|
8
8
|
import {IconNameType, IconStyleType} from '../../../types/icontype.type';
|
|
9
9
|
import {Icon} from '../../../icons/index';
|
|
10
10
|
|
|
11
|
-
type
|
|
11
|
+
type ButtonType = 'regular' | 'error' | 'success';
|
|
12
|
+
|
|
13
|
+
interface ButtonProps extends PressableProps {
|
|
12
14
|
label: string;
|
|
13
15
|
icon?: boolean;
|
|
14
16
|
iconStyle?: IconStyleType;
|
|
15
17
|
iconName?: IconNameType;
|
|
16
18
|
iconSize?: number;
|
|
17
19
|
disabled?: boolean;
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
+
type?: ButtonType;
|
|
21
|
+
}
|
|
20
22
|
|
|
21
23
|
const Button = ({
|
|
22
24
|
label,
|
|
@@ -25,13 +27,24 @@ const Button = ({
|
|
|
25
27
|
iconName = 'calendar',
|
|
26
28
|
iconSize,
|
|
27
29
|
disabled,
|
|
28
|
-
|
|
30
|
+
type = 'regular',
|
|
31
|
+
...props
|
|
29
32
|
}: ButtonProps) => {
|
|
30
33
|
const context = useContext(ThemeCtx);
|
|
31
|
-
|
|
34
|
+
|
|
35
|
+
let buttonColor;
|
|
36
|
+
if (type === 'error') {
|
|
37
|
+
buttonColor = context.colors.ui.error.dark;
|
|
38
|
+
} else if (type === 'success') {
|
|
39
|
+
buttonColor = context.colors.ui.success.dark;
|
|
40
|
+
} else {
|
|
41
|
+
buttonColor = context.colors.main['0'];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const styles = Stylesheet(context, disabled, buttonColor);
|
|
32
45
|
|
|
33
46
|
return (
|
|
34
|
-
<Pressable disabled={disabled}
|
|
47
|
+
<Pressable disabled={disabled} {...props}>
|
|
35
48
|
<View style={styles.container}>
|
|
36
49
|
{icon ? (
|
|
37
50
|
<View style={styles.iconGap}>
|
|
@@ -39,7 +52,11 @@ const Button = ({
|
|
|
39
52
|
style={iconStyle}
|
|
40
53
|
name={iconName}
|
|
41
54
|
color={
|
|
42
|
-
disabled
|
|
55
|
+
disabled
|
|
56
|
+
? context.colors.ui.darkgrey
|
|
57
|
+
: type === 'regular'
|
|
58
|
+
? context.colors.main['9']
|
|
59
|
+
: context.colors.ui.white
|
|
43
60
|
}
|
|
44
61
|
size={iconSize}
|
|
45
62
|
/>
|
|
@@ -49,7 +66,11 @@ const Button = ({
|
|
|
49
66
|
<Heading4
|
|
50
67
|
textAlign={'center'}
|
|
51
68
|
textColor={
|
|
52
|
-
disabled
|
|
69
|
+
disabled
|
|
70
|
+
? context.colors.ui.darkgrey
|
|
71
|
+
: type === 'regular'
|
|
72
|
+
? context.colors.main['9']
|
|
73
|
+
: context.colors.ui.white
|
|
53
74
|
}
|
|
54
75
|
>
|
|
55
76
|
{label}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import {Button} from './button.component';
|
|
3
|
-
import {Icon} from '../../../icons/index';
|
|
4
3
|
const {View} = require('react-native');
|
|
5
4
|
|
|
6
5
|
export const ButtonPreview = ({}: {}) => {
|
|
@@ -13,6 +12,16 @@ export const ButtonPreview = ({}: {}) => {
|
|
|
13
12
|
}}
|
|
14
13
|
>
|
|
15
14
|
<Button label="Default button" onPress={() => console.log('clicked')} />
|
|
15
|
+
<Button
|
|
16
|
+
label="Error button"
|
|
17
|
+
type={'error'}
|
|
18
|
+
onPress={() => console.log('clicked')}
|
|
19
|
+
/>
|
|
20
|
+
<Button
|
|
21
|
+
label="Success button"
|
|
22
|
+
type={'success'}
|
|
23
|
+
onPress={() => console.log('clicked')}
|
|
24
|
+
/>
|
|
16
25
|
<Button
|
|
17
26
|
label="Icon button"
|
|
18
27
|
icon={true}
|
|
@@ -24,6 +33,12 @@ export const ButtonPreview = ({}: {}) => {
|
|
|
24
33
|
disabled={true}
|
|
25
34
|
onPress={() => console.log('clicked')}
|
|
26
35
|
/>
|
|
36
|
+
<Button
|
|
37
|
+
label="Success disabled"
|
|
38
|
+
type={'success'}
|
|
39
|
+
disabled={true}
|
|
40
|
+
onPress={() => console.log('clicked')}
|
|
41
|
+
/>
|
|
27
42
|
<Button
|
|
28
43
|
label="Disabled Icon button"
|
|
29
44
|
disabled={true}
|