UNPKG

primevue

Version:

PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc

2 lines (1 loc) 8.48 kB
import e from"primevue/focustrap";import t from"primevue/icons/times";import n from"primevue/overlayeventbus";import i from"primevue/portal";import o from"primevue/ripple";import{ZIndexUtils as s,DomHandler as r,ConnectedOverlayScrollHandler as l,UniqueComponentId as c}from"primevue/utils";import a from"primevue/basecomponent";import u from"primevue/overlaypanel/style";import{resolveComponent as d,resolveDirective as h,openBlock as f,createBlock as p,withCtx as v,createVNode as y,Transition as m,mergeProps as L,withDirectives as b,createElementBlock as w,renderSlot as k,Fragment as C,createElementVNode as g,resolveDynamicComponent as E,createCommentVNode as K}from"vue";var O={name:"OverlayPanel",extends:{name:"BaseOverlayPanel",extends:a,props:{dismissable:{type:Boolean,default:!0},showCloseIcon:{type:Boolean,default:!1},appendTo:{type:[String,Object],default:"body"},baseZIndex:{type:Number,default:0},autoZIndex:{type:Boolean,default:!0},breakpoints:{type:Object,default:null},closeIcon:{type:String,default:void 0},closeOnEscape:{type:Boolean,default:!0}},style:u,provide:function(){return{$parentInstance:this}}},inheritAttrs:!1,emits:["show","hide"],data:function(){return{visible:!1}},watch:{dismissable:{immediate:!0,handler:function(e){e?this.bindOutsideClickListener():this.unbindOutsideClickListener()}}},selfClick:!1,target:null,eventTarget:null,outsideClickListener:null,scrollHandler:null,resizeListener:null,container:null,styleElement:null,overlayEventListener:null,documentKeydownListener:null,beforeUnmount:function(){this.dismissable&&this.unbindOutsideClickListener(),this.scrollHandler&&(this.scrollHandler.destroy(),this.scrollHandler=null),this.destroyStyle(),this.unbindResizeListener(),this.target=null,this.container&&this.autoZIndex&&s.clear(this.container),this.overlayEventListener&&(n.off("overlay-click",this.overlayEventListener),this.overlayEventListener=null),this.container=null},mounted:function(){this.breakpoints&&this.createStyle()},methods:{toggle:function(e,t){this.visible?this.hide():this.show(e,t)},show:function(e,t){this.visible=!0,this.eventTarget=e.currentTarget,this.target=t||e.currentTarget},hide:function(){this.visible=!1},onContentClick:function(){this.selfClick=!0},onEnter:function(e){var t=this;this.container.setAttribute(this.attributeSelector,""),r.addStyles(e,{position:"absolute",top:"0",left:"0"}),this.alignOverlay(),this.dismissable&&this.bindOutsideClickListener(),this.bindScrollListener(),this.bindResizeListener(),this.autoZIndex&&s.set("overlay",e,this.baseZIndex+this.$primevue.config.zIndex.overlay),this.overlayEventListener=function(e){t.container.contains(e.target)&&(t.selfClick=!0)},this.focus(),n.on("overlay-click",this.overlayEventListener),this.$emit("show"),this.closeOnEscape&&this.bindDocumentKeyDownListener()},onLeave:function(){this.unbindOutsideClickListener(),this.unbindScrollListener(),this.unbindResizeListener(),this.unbindDocumentKeyDownListener(),n.off("overlay-click",this.overlayEventListener),this.overlayEventListener=null,this.$emit("hide")},onAfterLeave:function(e){this.autoZIndex&&s.clear(e)},alignOverlay:function(){r.absolutePosition(this.container,this.target,!1);var e=r.getOffset(this.container),t=r.getOffset(this.target),n=0;e.left<t.left&&(n=t.left-e.left),this.container.style.setProperty("--overlayArrowLeft","".concat(n,"px")),e.top<t.top&&(this.container.setAttribute("data-p-overlaypanel-flipped","true"),!this.isUnstyled&&r.addClass(this.container,"p-overlaypanel-flipped"))},onContentKeydown:function(e){"Escape"===e.code&&this.closeOnEscape&&(this.hide(),r.focus(this.target))},onButtonKeydown:function(e){switch(e.code){case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":e.preventDefault()}},focus:function(){var e=this.container.querySelector("[autofocus]");e&&e.focus()},onKeyDown:function(e){"Escape"===e.code&&this.closeOnEscape&&(this.visible=!1)},bindDocumentKeyDownListener:function(){this.documentKeydownListener||(this.documentKeydownListener=this.onKeyDown.bind(this),window.document.addEventListener("keydown",this.documentKeydownListener))},unbindDocumentKeyDownListener:function(){this.documentKeydownListener&&(window.document.removeEventListener("keydown",this.documentKeydownListener),this.documentKeydownListener=null)},bindOutsideClickListener:function(){var e=this;!this.outsideClickListener&&r.isClient()&&(this.outsideClickListener=function(t){!e.visible||e.selfClick||e.isTargetClicked(t)||(e.visible=!1),e.selfClick=!1},document.addEventListener("click",this.outsideClickListener))},unbindOutsideClickListener:function(){this.outsideClickListener&&(document.removeEventListener("click",this.outsideClickListener),this.outsideClickListener=null,this.selfClick=!1)},bindScrollListener:function(){var e=this;this.scrollHandler||(this.scrollHandler=new l(this.target,(function(){e.visible&&(e.visible=!1)}))),this.scrollHandler.bindScrollListener()},unbindScrollListener:function(){this.scrollHandler&&this.scrollHandler.unbindScrollListener()},bindResizeListener:function(){var e=this;this.resizeListener||(this.resizeListener=function(){e.visible&&!r.isTouchDevice()&&(e.visible=!1)},window.addEventListener("resize",this.resizeListener))},unbindResizeListener:function(){this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null)},isTargetClicked:function(e){return this.eventTarget&&(this.eventTarget===e.target||this.eventTarget.contains(e.target))},containerRef:function(e){this.container=e},createStyle:function(){if(!this.styleElement&&!this.isUnstyled){var e;this.styleElement=document.createElement("style"),this.styleElement.type="text/css",r.setAttribute(this.styleElement,"nonce",null===(e=this.$primevue)||void 0===e||null===(e=e.config)||void 0===e||null===(e=e.csp)||void 0===e?void 0:e.nonce),document.head.appendChild(this.styleElement);var t="";for(var n in this.breakpoints)t+="\n @media screen and (max-width: ".concat(n,") {\n .p-overlaypanel[").concat(this.attributeSelector,"] {\n width: ").concat(this.breakpoints[n]," !important;\n }\n }\n ");this.styleElement.innerHTML=t}},destroyStyle:function(){this.styleElement&&(document.head.removeChild(this.styleElement),this.styleElement=null)},onOverlayClick:function(e){n.emit("overlay-click",{originalEvent:e,target:this.target})}},computed:{attributeSelector:function(){return c()},closeAriaLabel:function(){return this.$primevue.config.locale.aria?this.$primevue.config.locale.aria.close:void 0}},directives:{focustrap:e,ripple:o},components:{Portal:i,TimesIcon:t}},x=["aria-modal"],I=["aria-label"];O.render=function(e,t,n,i,o,s){var r=d("Portal"),l=h("ripple"),c=h("focustrap");return f(),p(r,{appendTo:e.appendTo},{default:v((function(){return[y(m,L({name:"p-overlaypanel",onEnter:s.onEnter,onLeave:s.onLeave,onAfterLeave:s.onAfterLeave},e.ptm("transition")),{default:v((function(){return[o.visible?b((f(),w("div",L({key:0,ref:s.containerRef,role:"dialog","aria-modal":o.visible,onClick:t[5]||(t[5]=function(){return s.onOverlayClick&&s.onOverlayClick.apply(s,arguments)}),class:e.cx("root")},e.ptmi("root")),[e.$slots.container?k(e.$slots,"container",{key:0,onClose:s.hide,onKeydown:function(e){return s.onButtonKeydown(e)},closeCallback:s.hide,keydownCallback:function(e){return s.onButtonKeydown(e)}}):(f(),w(C,{key:1},[g("div",L({class:e.cx("content"),onClick:t[0]||(t[0]=function(){return s.onContentClick&&s.onContentClick.apply(s,arguments)}),onMousedown:t[1]||(t[1]=function(){return s.onContentClick&&s.onContentClick.apply(s,arguments)}),onKeydown:t[2]||(t[2]=function(){return s.onContentKeydown&&s.onContentKeydown.apply(s,arguments)})},e.ptm("content")),[k(e.$slots,"default")],16),e.showCloseIcon?b((f(),w("button",L({key:0,class:e.cx("closeButton"),"aria-label":s.closeAriaLabel,type:"button",autofocus:"",onClick:t[3]||(t[3]=function(){return s.hide&&s.hide.apply(s,arguments)}),onKeydown:t[4]||(t[4]=function(){return s.onButtonKeydown&&s.onButtonKeydown.apply(s,arguments)})},e.ptm("closeButton")),[k(e.$slots,"closeicon",{},(function(){return[(f(),p(E(e.closeIcon?"span":"TimesIcon"),L({class:[e.cx("closeIcon"),e.closeIcon]},e.ptm("closeIcon")),null,16,["class"]))]}))],16,I)),[[l]]):K("",!0)],64))],16,x)),[[c]]):K("",!0)]})),_:3},16,["onEnter","onLeave","onAfterLeave"])]})),_:3},8,["appendTo"])};export{O as default};