@stack-spot/citric-react 0.42.0-beta.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -13
- package/dist/citric.css +2849 -3081
- package/dist/components/Accordion.d.ts +1 -1
- package/dist/components/Accordion.js +1 -1
- package/dist/components/Alert.d.ts +1 -1
- package/dist/components/Alert.js +1 -1
- package/dist/components/AsyncContent.d.ts +1 -1
- package/dist/components/AsyncContent.js +1 -1
- package/dist/components/Avatar.d.ts +1 -1
- package/dist/components/Avatar.js +1 -1
- package/dist/components/AvatarGroup.d.ts +1 -1
- package/dist/components/AvatarGroup.js +1 -1
- package/dist/components/Badge.d.ts +1 -1
- package/dist/components/Badge.js +1 -1
- package/dist/components/Blockquote.d.ts +1 -1
- package/dist/components/Blockquote.js +1 -1
- package/dist/components/Breadcrumb.d.ts +1 -1
- package/dist/components/Breadcrumb.js +1 -1
- package/dist/components/Button.d.ts +1 -1
- package/dist/components/Button.js +1 -1
- package/dist/components/ButtonLink.d.ts +1 -1
- package/dist/components/ButtonLink.js +1 -1
- package/dist/components/Card.d.ts +1 -1
- package/dist/components/Card.js +1 -1
- package/dist/components/Checkbox.d.ts +1 -1
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox.js +2 -2
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/CheckboxGroup.d.ts +1 -1
- package/dist/components/CheckboxGroup.js +1 -1
- package/dist/components/Circle.d.ts +1 -1
- package/dist/components/Circle.js +1 -1
- package/dist/components/CitricComponent.d.ts +1 -1
- package/dist/components/CitricComponent.d.ts.map +1 -1
- package/dist/components/Divider.d.ts +1 -1
- package/dist/components/Divider.js +1 -1
- package/dist/components/ErrorBoundary.d.ts +1 -1
- package/dist/components/ErrorBoundary.js +1 -1
- package/dist/components/ErrorMessage.d.ts +1 -1
- package/dist/components/ErrorMessage.js +1 -1
- package/dist/components/FallbackBoundary.d.ts +1 -1
- package/dist/components/FallbackBoundary.js +1 -1
- package/dist/components/Favorite.d.ts +1 -1
- package/dist/components/Favorite.js +1 -1
- package/dist/components/FieldGroup.d.ts +1 -1
- package/dist/components/FieldGroup.js +1 -1
- package/dist/components/Form.d.ts +2 -2
- package/dist/components/Form.js +1 -1
- package/dist/components/FormGroup.d.ts +1 -1
- package/dist/components/FormGroup.js +1 -1
- package/dist/components/Icon.d.ts +1 -1
- package/dist/components/Icon.js +1 -1
- package/dist/components/IconBox.d.ts +3 -3
- package/dist/components/IconBox.js +1 -1
- package/dist/components/ImageBox.d.ts +3 -3
- package/dist/components/ImageBox.js +1 -1
- package/dist/components/ImageWithFallback.d.ts +1 -1
- package/dist/components/ImageWithFallback.js +1 -1
- package/dist/components/Input.d.ts +1 -1
- package/dist/components/Input.js +1 -1
- package/dist/components/Link.d.ts +1 -1
- package/dist/components/Link.js +1 -1
- package/dist/components/LoadingPanel.d.ts +1 -1
- package/dist/components/LoadingPanel.js +1 -1
- package/dist/components/MenuOverlay/Menu.d.ts +1 -1
- package/dist/components/MenuOverlay/Menu.js +1 -1
- package/dist/components/MenuOverlay/index.d.ts +1 -1
- package/dist/components/MenuOverlay/index.js +1 -1
- package/dist/components/Overlay/index.d.ts +1 -1
- package/dist/components/Overlay/index.js +1 -1
- package/dist/components/Pagination.d.ts +1 -1
- package/dist/components/Pagination.js +1 -1
- package/dist/components/ProgressBar.d.ts +1 -1
- package/dist/components/ProgressBar.js +1 -1
- package/dist/components/ProgressCircular.d.ts +1 -1
- package/dist/components/ProgressCircular.js +1 -1
- package/dist/components/RadioGroup.d.ts +1 -1
- package/dist/components/RadioGroup.js +1 -1
- package/dist/components/Rating.d.ts +1 -1
- package/dist/components/Rating.js +1 -1
- package/dist/components/Select/MultiSelect.d.ts +1 -1
- package/dist/components/Select/MultiSelect.js +1 -1
- package/dist/components/Select/RichSelect.d.ts +1 -1
- package/dist/components/Select/RichSelect.js +1 -1
- package/dist/components/Select/SimpleSelect.d.ts +1 -1
- package/dist/components/Select/SimpleSelect.js +1 -1
- package/dist/components/Select/index.d.ts +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/SelectBox.d.ts +9 -1
- package/dist/components/SelectBox.d.ts.map +1 -1
- package/dist/components/SelectBox.js +6 -5
- package/dist/components/SelectBox.js.map +1 -1
- package/dist/components/Skeleton.d.ts +1 -1
- package/dist/components/Skeleton.js +1 -1
- package/dist/components/Slider.d.ts +1 -1
- package/dist/components/Slider.js +1 -1
- package/dist/components/SmartTable.d.ts +1 -1
- package/dist/components/SmartTable.js +1 -1
- package/dist/components/Stepper.d.ts +1 -1
- package/dist/components/Stepper.js +1 -1
- package/dist/components/Table.d.ts +3 -3
- package/dist/components/Table.js +1 -1
- package/dist/components/Tabs/index.d.ts +1 -1
- package/dist/components/Tabs/index.js +1 -1
- package/dist/components/Textarea.d.ts +1 -1
- package/dist/components/Textarea.js +1 -1
- package/dist/components/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip.js +1 -1
- package/dist/context/CitricProvider.d.ts +1 -1
- package/dist/context/CitricProvider.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/overlay.js +1 -1
- package/dist/theme.css +415 -415
- package/dist/utils/css.js +1 -1
- package/dist/utils/css.js.map +1 -1
- package/package.json +1 -1
- package/scripts/build-css.ts +49 -49
- package/src/components/Accordion.tsx +130 -130
- package/src/components/Alert.tsx +24 -24
- package/src/components/AsyncContent.tsx +75 -75
- package/src/components/Avatar.tsx +45 -45
- package/src/components/AvatarGroup.tsx +49 -49
- package/src/components/Badge.tsx +47 -47
- package/src/components/Blockquote.tsx +18 -18
- package/src/components/Breadcrumb.tsx +33 -33
- package/src/components/Button.tsx +105 -105
- package/src/components/ButtonLink.tsx +45 -45
- package/src/components/Card.tsx +68 -68
- package/src/components/Checkbox.tsx +51 -52
- package/src/components/CheckboxGroup.tsx +153 -153
- package/src/components/Circle.tsx +43 -43
- package/src/components/CitricComponent.ts +47 -47
- package/src/components/Divider.tsx +24 -24
- package/src/components/ErrorBoundary.tsx +75 -75
- package/src/components/ErrorMessage.tsx +11 -11
- package/src/components/FallbackBoundary.tsx +40 -40
- package/src/components/Favorite.tsx +57 -57
- package/src/components/FieldGroup.tsx +46 -46
- package/src/components/Form.tsx +36 -36
- package/src/components/FormGroup.tsx +57 -57
- package/src/components/Icon.tsx +35 -35
- package/src/components/IconBox.tsx +134 -134
- package/src/components/ImageBox.tsx +125 -125
- package/src/components/ImageWithFallback.tsx +65 -65
- package/src/components/Input.tsx +49 -49
- package/src/components/Link.tsx +55 -55
- package/src/components/LoadingPanel.tsx +12 -12
- package/src/components/MenuOverlay/Menu.tsx +158 -158
- package/src/components/MenuOverlay/context.ts +20 -20
- package/src/components/MenuOverlay/index.tsx +55 -55
- package/src/components/MenuOverlay/keyboard.ts +60 -60
- package/src/components/MenuOverlay/types.ts +171 -171
- package/src/components/Overlay/context.ts +10 -10
- package/src/components/Overlay/index.tsx +182 -182
- package/src/components/Overlay/types.ts +75 -75
- package/src/components/Pagination.tsx +133 -133
- package/src/components/ProgressBar.tsx +45 -45
- package/src/components/ProgressCircular.tsx +45 -45
- package/src/components/RadioGroup.tsx +147 -147
- package/src/components/Rating.tsx +98 -98
- package/src/components/Select/MultiSelect.tsx +217 -217
- package/src/components/Select/RichSelect.tsx +128 -128
- package/src/components/Select/SimpleSelect.tsx +73 -73
- package/src/components/Select/hooks.ts +133 -133
- package/src/components/Select/index.tsx +35 -35
- package/src/components/Select/types.ts +134 -134
- package/src/components/SelectBox.tsx +181 -167
- package/src/components/Skeleton.tsx +53 -53
- package/src/components/Slider.tsx +89 -89
- package/src/components/SmartTable.tsx +227 -227
- package/src/components/Stepper.tsx +163 -163
- package/src/components/Table.tsx +234 -234
- package/src/components/Tabs/TabController.ts +54 -54
- package/src/components/Tabs/index.tsx +106 -106
- package/src/components/Tabs/types.ts +67 -67
- package/src/components/Tabs/utils.ts +6 -6
- package/src/components/Text.ts +111 -111
- package/src/components/Textarea.tsx +27 -27
- package/src/components/Tooltip.tsx +83 -83
- package/src/components/layout.tsx +101 -101
- package/src/context/CitricContext.tsx +4 -4
- package/src/context/CitricProvider.tsx +14 -14
- package/src/context/hooks.ts +6 -6
- package/src/index.ts +58 -59
- package/src/overlay.ts +348 -348
- package/src/types.ts +235 -235
- package/src/utils/ValueController.ts +28 -28
- package/src/utils/acessibility.ts +92 -92
- package/src/utils/checkbox.ts +121 -121
- package/src/utils/css.ts +119 -119
- package/src/utils/options.ts +9 -9
- package/src/utils/radio.ts +93 -93
- package/src/utils/react.ts +6 -6
- package/src/utils/time.ts +5 -5
- package/tsconfig.json +10 -10
- package/dist/components/Autocomplete/Autocomplete.d.ts +0 -211
- package/dist/components/Autocomplete/Autocomplete.d.ts.map +0 -1
- package/dist/components/Autocomplete/Autocomplete.js +0 -409
- package/dist/components/Autocomplete/Autocomplete.js.map +0 -1
- package/dist/components/Autocomplete/index.d.ts +0 -3
- package/dist/components/Autocomplete/index.d.ts.map +0 -1
- package/dist/components/Autocomplete/index.js +0 -2
- package/dist/components/Autocomplete/index.js.map +0 -1
- package/src/components/Autocomplete/Autocomplete.tsx +0 -794
- package/src/components/Autocomplete/index.ts +0 -3
package/src/utils/options.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { isNil } from 'lodash'
|
|
2
|
-
|
|
3
|
-
export function defaultRenderLabel(option: any) {
|
|
4
|
-
return isNil(option) ? '' : `${option}`
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export function defaultRenderKey(option: any) {
|
|
8
|
-
return ['string', 'number'].includes(typeof option) ? `${option}` : undefined
|
|
9
|
-
}
|
|
1
|
+
import { isNil } from 'lodash'
|
|
2
|
+
|
|
3
|
+
export function defaultRenderLabel(option: any) {
|
|
4
|
+
return isNil(option) ? '' : `${option}`
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function defaultRenderKey(option: any) {
|
|
8
|
+
return ['string', 'number'].includes(typeof option) ? `${option}` : undefined
|
|
9
|
+
}
|
package/src/utils/radio.ts
CHANGED
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
import { useEffect, useMemo, useRef, useState } from 'react'
|
|
2
|
-
import { defaultRenderKey } from './options'
|
|
3
|
-
|
|
4
|
-
export interface RadioGroupHookParams<T, F = string> {
|
|
5
|
-
/**
|
|
6
|
-
* The initial value for the radio group.
|
|
7
|
-
*/
|
|
8
|
-
initialValue?: T,
|
|
9
|
-
/**
|
|
10
|
-
* A function to apply a filter to an option. Must return true if the option respects the filter and false otherwise.
|
|
11
|
-
* @param filter the current filter.
|
|
12
|
-
* @param option the current option.
|
|
13
|
-
* @returns true if the option should pass the filter, false if the option should be discarded.
|
|
14
|
-
*/
|
|
15
|
-
applyFilter?: (filter: F, option: T) => boolean,
|
|
16
|
-
/**
|
|
17
|
-
* The full set of options for the radio group.
|
|
18
|
-
*/
|
|
19
|
-
options: T[],
|
|
20
|
-
/**
|
|
21
|
-
* A function that produces a unique id for an option.
|
|
22
|
-
* @param option the current option.
|
|
23
|
-
* @returns a unique key.
|
|
24
|
-
*/
|
|
25
|
-
renderKey: (option: T) => string | number | undefined,
|
|
26
|
-
/**
|
|
27
|
-
* A function to call whenever the value changes.
|
|
28
|
-
* @param newValue the new value.
|
|
29
|
-
* @param previousValue the previous value.
|
|
30
|
-
*/
|
|
31
|
-
onChange?: (newValue: T | undefined, previousValue: T | undefined) => void,
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Use this hook to easily implement filtering for a radio group.
|
|
36
|
-
* @param params the parameters to create the controls.
|
|
37
|
-
* @returns the checkbox controls.
|
|
38
|
-
*/
|
|
39
|
-
export function useRadioGroupControls<T, F = string>(params: RadioGroupHookParams<T, F>) {
|
|
40
|
-
const [value, setValue] = useState(params.initialValue)
|
|
41
|
-
const [filter, setFilter] = useState<F | undefined>()
|
|
42
|
-
const previousValue = useRef(value)
|
|
43
|
-
const renderKey = params.renderKey ?? defaultRenderKey
|
|
44
|
-
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
params.onChange?.(value, previousValue.current)
|
|
47
|
-
previousValue.current = value
|
|
48
|
-
}, [value])
|
|
49
|
-
|
|
50
|
-
const { options, isUnfilteredButChecked } = useMemo(() => {
|
|
51
|
-
if (!params.applyFilter || !filter) return { options: params.options, isUnfilteredButChecked: () => false }
|
|
52
|
-
const valueKey = value ? renderKey(value) : undefined
|
|
53
|
-
const isValueFilteredOut = value && !params.applyFilter?.(filter, value)
|
|
54
|
-
const filtered = params.options.filter(o => params.applyFilter?.(filter, o))
|
|
55
|
-
return {
|
|
56
|
-
options: isValueFilteredOut ? [value, ...filtered] : filtered,
|
|
57
|
-
isUnfilteredButChecked: (o: T) => isValueFilteredOut && renderKey(o) === valueKey,
|
|
58
|
-
}
|
|
59
|
-
}, [params.options, filter])
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
/**
|
|
63
|
-
* The current filter applied.
|
|
64
|
-
*/
|
|
65
|
-
filter,
|
|
66
|
-
/**
|
|
67
|
-
* Apply a new filter.
|
|
68
|
-
*/
|
|
69
|
-
setFilter: setFilter,
|
|
70
|
-
/**
|
|
71
|
-
* The options that should be passed to the radio group.
|
|
72
|
-
*/
|
|
73
|
-
options,
|
|
74
|
-
/**
|
|
75
|
-
* The value that should be passed to the radio group.
|
|
76
|
-
*/
|
|
77
|
-
value,
|
|
78
|
-
/**
|
|
79
|
-
* Changes the current value, should be passed to the property `onChange` of the radio group.
|
|
80
|
-
*/
|
|
81
|
-
setValue,
|
|
82
|
-
/**
|
|
83
|
-
* A function to render a unique key for an option. Should be passed to the property `renderKey` of the radio group.
|
|
84
|
-
*/
|
|
85
|
-
renderKey,
|
|
86
|
-
/**
|
|
87
|
-
* A function that returns true if the option is filtered out, but checked.
|
|
88
|
-
* @param option the option to check.
|
|
89
|
-
* @returns true if the option was filtered out, but is checked; false otherwise.
|
|
90
|
-
*/
|
|
91
|
-
isUnfilteredButChecked,
|
|
92
|
-
}
|
|
93
|
-
}
|
|
1
|
+
import { useEffect, useMemo, useRef, useState } from 'react'
|
|
2
|
+
import { defaultRenderKey } from './options'
|
|
3
|
+
|
|
4
|
+
export interface RadioGroupHookParams<T, F = string> {
|
|
5
|
+
/**
|
|
6
|
+
* The initial value for the radio group.
|
|
7
|
+
*/
|
|
8
|
+
initialValue?: T,
|
|
9
|
+
/**
|
|
10
|
+
* A function to apply a filter to an option. Must return true if the option respects the filter and false otherwise.
|
|
11
|
+
* @param filter the current filter.
|
|
12
|
+
* @param option the current option.
|
|
13
|
+
* @returns true if the option should pass the filter, false if the option should be discarded.
|
|
14
|
+
*/
|
|
15
|
+
applyFilter?: (filter: F, option: T) => boolean,
|
|
16
|
+
/**
|
|
17
|
+
* The full set of options for the radio group.
|
|
18
|
+
*/
|
|
19
|
+
options: T[],
|
|
20
|
+
/**
|
|
21
|
+
* A function that produces a unique id for an option.
|
|
22
|
+
* @param option the current option.
|
|
23
|
+
* @returns a unique key.
|
|
24
|
+
*/
|
|
25
|
+
renderKey: (option: T) => string | number | undefined,
|
|
26
|
+
/**
|
|
27
|
+
* A function to call whenever the value changes.
|
|
28
|
+
* @param newValue the new value.
|
|
29
|
+
* @param previousValue the previous value.
|
|
30
|
+
*/
|
|
31
|
+
onChange?: (newValue: T | undefined, previousValue: T | undefined) => void,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Use this hook to easily implement filtering for a radio group.
|
|
36
|
+
* @param params the parameters to create the controls.
|
|
37
|
+
* @returns the checkbox controls.
|
|
38
|
+
*/
|
|
39
|
+
export function useRadioGroupControls<T, F = string>(params: RadioGroupHookParams<T, F>) {
|
|
40
|
+
const [value, setValue] = useState(params.initialValue)
|
|
41
|
+
const [filter, setFilter] = useState<F | undefined>()
|
|
42
|
+
const previousValue = useRef(value)
|
|
43
|
+
const renderKey = params.renderKey ?? defaultRenderKey
|
|
44
|
+
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
params.onChange?.(value, previousValue.current)
|
|
47
|
+
previousValue.current = value
|
|
48
|
+
}, [value])
|
|
49
|
+
|
|
50
|
+
const { options, isUnfilteredButChecked } = useMemo(() => {
|
|
51
|
+
if (!params.applyFilter || !filter) return { options: params.options, isUnfilteredButChecked: () => false }
|
|
52
|
+
const valueKey = value ? renderKey(value) : undefined
|
|
53
|
+
const isValueFilteredOut = value && !params.applyFilter?.(filter, value)
|
|
54
|
+
const filtered = params.options.filter(o => params.applyFilter?.(filter, o))
|
|
55
|
+
return {
|
|
56
|
+
options: isValueFilteredOut ? [value, ...filtered] : filtered,
|
|
57
|
+
isUnfilteredButChecked: (o: T) => isValueFilteredOut && renderKey(o) === valueKey,
|
|
58
|
+
}
|
|
59
|
+
}, [params.options, filter])
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
/**
|
|
63
|
+
* The current filter applied.
|
|
64
|
+
*/
|
|
65
|
+
filter,
|
|
66
|
+
/**
|
|
67
|
+
* Apply a new filter.
|
|
68
|
+
*/
|
|
69
|
+
setFilter: setFilter,
|
|
70
|
+
/**
|
|
71
|
+
* The options that should be passed to the radio group.
|
|
72
|
+
*/
|
|
73
|
+
options,
|
|
74
|
+
/**
|
|
75
|
+
* The value that should be passed to the radio group.
|
|
76
|
+
*/
|
|
77
|
+
value,
|
|
78
|
+
/**
|
|
79
|
+
* Changes the current value, should be passed to the property `onChange` of the radio group.
|
|
80
|
+
*/
|
|
81
|
+
setValue,
|
|
82
|
+
/**
|
|
83
|
+
* A function to render a unique key for an option. Should be passed to the property `renderKey` of the radio group.
|
|
84
|
+
*/
|
|
85
|
+
renderKey,
|
|
86
|
+
/**
|
|
87
|
+
* A function that returns true if the option is filtered out, but checked.
|
|
88
|
+
* @param option the option to check.
|
|
89
|
+
* @returns true if the option was filtered out, but is checked; false otherwise.
|
|
90
|
+
*/
|
|
91
|
+
isUnfilteredButChecked,
|
|
92
|
+
}
|
|
93
|
+
}
|
package/src/utils/react.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/* eslint-disable react/display-name */
|
|
2
|
-
import { forwardRef } from 'react'
|
|
3
|
-
|
|
4
|
-
export function withRef<T extends (...args: any[]) => any>(fc: T): T {
|
|
5
|
-
return forwardRef((props, ref) => fc({ ...props, ref })) as any
|
|
6
|
-
}
|
|
1
|
+
/* eslint-disable react/display-name */
|
|
2
|
+
import { forwardRef } from 'react'
|
|
3
|
+
|
|
4
|
+
export function withRef<T extends (...args: any[]) => any>(fc: T): T {
|
|
5
|
+
return forwardRef((props, ref) => fc({ ...props, ref })) as any
|
|
6
|
+
}
|
package/src/utils/time.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export function delay(ms: number) {
|
|
2
|
-
return new Promise<void>(resolve => {
|
|
3
|
-
setTimeout(resolve, ms)
|
|
4
|
-
})
|
|
5
|
-
}
|
|
1
|
+
export function delay(ms: number) {
|
|
2
|
+
return new Promise<void>(resolve => {
|
|
3
|
+
setTimeout(resolve, ms)
|
|
4
|
+
})
|
|
5
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.json",
|
|
3
|
-
"include": ["src"],
|
|
4
|
-
"compilerOptions": {
|
|
5
|
-
"outDir": "dist",
|
|
6
|
-
"paths": {
|
|
7
|
-
"css/*": ["../css/*"]
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.json",
|
|
3
|
+
"include": ["src"],
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "dist",
|
|
6
|
+
"paths": {
|
|
7
|
+
"css/*": ["../css/*"]
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { ColorPaletteName, ColorSchemeName } from '@stack-spot/portal-theme';
|
|
2
|
-
export interface BaseAutocompleteProps<T, Multiple extends boolean = false> {
|
|
3
|
-
/**
|
|
4
|
-
* The list of options available for selection.
|
|
5
|
-
*/
|
|
6
|
-
options: T[];
|
|
7
|
-
/**
|
|
8
|
-
* The current value(s) selected.
|
|
9
|
-
* - Single selection: T | null
|
|
10
|
-
* - Multiple selection: T[]
|
|
11
|
-
*/
|
|
12
|
-
value: Multiple extends true ? T[] : (T | null);
|
|
13
|
-
/**
|
|
14
|
-
* Callback fired when the value changes.
|
|
15
|
-
*/
|
|
16
|
-
onChange: Multiple extends true ? (value: T[]) => void : (value: T | null) => void;
|
|
17
|
-
/**
|
|
18
|
-
* If true, enables multiple selection mode.
|
|
19
|
-
* @default false
|
|
20
|
-
*/
|
|
21
|
-
multiple?: Multiple;
|
|
22
|
-
/**
|
|
23
|
-
* If true, allows the user to enter values that are not in the options list.
|
|
24
|
-
* @default false
|
|
25
|
-
*/
|
|
26
|
-
freeSolo?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* If true, allows creating new options when no match is found.
|
|
29
|
-
* Shows an "Add [value]" option at the top of the list.
|
|
30
|
-
* @default false
|
|
31
|
-
*/
|
|
32
|
-
creatable?: boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Callback fired when a new option is created.
|
|
35
|
-
* Required when creatable is true and you want manual control.
|
|
36
|
-
*/
|
|
37
|
-
onCreate?: (inputValue: string) => void;
|
|
38
|
-
/**
|
|
39
|
-
* Function to create a new option object from the input value.
|
|
40
|
-
* Required when creatable is true without onCreate and working with objects.
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```tsx
|
|
44
|
-
* getOptionFromInput={(inputValue) => ({ id: Date.now(), name: inputValue })}
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
getOptionFromInput?: (inputValue: string) => T;
|
|
48
|
-
/**
|
|
49
|
-
* The input value (controlled).
|
|
50
|
-
*/
|
|
51
|
-
inputValue?: string;
|
|
52
|
-
/**
|
|
53
|
-
* Callback fired when the input value changes.
|
|
54
|
-
*/
|
|
55
|
-
onInputChange?: (value: string) => void;
|
|
56
|
-
/**
|
|
57
|
-
* A function to render the item label.
|
|
58
|
-
* @default "the item's toString() result."
|
|
59
|
-
*/
|
|
60
|
-
renderLabel?: (option: T) => string;
|
|
61
|
-
/**
|
|
62
|
-
* A function to generate a unique key for each option.
|
|
63
|
-
*/
|
|
64
|
-
renderKey?: (option: T) => string | number;
|
|
65
|
-
/**
|
|
66
|
-
* A function to render an option in the dropdown.
|
|
67
|
-
*/
|
|
68
|
-
renderOption?: (option: T) => React.ReactNode;
|
|
69
|
-
/**
|
|
70
|
-
* A function to render a tag in multiple mode.
|
|
71
|
-
*/
|
|
72
|
-
renderTag?: (option: T, onRemove: () => void) => React.ReactNode;
|
|
73
|
-
/**
|
|
74
|
-
* Custom filter function for options.
|
|
75
|
-
* @default filters by label includes input (case insensitive)
|
|
76
|
-
*/
|
|
77
|
-
filterOptions?: (options: T[], inputValue: string) => T[];
|
|
78
|
-
/**
|
|
79
|
-
* If true, shows a loading indicator.
|
|
80
|
-
* @default false
|
|
81
|
-
*/
|
|
82
|
-
loading?: boolean;
|
|
83
|
-
/**
|
|
84
|
-
* If true, the component is disabled.
|
|
85
|
-
* @default false
|
|
86
|
-
*/
|
|
87
|
-
disabled?: boolean;
|
|
88
|
-
/**
|
|
89
|
-
* Placeholder text for the input.
|
|
90
|
-
*/
|
|
91
|
-
placeholder?: string;
|
|
92
|
-
/**
|
|
93
|
-
* Maximum height for the dropdown panel in pixels.
|
|
94
|
-
*/
|
|
95
|
-
maxHeight?: number;
|
|
96
|
-
/**
|
|
97
|
-
* Maximum number of tags to show before truncating.
|
|
98
|
-
* Only applies when multiple is true.
|
|
99
|
-
*/
|
|
100
|
-
maxTagsToShow?: number;
|
|
101
|
-
/**
|
|
102
|
-
* If true, automatically highlights the first option.
|
|
103
|
-
* @default false
|
|
104
|
-
*/
|
|
105
|
-
autoHighlight?: boolean;
|
|
106
|
-
/**
|
|
107
|
-
* If true, clears the input value when an option is selected.
|
|
108
|
-
* Only applies when multiple is true.
|
|
109
|
-
* @default true (for multiple)
|
|
110
|
-
*/
|
|
111
|
-
clearOnSelect?: boolean;
|
|
112
|
-
/**
|
|
113
|
-
* If true, the popup will open on input focus.
|
|
114
|
-
* @default true
|
|
115
|
-
*/
|
|
116
|
-
openOnFocus?: boolean;
|
|
117
|
-
/**
|
|
118
|
-
* Callback fired when an option is selected (before onChange).
|
|
119
|
-
*/
|
|
120
|
-
onSelect?: (option: T | null) => void;
|
|
121
|
-
/**
|
|
122
|
-
* Text to display when no options are available.
|
|
123
|
-
*/
|
|
124
|
-
noOptionsText?: string;
|
|
125
|
-
/**
|
|
126
|
-
* Text to display when loading.
|
|
127
|
-
*/
|
|
128
|
-
loadingText?: string;
|
|
129
|
-
/**
|
|
130
|
-
* Callback fired when the user scrolls to the end of the options list.
|
|
131
|
-
* Useful for implementing infinite scroll/pagination.
|
|
132
|
-
*
|
|
133
|
-
* @example
|
|
134
|
-
* ```tsx
|
|
135
|
-
* <Autocomplete
|
|
136
|
-
* options={options}
|
|
137
|
-
* onScrollEnd={() => fetchMoreOptions()}
|
|
138
|
-
* loading={isFetchingMore}
|
|
139
|
-
* />
|
|
140
|
-
* ```
|
|
141
|
-
*/
|
|
142
|
-
onScrollEnd?: () => void;
|
|
143
|
-
/**
|
|
144
|
-
* Margin in pixels before the end of the list to trigger onScrollEnd.
|
|
145
|
-
* @default 200
|
|
146
|
-
*/
|
|
147
|
-
scrollEndMargin?: number;
|
|
148
|
-
/**
|
|
149
|
-
* Color scheme for the tags (badges) in multiple mode.
|
|
150
|
-
* @example 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info'
|
|
151
|
-
*/
|
|
152
|
-
tagColorScheme?: ColorSchemeName;
|
|
153
|
-
/**
|
|
154
|
-
* Color palette for the tags (badges) in multiple mode.
|
|
155
|
-
* @example 'blue' | 'green' | 'red' | 'yellow' | 'purple'
|
|
156
|
-
*/
|
|
157
|
-
tagColorPalette?: ColorPaletteName;
|
|
158
|
-
/**
|
|
159
|
-
* Appearance of the tags (badges) in multiple mode.
|
|
160
|
-
* @default 'circle'
|
|
161
|
-
*/
|
|
162
|
-
tagAppearance?: 'square' | 'circle';
|
|
163
|
-
}
|
|
164
|
-
export type AutocompleteProps<T, Multiple extends boolean = false> = Omit<React.JSX.IntrinsicElements['div'], 'ref' | 'onChange' | 'onSelect'> & BaseAutocompleteProps<T, Multiple>;
|
|
165
|
-
/**
|
|
166
|
-
* A combination of a text input and a dropdown that suggests options as the user types.
|
|
167
|
-
* Supports both single and multiple selection modes, similar to Material-UI Autocomplete.
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
* Basic usage (single selection):
|
|
171
|
-
* ```tsx
|
|
172
|
-
* const [value, setValue] = useState<Option | null>(null)
|
|
173
|
-
*
|
|
174
|
-
* <Autocomplete
|
|
175
|
-
* options={options}
|
|
176
|
-
* value={value}
|
|
177
|
-
* onChange={setValue}
|
|
178
|
-
* renderLabel={o => o.name}
|
|
179
|
-
* renderKey={o => o.id}
|
|
180
|
-
* />
|
|
181
|
-
* ```
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
* Multiple selection with tags:
|
|
185
|
-
* ```tsx
|
|
186
|
-
* const [value, setValue] = useState<Option[]>([])
|
|
187
|
-
*
|
|
188
|
-
* <Autocomplete
|
|
189
|
-
* multiple
|
|
190
|
-
* options={options}
|
|
191
|
-
* value={value}
|
|
192
|
-
* onChange={setValue}
|
|
193
|
-
* renderLabel={o => o.name}
|
|
194
|
-
* renderKey={o => o.id}
|
|
195
|
-
* />
|
|
196
|
-
* ```
|
|
197
|
-
*
|
|
198
|
-
* @example
|
|
199
|
-
* Free solo (allow custom values):
|
|
200
|
-
* ```tsx
|
|
201
|
-
* <Autocomplete
|
|
202
|
-
* freeSolo
|
|
203
|
-
* options={options}
|
|
204
|
-
* value={value}
|
|
205
|
-
* onChange={setValue}
|
|
206
|
-
* renderLabel={o => o.name}
|
|
207
|
-
* />
|
|
208
|
-
* ```
|
|
209
|
-
*/
|
|
210
|
-
export declare const Autocomplete: <T, Multiple extends boolean = false>(props: AutocompleteProps<T, Multiple>) => React.ReactElement;
|
|
211
|
-
//# sourceMappingURL=Autocomplete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"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"}
|