You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
3.5 KiB

import{d as S,n as P,e as G,Y as w,t as _,I as E,h as C,c as y,k as R,u as B,q as z,m as p,Z as q,D as A,p as F,w as K}from"./index-f3701452.js";import{d as x,r as N,f as v,b,O,aP as U}from"./index-f4658ae7.js";const D={name:S,disabled:Boolean,iconSize:P,modelValue:S,checkedColor:String,labelPosition:String,labelDisabled:Boolean};var Y=x({props:G({},D,{bem:w(Function),role:String,shape:String,parent:Object,checked:Boolean,bindGroup:_,indeterminate:{type:Boolean,default:null}}),emits:["click","toggle"],setup(e,{emit:i,slots:r}){const o=N(),t=n=>{if(e.parent&&e.bindGroup)return e.parent.props[n]},l=v(()=>{if(e.parent&&e.bindGroup){const n=t("disabled")||e.disabled;if(e.role==="checkbox"){const s=t("modelValue").length,u=t("max"),k=u&&s>=+u;return n||k&&!e.checked}return n}return e.disabled}),m=v(()=>t("direction")),a=v(()=>{const n=e.checkedColor||t("checkedColor");if(n&&e.checked&&!l.value)return{borderColor:n,backgroundColor:n}}),d=v(()=>e.shape||t("shape")||"round"),h=n=>{const{target:s}=n,u=o.value,k=u===s||(u==null?void 0:u.contains(s));!l.value&&(k||!e.labelDisabled)&&i("toggle"),i("click",n)},f=()=>{var n,s;const{bem:u,checked:k,indeterminate:V}=e,g=e.iconSize||t("iconSize");return b("div",{ref:o,class:u("icon",[d.value,{disabled:l.value,checked:k,indeterminate:V}]),style:d.value!=="dot"?{fontSize:C(g)}:{width:C(g),height:C(g),borderColor:(n=a.value)==null?void 0:n.borderColor}},[r.icon?r.icon({checked:k,disabled:l.value}):d.value!=="dot"?b(E,{name:V?"minus":"success",style:a.value},null):b("div",{class:u("icon--dot__icon"),style:{backgroundColor:(s=a.value)==null?void 0:s.backgroundColor}},null)])},c=()=>{if(r.default)return b("span",{class:e.bem("label",[e.labelPosition,{disabled:l.value}])},[r.default()])};return()=>{const n=e.labelPosition==="left"?[c(),f()]:[f(),c()];return b("div",{role:e.role,class:e.bem([{disabled:l.value,"label-disabled":e.labelDisabled},m.value]),tabindex:l.value?void 0:0,"aria-checked":e.checked,onClick:h},[n])}}});const[I,j]=y("checkbox-group"),H={max:P,shape:p("round"),disabled:Boolean,iconSize:P,direction:String,modelValue:q(),checkedColor:String},$=Symbol(I);var Q=x({name:I,props:H,emits:["change","update:modelValue"],setup(e,{emit:i,slots:r}){const{children:o,linkChildren:t}=R($),l=a=>i("update:modelValue",a),m=(a={})=>{typeof a=="boolean"&&(a={checked:a});const{checked:d,skipDisabled:h}=a,c=o.filter(n=>n.props.bindGroup?n.props.disabled&&h?n.checked.value:d!=null?d:!n.checked.value:!1).map(n=>n.name);l(c)};return O(()=>e.modelValue,a=>i("change",a)),B({toggleAll:m}),z(()=>e.modelValue),t({props:e,updateValue:l}),()=>{var a;return b("div",{class:j([e.direction])},[(a=r.default)==null?void 0:a.call(r)])}}});const[L,T]=y("checkbox"),X=G({},D,{shape:String,bindGroup:_,indeterminate:{type:Boolean,default:null}});var Z=x({name:L,props:X,emits:["change","update:modelValue"],setup(e,{emit:i,slots:r}){const{parent:o}=A($),t=a=>{const{name:d}=e,{max:h,modelValue:f}=o.props,c=f.slice();if(a)!(h&&c.length>=+h)&&!c.includes(d)&&(c.push(d),e.bindGroup&&o.updateValue(c));else{const n=c.indexOf(d);n!==-1&&(c.splice(n,1),e.bindGroup&&o.updateValue(c))}},l=v(()=>o&&e.bindGroup?o.props.modelValue.indexOf(e.name)!==-1:!!e.modelValue),m=(a=!l.value)=>{o&&e.bindGroup?t(a):i("update:modelValue",a),e.indeterminate!==null&&i("change",a)};return O(()=>e.modelValue,a=>{e.indeterminate===null&&i("change",a)}),B({toggle:m,props:e,checked:l}),z(()=>e.modelValue),()=>b(Y,U({bem:T,role:"checkbox",parent:o,checked:l.value,onToggle:m},e),F(r,["default","icon"]))}});const W=K(Z);export{W as C,Y as a,D as c,Q as s};