@draftbit/core 46.7.9-fa5e7c.2 → 46.8.0

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 (41) hide show
  1. package/lib/commonjs/components/DatePicker/DatePicker.js +14 -1
  2. package/lib/commonjs/components/NumberInput.js +10 -10
  3. package/lib/commonjs/components/Picker/Picker.js +10 -3
  4. package/lib/commonjs/mappings/DatePicker.js +8 -2
  5. package/lib/commonjs/mappings/DeckSwiper.js +3 -0
  6. package/lib/commonjs/mappings/DeckSwiperCard.js +7 -0
  7. package/lib/commonjs/mappings/Picker.js +5 -0
  8. package/lib/module/components/DatePicker/DatePicker.js +15 -2
  9. package/lib/module/components/NumberInput.js +10 -10
  10. package/lib/module/components/Picker/Picker.js +11 -4
  11. package/lib/module/mappings/DatePicker.js +9 -3
  12. package/lib/module/mappings/DeckSwiper.js +3 -0
  13. package/lib/module/mappings/DeckSwiperCard.js +7 -0
  14. package/lib/module/mappings/Picker.js +6 -1
  15. package/lib/typescript/src/components/DatePicker/DatePicker.d.ts +1 -0
  16. package/lib/typescript/src/components/DatePicker/DatePicker.d.ts.map +1 -1
  17. package/lib/typescript/src/components/Picker/Picker.d.ts +1 -0
  18. package/lib/typescript/src/components/Picker/Picker.d.ts.map +1 -1
  19. package/lib/typescript/src/mappings/DatePicker.d.ts +10 -0
  20. package/lib/typescript/src/mappings/DatePicker.d.ts.map +1 -1
  21. package/lib/typescript/src/mappings/DeckSwiper.d.ts +3 -0
  22. package/lib/typescript/src/mappings/DeckSwiper.d.ts.map +1 -1
  23. package/lib/typescript/src/mappings/DeckSwiperCard.d.ts +7 -0
  24. package/lib/typescript/src/mappings/DeckSwiperCard.d.ts.map +1 -1
  25. package/lib/typescript/src/mappings/Picker.d.ts +10 -0
  26. package/lib/typescript/src/mappings/Picker.d.ts.map +1 -1
  27. package/package.json +3 -3
  28. package/src/components/DatePicker/DatePicker.js +8 -3
  29. package/src/components/DatePicker/DatePicker.tsx +10 -1
  30. package/src/components/NumberInput.js +9 -9
  31. package/src/components/NumberInput.tsx +11 -11
  32. package/src/components/Picker/Picker.js +9 -3
  33. package/src/components/Picker/Picker.tsx +14 -2
  34. package/src/mappings/DatePicker.js +8 -2
  35. package/src/mappings/DatePicker.ts +8 -1
  36. package/src/mappings/DeckSwiper.js +3 -0
  37. package/src/mappings/DeckSwiper.ts +3 -0
  38. package/src/mappings/DeckSwiperCard.js +7 -0
  39. package/src/mappings/DeckSwiperCard.ts +7 -0
  40. package/src/mappings/Picker.js +6 -1
  41. package/src/mappings/Picker.ts +6 -0
@@ -48,6 +48,7 @@ const DatePicker = _ref => {
48
48
  placeholder,
49
49
  borderColor: inputBorderColor,
50
50
  borderColorActive: inputBorderColorActive,
51
+ autoDismissKeyboard = true,
51
52
  ...props
52
53
  } = _ref;
53
54
  const [value, setValue] = React.useState(date || defaultValue);
@@ -143,6 +144,11 @@ const DatePicker = _ref => {
143
144
  clearTimeout(_showPlaceholder());
144
145
  };
145
146
  }, [focused, label, placeholder]);
147
+ React.useEffect(() => {
148
+ if (pickerVisible && autoDismissKeyboard) {
149
+ _reactNative.Keyboard.dismiss();
150
+ }
151
+ }, [pickerVisible, autoDismissKeyboard]);
146
152
  const _handleFocus = () => {
147
153
  if (disabled) {
148
154
  return;
@@ -160,7 +166,14 @@ const DatePicker = _ref => {
160
166
  const MAXIMIZED_LABEL_FONT_SIZE = textStyles.fontSize || typography.subtitle1.fontSize;
161
167
  const MINIMIZED_LABEL_FONT_SIZE = labelSize ? labelSize : typography.caption.fontSize;
162
168
  const hasActiveOutline = focused;
163
- let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
169
+ let inputTextColor,
170
+ activeColor,
171
+ underlineColor,
172
+ borderColor = inputBorderColor,
173
+ placeholderColor,
174
+ containerStyle,
175
+ backgroundColor,
176
+ inputStyle;
164
177
  inputTextColor = colors.strong;
165
178
  if (disabled) {
166
179
  activeColor = colors.light;
@@ -32,17 +32,8 @@ const NumberInput = _ref => {
32
32
  return valueToFormat.toString();
33
33
  }
34
34
  }
35
- return "0";
35
+ return "";
36
36
  };
37
-
38
- // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
39
- (0, _react.useEffect)(() => {
40
- const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
41
- if (currentStringNumberValue !== defaultStringNumberValue) {
42
- setCurrentStringNumberValue(defaultStringNumberValue);
43
- }
44
- // eslint-disable-next-line react-hooks/exhaustive-deps
45
- }, []);
46
37
  const handleChangeText = newValue => {
47
38
  const newStringNumberValue = formatValueToStringNumber(newValue);
48
39
  const number = parseFloat(newStringNumberValue);
@@ -58,6 +49,15 @@ const NumberInput = _ref => {
58
49
  }
59
50
  // eslint-disable-next-line react-hooks/exhaustive-deps
60
51
  }, [value]);
52
+
53
+ // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
54
+ (0, _react.useEffect)(() => {
55
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
56
+ if (currentStringNumberValue !== defaultStringNumberValue) {
57
+ setCurrentStringNumberValue(defaultStringNumberValue);
58
+ }
59
+ // eslint-disable-next-line react-hooks/exhaustive-deps
60
+ }, []);
61
61
  return /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, _extends({
62
62
  keyboardType: "numeric",
63
63
  value: currentStringNumberValue,
@@ -42,6 +42,7 @@ const {
42
42
  height: deviceHeight
43
43
  } = _reactNative.Dimensions.get("screen");
44
44
  const isIos = _reactNative.Platform.OS === "ios";
45
+ const isWeb = _reactNative.Platform.OS === "web";
45
46
  const unstyledColor = "rgba(165, 173, 183, 1)";
46
47
  const disabledColor = "rgb(240, 240, 240)";
47
48
  const errorColor = "rgba(255, 69, 100, 1)";
@@ -65,7 +66,8 @@ const Picker = _ref => {
65
66
  leftIconName,
66
67
  placeholderTextColor = unstyledColor,
67
68
  rightIconName,
68
- type = "solid"
69
+ type = "solid",
70
+ autoDismissKeyboard = true
69
71
  } = _ref;
70
72
  const androidPickerRef = React.useRef(undefined);
71
73
  const [internalValue, setInternalValue] = React.useState(value || defaultValue);
@@ -89,6 +91,11 @@ const Picker = _ref => {
89
91
  androidPickerRef === null || androidPickerRef === void 0 ? void 0 : (_androidPickerRef$cur = androidPickerRef.current) === null || _androidPickerRef$cur === void 0 ? void 0 : _androidPickerRef$cur.focus();
90
92
  }
91
93
  }, [pickerVisible, androidPickerRef]);
94
+ React.useEffect(() => {
95
+ if (pickerVisible && autoDismissKeyboard) {
96
+ _reactNative.Keyboard.dismiss();
97
+ }
98
+ }, [pickerVisible, autoDismissKeyboard]);
92
99
  const normalizedOptions = normalizeOptions(options);
93
100
  const pickerOptions = placeholder ? [{
94
101
  value: placeholder,
@@ -233,8 +240,8 @@ const Picker = _ref => {
233
240
  label: option.label,
234
241
  value: option.value,
235
242
  key: option.value
236
- })))))) : null, !isIos && pickerVisible ? /*#__PURE__*/React.createElement(_picker.Picker, {
237
- enabled: pickerVisible,
243
+ })))))) : null, !isIos && (pickerVisible || isWeb) ? /*#__PURE__*/React.createElement(_picker.Picker, {
244
+ enabled: !disabled,
238
245
  selectedValue: internalValue,
239
246
  onValueChange: handleValueChange,
240
247
  style: styles.nonIosPicker,
@@ -37,7 +37,8 @@ const SEED_DATA_PROPS = {
37
37
  label: "Border Color"
38
38
  }),
39
39
  borderColorActive: (0, _types.createColorProp)({
40
- label: "Border Color"
40
+ label: "Active Border Color",
41
+ description: "Color of border when date picker is active"
41
42
  }),
42
43
  format: {
43
44
  label: "Format",
@@ -169,7 +170,12 @@ const SEED_DATA = [{
169
170
  editable: true,
170
171
  required: true,
171
172
  group: _types.GROUPS.basic
172
- }
173
+ },
174
+ autoDismissKeyboard: (0, _types.createStaticBoolProp)({
175
+ label: "Auto dismiss keyboard",
176
+ description: "Automatically dismiss keyboard when DatePicker is opened",
177
+ defaultValue: true
178
+ })
173
179
  }
174
180
  }];
175
181
  exports.SEED_DATA = SEED_DATA;
@@ -11,6 +11,9 @@ const SEED_DATA = {
11
11
  description: "Deck swiper container",
12
12
  category: _types.COMPONENT_TYPES.swiper,
13
13
  stylesPanelSections: _types.BLOCK_STYLES_SECTIONS,
14
+ layout: {
15
+ width: "100%"
16
+ },
14
17
  triggers: [_types.Triggers.OnIndexChanged, _types.Triggers.OnEndReached],
15
18
  props: {
16
19
  onIndexChanged: (0, _types.createActionProp)({
@@ -11,6 +11,13 @@ const SEED_DATA = {
11
11
  description: "Single Deck Swiper Card item to be used in DeckSwiper",
12
12
  category: _types.COMPONENT_TYPES.swiper,
13
13
  stylesPanelSections: _types.CONTAINER_COMPONENT_STYLES_SECTIONS,
14
+ layout: {
15
+ flex: 1,
16
+ alignItems: "center",
17
+ justifyContent: "center",
18
+ padding: 20,
19
+ borderWidth: 2
20
+ },
14
21
  props: {}
15
22
  };
16
23
  exports.SEED_DATA = SEED_DATA;
@@ -142,6 +142,11 @@ const SEED_DATA = [{
142
142
  }),
143
143
  iconColor: (0, _types.createColorProp)({
144
144
  label: "Icon Color"
145
+ }),
146
+ autoDismissKeyboard: (0, _types.createStaticBoolProp)({
147
+ label: "Auto dismiss keyboard",
148
+ description: "Automatically dismiss keyboard when Picker is opened",
149
+ defaultValue: true
145
150
  })
146
151
  },
147
152
  layout: {}
@@ -1,6 +1,6 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
  import * as React from "react";
3
- import { View, Animated, Text, StyleSheet, I18nManager, TextInput as NativeTextInput } from "react-native";
3
+ import { View, Animated, Text, StyleSheet, I18nManager, TextInput as NativeTextInput, Keyboard } from "react-native";
4
4
  import { useSafeAreaInsets } from "react-native-safe-area-context";
5
5
  import dateFormat from "dateformat";
6
6
  import { withTheme } from "../../theming";
@@ -39,6 +39,7 @@ const DatePicker = _ref => {
39
39
  placeholder,
40
40
  borderColor: inputBorderColor,
41
41
  borderColorActive: inputBorderColorActive,
42
+ autoDismissKeyboard = true,
42
43
  ...props
43
44
  } = _ref;
44
45
  const [value, setValue] = React.useState(date || defaultValue);
@@ -134,6 +135,11 @@ const DatePicker = _ref => {
134
135
  clearTimeout(_showPlaceholder());
135
136
  };
136
137
  }, [focused, label, placeholder]);
138
+ React.useEffect(() => {
139
+ if (pickerVisible && autoDismissKeyboard) {
140
+ Keyboard.dismiss();
141
+ }
142
+ }, [pickerVisible, autoDismissKeyboard]);
137
143
  const _handleFocus = () => {
138
144
  if (disabled) {
139
145
  return;
@@ -151,7 +157,14 @@ const DatePicker = _ref => {
151
157
  const MAXIMIZED_LABEL_FONT_SIZE = textStyles.fontSize || typography.subtitle1.fontSize;
152
158
  const MINIMIZED_LABEL_FONT_SIZE = labelSize ? labelSize : typography.caption.fontSize;
153
159
  const hasActiveOutline = focused;
154
- let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
160
+ let inputTextColor,
161
+ activeColor,
162
+ underlineColor,
163
+ borderColor = inputBorderColor,
164
+ placeholderColor,
165
+ containerStyle,
166
+ backgroundColor,
167
+ inputStyle;
155
168
  inputTextColor = colors.strong;
156
169
  if (disabled) {
157
170
  activeColor = colors.light;
@@ -24,17 +24,8 @@ const NumberInput = _ref => {
24
24
  return valueToFormat.toString();
25
25
  }
26
26
  }
27
- return "0";
27
+ return "";
28
28
  };
29
-
30
- // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
31
- useEffect(() => {
32
- const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
33
- if (currentStringNumberValue !== defaultStringNumberValue) {
34
- setCurrentStringNumberValue(defaultStringNumberValue);
35
- }
36
- // eslint-disable-next-line react-hooks/exhaustive-deps
37
- }, []);
38
29
  const handleChangeText = newValue => {
39
30
  const newStringNumberValue = formatValueToStringNumber(newValue);
40
31
  const number = parseFloat(newStringNumberValue);
@@ -50,6 +41,15 @@ const NumberInput = _ref => {
50
41
  }
51
42
  // eslint-disable-next-line react-hooks/exhaustive-deps
52
43
  }, [value]);
44
+
45
+ // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
46
+ useEffect(() => {
47
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
48
+ if (currentStringNumberValue !== defaultStringNumberValue) {
49
+ setCurrentStringNumberValue(defaultStringNumberValue);
50
+ }
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, []);
53
53
  return /*#__PURE__*/React.createElement(TextInput, _extends({
54
54
  keyboardType: "numeric",
55
55
  value: currentStringNumberValue,
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Text, Platform, Dimensions } from "react-native";
2
+ import { View, StyleSheet, Text, Platform, Dimensions, Keyboard } 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,7 @@ const {
33
33
  height: deviceHeight
34
34
  } = Dimensions.get("screen");
35
35
  const isIos = Platform.OS === "ios";
36
+ const isWeb = Platform.OS === "web";
36
37
  const unstyledColor = "rgba(165, 173, 183, 1)";
37
38
  const disabledColor = "rgb(240, 240, 240)";
38
39
  const errorColor = "rgba(255, 69, 100, 1)";
@@ -56,7 +57,8 @@ const Picker = _ref => {
56
57
  leftIconName,
57
58
  placeholderTextColor = unstyledColor,
58
59
  rightIconName,
59
- type = "solid"
60
+ type = "solid",
61
+ autoDismissKeyboard = true
60
62
  } = _ref;
61
63
  const androidPickerRef = React.useRef(undefined);
62
64
  const [internalValue, setInternalValue] = React.useState(value || defaultValue);
@@ -80,6 +82,11 @@ const Picker = _ref => {
80
82
  androidPickerRef === null || androidPickerRef === void 0 ? void 0 : (_androidPickerRef$cur = androidPickerRef.current) === null || _androidPickerRef$cur === void 0 ? void 0 : _androidPickerRef$cur.focus();
81
83
  }
82
84
  }, [pickerVisible, androidPickerRef]);
85
+ React.useEffect(() => {
86
+ if (pickerVisible && autoDismissKeyboard) {
87
+ Keyboard.dismiss();
88
+ }
89
+ }, [pickerVisible, autoDismissKeyboard]);
83
90
  const normalizedOptions = normalizeOptions(options);
84
91
  const pickerOptions = placeholder ? [{
85
92
  value: placeholder,
@@ -224,8 +231,8 @@ const Picker = _ref => {
224
231
  label: option.label,
225
232
  value: option.value,
226
233
  key: option.value
227
- })))))) : null, !isIos && pickerVisible ? /*#__PURE__*/React.createElement(NativePicker, {
228
- enabled: pickerVisible,
234
+ })))))) : null, !isIos && (pickerVisible || isWeb) ? /*#__PURE__*/React.createElement(NativePicker, {
235
+ enabled: !disabled,
229
236
  selectedValue: internalValue,
230
237
  onValueChange: handleValueChange,
231
238
  style: styles.nonIosPicker,
@@ -1,4 +1,4 @@
1
- import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers, StylesPanelSections, createNumberProp, createColorProp } from "@draftbit/types";
1
+ import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers, StylesPanelSections, createNumberProp, createColorProp, createStaticBoolProp } from "@draftbit/types";
2
2
  const SEED_DATA_PROPS = {
3
3
  mode: {
4
4
  label: "Mode",
@@ -31,7 +31,8 @@ const SEED_DATA_PROPS = {
31
31
  label: "Border Color"
32
32
  }),
33
33
  borderColorActive: createColorProp({
34
- label: "Border Color"
34
+ label: "Active Border Color",
35
+ description: "Color of border when date picker is active"
35
36
  }),
36
37
  format: {
37
38
  label: "Format",
@@ -163,6 +164,11 @@ export const SEED_DATA = [{
163
164
  editable: true,
164
165
  required: true,
165
166
  group: GROUPS.basic
166
- }
167
+ },
168
+ autoDismissKeyboard: createStaticBoolProp({
169
+ label: "Auto dismiss keyboard",
170
+ description: "Automatically dismiss keyboard when DatePicker is opened",
171
+ defaultValue: true
172
+ })
167
173
  }
168
174
  }];
@@ -5,6 +5,9 @@ export const SEED_DATA = {
5
5
  description: "Deck swiper container",
6
6
  category: COMPONENT_TYPES.swiper,
7
7
  stylesPanelSections: BLOCK_STYLES_SECTIONS,
8
+ layout: {
9
+ width: "100%"
10
+ },
8
11
  triggers: [Triggers.OnIndexChanged, Triggers.OnEndReached],
9
12
  props: {
10
13
  onIndexChanged: createActionProp({
@@ -5,5 +5,12 @@ export const SEED_DATA = {
5
5
  description: "Single Deck Swiper Card item to be used in DeckSwiper",
6
6
  category: COMPONENT_TYPES.swiper,
7
7
  stylesPanelSections: CONTAINER_COMPONENT_STYLES_SECTIONS,
8
+ layout: {
9
+ flex: 1,
10
+ alignItems: "center",
11
+ justifyContent: "center",
12
+ padding: 20,
13
+ borderWidth: 2
14
+ },
8
15
  props: {}
9
16
  };
@@ -1,4 +1,4 @@
1
- import { COMPONENT_TYPES, Triggers, GROUPS, FORM_TYPES, PROP_TYPES, FIELD_NAME, createIconSizeProp, createColorProp, StylesPanelSections } from "@draftbit/types";
1
+ import { COMPONENT_TYPES, Triggers, GROUPS, FORM_TYPES, PROP_TYPES, FIELD_NAME, createIconSizeProp, createColorProp, StylesPanelSections, createStaticBoolProp } from "@draftbit/types";
2
2
  const SEED_DATA_PROPS = {
3
3
  label: {
4
4
  group: GROUPS.data,
@@ -136,6 +136,11 @@ export const SEED_DATA = [{
136
136
  }),
137
137
  iconColor: createColorProp({
138
138
  label: "Icon Color"
139
+ }),
140
+ autoDismissKeyboard: createStaticBoolProp({
141
+ label: "Auto dismiss keyboard",
142
+ description: "Automatically dismiss keyboard when Picker is opened",
143
+ defaultValue: true
139
144
  })
140
145
  },
141
146
  layout: {}
@@ -23,6 +23,7 @@ declare type Props = {
23
23
  rightIconName?: string;
24
24
  borderColor?: string;
25
25
  borderColorActive?: string;
26
+ autoDismissKeyboard?: boolean;
26
27
  } & IconSlot & TextInputProps;
27
28
  declare const _default: React.ComponentType<import("@draftbit/react-theme-provider").$Without<React.PropsWithChildren<Props>, "theme"> & {
28
29
  theme?: import("@draftbit/react-theme-provider").$DeepPartial<any> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EAKf,MAAM,cAAc,CAAC;AAStB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAStD,aAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAC;IAMb,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,QAAQ,GACV,cAAc,CAAC;;;;AA+fjB,wBAAqC"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EAMf,MAAM,cAAc,CAAC;AAStB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAStD,aAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAC;IAMb,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACpC,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG,QAAQ,GACV,cAAc,CAAC;;;;AAsgBjB,wBAAqC"}
@@ -26,6 +26,7 @@ export declare type PickerProps = {
26
26
  placeholderTextColor?: string;
27
27
  rightIconName?: string;
28
28
  type?: "solid" | "underline";
29
+ autoDismissKeyboard?: boolean;
29
30
  theme: Theme;
30
31
  Icon: IconSlot["Icon"];
31
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../../../src/components/Picker/Picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,SAAS,EACT,SAAS,EAEV,MAAM,cAAc,CAAC;AAStB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IACnC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACxB,CAAC;;;;AAiaF,wBAAiC"}
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../../../src/components/Picker/Picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAKL,SAAS,EACT,SAAS,EAGV,MAAM,cAAc,CAAC;AAStB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAAC;IACnC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACxB,CAAC;;;;AA2aF,wBAAiC"}
@@ -18,6 +18,16 @@ export declare const SEED_DATA: {
18
18
  required: boolean;
19
19
  group: string;
20
20
  };
21
+ autoDismissKeyboard: {
22
+ label: string;
23
+ description: string;
24
+ formType: string;
25
+ propType: string;
26
+ defaultValue: boolean;
27
+ editable: boolean;
28
+ required: boolean;
29
+ group: string;
30
+ };
21
31
  mode: {
22
32
  label: string;
23
33
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/mappings/DatePicker.ts"],"names":[],"mappings":"AA+JA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BrB,CAAC"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../../src/mappings/DatePicker.ts"],"names":[],"mappings":"AAiKA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCrB,CAAC"}
@@ -4,6 +4,9 @@ export declare const SEED_DATA: {
4
4
  description: string;
5
5
  category: string;
6
6
  stylesPanelSections: string[];
7
+ layout: {
8
+ width: string;
9
+ };
7
10
  triggers: string[];
8
11
  props: {
9
12
  onIndexChanged: {
@@ -1 +1 @@
1
- {"version":3,"file":"DeckSwiper.d.ts","sourceRoot":"","sources":["../../../../src/mappings/DeckSwiper.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CrB,CAAC"}
1
+ {"version":3,"file":"DeckSwiper.d.ts","sourceRoot":"","sources":["../../../../src/mappings/DeckSwiper.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CrB,CAAC"}
@@ -4,6 +4,13 @@ export declare const SEED_DATA: {
4
4
  description: string;
5
5
  category: string;
6
6
  stylesPanelSections: string[];
7
+ layout: {
8
+ flex: number;
9
+ alignItems: string;
10
+ justifyContent: string;
11
+ padding: number;
12
+ borderWidth: number;
13
+ };
7
14
  props: {};
8
15
  };
9
16
  //# sourceMappingURL=DeckSwiperCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeckSwiperCard.d.ts","sourceRoot":"","sources":["../../../../src/mappings/DeckSwiperCard.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS;;;;;;;CAOrB,CAAC"}
1
+ {"version":3,"file":"DeckSwiperCard.d.ts","sourceRoot":"","sources":["../../../../src/mappings/DeckSwiperCard.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;CAcrB,CAAC"}
@@ -40,6 +40,16 @@ export declare const SEED_DATA: {
40
40
  formType: string;
41
41
  propType: string;
42
42
  };
43
+ autoDismissKeyboard: {
44
+ label: string;
45
+ description: string;
46
+ formType: string;
47
+ propType: string;
48
+ defaultValue: boolean;
49
+ editable: boolean;
50
+ required: boolean;
51
+ group: string;
52
+ };
43
53
  label: {
44
54
  group: string;
45
55
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../../src/mappings/Picker.ts"],"names":[],"mappings":"AA8HA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCrB,CAAC"}
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../../src/mappings/Picker.ts"],"names":[],"mappings":"AA+HA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@draftbit/core",
3
- "version": "46.7.9-fa5e7c.2+fa5e7c6",
3
+ "version": "46.8.0",
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": "^46.7.9-fa5e7c.2+fa5e7c6",
44
+ "@draftbit/types": "^46.8.0",
45
45
  "@material-ui/core": "^4.11.0",
46
46
  "@material-ui/pickers": "^3.2.10",
47
47
  "@react-native-community/slider": "4.2.3",
@@ -92,5 +92,5 @@
92
92
  ]
93
93
  ]
94
94
  },
95
- "gitHead": "fa5e7c6d081c4ed9d54b91c6f832feeb2b46cb78"
95
+ "gitHead": "c39b951332cf49ab0c1a244b1939f60f241f3ffa"
96
96
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { View, Animated, Text, StyleSheet, I18nManager, TextInput as NativeTextInput, } from "react-native";
2
+ import { View, Animated, Text, StyleSheet, I18nManager, TextInput as NativeTextInput, Keyboard, } from "react-native";
3
3
  import { useSafeAreaInsets } from "react-native-safe-area-context";
4
4
  import dateFormat from "dateformat";
5
5
  import { withTheme } from "../../theming";
@@ -25,7 +25,7 @@ const MONTHS = [
25
25
  "November",
26
26
  "December",
27
27
  ];
28
- const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disabledOpacity }, date, onDateChange = () => { }, defaultValue, disabled = false, mode = "date", format, type = "underline", leftIconName, rightIconName, leftIconMode = "inset", label, labelSize, labelColor, placeholder, borderColor: inputBorderColor, borderColorActive: inputBorderColorActive, ...props }) => {
28
+ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disabledOpacity }, date, onDateChange = () => { }, defaultValue, disabled = false, mode = "date", format, type = "underline", leftIconName, rightIconName, leftIconMode = "inset", label, labelSize, labelColor, placeholder, borderColor: inputBorderColor, borderColorActive: inputBorderColorActive, autoDismissKeyboard = true, ...props }) => {
29
29
  const [value, setValue] = React.useState(date || defaultValue);
30
30
  React.useEffect(() => {
31
31
  if (defaultValue != null) {
@@ -113,6 +113,11 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
113
113
  clearTimeout(_showPlaceholder());
114
114
  };
115
115
  }, [focused, label, placeholder]);
116
+ React.useEffect(() => {
117
+ if (pickerVisible && autoDismissKeyboard) {
118
+ Keyboard.dismiss();
119
+ }
120
+ }, [pickerVisible, autoDismissKeyboard]);
116
121
  const _handleFocus = () => {
117
122
  if (disabled) {
118
123
  return;
@@ -132,7 +137,7 @@ const DatePicker = ({ Icon, style, theme: { colors, typography, roundness, disab
132
137
  ? labelSize
133
138
  : typography.caption.fontSize;
134
139
  const hasActiveOutline = focused;
135
- let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
140
+ let inputTextColor, activeColor, underlineColor, borderColor = inputBorderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
136
141
  inputTextColor = colors.strong;
137
142
  if (disabled) {
138
143
  activeColor = colors.light;
@@ -12,6 +12,7 @@ import {
12
12
  I18nManager,
13
13
  LayoutChangeEvent,
14
14
  TextInput as NativeTextInput,
15
+ Keyboard,
15
16
  } from "react-native";
16
17
  import { useSafeAreaInsets } from "react-native-safe-area-context";
17
18
 
@@ -55,6 +56,7 @@ type Props = {
55
56
  rightIconName?: string;
56
57
  borderColor?: string;
57
58
  borderColorActive?: string;
59
+ autoDismissKeyboard?: boolean;
58
60
  } & IconSlot &
59
61
  TextInputProps;
60
62
 
@@ -93,6 +95,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
93
95
  placeholder,
94
96
  borderColor: inputBorderColor,
95
97
  borderColorActive: inputBorderColorActive,
98
+ autoDismissKeyboard = true,
96
99
  ...props
97
100
  }) => {
98
101
  const [value, setValue] = React.useState<any>(date || defaultValue);
@@ -204,6 +207,12 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
204
207
  };
205
208
  }, [focused, label, placeholder]);
206
209
 
210
+ React.useEffect(() => {
211
+ if (pickerVisible && autoDismissKeyboard) {
212
+ Keyboard.dismiss();
213
+ }
214
+ }, [pickerVisible, autoDismissKeyboard]);
215
+
207
216
  const _handleFocus = () => {
208
217
  if (disabled) {
209
218
  return;
@@ -232,7 +241,7 @@ const DatePicker: React.FC<React.PropsWithChildren<Props>> = ({
232
241
  let inputTextColor,
233
242
  activeColor,
234
243
  underlineColor,
235
- borderColor,
244
+ borderColor = inputBorderColor,
236
245
  placeholderColor,
237
246
  containerStyle: StyleProp<ViewStyle>,
238
247
  backgroundColor,
@@ -20,16 +20,8 @@ const NumberInput = ({ onChangeText, value, defaultValue, ...props }) => {
20
20
  return valueToFormat.toString();
21
21
  }
22
22
  }
23
- return "0";
23
+ return "";
24
24
  };
25
- // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
26
- useEffect(() => {
27
- const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
28
- if (currentStringNumberValue !== defaultStringNumberValue) {
29
- setCurrentStringNumberValue(defaultStringNumberValue);
30
- }
31
- // eslint-disable-next-line react-hooks/exhaustive-deps
32
- }, []);
33
25
  const handleChangeText = (newValue) => {
34
26
  const newStringNumberValue = formatValueToStringNumber(newValue);
35
27
  const number = parseFloat(newStringNumberValue);
@@ -44,6 +36,14 @@ const NumberInput = ({ onChangeText, value, defaultValue, ...props }) => {
44
36
  }
45
37
  // eslint-disable-next-line react-hooks/exhaustive-deps
46
38
  }, [value]);
39
+ // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
40
+ useEffect(() => {
41
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
42
+ if (currentStringNumberValue !== defaultStringNumberValue) {
43
+ setCurrentStringNumberValue(defaultStringNumberValue);
44
+ }
45
+ // eslint-disable-next-line react-hooks/exhaustive-deps
46
+ }, []);
47
47
  return (React.createElement(TextInput, { keyboardType: "numeric", value: currentStringNumberValue, onChangeText: handleChangeText, ...props }));
48
48
  };
49
49
  export default NumberInput;
@@ -31,19 +31,9 @@ const NumberInput: FC<Props> = ({
31
31
  }
32
32
  }
33
33
 
34
- return "0";
34
+ return "";
35
35
  };
36
36
 
37
- // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
38
- useEffect(() => {
39
- const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
40
-
41
- if (currentStringNumberValue !== defaultStringNumberValue) {
42
- setCurrentStringNumberValue(defaultStringNumberValue);
43
- }
44
- // eslint-disable-next-line react-hooks/exhaustive-deps
45
- }, []);
46
-
47
37
  const handleChangeText = (newValue: string) => {
48
38
  const newStringNumberValue = formatValueToStringNumber(newValue);
49
39
  const number = parseFloat(newStringNumberValue);
@@ -62,6 +52,16 @@ const NumberInput: FC<Props> = ({
62
52
  // eslint-disable-next-line react-hooks/exhaustive-deps
63
53
  }, [value]);
64
54
 
55
+ // set currentStringNumberValue as defaultValue prop if there is a differnce on first render only
56
+ useEffect(() => {
57
+ const defaultStringNumberValue = formatValueToStringNumber(defaultValue);
58
+
59
+ if (currentStringNumberValue !== defaultStringNumberValue) {
60
+ setCurrentStringNumberValue(defaultStringNumberValue);
61
+ }
62
+ // eslint-disable-next-line react-hooks/exhaustive-deps
63
+ }, []);
64
+
65
65
  return (
66
66
  <TextInput
67
67
  keyboardType="numeric"
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { View, StyleSheet, Text, Platform, Dimensions, } from "react-native";
2
+ import { View, StyleSheet, Text, Platform, Dimensions, Keyboard, } 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";
@@ -32,10 +32,11 @@ function normalizeOptions(options) {
32
32
  }
33
33
  const { width: deviceWidth, height: deviceHeight } = Dimensions.get("screen");
34
34
  const isIos = Platform.OS === "ios";
35
+ const isWeb = Platform.OS === "web";
35
36
  const unstyledColor = "rgba(165, 173, 183, 1)";
36
37
  const disabledColor = "rgb(240, 240, 240)";
37
38
  const errorColor = "rgba(255, 69, 100, 1)";
38
- const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style, placeholder, value, disabled = false, assistiveText, label, iconColor = unstyledColor, iconSize = 24, leftIconMode = "inset", leftIconName, placeholderTextColor = unstyledColor, rightIconName, type = "solid", }) => {
39
+ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style, placeholder, value, disabled = false, assistiveText, label, iconColor = unstyledColor, iconSize = 24, leftIconMode = "inset", leftIconName, placeholderTextColor = unstyledColor, rightIconName, type = "solid", autoDismissKeyboard = true, }) => {
39
40
  var _a, _b;
40
41
  const androidPickerRef = React.useRef(undefined);
41
42
  const [internalValue, setInternalValue] = React.useState(value || defaultValue);
@@ -59,6 +60,11 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
59
60
  (_a = androidPickerRef === null || androidPickerRef === void 0 ? void 0 : androidPickerRef.current) === null || _a === void 0 ? void 0 : _a.focus();
60
61
  }
61
62
  }, [pickerVisible, androidPickerRef]);
63
+ React.useEffect(() => {
64
+ if (pickerVisible && autoDismissKeyboard) {
65
+ Keyboard.dismiss();
66
+ }
67
+ }, [pickerVisible, autoDismissKeyboard]);
62
68
  const normalizedOptions = normalizeOptions(options);
63
69
  const pickerOptions = placeholder
64
70
  ? [{ value: placeholder, label: placeholder }, ...normalizedOptions]
@@ -186,7 +192,7 @@ const Picker = ({ error, options = [], onValueChange, defaultValue, Icon, style,
186
192
  React.createElement(View, { style: styles.iosPickerContent },
187
193
  React.createElement(Button, { Icon: Icon, type: "text", onPress: togglePickerVisible, style: styles.iosButton }, "Close"),
188
194
  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,
189
- !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));
195
+ !isIos && (pickerVisible || isWeb) ? (React.createElement(NativePicker, { enabled: !disabled, 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));
190
196
  };
191
197
  const styles = StyleSheet.create({
192
198
  marginsContainer: {
@@ -7,6 +7,7 @@ import {
7
7
  ViewStyle,
8
8
  StyleProp,
9
9
  Dimensions,
10
+ Keyboard,
10
11
  } from "react-native";
11
12
  import { omit, pickBy, identity, isObject } from "lodash";
12
13
  import { SafeAreaView } from "react-native-safe-area-context";
@@ -48,6 +49,7 @@ export type PickerProps = {
48
49
  placeholderTextColor?: string;
49
50
  rightIconName?: string;
50
51
  type?: "solid" | "underline";
52
+ autoDismissKeyboard?: boolean;
51
53
  theme: Theme;
52
54
  Icon: IconSlot["Icon"];
53
55
  };
@@ -84,6 +86,8 @@ function normalizeOptions(options: PickerProps["options"]): PickerOption[] {
84
86
 
85
87
  const { width: deviceWidth, height: deviceHeight } = Dimensions.get("screen");
86
88
  const isIos = Platform.OS === "ios";
89
+ const isWeb = Platform.OS === "web";
90
+
87
91
  const unstyledColor = "rgba(165, 173, 183, 1)";
88
92
  const disabledColor = "rgb(240, 240, 240)";
89
93
  const errorColor = "rgba(255, 69, 100, 1)";
@@ -107,6 +111,7 @@ const Picker: React.FC<PickerProps> = ({
107
111
  placeholderTextColor = unstyledColor,
108
112
  rightIconName,
109
113
  type = "solid",
114
+ autoDismissKeyboard = true,
110
115
  }) => {
111
116
  const androidPickerRef = React.useRef<any | undefined>(undefined);
112
117
 
@@ -138,6 +143,12 @@ const Picker: React.FC<PickerProps> = ({
138
143
  }
139
144
  }, [pickerVisible, androidPickerRef]);
140
145
 
146
+ React.useEffect(() => {
147
+ if (pickerVisible && autoDismissKeyboard) {
148
+ Keyboard.dismiss();
149
+ }
150
+ }, [pickerVisible, autoDismissKeyboard]);
151
+
141
152
  const normalizedOptions = normalizeOptions(options);
142
153
 
143
154
  const pickerOptions = placeholder
@@ -374,9 +385,10 @@ const Picker: React.FC<PickerProps> = ({
374
385
  ) : null}
375
386
 
376
387
  {/* nonIosPicker */}
377
- {!isIos && pickerVisible ? (
388
+ {/* Web version is collapsed by default, always show to allow direct expand */}
389
+ {!isIos && (pickerVisible || isWeb) ? (
378
390
  <NativePicker
379
- enabled={pickerVisible}
391
+ enabled={!disabled}
380
392
  selectedValue={internalValue}
381
393
  onValueChange={handleValueChange}
382
394
  style={styles.nonIosPicker}
@@ -1,4 +1,4 @@
1
- import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers, StylesPanelSections, createNumberProp, createColorProp, } from "@draftbit/types";
1
+ import { COMPONENT_TYPES, FORM_TYPES, PROP_TYPES, FIELD_NAME, GROUPS, Triggers, StylesPanelSections, createNumberProp, createColorProp, createStaticBoolProp, } from "@draftbit/types";
2
2
  const SEED_DATA_PROPS = {
3
3
  mode: {
4
4
  label: "Mode",
@@ -31,7 +31,8 @@ const SEED_DATA_PROPS = {
31
31
  label: "Border Color",
32
32
  }),
33
33
  borderColorActive: createColorProp({
34
- label: "Border Color",
34
+ label: "Active Border Color",
35
+ description: "Color of border when date picker is active",
35
36
  }),
36
37
  format: {
37
38
  label: "Format",
@@ -171,6 +172,11 @@ export const SEED_DATA = [
171
172
  required: true,
172
173
  group: GROUPS.basic,
173
174
  },
175
+ autoDismissKeyboard: createStaticBoolProp({
176
+ label: "Auto dismiss keyboard",
177
+ description: "Automatically dismiss keyboard when DatePicker is opened",
178
+ defaultValue: true,
179
+ }),
174
180
  },
175
181
  },
176
182
  ];
@@ -8,6 +8,7 @@ import {
8
8
  StylesPanelSections,
9
9
  createNumberProp,
10
10
  createColorProp,
11
+ createStaticBoolProp,
11
12
  } from "@draftbit/types";
12
13
 
13
14
  const SEED_DATA_PROPS = {
@@ -42,7 +43,8 @@ const SEED_DATA_PROPS = {
42
43
  label: "Border Color",
43
44
  }),
44
45
  borderColorActive: createColorProp({
45
- label: "Border Color",
46
+ label: "Active Border Color",
47
+ description: "Color of border when date picker is active",
46
48
  }),
47
49
  format: {
48
50
  label: "Format",
@@ -185,6 +187,11 @@ export const SEED_DATA = [
185
187
  required: true,
186
188
  group: GROUPS.basic,
187
189
  },
190
+ autoDismissKeyboard: createStaticBoolProp({
191
+ label: "Auto dismiss keyboard",
192
+ description: "Automatically dismiss keyboard when DatePicker is opened",
193
+ defaultValue: true,
194
+ }),
188
195
  },
189
196
  },
190
197
  ];
@@ -5,6 +5,9 @@ export const SEED_DATA = {
5
5
  description: "Deck swiper container",
6
6
  category: COMPONENT_TYPES.swiper,
7
7
  stylesPanelSections: BLOCK_STYLES_SECTIONS,
8
+ layout: {
9
+ width: "100%",
10
+ },
8
11
  triggers: [Triggers.OnIndexChanged, Triggers.OnEndReached],
9
12
  props: {
10
13
  onIndexChanged: createActionProp({
@@ -13,6 +13,9 @@ export const SEED_DATA = {
13
13
  description: "Deck swiper container",
14
14
  category: COMPONENT_TYPES.swiper,
15
15
  stylesPanelSections: BLOCK_STYLES_SECTIONS,
16
+ layout: {
17
+ width: "100%",
18
+ },
16
19
  triggers: [Triggers.OnIndexChanged, Triggers.OnEndReached],
17
20
  props: {
18
21
  onIndexChanged: createActionProp({
@@ -5,5 +5,12 @@ export const SEED_DATA = {
5
5
  description: "Single Deck Swiper Card item to be used in DeckSwiper",
6
6
  category: COMPONENT_TYPES.swiper,
7
7
  stylesPanelSections: CONTAINER_COMPONENT_STYLES_SECTIONS,
8
+ layout: {
9
+ flex: 1,
10
+ alignItems: "center",
11
+ justifyContent: "center",
12
+ padding: 20,
13
+ borderWidth: 2,
14
+ },
8
15
  props: {},
9
16
  };
@@ -9,5 +9,12 @@ export const SEED_DATA = {
9
9
  description: "Single Deck Swiper Card item to be used in DeckSwiper",
10
10
  category: COMPONENT_TYPES.swiper,
11
11
  stylesPanelSections: CONTAINER_COMPONENT_STYLES_SECTIONS,
12
+ layout: {
13
+ flex: 1,
14
+ alignItems: "center",
15
+ justifyContent: "center",
16
+ padding: 20,
17
+ borderWidth: 2,
18
+ },
12
19
  props: {},
13
20
  };
@@ -1,4 +1,4 @@
1
- import { COMPONENT_TYPES, Triggers, GROUPS, FORM_TYPES, PROP_TYPES, FIELD_NAME, createIconSizeProp, createColorProp, StylesPanelSections, } from "@draftbit/types";
1
+ import { COMPONENT_TYPES, Triggers, GROUPS, FORM_TYPES, PROP_TYPES, FIELD_NAME, createIconSizeProp, createColorProp, StylesPanelSections, createStaticBoolProp, } from "@draftbit/types";
2
2
  const SEED_DATA_PROPS = {
3
3
  label: {
4
4
  group: GROUPS.data,
@@ -142,6 +142,11 @@ export const SEED_DATA = [
142
142
  },
143
143
  iconSize: createIconSizeProp({ defaultValue: 24 }),
144
144
  iconColor: createColorProp({ label: "Icon Color" }),
145
+ autoDismissKeyboard: createStaticBoolProp({
146
+ label: "Auto dismiss keyboard",
147
+ description: "Automatically dismiss keyboard when Picker is opened",
148
+ defaultValue: true,
149
+ }),
145
150
  },
146
151
  layout: {},
147
152
  },
@@ -8,6 +8,7 @@ import {
8
8
  createIconSizeProp,
9
9
  createColorProp,
10
10
  StylesPanelSections,
11
+ createStaticBoolProp,
11
12
  } from "@draftbit/types";
12
13
 
13
14
  const SEED_DATA_PROPS = {
@@ -157,6 +158,11 @@ export const SEED_DATA = [
157
158
  },
158
159
  iconSize: createIconSizeProp({ defaultValue: 24 }),
159
160
  iconColor: createColorProp({ label: "Icon Color" }),
161
+ autoDismissKeyboard: createStaticBoolProp({
162
+ label: "Auto dismiss keyboard",
163
+ description: "Automatically dismiss keyboard when Picker is opened",
164
+ defaultValue: true,
165
+ }),
160
166
  },
161
167
  layout: {},
162
168
  },