@dhis2-ui/select 10.9.2 → 10.10.0-alpha.1
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/build/cjs/index.js +18 -4
- package/build/cjs/locales/en/translations.json +7 -5
- package/build/cjs/simple-single-select/__stories__/DefaultPosition.js +38 -0
- package/build/cjs/simple-single-select/__stories__/Dense.js +22 -0
- package/build/cjs/simple-single-select/__stories__/Empty.js +20 -0
- package/build/cjs/simple-single-select/__stories__/EmptyWithEmptyNode.js +28 -0
- package/build/cjs/simple-single-select/__stories__/EmptyWithEmptyText.js +21 -0
- package/build/cjs/simple-single-select/__stories__/FlippedPosition.js +37 -0
- package/build/cjs/simple-single-select/__stories__/InfiniteLoading.js +61 -0
- package/build/cjs/simple-single-select/__stories__/Loading.js +20 -0
- package/build/cjs/simple-single-select/__stories__/ShiftedIntoView.js +28 -0
- package/build/cjs/simple-single-select/__stories__/WithClearButton.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithCustomLowMaxHeight.js +22 -0
- package/build/cjs/simple-single-select/__stories__/WithCustomOptions.js +48 -0
- package/build/cjs/simple-single-select/__stories__/WithDisabledOption.js +28 -0
- package/build/cjs/simple-single-select/__stories__/WithFilterField.js +36 -0
- package/build/cjs/simple-single-select/__stories__/WithInitialFocus.js +38 -0
- package/build/cjs/simple-single-select/__stories__/WithManyOptions.js +24 -0
- package/build/cjs/simple-single-select/__stories__/WithNoMatchText.js +30 -0
- package/build/cjs/simple-single-select/__stories__/WithOnBlur.js +23 -0
- package/build/cjs/simple-single-select/__stories__/WithOnFocus.js +23 -0
- package/build/cjs/simple-single-select/__stories__/WithOptionsAndDisabled.js +22 -0
- package/build/cjs/simple-single-select/__stories__/WithOptionsAndLoading.js +34 -0
- package/build/cjs/simple-single-select/__stories__/WithOptionsAndLoadingText.js +35 -0
- package/build/cjs/simple-single-select/__stories__/WithPlaceholder.js +23 -0
- package/build/cjs/simple-single-select/__stories__/WithPlaceholderAndSelection.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithPrefix.js +22 -0
- package/build/cjs/simple-single-select/__stories__/WithPrefixAndSelection.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithRTL.js +34 -0
- package/build/cjs/simple-single-select/__stories__/WithSelection.js +24 -0
- package/build/cjs/simple-single-select/__stories__/WithSelectionAndDisabled.js +25 -0
- package/build/cjs/simple-single-select/__stories__/WithoutOptionsAndLoading.js +21 -0
- package/build/cjs/simple-single-select/__stories__/WithoutSelection.js +22 -0
- package/build/cjs/simple-single-select/__stories__/options.js +77 -0
- package/build/cjs/simple-single-select/features/keyboard-interactions.test.e2e.js +441 -0
- package/build/cjs/simple-single-select/features/menu-positioning.test.e2e.js +152 -0
- package/build/cjs/simple-single-select/index.js +19 -0
- package/build/cjs/simple-single-select/is-option-hidden.js +22 -0
- package/build/cjs/simple-single-select/menu/empty.js +26 -0
- package/build/cjs/simple-single-select/menu/filter.js +60 -0
- package/build/cjs/simple-single-select/menu/index.js +12 -0
- package/build/cjs/simple-single-select/menu/loading.js +30 -0
- package/build/cjs/simple-single-select/menu/menu.js +158 -0
- package/build/cjs/simple-single-select/menu/no-match.js +28 -0
- package/build/cjs/simple-single-select/menu/option.js +120 -0
- package/build/cjs/simple-single-select/menu/options-list.js +97 -0
- package/build/cjs/simple-single-select/selected-value/clear-button.js +74 -0
- package/build/cjs/simple-single-select/selected-value/container.js +100 -0
- package/build/cjs/simple-single-select/selected-value/index.js +12 -0
- package/build/cjs/simple-single-select/selected-value/placeholder.js +30 -0
- package/build/cjs/simple-single-select/selected-value/prefix.js +30 -0
- package/build/cjs/simple-single-select/selected-value/selected-value.js +119 -0
- package/build/cjs/simple-single-select/shared-prop-types.js +14 -0
- package/build/cjs/simple-single-select/simple-single-select.e2e.stories.js +156 -0
- package/build/cjs/simple-single-select/simple-single-select.js +319 -0
- package/build/cjs/simple-single-select/simple-single-select.prod.stories.js +228 -0
- package/build/cjs/simple-single-select/simple-single-select.test.js +1106 -0
- package/build/cjs/simple-single-select/use-handle-key-press/index.js +19 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-focus-option.js +24 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-handle-key-press-on-combobox.js +177 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-handle-key-press-on-filter-input.js +106 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-handle-typing.js +81 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-first-option-on-previous-page.js +50 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-first-visible-option.js +30 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-last-option-on-next-page.js +50 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-highlight-last-visible-option.js +42 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-page-down.js +45 -0
- package/build/cjs/simple-single-select/use-handle-key-press/use-page-up.js +44 -0
- package/build/cjs/simple-single-select/use-handle-key-press/utils.js +46 -0
- package/build/cjs/simple-single-select-field/index.js +12 -0
- package/build/cjs/simple-single-select-field/simple-single-select-field.js +138 -0
- package/build/cjs/simple-single-select-field/simple-single-select-field.prod.stories.js +188 -0
- package/build/cjs/simple-single-select-field/simple-single-select-field.test.js +133 -0
- package/build/es/index.js +2 -0
- package/build/es/locales/en/translations.json +7 -5
- package/build/es/simple-single-select/__stories__/DefaultPosition.js +29 -0
- package/build/es/simple-single-select/__stories__/Dense.js +13 -0
- package/build/es/simple-single-select/__stories__/Empty.js +11 -0
- package/build/es/simple-single-select/__stories__/EmptyWithEmptyNode.js +19 -0
- package/build/es/simple-single-select/__stories__/EmptyWithEmptyText.js +12 -0
- package/build/es/simple-single-select/__stories__/FlippedPosition.js +28 -0
- package/build/es/simple-single-select/__stories__/InfiniteLoading.js +53 -0
- package/build/es/simple-single-select/__stories__/Loading.js +12 -0
- package/build/es/simple-single-select/__stories__/ShiftedIntoView.js +18 -0
- package/build/es/simple-single-select/__stories__/WithClearButton.js +16 -0
- package/build/es/simple-single-select/__stories__/WithCustomLowMaxHeight.js +13 -0
- package/build/es/simple-single-select/__stories__/WithCustomOptions.js +38 -0
- package/build/es/simple-single-select/__stories__/WithDisabledOption.js +19 -0
- package/build/es/simple-single-select/__stories__/WithFilterField.js +27 -0
- package/build/es/simple-single-select/__stories__/WithInitialFocus.js +29 -0
- package/build/es/simple-single-select/__stories__/WithManyOptions.js +15 -0
- package/build/es/simple-single-select/__stories__/WithNoMatchText.js +21 -0
- package/build/es/simple-single-select/__stories__/WithOnBlur.js +14 -0
- package/build/es/simple-single-select/__stories__/WithOnFocus.js +14 -0
- package/build/es/simple-single-select/__stories__/WithOptionsAndDisabled.js +13 -0
- package/build/es/simple-single-select/__stories__/WithOptionsAndLoading.js +25 -0
- package/build/es/simple-single-select/__stories__/WithOptionsAndLoadingText.js +26 -0
- package/build/es/simple-single-select/__stories__/WithPlaceholder.js +14 -0
- package/build/es/simple-single-select/__stories__/WithPlaceholderAndSelection.js +16 -0
- package/build/es/simple-single-select/__stories__/WithPrefix.js +13 -0
- package/build/es/simple-single-select/__stories__/WithPrefixAndSelection.js +16 -0
- package/build/es/simple-single-select/__stories__/WithRTL.js +25 -0
- package/build/es/simple-single-select/__stories__/WithSelection.js +15 -0
- package/build/es/simple-single-select/__stories__/WithSelectionAndDisabled.js +16 -0
- package/build/es/simple-single-select/__stories__/WithoutOptionsAndLoading.js +12 -0
- package/build/es/simple-single-select/__stories__/WithoutSelection.js +13 -0
- package/build/es/simple-single-select/__stories__/options.js +71 -0
- package/build/es/simple-single-select/features/keyboard-interactions.test.e2e.js +439 -0
- package/build/es/simple-single-select/features/menu-positioning.test.e2e.js +150 -0
- package/build/es/simple-single-select/index.js +2 -0
- package/build/es/simple-single-select/is-option-hidden.js +16 -0
- package/build/es/simple-single-select/menu/empty.js +19 -0
- package/build/es/simple-single-select/menu/filter.js +53 -0
- package/build/es/simple-single-select/menu/index.js +1 -0
- package/build/es/simple-single-select/menu/loading.js +23 -0
- package/build/es/simple-single-select/menu/menu.js +149 -0
- package/build/es/simple-single-select/menu/no-match.js +21 -0
- package/build/es/simple-single-select/menu/option.js +111 -0
- package/build/es/simple-single-select/menu/options-list.js +88 -0
- package/build/es/simple-single-select/selected-value/clear-button.js +68 -0
- package/build/es/simple-single-select/selected-value/container.js +91 -0
- package/build/es/simple-single-select/selected-value/index.js +1 -0
- package/build/es/simple-single-select/selected-value/placeholder.js +23 -0
- package/build/es/simple-single-select/selected-value/prefix.js +23 -0
- package/build/es/simple-single-select/selected-value/selected-value.js +112 -0
- package/build/es/simple-single-select/shared-prop-types.js +7 -0
- package/build/es/simple-single-select/simple-single-select.e2e.stories.js +142 -0
- package/build/es/simple-single-select/simple-single-select.js +310 -0
- package/build/es/simple-single-select/simple-single-select.prod.stories.js +36 -0
- package/build/es/simple-single-select/simple-single-select.test.js +1103 -0
- package/build/es/simple-single-select/use-handle-key-press/index.js +2 -0
- package/build/es/simple-single-select/use-handle-key-press/use-focus-option.js +18 -0
- package/build/es/simple-single-select/use-handle-key-press/use-handle-key-press-on-combobox.js +171 -0
- package/build/es/simple-single-select/use-handle-key-press/use-handle-key-press-on-filter-input.js +100 -0
- package/build/es/simple-single-select/use-handle-key-press/use-handle-typing.js +75 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-first-option-on-previous-page.js +44 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-first-visible-option.js +24 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-last-option-on-next-page.js +44 -0
- package/build/es/simple-single-select/use-handle-key-press/use-highlight-last-visible-option.js +36 -0
- package/build/es/simple-single-select/use-handle-key-press/use-page-down.js +39 -0
- package/build/es/simple-single-select/use-handle-key-press/use-page-up.js +38 -0
- package/build/es/simple-single-select/use-handle-key-press/utils.js +36 -0
- package/build/es/simple-single-select-field/index.js +1 -0
- package/build/es/simple-single-select-field/simple-single-select-field.js +131 -0
- package/build/es/simple-single-select-field/simple-single-select-field.prod.stories.js +172 -0
- package/build/es/simple-single-select-field/simple-single-select-field.test.js +130 -0
- package/package.json +15 -15
- package/types/index.d.ts +184 -1
package/types/index.d.ts
CHANGED
|
@@ -30,6 +30,16 @@ export type SelectKeyHandler<T extends BaseEventPayload> = SelectEventHandler<
|
|
|
30
30
|
export type SelectChangeHandler<T extends BaseEventPayload> =
|
|
31
31
|
SelectEventHandler<T, React.MouseEvent>
|
|
32
32
|
|
|
33
|
+
type TranslateableProp = string | ((interpolationObject: any) => string)
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* ====================
|
|
37
|
+
*
|
|
38
|
+
* <MultiSelect />
|
|
39
|
+
*
|
|
40
|
+
* ====================
|
|
41
|
+
**/
|
|
42
|
+
|
|
33
43
|
export interface MultiSelectProps {
|
|
34
44
|
children?: React.ReactNode
|
|
35
45
|
className?: string
|
|
@@ -74,7 +84,13 @@ export interface MultiSelectProps {
|
|
|
74
84
|
|
|
75
85
|
export const MultiSelect: React.FC<MultiSelectProps>
|
|
76
86
|
|
|
77
|
-
|
|
87
|
+
/**
|
|
88
|
+
* ====================
|
|
89
|
+
*
|
|
90
|
+
* <MultiSelectField />
|
|
91
|
+
*
|
|
92
|
+
* ====================
|
|
93
|
+
**/
|
|
78
94
|
|
|
79
95
|
export interface MultiSelectFieldProps {
|
|
80
96
|
/**
|
|
@@ -205,6 +221,14 @@ export class MultiSelectField extends React.Component<
|
|
|
205
221
|
render(): JSX.Element
|
|
206
222
|
}
|
|
207
223
|
|
|
224
|
+
/**
|
|
225
|
+
* ====================
|
|
226
|
+
*
|
|
227
|
+
* <MultiSelectOption />
|
|
228
|
+
*
|
|
229
|
+
* ====================
|
|
230
|
+
**/
|
|
231
|
+
|
|
208
232
|
export interface MultiSelectOptionProps {
|
|
209
233
|
label: string
|
|
210
234
|
value: string
|
|
@@ -217,6 +241,14 @@ export interface MultiSelectOptionProps {
|
|
|
217
241
|
|
|
218
242
|
export const MultiSelectOption: React.FC<MultiSelectOptionProps>
|
|
219
243
|
|
|
244
|
+
/**
|
|
245
|
+
* ====================
|
|
246
|
+
*
|
|
247
|
+
* <SingleSelect />
|
|
248
|
+
*
|
|
249
|
+
* ====================
|
|
250
|
+
**/
|
|
251
|
+
|
|
220
252
|
export interface SingleSelectProps {
|
|
221
253
|
children?: React.ReactNode
|
|
222
254
|
className?: string
|
|
@@ -273,6 +305,149 @@ export interface SingleSelectProps {
|
|
|
273
305
|
|
|
274
306
|
export const SingleSelect: React.FC<SingleSelectProps>
|
|
275
307
|
|
|
308
|
+
/**
|
|
309
|
+
* ====================
|
|
310
|
+
*
|
|
311
|
+
* <SimpleSingleSelect />
|
|
312
|
+
*
|
|
313
|
+
* ====================
|
|
314
|
+
**/
|
|
315
|
+
|
|
316
|
+
type SimpleSingleSelectCustomOptionProp = (props: {
|
|
317
|
+
value: string
|
|
318
|
+
label: string
|
|
319
|
+
index: number
|
|
320
|
+
disabled: boolean
|
|
321
|
+
highlighted: boolean
|
|
322
|
+
}) => JSX.Element
|
|
323
|
+
|
|
324
|
+
export interface SimpleSingleSelectProps {
|
|
325
|
+
/** necessary for IDs that are required for accessibility **/
|
|
326
|
+
idPrefix: string.isRequired
|
|
327
|
+
|
|
328
|
+
/** An array of options **/
|
|
329
|
+
options: Array<{
|
|
330
|
+
label: string
|
|
331
|
+
value: string
|
|
332
|
+
component?: SimpleSingleSelectCustomOptionProp
|
|
333
|
+
disabled?: boolean
|
|
334
|
+
}>
|
|
335
|
+
|
|
336
|
+
/** A callback that will be called with the new value or an empty string **/
|
|
337
|
+
onChange: (value: string) => void
|
|
338
|
+
|
|
339
|
+
/** Will focus the select initially **/
|
|
340
|
+
autoFocus?: boolean
|
|
341
|
+
|
|
342
|
+
/** Additional class names that will be applied to the root element **/
|
|
343
|
+
className?: string
|
|
344
|
+
|
|
345
|
+
/** This will allow us to put an aria-label on the clear button **/
|
|
346
|
+
clearText?: string
|
|
347
|
+
|
|
348
|
+
/** Whether a clear button should be displayed or not **/
|
|
349
|
+
clearable?: boolean
|
|
350
|
+
|
|
351
|
+
/** Allows to override what's rendered inside the `button[role="option"]`.
|
|
352
|
+
* Can be overriden on an individual option basis **/
|
|
353
|
+
customOption?: SimpleSingleSelectCustomOptionProp
|
|
354
|
+
|
|
355
|
+
/** A value for a `data-test` attribute on the root element **/
|
|
356
|
+
dataTest?: string
|
|
357
|
+
|
|
358
|
+
/** Renders a select with lower height **/
|
|
359
|
+
dense?: boolean
|
|
360
|
+
|
|
361
|
+
/** Disables all interactions with the select (except focussing) **/
|
|
362
|
+
disabled?: boolean
|
|
363
|
+
|
|
364
|
+
/** Text or component to display when there are no options **/
|
|
365
|
+
empty?: React.ReactNode
|
|
366
|
+
|
|
367
|
+
/** Applies 'error' appearance for validation feedback. Mutually exclusive with `warning` and `valid` props **/
|
|
368
|
+
error?: boolean
|
|
369
|
+
|
|
370
|
+
/** Help text that will be displayed below the input **/
|
|
371
|
+
filterHelpText?: string
|
|
372
|
+
|
|
373
|
+
/** Value will be used as aria-label attribute on the filter input **/
|
|
374
|
+
filterLabel?: string
|
|
375
|
+
|
|
376
|
+
/** Placeholder for the filter input **/
|
|
377
|
+
filterPlaceholder?: string
|
|
378
|
+
|
|
379
|
+
/** Value of the filter input **/
|
|
380
|
+
filterValue?: string
|
|
381
|
+
|
|
382
|
+
/** Whether the select should display a filter input **/
|
|
383
|
+
filterable?: boolean
|
|
384
|
+
|
|
385
|
+
/** Should contain the id of the element that labels the select, if applicable **/
|
|
386
|
+
labelledBy?: string
|
|
387
|
+
|
|
388
|
+
/** Will show a loading indicator at the end of the options-list **/
|
|
389
|
+
loading?: boolean
|
|
390
|
+
|
|
391
|
+
/** Text that will be displayed next to the loading indicator **/
|
|
392
|
+
menuLoadingText?: string
|
|
393
|
+
|
|
394
|
+
/** Allows to modify the max height of the menu **/
|
|
395
|
+
menuMaxHeight?: string
|
|
396
|
+
|
|
397
|
+
/** String that will be displayed when the select is being filtered but the options array is empty **/
|
|
398
|
+
noMatchText?: string
|
|
399
|
+
|
|
400
|
+
/** For a11y: How aggressively the user should be updated about changes in options **/
|
|
401
|
+
optionUpdateStrategy?: 'off' | 'polite' | 'assertive'
|
|
402
|
+
|
|
403
|
+
/** String to show when there's no value and no valueLabel **/
|
|
404
|
+
placeholder?: string
|
|
405
|
+
|
|
406
|
+
/** String that will be displayed before the label of the selected option **/
|
|
407
|
+
prefix?: string
|
|
408
|
+
|
|
409
|
+
/** Standard HTML tab-index attribute that will be put on the combobox's root element **/
|
|
410
|
+
tabIndex?: number | string
|
|
411
|
+
|
|
412
|
+
/** Applies 'valid' appearance for validation feedback. Mutually exclusive with `warning` and `valid` props **/
|
|
413
|
+
valid?: boolean
|
|
414
|
+
|
|
415
|
+
/** As of now, this component does not support being uncontrolled **/
|
|
416
|
+
value?: string
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* When the option is not in the options list (e.g. not loaded or list is
|
|
420
|
+
* filtered), but a selected value needs to be displayed, then this prop can
|
|
421
|
+
* be used to supply the text to be shown.
|
|
422
|
+
**/
|
|
423
|
+
valueLabel?: string
|
|
424
|
+
|
|
425
|
+
/** Applies 'warning' appearance for validation feedback. Mutually exclusive with `warning` and `valid` props **/
|
|
426
|
+
warning?: boolean
|
|
427
|
+
|
|
428
|
+
/** Will be called when the combobox is loses focus **/
|
|
429
|
+
onBlur?: (e: React.FocusEvent<HTMLElement>) => void
|
|
430
|
+
|
|
431
|
+
/** Will be called when the last option is scrolled into the visible area **/
|
|
432
|
+
onEndReached?: () => void
|
|
433
|
+
|
|
434
|
+
/** Will be called when the filter value changes **/
|
|
435
|
+
onFilterChange?: (value: string) => void
|
|
436
|
+
|
|
437
|
+
/** Will be called when the combobox is being focused **/
|
|
438
|
+
onFocus?: (e: React.FocusEvent<HTMLElement>) => void
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
export const SimpleSingleSelect: React.FC<SimpleSingleSelectProps>
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* ====================
|
|
445
|
+
*
|
|
446
|
+
* <SingleSelectField />
|
|
447
|
+
*
|
|
448
|
+
* ====================
|
|
449
|
+
**/
|
|
450
|
+
|
|
276
451
|
export interface SingleSelectFieldProps {
|
|
277
452
|
/**
|
|
278
453
|
* Should be `SingleSelectOption` components
|
|
@@ -402,6 +577,14 @@ export class SingleSelectField extends React.Component<
|
|
|
402
577
|
render(): JSX.Element
|
|
403
578
|
}
|
|
404
579
|
|
|
580
|
+
/**
|
|
581
|
+
* ====================
|
|
582
|
+
*
|
|
583
|
+
* <SingleSelectOption />
|
|
584
|
+
*
|
|
585
|
+
* ====================
|
|
586
|
+
**/
|
|
587
|
+
|
|
405
588
|
export interface SingleSelectOptionProps {
|
|
406
589
|
label: string
|
|
407
590
|
value: string
|