press-ui
Version:
简单、易用的跨端组件库,兼容 Vue2 和 Vue3,同时支持 uni-app和普通 Vue 项目
32 lines (26 loc) • 629 B
JavaScript
export const ClickOutsideMixin = config => ({
props: {
closeOnClickOutside: {
type: Boolean,
default: true,
},
},
data() {
const clickOutsideHandler = (event) => {
// @ts-ignore
if (this.closeOnClickOutside && !this.$el.contains(event.target)) {
// @ts-ignore
this[config.method]();
}
};
return { clickOutsideHandler };
},
mounted() {
// @ts-ignore
document.addEventListener(config.event, this.clickOutsideHandler);
},
beforeDestroy() {
// @ts-ignore
document.removeEventListener(config.event, this.clickOutsideHandler);
},
});