@redsift/pickers 11.5.0 → 11.6.0-alpha.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/_internal/Combobox2.js +150 -0
- package/_internal/Combobox2.js.map +1 -0
- package/_internal/ComboboxContent.js +70 -0
- package/_internal/ComboboxContent.js.map +1 -0
- package/_internal/ComboboxContentFooter.js +36 -0
- package/_internal/ComboboxContentFooter.js.map +1 -0
- package/_internal/ComboboxContentHeader.js +36 -0
- package/_internal/ComboboxContentHeader.js.map +1 -0
- package/_internal/ComboboxContentListbox.js +123 -0
- package/_internal/ComboboxContentListbox.js.map +1 -0
- package/_internal/ComboboxTrigger.js +377 -0
- package/_internal/ComboboxTrigger.js.map +1 -0
- package/_internal/Item2.js +199 -0
- package/_internal/Item2.js.map +1 -0
- package/_internal/MenuButton.js +75 -0
- package/_internal/MenuButton.js.map +1 -0
- package/_internal/MenuButtonContent.js +68 -0
- package/_internal/MenuButtonContent.js.map +1 -0
- package/_internal/MenuButtonContentFooter.js +36 -0
- package/_internal/MenuButtonContentFooter.js.map +1 -0
- package/_internal/MenuButtonContentHeader.js +36 -0
- package/_internal/MenuButtonContentHeader.js.map +1 -0
- package/_internal/MenuButtonContentMenu.js +41 -0
- package/_internal/MenuButtonContentMenu.js.map +1 -0
- package/_internal/MenuButtonTrigger.js +168 -0
- package/_internal/MenuButtonTrigger.js.map +1 -0
- package/_internal/Select2.js +115 -0
- package/_internal/Select2.js.map +1 -0
- package/_internal/SelectContent.js +62 -0
- package/_internal/SelectContent.js.map +1 -0
- package/_internal/SelectTrigger.js +250 -0
- package/_internal/SelectTrigger.js.map +1 -0
- package/_internal/_rollupPluginBabelHelpers.js +93 -0
- package/_internal/_rollupPluginBabelHelpers.js.map +1 -0
- package/_internal/combobox-content-footer.js +2 -0
- package/_internal/combobox-content-footer.js.map +1 -0
- package/_internal/combobox-content-header.js +2 -0
- package/_internal/combobox-content-header.js.map +1 -0
- package/_internal/combobox-content-listbox.js +2 -0
- package/_internal/combobox-content-listbox.js.map +1 -0
- package/_internal/combobox-content.js +2 -0
- package/_internal/combobox-content.js.map +1 -0
- package/_internal/combobox-trigger.js +2 -0
- package/_internal/combobox-trigger.js.map +1 -0
- package/_internal/combobox.js +3 -0
- package/_internal/combobox.js.map +1 -0
- package/_internal/item.js +2 -0
- package/_internal/item.js.map +1 -0
- package/_internal/menu-button-content-footer.js +2 -0
- package/_internal/menu-button-content-footer.js.map +1 -0
- package/_internal/menu-button-content-header.js +2 -0
- package/_internal/menu-button-content-header.js.map +1 -0
- package/_internal/menu-button-content-menu.js +2 -0
- package/_internal/menu-button-content-menu.js.map +1 -0
- package/_internal/menu-button-content.js +2 -0
- package/_internal/menu-button-content.js.map +1 -0
- package/_internal/menu-button-trigger.js +2 -0
- package/_internal/menu-button-trigger.js.map +1 -0
- package/_internal/menu-button.js +2 -0
- package/_internal/menu-button.js.map +1 -0
- package/_internal/select-content.js +2 -0
- package/_internal/select-content.js.map +1 -0
- package/_internal/select-trigger.js +2 -0
- package/_internal/select-trigger.js.map +1 -0
- package/_internal/select.js +2 -0
- package/_internal/select.js.map +1 -0
- package/_internal/types.js +26 -0
- package/_internal/types.js.map +1 -0
- package/index.js +17 -1822
- package/index.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
import { b as _objectSpread2, _ as _objectWithoutProperties } from './_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React, { forwardRef, useContext, useRef, useEffect } from 'react';
|
|
3
|
+
import { useId, useMessageFormatter, FocusWithinGroupContext, ListboxContext, useTheme, isComponent, FocusWithinGroupActionType, IconButton, ListboxActionType, EventKey } from '@redsift/design-system';
|
|
4
|
+
import { usePopoverContext, useMergeRefs } from '@redsift/popovers';
|
|
5
|
+
import { b as ComboboxContext, C as ComboboxSelectionMode, a as ComboboxVariant } from './types.js';
|
|
6
|
+
import { mdiClose, mdiChevronDown } from '@redsift/icons';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
|
|
9
|
+
var collapse$1 = "Collapse";
|
|
10
|
+
var expand$1 = "Expand";
|
|
11
|
+
var selected$1 = "{count, plural, =0 {None selected} other {# selected}}";
|
|
12
|
+
var unselect$1 = "Unselect {label}";
|
|
13
|
+
var enUS = {
|
|
14
|
+
collapse: collapse$1,
|
|
15
|
+
expand: expand$1,
|
|
16
|
+
selected: selected$1,
|
|
17
|
+
unselect: unselect$1
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
var collapse = "Réduire";
|
|
21
|
+
var expand = "Développer";
|
|
22
|
+
var selected = "{count, plural, =0 {Aucun sélectionné} =1 {1 sélectionné} other {# sélectionnés}}";
|
|
23
|
+
var unselect = "Déselectionner {label}";
|
|
24
|
+
var frFR = {
|
|
25
|
+
collapse: collapse,
|
|
26
|
+
expand: expand,
|
|
27
|
+
selected: selected,
|
|
28
|
+
unselect: unselect
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
var intlMessages = {
|
|
32
|
+
'en-US': enUS,
|
|
33
|
+
'fr-FR': frFR
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const _excluded = ["aria-controls", "aria-expanded", "aria-haspopup", "role"];
|
|
37
|
+
const COMPONENT_NAME = 'ComboboxTrigger';
|
|
38
|
+
const CLASSNAME = 'redsift-combobox-trigger';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The ComboboxTrigger component.
|
|
42
|
+
*/
|
|
43
|
+
const ComboboxTrigger = /*#__PURE__*/forwardRef((props, ref) => {
|
|
44
|
+
var _renderedChildren$pro;
|
|
45
|
+
const [id] = useId();
|
|
46
|
+
const {
|
|
47
|
+
children,
|
|
48
|
+
hideExpandButton,
|
|
49
|
+
openOnFocus,
|
|
50
|
+
hideClearButton,
|
|
51
|
+
pillProps
|
|
52
|
+
} = props;
|
|
53
|
+
const format = useMessageFormatter(intlMessages);
|
|
54
|
+
const {
|
|
55
|
+
getReferenceProps,
|
|
56
|
+
isOpen,
|
|
57
|
+
handleOpen: handleOpenPopover,
|
|
58
|
+
refs
|
|
59
|
+
} = usePopoverContext();
|
|
60
|
+
const childrenRef = children.ref;
|
|
61
|
+
const triggerRef = useMergeRefs([refs.setReference, ref, childrenRef]);
|
|
62
|
+
const focusContext = useContext(FocusWithinGroupContext);
|
|
63
|
+
const comboboxState = useContext(ComboboxContext);
|
|
64
|
+
const listboxState = useContext(ListboxContext);
|
|
65
|
+
const theme = useTheme();
|
|
66
|
+
const canHaveMultipleSelections = (comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.selectionMode) === ComboboxSelectionMode.multiple;
|
|
67
|
+
const canHaveFreeText = (comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.variant) === ComboboxVariant.suggestions;
|
|
68
|
+
const renderedChildren = typeof children === 'function' ? children({
|
|
69
|
+
value: comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.value,
|
|
70
|
+
isOpen
|
|
71
|
+
}) : children;
|
|
72
|
+
const isTextArea = isComponent('TextArea')(renderedChildren);
|
|
73
|
+
const isTextField = isComponent('TextField')(renderedChildren);
|
|
74
|
+
const hasMultipleLines = isTextArea && (comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.inputValue.includes('\n'));
|
|
75
|
+
const _inputRef = useRef();
|
|
76
|
+
const inputRef = (_renderedChildren$pro = renderedChildren.props.inputRef) !== null && _renderedChildren$pro !== void 0 ? _renderedChildren$pro : _inputRef;
|
|
77
|
+
const handleChange = value => {
|
|
78
|
+
focusContext.dispatch({
|
|
79
|
+
type: FocusWithinGroupActionType.FILTER_LIST,
|
|
80
|
+
payload: {
|
|
81
|
+
filter: _objectSpread2({
|
|
82
|
+
value: value || ''
|
|
83
|
+
}, comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.filter)
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setInputValue(value);
|
|
87
|
+
};
|
|
88
|
+
const handleKeyDown = event => {
|
|
89
|
+
const code = event.code;
|
|
90
|
+
if (code === 'Escape' || code === 'Tab') {
|
|
91
|
+
if (isOpen) {
|
|
92
|
+
handleOpenPopover(false);
|
|
93
|
+
}
|
|
94
|
+
if (canHaveMultipleSelections && canHaveFreeText && comboboxState.inputValue) {
|
|
95
|
+
listboxState.dispatch({
|
|
96
|
+
type: ListboxActionType.TOGGLE,
|
|
97
|
+
payload: {
|
|
98
|
+
value: comboboxState.inputValue,
|
|
99
|
+
activedescendant: [comboboxState.freeTextItemId, comboboxState.inputValue]
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if ((/^.$/.test(event.key) || code === 'Backspace') && !hasMultipleLines) {
|
|
105
|
+
if (!isOpen) {
|
|
106
|
+
handleOpenPopover(true);
|
|
107
|
+
}
|
|
108
|
+
if (canHaveMultipleSelections && canHaveFreeText) {
|
|
109
|
+
focusContext.dispatch({
|
|
110
|
+
type: FocusWithinGroupActionType.DELAY_ACTION,
|
|
111
|
+
payload: {
|
|
112
|
+
type: FocusWithinGroupActionType.KEY_DOWN_ON_LIST,
|
|
113
|
+
payload: {
|
|
114
|
+
key: EventKey.Home,
|
|
115
|
+
ctrlKey: event.ctrlKey
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (canHaveMultipleSelections && comboboxState.inputValue === '' && code === 'Backspace') {
|
|
122
|
+
listboxState.dispatch({
|
|
123
|
+
type: ListboxActionType.SET,
|
|
124
|
+
payload: {
|
|
125
|
+
values: comboboxState.value.slice(0, comboboxState.value.length - 1),
|
|
126
|
+
activedescendant: focusContext.state.activedescendant
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (code === 'ArrowDown' && !hasMultipleLines) {
|
|
131
|
+
if (!isOpen) {
|
|
132
|
+
handleOpenPopover(true);
|
|
133
|
+
}
|
|
134
|
+
focusContext.dispatch({
|
|
135
|
+
type: FocusWithinGroupActionType.DELAY_ACTION,
|
|
136
|
+
payload: {
|
|
137
|
+
type: FocusWithinGroupActionType.KEY_DOWN_ON_LIST,
|
|
138
|
+
payload: {
|
|
139
|
+
key: focusContext.state.selectedId !== null ? EventKey.ArrowDown : EventKey.Home,
|
|
140
|
+
ctrlKey: event.ctrlKey
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
event.preventDefault();
|
|
145
|
+
}
|
|
146
|
+
if (code === 'ArrowUp' && !hasMultipleLines) {
|
|
147
|
+
if (!isOpen) {
|
|
148
|
+
handleOpenPopover(true);
|
|
149
|
+
}
|
|
150
|
+
focusContext.dispatch({
|
|
151
|
+
type: FocusWithinGroupActionType.DELAY_ACTION,
|
|
152
|
+
payload: {
|
|
153
|
+
type: FocusWithinGroupActionType.KEY_DOWN_ON_LIST,
|
|
154
|
+
payload: {
|
|
155
|
+
key: focusContext.state.selectedId !== null ? EventKey.ArrowUp : EventKey.End,
|
|
156
|
+
ctrlKey: event.ctrlKey
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
}
|
|
162
|
+
if (code === 'Enter') {
|
|
163
|
+
var _focusContext$state$a;
|
|
164
|
+
if (isTextField || isTextArea && !event.shiftKey) {
|
|
165
|
+
event.preventDefault();
|
|
166
|
+
}
|
|
167
|
+
if (canHaveMultipleSelections && canHaveFreeText && ((_focusContext$state$a = focusContext.state.activedescendant) === null || _focusContext$state$a === void 0 ? void 0 : _focusContext$state$a[0]) === comboboxState.freeTextItemId && comboboxState.inputValue) {
|
|
168
|
+
listboxState.dispatch({
|
|
169
|
+
type: ListboxActionType.TOGGLE,
|
|
170
|
+
payload: {
|
|
171
|
+
value: comboboxState.inputValue,
|
|
172
|
+
activedescendant: [comboboxState.freeTextItemId, comboboxState.inputValue]
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
handleOpenPopover(false);
|
|
176
|
+
} else if (isOpen && focusContext.state.selectedId) {
|
|
177
|
+
if (canHaveMultipleSelections) {
|
|
178
|
+
var _focusContext$state$a2, _focusContext$state$a3;
|
|
179
|
+
listboxState.dispatch({
|
|
180
|
+
type: ListboxActionType.TOGGLE,
|
|
181
|
+
payload: {
|
|
182
|
+
value: (_focusContext$state$a2 = (_focusContext$state$a3 = focusContext.state.activedescendant) === null || _focusContext$state$a3 === void 0 ? void 0 : _focusContext$state$a3[1]) !== null && _focusContext$state$a2 !== void 0 ? _focusContext$state$a2 : '',
|
|
183
|
+
activedescendant: focusContext.state.activedescendant
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
} else {
|
|
187
|
+
var _focusContext$state$a4, _focusContext$state$a5;
|
|
188
|
+
listboxState.dispatch({
|
|
189
|
+
type: ListboxActionType.SET,
|
|
190
|
+
payload: {
|
|
191
|
+
values: [(_focusContext$state$a4 = (_focusContext$state$a5 = focusContext.state.activedescendant) === null || _focusContext$state$a5 === void 0 ? void 0 : _focusContext$state$a5[1]) !== null && _focusContext$state$a4 !== void 0 ? _focusContext$state$a4 : ''],
|
|
192
|
+
activedescendant: focusContext.state.activedescendant
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
} else if (!event.shiftKey) {
|
|
197
|
+
var _comboboxState$formRe, _comboboxState$formRe2, _comboboxState$submit, _comboboxState$submit2;
|
|
198
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : (_comboboxState$formRe = comboboxState.formRef) === null || _comboboxState$formRe === void 0 ? void 0 : (_comboboxState$formRe2 = _comboboxState$formRe.current) === null || _comboboxState$formRe2 === void 0 ? void 0 : _comboboxState$formRe2.submit();
|
|
199
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : (_comboboxState$submit = comboboxState.submitRef) === null || _comboboxState$submit === void 0 ? void 0 : (_comboboxState$submit2 = _comboboxState$submit.current) === null || _comboboxState$submit2 === void 0 ? void 0 : _comboboxState$submit2.click();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
const handleOpen = () => {
|
|
204
|
+
if (isOpen) {
|
|
205
|
+
handleOpenPopover(false);
|
|
206
|
+
} else {
|
|
207
|
+
var _inputRef$current, _focusContext$state$a6;
|
|
208
|
+
handleOpenPopover(true);
|
|
209
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
210
|
+
focusContext.dispatch({
|
|
211
|
+
type: FocusWithinGroupActionType.DELAY_ACTION,
|
|
212
|
+
payload: {
|
|
213
|
+
type: FocusWithinGroupActionType.FOCUS_ON_LIST,
|
|
214
|
+
payload: {
|
|
215
|
+
id: (_focusContext$state$a6 = focusContext.state.activedescendant) === null || _focusContext$state$a6 === void 0 ? void 0 : _focusContext$state$a6[0],
|
|
216
|
+
filter: _objectSpread2({
|
|
217
|
+
value: ''
|
|
218
|
+
}, comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.filter)
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
const handleFocus = () => {
|
|
225
|
+
var _inputRef$current2;
|
|
226
|
+
if (openOnFocus) {
|
|
227
|
+
handleOpen();
|
|
228
|
+
}
|
|
229
|
+
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.select();
|
|
230
|
+
};
|
|
231
|
+
const handleBlur = () => {
|
|
232
|
+
if (canHaveMultipleSelections) {
|
|
233
|
+
if (!canHaveFreeText) {
|
|
234
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setInputValue('');
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
if (canHaveFreeText) {
|
|
238
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setValue(comboboxState.inputValue);
|
|
239
|
+
} else {
|
|
240
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setInputValue(listboxState.state.selectedValues[0]);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
const handleClear = () => {
|
|
245
|
+
listboxState.dispatch({
|
|
246
|
+
type: ListboxActionType.SET,
|
|
247
|
+
payload: {
|
|
248
|
+
values: [],
|
|
249
|
+
activedescendant: ['', '']
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
useEffect(() => {
|
|
254
|
+
if (canHaveMultipleSelections) {
|
|
255
|
+
focusContext.dispatch({
|
|
256
|
+
type: FocusWithinGroupActionType.FILTER_LIST,
|
|
257
|
+
payload: {
|
|
258
|
+
filter: _objectSpread2({
|
|
259
|
+
value: ''
|
|
260
|
+
}, comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.filter)
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setValue(listboxState.state.selectedValues);
|
|
264
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setInputValue('');
|
|
265
|
+
handleOpenPopover(false);
|
|
266
|
+
} else {
|
|
267
|
+
focusContext.dispatch({
|
|
268
|
+
type: FocusWithinGroupActionType.FILTER_LIST,
|
|
269
|
+
payload: {
|
|
270
|
+
filter: _objectSpread2({
|
|
271
|
+
value: listboxState.state.selectedValues[0] || ''
|
|
272
|
+
}, comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.filter)
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setValue(listboxState.state.selectedValues[0]);
|
|
276
|
+
if (listboxState.state.selectedValues.length) {
|
|
277
|
+
comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.setInputValue(listboxState.state.selectedValues[0]);
|
|
278
|
+
}
|
|
279
|
+
handleOpenPopover(false);
|
|
280
|
+
}
|
|
281
|
+
}, [listboxState.state]);
|
|
282
|
+
if (isTextField || isTextArea) {
|
|
283
|
+
var _props$children, _focusContext$state$a7, _comboboxState$value;
|
|
284
|
+
const _getReferenceProps = getReferenceProps(_objectSpread2(_objectSpread2(_objectSpread2({
|
|
285
|
+
ref: triggerRef
|
|
286
|
+
}, props), renderedChildren.props), {}, {
|
|
287
|
+
children: (_props$children = renderedChildren.props.children) !== null && _props$children !== void 0 ? _props$children : ''
|
|
288
|
+
})),
|
|
289
|
+
{
|
|
290
|
+
'aria-controls': ariaControls,
|
|
291
|
+
'aria-expanded': ariaExpanded,
|
|
292
|
+
'aria-haspopup': ariaHaspopup,
|
|
293
|
+
role
|
|
294
|
+
} = _getReferenceProps,
|
|
295
|
+
forwardedProps = _objectWithoutProperties(_getReferenceProps, _excluded);
|
|
296
|
+
const inputProps = {
|
|
297
|
+
'aria-activedescendant': isOpen ? (_focusContext$state$a7 = focusContext.state.activedescendant) === null || _focusContext$state$a7 === void 0 ? void 0 : _focusContext$state$a7[0] : undefined,
|
|
298
|
+
'aria-controls': ariaControls,
|
|
299
|
+
'aria-expanded': ariaExpanded,
|
|
300
|
+
'aria-haspopup': ariaHaspopup,
|
|
301
|
+
autoComplete: 'off',
|
|
302
|
+
autoCapitalize: 'off',
|
|
303
|
+
autoCorrect: 'off',
|
|
304
|
+
spellCheck: 'false',
|
|
305
|
+
'aria-autocomplete': canHaveMultipleSelections ? 'list' : undefined,
|
|
306
|
+
'aria-description': canHaveMultipleSelections ? format('selected', {
|
|
307
|
+
count: comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.value.length
|
|
308
|
+
}) : undefined,
|
|
309
|
+
onKeyDown: handleKeyDown,
|
|
310
|
+
role
|
|
311
|
+
};
|
|
312
|
+
return /*#__PURE__*/React.cloneElement(renderedChildren, _objectSpread2(_objectSpread2({}, forwardedProps), {}, {
|
|
313
|
+
theme,
|
|
314
|
+
className: classNames(renderedChildren.props.className, comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.triggerClassName),
|
|
315
|
+
isDisabled: comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.isDisabled,
|
|
316
|
+
isInvalid: comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.isInvalid,
|
|
317
|
+
onChange: handleChange,
|
|
318
|
+
onBlur: handleBlur,
|
|
319
|
+
onFocus: handleFocus,
|
|
320
|
+
value: comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.inputValue
|
|
321
|
+
}, isTextField ? {
|
|
322
|
+
inputProps,
|
|
323
|
+
inputRef,
|
|
324
|
+
onClear: handleClear,
|
|
325
|
+
hasClearButton: hideClearButton ? false : {
|
|
326
|
+
isDisabled: (comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.isDisabled) || (comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.value) && (comboboxState === null || comboboxState === void 0 ? void 0 : (_comboboxState$value = comboboxState.value) === null || _comboboxState$value === void 0 ? void 0 : _comboboxState$value.length) === 0,
|
|
327
|
+
onClick: () => inputRef.current.focus()
|
|
328
|
+
},
|
|
329
|
+
pills: canHaveMultipleSelections ? (comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.value).map(v => _objectSpread2({
|
|
330
|
+
isDisabled: comboboxState === null || comboboxState === void 0 ? void 0 : comboboxState.isDisabled,
|
|
331
|
+
children: [v, /*#__PURE__*/React.createElement(IconButton, {
|
|
332
|
+
key: `${id}-pill-${v}-icon-button`,
|
|
333
|
+
icon: mdiClose,
|
|
334
|
+
"aria-label": format('unselect', {
|
|
335
|
+
label: v
|
|
336
|
+
}),
|
|
337
|
+
onClick: event => {
|
|
338
|
+
event.preventDefault();
|
|
339
|
+
listboxState.dispatch({
|
|
340
|
+
type: ListboxActionType.TOGGLE,
|
|
341
|
+
payload: {
|
|
342
|
+
value: v,
|
|
343
|
+
activedescendant: focusContext.state.activedescendant
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
})]
|
|
348
|
+
}, pillProps)) : undefined,
|
|
349
|
+
internal: (value, isDisabled, isInvalid, isRequired) => {
|
|
350
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, typeof renderedChildren.props.internal === 'function' ? renderedChildren.props.internal(value, isDisabled, isInvalid, isRequired) : renderedChildren.props.internal, hideExpandButton ? null : /*#__PURE__*/React.createElement(IconButton, {
|
|
351
|
+
theme: theme,
|
|
352
|
+
"aria-label": format(!isOpen ? 'expand' : 'collapse'),
|
|
353
|
+
color: "grey",
|
|
354
|
+
icon: mdiChevronDown,
|
|
355
|
+
onClick: handleOpen,
|
|
356
|
+
isDisabled: isDisabled,
|
|
357
|
+
tabIndex: -1,
|
|
358
|
+
iconProps: {
|
|
359
|
+
style: {
|
|
360
|
+
transition: 'transform 300ms ease-out',
|
|
361
|
+
transform: `rotate(${isOpen ? '-180deg' : '0'})`
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}));
|
|
365
|
+
}
|
|
366
|
+
} : {
|
|
367
|
+
textareaProps: inputProps,
|
|
368
|
+
textareaRef: inputRef
|
|
369
|
+
}));
|
|
370
|
+
}
|
|
371
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, renderedChildren);
|
|
372
|
+
});
|
|
373
|
+
ComboboxTrigger.className = CLASSNAME;
|
|
374
|
+
ComboboxTrigger.displayName = COMPONENT_NAME;
|
|
375
|
+
|
|
376
|
+
export { ComboboxTrigger as C };
|
|
377
|
+
//# sourceMappingURL=ComboboxTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComboboxTrigger.js","sources":["../../src/components/combobox/intl/index.ts","../../src/components/combobox-trigger/ComboboxTrigger.tsx"],"sourcesContent":["import enUS from './en-US.json';\nimport frFR from './fr-FR.json';\n\nexport default {\n 'en-US': enUS,\n 'fr-FR': frFR,\n};\n","import React, { KeyboardEvent, ReactElement, forwardRef, useContext, useEffect, useRef } from 'react';\n\nimport { useId, useMessageFormatter } from '@redsift/design-system';\nimport intlMessages from '../combobox/intl';\n\nimport {\n Comp,\n EventKey,\n FocusWithinGroupActionType,\n FocusWithinGroupContext,\n IconButton,\n ListboxActionType,\n ListboxContext,\n isComponent,\n useTheme,\n} from '@redsift/design-system';\nimport { ComboboxTriggerProps } from './types';\nimport { useMergeRefs, usePopoverContext } from '@redsift/popovers';\nimport { ComboboxContext } from '../combobox/context';\nimport { mdiChevronDown, mdiClose } from '@redsift/icons';\nimport { ComboboxSelectionMode, ComboboxVariant } from '../combobox/types';\nimport classNames from 'classnames';\n\nconst COMPONENT_NAME = 'ComboboxTrigger';\nconst CLASSNAME = 'redsift-combobox-trigger';\n\n/**\n * The ComboboxTrigger component.\n */\nexport const ComboboxTrigger: Comp<ComboboxTriggerProps, HTMLButtonElement> = forwardRef((props, ref) => {\n const [id] = useId();\n const { children, hideExpandButton, openOnFocus, hideClearButton, pillProps } = props;\n\n const format = useMessageFormatter(intlMessages);\n\n const { getReferenceProps, isOpen, handleOpen: handleOpenPopover, refs } = usePopoverContext();\n const childrenRef = (children as any).ref;\n const triggerRef = useMergeRefs([refs.setReference, ref, childrenRef]);\n\n const focusContext = useContext(FocusWithinGroupContext);\n const comboboxState = useContext(ComboboxContext);\n const listboxState = useContext(ListboxContext);\n const theme = useTheme();\n\n const canHaveMultipleSelections = comboboxState?.selectionMode === ComboboxSelectionMode.multiple;\n const canHaveFreeText = comboboxState?.variant === ComboboxVariant.suggestions;\n\n const renderedChildren =\n typeof children === 'function' ? children({ value: comboboxState?.value, isOpen }) : children;\n\n const isTextArea = isComponent('TextArea')(renderedChildren);\n const isTextField = isComponent('TextField')(renderedChildren);\n const hasMultipleLines = isTextArea && comboboxState?.inputValue.includes('\\n');\n\n const _inputRef = useRef<HTMLInputElement>();\n const inputRef = renderedChildren.props.inputRef ?? _inputRef;\n\n const handleChange = (value?: string) => {\n focusContext.dispatch({\n type: FocusWithinGroupActionType.FILTER_LIST,\n payload: { filter: { value: value || '', ...comboboxState?.filter! } },\n });\n\n comboboxState?.setInputValue(value!);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const code = event.code;\n\n if (code === 'Escape' || code === 'Tab') {\n if (isOpen) {\n handleOpenPopover(false);\n }\n\n if (canHaveMultipleSelections && canHaveFreeText && comboboxState.inputValue) {\n listboxState.dispatch({\n type: ListboxActionType.TOGGLE,\n payload: {\n value: comboboxState.inputValue,\n activedescendant: [comboboxState.freeTextItemId as string, comboboxState.inputValue],\n },\n });\n }\n }\n\n if ((/^.$/.test(event.key) || code === 'Backspace') && !hasMultipleLines) {\n if (!isOpen) {\n handleOpenPopover(true);\n }\n\n if (canHaveMultipleSelections && canHaveFreeText) {\n focusContext.dispatch({\n type: FocusWithinGroupActionType.DELAY_ACTION,\n payload: {\n type: FocusWithinGroupActionType.KEY_DOWN_ON_LIST,\n payload: {\n key: EventKey.Home,\n ctrlKey: event.ctrlKey,\n },\n },\n });\n }\n }\n\n if (canHaveMultipleSelections && comboboxState.inputValue === '' && code === 'Backspace') {\n listboxState.dispatch({\n type: ListboxActionType.SET,\n payload: {\n values: (comboboxState.value as string[]).slice(0, (comboboxState.value as string[]).length - 1),\n activedescendant: focusContext.state.activedescendant,\n },\n });\n }\n\n if (code === 'ArrowDown' && !hasMultipleLines) {\n if (!isOpen) {\n handleOpenPopover(true);\n }\n focusContext.dispatch({\n type: FocusWithinGroupActionType.DELAY_ACTION,\n payload: {\n type: FocusWithinGroupActionType.KEY_DOWN_ON_LIST,\n payload: {\n key: focusContext.state.selectedId !== null ? EventKey.ArrowDown : EventKey.Home,\n ctrlKey: event.ctrlKey,\n },\n },\n });\n event.preventDefault();\n }\n\n if (code === 'ArrowUp' && !hasMultipleLines) {\n if (!isOpen) {\n handleOpenPopover(true);\n }\n focusContext.dispatch({\n type: FocusWithinGroupActionType.DELAY_ACTION,\n payload: {\n type: FocusWithinGroupActionType.KEY_DOWN_ON_LIST,\n payload: {\n key: focusContext.state.selectedId !== null ? EventKey.ArrowUp : EventKey.End,\n ctrlKey: event.ctrlKey,\n },\n },\n });\n event.preventDefault();\n }\n\n if (code === 'Enter') {\n if (isTextField || (isTextArea && !event.shiftKey)) {\n event.preventDefault();\n }\n\n if (\n canHaveMultipleSelections &&\n canHaveFreeText &&\n focusContext.state.activedescendant?.[0] === comboboxState.freeTextItemId &&\n comboboxState.inputValue\n ) {\n listboxState.dispatch({\n type: ListboxActionType.TOGGLE,\n payload: {\n value: comboboxState.inputValue,\n activedescendant: [comboboxState.freeTextItemId as string, comboboxState.inputValue],\n },\n });\n handleOpenPopover(false);\n } else if (isOpen && focusContext.state.selectedId) {\n if (canHaveMultipleSelections) {\n listboxState.dispatch({\n type: ListboxActionType.TOGGLE,\n payload: {\n value: focusContext.state.activedescendant?.[1] ?? '',\n activedescendant: focusContext.state.activedescendant,\n },\n });\n } else {\n listboxState.dispatch({\n type: ListboxActionType.SET,\n payload: {\n values: [focusContext.state.activedescendant?.[1] ?? ''],\n activedescendant: focusContext.state.activedescendant,\n },\n });\n }\n } else if (!event.shiftKey) {\n comboboxState?.formRef?.current?.submit();\n comboboxState?.submitRef?.current?.click();\n }\n }\n };\n\n const handleOpen = () => {\n if (isOpen) {\n handleOpenPopover(false);\n } else {\n handleOpenPopover(true);\n inputRef.current?.focus();\n focusContext.dispatch({\n type: FocusWithinGroupActionType.DELAY_ACTION,\n payload: {\n type: FocusWithinGroupActionType.FOCUS_ON_LIST,\n payload: {\n id: focusContext.state.activedescendant?.[0]!,\n filter: { value: '', ...comboboxState?.filter! },\n },\n },\n });\n }\n };\n\n const handleFocus = () => {\n if (openOnFocus) {\n handleOpen();\n }\n inputRef.current?.select();\n };\n\n const handleBlur = () => {\n if (canHaveMultipleSelections) {\n if (!canHaveFreeText) {\n comboboxState?.setInputValue('');\n }\n } else {\n if (canHaveFreeText) {\n comboboxState?.setValue(comboboxState.inputValue);\n } else {\n comboboxState?.setInputValue(listboxState.state.selectedValues[0]);\n }\n }\n };\n\n const handleClear = () => {\n listboxState.dispatch({\n type: ListboxActionType.SET,\n payload: {\n values: [],\n activedescendant: ['', ''],\n },\n });\n };\n\n useEffect(() => {\n if (canHaveMultipleSelections) {\n focusContext.dispatch({\n type: FocusWithinGroupActionType.FILTER_LIST,\n payload: { filter: { value: '', ...comboboxState?.filter! } },\n });\n comboboxState?.setValue(listboxState.state.selectedValues);\n comboboxState?.setInputValue('');\n handleOpenPopover(false);\n } else {\n focusContext.dispatch({\n type: FocusWithinGroupActionType.FILTER_LIST,\n payload: { filter: { value: listboxState.state.selectedValues[0] || '', ...comboboxState?.filter! } },\n });\n comboboxState?.setValue(listboxState.state.selectedValues[0]);\n if (listboxState.state.selectedValues.length) {\n comboboxState?.setInputValue(listboxState.state.selectedValues[0]);\n }\n handleOpenPopover(false);\n }\n }, [listboxState.state]);\n\n if (isTextField || isTextArea) {\n const {\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n role,\n ...forwardedProps\n } = getReferenceProps({\n ref: triggerRef,\n ...props,\n ...(renderedChildren as ReactElement).props,\n children: (renderedChildren as ReactElement).props.children ?? '',\n });\n\n const inputProps = {\n 'aria-activedescendant': isOpen ? focusContext.state.activedescendant?.[0] : undefined,\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHaspopup,\n autoComplete: 'off',\n autoCapitalize: 'off',\n autoCorrect: 'off',\n spellCheck: 'false',\n 'aria-autocomplete': canHaveMultipleSelections ? 'list' : undefined,\n 'aria-description': canHaveMultipleSelections\n ? format('selected', { count: comboboxState?.value.length })\n : undefined,\n onKeyDown: handleKeyDown,\n role,\n };\n\n return React.cloneElement(renderedChildren, {\n ...forwardedProps,\n theme,\n className: classNames((renderedChildren as ReactElement).props.className, comboboxState?.triggerClassName),\n isDisabled: comboboxState?.isDisabled,\n isInvalid: comboboxState?.isInvalid,\n onChange: handleChange,\n onBlur: handleBlur,\n onFocus: handleFocus,\n value: comboboxState?.inputValue,\n ...(isTextField\n ? {\n inputProps,\n inputRef,\n onClear: handleClear,\n hasClearButton: hideClearButton\n ? false\n : {\n isDisabled: comboboxState?.isDisabled || (comboboxState?.value && comboboxState?.value?.length === 0),\n onClick: () => inputRef.current.focus(),\n },\n pills: canHaveMultipleSelections\n ? (comboboxState?.value as string[]).map((v) => ({\n isDisabled: comboboxState?.isDisabled,\n children: [\n v,\n <IconButton\n key={`${id}-pill-${v}-icon-button`}\n icon={mdiClose}\n aria-label={format('unselect', { label: v })}\n onClick={(event) => {\n event.preventDefault();\n listboxState.dispatch({\n type: ListboxActionType.TOGGLE,\n payload: {\n value: v,\n activedescendant: focusContext.state.activedescendant,\n },\n });\n }}\n />,\n ],\n ...pillProps,\n }))\n : undefined,\n internal: (value?: string, isDisabled?: boolean, isInvalid?: boolean, isRequired?: boolean) => {\n return (\n <>\n {typeof (renderedChildren as ReactElement).props.internal === 'function'\n ? (renderedChildren as ReactElement).props.internal(value, isDisabled, isInvalid, isRequired)\n : (renderedChildren as ReactElement).props.internal}\n {hideExpandButton ? null : (\n <IconButton\n theme={theme}\n aria-label={format(!isOpen ? 'expand' : 'collapse')}\n color=\"grey\"\n icon={mdiChevronDown}\n onClick={handleOpen}\n isDisabled={isDisabled}\n tabIndex={-1}\n iconProps={{\n style: {\n transition: 'transform 300ms ease-out',\n transform: `rotate(${isOpen ? '-180deg' : '0'})`,\n },\n }}\n />\n )}\n </>\n );\n },\n }\n : {\n textareaProps: inputProps,\n textareaRef: inputRef,\n }),\n });\n }\n\n return <>{renderedChildren}</>;\n});\nComboboxTrigger.className = CLASSNAME;\nComboboxTrigger.displayName = COMPONENT_NAME;\n"],"names":["enUS","frFR","COMPONENT_NAME","CLASSNAME","ComboboxTrigger","forwardRef","props","ref","_renderedChildren$pro","id","useId","children","hideExpandButton","openOnFocus","hideClearButton","pillProps","format","useMessageFormatter","intlMessages","getReferenceProps","isOpen","handleOpen","handleOpenPopover","refs","usePopoverContext","childrenRef","triggerRef","useMergeRefs","setReference","focusContext","useContext","FocusWithinGroupContext","comboboxState","ComboboxContext","listboxState","ListboxContext","theme","useTheme","canHaveMultipleSelections","selectionMode","ComboboxSelectionMode","multiple","canHaveFreeText","variant","ComboboxVariant","suggestions","renderedChildren","value","isTextArea","isComponent","isTextField","hasMultipleLines","inputValue","includes","_inputRef","useRef","inputRef","handleChange","dispatch","type","FocusWithinGroupActionType","FILTER_LIST","payload","filter","_objectSpread","setInputValue","handleKeyDown","event","code","ListboxActionType","TOGGLE","activedescendant","freeTextItemId","test","key","DELAY_ACTION","KEY_DOWN_ON_LIST","EventKey","Home","ctrlKey","SET","values","slice","length","state","selectedId","ArrowDown","preventDefault","ArrowUp","End","_focusContext$state$a","shiftKey","_focusContext$state$a2","_focusContext$state$a3","_focusContext$state$a4","_focusContext$state$a5","_comboboxState$formRe","_comboboxState$formRe2","_comboboxState$submit","_comboboxState$submit2","formRef","current","submit","submitRef","click","_inputRef$current","_focusContext$state$a6","focus","FOCUS_ON_LIST","handleFocus","_inputRef$current2","select","handleBlur","setValue","selectedValues","handleClear","useEffect","_props$children","_focusContext$state$a7","_comboboxState$value","_getReferenceProps","ariaControls","ariaExpanded","ariaHaspopup","role","forwardedProps","_objectWithoutProperties","_excluded","inputProps","undefined","autoComplete","autoCapitalize","autoCorrect","spellCheck","count","onKeyDown","React","cloneElement","className","classNames","triggerClassName","isDisabled","isInvalid","onChange","onBlur","onFocus","onClear","hasClearButton","onClick","pills","map","v","createElement","IconButton","icon","mdiClose","label","internal","isRequired","Fragment","color","mdiChevronDown","tabIndex","iconProps","style","transition","transform","textareaProps","textareaRef","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { a as _extends, _ as _objectWithoutProperties } from './_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React, { useEffect, useCallback, forwardRef, useContext, useRef } from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { usePopoverContext, useMergeRefs } from '@redsift/popovers';
|
|
5
|
+
import { useFocusOnListItem, FocusWithinGroupContext, RenderedListboxItem, useId, isComponent, useTheme, ButtonsColorPalette, ConditionalWrapper, StyledGradientBorder, StyledItem } from '@redsift/design-system';
|
|
6
|
+
|
|
7
|
+
function useMenuItem(props) {
|
|
8
|
+
const {
|
|
9
|
+
domElementRef,
|
|
10
|
+
id,
|
|
11
|
+
isDisabled,
|
|
12
|
+
onClick,
|
|
13
|
+
isLinkMenuItem,
|
|
14
|
+
linkRef,
|
|
15
|
+
hasPopup
|
|
16
|
+
} = props;
|
|
17
|
+
const {
|
|
18
|
+
handleOpen,
|
|
19
|
+
hideInsteadOfClose,
|
|
20
|
+
setHideInsteadOfClose
|
|
21
|
+
} = usePopoverContext();
|
|
22
|
+
const {
|
|
23
|
+
tabIndex,
|
|
24
|
+
isFocused,
|
|
25
|
+
handleKeyDown: handleFocusKeyDown,
|
|
26
|
+
handleClick: handleFocusClick
|
|
27
|
+
} = useFocusOnListItem({
|
|
28
|
+
domElementRef,
|
|
29
|
+
isDisabled: isDisabled,
|
|
30
|
+
id
|
|
31
|
+
});
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (hasPopup && !hideInsteadOfClose) {
|
|
34
|
+
setHideInsteadOfClose === null || setHideInsteadOfClose === void 0 ? void 0 : setHideInsteadOfClose(true);
|
|
35
|
+
}
|
|
36
|
+
}, [hasPopup, hideInsteadOfClose, setHideInsteadOfClose]);
|
|
37
|
+
const handleKeyDown = useCallback(event => {
|
|
38
|
+
const code = event.code;
|
|
39
|
+
if (code === 'Enter' || code === 'Space') {
|
|
40
|
+
if (isLinkMenuItem) {
|
|
41
|
+
var _linkRef$current;
|
|
42
|
+
linkRef === null || linkRef === void 0 ? void 0 : (_linkRef$current = linkRef.current) === null || _linkRef$current === void 0 ? void 0 : _linkRef$current.click();
|
|
43
|
+
} else {
|
|
44
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
handleFocusKeyDown(event);
|
|
48
|
+
handleOpen(false);
|
|
49
|
+
}, []);
|
|
50
|
+
const handleClick = useCallback(() => {
|
|
51
|
+
handleFocusClick();
|
|
52
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
53
|
+
handleOpen(false);
|
|
54
|
+
}, []);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (isFocused && domElementRef.current) {
|
|
57
|
+
var _current;
|
|
58
|
+
(_current = domElementRef.current) === null || _current === void 0 ? void 0 : _current.focus();
|
|
59
|
+
}
|
|
60
|
+
}, [isFocused]);
|
|
61
|
+
return {
|
|
62
|
+
tabIndex,
|
|
63
|
+
isFocused,
|
|
64
|
+
isDisabled,
|
|
65
|
+
handleKeyDown,
|
|
66
|
+
handleClick
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const _excluded = ["borderRadius", "children", "className", "color", "hasBorder", "id", "isActive", "isDisabled", "isHovered", "theme", "onClick"];
|
|
71
|
+
const COMPONENT_NAME = 'Item';
|
|
72
|
+
const CLASSNAME = 'redsift-item';
|
|
73
|
+
const RenderedMenuItem = /*#__PURE__*/forwardRef((props, ref) => {
|
|
74
|
+
const {
|
|
75
|
+
borderRadius = '0',
|
|
76
|
+
children,
|
|
77
|
+
className,
|
|
78
|
+
color: propsColor,
|
|
79
|
+
hasBorder,
|
|
80
|
+
id: propsId,
|
|
81
|
+
isActive,
|
|
82
|
+
isDisabled: propsIsDisabled,
|
|
83
|
+
isHovered,
|
|
84
|
+
theme: propsTheme,
|
|
85
|
+
onClick
|
|
86
|
+
} = props,
|
|
87
|
+
forwardedProps = _objectWithoutProperties(props, _excluded);
|
|
88
|
+
const [_id] = useId();
|
|
89
|
+
const id = propsId !== null && propsId !== void 0 ? propsId : _id;
|
|
90
|
+
const _ref = useRef();
|
|
91
|
+
const divRef = useMergeRefs([ref, _ref]);
|
|
92
|
+
const linkRef = useRef(null);
|
|
93
|
+
const isLinkMenuItem = isComponent('Link')(children);
|
|
94
|
+
const {
|
|
95
|
+
tabIndex,
|
|
96
|
+
isFocused,
|
|
97
|
+
isDisabled,
|
|
98
|
+
handleKeyDown,
|
|
99
|
+
handleClick
|
|
100
|
+
} = useMenuItem({
|
|
101
|
+
domElementRef: _ref,
|
|
102
|
+
id,
|
|
103
|
+
isDisabled: propsIsDisabled,
|
|
104
|
+
onClick: onClick,
|
|
105
|
+
isLinkMenuItem,
|
|
106
|
+
linkRef,
|
|
107
|
+
hasPopup: props['aria-haspopup'] !== undefined
|
|
108
|
+
});
|
|
109
|
+
const theme = useTheme(propsTheme);
|
|
110
|
+
const color = Object.values(ButtonsColorPalette).includes(propsColor) ? propsColor : 'primary';
|
|
111
|
+
const isGradient = color === ButtonsColorPalette.radar;
|
|
112
|
+
return /*#__PURE__*/React.createElement(ConditionalWrapper, {
|
|
113
|
+
condition: isGradient,
|
|
114
|
+
wrapper: children => /*#__PURE__*/React.createElement(StyledGradientBorder, {
|
|
115
|
+
$borderRadius: borderRadius,
|
|
116
|
+
$color: color,
|
|
117
|
+
$isActive: isActive,
|
|
118
|
+
$isDisabled: isDisabled,
|
|
119
|
+
$isHovered: isHovered,
|
|
120
|
+
$theme: theme,
|
|
121
|
+
width: "auto"
|
|
122
|
+
}, children)
|
|
123
|
+
}, /*#__PURE__*/React.createElement(StyledItem, _extends({
|
|
124
|
+
as: "li",
|
|
125
|
+
role: isLinkMenuItem ? 'none' : 'menuitem'
|
|
126
|
+
}, forwardedProps, {
|
|
127
|
+
id: id,
|
|
128
|
+
$borderRadius: borderRadius,
|
|
129
|
+
$color: color,
|
|
130
|
+
$hasBorder: hasBorder,
|
|
131
|
+
$hasCheckbox: false,
|
|
132
|
+
$isActive: isActive,
|
|
133
|
+
$isDisabled: isDisabled,
|
|
134
|
+
$isGradient: isGradient,
|
|
135
|
+
$isHovered: isHovered || isFocused,
|
|
136
|
+
$theme: theme,
|
|
137
|
+
"aria-disabled": isDisabled,
|
|
138
|
+
className: classNames(Item.className, className),
|
|
139
|
+
onClick: isDisabled ? undefined : handleClick,
|
|
140
|
+
ref: divRef,
|
|
141
|
+
onKeyDown: handleKeyDown,
|
|
142
|
+
tabIndex: tabIndex
|
|
143
|
+
}), isLinkMenuItem ? /*#__PURE__*/React.cloneElement(children, {
|
|
144
|
+
role: 'menuitem',
|
|
145
|
+
ref: linkRef
|
|
146
|
+
}) : children));
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* The Item component.
|
|
151
|
+
*/
|
|
152
|
+
const Item = /*#__PURE__*/forwardRef((props, ref) => {
|
|
153
|
+
const {
|
|
154
|
+
value
|
|
155
|
+
} = props;
|
|
156
|
+
const focusContext = useContext(FocusWithinGroupContext);
|
|
157
|
+
const isListbox = focusContext.state.listRole === 'listbox';
|
|
158
|
+
if (!focusContext.state.filter) {
|
|
159
|
+
return isListbox ? /*#__PURE__*/React.createElement(RenderedListboxItem, _extends({}, props, {
|
|
160
|
+
value: props.value,
|
|
161
|
+
ref: ref
|
|
162
|
+
})) : /*#__PURE__*/React.createElement(RenderedMenuItem, _extends({}, props, {
|
|
163
|
+
ref: ref
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
const {
|
|
167
|
+
value: filterValue,
|
|
168
|
+
type,
|
|
169
|
+
caseSensitive
|
|
170
|
+
} = focusContext.state.filter;
|
|
171
|
+
if (!filterValue) {
|
|
172
|
+
return isListbox ? /*#__PURE__*/React.createElement(RenderedListboxItem, _extends({}, props, {
|
|
173
|
+
value: props.value,
|
|
174
|
+
ref: ref
|
|
175
|
+
})) : /*#__PURE__*/React.createElement(RenderedMenuItem, _extends({}, props, {
|
|
176
|
+
ref: ref
|
|
177
|
+
}));
|
|
178
|
+
} else if (caseSensitive && (type === 'startsWith' && value.startsWith(filterValue) || type === 'contains' && value.includes(filterValue) || type === 'endsWith' && value.endsWith(filterValue))) {
|
|
179
|
+
return isListbox ? /*#__PURE__*/React.createElement(RenderedListboxItem, _extends({}, props, {
|
|
180
|
+
value: props.value,
|
|
181
|
+
ref: ref
|
|
182
|
+
})) : /*#__PURE__*/React.createElement(RenderedMenuItem, _extends({}, props, {
|
|
183
|
+
ref: ref
|
|
184
|
+
}));
|
|
185
|
+
} else if (!caseSensitive && (type === 'startsWith' && value.toLowerCase().startsWith(filterValue.toLowerCase()) || type === 'contains' && value.toLowerCase().includes(filterValue.toLowerCase()) || type === 'endsWith' && value.toLowerCase().endsWith(filterValue.toLowerCase()))) {
|
|
186
|
+
return isListbox ? /*#__PURE__*/React.createElement(RenderedListboxItem, _extends({}, props, {
|
|
187
|
+
value: props.value,
|
|
188
|
+
ref: ref
|
|
189
|
+
})) : /*#__PURE__*/React.createElement(RenderedMenuItem, _extends({}, props, {
|
|
190
|
+
ref: ref
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
return null;
|
|
194
|
+
});
|
|
195
|
+
Item.className = CLASSNAME;
|
|
196
|
+
Item.displayName = COMPONENT_NAME;
|
|
197
|
+
|
|
198
|
+
export { Item as I };
|
|
199
|
+
//# sourceMappingURL=Item2.js.map
|