@peculiar/react-components 0.0.2-alpha.224 → 0.0.2-alpha.228

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 (54) hide show
  1. package/dist/cjs/Menu/index.js.map +1 -1
  2. package/dist/cjs/Menu/menu.js +19 -2
  3. package/dist/cjs/Menu/menu.js.map +1 -1
  4. package/dist/cjs/Popover/popover.js +1 -3
  5. package/dist/cjs/Popover/popover.js.map +1 -1
  6. package/dist/cjs/SelectPicker/index.js +6 -0
  7. package/dist/cjs/SelectPicker/index.js.map +1 -0
  8. package/dist/cjs/SelectPicker/select_picker.js +438 -0
  9. package/dist/cjs/SelectPicker/select_picker.js.map +1 -0
  10. package/dist/cjs/hooks/index.js +3 -1
  11. package/dist/cjs/hooks/index.js.map +1 -1
  12. package/dist/cjs/hooks/use_window_event_listener.js +22 -0
  13. package/dist/cjs/hooks/use_window_event_listener.js.map +1 -0
  14. package/dist/cjs/index.js +1 -1
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/esm/Menu/index.js.map +1 -1
  17. package/dist/esm/Menu/menu.js +19 -2
  18. package/dist/esm/Menu/menu.js.map +1 -1
  19. package/dist/esm/Popover/popover.js +1 -3
  20. package/dist/esm/Popover/popover.js.map +1 -1
  21. package/dist/esm/SelectPicker/index.js +2 -0
  22. package/dist/esm/SelectPicker/index.js.map +1 -0
  23. package/dist/esm/SelectPicker/select_picker.js +415 -0
  24. package/dist/esm/SelectPicker/select_picker.js.map +1 -0
  25. package/dist/esm/hooks/index.js +1 -0
  26. package/dist/esm/hooks/index.js.map +1 -1
  27. package/dist/esm/hooks/use_window_event_listener.js +15 -0
  28. package/dist/esm/hooks/use_window_event_listener.js.map +1 -0
  29. package/dist/esm/index.js +1 -1
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esnext/Menu/index.js.map +1 -1
  32. package/dist/esnext/Menu/menu.js +8 -2
  33. package/dist/esnext/Menu/menu.js.map +1 -1
  34. package/dist/esnext/Popover/popover.js +1 -3
  35. package/dist/esnext/Popover/popover.js.map +1 -1
  36. package/dist/esnext/SelectPicker/index.js +2 -0
  37. package/dist/esnext/SelectPicker/index.js.map +1 -0
  38. package/dist/esnext/SelectPicker/select_picker.js +411 -0
  39. package/dist/esnext/SelectPicker/select_picker.js.map +1 -0
  40. package/dist/esnext/hooks/index.js +1 -0
  41. package/dist/esnext/hooks/index.js.map +1 -1
  42. package/dist/esnext/hooks/use_window_event_listener.js +14 -0
  43. package/dist/esnext/hooks/use_window_event_listener.js.map +1 -0
  44. package/dist/esnext/index.js +1 -1
  45. package/dist/esnext/index.js.map +1 -1
  46. package/dist/types/Menu/index.d.ts +1 -1
  47. package/dist/types/Menu/menu.d.ts +5 -2
  48. package/dist/types/SelectPicker/index.d.ts +1 -0
  49. package/dist/types/SelectPicker/select_picker.d.ts +77 -0
  50. package/dist/types/TextField/text_field.d.ts +1 -1
  51. package/dist/types/hooks/index.d.ts +1 -0
  52. package/dist/types/hooks/use_window_event_listener.d.ts +2 -0
  53. package/dist/types/index.d.ts +1 -1
  54. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/Popover/popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,EAAc,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AA+BpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,4BAA4B;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAA+B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACnF,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,UAAU,EACV,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CACtC,QAAQ,EACR,aAAa,EACb,EAAE,SAAS,EAAE,CACd,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,oBACA,UAAU,IACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE;YACb,SAAS,EAAE,IAAI;SAChB;QAED,oBAAC,IAAI,IACH,EAAE,EAAE,IAAI,EACR,GAAG,EAAE,gBAAgB;YAErB,oBAAC,GAAG,oBACE,KAAK,IACT,YAAY,EAAE,CAAC,EACf,UAAU,EAAC,OAAO,EAClB,QAAQ,EAAE,CAAC,CAAC,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,IAChB,UAAU,CAAC,MAAM,IACrB,SAAS,EAAE,EAAE,CAAC;oBACZ,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;oBACpB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS;iBACzB,CAAC,KAED,QAAQ,CACL,CACD,CACD,CACT,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;AAEhC,OAAO,CAAC,YAAY,GAAG;IACrB,SAAS,EAAE,YAAY;CACxB,CAAC"}
1
+ {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/Popover/popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,EAAc,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AA+BpC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,4BAA4B;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAA+B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACnF,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,UAAU,EACV,GAAG,KAAK,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CACtC,QAAQ,EACR,aAAa,EACb,EAAE,SAAS,EAAE,CACd,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,oBACA,UAAU,IACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE;YACb,SAAS,EAAE,IAAI;SAChB;QAED,oBAAC,IAAI,IACH,EAAE,EAAE,IAAI,EACR,GAAG,EAAE,gBAAgB;YAErB,oBAAC,GAAG,oBACE,KAAK,IACT,YAAY,EAAE,CAAC,EACf,UAAU,EAAC,OAAO,EAClB,QAAQ,EAAE,CAAC,CAAC,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,IAChB,UAAU,CAAC,MAAM,IACrB,SAAS,EAAE,EAAE,CAAC;oBACZ,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;oBACpB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS;iBACzB,CAAC,KAED,QAAQ,CACL,CACD,CACD,CACT,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;AAEhC,OAAO,CAAC,YAAY,GAAG;IACrB,SAAS,EAAE,YAAY;CACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SelectPicker } from './select_picker';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/SelectPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,411 @@
1
+ import React, { useState, useRef, useEffect, useCallback, } from 'react';
2
+ import { Popover } from '../Popover';
3
+ import { TextField } from '../TextField';
4
+ import { Typography } from '../Typography';
5
+ import { Box } from '../Box';
6
+ import { ArrowDropDownIcon } from '../icons';
7
+ import { useControllableState } from '../hooks';
8
+ import { cx, css } from '../styles';
9
+ const defaultFilterOptions = (options, value, getOptionLabel) => {
10
+ if (!options || !options.length) {
11
+ return [];
12
+ }
13
+ return options.filter((option) => {
14
+ const labelValue = getOptionLabel(option).trim().toLowerCase();
15
+ const searchValue = value.trim().toLowerCase();
16
+ return labelValue.includes(searchValue);
17
+ });
18
+ };
19
+ /**
20
+ * Styles.
21
+ */
22
+ const stylesRoot = () => css({
23
+ label: 'SelectPicker-root',
24
+ position: 'relative',
25
+ });
26
+ const stylesInput = () => css({
27
+ label: 'SelectPicker-input',
28
+ outline: 'none',
29
+ boxSizing: 'border-box',
30
+ width: '100%',
31
+ borderRadius: '4px',
32
+ padding: '0 calc(var(--pv-size-base-2) + 24px) 0 var(--pv-size-base-2)',
33
+ backgroundColor: 'var(--pv-color-gray-1)',
34
+ borderStyle: 'solid',
35
+ borderWidth: '1px',
36
+ borderColor: 'var(--pv-color-gray-8)',
37
+ transition: 'background-color 200ms, color 200ms, border-color 200ms',
38
+ appearance: 'none',
39
+ userSelect: 'none',
40
+ '&:hover': {
41
+ backgroundColor: 'var(--pv-color-gray-3)',
42
+ borderColor: 'var(--pv-color-gray-7)',
43
+ },
44
+ '&:focus': {
45
+ backgroundColor: 'var(--pv-color-secondary-tint-5)',
46
+ borderColor: 'var(--pv-color-secondary-tint-3)',
47
+ },
48
+ '&[aria-disabled="true"]': {
49
+ cursor: 'not-allowed',
50
+ backgroundColor: 'var(--pv-color-gray-1)',
51
+ borderColor: 'var(--pv-color-gray-5)',
52
+ color: 'var(--pv-color-gray-7)',
53
+ },
54
+ });
55
+ const stylesInputSizeSmall = () => css({
56
+ label: 'small',
57
+ height: 'var(--pv-size-base-6)',
58
+ lineHeight: 'var(--pv-size-base-6)',
59
+ });
60
+ const stylesInputSizeMedium = () => css({
61
+ label: 'medium',
62
+ height: 'var(--pv-size-base-7)',
63
+ lineHeight: 'var(--pv-size-base-7)',
64
+ });
65
+ const stylesInputSizeLarge = () => css({
66
+ label: 'large',
67
+ height: 'var(--pv-size-base-8)',
68
+ lineHeight: 'var(--pv-size-base-8)',
69
+ });
70
+ const stylesNativeInput = () => css({
71
+ label: 'SelectPicker-native-input',
72
+ bottom: 0,
73
+ left: 0,
74
+ height: '100%',
75
+ position: 'absolute',
76
+ opacity: 0,
77
+ pointerEvents: 'none',
78
+ width: '100%',
79
+ boxSizing: 'border-box',
80
+ });
81
+ const stylesInputSearch = () => css({
82
+ label: 'SelectPicker-input-search',
83
+ padding: 'var(--pv-size-base-2)',
84
+ });
85
+ const stylesPopper = () => css({
86
+ label: 'SelectPicker-popper',
87
+ width: 300,
88
+ });
89
+ const stylesListBox = () => css({
90
+ label: 'SelectPicker-listbox',
91
+ padding: 0,
92
+ maxHeight: '40vh',
93
+ overflowY: 'auto',
94
+ margin: 0,
95
+ listStyleType: 'none',
96
+ position: 'relative',
97
+ });
98
+ const stylesListBoxState = () => css({
99
+ label: 'SelectPicker-listbox-state',
100
+ padding: 'var(--pv-size-base-3) var(--pv-size-base-2)',
101
+ });
102
+ const stylesOption = () => css({
103
+ label: 'SelectPicker-option',
104
+ padding: '0px var(--pv-size-base-2)',
105
+ fontFamily: 'inherit',
106
+ outline: 'none',
107
+ width: '100%',
108
+ height: 'var(--pv-size-base-7)',
109
+ textDecoration: 'none',
110
+ userSelect: 'none',
111
+ cursor: 'pointer',
112
+ transition: 'background-color 200ms',
113
+ backgroundColor: 'transparent',
114
+ border: 'none',
115
+ color: 'var(--pv-color-black)',
116
+ boxSizing: 'border-box',
117
+ display: 'flex',
118
+ textAlign: 'left',
119
+ alignItems: 'center',
120
+ justifyContent: 'flex-start',
121
+ '&:hover': {
122
+ backgroundColor: 'var(--pv-color-gray-3)',
123
+ },
124
+ '&[data-focused="true"]': {
125
+ backgroundColor: 'var(--pv-color-gray-4)',
126
+ },
127
+ '&[aria-selected="true"]': {
128
+ backgroundColor: 'var(--pv-color-gray-5)',
129
+ },
130
+ });
131
+ const stylesInputArrowIcon = () => css({
132
+ label: 'Select-arrow-icon',
133
+ position: 'absolute',
134
+ right: '0px',
135
+ top: 'calc(50% - 12px)',
136
+ pointerEvents: 'none',
137
+ margin: '0px var(--pv-size-base)',
138
+ color: 'var(--pv-color-gray-10)',
139
+ });
140
+ const stylesInputArrowIconDisabled = () => css({
141
+ label: 'disabled',
142
+ color: 'var(--pv-color-gray-7)',
143
+ });
144
+ /**
145
+ *
146
+ */
147
+ export const SelectPicker = (props) => {
148
+ const { options, getOptionLabel, disabled, loading, loadingText, noOptionsText, defaultValue, value: valueProp, id, placeholder, placeholderSearch, name, required, size, filterOptions = defaultFilterOptions, onChange, onOpen, } = props;
149
+ const [open, setOpen] = useState(false);
150
+ const [searchValue, setSearchValue] = useState('');
151
+ const rootRef = useRef(null);
152
+ const listboxRef = React.useRef(null);
153
+ const highlightedIndexRef = useRef(-1);
154
+ const [value, setValue] = useControllableState({
155
+ value: valueProp,
156
+ defaultValue,
157
+ });
158
+ const filteredOptions = open
159
+ ? filterOptions(options, searchValue, getOptionLabel)
160
+ : [];
161
+ const handleClose = () => {
162
+ setOpen(false);
163
+ setSearchValue('');
164
+ };
165
+ const handleInputClick = () => {
166
+ if (disabled) {
167
+ return;
168
+ }
169
+ setOpen(true);
170
+ if (onOpen) {
171
+ onOpen();
172
+ }
173
+ };
174
+ const handleInputKeyDown = (event) => {
175
+ if (disabled) {
176
+ return;
177
+ }
178
+ if (event.key === 'Enter') {
179
+ // Avoid early form validation, let the end-users continue filling the form.
180
+ event.preventDefault();
181
+ setOpen(true);
182
+ if (onOpen) {
183
+ onOpen();
184
+ }
185
+ }
186
+ };
187
+ const selectNewValue = (event, option) => {
188
+ setValue(option);
189
+ handleClose();
190
+ if (onChange) {
191
+ onChange(event, option);
192
+ }
193
+ };
194
+ const handleOptionClick = (event) => {
195
+ const index = Number(event.currentTarget.getAttribute('data-option-index'));
196
+ selectNewValue(event, filteredOptions[index]);
197
+ };
198
+ function validOptionIndex(index, direction) {
199
+ if (!listboxRef.current || index === -1) {
200
+ return -1;
201
+ }
202
+ let nextFocus = index;
203
+ while (true) {
204
+ // Out of range
205
+ if ((direction === 'next' && nextFocus === filteredOptions.length)
206
+ || (direction === 'previous' && nextFocus === -1)) {
207
+ return -1;
208
+ }
209
+ const option = listboxRef.current.querySelector(`[data-option-index="${nextFocus}"]`);
210
+ if ((option && !option.hasAttribute('tabindex'))) {
211
+ // Move to the next element.
212
+ nextFocus += direction === 'next' ? 1 : -1;
213
+ }
214
+ else {
215
+ return nextFocus;
216
+ }
217
+ }
218
+ }
219
+ const setHighlightedIndex = (index, reason = 'auto') => {
220
+ highlightedIndexRef.current = index;
221
+ const listboxNode = listboxRef.current;
222
+ if (!listboxNode) {
223
+ return;
224
+ }
225
+ const prevOptionNode = listboxNode.querySelector('[role="option"][data-focused="true"]');
226
+ if (prevOptionNode) {
227
+ prevOptionNode.setAttribute('data-focused', 'false');
228
+ }
229
+ // No results.
230
+ if (!listboxNode) {
231
+ return;
232
+ }
233
+ if (index === -1) {
234
+ listboxNode.scrollTop = 0;
235
+ return;
236
+ }
237
+ const nextOptionNode = listboxNode.querySelector(`[data-option-index="${index}"]`);
238
+ if (!nextOptionNode) {
239
+ return;
240
+ }
241
+ nextOptionNode.setAttribute('data-focused', 'true');
242
+ // Scroll active descendant into view.
243
+ if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {
244
+ const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;
245
+ const elementBottom = nextOptionNode.offsetTop + nextOptionNode.offsetHeight;
246
+ if (elementBottom > scrollBottom) {
247
+ listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;
248
+ }
249
+ else if (nextOptionNode.offsetTop - nextOptionNode.offsetHeight * 0 < listboxNode.scrollTop) {
250
+ listboxNode.scrollTop = nextOptionNode.offsetTop - nextOptionNode.offsetHeight * 0;
251
+ }
252
+ }
253
+ };
254
+ const changeHighlightedIndex = (diff, direction = 'next', reason = 'auto') => {
255
+ if (!open) {
256
+ return;
257
+ }
258
+ const getNextIndex = () => {
259
+ const maxIndex = filteredOptions.length - 1;
260
+ if (diff === 'reset') {
261
+ return -1;
262
+ }
263
+ if (diff === 'start') {
264
+ return 0;
265
+ }
266
+ if (diff === 'end') {
267
+ return maxIndex;
268
+ }
269
+ const newIndex = highlightedIndexRef.current + diff;
270
+ if (newIndex < 0) {
271
+ if (newIndex === -1) {
272
+ return -1;
273
+ }
274
+ if ((highlightedIndexRef.current !== -1) || Math.abs(diff) > 1) {
275
+ return 0;
276
+ }
277
+ return maxIndex;
278
+ }
279
+ if (newIndex > maxIndex) {
280
+ if (newIndex === maxIndex + 1) {
281
+ return -1;
282
+ }
283
+ if (Math.abs(diff) > 1) {
284
+ return maxIndex;
285
+ }
286
+ return 0;
287
+ }
288
+ return newIndex;
289
+ };
290
+ const nextIndex = validOptionIndex(getNextIndex(), direction);
291
+ setHighlightedIndex(nextIndex, reason);
292
+ };
293
+ const syncHighlightedIndex = useCallback(() => {
294
+ if (!open) {
295
+ return;
296
+ }
297
+ if (filteredOptions.length === 0 || value == null) {
298
+ changeHighlightedIndex('reset');
299
+ return;
300
+ }
301
+ if (!listboxRef.current) {
302
+ return;
303
+ }
304
+ if (value != null) {
305
+ const optionIndex = filteredOptions.findIndex((optionItem) => optionItem === value);
306
+ if (optionIndex === -1) {
307
+ changeHighlightedIndex('reset');
308
+ }
309
+ else {
310
+ setHighlightedIndex(optionIndex);
311
+ }
312
+ return;
313
+ }
314
+ // Prevent the highlighted index to leak outside the boundaries.
315
+ if (highlightedIndexRef.current >= filteredOptions.length - 1) {
316
+ setHighlightedIndex(filteredOptions.length - 1);
317
+ return;
318
+ }
319
+ setHighlightedIndex(highlightedIndexRef.current);
320
+ }, [
321
+ filteredOptions.length,
322
+ value,
323
+ open,
324
+ searchValue,
325
+ ]);
326
+ const handleListboxRef = (node) => {
327
+ listboxRef.current = node;
328
+ if (!node) {
329
+ return;
330
+ }
331
+ syncHighlightedIndex();
332
+ };
333
+ const handleInputSearchChange = (event) => {
334
+ setSearchValue(event.target.value);
335
+ };
336
+ const handleInputSearchKeyDown = (event) => {
337
+ // Wait until IME is settled.
338
+ if (event.which !== 229) {
339
+ switch (event.key) {
340
+ case 'ArrowDown':
341
+ // Prevent cursor move
342
+ event.preventDefault();
343
+ changeHighlightedIndex(1, 'next', 'keyboard');
344
+ break;
345
+ case 'ArrowUp':
346
+ // Prevent cursor move
347
+ event.preventDefault();
348
+ changeHighlightedIndex(-1, 'previous', 'keyboard');
349
+ break;
350
+ case 'Enter':
351
+ // Avoid early form validation, let the end-users continue filling the form.
352
+ event.preventDefault();
353
+ if (highlightedIndexRef.current !== -1 && open) {
354
+ const option = filteredOptions[highlightedIndexRef.current];
355
+ selectNewValue(event, option);
356
+ }
357
+ break;
358
+ default:
359
+ }
360
+ }
361
+ };
362
+ useEffect(() => {
363
+ syncHighlightedIndex();
364
+ }, [syncHighlightedIndex]);
365
+ const renderListBoxState = (text) => (React.createElement("div", { className: cx(stylesListBoxState()) }, typeof text === 'string' ? (React.createElement(Typography, { variant: "b2", color: "gray-10" }, text)) : text));
366
+ const renderPopoverContent = () => {
367
+ if (loading) {
368
+ return renderListBoxState(loadingText);
369
+ }
370
+ if (!filteredOptions.length) {
371
+ return renderListBoxState(noOptionsText);
372
+ }
373
+ return (React.createElement("ul", { role: "listbox", tabIndex: -1, ref: handleListboxRef, className: cx(stylesListBox()) }, filteredOptions.map((option, index) => {
374
+ const optionLabel = getOptionLabel(option);
375
+ const selected = option === value;
376
+ return (
377
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events
378
+ React.createElement("li", {
379
+ // eslint-disable-next-line react/no-array-index-key
380
+ key: index, role: "option", tabIndex: -1, onClick: handleOptionClick, "aria-selected": selected, "data-option-index": index, className: cx(stylesOption()) },
381
+ React.createElement(Typography, { variant: "b3", color: "inherit", noWrap: true }, optionLabel)));
382
+ })));
383
+ };
384
+ return (React.createElement(React.Fragment, null,
385
+ React.createElement("div", { className: stylesRoot() },
386
+ React.createElement(Typography, { noWrap: true, component: "div", variant: "c1", role: "button", tabIndex: disabled ? undefined : 0, "aria-haspopup": "listbox", "aria-expanded": open, "aria-disabled": disabled, onClick: handleInputClick, onKeyDown: handleInputKeyDown, ref: rootRef, color: value ? 'black' : 'gray-9', className: cx({
387
+ [stylesInput()]: true,
388
+ [stylesInputSizeSmall()]: size === 'small',
389
+ [stylesInputSizeMedium()]: size === 'medium',
390
+ [stylesInputSizeLarge()]: size === 'large',
391
+ }) }, value ? getOptionLabel(value) : placeholder),
392
+ React.createElement("input", { type: "text", value: JSON.stringify(value) || '', tabIndex: -1, "aria-hidden": "true", className: stylesNativeInput(), autoComplete: "off", id: id, name: name, required: required, onChange: () => { }, disabled: disabled }),
393
+ React.createElement(ArrowDropDownIcon, { className: cx({
394
+ [stylesInputArrowIcon()]: true,
395
+ [stylesInputArrowIconDisabled()]: disabled,
396
+ }), "aria-hidden": true })),
397
+ React.createElement(Popover, { open: open, anchorEl: rootRef.current, onClose: handleClose, placement: "bottom-start", className: stylesPopper() },
398
+ React.createElement(Box, { borderColor: "gray-3", borderPosition: "bottom", borderStyle: "solid", borderWidth: 1 },
399
+ React.createElement(TextField, { type: "search", onChange: handleInputSearchChange, onKeyDown: handleInputSearchKeyDown, value: searchValue, placeholder: placeholderSearch, className: stylesInputSearch() })),
400
+ renderPopoverContent())));
401
+ };
402
+ // @ts-ignore
403
+ SelectPicker.defaultProps = {
404
+ disabled: false,
405
+ loading: false,
406
+ loadingText: 'Loading...',
407
+ noOptionsText: 'No options',
408
+ placeholderSearch: 'Search',
409
+ size: 'medium',
410
+ };
411
+ //# sourceMappingURL=select_picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select_picker.js","sourceRoot":"","sources":["../../../src/SelectPicker/select_picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAuFpC,MAAM,oBAAoB,GAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IACjF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAC/B,OAAO,EAAE,CAAC;KACX;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE/C,OAAO,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3B,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC5B,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,YAAY;IACvB,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,8DAA8D;IACvE,eAAe,EAAE,wBAAwB;IACzC,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,wBAAwB;IACrC,UAAU,EAAE,yDAAyD;IACrE,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE;QACT,eAAe,EAAE,wBAAwB;QACzC,WAAW,EAAE,wBAAwB;KACtC;IACD,SAAS,EAAE;QACT,eAAe,EAAE,kCAAkC;QACnD,WAAW,EAAE,kCAAkC;KAChD;IACD,yBAAyB,EAAE;QACzB,MAAM,EAAE,aAAa;QACrB,eAAe,EAAE,wBAAwB;QACzC,WAAW,EAAE,wBAAwB;QACrC,KAAK,EAAE,wBAAwB;KAChC;CACF,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACrC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,uBAAuB;IAC/B,UAAU,EAAE,uBAAuB;CACpC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACtC,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,uBAAuB;IAC/B,UAAU,EAAE,uBAAuB;CACpC,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACrC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,uBAAuB;IAC/B,UAAU,EAAE,uBAAuB;CACpC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAClC,KAAK,EAAE,2BAA2B;IAClC,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,MAAM;IACrB,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAClC,KAAK,EAAE,2BAA2B;IAClC,OAAO,EAAE,uBAAuB;CACjC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC7B,KAAK,EAAE,qBAAqB;IAC5B,KAAK,EAAE,GAAG;CACX,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC9B,KAAK,EAAE,sBAAsB;IAC7B,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACnC,KAAK,EAAE,4BAA4B;IACnC,OAAO,EAAE,6CAA6C;CACvD,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC7B,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,2BAA2B;IACpC,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,uBAAuB;IAC/B,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,wBAAwB;IACpC,eAAe,EAAE,aAAa;IAC9B,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,YAAY;IAC5B,SAAS,EAAE;QACT,eAAe,EAAE,wBAAwB;KAC1C;IACD,wBAAwB,EAAE;QACxB,eAAe,EAAE,wBAAwB;KAC1C;IACD,yBAAyB,EAAE;QACzB,eAAe,EAAE,wBAAwB;KAC1C;CACF,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACrC,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,kBAAkB;IACvB,aAAa,EAAE,MAAM;IACrB,MAAM,EAAE,yBAAyB;IACjC,KAAK,EAAE,yBAAyB;CACjC,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IAC7C,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,wBAAwB;CAChC,CAAC,CAAC;AACH;;GAEG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAoD,CAAC,KAAK,EAAE,EAAE;IACrF,MAAM,EACJ,OAAO,EACP,cAAc,EACd,QAAQ,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,KAAK,EAAE,SAAS,EAChB,EAAE,EACF,WAAW,EACX,iBAAiB,EACjB,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,aAAa,GAAG,oBAAoB,EACpC,QAAQ,EACR,MAAM,GACP,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACjD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,oBAAoB,CAAC;QAC7C,KAAK,EAAE,SAAS;QAChB,YAAY;KACb,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAI;QAC1B,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC;QACrD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,cAAc,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,QAAQ,EAAE;YACZ,OAAO;SACR;QAED,OAAO,CAAC,IAAI,CAAC,CAAC;QAEd,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,CAAC;SACV;IACH,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,KAA0C,EAAE,EAAE;QACxE,IAAI,QAAQ,EAAE;YACZ,OAAO;SACR;QAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,4EAA4E;YAC5E,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,OAAO,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,MAAM,EAAE;gBACV,MAAM,EAAE,CAAC;aACV;SACF;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAA2B,EAAE,MAAW,EAAE,EAAE;QAClE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEjB,WAAW,EAAE,CAAC;QAEd,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACzB;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAAsC,EAAE,EAAE;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAE5E,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,SAAS,gBAAgB,CAAC,KAAa,EAAE,SAAwB;QAC/D,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACvC,OAAO,CAAC,CAAC,CAAC;SACX;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,OAAO,IAAI,EAAE;YACX,eAAe;YACf,IACE,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,eAAe,CAAC,MAAM,CAAC;mBAC3D,CAAC,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,EACjD;gBACA,OAAO,CAAC,CAAC,CAAC;aACX;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,uBAAuB,SAAS,IAAI,CAAC,CAAC;YAEtF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE;gBAChD,4BAA4B;gBAC5B,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5C;iBAAM;gBACL,OAAO,SAAS,CAAC;aAClB;SACF;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,SAAqB,MAAM,EAAE,EAAE;QACzE,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;QAEpC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;QAEvC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QAED,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC;QAEzF,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;SACtD;QAED,cAAc;QACd,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QAED,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;YAC1B,OAAO;SACR;QAED,MAAM,cAAc,GAAG,WAAW,CAAC,aAAa,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAC;QAEnF,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAEpD,sCAAsC;QACtC,IAAI,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,MAAM,KAAK,OAAO,EAAE;YAC7E,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC;YACtE,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC;YAE7E,IAAI,aAAa,GAAG,YAAY,EAAE;gBAChC,WAAW,CAAC,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC;aAClE;iBAAM,IACL,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC,SAAS,EAClF;gBACA,WAAW,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;aACpF;SACF;IACH,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,CAAC,IAAc,EAAE,YAA2B,MAAM,EAAE,SAAqB,MAAM,EAAE,EAAE;QAChH,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAE5C,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,OAAO,CAAC,CAAC,CAAC;aACX;YAED,IAAI,IAAI,KAAK,OAAO,EAAE;gBACpB,OAAO,CAAC,CAAC;aACV;YAED,IAAI,IAAI,KAAK,KAAK,EAAE;gBAClB,OAAO,QAAQ,CAAC;aACjB;YAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpD,IAAI,QAAQ,GAAG,CAAC,EAAE;gBAChB,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;oBACnB,OAAO,CAAC,CAAC,CAAC;iBACX;gBAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBAC9D,OAAO,CAAC,CAAC;iBACV;gBAED,OAAO,QAAQ,CAAC;aACjB;YAED,IAAI,QAAQ,GAAG,QAAQ,EAAE;gBACvB,IAAI,QAAQ,KAAK,QAAQ,GAAG,CAAC,EAAE;oBAC7B,OAAO,CAAC,CAAC,CAAC;iBACX;gBAED,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACtB,OAAO,QAAQ,CAAC;iBACjB;gBAED,OAAO,CAAC,CAAC;aACV;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;QAE9D,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE;YACjD,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAEhC,OAAO;SACR;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACvB,OAAO;SACR;QAED,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;YAEpF,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACtB,sBAAsB,CAAC,OAAO,CAAC,CAAC;aACjC;iBAAM;gBACL,mBAAmB,CAAC,WAAW,CAAC,CAAC;aAClC;YAED,OAAO;SACR;QAED,gEAAgE;QAChE,IAAI,mBAAmB,CAAC,OAAO,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7D,mBAAmB,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEhD,OAAO;SACR;QAED,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,EAAE;QACD,eAAe,CAAC,MAAM;QACtB,KAAK;QACL,IAAI;QACJ,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,CAAC,IAAsB,EAAE,EAAE;QAClD,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,oBAAoB,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,CAAC,KAA0C,EAAE,EAAE;QAC7E,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,CAAC,KAA0C,EAAE,EAAE;QAC9E,6BAA6B;QAC7B,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;YACvB,QAAQ,KAAK,CAAC,GAAG,EAAE;gBACjB,KAAK,WAAW;oBACd,sBAAsB;oBACtB,KAAK,CAAC,cAAc,EAAE,CAAC;oBAEvB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;oBAC9C,MAAM;gBAER,KAAK,SAAS;oBACZ,sBAAsB;oBACtB,KAAK,CAAC,cAAc,EAAE,CAAC;oBAEvB,sBAAsB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;oBACnD,MAAM;gBAER,KAAK,OAAO;oBACV,4EAA4E;oBAC5E,KAAK,CAAC,cAAc,EAAE,CAAC;oBAEvB,IAAI,mBAAmB,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE;wBAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;wBAE5D,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;qBAC/B;oBACD,MAAM;gBAER,QAAQ;aACT;SACF;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,oBAAoB,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,MAAM,kBAAkB,GAAG,CAAC,IAAqB,EAAE,EAAE,CAAC,CACpD,6BACE,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAElC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC1B,oBAAC,UAAU,IACT,OAAO,EAAC,IAAI,EACZ,KAAK,EAAC,SAAS,IAEd,IAAI,CACM,CACd,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;IAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,IAAI,OAAO,EAAE;YACX,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAC3B,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;SAC1C;QAED,OAAO,CACL,4BACE,IAAI,EAAC,SAAS,EACd,QAAQ,EAAE,CAAC,CAAC,EACZ,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,IAE7B,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,KAAK,KAAK,CAAC;YAElC,OAAO;YACL,iEAAiE;YACjE;gBACE,oDAAoD;gBACpD,GAAG,EAAE,KAAK,EACV,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,OAAO,EAAE,iBAAiB,mBACX,QAAQ,uBACJ,KAAK,EACxB,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC;gBAE7B,oBAAC,UAAU,IACT,OAAO,EAAC,IAAI,EACZ,KAAK,EAAC,SAAS,EACf,MAAM,UAEL,WAAW,CACD,CACV,CACN,CAAC;QACJ,CAAC,CAAC,CACC,CACN,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL;QACE,6BAAK,SAAS,EAAE,UAAU,EAAE;YAC1B,oBAAC,UAAU,IACT,MAAM,QACN,SAAS,EAAC,KAAK,EACf,OAAO,EAAC,IAAI,EACZ,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBACpB,SAAS,mBACR,IAAI,mBACJ,QAAQ,EACvB,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,kBAAkB,EAC7B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EACjC,SAAS,EAAE,EAAE,CAAC;oBACZ,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI;oBACrB,CAAC,oBAAoB,EAAE,CAAC,EAAE,IAAI,KAAK,OAAO;oBAC1C,CAAC,qBAAqB,EAAE,CAAC,EAAE,IAAI,KAAK,QAAQ;oBAC5C,CAAC,oBAAoB,EAAE,CAAC,EAAE,IAAI,KAAK,OAAO;iBAC3C,CAAC,IAED,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CACjC;YACb,+BACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAClC,QAAQ,EAAE,CAAC,CAAC,iBACA,MAAM,EAClB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,YAAY,EAAC,KAAK,EAClB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAClB,QAAQ,EAAE,QAAQ,GAClB;YACF,oBAAC,iBAAiB,IAChB,SAAS,EAAE,EAAE,CAAC;oBACZ,CAAC,oBAAoB,EAAE,CAAC,EAAE,IAAI;oBAC9B,CAAC,4BAA4B,EAAE,CAAC,EAAE,QAAQ;iBAC3C,CAAC,wBAEF,CACE;QACN,oBAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,OAAO,CAAC,OAAO,EACzB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,cAAc,EACxB,SAAS,EAAE,YAAY,EAAE;YAEzB,oBAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,cAAc,EAAC,QAAQ,EACvB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,CAAC;gBAEd,oBAAC,SAAS,IACR,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,uBAAuB,EACjC,SAAS,EAAE,wBAAwB,EACnC,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,iBAAiB,EAAE,GAC9B,CACE;YACL,oBAAoB,EAAE,CACf,CACT,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,aAAa;AACb,YAAY,CAAC,YAAY,GAAG;IAC1B,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,YAAY;IACzB,aAAa,EAAE,YAAY;IAC3B,iBAAiB,EAAE,QAAQ;IAC3B,IAAI,EAAE,QAAQ;CACf,CAAC"}
@@ -4,4 +4,5 @@ export { useClipboard } from './use_clipboard';
4
4
  export { useControllableState } from './use_controllable';
5
5
  export { useId } from './use_id';
6
6
  export { useImage } from './use_image';
7
+ export { useWindowEventListener } from './use_window_event_listener';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAuB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAA6B,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAuB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAA6B,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export const useWindowEventListener = (event, listener, deps, removeOnUnmount = true) => {
3
+ // eslint-disable-next-line consistent-return
4
+ React.useEffect(() => {
5
+ window.addEventListener(event, listener);
6
+ if (removeOnUnmount) {
7
+ return () => {
8
+ window.removeEventListener(event, listener);
9
+ };
10
+ }
11
+ return undefined;
12
+ }, deps);
13
+ };
14
+ //# sourceMappingURL=use_window_event_listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_window_event_listener.js","sourceRoot":"","sources":["../../../src/hooks/use_window_event_listener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAAQ,EACR,QAAsD,EACtD,IAA2B,EAC3B,kBAA2B,IAAI,EAC/B,EAAE;IACF,6CAA6C;IAC7C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEzC,IAAI,eAAe,EAAE;YACnB,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC"}
@@ -6,7 +6,6 @@ export * from './Checkbox';
6
6
  export * from './Chip';
7
7
  export * from './CircularProgress';
8
8
  export * from './Collapse';
9
- export * from './ComboBox';
10
9
  export * from './Dialog';
11
10
  export * from './Drawer';
12
11
  export * from './Fab';
@@ -20,6 +19,7 @@ export * from './Popover';
20
19
  export * from './Portal';
21
20
  export * from './Radio';
22
21
  export * from './Select';
22
+ export * from './SelectPicker';
23
23
  export * from './Slide';
24
24
  export * from './Slider';
25
25
  export * from './Tabs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -1 +1 @@
1
- export { Menu } from './menu';
1
+ export { Menu, MenuProps } from './menu';
@@ -1,10 +1,12 @@
1
1
  import React from 'react';
2
2
  import { PopoverProps } from '../Popover';
3
- declare type OptionType = {
3
+ declare type OptionBaseProps = {
4
4
  label: string;
5
5
  disabled?: boolean;
6
6
  onClick?: (event: React.MouseEvent<HTMLElement>) => void;
7
+ component?: React.ElementType;
7
8
  };
9
+ declare type OptionProps = OptionBaseProps & Omit<React.AllHTMLAttributes<HTMLElement>, 'className' | 'children'>;
8
10
  declare type BaseProps = {
9
11
  /**
10
12
  * Menu reference element.
@@ -13,7 +15,7 @@ declare type BaseProps = {
13
15
  /**
14
16
  * Menu contents.
15
17
  */
16
- options: OptionType[];
18
+ options: OptionProps[];
17
19
  /**
18
20
  * Callback fired when the component requests to be closed.
19
21
  */
@@ -23,5 +25,6 @@ declare type BaseProps = {
23
25
  */
24
26
  popoverProps?: Partial<PopoverProps>;
25
27
  };
28
+ export declare type MenuProps = BaseProps;
26
29
  export declare const Menu: React.ForwardRefExoticComponent<BaseProps & React.RefAttributes<HTMLDivElement>>;
27
30
  export {};
@@ -0,0 +1 @@
1
+ export { SelectPicker } from './select_picker';
@@ -0,0 +1,77 @@
1
+ import React from 'react';
2
+ declare type FilterOptionsType = <T>(options: ReadonlyArray<T>, value: string, getOptionLabel: (option: T) => string) => ReadonlyArray<T>;
3
+ export declare type SelectPickerProps<T> = {
4
+ /**
5
+ * Array of options.
6
+ */
7
+ options: ReadonlyArray<T>;
8
+ /**
9
+ * Used to determine the string value for a given option. It's used to fill the input.
10
+ */
11
+ getOptionLabel: (option: T) => string;
12
+ /**
13
+ * If `true`, the component is disabled.
14
+ */
15
+ disabled?: boolean;
16
+ /**
17
+ * If `true`, the component is in a loading state.
18
+ */
19
+ loading?: boolean;
20
+ /**
21
+ * Text to display when in a loading state.
22
+ */
23
+ loadingText?: React.ReactNode;
24
+ /**
25
+ * Text to display when there are no options.
26
+ */
27
+ noOptionsText?: React.ReactNode;
28
+ /**
29
+ * The default value. Use when the component is not controlled.
30
+ */
31
+ defaultValue?: T;
32
+ /**
33
+ * The value of the select.
34
+ */
35
+ value?: T;
36
+ /**
37
+ * The id of the `input` element.
38
+ */
39
+ id?: string;
40
+ /**
41
+ * The short hint displayed in the `input` before the user enters a value.
42
+ */
43
+ placeholder?: string;
44
+ /**
45
+ * The short hint displayed in the search `input` before the user enters a value.
46
+ */
47
+ placeholderSearch?: string;
48
+ /**
49
+ * Name attribute of the `input` element.
50
+ */
51
+ name?: string;
52
+ /**
53
+ * If `true`, the `input` element is required.
54
+ */
55
+ required?: boolean;
56
+ /**
57
+ * The size of the input.
58
+ */
59
+ size?: ('small' | 'medium' | 'large');
60
+ /**
61
+ * A filter function that determines the options that are eligible.
62
+ */
63
+ filterOptions?: FilterOptionsType;
64
+ /**
65
+ * Callback fired when the popup requests to be opened.
66
+ */
67
+ onOpen?: () => void;
68
+ /**
69
+ * Callback fired when the value changes.
70
+ */
71
+ onChange?: (event: React.SyntheticEvent, value: T) => void;
72
+ };
73
+ /**
74
+ *
75
+ */
76
+ export declare const SelectPicker: <T>(props: SelectPickerProps<T>) => JSX.Element;
77
+ export {};
@@ -72,5 +72,5 @@ declare type BaseProps = {
72
72
  onChange?: React.ChangeEventHandler<HTMLInputElement>;
73
73
  'data-testid'?: string;
74
74
  };
75
- export declare const TextField: React.ForwardRefExoticComponent<BaseProps & Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> & React.RefAttributes<HTMLDivElement>>;
75
+ export declare const TextField: React.ForwardRefExoticComponent<BaseProps & Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "onChange"> & React.RefAttributes<HTMLDivElement>>;
76
76
  export {};
@@ -4,3 +4,4 @@ export { useClipboard, UseClipboardOptions } from './use_clipboard';
4
4
  export { useControllableState, UseControllableStateProps } from './use_controllable';
5
5
  export { useId } from './use_id';
6
6
  export { useImage } from './use_image';
7
+ export { useWindowEventListener } from './use_window_event_listener';
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const useWindowEventListener: <T extends keyof WindowEventMap>(event: T, listener: (this: Window, ev: WindowEventMap[T]) => any, deps?: React.DependencyList, removeOnUnmount?: boolean) => void;
@@ -6,7 +6,6 @@ export * from './Checkbox';
6
6
  export * from './Chip';
7
7
  export * from './CircularProgress';
8
8
  export * from './Collapse';
9
- export * from './ComboBox';
10
9
  export * from './Dialog';
11
10
  export * from './Drawer';
12
11
  export * from './Fab';
@@ -20,6 +19,7 @@ export * from './Popover';
20
19
  export * from './Portal';
21
20
  export * from './Radio';
22
21
  export * from './Select';
22
+ export * from './SelectPicker';
23
23
  export * from './Slide';
24
24
  export * from './Slider';
25
25
  export * from './Tabs';