diff --git a/packages/lib/dist/VueFinalModal.esm.js b/packages/lib/dist/VueFinalModal.esm.js index 5b4a2a20..f77bb54f 100644 --- a/packages/lib/dist/VueFinalModal.esm.js +++ b/packages/lib/dist/VueFinalModal.esm.js @@ -1,2 +1,2 @@ -import{ref as e,watch as n,nextTick as t,reactive as o,computed as r,onMounted as i,onBeforeUnmount as a,withDirectives as l,openBlock as u,createElementBlock as s,normalizeStyle as c,normalizeClass as f,withKeys as d,createVNode as v,Transition as p,mergeProps as m,toHandlers as y,withCtx as h,createCommentVNode as b,createElementVNode as g,withModifiers as w,renderSlot as x,Fragment as S,renderList as z,vShow as E,createBlock as M,resolveDynamicComponent as T,createSlots as C,markRaw as O,shallowReactive as k}from"vue";function _(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function A(e){for(var n=1;ne.length)&&(n=e.length);for(var t=0,o=new Array(n);t1),ue=[],se=!1,ce=0,fe=-1,de=function(e,n){var t=!1;return function(e){for(var n=[];e;){if(n.push(e),e.classList.contains("vfm"))return n;e=e.parentElement}return n}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var n=window.getComputedStyle(e);return["auto","scroll"].includes(n.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,n){return!(0===e.scrollTop&&n<0||e.scrollTop+e.clientHeight+n>=e.scrollHeight&&n>0)}(e,n)&&(t=!0)})),t},ve=function(e){return ue.some((function(){return de(e,-ce)}))},pe=function(e){var n=e||window.event;return!!ve(n.target)||(n.touches.length>1||(n.preventDefault&&n.preventDefault(),!1))},me=function(e,n){if(e){if(!ue.some((function(n){return n.targetElement===e}))){var t={targetElement:e,options:n||{}};ue=[].concat(I(ue),[t]),le?(e.ontouchstart=function(e){1===e.targetTouches.length&&(fe=e.targetTouches[0].clientY)},e.ontouchmove=function(n){1===n.targetTouches.length&&function(e,n){ce=e.targetTouches[0].clientY-fe,!ve(e.target)&&(n&&0===n.scrollTop&&ce>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(n)&&ce<0?pe(e):e.stopPropagation())}(n,e)},se||(document.addEventListener("touchmove",pe,oe?{passive:!1}:void 0),se=!0)):function(e){if(void 0===ae){var n=!!e&&!0===e.reserveScrollBarGap,t=window.innerWidth-document.documentElement.clientWidth;if(n&&t>0){var o=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);ae=document.body.style.paddingRight,document.body.style.paddingRight="".concat(o+t,"px")}}void 0===ie&&(ie=document.body.style.overflow,document.body.style.overflow="hidden")}(n)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},ye=function(e){e?(ue=ue.filter((function(n){return n.targetElement!==e})),le?(e.ontouchstart=null,e.ontouchmove=null,se&&0===ue.length&&(document.removeEventListener("touchmove",pe,oe?{passive:!1}:void 0),se=!1)):ue.length||(void 0!==ae&&(document.body.style.paddingRight=ae,ae=void 0),void 0!==ie&&(document.body.style.overflow=ie,ie=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},he=function(){},be={props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:function(e){return-1!==["if","show"].indexOf(e)}},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:function(){return{}}},overlayStyle:{type:[Object,Array],default:function(){return{}}},contentStyle:{type:[Object,Array],default:function(){return{}}},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(e){var n=j(e);return"boolean"===n||"string"===n||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(n){return-1!==e.indexOf(n)})).length===e.length}},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup:function(l,u){var s=u.emit,c=Symbol("vfm"),f=e(null),d=e(null),v=e(null),p=e(null),m=e(null),y=e(null),h=e(null),b=(null==F&&(F=new H),F),g=e(!1),w=o({modal:!1,overlay:!1}),x=q(),S=x.state,z=x.listeners,E=q(),M=E.state,T=E.listeners,C=e(!1),O=e({}),k=te({props:l,visible:g,vfmContainer:d,vfmContent:v,vfmResize:p,modalTransitionState:M,onEvent:function(e){s(j.value,e)}}),_=k.resizeVisible,j=k.state,P=k.dragResizeStyle,V=k.removeDragDown,L=k.removeResizeDown,B=e(null),D=he,R=he,N=r((function(){return"string"==typeof l.overlayTransition?{name:l.overlayTransition}:A({},l.overlayTransition)})),$=r((function(){return"string"==typeof l.transition?{name:l.transition}:A({},l.transition)})),U=r((function(){return(l.hideOverlay||S.value===W)&&M.value===W})),G=r((function(){return!1===l.zIndex?!!l.zIndexAuto&&+l.zIndexBase+2*(h.value||0):l.zIndex})),X=r((function(){return A({},!1!==G.value&&{zIndex:G.value})})),Z=r((function(){var e=[P.value];return Array.isArray(l.contentStyle)?e.push.apply(e,I(l.contentStyle)):e.push(l.contentStyle),e}));function J(){return{uid:c,props:l,emit:s,vfmContainer:d,vfmContent:v,vfmResize:p,vfmOverlayTransition:m,vfmTransition:y,getAttachElement:oe,modalStackIndex:h,visibility:w,handleLockScroll:ne,$focusTrap:b,toggle:ae,params:O}}function Q(){if(l.modelValue){if(s("_before-open",re({type:"_before-open"})),ie("before-open",!1))return void R("show");var e=oe();if(e||!1===l.attach){!1!==l.attach&&e.appendChild(f.value);var n=l.api.openedModals.findIndex((function(e){return e.uid===c}));-1!==n&&l.api.openedModals.splice(n,1),l.api.openedModals.push(J()),h.value=l.api.openedModals.length-1,ne(),l.api.openedModals.filter((function(e){return e.uid!==c})).forEach((function(n,t){n.getAttachElement()===e&&(n.modalStackIndex.value=t,n.visibility.overlay=!1)})),g.value=!0,w.overlay=!0,w.modal=!0}else!1!==e&&console.warn("Unable to locate target ".concat(l.attach))}}function ee(){var e=l.api.openedModals.findIndex((function(e){return e.uid===c}));if(-1!==e&&l.api.openedModals.splice(e,1),l.api.openedModals.length>0){var n=l.api.openedModals[l.api.openedModals.length-1];n.props.focusTrap&&t((function(){n.$focusTrap.enable(n.vfmContainer.value),n.$focusTrap.firstElement.focus()})),(n.props.focusRetain||n.props.focusTrap)&&n.vfmContainer.value.focus(),!n.props.hideOverlay&&(n.visibility.overlay=!0)}l.drag&&V(),l.resize&&L(),j.value=null,w.overlay=!1,w.modal=!1}function ne(){l.modelValue&&t((function(){l.lockScroll?me(d.value,{reserveScrollBarGap:!0}):ye(d.value)}))}function oe(){return!1!==l.attach&&("string"==typeof l.attach?!!window&&window.document.querySelector(l.attach):l.attach)}function re(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return A({ref:J()},e)}function ie(e,n){var o=!1,r=re({type:e,stop:function(){o=!0}});return s(e,r),!!o&&(C.value=!0,t((function(){s("update:modelValue",n)})),!0)}function ae(e,n){var t=arguments;return new Promise((function(o,r){D=function(e){o(e),D=he},R=function(e){r(e),R=he};var i="boolean"==typeof e?e:!l.modelValue;i&&2===t.length&&(O.value=n),s("update:modelValue",i)}))}return n((function(){return l.modelValue}),(function(e){if(C.value)C.value=!1;else if(Q(),!e){if(s("_before-close",re({type:"_before-close"})),ie("before-close",!0))return void R("hide");ee()}})),n((function(){return l.lockScroll}),ne),n((function(){return l.hideOverlay}),(function(e){l.modelValue&&!e&&(w.overlay=!0)})),n((function(){return l.attach}),Q),n(U,(function(e){e&&(g.value=!1,d.value.style.display="none")}),{flush:"post"}),n(M,(function(e){switch(e){case K:(l.focusRetain||l.focusTrap)&&d.value.focus(),l.focusTrap&&b.enable(d.value),s("_opened"),s("opened",re({type:"opened"})),D("show");break;case Y:b.enabled&&b.disable();break;case W:h.value=null,l.lockScroll&&ye(d.value);var n=!1,t=re({type:"closed",stop:function(){n=!0}});if(s("_closed"),s("closed",t),D("hide"),n)return;O.value={}}})),l.api.modals.push(J()),i((function(){Q()})),a((function(){var e;ee(),l.lockScroll&&d.value&&ye(d.value),null==f||null===(e=f.value)||void 0===e||e.remove();var n=l.api.modals.findIndex((function(e){return e.uid===c}));l.api.modals.splice(n,1)})),{root:f,vfmContainer:d,vfmContent:v,vfmResize:p,vfmOverlayTransition:m,vfmTransition:y,computedOverlayTransition:N,computedTransition:$,overlayListeners:z,modalListeners:T,visible:g,visibility:w,params:O,resizeVisible:_,calculateZIndex:G,bindStyle:X,bindContentStyle:Z,onMousedown:function(e){B.value=null==e?void 0:e.target},onMouseupContainer:function(){B.value===d.value&&"resize:move"!==j.value&&(s("click-outside",re({type:"click-outside"})),l.clickToClose&&s("update:modelValue",!1))},onEsc:function(){g.value&&l.escToClose&&s("update:modelValue",!1)}}}},ge=["aria-expanded"],we={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},xe=["direction"];!function(e,n){void 0===n&&(n={});var t=n.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===t&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),be.render=function(e,n,t,o,r,i){return"if"!==t.displayDirective||o.visible?l((u(),s("div",{key:0,ref:"root",style:c(o.bindStyle),class:f(["vfm vfm--inset",[!1===t.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":t.nonModal}]]),onKeydown:n[3]||(n[3]=d((function(){return o.onEsc&&o.onEsc.apply(o,arguments)}),["esc"]))},[v(p,m(o.computedOverlayTransition,y(o.overlayListeners)),{default:h((function(){return[!t.hideOverlay&&o.visibility.overlay?(u(),s("div",{key:0,class:f(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",t.overlayClass]),style:c(t.overlayStyle)},null,6)):b("v-if",!0)]})),_:1},16),v(p,m(o.computedTransition,y(o.modalListeners)),{default:h((function(){return[l(g("div",{ref:"vfmContainer",class:f(["vfm__container vfm--absolute vfm--inset vfm--outline-none",t.classes]),style:c(t.styles),"aria-expanded":o.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:n[1]||(n[1]=w((function(){return o.onMouseupContainer&&o.onMouseupContainer.apply(o,arguments)}),["self"])),onMousedown:n[2]||(n[2]=w((function(){return o.onMousedown&&o.onMousedown.apply(o,arguments)}),["self"]))},[g("div",{ref:"vfmContent",class:f(["vfm__content",[t.contentClass,{"vfm--prevent-auto":t.nonModal}]]),style:c(o.bindContentStyle),onMousedown:n[0]||(n[0]=function(e){return o.onMousedown(null)})},[x(e.$slots,"default",{params:o.params,close:function(){return e.$emit("update:modelValue",!1)}}),o.resizeVisible&&o.visibility.modal?(u(),s("div",we,[(u(!0),s(S,null,z(t.resizeDirections,(function(e){return u(),s("div",{key:e,direction:e,class:f(["vfm--resize-".concat(e),"vfm--absolute vfm--prevent-auto"])},null,10,xe)})),128))],512)):b("v-if",!0)],38)],46,ge),[[E,o.visibility.modal]])]})),_:3},16)],38)),[[E,"show"!==t.displayDirective||o.visible]]):b("v-if",!0)},be.__scopeId="data-v-72c09f54",be.__file="src/VueFinalModal.vue";var Se={methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},closed:function(e,n){this.slice(e),n.closed&&n.closed()},beforeClose:function(e){e.value&&(null==e||e.rejectClose("hide"))},beforeOpen:function(e,n,t){var o,r=this;return(o=function*(){e.ref.params.value=n.params,yield r.$nextTick(),yield r.$nextTick(),n.value||(r.slice(t),null==n||n.reject("show"))},function(){var e=this,n=arguments;return new Promise((function(t,r){var i=o.apply(e,n);function a(e){P(i,t,r,a,l,"next",e)}function l(e){P(i,t,r,a,l,"throw",e)}a(void 0)}))})()},isString:function(e){return"string"==typeof e}}},ze={class:"modals-container"},Ee=["innerHTML"];Se.render=function(e,n,t,o,r,i){return u(),s("div",ze,[(u(!0),s(S,null,z(e.api.dynamicModals,(function(e,n){return u(),M(T(e.component),m({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":function(n){return e.value=n}},y(e.on),{on_beforeClose:function(n){return i.beforeClose(e)},on_closed:function(t){return i.closed(n,e)},on_beforeOpen:function(t){return i.beforeOpen(t,e,n)},on_opened:e.opened}),C({_:2},[z(e.slots,(function(e,n){return{name:n,fn:h((function(){return[b(" eslint-disable vue/no-v-html "),i.isString(e)?(u(),s("div",{key:0,innerHTML:e},null,8,Ee)):(u(),M(T(e.component),m({key:1},e.bind,y(e.on||{})),null,16))]}))}}))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])})),128))])},Se.__file="src/ModalsContainer.vue";var Me=function(){function e(){var n=this;V(this,e);var t=function(e){var t=A(A({},e),{},{props:A({},e.props)});return Object.assign(t.props,{api:{type:Object,default:function(){return n}}}),O(t)};this.modals=[],this.openedModals=[],this.VueFinalModal=t(be),this.dynamicModals=k([]),this.ModalsContainer=t(Se)}return B(e,[{key:"show",value:function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),o=1;o1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:{},r=o(A({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},params:t},e)),i=function(){return n.existModal(r)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise((function(e,t){r.value=!0,r.reject=t,r.opened=function(){e("show")},n.dynamicModals.push(r)}))},a=function(){return n.existModal(r)?new Promise((function(e,n){r.value=!1,r.rejectClose=n,r.closed=function(){e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed")};return{show:i,hide:a,options:r}}}]),e}(),Te=function(){var e=new Me;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},Ce=Te(),Oe=Ce.$vfm,ke=Ce.VueFinalModal,_e=Ce.ModalsContainer,Ae=Ce.useModal;export{Oe as $vfm,Me as ModalInstance,_e as ModalsContainer,ke as VueFinalModal,Te as createModalInstance,Ae as useModal}; +import{ref as e,watch as n,nextTick as t,reactive as o,computed as r,onMounted as i,onBeforeUnmount as a,withDirectives as l,openBlock as u,createElementBlock as s,normalizeStyle as c,normalizeClass as f,withKeys as d,createVNode as v,Transition as p,mergeProps as m,toHandlers as y,withCtx as h,createCommentVNode as b,createElementVNode as g,withModifiers as w,renderSlot as x,Fragment as S,renderList as z,vShow as E,createBlock as M,resolveDynamicComponent as T,createSlots as C,markRaw as O,shallowReactive as k}from"vue";function _(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function A(e){for(var n=1;ne.length)&&(n=e.length);for(var t=0,o=new Array(n);t1),se=[],ce=!1,fe=0,de=-1,ve=function(e,n){var t=!1;return function(e){for(var n=[];e;){if(n.push(e),e.classList.contains("vfm"))return n;e=e.parentElement}return n}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var n=window.getComputedStyle(e);return["auto","scroll"].includes(n.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,n){return!(0===e.scrollTop&&n<0||e.scrollTop+e.clientHeight+n>=e.scrollHeight&&n>0)}(e,n)&&(t=!0)})),t},pe=function(e){return se.some((function(){return ve(e,-fe)}))},me=function(e){var n=e||window.event;return!!pe(n.target)||(n.touches.length>1||(n.preventDefault&&n.preventDefault(),!1))},ye=function(e,n){if(e){if(!se.some((function(n){return n.targetElement===e}))){var t={targetElement:e,options:n||{}};se=[].concat(I(se),[t]),ue?(e.ontouchstart=function(e){1===e.targetTouches.length&&(de=e.targetTouches[0].clientY)},e.ontouchmove=function(n){1===n.targetTouches.length&&function(e,n){fe=e.targetTouches[0].clientY-de,!pe(e.target)&&(n&&0===n.scrollTop&&fe>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(n)&&fe<0?me(e):e.stopPropagation())}(n,e)},ce||(document.addEventListener("touchmove",me,re?{passive:!1}:void 0),ce=!0)):function(e){if(void 0===le){var n=!!e&&!0===e.reserveScrollBarGap,t=window.innerWidth-document.documentElement.clientWidth;if(n&&t>0){var o=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);le=document.body.style.paddingRight,document.body.style.paddingRight="".concat(o+t,"px")}}void 0===ae&&(ae=document.body.style.overflow,document.body.style.overflow="hidden")}(n)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},he=function(e){e?(se=se.filter((function(n){return n.targetElement!==e})),ue?(e.ontouchstart=null,e.ontouchmove=null,ce&&0===se.length&&(document.removeEventListener("touchmove",me,re?{passive:!1}:void 0),ce=!1)):se.length||(void 0!==le&&(document.body.style.paddingRight=le,le=void 0),void 0!==ae&&(document.body.style.overflow=ae,ae=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},be=function(){},ge={props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:function(e){return-1!==["if","show"].indexOf(e)}},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:function(){return{}}},overlayStyle:{type:[Object,Array],default:function(){return{}}},contentStyle:{type:[Object,Array],default:function(){return{}}},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(e){var n=j(e);return"boolean"===n||"string"===n||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(n){return-1!==e.indexOf(n)})).length===e.length}},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup:function(l,u){var s=u.emit,c=Symbol("vfm"),f=e(null),d=e(null),v=e(null),p=e(null),m=e(null),y=e(null),h=e(null),b=e(!1),g=o({modal:!1,overlay:!1}),w=K(),x=w.state,S=w.listeners,z=K(),E=z.state,M=z.listeners,T=e(!1),C=e({}),O=G({props:l,vfmContainer:d,modalTransitionState:E}).focusTrap,k=oe({props:l,visible:b,vfmContainer:d,vfmContent:v,vfmResize:p,modalTransitionState:E,onEvent:function(e){s(j.value,e)}}),_=k.resizeVisible,j=k.state,P=k.dragResizeStyle,V=k.removeDragDown,L=k.removeResizeDown,B=e(null),D=be,R=be,H=r((function(){return"string"==typeof l.overlayTransition?{name:l.overlayTransition}:A({},l.overlayTransition)})),$=r((function(){return"string"==typeof l.transition?{name:l.transition}:A({},l.transition)})),U=r((function(){return(l.hideOverlay||x.value===F)&&E.value===F})),W=r((function(){return!1===l.zIndex?!!l.zIndexAuto&&+l.zIndexBase+2*(h.value||0):l.zIndex})),Y=r((function(){return A({},!1!==W.value&&{zIndex:W.value})})),q=r((function(){var e=[P.value];return Array.isArray(l.contentStyle)?e.push.apply(e,I(l.contentStyle)):e.push(l.contentStyle),e}));function X(){return{uid:c,props:l,emit:s,vfmContainer:d,vfmContent:v,vfmResize:p,vfmOverlayTransition:m,vfmTransition:y,getAttachElement:ee,modalStackIndex:h,visibility:g,handleLockScroll:Q,toggle:re,params:C}}function Z(){if(l.modelValue){if(s("_before-open",ne({type:"_before-open"})),te("before-open",!1))return void R("show");var e=ee();if(e||!1===l.attach){!1!==l.attach&&e.appendChild(f.value);var n=l.api.openedModals.findIndex((function(e){return e.uid===c}));-1!==n&&l.api.openedModals.splice(n,1),l.api.openedModals.push(X()),h.value=l.api.openedModals.length-1,Q(),l.api.openedModals.filter((function(e){return e.uid!==c})).forEach((function(n,t){n.getAttachElement()===e&&(n.modalStackIndex.value=t,n.visibility.overlay=!1)})),b.value=!0,g.overlay=!0,g.modal=!0}else!1!==e&&console.warn("Unable to locate target ".concat(l.attach))}}function J(){var e=l.api.openedModals.findIndex((function(e){return e.uid===c}));if(-1!==e&&l.api.openedModals.splice(e,1),l.api.openedModals.length>0){var n=l.api.openedModals[l.api.openedModals.length-1];n.props.focusTrap&&t((function(){O.enable(n.vfmContainer.value),O.firstElement.focus()})),(n.props.focusRetain||n.props.focusTrap)&&n.vfmContainer.value.focus(),!n.props.hideOverlay&&(n.visibility.overlay=!0)}l.drag&&V(),l.resize&&L(),j.value=null,g.overlay=!1,g.modal=!1}function Q(){l.modelValue&&t((function(){l.lockScroll?ye(d.value,{reserveScrollBarGap:!0}):he(d.value)}))}function ee(){return!1!==l.attach&&("string"==typeof l.attach?!!window&&window.document.querySelector(l.attach):l.attach)}function ne(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return A({ref:X()},e)}function te(e,n){var o=!1,r=ne({type:e,stop:function(){o=!0}});return s(e,r),!!o&&(T.value=!0,t((function(){s("update:modelValue",n)})),!0)}function re(e,n){var t=arguments;return new Promise((function(o,r){D=function(e){o(e),D=be},R=function(e){r(e),R=be};var i="boolean"==typeof e?e:!l.modelValue;i&&2===t.length&&(C.value=n),s("update:modelValue",i)}))}return n((function(){return l.modelValue}),(function(e){if(T.value)T.value=!1;else if(Z(),!e){if(s("_before-close",ne({type:"_before-close"})),te("before-close",!0))return void R("hide");J()}})),n((function(){return l.lockScroll}),Q),n((function(){return l.hideOverlay}),(function(e){l.modelValue&&!e&&(g.overlay=!0)})),n((function(){return l.attach}),Z),n(U,(function(e){e&&(b.value=!1,d.value.style.display="none")}),{flush:"post"}),n(E,(function(e){switch(e){case N:s("_opened"),s("opened",ne({type:"opened"})),D("show");break;case F:h.value=null,l.lockScroll&&he(d.value);var n=!1,t=ne({type:"closed",stop:function(){n=!0}});if(s("_closed"),s("closed",t),D("hide"),n)return;C.value={}}})),l.api.modals.push(X()),i((function(){Z()})),a((function(){var e;J(),l.lockScroll&&d.value&&he(d.value),null==f||null===(e=f.value)||void 0===e||e.remove();var n=l.api.modals.findIndex((function(e){return e.uid===c}));l.api.modals.splice(n,1)})),{root:f,vfmContainer:d,vfmContent:v,vfmResize:p,vfmOverlayTransition:m,vfmTransition:y,computedOverlayTransition:H,computedTransition:$,overlayListeners:S,modalListeners:M,visible:b,visibility:g,params:C,resizeVisible:_,calculateZIndex:W,bindStyle:Y,bindContentStyle:q,onMousedown:function(e){B.value=null==e?void 0:e.target},onMouseupContainer:function(){B.value===d.value&&"resize:move"!==j.value&&(s("click-outside",ne({type:"click-outside"})),l.clickToClose&&s("update:modelValue",!1))},onEsc:function(){b.value&&l.escToClose&&s("update:modelValue",!1)}}}},we=["aria-expanded"],xe={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},Se=["direction"];!function(e,n){void 0===n&&(n={});var t=n.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===t&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),ge.render=function(e,n,t,o,r,i){return"if"!==t.displayDirective||o.visible?l((u(),s("div",{key:0,ref:"root",style:c(o.bindStyle),class:f(["vfm vfm--inset",[!1===t.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":t.nonModal}]]),onKeydown:n[3]||(n[3]=d((function(){return o.onEsc&&o.onEsc.apply(o,arguments)}),["esc"]))},[v(p,m(o.computedOverlayTransition,y(o.overlayListeners)),{default:h((function(){return[!t.hideOverlay&&o.visibility.overlay?(u(),s("div",{key:0,class:f(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",t.overlayClass]),style:c(t.overlayStyle)},null,6)):b("v-if",!0)]})),_:1},16),v(p,m(o.computedTransition,y(o.modalListeners)),{default:h((function(){return[l(g("div",{ref:"vfmContainer",class:f(["vfm__container vfm--absolute vfm--inset vfm--outline-none",t.classes]),style:c(t.styles),"aria-expanded":o.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:n[1]||(n[1]=w((function(){return o.onMouseupContainer&&o.onMouseupContainer.apply(o,arguments)}),["self"])),onMousedown:n[2]||(n[2]=w((function(){return o.onMousedown&&o.onMousedown.apply(o,arguments)}),["self"]))},[g("div",{ref:"vfmContent",class:f(["vfm__content",[t.contentClass,{"vfm--prevent-auto":t.nonModal}]]),style:c(o.bindContentStyle),onMousedown:n[0]||(n[0]=function(e){return o.onMousedown(null)})},[x(e.$slots,"default",{params:o.params,close:function(){return e.$emit("update:modelValue",!1)}}),o.resizeVisible&&o.visibility.modal?(u(),s("div",xe,[(u(!0),s(S,null,z(t.resizeDirections,(function(e){return u(),s("div",{key:e,direction:e,class:f(["vfm--resize-".concat(e),"vfm--absolute vfm--prevent-auto"])},null,10,Se)})),128))],512)):b("v-if",!0)],38)],46,we),[[E,o.visibility.modal]])]})),_:3},16)],38)),[[E,"show"!==t.displayDirective||o.visible]]):b("v-if",!0)},ge.__scopeId="data-v-72c09f54",ge.__file="src/VueFinalModal.vue";var ze={methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},closed:function(e,n){this.slice(e),n.closed&&n.closed()},beforeClose:function(e){e.value&&(null==e||e.rejectClose("hide"))},beforeOpen:function(e,n,t){var o,r=this;return(o=function*(){e.ref.params.value=n.params,yield r.$nextTick(),yield r.$nextTick(),n.value||(r.slice(t),null==n||n.reject("show"))},function(){var e=this,n=arguments;return new Promise((function(t,r){var i=o.apply(e,n);function a(e){P(i,t,r,a,l,"next",e)}function l(e){P(i,t,r,a,l,"throw",e)}a(void 0)}))})()},isString:function(e){return"string"==typeof e}}},Ee={class:"modals-container"},Me=["innerHTML"];ze.render=function(e,n,t,o,r,i){return u(),s("div",Ee,[(u(!0),s(S,null,z(e.api.dynamicModals,(function(e,n){return u(),M(T(e.component),m({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":function(n){return e.value=n}},y(e.on),{on_beforeClose:function(n){return i.beforeClose(e)},on_closed:function(t){return i.closed(n,e)},on_beforeOpen:function(t){return i.beforeOpen(t,e,n)},on_opened:e.opened}),C({_:2},[z(e.slots,(function(e,n){return{name:n,fn:h((function(){return[b(" eslint-disable vue/no-v-html "),i.isString(e)?(u(),s("div",{key:0,innerHTML:e},null,8,Me)):(u(),M(T(e.component),m({key:1},e.bind,y(e.on||{})),null,16))]}))}}))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])})),128))])},ze.__file="src/ModalsContainer.vue";var Te=function(){function e(){var n=this;V(this,e);var t=function(e){var t=A(A({},e),{},{props:A({},e.props)});return Object.assign(t.props,{api:{type:Object,default:function(){return n}}}),O(t)};this.modals=[],this.openedModals=[],this.VueFinalModal=t(ge),this.dynamicModals=k([]),this.ModalsContainer=t(ze)}return B(e,[{key:"show",value:function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),o=1;o1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:{},r=o(A({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},params:t},e)),i=function(){return n.existModal(r)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise((function(e,t){r.value=!0,r.reject=t,r.opened=function(){e("show")},n.dynamicModals.push(r)}))},a=function(){return n.existModal(r)?new Promise((function(e,n){r.value=!1,r.rejectClose=n,r.closed=function(){e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed")};return{show:i,hide:a,options:r}}}]),e}(),Ce=function(){var e=new Te;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},Oe=Ce(),ke=Oe.$vfm,_e=Oe.VueFinalModal,Ae=Oe.ModalsContainer,je=Oe.useModal;export{ke as $vfm,Te as ModalInstance,Ae as ModalsContainer,_e as VueFinalModal,Ce as createModalInstance,je as useModal}; //# sourceMappingURL=VueFinalModal.esm.js.map diff --git a/packages/lib/dist/VueFinalModal.esm.js.map b/packages/lib/dist/VueFinalModal.esm.js.map index d80d8192..58b17645 100644 --- a/packages/lib/dist/VueFinalModal.esm.js.map +++ b/packages/lib/dist/VueFinalModal.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"VueFinalModal.esm.js","sources":["../src/utils/focusTrap.js","../src/utils/transitionState.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js"],"sourcesContent":["// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet instance = null\n\n/**\n * Get FocusTrap instance\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap() {\n if (instance == null) {\n instance = new FocusTrap()\n }\n\n return instance\n}\n","import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options, params = {}) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n params,\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n"],"names":["queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","length","event","key","keyCode","isTabPressed","shiftKey","lastElement","firstElement","focus","preventDefault","addEventListener","removeEventListener","instance","TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","resizeCursor","t","tr","r","br","b","bl","l","tl","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","useDragResize","props","visible","vfmContainer","vfmContent","vfmResize","modalTransitionState","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","_state","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","dragSelector","includes","validDragElement","cacheStyle","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","body","style","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","s","rectContentEdge","positionOffset","EdgeName","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","watch","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","noop","name","String","modelValue","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","lockScroll","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","focusRetain","focusTrap","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","$focusTrap","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","params","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","handleLockScroll","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","enable","querySelector","eventProps","eventType","stopEvent","stop","show","_params","Promise","resolve","reject","res","err","arguments","display","flush","enabled","disable","modals","onMounted","onBeforeUnmount","remove","onMousedown","onMouseupContainer","onEsc","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","onKeydown","_createVNode","_mergeProps","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_ctx","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","_this","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","names","hide","map","get","allSettled","_options","_this2","existModal","createModalInstance","modalInstance","$vfm"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VueFinalModal.esm.js","sources":["../src/utils/transitionState.js","../src/utils/focusTrap.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js"],"sourcesContent":["import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet focusTrap = null\n\n/**\n * Get FocusTrap focusTrap\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap({ props, vfmContainer, modalTransitionState }) {\n if (focusTrap == null) {\n focusTrap = new FocusTrap()\n }\n\n watch(modalTransitionState, state => {\n switch (state) {\n case TransitionState.Enter:\n if (props.focusRetain || props.focusTrap) {\n vfmContainer.value.focus()\n }\n props.focusTrap && focusTrap.enable(vfmContainer.value)\n break\n case TransitionState.Leaving:\n if (focusTrap.enabled) {\n focusTrap.disable()\n }\n break\n }\n })\n\n return { focusTrap }\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options, params = {}) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n params,\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n"],"names":["TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","length","event","key","keyCode","isTabPressed","shiftKey","lastElement","firstElement","focus","preventDefault","addEventListener","removeEventListener","focusTrap","useFocusTrap","props","vfmContainer","modalTransitionState","watch","focusRetain","enable","enabled","disable","resizeCursor","t","tr","r","br","b","bl","l","tl","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","useDragResize","visible","vfmContent","vfmResize","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","_state","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","dragSelector","includes","validDragElement","cacheStyle","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","body","style","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","s","rectContentEdge","positionOffset","EdgeName","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","noop","name","String","modelValue","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","lockScroll","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","params","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","handleLockScroll","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","querySelector","eventProps","eventType","stopEvent","stop","show","_params","Promise","resolve","reject","res","err","arguments","display","flush","modals","onMounted","onBeforeUnmount","remove","onMousedown","onMouseupContainer","onEsc","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","onKeydown","_createVNode","_mergeProps","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_ctx","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","_this","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","names","hide","map","get","allSettled","_options","_this2","existModal","createModalInstance","modalInstance","$vfm"],"mappings":"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"} \ No newline at end of file diff --git a/packages/lib/dist/VueFinalModal.umd.js b/packages/lib/dist/VueFinalModal.umd.js index a1d8e1f8..6b3b130b 100644 --- a/packages/lib/dist/VueFinalModal.umd.js +++ b/packages/lib/dist/VueFinalModal.umd.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueFinalModal={},e.Vue)}(this,(function(e,t){"use strict";function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function o(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=new Array(t);n1),P=[],j=!1,L=0,D=-1,N=function(e,t){var n=!1;return function(e){for(var t=[];e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,t){return!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0)}(e,t)&&(n=!0)})),n},I=function(e){return P.some((function(){return N(e,-L)}))},R=function(e){var t=e||window.event;return!!I(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},H=function(e,t){if(e){if(!P.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};P=[].concat(c(P),[n]),A?(e.ontouchstart=function(e){1===e.targetTouches.length&&(D=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){L=e.targetTouches[0].clientY-D,!I(e.target)&&(t&&0===t.scrollTop&&L>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&L<0?R(e):e.stopPropagation())}(t,e)},j||(document.addEventListener("touchmove",R,O?{passive:!1}:void 0),j=!0)):function(e){if(void 0===_){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var o=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);_=document.body.style.paddingRight,document.body.style.paddingRight="".concat(o+n,"px")}}void 0===V&&(V=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},F=function(e){e?(P=P.filter((function(t){return t.targetElement!==e})),A?(e.ontouchstart=null,e.ontouchmove=null,j&&0===P.length&&(document.removeEventListener("touchmove",R,O?{passive:!1}:void 0),j=!1)):P.length||(void 0!==_&&(document.body.style.paddingRight=_,_=void 0),void 0!==V&&(document.body.style.overflow=V,V=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},$=function(){},K={props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:function(e){return-1!==["if","show"].indexOf(e)}},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:function(){return{}}},overlayStyle:{type:[Object,Array],default:function(){return{}}},contentStyle:{type:[Object,Array],default:function(){return{}}},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(e){var t=r(e);return"boolean"===t||"string"===t||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(t){return-1!==e.indexOf(t)})).length===e.length}},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup:function(e,n){var r=n.emit,i=Symbol("vfm"),a=t.ref(null),l=t.ref(null),u=t.ref(null),s=t.ref(null),d=t.ref(null),f=t.ref(null),v=t.ref(null),h=(null==m&&(m=new p),m),x=t.ref(!1),S=t.reactive({modal:!1,overlay:!1}),k=w(),z=k.state,E=k.listeners,M=w(),C=M.state,O=M.listeners,B=t.ref(!1),V=t.ref({}),_=T({props:e,visible:x,vfmContainer:l,vfmContent:u,vfmResize:s,modalTransitionState:C,onEvent:function(e){r(P.value,e)}}),A=_.resizeVisible,P=_.state,j=_.dragResizeStyle,L=_.removeDragDown,D=_.removeResizeDown,N=t.ref(null),I=$,R=$,K=t.computed((function(){return"string"==typeof e.overlayTransition?{name:e.overlayTransition}:o({},e.overlayTransition)})),U=t.computed((function(){return"string"==typeof e.transition?{name:e.transition}:o({},e.transition)})),q=t.computed((function(){return(e.hideOverlay||z.value===b)&&C.value===b})),W=t.computed((function(){return!1===e.zIndex?!!e.zIndexAuto&&+e.zIndexBase+2*(v.value||0):e.zIndex})),Y=t.computed((function(){return o({},!1!==W.value&&{zIndex:W.value})})),G=t.computed((function(){var t=[j.value];return Array.isArray(e.contentStyle)?t.push.apply(t,c(e.contentStyle)):t.push(e.contentStyle),t}));function X(){return{uid:i,props:e,emit:r,vfmContainer:l,vfmContent:u,vfmResize:s,vfmOverlayTransition:d,vfmTransition:f,getAttachElement:ee,modalStackIndex:v,visibility:S,handleLockScroll:Q,$focusTrap:h,toggle:oe,params:V}}function Z(){if(e.modelValue){if(r("_before-open",te({type:"_before-open"})),ne("before-open",!1))return void R("show");var t=ee();if(t||!1===e.attach){!1!==e.attach&&t.appendChild(a.value);var n=e.api.openedModals.findIndex((function(e){return e.uid===i}));-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.push(X()),v.value=e.api.openedModals.length-1,Q(),e.api.openedModals.filter((function(e){return e.uid!==i})).forEach((function(e,n){e.getAttachElement()===t&&(e.modalStackIndex.value=n,e.visibility.overlay=!1)})),x.value=!0,S.overlay=!0,S.modal=!0}else!1!==t&&console.warn("Unable to locate target ".concat(e.attach))}}function J(){var n=e.api.openedModals.findIndex((function(e){return e.uid===i}));if(-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.length>0){var o=e.api.openedModals[e.api.openedModals.length-1];o.props.focusTrap&&t.nextTick((function(){o.$focusTrap.enable(o.vfmContainer.value),o.$focusTrap.firstElement.focus()})),(o.props.focusRetain||o.props.focusTrap)&&o.vfmContainer.value.focus(),!o.props.hideOverlay&&(o.visibility.overlay=!0)}e.drag&&L(),e.resize&&D(),P.value=null,S.overlay=!1,S.modal=!1}function Q(){e.modelValue&&t.nextTick((function(){e.lockScroll?H(l.value,{reserveScrollBarGap:!0}):F(l.value)}))}function ee(){return!1!==e.attach&&("string"==typeof e.attach?!!window&&window.document.querySelector(e.attach):e.attach)}function te(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o({ref:X()},e)}function ne(e,n){var o=!1,i=te({type:e,stop:function(){o=!0}});return r(e,i),!!o&&(B.value=!0,t.nextTick((function(){r("update:modelValue",n)})),!0)}function oe(t,n){var o=arguments;return new Promise((function(i,a){I=function(e){i(e),I=$},R=function(e){a(e),R=$};var l="boolean"==typeof t?t:!e.modelValue;l&&2===o.length&&(V.value=n),r("update:modelValue",l)}))}return t.watch((function(){return e.modelValue}),(function(e){if(B.value)B.value=!1;else if(Z(),!e){if(r("_before-close",te({type:"_before-close"})),ne("before-close",!0))return void R("hide");J()}})),t.watch((function(){return e.lockScroll}),Q),t.watch((function(){return e.hideOverlay}),(function(t){e.modelValue&&!t&&(S.overlay=!0)})),t.watch((function(){return e.attach}),Z),t.watch(q,(function(e){e&&(x.value=!1,l.value.style.display="none")}),{flush:"post"}),t.watch(C,(function(t){switch(t){case y:(e.focusRetain||e.focusTrap)&&l.value.focus(),e.focusTrap&&h.enable(l.value),r("_opened"),r("opened",te({type:"opened"})),I("show");break;case g:h.enabled&&h.disable();break;case b:v.value=null,e.lockScroll&&F(l.value);var n=!1,o=te({type:"closed",stop:function(){n=!0}});if(r("_closed"),r("closed",o),I("hide"),n)return;V.value={}}})),e.api.modals.push(X()),t.onMounted((function(){Z()})),t.onBeforeUnmount((function(){var t;J(),e.lockScroll&&l.value&&F(l.value),null==a||null===(t=a.value)||void 0===t||t.remove();var n=e.api.modals.findIndex((function(e){return e.uid===i}));e.api.modals.splice(n,1)})),{root:a,vfmContainer:l,vfmContent:u,vfmResize:s,vfmOverlayTransition:d,vfmTransition:f,computedOverlayTransition:K,computedTransition:U,overlayListeners:E,modalListeners:O,visible:x,visibility:S,params:V,resizeVisible:A,calculateZIndex:W,bindStyle:Y,bindContentStyle:G,onMousedown:function(e){N.value=null==e?void 0:e.target},onMouseupContainer:function(){N.value===l.value&&"resize:move"!==P.value&&(r("click-outside",te({type:"click-outside"})),e.clickToClose&&r("update:modelValue",!1))},onEsc:function(){x.value&&e.escToClose&&r("update:modelValue",!1)}}}},U=["aria-expanded"],q={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},W=["direction"];!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===n&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),K.render=function(e,n,o,r,i,a){return"if"!==o.displayDirective||r.visible?t.withDirectives((t.openBlock(),t.createElementBlock("div",{key:0,ref:"root",style:t.normalizeStyle(r.bindStyle),class:t.normalizeClass(["vfm vfm--inset",[!1===o.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":o.nonModal}]]),onKeydown:n[3]||(n[3]=t.withKeys((function(){return r.onEsc&&r.onEsc.apply(r,arguments)}),["esc"]))},[t.createVNode(t.Transition,t.mergeProps(r.computedOverlayTransition,t.toHandlers(r.overlayListeners)),{default:t.withCtx((function(){return[!o.hideOverlay&&r.visibility.overlay?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",o.overlayClass]),style:t.normalizeStyle(o.overlayStyle)},null,6)):t.createCommentVNode("v-if",!0)]})),_:1},16),t.createVNode(t.Transition,t.mergeProps(r.computedTransition,t.toHandlers(r.modalListeners)),{default:t.withCtx((function(){return[t.withDirectives(t.createElementVNode("div",{ref:"vfmContainer",class:t.normalizeClass(["vfm__container vfm--absolute vfm--inset vfm--outline-none",o.classes]),style:t.normalizeStyle(o.styles),"aria-expanded":r.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:n[1]||(n[1]=t.withModifiers((function(){return r.onMouseupContainer&&r.onMouseupContainer.apply(r,arguments)}),["self"])),onMousedown:n[2]||(n[2]=t.withModifiers((function(){return r.onMousedown&&r.onMousedown.apply(r,arguments)}),["self"]))},[t.createElementVNode("div",{ref:"vfmContent",class:t.normalizeClass(["vfm__content",[o.contentClass,{"vfm--prevent-auto":o.nonModal}]]),style:t.normalizeStyle(r.bindContentStyle),onMousedown:n[0]||(n[0]=function(e){return r.onMousedown(null)})},[t.renderSlot(e.$slots,"default",{params:r.params,close:function(){return e.$emit("update:modelValue",!1)}}),r.resizeVisible&&r.visibility.modal?(t.openBlock(),t.createElementBlock("div",q,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.resizeDirections,(function(e){return t.openBlock(),t.createElementBlock("div",{key:e,direction:e,class:t.normalizeClass(["vfm--resize-".concat(e),"vfm--absolute vfm--prevent-auto"])},null,10,W)})),128))],512)):t.createCommentVNode("v-if",!0)],38)],46,U),[[t.vShow,r.visibility.modal]])]})),_:3},16)],38)),[[t.vShow,"show"!==o.displayDirective||r.visible]]):t.createCommentVNode("v-if",!0)},K.__scopeId="data-v-72c09f54",K.__file="src/VueFinalModal.vue";var Y={methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},closed:function(e,t){this.slice(e),t.closed&&t.closed()},beforeClose:function(e){e.value&&(null==e||e.rejectClose("hide"))},beforeOpen:function(e,t,n){var o,r=this;return(o=function*(){e.ref.params.value=t.params,yield r.$nextTick(),yield r.$nextTick(),t.value||(r.slice(n),null==t||t.reject("show"))},function(){var e=this,t=arguments;return new Promise((function(n,r){var a=o.apply(e,t);function l(e){i(a,n,r,l,u,"next",e)}function u(e){i(a,n,r,l,u,"throw",e)}l(void 0)}))})()},isString:function(e){return"string"==typeof e}}},G={class:"modals-container"},X=["innerHTML"];Y.render=function(e,n,o,r,i,a){return t.openBlock(),t.createElementBlock("div",G,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.api.dynamicModals,(function(e,n){return t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":function(t){return e.value=t}},t.toHandlers(e.on),{on_beforeClose:function(t){return a.beforeClose(e)},on_closed:function(t){return a.closed(n,e)},on_beforeOpen:function(t){return a.beforeOpen(t,e,n)},on_opened:e.opened}),t.createSlots({_:2},[t.renderList(e.slots,(function(e,n){return{name:n,fn:t.withCtx((function(){return[t.createCommentVNode(" eslint-disable vue/no-v-html "),a.isString(e)?(t.openBlock(),t.createElementBlock("div",{key:0,innerHTML:e},null,8,X)):(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:1},e.bind,t.toHandlers(e.on||{})),null,16))]}))}}))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])})),128))])},Y.__file="src/ModalsContainer.vue";var Z=function(){function e(){var n=this;a(this,e);var r=function(e){var r=o(o({},e),{},{props:o({},e.props)});return Object.assign(r.props,{api:{type:Object,default:function(){return n}}}),t.markRaw(r)};this.modals=[],this.openedModals=[],this.VueFinalModal=r(K),this.dynamicModals=t.shallowReactive([]),this.ModalsContainer=r(Y)}return u(e,[{key:"show",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o1?t-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:{},i=t.reactive(o({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},params:r},e)),a=function(){return n.existModal(i)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise((function(e,t){i.value=!0,i.reject=t,i.opened=function(){e("show")},n.dynamicModals.push(i)}))},l=function(){return n.existModal(i)?new Promise((function(e,t){i.value=!1,i.rejectClose=t,i.closed=function(){e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed")};return{show:a,hide:l,options:i}}}]),e}(),J=function(){var e=new Z;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},Q=J(),ee=Q.$vfm,te=Q.VueFinalModal,ne=Q.ModalsContainer,oe=Q.useModal;e.$vfm=ee,e.ModalInstance=Z,e.ModalsContainer=ne,e.VueFinalModal=te,e.createModalInstance=J,e.useModal=oe,Object.defineProperty(e,"__esModule",{value:!0})})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueFinalModal={},e.Vue)}(this,(function(e,t){"use strict";function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function o(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=new Array(t);n1),j=[],L=!1,D=0,N=-1,I=function(e,t){var n=!1;return function(e){for(var t=[];e;){if(t.push(e),e.classList.contains("vfm"))return t;e=e.parentElement}return t}(e).forEach((function(e){(function(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;var t=window.getComputedStyle(e);return["auto","scroll"].includes(t.overflowY)&&e.scrollHeight>e.clientHeight})(e)&&function(e,t){return!(0===e.scrollTop&&t<0||e.scrollTop+e.clientHeight+t>=e.scrollHeight&&t>0)}(e,t)&&(n=!0)})),n},R=function(e){return j.some((function(){return I(e,-D)}))},H=function(e){var t=e||window.event;return!!R(t.target)||(t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1))},F=function(e,t){if(e){if(!j.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};j=[].concat(c(j),[n]),P?(e.ontouchstart=function(e){1===e.targetTouches.length&&(N=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){D=e.targetTouches[0].clientY-N,!R(e.target)&&(t&&0===t.scrollTop&&D>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&D<0?H(e):e.stopPropagation())}(t,e)},L||(document.addEventListener("touchmove",H,B?{passive:!1}:void 0),L=!0)):function(e){if(void 0===A){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;if(t&&n>0){var o=parseInt(getComputedStyle(document.body).getPropertyValue("padding-right"),10);A=document.body.style.paddingRight,document.body.style.paddingRight="".concat(o+n,"px")}}void 0===_&&(_=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},$=function(e){e?(j=j.filter((function(t){return t.targetElement!==e})),P?(e.ontouchstart=null,e.ontouchmove=null,L&&0===j.length&&(document.removeEventListener("touchmove",H,B?{passive:!1}:void 0),L=!1)):j.length||(void 0!==A&&(document.body.style.paddingRight=A,A=void 0),void 0!==_&&(document.body.style.overflow=_,_=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")},K=function(){},U={props:{name:{type:String,default:null},modelValue:{type:Boolean,default:!1},displayDirective:{type:String,default:"show",validator:function(e){return-1!==["if","show"].indexOf(e)}},classes:{type:[String,Object,Array],default:""},overlayClass:{type:[String,Object,Array],default:""},contentClass:{type:[String,Object,Array],default:""},styles:{type:[Object,Array],default:function(){return{}}},overlayStyle:{type:[Object,Array],default:function(){return{}}},contentStyle:{type:[Object,Array],default:function(){return{}}},lockScroll:{type:Boolean,default:!0},hideOverlay:{type:Boolean,default:!1},clickToClose:{type:Boolean,default:!0},escToClose:{type:Boolean,default:!1},nonModal:{type:Boolean,default:!1},attach:{type:null,default:!1,validator:function(e){var t=r(e);return"boolean"===t||"string"===t||e.nodeType===Node.ELEMENT_NODE}},transition:{type:[String,Object],default:"vfm"},overlayTransition:{type:[String,Object],default:"vfm"},zIndexAuto:{type:Boolean,default:!0},zIndexBase:{type:[String,Number],default:1e3},zIndex:{type:[Boolean,String,Number],default:!1},focusRetain:{type:Boolean,default:!0},focusTrap:{type:Boolean,default:!1},fitParent:{type:Boolean,default:!0},drag:{type:Boolean,default:!1},dragSelector:{type:String,default:""},keepChangedStyle:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},resizeDirections:{type:Array,default:function(){return["t","tr","r","br","b","bl","l","tl"]},validator:function(e){return["t","tr","r","br","b","bl","l","tl"].filter((function(t){return-1!==e.indexOf(t)})).length===e.length}},minWidth:{type:[Number,String],default:0},minHeight:{type:[Number,String],default:0},maxWidth:{type:[Number,String],default:1/0},maxHeight:{type:[Number,String],default:1/0}},emits:["update:modelValue","click-outside","before-open","opened","_before-close","before-close","closed","_before-open","_opened","_closed","drag:start","drag:move","drag:end","resize:start","resize:move","resize:end"],setup:function(e,n){var r=n.emit,i=Symbol("vfm"),a=t.ref(null),l=t.ref(null),u=t.ref(null),s=t.ref(null),d=t.ref(null),v=t.ref(null),m=t.ref(null),h=t.ref(!1),b=t.reactive({modal:!1,overlay:!1}),g=y(),w=g.state,S=g.listeners,k=y(),z=k.state,E=k.listeners,M=t.ref(!1),C=t.ref({}),T=x({props:e,vfmContainer:l,modalTransitionState:z}).focusTrap,B=O({props:e,visible:h,vfmContainer:l,vfmContent:u,vfmResize:s,modalTransitionState:z,onEvent:function(e){r(_.value,e)}}),V=B.resizeVisible,_=B.state,A=B.dragResizeStyle,P=B.removeDragDown,j=B.removeResizeDown,L=t.ref(null),D=K,N=K,I=t.computed((function(){return"string"==typeof e.overlayTransition?{name:e.overlayTransition}:o({},e.overlayTransition)})),R=t.computed((function(){return"string"==typeof e.transition?{name:e.transition}:o({},e.transition)})),H=t.computed((function(){return(e.hideOverlay||w.value===p)&&z.value===p})),U=t.computed((function(){return!1===e.zIndex?!!e.zIndexAuto&&+e.zIndexBase+2*(m.value||0):e.zIndex})),q=t.computed((function(){return o({},!1!==U.value&&{zIndex:U.value})})),W=t.computed((function(){var t=[A.value];return Array.isArray(e.contentStyle)?t.push.apply(t,c(e.contentStyle)):t.push(e.contentStyle),t}));function Y(){return{uid:i,props:e,emit:r,vfmContainer:l,vfmContent:u,vfmResize:s,vfmOverlayTransition:d,vfmTransition:v,getAttachElement:J,modalStackIndex:m,visibility:b,handleLockScroll:Z,toggle:te,params:C}}function G(){if(e.modelValue){if(r("_before-open",Q({type:"_before-open"})),ee("before-open",!1))return void N("show");var t=J();if(t||!1===e.attach){!1!==e.attach&&t.appendChild(a.value);var n=e.api.openedModals.findIndex((function(e){return e.uid===i}));-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.push(Y()),m.value=e.api.openedModals.length-1,Z(),e.api.openedModals.filter((function(e){return e.uid!==i})).forEach((function(e,n){e.getAttachElement()===t&&(e.modalStackIndex.value=n,e.visibility.overlay=!1)})),h.value=!0,b.overlay=!0,b.modal=!0}else!1!==t&&console.warn("Unable to locate target ".concat(e.attach))}}function X(){var n=e.api.openedModals.findIndex((function(e){return e.uid===i}));if(-1!==n&&e.api.openedModals.splice(n,1),e.api.openedModals.length>0){var o=e.api.openedModals[e.api.openedModals.length-1];o.props.focusTrap&&t.nextTick((function(){T.enable(o.vfmContainer.value),T.firstElement.focus()})),(o.props.focusRetain||o.props.focusTrap)&&o.vfmContainer.value.focus(),!o.props.hideOverlay&&(o.visibility.overlay=!0)}e.drag&&P(),e.resize&&j(),_.value=null,b.overlay=!1,b.modal=!1}function Z(){e.modelValue&&t.nextTick((function(){e.lockScroll?F(l.value,{reserveScrollBarGap:!0}):$(l.value)}))}function J(){return!1!==e.attach&&("string"==typeof e.attach?!!window&&window.document.querySelector(e.attach):e.attach)}function Q(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o({ref:Y()},e)}function ee(e,n){var o=!1,i=Q({type:e,stop:function(){o=!0}});return r(e,i),!!o&&(M.value=!0,t.nextTick((function(){r("update:modelValue",n)})),!0)}function te(t,n){var o=arguments;return new Promise((function(i,a){D=function(e){i(e),D=K},N=function(e){a(e),N=K};var l="boolean"==typeof t?t:!e.modelValue;l&&2===o.length&&(C.value=n),r("update:modelValue",l)}))}return t.watch((function(){return e.modelValue}),(function(e){if(M.value)M.value=!1;else if(G(),!e){if(r("_before-close",Q({type:"_before-close"})),ee("before-close",!0))return void N("hide");X()}})),t.watch((function(){return e.lockScroll}),Z),t.watch((function(){return e.hideOverlay}),(function(t){e.modelValue&&!t&&(b.overlay=!0)})),t.watch((function(){return e.attach}),G),t.watch(H,(function(e){e&&(h.value=!1,l.value.style.display="none")}),{flush:"post"}),t.watch(z,(function(t){switch(t){case f:r("_opened"),r("opened",Q({type:"opened"})),D("show");break;case p:m.value=null,e.lockScroll&&$(l.value);var n=!1,o=Q({type:"closed",stop:function(){n=!0}});if(r("_closed"),r("closed",o),D("hide"),n)return;C.value={}}})),e.api.modals.push(Y()),t.onMounted((function(){G()})),t.onBeforeUnmount((function(){var t;X(),e.lockScroll&&l.value&&$(l.value),null==a||null===(t=a.value)||void 0===t||t.remove();var n=e.api.modals.findIndex((function(e){return e.uid===i}));e.api.modals.splice(n,1)})),{root:a,vfmContainer:l,vfmContent:u,vfmResize:s,vfmOverlayTransition:d,vfmTransition:v,computedOverlayTransition:I,computedTransition:R,overlayListeners:S,modalListeners:E,visible:h,visibility:b,params:C,resizeVisible:V,calculateZIndex:U,bindStyle:q,bindContentStyle:W,onMousedown:function(e){L.value=null==e?void 0:e.target},onMouseupContainer:function(){L.value===l.value&&"resize:move"!==_.value&&(r("click-outside",Q({type:"click-outside"})),e.clickToClose&&r("update:modelValue",!1))},onEsc:function(){h.value&&e.escToClose&&r("update:modelValue",!1)}}}},q=["aria-expanded"],W={key:0,ref:"vfmResize",class:"vfm__resize vfm--absolute vfm--inset vfm--prevent-none vfm--select-none vfm--touch-none"},Y=["direction"];!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===n&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}("\n.vfm--fixed[data-v-72c09f54] {\n position: fixed;\n}\n.vfm--absolute[data-v-72c09f54] {\n position: absolute;\n}\n.vfm--inset[data-v-72c09f54] {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.vfm--overlay[data-v-72c09f54] {\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vfm--prevent-none[data-v-72c09f54] {\n pointer-events: none;\n}\n.vfm--prevent-auto[data-v-72c09f54] {\n pointer-events: auto;\n}\n.vfm--outline-none[data-v-72c09f54]:focus {\n outline: none;\n}\n.vfm-enter-active[data-v-72c09f54],\n.vfm-leave-active[data-v-72c09f54] {\n transition: opacity 0.2s;\n}\n.vfm-enter-from[data-v-72c09f54],\n.vfm-leave-to[data-v-72c09f54] {\n opacity: 0;\n}\n.vfm--touch-none[data-v-72c09f54] {\n touch-action: none;\n}\n.vfm--select-none[data-v-72c09f54] {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.vfm--resize-tr[data-v-72c09f54],\n.vfm--resize-br[data-v-72c09f54],\n.vfm--resize-bl[data-v-72c09f54],\n.vfm--resize-tl[data-v-72c09f54] {\n width: 12px;\n height: 12px;\n z-index: 10;\n}\n.vfm--resize-t[data-v-72c09f54] {\n top: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-tr[data-v-72c09f54] {\n top: -6px;\n right: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-r[data-v-72c09f54] {\n top: 0;\n right: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-br[data-v-72c09f54] {\n bottom: -6px;\n right: -6px;\n cursor: nwse-resize;\n}\n.vfm--resize-b[data-v-72c09f54] {\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 12px;\n cursor: ns-resize;\n}\n.vfm--resize-bl[data-v-72c09f54] {\n bottom: -6px;\n left: -6px;\n cursor: nesw-resize;\n}\n.vfm--resize-l[data-v-72c09f54] {\n top: 0;\n left: -6px;\n width: 12px;\n height: 100%;\n cursor: ew-resize;\n}\n.vfm--resize-tl[data-v-72c09f54] {\n top: -6px;\n left: -6px;\n cursor: nwse-resize;\n}\n"),U.render=function(e,n,o,r,i,a){return"if"!==o.displayDirective||r.visible?t.withDirectives((t.openBlock(),t.createElementBlock("div",{key:0,ref:"root",style:t.normalizeStyle(r.bindStyle),class:t.normalizeClass(["vfm vfm--inset",[!1===o.attach?"vfm--fixed":"vfm--absolute",{"vfm--prevent-none":o.nonModal}]]),onKeydown:n[3]||(n[3]=t.withKeys((function(){return r.onEsc&&r.onEsc.apply(r,arguments)}),["esc"]))},[t.createVNode(t.Transition,t.mergeProps(r.computedOverlayTransition,t.toHandlers(r.overlayListeners)),{default:t.withCtx((function(){return[!o.hideOverlay&&r.visibility.overlay?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["vfm__overlay vfm--overlay vfm--absolute vfm--inset",o.overlayClass]),style:t.normalizeStyle(o.overlayStyle)},null,6)):t.createCommentVNode("v-if",!0)]})),_:1},16),t.createVNode(t.Transition,t.mergeProps(r.computedTransition,t.toHandlers(r.modalListeners)),{default:t.withCtx((function(){return[t.withDirectives(t.createElementVNode("div",{ref:"vfmContainer",class:t.normalizeClass(["vfm__container vfm--absolute vfm--inset vfm--outline-none",o.classes]),style:t.normalizeStyle(o.styles),"aria-expanded":r.visibility.modal.toString(),role:"dialog","aria-modal":"true",tabindex:"-1",onMouseup:n[1]||(n[1]=t.withModifiers((function(){return r.onMouseupContainer&&r.onMouseupContainer.apply(r,arguments)}),["self"])),onMousedown:n[2]||(n[2]=t.withModifiers((function(){return r.onMousedown&&r.onMousedown.apply(r,arguments)}),["self"]))},[t.createElementVNode("div",{ref:"vfmContent",class:t.normalizeClass(["vfm__content",[o.contentClass,{"vfm--prevent-auto":o.nonModal}]]),style:t.normalizeStyle(r.bindContentStyle),onMousedown:n[0]||(n[0]=function(e){return r.onMousedown(null)})},[t.renderSlot(e.$slots,"default",{params:r.params,close:function(){return e.$emit("update:modelValue",!1)}}),r.resizeVisible&&r.visibility.modal?(t.openBlock(),t.createElementBlock("div",W,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.resizeDirections,(function(e){return t.openBlock(),t.createElementBlock("div",{key:e,direction:e,class:t.normalizeClass(["vfm--resize-".concat(e),"vfm--absolute vfm--prevent-auto"])},null,10,Y)})),128))],512)):t.createCommentVNode("v-if",!0)],38)],46,q),[[t.vShow,r.visibility.modal]])]})),_:3},16)],38)),[[t.vShow,"show"!==o.displayDirective||r.visible]]):t.createCommentVNode("v-if",!0)},U.__scopeId="data-v-72c09f54",U.__file="src/VueFinalModal.vue";var G={methods:{slice:function(e){this.api.dynamicModals.splice(e,1)},closed:function(e,t){this.slice(e),t.closed&&t.closed()},beforeClose:function(e){e.value&&(null==e||e.rejectClose("hide"))},beforeOpen:function(e,t,n){var o,r=this;return(o=function*(){e.ref.params.value=t.params,yield r.$nextTick(),yield r.$nextTick(),t.value||(r.slice(n),null==t||t.reject("show"))},function(){var e=this,t=arguments;return new Promise((function(n,r){var a=o.apply(e,t);function l(e){i(a,n,r,l,u,"next",e)}function u(e){i(a,n,r,l,u,"throw",e)}l(void 0)}))})()},isString:function(e){return"string"==typeof e}}},X={class:"modals-container"},Z=["innerHTML"];G.render=function(e,n,o,r,i,a){return t.openBlock(),t.createElementBlock("div",X,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.api.dynamicModals,(function(e,n){return t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:e.id},e.bind,{modelValue:e.value,"onUpdate:modelValue":function(t){return e.value=t}},t.toHandlers(e.on),{on_beforeClose:function(t){return a.beforeClose(e)},on_closed:function(t){return a.closed(n,e)},on_beforeOpen:function(t){return a.beforeOpen(t,e,n)},on_opened:e.opened}),t.createSlots({_:2},[t.renderList(e.slots,(function(e,n){return{name:n,fn:t.withCtx((function(){return[t.createCommentVNode(" eslint-disable vue/no-v-html "),a.isString(e)?(t.openBlock(),t.createElementBlock("div",{key:0,innerHTML:e},null,8,Z)):(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.component),t.mergeProps({key:1},e.bind,t.toHandlers(e.on||{})),null,16))]}))}}))]),1040,["modelValue","onUpdate:modelValue","on_beforeClose","on_closed","on_beforeOpen","on_opened"])})),128))])},G.__file="src/ModalsContainer.vue";var J=function(){function e(){var n=this;a(this,e);var r=function(e){var r=o(o({},e),{},{props:o({},e.props)});return Object.assign(r.props,{api:{type:Object,default:function(){return n}}}),t.markRaw(r)};this.modals=[],this.openedModals=[],this.VueFinalModal=r(U),this.dynamicModals=t.shallowReactive([]),this.ModalsContainer=r(G)}return u(e,[{key:"show",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o1?t-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:{},i=t.reactive(o({value:!1,component:this.VueFinalModal,id:Symbol("useModal"),bind:{},slots:{},on:{},params:r},e)),a=function(){return n.existModal(i)?Promise.resolve("[Vue Final Modal] modal is already opened"):new Promise((function(e,t){i.value=!0,i.reject=t,i.opened=function(){e("show")},n.dynamicModals.push(i)}))},l=function(){return n.existModal(i)?new Promise((function(e,t){i.value=!1,i.rejectClose=t,i.closed=function(){e("hide")}})):Promise.resolve("[Vue Final Modal] modal is already closed")};return{show:a,hide:l,options:i}}}]),e}(),Q=function(){var e=new J;return{$vfm:e,VueFinalModal:e.VueFinalModal,ModalsContainer:e.ModalsContainer,useModal:e.useModal.bind(e)}},ee=Q(),te=ee.$vfm,ne=ee.VueFinalModal,oe=ee.ModalsContainer,re=ee.useModal;e.$vfm=te,e.ModalInstance=J,e.ModalsContainer=oe,e.VueFinalModal=ne,e.createModalInstance=Q,e.useModal=re,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=VueFinalModal.umd.js.map diff --git a/packages/lib/dist/VueFinalModal.umd.js.map b/packages/lib/dist/VueFinalModal.umd.js.map index 1b2e9ab1..75fcc210 100644 --- a/packages/lib/dist/VueFinalModal.umd.js.map +++ b/packages/lib/dist/VueFinalModal.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"VueFinalModal.umd.js","sources":["../src/utils/focusTrap.js","../src/utils/transitionState.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js"],"sourcesContent":["// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet instance = null\n\n/**\n * Get FocusTrap instance\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap() {\n if (instance == null) {\n instance = new FocusTrap()\n }\n\n return instance\n}\n","import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options, params = {}) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n params,\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n"],"names":["queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","length","event","key","keyCode","isTabPressed","shiftKey","lastElement","firstElement","focus","preventDefault","addEventListener","removeEventListener","instance","TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","resizeCursor","t","tr","r","br","b","bl","l","tl","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","useDragResize","props","visible","vfmContainer","vfmContent","vfmResize","modalTransitionState","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","_state","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","dragSelector","includes","validDragElement","cacheStyle","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","body","style","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","s","rectContentEdge","positionOffset","EdgeName","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","watch","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","noop","name","String","modelValue","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","lockScroll","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","focusRetain","focusTrap","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","$focusTrap","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","params","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","handleLockScroll","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","enable","querySelector","eventProps","eventType","stopEvent","stop","show","_params","Promise","resolve","reject","res","err","arguments","display","flush","enabled","disable","modals","onMounted","onBeforeUnmount","remove","onMousedown","onMouseupContainer","onEsc","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","onKeydown","_createVNode","_mergeProps","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_ctx","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","_this","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","names","hide","map","get","allSettled","_options","_this2","existModal","createModalInstance","modalInstance","$vfm"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"VueFinalModal.umd.js","sources":["../src/utils/transitionState.js","../src/utils/focusTrap.js","../src/utils/dragResize.js","../src/utils/bodyScrollLock.js","../src/VueFinalModal.vue","../src/VueFinalModal.vue?vue&type=template&id=72c09f54&lang.js","../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/ModalsContainer.vue","../src/ModalsContainer.vue?vue&type=template&id=437c4752&lang.js","../src/modalInstance.js"],"sourcesContent":["import { ref } from 'vue'\n\nexport const TransitionState = {\n Enter: 'enter',\n Entering: 'entering',\n Leave: 'leave',\n Leaving: 'leavng'\n}\n\nexport const useTransitionState = () => {\n const state = ref(null)\n\n const listeners = {\n beforeEnter() {\n state.value = TransitionState.Entering\n },\n afterEnter() {\n state.value = TransitionState.Enter\n },\n beforeLeave() {\n state.value = TransitionState.Leaving\n },\n afterLeave() {\n state.value = TransitionState.Leave\n }\n }\n\n return {\n state,\n listeners\n }\n}\n","import { watch } from 'vue'\nimport { TransitionState } from './transitionState'\n\n// stolen from vue-js-modal\n\nconst FOCUSABLE_ELEMENTS_QUERY =\n 'button:not([disabled]), ' +\n 'select:not([disabled]), ' +\n 'a[href]:not([disabled]), ' +\n 'area[href]:not([disabled]), ' +\n '[contentEditable=\"\"]:not([disabled]), ' +\n '[contentEditable=\"true\"]:not([disabled]), ' +\n '[contentEditable=\"TRUE\"]:not([disabled]), ' +\n 'textarea:not([disabled]), ' +\n 'iframe:not([disabled]), ' +\n 'input:not([disabled]), ' +\n 'summary:not([disabled]), ' +\n '[tabindex]:not([tabindex=\"-1\"])'\n\nconst isTabPressed = event => {\n return event.key === 'Tab' || event.keyCode === 9\n}\n\nconst querySelectorAll = (element, selector) => {\n return [...(element.querySelectorAll(selector) || [])]\n}\n\nconst queryFocusableElements = element => {\n return querySelectorAll(element, FOCUSABLE_ELEMENTS_QUERY)\n}\n\nconst isFocused = element => {\n return element == document.activeElement\n}\n\nconst isNothingFocused = () => {\n return !document.activeElement\n}\n\nclass FocusTrap {\n constructor() {\n this.root = null\n this.elements = []\n\n this.onKeyDown = this.onKeyDown.bind(this)\n }\n\n /**\n * Get last Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get lastElement() {\n return this.elements[this.elements.length - 1] || null\n }\n\n /**\n * Get first Element on the trap\n *\n * @return {HTMLElement | null} element\n */\n get firstElement() {\n return this.elements[0] || null\n }\n\n /**\n * Get whether the trap is enabled\n *\n * @return {boolean} isEnabled\n */\n get isEnabled() {\n return !!this.root\n }\n\n onKeyDown(event) {\n if (!isTabPressed(event)) {\n return\n }\n\n // SHIFT + TAB\n if (event.shiftKey) {\n if (isFocused(this.firstElement)) {\n this.lastElement.focus()\n event.preventDefault()\n }\n return\n }\n\n // TAB\n if (isNothingFocused() || isFocused(this.lastElement)) {\n this.firstElement.focus()\n event.preventDefault()\n return\n }\n }\n\n /**\n * Enable focus trap\n *\n * @param {HTMLElement} root - the focus trap root element\n */\n enable(root) {\n if (!root) {\n return\n }\n\n this.root = root\n this.elements = queryFocusableElements(this.root)\n\n this.root.addEventListener('keydown', this.onKeyDown)\n }\n\n /**\n * Disable focus trap\n */\n disable() {\n this.root.removeEventListener('keydown', this.onKeyDown)\n this.root = null\n }\n}\n\n/**\n * @type {FocusTrap | null}\n */\nlet focusTrap = null\n\n/**\n * Get FocusTrap focusTrap\n *\n * @returns {FocusTrap} focusTrap\n */\nexport function useFocusTrap({ props, vfmContainer, modalTransitionState }) {\n if (focusTrap == null) {\n focusTrap = new FocusTrap()\n }\n\n watch(modalTransitionState, state => {\n switch (state) {\n case TransitionState.Enter:\n if (props.focusRetain || props.focusTrap) {\n vfmContainer.value.focus()\n }\n props.focusTrap && focusTrap.enable(vfmContainer.value)\n break\n case TransitionState.Leaving:\n if (focusTrap.enabled) {\n focusTrap.disable()\n }\n break\n }\n })\n\n return { focusTrap }\n}\n","import { watch, ref, nextTick } from 'vue'\nimport { TransitionState } from './transitionState'\n\nconst resizeCursor = {\n t: 'ns-resize',\n tr: 'nesw-resize',\n r: 'ew-resize',\n br: 'nwse-resize',\n b: 'ns-resize',\n bl: 'nesw-resize',\n l: 'ew-resize',\n tl: 'nwse-resize'\n}\n\nexport const setStyle = (el, key, value) => {\n const cacheStyle = el.style[key]\n el.style[key] = value\n return () => {\n el.style[key] = cacheStyle\n }\n}\n\nexport const getPosition = e => {\n const { clientX: x, clientY: y } = e.targetTouches ? e.targetTouches[0] : e\n return { x, y }\n}\n\nexport const capitalize = s => {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport const clamp = (min, num, max) => {\n if (typeof min !== 'number') {\n min = Math.min(num, max) || num\n }\n if (typeof max !== 'number') {\n max = Math.max(num, min)\n }\n return Math.min(Math.max(num, min), max)\n}\n\nexport const trimPx = distance => {\n return (distance && Number(distance.replace(/px$/, ''))) || 0\n}\n\nexport const validDragElement = (e, el, dragSelector) => {\n if (dragSelector === '') return true\n const list = [...el.querySelectorAll(dragSelector)]\n return list.includes(e.target)\n}\n\nconst pointerType = {\n down: {\n pc: 'mousedown',\n m: 'touchstart'\n },\n move: {\n pc: 'mousemove',\n m: 'touchmove'\n },\n up: {\n pc: 'mouseup',\n m: 'touchend'\n }\n}\nexport const addListener = (type, el, callback) => {\n el && el.addEventListener(pointerType[type].pc, callback)\n el && el.addEventListener(pointerType[type].m, callback, { passive: false })\n}\nexport const removeListener = (type, el, callback) => {\n el && el.removeEventListener(pointerType[type].pc, callback)\n el && el.removeEventListener(pointerType[type].m, callback)\n}\n\nexport function useDragResize({\n props,\n visible,\n vfmContainer,\n vfmContent,\n vfmResize,\n modalTransitionState,\n onEvent = () => {}\n}) {\n const resizeVisible = ref(false)\n const state = ref(null)\n const dragResizeStyle = ref({})\n\n watch(modalTransitionState, val => {\n switch (val) {\n case TransitionState.Enter:\n props.drag && addDragDown()\n props.resize && addResizeDown()\n break\n case TransitionState.Leave:\n if (!props.keepChangedStyle) {\n dragResizeStyle.value = {}\n }\n break\n }\n })\n\n watch(\n () => props.drag,\n val => {\n if (visible.value) {\n val ? addDragDown() : removeDragDown()\n }\n }\n )\n\n watch(\n () => props.resize,\n val => {\n if (visible.value) {\n val ? addResizeDown() : removeResizeDown()\n }\n }\n )\n\n watch(\n () => props.keepChangedStyle,\n val => {\n if (!val) {\n dragResizeStyle.value = {}\n }\n }\n )\n\n function pointerDown(e) {\n e.stopPropagation()\n const STATE_RESIZE = 'resize'\n const STATE_DRAG = 'drag'\n const direction = e.target.getAttribute('direction')\n let _state\n if (direction) {\n _state = STATE_RESIZE\n } else if (validDragElement(e, vfmContent.value, props.dragSelector)) {\n _state = STATE_DRAG\n } else {\n return\n }\n state.value = `${_state}:start`\n onEvent?.(e)\n const down = getPosition(e)\n const rectContainer = vfmContainer.value.getBoundingClientRect()\n const rectContent = vfmContent.value.getBoundingClientRect()\n const isAbsolute = window.getComputedStyle(vfmContent.value).position === 'absolute'\n const position = {\n top: trimPx(dragResizeStyle.value.top),\n left: trimPx(dragResizeStyle.value.left)\n }\n const limit = (() => {\n if (props.fitParent) {\n const limit = {\n absolute() {\n return {\n minTop: 0,\n minLeft: 0,\n maxTop: rectContainer.height - rectContent.height,\n maxLeft: rectContainer.width - rectContent.width\n }\n },\n relative() {\n return {\n minTop: position.top + rectContainer.top - rectContent.top,\n minLeft: position.left + rectContainer.left - rectContent.left,\n maxTop: position.top + rectContainer.bottom - rectContent.bottom,\n maxLeft: position.left + rectContainer.right - rectContent.right\n }\n }\n }\n return isAbsolute ? limit.absolute() : limit.relative()\n } else {\n return {}\n }\n })()\n const resetBodyCursor = _state === STATE_RESIZE && setStyle(document.body, 'cursor', resizeCursor[direction])\n\n const moving = e => {\n // onPointerMove\n e.stopPropagation()\n state.value = `${_state}:move`\n onEvent?.(e)\n const move = getPosition(e)\n let offset = {\n x: move.x - down.x,\n y: move.y - down.y\n }\n if (_state === STATE_RESIZE) {\n offset = getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute)\n }\n\n let top\n let left\n if (isAbsolute) {\n top = rectContent.top - rectContainer.top + offset.y\n left = rectContent.left - rectContainer.left + offset.x\n } else {\n top = position.top + offset.y\n left = position.left + offset.x\n }\n if (_state === STATE_DRAG && props.fitParent) {\n top = clamp(limit.minTop, top, limit.maxTop)\n left = clamp(limit.minLeft, left, limit.maxLeft)\n }\n const style = {\n position: 'relative',\n top: top + 'px',\n left: left + 'px',\n margin: 'unset',\n touchAction: 'none',\n ...(isAbsolute && {\n position: 'absolute',\n transform: 'unset',\n width: rectContent.width + 'px',\n height: rectContent.height + 'px'\n }),\n ...(offset.width && { width: offset.width + 'px' }),\n ...(offset.height && { height: offset.height + 'px' })\n }\n\n dragResizeStyle.value = {\n ...dragResizeStyle.value,\n ...style\n }\n }\n const end = e => {\n // onPointerUp\n e.stopPropagation()\n if (_state === STATE_RESIZE) {\n resetBodyCursor && resetBodyCursor()\n }\n // Excute onMouseupContainer before trigger onEvent\n setTimeout(() => {\n state.value = `${_state}:end`\n onEvent?.(e)\n })\n removeListener('move', document, moving)\n removeListener('up', document, end)\n }\n addListener('move', document, moving)\n addListener('up', document, end)\n }\n function addDragDown() {\n addListener('down', vfmContent.value, pointerDown)\n dragResizeStyle.value.touchAction = 'none'\n }\n function removeDragDown() {\n removeListener('down', vfmContent.value, pointerDown)\n }\n function addResizeDown() {\n resizeVisible.value = true\n nextTick(() => {\n addListener('down', vfmResize.value, pointerDown)\n })\n }\n function removeResizeDown() {\n removeListener('down', vfmResize.value, pointerDown)\n resizeVisible.value = false\n }\n function getResizeOffset(direction, offset, rectContainer, rectContent, isAbsolute) {\n const setOffset = dir => {\n let offsetAxis = offset[dir.axis]\n offsetAxis = props.fitParent ? clamp(dir.min, offsetAxis, dir.max) : offsetAxis\n let edge = clamp(dir.minEdge, dir.getEdge(offsetAxis), dir.maxEdge)\n offsetAxis = dir.getOffsetAxis(edge, isAbsolute)\n return {\n [dir.edgeName]: edge,\n [dir.axis]: offsetAxis\n }\n }\n\n const getDirectionInfo = (position, edgeName, axis, isPositive) => {\n const rectContentEdge = rectContent[edgeName]\n const positionOffset = rectContainer[position] - rectContent[position]\n const EdgeName = capitalize(edgeName)\n return {\n axis,\n edgeName,\n min: isPositive ? positionOffset : -rectContentEdge,\n max: isPositive ? rectContentEdge : positionOffset,\n minEdge: props[`min${EdgeName}`],\n maxEdge: props[`max${EdgeName}`],\n getEdge: offsetAxis => rectContent[edgeName] - offsetAxis * (isPositive ? 1 : -1),\n getOffsetAxis: (edge, isAbsolute) => {\n const offsetAxis = rectContent[edgeName] - edge\n if (isAbsolute) {\n return isPositive ? offsetAxis : 0\n } else {\n return ((isPositive ? 1 : -1) * offsetAxis) / 2\n }\n }\n }\n }\n\n const directions = {\n t: ['top', 'height', 'y', true],\n b: ['bottom', 'height', 'y', false],\n l: ['left', 'width', 'x', true],\n r: ['right', 'width', 'x', false]\n }\n\n let _offset = { x: 0, y: 0 }\n direction.split('').forEach(dir => {\n const directionInfo = getDirectionInfo(...directions[dir])\n _offset = {\n ..._offset,\n ...setOffset(directionInfo)\n }\n })\n return _offset\n }\n\n return {\n resizeVisible,\n state,\n dragResizeStyle,\n removeDragDown,\n removeResizeDown\n }\n}\n","// stolen from body-scroll-lock\n\n// Older browsers don't support event options, feature detect it.\nlet hasPassiveEvents = false\nif (typeof window !== 'undefined') {\n const passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true\n return undefined\n }\n }\n window.addEventListener('testPassive', null, passiveTestOptions)\n window.removeEventListener('testPassive', null, passiveTestOptions)\n}\n\nconst isIosDevice =\n typeof window !== 'undefined' &&\n window.navigator &&\n window.navigator.platform &&\n (/iP(ad|hone|od)/.test(window.navigator.platform) ||\n (window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1))\n\nlet locks = []\nlet documentListenerAdded = false\nlet clientY = 0\nlet initialClientY = -1\nlet previousBodyOverflowSetting\nlet previousBodyPaddingRight\n\nconst hasScrollbar = el => {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ['auto', 'scroll'].includes(style.overflowY) && el.scrollHeight > el.clientHeight\n}\n\nconst shouldScroll = (el, delta) => {\n if (el.scrollTop === 0 && delta < 0) return false\n if (el.scrollTop + el.clientHeight + delta >= el.scrollHeight && delta > 0) return false\n return true\n}\n\nconst composedPath = el => {\n const path = []\n while (el) {\n path.push(el)\n if (el.classList.contains('vfm')) return path\n el = el.parentElement\n }\n return path\n}\n\nconst hasAnyScrollableEl = (el, delta) => {\n let hasAnyScrollableEl = false\n const path = composedPath(el)\n path.forEach(el => {\n if (hasScrollbar(el) && shouldScroll(el, delta)) {\n hasAnyScrollableEl = true\n }\n })\n return hasAnyScrollableEl\n}\n\n// returns true if `el` should be allowed to receive touchmove events.\nconst allowTouchMove = el => locks.some(() => hasAnyScrollableEl(el, -clientY))\n\nconst preventDefault = rawEvent => {\n const e = rawEvent || window.event\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true\n }\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true\n\n if (e.preventDefault) e.preventDefault()\n\n return false\n}\n\nconst setOverflowHidden = options => {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n const reserveScrollBarGap = !!options && options.reserveScrollBarGap === true\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n\n if (reserveScrollBarGap && scrollBarGap > 0) {\n const computedBodyPaddingRight = parseInt(getComputedStyle(document.body).getPropertyValue('padding-right'), 10)\n previousBodyPaddingRight = document.body.style.paddingRight\n document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarGap}px`\n }\n }\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n}\n\nconst restoreOverflowSetting = () => {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined\n }\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nconst isTargetElementTotallyScrolled = targetElement =>\n targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false\n\nconst handleScroll = (event, targetElement) => {\n clientY = event.targetTouches[0].clientY - initialClientY\n\n if (allowTouchMove(event.target)) {\n return false\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event)\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event)\n }\n\n event.stopPropagation()\n return true\n}\n\nexport const disableBodyScroll = (targetElement, options) => {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.'\n )\n return\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(lock => lock.targetElement === targetElement)) {\n return\n }\n\n const lock = {\n targetElement,\n options: options || {}\n }\n\n locks = [...locks, lock]\n\n if (isIosDevice) {\n targetElement.ontouchstart = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY\n }\n }\n targetElement.ontouchmove = event => {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement)\n }\n }\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = true\n }\n } else {\n setOverflowHidden(options)\n }\n}\n\nexport const enableBodyScroll = targetElement => {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error(\n 'enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.'\n )\n return\n }\n\n locks = locks.filter(lock => lock.targetElement !== targetElement)\n\n if (isIosDevice) {\n targetElement.ontouchstart = null\n targetElement.ontouchmove = null\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined)\n documentListenerAdded = false\n }\n } else if (!locks.length) {\n restoreOverflowSetting()\n }\n}\n","\n\n\n\n\n","\n\n\n\n\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","\n\n\n","\n\n\n","import VueFinalModalComponent from './VueFinalModal.vue'\nimport ModalsContainerComponent from './ModalsContainer.vue'\nimport { markRaw, reactive, shallowReactive } from 'vue'\n\nexport class ModalInstance {\n constructor() {\n const bindApi = component => {\n const _component = { ...component, props: { ...component.props } }\n Object.assign(_component.props, {\n api: { type: Object, default: () => this }\n })\n return markRaw(_component)\n }\n\n this.modals = []\n this.openedModals = []\n this.VueFinalModal = bindApi(VueFinalModalComponent)\n\n this.dynamicModals = shallowReactive([])\n this.ModalsContainer = bindApi(ModalsContainerComponent)\n }\n\n show(modal, ...args) {\n switch (typeof modal) {\n case 'string':\n return this.toggle(modal, true, ...args)\n case 'object': {\n const { show } = this.useModal(modal, args[0])\n return show()\n }\n }\n }\n\n hide(...names) {\n return this.toggle(names, false)\n }\n\n hideAll() {\n return this.hide(...this.openedModals.map(modal => modal.props.name))\n }\n\n toggle(name, ...args) {\n const modals = Array.isArray(name) ? this.get(...name) : this.get(name)\n return Promise.allSettled(modals.map(modal => modal.toggle(...args)))\n }\n\n get(...names) {\n return this.modals.filter(modal => names.includes(modal.props.name))\n }\n\n existModal(options) {\n return this.dynamicModals.indexOf(options) !== -1\n }\n\n useModal(_options, params = {}) {\n let options = reactive({\n value: false,\n component: this.VueFinalModal,\n id: Symbol('useModal'),\n bind: {},\n slots: {},\n on: {},\n params,\n ..._options\n })\n\n const show = () => {\n return this.existModal(options)\n ? Promise.resolve('[Vue Final Modal] modal is already opened')\n : new Promise((resolve, reject) => {\n options.value = true\n options.reject = reject\n options.opened = () => {\n resolve('show')\n }\n this.dynamicModals.push(options)\n })\n }\n\n const hide = () => {\n return this.existModal(options)\n ? new Promise((resolve, reject) => {\n options.value = false\n options.rejectClose = reject\n options.closed = () => {\n resolve('hide')\n }\n })\n : Promise.resolve('[Vue Final Modal] modal is already closed')\n }\n\n return { show, hide, options }\n }\n}\n\n/**\n * @description Support create multiple modal instance\n */\nexport const createModalInstance = () => {\n let modalInstance = new ModalInstance()\n return {\n $vfm: modalInstance,\n VueFinalModal: modalInstance.VueFinalModal,\n ModalsContainer: modalInstance.ModalsContainer,\n useModal: modalInstance.useModal.bind(modalInstance)\n }\n}\n\n/**\n * @description Create modal instance by default for directly support `import { $vfm, VueFinalModal, ModalsContainer, useModal } from 'vue-final-modal'`\n */\nconst modalInstance = createModalInstance()\n\nexport const { $vfm, VueFinalModal, ModalsContainer, useModal } = modalInstance\n"],"names":["TransitionState","useTransitionState","state","ref","listeners","beforeEnter","value","afterEnter","beforeLeave","afterLeave","queryFocusableElements","element","selector","querySelectorAll","isFocused","document","activeElement","FocusTrap","root","elements","onKeyDown","this","bind","length","event","key","keyCode","isTabPressed","shiftKey","lastElement","firstElement","focus","preventDefault","addEventListener","removeEventListener","focusTrap","useFocusTrap","props","vfmContainer","modalTransitionState","watch","focusRetain","enable","enabled","disable","resizeCursor","t","tr","r","br","b","bl","l","tl","getPosition","e","targetTouches","x","clientX","y","clientY","clamp","min","num","max","Math","trimPx","distance","Number","replace","pointerType","down","pc","m","move","up","addListener","type","el","callback","passive","removeListener","useDragResize","visible","vfmContent","vfmResize","onEvent","resizeVisible","dragResizeStyle","pointerDown","stopPropagation","_state","STATE_RESIZE","STATE_DRAG","direction","target","getAttribute","dragSelector","includes","validDragElement","cacheStyle","rectContainer","getBoundingClientRect","rectContent","isAbsolute","window","getComputedStyle","position","top","left","limit","fitParent","absolute","minTop","minLeft","maxTop","height","maxLeft","width","relative","bottom","right","resetBodyCursor","body","style","moving","offset","setOffset","dir","offsetAxis","axis","edge","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","getDirectionInfo","isPositive","s","rectContentEdge","positionOffset","EdgeName","charAt","toUpperCase","slice","directions","_offset","split","forEach","directionInfo","getResizeOffset","margin","touchAction","transform","end","setTimeout","addDragDown","removeDragDown","addResizeDown","nextTick","removeResizeDown","val","drag","resize","keepChangedStyle","hasPassiveEvents","passiveTestOptions","previousBodyOverflowSetting","previousBodyPaddingRight","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","hasAnyScrollableEl","delta","path","push","classList","contains","parentElement","composedPath","nodeType","Node","ELEMENT_NODE","overflowY","scrollHeight","clientHeight","hasScrollbar","scrollTop","shouldScroll","allowTouchMove","some","rawEvent","touches","disableBodyScroll","targetElement","options","lock","ontouchstart","ontouchmove","isTargetElementTotallyScrolled","handleScroll","undefined","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","computedBodyPaddingRight","parseInt","getPropertyValue","paddingRight","overflow","setOverflowHidden","console","error","enableBodyScroll","filter","noop","name","String","modelValue","Boolean","displayDirective","validator","indexOf","classes","Object","Array","overlayClass","contentClass","styles","overlayStyle","contentStyle","lockScroll","hideOverlay","clickToClose","escToClose","nonModal","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","resizeDirections","minWidth","minHeight","maxWidth","Infinity","maxHeight","emits","setup","emit","uid","Symbol","vfmOverlayTransition","vfmTransition","modalStackIndex","visibility","reactive","modal","overlay","overlayTransitionState","overlayListeners","modalListeners","_stopEvent","params","lastMousedownEl","resolveToggle","rejectToggle","computedOverlayTransition","computed","computedTransition","isComponentReadyToBeDestroyed","calculateZIndex","bindStyle","bindContentStyle","isArray","getModalInfo","getAttachElement","handleLockScroll","toggle","mounted","createModalEvent","emitEvent","appendChild","index","api","openedModals","findIndex","vm","splice","warn","concat","close","$_vm","querySelector","eventProps","eventType","stopEvent","stop","show","_params","Promise","resolve","reject","res","err","arguments","display","flush","modals","onMounted","onBeforeUnmount","remove","onMousedown","onMouseupContainer","onEsc","css","insertAt","head","getElementsByTagName","createElement","firstChild","insertBefore","styleSheet","cssText","createTextNode","$props","$setup","_createElementBlock","onKeydown","_createVNode","_mergeProps","_toHandlers","_createElementVNode","toString","role","tabindex","onMouseup","_renderSlot","_ctx","_hoisted_2","methods","dynamicModals","closed","beforeClose","rejectClose","beforeOpen","_this","$nextTick","isString","_hoisted_1","_createBlock","component","id","on","on_beforeClose","$options","on_closed","on_beforeOpen","on_opened","opened","slots","slot","_createCommentVNode","innerHTML","ModalInstance","bindApi","_component","assign","markRaw","VueFinalModal","VueFinalModalComponent","shallowReactive","ModalsContainer","ModalsContainerComponent","args","useModal","names","hide","map","get","allSettled","_options","_this2","existModal","createModalInstance","modalInstance","$vfm"],"mappings":"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"} \ No newline at end of file diff --git a/packages/lib/src/VueFinalModal.vue b/packages/lib/src/VueFinalModal.vue index 628eeee2..ef4939c7 100644 --- a/packages/lib/src/VueFinalModal.vue +++ b/packages/lib/src/VueFinalModal.vue @@ -154,7 +154,6 @@ export default { const vfmTransition = ref(null) const modalStackIndex = ref(null) - const $focusTrap = useFocusTrap() const visible = ref(false) const visibility = reactive({ @@ -168,6 +167,12 @@ export default { const _stopEvent = ref(false) const params = ref({}) + const { focusTrap } = useFocusTrap({ + props, + vfmContainer, + modalTransitionState + }) + const { resizeVisible, state, dragResizeStyle, removeDragDown, removeResizeDown } = useDragResize({ props, visible, @@ -279,20 +284,10 @@ export default { watch(modalTransitionState, state => { switch (state) { case TransitionState.Enter: - if (props.focusRetain || props.focusTrap) { - vfmContainer.value.focus() - } - props.focusTrap && $focusTrap.enable(vfmContainer.value) - emit('_opened') emit('opened', createModalEvent({ type: 'opened' })) resolveToggle('show') break - case TransitionState.Leaving: - if ($focusTrap.enabled) { - $focusTrap.disable() - } - break case TransitionState.Leave: modalStackIndex.value = null props.lockScroll && enableBodyScroll(vfmContainer.value) @@ -343,7 +338,6 @@ export default { modalStackIndex, visibility, handleLockScroll, - $focusTrap, toggle, params } @@ -403,8 +397,8 @@ export default { if ($_vm.props.focusTrap) { nextTick(() => { - $_vm.$focusTrap.enable($_vm.vfmContainer.value) - $_vm.$focusTrap.firstElement.focus() + focusTrap.enable($_vm.vfmContainer.value) + focusTrap.firstElement.focus() }) } diff --git a/packages/lib/src/utils/focusTrap.js b/packages/lib/src/utils/focusTrap.js index f2503454..9568f65d 100644 --- a/packages/lib/src/utils/focusTrap.js +++ b/packages/lib/src/utils/focusTrap.js @@ -1,3 +1,6 @@ +import { watch } from 'vue' +import { TransitionState } from './transitionState' + // stolen from vue-js-modal const FOCUSABLE_ELEMENTS_QUERY = @@ -119,17 +122,33 @@ class FocusTrap { /** * @type {FocusTrap | null} */ -let instance = null +let focusTrap = null /** - * Get FocusTrap instance + * Get FocusTrap focusTrap * * @returns {FocusTrap} focusTrap */ -export function useFocusTrap() { - if (instance == null) { - instance = new FocusTrap() +export function useFocusTrap({ props, vfmContainer, modalTransitionState }) { + if (focusTrap == null) { + focusTrap = new FocusTrap() } - return instance + watch(modalTransitionState, state => { + switch (state) { + case TransitionState.Enter: + if (props.focusRetain || props.focusTrap) { + vfmContainer.value.focus() + } + props.focusTrap && focusTrap.enable(vfmContainer.value) + break + case TransitionState.Leaving: + if (focusTrap.enabled) { + focusTrap.disable() + } + break + } + }) + + return { focusTrap } }