element-plus-jsx
Version:
基于 Element Plus 扩展 JSX 语法的组件库
32 lines (29 loc) • 1.19 kB
JavaScript
import { createVNode, mergeProps } from 'vue';
import { _get, _set } from '../../_utils/index.js';
import { defineFormFnPlugin, useFnOrRefProp } from '../../hooks.js';
import { ElInputNumber, ElInputTag, ElInput } from 'element-plus';
var inputPlugins = defineFormFnPlugin(props => {
return props.formFn.map(item => {
const InputEl = item.inputProps?.type === 'input-number' ? ElInputNumber : item.inputProps?.type === 'input-tag' ? ElInputTag : ElInput;
if (!item.slots?.default && item.type === 'input') {
return {
...item,
slots: {
default: () => createVNode(InputEl, mergeProps({
"style": {
width: '100%'
},
"modelValue": _get(props.form.value, item.prop),
"onUpdate:modelValue": val => {
_set(props.form.value, item.prop, ['number', 'input-number'].includes(item.inputProps?.type) ? Number(val) : val);
},
"disabled": useFnOrRefProp(item.disabled, props),
"placeholder": item.placeholder
}, item.inputProps), item.inputProps?.slots)
}
};
}
return item;
});
});
export { inputPlugins as default };