@automattic/vip-design-system 0.18.4-0 → 0.19.1

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 (59) hide show
  1. package/build/system/BlankState/BlankState.stories.js +1 -1
  2. package/build/system/ConfirmationDialog/ConfirmationDialog.stories.js +1 -1
  3. package/build/system/Dialog/Dialog.stories.js +1 -1
  4. package/build/system/Dropdown/Dropdown.stories.js +2 -1
  5. package/build/system/Form/Input.js +5 -3
  6. package/build/system/Link/Link.js +8 -6
  7. package/build/system/NewConfirmationDialog/NewConfirmationDialog.js +10 -15
  8. package/build/system/NewDialog/DialogClose.js +1 -1
  9. package/build/system/NewDialog/NewDialog.js +17 -51
  10. package/build/system/NewDialog/NewDialog.stories.js +1 -1
  11. package/build/system/NewForm/Form.js +34 -0
  12. package/build/system/NewForm/FormSelect.js +117 -0
  13. package/build/system/NewForm/FormSelect.stories.js +120 -0
  14. package/build/system/NewForm/FormSelect.test.js +71 -0
  15. package/build/system/NewForm/FormSelectArrow.js +39 -0
  16. package/build/system/NewForm/FormSelectContent.js +55 -0
  17. package/build/system/NewForm/FormSelectInline.js +33 -0
  18. package/build/system/NewForm/index.js +18 -0
  19. package/build/system/Notice/Notice.js +0 -1
  20. package/build/system/OptionRow/OptionRow.js +2 -2
  21. package/build/system/ResourceList/ResourceList.js +1 -1
  22. package/build/system/Table/TableCell.js +1 -1
  23. package/build/system/Tabs/TabItem.js +3 -2
  24. package/build/system/Wizard/Wizard.js +10 -6
  25. package/build/system/Wizard/Wizard.stories.js +24 -2
  26. package/build/system/Wizard/WizardStep.js +18 -12
  27. package/build/system/Wizard/WizardStepHorizontal.js +8 -5
  28. package/build/system/index.js +5 -1
  29. package/build/system/theme/index.js +17 -4
  30. package/package.json +1 -1
  31. package/src/system/BlankState/BlankState.stories.jsx +1 -1
  32. package/src/system/ConfirmationDialog/ConfirmationDialog.stories.jsx +1 -1
  33. package/src/system/Dialog/Dialog.stories.jsx +1 -1
  34. package/src/system/Dropdown/Dropdown.stories.jsx +1 -1
  35. package/src/system/Form/Input.js +2 -4
  36. package/src/system/Link/Link.js +8 -6
  37. package/src/system/NewConfirmationDialog/NewConfirmationDialog.js +3 -6
  38. package/src/system/NewDialog/DialogClose.js +1 -1
  39. package/src/system/NewDialog/NewDialog.js +7 -37
  40. package/src/system/NewDialog/NewDialog.stories.jsx +1 -1
  41. package/src/system/NewForm/Form.js +19 -0
  42. package/src/system/NewForm/FormSelect.js +91 -0
  43. package/src/system/NewForm/FormSelect.stories.jsx +96 -0
  44. package/src/system/NewForm/FormSelect.test.js +34 -0
  45. package/src/system/NewForm/FormSelectArrow.js +27 -0
  46. package/src/system/NewForm/FormSelectContent.js +37 -0
  47. package/src/system/NewForm/FormSelectInline.js +31 -0
  48. package/src/system/NewForm/index.js +13 -0
  49. package/src/system/Notice/Notice.js +0 -1
  50. package/src/system/OptionRow/OptionRow.js +2 -2
  51. package/src/system/ResourceList/ResourceList.js +1 -1
  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 +8 -6
  55. package/src/system/Wizard/Wizard.stories.jsx +19 -0
  56. package/src/system/Wizard/WizardStep.js +22 -11
  57. package/src/system/Wizard/WizardStepHorizontal.js +5 -4
  58. package/src/system/index.js +3 -0
  59. package/src/system/theme/index.js +21 -5
@@ -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'
@@ -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;
@@ -79,10 +79,6 @@ var NewConfirmationDialog = function NewConfirmationDialog(_ref2) {
79
79
  body = _ref2$body === void 0 ? '' : _ref2$body,
80
80
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, _excluded);
81
81
 
82
- var _React$useState = _react["default"].useState(false),
83
- open = _React$useState[0],
84
- setOpen = _React$useState[1];
85
-
86
82
  var directTrigger = /*#__PURE__*/_react["default"].cloneElement(trigger, {
87
83
  onClick: onConfirm
88
84
  });
@@ -92,22 +88,21 @@ var NewConfirmationDialog = function NewConfirmationDialog(_ref2) {
92
88
  }
93
89
 
94
90
  return (0, _jsxRuntime.jsx)(_.NewDialog.Root, (0, _extends2["default"])({
95
- open: open,
96
- onOpenChange: setOpen,
97
91
  sx: {
98
92
  maxWidth: 680
99
93
  },
100
94
  title: title,
101
95
  description: body,
102
- content: (0, _jsxRuntime.jsx)(NewConfirmationDialogContent, {
103
- onClose: function onClose() {
104
- return setOpen(false);
105
- },
106
- onConfirm: onConfirm,
107
- body: body,
108
- label: label,
109
- buttonVariant: buttonVariant
110
- }),
96
+ content: function content(_ref3) {
97
+ var onClose = _ref3.onClose;
98
+ return (0, _jsxRuntime.jsx)(NewConfirmationDialogContent, {
99
+ onClose: onClose,
100
+ onConfirm: onConfirm,
101
+ body: body,
102
+ label: label,
103
+ buttonVariant: buttonVariant
104
+ });
105
+ },
111
106
  trigger: trigger
112
107
  }, props));
113
108
  };
@@ -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
+ };
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+
11
+ var _react = require("@testing-library/react");
12
+
13
+ var _jestAxe = require("jest-axe");
14
+
15
+ var _FormSelect = require("./FormSelect");
16
+
17
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
18
+
19
+ /**
20
+ * External dependencies
21
+ */
22
+
23
+ /**
24
+ * Internal dependencies
25
+ */
26
+ var options = [{
27
+ value: 'chocolate',
28
+ label: 'Chocolate'
29
+ }, {
30
+ value: 'strawberry',
31
+ label: 'Strawberry Chocolate Vanilla Chocolate Vanilla'
32
+ }, {
33
+ value: 'vanilla',
34
+ label: 'Vanilla'
35
+ }];
36
+ var defaultProps = {
37
+ label: 'This is a label',
38
+ forLabel: 'my_desert_list',
39
+ options: options
40
+ };
41
+ describe('<FormSelect />', function () {
42
+ it('renders the FormSelect component', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
43
+ var _render, container;
44
+
45
+ return _regenerator["default"].wrap(function _callee$(_context) {
46
+ while (1) {
47
+ switch (_context.prev = _context.next) {
48
+ case 0:
49
+ _render = (0, _react.render)((0, _jsxRuntime.jsx)(_FormSelect.FormSelect, (0, _extends2["default"])({
50
+ id: "my_desert_list"
51
+ }, defaultProps))), container = _render.container;
52
+ expect(_react.screen.getByLabelText(defaultProps.label)).toBeInTheDocument();
53
+ expect(_react.screen.getByRole('combobox')).toBeInTheDocument(); // Check for accessibility issues
54
+
55
+ _context.t0 = expect;
56
+ _context.next = 6;
57
+ return (0, _jestAxe.axe)(container);
58
+
59
+ case 6:
60
+ _context.t1 = _context.sent;
61
+ _context.next = 9;
62
+ return (0, _context.t0)(_context.t1).toHaveNoViolations();
63
+
64
+ case 9:
65
+ case "end":
66
+ return _context.stop();
67
+ }
68
+ }
69
+ }, _callee);
70
+ })));
71
+ });
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.FormSelectArrow = void 0;
7
+
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _md = require("react-icons/md");
13
+
14
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
15
+
16
+ /** @jsxImportSource theme-ui */
17
+
18
+ /**
19
+ * External dependencies
20
+ */
21
+ var FormSelectArrow = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
22
+ return (0, _jsxRuntime.jsx)(_md.MdExpandMore, (0, _extends2["default"])({
23
+ ref: forwardRef,
24
+ "aria-hidden": "true",
25
+ size: 24,
26
+ sx: {
27
+ paddingLeft: 2,
28
+ borderLeftWidth: '1px',
29
+ borderLeftStyle: 'solid',
30
+ borderLeftColor: 'border',
31
+ position: 'relative',
32
+ right: 34,
33
+ pointerEvents: 'none'
34
+ }
35
+ }, props));
36
+ });
37
+
38
+ exports.FormSelectArrow = FormSelectArrow;
39
+ FormSelectArrow.displayName = 'FormSelectArrow';