@kaizen/components 2.0.0 → 2.0.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 (107) hide show
  1. package/alpha/README.md +28 -0
  2. package/alpha/package.json +5 -0
  3. package/dist/cjs/alpha.cjs +1 -0
  4. package/dist/cjs/src/Notification/InlineNotification/InlineNotification.cjs +1 -1
  5. package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +35 -74
  6. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.cjs +105 -0
  7. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.cjs +11 -0
  8. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.cjs +112 -0
  9. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.cjs +16 -0
  10. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/List/List.cjs +35 -10
  11. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.cjs +61 -8
  12. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.cjs +10 -1
  13. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.cjs +38 -9
  14. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.cjs +4 -1
  15. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +60 -30
  16. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.cjs +2 -1
  17. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +2 -1
  18. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +4 -2
  19. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.cjs +87 -0
  20. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.cjs +11 -0
  21. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.cjs +52 -0
  22. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.cjs +13 -0
  23. package/dist/esm/alpha.mjs +1 -1
  24. package/dist/esm/src/Notification/InlineNotification/InlineNotification.mjs +1 -1
  25. package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +39 -73
  26. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.mjs +96 -0
  27. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.mjs +9 -0
  28. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.mjs +103 -0
  29. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.mjs +14 -0
  30. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/List/List.mjs +37 -14
  31. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.mjs +63 -13
  32. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.mjs +10 -1
  33. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.mjs +41 -15
  34. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.mjs +4 -1
  35. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +69 -43
  36. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +2 -1
  37. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +2 -1
  38. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +4 -2
  39. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.mjs +78 -0
  40. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.mjs +9 -0
  41. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.mjs +43 -0
  42. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.mjs +11 -0
  43. package/dist/styles.css +443 -79
  44. package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +14 -19
  45. package/dist/types/__alpha__/SingleSelect/_docs/mockData.d.ts +3 -0
  46. package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +15 -7
  47. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.d.ts +2 -0
  48. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/index.d.ts +1 -0
  49. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.d.ts +2 -0
  50. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.d.ts +1 -0
  51. package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -7
  52. package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -7
  53. package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -9
  54. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +3 -6
  55. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +1 -0
  56. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +1 -0
  57. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +1 -0
  58. package/dist/types/__alpha__/SingleSelect/subcomponents/Select/Select.d.ts +2 -0
  59. package/dist/types/__alpha__/SingleSelect/subcomponents/Select/index.d.ts +1 -0
  60. package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.d.ts +2 -0
  61. package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.d.ts +1 -0
  62. package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +4 -1
  63. package/dist/types/__alpha__/SingleSelect/types.d.ts +68 -11
  64. package/locales/en.json +9 -1
  65. package/package.json +9 -2
  66. package/src/Notification/InlineNotification/InlineNotification.tsx +1 -1
  67. package/src/__alpha__/SingleSelect/SingleSelect.tsx +35 -88
  68. package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +96 -6
  69. package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +22 -24
  70. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +389 -33
  71. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +41 -22
  72. package/src/__alpha__/SingleSelect/_docs/mockData.ts +20 -14
  73. package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +18 -7
  74. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css +35 -0
  75. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.tsx +106 -0
  76. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/index.ts +1 -0
  77. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css +130 -0
  78. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.tsx +121 -0
  79. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.ts +1 -0
  80. package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +5 -0
  81. package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +36 -13
  82. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +84 -3
  83. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +67 -11
  84. package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css +20 -5
  85. package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +46 -19
  86. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +7 -5
  87. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +90 -37
  88. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +1 -0
  89. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +2 -2
  90. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +9 -8
  91. package/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css +35 -0
  92. package/src/__alpha__/SingleSelect/subcomponents/Select/Select.tsx +84 -0
  93. package/src/__alpha__/SingleSelect/subcomponents/Select/index.ts +1 -0
  94. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css +77 -0
  95. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.tsx +52 -0
  96. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.ts +1 -0
  97. package/src/__alpha__/SingleSelect/subcomponents/index.ts +4 -1
  98. package/src/__alpha__/SingleSelect/types.ts +94 -14
  99. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +0 -57
  100. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.cjs +0 -6
  101. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +0 -49
  102. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.mjs +0 -4
  103. package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +0 -2
  104. package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/index.d.ts +0 -1
  105. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +0 -19
  106. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +0 -35
  107. package/src/__alpha__/SingleSelect/subcomponents/Trigger/index.ts +0 -1
@@ -1,8 +1,11 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var React = require('react');
4
- var reactAriaComponents = require('react-aria-components');
5
+ var classnames = require('classnames');
6
+ var reactAria = require('react-aria');
5
7
  var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
8
+ var useSupportsAnchorPositioning = require('./utils/useSupportsAnchorPositioning.cjs');
6
9
  var usePositioningStyles = require('./utils/usePositioningStyles.cjs');
7
10
  var Popover_module = require('./Popover.module.css.cjs');
8
11
  function _interopDefault(e) {
@@ -11,44 +14,71 @@ function _interopDefault(e) {
11
14
  };
12
15
  }
13
16
  var React__default = /*#__PURE__*/_interopDefault(React);
17
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
14
18
  var Popover = function (_a) {
15
- var buttonRef = _a.buttonRef,
19
+ var _b;
20
+ var _c;
21
+ var state = _a.state,
16
22
  popoverRef = _a.popoverRef,
17
- racPopoverRef = _a.racPopoverRef,
18
- children = _a.children;
19
- var _b = SingleSelectContext.useSingleSelectContext(),
20
- isOpen = _b.isOpen,
21
- setOpen = _b.setOpen,
22
- anchorName = _b.anchorName;
23
- var _c = usePositioningStyles.usePositioningStyles(buttonRef, popoverRef, anchorName),
24
- popoverStyle = _c.popoverStyle,
25
- isPositioned = _c.isPositioned;
26
- var shouldShowPopover = React.useMemo(function () {
27
- return isOpen && isPositioned;
28
- }, [isOpen, isPositioned]);
23
+ children = _a.children,
24
+ clearButtonRef = _a.clearButtonRef,
25
+ restProps = tslib.__rest(_a, ["state", "popoverRef", "children", "clearButtonRef"]);
26
+ var anchorName = SingleSelectContext.useSingleSelectContext().anchorName;
27
+ var manualPopoverRef = React__default.default.useRef(null);
28
+ var popoverProps = reactAria.usePopover(tslib.__assign(tslib.__assign({}, restProps), {
29
+ popoverRef: popoverRef,
30
+ shouldCloseOnInteractOutside: function (element) {
31
+ var _a;
32
+ if ((_a = clearButtonRef === null || clearButtonRef === void 0 ? void 0 : clearButtonRef.current) === null || _a === void 0 ? void 0 : _a.contains(element)) {
33
+ return false;
34
+ }
35
+ return true;
36
+ }
37
+ }), state).popoverProps;
38
+ var supportsAnchorPositioning = useSupportsAnchorPositioning.useSupportsAnchorPositioning();
39
+ var _d = usePositioningStyles.usePositioningStyles(restProps.triggerRef, manualPopoverRef, anchorName),
40
+ popoverStyle = _d.popoverStyle,
41
+ isPositioned = _d.isPositioned,
42
+ updatePosition = _d.updatePosition;
29
43
  React.useLayoutEffect(function () {
30
- var popover = popoverRef.current;
31
- if (!(popover === null || popover === void 0 ? void 0 : popover.showPopover) || !(popover === null || popover === void 0 ? void 0 : popover.hidePopover)) return;
32
- if (shouldShowPopover) {
44
+ if (!supportsAnchorPositioning || !state.isOpen) return;
45
+ updatePosition();
46
+ var popover = manualPopoverRef === null || manualPopoverRef === void 0 ? void 0 : manualPopoverRef.current;
47
+ if (popover === null || popover === void 0 ? void 0 : popover.showPopover) {
33
48
  popover.showPopover();
34
- } else {
49
+ }
50
+ return function () {
51
+ if (popover === null || popover === void 0 ? void 0 : popover.hidePopover) {
52
+ popover.hidePopover();
53
+ }
54
+ };
55
+ }, [state.isOpen, supportsAnchorPositioning, updatePosition, isPositioned]);
56
+ React.useLayoutEffect(function () {
57
+ if (!supportsAnchorPositioning || state.isOpen) return;
58
+ var popover = manualPopoverRef === null || manualPopoverRef === void 0 ? void 0 : manualPopoverRef.current;
59
+ if (popover === null || popover === void 0 ? void 0 : popover.hidePopover) {
35
60
  popover.hidePopover();
36
61
  }
37
- // eslint-disable-next-line react-hooks/exhaustive-deps
38
- }, [shouldShowPopover]);
39
- return React__default.default.createElement(reactAriaComponents.Popover, {
40
- shouldUpdatePosition: false,
41
- trigger: "manual",
42
- isOpen: isOpen,
43
- onOpenChange: setOpen,
44
- ref: racPopoverRef
45
- }, React__default.default.createElement("div", {
62
+ }, [state.isOpen, supportsAnchorPositioning]);
63
+ var manualPopover = React__default.default.createElement("div", {
46
64
  // @ts-expect-error - popover attribute is not included in current ts version, ignore type error
47
65
  popover: "manual",
48
- ref: popoverRef,
66
+ ref: manualPopoverRef,
49
67
  className: Popover_module.popover,
50
68
  style: popoverStyle
51
- }, children));
69
+ }, children);
70
+ return React__default.default.createElement(React__default.default.Fragment, null, state.isOpen && React__default.default.createElement(reactAria.Overlay, null, React__default.default.createElement("div", tslib.__assign({
71
+ id: "popover-id"
72
+ }, popoverProps, {
73
+ ref: popoverRef,
74
+ style: tslib.__assign(tslib.__assign({}, popoverProps.style), !supportsAnchorPositioning && {
75
+ width: (_c = restProps.triggerRef.current) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect().width
76
+ }),
77
+ className: classnames__default.default(Popover_module.popover, (_b = {}, _b[Popover_module.offsetSpacing] = !supportsAnchorPositioning, _b))
78
+ }), React__default.default.createElement(reactAria.DismissButton, {
79
+ onDismiss: state.close
80
+ }), supportsAnchorPositioning ? manualPopover : children, React__default.default.createElement(reactAria.DismissButton, {
81
+ onDismiss: state.close
82
+ }))));
52
83
  };
53
- Popover.displayName = 'SingleSelect.Popover';
54
84
  exports.Popover = Popover;
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var styles = {
4
- "popover": "Popover-module_popover__BjY2S"
4
+ "popover": "Popover-module_popover__BjY2S",
5
+ "offsetSpacing": "Popover-module_offsetSpacing__NdPBV"
5
6
  };
6
7
  module.exports = styles;
@@ -88,7 +88,8 @@ function usePopoverPositioning(_a) {
88
88
  };
89
89
  }, [updatePosition, triggerRef]);
90
90
  return tslib.__assign(tslib.__assign({}, position), {
91
- isPositioned: isPositioned
91
+ isPositioned: isPositioned,
92
+ updatePosition: updatePosition
92
93
  });
93
94
  }
94
95
  exports.usePopoverPositioning = usePopoverPositioning;
@@ -46,7 +46,8 @@ var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
46
46
  bottom = _a.bottom,
47
47
  insetInlineStart = _a.insetInlineStart,
48
48
  maxHeight = _a.maxHeight,
49
- isPositioned = _a.isPositioned;
49
+ isPositioned = _a.isPositioned,
50
+ updatePosition = _a.updatePosition;
50
51
  var positionData = React.useMemo(function () {
51
52
  return {
52
53
  top: top,
@@ -63,7 +64,8 @@ var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
63
64
  }, [hasAnchorSupport, anchorName, positionData]);
64
65
  return {
65
66
  popoverStyle: popoverStyle,
66
- isPositioned: isPositioned
67
+ isPositioned: isPositioned,
68
+ updatePosition: updatePosition
67
69
  };
68
70
  };
69
71
  exports.usePositioningStyles = usePositioningStyles;
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var select = require('@react-stately/select');
6
+ var classnames = require('classnames');
7
+ var reactAria = require('react-aria');
8
+ var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
9
+ var List = require('../List/List.cjs');
10
+ var Popover = require('../Popover/Popover.cjs');
11
+ var SelectTrigger = require('../SelectTrigger/SelectTrigger.cjs');
12
+ var Select_module = require('./Select.module.css.cjs');
13
+ var Label = require('../../../../Label/Label.cjs');
14
+ var FieldMessage = require('../../../../FieldMessage/FieldMessage.cjs');
15
+ function _interopDefault(e) {
16
+ return e && e.__esModule ? e : {
17
+ default: e
18
+ };
19
+ }
20
+ var React__default = /*#__PURE__*/_interopDefault(React);
21
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
22
+ var Select = function (props) {
23
+ var _a;
24
+ var label = props.label,
25
+ description = props.description,
26
+ labelHidden = props.labelHidden,
27
+ _b = props.labelPosition,
28
+ labelPosition = _b === void 0 ? 'top' : _b,
29
+ isDisabled = props.isDisabled,
30
+ isReadOnly = props.isReadOnly,
31
+ _c = props.size,
32
+ size = _c === void 0 ? 'medium' : _c,
33
+ _d = props.variant,
34
+ variant = _d === void 0 ? 'primary' : _d;
35
+ var state = select.useSelectState(tslib.__assign(tslib.__assign({}, props), {
36
+ items: props.items,
37
+ children: props.children
38
+ }));
39
+ var popoverRef = React.useRef(null);
40
+ var listBoxRef = React.useRef(null);
41
+ var triggerRef = React.useRef(null);
42
+ var _e = reactAria.useSelect(tslib.__assign(tslib.__assign({}, props), {
43
+ 'aria-label': labelHidden ? label : undefined
44
+ }), state, triggerRef),
45
+ labelProps = _e.labelProps,
46
+ descriptionProps = _e.descriptionProps,
47
+ menuProps = _e.menuProps,
48
+ triggerProps = _e.triggerProps,
49
+ valueProps = _e.valueProps;
50
+ var uniqueId = React.useId();
51
+ var anchorName = "--trigger-".concat(uniqueId);
52
+ return React__default.default.createElement(SingleSelectContext.SingleSelectContext.Provider, {
53
+ value: {
54
+ anchorName: anchorName,
55
+ state: state,
56
+ isComboBox: false,
57
+ isDisabled: isDisabled !== null && isDisabled !== void 0 ? isDisabled : false,
58
+ isReadOnly: isReadOnly !== null && isReadOnly !== void 0 ? isReadOnly : false,
59
+ secondary: variant === 'secondary',
60
+ size: size,
61
+ fieldLabel: label
62
+ }
63
+ }, React__default.default.createElement("div", {
64
+ className: labelPosition === 'top' ? Select_module.topLabel : Select_module.sideLabel
65
+ }, !labelHidden && React__default.default.createElement("div", {
66
+ className: classnames__default.default(Select_module.label, (_a = {}, _a[Select_module.labelTop] = labelPosition === 'top', _a))
67
+ }, React__default.default.createElement(Label.Label, tslib.__assign({}, labelProps), label)), React__default.default.createElement("div", {
68
+ className: Select_module.selectTrigger
69
+ }, React__default.default.createElement(SelectTrigger.SelectTrigger, {
70
+ triggerProps: triggerProps,
71
+ valueProps: valueProps,
72
+ buttonRef: triggerRef
73
+ })), description && React__default.default.createElement("div", {
74
+ className: Select_module.description
75
+ }, React__default.default.createElement(FieldMessage.FieldMessage, tslib.__assign({
76
+ message: description
77
+ }, descriptionProps)))), React__default.default.createElement(Popover.Popover, {
78
+ state: state,
79
+ triggerRef: triggerRef,
80
+ popoverRef: popoverRef
81
+ }, React__default.default.createElement(List.List, {
82
+ listBoxOptions: menuProps,
83
+ state: state,
84
+ listBoxRef: listBoxRef
85
+ })));
86
+ };
87
+ exports.Select = Select;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var styles = {
4
+ "topLabel": "Select-module_topLabel__tuilO",
5
+ "sideLabel": "Select-module_sideLabel__om-vC",
6
+ "label": "Select-module_label__X4jf-",
7
+ "labelTop": "Select-module_labelTop__vE3N2",
8
+ "selectTrigger": "Select-module_selectTrigger__ibr4f",
9
+ "description": "Select-module_description__hOocq"
10
+ };
11
+ module.exports = styles;
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var classnames = require('classnames');
6
+ var reactAria = require('react-aria');
7
+ var Icon = require('../../../../Icon/Icon.cjs');
8
+ var Text = require('../../../../Text/Text.cjs');
9
+ var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
10
+ var SelectTrigger_module = require('./SelectTrigger.module.css.cjs');
11
+ function _interopDefault(e) {
12
+ return e && e.__esModule ? e : {
13
+ default: e
14
+ };
15
+ }
16
+ var React__default = /*#__PURE__*/_interopDefault(React);
17
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
18
+ var ChevronButton = function () {
19
+ var state = SingleSelectContext.useSingleSelectContext().state;
20
+ return React__default.default.createElement("div", {
21
+ className: SelectTrigger_module.chevronButton
22
+ }, React__default.default.createElement(Icon.Icon, {
23
+ isPresentational: true,
24
+ name: state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'
25
+ }));
26
+ };
27
+ var SelectTrigger = function (_a) {
28
+ var _b;
29
+ var triggerProps = _a.triggerProps,
30
+ valueProps = _a.valueProps,
31
+ buttonRef = _a.buttonRef;
32
+ var _c = SingleSelectContext.useSingleSelectContext(),
33
+ state = _c.state,
34
+ anchorName = _c.anchorName,
35
+ isDisabled = _c.isDisabled,
36
+ isReadOnly = _c.isReadOnly,
37
+ secondary = _c.secondary,
38
+ size = _c.size;
39
+ var buttonProps = reactAria.useButton(triggerProps, buttonRef).buttonProps;
40
+ return React__default.default.createElement("button", tslib.__assign({}, buttonProps, {
41
+ type: "button",
42
+ style: {
43
+ '--anchor-name': anchorName
44
+ },
45
+ className: classnames__default.default(SelectTrigger_module.trigger, (_b = {}, _b[SelectTrigger_module.disabled] = isDisabled, _b[SelectTrigger_module.readOnly] = isReadOnly, _b[SelectTrigger_module.secondary] = secondary, _b[SelectTrigger_module.small] = size === 'small', _b[SelectTrigger_module.large] = size === 'large', _b)),
46
+ ref: buttonRef
47
+ }), React__default.default.createElement(Text.Text, {
48
+ variant: size === 'small' ? 'small' : 'body',
49
+ classNameOverride: isDisabled ? SelectTrigger_module.disabledText : undefined
50
+ }, React__default.default.createElement("span", tslib.__assign({}, valueProps), state.selectedItem ? state.selectedItem.textValue : '')), !isReadOnly && React__default.default.createElement(ChevronButton, null));
51
+ };
52
+ exports.SelectTrigger = SelectTrigger;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var styles = {
4
+ "trigger": "SelectTrigger-module_trigger__fIe03",
5
+ "disabled": "SelectTrigger-module_disabled__zfAoe",
6
+ "secondary": "SelectTrigger-module_secondary__eOquY",
7
+ "readOnly": "SelectTrigger-module_readOnly__q-Epr",
8
+ "disabledText": "SelectTrigger-module_disabledText__acP59",
9
+ "small": "SelectTrigger-module_small__jE-NG",
10
+ "large": "SelectTrigger-module_large__r93d8",
11
+ "chevronButton": "SelectTrigger-module_chevronButton__611jw"
12
+ };
13
+ module.exports = styles;
@@ -1 +1 @@
1
- export { SingleSelect } from './src/__alpha__/SingleSelect/SingleSelect.mjs';
1
+ export { Item, SingleSelect } from './src/__alpha__/SingleSelect/SingleSelect.mjs';
@@ -19,7 +19,7 @@ const InlineNotification = /*#__PURE__*/function () {
19
19
  otherProps = __rest(_a, ["isSubtle", "hideCloseIcon", "persistent", "classNameOverride"]);
20
20
  return /*#__PURE__*/React.createElement(GenericNotification, __assign({
21
21
  style: "inline",
22
- persistent: persistent !== null && persistent !== void 0 ? persistent : hideCloseIcon,
22
+ persistent: persistent || hideCloseIcon,
23
23
  classNameOverride: classnames(classNameOverride, [isSubtle && styles.subtle]),
24
24
  ref: ref
25
25
  }, otherProps));
@@ -1,77 +1,43 @@
1
- import { __rest, __assign } from 'tslib';
2
- import React, { useId, useMemo, isValidElement, cloneElement } from 'react';
3
- import { useSelectState } from '@react-stately/select';
4
- import { Select } from 'react-aria-components';
5
- import { SingleSelectContext } from './context/SingleSelectContext.mjs';
6
- import { List } from './subcomponents/List/List.mjs';
7
- import { ListSection } from './subcomponents/ListSection/ListSection.mjs';
8
- import { ListItem } from './subcomponents/ListItem/ListItem.mjs';
9
- import { Trigger } from './subcomponents/Trigger/Trigger.mjs';
10
- import { Popover } from './subcomponents/Popover/Popover.mjs';
1
+ import { __assign, __rest } from 'tslib';
2
+ import React from 'react';
3
+ import { Item as Item$1, Section } from '@react-stately/collections';
4
+ import 'react-aria';
5
+ import 'classnames';
6
+ import '../../Radio/Radio/Radio.mjs';
7
+ import '../../Radio/RadioField/RadioField.mjs';
8
+ import '../../Radio/RadioGroup/RadioGroup.mjs';
9
+ import '../../Divider/Divider.mjs';
10
+ import '../../Text/Text.mjs';
11
+ import './context/SingleSelectContext.mjs';
12
+ import '@cultureamp/i18n-react-intl';
13
+ import '../../VisuallyHidden/VisuallyHidden.mjs';
14
+ import '@react-aria/i18n';
15
+ import { Select } from './subcomponents/Select/Select.mjs';
16
+ import { ComboBox } from './subcomponents/ComboBox/ComboBox.mjs';
11
17
  const SingleSelect = /*#__PURE__*/function () {
12
- const SingleSelect = function (_a) {
13
- var items = _a.items,
14
- onSelectionChange = _a.onSelectionChange,
15
- children = _a.children,
16
- restProps = __rest(_a, ["items", "onSelectionChange", "children"]);
17
- var buttonRef = React.useRef(null);
18
- var popoverRef = React.useRef(null);
19
- var racPopoverRef = React.useRef(null);
20
- var uniqueId = useId();
21
- var anchorName = "--trigger-".concat(uniqueId);
22
- var state = useSelectState({
23
- items: items
24
- });
25
- var handleOnSelectionChange = React.useCallback(function (keys) {
26
- var key = null;
27
- if (keys instanceof Set && keys.size > 0) {
28
- key = Array.from(keys)[0];
29
- }
30
- state.setSelectedKey(key);
31
- if (onSelectionChange) {
32
- onSelectionChange(key);
33
- }
34
- }, [state, onSelectionChange]);
35
- // Cloning children here to allow users to pass in a custom ListItem or ListSection
36
- // and still have the SingleSelect handle selection state
37
- var injectedChildren = useMemo(function () {
38
- if (! /*#__PURE__*/isValidElement(children)) return null;
39
- var selectedKeys = state.selectedKey ? new Set([state.selectedKey]) : new Set();
40
- return /*#__PURE__*/cloneElement(children, {
41
- selectionMode: 'single',
42
- selectedKeys: selectedKeys,
43
- onSelectionChange: handleOnSelectionChange,
44
- autoFocus: 'first'
45
- });
46
- }, [children, handleOnSelectionChange, state.selectedKey]);
47
- return /*#__PURE__*/React.createElement(SingleSelectContext.Provider, {
48
- value: {
49
- isOpen: state.isOpen,
50
- setOpen: state.setOpen,
51
- selectedKey: state.selectedKey,
52
- items: items,
53
- anchorName: anchorName
54
- }
55
- }, /*#__PURE__*/React.createElement(Select
56
- // TODO: allow user to pass in label
57
- , __assign({
58
- "aria-label": 'single-select',
59
- onSelectionChange: function (key) {
60
- return handleOnSelectionChange(key != null ? new Set([key]) : new Set());
61
- },
62
- placeholder: ""
63
- }, restProps), /*#__PURE__*/React.createElement(Trigger, {
64
- buttonRef: buttonRef
65
- }), state.isOpen && (/*#__PURE__*/React.createElement(Popover, {
66
- buttonRef: buttonRef,
67
- popoverRef: popoverRef,
68
- racPopoverRef: racPopoverRef
69
- }, injectedChildren))));
18
+ const SingleSelect = function (props) {
19
+ var isComboBox = props.isComboBox,
20
+ children = props.children,
21
+ rest = __rest(props, ["isComboBox", "children"]);
22
+ if (isComboBox) {
23
+ return /*#__PURE__*/React.createElement(ComboBox, __assign({}, rest), children);
24
+ }
25
+ return /*#__PURE__*/React.createElement(Select, __assign({}, rest), children);
70
26
  };
71
- SingleSelect.displayName = 'SingleSelect';
72
- SingleSelect.List = List;
73
- SingleSelect.ListItem = ListItem;
74
- SingleSelect.ListSection = ListSection;
27
+ SingleSelect.Item = Item;
28
+ SingleSelect.Section = Section;
75
29
  return SingleSelect;
76
30
  }();
77
- export { SingleSelect };
31
+ const Item = /*#__PURE__*/function () {
32
+ const Item = /*#__PURE__*/React.forwardRef(function (props, ref) {
33
+ // @ts-expect-error: StatelyItem doesn't know about our internal item props
34
+ return /*#__PURE__*/React.createElement(Item$1, __assign({}, props, {
35
+ ref: ref
36
+ }));
37
+ });
38
+ // @ts-expect-error: doesn't know that the Item can have this static property
39
+ Item.getCollectionNode = Item$1.getCollectionNode;
40
+ Item.displayName = 'SingleSelectItem';
41
+ return Item;
42
+ }();
43
+ export { Item, SingleSelect };
@@ -0,0 +1,96 @@
1
+ import { __assign } from 'tslib';
2
+ import React, { useRef, useId } from 'react';
3
+ import { useComboBoxState } from '@react-stately/combobox';
4
+ import classnames from 'classnames';
5
+ import { useFilter, useComboBox } from 'react-aria';
6
+ import { FieldMessage } from '../../../../FieldMessage/FieldMessage.mjs';
7
+ import { Label } from '../../../../Label/Label.mjs';
8
+ import { SingleSelectContext } from '../../context/SingleSelectContext.mjs';
9
+ import { ComboBoxTrigger } from '../ComboBoxTrigger/ComboBoxTrigger.mjs';
10
+ import { List } from '../List/List.mjs';
11
+ import { Popover } from '../Popover/Popover.mjs';
12
+ import styles from './ComboBox.module.css.mjs';
13
+ var ComboBox = function (props) {
14
+ var _a;
15
+ var items = props.items,
16
+ children = props.children,
17
+ label = props.label,
18
+ description = props.description,
19
+ labelHidden = props.labelHidden,
20
+ _b = props.labelPosition,
21
+ labelPosition = _b === void 0 ? 'top' : _b,
22
+ isReadOnly = props.isReadOnly,
23
+ isDisabled = props.isDisabled,
24
+ _c = props.size,
25
+ size = _c === void 0 ? 'medium' : _c,
26
+ _d = props.variant,
27
+ variant = _d === void 0 ? 'primary' : _d;
28
+ var contains = useFilter({
29
+ sensitivity: 'base'
30
+ }).contains;
31
+ var state = useComboBoxState(__assign(__assign({}, props), {
32
+ items: items,
33
+ defaultFilter: contains,
34
+ children: children,
35
+ menuTrigger: 'focus'
36
+ }));
37
+ var inputRef = useRef(null);
38
+ var popoverRef = useRef(null);
39
+ var listBoxRef = useRef(null);
40
+ var buttonRef = useRef(null);
41
+ var clearButtonRef = useRef(null);
42
+ var triggerWrapperRef = useRef(null);
43
+ var _e = useComboBox(__assign(__assign({}, props), {
44
+ 'aria-label': labelHidden ? label : undefined,
45
+ inputRef: inputRef,
46
+ buttonRef: buttonRef,
47
+ popoverRef: popoverRef,
48
+ listBoxRef: listBoxRef
49
+ }), state),
50
+ labelProps = _e.labelProps,
51
+ descriptionProps = _e.descriptionProps,
52
+ inputProps = _e.inputProps,
53
+ listBoxProps = _e.listBoxProps,
54
+ buttonProps = _e.buttonProps;
55
+ var uniqueId = useId();
56
+ var anchorName = "--trigger-".concat(uniqueId);
57
+ return /*#__PURE__*/React.createElement(SingleSelectContext.Provider, {
58
+ value: {
59
+ anchorName: anchorName,
60
+ state: state,
61
+ isComboBox: true,
62
+ isDisabled: isDisabled !== null && isDisabled !== void 0 ? isDisabled : false,
63
+ isReadOnly: isReadOnly !== null && isReadOnly !== void 0 ? isReadOnly : false,
64
+ secondary: variant === 'secondary',
65
+ size: size,
66
+ fieldLabel: label
67
+ }
68
+ }, /*#__PURE__*/React.createElement("div", {
69
+ className: labelPosition === 'top' ? styles.topLabel : styles.sideLabel
70
+ }, !labelHidden && (/*#__PURE__*/React.createElement("div", {
71
+ className: classnames(styles.label, (_a = {}, _a[styles.labelTop] = labelPosition === 'top', _a))
72
+ }, /*#__PURE__*/React.createElement(Label, __assign({}, labelProps), label))), /*#__PURE__*/React.createElement("div", {
73
+ className: styles.comboBoxTrigger
74
+ }, /*#__PURE__*/React.createElement(ComboBoxTrigger, {
75
+ inputProps: inputProps,
76
+ inputRef: inputRef,
77
+ buttonRef: buttonRef,
78
+ buttonProps: buttonProps,
79
+ clearButtonRef: clearButtonRef,
80
+ triggerWrapperRef: triggerWrapperRef
81
+ })), description && (/*#__PURE__*/React.createElement("div", {
82
+ className: styles.description
83
+ }, /*#__PURE__*/React.createElement(FieldMessage, __assign({
84
+ message: description
85
+ }, descriptionProps))))), /*#__PURE__*/React.createElement(Popover, {
86
+ state: state,
87
+ triggerRef: triggerWrapperRef,
88
+ popoverRef: popoverRef,
89
+ clearButtonRef: clearButtonRef
90
+ }, /*#__PURE__*/React.createElement(List, {
91
+ listBoxOptions: listBoxProps,
92
+ state: state,
93
+ listBoxRef: listBoxRef
94
+ })));
95
+ };
96
+ export { ComboBox };
@@ -0,0 +1,9 @@
1
+ var styles = {
2
+ "topLabel": "ComboBox-module_topLabel__a2t80",
3
+ "sideLabel": "ComboBox-module_sideLabel__B-jX4",
4
+ "label": "ComboBox-module_label__eTnD9",
5
+ "labelTop": "ComboBox-module_labelTop__h6r-z",
6
+ "comboBoxTrigger": "ComboBox-module_comboBoxTrigger__yvqGb",
7
+ "description": "ComboBox-module_description__MDKJ7"
8
+ };
9
+ export { styles as default };