vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.1 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_ui=require("../../ui"),_xeUtils=_interopRequireDefault(require("xe-utils")),_checkbox=_interopRequireDefault(require("./checkbox"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeCheckboxGroup",props:{modelValue:Array,options:Array,optionProps:Object,disabled:{type:Boolean,default:null},max:{type:[String,Number],default:null},size:{type:String,default:()=>(0,_ui.getConfig)().checkboxGroup.size||(0,_ui.getConfig)().size}},emits:["update:modelValue","change"],setup(a,e){const{slots:o,emit:i}=e,n=(0,_vue.inject)("$xeForm",null),c=(0,_vue.inject)("xeFormItemInfo",null);var u=_xeUtils.default.uniqueId(),t=(0,_vue.reactive)({}),r=(0,_vue.computed)(()=>{var e=a["disabled"];return null===e?!!n&&(n.props.readonly||n.props.disabled):e}),l=(0,_vue.computed)(()=>{var{modelValue:e,max:u}=a;return!!u&&(e?e.length:0)>=_xeUtils.default.toNumber(u)});const d=(0,_vue.computed)(()=>Object.assign({},a.optionProps)),s=(0,_vue.computed)(()=>{return d.value.label||"label"}),p=(0,_vue.computed)(()=>{return d.value.value||"value"}),v=(0,_vue.computed)(()=>{return d.value.disabled||"disabled"}),_={computeIsMaximize:l,computeIsDisabled:r},m={xID:u,props:a,context:e,reactData:t,getComputeMaps:()=>_};(0,_ui.useSize)(a);Object.assign(m,{dispatchEvent:(e,u,t)=>{i(e,(0,_ui.createEvent)(t,{$checkboxGroup:m},u))}},{handleChecked(e,u){var{checked:t,label:r}=e,l=a.modelValue||[],o=l.indexOf(r);t?-1===o&&l.push(r):l.splice(o,1),i("update:modelValue",l),m.dispatchEvent("change",Object.assign({},e,{checklist:l,value:l}),u),n&&c&&n.triggerItemEvent(u,c.itemConfig.field,l)}});l=()=>{var e=a["options"],u=o.default;const t=p.value,r=s.value,l=v.value;return(0,_vue.h)("div",{class:"vxe-checkbox-group"},u?u({}):e?e.map(e=>(0,_vue.h)(_checkbox.default,{key:e[t],label:e[t],content:e[r],disabled:e[l]})):[])};return(0,_vue.provide)("$xeCheckboxGroup",m),m.renderVN=l}});