@pingux/astro 1.2.1 → 1.3.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 (78) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/lib/cjs/components/AccordionGridGroup/AccordionGridGroup.js +8 -2
  3. package/lib/cjs/components/AccordionGridItem/AccordionGridItemBody.js +5 -2
  4. package/lib/cjs/components/AccordionGridItem/AccordionGridItemHeader.js +8 -3
  5. package/lib/cjs/components/ArrayField/ArrayField.js +213 -0
  6. package/lib/cjs/components/ArrayField/ArrayField.stories.js +223 -0
  7. package/lib/cjs/components/ArrayField/ArrayField.test.js +208 -0
  8. package/lib/cjs/components/ArrayField/ArrayFieldDeleteButton.js +61 -0
  9. package/lib/cjs/components/ArrayField/index.js +27 -0
  10. package/lib/cjs/components/CodeView/CodeView.js +3 -3
  11. package/lib/cjs/components/ListView/ListView.stories.js +3 -0
  12. package/lib/cjs/components/Loader/Loader.stories.js +3 -3
  13. package/lib/cjs/components/Modal/Modal.js +3 -0
  14. package/lib/cjs/components/Modal/Modal.stories.js +11 -66
  15. package/lib/cjs/components/NavBar/NavBar.js +30 -4
  16. package/lib/cjs/components/NavBar/NavBar.stories.js +70 -463
  17. package/lib/cjs/components/NavBar/NavBar.test.js +51 -1
  18. package/lib/cjs/components/NavBarSection/NavBarItem.js +137 -0
  19. package/lib/cjs/components/NavBarSection/NavBarItemButton.js +96 -0
  20. package/lib/cjs/components/NavBarSection/NavBarItemHeader.js +1 -1
  21. package/lib/cjs/components/NavBarSection/NavBarItemLink.js +98 -0
  22. package/lib/cjs/components/NavBarSection/NavBarSection.js +10 -8
  23. package/lib/cjs/components/NavBarSection/index.js +28 -1
  24. package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +8 -1
  25. package/lib/cjs/context/NavBarContext/index.js +20 -0
  26. package/lib/cjs/hooks/index.js +9 -0
  27. package/lib/cjs/hooks/useNavBarPress/index.js +18 -0
  28. package/lib/cjs/hooks/useNavBarPress/useNavBarPress.js +38 -0
  29. package/lib/cjs/hooks/useNavBarPress/useNavBarPress.test.js +42 -0
  30. package/lib/cjs/index.js +80 -58
  31. package/lib/cjs/styles/variants/accordion.js +39 -7
  32. package/lib/cjs/styles/variants/boxes.js +1 -24
  33. package/lib/cjs/styles/variants/buttons.js +7 -1
  34. package/lib/cjs/styles/variants/codeView.js +91 -0
  35. package/lib/cjs/styles/variants/navBar.js +68 -0
  36. package/lib/cjs/styles/variants/separator.js +2 -1
  37. package/lib/cjs/styles/variants/text.js +3 -1
  38. package/lib/cjs/styles/variants/variants.js +3 -0
  39. package/lib/components/AccordionGridGroup/AccordionGridGroup.js +7 -2
  40. package/lib/components/AccordionGridItem/AccordionGridItemBody.js +4 -2
  41. package/lib/components/AccordionGridItem/AccordionGridItemHeader.js +9 -4
  42. package/lib/components/ArrayField/ArrayField.js +179 -0
  43. package/lib/components/ArrayField/ArrayField.stories.js +196 -0
  44. package/lib/components/ArrayField/ArrayField.test.js +185 -0
  45. package/lib/components/ArrayField/ArrayFieldDeleteButton.js +43 -0
  46. package/lib/components/ArrayField/index.js +2 -0
  47. package/lib/components/CodeView/CodeView.js +2 -2
  48. package/lib/components/ListView/ListView.stories.js +3 -0
  49. package/lib/components/Loader/Loader.stories.js +1 -1
  50. package/lib/components/Modal/Modal.js +4 -1
  51. package/lib/components/Modal/Modal.stories.js +10 -59
  52. package/lib/components/NavBar/NavBar.js +25 -4
  53. package/lib/components/NavBar/NavBar.stories.js +71 -462
  54. package/lib/components/NavBar/NavBar.test.js +39 -2
  55. package/lib/components/NavBarSection/NavBarItem.js +111 -0
  56. package/lib/components/NavBarSection/NavBarItemButton.js +69 -0
  57. package/lib/components/NavBarSection/NavBarItemHeader.js +1 -1
  58. package/lib/components/NavBarSection/NavBarItemLink.js +71 -0
  59. package/lib/components/NavBarSection/NavBarSection.js +9 -8
  60. package/lib/components/NavBarSection/index.js +4 -1
  61. package/lib/components/SelectFieldBase/SelectFieldBase.js +8 -1
  62. package/lib/context/NavBarContext/index.js +5 -0
  63. package/lib/hooks/index.js +1 -0
  64. package/lib/hooks/useNavBarPress/index.js +1 -0
  65. package/lib/hooks/useNavBarPress/useNavBarPress.js +27 -0
  66. package/lib/hooks/useNavBarPress/useNavBarPress.test.js +36 -0
  67. package/lib/index.js +2 -0
  68. package/lib/styles/variants/accordion.js +26 -5
  69. package/lib/styles/variants/boxes.js +1 -24
  70. package/lib/styles/variants/buttons.js +7 -1
  71. package/lib/styles/variants/codeView.js +91 -0
  72. package/lib/styles/variants/navBar.js +46 -0
  73. package/lib/styles/variants/separator.js +2 -1
  74. package/lib/styles/variants/text.js +3 -1
  75. package/lib/styles/variants/variants.js +2 -0
  76. package/package.json +3 -1
  77. package/lib/cjs/recipes/ArrayField.stories.js +0 -169
  78. package/lib/recipes/ArrayField.stories.js +0 -134
@@ -219,26 +219,6 @@ var expandableRow = {
219
219
  }
220
220
  }
221
221
  };
222
- var navBar = {
223
- height: '100%',
224
- width: '230px',
225
- position: 'absolute',
226
- zIndex: '1',
227
- top: '0',
228
- left: '0',
229
- backgroundColor: 'accent.20',
230
- overflowY: 'hidden'
231
- };
232
- var navBarSectionContainer = {
233
- height: '100%',
234
- maxHeight: '100%',
235
- overflowY: 'overlay !important'
236
- };
237
- var navBarItemHeaderContainer = {
238
- flexGrow: 1,
239
- alignItems: 'center',
240
- maxWidth: '180px'
241
- };
242
222
  var datePicker = {
243
223
  '.react-calendar': {
244
224
  width: 280,
@@ -334,9 +314,6 @@ var _default = {
334
314
  radioContainer: radioContainer,
335
315
  scrollbox: scrollbox,
336
316
  topShadowScrollbox: topShadowScrollbox,
337
- bottomShadowScrollbox: bottomShadowScrollbox,
338
- navBar: navBar,
339
- navBarSectionContainer: navBarSectionContainer,
340
- navBarItemHeaderContainer: navBarItemHeaderContainer
317
+ bottomShadowScrollbox: bottomShadowScrollbox
341
318
  };
342
319
  exports["default"] = _default;
@@ -97,8 +97,14 @@ var navItemButton = {
97
97
  wordBreak: 'break-word',
98
98
  '&.is-focused': _objectSpread({}, defaultFocus),
99
99
  '&.is-hovered': {
100
- bg: 'accent.10',
100
+ bg: 'accent.10'
101
+ },
102
+ '&.is-selected': {
103
+ bg: 'accent.5',
101
104
  boxShadow: 'inset 2px 0 0 0 white'
105
+ },
106
+ '&.is-pressed': {
107
+ bg: 'accent.5'
102
108
  }
103
109
  };
104
110
  var iconButton = {
@@ -7,6 +7,96 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
 
9
9
  exports["default"] = void 0;
10
+ var theme = {
11
+ plain: {
12
+ color: '#545454',
13
+ background: 'none',
14
+ lineHeight: 1.5,
15
+ tabSize: 4
16
+ },
17
+ styles: [{
18
+ types: ['prolog', 'constant', 'builtin'],
19
+ style: {
20
+ color: 'rgb(189, 147, 249)'
21
+ }
22
+ }, {
23
+ types: ['inserted', 'function'],
24
+ style: {
25
+ color: 'rgb(80, 250, 123)'
26
+ }
27
+ }, {
28
+ types: ['deleted'],
29
+ style: {
30
+ color: 'rgb(255, 85, 85)'
31
+ }
32
+ }, {
33
+ types: ['changed'],
34
+ style: {
35
+ color: 'rgb(255, 184, 108)'
36
+ }
37
+ }, {
38
+ types: ['punctuation', 'symbol'],
39
+ style: {
40
+ color: 'rgb(248, 248, 242)'
41
+ }
42
+ }, {
43
+ types: ['string', 'char', 'tag', 'selector'],
44
+ style: {
45
+ color: 'rgb(255, 121, 198)'
46
+ }
47
+ }, {
48
+ types: ['keyword', 'variable'],
49
+ style: {
50
+ color: 'rgb(189, 147, 249)',
51
+ fontStyle: 'italic'
52
+ }
53
+ }, {
54
+ types: ['comment'],
55
+ style: {
56
+ color: 'rgb(98, 114, 164)'
57
+ }
58
+ }, {
59
+ types: ['attr-name'],
60
+ style: {
61
+ color: 'rgb(241, 250, 140)'
62
+ }
63
+ }, {
64
+ types: ['comment', 'prolog', 'doctype', 'cdata'],
65
+ style: {
66
+ color: '#696969'
67
+ }
68
+ }, {
69
+ types: ['punctuation'],
70
+ style: {
71
+ color: '#545454'
72
+ }
73
+ }, {
74
+ types: ['property', 'tag', 'constant', 'symbol', 'deleted'],
75
+ style: {
76
+ color: '#007299'
77
+ }
78
+ }, {
79
+ types: ['boolean', 'number', 'operator', 'entity', 'url', 'variable'],
80
+ style: {
81
+ color: '#008000'
82
+ }
83
+ }, {
84
+ types: ['selector', 'attr-name', 'char', 'builtin', 'inserted', 'atrule', 'attr-value', 'function', 'string'],
85
+ style: {
86
+ color: '#aa5d00'
87
+ }
88
+ }, {
89
+ types: ['keyword', 'regex', 'important'],
90
+ style: {
91
+ color: '#d91e18'
92
+ }
93
+ }, {
94
+ types: ['keyword'],
95
+ style: {
96
+ fontStyle: 'normal'
97
+ }
98
+ }]
99
+ };
10
100
  var wrapper = {
11
101
  bg: 'accent.99',
12
102
  border: '1px solid',
@@ -71,6 +161,7 @@ var lineNo = {
71
161
  color: 'white'
72
162
  };
73
163
  var _default = {
164
+ theme: theme,
74
165
  wrapper: wrapper,
75
166
  lineNo: lineNo
76
167
  };
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ var _Object$defineProperty2 = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+
7
+ _Object$defineProperty2(exports, "__esModule", {
8
+ value: true
9
+ });
10
+
11
+ exports["default"] = void 0;
12
+
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
14
+
15
+ var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-properties"));
16
+
17
+ var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"));
18
+
19
+ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
20
+
21
+ var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"));
22
+
23
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
24
+
25
+ var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
26
+
27
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
28
+
29
+ var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
30
+
31
+ var _accordion = _interopRequireDefault(require("./accordion"));
32
+
33
+ function ownKeys(object, enumerableOnly) { var keys = (0, _keys["default"])(object); if (_getOwnPropertySymbols["default"]) { var symbols = (0, _getOwnPropertySymbols["default"])(object); if (enumerableOnly) symbols = (0, _filter["default"])(symbols).call(symbols, function (sym) { return (0, _getOwnPropertyDescriptor["default"])(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
34
+
35
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; (0, _forEach["default"])(_context = ownKeys(Object(source), true)).call(_context, function (key) { (0, _defineProperty3["default"])(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors["default"]) { (0, _defineProperties["default"])(target, (0, _getOwnPropertyDescriptors["default"])(source)); } else { var _context2; (0, _forEach["default"])(_context2 = ownKeys(Object(source))).call(_context2, function (key) { (0, _defineProperty2["default"])(target, key, (0, _getOwnPropertyDescriptor["default"])(source, key)); }); } } return target; }
36
+
37
+ var container = {
38
+ height: '100%',
39
+ width: '230px',
40
+ position: 'absolute',
41
+ zIndex: '1',
42
+ top: '0',
43
+ left: '0',
44
+ backgroundColor: 'accent.20',
45
+ overflowY: 'hidden'
46
+ };
47
+ var itemHeaderContainer = {
48
+ flexGrow: 1,
49
+ alignItems: 'center',
50
+ maxWidth: '180px'
51
+ };
52
+ var sectionContainer = {
53
+ height: '100%',
54
+ maxHeight: '100%',
55
+ overflowY: 'overlay !important'
56
+ };
57
+
58
+ var sectionBody = _objectSpread(_objectSpread({}, _accordion["default"].accordionGridBody), {}, {
59
+ pl: '0'
60
+ });
61
+
62
+ var _default = {
63
+ container: container,
64
+ itemHeaderContainer: itemHeaderContainer,
65
+ sectionContainer: sectionContainer,
66
+ sectionBody: sectionBody
67
+ };
68
+ exports["default"] = _default;
@@ -50,9 +50,10 @@ var navBarSeparator = _objectSpread(_objectSpread({}, base), {}, {
50
50
  });
51
51
 
52
52
  var navBarSubtitleSeparator = _objectSpread(_objectSpread({}, base), {}, {
53
+ mt: 'sm',
54
+ mb: '20px',
53
55
  ml: '45px',
54
56
  width: 'calc(100% - 75px)',
55
- mb: '15px',
56
57
  backgroundColor: 'neutral.60'
57
58
  });
58
59
 
@@ -48,7 +48,7 @@ var wordWrap = {
48
48
  };
49
49
 
50
50
  var tabLabel = _objectSpread(_objectSpread(_objectSpread({}, base), wordWrap), {}, {
51
- fontSize: 'md',
51
+ fontSize: 'sm',
52
52
  fontWeight: 1,
53
53
  mb: 6,
54
54
  color: 'neutral.40',
@@ -148,6 +148,8 @@ var environmentBreadcrumb = _objectSpread(_objectSpread({}, base), {}, {
148
148
  });
149
149
 
150
150
  var navBarSubtitle = {
151
+ my: 'md',
152
+ ml: 'md',
151
153
  fontWeight: 3,
152
154
  fontSize: '11px',
153
155
  color: 'accent.80'
@@ -54,6 +54,8 @@ var _menuItem = _interopRequireDefault(require("./menuItem"));
54
54
 
55
55
  var _messages = _interopRequireDefault(require("./messages"));
56
56
 
57
+ var _navBar = _interopRequireDefault(require("./navBar"));
58
+
57
59
  var _numberField = _interopRequireDefault(require("./numberField"));
58
60
 
59
61
  var _overlayPanel = _interopRequireDefault(require("./overlayPanel"));
@@ -89,6 +91,7 @@ var _default = _objectSpread(_objectSpread({
89
91
  menuItem: _menuItem["default"],
90
92
  messages: _messages["default"],
91
93
  modal: _modal["default"],
94
+ navBar: _navBar["default"],
92
95
  numberField: _numberField["default"],
93
96
  overlayPanel: _overlayPanel["default"],
94
97
  popoverMenu: _popoverMenu["default"],
@@ -18,6 +18,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
18
18
  import React, { useMemo, forwardRef, useImperativeHandle, useRef } from 'react';
19
19
  import { GridCollection, useGridState } from '@react-stately/grid';
20
20
  import { GridKeyboardDelegate, useGrid } from '@react-aria/grid';
21
+ import { mergeProps } from '@react-aria/utils';
21
22
  import { useListState } from '@react-stately/list';
22
23
  import PropTypes from 'prop-types';
23
24
  import { useCollator, useLocale } from '@react-aria/i18n';
@@ -45,7 +46,8 @@ export var collectionTypes = {
45
46
  var AccordionGridGroup = /*#__PURE__*/forwardRef(function (props, ref) {
46
47
  var _context2;
47
48
 
48
- var disabledKeys = props.disabledKeys;
49
+ var disabledKeys = props.disabledKeys,
50
+ containerProps = props.containerProps;
49
51
  var accordionGridRef = useRef();
50
52
  /* istanbul ignore next */
51
53
 
@@ -126,7 +128,7 @@ var AccordionGridGroup = /*#__PURE__*/forwardRef(function (props, ref) {
126
128
  state: state,
127
129
  keyboardDelegate: keyboardDelegate
128
130
  }
129
- }, ___EmotionJSX(Box, _extends({}, gridProps, {
131
+ }, ___EmotionJSX(Box, _extends({}, mergeProps(gridProps, containerProps), {
130
132
  ref: accordionGridRef
131
133
  }), _mapInstanceProperty(_context2 = _Array$from(state.collection)).call(_context2, function (item) {
132
134
  return ___EmotionJSX(AccordionGridItem, _extends({
@@ -169,6 +171,9 @@ AccordionGridGroup.propTypes = {
169
171
  /** The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id). */
170
172
  id: PropTypes.string,
171
173
 
174
+ /** Props object that is spread directly into the root (top-level) element. */
175
+ containerProps: PropTypes.shape({}),
176
+
172
177
  /** Defines a string value that labels the current element. */
173
178
  'aria-label': PropTypes.string,
174
179
 
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
2
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
3
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
3
4
  import React, { forwardRef } from 'react';
4
5
  import { mergeProps } from '@react-aria/utils';
5
6
  import PropTypes from 'prop-types';
@@ -15,7 +16,8 @@ var AccordionGridItemBody = /*#__PURE__*/forwardRef(function (props, ref) {
15
16
  var item = props.item,
16
17
  className = props.className,
17
18
  children = props.children,
18
- isSelected = props.isSelected;
19
+ isSelected = props.isSelected,
20
+ others = _objectWithoutProperties(props, ["item", "className", "children", "isSelected"]);
19
21
 
20
22
  var _useAccordionGridCont = useAccordionGridContext(),
21
23
  state = _useAccordionGridCont.state;
@@ -53,7 +55,7 @@ var AccordionGridItemBody = /*#__PURE__*/forwardRef(function (props, ref) {
53
55
  isSelected: isSelected,
54
56
  className: classNames,
55
57
  "aria-label": ariaLabel
56
- }), children);
58
+ }, others), children);
57
59
  });
58
60
  AccordionGridItemBody.propTypes = {
59
61
  isSelected: PropTypes.bool,
@@ -6,7 +6,7 @@ import { mergeProps } from '@react-aria/utils';
6
6
  import { useFocusRing } from '@react-aria/focus';
7
7
  import PropTypes from 'prop-types';
8
8
  import { useGridCell } from '@react-aria/grid';
9
- import { useHover } from '@react-aria/interactions';
9
+ import { useHover, usePress } from '@react-aria/interactions';
10
10
  import MenuDown from 'mdi-react/MenuDownIcon';
11
11
  import MenuUp from 'mdi-react/MenuUpIcon';
12
12
  import { useAccordionGridContext } from '../../context/AccordionGridContext';
@@ -39,13 +39,18 @@ var AccordionGridItemHeader = /*#__PURE__*/forwardRef(function (props, ref) {
39
39
  node: cellNode,
40
40
  focusMode: 'cell'
41
41
  }, state, cellRef),
42
- gridCellProps = _useGridCell.gridCellProps,
43
- isPressed = _useGridCell.isPressed;
42
+ gridCellProps = _useGridCell.gridCellProps;
44
43
 
45
44
  var _useHover = useHover({}),
46
45
  hoverProps = _useHover.hoverProps,
47
46
  isHovered = _useHover.isHovered;
48
47
 
48
+ var _usePress = usePress({
49
+ ref: cellRef
50
+ }),
51
+ pressProps = _usePress.pressProps,
52
+ isPressed = _usePress.isPressed;
53
+
49
54
  var _useFocusRing = useFocusRing({
50
55
  within: true
51
56
  }),
@@ -55,7 +60,7 @@ var AccordionGridItemHeader = /*#__PURE__*/forwardRef(function (props, ref) {
55
60
  focusProps = _useFocusRing2.focusProps,
56
61
  isFocusVisible = _useFocusRing2.isFocusVisible;
57
62
 
58
- var mergedProps = mergeProps(gridCellProps, hoverProps, focusWithinProps, focusProps);
63
+ var mergedProps = mergeProps(pressProps, gridCellProps, hoverProps, focusWithinProps, focusProps);
59
64
 
60
65
  var _useStatusClasses = useStatusClasses(className, {
61
66
  isPressed: isPressed,
@@ -0,0 +1,179 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
7
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
8
+ import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
9
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
10
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
11
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
13
+ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
14
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
15
+
16
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
17
+
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context3; _forEachInstanceProperty(_context3 = ownKeys(Object(source), true)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context4; _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
19
+
20
+ import React, { useCallback, useState } from 'react';
21
+ import PropTypes from 'prop-types';
22
+ import { v4 as uuid } from 'uuid';
23
+ import Box from '../Box';
24
+ import Button from '../Button';
25
+ import FieldHelperText from '../FieldHelperText';
26
+ import Text from '../Text';
27
+ import statuses from '../../utils/devUtils/constants/statuses';
28
+ import { jsx as ___EmotionJSX } from "@emotion/react";
29
+
30
+ var ArrayField = function ArrayField(_ref) {
31
+ var _context2;
32
+
33
+ var addButtonLabel = _ref.addButtonLabel,
34
+ defaultValue = _ref.defaultValue,
35
+ value = _ref.value,
36
+ label = _ref.label,
37
+ helperText = _ref.helperText,
38
+ status = _ref.status,
39
+ onAdd = _ref.onAdd,
40
+ onChange = _ref.onChange,
41
+ onDelete = _ref.onDelete,
42
+ renderField = _ref.renderField,
43
+ others = _objectWithoutProperties(_ref, ["addButtonLabel", "defaultValue", "value", "label", "helperText", "status", "onAdd", "onChange", "onDelete", "renderField"]);
44
+
45
+ var isControlled = value !== undefined;
46
+ var createEmptyField = useCallback(function () {
47
+ return {
48
+ id: uuid(),
49
+ value: ''
50
+ };
51
+ }, []);
52
+
53
+ var _useState = useState(defaultValue || [createEmptyField()]),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ fieldValues = _useState2[0],
56
+ setFieldValues = _useState2[1];
57
+
58
+ var mapArrayFieldWithNewValue = useCallback(function (arrValues, newValue, fieldId) {
59
+ return _mapInstanceProperty(arrValues).call(arrValues, function (fieldValue) {
60
+ if (fieldValue.id === fieldId) {
61
+ return _objectSpread(_objectSpread({}, fieldValue), {}, {
62
+ value: newValue
63
+ });
64
+ }
65
+
66
+ return fieldValue;
67
+ });
68
+ }, []);
69
+ var onFieldValueChange = useCallback(function (event, fieldId) {
70
+ var tempValue = event; // Checks if value receieved is a key or event
71
+
72
+ if (typeof event !== 'string') {
73
+ tempValue = event.target.value;
74
+ }
75
+
76
+ if (isControlled) {
77
+ onChange(mapArrayFieldWithNewValue(value, tempValue, fieldId));
78
+ } else {
79
+ setFieldValues(function (oldValues) {
80
+ return mapArrayFieldWithNewValue(oldValues, tempValue, fieldId);
81
+ });
82
+ }
83
+ }, [isControlled, mapArrayFieldWithNewValue, onChange, value]);
84
+ var onFieldDelete = useCallback(function (fieldId) {
85
+ if (isControlled) {
86
+ onDelete(fieldId);
87
+ } else {
88
+ setFieldValues(function (oldValues) {
89
+ return _filterInstanceProperty(oldValues).call(oldValues, function (_ref2) {
90
+ var id = _ref2.id;
91
+ return id !== fieldId;
92
+ });
93
+ });
94
+ }
95
+ }, [isControlled, onDelete]);
96
+ var onFieldAdd = useCallback(function () {
97
+ if (onAdd) {
98
+ return onAdd();
99
+ }
100
+
101
+ return setFieldValues(function (oldValues) {
102
+ var _context;
103
+
104
+ return _concatInstanceProperty(_context = []).call(_context, oldValues, [createEmptyField()]);
105
+ });
106
+ }, [createEmptyField, onAdd]);
107
+ return ___EmotionJSX(Box, others, ___EmotionJSX(Text, {
108
+ variant: "label"
109
+ }, label), ___EmotionJSX(Box, {
110
+ as: "ul",
111
+ pl: "0"
112
+ }, _mapInstanceProperty(_context2 = value || fieldValues).call(_context2, function (_ref3) {
113
+ var id = _ref3.id,
114
+ onComponentRender = _ref3.onComponentRender,
115
+ fieldValue = _ref3.fieldValue,
116
+ otherFieldProps = _objectWithoutProperties(_ref3, ["id", "onComponentRender", "fieldValue"]);
117
+
118
+ var isDisabled = (value || fieldValues).length === 1;
119
+ return ___EmotionJSX(Box, {
120
+ as: "li",
121
+ mb: "xs",
122
+ key: id
123
+ }, onComponentRender ? onComponentRender(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps) : renderField(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps));
124
+ })), helperText && ___EmotionJSX(FieldHelperText, {
125
+ status: status
126
+ }, helperText), ___EmotionJSX(Button, {
127
+ "aria-label": "Add field",
128
+ variant: "text",
129
+ onPress: onFieldAdd,
130
+ sx: {
131
+ width: 'fit-content'
132
+ }
133
+ }, ___EmotionJSX(Text, {
134
+ variant: "label",
135
+ color: "active"
136
+ }, addButtonLabel)));
137
+ };
138
+
139
+ ArrayField.propTypes = {
140
+ /** Label for add button */
141
+ addButtonLabel: PropTypes.string,
142
+
143
+ /** The default value for the array input field (uncontrolled). */
144
+ defaultValue: PropTypes.arrayOf(PropTypes.shape({
145
+ id: PropTypes.string,
146
+ value: PropTypes.string
147
+ })),
148
+
149
+ /** The default value of the array input field (controlled). */
150
+ value: PropTypes.arrayOf(PropTypes.shape({
151
+ id: PropTypes.string,
152
+ value: PropTypes.string
153
+ })),
154
+
155
+ /** The rendered label for the field. */
156
+ label: PropTypes.node,
157
+
158
+ /** Text to display before add button. Useful for errors or other info. */
159
+ helperText: PropTypes.node,
160
+
161
+ /** Callback for changing array field data */
162
+ onChange: PropTypes.func,
163
+
164
+ /** Callback for adding new empty field */
165
+ onAdd: PropTypes.func,
166
+
167
+ /** Callback for deleting a field */
168
+ onDelete: PropTypes.func,
169
+
170
+ /** Render prop to display an input field */
171
+ renderField: PropTypes.func,
172
+
173
+ /** Determines the helper text styling. */
174
+ status: PropTypes.oneOf(_Object$values(statuses))
175
+ };
176
+ ArrayField.defaultProps = {
177
+ addButtonLabel: '+ Add'
178
+ };
179
+ export default ArrayField;