@draftbit/core 44.1.13-cd2af3.0 → 44.1.15

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.
Files changed (215) hide show
  1. package/lib/commonjs/components/DeprecatedButton.js +4 -19
  2. package/lib/commonjs/components/DeprecatedButton.js.map +1 -1
  3. package/lib/commonjs/components/DeprecatedCardWrapper.js +2 -14
  4. package/lib/commonjs/components/DeprecatedCardWrapper.js.map +1 -1
  5. package/lib/commonjs/components/Justification.js +0 -3
  6. package/lib/commonjs/components/Picker/Picker.js +27 -264
  7. package/lib/commonjs/components/Picker/Picker.js.map +1 -1
  8. package/lib/commonjs/components/Picker/PickerComponent.android.js +110 -34
  9. package/lib/commonjs/components/Picker/PickerComponent.android.js.map +1 -1
  10. package/lib/commonjs/components/Picker/PickerComponent.ios.js +112 -38
  11. package/lib/commonjs/components/Picker/PickerComponent.ios.js.map +1 -1
  12. package/lib/commonjs/components/Picker/PickerComponent.web.js +111 -34
  13. package/lib/commonjs/components/Picker/PickerComponent.web.js.map +1 -1
  14. package/lib/commonjs/components/Picker/PickerTypes.js +6 -0
  15. package/lib/commonjs/components/Picker/PickerTypes.js.map +1 -0
  16. package/lib/commonjs/components/ResizeMode.js +0 -3
  17. package/lib/commonjs/mappings/RadioButtonGroup.js.map +1 -1
  18. package/lib/commonjs/mappings/RadioButtonRow.js.map +1 -1
  19. package/lib/module/components/Justification.js +1 -1
  20. package/lib/module/components/Picker/Picker.js +28 -258
  21. package/lib/module/components/Picker/Picker.js.map +1 -1
  22. package/lib/module/components/Picker/PickerComponent.android.js +103 -32
  23. package/lib/module/components/Picker/PickerComponent.android.js.map +1 -1
  24. package/lib/module/components/Picker/PickerComponent.ios.js +107 -36
  25. package/lib/module/components/Picker/PickerComponent.ios.js.map +1 -1
  26. package/lib/module/components/Picker/PickerComponent.web.js +104 -32
  27. package/lib/module/components/Picker/PickerComponent.web.js.map +1 -1
  28. package/lib/module/components/Picker/PickerTypes.js +2 -0
  29. package/lib/module/components/Picker/PickerTypes.js.map +1 -0
  30. package/lib/module/components/ResizeMode.js +1 -1
  31. package/lib/typescript/src/components/Picker/Picker.d.ts +4 -28
  32. package/lib/typescript/src/components/Picker/PickerComponent.android.d.ts +5 -12
  33. package/lib/typescript/src/components/Picker/PickerComponent.ios.d.ts +5 -11
  34. package/lib/typescript/src/components/Picker/PickerComponent.web.d.ts +5 -12
  35. package/lib/typescript/src/components/Picker/PickerTypes.d.ts +18 -0
  36. package/package.json +2 -2
  37. package/src/components/Picker/Picker.tsx +34 -433
  38. package/src/components/Picker/PickerComponent.android.tsx +101 -44
  39. package/src/components/Picker/PickerComponent.ios.tsx +114 -58
  40. package/src/components/Picker/PickerComponent.web.tsx +102 -44
  41. package/src/components/Picker/PickerTypes.ts +18 -0
  42. package/src/Provider.js +0 -9
  43. package/src/components/Accordion/AccordionGroup.js +0 -44
  44. package/src/components/Accordion/AccordionItem.js +0 -32
  45. package/src/components/Accordion/index.js +0 -2
  46. package/src/components/ActionSheet/ActionSheet.js +0 -45
  47. package/src/components/ActionSheet/ActionSheetCancel.js +0 -6
  48. package/src/components/ActionSheet/ActionSheetItem.js +0 -30
  49. package/src/components/ActionSheet/index.js +0 -3
  50. package/src/components/AnimatedCircularProgress.js +0 -43
  51. package/src/components/AspectRatio.js +0 -18
  52. package/src/components/AvatarEdit.js +0 -30
  53. package/src/components/Banner.js +0 -109
  54. package/src/components/Button.js +0 -112
  55. package/src/components/Card.js +0 -57
  56. package/src/components/CardBlock.js +0 -54
  57. package/src/components/CardContainer.js +0 -69
  58. package/src/components/CardContainerRating.js +0 -79
  59. package/src/components/CardContainerShortImage.js +0 -33
  60. package/src/components/CardInline.js +0 -36
  61. package/src/components/Carousel.js +0 -66
  62. package/src/components/Checkbox/Checkbox.js +0 -63
  63. package/src/components/Checkbox/CheckboxGroup.js +0 -21
  64. package/src/components/Checkbox/CheckboxGroupRow.js +0 -77
  65. package/src/components/Checkbox/CheckboxRow.js +0 -78
  66. package/src/components/Checkbox/context.js +0 -14
  67. package/src/components/Checkbox/index.js +0 -3
  68. package/src/components/CircleImage.js +0 -8
  69. package/src/components/CircularProgress.js +0 -78
  70. package/src/components/Config.js +0 -63
  71. package/src/components/Container.js +0 -43
  72. package/src/components/DatePicker/DatePicker.js +0 -368
  73. package/src/components/DatePicker/DatePickerComponent.js +0 -13
  74. package/src/components/DatePicker/DatePickerComponent.web.js +0 -30
  75. package/src/components/DatePicker/DatePickerComponentType.js +0 -1
  76. package/src/components/DeprecatedButton.js +0 -95
  77. package/src/components/DeprecatedCardWrapper.js +0 -18
  78. package/src/components/DeprecatedFAB.js +0 -115
  79. package/src/components/Divider.js +0 -13
  80. package/src/components/Elevation.js +0 -20
  81. package/src/components/FAB.js +0 -46
  82. package/src/components/FieldSearchBarFull.js +0 -53
  83. package/src/components/FormRow.js +0 -19
  84. package/src/components/Header.js +0 -44
  85. package/src/components/HeaderLarge.js +0 -7
  86. package/src/components/HeaderMedium.js +0 -7
  87. package/src/components/HeaderOverline.js +0 -7
  88. package/src/components/IconButton.js +0 -35
  89. package/src/components/Image.js +0 -47
  90. package/src/components/Justification.js +0 -1
  91. package/src/components/Layout.js +0 -50
  92. package/src/components/NumberInput.js +0 -49
  93. package/src/components/Picker/Picker.js +0 -267
  94. package/src/components/Picker/PickerComponent.android.js +0 -20
  95. package/src/components/Picker/PickerComponent.ios.js +0 -40
  96. package/src/components/Picker/PickerComponent.web.js +0 -20
  97. package/src/components/Portal/Portal.js +0 -35
  98. package/src/components/Portal/PortalConsumer.js +0 -28
  99. package/src/components/Portal/PortalHost.js +0 -105
  100. package/src/components/Portal/PortalManager.js +0 -29
  101. package/src/components/ProgressBar.js +0 -118
  102. package/src/components/ProgressCircle.js +0 -13
  103. package/src/components/ProgressIndicator.js +0 -27
  104. package/src/components/RadioButton/RadioButton.js +0 -17
  105. package/src/components/RadioButton/RadioButtonFieldGroup.js +0 -17
  106. package/src/components/RadioButton/RadioButtonGroup.js +0 -43
  107. package/src/components/RadioButton/RadioButtonRow.js +0 -76
  108. package/src/components/RadioButton/context.js +0 -14
  109. package/src/components/RadioButton/index.js +0 -4
  110. package/src/components/ResizeMode.js +0 -1
  111. package/src/components/Row.js +0 -48
  112. package/src/components/RowBodyIcon.js +0 -8
  113. package/src/components/RowHeadlineImageCaption.js +0 -12
  114. package/src/components/RowHeadlineImageIcon.js +0 -14
  115. package/src/components/ScreenContainer.js +0 -34
  116. package/src/components/Slider.js +0 -63
  117. package/src/components/StarRating.js +0 -50
  118. package/src/components/StepIndicator.js +0 -346
  119. package/src/components/Stepper.js +0 -39
  120. package/src/components/Surface.js +0 -32
  121. package/src/components/Swiper/Swiper.js +0 -29
  122. package/src/components/Swiper/SwiperItem.js +0 -9
  123. package/src/components/Swiper/index.js +0 -2
  124. package/src/components/Switch.js +0 -56
  125. package/src/components/Text.js +0 -28
  126. package/src/components/TextField.js +0 -420
  127. package/src/components/ToggleButton.js +0 -39
  128. package/src/components/Touchable.js +0 -12
  129. package/src/components/Touchable.web.js +0 -2
  130. package/src/components/Typography.js +0 -36
  131. package/src/components/useAuthState.js +0 -31
  132. package/src/constants.js +0 -10
  133. package/src/hooks.js +0 -12
  134. package/src/index.js +0 -52
  135. package/src/interfaces/Icon.js +0 -8
  136. package/src/mappings/Accordion.js +0 -41
  137. package/src/mappings/AccordionItem.js +0 -16
  138. package/src/mappings/ActionSheet.js +0 -13
  139. package/src/mappings/ActionSheetCancel.js +0 -19
  140. package/src/mappings/ActionSheetItem.js +0 -23
  141. package/src/mappings/ActivityIndicator.js +0 -53
  142. package/src/mappings/AudioPlayer.js +0 -20
  143. package/src/mappings/AvatarEdit.js +0 -37
  144. package/src/mappings/Banner.js +0 -32
  145. package/src/mappings/BlurView.js +0 -41
  146. package/src/mappings/Button.js +0 -56
  147. package/src/mappings/Card.js +0 -52
  148. package/src/mappings/CardBlock.js +0 -122
  149. package/src/mappings/CardContainer.js +0 -102
  150. package/src/mappings/CardContainerRating.js +0 -124
  151. package/src/mappings/CardContainerShortImage.js +0 -118
  152. package/src/mappings/CardInline.js +0 -51
  153. package/src/mappings/Carousel.js +0 -18
  154. package/src/mappings/Checkbox.js +0 -45
  155. package/src/mappings/CheckboxGroup.js +0 -25
  156. package/src/mappings/CheckboxRow.js +0 -56
  157. package/src/mappings/CircleImage.js +0 -24
  158. package/src/mappings/Container.js +0 -29
  159. package/src/mappings/CustomCode.js +0 -8
  160. package/src/mappings/DatePicker.js +0 -146
  161. package/src/mappings/Divider.js +0 -26
  162. package/src/mappings/FAB.js +0 -36
  163. package/src/mappings/Fetch.js +0 -12
  164. package/src/mappings/FieldSearchBarFull.js +0 -49
  165. package/src/mappings/FlatList.js +0 -19
  166. package/src/mappings/HeaderLarge.js +0 -28
  167. package/src/mappings/HeaderMedium.js +0 -54
  168. package/src/mappings/HeaderOverline.js +0 -54
  169. package/src/mappings/Icon.js +0 -25
  170. package/src/mappings/IconButton.js +0 -30
  171. package/src/mappings/Image.js +0 -15
  172. package/src/mappings/ImageBackground.js +0 -28
  173. package/src/mappings/KeyboardAvoidingView.js +0 -40
  174. package/src/mappings/KeyboardAwareScrollView.js +0 -49
  175. package/src/mappings/Layout.js +0 -195
  176. package/src/mappings/LinearGradient.js +0 -77
  177. package/src/mappings/MapCallout.js +0 -21
  178. package/src/mappings/MapMarker.js +0 -47
  179. package/src/mappings/MapView.js +0 -138
  180. package/src/mappings/Modal.js +0 -41
  181. package/src/mappings/Picker.js +0 -139
  182. package/src/mappings/ProgressBar.js +0 -100
  183. package/src/mappings/ProgressCircle.js +0 -108
  184. package/src/mappings/ProgressIndicator.js +0 -180
  185. package/src/mappings/RadioButton.js +0 -50
  186. package/src/mappings/RadioButtonGroup.js +0 -16
  187. package/src/mappings/RadioButtonRow.js +0 -37
  188. package/src/mappings/RowBodyIcon.js +0 -75
  189. package/src/mappings/RowHeadlineImageCaption.js +0 -167
  190. package/src/mappings/RowHeadlineImageIcon.js +0 -99
  191. package/src/mappings/SafeAreaView.js +0 -33
  192. package/src/mappings/ScrollView.js +0 -30
  193. package/src/mappings/Slider.js +0 -59
  194. package/src/mappings/StarRating.js +0 -42
  195. package/src/mappings/Stepper.js +0 -28
  196. package/src/mappings/Surface.js +0 -13
  197. package/src/mappings/Swiper.js +0 -60
  198. package/src/mappings/SwiperItem.js +0 -8
  199. package/src/mappings/Switch.js +0 -75
  200. package/src/mappings/Text.js +0 -232
  201. package/src/mappings/TextArea.js +0 -52
  202. package/src/mappings/TextField.js +0 -158
  203. package/src/mappings/TextInput.js +0 -208
  204. package/src/mappings/ToggleButton.js +0 -45
  205. package/src/mappings/Touchable.js +0 -12
  206. package/src/mappings/Video.js +0 -74
  207. package/src/mappings/View.js +0 -206
  208. package/src/mappings/WebView.js +0 -18
  209. package/src/styles/DarkTheme.js +0 -26
  210. package/src/styles/DefaultTheme.js +0 -111
  211. package/src/styles/fonts.js +0 -62
  212. package/src/styles/overlay.js +0 -60
  213. package/src/styles/shadow.js +0 -51
  214. package/src/theming.js +0 -3
  215. package/src/utilities.js +0 -102
@@ -1,86 +1,142 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Dimensions } from "react-native";
2
+ import { View, StyleSheet } from "react-native";
3
3
  import { SafeAreaView } from "react-native-safe-area-context";
4
+ import omit from "lodash.omit";
5
+
4
6
  import { Picker as NativePicker } from "@react-native-picker/picker";
5
7
 
6
- import type { IconSlot } from "../../interfaces/Icon";
8
+ import { withTheme } from "../../theming";
9
+
7
10
  import Portal from "../Portal/Portal";
8
11
  import Button from "../DeprecatedButton";
9
- import { PickerOption } from "./Picker";
10
-
11
- const { width: deviceWidth, height: deviceHeight } = Dimensions.get("screen");
12
-
13
- interface PickerComponentProps {
14
- Icon: IconSlot["Icon"];
15
- androidPickerRef: React.RefObject<any>;
16
- togglePickerVisible: () => void;
17
- pickerOptions: PickerOption[];
18
- internalValue: string | undefined;
19
- handleValueChange: (newValue: string, itemIndex: number) => void;
20
- }
12
+ import TextField from "../TextField";
13
+ import Touchable from "../Touchable";
14
+ import { PickerComponentProps } from "./PickerTypes";
15
+ import { extractStyles } from "../../utilities";
16
+ import type { IconSlot } from "../../interfaces/Icon";
21
17
 
22
- export const PickerComponent: React.FC<PickerComponentProps> = ({
18
+ const Picker: React.FC<PickerComponentProps & IconSlot> = ({
23
19
  Icon,
24
- togglePickerVisible,
25
- pickerOptions,
26
- internalValue,
27
- handleValueChange,
20
+ style,
21
+ options,
22
+ placeholder,
23
+ selectedValue,
24
+ disabled = false,
25
+ onValueChange = () => {},
26
+ theme: { colors },
27
+ ...props
28
28
  }) => {
29
- return (
30
- <Portal>
31
- <View style={styles.iosPicker}>
32
- <SafeAreaView style={styles.iosSafeArea}>
33
- <Button
34
- Icon={Icon}
35
- type="text"
36
- onPress={togglePickerVisible}
37
- style={styles.iosButton}
38
- >
39
- {"Close"}
40
- </Button>
29
+ const {
30
+ viewStyles: {
31
+ borderRadius, // eslint-disable-line @typescript-eslint/no-unused-vars
32
+ borderWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
33
+ borderTopWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
34
+ borderRightWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
35
+ borderBottomWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
36
+ borderLeftWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
37
+ borderColor, // eslint-disable-line @typescript-eslint/no-unused-vars
38
+ backgroundColor, // eslint-disable-line @typescript-eslint/no-unused-vars
39
+ padding, // eslint-disable-line @typescript-eslint/no-unused-vars
40
+ paddingTop, // eslint-disable-line @typescript-eslint/no-unused-vars
41
+ paddingRight, // eslint-disable-line @typescript-eslint/no-unused-vars
42
+ paddingBottom, // eslint-disable-line @typescript-eslint/no-unused-vars
43
+ paddingLeft, // eslint-disable-line @typescript-eslint/no-unused-vars
44
+ ...viewStyles
45
+ },
46
+ } = extractStyles(style);
47
+
48
+ const textField = React.useRef<typeof TextField | undefined>(undefined);
49
+ const [pickerVisible, setIsPickerVisible] = React.useState(false);
50
+
51
+ const toggleVisibility = () => {
52
+ setIsPickerVisible(!pickerVisible);
53
+ // @ts-ignore
54
+ textField.current.toggleFocus(); // cannot determine if method exists due to component being wrapped in a withTheme()
55
+ };
41
56
 
42
- <NativePicker
43
- style={styles.iosNativePicker}
44
- selectedValue={internalValue}
45
- onValueChange={handleValueChange}
46
- >
47
- {(pickerOptions as unknown as PickerOption[]).map((option) => (
48
- <NativePicker.Item
49
- label={option.label}
50
- value={option.value}
51
- key={option.value}
52
- />
53
- ))}
54
- </NativePicker>
55
- </SafeAreaView>
56
- </View>
57
- </Portal>
57
+ const stylesWithoutMargin =
58
+ style &&
59
+ omit(StyleSheet.flatten(style), [
60
+ "margin",
61
+ "marginTop",
62
+ "marginRight",
63
+ "marginBottom",
64
+ "marginLeft",
65
+ ]);
66
+
67
+ const selectedLabel =
68
+ selectedValue &&
69
+ (options.find((o) => o.value === selectedValue)?.label ?? selectedValue);
70
+
71
+ return (
72
+ <View style={[styles.container, viewStyles]}>
73
+ <Touchable disabled={disabled} onPress={toggleVisibility}>
74
+ <TextField
75
+ {...props}
76
+ value={String(selectedLabel)}
77
+ placeholder={placeholder}
78
+ // @ts-ignore
79
+ ref={textField} // cannot determine if ref is of correct type due to component being wrapped in a withTheme()
80
+ disabled={disabled}
81
+ pointerEvents="none"
82
+ // @ts-expect-error
83
+ style={stylesWithoutMargin}
84
+ Icon={Icon}
85
+ />
86
+ </Touchable>
87
+ {pickerVisible && (
88
+ <Portal>
89
+ <View style={[styles.picker, { backgroundColor: colors.divider }]}>
90
+ <SafeAreaView style={styles.pickerContainer}>
91
+ <Button
92
+ Icon={Icon}
93
+ type="text"
94
+ onPress={toggleVisibility}
95
+ style={styles.closeButton}
96
+ >
97
+ Close
98
+ </Button>
99
+ <NativePicker
100
+ style={{ backgroundColor: "white" }}
101
+ selectedValue={selectedValue}
102
+ onValueChange={onValueChange}
103
+ >
104
+ {options.map((o: any) => (
105
+ <NativePicker.Item
106
+ label={o.label}
107
+ value={o.value}
108
+ key={o.value}
109
+ />
110
+ ))}
111
+ </NativePicker>
112
+ </SafeAreaView>
113
+ </View>
114
+ </Portal>
115
+ )}
116
+ </View>
58
117
  );
59
118
  };
60
119
 
61
120
  const styles = StyleSheet.create({
62
- iosPicker: {
121
+ container: {
122
+ alignSelf: "stretch",
123
+ },
124
+ picker: {
63
125
  position: "absolute",
64
126
  bottom: 0,
65
127
  left: 0,
66
128
  right: 0,
67
129
  flexDirection: "row",
68
130
  justifyContent: "center",
69
- width: "100%",
70
- maxWidth: deviceWidth,
71
- maxHeight: deviceHeight,
72
- backgroundColor: "rgba(234, 237, 242, 1)",
73
131
  },
74
- iosSafeArea: {
132
+ pickerContainer: {
75
133
  backgroundColor: "white",
76
134
  flexDirection: "column",
77
135
  width: "100%",
78
- maxWidth: deviceWidth,
79
136
  },
80
- iosButton: {
137
+ closeButton: {
81
138
  alignSelf: "flex-end",
82
139
  },
83
- iosNativePicker: {
84
- backgroundColor: "white",
85
- },
86
140
  });
141
+
142
+ export default withTheme(Picker);
@@ -1,59 +1,117 @@
1
1
  import * as React from "react";
2
- import { StyleSheet, Dimensions } from "react-native";
3
-
2
+ import { View, StyleSheet } from "react-native";
4
3
  import { Picker as NativePicker } from "@react-native-picker/picker";
4
+ import omit from "lodash.omit";
5
+ import { withTheme } from "../../theming";
6
+ import { extractStyles } from "../../utilities";
7
+
8
+ import TextField from "../TextField";
9
+ import Touchable from "../Touchable";
10
+ import { PickerComponentProps } from "./PickerTypes";
5
11
 
6
- import type { IconSlot } from "../../interfaces/Icon";
12
+ const Picker: React.FC<PickerComponentProps> = ({
13
+ style,
14
+ options,
15
+ placeholder,
16
+ selectedValue,
17
+ disabled = false,
18
+ onValueChange: onValueChangeOverride = () => {},
19
+ ...props
20
+ }) => {
21
+ const {
22
+ viewStyles: {
23
+ borderRadius, // eslint-disable-line @typescript-eslint/no-unused-vars
24
+ borderWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
25
+ borderTopWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
26
+ borderRightWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
27
+ borderBottomWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
28
+ borderLeftWidth, // eslint-disable-line @typescript-eslint/no-unused-vars
29
+ borderColor, // eslint-disable-line @typescript-eslint/no-unused-vars
30
+ backgroundColor, // eslint-disable-line @typescript-eslint/no-unused-vars
31
+ padding, // eslint-disable-line @typescript-eslint/no-unused-vars
32
+ paddingTop, // eslint-disable-line @typescript-eslint/no-unused-vars
33
+ paddingRight, // eslint-disable-line @typescript-eslint/no-unused-vars
34
+ paddingBottom, // eslint-disable-line @typescript-eslint/no-unused-vars
35
+ paddingLeft, // eslint-disable-line @typescript-eslint/no-unused-vars
36
+ ...viewStyles
37
+ },
38
+ } = extractStyles(style);
7
39
 
8
- import { PickerOption } from "./Picker";
40
+ const textField = React.useRef<typeof TextField | undefined>(undefined);
9
41
 
10
- const { width: deviceWidth, height: deviceHeight } = Dimensions.get("screen");
42
+ const onValueChange = (itemValue: string, itemIndex: number) => {
43
+ toggleFocus();
44
+ onValueChangeOverride(itemValue, itemIndex);
45
+ };
11
46
 
12
- interface PickerComponentProps {
13
- Icon: IconSlot["Icon"];
14
- androidPickerRef: React.RefObject<any>;
15
- togglePickerVisible: () => void;
16
- pickerOptions: PickerOption[];
17
- internalValue: string | undefined;
18
- handleValueChange: (newValue: string, itemIndex: number) => void;
19
- }
47
+ const toggleFocus = () => {
48
+ if (!disabled) {
49
+ // @ts-ignore
50
+ textField.current.toggleFocus(); // cannot determine if method exists due to component being wrapped in a withTheme()
51
+ }
52
+ };
53
+
54
+ const stylesWithoutMargin =
55
+ style &&
56
+ omit(StyleSheet.flatten(style), [
57
+ "margin",
58
+ "marginTop",
59
+ "marginRight",
60
+ "marginBottom",
61
+ "marginLeft",
62
+ ]);
63
+
64
+ const selectedLabel =
65
+ selectedValue &&
66
+ (options.find((o) => o.value === selectedValue)?.label ?? selectedValue);
20
67
 
21
- export const PickerComponent: React.FC<PickerComponentProps> = ({
22
- androidPickerRef,
23
- togglePickerVisible,
24
- pickerOptions,
25
- internalValue,
26
- handleValueChange,
27
- }) => {
28
68
  return (
29
- <NativePicker
30
- selectedValue={internalValue}
31
- onValueChange={handleValueChange}
32
- style={styles.nonIosPicker}
33
- ref={androidPickerRef}
34
- onBlur={togglePickerVisible}
69
+ <Touchable
70
+ disabled={disabled}
71
+ onPress={toggleFocus}
72
+ style={[styles.container, viewStyles]}
35
73
  >
36
- {(pickerOptions as unknown as PickerOption[]).map((option) => (
37
- <NativePicker.Item
38
- label={option.label}
39
- value={option.value}
40
- key={option.value}
41
- />
42
- ))}
43
- </NativePicker>
74
+ <View>
75
+ <NativePicker
76
+ enabled={!disabled}
77
+ selectedValue={selectedValue}
78
+ onValueChange={onValueChange}
79
+ style={{
80
+ flex: 1,
81
+ opacity: 0,
82
+ position: "absolute",
83
+ top: 0,
84
+ left: 0,
85
+ right: 0,
86
+ bottom: 0,
87
+ width: "100%",
88
+ }}
89
+ >
90
+ {options.map((o) => (
91
+ <NativePicker.Item label={o.label} value={o.value} key={o.value} />
92
+ ))}
93
+ </NativePicker>
94
+ <View pointerEvents="none">
95
+ <TextField
96
+ {...props}
97
+ value={selectedLabel}
98
+ placeholder={placeholder}
99
+ // @ts-ignore
100
+ ref={textField} // cannot determine if ref is of correct type due to component being wrapped in a withTheme()
101
+ disabled={disabled}
102
+ // @ts-expect-error
103
+ style={stylesWithoutMargin}
104
+ />
105
+ </View>
106
+ </View>
107
+ </Touchable>
44
108
  );
45
109
  };
46
110
 
47
111
  const styles = StyleSheet.create({
48
- nonIosPicker: {
49
- opacity: 0,
50
- position: "absolute",
51
- top: 0,
52
- left: 0,
53
- right: 0,
54
- bottom: 0,
55
- width: "100%",
56
- maxWidth: deviceWidth,
57
- maxHeight: deviceHeight,
112
+ container: {
113
+ alignSelf: "stretch",
58
114
  },
59
115
  });
116
+
117
+ export default withTheme(Picker);
@@ -0,0 +1,18 @@
1
+ import { ViewStyle } from "react-native";
2
+ import { StyleProp } from "react-native";
3
+ import { Props as TextFieldProps } from "../TextField";
4
+
5
+ export interface PickerOption {
6
+ value: string;
7
+ label: string;
8
+ }
9
+
10
+ export interface PickerComponentProps extends TextFieldProps {
11
+ style?: StyleProp<ViewStyle> & { height?: number };
12
+ options: PickerOption[];
13
+ placeholder?: string;
14
+ selectedValue: string;
15
+ disabled?: boolean;
16
+ onValueChange?: (value: string, index: number) => void;
17
+ defaultValue?: string;
18
+ }
package/src/Provider.js DELETED
@@ -1,9 +0,0 @@
1
- import * as React from "react";
2
- import { ThemeProvider } from "./theming";
3
- import PortalHost from "./components/Portal/PortalHost";
4
- export default class Provider extends React.Component {
5
- render() {
6
- return (React.createElement(PortalHost, null,
7
- React.createElement(ThemeProvider, { theme: this.props.theme }, this.props.children)));
8
- }
9
- }
@@ -1,44 +0,0 @@
1
- import * as React from "react";
2
- import { View, StyleSheet, Pressable, } from "react-native";
3
- import Text from "../Text";
4
- import { withTheme } from "../../theming";
5
- import { extractStyles } from "../../utilities";
6
- const AccordionGroup = ({ label, expanded: expandedProp = false, openColor, closedColor, caretColor: caretColorProp, caretSize = 24, icon, iconSize = 24, style, children, theme, Icon, }) => {
7
- const [expanded, setExpanded] = React.useState(expandedProp);
8
- const { textStyles, viewStyles } = extractStyles(style);
9
- const expandedColor = openColor || theme.colors.primary;
10
- const collapsedColor = closedColor || theme.colors.primary;
11
- const labelColor = expanded ? expandedColor : collapsedColor;
12
- const caretColor = caretColorProp || labelColor;
13
- const handlePressAction = () => {
14
- setExpanded(!expanded);
15
- };
16
- return (React.createElement(React.Fragment, null,
17
- React.createElement(Pressable, { style: [styles.row, viewStyles], onPress: handlePressAction, accessibilityRole: "button" },
18
- icon ? (React.createElement(Icon, { name: icon, size: iconSize, color: labelColor, style: styles.icon })) : null,
19
- React.createElement(View, { style: styles.content },
20
- React.createElement(Text, { selectable: false, style: [
21
- textStyles,
22
- {
23
- color: labelColor,
24
- },
25
- ] }, label)),
26
- React.createElement(Icon, { name: expanded
27
- ? "MaterialIcons/keyboard-arrow-up"
28
- : "MaterialIcons/keyboard-arrow-down", color: caretColor, size: caretSize })),
29
- expanded ? children : null));
30
- };
31
- const styles = StyleSheet.create({
32
- row: {
33
- flexDirection: "row",
34
- alignItems: "center",
35
- },
36
- content: {
37
- flex: 1,
38
- justifyContent: "center",
39
- },
40
- icon: {
41
- marginRight: 8,
42
- },
43
- });
44
- export default withTheme(AccordionGroup);
@@ -1,32 +0,0 @@
1
- import * as React from "react";
2
- import { Pressable, StyleSheet, View, } from "react-native";
3
- import Text from "../Text";
4
- import { extractStyles } from "../../utilities";
5
- import { withTheme } from "../../theming";
6
- const AccordionItem = ({ Icon, icon, label, style, iconColor, theme, ...rest }) => {
7
- const { textStyles, viewStyles } = extractStyles(style);
8
- return (React.createElement(Pressable, { style: [styles.container, viewStyles], ...rest },
9
- React.createElement(View, { style: styles.row },
10
- icon ? (React.createElement(Icon, { name: icon, size: 24, color: iconColor || theme.colors.primary })) : null,
11
- React.createElement(View, { style: [styles.item, styles.content] },
12
- React.createElement(Text, { selectable: false, style: textStyles }, label)))));
13
- };
14
- const styles = StyleSheet.create({
15
- container: {
16
- padding: 8,
17
- },
18
- row: {
19
- flexDirection: "row",
20
- alignItems: "center",
21
- paddingLeft: 8,
22
- },
23
- item: {
24
- marginVertical: 6,
25
- paddingLeft: 8,
26
- },
27
- content: {
28
- flex: 1,
29
- justifyContent: "center",
30
- },
31
- });
32
- export default withTheme(AccordionItem);
@@ -1,2 +0,0 @@
1
- export { default as AccordionGroup } from "./AccordionGroup";
2
- export { default as AccordionItem } from "./AccordionItem";
@@ -1,45 +0,0 @@
1
- import React from "react";
2
- import { View, StyleSheet } from "react-native";
3
- import Portal from "../Portal/Portal";
4
- import Touchable from "../Touchable";
5
- import ActionSheetCancel from "./ActionSheetCancel";
6
- const ActionSheet = ({ visible = false, onClose, children }) => {
7
- return visible ? (React.createElement(Portal, null,
8
- React.createElement(Touchable, { style: styles.wrapper, onPress: onClose },
9
- React.createElement(View, { style: styles.overlay }),
10
- React.createElement(View, { style: styles.groupWrapper },
11
- React.createElement(View, { style: styles.group }, React.Children.toArray(children).filter((child) => child?.type !== ActionSheetCancel)),
12
- React.createElement(View, { style: styles.group }, React.Children.toArray(children).filter((child) => child.type === ActionSheetCancel)))))) : (React.createElement(React.Fragment, null));
13
- };
14
- const styles = StyleSheet.create({
15
- wrapper: {
16
- flex: 1,
17
- display: "flex",
18
- flexDirection: "column",
19
- },
20
- overlay: {
21
- position: "absolute",
22
- top: 0,
23
- left: 0,
24
- right: 0,
25
- bottom: 0,
26
- backgroundColor: "#000000",
27
- opacity: 0.3,
28
- },
29
- groupWrapper: {
30
- flex: 1,
31
- flexDirection: "column",
32
- justifyContent: "flex-end",
33
- display: "flex",
34
- marginBottom: 25,
35
- },
36
- group: {
37
- display: "flex",
38
- flexDirection: "column",
39
- borderRadius: 10,
40
- marginHorizontal: 7,
41
- marginVertical: 2.5,
42
- overflow: "hidden",
43
- },
44
- });
45
- export default ActionSheet;
@@ -1,6 +0,0 @@
1
- import React from "react";
2
- import ActionSheetItem from "./ActionSheetItem";
3
- const ActionSheetCancel = ({ label = "Cancel", color, style, onPress, }) => {
4
- return (React.createElement(ActionSheetItem, { label: label, color: color || "#FF453A", style: [style], onPress: onPress }));
5
- };
6
- export default ActionSheetCancel;
@@ -1,30 +0,0 @@
1
- import React from "react";
2
- import { Text, StyleSheet, TouchableOpacity, } from "react-native";
3
- import { extractStyles } from "../../utilities";
4
- const ActionSheetItem = ({ label, style, color, onPress }) => {
5
- const { textStyles, viewStyles } = extractStyles(style);
6
- return (React.createElement(TouchableOpacity, { activeOpacity: 0.7, style: [styles.wrapper, viewStyles], onPress: onPress },
7
- React.createElement(Text, { style: [styles.label, textStyles, { color }] }, label)));
8
- };
9
- const styles = StyleSheet.create({
10
- wrapper: {
11
- borderBottomWidth: StyleSheet.hairlineWidth,
12
- borderBottomColor: "#CCCCCC",
13
- backgroundColor: "#F1F1F1",
14
- minHeight: 50,
15
- overflow: "hidden",
16
- display: "flex",
17
- justifyContent: "center",
18
- },
19
- label: {
20
- fontSize: 16,
21
- textAlign: "center",
22
- color: "#0A84FF",
23
- fontWeight: "500",
24
- overflow: "hidden",
25
- paddingHorizontal: 20,
26
- paddingVertical: 10,
27
- alignSelf: "center",
28
- },
29
- });
30
- export default ActionSheetItem;
@@ -1,3 +0,0 @@
1
- export { default as ActionSheet } from "./ActionSheet";
2
- export { default as ActionSheetItem } from "./ActionSheetItem";
3
- export { default as ActionSheetCancel } from "./ActionSheetCancel";
@@ -1,43 +0,0 @@
1
- import * as React from "react";
2
- import { Animated, Easing, } from "react-native";
3
- import CircularProgress from "./CircularProgress";
4
- const AnimatedProgress = Animated.createAnimatedComponent(CircularProgress);
5
- const AnimatedCircularProgress = ({ duration = 500, easing = Easing.out(Easing.ease), fill, prefill = 0, useNativeDriver = false, tintColorSecondary, onAnimationComplete, tintColor = "black", ...other }) => {
6
- const [fillAnimation] = React.useState(new Animated.Value(prefill));
7
- const animate = React.useCallback((toVal = -1, dur, ease) => {
8
- const toValue = toVal >= 0 ? toVal : fill;
9
- const dura = dur || duration;
10
- const eas = ease || easing;
11
- const useNative = useNativeDriver;
12
- const anim = Animated.timing(fillAnimation, {
13
- useNativeDriver: useNative,
14
- toValue,
15
- easing: eas,
16
- duration: dura,
17
- });
18
- anim.start(onAnimationComplete);
19
- return anim;
20
- }, [
21
- duration,
22
- easing,
23
- fill,
24
- useNativeDriver,
25
- fillAnimation,
26
- onAnimationComplete,
27
- ]);
28
- const animateColor = () => {
29
- if (!tintColorSecondary) {
30
- return tintColor;
31
- }
32
- const tintAnimation = fillAnimation.interpolate({
33
- inputRange: [0, 100],
34
- outputRange: [tintColor, tintColorSecondary],
35
- });
36
- return tintAnimation;
37
- };
38
- React.useEffect(() => {
39
- animate();
40
- }, [fill, animate]);
41
- return (React.createElement(AnimatedProgress, { ...other, style: other.style, childrenContainerStyle: other.childrenContainerStyle, fill: fillAnimation, tintColor: animateColor() }));
42
- };
43
- export default AnimatedCircularProgress;
@@ -1,18 +0,0 @@
1
- import React from "react";
2
- import { View, StyleSheet, } from "react-native";
3
- const AspectRatio = (props) => {
4
- const [layout, setLayout] = React.useState(null);
5
- const { aspectRatio = 1, ...inputStyle } = StyleSheet.flatten(props.style) || {};
6
- const style = [inputStyle, { aspectRatio }];
7
- if (layout) {
8
- const { width = 0, height = 0 } = layout;
9
- if (width === 0) {
10
- style.push({ width: height * (1 / aspectRatio), height });
11
- }
12
- else {
13
- style.push({ width, height: width * (1 / aspectRatio) });
14
- }
15
- }
16
- return (React.createElement(View, { ...props, style: style, onLayout: ({ nativeEvent: { layout: l } }) => setLayout(l) }, props.children));
17
- };
18
- export default AspectRatio;
@@ -1,30 +0,0 @@
1
- import * as React from "react";
2
- import { View } from "react-native";
3
- import Touchable from "./Touchable";
4
- import CircleImage from "./CircleImage";
5
- import { withTheme } from "../theming";
6
- const AvatarEdit = ({ Icon, image, size = 80, onPress = () => { }, style, theme, ...rest }) => {
7
- const colorStyles = {
8
- editBackgroundColor: theme.colors.primary,
9
- editIconColor: theme.colors.surface,
10
- editBorderColor: theme.colors.surface,
11
- };
12
- const dimensions = {
13
- width: size,
14
- height: size,
15
- };
16
- return (React.createElement(View, { style: [style, dimensions], ...rest },
17
- React.createElement(Touchable, { onPress: onPress },
18
- React.createElement(CircleImage, { source: image, size: size }),
19
- React.createElement(View, { style: {
20
- position: "absolute",
21
- top: -3,
22
- right: -3,
23
- borderColor: colorStyles.editBorderColor,
24
- backgroundColor: colorStyles.editBackgroundColor,
25
- borderRadius: size * (3 / 16),
26
- padding: size * (3 / 32),
27
- } },
28
- React.createElement(Icon, { name: "MaterialIcons/edit", color: colorStyles.editIconColor, size: size * (3 / 16) })))));
29
- };
30
- export default withTheme(AvatarEdit);