element-plus-jsx
Version:
基于 Element Plus 扩展 JSX 语法的组件库
36 lines (33 loc) • 1.19 kB
JavaScript
import { createVNode, mergeProps } from 'vue';
import { _get, _set } from '../../_utils/index.js';
import { defineFormFnPlugin, useFnOrRefProp } from '../../hooks.js';
import { ElRadioButton, ElRadio, ElRadioGroup } from 'element-plus';
var radioPlugins = defineFormFnPlugin(props => {
return props.formFn.map(item => {
if (!item.slots?.default && item.type === 'radio') {
const RadioEl = item.radioProps?.button ? ElRadioButton : ElRadio;
return {
...item,
slots: {
default: () => createVNode(ElRadioGroup, mergeProps({
"style": {
width: '100%'
},
"modelValue": _get(props.form.value, item.prop),
"onUpdate:modelValue": val => {
_set(props.form.value, item.prop, val);
},
"disabled": useFnOrRefProp(item.disabled, props)
}, item.radioProps), {
default: () => [item.radioOptions?.map(option => {
return createVNode(RadioEl, option, option.slots);
})],
...item.radioProps?.slots
})
}
};
}
return item;
});
});
export { radioPlugins as default };