@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.
Files changed (71) hide show
  1. package/_internal/Combobox2.js +150 -0
  2. package/_internal/Combobox2.js.map +1 -0
  3. package/_internal/ComboboxContent.js +70 -0
  4. package/_internal/ComboboxContent.js.map +1 -0
  5. package/_internal/ComboboxContentFooter.js +36 -0
  6. package/_internal/ComboboxContentFooter.js.map +1 -0
  7. package/_internal/ComboboxContentHeader.js +36 -0
  8. package/_internal/ComboboxContentHeader.js.map +1 -0
  9. package/_internal/ComboboxContentListbox.js +123 -0
  10. package/_internal/ComboboxContentListbox.js.map +1 -0
  11. package/_internal/ComboboxTrigger.js +377 -0
  12. package/_internal/ComboboxTrigger.js.map +1 -0
  13. package/_internal/Item2.js +199 -0
  14. package/_internal/Item2.js.map +1 -0
  15. package/_internal/MenuButton.js +75 -0
  16. package/_internal/MenuButton.js.map +1 -0
  17. package/_internal/MenuButtonContent.js +68 -0
  18. package/_internal/MenuButtonContent.js.map +1 -0
  19. package/_internal/MenuButtonContentFooter.js +36 -0
  20. package/_internal/MenuButtonContentFooter.js.map +1 -0
  21. package/_internal/MenuButtonContentHeader.js +36 -0
  22. package/_internal/MenuButtonContentHeader.js.map +1 -0
  23. package/_internal/MenuButtonContentMenu.js +41 -0
  24. package/_internal/MenuButtonContentMenu.js.map +1 -0
  25. package/_internal/MenuButtonTrigger.js +168 -0
  26. package/_internal/MenuButtonTrigger.js.map +1 -0
  27. package/_internal/Select2.js +115 -0
  28. package/_internal/Select2.js.map +1 -0
  29. package/_internal/SelectContent.js +62 -0
  30. package/_internal/SelectContent.js.map +1 -0
  31. package/_internal/SelectTrigger.js +250 -0
  32. package/_internal/SelectTrigger.js.map +1 -0
  33. package/_internal/_rollupPluginBabelHelpers.js +93 -0
  34. package/_internal/_rollupPluginBabelHelpers.js.map +1 -0
  35. package/_internal/combobox-content-footer.js +2 -0
  36. package/_internal/combobox-content-footer.js.map +1 -0
  37. package/_internal/combobox-content-header.js +2 -0
  38. package/_internal/combobox-content-header.js.map +1 -0
  39. package/_internal/combobox-content-listbox.js +2 -0
  40. package/_internal/combobox-content-listbox.js.map +1 -0
  41. package/_internal/combobox-content.js +2 -0
  42. package/_internal/combobox-content.js.map +1 -0
  43. package/_internal/combobox-trigger.js +2 -0
  44. package/_internal/combobox-trigger.js.map +1 -0
  45. package/_internal/combobox.js +3 -0
  46. package/_internal/combobox.js.map +1 -0
  47. package/_internal/item.js +2 -0
  48. package/_internal/item.js.map +1 -0
  49. package/_internal/menu-button-content-footer.js +2 -0
  50. package/_internal/menu-button-content-footer.js.map +1 -0
  51. package/_internal/menu-button-content-header.js +2 -0
  52. package/_internal/menu-button-content-header.js.map +1 -0
  53. package/_internal/menu-button-content-menu.js +2 -0
  54. package/_internal/menu-button-content-menu.js.map +1 -0
  55. package/_internal/menu-button-content.js +2 -0
  56. package/_internal/menu-button-content.js.map +1 -0
  57. package/_internal/menu-button-trigger.js +2 -0
  58. package/_internal/menu-button-trigger.js.map +1 -0
  59. package/_internal/menu-button.js +2 -0
  60. package/_internal/menu-button.js.map +1 -0
  61. package/_internal/select-content.js +2 -0
  62. package/_internal/select-content.js.map +1 -0
  63. package/_internal/select-trigger.js +2 -0
  64. package/_internal/select-trigger.js.map +1 -0
  65. package/_internal/select.js +2 -0
  66. package/_internal/select.js.map +1 -0
  67. package/_internal/types.js +26 -0
  68. package/_internal/types.js.map +1 -0
  69. package/index.js +17 -1822
  70. package/index.js.map +1 -1
  71. 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