Files
lilishop-ui/im/src/core/directives.js
lifenlong 832fda813b 升级Vue3,iView替换ElementPlus
- 删除babel配置、更新依赖与入口初始化
- 全量替换UI组件、样式适配,新增迁移文档与标签/过滤器自动化替换脚本
2026-06-05 17:49:43 +08:00

58 lines
1.2 KiB
JavaScript

function onClickOutside(el, binding) {
const handler = (e) => {
if (!el.contains(e.target)) {
binding.value(e);
}
};
el.__clickOutsideHandler__ = handler;
document.addEventListener("click", handler);
}
function offClickOutside(el) {
if (el.__clickOutsideHandler__) {
document.removeEventListener("click", el.__clickOutsideHandler__);
delete el.__clickOutsideHandler__;
}
}
export function registerDirectives(app) {
app.directive("focus", {
mounted(el) {
el.focus();
},
});
app.directive("paste", {
mounted(el, binding) {
el.addEventListener("paste", (event) => {
binding.value(event);
});
},
});
app.directive("drag", {
mounted(el, binding) {
const stop = (event) => {
event.stopPropagation();
event.preventDefault();
};
el.addEventListener("dragenter", stop);
el.addEventListener("dragover", stop);
el.addEventListener("dragleave", stop);
el.addEventListener("drop", (event) => {
stop(event);
binding.value(event);
});
},
});
app.directive("outside", {
mounted(el, binding) {
onClickOutside(el, binding);
},
unmounted(el) {
offClickOutside(el);
},
});
}