@kaizen/components 0.0.0-canary-v2-20250901045936 → 0.0.0-canary-debug-tab-20251015223744

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 (165) 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/Modal/GenericModal/GenericModal.cjs +33 -65
  5. package/dist/cjs/src/Modal/GenericModal/GenericModal.module.scss.cjs +1 -3
  6. package/dist/cjs/src/Notification/InlineNotification/InlineNotification.cjs +1 -1
  7. package/dist/cjs/src/SingleSelect/subcomponents/ListBox/ListBox.cjs +6 -2
  8. package/dist/cjs/src/Tabs/subcomponents/TabList/TabList.cjs +29 -21
  9. package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +35 -74
  10. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.cjs +105 -0
  11. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.cjs +11 -0
  12. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.cjs +112 -0
  13. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.cjs +16 -0
  14. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/List/List.cjs +35 -10
  15. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.cjs +61 -8
  16. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.cjs +10 -1
  17. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.cjs +38 -9
  18. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.cjs +4 -1
  19. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +60 -30
  20. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.cjs +2 -1
  21. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +2 -1
  22. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +4 -2
  23. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.cjs +87 -0
  24. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.cjs +11 -0
  25. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.cjs +52 -0
  26. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.cjs +13 -0
  27. package/dist/esm/alpha.mjs +1 -1
  28. package/dist/esm/src/Modal/GenericModal/GenericModal.mjs +34 -65
  29. package/dist/esm/src/Modal/GenericModal/GenericModal.module.scss.mjs +1 -3
  30. package/dist/esm/src/Notification/InlineNotification/InlineNotification.mjs +1 -1
  31. package/dist/esm/src/SingleSelect/subcomponents/ListBox/ListBox.mjs +6 -2
  32. package/dist/esm/src/Tabs/subcomponents/TabList/TabList.mjs +29 -21
  33. package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +39 -73
  34. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.mjs +96 -0
  35. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.mjs +9 -0
  36. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.mjs +103 -0
  37. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.mjs +14 -0
  38. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/List/List.mjs +37 -14
  39. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.mjs +63 -13
  40. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.mjs +10 -1
  41. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.mjs +41 -15
  42. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.mjs +4 -1
  43. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +69 -43
  44. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +2 -1
  45. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +2 -1
  46. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +4 -2
  47. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.mjs +78 -0
  48. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.mjs +9 -0
  49. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.mjs +43 -0
  50. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.mjs +11 -0
  51. package/dist/styles.css +443 -79
  52. package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +14 -19
  53. package/dist/types/__alpha__/SingleSelect/_docs/mockData.d.ts +3 -0
  54. package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +15 -7
  55. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.d.ts +2 -0
  56. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/index.d.ts +1 -0
  57. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.d.ts +2 -0
  58. package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.d.ts +1 -0
  59. package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -7
  60. package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -7
  61. package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -9
  62. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +3 -6
  63. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +1 -0
  64. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +1 -0
  65. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +1 -0
  66. package/dist/types/__alpha__/SingleSelect/subcomponents/Select/Select.d.ts +2 -0
  67. package/dist/types/__alpha__/SingleSelect/subcomponents/Select/index.d.ts +1 -0
  68. package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.d.ts +2 -0
  69. package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.d.ts +1 -0
  70. package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +4 -1
  71. package/dist/types/__alpha__/SingleSelect/types.d.ts +68 -11
  72. package/locales/ar.json +9 -1
  73. package/locales/bg.json +9 -1
  74. package/locales/cs.json +9 -1
  75. package/locales/cy.json +9 -1
  76. package/locales/da.json +9 -1
  77. package/locales/de.json +9 -1
  78. package/locales/el.json +9 -1
  79. package/locales/en-GB.json +9 -1
  80. package/locales/en.json +9 -1
  81. package/locales/es-419.json +9 -1
  82. package/locales/es.json +9 -1
  83. package/locales/et.json +9 -1
  84. package/locales/fi.json +9 -1
  85. package/locales/fr-CA.json +9 -1
  86. package/locales/fr.json +9 -1
  87. package/locales/he.json +9 -1
  88. package/locales/hi.json +9 -1
  89. package/locales/ht.json +9 -1
  90. package/locales/hu.json +9 -1
  91. package/locales/id.json +9 -1
  92. package/locales/it.json +9 -1
  93. package/locales/ja.json +9 -1
  94. package/locales/km-KH.json +9 -1
  95. package/locales/ko.json +9 -1
  96. package/locales/lt.json +9 -1
  97. package/locales/lv.json +9 -1
  98. package/locales/mi.json +10 -2
  99. package/locales/ms.json +9 -1
  100. package/locales/nb.json +9 -1
  101. package/locales/nl.json +9 -1
  102. package/locales/pl.json +9 -1
  103. package/locales/pt-BR.json +9 -1
  104. package/locales/pt.json +9 -1
  105. package/locales/ro.json +9 -1
  106. package/locales/ru.json +9 -1
  107. package/locales/si-LK.json +9 -1
  108. package/locales/sk.json +9 -1
  109. package/locales/sr.json +9 -1
  110. package/locales/sv.json +9 -1
  111. package/locales/th.json +9 -1
  112. package/locales/tl.json +9 -1
  113. package/locales/tr.json +9 -1
  114. package/locales/uk.json +9 -1
  115. package/locales/vi.json +9 -1
  116. package/locales/zh-TW.json +9 -1
  117. package/locales/zh.json +9 -1
  118. package/package.json +10 -3
  119. package/src/Modal/GenericModal/GenericModal.spec.tsx +1 -1
  120. package/src/Modal/GenericModal/GenericModal.tsx +38 -70
  121. package/src/Notification/InlineNotification/InlineNotification.tsx +1 -1
  122. package/src/RichTextEditor/RichTextEditor/RichTextEditor.spec.stories.tsx +10 -3
  123. package/src/SingleSelect/subcomponents/ListBox/ListBox.tsx +2 -2
  124. package/src/Tabs/subcomponents/TabList/TabList.tsx +40 -30
  125. package/src/__alpha__/SingleSelect/SingleSelect.tsx +35 -88
  126. package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +96 -6
  127. package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +22 -24
  128. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +389 -33
  129. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +41 -22
  130. package/src/__alpha__/SingleSelect/_docs/mockData.ts +20 -14
  131. package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +18 -7
  132. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css +35 -0
  133. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.tsx +106 -0
  134. package/src/__alpha__/SingleSelect/subcomponents/ComboBox/index.ts +1 -0
  135. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css +130 -0
  136. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.tsx +121 -0
  137. package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.ts +1 -0
  138. package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +5 -0
  139. package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +36 -13
  140. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +84 -3
  141. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +67 -11
  142. package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css +20 -5
  143. package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +46 -19
  144. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +7 -5
  145. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +90 -37
  146. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +1 -0
  147. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +2 -2
  148. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +9 -8
  149. package/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css +35 -0
  150. package/src/__alpha__/SingleSelect/subcomponents/Select/Select.tsx +84 -0
  151. package/src/__alpha__/SingleSelect/subcomponents/Select/index.ts +1 -0
  152. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css +77 -0
  153. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.tsx +52 -0
  154. package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.ts +1 -0
  155. package/src/__alpha__/SingleSelect/subcomponents/index.ts +4 -1
  156. package/src/__alpha__/SingleSelect/types.ts +94 -14
  157. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +0 -57
  158. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.cjs +0 -6
  159. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +0 -49
  160. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.mjs +0 -4
  161. package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +0 -2
  162. package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/index.d.ts +0 -1
  163. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +0 -19
  164. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +0 -35
  165. package/src/__alpha__/SingleSelect/subcomponents/Trigger/index.ts +0 -1
@@ -0,0 +1,112 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var i18nReactIntl = require('@cultureamp/i18n-react-intl');
6
+ var classnames = require('classnames');
7
+ var reactAria = require('react-aria');
8
+ var Icon = require('../../../../Icon/Icon.cjs');
9
+ var VisuallyHidden = require('../../../../VisuallyHidden/VisuallyHidden.cjs');
10
+ var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
11
+ var ComboBoxTrigger_module = require('./ComboBoxTrigger.module.css.cjs');
12
+ function _interopDefault(e) {
13
+ return e && e.__esModule ? e : {
14
+ default: e
15
+ };
16
+ }
17
+ var React__default = /*#__PURE__*/_interopDefault(React);
18
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
19
+ var ClearButton = function (_a) {
20
+ var _b;
21
+ var clearButtonRef = _a.clearButtonRef,
22
+ inputRef = _a.inputRef;
23
+ var _c = SingleSelectContext.useSingleSelectContext(),
24
+ state = _c.state,
25
+ isComboBox = _c.isComboBox,
26
+ fieldLabel = _c.fieldLabel;
27
+ var formatMessage = i18nReactIntl.useIntl().formatMessage;
28
+ var clearButtonAlt = formatMessage({
29
+ id: 'singleSelect.clearButtonAlt',
30
+ defaultMessage: 'Clear {field} selection',
31
+ description: 'Alt text for the clear selection button'
32
+ }, {
33
+ field: fieldLabel
34
+ });
35
+ var buttonProps = reactAria.useButton({
36
+ onPress: function () {
37
+ var _a;
38
+ if (isComboBox) {
39
+ state.setSelectedKey(null);
40
+ }
41
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
42
+ }
43
+ }, clearButtonRef).buttonProps;
44
+ return React__default.default.createElement("button", tslib.__assign({}, buttonProps, {
45
+ ref: clearButtonRef,
46
+ type: "button",
47
+ className: classnames__default.default(ComboBoxTrigger_module.clearButton, (_b = {}, _b[ComboBoxTrigger_module.hidden] = !state.selectedKey, _b)),
48
+ tabIndex: 0
49
+ }), React__default.default.createElement(Icon.Icon, {
50
+ name: "cancel",
51
+ isPresentational: true,
52
+ isFilled: true
53
+ }), React__default.default.createElement(VisuallyHidden.VisuallyHidden, null, clearButtonAlt));
54
+ };
55
+ var ChevronButton = function (props) {
56
+ var _a = SingleSelectContext.useSingleSelectContext(),
57
+ state = _a.state,
58
+ fieldLabel = _a.fieldLabel;
59
+ var formatMessage = i18nReactIntl.useIntl().formatMessage;
60
+ var chevronButton = formatMessage({
61
+ id: 'singleSelect.chevronButton',
62
+ defaultMessage: 'Show suggestions for {field}',
63
+ description: 'Aria label text for the SingleSelect button to open and close suggestions list'
64
+ }, {
65
+ field: fieldLabel
66
+ });
67
+ var buttonProps = reactAria.useButton(tslib.__assign(tslib.__assign({}, props), {
68
+ 'aria-label': String(chevronButton),
69
+ 'aria-labelledby': undefined
70
+ }), props.buttonRef).buttonProps;
71
+ return React__default.default.createElement("button", tslib.__assign({
72
+ type: "button"
73
+ }, buttonProps, {
74
+ ref: props.buttonRef,
75
+ className: ComboBoxTrigger_module.chevronButton,
76
+ tabIndex: -1
77
+ }), React__default.default.createElement(Icon.Icon, {
78
+ isPresentational: true,
79
+ name: state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'
80
+ }));
81
+ };
82
+ var ComboBoxTrigger = function (_a) {
83
+ var _b, _c;
84
+ var inputProps = _a.inputProps,
85
+ inputRef = _a.inputRef,
86
+ buttonProps = _a.buttonProps,
87
+ buttonRef = _a.buttonRef,
88
+ triggerWrapperRef = _a.triggerWrapperRef,
89
+ clearButtonRef = _a.clearButtonRef;
90
+ var _d = SingleSelectContext.useSingleSelectContext(),
91
+ anchorName = _d.anchorName,
92
+ isDisabled = _d.isDisabled,
93
+ isReadOnly = _d.isReadOnly,
94
+ secondary = _d.secondary,
95
+ size = _d.size;
96
+ return React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", {
97
+ style: {
98
+ '--anchor-name': anchorName
99
+ },
100
+ ref: triggerWrapperRef,
101
+ className: classnames__default.default(ComboBoxTrigger_module.trigger, (_b = {}, _b[ComboBoxTrigger_module.disabled] = isDisabled, _b[ComboBoxTrigger_module.readOnly] = isReadOnly, _b[ComboBoxTrigger_module.secondary] = secondary, _b[ComboBoxTrigger_module.small] = size === 'small', _b[ComboBoxTrigger_module.large] = size === 'large', _b))
102
+ }, React__default.default.createElement("input", tslib.__assign({}, inputProps, {
103
+ ref: inputRef,
104
+ className: classnames__default.default(ComboBoxTrigger_module.input, (_c = {}, _c[ComboBoxTrigger_module.smallText] = size === 'small', _c))
105
+ })), !isDisabled && !isReadOnly && React__default.default.createElement(ClearButton, {
106
+ clearButtonRef: clearButtonRef,
107
+ inputRef: inputRef
108
+ }), !isReadOnly && React__default.default.createElement(ChevronButton, tslib.__assign({}, buttonProps, {
109
+ buttonRef: buttonRef
110
+ }))));
111
+ };
112
+ exports.ComboBoxTrigger = ComboBoxTrigger;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var styles = {
4
+ "trigger": "ComboBoxTrigger-module_trigger__p6pcn",
5
+ "smallText": "ComboBoxTrigger-module_smallText__Vj2Ya",
6
+ "secondary": "ComboBoxTrigger-module_secondary__TvNTK",
7
+ "disabled": "ComboBoxTrigger-module_disabled__BkFJy",
8
+ "readOnly": "ComboBoxTrigger-module_readOnly__g6-fB",
9
+ "input": "ComboBoxTrigger-module_input__TkoLg",
10
+ "small": "ComboBoxTrigger-module_small__-225Z",
11
+ "large": "ComboBoxTrigger-module_large__kj1vw",
12
+ "clearButton": "ComboBoxTrigger-module_clearButton__PlsuZ",
13
+ "chevronButton": "ComboBoxTrigger-module_chevronButton__rzv2v",
14
+ "hidden": "ComboBoxTrigger-module_hidden__zC13w"
15
+ };
16
+ module.exports = styles;
@@ -2,8 +2,9 @@
2
2
 
3
3
  var tslib = require('tslib');
4
4
  var React = require('react');
5
- var classnames = require('classnames');
6
- var reactAriaComponents = require('react-aria-components');
5
+ var reactAria = require('react-aria');
6
+ var ListItem = require('../ListItem/ListItem.cjs');
7
+ var ListSection = require('../ListSection/ListSection.cjs');
7
8
  var List_module = require('./List.module.css.cjs');
8
9
  function _interopDefault(e) {
9
10
  return e && e.__esModule ? e : {
@@ -11,14 +12,38 @@ function _interopDefault(e) {
11
12
  };
12
13
  }
13
14
  var React__default = /*#__PURE__*/_interopDefault(React);
14
- var classnames__default = /*#__PURE__*/_interopDefault(classnames);
15
15
  var List = function (_a) {
16
- var children = _a.children,
17
- className = _a.className,
18
- props = tslib.__rest(_a, ["children", "className"]);
19
- return React__default.default.createElement(reactAriaComponents.ListBox, tslib.__assign({
20
- className: classnames__default.default(List_module.list, className)
21
- }, props), children);
16
+ var state = _a.state,
17
+ listBoxOptions = _a.listBoxOptions,
18
+ listBoxRef = _a.listBoxRef;
19
+ var listBoxProps = reactAria.useListBox(tslib.__assign(tslib.__assign({}, listBoxOptions), {
20
+ autoFocus: 'first'
21
+ }), state, listBoxRef).listBoxProps;
22
+ var renderNode = function (node) {
23
+ if (node.type === 'section') {
24
+ return node.rendered ? React__default.default.createElement(ListSection.ListSection, {
25
+ key: String(node.key),
26
+ section: node,
27
+ state: state
28
+ }) : null;
29
+ } else {
30
+ var _a = node.props,
31
+ selectedIcon = _a.selectedIcon,
32
+ selectedPosition = _a.selectedPosition,
33
+ className = _a.className;
34
+ return React__default.default.createElement(ListItem.ListItem, {
35
+ key: String(node.key),
36
+ item: node,
37
+ state: state,
38
+ selectedIcon: selectedIcon,
39
+ selectedPosition: selectedPosition,
40
+ className: className
41
+ });
42
+ }
43
+ };
44
+ return React__default.default.createElement("ul", tslib.__assign({}, listBoxProps, {
45
+ ref: listBoxRef,
46
+ className: List_module.list
47
+ }), Array.from(state.collection).map(renderNode));
22
48
  };
23
- List.displayName = 'SingleSelect.List';
24
49
  exports.List = List;
@@ -3,7 +3,11 @@
3
3
  var tslib = require('tslib');
4
4
  var React = require('react');
5
5
  var classnames = require('classnames');
6
- var reactAriaComponents = require('react-aria-components');
6
+ var reactAria = require('react-aria');
7
+ var Icon = require('../../../../Icon/Icon.cjs');
8
+ var Radio = require('../../../../Radio/Radio/Radio.cjs');
9
+ require('../../../../Radio/RadioField/RadioField.cjs');
10
+ require('../../../../Radio/RadioGroup/RadioGroup.cjs');
7
11
  var ListItem_module = require('./ListItem.module.css.cjs');
8
12
  function _interopDefault(e) {
9
13
  return e && e.__esModule ? e : {
@@ -13,12 +17,61 @@ function _interopDefault(e) {
13
17
  var React__default = /*#__PURE__*/_interopDefault(React);
14
18
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
15
19
  var ListItem = function (_a) {
16
- var children = _a.children,
17
- className = _a.className,
18
- props = tslib.__rest(_a, ["children", "className"]);
19
- return React__default.default.createElement(reactAriaComponents.ListBoxItem, tslib.__assign({
20
- className: classnames__default.default(ListItem_module.listItem, className)
21
- }, props), children);
20
+ var _b;
21
+ var item = _a.item,
22
+ state = _a.state,
23
+ _c = _a.selectedIcon,
24
+ selectedIcon = _c === void 0 ? 'check' : _c,
25
+ _d = _a.selectedPosition,
26
+ selectedPosition = _d === void 0 ? 'end' : _d,
27
+ className = _a.className;
28
+ var ref = React__default.default.useRef(null);
29
+ var _e = reactAria.useOption({
30
+ key: item.key
31
+ }, state, ref),
32
+ optionProps = _e.optionProps,
33
+ isSelected = _e.isSelected,
34
+ isDisabled = _e.isDisabled,
35
+ isFocused = _e.isFocused;
36
+ var isStart = selectedPosition === 'start';
37
+ var isEnd = selectedPosition === 'end';
38
+ var isCheck = selectedIcon === 'check';
39
+ var isRadio = selectedIcon === 'radio';
40
+ var renderSelectionIcon = function () {
41
+ if (isCheck) {
42
+ if (isSelected) {
43
+ return React__default.default.createElement("div", {
44
+ className: ListItem_module.selectedIconWrapper
45
+ }, React__default.default.createElement(Icon.Icon, {
46
+ name: "check",
47
+ isPresentational: true,
48
+ className: ListItem_module.iconChecked
49
+ }));
50
+ }
51
+ return isStart ? React__default.default.createElement("div", {
52
+ className: ListItem_module.emptySpacer
53
+ }) : null;
54
+ }
55
+ if (isRadio) {
56
+ return React__default.default.createElement("div", {
57
+ className: ListItem_module.selectedIconWrapper
58
+ }, React__default.default.createElement(Radio.Radio, {
59
+ id: item.textValue,
60
+ name: item.textValue,
61
+ selectedStatus: isSelected
62
+ }));
63
+ }
64
+ return null;
65
+ };
66
+ return React__default.default.createElement("li", tslib.__assign({
67
+ key: item.key
68
+ }, optionProps, {
69
+ ref: ref,
70
+ className: classnames__default.default(ListItem_module.listItem, (_b = {}, _b[ListItem_module.focused] = isFocused, _b[ListItem_module.disabled] = isDisabled, _b[ListItem_module.selected] = isSelected, _b[ListItem_module.selectedStartPosition] = isStart, _b))
71
+ }), isStart && renderSelectionIcon(), typeof item.rendered === 'string' ? React__default.default.createElement("span", {
72
+ className: classnames__default.default(ListItem_module.itemText, className)
73
+ }, item.rendered) : React__default.default.createElement("span", {
74
+ className: classnames__default.default(ListItem_module.itemContent, className)
75
+ }, item.rendered), isEnd && renderSelectionIcon());
22
76
  };
23
- ListItem.displayName = 'SingleSelect.ListItem';
24
77
  exports.ListItem = ListItem;
@@ -1,6 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  var styles = {
4
- "listItem": "ListItem-module_listItem__xGr6A"
4
+ "listItem": "ListItem-module_listItem__xGr6A",
5
+ "focused": "ListItem-module_focused__au3J5",
6
+ "selected": "ListItem-module_selected__IV3-p",
7
+ "disabled": "ListItem-module_disabled__A2QFo",
8
+ "iconChecked": "ListItem-module_iconChecked__co4xD",
9
+ "itemContent": "ListItem-module_itemContent__x4h7q",
10
+ "itemText": "ListItem-module_itemText__O4Ddg",
11
+ "selectedStartPosition": "ListItem-module_selectedStartPosition__2N3bw",
12
+ "selectedIconWrapper": "ListItem-module_selectedIconWrapper__w-ECd",
13
+ "emptySpacer": "ListItem-module_emptySpacer__qeRpQ"
5
14
  };
6
15
  module.exports = styles;
@@ -3,7 +3,9 @@
3
3
  var tslib = require('tslib');
4
4
  var React = require('react');
5
5
  var classnames = require('classnames');
6
- var reactAriaComponents = require('react-aria-components');
6
+ var reactAria = require('react-aria');
7
+ var Divider = require('../../../../Divider/Divider.cjs');
8
+ var ListItem = require('../ListItem/ListItem.cjs');
7
9
  var ListSection_module = require('./ListSection.module.css.cjs');
8
10
  function _interopDefault(e) {
9
11
  return e && e.__esModule ? e : {
@@ -13,13 +15,40 @@ function _interopDefault(e) {
13
15
  var React__default = /*#__PURE__*/_interopDefault(React);
14
16
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
15
17
  var ListSection = function (_a) {
16
- var name = _a.name,
17
- className = _a.className,
18
- children = _a.children,
19
- props = tslib.__rest(_a, ["name", "className", "children"]);
20
- return React__default.default.createElement(reactAriaComponents.ListBoxSection, tslib.__assign({}, props), React__default.default.createElement(reactAriaComponents.Header, {
21
- className: classnames__default.default(ListSection_module.listSectionHeader, className)
22
- }, name), children);
18
+ var _b;
19
+ var section = _a.section,
20
+ state = _a.state;
21
+ var _c = reactAria.useListBoxSection({
22
+ 'heading': section.rendered,
23
+ 'aria-label': section['aria-label']
24
+ }),
25
+ headingProps = _c.headingProps,
26
+ itemProps = _c.itemProps,
27
+ groupProps = _c.groupProps;
28
+ var firstSectionHeader = section.key === state.collection.getFirstKey();
29
+ return React__default.default.createElement(React__default.default.Fragment, {
30
+ key: section.key
31
+ }, !firstSectionHeader && React__default.default.createElement("li", {
32
+ role: "presentation",
33
+ "aria-hidden": true
34
+ }), !firstSectionHeader && React__default.default.createElement(Divider.Divider, {
35
+ variant: "content"
36
+ }), React__default.default.createElement("li", tslib.__assign({}, itemProps, {
37
+ className: classnames__default.default(ListSection_module.sectionWrapper, (_b = {}, _b[ListSection_module.firstSectionHeader] = firstSectionHeader, _b))
38
+ }), section.rendered && React__default.default.createElement("span", tslib.__assign({}, headingProps, {
39
+ role: "presentation",
40
+ "aria-hidden": true,
41
+ className: ListSection_module.listSectionHeader
42
+ }), section.rendered), React__default.default.createElement("ul", tslib.__assign({
43
+ key: "".concat(section.key, "-group-contents")
44
+ }, groupProps, {
45
+ className: ListSection_module.listSectionGroup
46
+ }), Array.from(section.childNodes).map(function (node) {
47
+ return React__default.default.createElement(ListItem.ListItem, {
48
+ key: node.key,
49
+ item: node,
50
+ state: state
51
+ });
52
+ }))));
23
53
  };
24
- ListSection.displayName = 'SingleSelect.ListSection';
25
54
  exports.ListSection = ListSection;
@@ -1,6 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var styles = {
4
- "listSectionHeader": "ListSection-module_listSectionHeader__bptHg"
4
+ "sectionWrapper": "ListSection-module_sectionWrapper__gxh41",
5
+ "firstSectionHeader": "ListSection-module_firstSectionHeader__zPUIZ",
6
+ "listSectionHeader": "ListSection-module_listSectionHeader__bptHg",
7
+ "listSectionGroup": "ListSection-module_listSectionGroup__PoUPf"
5
8
  };
6
9
  module.exports = styles;
@@ -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;