ll-package
Version:
2 lines (1 loc) • 1.6 kB
JavaScript
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),f=require("../../_util/KeyCode.js"),g=require("../utils/uiUtil.js"),D=require("../../_util/raf.js");function K(E){let{open:a,value:y,isClickOutside:r,triggerOpen:o,forwardKeydown:c,onKeydown:T,blurToCancel:b,onSubmit:d,onCancel:w,onFocus:h,onBlur:p}=E;const u=l.shallowRef(!1),n=l.shallowRef(!1),s=l.shallowRef(!1),i=l.shallowRef(!1),R=l.shallowRef(!1),C=l.computed(()=>({onMousedown:()=>{u.value=!0,o(!0)},onKeydown:e=>{if(T(e,()=>{R.value=!0}),!R.value){switch(e.which){case f.default.ENTER:{a.value?d()!==!1&&(u.value=!0):o(!0),e.preventDefault();return}case f.default.TAB:{u.value&&a.value&&!e.shiftKey?(u.value=!1,e.preventDefault()):!u.value&&a.value&&!c(e)&&e.shiftKey&&(u.value=!0,e.preventDefault());return}case f.default.ESC:{u.value=!0,w();return}}!a.value&&![f.default.SHIFT].includes(e.which)?o(!0):u.value||c(e)}},onFocus:e=>{u.value=!0,n.value=!0,h&&h(e)},onBlur:e=>{if(s.value||!r(document.activeElement)){s.value=!1;return}b.value?setTimeout(()=>{let{activeElement:t}=document;for(;t&&t.shadowRoot;)t=t.shadowRoot.activeElement;r(t)&&w()},0):a.value&&(o(!1),i.value&&d()),n.value=!1,p&&p(e)}}));l.watch(a,()=>{i.value=!1}),l.watch(y,()=>{i.value=!0});const v=l.shallowRef();return l.onMounted(()=>{v.value=g.addGlobalMousedownEvent(e=>{const t=g.getTargetFromEvent(e);if(a.value){const m=r(t);m?(!n.value||m)&&o(!1):(s.value=!0,D.default(()=>{s.value=!1}))}})}),l.onBeforeUnmount(()=>{v.value&&v.value()}),[C,{focused:n,typing:u}]}exports.default=K;
;