u-checkbox.js 4.4 KB
"use strict";const e=require("./props.js"),t=require("../../libs/mixin/mpMixin.js"),i=require("../../libs/mixin/mixin.js"),a=require("../../libs/function/index.js"),l=require("../../libs/function/test.js"),s=require("../../../../common/vendor.js"),n={name:"u-checkbox",mixins:[t.mpMixin,i.mixin,e.props],data:()=>({isChecked:!1,parentData:{iconSize:12,labelDisabled:null,disabled:null,shape:"square",activeColor:null,inactiveColor:null,size:18,modelValue:null,iconColor:null,placement:"row",borderBottom:!1,iconPlacement:"left"}}),computed:{elDisabled(){return""!==this.disabled?this.disabled:null!==this.parentData.disabled&&this.parentData.disabled},elLabelDisabled(){return""!==this.labelDisabled?this.labelDisabled:null!==this.parentData.labelDisabled&&this.parentData.labelDisabled},elSize(){return this.size?this.size:this.parentData.size?this.parentData.size:21},elIconSize(){return this.iconSize?this.iconSize:this.parentData.iconSize?this.parentData.iconSize:12},elActiveColor(){return this.activeColor?this.activeColor:this.parentData.activeColor?this.parentData.activeColor:"#2979ff"},elInactiveColor(){return this.inactiveColor?this.inactiveColor:this.parentData.inactiveColor?this.parentData.inactiveColor:"#c8c9cc"},elLabelColor(){return this.labelColor?this.labelColor:this.parentData.labelColor?this.parentData.labelColor:"#606266"},elShape(){return this.shape?this.shape:this.parentData.shape?this.parentData.shape:"circle"},elLabelSize(){return a.addUnit(this.labelSize?this.labelSize:this.parentData.labelSize?this.parentData.labelSize:"15")},elIconColor(){const e=this.iconColor?this.iconColor:this.parentData.iconColor?this.parentData.iconColor:"#ffffff";return this.elDisabled?this.isChecked?this.elInactiveColor:"transparent":this.isChecked?e:"transparent"},iconClasses(){let e=[];return e.push("u-checkbox__icon-wrap--"+this.elShape),this.elDisabled&&e.push("u-checkbox__icon-wrap--disabled"),this.isChecked&&this.elDisabled&&e.push("u-checkbox__icon-wrap--disabled--checked"),e},iconWrapStyle(){const e={};return e.backgroundColor=this.isChecked&&!this.elDisabled?this.elActiveColor:"#ffffff",e.borderColor=this.isChecked&&!this.elDisabled?this.elActiveColor:this.elInactiveColor,e.width=a.addUnit(this.elSize),e.height=a.addUnit(this.elSize),this.usedAlone||"right"===this.parentData.iconPlacement&&(e.marginRight=0),e},checkboxStyle(){const e={};return this.usedAlone||(this.parentData.borderBottom&&this.parentData.placement,this.parentData.borderBottom&&"column"===this.parentData.placement&&(e.paddingBottom="8px")),a.deepMerge(e,a.addStyle(this.customStyle))}},mounted(){this.init()},emits:["change","update:checked"],methods:{init(){if(this.usedAlone)this.checked&&(this.isChecked=!0);else{this.updateParentData(),this.parent;const e=this.parentData.modelValue;this.checked?this.isChecked=!0:!this.usedAlone&&l.test.array(e)&&(this.isChecked=e.some((e=>e===this.name)))}},updateParentData(){this.getParentData("u-checkbox-group")},wrapperClickHandler(e){(this.usedAlone||"right"===this.parentData.iconPlacement)&&this.iconClickHandler(e)},iconClickHandler(e){this.preventEvent(e),this.elDisabled||this.setRadioCheckedStatus()},labelClickHandler(e){this.preventEvent(e),this.elLabelDisabled||this.elDisabled||this.setRadioCheckedStatus()},emitEvent(){this.$emit("change",this.isChecked),this.usedAlone&&this.$emit("update:checked",this.isChecked),this.$nextTick((()=>{a.formValidate(this,"change")}))},setRadioCheckedStatus(){this.isChecked=!this.isChecked,this.emitEvent(),this.usedAlone||"function"==typeof this.parent.unCheckedOther&&this.parent.unCheckedOther(this)}},watch:{checked(e,t){e!==this.isChecked&&(this.isChecked=e)}}};if(!Array){s.resolveComponent("u-icon")()}Math;const r=s._export_sfc(n,[["render",function(e,t,i,a,l,n){return{a:s.p({name:"checkbox-mark",size:n.elIconSize,color:n.elIconColor}),b:s.o(((...e)=>n.iconClickHandler&&n.iconClickHandler(...e))),c:s.n(n.iconClasses),d:s.s(n.iconWrapStyle),e:s.t(e.label),f:s.o(((...e)=>n.labelClickHandler&&n.labelClickHandler(...e))),g:n.elDisabled?n.elInactiveColor:n.elLabelColor,h:n.elLabelSize,i:n.elLabelSize,j:s.r("label",{label:e.label,elDisabled:n.elDisabled}),k:s.s(n.checkboxStyle),l:s.o(((...e)=>n.wrapperClickHandler&&n.wrapperClickHandler(...e))),m:s.n(`u-checkbox-label--${l.parentData.iconPlacement}`),n:s.n(l.parentData.borderBottom&&"column"===l.parentData.placement&&"u-border-bottom")}}],["__scopeId","data-v-1a427a83"]]);wx.createComponent(r);