draft-components 4.16.0 → 4.17.0
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/css/draft-components.css +14 -4
- package/dist/components/multi-select/multi-select.css +14 -4
- package/dist/components/multi-select/multi-select.d.ts +11 -6
- package/dist/components/multi-select/multi-select.js +53 -43
- package/dist/components/multi-select/multi-select.js.map +1 -1
- package/package.json +1 -1
package/css/draft-components.css
CHANGED
|
@@ -5741,7 +5741,7 @@
|
|
|
5741
5741
|
position: relative;
|
|
5742
5742
|
}
|
|
5743
5743
|
|
|
5744
|
-
.dc-multi-
|
|
5744
|
+
.dc-multi-select__chips {
|
|
5745
5745
|
display: flex;
|
|
5746
5746
|
flex-wrap: wrap;
|
|
5747
5747
|
gap: 4px;
|
|
@@ -5749,17 +5749,27 @@
|
|
|
5749
5749
|
margin-top: 8px;
|
|
5750
5750
|
}
|
|
5751
5751
|
|
|
5752
|
-
.dc-multi-
|
|
5752
|
+
.dc-multi-select__chip {
|
|
5753
5753
|
padding-top: 0;
|
|
5754
5754
|
padding-right: 0;
|
|
5755
5755
|
padding-bottom: 0;
|
|
5756
5756
|
}
|
|
5757
5757
|
|
|
5758
|
-
.dc-multi-
|
|
5758
|
+
.dc-multi-select__chip-button {
|
|
5759
|
+
display: inline-flex;
|
|
5760
|
+
align-items: center;
|
|
5761
|
+
justify-content: center;
|
|
5759
5762
|
width: 28px;
|
|
5760
5763
|
height: 28px;
|
|
5761
5764
|
padding: 0;
|
|
5762
5765
|
margin-left: 4px;
|
|
5766
|
+
color: inherit;
|
|
5767
|
+
-webkit-appearance: none;
|
|
5768
|
+
-moz-appearance: none;
|
|
5769
|
+
appearance: none;
|
|
5770
|
+
cursor: default;
|
|
5771
|
+
background: none;
|
|
5772
|
+
border: none;
|
|
5763
5773
|
border-radius: inherit;
|
|
5764
5774
|
}
|
|
5765
5775
|
|
|
@@ -5872,7 +5882,7 @@
|
|
|
5872
5882
|
}
|
|
5873
5883
|
|
|
5874
5884
|
.dc-multi-select__option-label {
|
|
5875
|
-
font-weight:
|
|
5885
|
+
font-weight: 500;
|
|
5876
5886
|
}
|
|
5877
5887
|
|
|
5878
5888
|
.dc-multi-select__option-caption {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
position: relative;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
.dc-multi-
|
|
52
|
+
.dc-multi-select__chips {
|
|
53
53
|
display: flex;
|
|
54
54
|
flex-wrap: wrap;
|
|
55
55
|
gap: 4px;
|
|
@@ -57,17 +57,27 @@
|
|
|
57
57
|
margin-top: 8px;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
.dc-multi-
|
|
60
|
+
.dc-multi-select__chip {
|
|
61
61
|
padding-top: 0;
|
|
62
62
|
padding-right: 0;
|
|
63
63
|
padding-bottom: 0;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
.dc-multi-
|
|
66
|
+
.dc-multi-select__chip-button {
|
|
67
|
+
display: inline-flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: center;
|
|
67
70
|
width: 28px;
|
|
68
71
|
height: 28px;
|
|
69
72
|
padding: 0;
|
|
70
73
|
margin-left: 4px;
|
|
74
|
+
color: inherit;
|
|
75
|
+
-webkit-appearance: none;
|
|
76
|
+
-moz-appearance: none;
|
|
77
|
+
appearance: none;
|
|
78
|
+
cursor: default;
|
|
79
|
+
background: none;
|
|
80
|
+
border: none;
|
|
71
81
|
border-radius: inherit;
|
|
72
82
|
}
|
|
73
83
|
|
|
@@ -180,7 +190,7 @@
|
|
|
180
190
|
}
|
|
181
191
|
|
|
182
192
|
.dc-multi-select__option-label {
|
|
183
|
-
font-weight:
|
|
193
|
+
font-weight: 500;
|
|
184
194
|
}
|
|
185
195
|
|
|
186
196
|
.dc-multi-select__option-caption {
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import { type ReactNode, type CSSProperties } from 'react';
|
|
2
2
|
export type MultiSelectSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export type MultiSelectChipTint = 'gray' | 'green' | 'lime' | 'sky' | 'blue' | 'indigo' | 'pink' | 'red' | 'orange' | 'yellow';
|
|
4
|
+
export type MultiSelectChipStyle = 'default' | 'filled' | 'tinted';
|
|
3
5
|
export type MultiSelectItem = {
|
|
4
6
|
id: string | number;
|
|
5
7
|
};
|
|
6
8
|
export type MultiSelectItemFilter<T extends MultiSelectItem> = (searchQuery: string, item: T) => boolean;
|
|
7
9
|
export type MultiSelectItemLabelGetter<T extends MultiSelectItem> = (item: T) => ReactNode;
|
|
8
10
|
export type MultiSelectItemCaptionGetter<T extends MultiSelectItem> = (item: T) => ReactNode;
|
|
9
|
-
export type
|
|
11
|
+
export type MultiSelectSelectedItemIdsChangeHandler<T extends MultiSelectItem> = (ids: T['id'][]) => void;
|
|
10
12
|
export type MultiSelectOpenHandler = () => void;
|
|
11
13
|
export type MultiSelectCloseHandler = () => void;
|
|
12
14
|
export type MultiSelectMessages = {
|
|
13
15
|
noData?: ReactNode;
|
|
14
16
|
notFound?: ReactNode;
|
|
15
17
|
};
|
|
16
|
-
export declare function MultiSelect<T extends MultiSelectItem>({
|
|
17
|
-
id?: string;
|
|
18
|
+
export declare function MultiSelect<T extends MultiSelectItem>({ style, className, size, inputId: defaultInputId, inputAriaLabel, chipTint, chipStyle, placeholder, noDataMessage, notFoundMessage, itemsLoadingMessage, items, itemsError, itemsLoading, invalid, selectedItemIds: checkedItemIds, onChangeSelectedItemIds: onChangeCheckedItemIds, filterItem, getItemLabel, getItemCaption, onOpen, onClose, }: {
|
|
18
19
|
style?: CSSProperties;
|
|
19
20
|
className?: string;
|
|
20
21
|
size?: MultiSelectSize;
|
|
21
|
-
|
|
22
|
+
inputId?: string;
|
|
23
|
+
inputAriaLabel?: string;
|
|
24
|
+
chipTint?: MultiSelectChipTint;
|
|
25
|
+
chipStyle?: MultiSelectChipStyle;
|
|
22
26
|
placeholder?: string;
|
|
23
27
|
noDataMessage?: ReactNode;
|
|
24
28
|
notFoundMessage?: ReactNode;
|
|
@@ -26,11 +30,12 @@ export declare function MultiSelect<T extends MultiSelectItem>({ id: defaultId,
|
|
|
26
30
|
items: T[];
|
|
27
31
|
itemsError?: ReactNode;
|
|
28
32
|
itemsLoading?: boolean;
|
|
29
|
-
|
|
33
|
+
invalid?: boolean;
|
|
34
|
+
selectedItemIds: T['id'][];
|
|
35
|
+
onChangeSelectedItemIds: MultiSelectSelectedItemIdsChangeHandler<T>;
|
|
30
36
|
filterItem: MultiSelectItemFilter<T>;
|
|
31
37
|
getItemLabel: MultiSelectItemLabelGetter<T>;
|
|
32
38
|
getItemCaption?: MultiSelectItemCaptionGetter<T>;
|
|
33
|
-
onChangeCheckedItems: MultiSelectChangeCheckedItemsHandler<T>;
|
|
34
39
|
onOpen?: MultiSelectOpenHandler;
|
|
35
40
|
onClose?: MultiSelectCloseHandler;
|
|
36
41
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useId, useRef, useState,
|
|
2
|
+
import { useId, useRef, useState, } from 'react';
|
|
3
3
|
import { classNames } from '../../lib/react-helpers.js';
|
|
4
4
|
import { Spinner } from '../spinner/index.js';
|
|
5
5
|
import { TextInput } from '../text-input/index.js';
|
|
6
6
|
import { Tag } from '../tag/index.js';
|
|
7
|
-
import { IconButton } from '../button/index.js';
|
|
8
7
|
import { CheckIcon, ChevronDownIcon, XMarkIcon } from './icons.js';
|
|
9
8
|
import { getElementBoundingRect } from '../../lib/get-element-bounding-rect.js';
|
|
10
|
-
export function MultiSelect({
|
|
11
|
-
const id = useId();
|
|
9
|
+
export function MultiSelect({ style, className, size = 'md', inputId: defaultInputId, inputAriaLabel, chipTint = 'blue', chipStyle = 'default', placeholder, noDataMessage = 'No data', notFoundMessage = 'Not found', itemsLoadingMessage = 'Loading...', items, itemsError, itemsLoading, invalid, selectedItemIds: checkedItemIds, onChangeSelectedItemIds: onChangeCheckedItemIds, filterItem, getItemLabel, getItemCaption = () => undefined, onOpen, onClose, }) {
|
|
12
10
|
const ref = useRef(null);
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
11
|
+
const id = useId();
|
|
12
|
+
const inputId = defaultInputId || `${id}-multi-select-input`;
|
|
13
|
+
const buttonId = `${id}-multi-select-button`;
|
|
14
|
+
const listBoxId = `${id}-multi-select-list-box`;
|
|
15
|
+
const getOptionId = (itemId) => `${id}-multi-select-option-${itemId}`;
|
|
17
16
|
const [search, setSearch] = useState('');
|
|
18
17
|
const [expanded, setExpanded] = useState(false);
|
|
19
|
-
const [
|
|
20
|
-
const
|
|
21
|
-
const
|
|
18
|
+
const [selectedItemId, setSelectedItemId] = useState(undefined);
|
|
19
|
+
const checkedItemIdSet = new Set(checkedItemIds);
|
|
20
|
+
const checkedItems = [];
|
|
21
|
+
const filteredItems = [];
|
|
22
|
+
for (const item of items) {
|
|
23
|
+
if (filterItem(search, item)) {
|
|
24
|
+
filteredItems.push(item);
|
|
25
|
+
}
|
|
26
|
+
if (checkedItemIdSet.has(item.id)) {
|
|
27
|
+
checkedItems.push(item);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
22
30
|
const openListBox = () => {
|
|
23
31
|
if (expanded) {
|
|
24
32
|
return;
|
|
@@ -38,26 +46,26 @@ export function MultiSelect({ id: defaultId, style, className, size = 'md', inva
|
|
|
38
46
|
};
|
|
39
47
|
const closeListBox = () => {
|
|
40
48
|
setExpanded(false);
|
|
41
|
-
|
|
49
|
+
setSelectedItemId(undefined);
|
|
42
50
|
if (typeof onClose === 'function') {
|
|
43
51
|
onClose();
|
|
44
52
|
}
|
|
45
53
|
};
|
|
46
|
-
const toggleItem = (
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
|
|
54
|
+
const toggleItem = (itemId) => {
|
|
55
|
+
const newCheckedItemIdSet = new Set(checkedItemIdSet);
|
|
56
|
+
if (newCheckedItemIdSet.has(itemId)) {
|
|
57
|
+
newCheckedItemIdSet.delete(itemId);
|
|
50
58
|
}
|
|
51
59
|
else {
|
|
52
|
-
|
|
60
|
+
newCheckedItemIdSet.add(itemId);
|
|
53
61
|
}
|
|
54
|
-
|
|
62
|
+
onChangeCheckedItemIds(Array.from(newCheckedItemIdSet));
|
|
55
63
|
};
|
|
56
|
-
const selectItemAndScrollIfNeeded = (
|
|
57
|
-
|
|
64
|
+
const selectItemAndScrollIfNeeded = (itemId) => {
|
|
65
|
+
setSelectedItemId(itemId);
|
|
58
66
|
const containerEl = ref.current;
|
|
59
|
-
if (containerEl &&
|
|
60
|
-
const optionId = getOptionId(
|
|
67
|
+
if (containerEl && itemId) {
|
|
68
|
+
const optionId = getOptionId(itemId);
|
|
61
69
|
const listBoxEl = containerEl.querySelector(`#${listBoxId}`);
|
|
62
70
|
const optionEl = containerEl.querySelector(`#${optionId}`);
|
|
63
71
|
if (listBoxEl && optionEl) {
|
|
@@ -86,7 +94,7 @@ export function MultiSelect({ id: defaultId, style, className, size = 'md', inva
|
|
|
86
94
|
};
|
|
87
95
|
const handleInputChange = (event) => {
|
|
88
96
|
setSearch(event.target.value);
|
|
89
|
-
|
|
97
|
+
setSelectedItemId(undefined);
|
|
90
98
|
openListBox();
|
|
91
99
|
};
|
|
92
100
|
const handleInputKeyDown = (event) => {
|
|
@@ -97,8 +105,8 @@ export function MultiSelect({ id: defaultId, style, className, size = 'md', inva
|
|
|
97
105
|
switch (event.key) {
|
|
98
106
|
case 'Enter':
|
|
99
107
|
case ' ':
|
|
100
|
-
if (expanded &&
|
|
101
|
-
toggleItem(
|
|
108
|
+
if (expanded && selectedItemId) {
|
|
109
|
+
toggleItem(selectedItemId);
|
|
102
110
|
handled = true;
|
|
103
111
|
}
|
|
104
112
|
break;
|
|
@@ -108,11 +116,11 @@ export function MultiSelect({ id: defaultId, style, className, size = 'md', inva
|
|
|
108
116
|
if (filteredItems.length > 0 && !event.altKey) {
|
|
109
117
|
const firstItemIndex = 0;
|
|
110
118
|
const lastItemIndex = filteredItems.length - 1;
|
|
111
|
-
const selectedItemIndex = filteredItems.findIndex((item) => item ===
|
|
119
|
+
const selectedItemIndex = filteredItems.findIndex((item) => item.id === selectedItemId);
|
|
112
120
|
const newSelectedItem = selectedItemIndex >= 0 && selectedItemIndex < lastItemIndex
|
|
113
121
|
? filteredItems[selectedItemIndex + 1]
|
|
114
122
|
: filteredItems[firstItemIndex];
|
|
115
|
-
selectItemAndScrollIfNeeded(newSelectedItem);
|
|
123
|
+
selectItemAndScrollIfNeeded(newSelectedItem.id);
|
|
116
124
|
}
|
|
117
125
|
handled = true;
|
|
118
126
|
break;
|
|
@@ -122,25 +130,25 @@ export function MultiSelect({ id: defaultId, style, className, size = 'md', inva
|
|
|
122
130
|
if (filteredItems.length > 0 && !event.altKey) {
|
|
123
131
|
const firstItemIndex = 0;
|
|
124
132
|
const lastItemIndex = filteredItems.length - 1;
|
|
125
|
-
const selectedItemIndex = filteredItems.findIndex((item) => item ===
|
|
133
|
+
const selectedItemIndex = filteredItems.findIndex((item) => item.id === selectedItemId);
|
|
126
134
|
const newSelectedItem = selectedItemIndex >= 0 && selectedItemIndex > firstItemIndex
|
|
127
135
|
? filteredItems[selectedItemIndex - 1]
|
|
128
136
|
: filteredItems[lastItemIndex];
|
|
129
|
-
selectItemAndScrollIfNeeded(newSelectedItem);
|
|
137
|
+
selectItemAndScrollIfNeeded(newSelectedItem.id);
|
|
130
138
|
}
|
|
131
139
|
handled = true;
|
|
132
140
|
break;
|
|
133
141
|
case 'Home':
|
|
134
|
-
if (expanded &&
|
|
142
|
+
if (expanded && selectedItemId && filteredItems.length > 0) {
|
|
135
143
|
const firstItem = filteredItems[0];
|
|
136
|
-
selectItemAndScrollIfNeeded(firstItem);
|
|
144
|
+
selectItemAndScrollIfNeeded(firstItem.id);
|
|
137
145
|
handled = true;
|
|
138
146
|
}
|
|
139
147
|
break;
|
|
140
148
|
case 'End':
|
|
141
|
-
if (expanded &&
|
|
149
|
+
if (expanded && selectedItemId && filteredItems.length > 0) {
|
|
142
150
|
const lastItem = filteredItems[filteredItems.length - 1];
|
|
143
|
-
selectItemAndScrollIfNeeded(lastItem);
|
|
151
|
+
selectItemAndScrollIfNeeded(lastItem.id);
|
|
144
152
|
handled = true;
|
|
145
153
|
}
|
|
146
154
|
break;
|
|
@@ -174,29 +182,31 @@ export function MultiSelect({ id: defaultId, style, className, size = 'md', inva
|
|
|
174
182
|
listBoxContent = (_jsx("li", { className: "dc-multi-select__empty-state", children: notFoundMessage }));
|
|
175
183
|
}
|
|
176
184
|
else {
|
|
177
|
-
listBoxContent = filteredItems.map((item) => (_jsx(MultiSelectOption, { id:
|
|
185
|
+
listBoxContent = filteredItems.map((item) => (_jsx(MultiSelectOption, { id: item.id, label: getItemLabel(item), caption: getItemCaption(item), optionId: getOptionId(item.id), checked: checkedItemIdSet.has(item.id), selected: selectedItemId === item.id, onCheck: toggleItem, onSelect: setSelectedItemId }, item.id)));
|
|
178
186
|
}
|
|
179
|
-
return (_jsxs("div", { ref: ref, style: style, className: classNames('dc-multi-select', className), "data-expanded": expanded, children: [_jsxs("div", { className: "dc-multi-select__input-container", children: [_jsx(TextInput, { id: inputId, fullWidth: true, size: size, placeholder: placeholder, type: "text", role: "combobox", "aria-expanded": expanded, "aria-controls": listBoxId, "aria-activedescendant":
|
|
187
|
+
return (_jsxs("div", { ref: ref, style: style, className: classNames('dc-multi-select', className), "data-expanded": expanded, children: [_jsxs("div", { className: "dc-multi-select__input-container", children: [_jsx(TextInput, { id: inputId, fullWidth: true, size: size, placeholder: placeholder, type: "text", role: "combobox", "aria-label": inputAriaLabel, "aria-expanded": expanded, "aria-controls": listBoxId, "aria-activedescendant": selectedItemId ? getOptionId(selectedItemId) : undefined, value: search, invalid: invalid, "data-1p-ignore": true, onClick: handleInputClick, onBlur: handleInputBlur, onChange: handleInputChange, onKeyDown: handleInputKeyDown, slotRight: () => (_jsx("button", { id: buttonId, className: "dc-multi-select__button", type: "button", "aria-expanded": expanded, "aria-controls": listBoxId, tabIndex: -1, onPointerDown: handleButtonPress, children: _jsx(ChevronDownIcon, { "data-icon": "chevron-down", width: 20, height: 20 }) })) }), _jsx("ul", { id: listBoxId, className: "dc-multi-select__list-box", role: "listbox", hidden: !expanded, children: listBoxContent })] }), checkedItems.length > 0 && (_jsx("div", { className: "dc-multi-select__chips", children: checkedItems.map((item) => (_jsx(MultiSelectChip, { itemId: item.id, tint: chipTint, style: chipStyle, onDelete: toggleItem, children: getItemLabel(item) }, item.id))) }))] }));
|
|
180
188
|
}
|
|
181
|
-
function MultiSelectOption({ id,
|
|
189
|
+
function MultiSelectOption({ id, label, caption, optionId, checked, selected, onCheck, onSelect, }) {
|
|
182
190
|
const handlePointerDown = (event) => {
|
|
183
191
|
event.preventDefault();
|
|
184
192
|
event.stopPropagation();
|
|
185
|
-
onCheck(
|
|
193
|
+
onCheck(id);
|
|
186
194
|
};
|
|
187
195
|
const handlePointerOver = (event) => {
|
|
188
196
|
event.preventDefault();
|
|
189
197
|
event.stopPropagation();
|
|
190
|
-
onSelect(
|
|
198
|
+
onSelect(id);
|
|
191
199
|
};
|
|
192
|
-
|
|
193
|
-
if (typeof getCaption === 'function') {
|
|
194
|
-
caption = getCaption(item);
|
|
195
|
-
}
|
|
196
|
-
return (_jsxs("li", { id: id, className: "dc-multi-select__option", role: "option", "aria-checked": checked, "aria-selected": selected, onPointerDown: handlePointerDown, onPointerOver: handlePointerOver, children: [_jsx("div", { className: "dc-multi-select__option-checkbox", children: _jsx(CheckIcon, { "data-icon": "check", width: 16, height: 16 }) }), _jsxs("div", { className: "dc-multi-select__option-body", children: [_jsx("b", { className: "dc-multi-select__option-label", children: getLabel(item) }), caption
|
|
200
|
+
return (_jsxs("li", { id: optionId, className: "dc-multi-select__option", role: "option", "aria-checked": checked, "aria-selected": selected, onPointerDown: handlePointerDown, onPointerOver: handlePointerOver, children: [_jsx("div", { className: "dc-multi-select__option-checkbox", children: _jsx(CheckIcon, { "data-icon": "check", width: 16, height: 16 }) }), _jsxs("div", { className: "dc-multi-select__option-body", children: [_jsx("span", { className: "dc-multi-select__option-label", children: label }), caption
|
|
197
201
|
? _jsx("small", { className: "dc-multi-select__option-caption", children: caption })
|
|
198
202
|
: null] })] }));
|
|
199
203
|
}
|
|
204
|
+
function MultiSelectChip({ tint, style, itemId, children, onDelete, }) {
|
|
205
|
+
const handleButtonClick = () => {
|
|
206
|
+
onDelete(itemId);
|
|
207
|
+
};
|
|
208
|
+
return (_jsxs(Tag, { className: "dc-multi-select__chip", as: "span", size: "lg", tint: tint, tagStyle: style, children: [children, _jsx("button", { className: "dc-multi-select__chip-button", type: "button", onClick: handleButtonClick, children: _jsx(XMarkIcon, { "data-icon": "x-mark", width: 18, height: 18 }) })] }));
|
|
209
|
+
}
|
|
200
210
|
function isElementVisibleInsideParent(parent, child) {
|
|
201
211
|
const parentRect = getElementBoundingRect(parent);
|
|
202
212
|
const childRect = getElementBoundingRect(child);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select.js","sourceRoot":"","sources":["../../../src/components/multi-select/multi-select.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,EACL,MAAM,EACN,QAAQ,
|
|
1
|
+
{"version":3,"file":"multi-select.js","sourceRoot":"","sources":["../../../src/components/multi-select/multi-select.tsx"],"names":[],"mappings":"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"}
|