UNPKG

vxe-pc-ui

Version:
80 lines (73 loc) 2.65 kB
import { PropType, defineComponent, h, inject } from 'vue' import { getI18n } from '@vxe-ui/core' import { useWidgetName } from '../../form-design/src/use' import { WidgetSubtableFormObjVO } from './subtable-data' import VxeFormComponent from '../../form/src/form' import VxeFormItemComponent from '../../form/src/form-item' import VxeInputComponent from '../../input/src/input' import VxeSwitchComponent from '../../switch/src/switch' import type { VxeGlobalRendererHandles, VxeFormDesignConstructor, VxeFormDesignPrivateMethods } from '../../../types' export const WidgetSubtableFormComponent = defineComponent({ props: { renderOpts: { type: Object as PropType<VxeGlobalRendererHandles.RenderFormDesignWidgetFormViewOptions>, default: () => ({}) }, renderParams: { type: Object as PropType<VxeGlobalRendererHandles.RenderFormDesignWidgetFormViewParams<WidgetSubtableFormObjVO>>, default: () => ({}) } }, emits: [], setup (props) { const $xeFormDesign = inject<(VxeFormDesignConstructor & VxeFormDesignPrivateMethods) | null>('$xeFormDesign', null) if (!$xeFormDesign) { return () => [] } const { computeKebabCaseName } = useWidgetName(props) return () => { const { renderParams } = props const { widget } = renderParams const { options } = widget const kebabCaseName = computeKebabCaseName.value return h(VxeFormComponent, { class: `vxe-form-design--widget-${kebabCaseName}-form`, vertical: true, span: 24, titleBold: true, titleOverflow: true, data: options }, { default () { return [ h(VxeFormItemComponent, { title: getI18n('vxe.formDesign.widgetProp.name') }, { default () { return h(VxeInputComponent, { modelValue: widget.title, 'onUpdate:modelValue' (val) { widget.title = val } }) } }), h(VxeFormItemComponent, { title: getI18n('vxe.formDesign.widgetProp.subtableProp.showCheckbox'), field: 'showCheckbox' }, { default () { return h(VxeSwitchComponent, { modelValue: options.showCheckbox, 'onUpdate:modelValue' (val) { options.showCheckbox = val } }) } }) ] } }) } } })