@aplus-frontend/ui
Version:
2 lines (1 loc) • 3.38 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),z=require("@aplus-frontend/antdv");require("../config-provider/index.js");require("../hooks/index.js");const f=require("lodash-unified"),N=require("./context.js"),S=require("./checked.svg.js"),V=require("./style/index.js"),q=require("../config-provider/hooks/use-namespace.js"),P=require("../hooks/useControllableValue.js"),_=["src"],w=e.defineComponent({name:"CheckCard",__name:"index",props:{bordered:{type:Boolean,default:!0},disabled:{type:Boolean},loading:{type:Boolean},size:{default:"middle"},stopPropagation:{type:[Boolean,Function],default:!1},indicatorSize:{default:void 0},style:{default:void 0},checked:{type:Boolean,default:void 0},"onUpdate:checked":{},defaultChecked:{type:Boolean},value:{type:[String,Number,Boolean]},title:{},content:{}},emits:["update:checked"],setup(m,{emit:v}){const o=m,{b:k,m:c,e:u,em:d}=q.useNamespace("check-card"),g=V.default("check-card"),h=v,l=N.useInjectCheckCard(),{value:r,updateValue:i}=P.useControllableValue(o,h,{valuePropName:"checked",defaultValuePropName:"defaultChecked"}),a=e.computed(()=>{const t={...o},n=e.unref(l);return n&&(t.disabled=t.disabled||n.disabled,t.bordered=t.bordered||n.bordered,t.loading=t.loading||n.loading,t.size=t.size||n.size,t.indicatorSize=t.indicatorSize||n.indicatorSize,t.stopPropagation=t.stopPropagation||n.stopPropagation,t.style=t.style?t.style:n.style),t}),y=e.computed(()=>{const t=e.unref(a);return[k(),c(t.size),e.unref(r)?c("checked"):null,t.bordered?c("bordered"):null,t.disabled?c("disabled"):null,g.value]}),b=e.computed(()=>{const t=e.unref(a);return{...t.style||{},"--check-card-indicator-size":`${t.indicatorSize||14}px`}}),s=e.computed(()=>{const t=o.title;if(!t)return;const n=f.isFunction(t)?t(e.unref(r)):e.createVNode(e.Fragment,null,[t]);return e.createVNode("div",{class:[u("title"),a.value.disabled?d("title","disabled"):null]},[n])}),p=e.computed(()=>{if(!o.content)return;const t=f.isFunction(o.content)?o.content(e.unref(r)):o.content;return e.createVNode("div",{class:[u("content"),a.value.disabled?d("content","disabled"):null]},[t])});function C(t){const n=e.unref(a).stopPropagation;return n?n===!0?t.target!==t.currentTarget:n(t):!1}function B(t){C(t)||a.value.loading||a.value.disabled||(l.value?l.value?.toggleOption?.(o.value):i(!e.unref(r)))}return e.watch(()=>l.value,t=>{if(!t)return;const n=t.multiple?(t.value||[]).includes(o.value):t.value===o.value;i(n)},{immediate:!0}),e.watchEffect(t=>{l.value?.registerValue?.(o.value),t(()=>l.value?.cancelValue?.(o.value))}),(t,n)=>(e.openBlock(),e.createElementBlock("div",{style:e.normalizeStyle(b.value),class:e.normalizeClass(y.value),onClick:e.withModifiers(B,["stop"])},[a.value.loading?(e.openBlock(),e.createBlock(e.unref(z.Skeleton),{key:0,active:""})):e.renderSlot(t.$slots,"default",{key:1,checked:e.unref(r)},()=>[s.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{key:0})):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.value),{key:1})):e.createCommentVNode("",!0)]),e.unref(r)?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(e.unref(u)("checked-icon"))},[e.createElementVNode("img",{src:e.unref(S.default)},null,8,_)],2)):e.createCommentVNode("",!0)],6))}});exports.default=w;