iking-directive
Version:
金合前端-VUE指令
2 lines (1 loc) • 1.5 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("iking-utils")):"function"==typeof define&&define.amd?define(["iking-utils"],n):(e="undefined"!=typeof globalThis?globalThis:e||self)["iking-directive"]=n(e.ikingUtils)}(this,(function(e){"use strict";var n={name:"btnRole",dir:{mounted(n,t){const i=t.value;if(i){let t=(async n=>{const t=await e.ikStore.forage.getItem("menu-button");return!!t&&t?.find((e=>e.permissionCode===n))})(i);t||n?.parentNode?.removeChild(n)}}}};const t=new Map;let i;function o(e,n){let t=[];return Array.isArray(n.arg)?t=n.arg:t.push(n.arg),function(i,o){const r=n.instance.popperRef,a=i.target,d=o.target,u=!n||!n.instance,s=!a||!d,c=e.contains(a)||e.contains(d),l=e===a,f=t.length&&t.some((e=>e?.contains(a)))||t.length&&t.includes(d),m=r&&(r.contains(a)||r.contains(d));u||s||c||l||f||m||n.value()}}e.paramType.isServer||(e.ikDomUtil.on(document,"mousedown",(e=>i=e)),e.ikDomUtil.on(document,"mouseup",(e=>{for(const{documentHandler:n}of t.values())n(e,i)})));var r={name:"outside",dir:{beforeMount(e,n){t.set(e,{documentHandler:o(e,n),bindingFn:n.value})},updated(e,n){t.set(e,{documentHandler:o(e,n),bindingFn:n.value})},unmounted(e){t.delete(e)}}};var a="focus",d={mounted:e=>{if("INPUT"===e.tagName)e.focus();else for(let n=0;n<e.children.length;n++)if("INPUT"===e.children[n].tagName){try{e.children[n].focus()}catch(e){}return}}};return{install(e,t){e.directive(a,d),e.directive(r.name,r.dir),e.directive(n.name,n.dir)}}}));