mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
32 lines
614 B
JavaScript
32 lines
614 B
JavaScript
/**
|
|
* Listen to click outside event
|
|
*/
|
|
import { on, off } from '../utils/dom/event';
|
|
|
|
export const ClickOutsideMixin = (config) => ({
|
|
props: {
|
|
closeOnClickOutside: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
},
|
|
|
|
data() {
|
|
const clickOutsideHandler = (event) => {
|
|
if (this.closeOnClickOutside && !this.$el.contains(event.target)) {
|
|
this[config.method]();
|
|
}
|
|
};
|
|
|
|
return { clickOutsideHandler };
|
|
},
|
|
|
|
mounted() {
|
|
on(document, config.event, this.clickOutsideHandler);
|
|
},
|
|
|
|
beforeDestroy() {
|
|
off(document, config.event, this.clickOutsideHandler);
|
|
},
|
|
});
|