fix(Popup): should not call before-close when show prop becomes false (#9291)

This commit is contained in:
neverland
2021-08-19 19:24:32 +08:00
committed by GitHub
parent c934710906
commit 91aaddca3d
4 changed files with 23 additions and 19 deletions
+8 -9
View File
@@ -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);
+13
View File
@@ -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);
});