mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-08-06 19:07:25 +08:00
58 lines
1.2 KiB
JavaScript
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);
|
|
},
|
|
});
|
|
}
|