modal.min.js 17 KB

1
  1. "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _conf=_interopRequireDefault(require("../../conf")),_ctor=_interopRequireDefault(require("xe-utils/ctor")),_queue=_interopRequireDefault(require("./queue")),_activities=_interopRequireDefault(require("./activities")),_tools=require("../../tools");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,i=new Array(e);o<e;o++)i[o]=t[o];return i}function _iterableToArrayLimit(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var o=[],i=!0,n=!1,s=void 0;try{for(var a,l=t[Symbol.iterator]();!(i=(a=l.next()).done)&&(o.push(a.value),!e||o.length!==e);i=!0);}catch(t){n=!0,s=t}finally{try{i||null==l.return||l.return()}finally{if(n)throw s}}return o}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _defineProperty(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}var activeModals=[],_default2={name:"VxeModal",props:{value:Boolean,id:String,type:{type:String,default:"modal"},loading:{type:Boolean,default:null},status:String,iconStatus:String,className:String,top:{type:[Number,String],default:function(){return _conf.default.modal.top}},position:[String,Object],title:String,duration:{type:[Number,String],default:function(){return _conf.default.modal.duration}},message:[String,Function],content:[String,Function],cancelButtonText:{type:String,default:function(){return _conf.default.modal.cancelButtonText}},confirmButtonText:{type:String,default:function(){return _conf.default.modal.confirmButtonText}},lockView:{type:Boolean,default:function(){return _conf.default.modal.lockView}},lockScroll:Boolean,mask:{type:Boolean,default:function(){return _conf.default.modal.mask}},maskClosable:{type:Boolean,default:function(){return _conf.default.modal.maskClosable}},escClosable:{type:Boolean,default:function(){return _conf.default.modal.escClosable}},resize:{type:Boolean,default:function(){return _conf.default.modal.resize}},showHeader:{type:Boolean,default:function(){return _conf.default.modal.showHeader}},showFooter:{type:Boolean,default:function(){return _conf.default.modal.showFooter}},showZoom:{type:Boolean,default:null},dblclickZoom:{type:Boolean,default:function(){return _conf.default.modal.dblclickZoom}},width:[Number,String],height:[Number,String],minWidth:{type:[Number,String],default:function(){return _conf.default.modal.minWidth}},minHeight:{type:[Number,String],default:function(){return _conf.default.modal.minHeight}},zIndex:Number,marginSize:{type:[Number,String],default:_conf.default.modal.marginSize},fullscreen:Boolean,remember:{type:Boolean,default:function(){return _conf.default.modal.remember}},destroyOnClose:{type:Boolean,default:function(){return _conf.default.modal.destroyOnClose}},showTitleOverflow:{type:Boolean,default:function(){return _conf.default.modal.showTitleOverflow}},transfer:{type:Boolean,default:function(){return _conf.default.modal.transfer}},storage:{type:Boolean,default:function(){return _conf.default.modal.storage}},storageKey:{type:String,default:function(){return _conf.default.modal.storageKey}},animat:{type:Boolean,default:function(){return _conf.default.modal.animat}},size:{type:String,default:function(){return _conf.default.modal.size||_conf.default.size}},beforeHideMethod:{type:Function,default:function(){return _conf.default.modal.beforeHideMethod}},slots:Object,events:Object},data:function(){return{inited:!1,visible:!1,contentVisible:!1,modalTop:0,modalZindex:0,zoomLocat:null,firstOpen:!1}},computed:{vSize:function(){return this.size||this.$parent&&(this.$parent.size||this.$parent.vSize)},isMsg:function(){return"message"===this.type}},watch:{width:function(){this.recalculate()},height:function(){this.recalculate()},value:function(t){this[t?"open":"close"]()}},created:function(){this.storage&&!this.id&&_tools.UtilTools.error("vxe.error.reqProp",["modal.id"]),activeModals.push(this)},mounted:function(){var t=this.$listeners,e=this.events,o=void 0===e?{}:e;this.value&&this.open(),this.recalculate(),this.escClosable&&_tools.GlobalEvent.on(this,"keydown",this.handleGlobalKeydownEvent);var i="inserted",n={type:i,$modal:this,$event:{type:i}};t.inserted?this.$emit("inserted",n):o.inserted&&o.inserted.call(this,n)},beforeDestroy:function(){var e=this,t=this.$el;_tools.GlobalEvent.off(this,"keydown"),this.removeMsgQueue(),t.parentNode===document.body&&t.parentNode.removeChild(t),_ctor.default.remove(activeModals,function(t){return t===e})},render:function(e){var t,o=this,i=this.$scopedSlots,n=this.slots,s=void 0===n?{}:n,a=this.inited,l=this.vSize,r=this.className,c=this.type,u=this.resize,d=this.showZoom,f=this.animat,h=this.loading,m=this.status,p=this.iconStatus,v=this.showFooter,g=this.zoomLocat,y=this.modalTop,x=this.dblclickZoom,b=this.contentVisible,_=this.visible,w=this.title,S=this.lockScroll,z=this.lockView,T=this.mask,$=this.isMsg,k=this.showTitleOverflow,B=this.destroyOnClose,M=this.content||this.message,N=i.default||s.default,O=i.footer||s.footer,L=i.header||s.header,P=i.title||s.title,E={mousedown:this.mousedownEvent};return(null===d?u:d)&&x&&"modal"===c&&(E.dblclick=this.toggleZoomEvent),e("div",{class:["vxe-modal--wrapper","type--".concat(c),r,(t={},_defineProperty(t,"size--".concat(l),l),_defineProperty(t,"status--".concat(m),m),_defineProperty(t,"is--animat",f),_defineProperty(t,"lock--scroll",S),_defineProperty(t,"lock--view",z),_defineProperty(t,"is--resize",u),_defineProperty(t,"is--mask",T),_defineProperty(t,"is--maximize",g),_defineProperty(t,"is--visible",b),_defineProperty(t,"is--active",_),_defineProperty(t,"is--loading",h),t)],style:{zIndex:this.modalZindex,top:y?"".concat(y,"px"):null},on:{click:this.selfClickEvent}},[e("div",{class:"vxe-modal--box",on:{mousedown:this.boxMousedownEvent},ref:"modalBox"},[this.showHeader?e("div",{class:["vxe-modal--header",!$&&k?"is--ellipsis":""],on:E},L?!a||B&&!_?[]:L.call(this,{$modal:this},e):[P?P.call(this,{$modal:this},e):e("span",{class:"vxe-modal--title"},w?_tools.UtilTools.getFuncText(w):_conf.default.i18n("vxe.alert.title")),(null===d?u:d)?e("i",{class:["vxe-modal--zoom-btn","trigger--btn",g?_conf.default.icon.MODAL_ZOOM_OUT:_conf.default.icon.MODAL_ZOOM_IN],attrs:{title:_conf.default.i18n("vxe.modal.zoom".concat(g?"Out":"In"))},on:{click:this.toggleZoomEvent}}):null,e("i",{class:["vxe-modal--close-btn","trigger--btn",_conf.default.icon.MODAL_CLOSE],attrs:{title:_conf.default.i18n("vxe.modal.close")},on:{click:this.closeEvent}})]):null,e("div",{class:"vxe-modal--body"},[m?e("div",{class:"vxe-modal--status-wrapper"},[e("i",{class:["vxe-modal--status-icon",p||_conf.default.icon["MODAL_".concat(m).toLocaleUpperCase()]]})]):null,e("div",{class:"vxe-modal--content"},N?!a||B&&!_?[]:N.call(this,{$modal:this},e):_tools.UtilTools.getFuncText(M)),$?null:e("div",{class:["vxe-loading",{"is--visible":h}]},[e("div",{class:"vxe-loading--spinner"})])]),v?e("div",{class:"vxe-modal--footer"},O?!a||B&&!_?[]:O.call(this,{$modal:this},e):["confirm"===c?e("vxe-button",{ref:"cancelBtn",on:{click:this.cancelEvent}},this.cancelButtonText||_conf.default.i18n("vxe.button.cancel")):null,e("vxe-button",{ref:"confirmBtn",props:{status:"primary"},on:{click:this.confirmEvent}},this.confirmButtonText||_conf.default.i18n("vxe.button.confirm"))]):null,!$&&u?e("span",{class:"vxe-modal--resize"},["wl","wr","swst","sest","st","swlb","selb","sb"].map(function(t){return e("span",{class:"".concat(t,"-resize"),attrs:{"data-type":t},on:{mousedown:o.dragEvent}})})):null])])},methods:{recalculate:function(){var t=this.width,e=this.height,o=this.getBox();return o.style.width=t?isNaN(t)?t:"".concat(t,"px"):null,o.style.height=e?isNaN(e)?e:"".concat(e,"px"):null,this.$nextTick()},selfClickEvent:function(t){if(this.maskClosable&&t.target===this.$el){this.close("mask")}},updateZindex:function(){var t=this.zIndex,e=this.modalZindex;t?this.modalZindex=t:e<_tools.UtilTools.getLastZIndex()&&(this.modalZindex=_tools.UtilTools.nextZIndex())},closeEvent:function(t){var e="close";this.$emit(e,{type:e,$modal:this,$event:t},t),this.close(e)},confirmEvent:function(t){var e="confirm";this.$emit(e,{type:e,$modal:this,$event:t},t),this.close(e)},cancelEvent:function(t){var e="cancel";this.$emit(e,{type:e,$modal:this,$event:t},t),this.close(e)},open:function(){var o=this,e=this.$refs,t=this.events,i=void 0===t?{}:t,n=this.inited,s=this.duration,a=this.visible,l=this.isMsg,r=this.remember,c=this.showFooter;if(n||(this.inited=!0,this.transfer&&document.body.appendChild(this.$el)),!a){var u={type:"show",$modal:this,$event:{type:"show"}};r||this.recalculate(),this.visible=!0,this.contentVisible=!1,this.updateZindex(),_activities.default.push(this),this.$emit("activated",u),setTimeout(function(){o.contentVisible=!0,o.$nextTick(function(){if(c){var t=e.confirmBtn||e.cancelBtn;t&&t.focus()}i.show?i.show.call(o,u):(o.$emit("input",!0),o.$emit("show",u))})},10),l?(this.addMsgQueue(),-1!==s&&setTimeout(this.close,_ctor.default.toNumber(s))):this.$nextTick(function(){var t=o.firstOpen,e=o.fullscreen;r&&t||o.updatePosition().then(function(){setTimeout(function(){return o.updatePosition()},20)}),t||(o.firstOpen=!0,o.hasPosStorage()?o.restorePosStorage():e&&o.$nextTick(function(){return o.maximize()}))})}},addMsgQueue:function(){-1===_queue.default.indexOf(this)&&_queue.default.push(this),this.updateStyle()},removeMsgQueue:function(){var e=this;-1<_queue.default.indexOf(this)&&_ctor.default.remove(_queue.default,function(t){return t===e}),this.updateStyle()},updateStyle:function(){this.$nextTick(function(){var e=0;_queue.default.forEach(function(t){e+=_ctor.default.toNumber(t.top),t.modalTop=e,e+=t.$refs.modalBox.clientHeight})})},updatePosition:function(){var f=this;return this.$nextTick().then(function(){var t=f.marginSize,e=f.position,o=f.getBox(),i=document.documentElement.clientWidth||document.body.clientWidth,n=document.documentElement.clientHeight||document.body.clientHeight,s="center"===e,a=s?{top:e,left:e}:Object.assign({},e),l=a.top,r=a.left,c=s||"center"===l,u="",d="";d=r&&!(s||"center"===r)?isNaN(r)?r:"".concat(r,"px"):"".concat(Math.max(t,i/2-o.offsetWidth/2),"px"),u=l&&!c?isNaN(l)?l:"".concat(l,"px"):"".concat(Math.max(t,n/2-o.offsetHeight/2),"px"),o.style.top=u,o.style.left=d})},close:function(t){var e=this,o=this.events,i=void 0===o?{}:o,n=this.remember,s=this.visible,a=this.isMsg,l=this.beforeHideMethod,r={type:t,$modal:this,$event:{type:t}};s&&Promise.resolve(l?l(r):null).then(function(t){_ctor.default.isError(t)||(a&&e.removeMsgQueue(),e.contentVisible=!1,n||(e.zoomLocat=null),e.$emit("deactivated",r),_ctor.default.remove(_activities.default,function(t){return t===e}),setTimeout(function(){e.visible=!1,i.hide?i.hide.call(e,r):(e.$emit("input",!1),e.$emit("hide",r))},200))}).catch(function(t){return t})},handleGlobalKeydownEvent:function(t){var e=this;if(27===t.keyCode){var o=_ctor.default.max(_activities.default,function(t){return t.modalZindex});o&&setTimeout(function(){o===e&&o.escClosable&&e.close()},10)}},getBox:function(){return this.$refs.modalBox},isMaximized:function(){return!!this.zoomLocat},maximize:function(){var s=this;return this.$nextTick().then(function(){if(!s.zoomLocat){var t=s.marginSize,e=s.getBox(),o=_tools.DomTools.getDomNode(),i=o.visibleHeight,n=o.visibleWidth;s.zoomLocat={top:e.offsetTop,left:e.offsetLeft,width:e.offsetWidth+(e.style.width?0:1),height:e.offsetHeight+(e.style.height?0:1)},Object.assign(e.style,{top:"".concat(t,"px"),left:"".concat(t,"px"),width:"".concat(n-2*t,"px"),height:"".concat(i-2*t,"px")}),s.savePosStorage()}})},revert:function(){var o=this;return this.$nextTick().then(function(){var t=o.zoomLocat;if(t){var e=o.getBox();o.zoomLocat=null,Object.assign(e.style,{top:"".concat(t.top,"px"),left:"".concat(t.left,"px"),width:"".concat(t.width,"px"),height:"".concat(t.height,"px")}),o.savePosStorage()}})},zoom:function(){var t=this;return this[this.zoomLocat?"revert":"maximize"]().then(function(){return t.isMaximized()})},toggleZoomEvent:function(t){var e=this,o=this.$listeners,i=this.zoomLocat,n=this.events,s=void 0===n?{}:n,a={type:i?"revert":"max",$modal:this,$event:t};return this.zoom().then(function(){o.zoom?e.$emit("zoom",a,t):s.zoom&&s.zoom.call(e,a,t)})},getPosition:function(){if(!this.isMsg){var t=this.getBox();if(t)return{top:t.offsetTop,left:t.offsetLeft}}return null},setPosition:function(t,e){if(!this.isMsg){var o=this.getBox();_ctor.default.isNumber(t)&&(o.style.top="".concat(t,"px")),_ctor.default.isNumber(e)&&(o.style.left="".concat(e,"px"))}return this.$nextTick()},boxMousedownEvent:function(){var e=this.modalZindex;activeModals.some(function(t){return t.visible&&t.modalZindex>e})&&this.updateZindex()},mousedownEvent:function(t){var e=this,o=this.remember,i=this.storage,c=this.marginSize,n=this.zoomLocat,u=this.getBox();if(!n&&0===t.button&&!_tools.DomTools.getEventTargetNode(t,u,"trigger--btn").flag){t.preventDefault();var s=document.onmousemove,a=document.onmouseup,d=t.clientX-u.offsetLeft,f=t.clientY-u.offsetTop,l=_tools.DomTools.getDomNode(),h=l.visibleHeight,m=l.visibleWidth;document.onmousemove=function(t){t.preventDefault();var e=u.offsetWidth,o=u.offsetHeight,i=c,n=m-e-c-1,s=c,a=h-o-c-1,l=t.clientX-d,r=t.clientY-f;n<l&&(l=n),l<i&&(l=i),a<r&&(r=a),r<s&&(r=s),u.style.left="".concat(l,"px"),u.style.top="".concat(r,"px")},document.onmouseup=function(){document.onmousemove=s,document.onmouseup=a,o&&i&&e.$nextTick(function(){e.savePosStorage()})}}},dragEvent:function(t){var s=this;t.preventDefault();var a=this.$listeners,l=this.marginSize,e=this.events,r=void 0===e?{}:e,c=this.remember,u=this.storage,o=_tools.DomTools.getDomNode(),d=o.visibleHeight,f=o.visibleWidth,h=t.target.dataset.type,m=_ctor.default.toNumber(this.minWidth),p=_ctor.default.toNumber(this.minHeight),v=f,g=d,y=this.getBox(),i=document.onmousemove,n=document.onmouseup,x=y.clientWidth,b=y.clientHeight,_=t.clientX,w=t.clientY,S=y.offsetTop,z=y.offsetLeft,T={type:"resize",$modal:this};document.onmousemove=function(t){var e,o,i,n;switch(t.preventDefault(),h){case"wl":i=(e=_-t.clientX)+x,l<z-e&&m<i&&(y.style.width="".concat(i<v?i:v,"px"),y.style.left="".concat(z-e,"px"));break;case"swst":e=_-t.clientX,o=w-t.clientY,i=e+x,n=o+b,l<z-e&&m<i&&(y.style.width="".concat(i<v?i:v,"px"),y.style.left="".concat(z-e,"px")),l<S-o&&p<n&&(y.style.height="".concat(n<g?n:g,"px"),y.style.top="".concat(S-o,"px"));break;case"swlb":e=_-t.clientX,o=t.clientY-w,i=e+x,n=o+b,l<z-e&&m<i&&(y.style.width="".concat(i<v?i:v,"px"),y.style.left="".concat(z-e,"px")),S+n+l<d&&p<n&&(y.style.height="".concat(n<g?n:g,"px"));break;case"st":o=w-t.clientY,n=b+o,l<S-o&&p<n&&(y.style.height="".concat(n<g?n:g,"px"),y.style.top="".concat(S-o,"px"));break;case"wr":e=t.clientX-_,z+(i=e+x)+l<f&&m<i&&(y.style.width="".concat(i<v?i:v,"px"));break;case"sest":e=t.clientX-_,n=(o=w-t.clientY)+b,z+(i=e+x)+l<f&&m<i&&(y.style.width="".concat(i<v?i:v,"px")),l<S-o&&p<n&&(y.style.height="".concat(n<g?n:g,"px"),y.style.top="".concat(S-o,"px"));break;case"selb":e=t.clientX-_,n=(o=t.clientY-w)+b,z+(i=e+x)+l<f&&m<i&&(y.style.width="".concat(i<v?i:v,"px")),S+n+l<d&&p<n&&(y.style.height="".concat(n<g?n:g,"px"));break;case"sb":o=t.clientY-w,S+(n=o+b)+l<d&&p<n&&(y.style.height="".concat(n<g?n:g,"px"))}y.className=y.className.replace(/\s?is--drag/,"")+" is--drag",c&&u&&s.savePosStorage(),a.zoom?s.$emit("zoom",T,t):r.zoom&&r.zoom.call(s,T,t)},document.onmouseup=function(){s.zoomLocat=null,document.onmousemove=i,document.onmouseup=n,setTimeout(function(){y.className=y.className.replace(/\s?is--drag/,"")},50)}},getStorageMap:function(t){var e=_conf.default.version,o=_ctor.default.toStringJSON(localStorage.getItem(t));return o&&o._v===e?o:{_v:e}},hasPosStorage:function(){var t=this.id,e=this.remember,o=this.storage,i=this.storageKey;return!!(e&&o&&this.getStorageMap(i)[t])},restorePosStorage:function(){var t=this.id,e=this.remember,o=this.storage,i=this.storageKey;if(e&&o){var n=this.getStorageMap(i)[t];if(n){var s=this.getBox(),a=_slicedToArray(n.split(","),8),l=a[0],r=a[1],c=a[2],u=a[3],d=a[4],f=a[5],h=a[6],m=a[7];l&&(s.style.left="".concat(l,"px")),r&&(s.style.top="".concat(r,"px")),c&&(s.style.width="".concat(c,"px")),u&&(s.style.height="".concat(u,"px")),d&&f&&(this.zoomLocat={left:d,top:f,width:h,height:m})}}},savePosStorage:function(){var t=this.id,e=this.remember,o=this.storage,i=this.storageKey,n=this.zoomLocat;if(e&&o){var s=this.getBox(),a=this.getStorageMap(i);a[t]=[s.style.left,s.style.top,s.style.width,s.style.height].concat(n?[n.left,n.top,n.width,n.height]:[]).map(function(t){return t?_ctor.default.toNumber(t):""}).join(","),localStorage.setItem(i,_ctor.default.toJSONString(a))}}}};exports.default=_default2;