plus-pro-components
Version:
Page level components developed based on Element Plus.
78 lines (73 loc) • 2.25 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../utils/index.js');
var is = require('../../utils/is.js');
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{
name: "PlusRender"
},
__name: "index",
props: {
renderType: { default: void 0 },
callbackValue: { default: "" },
customFieldProps: { default: () => ({}) },
render: {},
params: { default: () => ({}) },
handleChange: {}
},
setup(__props) {
const props = __props;
const state = vue.ref();
vue.watch(
() => props.callbackValue,
(val) => {
state.value = val;
},
{
flush: "post",
immediate: true
}
);
const renderComponent = () => {
if (!props.render) return;
const params = { ...props.params };
const dynamicComponent = props.renderType === "form" ? props.render(
state.value,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
props.handleChange,
params
) : props.render(state.value, params);
if (vue.isVNode(dynamicComponent)) {
const payload = props.renderType === "form" ? {
modelValue: state.value,
...props.customFieldProps,
...dynamicComponent.props
} : {
...props.customFieldProps,
...dynamicComponent.props
};
return {
...dynamicComponent,
props: payload
};
} else if (is.isString(dynamicComponent)) {
return dynamicComponent;
}
};
return (_ctx, _cache) => {
return _ctx.renderType === "form" ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent), vue.mergeProps({
key: 0,
modelValue: state.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => state.value = $event)
}, _ctx.customFieldProps), null, 16, ["modelValue"])) : (vue.openBlock(), vue.createBlock(
vue.resolveDynamicComponent(renderComponent),
vue.normalizeProps(vue.mergeProps({ key: 1 }, _ctx.customFieldProps)),
null,
16
/* FULL_PROPS */
));
};
}
});
exports.default = _sfc_main;