vxe-pc-ui
Version:
A vue based PC component library
53 lines (45 loc) • 1.55 kB
text/typescript
import { computed } from 'vue'
import type { VxeGlobalRendererHandles, VxeFormDesignDefines } from '../../../../types'
export function useWidgetView <P = any> (props: {
renderOpts: VxeGlobalRendererHandles.RenderFormDesignWidgetViewOptions | VxeGlobalRendererHandles.RenderFormDesignWidgetFormViewOptions
renderParams: VxeGlobalRendererHandles.RenderFormDesignWidgetViewParams | VxeGlobalRendererHandles.RenderFormDesignWidgetFormViewParams
}) {
const currWidget = computed<VxeFormDesignDefines.WidgetObjItem<P>>(() => {
const { renderParams } = props
return renderParams.widget
})
const isEditMode = computed(() => {
const { renderParams } = props
return renderParams.isEditMode || false
})
const isViewMode = computed(() => {
const { renderParams } = props
return renderParams.isViewMode || false
})
const widgetOptions = computed<P>(() => {
const { renderParams } = props
const { widget } = renderParams
return widget ? widget.options : {}
})
const widgetModel = computed({
get () {
const { renderParams } = props
const { $formView, widget } = renderParams
return $formView ? $formView.getItemValue(widget) : null
},
set (value) {
const { renderParams } = props
const { $formView, widget } = renderParams
if ($formView) {
$formView.setItemValue(widget, value)
}
}
})
return {
currWidget,
widgetOptions,
widgetModel,
isEditMode,
isViewMode
}
}