@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
@@ -0,0 +1,41 @@
1
+ import React from "react";
2
+ import { View, StyleSheet, StyleProp, ViewStyle } from "react-native";
3
+ import type { Theme } from "../../styles/DefaultTheme";
4
+ import { withTheme } from "../../theming";
5
+
6
+ export interface DeckSwiperCardProps {
7
+ style?: StyleProp<ViewStyle>;
8
+ children: React.ReactNode;
9
+ theme: Theme;
10
+ }
11
+
12
+ const DeckSwiperCard: React.FC<DeckSwiperCardProps> = ({
13
+ style,
14
+ children,
15
+ theme,
16
+ }) => (
17
+ <View
18
+ style={[
19
+ styles.card,
20
+ {
21
+ backgroundColor: theme.colors.background,
22
+ borderColor: theme.colors.divider,
23
+ },
24
+ style,
25
+ ]}
26
+ >
27
+ {children}
28
+ </View>
29
+ );
30
+
31
+ const styles = StyleSheet.create({
32
+ card: {
33
+ flex: 1,
34
+ alignItems: "center",
35
+ justifyContent: "center",
36
+ padding: 20,
37
+ borderWidth: 2,
38
+ },
39
+ });
40
+
41
+ export default withTheme(DeckSwiperCard);
@@ -0,0 +1,2 @@
1
+ export { default as DeckSwiper } from "./DeckSwiper";
2
+ export { default as DeckSwiperCard } from "./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";
@@ -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}
package/src/index.js CHANGED
@@ -31,6 +31,7 @@ export { ActionSheet, ActionSheetItem, ActionSheetCancel, } from "./components/A
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
  /* Deprecated: Fix or Delete! */
35
36
  export { default as DatePicker } from "./components/DatePicker/DatePicker";
36
37
  export { default as Picker } from "./components/Picker/Picker";
package/src/index.tsx CHANGED
@@ -51,6 +51,8 @@ export {
51
51
  RadioButtonFieldGroup,
52
52
  } from "./components/RadioButton/index";
53
53
 
54
+ export { DeckSwiper, DeckSwiperCard } from "./components/DeckSwiper";
55
+
54
56
  /* Deprecated: Fix or Delete! */
55
57
  export { default as DatePicker } from "./components/DatePicker/DatePicker";
56
58
  export { default as Picker } from "./components/Picker/Picker";
@@ -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
  ];
@@ -0,0 +1,48 @@
1
+ import { COMPONENT_TYPES, Triggers, createActionProp, createStaticNumberProp, createStaticBoolProp, BLOCK_STYLES_SECTIONS, } from "@draftbit/types";
2
+ export const SEED_DATA = {
3
+ name: "Deck Swiper",
4
+ tag: "DeckSwiper",
5
+ description: "Deck swiper container",
6
+ category: COMPONENT_TYPES.swiper,
7
+ stylesPanelSections: BLOCK_STYLES_SECTIONS,
8
+ layout: {
9
+ width: "100%",
10
+ },
11
+ triggers: [Triggers.OnIndexChanged, Triggers.OnEndReached],
12
+ props: {
13
+ onIndexChanged: createActionProp({
14
+ label: "On index changed",
15
+ description: "Action to execute when swipe to new index",
16
+ }),
17
+ onEndReached: createActionProp({
18
+ label: "On end reached",
19
+ description: "Action to execute when end of swiping reached",
20
+ }),
21
+ startCardIndex: createStaticNumberProp({
22
+ label: "Start card index",
23
+ description: "Index of card to start swiping from",
24
+ defaultValue: 0,
25
+ }),
26
+ infiniteSwiping: createStaticBoolProp({
27
+ label: "Infinite swiping",
28
+ description: "Whether to infinitley loop through cards or not",
29
+ }),
30
+ verticalEnabled: createStaticBoolProp({
31
+ label: "Vertical swipe enabled",
32
+ description: "Whether cards should be swipeable vertically or not",
33
+ defaultValue: true,
34
+ }),
35
+ horizontalEnabled: createStaticBoolProp({
36
+ label: "Horizontal swipe enabled",
37
+ description: "Whether cards should be swipeable horizontally or not",
38
+ defaultValue: true,
39
+ }),
40
+ visibleCardCount: createStaticNumberProp({
41
+ label: "Visible card count",
42
+ description: "Number of cards visible behind (and including) the current card",
43
+ defaultValue: 1,
44
+ min: 1,
45
+ step: 1,
46
+ }),
47
+ },
48
+ };
@@ -0,0 +1,57 @@
1
+ import {
2
+ COMPONENT_TYPES,
3
+ Triggers,
4
+ createActionProp,
5
+ createStaticNumberProp,
6
+ createStaticBoolProp,
7
+ BLOCK_STYLES_SECTIONS,
8
+ } from "@draftbit/types";
9
+
10
+ export const SEED_DATA = {
11
+ name: "Deck Swiper",
12
+ tag: "DeckSwiper",
13
+ description: "Deck swiper container",
14
+ category: COMPONENT_TYPES.swiper,
15
+ stylesPanelSections: BLOCK_STYLES_SECTIONS,
16
+ layout: {
17
+ width: "100%",
18
+ },
19
+ triggers: [Triggers.OnIndexChanged, Triggers.OnEndReached],
20
+ props: {
21
+ onIndexChanged: createActionProp({
22
+ label: "On index changed",
23
+ description: "Action to execute when swipe to new index",
24
+ }),
25
+ onEndReached: createActionProp({
26
+ label: "On end reached",
27
+ description: "Action to execute when end of swiping reached",
28
+ }),
29
+ startCardIndex: createStaticNumberProp({
30
+ label: "Start card index",
31
+ description: "Index of card to start swiping from",
32
+ defaultValue: 0,
33
+ }),
34
+ infiniteSwiping: createStaticBoolProp({
35
+ label: "Infinite swiping",
36
+ description: "Whether to infinitley loop through cards or not",
37
+ }),
38
+ verticalEnabled: createStaticBoolProp({
39
+ label: "Vertical swipe enabled",
40
+ description: "Whether cards should be swipeable vertically or not",
41
+ defaultValue: true,
42
+ }),
43
+ horizontalEnabled: createStaticBoolProp({
44
+ label: "Horizontal swipe enabled",
45
+ description: "Whether cards should be swipeable horizontally or not",
46
+ defaultValue: true,
47
+ }),
48
+ visibleCardCount: createStaticNumberProp({
49
+ label: "Visible card count",
50
+ description:
51
+ "Number of cards visible behind (and including) the current card",
52
+ defaultValue: 1,
53
+ min: 1,
54
+ step: 1,
55
+ }),
56
+ },
57
+ };
@@ -0,0 +1,16 @@
1
+ import { COMPONENT_TYPES, CONTAINER_COMPONENT_STYLES_SECTIONS, } from "@draftbit/types";
2
+ export const SEED_DATA = {
3
+ name: "Deck Swiper Card",
4
+ tag: "DeckSwiperCard",
5
+ description: "Single Deck Swiper Card item to be used in DeckSwiper",
6
+ category: COMPONENT_TYPES.swiper,
7
+ stylesPanelSections: CONTAINER_COMPONENT_STYLES_SECTIONS,
8
+ layout: {
9
+ flex: 1,
10
+ alignItems: "center",
11
+ justifyContent: "center",
12
+ padding: 20,
13
+ borderWidth: 2,
14
+ },
15
+ props: {},
16
+ };
@@ -0,0 +1,20 @@
1
+ import {
2
+ COMPONENT_TYPES,
3
+ CONTAINER_COMPONENT_STYLES_SECTIONS,
4
+ } from "@draftbit/types";
5
+
6
+ export const SEED_DATA = {
7
+ name: "Deck Swiper Card",
8
+ tag: "DeckSwiperCard",
9
+ description: "Single Deck Swiper Card item to be used in DeckSwiper",
10
+ category: COMPONENT_TYPES.swiper,
11
+ stylesPanelSections: CONTAINER_COMPONENT_STYLES_SECTIONS,
12
+ layout: {
13
+ flex: 1,
14
+ alignItems: "center",
15
+ justifyContent: "center",
16
+ padding: 20,
17
+ borderWidth: 2,
18
+ },
19
+ props: {},
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
  },