1 line
5.1 KiB
JavaScript
1 line
5.1 KiB
JavaScript
import{BORDER_LEFT as e,BORDER_TOP as t,Popup as n,addUnit as r,callInterceptor as i,createNamespace as a,extend as o,inBrowser as s,isFunction as c,makeStringProp as l,mountComponent as u,noop as d,numericProp as f,pick as p,popupSharedPropKeys as m,popupSharedProps as h,routeProps as g,truthProp as _,unknownProp as v,useChildren as y,useExpose as b,useParent as x,usePlaceholder as S,usePopupState as C,useRoute as w,withInstall as T}from"./_plugin-vue_export-helper-BZSVNCRS.js";import{computed as E,createVNode as D,defineComponent as O,mergeProps as k,reactive as A,ref as j,withKeys as M}from"./index-BDung3EM.js";import{Button as N}from"./style-DGwcFI5d.js";const[P,F]=a(`action-bar`),I=Symbol(P),L={placeholder:Boolean,safeAreaInsetBottom:_};var R=O({name:P,props:L,setup(e,{slots:t}){let n=j(),r=S(n,F),{linkChildren:i}=y(I);i();let a=()=>{var r;return D(`div`,{ref:n,class:[F(),{"van-safe-area-bottom":e.safeAreaInsetBottom}]},[(r=t.default)?.call(t)])};return()=>e.placeholder?r(a):a()}});const z=T(R),[B,V]=a(`action-bar-button`),H=o({},g,{type:String,text:String,icon:String,color:String,loading:Boolean,disabled:Boolean});var U=O({name:B,props:H,setup(e,{slots:t}){let n=w(),{parent:r,index:i}=x(I),a=E(()=>{if(r){let e=r.children[i.value-1];return!(e&&`isButton`in e)}}),o=E(()=>{if(r){let e=r.children[i.value+1];return!(e&&`isButton`in e)}});return b({isButton:!0}),()=>{let{type:r,icon:i,text:s,color:c,loading:l,disabled:u}=e;return D(N,{class:V([r,{last:o.value,first:a.value}]),size:`large`,type:r,icon:i,color:c,loading:l,disabled:u,onClick:n},{default:()=>[t.default?t.default():s]})}}});const W=T(U),[G,K,q]=a(`dialog`),J=o({},h,{title:String,theme:String,width:f,message:[String,Function],callback:Function,allowHtml:Boolean,className:v,transition:l(`van-dialog-bounce`),messageAlign:String,closeOnPopstate:_,showCancelButton:Boolean,cancelButtonText:String,cancelButtonColor:String,cancelButtonDisabled:Boolean,confirmButtonText:String,confirmButtonColor:String,confirmButtonDisabled:Boolean,showConfirmButton:_,closeOnClickOverlay:Boolean,keyboardEnabled:_,destroyOnClose:Boolean}),Y=[...m,`transition`,`closeOnPopstate`,`destroyOnClose`];var X=O({name:G,props:J,emits:[`confirm`,`cancel`,`keydown`,`update:show`],setup(a,{emit:o,slots:s}){let l=j(),u=A({confirm:!1,cancel:!1}),f=e=>o(`update:show`,e),m=e=>{var t;f(!1),(t=a.callback)==null||t.call(a,e)},h=e=>()=>{a.show&&(o(e),a.beforeClose?(u[e]=!0,i(a.beforeClose,{args:[e],done(){m(e),u[e]=!1},canceled(){u[e]=!1}})):m(e))},g=h(`cancel`),_=h(`confirm`),v=M(e=>{var t,n;if(!a.keyboardEnabled||e.target!==(n=(t=l.value)?.popupRef)?.value)return;let r={Enter:a.showConfirmButton?_:d,Escape:a.showCancelButton?g:d};r[e.key](),o(`keydown`,e)},[`enter`,`esc`]),y=()=>{let e=s.title?s.title():a.title;if(e)return D(`div`,{class:K(`header`,{isolated:!a.message&&!s.default})},[e])},b=e=>{let{message:t,allowHtml:n,messageAlign:r}=a,i=K(`message`,{"has-title":e,[r]:r}),o=c(t)?t():t;return n&&typeof o==`string`?D(`div`,{class:i,innerHTML:o},null):D(`div`,{class:i},[o])},x=()=>{if(s.default)return D(`div`,{class:K(`content`)},[s.default()]);let{title:e,message:t,allowHtml:n}=a;if(t){let t=!!(e||s.title);return D(`div`,{key:n?1:0,class:K(`content`,{isolated:!t})},[b(t)])}},S=()=>D(`div`,{class:[t,K(`footer`)]},[a.showCancelButton&&D(N,{size:`large`,text:a.cancelButtonText||q(`cancel`),class:K(`cancel`),style:{color:a.cancelButtonColor},loading:u.cancel,disabled:a.cancelButtonDisabled,onClick:g},null),a.showConfirmButton&&D(N,{size:`large`,text:a.confirmButtonText||q(`confirm`),class:[K(`confirm`),{[e]:a.showCancelButton}],style:{color:a.confirmButtonColor},loading:u.confirm,disabled:a.confirmButtonDisabled,onClick:_},null)]),C=()=>D(z,{class:K(`footer`)},{default:()=>[a.showCancelButton&&D(W,{type:`warning`,text:a.cancelButtonText||q(`cancel`),class:K(`cancel`),color:a.cancelButtonColor,loading:u.cancel,disabled:a.cancelButtonDisabled,onClick:g},null),a.showConfirmButton&&D(W,{type:`danger`,text:a.confirmButtonText||q(`confirm`),class:K(`confirm`),color:a.confirmButtonColor,loading:u.confirm,disabled:a.confirmButtonDisabled,onClick:_},null)]}),w=()=>s.footer?s.footer():a.theme===`round-button`?C():S();return()=>{let{width:e,title:t,theme:i,message:o,className:s}=a;return D(n,k({ref:l,role:`dialog`,class:[K([i]),s],style:{width:r(e)},tabindex:0,"aria-labelledby":t||o,onKeydown:v,"onUpdate:show":f},p(a,Y)),{default:()=>[y(),x(),w()]})}}});let Z;const Q={title:``,width:``,theme:null,message:``,overlay:!0,callback:null,teleport:`body`,className:``,allowHtml:!1,lockScroll:!0,transition:void 0,beforeClose:null,overlayClass:``,overlayStyle:void 0,messageAlign:``,cancelButtonText:``,cancelButtonColor:null,cancelButtonDisabled:!1,confirmButtonText:``,confirmButtonColor:null,confirmButtonDisabled:!1,showConfirmButton:!0,showCancelButton:!1,closeOnPopstate:!0,closeOnClickOverlay:!1,destroyOnClose:!1};let $=o({},Q);function ee(){let e={setup(){let{state:e,toggle:t}=C();return()=>D(X,k(e,{"onUpdate:show":t}),null)}};({instance:Z}=u(e))}function te(e){return s?new Promise((t,n)=>{Z||ee(),Z.open(o({},$,e,{callback:e=>{(e===`confirm`?t:n)(e)}}))}):Promise.resolve(void 0)}const ne=e=>te(o({showCancelButton:!0},e)),re=T(X);export{re as Dialog,ne as showConfirmDialog}; |