feat(Calendar): add click-overlay event (#13312)

This commit is contained in:
inottn
2025-01-18 17:55:40 +08:00
committed by GitHub
parent 2112008dba
commit 32f6a4ff04
4 changed files with 22 additions and 0 deletions

View File

@@ -115,6 +115,7 @@ export default defineComponent({
'update:show',
'clickSubtitle',
'clickDisabledDate',
'clickOverlay',
'panelChange',
],
@@ -512,6 +513,8 @@ export default defineComponent({
}
};
const onClickOverlay = (event: MouseEvent) => emit('clickOverlay', event);
const updateShow = (value: boolean) => emit('update:show', value);
const renderMonth = (date: Date, index: number) => {
@@ -654,6 +657,7 @@ export default defineComponent({
closeOnPopstate={props.closeOnPopstate}
safeAreaInsetTop={props.safeAreaInsetTop}
closeOnClickOverlay={props.closeOnClickOverlay}
onClickOverlay={onClickOverlay}
onUpdate:show={updateShow}
/>
);

View File

@@ -340,6 +340,7 @@ Following props are supported when the type is multiple
| over-range | Emitted when exceeded max range | - |
| click-subtitle | Emitted when clicking the subtitle | _event: MouseEvent_ |
| click-disabled-date `v4.7.0` | Emitted when clicking disabled date | _value: Date \| Date[]_ |
| click-overlay `v4.9.16` | Emitted when overlay is clicked | _event: MouseEvent_ |
| panel-change | Emitted when switching calendar panel (effective when `switch mode` is not `none`) | _{ date: Date }_ |
### Slots

View File

@@ -346,6 +346,7 @@ export default {
| over-range | 范围选择超过最多可选天数时触发 | - |
| click-subtitle | 点击日历副标题时触发 | _event: MouseEvent_ |
| click-disabled-date `v4.7.0` | 点击禁用日期时触发 | _value: Date \| Date[]_ |
| click-overlay `v4.9.16` | 点击遮罩层时触发 | _event: MouseEvent_ |
| panel-change | 日历面板切换时触发(`switch-mode` 不为 `none` 时生效) | _{ date: Date }_ |
### Slots

View File

@@ -531,6 +531,22 @@ test('popup wrapper', async () => {
expect(wrapper.find('.van-calendar__popup').style.display).toEqual('none');
});
test('should trigger click-overlay event when overlay is clicked', async () => {
const onClickOverlay = vi.fn();
const wrapper = mount(Calendar, {
props: {
minDate,
maxDate,
defaultDate: minDate,
show: true,
onClickOverlay,
},
});
wrapper.find('.van-overlay').trigger('click');
expect(onClickOverlay).toHaveBeenCalled();
});
test('set show-mark prop to false', async () => {
const wrapper = mount(Calendar, {
props: {