UNPKG

plus-pro-components

Version:

Page level components developed based on Element Plus.

78 lines (73 loc) 2.25 kB
'use strict'; 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;