@draftbit/core 46.8.2-e0b610.2 → 46.8.2-e916bf.2

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 (51) hide show
  1. package/lib/commonjs/components/Elevation.js +2 -14
  2. package/lib/commonjs/components/TabView/TabView.js +122 -0
  3. package/lib/commonjs/components/TabView/TabViewItem.js +25 -0
  4. package/lib/commonjs/components/TabView/index.js +20 -0
  5. package/lib/commonjs/index.js +13 -7
  6. package/lib/commonjs/mappings/TabView.js +77 -0
  7. package/lib/commonjs/mappings/TabViewItem.js +37 -0
  8. package/lib/module/components/AspectRatio.js +1 -18
  9. package/lib/module/components/Checkbox/CheckboxGroupRow.js +5 -24
  10. package/lib/module/components/TabView/TabView.js +113 -0
  11. package/lib/module/components/TabView/TabViewItem.js +20 -0
  12. package/lib/module/components/TabView/index.js +2 -0
  13. package/lib/module/index.js +1 -1
  14. package/lib/module/mappings/TabView.js +70 -0
  15. package/lib/module/mappings/TabViewItem.js +30 -0
  16. package/lib/typescript/src/components/TabView/TabView.d.ts +26 -0
  17. package/lib/typescript/src/components/TabView/TabView.d.ts.map +1 -0
  18. package/lib/typescript/src/components/TabView/TabViewItem.d.ts +11 -0
  19. package/lib/typescript/src/components/TabView/TabViewItem.d.ts.map +1 -0
  20. package/lib/typescript/src/components/TabView/index.d.ts +3 -0
  21. package/lib/typescript/src/components/TabView/index.d.ts.map +1 -0
  22. package/lib/typescript/src/index.d.ts +1 -1
  23. package/lib/typescript/src/index.d.ts.map +1 -1
  24. package/lib/typescript/src/mappings/{Shadow.d.ts → TabView.d.ts} +35 -82
  25. package/lib/typescript/src/mappings/TabView.d.ts.map +1 -0
  26. package/lib/typescript/src/mappings/TabViewItem.d.ts +25 -0
  27. package/lib/typescript/src/mappings/TabViewItem.d.ts.map +1 -0
  28. package/package.json +5 -4
  29. package/src/components/TabView/TabView.js +58 -0
  30. package/src/components/TabView/TabView.tsx +151 -0
  31. package/src/components/TabView/TabViewItem.js +11 -0
  32. package/src/components/TabView/TabViewItem.tsx +25 -0
  33. package/src/components/TabView/index.js +2 -0
  34. package/src/components/TabView/index.tsx +2 -0
  35. package/src/index.js +1 -1
  36. package/src/index.tsx +2 -2
  37. package/src/mappings/TabView.js +76 -0
  38. package/src/mappings/TabView.ts +86 -0
  39. package/src/mappings/TabViewItem.js +30 -0
  40. package/src/mappings/TabViewItem.ts +38 -0
  41. package/lib/commonjs/components/Shadow.js +0 -46
  42. package/lib/commonjs/mappings/Shadow.js +0 -94
  43. package/lib/module/components/Shadow.js +0 -38
  44. package/lib/module/mappings/Shadow.js +0 -87
  45. package/lib/typescript/src/components/Shadow.d.ts +0 -24
  46. package/lib/typescript/src/components/Shadow.d.ts.map +0 -1
  47. package/lib/typescript/src/mappings/Shadow.d.ts.map +0 -1
  48. package/src/components/Shadow.js +0 -16
  49. package/src/components/Shadow.tsx +0 -62
  50. package/src/mappings/Shadow.js +0 -87
  51. package/src/mappings/Shadow.ts +0 -95
@@ -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",
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeTabView = require("react-native-tab-view");
10
+ var _theming = require("../../theming");
11
+ var _utilities = require("../../utilities");
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
+ 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); }
15
+ const TabViewComponent = _ref => {
16
+ let {
17
+ Icon,
18
+ onIndexChanged,
19
+ onEndReached,
20
+ tabBarPosition,
21
+ keyboardDismissMode,
22
+ swipeEnabled,
23
+ scrollEnabled,
24
+ activeColor,
25
+ inactiveColor,
26
+ pressColor,
27
+ indicatorColor,
28
+ tabsBackgroundColor,
29
+ style,
30
+ theme,
31
+ children
32
+ } = _ref;
33
+ const [index, setIndex] = React.useState(0);
34
+ const [routes, setRoutes] = React.useState([]);
35
+ const [tabScenes, setTabScenes] = React.useState({});
36
+ const {
37
+ textStyles,
38
+ viewStyles
39
+ } = (0, _utilities.extractStyles)(style);
40
+
41
+ //Check type of child using props
42
+ //Regular '.type' cannot work because Draftbit strips the type in Draft view
43
+ const instanceOfTabViewItemProps = object => {
44
+ return "title" in object;
45
+ };
46
+
47
+ //Populate routes and scenes based on children
48
+ React.useEffect(() => {
49
+ const newRoutes = [];
50
+ const scenes = {};
51
+ React.Children.toArray(children).filter(child => /*#__PURE__*/React.isValidElement(child) && instanceOfTabViewItemProps(child.props)).forEach((item, idx) => {
52
+ const child = item;
53
+ newRoutes.push({
54
+ key: idx.toString(),
55
+ title: child.props.title,
56
+ icon: child.props.icon,
57
+ accessibilityLabel: child.props.accessibilityLabel
58
+ });
59
+ scenes[idx] = () => child;
60
+ });
61
+ setRoutes(newRoutes);
62
+ setTabScenes(scenes);
63
+ }, [children]);
64
+ const indexChangeHandler = i => {
65
+ setIndex(i);
66
+ onIndexChanged === null || onIndexChanged === void 0 ? void 0 : onIndexChanged(i);
67
+ if (i === routes.length) {
68
+ onEndReached === null || onEndReached === void 0 ? void 0 : onEndReached();
69
+ }
70
+ };
71
+ const renderTabBar = props => {
72
+ return /*#__PURE__*/React.createElement(_reactNativeTabView.TabBar, _extends({}, props, {
73
+ activeColor: activeColor || theme.colors.primary,
74
+ inactiveColor: inactiveColor || theme.colors.divider,
75
+ pressColor: pressColor || theme.colors.primary,
76
+ scrollEnabled: scrollEnabled,
77
+ indicatorStyle: {
78
+ backgroundColor: indicatorColor || theme.colors.primary
79
+ },
80
+ labelStyle: textStyles,
81
+ renderIcon: _ref2 => {
82
+ let {
83
+ route,
84
+ color
85
+ } = _ref2;
86
+ return route !== null && route !== void 0 && route.icon ? /*#__PURE__*/React.createElement(Icon, {
87
+ name: route.icon,
88
+ color: color,
89
+ size: 16
90
+ }) : null;
91
+ },
92
+ style: {
93
+ backgroundColor: tabsBackgroundColor || theme.colors.background
94
+ }
95
+ }));
96
+ };
97
+
98
+ //Cannot render TabView without at least one tab
99
+ if (!routes.length) {
100
+ return /*#__PURE__*/React.createElement(React.Fragment, null);
101
+ }
102
+ return /*#__PURE__*/React.createElement(_reactNativeTabView.TabView, {
103
+ style: [styles.tabView, viewStyles],
104
+ navigationState: {
105
+ index,
106
+ routes
107
+ },
108
+ renderScene: (0, _reactNativeTabView.SceneMap)(tabScenes),
109
+ renderTabBar: renderTabBar,
110
+ onIndexChange: indexChangeHandler,
111
+ tabBarPosition: tabBarPosition,
112
+ keyboardDismissMode: keyboardDismissMode,
113
+ swipeEnabled: swipeEnabled
114
+ });
115
+ };
116
+ const styles = _reactNative.StyleSheet.create({
117
+ tabView: {
118
+ flex: 1
119
+ }
120
+ });
121
+ var _default = (0, _theming.withTheme)(TabViewComponent);
122
+ exports.default = _default;
@@ -0,0 +1,25 @@
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
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ const TabViewItem = _ref => {
11
+ let {
12
+ style,
13
+ children
14
+ } = _ref;
15
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
16
+ style: [styles.parentContainer, style]
17
+ }, children);
18
+ };
19
+ const styles = _reactNative.StyleSheet.create({
20
+ parentContainer: {
21
+ flex: 1
22
+ }
23
+ });
24
+ var _default = TabViewItem;
25
+ exports.default = _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "TabView", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _TabView.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "TabViewItem", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _TabViewItem.default;
16
+ }
17
+ });
18
+ var _TabView = _interopRequireDefault(require("./TabView"));
19
+ var _TabViewItem = _interopRequireDefault(require("./TabViewItem"));
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -273,12 +273,6 @@ Object.defineProperty(exports, "ScreenContainer", {
273
273
  return _ScreenContainer.default;
274
274
  }
275
275
  });
276
- Object.defineProperty(exports, "Shadow", {
277
- enumerable: true,
278
- get: function () {
279
- return _Shadow.default;
280
- }
281
- });
282
276
  Object.defineProperty(exports, "Slider", {
283
277
  enumerable: true,
284
278
  get: function () {
@@ -345,6 +339,18 @@ Object.defineProperty(exports, "SwitchRow", {
345
339
  return _Switch.SwitchRow;
346
340
  }
347
341
  });
342
+ Object.defineProperty(exports, "TabView", {
343
+ enumerable: true,
344
+ get: function () {
345
+ return _TabView.TabView;
346
+ }
347
+ });
348
+ Object.defineProperty(exports, "TabViewItem", {
349
+ enumerable: true,
350
+ get: function () {
351
+ return _TabView.TabViewItem;
352
+ }
353
+ });
348
354
  Object.defineProperty(exports, "TextField", {
349
355
  enumerable: true,
350
356
  get: function () {
@@ -419,8 +425,8 @@ var _ActionSheet = require("./components/ActionSheet");
419
425
  var _Swiper = require("./components/Swiper");
420
426
  var _Layout = require("./components/Layout");
421
427
  var _index = require("./components/RadioButton/index");
422
- var _Shadow = _interopRequireDefault(require("./components/Shadow"));
423
428
  var _DeckSwiper = require("./components/DeckSwiper");
429
+ var _TabView = require("./components/TabView");
424
430
  var _DatePicker = _interopRequireDefault(require("./components/DatePicker/DatePicker"));
425
431
  var _Picker = _interopRequireDefault(require("./components/Picker/Picker"));
426
432
  var _ProgressBar = _interopRequireDefault(require("./components/ProgressBar"));
@@ -0,0 +1,77 @@
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: "Tab View",
10
+ tag: "TabView",
11
+ description: "Tab view container",
12
+ category: _types.COMPONENT_TYPES.swiper,
13
+ stylesPanelSections: [_types.StylesPanelSections.Size, _types.StylesPanelSections.MarginsAndPaddings, _types.StylesPanelSections.Position, _types.StylesPanelSections.Effects, _types.StylesPanelSections.LayoutSelectedItem, _types.StylesPanelSections.Background, _types.StylesPanelSections.Typography],
14
+ layout: {
15
+ flex: 1
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
+ tabBarPosition: (0, _types.createTextEnumProp)({
28
+ label: "Tab Bar Position",
29
+ description: "Position of tab bar",
30
+ options: ["top", "bottom"],
31
+ defaultValue: "top"
32
+ }),
33
+ keyboardDismissMode: (0, _types.createTextEnumProp)({
34
+ label: "Keyboard Dismiss Mode",
35
+ description: "Keyboard Dismiss Mode",
36
+ options: ["auto", "on-drag", "none"],
37
+ defaultValue: "auto"
38
+ }),
39
+ swipeEnabled: (0, _types.createStaticBoolProp)({
40
+ label: "Swipe Enabled",
41
+ description: "Whether swiping is enabled or not",
42
+ defaultValue: true
43
+ }),
44
+ scrollEnabled: (0, _types.createStaticBoolProp)({
45
+ label: "Tab Scroll Enabled",
46
+ description: "Whether scrolling of tabs is enabled or not",
47
+ defaultValue: false
48
+ }),
49
+ activeColor: (0, _types.createColorProp)({
50
+ label: "Active Color",
51
+ description: "Color of icon and text of active tab",
52
+ defaultValue: "primary"
53
+ }),
54
+ inactiveColor: (0, _types.createColorProp)({
55
+ label: "Inactive Color",
56
+ description: "Color of icon and text of inactive tab(s)",
57
+ defaultValue: null
58
+ }),
59
+ pressColor: (0, _types.createColorProp)({
60
+ label: "Press Color",
61
+ description: "Color of ripple when pressed",
62
+ defaultValue: "primary",
63
+ group: _types.GROUPS.android
64
+ }),
65
+ indicatorColor: (0, _types.createColorProp)({
66
+ label: "Indicator Color",
67
+ description: "Color of indicator",
68
+ defaultValue: "primary"
69
+ }),
70
+ tabsBackgroundColor: (0, _types.createColorProp)({
71
+ label: "Tabs Background Color",
72
+ description: "Background color of tabs container",
73
+ defaultValue: "background"
74
+ })
75
+ }
76
+ };
77
+ exports.SEED_DATA = SEED_DATA;
@@ -0,0 +1,37 @@
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: "Tab View Item",
10
+ tag: "TabViewItem",
11
+ description: "Single Tab View item to be used in TabView. Each item represents a single tab and its content",
12
+ category: _types.COMPONENT_TYPES.swiper,
13
+ stylesPanelSections: _types.CONTAINER_COMPONENT_STYLES_SECTIONS,
14
+ layout: {
15
+ flex: 1
16
+ },
17
+ props: {
18
+ title: (0, _types.createTextProp)({
19
+ label: "Title",
20
+ description: "Title of tab item",
21
+ defaultValue: "Title",
22
+ required: true,
23
+ group: _types.GROUPS.basic
24
+ }),
25
+ icon: (0, _types.createIconProp)({
26
+ defaultValue: null,
27
+ required: false
28
+ }),
29
+ accessibilityLabel: (0, _types.createTextProp)({
30
+ label: "Accessibility Label",
31
+ description: "Accessibility Label",
32
+ defaultValue: null,
33
+ group: _types.GROUPS.accessibility
34
+ })
35
+ }
36
+ };
37
+ exports.SEED_DATA = SEED_DATA;
@@ -1,3 +1,4 @@
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); }
1
2
  import React from "react";
2
3
  import { View, StyleSheet } from "react-native";
3
4
  const AspectRatio = props => {
@@ -26,24 +27,6 @@ const AspectRatio = props => {
26
27
  });
27
28
  }
28
29
  }
29
- return /*#__PURE__*/React.createElement(View, {
30
- ...props,
31
- style: style,
32
- onLayout: _ref => {
33
- let {
34
- nativeEvent: {
35
- layout: l
36
- }
37
- } = _ref;
38
- return setLayout(l);
39
- }
40
- }, props.children);
41
- };
42
- export default AspectRatio;idth,
43
- height: width * (1 / aspectRatio)
44
- });
45
- }
46
- }
47
30
  return /*#__PURE__*/React.createElement(View, _extends({}, props, {
48
31
  style: style,
49
32
  onLayout: _ref => {
@@ -1,3 +1,4 @@
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); }
1
2
  import * as React from "react";
2
3
  import { StyleSheet, View, Platform, Pressable } from "react-native";
3
4
  import Checkbox from "./Checkbox";
@@ -5,7 +6,7 @@ import Text from "../Text";
5
6
  import { useCheckboxGroupContext } from "./context";
6
7
  import { Direction as GroupDirection } from "./context";
7
8
  import { extractStyles } from "../../utilities";
8
- export var Direction;
9
+ export let Direction;
9
10
  (function (Direction) {
10
11
  Direction["Row"] = "row";
11
12
  Direction["RowReverse"] = "row-reverse";
@@ -62,14 +63,13 @@ const CheckboxGroupRow = _ref => {
62
63
  textStyles,
63
64
  viewStyles
64
65
  } = extractStyles(style);
65
- return /*#__PURE__*/React.createElement(Pressable, {
66
+ return /*#__PURE__*/React.createElement(Pressable, _extends({
66
67
  onPress: handlePress,
67
68
  style: [styles.mainParent, {
68
69
  flexDirection: direction
69
70
  }, viewStyles],
70
- disabled: disabled,
71
- ...rest
72
- }, /*#__PURE__*/React.createElement(View, {
71
+ disabled: disabled
72
+ }, rest), /*#__PURE__*/React.createElement(View, {
73
73
  style: [styles.label, {
74
74
  alignItems: direction === Direction.Row ? "flex-start" : "flex-end"
75
75
  }, labelContainerStyle]
@@ -107,23 +107,4 @@ const styles = StyleSheet.create({
107
107
  flex: 3
108
108
  }
109
109
  });
110
- export default CheckboxGroupRow;reate({
111
- mainParent: {
112
- alignItems: "center",
113
- justifyContent: "space-around",
114
- paddingStart: 20,
115
- minHeight: 50,
116
- paddingEnd: 20,
117
- display: "flex",
118
- ...Platform.select({
119
- web: {
120
- cursor: "pointer",
121
- userSelect: "none"
122
- }
123
- })
124
- },
125
- label: {
126
- flex: 3
127
- }
128
- });
129
110
  export default CheckboxGroupRow;
@@ -0,0 +1,113 @@
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
+ import * as React from "react";
3
+ import { StyleSheet } from "react-native";
4
+ import { TabView, TabBar, SceneMap } from "react-native-tab-view";
5
+ import { withTheme } from "../../theming";
6
+ import { extractStyles } from "../../utilities";
7
+ const TabViewComponent = _ref => {
8
+ let {
9
+ Icon,
10
+ onIndexChanged,
11
+ onEndReached,
12
+ tabBarPosition,
13
+ keyboardDismissMode,
14
+ swipeEnabled,
15
+ scrollEnabled,
16
+ activeColor,
17
+ inactiveColor,
18
+ pressColor,
19
+ indicatorColor,
20
+ tabsBackgroundColor,
21
+ style,
22
+ theme,
23
+ children
24
+ } = _ref;
25
+ const [index, setIndex] = React.useState(0);
26
+ const [routes, setRoutes] = React.useState([]);
27
+ const [tabScenes, setTabScenes] = React.useState({});
28
+ const {
29
+ textStyles,
30
+ viewStyles
31
+ } = extractStyles(style);
32
+
33
+ //Check type of child using props
34
+ //Regular '.type' cannot work because Draftbit strips the type in Draft view
35
+ const instanceOfTabViewItemProps = object => {
36
+ return "title" in object;
37
+ };
38
+
39
+ //Populate routes and scenes based on children
40
+ React.useEffect(() => {
41
+ const newRoutes = [];
42
+ const scenes = {};
43
+ React.Children.toArray(children).filter(child => /*#__PURE__*/React.isValidElement(child) && instanceOfTabViewItemProps(child.props)).forEach((item, idx) => {
44
+ const child = item;
45
+ newRoutes.push({
46
+ key: idx.toString(),
47
+ title: child.props.title,
48
+ icon: child.props.icon,
49
+ accessibilityLabel: child.props.accessibilityLabel
50
+ });
51
+ scenes[idx] = () => child;
52
+ });
53
+ setRoutes(newRoutes);
54
+ setTabScenes(scenes);
55
+ }, [children]);
56
+ const indexChangeHandler = i => {
57
+ setIndex(i);
58
+ onIndexChanged === null || onIndexChanged === void 0 ? void 0 : onIndexChanged(i);
59
+ if (i === routes.length) {
60
+ onEndReached === null || onEndReached === void 0 ? void 0 : onEndReached();
61
+ }
62
+ };
63
+ const renderTabBar = props => {
64
+ return /*#__PURE__*/React.createElement(TabBar, _extends({}, props, {
65
+ activeColor: activeColor || theme.colors.primary,
66
+ inactiveColor: inactiveColor || theme.colors.divider,
67
+ pressColor: pressColor || theme.colors.primary,
68
+ scrollEnabled: scrollEnabled,
69
+ indicatorStyle: {
70
+ backgroundColor: indicatorColor || theme.colors.primary
71
+ },
72
+ labelStyle: textStyles,
73
+ renderIcon: _ref2 => {
74
+ let {
75
+ route,
76
+ color
77
+ } = _ref2;
78
+ return route !== null && route !== void 0 && route.icon ? /*#__PURE__*/React.createElement(Icon, {
79
+ name: route.icon,
80
+ color: color,
81
+ size: 16
82
+ }) : null;
83
+ },
84
+ style: {
85
+ backgroundColor: tabsBackgroundColor || theme.colors.background
86
+ }
87
+ }));
88
+ };
89
+
90
+ //Cannot render TabView without at least one tab
91
+ if (!routes.length) {
92
+ return /*#__PURE__*/React.createElement(React.Fragment, null);
93
+ }
94
+ return /*#__PURE__*/React.createElement(TabView, {
95
+ style: [styles.tabView, viewStyles],
96
+ navigationState: {
97
+ index,
98
+ routes
99
+ },
100
+ renderScene: SceneMap(tabScenes),
101
+ renderTabBar: renderTabBar,
102
+ onIndexChange: indexChangeHandler,
103
+ tabBarPosition: tabBarPosition,
104
+ keyboardDismissMode: keyboardDismissMode,
105
+ swipeEnabled: swipeEnabled
106
+ });
107
+ };
108
+ const styles = StyleSheet.create({
109
+ tabView: {
110
+ flex: 1
111
+ }
112
+ });
113
+ export default withTheme(TabViewComponent);
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { StyleSheet, View } from "react-native";
3
+
4
+ //Props used by parent (TabView) to create tabs
5
+
6
+ const TabViewItem = _ref => {
7
+ let {
8
+ style,
9
+ children
10
+ } = _ref;
11
+ return /*#__PURE__*/React.createElement(View, {
12
+ style: [styles.parentContainer, style]
13
+ }, children);
14
+ };
15
+ const styles = StyleSheet.create({
16
+ parentContainer: {
17
+ flex: 1
18
+ }
19
+ });
20
+ export default TabViewItem;
@@ -0,0 +1,2 @@
1
+ export { default as TabView } from "./TabView";
2
+ export { default as TabViewItem } from "./TabViewItem";
@@ -31,8 +31,8 @@ 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 { default as Shadow } from "./components/Shadow";
35
34
  export { DeckSwiper, DeckSwiperCard } from "./components/DeckSwiper";
35
+ export { TabView, TabViewItem } from "./components/TabView";
36
36
 
37
37
  /* Deprecated: Fix or Delete! */
38
38
  export { default as DatePicker } from "./components/DatePicker/DatePicker";
@@ -0,0 +1,70 @@
1
+ import { COMPONENT_TYPES, createTextEnumProp, createColorProp, StylesPanelSections, Triggers, createActionProp, createStaticBoolProp, GROUPS } from "@draftbit/types";
2
+ export const SEED_DATA = {
3
+ name: "Tab View",
4
+ tag: "TabView",
5
+ description: "Tab view container",
6
+ category: COMPONENT_TYPES.swiper,
7
+ stylesPanelSections: [StylesPanelSections.Size, StylesPanelSections.MarginsAndPaddings, StylesPanelSections.Position, StylesPanelSections.Effects, StylesPanelSections.LayoutSelectedItem, StylesPanelSections.Background, StylesPanelSections.Typography],
8
+ layout: {
9
+ flex: 1
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
+ tabBarPosition: createTextEnumProp({
22
+ label: "Tab Bar Position",
23
+ description: "Position of tab bar",
24
+ options: ["top", "bottom"],
25
+ defaultValue: "top"
26
+ }),
27
+ keyboardDismissMode: createTextEnumProp({
28
+ label: "Keyboard Dismiss Mode",
29
+ description: "Keyboard Dismiss Mode",
30
+ options: ["auto", "on-drag", "none"],
31
+ defaultValue: "auto"
32
+ }),
33
+ swipeEnabled: createStaticBoolProp({
34
+ label: "Swipe Enabled",
35
+ description: "Whether swiping is enabled or not",
36
+ defaultValue: true
37
+ }),
38
+ scrollEnabled: createStaticBoolProp({
39
+ label: "Tab Scroll Enabled",
40
+ description: "Whether scrolling of tabs is enabled or not",
41
+ defaultValue: false
42
+ }),
43
+ activeColor: createColorProp({
44
+ label: "Active Color",
45
+ description: "Color of icon and text of active tab",
46
+ defaultValue: "primary"
47
+ }),
48
+ inactiveColor: createColorProp({
49
+ label: "Inactive Color",
50
+ description: "Color of icon and text of inactive tab(s)",
51
+ defaultValue: null
52
+ }),
53
+ pressColor: createColorProp({
54
+ label: "Press Color",
55
+ description: "Color of ripple when pressed",
56
+ defaultValue: "primary",
57
+ group: GROUPS.android
58
+ }),
59
+ indicatorColor: createColorProp({
60
+ label: "Indicator Color",
61
+ description: "Color of indicator",
62
+ defaultValue: "primary"
63
+ }),
64
+ tabsBackgroundColor: createColorProp({
65
+ label: "Tabs Background Color",
66
+ description: "Background color of tabs container",
67
+ defaultValue: "background"
68
+ })
69
+ }
70
+ };