mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-08-07 03:15:01 +08:00
升级Vue3,iView替换ElementPlus
- 删除babel配置、更新依赖与入口初始化 - 全量替换UI组件、样式适配,新增迁移文档与标签/过滤器自动化替换脚本
This commit is contained in:
@@ -1,49 +1,57 @@
|
||||
import Vue from 'vue'
|
||||
import Clickoutside from 'element-ui/src/utils/clickoutside'
|
||||
function onClickOutside(el, binding) {
|
||||
const handler = (e) => {
|
||||
if (!el.contains(e.target)) {
|
||||
binding.value(e);
|
||||
}
|
||||
};
|
||||
el.__clickOutsideHandler__ = handler;
|
||||
document.addEventListener("click", handler);
|
||||
}
|
||||
|
||||
// 自定义聚焦指令
|
||||
Vue.directive('focus', {
|
||||
inserted(el) {
|
||||
el.focus()
|
||||
},
|
||||
})
|
||||
function offClickOutside(el) {
|
||||
if (el.__clickOutsideHandler__) {
|
||||
document.removeEventListener("click", el.__clickOutsideHandler__);
|
||||
delete el.__clickOutsideHandler__;
|
||||
}
|
||||
}
|
||||
|
||||
// 自定义粘贴指令
|
||||
Vue.directive('paste', {
|
||||
bind(el, binding, vnode) {
|
||||
el.addEventListener('paste', function(event) {
|
||||
//这里直接监听元素的粘贴事件
|
||||
binding.value(event)
|
||||
})
|
||||
},
|
||||
})
|
||||
export function registerDirectives(app) {
|
||||
app.directive("focus", {
|
||||
mounted(el) {
|
||||
el.focus();
|
||||
},
|
||||
});
|
||||
|
||||
// 自定义拖拽指令
|
||||
Vue.directive('drag', {
|
||||
bind(el, binding, vnode) {
|
||||
// 因为拖拽还包括拖动时的经过事件,离开事件,和进入事件,放下事件,
|
||||
// 浏览器对于拖拽的默认事件的处理是打开拖进来的资源,
|
||||
// 所以要先对这三个事件进行默认事件的禁止
|
||||
el.addEventListener('dragenter', function(event) {
|
||||
event.stopPropagation()
|
||||
event.preventDefault()
|
||||
})
|
||||
el.addEventListener('dragover', function(event) {
|
||||
event.stopPropagation()
|
||||
event.preventDefault()
|
||||
})
|
||||
el.addEventListener('dragleave', function(event) {
|
||||
event.stopPropagation()
|
||||
event.preventDefault()
|
||||
})
|
||||
el.addEventListener('drop', function(event) {
|
||||
// 这里阻止默认事件,并绑定事件的对象,用来在组件上返回事件对象
|
||||
event.stopPropagation()
|
||||
event.preventDefault()
|
||||
binding.value(event)
|
||||
})
|
||||
},
|
||||
})
|
||||
app.directive("paste", {
|
||||
mounted(el, binding) {
|
||||
el.addEventListener("paste", (event) => {
|
||||
binding.value(event);
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
// 点击其他地方隐藏指令
|
||||
Vue.directive('outside', Clickoutside)
|
||||
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);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user