Skip to content

Commit 23a38f5

Browse files
committed
fix(common): lift compare values from select promises
1 parent dc745bf commit 23a38f5

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

packages/common/src/use-select/reducer.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export const init = ({ propsOptions, optionsTransformer }) => ({
66
...(optionsTransformer && { originalOptions: propsOptions }),
77
});
88

9-
const reducer = (state, { type, payload, options = [], optionsTransformer }) => {
9+
const reducer = (state, { type, payload, options = [], optionsTransformer, compareValues }) => {
1010
switch (type) {
1111
case 'updateOptions':
1212
return {
@@ -42,14 +42,11 @@ const reducer = (state, { type, payload, options = [], optionsTransformer }) =>
4242
options: optionsTransformer
4343
? optionsTransformer([
4444
...state.options,
45-
...options.filter(({ value }) => !state.options.find((option) => payload.compareValues(option.value, value))),
45+
...options.filter(({ value }) => !state.options.find((option) => compareValues(option.value, value))),
4646
])
47-
: [...state.options, ...options.filter(({ value }) => !state.options.find((option) => payload.compareValues(option.value, value)))],
47+
: [...state.options, ...options.filter(({ value }) => !state.options.find((option) => compareValues(option.value, value)))],
4848
...(optionsTransformer && {
49-
originalOptions: [
50-
...state.options,
51-
...options.filter(({ value }) => !state.options.find((option) => payload.compareValues(option.value, value))),
52-
],
49+
originalOptions: [...state.options, ...options.filter(({ value }) => !state.options.find((option) => compareValues(option.value, value)))],
5350
}),
5451
};
5552
default:

packages/common/src/use-select/use-select.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const useSelect = ({
7171
}) => {
7272
const [propsOptions, setPropsCache] = useState(initialOptions);
7373
const [state, originalDispatch] = useReducer(reducer, { optionsTransformer, propsOptions: initialOptions }, init);
74-
const dispatch = (action) => originalDispatch({ ...action, optionsTransformer });
74+
const dispatch = (action) => originalDispatch({ ...action, optionsTransformer, compareValues });
7575

7676
useEffect(() => {
7777
if (!isEqual(initialOptions, propsOptions)) {
@@ -132,14 +132,14 @@ const useSelect = ({
132132

133133
const onInputChange = (inputValue) => {
134134
if (inputValue && loadOptions && state.promises[inputValue] === undefined && isSearchable) {
135-
dispatch({ type: 'setPromises', payload: { [inputValue]: true, compareValues } });
135+
dispatch({ type: 'setPromises', payload: { [inputValue]: true } });
136136

137137
loadOptions(inputValue)
138138
.then((options) => {
139139
if (isMounted.current) {
140140
dispatch({
141141
type: 'setPromises',
142-
payload: { [inputValue]: false, compareValues },
142+
payload: { [inputValue]: false },
143143
options,
144144
});
145145
}

0 commit comments

Comments
 (0)