Download Fore_End/cpcn2/node_modules/element-ui/src/utils/clickoutside.js from zxy0307/JavaWeb: direct link, hf CLI and curl.
- Browser
- Download file 1.89 kB
-
https://huggingface.co/zxy0307/JavaWeb/resolve/main/Fore_End/cpcn2/node_modules/element-ui/src/utils/clickoutside.js
- Command line
-
hf download hf://zxy0307/JavaWeb/Fore_End/cpcn2/node_modules/element-ui/src/utils/clickoutside.js
-
curl -L -o clickoutside.js https://huggingface.co/zxy0307/JavaWeb/resolve/main/Fore_End/cpcn2/node_modules/element-ui/src/utils/clickoutside.js
1.89 kB
| import Vue from 'vue'; | |
| import { on } from 'element-ui/src/utils/dom'; | |
| const nodeList = []; | |
| const ctx = '@@clickoutsideContext'; | |
| let startClick; | |
| let seed = 0; | |
| !Vue.prototype.$isServer && on(document, 'mousedown', e => (startClick = e)); | |
| !Vue.prototype.$isServer && on(document, 'mouseup', e => { | |
| nodeList.forEach(node => node[ctx].documentHandler(e, startClick)); | |
| }); | |
| function createDocumentHandler(el, binding, vnode) { | |
| return function(mouseup = {}, mousedown = {}) { | |
| if (!vnode || | |
| !vnode.context || | |
| !mouseup.target || | |
| !mousedown.target || | |
| el.contains(mouseup.target) || | |
| el.contains(mousedown.target) || | |
| el === mouseup.target || | |
| (vnode.context.popperElm && | |
| (vnode.context.popperElm.contains(mouseup.target) || | |
| vnode.context.popperElm.contains(mousedown.target)))) return; | |
| if (binding.expression && | |
| el[ctx].methodName && | |
| vnode.context[el[ctx].methodName]) { | |
| vnode.context[el[ctx].methodName](); | |
| } else { | |
| el[ctx].bindingFn && el[ctx].bindingFn(); | |
| } | |
| }; | |
| } | |
| /** | |
| * v-clickoutside | |
| * @desc 点击元素外面才会触发的事件 | |
| * @example | |
| * ```vue | |
| * <div v-element-clickoutside="handleClose"> | |
| * ``` | |
| */ | |
| export default { | |
| bind(el, binding, vnode) { | |
| nodeList.push(el); | |
| const id = seed++; | |
| el[ctx] = { | |
| id, | |
| documentHandler: createDocumentHandler(el, binding, vnode), | |
| methodName: binding.expression, | |
| bindingFn: binding.value | |
| }; | |
| }, | |
| update(el, binding, vnode) { | |
| el[ctx].documentHandler = createDocumentHandler(el, binding, vnode); | |
| el[ctx].methodName = binding.expression; | |
| el[ctx].bindingFn = binding.value; | |
| }, | |
| unbind(el) { | |
| let len = nodeList.length; | |
| for (let i = 0; i < len; i++) { | |
| if (nodeList[i][ctx].id === el[ctx].id) { | |
| nodeList.splice(i, 1); | |
| break; | |
| } | |
| } | |
| delete el[ctx]; | |
| } | |
| }; | |