vxe-pc-ui
Version:
A vue based PC component library
53 lines (45 loc) • 1.52 kB
text/typescript
import { computed } from 'vue'
import XEUtils from 'xe-utils'
import type { VxeGlobalRendererHandles, VxeFormDesignDefines } from '../../../../types'
import type { VxeTableDefines } from '../../../../types/components/table'
export function useSubtableView <D = any, P = Record<string, any>> (props: {
renderOpts: VxeGlobalRendererHandles.RenderFormDesignWidgetSubtableEditViewOptions
renderParams: VxeGlobalRendererHandles.RenderFormDesignWidgetSubtableEditViewParams
}) {
const currWidget = computed<VxeFormDesignDefines.WidgetObjItem<P>>(() => {
const { renderParams } = props
return renderParams.widget
})
const currColumn = computed<VxeTableDefines.ColumnInfo<D>>(() => {
const { renderParams } = props
return renderParams.column
})
const currRow = computed<D>(() => {
const { renderParams } = props
return renderParams.row
})
const widgetOptions = computed<P>(() => {
const { renderParams } = props
const { widget } = renderParams
return widget ? widget.options : {}
})
const cellModel = computed({
get () {
const { renderParams } = props
const { row, column } = renderParams
return XEUtils.get(row, column.field)
},
set (value) {
const { renderParams } = props
const { row, column } = renderParams
return XEUtils.set(row, column.field, value)
}
})
return {
currColumn,
currRow,
currWidget,
widgetOptions,
cellModel
}
}