Skip to content

Commit 09ebcb3

Browse files
committed
fix: select onchange params
1 parent 1a4d630 commit 09ebcb3

2 files changed

Lines changed: 23 additions & 9 deletions

File tree

src/select/base/Select.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,14 +196,22 @@ const Select = forwardRefWithStatics(
196196
.filter((option) => !option.checkAll && !option.disabled)
197197
.map((option) => (valueType === 'object' ? option : option[keys?.value || 'value']));
198198

199-
const { currentSelectedOptions } = getSelectedOptions(values, multiple, valueType, keys, tmpPropOptions);
199+
const { currentSelectedOptions, allSelectedValue } = getSelectedOptions(
200+
values,
201+
multiple,
202+
valueType,
203+
keys,
204+
tmpPropOptions,
205+
);
200206

201207
const checkAllValue =
202-
!checkAll && currentSelectedOptions.length !== (props.value as Array<SelectOption>)?.length
203-
? currentSelectedOptions
204-
: [];
208+
!checkAll && allSelectedValue.length !== (props.value as Array<SelectOption>)?.length ? allSelectedValue : [];
205209

206-
onChange?.(checkAllValue, { e, trigger: checkAll ? 'check' : 'uncheck', selectedOptions: checkAllValue });
210+
onChange?.(checkAllValue, {
211+
e,
212+
trigger: checkAll ? 'check' : 'uncheck',
213+
selectedOptions: currentSelectedOptions,
214+
});
207215
};
208216

209217
// 选中 Popup 某项

src/select/util/helper.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,23 +199,29 @@ export const getSelectedOptions = (
199199
let currentSelectedOptions = [];
200200
// 当前选中的选项
201201
let currentOption: SelectOption;
202+
// 全选值
203+
let allSelectedValue: Array<SelectValue>;
202204
if (multiple) {
203205
currentSelectedOptions = isObjectType
204206
? (value as Array<SelectValue>)
205-
: tmpPropOptions
206-
?.filter?.((v) => (value as Array<string | number>).includes?.(v[keys?.value || 'value']))
207-
.map((v) => v[keys?.value || 'value']);
207+
: tmpPropOptions?.filter?.((v) => (value as Array<string | number>).includes?.(v[keys?.value || 'value']));
208+
209+
allSelectedValue = isObjectType
210+
? currentSelectedOptions
211+
: currentSelectedOptions?.map((v) => v[keys?.value || 'value']);
212+
208213
currentOption = isObjectType
209214
? (value as Array<SelectValue>).find((v) => v[keys?.value || 'value'] === selectedValue)
210215
: currentSelectedOptions?.find((option) => option[keys?.value || 'value'] === selectedValue);
211216
} else {
212217
currentSelectedOptions = isObjectType
213218
? [value]
214219
: tmpPropOptions?.filter?.((v) => value === v[keys?.value || 'value']) || [];
220+
allSelectedValue = currentSelectedOptions;
215221
currentOption = isObjectType
216222
? value
217223
: currentSelectedOptions?.find((option) => option[keys?.value || 'value'] === selectedValue);
218224
}
219225

220-
return { currentSelectedOptions, currentOption };
226+
return { currentSelectedOptions, currentOption, allSelectedValue };
221227
};

0 commit comments

Comments
 (0)