@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
@@ -0,0 +1,103 @@
1
+ import { __assign } from 'tslib';
2
+ import React from 'react';
3
+ import { useIntl } from '@cultureamp/i18n-react-intl';
4
+ import classnames from 'classnames';
5
+ import { useButton } from 'react-aria';
6
+ import { Icon } from '../../../../Icon/Icon.mjs';
7
+ import { VisuallyHidden } from '../../../../VisuallyHidden/VisuallyHidden.mjs';
8
+ import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
9
+ import styles from './ComboBoxTrigger.module.css.mjs';
10
+ var ClearButton = function (_a) {
11
+ var _b;
12
+ var clearButtonRef = _a.clearButtonRef,
13
+ inputRef = _a.inputRef;
14
+ var _c = useSingleSelectContext(),
15
+ state = _c.state,
16
+ isComboBox = _c.isComboBox,
17
+ fieldLabel = _c.fieldLabel;
18
+ var formatMessage = useIntl().formatMessage;
19
+ var clearButtonAlt = formatMessage({
20
+ id: 'singleSelect.clearButtonAlt',
21
+ defaultMessage: 'Clear {field} selection',
22
+ description: 'Alt text for the clear selection button'
23
+ }, {
24
+ field: fieldLabel
25
+ });
26
+ var buttonProps = useButton({
27
+ onPress: function () {
28
+ var _a;
29
+ if (isComboBox) {
30
+ state.setSelectedKey(null);
31
+ }
32
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
33
+ }
34
+ }, clearButtonRef).buttonProps;
35
+ return /*#__PURE__*/React.createElement("button", __assign({}, buttonProps, {
36
+ ref: clearButtonRef,
37
+ type: "button",
38
+ className: classnames(styles.clearButton, (_b = {}, _b[styles.hidden] = !state.selectedKey, _b)),
39
+ tabIndex: 0
40
+ }), /*#__PURE__*/React.createElement(Icon, {
41
+ name: "cancel",
42
+ isPresentational: true,
43
+ isFilled: true
44
+ }), /*#__PURE__*/React.createElement(VisuallyHidden, null, clearButtonAlt));
45
+ };
46
+ var ChevronButton = function (props) {
47
+ var _a = useSingleSelectContext(),
48
+ state = _a.state,
49
+ fieldLabel = _a.fieldLabel;
50
+ var formatMessage = useIntl().formatMessage;
51
+ var chevronButton = formatMessage({
52
+ id: 'singleSelect.chevronButton',
53
+ defaultMessage: 'Show suggestions for {field}',
54
+ description: 'Aria label text for the SingleSelect button to open and close suggestions list'
55
+ }, {
56
+ field: fieldLabel
57
+ });
58
+ var buttonProps = useButton(__assign(__assign({}, props), {
59
+ 'aria-label': String(chevronButton),
60
+ 'aria-labelledby': undefined
61
+ }), props.buttonRef).buttonProps;
62
+ return /*#__PURE__*/React.createElement("button", __assign({
63
+ type: "button"
64
+ }, buttonProps, {
65
+ ref: props.buttonRef,
66
+ className: styles.chevronButton,
67
+ tabIndex: -1
68
+ }), /*#__PURE__*/React.createElement(Icon, {
69
+ isPresentational: true,
70
+ name: state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'
71
+ }));
72
+ };
73
+ var ComboBoxTrigger = function (_a) {
74
+ var _b, _c;
75
+ var inputProps = _a.inputProps,
76
+ inputRef = _a.inputRef,
77
+ buttonProps = _a.buttonProps,
78
+ buttonRef = _a.buttonRef,
79
+ triggerWrapperRef = _a.triggerWrapperRef,
80
+ clearButtonRef = _a.clearButtonRef;
81
+ var _d = useSingleSelectContext(),
82
+ anchorName = _d.anchorName,
83
+ isDisabled = _d.isDisabled,
84
+ isReadOnly = _d.isReadOnly,
85
+ secondary = _d.secondary,
86
+ size = _d.size;
87
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
88
+ style: {
89
+ '--anchor-name': anchorName
90
+ },
91
+ ref: triggerWrapperRef,
92
+ className: classnames(styles.trigger, (_b = {}, _b[styles.disabled] = isDisabled, _b[styles.readOnly] = isReadOnly, _b[styles.secondary] = secondary, _b[styles.small] = size === 'small', _b[styles.large] = size === 'large', _b))
93
+ }, /*#__PURE__*/React.createElement("input", __assign({}, inputProps, {
94
+ ref: inputRef,
95
+ className: classnames(styles.input, (_c = {}, _c[styles.smallText] = size === 'small', _c))
96
+ })), !isDisabled && !isReadOnly && (/*#__PURE__*/React.createElement(ClearButton, {
97
+ clearButtonRef: clearButtonRef,
98
+ inputRef: inputRef
99
+ })), !isReadOnly && /*#__PURE__*/React.createElement(ChevronButton, __assign({}, buttonProps, {
100
+ buttonRef: buttonRef
101
+ }))));
102
+ };
103
+ export { ComboBoxTrigger };
@@ -0,0 +1,14 @@
1
+ var styles = {
2
+ "trigger": "ComboBoxTrigger-module_trigger__p6pcn",
3
+ "smallText": "ComboBoxTrigger-module_smallText__Vj2Ya",
4
+ "secondary": "ComboBoxTrigger-module_secondary__TvNTK",
5
+ "disabled": "ComboBoxTrigger-module_disabled__BkFJy",
6
+ "readOnly": "ComboBoxTrigger-module_readOnly__g6-fB",
7
+ "input": "ComboBoxTrigger-module_input__TkoLg",
8
+ "small": "ComboBoxTrigger-module_small__-225Z",
9
+ "large": "ComboBoxTrigger-module_large__kj1vw",
10
+ "clearButton": "ComboBoxTrigger-module_clearButton__PlsuZ",
11
+ "chevronButton": "ComboBoxTrigger-module_chevronButton__rzv2v",
12
+ "hidden": "ComboBoxTrigger-module_hidden__zC13w"
13
+ };
14
+ export { styles as default };
@@ -1,18 +1,41 @@
1
- import { __rest, __assign } from 'tslib';
1
+ import { __assign } from 'tslib';
2
2
  import React from 'react';
3
- import classnames from 'classnames';
4
- import { ListBox } from 'react-aria-components';
3
+ import { useListBox } from 'react-aria';
4
+ import { ListItem } from '../ListItem/ListItem.mjs';
5
+ import { ListSection } from '../ListSection/ListSection.mjs';
5
6
  import styles from './List.module.css.mjs';
6
- const List = /*#__PURE__*/function () {
7
- const List = function (_a) {
8
- var children = _a.children,
9
- className = _a.className,
10
- props = __rest(_a, ["children", "className"]);
11
- return /*#__PURE__*/React.createElement(ListBox, __assign({
12
- className: classnames(styles.list, className)
13
- }, props), children);
7
+ var List = function (_a) {
8
+ var state = _a.state,
9
+ listBoxOptions = _a.listBoxOptions,
10
+ listBoxRef = _a.listBoxRef;
11
+ var listBoxProps = useListBox(__assign(__assign({}, listBoxOptions), {
12
+ autoFocus: 'first'
13
+ }), state, listBoxRef).listBoxProps;
14
+ var renderNode = function (node) {
15
+ if (node.type === 'section') {
16
+ return node.rendered ? (/*#__PURE__*/React.createElement(ListSection, {
17
+ key: String(node.key),
18
+ section: node,
19
+ state: state
20
+ })) : null;
21
+ } else {
22
+ var _a = node.props,
23
+ selectedIcon = _a.selectedIcon,
24
+ selectedPosition = _a.selectedPosition,
25
+ className = _a.className;
26
+ return /*#__PURE__*/React.createElement(ListItem, {
27
+ key: String(node.key),
28
+ item: node,
29
+ state: state,
30
+ selectedIcon: selectedIcon,
31
+ selectedPosition: selectedPosition,
32
+ className: className
33
+ });
34
+ }
14
35
  };
15
- List.displayName = 'SingleSelect.List';
16
- return List;
17
- }();
36
+ return /*#__PURE__*/React.createElement("ul", __assign({}, listBoxProps, {
37
+ ref: listBoxRef,
38
+ className: styles.list
39
+ }), Array.from(state.collection).map(renderNode));
40
+ };
18
41
  export { List };
@@ -1,18 +1,68 @@
1
- import { __rest, __assign } from 'tslib';
1
+ import { __assign } from 'tslib';
2
2
  import React from 'react';
3
3
  import classnames from 'classnames';
4
- import { ListBoxItem } from 'react-aria-components';
4
+ import { useOption } from 'react-aria';
5
+ import { Icon } from '../../../../Icon/Icon.mjs';
6
+ import { Radio } from '../../../../Radio/Radio/Radio.mjs';
7
+ import '../../../../Radio/RadioField/RadioField.mjs';
8
+ import '../../../../Radio/RadioGroup/RadioGroup.mjs';
5
9
  import styles from './ListItem.module.css.mjs';
6
- const ListItem = /*#__PURE__*/function () {
7
- const ListItem = function (_a) {
8
- var children = _a.children,
9
- className = _a.className,
10
- props = __rest(_a, ["children", "className"]);
11
- return /*#__PURE__*/React.createElement(ListBoxItem, __assign({
12
- className: classnames(styles.listItem, className)
13
- }, props), children);
10
+ var ListItem = function (_a) {
11
+ var _b;
12
+ var item = _a.item,
13
+ state = _a.state,
14
+ _c = _a.selectedIcon,
15
+ selectedIcon = _c === void 0 ? 'check' : _c,
16
+ _d = _a.selectedPosition,
17
+ selectedPosition = _d === void 0 ? 'end' : _d,
18
+ className = _a.className;
19
+ var ref = React.useRef(null);
20
+ var _e = useOption({
21
+ key: item.key
22
+ }, state, ref),
23
+ optionProps = _e.optionProps,
24
+ isSelected = _e.isSelected,
25
+ isDisabled = _e.isDisabled,
26
+ isFocused = _e.isFocused;
27
+ var isStart = selectedPosition === 'start';
28
+ var isEnd = selectedPosition === 'end';
29
+ var isCheck = selectedIcon === 'check';
30
+ var isRadio = selectedIcon === 'radio';
31
+ var renderSelectionIcon = function () {
32
+ if (isCheck) {
33
+ if (isSelected) {
34
+ return /*#__PURE__*/React.createElement("div", {
35
+ className: styles.selectedIconWrapper
36
+ }, /*#__PURE__*/React.createElement(Icon, {
37
+ name: "check",
38
+ isPresentational: true,
39
+ className: styles.iconChecked
40
+ }));
41
+ }
42
+ return isStart ? /*#__PURE__*/React.createElement("div", {
43
+ className: styles.emptySpacer
44
+ }) : null;
45
+ }
46
+ if (isRadio) {
47
+ return /*#__PURE__*/React.createElement("div", {
48
+ className: styles.selectedIconWrapper
49
+ }, /*#__PURE__*/React.createElement(Radio, {
50
+ id: item.textValue,
51
+ name: item.textValue,
52
+ selectedStatus: isSelected
53
+ }));
54
+ }
55
+ return null;
14
56
  };
15
- ListItem.displayName = 'SingleSelect.ListItem';
16
- return ListItem;
17
- }();
57
+ return /*#__PURE__*/React.createElement("li", __assign({
58
+ key: item.key
59
+ }, optionProps, {
60
+ ref: ref,
61
+ className: classnames(styles.listItem, (_b = {}, _b[styles.focused] = isFocused, _b[styles.disabled] = isDisabled, _b[styles.selected] = isSelected, _b[styles.selectedStartPosition] = isStart, _b))
62
+ }), isStart && renderSelectionIcon(), typeof item.rendered === 'string' ? (/*#__PURE__*/React.createElement("span", {
63
+ className: classnames(styles.itemText, className)
64
+ }, item.rendered)) : (/*#__PURE__*/React.createElement("span", {
65
+ className: classnames(styles.itemContent, className)
66
+ }, item.rendered)), isEnd && renderSelectionIcon());
67
+ };
18
68
  export { ListItem };
@@ -1,4 +1,13 @@
1
1
  var styles = {
2
- "listItem": "ListItem-module_listItem__xGr6A"
2
+ "listItem": "ListItem-module_listItem__xGr6A",
3
+ "focused": "ListItem-module_focused__au3J5",
4
+ "selected": "ListItem-module_selected__IV3-p",
5
+ "disabled": "ListItem-module_disabled__A2QFo",
6
+ "iconChecked": "ListItem-module_iconChecked__co4xD",
7
+ "itemContent": "ListItem-module_itemContent__x4h7q",
8
+ "itemText": "ListItem-module_itemText__O4Ddg",
9
+ "selectedStartPosition": "ListItem-module_selectedStartPosition__2N3bw",
10
+ "selectedIconWrapper": "ListItem-module_selectedIconWrapper__w-ECd",
11
+ "emptySpacer": "ListItem-module_emptySpacer__qeRpQ"
3
12
  };
4
13
  export { styles as default };
@@ -1,19 +1,45 @@
1
- import { __rest, __assign } from 'tslib';
1
+ import { __assign } from 'tslib';
2
2
  import React from 'react';
3
3
  import classnames from 'classnames';
4
- import { ListBoxSection, Header } from 'react-aria-components';
4
+ import { useListBoxSection } from 'react-aria';
5
+ import { Divider } from '../../../../Divider/Divider.mjs';
6
+ import { ListItem } from '../ListItem/ListItem.mjs';
5
7
  import styles from './ListSection.module.css.mjs';
6
- const ListSection = /*#__PURE__*/function () {
7
- const ListSection = function (_a) {
8
- var name = _a.name,
9
- className = _a.className,
10
- children = _a.children,
11
- props = __rest(_a, ["name", "className", "children"]);
12
- return /*#__PURE__*/React.createElement(ListBoxSection, __assign({}, props), /*#__PURE__*/React.createElement(Header, {
13
- className: classnames(styles.listSectionHeader, className)
14
- }, name), children);
15
- };
16
- ListSection.displayName = 'SingleSelect.ListSection';
17
- return ListSection;
18
- }();
8
+ var ListSection = function (_a) {
9
+ var _b;
10
+ var section = _a.section,
11
+ state = _a.state;
12
+ var _c = useListBoxSection({
13
+ 'heading': section.rendered,
14
+ 'aria-label': section['aria-label']
15
+ }),
16
+ headingProps = _c.headingProps,
17
+ itemProps = _c.itemProps,
18
+ groupProps = _c.groupProps;
19
+ var firstSectionHeader = section.key === state.collection.getFirstKey();
20
+ return /*#__PURE__*/React.createElement(React.Fragment, {
21
+ key: section.key
22
+ }, !firstSectionHeader && /*#__PURE__*/React.createElement("li", {
23
+ role: "presentation",
24
+ "aria-hidden": true
25
+ }), !firstSectionHeader && /*#__PURE__*/React.createElement(Divider, {
26
+ variant: "content"
27
+ }), /*#__PURE__*/React.createElement("li", __assign({}, itemProps, {
28
+ className: classnames(styles.sectionWrapper, (_b = {}, _b[styles.firstSectionHeader] = firstSectionHeader, _b))
29
+ }), section.rendered && (/*#__PURE__*/React.createElement("span", __assign({}, headingProps, {
30
+ role: "presentation",
31
+ "aria-hidden": true,
32
+ className: styles.listSectionHeader
33
+ }), section.rendered)), /*#__PURE__*/React.createElement("ul", __assign({
34
+ key: "".concat(section.key, "-group-contents")
35
+ }, groupProps, {
36
+ className: styles.listSectionGroup
37
+ }), Array.from(section.childNodes).map(function (node) {
38
+ return /*#__PURE__*/React.createElement(ListItem, {
39
+ key: node.key,
40
+ item: node,
41
+ state: state
42
+ });
43
+ }))));
44
+ };
19
45
  export { ListSection };
@@ -1,4 +1,7 @@
1
1
  var styles = {
2
- "listSectionHeader": "ListSection-module_listSectionHeader__bptHg"
2
+ "sectionWrapper": "ListSection-module_sectionWrapper__gxh41",
3
+ "firstSectionHeader": "ListSection-module_firstSectionHeader__zPUIZ",
4
+ "listSectionHeader": "ListSection-module_listSectionHeader__bptHg",
5
+ "listSectionGroup": "ListSection-module_listSectionGroup__PoUPf"
3
6
  };
4
7
  export { styles as default };
@@ -1,49 +1,75 @@
1
- import React, { useMemo, useLayoutEffect } from 'react';
2
- import { Popover as Popover$1 } from 'react-aria-components';
1
+ import { __rest, __assign } from 'tslib';
2
+ import React, { useLayoutEffect } from 'react';
3
+ import classnames from 'classnames';
4
+ import { usePopover, Overlay, DismissButton } from 'react-aria';
3
5
  import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
6
+ import { useSupportsAnchorPositioning } from './utils/useSupportsAnchorPositioning.mjs';
4
7
  import { usePositioningStyles } from './utils/usePositioningStyles.mjs';
5
8
  import styles from './Popover.module.css.mjs';
6
- const Popover = /*#__PURE__*/function () {
7
- const Popover = function (_a) {
8
- var buttonRef = _a.buttonRef,
9
- popoverRef = _a.popoverRef,
10
- racPopoverRef = _a.racPopoverRef,
11
- children = _a.children;
12
- var _b = useSingleSelectContext(),
13
- isOpen = _b.isOpen,
14
- setOpen = _b.setOpen,
15
- anchorName = _b.anchorName;
16
- var _c = usePositioningStyles(buttonRef, popoverRef, anchorName),
17
- popoverStyle = _c.popoverStyle,
18
- isPositioned = _c.isPositioned;
19
- var shouldShowPopover = useMemo(function () {
20
- return isOpen && isPositioned;
21
- }, [isOpen, isPositioned]);
22
- useLayoutEffect(function () {
23
- var popover = popoverRef.current;
24
- if (!(popover === null || popover === void 0 ? void 0 : popover.showPopover) || !(popover === null || popover === void 0 ? void 0 : popover.hidePopover)) return;
25
- if (shouldShowPopover) {
26
- popover.showPopover();
27
- } else {
9
+ var Popover = function (_a) {
10
+ var _b;
11
+ var _c;
12
+ var state = _a.state,
13
+ popoverRef = _a.popoverRef,
14
+ children = _a.children,
15
+ clearButtonRef = _a.clearButtonRef,
16
+ restProps = __rest(_a, ["state", "popoverRef", "children", "clearButtonRef"]);
17
+ var anchorName = useSingleSelectContext().anchorName;
18
+ var manualPopoverRef = React.useRef(null);
19
+ var popoverProps = usePopover(__assign(__assign({}, restProps), {
20
+ popoverRef: popoverRef,
21
+ shouldCloseOnInteractOutside: function (element) {
22
+ var _a;
23
+ if ((_a = clearButtonRef === null || clearButtonRef === void 0 ? void 0 : clearButtonRef.current) === null || _a === void 0 ? void 0 : _a.contains(element)) {
24
+ return false;
25
+ }
26
+ return true;
27
+ }
28
+ }), state).popoverProps;
29
+ var supportsAnchorPositioning = useSupportsAnchorPositioning();
30
+ var _d = usePositioningStyles(restProps.triggerRef, manualPopoverRef, anchorName),
31
+ popoverStyle = _d.popoverStyle,
32
+ isPositioned = _d.isPositioned,
33
+ updatePosition = _d.updatePosition;
34
+ useLayoutEffect(function () {
35
+ if (!supportsAnchorPositioning || !state.isOpen) return;
36
+ updatePosition();
37
+ var popover = manualPopoverRef === null || manualPopoverRef === void 0 ? void 0 : manualPopoverRef.current;
38
+ if (popover === null || popover === void 0 ? void 0 : popover.showPopover) {
39
+ popover.showPopover();
40
+ }
41
+ return function () {
42
+ if (popover === null || popover === void 0 ? void 0 : popover.hidePopover) {
28
43
  popover.hidePopover();
29
44
  }
30
- // eslint-disable-next-line react-hooks/exhaustive-deps
31
- }, [shouldShowPopover]);
32
- return /*#__PURE__*/React.createElement(Popover$1, {
33
- shouldUpdatePosition: false,
34
- trigger: "manual",
35
- isOpen: isOpen,
36
- onOpenChange: setOpen,
37
- ref: racPopoverRef
38
- }, /*#__PURE__*/React.createElement("div", {
39
- // @ts-expect-error - popover attribute is not included in current ts version, ignore type error
40
- popover: "manual",
41
- ref: popoverRef,
42
- className: styles.popover,
43
- style: popoverStyle
44
- }, children));
45
- };
46
- Popover.displayName = 'SingleSelect.Popover';
47
- return Popover;
48
- }();
45
+ };
46
+ }, [state.isOpen, supportsAnchorPositioning, updatePosition, isPositioned]);
47
+ useLayoutEffect(function () {
48
+ if (!supportsAnchorPositioning || state.isOpen) return;
49
+ var popover = manualPopoverRef === null || manualPopoverRef === void 0 ? void 0 : manualPopoverRef.current;
50
+ if (popover === null || popover === void 0 ? void 0 : popover.hidePopover) {
51
+ popover.hidePopover();
52
+ }
53
+ }, [state.isOpen, supportsAnchorPositioning]);
54
+ var manualPopover = /*#__PURE__*/React.createElement("div", {
55
+ // @ts-expect-error - popover attribute is not included in current ts version, ignore type error
56
+ popover: "manual",
57
+ ref: manualPopoverRef,
58
+ className: styles.popover,
59
+ style: popoverStyle
60
+ }, children);
61
+ return /*#__PURE__*/React.createElement(React.Fragment, null, state.isOpen && (/*#__PURE__*/React.createElement(Overlay, null, /*#__PURE__*/React.createElement("div", __assign({
62
+ id: "popover-id"
63
+ }, popoverProps, {
64
+ ref: popoverRef,
65
+ style: __assign(__assign({}, popoverProps.style), !supportsAnchorPositioning && {
66
+ width: (_c = restProps.triggerRef.current) === null || _c === void 0 ? void 0 : _c.getBoundingClientRect().width
67
+ }),
68
+ className: classnames(styles.popover, (_b = {}, _b[styles.offsetSpacing] = !supportsAnchorPositioning, _b))
69
+ }), /*#__PURE__*/React.createElement(DismissButton, {
70
+ onDismiss: state.close
71
+ }), supportsAnchorPositioning ? manualPopover : children, /*#__PURE__*/React.createElement(DismissButton, {
72
+ onDismiss: state.close
73
+ })))));
74
+ };
49
75
  export { Popover };
@@ -1,4 +1,5 @@
1
1
  var styles = {
2
- "popover": "Popover-module_popover__BjY2S"
2
+ "popover": "Popover-module_popover__BjY2S",
3
+ "offsetSpacing": "Popover-module_offsetSpacing__NdPBV"
3
4
  };
4
5
  export { styles as default };
@@ -86,7 +86,8 @@ function usePopoverPositioning(_a) {
86
86
  };
87
87
  }, [updatePosition, triggerRef]);
88
88
  return __assign(__assign({}, position), {
89
- isPositioned: isPositioned
89
+ isPositioned: isPositioned,
90
+ updatePosition: updatePosition
90
91
  });
91
92
  }
92
93
  export { usePopoverPositioning };
@@ -44,7 +44,8 @@ var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
44
44
  bottom = _a.bottom,
45
45
  insetInlineStart = _a.insetInlineStart,
46
46
  maxHeight = _a.maxHeight,
47
- isPositioned = _a.isPositioned;
47
+ isPositioned = _a.isPositioned,
48
+ updatePosition = _a.updatePosition;
48
49
  var positionData = useMemo(function () {
49
50
  return {
50
51
  top: top,
@@ -61,7 +62,8 @@ var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
61
62
  }, [hasAnchorSupport, anchorName, positionData]);
62
63
  return {
63
64
  popoverStyle: popoverStyle,
64
- isPositioned: isPositioned
65
+ isPositioned: isPositioned,
66
+ updatePosition: updatePosition
65
67
  };
66
68
  };
67
69
  export { usePositioningStyles };
@@ -0,0 +1,78 @@
1
+ import { __assign } from 'tslib';
2
+ import React, { useRef, useId } from 'react';
3
+ import { useSelectState } from '@react-stately/select';
4
+ import classnames from 'classnames';
5
+ import { useSelect } from 'react-aria';
6
+ import { SingleSelectContext } from '../../context/SingleSelectContext.mjs';
7
+ import { List } from '../List/List.mjs';
8
+ import { Popover } from '../Popover/Popover.mjs';
9
+ import { SelectTrigger } from '../SelectTrigger/SelectTrigger.mjs';
10
+ import styles from './Select.module.css.mjs';
11
+ import { Label } from '../../../../Label/Label.mjs';
12
+ import { FieldMessage } from '../../../../FieldMessage/FieldMessage.mjs';
13
+ var Select = function (props) {
14
+ var _a;
15
+ var label = props.label,
16
+ description = props.description,
17
+ labelHidden = props.labelHidden,
18
+ _b = props.labelPosition,
19
+ labelPosition = _b === void 0 ? 'top' : _b,
20
+ isDisabled = props.isDisabled,
21
+ isReadOnly = props.isReadOnly,
22
+ _c = props.size,
23
+ size = _c === void 0 ? 'medium' : _c,
24
+ _d = props.variant,
25
+ variant = _d === void 0 ? 'primary' : _d;
26
+ var state = useSelectState(__assign(__assign({}, props), {
27
+ items: props.items,
28
+ children: props.children
29
+ }));
30
+ var popoverRef = useRef(null);
31
+ var listBoxRef = useRef(null);
32
+ var triggerRef = useRef(null);
33
+ var _e = useSelect(__assign(__assign({}, props), {
34
+ 'aria-label': labelHidden ? label : undefined
35
+ }), state, triggerRef),
36
+ labelProps = _e.labelProps,
37
+ descriptionProps = _e.descriptionProps,
38
+ menuProps = _e.menuProps,
39
+ triggerProps = _e.triggerProps,
40
+ valueProps = _e.valueProps;
41
+ var uniqueId = useId();
42
+ var anchorName = "--trigger-".concat(uniqueId);
43
+ return /*#__PURE__*/React.createElement(SingleSelectContext.Provider, {
44
+ value: {
45
+ anchorName: anchorName,
46
+ state: state,
47
+ isComboBox: false,
48
+ isDisabled: isDisabled !== null && isDisabled !== void 0 ? isDisabled : false,
49
+ isReadOnly: isReadOnly !== null && isReadOnly !== void 0 ? isReadOnly : false,
50
+ secondary: variant === 'secondary',
51
+ size: size,
52
+ fieldLabel: label
53
+ }
54
+ }, /*#__PURE__*/React.createElement("div", {
55
+ className: labelPosition === 'top' ? styles.topLabel : styles.sideLabel
56
+ }, !labelHidden && (/*#__PURE__*/React.createElement("div", {
57
+ className: classnames(styles.label, (_a = {}, _a[styles.labelTop] = labelPosition === 'top', _a))
58
+ }, /*#__PURE__*/React.createElement(Label, __assign({}, labelProps), label))), /*#__PURE__*/React.createElement("div", {
59
+ className: styles.selectTrigger
60
+ }, /*#__PURE__*/React.createElement(SelectTrigger, {
61
+ triggerProps: triggerProps,
62
+ valueProps: valueProps,
63
+ buttonRef: triggerRef
64
+ })), description && (/*#__PURE__*/React.createElement("div", {
65
+ className: styles.description
66
+ }, /*#__PURE__*/React.createElement(FieldMessage, __assign({
67
+ message: description
68
+ }, descriptionProps))))), /*#__PURE__*/React.createElement(Popover, {
69
+ state: state,
70
+ triggerRef: triggerRef,
71
+ popoverRef: popoverRef
72
+ }, /*#__PURE__*/React.createElement(List, {
73
+ listBoxOptions: menuProps,
74
+ state: state,
75
+ listBoxRef: listBoxRef
76
+ })));
77
+ };
78
+ export { Select };
@@ -0,0 +1,9 @@
1
+ var styles = {
2
+ "topLabel": "Select-module_topLabel__tuilO",
3
+ "sideLabel": "Select-module_sideLabel__om-vC",
4
+ "label": "Select-module_label__X4jf-",
5
+ "labelTop": "Select-module_labelTop__vE3N2",
6
+ "selectTrigger": "Select-module_selectTrigger__ibr4f",
7
+ "description": "Select-module_description__hOocq"
8
+ };
9
+ export { styles as default };
@@ -0,0 +1,43 @@
1
+ import { __assign } from 'tslib';
2
+ import React from 'react';
3
+ import classnames from 'classnames';
4
+ import { useButton } from 'react-aria';
5
+ import { Icon } from '../../../../Icon/Icon.mjs';
6
+ import { Text } from '../../../../Text/Text.mjs';
7
+ import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
8
+ import styles from './SelectTrigger.module.css.mjs';
9
+ var ChevronButton = function () {
10
+ var state = useSingleSelectContext().state;
11
+ return /*#__PURE__*/React.createElement("div", {
12
+ className: styles.chevronButton
13
+ }, /*#__PURE__*/React.createElement(Icon, {
14
+ isPresentational: true,
15
+ name: state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'
16
+ }));
17
+ };
18
+ var SelectTrigger = function (_a) {
19
+ var _b;
20
+ var triggerProps = _a.triggerProps,
21
+ valueProps = _a.valueProps,
22
+ buttonRef = _a.buttonRef;
23
+ var _c = useSingleSelectContext(),
24
+ state = _c.state,
25
+ anchorName = _c.anchorName,
26
+ isDisabled = _c.isDisabled,
27
+ isReadOnly = _c.isReadOnly,
28
+ secondary = _c.secondary,
29
+ size = _c.size;
30
+ var buttonProps = useButton(triggerProps, buttonRef).buttonProps;
31
+ return /*#__PURE__*/React.createElement("button", __assign({}, buttonProps, {
32
+ type: "button",
33
+ style: {
34
+ '--anchor-name': anchorName
35
+ },
36
+ className: classnames(styles.trigger, (_b = {}, _b[styles.disabled] = isDisabled, _b[styles.readOnly] = isReadOnly, _b[styles.secondary] = secondary, _b[styles.small] = size === 'small', _b[styles.large] = size === 'large', _b)),
37
+ ref: buttonRef
38
+ }), /*#__PURE__*/React.createElement(Text, {
39
+ variant: size === 'small' ? 'small' : 'body',
40
+ classNameOverride: isDisabled ? styles.disabledText : undefined
41
+ }, /*#__PURE__*/React.createElement("span", __assign({}, valueProps), state.selectedItem ? state.selectedItem.textValue : '')), !isReadOnly && /*#__PURE__*/React.createElement(ChevronButton, null));
42
+ };
43
+ export { SelectTrigger };
@@ -0,0 +1,11 @@
1
+ var styles = {
2
+ "trigger": "SelectTrigger-module_trigger__fIe03",
3
+ "disabled": "SelectTrigger-module_disabled__zfAoe",
4
+ "secondary": "SelectTrigger-module_secondary__eOquY",
5
+ "readOnly": "SelectTrigger-module_readOnly__q-Epr",
6
+ "disabledText": "SelectTrigger-module_disabledText__acP59",
7
+ "small": "SelectTrigger-module_small__jE-NG",
8
+ "large": "SelectTrigger-module_large__r93d8",
9
+ "chevronButton": "SelectTrigger-module_chevronButton__611jw"
10
+ };
11
+ export { styles as default };