@kaizen/components 1.80.1 → 1.80.3

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 (72) hide show
  1. package/codemods/README.md +12 -0
  2. package/codemods/renameV2ComponentImportsAndUsages/index.ts +19 -0
  3. package/codemods/renameV2ComponentImportsAndUsages/renameV2ComponentImportsAndUsages.spec.ts +390 -0
  4. package/codemods/renameV2ComponentImportsAndUsages/renameV2ComponentImportsAndUsages.ts +230 -0
  5. package/codemods/utils/index.ts +1 -0
  6. package/codemods/utils/updateJsxElementTagName.spec.ts +129 -0
  7. package/codemods/utils/updateJsxElementTagName.ts +56 -0
  8. package/codemods/utils/updateKaioImports.spec.ts +82 -0
  9. package/codemods/utils/updateKaioImports.ts +16 -7
  10. package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +69 -16
  11. package/dist/cjs/src/__alpha__/SingleSelect/context/SingleSelectContext.cjs +13 -0
  12. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +54 -0
  13. package/dist/cjs/src/__alpha__/SingleSelect/{SingleSelect.module.css.cjs → subcomponents/Popover/Popover.module.css.cjs} +1 -1
  14. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +94 -0
  15. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +69 -0
  16. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.cjs +12 -0
  17. package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +41 -5
  18. package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +60 -10
  19. package/dist/esm/src/__alpha__/SingleSelect/context/SingleSelectContext.mjs +10 -0
  20. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +49 -0
  21. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +4 -0
  22. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +92 -0
  23. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +67 -0
  24. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.mjs +10 -0
  25. package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +43 -7
  26. package/dist/styles.css +8958 -8934
  27. package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +7 -9
  28. package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +12 -0
  29. package/dist/types/__alpha__/SingleSelect/context/index.d.ts +1 -0
  30. package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -1
  31. package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -1
  32. package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -1
  33. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +6 -0
  34. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/index.d.ts +1 -0
  35. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +2 -0
  36. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +4 -0
  37. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +4 -0
  38. package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.d.ts +1 -0
  39. package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +2 -1
  40. package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +1 -0
  41. package/dist/types/__alpha__/SingleSelect/types.d.ts +45 -0
  42. package/package.json +4 -4
  43. package/src/Notification/GlobalNotification/_docs/GlobalNotification.stickersheet.stories.tsx +2 -1
  44. package/src/Notification/InlineNotification/_docs/InlineNotification.stickersheet.stories.tsx +4 -1
  45. package/src/Notification/ToastNotification/_docs/ToastNotification.stickersheet.stories.tsx +20 -6
  46. package/src/Notification/subcomponents/GenericNotification/_mixins.scss +5 -3
  47. package/src/__alpha__/SingleSelect/SingleSelect.tsx +79 -14
  48. package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +5 -2
  49. package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +100 -0
  50. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +4 -4
  51. package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +21 -2
  52. package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +21 -0
  53. package/src/__alpha__/SingleSelect/context/index.ts +1 -0
  54. package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +0 -1
  55. package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +2 -1
  56. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +7 -0
  57. package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +2 -1
  58. package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +3 -1
  59. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +24 -0
  60. package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +54 -0
  61. package/src/__alpha__/SingleSelect/subcomponents/Popover/index.ts +1 -0
  62. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +2 -0
  63. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +108 -0
  64. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +75 -0
  65. package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/useSupportsAnchorPositioning.ts +13 -0
  66. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +1 -0
  67. package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +29 -7
  68. package/src/__alpha__/SingleSelect/subcomponents/index.ts +1 -0
  69. package/src/__alpha__/SingleSelect/types.ts +58 -0
  70. package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.module.css.mjs +0 -4
  71. package/src/__alpha__/SingleSelect/SingleSelect.module.css +0 -9
  72. package/src/__alpha__/SingleSelect/SingleSelect.spec.tsx +0 -26
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var useSupportsAnchorPositioning = function () {
5
+ return React.useMemo(function () {
6
+ if (typeof window === 'undefined' || typeof CSS === 'undefined') {
7
+ return false;
8
+ }
9
+ return CSS.supports('position-anchor', 'auto') || CSS.supports('position-try-fallbacks: flip-block');
10
+ }, []);
11
+ };
12
+ exports.useSupportsAnchorPositioning = useSupportsAnchorPositioning;
@@ -3,6 +3,7 @@
3
3
  var React = require('react');
4
4
  var reactAriaComponents = require('react-aria-components');
5
5
  var Icon = require('../../../../__next__/Icon/Icon.cjs');
6
+ var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
6
7
  var Trigger_module = require('./Trigger.module.css.cjs');
7
8
  function _interopDefault(e) {
8
9
  return e && e.__esModule ? e : {
@@ -10,12 +11,47 @@ function _interopDefault(e) {
10
11
  };
11
12
  }
12
13
  var React__default = /*#__PURE__*/_interopDefault(React);
13
- var Trigger = function () {
14
- return React__default.default.createElement(reactAriaComponents.Button, {
15
- className: Trigger_module.button
16
- }, React__default.default.createElement(reactAriaComponents.SelectValue, null), React__default.default.createElement(Icon.Icon, {
14
+ function flattenItems(items) {
15
+ return items.flatMap(function (item) {
16
+ return 'options' in item ? item.options : item;
17
+ });
18
+ }
19
+ var Trigger = function (_a) {
20
+ var buttonRef = _a.buttonRef;
21
+ var _b = SingleSelectContext.useSingleSelectContext(),
22
+ isOpen = _b.isOpen,
23
+ setOpen = _b.setOpen,
24
+ selectedKey = _b.selectedKey,
25
+ items = _b.items,
26
+ anchorName = _b.anchorName;
27
+ var flattenedItems = React.useMemo(function () {
28
+ return flattenItems(items);
29
+ }, [items]);
30
+ var selectedLabel = React.useMemo(function () {
31
+ var _a;
32
+ var key = selectedKey;
33
+ var item = flattenedItems.find(function (i) {
34
+ return i.value === key;
35
+ });
36
+ return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : React__default.default.createElement("div", null);
37
+ }, [flattenedItems, selectedKey]);
38
+ return React__default.default.createElement("div", {
39
+ style: {
40
+ position: 'relative'
41
+ }
42
+ }, React__default.default.createElement(reactAriaComponents.Button, {
43
+ className: Trigger_module.button,
44
+ ref: buttonRef,
45
+ onPress: function () {
46
+ return setOpen(!isOpen);
47
+ },
48
+ "aria-expanded": isOpen,
49
+ style: {
50
+ '--anchor-name': anchorName
51
+ }
52
+ }, selectedLabel, React__default.default.createElement(Icon.Icon, {
17
53
  name: "keyboard_arrow_down",
18
54
  isPresentational: true
19
- }));
55
+ })));
20
56
  };
21
57
  exports.Trigger = Trigger;
@@ -1,22 +1,72 @@
1
1
  import { __rest, __assign } from 'tslib';
2
- import React from 'react';
3
- import { Select, Popover } from 'react-aria-components';
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';
4
6
  import { List } from './subcomponents/List/List.mjs';
5
7
  import { ListSection } from './subcomponents/ListSection/ListSection.mjs';
6
8
  import { ListItem } from './subcomponents/ListItem/ListItem.mjs';
7
9
  import { Trigger } from './subcomponents/Trigger/Trigger.mjs';
8
- import styles from './SingleSelect.module.css.mjs';
10
+ import { Popover } from './subcomponents/Popover/Popover.mjs';
9
11
  const SingleSelect = /*#__PURE__*/function () {
10
12
  const SingleSelect = function (_a) {
11
- var classNameOverride = _a.classNameOverride,
13
+ var items = _a.items,
14
+ onSelectionChange = _a.onSelectionChange,
12
15
  children = _a.children,
13
- restProps = __rest(_a, ["classNameOverride", "children"]);
14
- return /*#__PURE__*/React.createElement(Select, __assign({
15
- className: classNameOverride,
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
+ },
16
62
  placeholder: ""
17
- }, restProps), /*#__PURE__*/React.createElement(Trigger, null), /*#__PURE__*/React.createElement(Popover, {
18
- className: styles.popover
19
- }, children));
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))));
20
70
  };
21
71
  SingleSelect.displayName = 'SingleSelect';
22
72
  SingleSelect.List = List;
@@ -0,0 +1,10 @@
1
+ import { createContext, useContext } from 'react';
2
+ var SingleSelectContext = /*#__PURE__*/createContext(undefined);
3
+ var useSingleSelectContext = function () {
4
+ var context = useContext(SingleSelectContext);
5
+ if (!context) {
6
+ throw new Error('useSingleSelectContext must be used within a SingleSelectContext.Provider');
7
+ }
8
+ return context;
9
+ };
10
+ export { SingleSelectContext, useSingleSelectContext };
@@ -0,0 +1,49 @@
1
+ import React, { useMemo, useLayoutEffect } from 'react';
2
+ import { Popover as Popover$1 } from 'react-aria-components';
3
+ import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
4
+ import { usePositioningStyles } from './utils/usePositioningStyles.mjs';
5
+ 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 {
28
+ popover.hidePopover();
29
+ }
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
+ }();
49
+ export { Popover };
@@ -0,0 +1,4 @@
1
+ var styles = {
2
+ "popover": "Popover-module_popover__BjY2S"
3
+ };
4
+ export { styles as default };
@@ -0,0 +1,92 @@
1
+ import { __assign } from 'tslib';
2
+ import { useState, useRef, useCallback, useEffect } from 'react';
3
+ function usePopoverPositioning(_a) {
4
+ var triggerRef = _a.triggerRef,
5
+ popoverRef = _a.popoverRef,
6
+ _b = _a.direction,
7
+ direction = _b === void 0 ? 'ltr' : _b,
8
+ _c = _a.offset,
9
+ offset = _c === void 0 ? 4 : _c,
10
+ _d = _a.preferredPlacement,
11
+ preferredPlacement = _d === void 0 ? 'bottom' : _d;
12
+ var _e = useState({
13
+ top: preferredPlacement === 'bottom' ? offset : 'auto',
14
+ bottom: preferredPlacement === 'top' ? offset : 'auto',
15
+ insetInlineStart: 0,
16
+ maxHeight: 300 // TODO: update this based on designs
17
+ }),
18
+ position = _e[0],
19
+ setPosition = _e[1];
20
+ var _f = useState(true),
21
+ isPositioned = _f[0],
22
+ setIsPositioned = _f[1];
23
+ var mountedRef = useRef(false);
24
+ var isSSR = typeof window === 'undefined';
25
+ var updatePosition = useCallback(function () {
26
+ var _a;
27
+ if (isSSR) return;
28
+ var trigger = triggerRef.current;
29
+ var popover = popoverRef.current;
30
+ if (!mountedRef.current || !trigger || !(popover === null || popover === void 0 ? void 0 : popover.isConnected)) {
31
+ return;
32
+ }
33
+ var triggerRect = trigger.getBoundingClientRect();
34
+ if (!triggerRect) return;
35
+ var doc = trigger.ownerDocument;
36
+ var win = (_a = doc === null || doc === void 0 ? void 0 : doc.defaultView) !== null && _a !== void 0 ? _a : window;
37
+ var isRTL = direction === 'rtl';
38
+ var inlineStart = isRTL ? win.innerWidth - triggerRect.right : triggerRect.left;
39
+ var triggerTop = triggerRect.top;
40
+ var triggerBottom = triggerRect.bottom;
41
+ var viewportHeight = win.innerHeight;
42
+ var spaceAbove = triggerTop;
43
+ var spaceBelow = viewportHeight - triggerBottom;
44
+ var shouldFlip = preferredPlacement === 'bottom' && spaceBelow < 200 && spaceAbove > spaceBelow;
45
+ var top;
46
+ var bottom;
47
+ var maxHeight;
48
+ if (shouldFlip) {
49
+ top = 'auto';
50
+ bottom = viewportHeight - triggerTop + offset;
51
+ maxHeight = Math.max(0, spaceAbove - offset);
52
+ } else {
53
+ top = triggerBottom + offset;
54
+ bottom = 'auto';
55
+ maxHeight = Math.max(0, spaceBelow - offset);
56
+ }
57
+ var newPosition = {
58
+ top: top,
59
+ bottom: bottom,
60
+ insetInlineStart: inlineStart,
61
+ maxHeight: maxHeight
62
+ };
63
+ setPosition(newPosition);
64
+ setIsPositioned(true);
65
+ }, [triggerRef, popoverRef, direction, offset, preferredPlacement, isSSR]);
66
+ useEffect(function () {
67
+ if (typeof window === 'undefined') return;
68
+ mountedRef.current = true;
69
+ var triggerEl = triggerRef.current;
70
+ updatePosition();
71
+ var resizeObserver = new ResizeObserver(function () {
72
+ updatePosition();
73
+ });
74
+ if (triggerEl) resizeObserver.observe(triggerEl);
75
+ var onWindowResize = function () {
76
+ return updatePosition();
77
+ };
78
+ window.addEventListener('resize', onWindowResize, {
79
+ passive: true
80
+ });
81
+ return function () {
82
+ mountedRef.current = false;
83
+ resizeObserver.disconnect();
84
+ window.removeEventListener('resize', onWindowResize);
85
+ setIsPositioned(false);
86
+ };
87
+ }, [updatePosition, triggerRef]);
88
+ return __assign(__assign({}, position), {
89
+ isPositioned: isPositioned
90
+ });
91
+ }
92
+ export { usePopoverPositioning };
@@ -0,0 +1,67 @@
1
+ import { useMemo } from 'react';
2
+ import { useLocale } from '@react-aria/i18n';
3
+ import { usePopoverPositioning } from './usePopoverPositioning.mjs';
4
+ import { useSupportsAnchorPositioning } from './useSupportsAnchorPositioning.mjs';
5
+ var CSS_PROPS = {
6
+ POSITION_ANCHOR: '--position-anchor',
7
+ POSITION_AREA: '--position-area'
8
+ };
9
+ var DEFAULTS = {
10
+ MAX_HEIGHT: '300px'
11
+ };
12
+ /**
13
+ * Generates manual positioning styles for browsers without anchor positioning support or SSR
14
+ */
15
+ var getManualPositioningStyles = function (positionData) {
16
+ return {
17
+ top: positionData.top,
18
+ bottom: positionData.bottom,
19
+ insetInlineStart: positionData.insetInlineStart,
20
+ maxHeight: positionData.maxHeight,
21
+ left: 'auto',
22
+ right: 'auto',
23
+ position: 'fixed'
24
+ };
25
+ };
26
+ var getAnchorPositioningStyles = function (anchorName, positionData) {
27
+ var _a;
28
+ var _b;
29
+ var styles = (_a = {
30
+ maxHeight: (_b = positionData.maxHeight) !== null && _b !== void 0 ? _b : DEFAULTS.MAX_HEIGHT
31
+ }, _a[CSS_PROPS.POSITION_ANCHOR] = anchorName, _a[CSS_PROPS.POSITION_AREA] = positionData.top === 'auto' ? 'top' : 'bottom', _a);
32
+ return styles;
33
+ };
34
+ var usePositioningStyles = function (buttonRef, popoverRef, anchorName) {
35
+ var direction = useLocale().direction;
36
+ var hasAnchorSupport = useSupportsAnchorPositioning();
37
+ var _a = usePopoverPositioning({
38
+ triggerRef: buttonRef,
39
+ popoverRef: popoverRef,
40
+ direction: direction,
41
+ preferredPlacement: 'bottom'
42
+ }),
43
+ top = _a.top,
44
+ bottom = _a.bottom,
45
+ insetInlineStart = _a.insetInlineStart,
46
+ maxHeight = _a.maxHeight,
47
+ isPositioned = _a.isPositioned;
48
+ var positionData = useMemo(function () {
49
+ return {
50
+ top: top,
51
+ bottom: bottom,
52
+ insetInlineStart: insetInlineStart,
53
+ maxHeight: maxHeight
54
+ };
55
+ }, [top, bottom, insetInlineStart, maxHeight]);
56
+ var popoverStyle = useMemo(function () {
57
+ if (hasAnchorSupport === null || !hasAnchorSupport) {
58
+ return getManualPositioningStyles(positionData);
59
+ }
60
+ return getAnchorPositioningStyles(anchorName, positionData);
61
+ }, [hasAnchorSupport, anchorName, positionData]);
62
+ return {
63
+ popoverStyle: popoverStyle,
64
+ isPositioned: isPositioned
65
+ };
66
+ };
67
+ export { usePositioningStyles };
@@ -0,0 +1,10 @@
1
+ import { useMemo } from 'react';
2
+ var useSupportsAnchorPositioning = function () {
3
+ return useMemo(function () {
4
+ if (typeof window === 'undefined' || typeof CSS === 'undefined') {
5
+ return false;
6
+ }
7
+ return CSS.supports('position-anchor', 'auto') || CSS.supports('position-try-fallbacks: flip-block');
8
+ }, []);
9
+ };
10
+ export { useSupportsAnchorPositioning };
@@ -1,13 +1,49 @@
1
- import React from 'react';
2
- import { Button, SelectValue } from 'react-aria-components';
1
+ import React, { useMemo } from 'react';
2
+ import { Button } from 'react-aria-components';
3
3
  import { Icon } from '../../../../__next__/Icon/Icon.mjs';
4
+ import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
4
5
  import styles from './Trigger.module.css.mjs';
5
- var Trigger = function () {
6
- return /*#__PURE__*/React.createElement(Button, {
7
- className: styles.button
8
- }, /*#__PURE__*/React.createElement(SelectValue, null), /*#__PURE__*/React.createElement(Icon, {
6
+ function flattenItems(items) {
7
+ return items.flatMap(function (item) {
8
+ return 'options' in item ? item.options : item;
9
+ });
10
+ }
11
+ var Trigger = function (_a) {
12
+ var buttonRef = _a.buttonRef;
13
+ var _b = useSingleSelectContext(),
14
+ isOpen = _b.isOpen,
15
+ setOpen = _b.setOpen,
16
+ selectedKey = _b.selectedKey,
17
+ items = _b.items,
18
+ anchorName = _b.anchorName;
19
+ var flattenedItems = useMemo(function () {
20
+ return flattenItems(items);
21
+ }, [items]);
22
+ var selectedLabel = useMemo(function () {
23
+ var _a;
24
+ var key = selectedKey;
25
+ var item = flattenedItems.find(function (i) {
26
+ return i.value === key;
27
+ });
28
+ return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : /*#__PURE__*/React.createElement("div", null);
29
+ }, [flattenedItems, selectedKey]);
30
+ return /*#__PURE__*/React.createElement("div", {
31
+ style: {
32
+ position: 'relative'
33
+ }
34
+ }, /*#__PURE__*/React.createElement(Button, {
35
+ className: styles.button,
36
+ ref: buttonRef,
37
+ onPress: function () {
38
+ return setOpen(!isOpen);
39
+ },
40
+ "aria-expanded": isOpen,
41
+ style: {
42
+ '--anchor-name': anchorName
43
+ }
44
+ }, selectedLabel, /*#__PURE__*/React.createElement(Icon, {
9
45
  name: "keyboard_arrow_down",
10
46
  isPresentational: true
11
- }));
47
+ })));
12
48
  };
13
49
  export { Trigger };