@automattic/vip-design-system 0.18.5-0 → 0.19.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 (63) hide show
  1. package/README.md +12 -0
  2. package/build/system/BlankState/BlankState.stories.js +1 -1
  3. package/build/system/ConfirmationDialog/ConfirmationDialog.stories.js +1 -1
  4. package/build/system/Dialog/Dialog.stories.js +1 -1
  5. package/build/system/Dropdown/Dropdown.stories.js +2 -1
  6. package/build/system/Form/Input.js +5 -3
  7. package/build/system/Form/MultiSelect.js +38 -0
  8. package/build/system/Link/Link.js +8 -6
  9. package/build/system/NewDialog/DialogClose.js +1 -1
  10. package/build/system/NewDialog/NewDialog.js +17 -51
  11. package/build/system/NewDialog/NewDialog.stories.js +1 -1
  12. package/build/system/NewForm/Form.js +34 -0
  13. package/build/system/NewForm/FormSelect.js +117 -0
  14. package/build/system/NewForm/FormSelect.stories.js +120 -0
  15. package/build/system/NewForm/FormSelect.test.js +143 -0
  16. package/build/system/NewForm/FormSelectArrow.js +39 -0
  17. package/build/system/NewForm/FormSelectContent.js +55 -0
  18. package/build/system/NewForm/FormSelectInline.js +33 -0
  19. package/build/system/NewForm/index.js +18 -0
  20. package/build/system/Notice/Notice.js +0 -1
  21. package/build/system/OptionRow/OptionRow.js +2 -2
  22. package/build/system/Table/TableCell.js +1 -1
  23. package/build/system/Tabs/TabItem.js +3 -2
  24. package/build/system/UsageChart/UsageChart.js +60 -0
  25. package/build/system/UsageChart/index.js +7 -0
  26. package/build/system/Wizard/Wizard.js +7 -5
  27. package/build/system/Wizard/Wizard.stories.js +34 -2
  28. package/build/system/Wizard/WizardStep.js +21 -8
  29. package/build/system/Wizard/WizardStepHorizontal.js +18 -5
  30. package/build/system/index.js +5 -6
  31. package/build/system/theme/index.js +17 -4
  32. package/package.json +2 -1
  33. package/src/system/BlankState/BlankState.stories.jsx +1 -1
  34. package/src/system/ConfirmationDialog/ConfirmationDialog.stories.jsx +1 -1
  35. package/src/system/Dialog/Dialog.stories.jsx +1 -1
  36. package/src/system/Dropdown/Dropdown.stories.jsx +1 -1
  37. package/src/system/Form/Input.js +2 -4
  38. package/src/system/Link/Link.js +8 -6
  39. package/src/system/NewDialog/DialogClose.js +1 -1
  40. package/src/system/NewDialog/NewDialog.js +7 -37
  41. package/src/system/NewDialog/NewDialog.stories.jsx +1 -1
  42. package/src/system/NewForm/Form.js +19 -0
  43. package/src/system/NewForm/FormSelect.js +91 -0
  44. package/src/system/NewForm/FormSelect.stories.jsx +96 -0
  45. package/src/system/NewForm/FormSelect.test.js +72 -0
  46. package/src/system/NewForm/FormSelectArrow.js +27 -0
  47. package/src/system/NewForm/FormSelectContent.js +37 -0
  48. package/src/system/NewForm/FormSelectInline.js +31 -0
  49. package/src/system/NewForm/index.js +13 -0
  50. package/src/system/Notice/Notice.js +0 -1
  51. package/src/system/OptionRow/OptionRow.js +2 -2
  52. package/src/system/Table/TableCell.js +1 -1
  53. package/src/system/Tabs/TabItem.js +2 -1
  54. package/src/system/Wizard/Wizard.js +6 -5
  55. package/src/system/Wizard/Wizard.stories.jsx +19 -0
  56. package/src/system/Wizard/WizardStep.js +28 -19
  57. package/src/system/Wizard/WizardStepHorizontal.js +13 -6
  58. package/src/system/index.js +3 -3
  59. package/src/system/theme/index.js +21 -5
  60. package/src/system/ResourceList/ResourceItem.js +0 -66
  61. package/src/system/ResourceList/ResourceList.js +0 -108
  62. package/src/system/ResourceList/ResourceList.stories.jsx +0 -306
  63. package/src/system/ResourceList/index.js +0 -7
package/README.md CHANGED
@@ -102,3 +102,15 @@ git push origin trunk
102
102
  ```
103
103
 
104
104
  8. For major versions or breaking changes, it's recommended to [create a RELEASE](https://github.com/Automattic/vip-design-system/releases) with the published tag.
105
+
106
+ ### Troubleshooting
107
+
108
+ ### Dialog + Dropdown usage
109
+
110
+ If you are facing a Dialog overlaping a Dropdown content, add this CSS to your application:
111
+
112
+ ```css
113
+ div[data-radix-popper-content-wrapper][data-aria-hidden='true'] {
114
+ opacity: 0;
115
+ }
116
+ ```
@@ -11,7 +11,7 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
11
11
  * Internal dependencies
12
12
  */
13
13
  var _default = {
14
- title: 'BlankState',
14
+ title: 'Deprecated/BlankState',
15
15
  component: _.BlankState
16
16
  };
17
17
  exports["default"] = _default;
@@ -11,7 +11,7 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
11
11
  * Internal dependencies
12
12
  */
13
13
  var _default = {
14
- title: 'ConfirmationDialog',
14
+ title: 'Deprecated/ConfirmationDialog',
15
15
  component: _.ConfirmationDialog
16
16
  };
17
17
  exports["default"] = _default;
@@ -11,7 +11,7 @@ var _jsxRuntime = require("theme-ui/jsx-runtime");
11
11
  * Internal dependencies
12
12
  */
13
13
  var _default = {
14
- title: 'Dialog (Deprecated)',
14
+ title: 'Deprecated/Dialog',
15
15
  component: _.Dialog
16
16
  };
17
17
  exports["default"] = _default;
@@ -153,7 +153,8 @@ var WithDialog = function WithDialog() {
153
153
 
154
154
  var _React$useState5 = _react["default"].useState(false),
155
155
  menuOpen = _React$useState5[0],
156
- setMenuOpen = _React$useState5[1];
156
+ setMenuOpen = _React$useState5[1]; // eslint-disable-next-line react/prop-types
157
+
157
158
 
158
159
  var AreYouSureDialog = function AreYouSureDialog(_ref) {
159
160
  var onConfirm = _ref.onConfirm,
@@ -48,9 +48,11 @@ var Input = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
48
48
  color: 'text',
49
49
  display: 'block',
50
50
  width: '100%',
51
- '&:focus': {
52
- borderColor: 'brand.60',
53
- outline: 'none'
51
+ '&:focus': function focus(theme) {
52
+ return theme.outline;
53
+ },
54
+ '&:focus-visible': function focusVisible(theme) {
55
+ return theme.outline;
54
56
  },
55
57
  '&:disabled': {
56
58
  bg: 'backgroundSecondary'
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.MultiSelect = void 0;
5
+
6
+ var _reactSelect = _interopRequireDefault(require("react-select"));
7
+
8
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+
12
+ function _extends() { _extends = Object.assign || 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); }
13
+
14
+ var vipGold = '#c29c69'; // hardcoding for now
15
+
16
+ var vipGrey2 = '#d7dee2';
17
+ var customStyles = {
18
+ control: function control(styles) {
19
+ return _extends({}, styles, {
20
+ border: "1px solid " + vipGrey2,
21
+ boxShadow: 'none',
22
+ '&:hover': {
23
+ border: "1px solid " + vipGold
24
+ },
25
+ '&:focus': {
26
+ border: "1px solid " + vipGold
27
+ }
28
+ });
29
+ }
30
+ };
31
+
32
+ var MultiSelect = function MultiSelect(props) {
33
+ return (0, _jsxRuntime.jsx)(_reactSelect["default"], _extends({}, props, {
34
+ styles: customStyles
35
+ }));
36
+ };
37
+
38
+ exports.MultiSelect = MultiSelect;
@@ -24,15 +24,17 @@ var Link = function Link(_ref) {
24
24
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
25
25
  return (0, _jsxRuntime.jsx)(_themeUi.Link, (0, _extends2["default"])({}, props, {
26
26
  sx: (0, _extends2["default"])({
27
- color: active ? 'heading' : 'link',
28
- textDecoration: 'none',
29
- borderBottom: '1px solid',
30
- borderBottomColor: 'border',
27
+ color: active ? 'links.active' : 'link',
28
+ textDdecorationThickness: '0.1em',
29
+ textUnderlineOffset: '0.1em',
31
30
  '&:visited': {
32
- color: 'link'
31
+ color: 'links.visited'
32
+ },
33
+ '&:active': {
34
+ color: 'links.active'
33
35
  },
34
36
  '&:hover, &:focus': {
35
- color: 'heading'
37
+ color: 'links.hover'
36
38
  },
37
39
  '&:focus': function focus(theme) {
38
40
  return theme.outline;
@@ -68,7 +68,7 @@ var DialogCloseDefault = /*#__PURE__*/_react["default"].forwardRef(function (pro
68
68
  top: 10,
69
69
  right: 10,
70
70
  '&:hover': {
71
- backgroundColor: 'border',
71
+ backgroundColor: 'borders.2',
72
72
  outlineStyle: 'solid',
73
73
  outlineColor: 'primary',
74
74
  outlineWidth: '2px'
@@ -7,6 +7,8 @@ exports.NewDialog = void 0;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
12
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -25,19 +27,12 @@ var _DialogContent = require("./DialogContent");
25
27
 
26
28
  var _jsxRuntime = require("theme-ui/jsx-runtime");
27
29
 
30
+ var _excluded = ["trigger", "description", "title", "content", "showHeading", "disabled", "style", "contentProps", "portalProps"];
31
+
28
32
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
33
 
30
34
  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; }
31
35
 
32
- /** @jsxImportSource theme-ui */
33
-
34
- /**
35
- * External dependencies
36
- */
37
-
38
- /**
39
- * Internal dependencies
40
- */
41
36
  var NewDialog = function NewDialog(_ref) {
42
37
  var _ref$trigger = _ref.trigger,
43
38
  trigger = _ref$trigger === void 0 ? null : _ref$trigger,
@@ -54,20 +49,9 @@ var NewDialog = function NewDialog(_ref) {
54
49
  contentProps = _ref$contentProps === void 0 ? {} : _ref$contentProps,
55
50
  _ref$portalProps = _ref.portalProps,
56
51
  portalProps = _ref$portalProps === void 0 ? {} : _ref$portalProps,
57
- _ref$defaultOpen = _ref.defaultOpen,
58
- defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
59
- _ref$allowPinchZoom = _ref.allowPinchZoom,
60
- allowPinchZoom = _ref$allowPinchZoom === void 0 ? false : _ref$allowPinchZoom,
61
- _ref$onOpenChange = _ref.onOpenChange,
62
- onOpenChange = _ref$onOpenChange === void 0 ? undefined : _ref$onOpenChange,
63
- _ref$open = _ref.open,
64
- open = _ref$open === void 0 ? undefined : _ref$open,
65
- _ref$id = _ref.id,
66
- id = _ref$id === void 0 ? undefined : _ref$id;
67
-
68
- var _React$useState = _react["default"].useState(open || defaultOpen),
69
- isOpen = _React$useState[0],
70
- setIsOpen = _React$useState[1];
52
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
53
+
54
+ var closeRef = _react["default"].useRef(null);
71
55
 
72
56
  if (disabled) {
73
57
  return;
@@ -76,24 +60,13 @@ var NewDialog = function NewDialog(_ref) {
76
60
 
77
61
  var isContentFunction = typeof content === 'function';
78
62
 
79
- var handleOnOpenChange = function handleOnOpenChange(status) {
80
- setIsOpen(status);
63
+ var onClose = function onClose() {
64
+ var _closeRef$current;
81
65
 
82
- if (onOpenChange) {
83
- onOpenChange(status);
84
- }
66
+ closeRef == null ? void 0 : (_closeRef$current = closeRef.current) == null ? void 0 : _closeRef$current.click();
85
67
  };
86
68
 
87
- _react["default"].useEffect(function () {
88
- handleOnOpenChange(open);
89
- }, [open]);
90
-
91
- return (0, _jsxRuntime.jsxs)(DialogPrimitive.Root, {
92
- id: id,
93
- open: isOpen,
94
- onOpenChange: handleOnOpenChange,
95
- defaultOpen: defaultOpen,
96
- allowPinchZoom: allowPinchZoom,
69
+ return (0, _jsxRuntime.jsxs)(DialogPrimitive.Root, (0, _extends2["default"])({}, props, {
97
70
  children: [trigger && (0, _jsxRuntime.jsx)(DialogPrimitive.Trigger, {
98
71
  asChild: true,
99
72
  children: trigger
@@ -102,7 +75,9 @@ var NewDialog = function NewDialog(_ref) {
102
75
  className: "vip-dialog-component",
103
76
  sx: (0, _extends2["default"])({}, _DialogContent.contentStyles, extraStyles)
104
77
  }, contentProps, {
105
- children: [(0, _jsxRuntime.jsx)(_DialogClose.DialogCloseDefault, {}), (0, _jsxRuntime.jsx)(_DialogTitle.DialogTitle, {
78
+ children: [(0, _jsxRuntime.jsx)(_DialogClose.DialogCloseDefault, {
79
+ ref: closeRef
80
+ }), (0, _jsxRuntime.jsx)(_DialogTitle.DialogTitle, {
106
81
  title: title,
107
82
  hidden: !showHeading
108
83
  }), (0, _jsxRuntime.jsx)(_DialogDescription.DialogDescription, {
@@ -111,14 +86,12 @@ var NewDialog = function NewDialog(_ref) {
111
86
  }), (0, _jsxRuntime.jsx)("div", {
112
87
  role: "document",
113
88
  children: isContentFunction ? content({
114
- onClose: function onClose() {
115
- return setIsOpen(false);
116
- }
89
+ onClose: onClose
117
90
  }) : content
118
91
  })]
119
92
  }))]
120
93
  }))]
121
- });
94
+ }));
122
95
  };
123
96
 
124
97
  exports.NewDialog = NewDialog;
@@ -133,12 +106,5 @@ NewDialog.propTypes = {
133
106
  // Content props in: https://www.radix-ui.com/docs/primitives/components/dialog#content
134
107
  contentProps: _propTypes["default"].any,
135
108
  // Portal props in: https://www.radix-ui.com/docs/primitives/components/dialog#portal
136
- portalProps: _propTypes["default"].any,
137
- // Radix DialogPrimitive.Root properties
138
- // https://www.radix-ui.com/docs/primitives/components/dialog#root
139
- id: _propTypes["default"].string,
140
- open: _propTypes["default"].bool,
141
- defaultOpen: _propTypes["default"].bool,
142
- allowPinchZoom: _propTypes["default"].bool,
143
- onOpenChange: _propTypes["default"].func
109
+ portalProps: _propTypes["default"].any
144
110
  };
@@ -225,7 +225,7 @@ var CustomStateManagement = function CustomStateManagement() {
225
225
  onOpenChange: function onOpenChange(status) {
226
226
  // eslint-disable-next-line no-console
227
227
  console.log('New status changed', status);
228
- setOpen(!!open);
228
+ setOpen(!open);
229
229
  },
230
230
  trigger: (0, _jsxRuntime.jsx)(_system.Button, {
231
231
  children: "Trigger Dialog"
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.Form = void 0;
7
+
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
17
+
18
+ var _excluded = ["children"];
19
+
20
+ var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardRef) {
21
+ var children = _ref.children,
22
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
23
+ return (0, _jsxRuntime.jsx)("form", (0, _extends2["default"])({
24
+ ref: forwardRef
25
+ }, props, {
26
+ children: children
27
+ }));
28
+ });
29
+
30
+ exports.Form = Form;
31
+ Form.propTypes = {
32
+ children: _propTypes["default"].any
33
+ };
34
+ Form.displayName = 'Form';
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.FormSelect = void 0;
7
+
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
16
+ var _Label = require("../Form/Label");
17
+
18
+ var _FormSelectArrow = require("./FormSelectArrow");
19
+
20
+ var _FormSelectContent = require("./FormSelectContent");
21
+
22
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
23
+
24
+ var _excluded = ["isInline", "placeholder", "forLabel", "options", "label"];
25
+ var MAX_SUGGESTED_OPTIONS = 15;
26
+ var isDev = process.env.NODE_ENV !== 'production';
27
+ var defaultStyles = {
28
+ width: '100%',
29
+ paddingLeft: 3,
30
+ paddingRight: 40,
31
+ // 40px for the icon
32
+ py: 0,
33
+ borderColor: 'border',
34
+ borderRadius: 1,
35
+ appearance: 'none',
36
+ minHeight: '36px',
37
+ '&:focus': function focus(theme) {
38
+ return theme.outline;
39
+ },
40
+ '&:focus-visible': function focusVisible(theme) {
41
+ return theme.outline;
42
+ },
43
+ '&:focus-within': function focusWithin(theme) {
44
+ return theme.outline;
45
+ }
46
+ };
47
+
48
+ var renderOption = function renderOption(label, value) {
49
+ return (0, _jsxRuntime.jsx)("option", {
50
+ value: value,
51
+ children: label
52
+ }, value);
53
+ };
54
+
55
+ var renderGroup = function renderGroup(groupLabel, groupOptions) {
56
+ return (0, _jsxRuntime.jsx)("optgroup", {
57
+ label: groupLabel,
58
+ children: groupOptions.map(function (_ref) {
59
+ var label = _ref.label,
60
+ value = _ref.value;
61
+ return renderOption(label, value);
62
+ })
63
+ }, groupLabel);
64
+ };
65
+
66
+ var FormSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, forwardRef) {
67
+ var isInline = _ref2.isInline,
68
+ placeholder = _ref2.placeholder,
69
+ forLabel = _ref2.forLabel,
70
+ options = _ref2.options,
71
+ label = _ref2.label,
72
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, _excluded);
73
+
74
+ if (isDev && options.length > MAX_SUGGESTED_OPTIONS) {
75
+ // eslint-disable-next-line no-console
76
+ console.info('For 16 or more items, consider using another component with a typeahead capability.');
77
+ }
78
+
79
+ var SelectLabel = function SelectLabel() {
80
+ return (0, _jsxRuntime.jsx)(_Label.Label, {
81
+ htmlFor: forLabel || props.id,
82
+ children: label
83
+ });
84
+ };
85
+
86
+ var inlineLabel = !!(isInline && label);
87
+ return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
88
+ children: [label && !isInline && (0, _jsxRuntime.jsx)(SelectLabel, {}), (0, _jsxRuntime.jsxs)(_FormSelectContent.FormSelectContent, {
89
+ isInline: inlineLabel,
90
+ label: inlineLabel ? (0, _jsxRuntime.jsx)(SelectLabel, {}) : null,
91
+ children: [(0, _jsxRuntime.jsxs)("select", (0, _extends2["default"])({
92
+ ref: forwardRef,
93
+ sx: defaultStyles
94
+ }, props, {
95
+ children: [placeholder && (0, _jsxRuntime.jsx)("option", {
96
+ children: placeholder
97
+ }), options.map(function (_ref3) {
98
+ var optionLabel = _ref3.label,
99
+ value = _ref3.value,
100
+ groupOptions = _ref3.options;
101
+ return value ? renderOption(optionLabel, value) : renderGroup(optionLabel, groupOptions);
102
+ })]
103
+ })), (0, _jsxRuntime.jsx)(_FormSelectArrow.FormSelectArrow, {})]
104
+ })]
105
+ });
106
+ });
107
+
108
+ exports.FormSelect = FormSelect;
109
+ FormSelect.propTypes = {
110
+ id: _propTypes["default"].string,
111
+ isInline: _propTypes["default"].bool,
112
+ forLabel: _propTypes["default"].string,
113
+ placeholder: _propTypes["default"].string,
114
+ label: _propTypes["default"].string,
115
+ options: _propTypes["default"].array
116
+ };
117
+ FormSelect.displayName = 'FormSelect';
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports["default"] = exports.WithGroup = exports.IsInline = exports.Default = void 0;
7
+
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+
12
+ var Form = _interopRequireWildcard(require("."));
13
+
14
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
15
+
16
+ var _excluded = ["label", "width"];
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ 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; }
21
+
22
+ var _default = {
23
+ title: 'Form/Select',
24
+ argTypes: {
25
+ placeholder: {
26
+ type: {
27
+ name: 'string',
28
+ required: false
29
+ },
30
+ control: {
31
+ type: 'text'
32
+ }
33
+ },
34
+ label: {
35
+ type: {
36
+ name: 'string',
37
+ required: false
38
+ },
39
+ control: {
40
+ type: 'text'
41
+ }
42
+ }
43
+ }
44
+ };
45
+ exports["default"] = _default;
46
+ var options = [{
47
+ value: 'chocolate',
48
+ label: 'Chocolate'
49
+ }, {
50
+ value: 'strawberry',
51
+ label: 'Strawberry Chocolate Vanilla Chocolate Vanilla'
52
+ }, {
53
+ value: 'vanilla',
54
+ label: 'Vanilla'
55
+ }]; // eslint-disable-next-line react/prop-types
56
+
57
+ var DefaultComponent = function DefaultComponent(_ref) {
58
+ var _ref$label = _ref.label,
59
+ label = _ref$label === void 0 ? 'Label' : _ref$label,
60
+ _ref$width = _ref.width,
61
+ width = _ref$width === void 0 ? 250 : _ref$width,
62
+ rest = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
63
+ return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
64
+ children: [(0, _jsxRuntime.jsxs)("p", {
65
+ children: ["This is a simple wrapper at the top of a browser default select component. This component should be used for situations where you have up to ", (0, _jsxRuntime.jsx)("strong", {
66
+ children: "15 options"
67
+ }), ". If you need to use a auto-complete, searchable solution, please use another component with a typeahead capability."]
68
+ }), (0, _jsxRuntime.jsxs)("p", {
69
+ children: ["This component was heavily inspired by the", ' ', (0, _jsxRuntime.jsxs)("a", {
70
+ href: "https://designsystem.digital.gov/components/select/",
71
+ target: "_blank",
72
+ rel: "noreferrer",
73
+ children: [' ', "U.S. Web Design System (USWDS) Select component"]
74
+ }), "."]
75
+ }), (0, _jsxRuntime.jsx)(Form.Root, {
76
+ children: (0, _jsxRuntime.jsx)("div", {
77
+ sx: {
78
+ width: width
79
+ },
80
+ children: (0, _jsxRuntime.jsx)(Form.Select, (0, _extends2["default"])({
81
+ id: "form-select",
82
+ label: label
83
+ }, rest))
84
+ })
85
+ })]
86
+ });
87
+ };
88
+
89
+ var Default = DefaultComponent.bind({});
90
+ exports.Default = Default;
91
+ Default.args = {
92
+ placeholder: '- Select -',
93
+ options: options
94
+ };
95
+ var WithGroup = DefaultComponent.bind({});
96
+ exports.WithGroup = WithGroup;
97
+ WithGroup.args = {
98
+ label: 'Group Label',
99
+ options: [{
100
+ label: 'Group name',
101
+ options: options
102
+ }, {
103
+ label: 'Another Group name',
104
+ options: options
105
+ }]
106
+ };
107
+ var IsInline = DefaultComponent.bind({});
108
+ exports.IsInline = IsInline;
109
+ IsInline.args = {
110
+ label: 'Inline Select',
111
+ isInline: true,
112
+ width: '100%',
113
+ options: [{
114
+ label: 'Group name',
115
+ options: options
116
+ }, {
117
+ label: 'Another Group name',
118
+ options: options
119
+ }]
120
+ };