@draftbit/core 44.1.12-ee6c2c.1 → 44.1.12

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export { default as AccordionGroup } from \"./AccordionGroup\";\nexport { default as AccordionItem } from \"./AccordionItem\";\n"]}
1
+ {"version":3,"sources":["index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export { default as AccordionGroup } from \"./AccordionGroup\";\nexport { default as AccordionItem } from \"./AccordionItem\";\n"]}
@@ -55,6 +55,12 @@ function normalizeOptions(options) {
55
55
  throw new Error('Picker options must be either an array of strings or array of { "label": string; "value": string; } objects.');
56
56
  }
57
57
 
58
+ const {
59
+ width: deviceWidth,
60
+ height: deviceHeight
61
+ } = _reactNative.Dimensions.get("screen");
62
+
63
+ const isIos = _reactNative.Platform.OS === "ios";
58
64
  const unstyledColor = "rgba(165, 173, 183, 1)";
59
65
  const disabledColor = "rgb(240, 240, 240)";
60
66
  const errorColor = "rgba(255, 69, 100, 1)";
@@ -83,8 +89,14 @@ const Picker = _ref => {
83
89
  rightIconName,
84
90
  type = "solid"
85
91
  } = _ref;
92
+ const androidPickerRef = React.useRef(undefined);
86
93
  const [internalValue, setInternalValue] = React.useState(value || defaultValue);
87
- const [pickerVisible, togglePickerVisible] = React.useReducer(state => !state, false);
94
+ const [pickerVisible, setPickerVisible] = React.useState(false);
95
+
96
+ const togglePickerVisible = () => {
97
+ setPickerVisible(!pickerVisible);
98
+ };
99
+
88
100
  React.useEffect(() => {
89
101
  if (value != null) {
90
102
  setInternalValue(value);
@@ -95,6 +107,13 @@ const Picker = _ref => {
95
107
  setInternalValue(defaultValue);
96
108
  }
97
109
  }, [defaultValue]);
110
+ React.useEffect(() => {
111
+ if (pickerVisible && androidPickerRef.current) {
112
+ var _androidPickerRef$cur;
113
+
114
+ androidPickerRef === null || androidPickerRef === void 0 ? void 0 : (_androidPickerRef$cur = androidPickerRef.current) === null || _androidPickerRef$cur === void 0 ? void 0 : _androidPickerRef$cur.focus();
115
+ }
116
+ }, [pickerVisible, androidPickerRef]);
98
117
  const normalizedOptions = normalizeOptions(options);
99
118
  const pickerOptions = placeholder ? [{
100
119
  value: placeholder,
@@ -139,7 +158,6 @@ const Picker = _ref => {
139
158
  height: 60,
140
159
  ...extractedMarginStyles
141
160
  };
142
- const platform = _reactNative.Platform.OS;
143
161
  const stylesWithoutBordersAndMargins = (0, _lodash.omit)(viewStyles, [..._utilities.borderStyleNames, ..._utilities.marginStyleNames, ...additionalBorderStyles, ...additionalMarginStyles]);
144
162
  const selectedLabel = internalValue && ((_find$label = (_find = pickerOptions.find(option => option.value === internalValue)) === null || _find === void 0 ? void 0 : _find.label) !== null && _find$label !== void 0 ? _find$label : internalValue);
145
163
  const labelText = label ? /*#__PURE__*/React.createElement(_reactNative.Text, {
@@ -232,7 +250,7 @@ const Picker = _ref => {
232
250
  style: styles.primaryTextContainer
233
251
  }, labelText, /*#__PURE__*/React.createElement(_reactNative.Text, {
234
252
  style: primaryTextStyle
235
- }, String(selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : placeholder))), rightIcon)), assistiveTextLabel), platform === "ios" && pickerVisible ? /*#__PURE__*/React.createElement(_Portal.default, null, /*#__PURE__*/React.createElement(_reactNative.View, {
253
+ }, String(selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : placeholder))), rightIcon)), assistiveTextLabel), isIos && pickerVisible ? /*#__PURE__*/React.createElement(_Portal.default, null, /*#__PURE__*/React.createElement(_reactNative.View, {
236
254
  style: [styles.iosPicker, {
237
255
  backgroundColor: colors.divider
238
256
  }]
@@ -251,11 +269,13 @@ const Picker = _ref => {
251
269
  label: option.label,
252
270
  value: option.value,
253
271
  key: option.value
254
- })))))) : null, platform !== "ios" ? /*#__PURE__*/React.createElement(_picker.Picker, {
255
- enabled: !disabled,
272
+ })))))) : null, !isIos && pickerVisible ? /*#__PURE__*/React.createElement(_picker.Picker, {
273
+ enabled: pickerVisible,
256
274
  selectedValue: internalValue,
257
275
  onValueChange: handleValueChange,
258
- style: styles.nonIosPicker
276
+ style: styles.nonIosPicker,
277
+ ref: androidPickerRef,
278
+ onBlur: () => setPickerVisible(false)
259
279
  }, pickerOptions.map(option => /*#__PURE__*/React.createElement(_picker.Picker.Item, {
260
280
  label: option.label,
261
281
  value: option.value,
@@ -271,7 +291,9 @@ exports.default = _default;
271
291
  const styles = _reactNative.StyleSheet.create({
272
292
  marginsContainer: {
273
293
  alignSelf: "stretch",
274
- alignItems: "center"
294
+ alignItems: "center",
295
+ width: "100%",
296
+ maxWidth: deviceWidth
275
297
  },
276
298
  touchableContainer: {
277
299
  flex: 1,
@@ -307,12 +329,16 @@ const styles = _reactNative.StyleSheet.create({
307
329
  left: 0,
308
330
  right: 0,
309
331
  flexDirection: "row",
310
- justifyContent: "center"
332
+ justifyContent: "center",
333
+ width: "100%",
334
+ maxWidth: deviceWidth,
335
+ maxHeight: deviceHeight
311
336
  },
312
337
  iosSafeArea: {
313
338
  backgroundColor: "white",
314
339
  flexDirection: "column",
315
- width: "100%"
340
+ width: "100%",
341
+ maxWidth: deviceWidth
316
342
  },
317
343
  iosButton: {
318
344
  alignSelf: "flex-end"
@@ -327,13 +353,9 @@ const styles = _reactNative.StyleSheet.create({
327
353
  left: 0,
328
354
  right: 0,
329
355
  bottom: 0,
330
- width: "100%"
331
- }
332
- });
333
- //# sourceMappingURL=Picker.js.mapft: 0,
334
- right: 0,
335
- bottom: 0,
336
- width: "100%"
356
+ width: "100%",
357
+ maxWidth: deviceWidth,
358
+ maxHeight: deviceHeight
337
359
  }
338
360
  });
339
361
  //# sourceMappingURL=Picker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Picker.tsx"],"names":["normalizeOptions","options","length","map","option","label","String","value","Error","unstyledColor","disabledColor","errorColor","Picker","error","onValueChange","defaultValue","Icon","style","placeholder","disabled","theme","assistiveText","iconColor","iconSize","leftIconMode","leftIconName","placeholderTextColor","rightIconName","type","internalValue","setInternalValue","React","useState","pickerVisible","togglePickerVisible","useReducer","state","useEffect","normalizedOptions","pickerOptions","colors","viewStyles","textStyles","additionalBorderStyles","additionalMarginStyles","borderStyles","extractedBorderStyles","marginStyles","extractedMarginStyles","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderRightWidth","borderLeftWidth","borderBottomWidth","borderColor","borderStyle","backgroundColor","height","platform","Platform","OS","stylesWithoutBordersAndMargins","borderStyleNames","marginStyleNames","selectedLabel","find","labelText","textAlign","color","fontSize","paddingBottom","leftIconOutset","leftIcon","marginRight","marginLeft","rightIcon","calculateLeftPadding","Math","abs","assistiveTextLabel","width","paddingLeft","paddingTop","primaryTextStyle","identity","handleValueChange","newValue","itemIndex","styles","marginsContainer","touchableContainer","outsetContainer","insetContainer","primaryTextContainer","iosPicker","divider","iosSafeArea","iosButton","iosNativePicker","nonIosPicker","StyleSheet","create","alignSelf","alignItems","flex","flexDirection","justifyContent","paddingRight","position","bottom","left","right","opacity","top"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n View,\n StyleSheet,\n Text,\n Platform,\n ViewStyle,\n StyleProp,\n} from \"react-native\";\nimport { omit, pickBy, identity, isObject } from \"lodash\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport { Picker as NativePicker } from \"@react-native-picker/picker\";\n\nimport { withTheme } from \"../../theming\";\nimport Portal from \"../Portal/Portal\";\nimport Button from \"../DeprecatedButton\";\nimport Touchable from \"../Touchable\";\nimport type { Theme } from \"../../styles/DefaultTheme\";\nimport type { IconSlot } from \"../../interfaces/Icon\";\nimport {\n extractStyles,\n extractBorderAndMarginStyles,\n borderStyleNames,\n marginStyleNames,\n} from \"../../utilities\";\n\nexport interface PickerOption {\n value: string;\n label: string;\n}\n\nexport type PickerProps = {\n error?: any;\n placeholder?: string;\n disabled?: boolean;\n style?: StyleProp<ViewStyle> & { height?: number };\n value?: string;\n options: PickerOption[] | string[];\n onValueChange: (value: string, index: number) => void;\n defaultValue?: string;\n assistiveText?: string;\n label?: string;\n iconColor?: string;\n iconSize?: number;\n leftIconMode?: \"inset\" | \"outset\";\n leftIconName?: string;\n placeholderTextColor?: string;\n rightIconName?: string;\n type?: \"solid\" | \"underline\";\n theme: Theme;\n Icon: IconSlot[\"Icon\"];\n};\n\nfunction normalizeOptions(options: PickerProps[\"options\"]): PickerOption[] {\n if (options.length === 0) {\n return [];\n }\n\n if (typeof options[0] === (\"string\" || \"number\")) {\n return (options as string[]).map((option) => ({\n label: String(option),\n value: String(option),\n }));\n }\n\n if (\n isObject(options[0]) &&\n options[0].value !== null &&\n options[0].label !== null\n ) {\n return (options as PickerOption[]).map((option) => {\n return {\n label: String(option.label),\n value: String(option.value),\n };\n });\n }\n\n throw new Error(\n 'Picker options must be either an array of strings or array of { \"label\": string; \"value\": string; } objects.'\n );\n}\n\nconst unstyledColor = \"rgba(165, 173, 183, 1)\";\nconst disabledColor = \"rgb(240, 240, 240)\";\nconst errorColor = \"rgba(255, 69, 100, 1)\";\n\nconst Picker: React.FC<PickerProps> = ({\n error,\n options = [],\n onValueChange,\n defaultValue,\n Icon,\n style,\n placeholder,\n value,\n disabled = false,\n theme,\n assistiveText,\n label,\n iconColor = unstyledColor,\n iconSize = 24,\n leftIconMode = \"inset\",\n leftIconName,\n placeholderTextColor = unstyledColor,\n rightIconName,\n type = \"solid\",\n}) => {\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n value || defaultValue\n );\n\n const [pickerVisible, togglePickerVisible] = React.useReducer(\n (state) => !state,\n false\n );\n\n React.useEffect(() => {\n if (value != null) {\n setInternalValue(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n if (defaultValue != null) {\n setInternalValue(defaultValue);\n }\n }, [defaultValue]);\n\n const normalizedOptions = normalizeOptions(options);\n\n const pickerOptions = placeholder\n ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]\n : normalizedOptions;\n\n const { colors } = theme;\n\n const { viewStyles, textStyles } = extractStyles(style);\n\n const additionalBorderStyles = [\"backgroundColor\"];\n\n const additionalMarginStyles = [\n \"bottom\",\n \"height\",\n \"left\",\n \"maxHeight\",\n \"maxWidth\",\n \"minHeight\",\n \"minWidth\",\n \"overflow\",\n \"position\",\n \"right\",\n \"top\",\n \"width\",\n \"zIndex\",\n ];\n\n const {\n borderStyles: extractedBorderStyles,\n marginStyles: extractedMarginStyles,\n } = extractBorderAndMarginStyles(\n viewStyles,\n additionalBorderStyles,\n additionalMarginStyles\n );\n\n const borderStyles = {\n ...{\n ...(type === \"solid\"\n ? {\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n borderBottomRightRadius: 5,\n borderBottomLeftRadius: 5,\n borderTopWidth: 1,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n }\n : {}),\n borderBottomWidth: 1,\n borderColor: unstyledColor,\n borderStyle: \"solid\",\n },\n ...extractedBorderStyles,\n ...(error ? { borderColor: errorColor } : {}),\n ...(disabled\n ? { borderColor: \"transparent\", backgroundColor: disabledColor }\n : {}),\n };\n\n const marginStyles = {\n height: 60,\n ...extractedMarginStyles,\n };\n\n const platform = Platform.OS;\n\n const stylesWithoutBordersAndMargins = omit(viewStyles, [\n ...borderStyleNames,\n ...marginStyleNames,\n ...additionalBorderStyles,\n ...additionalMarginStyles,\n ]);\n\n const selectedLabel =\n internalValue &&\n ((pickerOptions as unknown as PickerOption[]).find(\n (option) => option.value === internalValue\n )?.label ??\n internalValue);\n\n const labelText = label ? (\n <Text\n style={{\n textAlign: textStyles.textAlign,\n color: unstyledColor,\n fontSize: 12,\n paddingBottom: 4,\n }}\n >\n {label}\n </Text>\n ) : null;\n\n const leftIconOutset = leftIconMode === \"outset\";\n\n const leftIcon = leftIconName ? (\n <Icon\n name={leftIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: 4,\n marginLeft: 4,\n }}\n />\n ) : null;\n\n const rightIcon = rightIconName ? (\n <Icon\n name={rightIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: -10,\n marginLeft: 8,\n }}\n />\n ) : null;\n\n const textAlign = textStyles?.textAlign;\n\n const calculateLeftPadding = () => {\n if (leftIconOutset) {\n if (textAlign === \"center\") {\n return iconSize - Math.abs(8 - iconSize);\n }\n\n return iconSize + 8;\n }\n\n return 0;\n };\n\n const assistiveTextLabel = assistiveText ? (\n <Text\n style={{\n textAlign,\n width: \"100%\",\n paddingLeft: calculateLeftPadding(),\n color: unstyledColor,\n fontSize: 12,\n paddingTop: 4,\n }}\n >\n {assistiveText}\n </Text>\n ) : null;\n\n const primaryTextStyle = {\n color: unstyledColor,\n fontSize: 14,\n ...pickBy(textStyles, identity),\n ...(placeholder === internalValue ? { color: placeholderTextColor } : {}),\n ...(disabled ? { color: unstyledColor } : {}),\n };\n\n const handleValueChange = (newValue: string, itemIndex: number) => {\n if (!placeholder || itemIndex > 0) {\n onValueChange?.(newValue, itemIndex);\n }\n setInternalValue(newValue);\n };\n\n return (\n /* marginsContainer */\n <View style={[styles.marginsContainer, marginStyles]}>\n {/* touchableContainer */}\n <Touchable\n disabled={disabled}\n onPress={togglePickerVisible}\n style={styles.touchableContainer}\n >\n {/* outsetContainer */}\n <View\n pointerEvents=\"none\"\n style={[\n styles.outsetContainer,\n stylesWithoutBordersAndMargins,\n !leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {leftIcon}\n\n {/* insetContainer */}\n <View\n style={[\n styles.insetContainer,\n leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {/* primaryTextContainer */}\n <View style={styles.primaryTextContainer}>\n {labelText}\n\n <Text style={primaryTextStyle}>\n {String(selectedLabel ?? placeholder)}\n </Text>\n </View>\n\n {rightIcon}\n </View>\n </View>\n {assistiveTextLabel}\n </Touchable>\n\n {/* iosPicker */}\n {platform === \"ios\" && pickerVisible ? (\n <Portal>\n <View\n style={[\n styles.iosPicker,\n {\n backgroundColor: colors.divider,\n },\n ]}\n >\n <SafeAreaView style={styles.iosSafeArea}>\n <Button\n Icon={Icon}\n type=\"text\"\n onPress={togglePickerVisible}\n style={styles.iosButton}\n >\n {\"Close\"}\n </Button>\n\n <NativePicker\n style={styles.iosNativePicker}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n </SafeAreaView>\n </View>\n </Portal>\n ) : null}\n\n {/* nonIosPicker */}\n {platform !== \"ios\" ? (\n <NativePicker\n enabled={!disabled}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n style={styles.nonIosPicker}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n ) : null}\n </View>\n );\n};\n\nexport default withTheme(Picker);\n\nconst styles = StyleSheet.create({\n marginsContainer: {\n alignSelf: \"stretch\",\n alignItems: \"center\",\n },\n touchableContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n alignSelf: \"stretch\",\n alignItems: \"center\",\n },\n outsetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n insetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingLeft: 12,\n paddingRight: 12,\n },\n primaryTextContainer: {\n flex: 1,\n },\n iosPicker: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n },\n iosSafeArea: {\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n },\n iosButton: {\n alignSelf: \"flex-end\",\n },\n iosNativePicker: {\n backgroundColor: \"white\",\n },\n nonIosPicker: {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n },\n});\n"]}
1
+ {"version":3,"sources":["Picker.tsx"],"names":["normalizeOptions","options","length","map","option","label","String","value","Error","width","deviceWidth","height","deviceHeight","Dimensions","get","isIos","Platform","OS","unstyledColor","disabledColor","errorColor","Picker","error","onValueChange","defaultValue","Icon","style","placeholder","disabled","theme","assistiveText","iconColor","iconSize","leftIconMode","leftIconName","placeholderTextColor","rightIconName","type","androidPickerRef","React","useRef","undefined","internalValue","setInternalValue","useState","pickerVisible","setPickerVisible","togglePickerVisible","useEffect","current","focus","normalizedOptions","pickerOptions","colors","viewStyles","textStyles","additionalBorderStyles","additionalMarginStyles","borderStyles","extractedBorderStyles","marginStyles","extractedMarginStyles","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderRightWidth","borderLeftWidth","borderBottomWidth","borderColor","borderStyle","backgroundColor","stylesWithoutBordersAndMargins","borderStyleNames","marginStyleNames","selectedLabel","find","labelText","textAlign","color","fontSize","paddingBottom","leftIconOutset","leftIcon","marginRight","marginLeft","rightIcon","calculateLeftPadding","Math","abs","assistiveTextLabel","paddingLeft","paddingTop","primaryTextStyle","identity","handleValueChange","newValue","itemIndex","styles","marginsContainer","touchableContainer","outsetContainer","insetContainer","primaryTextContainer","iosPicker","divider","iosSafeArea","iosButton","iosNativePicker","nonIosPicker","StyleSheet","create","alignSelf","alignItems","maxWidth","flex","flexDirection","justifyContent","paddingRight","position","bottom","left","right","maxHeight","opacity","top"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n View,\n StyleSheet,\n Text,\n Platform,\n ViewStyle,\n StyleProp,\n Dimensions,\n} from \"react-native\";\nimport { omit, pickBy, identity, isObject } from \"lodash\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport { Picker as NativePicker } from \"@react-native-picker/picker\";\n\nimport { withTheme } from \"../../theming\";\nimport Portal from \"../Portal/Portal\";\nimport Button from \"../DeprecatedButton\";\nimport Touchable from \"../Touchable\";\nimport type { Theme } from \"../../styles/DefaultTheme\";\nimport type { IconSlot } from \"../../interfaces/Icon\";\nimport {\n extractStyles,\n extractBorderAndMarginStyles,\n borderStyleNames,\n marginStyleNames,\n} from \"../../utilities\";\n\nexport interface PickerOption {\n value: string;\n label: string;\n}\n\nexport type PickerProps = {\n error?: any;\n placeholder?: string;\n disabled?: boolean;\n style?: StyleProp<ViewStyle> & { height?: number };\n value?: string;\n options: PickerOption[] | string[];\n onValueChange: (value: string, index: number) => void;\n defaultValue?: string;\n assistiveText?: string;\n label?: string;\n iconColor?: string;\n iconSize?: number;\n leftIconMode?: \"inset\" | \"outset\";\n leftIconName?: string;\n placeholderTextColor?: string;\n rightIconName?: string;\n type?: \"solid\" | \"underline\";\n theme: Theme;\n Icon: IconSlot[\"Icon\"];\n};\n\nfunction normalizeOptions(options: PickerProps[\"options\"]): PickerOption[] {\n if (options.length === 0) {\n return [];\n }\n\n if (typeof options[0] === (\"string\" || \"number\")) {\n return (options as string[]).map((option) => ({\n label: String(option),\n value: String(option),\n }));\n }\n\n if (\n isObject(options[0]) &&\n options[0].value !== null &&\n options[0].label !== null\n ) {\n return (options as PickerOption[]).map((option) => {\n return {\n label: String(option.label),\n value: String(option.value),\n };\n });\n }\n\n throw new Error(\n 'Picker options must be either an array of strings or array of { \"label\": string; \"value\": string; } objects.'\n );\n}\n\nconst { width: deviceWidth, height: deviceHeight } = Dimensions.get(\"screen\");\nconst isIos = Platform.OS === \"ios\";\nconst unstyledColor = \"rgba(165, 173, 183, 1)\";\nconst disabledColor = \"rgb(240, 240, 240)\";\nconst errorColor = \"rgba(255, 69, 100, 1)\";\n\nconst Picker: React.FC<PickerProps> = ({\n error,\n options = [],\n onValueChange,\n defaultValue,\n Icon,\n style,\n placeholder,\n value,\n disabled = false,\n theme,\n assistiveText,\n label,\n iconColor = unstyledColor,\n iconSize = 24,\n leftIconMode = \"inset\",\n leftIconName,\n placeholderTextColor = unstyledColor,\n rightIconName,\n type = \"solid\",\n}) => {\n const androidPickerRef = React.useRef<any | undefined>(undefined);\n\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n value || defaultValue\n );\n\n const [pickerVisible, setPickerVisible] = React.useState(false);\n\n const togglePickerVisible = () => {\n setPickerVisible(!pickerVisible);\n };\n\n React.useEffect(() => {\n if (value != null) {\n setInternalValue(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n if (defaultValue != null) {\n setInternalValue(defaultValue);\n }\n }, [defaultValue]);\n\n React.useEffect(() => {\n if (pickerVisible && androidPickerRef.current) {\n androidPickerRef?.current?.focus();\n }\n }, [pickerVisible, androidPickerRef]);\n\n const normalizedOptions = normalizeOptions(options);\n\n const pickerOptions = placeholder\n ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]\n : normalizedOptions;\n\n const { colors } = theme;\n\n const { viewStyles, textStyles } = extractStyles(style);\n\n const additionalBorderStyles = [\"backgroundColor\"];\n\n const additionalMarginStyles = [\n \"bottom\",\n \"height\",\n \"left\",\n \"maxHeight\",\n \"maxWidth\",\n \"minHeight\",\n \"minWidth\",\n \"overflow\",\n \"position\",\n \"right\",\n \"top\",\n \"width\",\n \"zIndex\",\n ];\n\n const {\n borderStyles: extractedBorderStyles,\n marginStyles: extractedMarginStyles,\n } = extractBorderAndMarginStyles(\n viewStyles,\n additionalBorderStyles,\n additionalMarginStyles\n );\n\n const borderStyles = {\n ...{\n ...(type === \"solid\"\n ? {\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n borderBottomRightRadius: 5,\n borderBottomLeftRadius: 5,\n borderTopWidth: 1,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n }\n : {}),\n borderBottomWidth: 1,\n borderColor: unstyledColor,\n borderStyle: \"solid\",\n },\n ...extractedBorderStyles,\n ...(error ? { borderColor: errorColor } : {}),\n ...(disabled\n ? { borderColor: \"transparent\", backgroundColor: disabledColor }\n : {}),\n };\n\n const marginStyles = {\n height: 60,\n ...extractedMarginStyles,\n };\n\n const stylesWithoutBordersAndMargins = omit(viewStyles, [\n ...borderStyleNames,\n ...marginStyleNames,\n ...additionalBorderStyles,\n ...additionalMarginStyles,\n ]);\n\n const selectedLabel =\n internalValue &&\n ((pickerOptions as unknown as PickerOption[]).find(\n (option) => option.value === internalValue\n )?.label ??\n internalValue);\n\n const labelText = label ? (\n <Text\n style={{\n textAlign: textStyles.textAlign,\n color: unstyledColor,\n fontSize: 12,\n paddingBottom: 4,\n }}\n >\n {label}\n </Text>\n ) : null;\n\n const leftIconOutset = leftIconMode === \"outset\";\n\n const leftIcon = leftIconName ? (\n <Icon\n name={leftIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: 4,\n marginLeft: 4,\n }}\n />\n ) : null;\n\n const rightIcon = rightIconName ? (\n <Icon\n name={rightIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: -10,\n marginLeft: 8,\n }}\n />\n ) : null;\n\n const textAlign = textStyles?.textAlign;\n\n const calculateLeftPadding = () => {\n if (leftIconOutset) {\n if (textAlign === \"center\") {\n return iconSize - Math.abs(8 - iconSize);\n }\n\n return iconSize + 8;\n }\n\n return 0;\n };\n\n const assistiveTextLabel = assistiveText ? (\n <Text\n style={{\n textAlign,\n width: \"100%\",\n paddingLeft: calculateLeftPadding(),\n color: unstyledColor,\n fontSize: 12,\n paddingTop: 4,\n }}\n >\n {assistiveText}\n </Text>\n ) : null;\n\n const primaryTextStyle = {\n color: unstyledColor,\n fontSize: 14,\n ...pickBy(textStyles, identity),\n ...(placeholder === internalValue ? { color: placeholderTextColor } : {}),\n ...(disabled ? { color: unstyledColor } : {}),\n };\n\n const handleValueChange = (newValue: string, itemIndex: number) => {\n if (!placeholder || itemIndex > 0) {\n onValueChange?.(newValue, itemIndex);\n }\n setInternalValue(newValue);\n };\n\n return (\n /* marginsContainer */\n <View style={[styles.marginsContainer, marginStyles]}>\n {/* touchableContainer */}\n <Touchable\n disabled={disabled}\n onPress={togglePickerVisible}\n style={styles.touchableContainer}\n >\n {/* outsetContainer */}\n <View\n pointerEvents=\"none\"\n style={[\n styles.outsetContainer,\n stylesWithoutBordersAndMargins,\n !leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {leftIcon}\n\n {/* insetContainer */}\n <View\n style={[\n styles.insetContainer,\n leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {/* primaryTextContainer */}\n <View style={styles.primaryTextContainer}>\n {labelText}\n\n <Text style={primaryTextStyle}>\n {String(selectedLabel ?? placeholder)}\n </Text>\n </View>\n\n {rightIcon}\n </View>\n </View>\n {assistiveTextLabel}\n </Touchable>\n\n {/* iosPicker */}\n {isIos && pickerVisible ? (\n <Portal>\n <View\n style={[\n styles.iosPicker,\n {\n backgroundColor: colors.divider,\n },\n ]}\n >\n <SafeAreaView style={styles.iosSafeArea}>\n <Button\n Icon={Icon}\n type=\"text\"\n onPress={togglePickerVisible}\n style={styles.iosButton}\n >\n {\"Close\"}\n </Button>\n\n <NativePicker\n style={styles.iosNativePicker}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n </SafeAreaView>\n </View>\n </Portal>\n ) : null}\n\n {/* nonIosPicker */}\n {!isIos && pickerVisible ? (\n <NativePicker\n enabled={pickerVisible}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n style={styles.nonIosPicker}\n ref={androidPickerRef}\n onBlur={() => setPickerVisible(false)}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n ) : null}\n </View>\n );\n};\n\nexport default withTheme(Picker);\n\nconst styles = StyleSheet.create({\n marginsContainer: {\n alignSelf: \"stretch\",\n alignItems: \"center\",\n width: \"100%\",\n maxWidth: deviceWidth,\n },\n touchableContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n alignSelf: \"stretch\",\n alignItems: \"center\",\n },\n outsetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n insetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingLeft: 12,\n paddingRight: 12,\n },\n primaryTextContainer: {\n flex: 1,\n },\n iosPicker: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n width: \"100%\",\n maxWidth: deviceWidth,\n maxHeight: deviceHeight,\n },\n iosSafeArea: {\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n maxWidth: deviceWidth,\n },\n iosButton: {\n alignSelf: \"flex-end\",\n },\n iosNativePicker: {\n backgroundColor: \"white\",\n },\n nonIosPicker: {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n maxWidth: deviceWidth,\n maxHeight: deviceHeight,\n },\n});\n"]}
@@ -46,6 +46,12 @@ const SEED_DATA = {
46
46
  label: "Shows Vertical Scroll Indicator",
47
47
  description: "Show or hide the vertical scroll indicator",
48
48
  defaultValue: true
49
+ }),
50
+ keyboardShouldPersistTaps: (0, _types.createTextEnumProp)({
51
+ label: "Allow Touch Events",
52
+ description: "Allows touch events on visible components to be processed while the keyboard is open",
53
+ defaultValue: "never",
54
+ options: ["never", "always"]
49
55
  })
50
56
  }
51
57
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["KeyboardAwareScrollView.ts"],"names":["SEED_DATA","name","tag","description","category","COMPONENT_TYPES","layout","props","viewIsInsideTabBar","label","enableAutomaticScroll","extraHeight","extraScrollHeight","enableResetScrollToCoords","keyboardOpeningTime","enableOnAndroid","showsVerticalScrollIndicator","defaultValue"],"mappings":";;;;;;;AAAA;;AAMO,MAAMA,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,4BADiB;AAEvBC,EAAAA,GAAG,EAAE,yBAFkB;AAGvBC,EAAAA,WAAW,EACT,mEAJqB;AAKvBC,EAAAA,QAAQ,EAAEC,uBAAgBC,MALH;AAMvBA,EAAAA,MAAM,EAAE,EANe;AAOvBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,kBAAkB,EAAE,iCAAqB;AACvCC,MAAAA,KAAK,EAAE,uBADgC;AAEvCN,MAAAA,WAAW,EAAE;AAF0B,KAArB,CADf;AAKLO,IAAAA,qBAAqB,EAAE,iCAAqB;AAC1CD,MAAAA,KAAK,EAAE,yBADmC;AAE1CN,MAAAA,WAAW,EACT;AAHwC,KAArB,CALlB;AAULQ,IAAAA,WAAW,EAAE,mCAAuB;AAClCF,MAAAA,KAAK,EAAE,cAD2B;AAElCN,MAAAA,WAAW,EAAE;AAFqB,KAAvB,CAVR;AAcLS,IAAAA,iBAAiB,EAAE,mCAAuB;AACxCH,MAAAA,KAAK,EAAE,qBADiC;AAExCN,MAAAA,WAAW,EACT;AAHsC,KAAvB,CAdd;AAmBLU,IAAAA,yBAAyB,EAAE,iCAAqB;AAC9CJ,MAAAA,KAAK,EAAE,oCADuC;AAE9CN,MAAAA,WAAW,EACT;AAH4C,KAArB,CAnBtB;AAwBLW,IAAAA,mBAAmB,EAAE,mCAAuB;AAC1CL,MAAAA,KAAK,EAAE,cADmC;AAE1CN,MAAAA,WAAW,EACT;AAHwC,KAAvB,CAxBhB;AA6BLY,IAAAA,eAAe,EAAE,iCAAqB;AACpCN,MAAAA,KAAK,EAAE,mBAD6B;AAEpCN,MAAAA,WAAW,EAAE;AAFuB,KAArB,CA7BZ;AAiCLa,IAAAA,4BAA4B,EAAE,iCAAqB;AACjDP,MAAAA,KAAK,EAAE,iCAD0C;AAEjDN,MAAAA,WAAW,EAAE,4CAFoC;AAGjDc,MAAAA,YAAY,EAAE;AAHmC,KAArB;AAjCzB;AAPgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n createStaticBoolProp,\n createStaticNumberProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Keyboard Aware Scroll View\",\n tag: \"KeyboardAwareScrollView\",\n description:\n \"View that moves pushes the content when virtual keyboard is open.\",\n category: COMPONENT_TYPES.layout,\n layout: {},\n props: {\n viewIsInsideTabBar: createStaticBoolProp({\n label: \"View Is Inside TabBar\",\n description: \"Adds an extra offset that represents the TabBarIOS height.\",\n }),\n enableAutomaticScroll: createStaticBoolProp({\n label: \"Enable Automatic Scroll\",\n description:\n \"When focus in TextInput will scroll the position, default is enabled\",\n }),\n extraHeight: createStaticNumberProp({\n label: \"Extra Height\",\n description: \"Adds an extra offset when focusing the TextInputs\",\n }),\n extraScrollHeight: createStaticNumberProp({\n label: \"Extra Scroll Height\",\n description:\n \"Adds an extra offset to the keyboard. Useful if you want to stick elements above the keyboard\",\n }),\n enableResetScrollToCoords: createStaticBoolProp({\n label: \"Enable Reset Scroll To Coordinates\",\n description:\n \"Lets the user enable or disable automatic resetScrollToCoords\",\n }),\n keyboardOpeningTime: createStaticNumberProp({\n label: \"Opening Time\",\n description:\n \"Sets the delay time before scrolling to new position after keyboard opening, default is 250\",\n }),\n enableOnAndroid: createStaticBoolProp({\n label: \"Enable On Android\",\n description: \"Enable Android Support\",\n }),\n showsVerticalScrollIndicator: createStaticBoolProp({\n label: \"Shows Vertical Scroll Indicator\",\n description: \"Show or hide the vertical scroll indicator\",\n defaultValue: true,\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["KeyboardAwareScrollView.ts"],"names":["SEED_DATA","name","tag","description","category","COMPONENT_TYPES","layout","props","viewIsInsideTabBar","label","enableAutomaticScroll","extraHeight","extraScrollHeight","enableResetScrollToCoords","keyboardOpeningTime","enableOnAndroid","showsVerticalScrollIndicator","defaultValue","keyboardShouldPersistTaps","options"],"mappings":";;;;;;;AAAA;;AAOO,MAAMA,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,4BADiB;AAEvBC,EAAAA,GAAG,EAAE,yBAFkB;AAGvBC,EAAAA,WAAW,EACT,mEAJqB;AAKvBC,EAAAA,QAAQ,EAAEC,uBAAgBC,MALH;AAMvBA,EAAAA,MAAM,EAAE,EANe;AAOvBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,kBAAkB,EAAE,iCAAqB;AACvCC,MAAAA,KAAK,EAAE,uBADgC;AAEvCN,MAAAA,WAAW,EAAE;AAF0B,KAArB,CADf;AAKLO,IAAAA,qBAAqB,EAAE,iCAAqB;AAC1CD,MAAAA,KAAK,EAAE,yBADmC;AAE1CN,MAAAA,WAAW,EACT;AAHwC,KAArB,CALlB;AAULQ,IAAAA,WAAW,EAAE,mCAAuB;AAClCF,MAAAA,KAAK,EAAE,cAD2B;AAElCN,MAAAA,WAAW,EAAE;AAFqB,KAAvB,CAVR;AAcLS,IAAAA,iBAAiB,EAAE,mCAAuB;AACxCH,MAAAA,KAAK,EAAE,qBADiC;AAExCN,MAAAA,WAAW,EACT;AAHsC,KAAvB,CAdd;AAmBLU,IAAAA,yBAAyB,EAAE,iCAAqB;AAC9CJ,MAAAA,KAAK,EAAE,oCADuC;AAE9CN,MAAAA,WAAW,EACT;AAH4C,KAArB,CAnBtB;AAwBLW,IAAAA,mBAAmB,EAAE,mCAAuB;AAC1CL,MAAAA,KAAK,EAAE,cADmC;AAE1CN,MAAAA,WAAW,EACT;AAHwC,KAAvB,CAxBhB;AA6BLY,IAAAA,eAAe,EAAE,iCAAqB;AACpCN,MAAAA,KAAK,EAAE,mBAD6B;AAEpCN,MAAAA,WAAW,EAAE;AAFuB,KAArB,CA7BZ;AAiCLa,IAAAA,4BAA4B,EAAE,iCAAqB;AACjDP,MAAAA,KAAK,EAAE,iCAD0C;AAEjDN,MAAAA,WAAW,EAAE,4CAFoC;AAGjDc,MAAAA,YAAY,EAAE;AAHmC,KAArB,CAjCzB;AAsCLC,IAAAA,yBAAyB,EAAE,+BAAmB;AAC5CT,MAAAA,KAAK,EAAE,oBADqC;AAE5CN,MAAAA,WAAW,EACT,sFAH0C;AAI5Cc,MAAAA,YAAY,EAAE,OAJ8B;AAK5CE,MAAAA,OAAO,EAAE,CAAC,OAAD,EAAU,QAAV;AALmC,KAAnB;AAtCtB;AAPgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n createStaticBoolProp,\n createStaticNumberProp,\n createTextEnumProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Keyboard Aware Scroll View\",\n tag: \"KeyboardAwareScrollView\",\n description:\n \"View that moves pushes the content when virtual keyboard is open.\",\n category: COMPONENT_TYPES.layout,\n layout: {},\n props: {\n viewIsInsideTabBar: createStaticBoolProp({\n label: \"View Is Inside TabBar\",\n description: \"Adds an extra offset that represents the TabBarIOS height.\",\n }),\n enableAutomaticScroll: createStaticBoolProp({\n label: \"Enable Automatic Scroll\",\n description:\n \"When focus in TextInput will scroll the position, default is enabled\",\n }),\n extraHeight: createStaticNumberProp({\n label: \"Extra Height\",\n description: \"Adds an extra offset when focusing the TextInputs\",\n }),\n extraScrollHeight: createStaticNumberProp({\n label: \"Extra Scroll Height\",\n description:\n \"Adds an extra offset to the keyboard. Useful if you want to stick elements above the keyboard\",\n }),\n enableResetScrollToCoords: createStaticBoolProp({\n label: \"Enable Reset Scroll To Coordinates\",\n description:\n \"Lets the user enable or disable automatic resetScrollToCoords\",\n }),\n keyboardOpeningTime: createStaticNumberProp({\n label: \"Opening Time\",\n description:\n \"Sets the delay time before scrolling to new position after keyboard opening, default is 250\",\n }),\n enableOnAndroid: createStaticBoolProp({\n label: \"Enable On Android\",\n description: \"Enable Android Support\",\n }),\n showsVerticalScrollIndicator: createStaticBoolProp({\n label: \"Shows Vertical Scroll Indicator\",\n description: \"Show or hide the vertical scroll indicator\",\n defaultValue: true,\n }),\n keyboardShouldPersistTaps: createTextEnumProp({\n label: \"Allow Touch Events\",\n description:\n \"Allows touch events on visible components to be processed while the keyboard is open\",\n defaultValue: \"never\",\n options: [\"never\", \"always\"],\n }),\n },\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Text, Platform } from "react-native";
2
+ import { View, StyleSheet, Text, Platform, Dimensions } from "react-native";
3
3
  import { omit, pickBy, identity, isObject } from "lodash";
4
4
  import { SafeAreaView } from "react-native-safe-area-context";
5
5
  import { Picker as NativePicker } from "@react-native-picker/picker";
@@ -33,6 +33,11 @@ function normalizeOptions(options) {
33
33
  throw new Error('Picker options must be either an array of strings or array of { "label": string; "value": string; } objects.');
34
34
  }
35
35
 
36
+ const {
37
+ width: deviceWidth,
38
+ height: deviceHeight
39
+ } = Dimensions.get("screen");
40
+ const isIos = Platform.OS === "ios";
36
41
  const unstyledColor = "rgba(165, 173, 183, 1)";
37
42
  const disabledColor = "rgb(240, 240, 240)";
38
43
  const errorColor = "rgba(255, 69, 100, 1)";
@@ -61,8 +66,14 @@ const Picker = _ref => {
61
66
  rightIconName,
62
67
  type = "solid"
63
68
  } = _ref;
69
+ const androidPickerRef = React.useRef(undefined);
64
70
  const [internalValue, setInternalValue] = React.useState(value || defaultValue);
65
- const [pickerVisible, togglePickerVisible] = React.useReducer(state => !state, false);
71
+ const [pickerVisible, setPickerVisible] = React.useState(false);
72
+
73
+ const togglePickerVisible = () => {
74
+ setPickerVisible(!pickerVisible);
75
+ };
76
+
66
77
  React.useEffect(() => {
67
78
  if (value != null) {
68
79
  setInternalValue(value);
@@ -73,6 +84,13 @@ const Picker = _ref => {
73
84
  setInternalValue(defaultValue);
74
85
  }
75
86
  }, [defaultValue]);
87
+ React.useEffect(() => {
88
+ if (pickerVisible && androidPickerRef.current) {
89
+ var _androidPickerRef$cur;
90
+
91
+ androidPickerRef === null || androidPickerRef === void 0 ? void 0 : (_androidPickerRef$cur = androidPickerRef.current) === null || _androidPickerRef$cur === void 0 ? void 0 : _androidPickerRef$cur.focus();
92
+ }
93
+ }, [pickerVisible, androidPickerRef]);
76
94
  const normalizedOptions = normalizeOptions(options);
77
95
  const pickerOptions = placeholder ? [{
78
96
  value: placeholder,
@@ -117,7 +135,6 @@ const Picker = _ref => {
117
135
  height: 60,
118
136
  ...extractedMarginStyles
119
137
  };
120
- const platform = Platform.OS;
121
138
  const stylesWithoutBordersAndMargins = omit(viewStyles, [...borderStyleNames, ...marginStyleNames, ...additionalBorderStyles, ...additionalMarginStyles]);
122
139
  const selectedLabel = internalValue && ((_find$label = (_find = pickerOptions.find(option => option.value === internalValue)) === null || _find === void 0 ? void 0 : _find.label) !== null && _find$label !== void 0 ? _find$label : internalValue);
123
140
  const labelText = label ? /*#__PURE__*/React.createElement(Text, {
@@ -210,7 +227,7 @@ const Picker = _ref => {
210
227
  style: styles.primaryTextContainer
211
228
  }, labelText, /*#__PURE__*/React.createElement(Text, {
212
229
  style: primaryTextStyle
213
- }, String(selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : placeholder))), rightIcon)), assistiveTextLabel), platform === "ios" && pickerVisible ? /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(View, {
230
+ }, String(selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : placeholder))), rightIcon)), assistiveTextLabel), isIos && pickerVisible ? /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(View, {
214
231
  style: [styles.iosPicker, {
215
232
  backgroundColor: colors.divider
216
233
  }]
@@ -229,11 +246,13 @@ const Picker = _ref => {
229
246
  label: option.label,
230
247
  value: option.value,
231
248
  key: option.value
232
- })))))) : null, platform !== "ios" ? /*#__PURE__*/React.createElement(NativePicker, {
233
- enabled: !disabled,
249
+ })))))) : null, !isIos && pickerVisible ? /*#__PURE__*/React.createElement(NativePicker, {
250
+ enabled: pickerVisible,
234
251
  selectedValue: internalValue,
235
252
  onValueChange: handleValueChange,
236
- style: styles.nonIosPicker
253
+ style: styles.nonIosPicker,
254
+ ref: androidPickerRef,
255
+ onBlur: () => setPickerVisible(false)
237
256
  }, pickerOptions.map(option => /*#__PURE__*/React.createElement(NativePicker.Item, {
238
257
  label: option.label,
239
258
  value: option.value,
@@ -246,7 +265,9 @@ export default withTheme(Picker);
246
265
  const styles = StyleSheet.create({
247
266
  marginsContainer: {
248
267
  alignSelf: "stretch",
249
- alignItems: "center"
268
+ alignItems: "center",
269
+ width: "100%",
270
+ maxWidth: deviceWidth
250
271
  },
251
272
  touchableContainer: {
252
273
  flex: 1,
@@ -282,12 +303,16 @@ const styles = StyleSheet.create({
282
303
  left: 0,
283
304
  right: 0,
284
305
  flexDirection: "row",
285
- justifyContent: "center"
306
+ justifyContent: "center",
307
+ width: "100%",
308
+ maxWidth: deviceWidth,
309
+ maxHeight: deviceHeight
286
310
  },
287
311
  iosSafeArea: {
288
312
  backgroundColor: "white",
289
313
  flexDirection: "column",
290
- width: "100%"
314
+ width: "100%",
315
+ maxWidth: deviceWidth
291
316
  },
292
317
  iosButton: {
293
318
  alignSelf: "flex-end"
@@ -302,7 +327,9 @@ const styles = StyleSheet.create({
302
327
  left: 0,
303
328
  right: 0,
304
329
  bottom: 0,
305
- width: "100%"
330
+ width: "100%",
331
+ maxWidth: deviceWidth,
332
+ maxHeight: deviceHeight
306
333
  }
307
334
  });
308
335
  //# sourceMappingURL=Picker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Picker.tsx"],"names":["React","View","StyleSheet","Text","Platform","omit","pickBy","identity","isObject","SafeAreaView","Picker","NativePicker","withTheme","Portal","Button","Touchable","extractStyles","extractBorderAndMarginStyles","borderStyleNames","marginStyleNames","normalizeOptions","options","length","map","option","label","String","value","Error","unstyledColor","disabledColor","errorColor","error","onValueChange","defaultValue","Icon","style","placeholder","disabled","theme","assistiveText","iconColor","iconSize","leftIconMode","leftIconName","placeholderTextColor","rightIconName","type","internalValue","setInternalValue","useState","pickerVisible","togglePickerVisible","useReducer","state","useEffect","normalizedOptions","pickerOptions","colors","viewStyles","textStyles","additionalBorderStyles","additionalMarginStyles","borderStyles","extractedBorderStyles","marginStyles","extractedMarginStyles","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderRightWidth","borderLeftWidth","borderBottomWidth","borderColor","borderStyle","backgroundColor","height","platform","OS","stylesWithoutBordersAndMargins","selectedLabel","find","labelText","textAlign","color","fontSize","paddingBottom","leftIconOutset","leftIcon","marginRight","marginLeft","rightIcon","calculateLeftPadding","Math","abs","assistiveTextLabel","width","paddingLeft","paddingTop","primaryTextStyle","handleValueChange","newValue","itemIndex","styles","marginsContainer","touchableContainer","outsetContainer","insetContainer","primaryTextContainer","iosPicker","divider","iosSafeArea","iosButton","iosNativePicker","nonIosPicker","create","alignSelf","alignItems","flex","flexDirection","justifyContent","paddingRight","position","bottom","left","right","opacity","top"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n View,\n StyleSheet,\n Text,\n Platform,\n ViewStyle,\n StyleProp,\n} from \"react-native\";\nimport { omit, pickBy, identity, isObject } from \"lodash\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport { Picker as NativePicker } from \"@react-native-picker/picker\";\n\nimport { withTheme } from \"../../theming\";\nimport Portal from \"../Portal/Portal\";\nimport Button from \"../DeprecatedButton\";\nimport Touchable from \"../Touchable\";\nimport type { Theme } from \"../../styles/DefaultTheme\";\nimport type { IconSlot } from \"../../interfaces/Icon\";\nimport {\n extractStyles,\n extractBorderAndMarginStyles,\n borderStyleNames,\n marginStyleNames,\n} from \"../../utilities\";\n\nexport interface PickerOption {\n value: string;\n label: string;\n}\n\nexport type PickerProps = {\n error?: any;\n placeholder?: string;\n disabled?: boolean;\n style?: StyleProp<ViewStyle> & { height?: number };\n value?: string;\n options: PickerOption[] | string[];\n onValueChange: (value: string, index: number) => void;\n defaultValue?: string;\n assistiveText?: string;\n label?: string;\n iconColor?: string;\n iconSize?: number;\n leftIconMode?: \"inset\" | \"outset\";\n leftIconName?: string;\n placeholderTextColor?: string;\n rightIconName?: string;\n type?: \"solid\" | \"underline\";\n theme: Theme;\n Icon: IconSlot[\"Icon\"];\n};\n\nfunction normalizeOptions(options: PickerProps[\"options\"]): PickerOption[] {\n if (options.length === 0) {\n return [];\n }\n\n if (typeof options[0] === (\"string\" || \"number\")) {\n return (options as string[]).map((option) => ({\n label: String(option),\n value: String(option),\n }));\n }\n\n if (\n isObject(options[0]) &&\n options[0].value !== null &&\n options[0].label !== null\n ) {\n return (options as PickerOption[]).map((option) => {\n return {\n label: String(option.label),\n value: String(option.value),\n };\n });\n }\n\n throw new Error(\n 'Picker options must be either an array of strings or array of { \"label\": string; \"value\": string; } objects.'\n );\n}\n\nconst unstyledColor = \"rgba(165, 173, 183, 1)\";\nconst disabledColor = \"rgb(240, 240, 240)\";\nconst errorColor = \"rgba(255, 69, 100, 1)\";\n\nconst Picker: React.FC<PickerProps> = ({\n error,\n options = [],\n onValueChange,\n defaultValue,\n Icon,\n style,\n placeholder,\n value,\n disabled = false,\n theme,\n assistiveText,\n label,\n iconColor = unstyledColor,\n iconSize = 24,\n leftIconMode = \"inset\",\n leftIconName,\n placeholderTextColor = unstyledColor,\n rightIconName,\n type = \"solid\",\n}) => {\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n value || defaultValue\n );\n\n const [pickerVisible, togglePickerVisible] = React.useReducer(\n (state) => !state,\n false\n );\n\n React.useEffect(() => {\n if (value != null) {\n setInternalValue(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n if (defaultValue != null) {\n setInternalValue(defaultValue);\n }\n }, [defaultValue]);\n\n const normalizedOptions = normalizeOptions(options);\n\n const pickerOptions = placeholder\n ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]\n : normalizedOptions;\n\n const { colors } = theme;\n\n const { viewStyles, textStyles } = extractStyles(style);\n\n const additionalBorderStyles = [\"backgroundColor\"];\n\n const additionalMarginStyles = [\n \"bottom\",\n \"height\",\n \"left\",\n \"maxHeight\",\n \"maxWidth\",\n \"minHeight\",\n \"minWidth\",\n \"overflow\",\n \"position\",\n \"right\",\n \"top\",\n \"width\",\n \"zIndex\",\n ];\n\n const {\n borderStyles: extractedBorderStyles,\n marginStyles: extractedMarginStyles,\n } = extractBorderAndMarginStyles(\n viewStyles,\n additionalBorderStyles,\n additionalMarginStyles\n );\n\n const borderStyles = {\n ...{\n ...(type === \"solid\"\n ? {\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n borderBottomRightRadius: 5,\n borderBottomLeftRadius: 5,\n borderTopWidth: 1,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n }\n : {}),\n borderBottomWidth: 1,\n borderColor: unstyledColor,\n borderStyle: \"solid\",\n },\n ...extractedBorderStyles,\n ...(error ? { borderColor: errorColor } : {}),\n ...(disabled\n ? { borderColor: \"transparent\", backgroundColor: disabledColor }\n : {}),\n };\n\n const marginStyles = {\n height: 60,\n ...extractedMarginStyles,\n };\n\n const platform = Platform.OS;\n\n const stylesWithoutBordersAndMargins = omit(viewStyles, [\n ...borderStyleNames,\n ...marginStyleNames,\n ...additionalBorderStyles,\n ...additionalMarginStyles,\n ]);\n\n const selectedLabel =\n internalValue &&\n ((pickerOptions as unknown as PickerOption[]).find(\n (option) => option.value === internalValue\n )?.label ??\n internalValue);\n\n const labelText = label ? (\n <Text\n style={{\n textAlign: textStyles.textAlign,\n color: unstyledColor,\n fontSize: 12,\n paddingBottom: 4,\n }}\n >\n {label}\n </Text>\n ) : null;\n\n const leftIconOutset = leftIconMode === \"outset\";\n\n const leftIcon = leftIconName ? (\n <Icon\n name={leftIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: 4,\n marginLeft: 4,\n }}\n />\n ) : null;\n\n const rightIcon = rightIconName ? (\n <Icon\n name={rightIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: -10,\n marginLeft: 8,\n }}\n />\n ) : null;\n\n const textAlign = textStyles?.textAlign;\n\n const calculateLeftPadding = () => {\n if (leftIconOutset) {\n if (textAlign === \"center\") {\n return iconSize - Math.abs(8 - iconSize);\n }\n\n return iconSize + 8;\n }\n\n return 0;\n };\n\n const assistiveTextLabel = assistiveText ? (\n <Text\n style={{\n textAlign,\n width: \"100%\",\n paddingLeft: calculateLeftPadding(),\n color: unstyledColor,\n fontSize: 12,\n paddingTop: 4,\n }}\n >\n {assistiveText}\n </Text>\n ) : null;\n\n const primaryTextStyle = {\n color: unstyledColor,\n fontSize: 14,\n ...pickBy(textStyles, identity),\n ...(placeholder === internalValue ? { color: placeholderTextColor } : {}),\n ...(disabled ? { color: unstyledColor } : {}),\n };\n\n const handleValueChange = (newValue: string, itemIndex: number) => {\n if (!placeholder || itemIndex > 0) {\n onValueChange?.(newValue, itemIndex);\n }\n setInternalValue(newValue);\n };\n\n return (\n /* marginsContainer */\n <View style={[styles.marginsContainer, marginStyles]}>\n {/* touchableContainer */}\n <Touchable\n disabled={disabled}\n onPress={togglePickerVisible}\n style={styles.touchableContainer}\n >\n {/* outsetContainer */}\n <View\n pointerEvents=\"none\"\n style={[\n styles.outsetContainer,\n stylesWithoutBordersAndMargins,\n !leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {leftIcon}\n\n {/* insetContainer */}\n <View\n style={[\n styles.insetContainer,\n leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {/* primaryTextContainer */}\n <View style={styles.primaryTextContainer}>\n {labelText}\n\n <Text style={primaryTextStyle}>\n {String(selectedLabel ?? placeholder)}\n </Text>\n </View>\n\n {rightIcon}\n </View>\n </View>\n {assistiveTextLabel}\n </Touchable>\n\n {/* iosPicker */}\n {platform === \"ios\" && pickerVisible ? (\n <Portal>\n <View\n style={[\n styles.iosPicker,\n {\n backgroundColor: colors.divider,\n },\n ]}\n >\n <SafeAreaView style={styles.iosSafeArea}>\n <Button\n Icon={Icon}\n type=\"text\"\n onPress={togglePickerVisible}\n style={styles.iosButton}\n >\n {\"Close\"}\n </Button>\n\n <NativePicker\n style={styles.iosNativePicker}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n </SafeAreaView>\n </View>\n </Portal>\n ) : null}\n\n {/* nonIosPicker */}\n {platform !== \"ios\" ? (\n <NativePicker\n enabled={!disabled}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n style={styles.nonIosPicker}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n ) : null}\n </View>\n );\n};\n\nexport default withTheme(Picker);\n\nconst styles = StyleSheet.create({\n marginsContainer: {\n alignSelf: \"stretch\",\n alignItems: \"center\",\n },\n touchableContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n alignSelf: \"stretch\",\n alignItems: \"center\",\n },\n outsetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n insetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingLeft: 12,\n paddingRight: 12,\n },\n primaryTextContainer: {\n flex: 1,\n },\n iosPicker: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n },\n iosSafeArea: {\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n },\n iosButton: {\n alignSelf: \"flex-end\",\n },\n iosNativePicker: {\n backgroundColor: \"white\",\n },\n nonIosPicker: {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n },\n});\n"]}
1
+ {"version":3,"sources":["Picker.tsx"],"names":["React","View","StyleSheet","Text","Platform","Dimensions","omit","pickBy","identity","isObject","SafeAreaView","Picker","NativePicker","withTheme","Portal","Button","Touchable","extractStyles","extractBorderAndMarginStyles","borderStyleNames","marginStyleNames","normalizeOptions","options","length","map","option","label","String","value","Error","width","deviceWidth","height","deviceHeight","get","isIos","OS","unstyledColor","disabledColor","errorColor","error","onValueChange","defaultValue","Icon","style","placeholder","disabled","theme","assistiveText","iconColor","iconSize","leftIconMode","leftIconName","placeholderTextColor","rightIconName","type","androidPickerRef","useRef","undefined","internalValue","setInternalValue","useState","pickerVisible","setPickerVisible","togglePickerVisible","useEffect","current","focus","normalizedOptions","pickerOptions","colors","viewStyles","textStyles","additionalBorderStyles","additionalMarginStyles","borderStyles","extractedBorderStyles","marginStyles","extractedMarginStyles","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderTopWidth","borderRightWidth","borderLeftWidth","borderBottomWidth","borderColor","borderStyle","backgroundColor","stylesWithoutBordersAndMargins","selectedLabel","find","labelText","textAlign","color","fontSize","paddingBottom","leftIconOutset","leftIcon","marginRight","marginLeft","rightIcon","calculateLeftPadding","Math","abs","assistiveTextLabel","paddingLeft","paddingTop","primaryTextStyle","handleValueChange","newValue","itemIndex","styles","marginsContainer","touchableContainer","outsetContainer","insetContainer","primaryTextContainer","iosPicker","divider","iosSafeArea","iosButton","iosNativePicker","nonIosPicker","create","alignSelf","alignItems","maxWidth","flex","flexDirection","justifyContent","paddingRight","position","bottom","left","right","maxHeight","opacity","top"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n View,\n StyleSheet,\n Text,\n Platform,\n ViewStyle,\n StyleProp,\n Dimensions,\n} from \"react-native\";\nimport { omit, pickBy, identity, isObject } from \"lodash\";\nimport { SafeAreaView } from \"react-native-safe-area-context\";\nimport { Picker as NativePicker } from \"@react-native-picker/picker\";\n\nimport { withTheme } from \"../../theming\";\nimport Portal from \"../Portal/Portal\";\nimport Button from \"../DeprecatedButton\";\nimport Touchable from \"../Touchable\";\nimport type { Theme } from \"../../styles/DefaultTheme\";\nimport type { IconSlot } from \"../../interfaces/Icon\";\nimport {\n extractStyles,\n extractBorderAndMarginStyles,\n borderStyleNames,\n marginStyleNames,\n} from \"../../utilities\";\n\nexport interface PickerOption {\n value: string;\n label: string;\n}\n\nexport type PickerProps = {\n error?: any;\n placeholder?: string;\n disabled?: boolean;\n style?: StyleProp<ViewStyle> & { height?: number };\n value?: string;\n options: PickerOption[] | string[];\n onValueChange: (value: string, index: number) => void;\n defaultValue?: string;\n assistiveText?: string;\n label?: string;\n iconColor?: string;\n iconSize?: number;\n leftIconMode?: \"inset\" | \"outset\";\n leftIconName?: string;\n placeholderTextColor?: string;\n rightIconName?: string;\n type?: \"solid\" | \"underline\";\n theme: Theme;\n Icon: IconSlot[\"Icon\"];\n};\n\nfunction normalizeOptions(options: PickerProps[\"options\"]): PickerOption[] {\n if (options.length === 0) {\n return [];\n }\n\n if (typeof options[0] === (\"string\" || \"number\")) {\n return (options as string[]).map((option) => ({\n label: String(option),\n value: String(option),\n }));\n }\n\n if (\n isObject(options[0]) &&\n options[0].value !== null &&\n options[0].label !== null\n ) {\n return (options as PickerOption[]).map((option) => {\n return {\n label: String(option.label),\n value: String(option.value),\n };\n });\n }\n\n throw new Error(\n 'Picker options must be either an array of strings or array of { \"label\": string; \"value\": string; } objects.'\n );\n}\n\nconst { width: deviceWidth, height: deviceHeight } = Dimensions.get(\"screen\");\nconst isIos = Platform.OS === \"ios\";\nconst unstyledColor = \"rgba(165, 173, 183, 1)\";\nconst disabledColor = \"rgb(240, 240, 240)\";\nconst errorColor = \"rgba(255, 69, 100, 1)\";\n\nconst Picker: React.FC<PickerProps> = ({\n error,\n options = [],\n onValueChange,\n defaultValue,\n Icon,\n style,\n placeholder,\n value,\n disabled = false,\n theme,\n assistiveText,\n label,\n iconColor = unstyledColor,\n iconSize = 24,\n leftIconMode = \"inset\",\n leftIconName,\n placeholderTextColor = unstyledColor,\n rightIconName,\n type = \"solid\",\n}) => {\n const androidPickerRef = React.useRef<any | undefined>(undefined);\n\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n value || defaultValue\n );\n\n const [pickerVisible, setPickerVisible] = React.useState(false);\n\n const togglePickerVisible = () => {\n setPickerVisible(!pickerVisible);\n };\n\n React.useEffect(() => {\n if (value != null) {\n setInternalValue(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n if (defaultValue != null) {\n setInternalValue(defaultValue);\n }\n }, [defaultValue]);\n\n React.useEffect(() => {\n if (pickerVisible && androidPickerRef.current) {\n androidPickerRef?.current?.focus();\n }\n }, [pickerVisible, androidPickerRef]);\n\n const normalizedOptions = normalizeOptions(options);\n\n const pickerOptions = placeholder\n ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]\n : normalizedOptions;\n\n const { colors } = theme;\n\n const { viewStyles, textStyles } = extractStyles(style);\n\n const additionalBorderStyles = [\"backgroundColor\"];\n\n const additionalMarginStyles = [\n \"bottom\",\n \"height\",\n \"left\",\n \"maxHeight\",\n \"maxWidth\",\n \"minHeight\",\n \"minWidth\",\n \"overflow\",\n \"position\",\n \"right\",\n \"top\",\n \"width\",\n \"zIndex\",\n ];\n\n const {\n borderStyles: extractedBorderStyles,\n marginStyles: extractedMarginStyles,\n } = extractBorderAndMarginStyles(\n viewStyles,\n additionalBorderStyles,\n additionalMarginStyles\n );\n\n const borderStyles = {\n ...{\n ...(type === \"solid\"\n ? {\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n borderBottomRightRadius: 5,\n borderBottomLeftRadius: 5,\n borderTopWidth: 1,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n }\n : {}),\n borderBottomWidth: 1,\n borderColor: unstyledColor,\n borderStyle: \"solid\",\n },\n ...extractedBorderStyles,\n ...(error ? { borderColor: errorColor } : {}),\n ...(disabled\n ? { borderColor: \"transparent\", backgroundColor: disabledColor }\n : {}),\n };\n\n const marginStyles = {\n height: 60,\n ...extractedMarginStyles,\n };\n\n const stylesWithoutBordersAndMargins = omit(viewStyles, [\n ...borderStyleNames,\n ...marginStyleNames,\n ...additionalBorderStyles,\n ...additionalMarginStyles,\n ]);\n\n const selectedLabel =\n internalValue &&\n ((pickerOptions as unknown as PickerOption[]).find(\n (option) => option.value === internalValue\n )?.label ??\n internalValue);\n\n const labelText = label ? (\n <Text\n style={{\n textAlign: textStyles.textAlign,\n color: unstyledColor,\n fontSize: 12,\n paddingBottom: 4,\n }}\n >\n {label}\n </Text>\n ) : null;\n\n const leftIconOutset = leftIconMode === \"outset\";\n\n const leftIcon = leftIconName ? (\n <Icon\n name={leftIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: 4,\n marginLeft: 4,\n }}\n />\n ) : null;\n\n const rightIcon = rightIconName ? (\n <Icon\n name={rightIconName}\n color={disabled ? unstyledColor : iconColor}\n size={iconSize}\n style={{\n marginRight: -10,\n marginLeft: 8,\n }}\n />\n ) : null;\n\n const textAlign = textStyles?.textAlign;\n\n const calculateLeftPadding = () => {\n if (leftIconOutset) {\n if (textAlign === \"center\") {\n return iconSize - Math.abs(8 - iconSize);\n }\n\n return iconSize + 8;\n }\n\n return 0;\n };\n\n const assistiveTextLabel = assistiveText ? (\n <Text\n style={{\n textAlign,\n width: \"100%\",\n paddingLeft: calculateLeftPadding(),\n color: unstyledColor,\n fontSize: 12,\n paddingTop: 4,\n }}\n >\n {assistiveText}\n </Text>\n ) : null;\n\n const primaryTextStyle = {\n color: unstyledColor,\n fontSize: 14,\n ...pickBy(textStyles, identity),\n ...(placeholder === internalValue ? { color: placeholderTextColor } : {}),\n ...(disabled ? { color: unstyledColor } : {}),\n };\n\n const handleValueChange = (newValue: string, itemIndex: number) => {\n if (!placeholder || itemIndex > 0) {\n onValueChange?.(newValue, itemIndex);\n }\n setInternalValue(newValue);\n };\n\n return (\n /* marginsContainer */\n <View style={[styles.marginsContainer, marginStyles]}>\n {/* touchableContainer */}\n <Touchable\n disabled={disabled}\n onPress={togglePickerVisible}\n style={styles.touchableContainer}\n >\n {/* outsetContainer */}\n <View\n pointerEvents=\"none\"\n style={[\n styles.outsetContainer,\n stylesWithoutBordersAndMargins,\n !leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {leftIcon}\n\n {/* insetContainer */}\n <View\n style={[\n styles.insetContainer,\n leftIconOutset ? (borderStyles as PickerProps[\"style\"]) : {},\n ]}\n >\n {/* primaryTextContainer */}\n <View style={styles.primaryTextContainer}>\n {labelText}\n\n <Text style={primaryTextStyle}>\n {String(selectedLabel ?? placeholder)}\n </Text>\n </View>\n\n {rightIcon}\n </View>\n </View>\n {assistiveTextLabel}\n </Touchable>\n\n {/* iosPicker */}\n {isIos && pickerVisible ? (\n <Portal>\n <View\n style={[\n styles.iosPicker,\n {\n backgroundColor: colors.divider,\n },\n ]}\n >\n <SafeAreaView style={styles.iosSafeArea}>\n <Button\n Icon={Icon}\n type=\"text\"\n onPress={togglePickerVisible}\n style={styles.iosButton}\n >\n {\"Close\"}\n </Button>\n\n <NativePicker\n style={styles.iosNativePicker}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n </SafeAreaView>\n </View>\n </Portal>\n ) : null}\n\n {/* nonIosPicker */}\n {!isIos && pickerVisible ? (\n <NativePicker\n enabled={pickerVisible}\n selectedValue={internalValue}\n onValueChange={handleValueChange}\n style={styles.nonIosPicker}\n ref={androidPickerRef}\n onBlur={() => setPickerVisible(false)}\n >\n {(pickerOptions as unknown as PickerOption[]).map((option) => (\n <NativePicker.Item\n label={option.label}\n value={option.value}\n key={option.value}\n />\n ))}\n </NativePicker>\n ) : null}\n </View>\n );\n};\n\nexport default withTheme(Picker);\n\nconst styles = StyleSheet.create({\n marginsContainer: {\n alignSelf: \"stretch\",\n alignItems: \"center\",\n width: \"100%\",\n maxWidth: deviceWidth,\n },\n touchableContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n alignSelf: \"stretch\",\n alignItems: \"center\",\n },\n outsetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n insetContainer: {\n flex: 1,\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingLeft: 12,\n paddingRight: 12,\n },\n primaryTextContainer: {\n flex: 1,\n },\n iosPicker: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n flexDirection: \"row\",\n justifyContent: \"center\",\n width: \"100%\",\n maxWidth: deviceWidth,\n maxHeight: deviceHeight,\n },\n iosSafeArea: {\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n maxWidth: deviceWidth,\n },\n iosButton: {\n alignSelf: \"flex-end\",\n },\n iosNativePicker: {\n backgroundColor: \"white\",\n },\n nonIosPicker: {\n opacity: 0,\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: \"100%\",\n maxWidth: deviceWidth,\n maxHeight: deviceHeight,\n },\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { COMPONENT_TYPES, createStaticBoolProp, createStaticNumberProp } from "@draftbit/types";
1
+ import { COMPONENT_TYPES, createStaticBoolProp, createStaticNumberProp, createTextEnumProp } from "@draftbit/types";
2
2
  export const SEED_DATA = {
3
3
  name: "Keyboard Aware Scroll View",
4
4
  tag: "KeyboardAwareScrollView",
@@ -38,6 +38,12 @@ export const SEED_DATA = {
38
38
  label: "Shows Vertical Scroll Indicator",
39
39
  description: "Show or hide the vertical scroll indicator",
40
40
  defaultValue: true
41
+ }),
42
+ keyboardShouldPersistTaps: createTextEnumProp({
43
+ label: "Allow Touch Events",
44
+ description: "Allows touch events on visible components to be processed while the keyboard is open",
45
+ defaultValue: "never",
46
+ options: ["never", "always"]
41
47
  })
42
48
  }
43
49
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["KeyboardAwareScrollView.ts"],"names":["COMPONENT_TYPES","createStaticBoolProp","createStaticNumberProp","SEED_DATA","name","tag","description","category","layout","props","viewIsInsideTabBar","label","enableAutomaticScroll","extraHeight","extraScrollHeight","enableResetScrollToCoords","keyboardOpeningTime","enableOnAndroid","showsVerticalScrollIndicator","defaultValue"],"mappings":"AAAA,SACEA,eADF,EAEEC,oBAFF,EAGEC,sBAHF,QAIO,iBAJP;AAMA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,4BADiB;AAEvBC,EAAAA,GAAG,EAAE,yBAFkB;AAGvBC,EAAAA,WAAW,EACT,mEAJqB;AAKvBC,EAAAA,QAAQ,EAAEP,eAAe,CAACQ,MALH;AAMvBA,EAAAA,MAAM,EAAE,EANe;AAOvBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,kBAAkB,EAAET,oBAAoB,CAAC;AACvCU,MAAAA,KAAK,EAAE,uBADgC;AAEvCL,MAAAA,WAAW,EAAE;AAF0B,KAAD,CADnC;AAKLM,IAAAA,qBAAqB,EAAEX,oBAAoB,CAAC;AAC1CU,MAAAA,KAAK,EAAE,yBADmC;AAE1CL,MAAAA,WAAW,EACT;AAHwC,KAAD,CALtC;AAULO,IAAAA,WAAW,EAAEX,sBAAsB,CAAC;AAClCS,MAAAA,KAAK,EAAE,cAD2B;AAElCL,MAAAA,WAAW,EAAE;AAFqB,KAAD,CAV9B;AAcLQ,IAAAA,iBAAiB,EAAEZ,sBAAsB,CAAC;AACxCS,MAAAA,KAAK,EAAE,qBADiC;AAExCL,MAAAA,WAAW,EACT;AAHsC,KAAD,CAdpC;AAmBLS,IAAAA,yBAAyB,EAAEd,oBAAoB,CAAC;AAC9CU,MAAAA,KAAK,EAAE,oCADuC;AAE9CL,MAAAA,WAAW,EACT;AAH4C,KAAD,CAnB1C;AAwBLU,IAAAA,mBAAmB,EAAEd,sBAAsB,CAAC;AAC1CS,MAAAA,KAAK,EAAE,cADmC;AAE1CL,MAAAA,WAAW,EACT;AAHwC,KAAD,CAxBtC;AA6BLW,IAAAA,eAAe,EAAEhB,oBAAoB,CAAC;AACpCU,MAAAA,KAAK,EAAE,mBAD6B;AAEpCL,MAAAA,WAAW,EAAE;AAFuB,KAAD,CA7BhC;AAiCLY,IAAAA,4BAA4B,EAAEjB,oBAAoB,CAAC;AACjDU,MAAAA,KAAK,EAAE,iCAD0C;AAEjDL,MAAAA,WAAW,EAAE,4CAFoC;AAGjDa,MAAAA,YAAY,EAAE;AAHmC,KAAD;AAjC7C;AAPgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n createStaticBoolProp,\n createStaticNumberProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Keyboard Aware Scroll View\",\n tag: \"KeyboardAwareScrollView\",\n description:\n \"View that moves pushes the content when virtual keyboard is open.\",\n category: COMPONENT_TYPES.layout,\n layout: {},\n props: {\n viewIsInsideTabBar: createStaticBoolProp({\n label: \"View Is Inside TabBar\",\n description: \"Adds an extra offset that represents the TabBarIOS height.\",\n }),\n enableAutomaticScroll: createStaticBoolProp({\n label: \"Enable Automatic Scroll\",\n description:\n \"When focus in TextInput will scroll the position, default is enabled\",\n }),\n extraHeight: createStaticNumberProp({\n label: \"Extra Height\",\n description: \"Adds an extra offset when focusing the TextInputs\",\n }),\n extraScrollHeight: createStaticNumberProp({\n label: \"Extra Scroll Height\",\n description:\n \"Adds an extra offset to the keyboard. Useful if you want to stick elements above the keyboard\",\n }),\n enableResetScrollToCoords: createStaticBoolProp({\n label: \"Enable Reset Scroll To Coordinates\",\n description:\n \"Lets the user enable or disable automatic resetScrollToCoords\",\n }),\n keyboardOpeningTime: createStaticNumberProp({\n label: \"Opening Time\",\n description:\n \"Sets the delay time before scrolling to new position after keyboard opening, default is 250\",\n }),\n enableOnAndroid: createStaticBoolProp({\n label: \"Enable On Android\",\n description: \"Enable Android Support\",\n }),\n showsVerticalScrollIndicator: createStaticBoolProp({\n label: \"Shows Vertical Scroll Indicator\",\n description: \"Show or hide the vertical scroll indicator\",\n defaultValue: true,\n }),\n },\n};\n"]}
1
+ {"version":3,"sources":["KeyboardAwareScrollView.ts"],"names":["COMPONENT_TYPES","createStaticBoolProp","createStaticNumberProp","createTextEnumProp","SEED_DATA","name","tag","description","category","layout","props","viewIsInsideTabBar","label","enableAutomaticScroll","extraHeight","extraScrollHeight","enableResetScrollToCoords","keyboardOpeningTime","enableOnAndroid","showsVerticalScrollIndicator","defaultValue","keyboardShouldPersistTaps","options"],"mappings":"AAAA,SACEA,eADF,EAEEC,oBAFF,EAGEC,sBAHF,EAIEC,kBAJF,QAKO,iBALP;AAOA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,4BADiB;AAEvBC,EAAAA,GAAG,EAAE,yBAFkB;AAGvBC,EAAAA,WAAW,EACT,mEAJqB;AAKvBC,EAAAA,QAAQ,EAAER,eAAe,CAACS,MALH;AAMvBA,EAAAA,MAAM,EAAE,EANe;AAOvBC,EAAAA,KAAK,EAAE;AACLC,IAAAA,kBAAkB,EAAEV,oBAAoB,CAAC;AACvCW,MAAAA,KAAK,EAAE,uBADgC;AAEvCL,MAAAA,WAAW,EAAE;AAF0B,KAAD,CADnC;AAKLM,IAAAA,qBAAqB,EAAEZ,oBAAoB,CAAC;AAC1CW,MAAAA,KAAK,EAAE,yBADmC;AAE1CL,MAAAA,WAAW,EACT;AAHwC,KAAD,CALtC;AAULO,IAAAA,WAAW,EAAEZ,sBAAsB,CAAC;AAClCU,MAAAA,KAAK,EAAE,cAD2B;AAElCL,MAAAA,WAAW,EAAE;AAFqB,KAAD,CAV9B;AAcLQ,IAAAA,iBAAiB,EAAEb,sBAAsB,CAAC;AACxCU,MAAAA,KAAK,EAAE,qBADiC;AAExCL,MAAAA,WAAW,EACT;AAHsC,KAAD,CAdpC;AAmBLS,IAAAA,yBAAyB,EAAEf,oBAAoB,CAAC;AAC9CW,MAAAA,KAAK,EAAE,oCADuC;AAE9CL,MAAAA,WAAW,EACT;AAH4C,KAAD,CAnB1C;AAwBLU,IAAAA,mBAAmB,EAAEf,sBAAsB,CAAC;AAC1CU,MAAAA,KAAK,EAAE,cADmC;AAE1CL,MAAAA,WAAW,EACT;AAHwC,KAAD,CAxBtC;AA6BLW,IAAAA,eAAe,EAAEjB,oBAAoB,CAAC;AACpCW,MAAAA,KAAK,EAAE,mBAD6B;AAEpCL,MAAAA,WAAW,EAAE;AAFuB,KAAD,CA7BhC;AAiCLY,IAAAA,4BAA4B,EAAElB,oBAAoB,CAAC;AACjDW,MAAAA,KAAK,EAAE,iCAD0C;AAEjDL,MAAAA,WAAW,EAAE,4CAFoC;AAGjDa,MAAAA,YAAY,EAAE;AAHmC,KAAD,CAjC7C;AAsCLC,IAAAA,yBAAyB,EAAElB,kBAAkB,CAAC;AAC5CS,MAAAA,KAAK,EAAE,oBADqC;AAE5CL,MAAAA,WAAW,EACT,sFAH0C;AAI5Ca,MAAAA,YAAY,EAAE,OAJ8B;AAK5CE,MAAAA,OAAO,EAAE,CAAC,OAAD,EAAU,QAAV;AALmC,KAAD;AAtCxC;AAPgB,CAAlB","sourcesContent":["import {\n COMPONENT_TYPES,\n createStaticBoolProp,\n createStaticNumberProp,\n createTextEnumProp,\n} from \"@draftbit/types\";\n\nexport const SEED_DATA = {\n name: \"Keyboard Aware Scroll View\",\n tag: \"KeyboardAwareScrollView\",\n description:\n \"View that moves pushes the content when virtual keyboard is open.\",\n category: COMPONENT_TYPES.layout,\n layout: {},\n props: {\n viewIsInsideTabBar: createStaticBoolProp({\n label: \"View Is Inside TabBar\",\n description: \"Adds an extra offset that represents the TabBarIOS height.\",\n }),\n enableAutomaticScroll: createStaticBoolProp({\n label: \"Enable Automatic Scroll\",\n description:\n \"When focus in TextInput will scroll the position, default is enabled\",\n }),\n extraHeight: createStaticNumberProp({\n label: \"Extra Height\",\n description: \"Adds an extra offset when focusing the TextInputs\",\n }),\n extraScrollHeight: createStaticNumberProp({\n label: \"Extra Scroll Height\",\n description:\n \"Adds an extra offset to the keyboard. Useful if you want to stick elements above the keyboard\",\n }),\n enableResetScrollToCoords: createStaticBoolProp({\n label: \"Enable Reset Scroll To Coordinates\",\n description:\n \"Lets the user enable or disable automatic resetScrollToCoords\",\n }),\n keyboardOpeningTime: createStaticNumberProp({\n label: \"Opening Time\",\n description:\n \"Sets the delay time before scrolling to new position after keyboard opening, default is 250\",\n }),\n enableOnAndroid: createStaticBoolProp({\n label: \"Enable On Android\",\n description: \"Enable Android Support\",\n }),\n showsVerticalScrollIndicator: createStaticBoolProp({\n label: \"Shows Vertical Scroll Indicator\",\n description: \"Show or hide the vertical scroll indicator\",\n defaultValue: true,\n }),\n keyboardShouldPersistTaps: createTextEnumProp({\n label: \"Allow Touch Events\",\n description:\n \"Allows touch events on visible components to be processed while the keyboard is open\",\n defaultValue: \"never\",\n options: [\"never\", \"always\"],\n }),\n },\n};\n"]}
@@ -88,5 +88,16 @@ export declare const SEED_DATA: {
88
88
  required: boolean;
89
89
  group: string;
90
90
  };
91
+ keyboardShouldPersistTaps: {
92
+ group: string;
93
+ label: string;
94
+ description: string;
95
+ editable: boolean;
96
+ required: boolean;
97
+ formType: string;
98
+ propType: string;
99
+ defaultValue: null;
100
+ options: never[];
101
+ };
91
102
  };
92
103
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draftbit/core",
3
- "version": "44.1.12-ee6c2c.1+ee6c2ca1",
3
+ "version": "44.1.12",
4
4
  "description": "Core (non-native) Components",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -41,7 +41,7 @@
41
41
  "dependencies": {
42
42
  "@date-io/date-fns": "^1.3.13",
43
43
  "@draftbit/react-theme-provider": "^2.1.1",
44
- "@draftbit/types": "^44.1.0",
44
+ "@draftbit/types": "^44.1.12",
45
45
  "@material-ui/core": "^4.11.0",
46
46
  "@material-ui/pickers": "^3.2.10",
47
47
  "@react-native-community/slider": "4.1.7",
@@ -79,5 +79,5 @@
79
79
  ]
80
80
  ]
81
81
  },
82
- "gitHead": "ee6c2ca16b9c624568261664b993dd4dbde1dfff"
82
+ "gitHead": "f30749b7654f36d4801948ae93c620dfae3c0df8"
83
83
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Text, Platform, } from "react-native";
2
+ import { View, StyleSheet, Text, Platform, Dimensions, } from "react-native";
3
3
  import { omit, pickBy, identity, isObject } from "lodash";
4
4
  import { SafeAreaView } from "react-native-safe-area-context";
5
5
  import { Picker as NativePicker } from "@react-native-picker/picker";
@@ -30,12 +30,18 @@ function normalizeOptions(options) {
30
30
  }
31
31
  throw new Error('Picker options must be either an array of strings or array of { "label": string; "value": string; } objects.');
32
32
  }
33
+ const { width: deviceWidth, height: deviceHeight } = Dimensions.get("screen");
34
+ const isIos = Platform.OS === "ios";
33
35
  const unstyledColor = "rgba(165, 173, 183, 1)";
34
36
  const disabledColor = "rgb(240, 240, 240)";
35
37
  const errorColor = "rgba(255, 69, 100, 1)";
36
38
  const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style, placeholder, value, disabled = false, theme, assistiveText, label, iconColor = unstyledColor, iconSize = 24, leftIconMode = "inset", leftIconName, placeholderTextColor = unstyledColor, rightIconName, type = "solid", }) => {
39
+ const androidPickerRef = React.useRef(undefined);
37
40
  const [internalValue, setInternalValue] = React.useState(value || defaultValue);
38
- const [pickerVisible, togglePickerVisible] = React.useReducer((state) => !state, false);
41
+ const [pickerVisible, setPickerVisible] = React.useState(false);
42
+ const togglePickerVisible = () => {
43
+ setPickerVisible(!pickerVisible);
44
+ };
39
45
  React.useEffect(() => {
40
46
  if (value != null) {
41
47
  setInternalValue(value);
@@ -46,6 +52,11 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
46
52
  setInternalValue(defaultValue);
47
53
  }
48
54
  }, [defaultValue]);
55
+ React.useEffect(() => {
56
+ if (pickerVisible && androidPickerRef.current) {
57
+ androidPickerRef?.current?.focus();
58
+ }
59
+ }, [pickerVisible, androidPickerRef]);
49
60
  const normalizedOptions = normalizeOptions(options);
50
61
  const pickerOptions = placeholder
51
62
  ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]
@@ -96,7 +107,6 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
96
107
  height: 60,
97
108
  ...extractedMarginStyles,
98
109
  };
99
- const platform = Platform.OS;
100
110
  const stylesWithoutBordersAndMargins = omit(viewStyles, [
101
111
  ...borderStyleNames,
102
112
  ...marginStyleNames,
@@ -171,7 +181,7 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
171
181
  React.createElement(Text, { style: primaryTextStyle }, String(selectedLabel ?? placeholder))),
172
182
  rightIcon)),
173
183
  assistiveTextLabel),
174
- platform === "ios" && pickerVisible ? (React.createElement(Portal, null,
184
+ isIos && pickerVisible ? (React.createElement(Portal, null,
175
185
  React.createElement(View, { style: [
176
186
  styles.iosPicker,
177
187
  {
@@ -181,13 +191,15 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
181
191
  React.createElement(SafeAreaView, { style: styles.iosSafeArea },
182
192
  React.createElement(Button, { Icon: Icon, type: "text", onPress: togglePickerVisible, style: styles.iosButton }, "Close"),
183
193
  React.createElement(NativePicker, { style: styles.iosNativePicker, selectedValue: internalValue, onValueChange: handleValueChange }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value })))))))) : null,
184
- platform !== "ios" ? (React.createElement(NativePicker, { enabled: !disabled, selectedValue: internalValue, onValueChange: handleValueChange, style: styles.nonIosPicker }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value }))))) : null));
194
+ !isIos && pickerVisible ? (React.createElement(NativePicker, { enabled: pickerVisible, selectedValue: internalValue, onValueChange: handleValueChange, style: styles.nonIosPicker, ref: androidPickerRef, onBlur: () => setPickerVisible(false) }, pickerOptions.map((option) => (React.createElement(NativePicker.Item, { label: option.label, value: option.value, key: option.value }))))) : null));
185
195
  };
186
196
  export default withTheme(Picker);
187
197
  const styles = StyleSheet.create({
188
198
  marginsContainer: {
189
199
  alignSelf: "stretch",
190
200
  alignItems: "center",
201
+ width: "100%",
202
+ maxWidth: deviceWidth,
191
203
  },
192
204
  touchableContainer: {
193
205
  flex: 1,
@@ -224,11 +236,15 @@ const styles = StyleSheet.create({
224
236
  right: 0,
225
237
  flexDirection: "row",
226
238
  justifyContent: "center",
239
+ width: "100%",
240
+ maxWidth: deviceWidth,
241
+ maxHeight: deviceHeight,
227
242
  },
228
243
  iosSafeArea: {
229
244
  backgroundColor: "white",
230
245
  flexDirection: "column",
231
246
  width: "100%",
247
+ maxWidth: deviceWidth,
232
248
  },
233
249
  iosButton: {
234
250
  alignSelf: "flex-end",
@@ -244,5 +260,7 @@ const styles = StyleSheet.create({
244
260
  right: 0,
245
261
  bottom: 0,
246
262
  width: "100%",
263
+ maxWidth: deviceWidth,
264
+ maxHeight: deviceHeight,
247
265
  },
248
266
  });
@@ -6,6 +6,7 @@ import {
6
6
  Platform,
7
7
  ViewStyle,
8
8
  StyleProp,
9
+ Dimensions,
9
10
  } from "react-native";
10
11
  import { omit, pickBy, identity, isObject } from "lodash";
11
12
  import { SafeAreaView } from "react-native-safe-area-context";
@@ -81,6 +82,8 @@ function normalizeOptions(options: PickerProps["options"]): PickerOption[] {
81
82
  );
82
83
  }
83
84
 
85
+ const { width: deviceWidth, height: deviceHeight } = Dimensions.get("screen");
86
+ const isIos = Platform.OS === "ios";
84
87
  const unstyledColor = "rgba(165, 173, 183, 1)";
85
88
  const disabledColor = "rgb(240, 240, 240)";
86
89
  const errorColor = "rgba(255, 69, 100, 1)";
@@ -106,14 +109,17 @@ const Picker: React.FC<PickerProps> = ({
106
109
  rightIconName,
107
110
  type = "solid",
108
111
  }) => {
112
+ const androidPickerRef = React.useRef<any | undefined>(undefined);
113
+
109
114
  const [internalValue, setInternalValue] = React.useState<string | undefined>(
110
115
  value || defaultValue
111
116
  );
112
117
 
113
- const [pickerVisible, togglePickerVisible] = React.useReducer(
114
- (state) => !state,
115
- false
116
- );
118
+ const [pickerVisible, setPickerVisible] = React.useState(false);
119
+
120
+ const togglePickerVisible = () => {
121
+ setPickerVisible(!pickerVisible);
122
+ };
117
123
 
118
124
  React.useEffect(() => {
119
125
  if (value != null) {
@@ -127,6 +133,12 @@ const Picker: React.FC<PickerProps> = ({
127
133
  }
128
134
  }, [defaultValue]);
129
135
 
136
+ React.useEffect(() => {
137
+ if (pickerVisible && androidPickerRef.current) {
138
+ androidPickerRef?.current?.focus();
139
+ }
140
+ }, [pickerVisible, androidPickerRef]);
141
+
130
142
  const normalizedOptions = normalizeOptions(options);
131
143
 
132
144
  const pickerOptions = placeholder
@@ -193,8 +205,6 @@ const Picker: React.FC<PickerProps> = ({
193
205
  ...extractedMarginStyles,
194
206
  };
195
207
 
196
- const platform = Platform.OS;
197
-
198
208
  const stylesWithoutBordersAndMargins = omit(viewStyles, [
199
209
  ...borderStyleNames,
200
210
  ...marginStyleNames,
@@ -335,7 +345,7 @@ const Picker: React.FC<PickerProps> = ({
335
345
  </Touchable>
336
346
 
337
347
  {/* iosPicker */}
338
- {platform === "ios" && pickerVisible ? (
348
+ {isIos && pickerVisible ? (
339
349
  <Portal>
340
350
  <View
341
351
  style={[
@@ -374,12 +384,14 @@ const Picker: React.FC<PickerProps> = ({
374
384
  ) : null}
375
385
 
376
386
  {/* nonIosPicker */}
377
- {platform !== "ios" ? (
387
+ {!isIos && pickerVisible ? (
378
388
  <NativePicker
379
- enabled={!disabled}
389
+ enabled={pickerVisible}
380
390
  selectedValue={internalValue}
381
391
  onValueChange={handleValueChange}
382
392
  style={styles.nonIosPicker}
393
+ ref={androidPickerRef}
394
+ onBlur={() => setPickerVisible(false)}
383
395
  >
384
396
  {(pickerOptions as unknown as PickerOption[]).map((option) => (
385
397
  <NativePicker.Item
@@ -400,6 +412,8 @@ const styles = StyleSheet.create({
400
412
  marginsContainer: {
401
413
  alignSelf: "stretch",
402
414
  alignItems: "center",
415
+ width: "100%",
416
+ maxWidth: deviceWidth,
403
417
  },
404
418
  touchableContainer: {
405
419
  flex: 1,
@@ -436,11 +450,15 @@ const styles = StyleSheet.create({
436
450
  right: 0,
437
451
  flexDirection: "row",
438
452
  justifyContent: "center",
453
+ width: "100%",
454
+ maxWidth: deviceWidth,
455
+ maxHeight: deviceHeight,
439
456
  },
440
457
  iosSafeArea: {
441
458
  backgroundColor: "white",
442
459
  flexDirection: "column",
443
460
  width: "100%",
461
+ maxWidth: deviceWidth,
444
462
  },
445
463
  iosButton: {
446
464
  alignSelf: "flex-end",
@@ -456,5 +474,7 @@ const styles = StyleSheet.create({
456
474
  right: 0,
457
475
  bottom: 0,
458
476
  width: "100%",
477
+ maxWidth: deviceWidth,
478
+ maxHeight: deviceHeight,
459
479
  },
460
480
  });
@@ -1,4 +1,4 @@
1
- import { COMPONENT_TYPES, createStaticBoolProp, createStaticNumberProp, } from "@draftbit/types";
1
+ import { COMPONENT_TYPES, createStaticBoolProp, createStaticNumberProp, createTextEnumProp, } from "@draftbit/types";
2
2
  export const SEED_DATA = {
3
3
  name: "Keyboard Aware Scroll View",
4
4
  tag: "KeyboardAwareScrollView",
@@ -39,5 +39,11 @@ export const SEED_DATA = {
39
39
  description: "Show or hide the vertical scroll indicator",
40
40
  defaultValue: true,
41
41
  }),
42
+ keyboardShouldPersistTaps: createTextEnumProp({
43
+ label: "Allow Touch Events",
44
+ description: "Allows touch events on visible components to be processed while the keyboard is open",
45
+ defaultValue: "never",
46
+ options: ["never", "always"],
47
+ }),
42
48
  },
43
49
  };
@@ -2,6 +2,7 @@ import {
2
2
  COMPONENT_TYPES,
3
3
  createStaticBoolProp,
4
4
  createStaticNumberProp,
5
+ createTextEnumProp,
5
6
  } from "@draftbit/types";
6
7
 
7
8
  export const SEED_DATA = {
@@ -49,5 +50,12 @@ export const SEED_DATA = {
49
50
  description: "Show or hide the vertical scroll indicator",
50
51
  defaultValue: true,
51
52
  }),
53
+ keyboardShouldPersistTaps: createTextEnumProp({
54
+ label: "Allow Touch Events",
55
+ description:
56
+ "Allows touch events on visible components to be processed while the keyboard is open",
57
+ defaultValue: "never",
58
+ options: ["never", "always"],
59
+ }),
52
60
  },
53
61
  };