fix(Popup): should not call before-close when show prop becomes false (#9291)
This commit is contained in:
+8
-9
@@ -115,17 +115,15 @@ export default defineComponent({
|
||||
}
|
||||
};
|
||||
|
||||
const triggerClose = () => {
|
||||
opened = false;
|
||||
emit('close');
|
||||
emit('update:show', false);
|
||||
};
|
||||
|
||||
const close = () => {
|
||||
if (opened) {
|
||||
callInterceptor({
|
||||
interceptor: props.beforeClose,
|
||||
done: triggerClose,
|
||||
done() {
|
||||
opened = false;
|
||||
emit('close');
|
||||
emit('update:show', false);
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -224,12 +222,13 @@ export default defineComponent({
|
||||
if (value) {
|
||||
open();
|
||||
} else {
|
||||
close();
|
||||
opened = false;
|
||||
emit('close');
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
useExpose({ popupRef, triggerClose });
|
||||
useExpose({ popupRef });
|
||||
|
||||
useLockScroll(popupRef, () => props.show && props.lockScroll);
|
||||
|
||||
|
||||
@@ -230,3 +230,16 @@ test('should allow to prevent close with before-close prop', async () => {
|
||||
await wrapper.find('.van-overlay').trigger('click');
|
||||
expect(wrapper.emitted('update:show')[0]).toEqual([false]);
|
||||
});
|
||||
|
||||
test('should not call before-close when show prop becomes false', async () => {
|
||||
const beforeClose = jest.fn();
|
||||
const wrapper = mount(Popup, {
|
||||
props: {
|
||||
show: true,
|
||||
beforeClose,
|
||||
},
|
||||
});
|
||||
|
||||
await wrapper.setProps({ show: false });
|
||||
expect(beforeClose).toHaveBeenCalledTimes(0);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user