vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.39 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_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,_vue.defineComponent)({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(i,e){const{slots:n,emit:a}=e,c=(0,_vue.inject)("$xeForm",null),r=(0,_vue.inject)("xeFormItemInfo",null),o=(0,_vue.inject)("$xeCheckboxGroup",null);var t=_xeUtils.default.uniqueId(),u=(0,_vue.reactive)({});const l={xID:t,props:i,context:e,reactData:u};let d={};const s=(0,_ui.useSize)(i)["computeSize"],v=(0,_vue.computed)(()=>o?_xeUtils.default.includes(o.props.modelValue,i.label):i.modelValue===i.checkedValue),p=(0,_vue.computed)(()=>{var e,t,u=i["disabled"],l=v.value;if(null===u&&o)return{computeIsDisabled:e,computeIsMaximize:t}=o.getComputeMaps(),e=e.value,t=t.value,e||t&&!l;return u}),_=e=>{var t,{checkedValue:u,uncheckedValue:l}=i;p.value||(u={checked:t=e.target.checked,value:t=t?u:l,label:i.label},o?o.handleChecked(u,e):(a("update:modelValue",t),d.dispatchEvent("change",u,e),c&&r&&c.triggerItemEvent(e,r.itemConfig.field,t)))};d={dispatchEvent:(e,t,u)=>{a(e,(0,_ui.createEvent)(u,{$checkbox:l},t))}},Object.assign(l,d);return l.renderVN=()=>{var e=i["label"],t=s.value,u=p.value,l=v.value,a=!l&&i.indeterminate;return(0,_vue.h)("label",{key:e,class:["vxe-checkbox",{["size--"+t]:t,"is--indeterminate":a,"is--disabled":u,"is--checked":l}],title:i.title},[(0,_vue.h)("input",{class:"vxe-checkbox--input",type:"checkbox",disabled:u,checked:l,onChange:_}),(0,_vue.h)("span",{class:["vxe-checkbox--icon",a?(0,_ui.getIcon)().CHECKBOX_INDETERMINATE:l?(0,_ui.getIcon)().CHECKBOX_CHECKED:(0,_ui.getIcon)().CHECKBOX_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-checkbox--label"},n.default?n.default({}):(0,_utils.getFuncText)(i.content))])},l},render(){return this.renderVN()}});