UNPKG

plus-pro-components

Version:

Page level components developed based on Element Plus.

74 lines (71 loc) 2.23 kB
import { defineComponent, ref, watch, isVNode, openBlock, createBlock, resolveDynamicComponent, mergeProps, normalizeProps } from 'vue'; import '../../utils/index.mjs'; import { isString } from '../../utils/is.mjs'; var _sfc_main = /* @__PURE__ */ 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 = ref(); 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 (isVNode(dynamicComponent)) { const payload = props.renderType === "form" ? { modelValue: state.value, ...props.customFieldProps, ...dynamicComponent.props } : { ...props.customFieldProps, ...dynamicComponent.props }; return { ...dynamicComponent, props: payload }; } else if (isString(dynamicComponent)) { return dynamicComponent; } }; return (_ctx, _cache) => { return _ctx.renderType === "form" ? (openBlock(), createBlock(resolveDynamicComponent(renderComponent), mergeProps({ key: 0, modelValue: state.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => state.value = $event) }, _ctx.customFieldProps), null, 16, ["modelValue"])) : (openBlock(), createBlock( resolveDynamicComponent(renderComponent), normalizeProps(mergeProps({ key: 1 }, _ctx.customFieldProps)), null, 16 /* FULL_PROPS */ )); }; } }); export { _sfc_main as default };