mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
fix(Picker): correct v-model when emit confirm event (#11194)
This commit is contained in:
parent
73b4210118
commit
5d98d5a5d4
@ -17,7 +17,7 @@ test('should emit confirm event correctly', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await later();
|
await later();
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
expect(wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0]).toEqual(
|
expect(wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0]).toEqual(
|
||||||
{
|
{
|
||||||
selectedOptions: [
|
selectedOptions: [
|
||||||
@ -90,7 +90,7 @@ test('should render with max-date correctly', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await later();
|
await later();
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
expect(
|
expect(
|
||||||
wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0].selectedValues
|
wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0].selectedValues
|
||||||
).toEqual(['2010', '01', '10']);
|
).toEqual(['2010', '01', '10']);
|
||||||
@ -115,7 +115,7 @@ test('should render with min-date correctly', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await later();
|
await later();
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
expect(
|
expect(
|
||||||
wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0].selectedValues
|
wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0].selectedValues
|
||||||
).toEqual(['2000', '10', '10']);
|
).toEqual(['2000', '10', '10']);
|
||||||
@ -193,7 +193,7 @@ test('should update value correctly when dynamically change min-date', async ()
|
|||||||
minDate: new Date(2020, 11, 20),
|
minDate: new Date(2020, 11, 20),
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
expect(
|
expect(
|
||||||
wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0].selectedValues
|
wrapper.emitted<[PickerConfirmEventParams]>('confirm')![0][0].selectedValues
|
||||||
).toEqual(['2020', '12', '20']);
|
).toEqual(['2020', '12', '20']);
|
||||||
|
@ -2,6 +2,7 @@ import {
|
|||||||
ref,
|
ref,
|
||||||
watch,
|
watch,
|
||||||
computed,
|
computed,
|
||||||
|
nextTick,
|
||||||
defineComponent,
|
defineComponent,
|
||||||
type PropType,
|
type PropType,
|
||||||
type ExtractPropTypes,
|
type ExtractPropTypes,
|
||||||
@ -162,7 +163,13 @@ export default defineComponent({
|
|||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
children.forEach((child) => child.stopMomentum());
|
children.forEach((child) => child.stopMomentum());
|
||||||
const params = getEventParams();
|
const params = getEventParams();
|
||||||
|
|
||||||
|
// wait nextTick to ensure the model value is update to date
|
||||||
|
// when confirm event is emitted
|
||||||
|
nextTick(() => {
|
||||||
emit('confirm', params);
|
emit('confirm', params);
|
||||||
|
});
|
||||||
|
|
||||||
return params;
|
return params;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,14 +48,14 @@ const cascadeColumns = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
test('should emit confirm event for cascade picker correctly', () => {
|
test('should emit confirm event for cascade picker correctly', async () => {
|
||||||
const wrapper = mount(Picker, {
|
const wrapper = mount(Picker, {
|
||||||
props: {
|
props: {
|
||||||
columns: cascadeColumns,
|
columns: cascadeColumns,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
|
|
||||||
const params = wrapper.emitted<PickerConfirmEventParams[]>('confirm')?.[0];
|
const params = wrapper.emitted<PickerConfirmEventParams[]>('confirm')?.[0];
|
||||||
expect(params?.[0].selectedValues).toEqual(['A1', 'B1', 'C1']);
|
expect(params?.[0].selectedValues).toEqual(['A1', 'B1', 'C1']);
|
||||||
|
@ -10,7 +10,7 @@ const simpleColumn = [
|
|||||||
{ text: '1995', value: '1995' },
|
{ text: '1995', value: '1995' },
|
||||||
];
|
];
|
||||||
|
|
||||||
test('should emit confirm event after clicking the confirm button', () => {
|
test('should emit confirm event after clicking the confirm button', async () => {
|
||||||
const wrapper = mount(Picker, {
|
const wrapper = mount(Picker, {
|
||||||
props: {
|
props: {
|
||||||
showToolbar: true,
|
showToolbar: true,
|
||||||
@ -18,7 +18,7 @@ test('should emit confirm event after clicking the confirm button', () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
expect(wrapper.emitted('confirm')![0]).toEqual([
|
expect(wrapper.emitted('confirm')![0]).toEqual([
|
||||||
{
|
{
|
||||||
selectedOptions: [{ text: '1990', value: '1990' }],
|
selectedOptions: [{ text: '1990', value: '1990' }],
|
||||||
@ -178,7 +178,7 @@ test('should allow to update columns props dynamically', async () => {
|
|||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
expect(wrapper.emitted<[string, number]>('confirm')![0]).toEqual([
|
expect(wrapper.emitted<[string, number]>('confirm')![0]).toEqual([
|
||||||
{ selectedOptions: [{ text: '2', value: '2' }], selectedValues: ['2'] },
|
{ selectedOptions: [{ text: '2', value: '2' }], selectedValues: ['2'] },
|
||||||
]);
|
]);
|
||||||
|
@ -61,14 +61,14 @@ test('should format options correctly when using formatter prop', async () => {
|
|||||||
expect(wrapper.html()).toMatchSnapshot();
|
expect(wrapper.html()).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should emit confirm event after clicking the confirm button', () => {
|
test('should emit confirm event after clicking the confirm button', async () => {
|
||||||
const wrapper = mount(TimePicker, {
|
const wrapper = mount(TimePicker, {
|
||||||
props: {
|
props: {
|
||||||
modelValue: ['12', '00'],
|
modelValue: ['12', '00'],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.find('.van-picker__confirm').trigger('click');
|
await wrapper.find('.van-picker__confirm').trigger('click');
|
||||||
expect(wrapper.emitted('confirm')).toEqual([
|
expect(wrapper.emitted('confirm')).toEqual([
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user