| 1 |
- import{J as R,ay as we,ab as B,az as L,d as A,a6 as q,au as U,aA as $,c as C,aB as Ee,C as O,af as se,Q as X,aC as Pe,an as re,g as b,U as me,ak as te,M as H,a7 as K,a1 as de,a0 as fe,aD as Se,F as Ie,aE as Ve,aw as z,R as Be,aF as He,aG as p,ap as _e,V as ne,ah as ve,aH as Ne,q as he,aI as ge,aJ as ae}from"./index-b3d5c748.js";import{T as pe,a as Ye}from"./index-8a5c4b05.js";const[Fe,P,oe]=R("picker"),be=e=>e.find(a=>!a.disabled)||e[0];function $e(e,a){const t=e[0];if(t){if(Array.isArray(t))return"multiple";if(a.children in t)return"cascade"}return"default"}function j(e,a){a=L(a,0,e.length);for(let t=a;t<e.length;t++)if(!e[t].disabled)return t;for(let t=a-1;t>=0;t--)if(!e[t].disabled)return t;return 0}const le=(e,a,t)=>a!==void 0&&!!e.find(o=>o[t.value]===a);function W(e,a,t){const o=e.findIndex(f=>f[t.value]===a),i=j(e,o);return e[i]}function Re(e,a,t){const o=[];let i={[a.children]:e},f=0;for(;i&&i[a.children];){const r=i[a.children],h=t.value[f];if(i=we(h)?W(r,h,a):void 0,!i&&r.length){const s=be(r)[a.value];i=W(r,s,a)}f++,o.push(r)}return o}function Ae(e){const{transform:a}=window.getComputedStyle(e),t=a.slice(7,a.length-1).split(", ")[5];return Number(t)}function Ue(e){return B({text:"text",value:"value",children:"children"},e)}const ce=200,ie=300,Ke=15,[ye,J]=R("picker-column"),Te=Symbol(ye);var je=A({name:ye,props:{value:q,fields:U(Object),options:$(),readonly:Boolean,allowHtml:Boolean,optionHeight:U(Number),swipeDuration:U(q),visibleOptionNum:U(q)},emits:["change","clickOption","scrollInto"],setup(e,{emit:a,slots:t}){let o,i,f,r,h;const s=C(),v=C(),g=C(0),d=C(0),x=Ee(),y=()=>e.options.length,S=()=>e.optionHeight*(+e.visibleOptionNum-1)/2,k=m=>{let n=j(e.options,m);const c=-n*e.optionHeight,u=()=>{n>y()-1&&(n=j(e.options,m));const V=e.options[n][e.fields.value];V!==e.value&&a("change",V)};o&&c!==g.value?h=u:u(),g.value=c},D=()=>e.readonly||!e.options.length,_=m=>{o||D()||(h=null,d.value=ce,k(m),a("clickOption",e.options[m]))},I=m=>L(Math.round(-m/e.optionHeight),0,y()-1),N=O(()=>I(g.value)),Y=(m,n)=>{const c=Math.abs(m/n);m=g.value+c/.003*(m<0?-1:1);const u=I(m);d.value=+e.swipeDuration,k(u)},l=()=>{o=!1,d.value=0,h&&(h(),h=null)},T=m=>{if(!D()){if(x.start(m),o){const n=Ae(v.value);g.value=Math.min(0,n-S())}d.value=0,i=g.value,f=Date.now(),r=i,h=null}},M=m=>{if(D())return;x.move(m),x.isVertical()&&(o=!0,me(m,!0));const n=L(i+x.deltaY.value,-(y()*e.optionHeight),e.optionHeight),c=I(n);c!==N.value&&a("scrollInto",e.options[c]),g.value=n;const u=Date.now();u-f>ie&&(f=u,r=n)},w=()=>{if(D())return;const m=g.value-r,n=Date.now()-f;if(n<ie&&Math.abs(m)>Ke){Y(m,n);return}const u=I(g.value);d.value=ce,k(u),setTimeout(()=>{o=!1},0)},E=()=>{const m={height:`${e.optionHeight}px`};return e.options.map((n,c)=>{const u=n[e.fields.text],{disabled:V}=n,F=n[e.fields.value],ke={role:"button",style:m,tabindex:V?-1:0,class:[J("item",{disabled:V,selected:F===e.value}),n.className],onClick:()=>_(c)},Me={class:"van-ellipsis",[e.allowHtml?"innerHTML":"textContent"]:u};return b("li",ke,[t.option?t.option(n,c):b("div",Me,null)])})};return se(Te),X({stopMomentum:l}),Pe(()=>{const m=o?Math.floor(-g.value/e.optionHeight):e.options.findIndex(u=>u[e.fields.value]===e.value),n=j(e.options,m),c=-n*e.optionHeight;o&&n<m&&l(),g.value=c}),re("touchmove",M,{target:s}),()=>b("div",{ref:s,class:J(),onTouchstartPassive:T,onTouchend:w,onTouchcancel:w},[b("ul",{ref:v,style:{transform:`translate3d(0, ${g.value+S()}px, 0)`,transitionDuration:`${d.value}ms`,transitionProperty:d.value?"all":"none"},class:J("wrapper"),onTransitionend:l},[E()])])}});const[Le]=R("picker-toolbar"),G={title:String,cancelButtonText:String,confirmButtonText:String},xe=["cancel","confirm","title","toolbar"],ze=Object.keys(G);var De=A({name:Le,props:G,emits:["confirm","cancel"],setup(e,{emit:a,slots:t}){const o=()=>{if(t.title)return t.title();if(e.title)return b("div",{class:[P("title"),"van-ellipsis"]},[e.title])},i=()=>a("cancel"),f=()=>a("confirm"),r=()=>{var s;const v=(s=e.cancelButtonText)!=null?s:oe("cancel");if(!(!t.cancel&&!v))return b("button",{type:"button",class:[P("cancel"),te],onClick:i},[t.cancel?t.cancel():v])},h=()=>{var s;const v=(s=e.confirmButtonText)!=null?s:oe("confirm");if(!(!t.confirm&&!v))return b("button",{type:"button",class:[P("confirm"),te],onClick:f},[t.confirm?t.confirm():v])};return()=>b("div",{class:P("toolbar")},[t.toolbar?t.toolbar():[r(),o(),h()]])}});const Ge=(e,a)=>{const t=C(e());return H(e,o=>{o!==t.value&&(t.value=o)}),H(t,o=>{o!==e()&&a(o)}),t},[Oe,Q]=R("picker-group"),Ce=Symbol(Oe),qe=B({tabs:$(),activeTab:K(0),nextStepText:String,showToolbar:de},G);var ut=A({name:Oe,props:qe,emits:["confirm","cancel","update:activeTab"],setup(e,{emit:a,slots:t}){const o=Ge(()=>e.activeTab,v=>a("update:activeTab",v)),{children:i,linkChildren:f}=fe(Ce);f();const r=()=>+o.value<e.tabs.length-1&&e.nextStepText,h=()=>{r()?o.value=+o.value+1:a("confirm",i.map(v=>v.confirm()))},s=()=>a("cancel");return()=>{var v,g;let d=(g=(v=t.default)==null?void 0:v.call(t))==null?void 0:g.filter(y=>y.type!==Se).map(y=>y.type===Ie?y.children:y);d&&(d=Ve(d));const x=r()?e.nextStepText:e.confirmButtonText;return b("div",{class:Q()},[e.showToolbar?b(De,{title:e.title,cancelButtonText:e.cancelButtonText,confirmButtonText:x,onConfirm:h,onCancel:s},z(t,xe)):null,b(pe,{active:o.value,"onUpdate:active":y=>o.value=y,class:Q("tabs"),shrink:!0,animated:!0,lazyRender:!1},{default:()=>[e.tabs.map((y,S)=>b(Ye,{title:y,titleClass:Q("tab-title")},{default:()=>[d==null?void 0:d[S]]}))]})])}}});const ee=B({loading:Boolean,readonly:Boolean,allowHtml:Boolean,optionHeight:K(44),showToolbar:de,swipeDuration:K(1e3),visibleOptionNum:K(6)},G),Je=B({},ee,{columns:$(),modelValue:$(),toolbarPosition:Be("top"),columnsFieldNames:Object});var Qe=A({name:Fe,props:Je,emits:["confirm","cancel","change","scrollInto","clickOption","update:modelValue"],setup(e,{emit:a,slots:t}){const o=C(),i=C(e.modelValue.slice(0)),{parent:f}=se(Ce),{children:r,linkChildren:h}=fe(Te);h();const s=O(()=>Ue(e.columnsFieldNames)),v=O(()=>He(e.optionHeight)),g=O(()=>$e(e.columns,s.value)),d=O(()=>{const{columns:n}=e;switch(g.value){case"multiple":return n;case"cascade":return Re(n,s.value,i);default:return[n]}}),x=O(()=>d.value.some(n=>n.length)),y=O(()=>d.value.map((n,c)=>W(n,i.value[c],s.value))),S=O(()=>d.value.map((n,c)=>n.findIndex(u=>u[s.value.value]===i.value[c]))),k=(n,c)=>{if(i.value[n]!==c){const u=i.value.slice(0);u[n]=c,i.value=u}},D=()=>({selectedValues:i.value.slice(0),selectedOptions:y.value,selectedIndexes:S.value}),_=(n,c)=>{k(c,n),g.value==="cascade"&&i.value.forEach((u,V)=>{const F=d.value[V];le(F,u,s.value)||k(V,F.length?F[0][s.value.value]:void 0)}),ne(()=>{a("change",B({columnIndex:c},D()))})},I=(n,c)=>{const u={columnIndex:c,currentOption:n};a("clickOption",B(D(),u)),a("scrollInto",u)},N=()=>{r.forEach(c=>c.stopMomentum());const n=D();return ne(()=>{a("confirm",n)}),n},Y=()=>a("cancel",D()),l=()=>d.value.map((n,c)=>b(je,{value:i.value[c],fields:s.value,options:n,readonly:e.readonly,allowHtml:e.allowHtml,optionHeight:v.value,swipeDuration:e.swipeDuration,visibleOptionNum:e.visibleOptionNum,onChange:u=>_(u,c),onClickOption:u=>I(u,c),onScrollInto:u=>{a("scrollInto",{currentOption:u,columnIndex:c})}},{option:t.option})),T=n=>{if(x.value){const c={height:`${v.value}px`},u={backgroundSize:`100% ${(n-v.value)/2}px`};return[b("div",{class:P("mask"),style:u},null),b("div",{class:[Ne,P("frame")],style:c},null)]}},M=()=>{const n=v.value*+e.visibleOptionNum,c={height:`${n}px`};return!e.loading&&!x.value&&t.empty?t.empty():b("div",{ref:o,class:P("columns"),style:c},[l(),T(n)])},w=()=>{if(e.showToolbar&&!f)return b(De,ve(z(e,ze),{onConfirm:N,onCancel:Y}),z(t,xe))};H(d,n=>{n.forEach((c,u)=>{c.length&&!le(c,i.value[u],s.value)&&k(u,be(c)[s.value.value])})},{immediate:!0});let E;return H(()=>e.modelValue,n=>{!p(n,i.value)&&!p(n,E)&&(i.value=n.slice(0),E=n.slice(0))},{deep:!0}),H(i,n=>{p(n,e.modelValue)||(E=n.slice(0),a("update:modelValue",E))},{immediate:!0}),re("touchmove",me,{target:o}),X({confirm:N,getSelectedOptions:()=>y.value}),()=>{var n,c;return b("div",{class:P()},[e.toolbarPosition==="top"?w():null,e.loading?b(_e,{class:P("loading")},null):null,(n=t["columns-top"])==null?void 0:n.call(t),M(),(c=t["columns-bottom"])==null?void 0:c.call(t),e.toolbarPosition==="bottom"?w():null])}}});const Ze=he(Qe),We=B({},ee,{modelValue:$(),filter:Function,formatter:{type:Function,default:(e,a)=>a}}),Xe=Object.keys(ee);function et(e,a){if(e<0)return[];const t=Array(e);let o=-1;for(;++o<e;)t[o]=a(o);return t}const tt=(e,a)=>32-new Date(e,a-1,32).getDate(),Z=(e,a,t,o,i,f)=>{const r=et(a-e+1,h=>{const s=ge(e+h);return o(t,{text:s,value:s})});return i?i(t,r,f):r},nt=(e,a)=>e.map((t,o)=>{const i=a[o];if(i.length){const f=+i[0].value,r=+i[i.length-1].value;return ge(L(+t,f,r))}return t}),ue=new Date().getFullYear(),[at]=R("date-picker"),ot=B({},We,{columnsType:{type:Array,default:()=>["year","month","day"]},minDate:{type:Date,default:()=>new Date(ue-10,0,1),validator:ae},maxDate:{type:Date,default:()=>new Date(ue+10,11,31),validator:ae}});var lt=A({name:at,props:ot,emits:["confirm","cancel","change","update:modelValue"],setup(e,{emit:a,slots:t}){const o=C(e.modelValue),i=C(!1),f=C(),r=O(()=>i.value?e.modelValue:o.value),h=l=>l===e.minDate.getFullYear(),s=l=>l===e.maxDate.getFullYear(),v=l=>l===e.minDate.getMonth()+1,g=l=>l===e.maxDate.getMonth()+1,d=l=>{const{minDate:T,columnsType:M}=e,w=M.indexOf(l),E=r.value[w];if(E)return+E;switch(l){case"year":return T.getFullYear();case"month":return T.getMonth()+1;case"day":return T.getDate()}},x=()=>{const l=e.minDate.getFullYear(),T=e.maxDate.getFullYear();return Z(l,T,"year",e.formatter,e.filter,r.value)},y=()=>{const l=d("year"),T=h(l)?e.minDate.getMonth()+1:1,M=s(l)?e.maxDate.getMonth()+1:12;return Z(T,M,"month",e.formatter,e.filter,r.value)},S=()=>{const l=d("year"),T=d("month"),M=h(l)&&v(T)?e.minDate.getDate():1,w=s(l)&&g(T)?e.maxDate.getDate():tt(l,T);return Z(M,w,"day",e.formatter,e.filter,r.value)},k=()=>{var l;return(l=f.value)==null?void 0:l.confirm()},D=()=>o.value,_=O(()=>e.columnsType.map(l=>{switch(l){case"year":return x();case"month":return y();case"day":return S();default:return[]}}));H(o,l=>{p(l,e.modelValue)||a("update:modelValue",l)}),H(()=>e.modelValue,(l,T)=>{i.value=p(T,o.value),l=nt(l,_.value),p(l,o.value)||(o.value=l),i.value=!1},{immediate:!0});const I=(...l)=>a("change",...l),N=(...l)=>a("cancel",...l),Y=(...l)=>a("confirm",...l);return X({confirm:k,getSelectedDate:D}),()=>b(Ze,ve({ref:f,modelValue:o.value,"onUpdate:modelValue":l=>o.value=l,columns:_.value,onChange:I,onCancel:N,onConfirm:Y},z(e,Xe)),t)}});const st=he(lt);export{st as D,Ze as P,ut as s};
|