mirror of
https://github.com/youzan/vant.git
synced 2025-10-15 23:55:08 +00:00
Signed-off-by: Kayne <w.zengkai@gmail.com>
This commit is contained in:
@@ -147,7 +147,9 @@ export default defineComponent({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getEventParams = () => ({
|
const getEventParams = () => ({
|
||||||
selectedValues: selectedValues.value.slice(0),
|
selectedValues: selectedValues.value.length
|
||||||
|
? selectedValues.value.slice(0)
|
||||||
|
: resetSelectedValues(currentColumns.value),
|
||||||
selectedOptions: selectedOptions.value,
|
selectedOptions: selectedOptions.value,
|
||||||
selectedIndexes: selectedIndexes.value,
|
selectedIndexes: selectedIndexes.value,
|
||||||
});
|
});
|
||||||
@@ -268,23 +270,20 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
watch(
|
const resetSelectedValues = (columns: PickerColumn[]) => {
|
||||||
currentColumns,
|
columns.forEach((options, index) => {
|
||||||
(columns) => {
|
if (
|
||||||
columns.forEach((options, index) => {
|
options.length &&
|
||||||
if (
|
!isOptionExist(options, selectedValues.value[index], fields.value)
|
||||||
options.length &&
|
) {
|
||||||
!isOptionExist(options, selectedValues.value[index], fields.value)
|
setValue(index, getFirstEnabledOption(options)![fields.value.value]);
|
||||||
) {
|
}
|
||||||
setValue(
|
});
|
||||||
index,
|
};
|
||||||
getFirstEnabledOption(options)![fields.value.value],
|
|
||||||
);
|
watch(currentColumns, (columns) => resetSelectedValues(columns), {
|
||||||
}
|
immediate: true,
|
||||||
});
|
});
|
||||||
},
|
|
||||||
{ immediate: true },
|
|
||||||
);
|
|
||||||
|
|
||||||
// preserve last emitted model value
|
// preserve last emitted model value
|
||||||
// when props.modelValue is updated by parent component,
|
// when props.modelValue is updated by parent component,
|
||||||
|
@@ -489,3 +489,35 @@ test('should emit correct values when clicking confirm button during column scro
|
|||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should emit default values when clear modelValue', async () => {
|
||||||
|
const columns = [
|
||||||
|
{ text: '1', value: '1' },
|
||||||
|
{ text: '2', value: '2' },
|
||||||
|
];
|
||||||
|
const wrapper = mount({
|
||||||
|
setup() {
|
||||||
|
const modelValue = ref(['1']);
|
||||||
|
return () => (
|
||||||
|
<>
|
||||||
|
<button
|
||||||
|
class="clear-button"
|
||||||
|
onClick={() => (modelValue.value = [])}
|
||||||
|
/>
|
||||||
|
<Picker v-model={modelValue.value} columns={columns} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const button = wrapper.find('.clear-button');
|
||||||
|
await button.trigger('click');
|
||||||
|
const picker = wrapper.findComponent(Picker);
|
||||||
|
await picker.find('.van-picker__confirm').trigger('click');
|
||||||
|
expect(picker.emitted('confirm')![0]).toEqual([
|
||||||
|
{
|
||||||
|
selectedOptions: [{ text: '1', value: '1' }],
|
||||||
|
selectedValues: ['1'],
|
||||||
|
selectedIndexes: [0],
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
Reference in New Issue
Block a user