@draftbit/core 46.7.9-f9c613.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 (63) hide show
  1. package/lib/commonjs/components/DatePicker/DatePicker.js +14 -1
  2. package/lib/commonjs/components/DeckSwiper/DeckSwiper.js +74 -0
  3. package/lib/commonjs/components/DeckSwiper/DeckSwiperCard.js +34 -0
  4. package/lib/commonjs/components/DeckSwiper/index.js +20 -0
  5. package/lib/commonjs/components/Divider.js +1 -14
  6. package/lib/commonjs/components/Elevation.js +2 -14
  7. package/lib/commonjs/components/Picker/Picker.js +10 -3
  8. package/lib/commonjs/index.js +13 -0
  9. package/lib/commonjs/mappings/DatePicker.js +8 -2
  10. package/lib/commonjs/mappings/DeckSwiper.js +55 -0
  11. package/lib/commonjs/mappings/DeckSwiperCard.js +23 -0
  12. package/lib/commonjs/mappings/Picker.js +5 -0
  13. package/lib/module/components/DatePicker/DatePicker.js +15 -2
  14. package/lib/module/components/DeckSwiper/DeckSwiper.js +66 -0
  15. package/lib/module/components/DeckSwiper/DeckSwiperCard.js +26 -0
  16. package/lib/module/components/DeckSwiper/index.js +2 -0
  17. package/lib/module/components/Picker/Picker.js +11 -4
  18. package/lib/module/index.js +1 -0
  19. package/lib/module/mappings/DatePicker.js +9 -3
  20. package/lib/module/mappings/DeckSwiper.js +48 -0
  21. package/lib/module/mappings/DeckSwiperCard.js +16 -0
  22. package/lib/module/mappings/Picker.js +6 -1
  23. package/lib/typescript/src/components/DatePicker/DatePicker.d.ts +1 -0
  24. package/lib/typescript/src/components/DatePicker/DatePicker.d.ts.map +1 -1
  25. package/lib/typescript/src/components/DeckSwiper/DeckSwiper.d.ts +15 -0
  26. package/lib/typescript/src/components/DeckSwiper/DeckSwiper.d.ts.map +1 -0
  27. package/lib/typescript/src/components/DeckSwiper/DeckSwiperCard.d.ts +13 -0
  28. package/lib/typescript/src/components/DeckSwiper/DeckSwiperCard.d.ts.map +1 -0
  29. package/lib/typescript/src/components/DeckSwiper/index.d.ts +3 -0
  30. package/lib/typescript/src/components/DeckSwiper/index.d.ts.map +1 -0
  31. package/lib/typescript/src/components/Picker/Picker.d.ts +1 -0
  32. package/lib/typescript/src/components/Picker/Picker.d.ts.map +1 -1
  33. package/lib/typescript/src/index.d.ts +1 -0
  34. package/lib/typescript/src/index.d.ts.map +1 -1
  35. package/lib/typescript/src/mappings/DatePicker.d.ts +10 -0
  36. package/lib/typescript/src/mappings/DatePicker.d.ts.map +1 -1
  37. package/lib/typescript/src/mappings/DeckSwiper.d.ts +86 -0
  38. package/lib/typescript/src/mappings/DeckSwiper.d.ts.map +1 -0
  39. package/lib/typescript/src/mappings/DeckSwiperCard.d.ts +16 -0
  40. package/lib/typescript/src/mappings/DeckSwiperCard.d.ts.map +1 -0
  41. package/lib/typescript/src/mappings/Picker.d.ts +10 -0
  42. package/lib/typescript/src/mappings/Picker.d.ts.map +1 -1
  43. package/package.json +4 -3
  44. package/src/components/DatePicker/DatePicker.js +8 -3
  45. package/src/components/DatePicker/DatePicker.tsx +10 -1
  46. package/src/components/DeckSwiper/DeckSwiper.js +35 -0
  47. package/src/components/DeckSwiper/DeckSwiper.tsx +94 -0
  48. package/src/components/DeckSwiper/DeckSwiperCard.js +21 -0
  49. package/src/components/DeckSwiper/DeckSwiperCard.tsx +41 -0
  50. package/src/components/DeckSwiper/index.js +2 -0
  51. package/src/components/DeckSwiper/index.tsx +2 -0
  52. package/src/components/Picker/Picker.js +9 -3
  53. package/src/components/Picker/Picker.tsx +14 -2
  54. package/src/index.js +1 -0
  55. package/src/index.tsx +2 -0
  56. package/src/mappings/DatePicker.js +8 -2
  57. package/src/mappings/DatePicker.ts +8 -1
  58. package/src/mappings/DeckSwiper.js +48 -0
  59. package/src/mappings/DeckSwiper.ts +57 -0
  60. package/src/mappings/DeckSwiperCard.js +16 -0
  61. package/src/mappings/DeckSwiperCard.ts +20 -0
  62. package/src/mappings/Picker.js +6 -1
  63. 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;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeDeckSwiper = _interopRequireDefault(require("react-native-deck-swiper"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const DeckSwiper = _ref => {
12
+ let {
13
+ onIndexChanged,
14
+ onEndReached,
15
+ startCardIndex = 0,
16
+ infiniteSwiping = false,
17
+ verticalEnabled = true,
18
+ horizontalEnabled = true,
19
+ visibleCardCount = 1,
20
+ style,
21
+ children
22
+ } = _ref;
23
+ const childrenArray = _react.default.useMemo(() => _react.default.Children.toArray(children), [children]);
24
+
25
+ // an array of indices based on children count
26
+ const cardsFillerData = _react.default.useMemo(() => Array.from(Array(childrenArray.length).keys()), [childrenArray]);
27
+
28
+ /**
29
+ * By default react-native-deck-swiper positions everything with absolute position.
30
+ * To overcome this, it is wrapped in a View to be able to add the component in any layout structure.
31
+ *
32
+ *
33
+ * Since all children of that View are absolutley positioned, the View does not have a height and still looks and behaves weird.
34
+ * To fix/mitage this without setting a static height, the first card is rendered in invisible state to take up space.
35
+ * This effectivley makes the default height of the container be the height of the first card.
36
+ */
37
+
38
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
39
+ style: styles.containerHeightFiller
40
+ }, childrenArray.length && childrenArray[0]), /*#__PURE__*/_react.default.createElement(_reactNativeDeckSwiper.default, {
41
+ cards: cardsFillerData,
42
+ renderCard: (_, i) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childrenArray[i]),
43
+ keyExtractor: card => card === null || card === void 0 ? void 0 : card.toString(),
44
+ containerStyle: _reactNative.StyleSheet.flatten([styles.cardsContainer, style]),
45
+ cardStyle: styles.card,
46
+ onSwiped: onIndexChanged,
47
+ onSwipedAll: onEndReached,
48
+ cardIndex: startCardIndex,
49
+ infinite: infiniteSwiping,
50
+ verticalSwipe: verticalEnabled,
51
+ horizontalSwipe: horizontalEnabled,
52
+ showSecondCard: visibleCardCount > 1,
53
+ stackSize: visibleCardCount,
54
+ backgroundColor: "transparent",
55
+ cardVerticalMargin: 0,
56
+ cardHorizontalMargin: 0
57
+ }));
58
+ };
59
+ const styles = _reactNative.StyleSheet.create({
60
+ cardsContainer: {
61
+ width: "100%"
62
+ },
63
+ card: {
64
+ left: 0,
65
+ right: 0,
66
+ width: "auto",
67
+ height: "auto"
68
+ },
69
+ containerHeightFiller: {
70
+ opacity: 0.0
71
+ }
72
+ });
73
+ var _default = DeckSwiper;
74
+ exports.default = _default;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _theming = require("../../theming");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const DeckSwiperCard = _ref => {
12
+ let {
13
+ style,
14
+ children,
15
+ theme
16
+ } = _ref;
17
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
18
+ style: [styles.card, {
19
+ backgroundColor: theme.colors.background,
20
+ borderColor: theme.colors.divider
21
+ }, style]
22
+ }, children);
23
+ };
24
+ const styles = _reactNative.StyleSheet.create({
25
+ card: {
26
+ flex: 1,
27
+ alignItems: "center",
28
+ justifyContent: "center",
29
+ padding: 20,
30
+ borderWidth: 2
31
+ }
32
+ });
33
+ var _default = (0, _theming.withTheme)(DeckSwiperCard);
34
+ exports.default = _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DeckSwiper", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _DeckSwiper.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "DeckSwiperCard", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _DeckSwiperCard.default;
16
+ }
17
+ });
18
+ var _DeckSwiper = _interopRequireDefault(require("./DeckSwiper"));
19
+ var _DeckSwiperCard = _interopRequireDefault(require("./DeckSwiperCard"));
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -9,6 +9,7 @@ var _reactNative = require("react-native");
9
9
  var _theming = require("../theming");
10
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
11
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
+ 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); }
12
13
  const Divider = _ref => {
13
14
  let {
14
15
  style,
@@ -18,20 +19,6 @@ const Divider = _ref => {
18
19
  },
19
20
  ...rest
20
21
  } = _ref;
21
- return /*#__PURE__*/React.createElement(_reactNative.View, {
22
- style: [{
23
- backgroundColor: color || colors.divider,
24
- height: _reactNative.StyleSheet.hairlineWidth
25
- }, style],
26
- ...rest
27
- });
28
- };
29
- var _default = (0, _theming.withTheme)(Divider);
30
- exports.default = _default;eme: {
31
- colors
32
- },
33
- ...rest
34
- } = _ref;
35
22
  return /*#__PURE__*/React.createElement(_reactNative.View, _extends({
36
23
  style: [{
37
24
  backgroundColor: color || colors.divider,
@@ -11,6 +11,7 @@ var _theming = require("../theming");
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ 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); }
14
15
  /* directly copied from https://github.com/callstack/react-native-paper/blob/main/src/components/Surface.tsx#L62 */
15
16
  const Elevation = _ref => {
16
17
  let {
@@ -27,24 +28,11 @@ const Elevation = _ref => {
27
28
  colors
28
29
  } = theme;
29
30
  const borderRadius = radius;
30
- return /*#__PURE__*/React.createElement(_reactNative.Animated.View, {
31
- ...rest,
31
+ return /*#__PURE__*/React.createElement(_reactNative.Animated.View, _extends({}, rest, {
32
32
  style: [{
33
33
  borderRadius,
34
34
  backgroundColor: colors.surface
35
35
  }, elevation ? (0, _shadow.default)(elevation) : null, style]
36
- }, /*#__PURE__*/React.createElement(_reactNative.View, {
37
- style: {
38
- overflow: "hidden",
39
- borderRadius
40
- }
41
- }, children));
42
- };
43
- var _default = (0, _theming.withTheme)(Elevation);
44
- exports.default = _default;
45
- borderRadius,
46
- backgroundColor: colors.surface
47
- }, elevation ? (0, _shadow.default)(elevation) : null, style]
48
36
  }), /*#__PURE__*/React.createElement(_reactNative.View, {
49
37
  style: {
50
38
  overflow: "hidden",
@@ -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,
@@ -123,6 +123,18 @@ Object.defineProperty(exports, "DatePicker", {
123
123
  return _DatePicker.default;
124
124
  }
125
125
  });
126
+ Object.defineProperty(exports, "DeckSwiper", {
127
+ enumerable: true,
128
+ get: function () {
129
+ return _DeckSwiper.DeckSwiper;
130
+ }
131
+ });
132
+ Object.defineProperty(exports, "DeckSwiperCard", {
133
+ enumerable: true,
134
+ get: function () {
135
+ return _DeckSwiper.DeckSwiperCard;
136
+ }
137
+ });
126
138
  Object.defineProperty(exports, "DefaultTheme", {
127
139
  enumerable: true,
128
140
  get: function () {
@@ -401,6 +413,7 @@ var _ActionSheet = require("./components/ActionSheet");
401
413
  var _Swiper = require("./components/Swiper");
402
414
  var _Layout = require("./components/Layout");
403
415
  var _index = require("./components/RadioButton/index");
416
+ var _DeckSwiper = require("./components/DeckSwiper");
404
417
  var _DatePicker = _interopRequireDefault(require("./components/DatePicker/DatePicker"));
405
418
  var _Picker = _interopRequireDefault(require("./components/Picker/Picker"));
406
419
  var _ProgressBar = _interopRequireDefault(require("./components/ProgressBar"));
@@ -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;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SEED_DATA = void 0;
7
+ var _types = require("@draftbit/types");
8
+ const SEED_DATA = {
9
+ name: "Deck Swiper",
10
+ tag: "DeckSwiper",
11
+ description: "Deck swiper container",
12
+ category: _types.COMPONENT_TYPES.swiper,
13
+ stylesPanelSections: _types.BLOCK_STYLES_SECTIONS,
14
+ layout: {
15
+ width: "100%"
16
+ },
17
+ triggers: [_types.Triggers.OnIndexChanged, _types.Triggers.OnEndReached],
18
+ props: {
19
+ onIndexChanged: (0, _types.createActionProp)({
20
+ label: "On index changed",
21
+ description: "Action to execute when swipe to new index"
22
+ }),
23
+ onEndReached: (0, _types.createActionProp)({
24
+ label: "On end reached",
25
+ description: "Action to execute when end of swiping reached"
26
+ }),
27
+ startCardIndex: (0, _types.createStaticNumberProp)({
28
+ label: "Start card index",
29
+ description: "Index of card to start swiping from",
30
+ defaultValue: 0
31
+ }),
32
+ infiniteSwiping: (0, _types.createStaticBoolProp)({
33
+ label: "Infinite swiping",
34
+ description: "Whether to infinitley loop through cards or not"
35
+ }),
36
+ verticalEnabled: (0, _types.createStaticBoolProp)({
37
+ label: "Vertical swipe enabled",
38
+ description: "Whether cards should be swipeable vertically or not",
39
+ defaultValue: true
40
+ }),
41
+ horizontalEnabled: (0, _types.createStaticBoolProp)({
42
+ label: "Horizontal swipe enabled",
43
+ description: "Whether cards should be swipeable horizontally or not",
44
+ defaultValue: true
45
+ }),
46
+ visibleCardCount: (0, _types.createStaticNumberProp)({
47
+ label: "Visible card count",
48
+ description: "Number of cards visible behind (and including) the current card",
49
+ defaultValue: 1,
50
+ min: 1,
51
+ step: 1
52
+ })
53
+ }
54
+ };
55
+ exports.SEED_DATA = SEED_DATA;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SEED_DATA = void 0;
7
+ var _types = require("@draftbit/types");
8
+ const SEED_DATA = {
9
+ name: "Deck Swiper Card",
10
+ tag: "DeckSwiperCard",
11
+ description: "Single Deck Swiper Card item to be used in DeckSwiper",
12
+ category: _types.COMPONENT_TYPES.swiper,
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
+ },
21
+ props: {}
22
+ };
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;
@@ -0,0 +1,66 @@
1
+ import React from "react";
2
+ import { StyleSheet, View } from "react-native";
3
+ import DeckSwiperComponent from "react-native-deck-swiper";
4
+ const DeckSwiper = _ref => {
5
+ let {
6
+ onIndexChanged,
7
+ onEndReached,
8
+ startCardIndex = 0,
9
+ infiniteSwiping = false,
10
+ verticalEnabled = true,
11
+ horizontalEnabled = true,
12
+ visibleCardCount = 1,
13
+ style,
14
+ children
15
+ } = _ref;
16
+ const childrenArray = React.useMemo(() => React.Children.toArray(children), [children]);
17
+
18
+ // an array of indices based on children count
19
+ const cardsFillerData = React.useMemo(() => Array.from(Array(childrenArray.length).keys()), [childrenArray]);
20
+
21
+ /**
22
+ * By default react-native-deck-swiper positions everything with absolute position.
23
+ * To overcome this, it is wrapped in a View to be able to add the component in any layout structure.
24
+ *
25
+ *
26
+ * Since all children of that View are absolutley positioned, the View does not have a height and still looks and behaves weird.
27
+ * To fix/mitage this without setting a static height, the first card is rendered in invisible state to take up space.
28
+ * This effectivley makes the default height of the container be the height of the first card.
29
+ */
30
+
31
+ return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(View, {
32
+ style: styles.containerHeightFiller
33
+ }, childrenArray.length && childrenArray[0]), /*#__PURE__*/React.createElement(DeckSwiperComponent, {
34
+ cards: cardsFillerData,
35
+ renderCard: (_, i) => /*#__PURE__*/React.createElement(React.Fragment, null, childrenArray[i]),
36
+ keyExtractor: card => card === null || card === void 0 ? void 0 : card.toString(),
37
+ containerStyle: StyleSheet.flatten([styles.cardsContainer, style]),
38
+ cardStyle: styles.card,
39
+ onSwiped: onIndexChanged,
40
+ onSwipedAll: onEndReached,
41
+ cardIndex: startCardIndex,
42
+ infinite: infiniteSwiping,
43
+ verticalSwipe: verticalEnabled,
44
+ horizontalSwipe: horizontalEnabled,
45
+ showSecondCard: visibleCardCount > 1,
46
+ stackSize: visibleCardCount,
47
+ backgroundColor: "transparent",
48
+ cardVerticalMargin: 0,
49
+ cardHorizontalMargin: 0
50
+ }));
51
+ };
52
+ const styles = StyleSheet.create({
53
+ cardsContainer: {
54
+ width: "100%"
55
+ },
56
+ card: {
57
+ left: 0,
58
+ right: 0,
59
+ width: "auto",
60
+ height: "auto"
61
+ },
62
+ containerHeightFiller: {
63
+ opacity: 0.0
64
+ }
65
+ });
66
+ export default DeckSwiper;
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { View, StyleSheet } from "react-native";
3
+ import { withTheme } from "../../theming";
4
+ const DeckSwiperCard = _ref => {
5
+ let {
6
+ style,
7
+ children,
8
+ theme
9
+ } = _ref;
10
+ return /*#__PURE__*/React.createElement(View, {
11
+ style: [styles.card, {
12
+ backgroundColor: theme.colors.background,
13
+ borderColor: theme.colors.divider
14
+ }, style]
15
+ }, children);
16
+ };
17
+ const styles = StyleSheet.create({
18
+ card: {
19
+ flex: 1,
20
+ alignItems: "center",
21
+ justifyContent: "center",
22
+ padding: 20,
23
+ borderWidth: 2
24
+ }
25
+ });
26
+ export default withTheme(DeckSwiperCard);
@@ -0,0 +1,2 @@
1
+ export { default as DeckSwiper } from "./DeckSwiper";
2
+ export { default as DeckSwiperCard } from "./DeckSwiperCard";
@@ -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,
@@ -31,6 +31,7 @@ export { ActionSheet, ActionSheetItem, ActionSheetCancel } from "./components/Ac
31
31
  export { Swiper, SwiperItem } from "./components/Swiper";
32
32
  export { Center, Circle, Square, Row, Stack, Spacer } from "./components/Layout";
33
33
  export { RadioButton, RadioButtonGroup, RadioButtonRow, RadioButtonFieldGroup } from "./components/RadioButton/index";
34
+ export { DeckSwiper, DeckSwiperCard } from "./components/DeckSwiper";
34
35
 
35
36
  /* Deprecated: Fix or Delete! */
36
37
  export { default as DatePicker } from "./components/DatePicker/DatePicker";
@@ -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
  }];