UNPKG

vxe-pc-ui

Version:
1 lines 2.38 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_ui=require("../../ui"),_xeUtils=_interopRequireDefault(require("xe-utils")),_dom=require("../..//ui/src/dom"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeImage",props:{src:[String,Array],alt:[String,Number],loading:String,title:[String,Number],width:[String,Number],height:[String,Number],circle:Boolean,maskClosable:{type:Boolean,default:()=>(0,_ui.getConfig)().image.maskClosable},showPreview:{type:Boolean,default:()=>(0,_ui.getConfig)().image.showPreview},showPrintButton:{type:Boolean,default:()=>(0,_ui.getConfig)().image.showPrintButton},showDownloadButton:{type:Boolean,default:()=>(0,_ui.getConfig)().image.showDownloadButton},size:{type:String,default:()=>(0,_ui.getConfig)().image.size||(0,_ui.getConfig)().size}},emits:["click"],setup(l,e){const u=e["emit"];var t=_xeUtils.default.uniqueId();const n=(0,_vue.inject)("$xeImageGroup",null),a=(0,_vue.ref)(),s=(0,_ui.useSize)(l)["computeSize"];var i=(0,_vue.reactive)({});const r={refElem:a},d=(0,_vue.computed)(()=>{var{width:e,height:t}=l,i={};return e&&t?(i.maxWidth=(0,_dom.toCssUnit)(e),i.maxHeight=(0,_dom.toCssUnit)(t)):(e&&(i.width=(0,_dom.toCssUnit)(e)),t&&(i.height=(0,_dom.toCssUnit)(t))),i}),g=(0,_vue.computed)(()=>{var e=l["src"];return e?(_xeUtils.default.isArray(e)?e:[e]).map(e=>_xeUtils.default.isString(e)?{url:e,alt:""}:{url:e.url,alt:e.alt}):[]}),o=(0,_vue.computed)(()=>{return g.value[0]}),m=(0,_vue.computed)(()=>{var e=o.value;return e?""+(e.url||""):""}),v={computeSize:s},c={xID:t,props:l,context:e,reactData:i,getRefMaps:()=>r,getComputeMaps:()=>v},_={dispatchEvent(e,t,i){u(e,(0,_ui.createEvent)(i,{$image:c},t))}},p=e=>{var{showPreview:t,showPrintButton:i,showDownloadButton:u,maskClosable:r}=l,o=g.value,a=m.value;n?n.handleClickImgEvent(e,{url:a}):(t&&a&&(0,_util.openPreviewImage)({urlList:o,showPrintButton:i,showDownloadButton:u,maskClosable:r}),_.dispatchEvent("click",{url:a},e))};Object.assign(c,_,{});return c.renderVN=()=>{var{alt:e,loading:t,circle:i}=l,u=d.value,r=m.value,o=s.value;return(0,_vue.h)("img",{ref:a,class:["vxe-image",{["size--"+o]:o,"is--circle":i}],src:r,alt:e,loading:t,style:u,onClick:p})},c},render(){return this.renderVN()}});