maz-ui
Version:
A standalone components library for Vue.Js 3 & Nuxt.Js 3
1 lines • 3.99 kB
JavaScript
import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper.ChmETRGw.js";import{t as hasSlotContent}from"./hasSlotContent.akaXJLAp.js";import{t as MazBackdrop_default}from"./MazBackdrop.Cv-HcKMs.js";import{computed,createBlock,createCommentVNode,createElementBlock,createElementVNode,createPropsRestProxy,createTextVNode,defineAsyncComponent,defineComponent,mergeProps,nextTick,normalizeClass,openBlock,ref,renderSlot,toDisplayString,unref,useAttrs,useSlots,watch,withCtx}from"vue";import{MazXMark}from"@maz-ui/icons/static/MazXMark";import '../assets/MazDialog.Cx0Dkh9f.css';var _hoisted_1={key:0,id:`dialogTitle`,class:`m-dialog-title`};var _hoisted_2={key:0,class:`m-dialog-footer`};var MazDialog_default=_plugin_vue_export_helper_default(defineComponent({name:`MazDialog`,inheritAttrs:!1,__name:`MazDialog`,props:{modelValue:{type:Boolean},title:{},hideCloseButton:{type:Boolean},maxWidth:{default:`100%`},minWidth:{default:`32rem`},scrollable:{type:Boolean},persistent:{type:Boolean},teleportSelector:{},beforeClose:{type:Function},closeOnEscape:{type:Boolean,default:!0},transitionName:{},backdropClass:{type:[Boolean,null,String,Object,Array]},backdropContentClass:{type:[Boolean,null,String,Object,Array]},contentPadding:{type:Boolean},justify:{},align:{},variant:{},ariaLabelledby:{},ariaDescribedby:{}},emits:[`open`,`close`,`update:model-value`],setup(__props,{expose:__expose}){let backdropProps=createPropsRestProxy(__props,[`modelValue`,`maxWidth`,`minWidth`,`scrollable`,`closeOnEscape`]);let MazBtn=defineAsyncComponent(()=>import(`../components/MazBtn.js`));let attrs=useAttrs();let backdrop=ref();__expose({close:()=>backdrop.value?.close?.()});let wrapperAttrs=computed(()=>({class:attrs.class,style:attrs.style}));let dialogContent=ref();let slots=useSlots();let hasFooter=computed(()=>!!slots.footer);return __props.scrollable&&watch(()=>__props.modelValue,async newVal=>{await nextTick(),newVal&&dialogContent.value&&setTimeout(()=>{dialogContent.value?.scrollTo({top:0,behavior:`instant`})},0)}),(_ctx,_cache)=>(openBlock(),createBlock(MazBackdrop_default,mergeProps(backdropProps,{ref_key:`backdrop`,ref:backdrop,"model-value":__props.modelValue,"transition-name":`modal-anim`,"aria-labelledby":`dialogTitle`,"aria-describedby":`dialogDesc`,"close-on-escape":__props.closeOnEscape,"content-padding":``,persistent:__props.persistent,justify:`center`,variant:`dialog`,onClose:_cache[0]||=$event=>_ctx.$emit(`close`,$event),onOpen:_cache[1]||=$event=>_ctx.$emit(`open`,$event),"onUpdate:modelValue":_cache[2]||=$event=>_ctx.$emit(`update:model-value`,$event)}),{default:withCtx(({close})=>[createElementVNode(`div`,mergeProps({class:[`m-dialog`,{"--scrollable":__props.scrollable}],role:`dialog`,"aria-modal":`true`,style:[{"--max-width":__props.maxWidth,"--min-width":__props.minWidth}]},wrapperAttrs.value),[renderSlot(_ctx.$slots,`header`,{close},()=>[createElementVNode(`div`,{class:normalizeClass([`m-dialog-header`,{"--has-title":unref(hasSlotContent)(unref(slots).title)||__props.title}])},[unref(hasSlotContent)(unref(slots).title)||__props.title?(openBlock(),createElementBlock(`h2`,_hoisted_1,[renderSlot(_ctx.$slots,`title`,{},()=>[createTextVNode(toDisplayString(__props.title),1)],!0)])):createCommentVNode(``,!0),!__props.hideCloseButton&&!__props.persistent?(openBlock(),createBlock(unref(MazBtn),{key:1,color:`transparent`,size:`sm`,icon:unref(MazXMark),onClick:close},null,8,[`icon`,`onClick`])):createCommentVNode(``,!0)],2)],!0),createElementVNode(`div`,{id:`dialogDesc`,ref_key:`dialogContent`,ref:dialogContent,class:normalizeClass([`m-dialog-content`,{"--bottom-padding":!hasFooter.value}])},[renderSlot(_ctx.$slots,`default`,{close},void 0,!0)],2),hasFooter.value?(openBlock(),createElementBlock(`div`,_hoisted_2,[renderSlot(_ctx.$slots,`footer`,{close},void 0,!0)])):createCommentVNode(``,!0)],16)]),_:3},16,[`model-value`,`close-on-escape`,`persistent`]))}}),[[`__scopeId`,`data-v-292c3213`]]);export{MazDialog_default as t};