@progress/kendo-vue-dialogs
Version:
9 lines (8 loc) • 3.83 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),k=require("./DialogTitleBar.js"),n=require("@progress/kendo-vue-common"),h=require("./package-metadata.js"),I=require("./constants.js"),y=o.defineComponent({name:"KendoDialog",emits:{close:null,overlayclick:null},props:{appendTo:String,title:String,titleRender:[String,Function],id:String,wrapperId:String,dir:String,closeIcon:{type:Boolean,default:!0},width:[String,Number],height:[String,Number],minWidth:[String,Number],className:String,dialogClass:String,themeColor:{type:String,validator:function(e){return["primary","dark","light"].includes(e)}},onClose:Function},provide(){return{kCurrentZIndex:I.DEFAULT_DIALOGS_ZINDEX}},data(){return{showLicenseWatermark:!1}},created(){n.validatePackage(h.packageMetadata),this.showLicenseWatermark=n.shouldShowValidationUI(h.packageMetadata),this.titleId=this.generateTitleId(),this.contentId=this.generateContentId()},computed:{wrapperClass(){const{className:e}=this.$props;return{"k-dialog-wrapper":!0,[e]:e}},dialogElementClass(){const{dialogClass:e,themeColor:i}=this.$props;return{"k-window":!0,"k-dialog":!0,[e]:e,[`k-window-${i}`]:i}}},mounted(){if(this.$props.appendTo){const e=document.querySelector(this.$props.appendTo);this.windowElement=this.$refs.wrapper,e.append(this.windowElement)}},beforeUnmount(){this.$props.appendTo&&this.windowElement.remove()},methods:{handleCloseDialog(e){e.preventDefault(),this.$emit("close",{event:e,target:this})},handleKeyDown(e){e.keyCode===n.Keys.esc&&n.hasListener.call(this,"close")&&(e.preventDefault(),this.handleCloseDialog(e))},transformDimesion(e){return typeof e=="string"&&(e.endsWith("px")||e.endsWith("%"))?e:e+"px"},getActionBarIndex(e){return e.findIndex(t=>t&&t.tag&&t.tag.toLowerCase().indexOf("dialogactionsbar")!==-1||t.componentOptions&&t.componentOptions.tag&&t.componentOptions.tag.toLowerCase().indexOf("actions-bar")!==-1||t.type&&t.type.name&&t.type.name.toLowerCase().indexOf("dialogactionsbar")!==-1)},generateTitleId(){return"dialog-title"+n.guid()},generateContentId(){return"dialog-content"+n.guid()},handleClick(e){this.$emit("overlayclick",e)}},render(){const e=this.$props.id!==void 0?this.$props.id:this.titleId;let{title:i,width:t,height:s,minWidth:a,dir:g,contentStyle:u,wrapperId:m}=this.$props;const l=this.$props.titleRender?n.templateRendering.call(this,this.$props.titleRender,n.getListeners.call(this)):null,r=n.getDefaultSlots(this)||[];t=this.transformDimesion(t),s=this.transformDimesion(s),a=this.transformDimesion(a);const w=this.showLicenseWatermark?o.createVNode(n.WatermarkOverlay,null,null):null,d=this.getActionBarIndex(r);let c;d!==-1&&(c=r[d],r.splice(d,1));const f=this.$props.closeIcon!==void 0?this.$props.closeIcon:!0,p=o.createVNode("div",{ref:"wrapper",class:this.wrapperClass,onKeydown:this.handleKeyDown,tabindex:0,id:m,dir:g},[o.createVNode("div",{class:"k-overlay",onClick:this.handleClick},null),o.createVNode("div",{"aria-labelledby":i||l?e:void 0,"aria-describedby":this.contentId,"aria-modal":!0,class:this.dialogElementClass,role:"dialog",style:{width:t,height:s,minWidth:a}},[(i||l)&&o.createVNode(k.DialogTitleBar,{closeIcon:f,onClosebuttonclick:this.handleCloseDialog,id:e,title:i,titleRender:l},null),o.createVNode("div",{class:"k-window-content k-dialog-content",style:u,id:this.contentId},[r]),c,w])]);return this.$props.appendTo?o.createVNode("div",null,[p]):p}});exports.Dialog=y;