vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.71 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:"VxeRadio",props:{modelValue:[String,Number,Boolean],checkedValue:{type:[String,Number,Boolean],default:void 0},title:[String,Number],content:[String,Number],disabled:{type:Boolean,default:null},name:String,strict:{type:Boolean,default:()=>(0,_ui.getConfig)().radio.strict},size:{type:String,default:()=>(0,_ui.getConfig)().radio.size||(0,_ui.getConfig)().size},label:{type:[String,Number,Boolean],default:null}},emits:["update:modelValue","change"],setup(i,e){let{slots:r,emit:l}=e,a=(0,_vue.inject)("$xeForm",null),n=(0,_vue.inject)("xeFormItemInfo",null),d=(0,_vue.inject)("$xeRadioGroup",null);var t=_xeUtils.default.uniqueId(),u=(0,_vue.reactive)({});let o={xID:t,props:i,context:e,reactData:u},c=(0,_ui.useSize)(i).computeSize,s=(0,_vue.computed)(()=>{var e,t=i.disabled;if(null===t&&d)return e=d.getComputeMaps().computeIsDisabled,e.value;return t}),v=(0,_vue.computed)(()=>(d||i).name),p=(0,_vue.computed)(()=>(d?d.props:i).strict),_=(0,_vue.computed)(()=>{var{label:e,checkedValue:t}=i,e=_xeUtils.default.isUndefined(t)?e:t;return d?d.props.modelValue===e:i.modelValue===e}),f=(e,t)=>{var u=i.content;d?d.handleChecked({label:e,checkedValue:e,checkedLabel:u},t):(l("update:modelValue",e),b("change",{value:e,label:e,checkedValue:e,checkedLabel:u},t),a&&n&&a.triggerItemEvent(t,n.itemConfig.field,e))},m=e=>{var t,u;s.value||({label:u,checkedValue:t}=i,u=_xeUtils.default.isUndefined(t)?u:t,f(u,e))},g=e=>{var t=s.value,u=p.value;t||u||({label:t,checkedValue:u}=i,(_xeUtils.default.isUndefined(u)?t:u)===(d?d.props:i).modelValue&&f(null,e))},b=(e,t,u)=>{l(e,(0,_ui.createEvent)(u,{$radio:o},t))};t={dispatchEvent:b};Object.assign(o,t,{});return o.renderVN=()=>{var{label:e,checkedValue:t}=i,e=_xeUtils.default.isUndefined(t)?e:t,t=c.value,u=s.value,l=v.value,a=_.value;return(0,_vue.h)("label",{key:e,class:["vxe-radio vxe-radio--default",{["size--"+t]:t,"is--checked":a,"is--disabled":u}],title:i.title},[(0,_vue.h)("input",{class:"vxe-radio--input",type:"radio",name:l,checked:a,disabled:u,onChange:m,onClick:g}),(0,_vue.h)("span",{class:["vxe-radio--icon",a?(0,_ui.getIcon)().RADIO_CHECKED:u?(0,_ui.getIcon)().RADIO_DISABLED_UNCHECKED:(0,_ui.getIcon)().RADIO_UNCHECKED]}),(0,_vue.h)("span",{class:"vxe-radio--label"},r.default?r.default({}):(0,_utils.getFuncText)(i.content))])},o},render(){return this.renderVN()}});