@toptal/picasso 31.2.0 → 31.3.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/NonNativeSelect/NonNativeSelect.js +8 -4
- package/NonNativeSelect/NonNativeSelect.js.map +1 -1
- package/SelectBase/hooks/use-select-state/use-select-state.d.ts +1 -0
- package/SelectBase/hooks/use-select-state/use-select-state.js +3 -2
- package/SelectBase/hooks/use-select-state/use-select-state.js.map +1 -1
- package/SelectBase/types.d.ts +2 -0
- package/SelectBase/utils/filter-options/filter-options.d.ts +3 -1
- package/SelectBase/utils/filter-options/filter-options.js +5 -8
- package/SelectBase/utils/filter-options/filter-options.js.map +1 -1
- package/SelectBase/utils/filter-options/index.d.ts +1 -0
- package/SelectBase/utils/filter-options/index.js +1 -0
- package/SelectBase/utils/filter-options/index.js.map +1 -1
- package/SelectBase/utils/index.d.ts +1 -1
- package/SelectBase/utils/index.js +1 -1
- package/SelectBase/utils/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@ import Popper from '../Popper';
|
|
|
20
20
|
import MenuItem from '../MenuItem';
|
|
21
21
|
import SelectCaret from '../SelectCaret';
|
|
22
22
|
import NonNativeSelectLoader from '../NonNativeSelectLoader';
|
|
23
|
-
import { useAdornments, useSelectState, useSelectProps, renderOption as defaultRenderOption, getOptionText, DEFAULT_LIMIT, DEFAULT_SEARCH_THRESHOLD, countOptions, } from '../SelectBase';
|
|
23
|
+
import { useAdornments, useSelectState, useSelectProps, renderOption as defaultRenderOption, getOptionText, DEFAULT_LIMIT, DEFAULT_SEARCH_THRESHOLD, countOptions, filterFlatOptions as defaultFilterOptions, } from '../SelectBase';
|
|
24
24
|
import NonNativeSelectOptions from '../NonNativeSelectOptions';
|
|
25
25
|
import { documentable, forwardRef, noop, useCombinedRefs } from '../utils';
|
|
26
26
|
import styles from './styles';
|
|
@@ -28,10 +28,12 @@ import NonNativeSelectLimitFooter from '../NonNativeSelectLimitFooter';
|
|
|
28
28
|
import InputAdornment from '../InputAdornment';
|
|
29
29
|
const useStyles = makeStyles(styles);
|
|
30
30
|
const DEFAULT_EMPTY_ARRAY_VALUE = [];
|
|
31
|
-
export const NonNativeSelect = documentable(forwardRef(
|
|
32
|
-
|
|
31
|
+
export const NonNativeSelect = documentable(forwardRef(
|
|
32
|
+
// eslint-disable-next-line max-lines-per-function
|
|
33
|
+
(props, ref) => {
|
|
34
|
+
const { className, style, width = 'full', menuWidth, loading, id, icon, iconPosition = 'start', name, noOptionsText, renderOption = defaultRenderOption, placeholder, disabled, disablePortal, error, status, multiple, value = multiple ? DEFAULT_EMPTY_ARRAY_VALUE : '', size, enableReset, popperContainer, enableAutofill, autoComplete, searchPlaceholder, searchThreshold = DEFAULT_SEARCH_THRESHOLD, limit = DEFAULT_LIMIT, getDisplayValue = getOptionText, options, onChange, filterOptions = defaultFilterOptions,
|
|
33
35
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
34
|
-
native, testIds } = props, rest = __rest(props, ["className", "style", "width", "menuWidth", "loading", "id", "icon", "iconPosition", "name", "noOptionsText", "renderOption", "placeholder", "disabled", "disablePortal", "error", "status", "multiple", "value", "size", "enableReset", "popperContainer", "enableAutofill", "autoComplete", "searchPlaceholder", "searchThreshold", "limit", "getDisplayValue", "options", "onChange", "native", "testIds"]);
|
|
36
|
+
native, testIds } = props, rest = __rest(props, ["className", "style", "width", "menuWidth", "loading", "id", "icon", "iconPosition", "name", "noOptionsText", "renderOption", "placeholder", "disabled", "disablePortal", "error", "status", "multiple", "value", "size", "enableReset", "popperContainer", "enableAutofill", "autoComplete", "searchPlaceholder", "searchThreshold", "limit", "getDisplayValue", "options", "onChange", "filterOptions", "native", "testIds"]);
|
|
35
37
|
const classes = useStyles();
|
|
36
38
|
const selectRef = useCombinedRefs(ref, useRef(null));
|
|
37
39
|
const searchInputRef = useRef(null);
|
|
@@ -39,6 +41,7 @@ export const NonNativeSelect = documentable(forwardRef((props, ref) => {
|
|
|
39
41
|
const inputWrapperRef = useRef(null);
|
|
40
42
|
const selectState = useSelectState({
|
|
41
43
|
getDisplayValue,
|
|
44
|
+
filterFlatOptions: filterOptions,
|
|
42
45
|
options,
|
|
43
46
|
disabled,
|
|
44
47
|
multiple,
|
|
@@ -99,6 +102,7 @@ NonNativeSelect.defaultProps = {
|
|
|
99
102
|
limit: DEFAULT_LIMIT,
|
|
100
103
|
enableAutofill: false,
|
|
101
104
|
searchPlaceholder: 'Search',
|
|
105
|
+
filterOptions: defaultFilterOptions,
|
|
102
106
|
};
|
|
103
107
|
NonNativeSelect.displayName = 'NonNativeSelect';
|
|
104
108
|
export default NonNativeSelect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NonNativeSelect.js","sourceRoot":"","sources":["../../src/NonNativeSelect/NonNativeSelect.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAS,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,UAAU,MAAM,oCAAoC,CAAA;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,aAAa,MAAM,kBAAkB,CAAA;AAC5C,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,QAAQ,MAAM,aAAa,CAAA;AAClC,OAAO,WAAW,MAAM,gBAAgB,CAAA;AACxC,OAAO,qBAAqB,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,IAAI,mBAAmB,EAGnC,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,YAAY,
|
|
1
|
+
{"version":3,"file":"NonNativeSelect.js","sourceRoot":"","sources":["../../src/NonNativeSelect/NonNativeSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Option, OptionGroups, ValueType, UseSelectStateOutput } from '../../typ
|
|
|
2
2
|
export declare const EMPTY_INPUT_VALUE = "";
|
|
3
3
|
export interface Props {
|
|
4
4
|
getDisplayValue: (option: Option | null) => string;
|
|
5
|
+
filterFlatOptions?: (options: Option[], filterOptionsValue: string, getDisplayValue: (option: Option | null) => string) => Option[];
|
|
5
6
|
options: Option[] | OptionGroups;
|
|
6
7
|
disabled?: boolean;
|
|
7
8
|
multiple?: boolean;
|
|
@@ -4,7 +4,7 @@ import { getMultipleSelection, getSingleSelection, getSelectedOptions, DEFAULT_S
|
|
|
4
4
|
import useHighlightedIndex from '../use-highlighted-index';
|
|
5
5
|
export const EMPTY_INPUT_VALUE = '';
|
|
6
6
|
const useSelectState = (props) => {
|
|
7
|
-
const { getDisplayValue, options = [], disabled = false, multiple, value: valueProp, searchThreshold = DEFAULT_SEARCH_THRESHOLD, limit = DEFAULT_LIMIT, } = props;
|
|
7
|
+
const { getDisplayValue, filterFlatOptions, options = [], disabled = false, multiple, value: valueProp, searchThreshold = DEFAULT_SEARCH_THRESHOLD, limit = DEFAULT_LIMIT, } = props;
|
|
8
8
|
const flatOptions = useMemo(() => flattenOptions(options), [options]);
|
|
9
9
|
const selectedOptions = useMemo(() => getSelectedOptions(flatOptions, valueProp), [flatOptions, valueProp]);
|
|
10
10
|
const selection = useMemo(() => multiple
|
|
@@ -16,7 +16,8 @@ const useSelectState = (props) => {
|
|
|
16
16
|
options,
|
|
17
17
|
filterOptionsValue,
|
|
18
18
|
getDisplayValue,
|
|
19
|
-
|
|
19
|
+
filterFlatOptions,
|
|
20
|
+
}), [options, filterOptionsValue, getDisplayValue, filterFlatOptions]);
|
|
20
21
|
const filteredLimitedOptions = useMemo(() => limitOptions({ options: filteredOptions, limit }), [filteredOptions, limit]);
|
|
21
22
|
const filteredLimitedFlatOptions = useMemo(() => flattenOptions(filteredLimitedOptions), [filteredLimitedOptions]);
|
|
22
23
|
const emptySelectValue = useMemo(() => (multiple ? [] : ''), [multiple]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-select-state.js","sourceRoot":"","sources":["../../../../src/SelectBase/hooks/use-select-state/use-select-state.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAQjE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAA;AACpB,OAAO,mBAAmB,MAAM,0BAA0B,CAAA;AAE1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"use-select-state.js","sourceRoot":"","sources":["../../../../src/SelectBase/hooks/use-select-state/use-select-state.ts"],"names":[],"mappings":"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"}
|
package/SelectBase/types.d.ts
CHANGED
|
@@ -74,6 +74,8 @@ export interface SelectProps<T extends ValueType = ValueType, M extends boolean
|
|
|
74
74
|
limit?: number;
|
|
75
75
|
/** Specifies whether the autofill enabled or not, disabled by default */
|
|
76
76
|
enableAutofill?: boolean;
|
|
77
|
+
/** A function that is invoked during search. It takes an array of options and a search value and returns filtered options */
|
|
78
|
+
filterOptions?: (options: Option[], searchValue: string, getDisplayValue?: (option: Option | null) => string) => Option[];
|
|
77
79
|
ref?: React.Ref<HTMLInputElement>;
|
|
78
80
|
testIds?: OutlinedInputProps['testIds'] & {
|
|
79
81
|
noOptions?: string;
|
|
@@ -3,6 +3,8 @@ interface Props {
|
|
|
3
3
|
options: Option[] | OptionGroups;
|
|
4
4
|
filterOptionsValue: string;
|
|
5
5
|
getDisplayValue: (option: Option | null) => string;
|
|
6
|
+
filterFlatOptions?: (options: Option[], filterOptionsValue: string, getDisplayValue: (option: Option | null) => string) => Option[];
|
|
6
7
|
}
|
|
7
|
-
declare const filterOptions: ({ options, filterOptionsValue, getDisplayValue, }: Props) => Option[] | OptionGroups;
|
|
8
|
+
declare const filterOptions: ({ options, filterOptionsValue, getDisplayValue, filterFlatOptions: filterFlatOptionsFunction, }: Props) => Option[] | OptionGroups;
|
|
9
|
+
export declare const filterFlatOptions: (options: Option[], filterOptionsValue: string, getDisplayValue?: (option: Option | null) => string) => Option[];
|
|
8
10
|
export default filterOptions;
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import { isSubstring } from '../../../utils';
|
|
2
2
|
import isOptionsType from '../../utils/is-options-type';
|
|
3
|
-
|
|
3
|
+
import getOptionText from '../get-option-text';
|
|
4
|
+
const filterOptions = ({ options, filterOptionsValue, getDisplayValue, filterFlatOptions: filterFlatOptionsFunction = filterFlatOptions, }) => {
|
|
4
5
|
if (isOptionsType(options)) {
|
|
5
|
-
return
|
|
6
|
+
return filterFlatOptionsFunction(options, filterOptionsValue, getDisplayValue);
|
|
6
7
|
}
|
|
7
8
|
return Object.keys(options).reduce((result, group) => {
|
|
8
|
-
const filteredFlatOptions =
|
|
9
|
-
options: options[group],
|
|
10
|
-
filterOptionsValue,
|
|
11
|
-
getDisplayValue,
|
|
12
|
-
});
|
|
9
|
+
const filteredFlatOptions = filterFlatOptionsFunction(options[group], filterOptionsValue, getDisplayValue);
|
|
13
10
|
if (filteredFlatOptions.length > 0) {
|
|
14
11
|
result[group] = filteredFlatOptions;
|
|
15
12
|
}
|
|
16
13
|
return result;
|
|
17
14
|
}, {});
|
|
18
15
|
};
|
|
19
|
-
const filterFlatOptions = (
|
|
16
|
+
export const filterFlatOptions = (options, filterOptionsValue, getDisplayValue = getOptionText) => options.filter(option => isSubstring(filterOptionsValue, getDisplayValue(option)));
|
|
20
17
|
export default filterOptions;
|
|
21
18
|
//# sourceMappingURL=filter-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-options.js","sourceRoot":"","sources":["../../../../src/SelectBase/utils/filter-options/filter-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,aAAa,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"filter-options.js","sourceRoot":"","sources":["../../../../src/SelectBase/utils/filter-options/filter-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,aAAa,MAAM,6BAA6B,CAAA;AACvD,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAa9C,MAAM,aAAa,GAAG,CAAC,EACrB,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAAE,yBAAyB,GAAG,iBAAiB,GAC1D,EAA2B,EAAE;IACnC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,yBAAyB,CAC9B,OAAO,EACP,kBAAkB,EAClB,eAAe,CAChB,CAAA;KACF;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAoB,EAAE,KAAK,EAAE,EAAE;QACjE,MAAM,mBAAmB,GAAG,yBAAyB,CACnD,OAAO,CAAC,KAAK,CAAC,EACd,kBAAkB,EAClB,eAAe,CAChB,CAAA;QAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAA;SACpC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAiB,EACjB,kBAA0B,EAC1B,kBAAqD,aAAa,EACxD,EAAE,CACZ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACtB,WAAW,CAAC,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CACzD,CAAA;AAEH,eAAe,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/SelectBase/utils/filter-options/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/SelectBase/utils/filter-options/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as filterOptions } from './filter-options';
|
|
1
|
+
export { default as filterOptions, filterFlatOptions } from './filter-options';
|
|
2
2
|
export { default as limitOptions } from './limit-options';
|
|
3
3
|
export { default as fireOnChangeEvent } from './fire-on-change-event';
|
|
4
4
|
export { default as flattenOptions } from './flatten-options';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as filterOptions } from './filter-options';
|
|
1
|
+
export { default as filterOptions, filterFlatOptions } from './filter-options';
|
|
2
2
|
export { default as limitOptions } from './limit-options';
|
|
3
3
|
export { default as fireOnChangeEvent } from './fire-on-change-event';
|
|
4
4
|
export { default as flattenOptions } from './flatten-options';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/SelectBase/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/SelectBase/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC1E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAC1F,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzD,cAAc,aAAa,CAAA"}
|