vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.79 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_utils=require("../../ui/src/utils"),_ui=require("../../ui");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeCheckbox",props:{modelValue:[String,Number,Boolean],label:{type:[String,Number],default:null},indeterminate:Boolean,title:[String,Number],checkedValue:{type:[String,Number,Boolean],default:!0},uncheckedValue:{type:[String,Number,Boolean],default:!1},content:[String,Number],disabled:{type:Boolean,default:null},size:{type:String,default:()=>(0,_ui.getConfig)().checkbox.size||(0,_ui.getConfig)().size}},emits:["update:modelValue","change"],setup(r,e){let{slots:o,emit:a}=e,i=(0,_vue.inject)("$xeForm",null),n=(0,_vue.inject)("xeFormItemInfo",null),s=(0,_vue.inject)("$xeCheckboxGroup",null);var t=_xeUtils.default.uniqueId(),u=(0,_vue.reactive)({});let d={xID:t,props:r,context:e,reactData:u},c={},v=(0,_ui.useSize)(r).computeSize,p=(0,_vue.computed)(()=>s?_xeUtils.default.includes(s.props.modelValue,r.label):r.modelValue===r.checkedValue),_=(0,_vue.computed)(()=>{var e,t,u,l=r.disabled,a=p.value;if(null===l&&s)return{computeIsDisabled:e,computeIsReadonly:t,computeIsMaximize:u}=s.getComputeMaps(),e=e.value,t=t.value,u=u.value,e||t||u&&!a;return l}),m=e=>{var t,{checkedValue:u,uncheckedValue:l}=r;_.value||(u={checked:t=e.target.checked,value:t=t?u:l,label:r.label},s?s.handleChecked(u,e):(a("update:modelValue",t),c.dispatchEvent("change",u,e),i&&n&&i.triggerItemEvent(e,n.itemConfig.field,t)))};c={dispatchEvent:(e,t,u)=>{a(e,(0,_ui.createEvent)(u,{$checkbox:d},t))}},Object.assign(d,c);return d.renderVN=()=>{var{label:e,content:t}=r,u=v.value,l=_.value,a=p.value,i=!a&&r.indeterminate,n=o.default;if(s){var c=s.getComputeMaps().computeIsReadonly,c=c.value;if(c)return a?(0,_vue.h)("label",{class:["vxe-checkbox vxe-checkbox--view",{["size--"+u]:u,"is--readonly":c}]},[(0,_vue.h)("span",{class:"vxe-checkbox--label"},n?n({}):(0,_utils.getFuncText)(t))]):(0,_ui.renderEmptyElement)(d)}return(0,_vue.h)("label",{key:e,class:["vxe-checkbox vxe-checkbox--default",{["size--"+u]:u,"is--indeterminate":i,"is--disabled":l,"is--checked":a}],title:r.title},[(0,_vue.h)("input",{class:"vxe-checkbox--input",type:"checkbox",disabled:l,checked:a,onChange:m}),(0,_vue.h)("span",{class:["vxe-checkbox--icon",i?(0,_ui.getIcon)().CHECKBOX_INDETERMINATE:a?(0,_ui.getIcon)().CHECKBOX_CHECKED:l?(0,_ui.getIcon)().CHECKBOX_DISABLED_UNCHECKED:(0,_ui.getIcon)().CHECKBOX_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-checkbox--label"},n?n({}):(0,_utils.getFuncText)(t))])},d},render(){return this.renderVN()}});