UNPKG

primevue

Version:

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![npm version](https://badge.fury.io/js/primevue.svg)](https://badge.fury.io/js/primevue) [![Discord Chat](https://img.shields.io/discord/55794023

2 lines (1 loc) 7.03 kB
import e from"primevue/focustrap";import i from"primevue/portal";import{ZIndexUtils as t,DomHandler as a}from"primevue/utils";import{resolveComponent as n,resolveDirective as o,openBlock as r,createElementBlock as l,normalizeClass as s,normalizeStyle as c,createElementVNode as p,mergeProps as m,renderSlot as u,createCommentVNode as v,createVNode as h,withCtx as f,withDirectives as d,Transition as g}from"vue";var b={name:"Image",inheritAttrs:!1,emits:["show","hide","error"],props:{preview:{type:Boolean,default:!1},class:{type:null,default:null},style:{type:null,default:null},imageStyle:{type:null,default:null},imageClass:{type:null,default:null},previewButtonProps:{type:null,default:null}},mask:null,data:()=>({maskVisible:!1,previewVisible:!1,rotate:0,scale:1}),beforeUnmount(){this.mask&&t.clear(this.container)},methods:{maskRef(e){this.mask=e},toolbarRef(e){this.toolbarRef=e},onImageClick(){this.preview&&(this.maskVisible=!0,setTimeout((()=>{this.previewVisible=!0}),25))},onPreviewImageClick(){this.previewClick=!0},onMaskClick(){this.previewClick||(this.previewVisible=!1,this.rotate=0,this.scale=1),this.previewClick=!1},onMaskKeydown(e){if("Escape"===e.code)this.onMaskClick(),setTimeout((()=>{a.focus(this.$refs.previewButton)}),25),e.preventDefault()},onError(){this.$emit("error")},rotateRight(){this.rotate+=90,this.previewClick=!0},rotateLeft(){this.rotate-=90,this.previewClick=!0},zoomIn(){this.scale=this.scale+.1,this.previewClick=!0},zoomOut(){this.scale=this.scale-.1,this.previewClick=!0},onBeforeEnter(){t.set("modal",this.mask,this.$primevue.config.zIndex.modal)},onEnter(){this.focus(),this.$emit("show")},onBeforeLeave(){a.addClass(this.mask,"p-component-overlay-leave")},onLeave(){this.$emit("hide")},onAfterLeave(e){t.clear(e),this.maskVisible=!1},focus(){let e=this.mask.querySelector("[autofocus]");e&&e.focus()}},computed:{containerClass(){return["p-image p-component",this.class,{"p-image-preview-container":this.preview}]},maskClass:()=>["p-image-mask p-component-overlay p-component-overlay-enter"],rotateClass(){return"p-image-preview-rotate-"+this.rotate},imagePreviewStyle(){return{transform:"rotate("+this.rotate+"deg) scale("+this.scale+")"}},zoomDisabled(){return this.scale<=.5||this.scale>=1.5},rightAriaLabel(){return this.$primevue.config.locale.aria?this.$primevue.config.locale.aria.rotateRight:void 0},leftAriaLabel(){return this.$primevue.config.locale.aria?this.$primevue.config.locale.aria.rotateLeft:void 0},zoomInAriaLabel(){return this.$primevue.config.locale.aria?this.$primevue.config.locale.aria.zoomIn:void 0},zoomOutAriaLabel(){return this.$primevue.config.locale.aria?this.$primevue.config.locale.aria.zoomOut:void 0},closeAriaLabel(){return this.$primevue.config.locale.aria?this.$primevue.config.locale.aria.close:void 0}},components:{Portal:i},directives:{focustrap:e}};const k=p("i",{class:"p-image-preview-icon pi pi-eye"},null,-1),w=["aria-modal"],y={class:"p-image-toolbar"},C=["aria-label"],L=[p("i",{class:"pi pi-refresh"},null,-1)],z=["aria-label"],$=[p("i",{class:"pi pi-undo"},null,-1)],A=["disabled","aria-label"],B=[p("i",{class:"pi pi-search-minus"},null,-1)],E=["disabled","aria-label"],I=[p("i",{class:"pi pi-search-plus"},null,-1)],x=["aria-label"],P=[p("i",{class:"pi pi-times"},null,-1)],V={key:0},R=["src"];!function(e,i){void 0===i&&(i={});var t=i.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===t&&a.firstChild?a.insertBefore(n,a.firstChild):a.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-image-mask {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.p-image-preview-container {\n position: relative;\n display: inline-block;\n}\n.p-image-preview-indicator {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.3s;\n}\n.p-image-preview-icon {\n font-size: 1.5rem;\n}\n.p-image-preview-container:hover > .p-image-preview-indicator {\n opacity: 1;\n cursor: pointer;\n}\n.p-image-preview-container > img {\n cursor: pointer;\n}\n.p-image-toolbar {\n position: absolute;\n top: 0;\n right: 0;\n display: flex;\n}\n.p-image-action.p-link {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.p-image-preview {\n transition: transform 0.15s;\n max-width: 100vw;\n max-height: 100vh;\n}\n.p-image-preview-enter-active {\n transition: all 150ms cubic-bezier(0, 0, 0.2, 1);\n}\n.p-image-preview-leave-active {\n transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.p-image-preview-enter-from,\n.p-image-preview-leave-to {\n opacity: 0;\n transform: scale(0.7);\n}\n"),b.render=function(e,i,t,a,b,M){const S=n("Portal"),O=o("focustrap");return r(),l("span",{class:s(M.containerClass),style:c(t.style)},[p("img",m(e.$attrs,{style:t.imageStyle,class:t.imageClass,onError:i[0]||(i[0]=(...e)=>M.onError&&M.onError(...e))}),null,16),t.preview?(r(),l("button",m({key:0,ref:"previewButton",class:"p-image-preview-indicator",onClick:i[1]||(i[1]=(...e)=>M.onImageClick&&M.onImageClick(...e))},t.previewButtonProps),[u(e.$slots,"indicator",{},(()=>[k]))],16)):v("",!0),h(S,null,{default:f((()=>[b.maskVisible?d((r(),l("div",{key:0,ref:M.maskRef,role:"dialog",class:s(M.maskClass),"aria-modal":b.maskVisible,onClick:i[8]||(i[8]=(...e)=>M.onMaskClick&&M.onMaskClick(...e)),onKeydown:i[9]||(i[9]=(...e)=>M.onMaskKeydown&&M.onMaskKeydown(...e))},[p("div",y,[p("button",{class:"p-image-action p-link",onClick:i[2]||(i[2]=(...e)=>M.rotateRight&&M.rotateRight(...e)),type:"button","aria-label":M.rightAriaLabel},L,8,C),p("button",{class:"p-image-action p-link",onClick:i[3]||(i[3]=(...e)=>M.rotateLeft&&M.rotateLeft(...e)),type:"button","aria-label":M.leftAriaLabel},$,8,z),p("button",{class:"p-image-action p-link",onClick:i[4]||(i[4]=(...e)=>M.zoomOut&&M.zoomOut(...e)),type:"button",disabled:M.zoomDisabled,"aria-label":M.zoomOutAriaLabel},B,8,A),p("button",{class:"p-image-action p-link",onClick:i[5]||(i[5]=(...e)=>M.zoomIn&&M.zoomIn(...e)),type:"button",disabled:M.zoomDisabled,"aria-label":M.zoomInAriaLabel},I,8,E),p("button",{class:"p-image-action p-link",type:"button",onClick:i[6]||(i[6]=(...i)=>e.hidePreview&&e.hidePreview(...i)),"aria-label":M.closeAriaLabel,autofocus:""},P,8,x)]),h(g,{name:"p-image-preview",onBeforeEnter:M.onBeforeEnter,onEnter:M.onEnter,onLeave:M.onLeave,onBeforeLeave:M.onBeforeLeave,onAfterLeave:M.onAfterLeave},{default:f((()=>[b.previewVisible?(r(),l("div",V,[p("img",{src:e.$attrs.src,class:"p-image-preview",style:c(M.imagePreviewStyle),onClick:i[7]||(i[7]=(...e)=>M.onPreviewImageClick&&M.onPreviewImageClick(...e))},null,12,R)])):v("",!0)])),_:1},8,["onBeforeEnter","onEnter","onLeave","onBeforeLeave","onAfterLeave"])],42,w)),[[O]]):v("",!0)])),_:1})],6)};export{b as default};