vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.92 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")),_ui=require("../../ui"),_radio=_interopRequireDefault(require("./radio")),_button=_interopRequireDefault(require("./button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function createInternalData(){return{}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeRadioGroup",props:{modelValue:[String,Number,Boolean],disabled:{type:Boolean,default:null},type:String,options:Array,optionProps:Object,strict:{type:Boolean,default:()=>(0,_ui.getConfig)().radioGroup.strict},size:{type:String,default:()=>(0,_ui.getConfig)().radioGroup.size||(0,_ui.getConfig)().size},defaultConfig:Object},emits:["update:modelValue","change","default-change"],setup(n,e){const{slots:d,emit:a}=e,r=(0,_vue.inject)("$xeForm",null),o=(0,_vue.inject)("xeFormItemInfo",null);var t=_xeUtils.default.uniqueId();const s=(0,_ui.useSize)(n)["computeSize"];var u=(0,_vue.reactive)({});const l=createInternalData();var i=(0,_vue.computed)(()=>{var e=n["disabled"];return null===e?!!r&&(r.props.readonly||r.props.disabled):e});const c=(0,_vue.computed)(()=>Object.assign({},n.defaultConfig)),p={computeIsDisabled:i},v={xID:t,props:n,context:e,reactData:u,name:_xeUtils.default.uniqueId("xe_group_"),getComputeMaps:()=>p},_=(0,_vue.computed)(()=>Object.assign({},n.optionProps)),f=(0,_vue.computed)(()=>{return _.value.label||"label"}),m=(0,_vue.computed)(()=>{return _.value.value||"value"}),g=(0,_vue.computed)(()=>{return _.value.disabled||"disabled"}),b=e=>{a("update:modelValue",e)},x=(e,t,u)=>{a(e,(0,_ui.createEvent)(u,{$radioGroup:v},t))};i={dispatchEvent:x};const h=e=>{var t=l["isLoaded"],u=c.value;const a=m.value;if(!t){t=u["selectMode"];if(0<e.length&&_xeUtils.default.eqNull(n.modelValue)){if("first"===t||"last"===t){const r=_xeUtils.default[t](e);r&&(0,_vue.nextTick)(()=>{var e;_xeUtils.default.eqNull(n.modelValue)&&(e=r[a],b(e),x("default-change",{value:e},null))})}l.isLoaded=!0}}return(0,_vue.nextTick)()};Object.assign(v,i,{handleChecked(e,t){var{checkedValue:e,checkedLabel:u}=e,a=e;b(a),x("change",{value:a,label:a,checkedValue:e,checkedLabel:u},t),r&&o&&r.triggerItemEvent(t,o.itemConfig.field,a)}});return(0,_vue.watch)(()=>n.options,e=>{h(e||[])}),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=n["options"];e&&h(e)})}),(0,_vue.onUnmounted)(()=>{_xeUtils.default.assign(l,createInternalData())}),(0,_vue.provide)("$xeRadioGroup",v),v.renderVN=()=>{var{options:e,type:t}=n,u=s.value,a=d.default;const r=m.value,o=f.value,l=g.value,i=("button"===t?_button:_radio).default;return(0,_vue.h)("div",{class:["vxe-radio-group",{["size--"+u]:u}]},a?a({}):e?e.map(e=>(0,_vue.h)(i,{key:e[r],checkedValue:e[r],content:e[o],disabled:e[l]})):[])},v},render(){return this.renderVN()}});