@toptal/picasso 12.3.1 → 12.4.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/MenuItem/MenuItem.js +2 -1
- package/MenuItem/MenuItem.js.map +1 -1
- package/MenuItem/styles.d.ts +1 -1
- package/MenuItem/styles.js +7 -1
- package/MenuItem/styles.js.map +1 -1
- package/NativeSelect/NativeSelect.js +3 -2
- package/NativeSelect/NativeSelect.js.map +1 -1
- package/NativeSelectOptions/NativeSelectOptions.d.ts +3 -3
- package/NativeSelectOptions/NativeSelectOptions.js +8 -7
- package/NativeSelectOptions/NativeSelectOptions.js.map +1 -1
- package/NonNativeSelect/NonNativeSelect.js +9 -5
- package/NonNativeSelect/NonNativeSelect.js.map +1 -1
- package/NonNativeSelectLimitFooter/NonNativeSelectLimitFooter.d.ts +7 -0
- package/NonNativeSelectLimitFooter/NonNativeSelectLimitFooter.js +16 -0
- package/NonNativeSelectLimitFooter/NonNativeSelectLimitFooter.js.map +1 -0
- package/NonNativeSelectLimitFooter/index.d.ts +1 -0
- package/NonNativeSelectLimitFooter/index.js +2 -0
- package/NonNativeSelectLimitFooter/index.js.map +1 -0
- package/NonNativeSelectLimitFooter/styles.d.ts +3 -0
- package/NonNativeSelectLimitFooter/styles.js +10 -0
- package/NonNativeSelectLimitFooter/styles.js.map +1 -0
- package/NonNativeSelectLoader/NonNativeSelectLoader.d.ts +4 -1
- package/NonNativeSelectLoader/NonNativeSelectLoader.js +2 -2
- package/NonNativeSelectLoader/NonNativeSelectLoader.js.map +1 -1
- package/NonNativeSelectOption/NonNativeSelectOption.js +1 -1
- package/NonNativeSelectOption/NonNativeSelectOption.js.map +1 -1
- package/NonNativeSelectOptions/NonNativeSelectOptions.d.ts +8 -3
- package/NonNativeSelectOptions/NonNativeSelectOptions.js +9 -21
- package/NonNativeSelectOptions/NonNativeSelectOptions.js.map +1 -1
- package/NonNativeSelectOptions/styles.d.ts +1 -2
- package/NonNativeSelectOptions/styles.js +1 -7
- package/NonNativeSelectOptions/styles.js.map +1 -1
- package/Select/hooks/use-highlighted-index/use-highlighted-index.d.ts +4 -2
- package/Select/hooks/use-highlighted-index/use-highlighted-index.js +12 -8
- package/Select/hooks/use-highlighted-index/use-highlighted-index.js.map +1 -1
- package/Select/hooks/use-select-props/mocks.js +1 -3
- package/Select/hooks/use-select-props/mocks.js.map +1 -1
- package/Select/hooks/use-select-props/use-arrows-keydown-handler/use-arrows-keydown-handler.js +12 -1
- package/Select/hooks/use-select-props/use-arrows-keydown-handler/use-arrows-keydown-handler.js.map +1 -1
- package/Select/hooks/use-select-props/use-select-handler/use-select-handler.d.ts +1 -1
- package/Select/hooks/use-select-props/use-select-handler/use-select-handler.js +4 -5
- package/Select/hooks/use-select-props/use-select-handler/use-select-handler.js.map +1 -1
- package/Select/hooks/use-select-state/use-select-state.js +28 -20
- package/Select/hooks/use-select-state/use-select-state.js.map +1 -1
- package/Select/types.d.ts +8 -4
- package/Select/utils/count-options/count-options.d.ts +3 -0
- package/Select/utils/count-options/count-options.js +9 -0
- package/Select/utils/count-options/count-options.js.map +1 -0
- package/Select/utils/count-options/index.d.ts +1 -0
- package/Select/utils/count-options/index.js +2 -0
- package/Select/utils/count-options/index.js.map +1 -0
- package/Select/utils/get-multiple-selection/get-multiple-selection.d.ts +2 -2
- package/Select/utils/get-multiple-selection/get-multiple-selection.js +4 -9
- package/Select/utils/get-multiple-selection/get-multiple-selection.js.map +1 -1
- package/Select/utils/get-selected-options/get-selected-options.d.ts +2 -2
- package/Select/utils/get-selected-options/get-selected-options.js +4 -4
- package/Select/utils/get-selected-options/get-selected-options.js.map +1 -1
- package/Select/utils/get-single-selection/get-single-selection.d.ts +2 -2
- package/Select/utils/get-single-selection/get-single-selection.js +4 -6
- package/Select/utils/get-single-selection/get-single-selection.js.map +1 -1
- package/Select/utils/index.d.ts +2 -2
- package/Select/utils/index.js +2 -2
- package/Select/utils/index.js.map +1 -1
- package/Select/utils/limit-options/index.d.ts +1 -0
- package/Select/utils/limit-options/index.js +2 -0
- package/Select/utils/limit-options/index.js.map +1 -0
- package/Select/utils/limit-options/limit-options.d.ts +7 -0
- package/Select/utils/limit-options/limit-options.js +16 -0
- package/Select/utils/limit-options/limit-options.js.map +1 -0
- package/package.json +2 -2
- package/Select/utils/get-selection/get-selection.d.ts +0 -3
- package/Select/utils/get-selection/get-selection.js +0 -7
- package/Select/utils/get-selection/get-selection.js.map +0 -1
- package/Select/utils/get-selection/index.d.ts +0 -1
- package/Select/utils/get-selection/index.js +0 -2
- package/Select/utils/get-selection/index.js.map +0 -1
- package/Select/utils/remove-duplicated-options/index.d.ts +0 -1
- package/Select/utils/remove-duplicated-options/index.js +0 -2
- package/Select/utils/remove-duplicated-options/index.js.map +0 -1
- package/Select/utils/remove-duplicated-options/remove-duplicated-options.d.ts +0 -3
- package/Select/utils/remove-duplicated-options/remove-duplicated-options.js +0 -6
- package/Select/utils/remove-duplicated-options/remove-duplicated-options.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../../src/Select/hooks/use-select-props/mocks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAmB,EAAE;IACxD,OAAO;QACL,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;aACV;SACT;QACD,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;aACV;SACT;QACD,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;aACV;SACT;QACD,WAAW,EAAE;YACX,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;YACnB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;YACzB,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;YACvB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;YAC1B,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;SACnB;QACD,WAAW,EAAE;YACX,
|
|
1
|
+
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../../src/Select/hooks/use-select-props/mocks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAmB,EAAE;IACxD,OAAO;QACL,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;aACV;SACT;QACD,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;aACV;SACT;QACD,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;aACV;SACT;QACD,WAAW,EAAE;YACX,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;YACnB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;YACzB,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;YACvB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;YAC1B,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;SACnB;QACD,WAAW,EAAE;YACX,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;YAChB,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,IAAI;YAClB,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC9B,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;YAChC,UAAU,EAAE,KAAK;YACjB,kBAAkB,EAAE,EAAE;YACtB,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE;gBACT,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;gBACrB,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;gBAC3B,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;aACnB;YACD,eAAe,EAAE,EAAE;YACnB,gBAAgB,EAAE,EAAE;YACpB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;SACpB;KACF,CAAA;AACH,CAAC,CAAA"}
|
package/Select/hooks/use-select-props/use-arrows-keydown-handler/use-arrows-keydown-handler.js
CHANGED
|
@@ -3,7 +3,18 @@ import { flattenOptions, getNextWrappingIndex } from '../../../utils';
|
|
|
3
3
|
const useArrowsKeyDownHandler = ({ selectState: { isOpen, highlightedIndex, filteredOptions, setHighlightedIndex, open } }) => useCallback((key, event) => {
|
|
4
4
|
event.preventDefault();
|
|
5
5
|
if (isOpen) {
|
|
6
|
-
|
|
6
|
+
// Use only non-disabled options
|
|
7
|
+
const nonDisabledOptions = flattenOptions(filteredOptions)
|
|
8
|
+
.map((option, actualIndex) => (Object.assign(Object.assign({}, option), { actualIndex })))
|
|
9
|
+
.filter(option => !option.disabled);
|
|
10
|
+
// Find the non-disabled index for highlightedIndex
|
|
11
|
+
const initialIndex = nonDisabledOptions.findIndex(option => option.actualIndex === highlightedIndex);
|
|
12
|
+
const moveAmount = key === 'ArrowDown' ? 1 : -1;
|
|
13
|
+
// Find the next wrapping non-disabled index
|
|
14
|
+
const nextNonDisabledIndex = getNextWrappingIndex(moveAmount, initialIndex, nonDisabledOptions.length);
|
|
15
|
+
// Convert non-disabled index to the actual one
|
|
16
|
+
const actualIndex = nonDisabledOptions[nextNonDisabledIndex].actualIndex;
|
|
17
|
+
setHighlightedIndex(actualIndex);
|
|
7
18
|
}
|
|
8
19
|
else {
|
|
9
20
|
open();
|
package/Select/hooks/use-select-props/use-arrows-keydown-handler/use-arrows-keydown-handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-arrows-keydown-handler.js","sourceRoot":"","sources":["../../../../../src/Select/hooks/use-select-props/use-arrows-keydown-handler/use-arrows-keydown-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGrE,MAAM,uBAAuB,GAAG,CAG9B,EACA,WAAW,EAAE,EACX,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,IAAI,EACL,EACoB,EAAE,EAAE,CACzB,WAAW,CACT,CAAC,GAAW,EAAE,KAAsC,EAAE,EAAE;IACtD,KAAK,CAAC,cAAc,EAAE,CAAA;IAEtB,IAAI,MAAM,EAAE;QACV,
|
|
1
|
+
{"version":3,"file":"use-arrows-keydown-handler.js","sourceRoot":"","sources":["../../../../../src/Select/hooks/use-select-props/use-arrows-keydown-handler/use-arrows-keydown-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGrE,MAAM,uBAAuB,GAAG,CAG9B,EACA,WAAW,EAAE,EACX,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,IAAI,EACL,EACoB,EAAE,EAAE,CACzB,WAAW,CACT,CAAC,GAAW,EAAE,KAAsC,EAAE,EAAE;IACtD,KAAK,CAAC,cAAc,EAAE,CAAA;IAEtB,IAAI,MAAM,EAAE;QACV,gCAAgC;QAChC,MAAM,kBAAkB,GAAG,cAAc,CAAC,eAAe,CAAC;aACvD,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,WAAW,IAAG,CAAC;aAC1D,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAErC,mDAAmD;QACnD,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAC/C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,gBAAgB,CAClD,CAAA;QACD,MAAM,UAAU,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,4CAA4C;QAC5C,MAAM,oBAAoB,GAAG,oBAAoB,CAC/C,UAAU,EACV,YAAY,EACZ,kBAAkB,CAAC,MAAM,CAC1B,CAAA;QACD,+CAA+C;QAC/C,MAAM,WAAW,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAA;QAExE,mBAAmB,CAAC,WAAW,CAAC,CAAA;KACjC;SAAM;QACL,IAAI,EAAE,CAAA;KACP;AACH,CAAC,EACD,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,IAAI,CAAC,CACvE,CAAA;AAEH,eAAe,uBAAuB,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Option, ValueType, UseSelectProps } from '../../../types';
|
|
2
|
-
declare const useSelectHandler: <T extends ValueType, M extends boolean = false>({ selectState: { emptySelectValue,
|
|
2
|
+
declare const useSelectHandler: <T extends ValueType, M extends boolean = false>({ selectState: { emptySelectValue, setValue, setFilterOptionsValue }, selectProps: { multiple, value, name, onChange }, selectRef }: UseSelectProps<T, M, M extends true ? T[] : T>) => (event: React.SyntheticEvent, option: Option | null) => void;
|
|
3
3
|
export default useSelectHandler;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
|
-
import { EMPTY_INPUT_VALUE, toggleMultipleSelectValue, focusRef, fireOnChangeEvent
|
|
4
|
-
const useSelectHandler = ({ selectState: { emptySelectValue,
|
|
3
|
+
import { EMPTY_INPUT_VALUE, toggleMultipleSelectValue, focusRef, fireOnChangeEvent } from '../../../utils';
|
|
4
|
+
const useSelectHandler = ({ selectState: { emptySelectValue, setValue, setFilterOptionsValue }, selectProps: { multiple, value, name, onChange }, selectRef }) => useCallback((event, option) => {
|
|
5
5
|
let newValue;
|
|
6
6
|
if (option === null) {
|
|
7
7
|
newValue = emptySelectValue;
|
|
@@ -12,20 +12,19 @@ const useSelectHandler = ({ selectState: { emptySelectValue, setSelectedOptions,
|
|
|
12
12
|
else {
|
|
13
13
|
newValue = option.value;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
setValue(newValue);
|
|
16
16
|
fireOnChangeEvent({ event, value: newValue, name, onChange });
|
|
17
17
|
setFilterOptionsValue(EMPTY_INPUT_VALUE);
|
|
18
18
|
focusRef(selectRef);
|
|
19
19
|
}, [
|
|
20
20
|
name,
|
|
21
21
|
onChange,
|
|
22
|
-
options,
|
|
23
22
|
emptySelectValue,
|
|
24
23
|
setFilterOptionsValue,
|
|
25
24
|
multiple,
|
|
26
25
|
value,
|
|
27
26
|
selectRef,
|
|
28
|
-
|
|
27
|
+
setValue
|
|
29
28
|
]);
|
|
30
29
|
export default useSelectHandler;
|
|
31
30
|
//# sourceMappingURL=use-select-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-select-handler.js","sourceRoot":"","sources":["../../../../../src/Select/hooks/use-select-props/use-select-handler/use-select-handler.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAGnC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,QAAQ,EACR,iBAAiB,
|
|
1
|
+
{"version":3,"file":"use-select-handler.js","sourceRoot":"","sources":["../../../../../src/Select/hooks/use-select-props/use-select-handler/use-select-handler.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAGnC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,QAAQ,EACR,iBAAiB,EAClB,MAAM,gBAAgB,CAAA;AAEvB,MAAM,gBAAgB,GAAG,CAAiD,EACxE,WAAW,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAClE,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAChD,SAAS,EACY,EAAE,EAAE,CACzB,WAAW,CACT,CAAC,KAA2B,EAAE,MAAqB,EAAE,EAAE;IACrD,IAAI,QAAiC,CAAA;IAErC,IAAI,MAAM,KAAK,IAAI,EAAE;QACnB,QAAQ,GAAG,gBAAgB,CAAA;KAC5B;SAAM,IAAI,QAAQ,EAAE;QACnB,QAAQ,GAAG,yBAAyB,CAClC,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAgB,EAC5B,MAAM,CACP,CAAA;KACF;SAAM;QACL,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAA;KACxB;IAED,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAElB,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7D,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;IAExC,QAAQ,CAAC,SAAS,CAAC,CAAA;AACrB,CAAC,EACD;IACE,IAAI;IACJ,QAAQ;IACR,gBAAgB;IAChB,qBAAqB;IACrB,QAAQ;IACR,KAAK;IACL,SAAS;IACT,QAAQ;CACT,CACF,CAAA;AAEH,eAAe,gBAAgB,CAAA"}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
1
2
|
import { useState, useCallback, useEffect, useMemo } from 'react';
|
|
2
|
-
import {
|
|
3
|
+
import { getMultipleSelection, getSingleSelection, getSelectedOptions, DEFAULT_SEARCH_THRESHOLD, DEFAULT_LIMIT, filterOptions, flattenOptions, limitOptions } from '../../utils';
|
|
3
4
|
import useHighlightedIndex from '../use-highlighted-index';
|
|
4
5
|
export const EMPTY_INPUT_VALUE = '';
|
|
5
6
|
const useSelectState = (props) => {
|
|
6
|
-
const { getDisplayValue, options = [], disabled = false, multiple, value, searchThreshold = DEFAULT_SEARCH_THRESHOLD, limit = DEFAULT_LIMIT } = props;
|
|
7
|
+
const { getDisplayValue, options = [], disabled = false, multiple, value: valueProp, searchThreshold = DEFAULT_SEARCH_THRESHOLD, limit = DEFAULT_LIMIT } = props;
|
|
7
8
|
const flatOptions = useMemo(() => flattenOptions(options), [
|
|
8
9
|
options
|
|
9
10
|
]);
|
|
10
|
-
const [
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const [value, setValue] = useState(valueProp);
|
|
12
|
+
const selectedOptions = useMemo(() => getSelectedOptions(flatOptions, value), [flatOptions, value]);
|
|
13
|
+
const selection = useMemo(() => multiple
|
|
14
|
+
? getMultipleSelection(selectedOptions)
|
|
15
|
+
: getSingleSelection(selectedOptions[0]), [selectedOptions, multiple]);
|
|
16
|
+
const displayValue = useMemo(() => selection.display(getDisplayValue), [
|
|
17
|
+
selection,
|
|
18
|
+
getDisplayValue
|
|
19
|
+
]);
|
|
13
20
|
const [filterOptionsValue, setFilterOptionsValue] = useState(EMPTY_INPUT_VALUE);
|
|
14
|
-
const filteredOptions = useMemo(() => filterOptions({
|
|
15
|
-
|
|
21
|
+
const filteredOptions = useMemo(() => filterOptions({
|
|
22
|
+
options,
|
|
23
|
+
filterOptionsValue,
|
|
24
|
+
getDisplayValue
|
|
25
|
+
}), [options, filterOptionsValue, getDisplayValue]);
|
|
26
|
+
const filteredLimitedOptions = useMemo(() => limitOptions({ options: filteredOptions, limit }), [filteredOptions, limit]);
|
|
27
|
+
const filteredLimitedFlatOptions = useMemo(() => flattenOptions(filteredLimitedOptions), [filteredLimitedOptions]);
|
|
16
28
|
const emptySelectValue = useMemo(() => (multiple ? [] : ''), [multiple]);
|
|
17
29
|
// Search should be shown when limit < searchThreshold
|
|
18
30
|
// otherwise user might not be able to search through long list
|
|
@@ -20,15 +32,13 @@ const useSelectState = (props) => {
|
|
|
20
32
|
const [isOpen, setOpen] = useState(false);
|
|
21
33
|
const canOpen = !isOpen && !disabled;
|
|
22
34
|
const [highlightedIndex, setHighlightedIndex] = useHighlightedIndex({
|
|
23
|
-
|
|
35
|
+
flatOptions: filteredLimitedFlatOptions,
|
|
36
|
+
selection,
|
|
24
37
|
isOpen
|
|
25
38
|
});
|
|
26
39
|
useEffect(() => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
setSelectedOptions(getSelectedOptions(options, value));
|
|
30
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31
|
-
}, [value, options, flatOptions]);
|
|
40
|
+
setValue(valueProp);
|
|
41
|
+
}, [valueProp]);
|
|
32
42
|
const close = useCallback(() => {
|
|
33
43
|
setOpen(false);
|
|
34
44
|
}, []);
|
|
@@ -41,11 +51,10 @@ const useSelectState = (props) => {
|
|
|
41
51
|
close();
|
|
42
52
|
}
|
|
43
53
|
}, [disabled, isOpen, close]);
|
|
44
|
-
return Object.assign(Object.assign({}, props), {
|
|
45
|
-
selectedOptions,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
isOpen,
|
|
54
|
+
return Object.assign(Object.assign({}, props), { setValue,
|
|
55
|
+
selectedOptions,
|
|
56
|
+
// TODO: keep consistent naming
|
|
57
|
+
filteredOptions: filteredLimitedOptions, isOpen,
|
|
49
58
|
canOpen,
|
|
50
59
|
open,
|
|
51
60
|
close,
|
|
@@ -55,8 +64,7 @@ const useSelectState = (props) => {
|
|
|
55
64
|
displayValue,
|
|
56
65
|
selection,
|
|
57
66
|
emptySelectValue,
|
|
58
|
-
setFilterOptionsValue
|
|
59
|
-
setDisplayValue });
|
|
67
|
+
setFilterOptionsValue });
|
|
60
68
|
};
|
|
61
69
|
export default useSelectState;
|
|
62
70
|
//# sourceMappingURL=use-select-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-select-state.js","sourceRoot":"","sources":["../../../../src/Select/hooks/use-select-state/use-select-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAQjE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"use-select-state.js","sourceRoot":"","sources":["../../../../src/Select/hooks/use-select-state/use-select-state.ts"],"names":[],"mappings":"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"}
|
package/Select/types.d.ts
CHANGED
|
@@ -72,6 +72,11 @@ export interface SelectProps<T extends ValueType = ValueType, M extends boolean
|
|
|
72
72
|
/** Specifies whether the autofill enabled or not, disabled by default */
|
|
73
73
|
enableAutofill?: boolean;
|
|
74
74
|
ref?: React.Ref<HTMLInputElement>;
|
|
75
|
+
testIds?: {
|
|
76
|
+
noOptions?: string;
|
|
77
|
+
loader?: string;
|
|
78
|
+
limitFooter?: string;
|
|
79
|
+
};
|
|
75
80
|
}
|
|
76
81
|
export declare type ValueType = string | number;
|
|
77
82
|
export declare type Option<T extends string | number = string | number> = {
|
|
@@ -79,7 +84,8 @@ export declare type Option<T extends string | number = string | number> = {
|
|
|
79
84
|
text: string;
|
|
80
85
|
description?: string;
|
|
81
86
|
value: T;
|
|
82
|
-
|
|
87
|
+
disabled?: boolean;
|
|
88
|
+
[prop: string]: string | number | undefined | boolean;
|
|
83
89
|
};
|
|
84
90
|
export declare type OptionGroups<T extends string | number = string | number> = {
|
|
85
91
|
[group: string]: Option<T>[];
|
|
@@ -105,7 +111,6 @@ export interface UseSelectStateProps {
|
|
|
105
111
|
limit?: number;
|
|
106
112
|
}
|
|
107
113
|
export declare type UseSelectStateOutput = {
|
|
108
|
-
selectedIndexes: number[];
|
|
109
114
|
isOpen: boolean;
|
|
110
115
|
canOpen: boolean;
|
|
111
116
|
open: () => void;
|
|
@@ -117,12 +122,11 @@ export declare type UseSelectStateOutput = {
|
|
|
117
122
|
showSearch: boolean;
|
|
118
123
|
filterOptionsValue: string;
|
|
119
124
|
displayValue: string;
|
|
120
|
-
setDisplayValue: (value: string) => void;
|
|
121
125
|
selection: Selection;
|
|
122
126
|
filteredOptions: Option[] | OptionGroups;
|
|
123
127
|
emptySelectValue: string | string[];
|
|
124
128
|
selectedOptions: Option[];
|
|
125
|
-
|
|
129
|
+
setValue: (value: ValueType | ValueType[]) => void;
|
|
126
130
|
};
|
|
127
131
|
export interface UseSelectProps<T extends ValueType = ValueType, M extends boolean = boolean, V = M extends true ? T[] : T> {
|
|
128
132
|
searchInputRef?: React.Ref<HTMLInputElement>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { isOptionsType } from '..';
|
|
2
|
+
const countOptions = (options) => {
|
|
3
|
+
if (isOptionsType(options)) {
|
|
4
|
+
return options.length;
|
|
5
|
+
}
|
|
6
|
+
return Object.values(options).reduce((result, optionList) => result + optionList.length, 0);
|
|
7
|
+
};
|
|
8
|
+
export default countOptions;
|
|
9
|
+
//# sourceMappingURL=count-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count-options.js","sourceRoot":"","sources":["../../../../src/Select/utils/count-options/count-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAElC,MAAM,YAAY,GAAG,CAAC,OAAgC,EAAE,EAAE;IACxD,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,MAAM,CAAA;KACtB;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAClC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAClD,CAAC,CACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './count-options';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Select/utils/count-options/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const getMultipleSelection: (
|
|
1
|
+
import { Option, Selection } from '../../types';
|
|
2
|
+
declare const getMultipleSelection: (selectedOptions: Option[]) => Selection;
|
|
3
3
|
export default getMultipleSelection;
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import isEmpty from '../is-empty';
|
|
3
|
-
const getMultipleSelection = (options, value) => {
|
|
4
|
-
const getSelectedOptions = () => options.filter(option => isOptionInSelectedValues(option, value));
|
|
1
|
+
const getMultipleSelection = (selectedOptions) => {
|
|
5
2
|
return {
|
|
6
|
-
display: (getDisplayValue) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
isSelected: () => !isEmpty(value),
|
|
10
|
-
isOptionSelected: option => isOptionInSelectedValues(option, value)
|
|
3
|
+
display: (getDisplayValue) => selectedOptions.map(getDisplayValue).join(', '),
|
|
4
|
+
isSelected: () => selectedOptions.length > 0,
|
|
5
|
+
isOptionSelected: option => selectedOptions.some(selectedOption => option.value === String(selectedOption.value))
|
|
11
6
|
};
|
|
12
7
|
};
|
|
13
8
|
export default getMultipleSelection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-multiple-selection.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-multiple-selection/get-multiple-selection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-multiple-selection.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-multiple-selection/get-multiple-selection.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,CAAC,eAAyB,EAAa,EAAE;IACpE,OAAO;QACL,OAAO,EAAE,CAAC,eAAkD,EAAE,EAAE,CAC9D,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACjD,UAAU,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC5C,gBAAgB,EAAE,MAAM,CAAC,EAAE,CACzB,eAAe,CAAC,IAAI,CAClB,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAChE;KACJ,CAAA;AACH,CAAC,CAAA;AAED,eAAe,oBAAoB,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Option,
|
|
2
|
-
declare const getSelectedOptions: (
|
|
1
|
+
import { Option, ValueType } from '../../types';
|
|
2
|
+
declare const getSelectedOptions: (flatOptions: Option[], value?: ValueType | ValueType[] | undefined) => Option<string | number>[];
|
|
3
3
|
export default getSelectedOptions;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const getSelectedOptions = (flatOptions, value) => {
|
|
2
|
+
const valuesSet = new Set(Array.isArray(value) ? value : [value]);
|
|
3
|
+
return flatOptions.filter(option => valuesSet.has(String(option.value)));
|
|
4
|
+
};
|
|
5
5
|
export default getSelectedOptions;
|
|
6
6
|
//# sourceMappingURL=get-selected-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-selected-options.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-selected-options/get-selected-options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-selected-options.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-selected-options/get-selected-options.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG,CACzB,WAAqB,EACrB,KAA+B,EAC/B,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAEjE,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC1E,CAAC,CAAA;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const getSingleSelection: (
|
|
1
|
+
import { Option, Selection } from '../../types';
|
|
2
|
+
declare const getSingleSelection: (selectedOption: Option | null) => Selection;
|
|
3
3
|
export default getSingleSelection;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
const getSingleSelection = (options, value) => {
|
|
3
|
-
const getSelectedOption = () => options.find(option => option.value === value) || null;
|
|
1
|
+
const getSingleSelection = (selectedOption) => {
|
|
4
2
|
return {
|
|
5
|
-
display: (getDisplayValue) => getDisplayValue(
|
|
6
|
-
isSelected: () =>
|
|
7
|
-
isOptionSelected: option => option.value === value
|
|
3
|
+
display: (getDisplayValue) => getDisplayValue(selectedOption),
|
|
4
|
+
isSelected: () => !!selectedOption,
|
|
5
|
+
isOptionSelected: option => option.value === (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value)
|
|
8
6
|
};
|
|
9
7
|
};
|
|
10
8
|
export default getSingleSelection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-single-selection.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-single-selection/get-single-selection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-single-selection.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-single-selection/get-single-selection.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG,CAAC,cAA6B,EAAa,EAAE;IACtE,OAAO;QACL,OAAO,EAAE,CAAC,eAAkD,EAAE,EAAE,CAC9D,eAAe,CAAC,cAAc,CAAC;QACjC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc;QAClC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,MAAK,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAA;KACnE,CAAA;AACH,CAAC,CAAA;AAED,eAAe,kBAAkB,CAAA"}
|
package/Select/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default as filterOptions } from './filter-options';
|
|
2
|
+
export { default as limitOptions } from './limit-options';
|
|
2
3
|
export { default as fireOnChangeEvent } from './fire-on-change-event';
|
|
3
4
|
export { default as flattenOptions } from './flatten-options';
|
|
4
5
|
export { default as focusRef } from './focus-ref';
|
|
@@ -6,14 +7,13 @@ export { default as getMultipleSelection } from './get-multiple-selection';
|
|
|
6
7
|
export { default as getNextWrappingIndex } from './get-next-wrapping-index';
|
|
7
8
|
export { default as getOptionText } from './get-option-text';
|
|
8
9
|
export { default as getSelectedOptions } from './get-selected-options';
|
|
9
|
-
export { default as getSelection } from './get-selection';
|
|
10
10
|
export { default as getSingleSelection } from './get-single-selection';
|
|
11
11
|
export { default as isEmpty } from './is-empty';
|
|
12
12
|
export { default as isOptionInSelectedValues } from './is-option-in-selected-values';
|
|
13
13
|
export { default as isOptionsType } from './is-options-type';
|
|
14
14
|
export { default as isRelatedTargetInsidePopper } from './is-related-target-inside-popper';
|
|
15
15
|
export { default as normalizeArrowKey } from './normalize-arrow-key';
|
|
16
|
-
export { default as removeDuplicatedOptions } from './remove-duplicated-options';
|
|
17
16
|
export { default as renderOption } from './render-option';
|
|
18
17
|
export { default as toggleMultipleSelectValue } from './toggle-multiple-select-value';
|
|
18
|
+
export { default as countOptions } from './count-options';
|
|
19
19
|
export * from './constants';
|
package/Select/utils/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default as filterOptions } from './filter-options';
|
|
2
|
+
export { default as limitOptions } from './limit-options';
|
|
2
3
|
export { default as fireOnChangeEvent } from './fire-on-change-event';
|
|
3
4
|
export { default as flattenOptions } from './flatten-options';
|
|
4
5
|
export { default as focusRef } from './focus-ref';
|
|
@@ -6,15 +7,14 @@ export { default as getMultipleSelection } from './get-multiple-selection';
|
|
|
6
7
|
export { default as getNextWrappingIndex } from './get-next-wrapping-index';
|
|
7
8
|
export { default as getOptionText } from './get-option-text';
|
|
8
9
|
export { default as getSelectedOptions } from './get-selected-options';
|
|
9
|
-
export { default as getSelection } from './get-selection';
|
|
10
10
|
export { default as getSingleSelection } from './get-single-selection';
|
|
11
11
|
export { default as isEmpty } from './is-empty';
|
|
12
12
|
export { default as isOptionInSelectedValues } from './is-option-in-selected-values';
|
|
13
13
|
export { default as isOptionsType } from './is-options-type';
|
|
14
14
|
export { default as isRelatedTargetInsidePopper } from './is-related-target-inside-popper';
|
|
15
15
|
export { default as normalizeArrowKey } from './normalize-arrow-key';
|
|
16
|
-
export { default as removeDuplicatedOptions } from './remove-duplicated-options';
|
|
17
16
|
export { default as renderOption } from './render-option';
|
|
18
17
|
export { default as toggleMultipleSelectValue } from './toggle-multiple-select-value';
|
|
18
|
+
export { default as countOptions } from './count-options';
|
|
19
19
|
export * from './constants';
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Select/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC3D,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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Select/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC3D,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './limit-options';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Select/utils/limit-options/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { isOptionsType } from '..';
|
|
2
|
+
const limitOptions = ({ options, limit }) => {
|
|
3
|
+
if (isOptionsType(options)) {
|
|
4
|
+
return limitFlatOptions({ options, limit });
|
|
5
|
+
}
|
|
6
|
+
return Object.keys(options).reduce((result, group) => {
|
|
7
|
+
result[group] = limitFlatOptions({
|
|
8
|
+
options: options[group],
|
|
9
|
+
limit
|
|
10
|
+
});
|
|
11
|
+
return result;
|
|
12
|
+
}, {});
|
|
13
|
+
};
|
|
14
|
+
const limitFlatOptions = ({ options, limit }) => options.slice(0, limit);
|
|
15
|
+
export default limitOptions;
|
|
16
|
+
//# sourceMappingURL=limit-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limit-options.js","sourceRoot":"","sources":["../../../../src/Select/utils/limit-options/limit-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAOlC,MAAM,YAAY,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAS,EAA2B,EAAE;IAC1E,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;KAC5C;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAoB,EAAE,KAAK,EAAE,EAAE;QACjE,MAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;YACvB,KAAK;SACN,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,EACxB,OAAO,EACP,KAAK,EACyB,EAAY,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAEtE,eAAe,YAAY,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toptal/picasso",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.4.0",
|
|
4
4
|
"description": "Toptal UI components library",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"**/styles.ts",
|
|
70
70
|
"**/styles.js"
|
|
71
71
|
],
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "7b7c905a2172259f265e6303fe691396ca0582d2"
|
|
73
73
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import getMultipleSelection from '../get-multiple-selection';
|
|
2
|
-
import getSingleSelection from '../get-single-selection';
|
|
3
|
-
const getSelection = (options, value) => Array.isArray(value)
|
|
4
|
-
? getMultipleSelection(options, value)
|
|
5
|
-
: getSingleSelection(options, value);
|
|
6
|
-
export default getSelection;
|
|
7
|
-
//# sourceMappingURL=get-selection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-selection.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-selection/get-selection.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,2BAA2B,CAAA;AAC5D,OAAO,kBAAkB,MAAM,yBAAyB,CAAA;AAExD,MAAM,YAAY,GAAG,CAAC,OAAiB,EAAE,KAA+B,EAAE,EAAE,CAC1E,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAoB,CAAC;IACrD,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAA8B,CAAC,CAAA;AAEjE,eAAe,YAAY,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './get-selection';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Select/utils/get-selection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './remove-duplicated-options';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Select/utils/remove-duplicated-options/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
const removeDuplicatedOptions = (options) => options.filter((option, index) => {
|
|
2
|
-
const innerIndex = options.findIndex(innerOption => innerOption.value === option.value);
|
|
3
|
-
return innerIndex === index;
|
|
4
|
-
});
|
|
5
|
-
export default removeDuplicatedOptions;
|
|
6
|
-
//# sourceMappingURL=remove-duplicated-options.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"remove-duplicated-options.js","sourceRoot":"","sources":["../../../../src/Select/utils/remove-duplicated-options/remove-duplicated-options.ts"],"names":[],"mappings":"AAEA,MAAM,uBAAuB,GAAG,CAAC,OAAiB,EAAE,EAAE,CACpD,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAClC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAClD,CAAA;IAED,OAAO,UAAU,KAAK,KAAK,CAAA;AAC7B,CAAC,CAAC,CAAA;AAEJ,eAAe,uBAAuB,CAAA"}
|