@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.
- package/alpha/README.md +28 -0
- package/alpha/package.json +5 -0
- package/dist/cjs/alpha.cjs +1 -0
- package/dist/cjs/src/Notification/InlineNotification/InlineNotification.cjs +1 -1
- package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +35 -74
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.cjs +105 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.cjs +11 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.cjs +112 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.cjs +16 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/List/List.cjs +35 -10
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.cjs +61 -8
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.cjs +10 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.cjs +38 -9
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.cjs +4 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +60 -30
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.cjs +2 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +2 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +4 -2
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.cjs +87 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.cjs +11 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.cjs +52 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.cjs +13 -0
- package/dist/esm/alpha.mjs +1 -1
- package/dist/esm/src/Notification/InlineNotification/InlineNotification.mjs +1 -1
- package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +39 -73
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.mjs +96 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.mjs +9 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.mjs +103 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.mjs +14 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/List/List.mjs +37 -14
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.mjs +63 -13
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.mjs +10 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.mjs +41 -15
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.mjs +4 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +69 -43
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +2 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +2 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +4 -2
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.mjs +78 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.mjs +9 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.mjs +43 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.mjs +11 -0
- package/dist/styles.css +443 -79
- package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +14 -19
- package/dist/types/__alpha__/SingleSelect/_docs/mockData.d.ts +3 -0
- package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +15 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -9
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +3 -6
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Select/Select.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Select/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +4 -1
- package/dist/types/__alpha__/SingleSelect/types.d.ts +68 -11
- package/locales/en.json +9 -1
- package/package.json +9 -2
- package/src/Notification/InlineNotification/InlineNotification.tsx +1 -1
- package/src/__alpha__/SingleSelect/SingleSelect.tsx +35 -88
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +96 -6
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +22 -24
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +389 -33
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +41 -22
- package/src/__alpha__/SingleSelect/_docs/mockData.ts +20 -14
- package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +18 -7
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css +35 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.tsx +106 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css +130 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.tsx +121 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +5 -0
- package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +36 -13
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +84 -3
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +67 -11
- package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css +20 -5
- package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +46 -19
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +7 -5
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +90 -37
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +2 -2
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +9 -8
- package/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css +35 -0
- package/src/__alpha__/SingleSelect/subcomponents/Select/Select.tsx +84 -0
- package/src/__alpha__/SingleSelect/subcomponents/Select/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css +77 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.tsx +52 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/index.ts +4 -1
- package/src/__alpha__/SingleSelect/types.ts +94 -14
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +0 -57
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.cjs +0 -6
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +0 -49
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.mjs +0 -4
- package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +0 -2
- package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/index.d.ts +0 -1
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +0 -19
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +0 -35
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/index.ts +0 -1
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { DOMAttributes, RefObject } from 'react'
|
|
2
|
+
|
|
3
|
+
import type React from 'react'
|
|
4
|
+
import { type ComboBoxState, type ComboBoxStateOptions } from '@react-stately/combobox'
|
|
5
|
+
import type { ListState } from '@react-stately/list'
|
|
6
|
+
import { type SelectState, type SelectStateOptions } from '@react-stately/select'
|
|
7
|
+
import { type Key, type Node } from '@react-types/shared'
|
|
8
|
+
import { type FocusableElement } from '@react-types/shared/src/dom'
|
|
9
|
+
import type { AriaButtonProps, AriaListBoxOptions, AriaPopoverProps } from 'react-aria'
|
|
3
10
|
|
|
4
11
|
// Shared types
|
|
5
12
|
export type SelectItem = {
|
|
6
13
|
label: string
|
|
7
14
|
value: string
|
|
15
|
+
key: Key
|
|
8
16
|
}
|
|
9
17
|
|
|
10
18
|
export type SelectSection = {
|
|
@@ -12,23 +20,73 @@ export type SelectSection = {
|
|
|
12
20
|
options: SelectItem[]
|
|
13
21
|
}
|
|
14
22
|
|
|
15
|
-
// SingleSelect
|
|
16
|
-
export type
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
// SingleSelect
|
|
24
|
+
export type SelectLabel =
|
|
25
|
+
| {
|
|
26
|
+
labelHidden: true
|
|
27
|
+
label: string
|
|
28
|
+
}
|
|
29
|
+
| {
|
|
30
|
+
labelHidden?: false
|
|
31
|
+
label: React.ReactNode
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type SelectBaseProps = {
|
|
35
|
+
variant?: 'primary' | 'secondary'
|
|
36
|
+
size?: 'small' | 'medium' | 'large'
|
|
37
|
+
labelPosition?: 'top' | 'side'
|
|
38
|
+
isReadOnly?: boolean
|
|
39
|
+
} & SelectLabel
|
|
40
|
+
|
|
41
|
+
export type SelectProps<T extends SelectItem> = Omit<
|
|
42
|
+
SelectStateOptions<T>,
|
|
43
|
+
'label' | 'defaultFilter' | 'menuTrigger' | 'allowsCustomValue'
|
|
44
|
+
> &
|
|
45
|
+
SelectBaseProps
|
|
46
|
+
|
|
47
|
+
export type ComboBoxProps<T extends SelectItem> = Omit<
|
|
48
|
+
ComboBoxStateOptions<T>,
|
|
49
|
+
'label' | 'defaultFilter' | 'menuTrigger' | 'allowsCustomValue'
|
|
50
|
+
> &
|
|
51
|
+
SelectBaseProps
|
|
52
|
+
|
|
53
|
+
export type SingleSelectProps<T extends SelectItem> =
|
|
54
|
+
| (ComboBoxProps<T> & { isComboBox?: true })
|
|
55
|
+
| (SelectProps<T> & { isComboBox?: false })
|
|
56
|
+
|
|
57
|
+
// Trigger
|
|
58
|
+
export type SelectTriggerProps = {
|
|
59
|
+
triggerProps: AriaButtonProps<'button'>
|
|
60
|
+
valueProps: DOMAttributes<FocusableElement>
|
|
61
|
+
buttonRef: React.MutableRefObject<HTMLButtonElement | null>
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export type ComboBoxTriggerProps = {
|
|
65
|
+
inputProps: React.InputHTMLAttributes<HTMLInputElement>
|
|
66
|
+
inputRef: React.MutableRefObject<HTMLInputElement | null>
|
|
67
|
+
buttonProps: AriaButtonProps<'button'>
|
|
68
|
+
buttonRef: React.MutableRefObject<HTMLButtonElement | null>
|
|
69
|
+
triggerWrapperRef: React.MutableRefObject<HTMLDivElement | null>
|
|
70
|
+
clearButtonRef: React.MutableRefObject<HTMLButtonElement | null>
|
|
20
71
|
}
|
|
21
72
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
buttonRef: React.RefObject<HTMLButtonElement>
|
|
73
|
+
export type ChevronButtonProps = AriaButtonProps<'button'> & {
|
|
74
|
+
buttonRef: React.MutableRefObject<HTMLButtonElement | null>
|
|
25
75
|
}
|
|
26
76
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
77
|
+
export type ClearButtonProps = {
|
|
78
|
+
clearButtonRef: React.RefObject<HTMLButtonElement>
|
|
79
|
+
inputRef: React.RefObject<HTMLInputElement>
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Popover
|
|
83
|
+
|
|
84
|
+
export type PopoverProps<T extends SelectItem> = AriaPopoverProps & {
|
|
85
|
+
state: ComboBoxState<T> | SelectState<T>
|
|
86
|
+
triggerRef: React.RefObject<HTMLElement>
|
|
30
87
|
popoverRef: React.RefObject<HTMLDivElement>
|
|
31
|
-
|
|
88
|
+
clearButtonRef?: React.RefObject<HTMLButtonElement>
|
|
89
|
+
children: React.ReactNode
|
|
32
90
|
}
|
|
33
91
|
|
|
34
92
|
type PositionDataProp = number | string | undefined
|
|
@@ -56,3 +114,25 @@ export type UsePopoverPositioningProps = {
|
|
|
56
114
|
offset?: number
|
|
57
115
|
preferredPlacement?: 'top' | 'bottom'
|
|
58
116
|
}
|
|
117
|
+
|
|
118
|
+
// List
|
|
119
|
+
export type ListProps<T extends SelectItem> = {
|
|
120
|
+
state: ComboBoxState<T> | SelectState<T>
|
|
121
|
+
listBoxOptions: AriaListBoxOptions<T>
|
|
122
|
+
listBoxRef: React.RefObject<HTMLUListElement>
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ListItem
|
|
126
|
+
export type ListItemProps<T extends SelectItem> = {
|
|
127
|
+
item: Node<T>
|
|
128
|
+
state: ListState<T>
|
|
129
|
+
selectedIcon?: 'check' | 'radio'
|
|
130
|
+
selectedPosition?: 'start' | 'end'
|
|
131
|
+
className?: string
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// ListSection
|
|
135
|
+
export type ListSectionProps<T extends SelectItem> = {
|
|
136
|
+
section: Node<T>
|
|
137
|
+
state: ComboBoxState<T> | SelectState<T>
|
|
138
|
+
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var reactAriaComponents = require('react-aria-components');
|
|
5
|
-
var Icon = require('../../../../Icon/Icon.cjs');
|
|
6
|
-
var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
|
|
7
|
-
var Trigger_module = require('./Trigger.module.css.cjs');
|
|
8
|
-
function _interopDefault(e) {
|
|
9
|
-
return e && e.__esModule ? e : {
|
|
10
|
-
default: e
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
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, {
|
|
53
|
-
name: "keyboard_arrow_down",
|
|
54
|
-
isPresentational: true
|
|
55
|
-
})));
|
|
56
|
-
};
|
|
57
|
-
exports.Trigger = Trigger;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
2
|
-
import { Button } from 'react-aria-components';
|
|
3
|
-
import { Icon } from '../../../../Icon/Icon.mjs';
|
|
4
|
-
import { useSingleSelectContext } from '../../context/SingleSelectContext.mjs';
|
|
5
|
-
import styles from './Trigger.module.css.mjs';
|
|
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, {
|
|
45
|
-
name: "keyboard_arrow_down",
|
|
46
|
-
isPresentational: true
|
|
47
|
-
})));
|
|
48
|
-
};
|
|
49
|
-
export { Trigger };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './Trigger';
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
@layer kz-components {
|
|
2
|
-
.button {
|
|
3
|
-
anchor-name: var(--anchor-name);
|
|
4
|
-
display: flex;
|
|
5
|
-
align-items: center;
|
|
6
|
-
justify-content: space-between;
|
|
7
|
-
font-family: var(--typography-paragraph-body-font-family);
|
|
8
|
-
font-weight: var(--typography-paragraph-body-font-weight);
|
|
9
|
-
font-size: var(--typography-paragraph-body-font-size);
|
|
10
|
-
line-height: var(--typography-paragraph-body-line-height);
|
|
11
|
-
letter-spacing: var(--typography-paragraph-body-letter-spacing);
|
|
12
|
-
padding: var(--spacing-12);
|
|
13
|
-
min-height: var(--spacing-48);
|
|
14
|
-
min-width: var(--spacing-200);
|
|
15
|
-
background-color: var(--color-white);
|
|
16
|
-
border-radius: var(--spacing-8);
|
|
17
|
-
border: 1px solid var(--color-gray-500);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import React, { useMemo } from 'react'
|
|
2
|
-
import { Button as RACButton } from 'react-aria-components'
|
|
3
|
-
import { Icon } from '~components/Icon'
|
|
4
|
-
import { useSingleSelectContext } from '../../context'
|
|
5
|
-
import { type SelectItem, type SelectSection, type TriggerProps } from '../../types'
|
|
6
|
-
import styles from './Trigger.module.css'
|
|
7
|
-
|
|
8
|
-
function flattenItems(items: (SelectItem | SelectSection)[]): SelectItem[] {
|
|
9
|
-
return items.flatMap((item) => ('options' in item ? item.options : item))
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const Trigger = ({ buttonRef }: TriggerProps): JSX.Element => {
|
|
13
|
-
const { isOpen, setOpen, selectedKey, items, anchorName } = useSingleSelectContext()
|
|
14
|
-
const flattenedItems = useMemo(() => flattenItems(items), [items])
|
|
15
|
-
const selectedLabel = useMemo(() => {
|
|
16
|
-
const key = selectedKey
|
|
17
|
-
const item = flattenedItems.find((i) => i.value === key)
|
|
18
|
-
return item?.label ?? <div></div>
|
|
19
|
-
}, [flattenedItems, selectedKey])
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<div style={{ position: 'relative' }}>
|
|
23
|
-
<RACButton
|
|
24
|
-
className={styles.button}
|
|
25
|
-
ref={buttonRef}
|
|
26
|
-
onPress={() => setOpen(!isOpen)}
|
|
27
|
-
aria-expanded={isOpen}
|
|
28
|
-
style={{ '--anchor-name': anchorName } as React.CSSProperties}
|
|
29
|
-
>
|
|
30
|
-
{selectedLabel}
|
|
31
|
-
<Icon name="keyboard_arrow_down" isPresentational />
|
|
32
|
-
</RACButton>
|
|
33
|
-
</div>
|
|
34
|
-
)
|
|
35
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './Trigger'
|