|
1 |
| -import {RefObject, useCallback, useState} from 'react'; |
| 1 | +import {RefObject, useCallback, useState, useEffect} from 'react'; |
2 | 2 | import _ from 'lodash';
|
3 |
| -import {PickerProps, PickerValue, PickerSingleValue, PickerMultiValue} from '../types'; |
| 3 | +import {PickerProps, PickerValue, PickerSingleValue, PickerMultiValue, PickerModes} from '../types'; |
4 | 4 |
|
5 | 5 | interface UsePickerSelectionProps
|
6 |
| - extends Pick<PickerProps, 'migrate' | 'value' | 'onChange' | 'getItemValue' | 'topBarProps'> { |
| 6 | + extends Pick<PickerProps, 'migrate' | 'value' | 'onChange' | 'getItemValue' | 'topBarProps' | 'mode'> { |
7 | 7 | pickerExpandableRef: RefObject<any>;
|
8 | 8 | setSearchValue: (searchValue: string) => void;
|
9 | 9 | }
|
10 | 10 |
|
11 | 11 | const usePickerSelection = (props: UsePickerSelectionProps) => {
|
12 |
| - const {migrate, value, onChange, topBarProps, pickerExpandableRef, getItemValue, setSearchValue} = props; |
| 12 | + const {migrate, value, onChange, topBarProps, pickerExpandableRef, getItemValue, setSearchValue, mode} = props; |
13 | 13 | const [multiDraftValue, setMultiDraftValue] = useState(value as PickerMultiValue);
|
14 | 14 | const [multiFinalValue, setMultiFinalValue] = useState(value as PickerMultiValue);
|
15 | 15 |
|
| 16 | + useEffect(() => { |
| 17 | + if (mode === PickerModes.MULTI && multiFinalValue !== value) { |
| 18 | + setMultiDraftValue(value as PickerMultiValue); |
| 19 | + setMultiFinalValue(value as PickerMultiValue); |
| 20 | + } |
| 21 | + }, [value]); |
| 22 | + |
16 | 23 | const onDoneSelecting = useCallback((item: PickerValue) => {
|
17 | 24 | setSearchValue('');
|
18 | 25 | setMultiFinalValue(item as PickerMultiValue);
|
|
0 commit comments