1
|
"use strict";var m=(o,l,s)=>new Promise((u,c)=>{var i=n=>{try{r(s.next(n))}catch(d){c(d)}},f=n=>{try{r(s.throw(n))}catch(d){c(d)}},r=n=>n.done?u(n.value):Promise.resolve(n.value).then(i,f);r((s=s.apply(o,l)).next())});const e=require("vue"),z=require("./CdxButton.cjs"),$=require("./Icon.js"),W=require("./useI18nWithOverride.js"),j=require("./useResizeObserver.cjs"),R=require("./_plugin-vue_export-helper.js"),x=e.defineComponent({name:"CdxDialog",components:{CdxButton:z,CdxIcon:$.CdxIcon},inheritAttrs:!1,props:{open:{type:Boolean,default:!1},title:{type:String,required:!0},subtitle:{type:String,required:!1,default:null},hideTitle:{type:Boolean,default:!1},useCloseButton:{type:Boolean,default:!1},closeButtonLabel:{type:String,default:""},primaryAction:{type:Object,default:null},defaultAction:{type:Object,default:null},stackedActions:{type:Boolean,default:!1},target:{type:String,default:null},renderInPlace:{type:Boolean,default:!1}},emits:["update:open","primary","default"],setup(o,{emit:l}){const s=e.useId(),u=e.ref(),c=e.ref(),i=e.ref(),f=e.ref(),r=e.ref(),n=e.ref();let d=null;const v=e.computed(()=>o.useCloseButton||o.closeButtonLabel.length>0),N=W.useI18nWithOverride(e.toRef(o,"closeButtonLabel"),"cdx-dialog-close-button-label","Close"),T=e.computed(()=>!o.hideTitle||v.value),V=e.computed(()=>!!o.primaryAction||!!o.defaultAction),I=j(i),S=e.computed(()=>{var t;return(t=I.value.height)!=null?t:0}),h=e.ref(!1),D=e.computed(()=>({"cdx-dialog--vertical-actions":o.stackedActions,"cdx-dialog--horizontal-actions":!o.stackedActions,"cdx-dialog--dividers":h.value})),H=e.inject("CdxTeleportTarget",void 0),L=e.computed(()=>{var t,a;return(a=(t=o.target)!=null?t:H)!=null?a:"body"}),k=e.ref(0);function B(){l("update:open",!1)}let C=!1;function F(t){C=t.target===u.value}function q(){C&&B()}function O(){p(c.value)}function M(){p(c.value,!0)}function p(t,a=!1){let y=Array.from(t.querySelectorAll('\n input, select, textarea, button, object, a, area,\n [contenteditable], [tabindex]:not([tabindex^="-"])\n '));a&&(y=y.reverse());for(const E of y)if(E.focus(),document.activeElement===E)return!0;return!1}let b=[],g=[];function _(){let t=u.value;for(;t.parentElement&&t.nodeName!=="BODY";){for(const a of Array.from(t.parentElement.children))a===t||a.nodeName==="SCRIPT"||(a.hasAttribute("aria-hidden")||(a.setAttribute("aria-hidden","true"),b.push(a)),a.hasAttribute("inert")||(a.setAttribute("inert",""),g.push(a)));t=t.parentElement}}function P(){for(const t of b)t.removeAttribute("aria-hidden");for(const t of g)t.removeAttribute("inert");b=[],g=[]}function A(){return m(this,null,function*(){var t;yield e.nextTick(),k.value=window.innerWidth-document.documentElement.clientWidth,document.documentElement.style.setProperty("margin-right","".concat(k.value,"px")),document.body.classList.add("cdx-dialog-open"),_(),d=document.activeElement,p(i.value)||(t=f.value)==null||t.focus()})}function w(){document.body.classList.remove("cdx-dialog-open"),document.documentElement.style.removeProperty("margin-right"),P(),d instanceof HTMLElement&&document.contains(d)&&(d.focus(),d=null)}return e.onMounted(()=>m(this,null,function*(){o.open&&(yield A())})),e.onUnmounted(()=>{o.open&&w()}),e.watch(e.toRef(o,"open"),t=>m(this,null,function*(){t?yield A():w()})),e.watch(S,()=>{i.value&&(h.value=i.value.clientHeight<i.value.scrollHeight)}),{close:B,onBackdropClick:q,onBackdropMouseDown:F,cdxIconClose:$.h4,labelId:s,rootClasses:D,backdrop:u,dialogElement:c,focusTrapStart:r,focusTrapEnd:n,focusFirst:O,focusLast:M,dialogBody:i,focusHolder:f,showHeader:T,showFooterActions:V,useCloseButtonOrLabel:v,translatedCloseButtonLabel:N,computedTarget:L}}}),K=["aria-label","aria-labelledby"],U={key:0,class:"cdx-dialog__header__title-group"},Y=["id"],G={key:0,class:"cdx-dialog__header__subtitle"},J={ref:"focusHolder",class:"cdx-dialog-focus-trap",tabindex:"-1"},Q={key:0,class:"cdx-dialog__footer__text"},X={key:1,class:"cdx-dialog__footer__actions"};function Z(o,l,s,u,c,i){const f=e.resolveComponent("cdx-icon"),r=e.resolveComponent("cdx-button");return e.openBlock(),e.createBlock(e.Teleport,{to:o.computedTarget,disabled:o.renderInPlace},[e.createVNode(e.Transition,{name:"cdx-dialog-fade",appear:""},{default:e.withCtx(()=>[o.open?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"backdrop",class:"cdx-dialog-backdrop",onMousedown:l[5]||(l[5]=(...n)=>o.onBackdropMouseDown&&o.onBackdropMouseDown(...n)),onClick:l[6]||(l[6]=(...n)=>o.onBackdropClick&&o.onBackdropClick(...n)),onKeyup:l[7]||(l[7]=e.withKeys((...n)=>o.close&&o.close(...n),["escape"]))},[e.createElementVNode("div",{ref:"focusTrapStart",tabindex:"0",onFocus:l[0]||(l[0]=(...n)=>o.focusLast&&o.focusLast(...n))},null,544),e.createElementVNode("div",e.mergeProps({ref:"dialogElement",class:["cdx-dialog",o.rootClasses],role:"dialog"},o.$attrs,{"aria-label":o.$slots.header||o.hideTitle?o.title:void 0,"aria-labelledby":!o.$slots.header&&!o.hideTitle?o.labelId:void 0,"aria-modal":"true",onClick:l[3]||(l[3]=e.withModifiers(()=>{},["stop"]))}),[o.showHeader||o.$slots.header?(e.openBlock(),e.createElementBlock("header",{key:0,class:e.normalizeClass(["cdx-dialog__header",{"cdx-dialog__header--default":!o.$slots.header}])},[e.renderSlot(o.$slots,"header",{},()=>[o.hideTitle?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("div",U,[e.createElementVNode("h2",{id:o.labelId,class:"cdx-dialog__header__title"},e.toDisplayString(o.title),9,Y),o.subtitle?(e.openBlock(),e.createElementBlock("p",G,e.toDisplayString(o.subtitle),1)):e.createCommentVNode("v-if",!0)])),o.useCloseButtonOrLabel?(e.openBlock(),e.createBlock(r,{key:1,class:"cdx-dialog__header__close-button",weight:"quiet",type:"button","aria-label":o.translatedCloseButtonLabel,onClick:o.close},{default:e.withCtx(()=>[e.createVNode(f,{icon:o.cdxIconClose},null,8,["icon"])]),_:1},8,["aria-label","onClick"])):e.createCommentVNode("v-if",!0)])],2)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",J,null,512),e.createElementVNode("div",{ref:"dialogBody",class:e.normalizeClass(["cdx-dialog__body",{"cdx-dialog__body--no-header":!(o.showHeader||o.$slots.header),"cdx-dialog__body--no-footer":!(o.showFooterActions||o.$slots.footer||o.$slots["footer-text"])}])},[e.renderSlot(o.$slots,"default")],2),o.showFooterActions||o.$slots.footer||o.$slots["footer-text"]?(e.openBlock(),e.createElementBlock("footer",{key:1,class:e.normalizeClass(["cdx-dialog__footer",{"cdx-dialog__footer--default":!o.$slots.footer}])},[e.renderSlot(o.$slots,"footer",{},()=>[o.$slots["footer-text"]?(e.openBlock(),e.createElementBlock("p",Q,[e.renderSlot(o.$slots,"footer-text")])):e.createCommentVNode("v-if",!0),o.showFooterActions?(e.openBlock(),e.createElementBlock("div",X,[o.primaryAction?(e.openBlock(),e.createBlock(r,{key:0,class:"cdx-dialog__footer__primary-action",weight:"primary",action:o.primaryAction.actionType,disabled:o.primaryAction.disabled,onClick:l[1]||(l[1]=n=>o.$emit("primary"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.primaryAction.label),1)]),_:1},8,["action","disabled"])):e.createCommentVNode("v-if",!0),o.defaultAction?(e.openBlock(),e.createBlock(r,{key:1,class:"cdx-dialog__footer__default-action",disabled:o.defaultAction.disabled,onClick:l[2]||(l[2]=n=>o.$emit("default"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.defaultAction.label),1)]),_:1},8,["disabled"])):e.createCommentVNode("v-if",!0)])):e.createCommentVNode("v-if",!0)])],2)):e.createCommentVNode("v-if",!0)],16,K),e.createElementVNode("div",{ref:"focusTrapEnd",tabindex:"0",onFocus:l[4]||(l[4]=(...n)=>o.focusFirst&&o.focusFirst(...n))},null,544)],544)):e.createCommentVNode("v-if",!0)]),_:3})],8,["to","disabled"])}const ee=R._export_sfc(x,[["render",Z]]);module.exports=ee;
|