@kp-ui/lowcode 2.15.0-beta.7 → 2.16.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/install.js +17 -15
- package/install.js.map +1 -1
- package/package.json +4 -7
- package/src/components/FormRender/FormContainer.vue.js +55 -0
- package/src/components/FormRender/FormContainer.vue.js.map +1 -0
- package/src/components/FormRender/FormContainer.vue2.js +5 -0
- package/src/components/FormRender/FormContainer.vue2.js.map +1 -0
- package/src/components/FormRender/index.vue.js +2 -2
- package/src/components/FormRender/index.vue2.js +28 -30
- package/src/components/FormRender/index.vue2.js.map +1 -1
- package/src/components/FormRender/useFormContext.js +116 -109
- package/src/components/FormRender/useFormContext.js.map +1 -1
- package/src/components/{designer.js → form-designer/designer.js} +76 -71
- package/src/components/form-designer/designer.js.map +1 -0
- package/src/components/form-designer/form-widget/RenderDesignerWigetList.vue.js +1 -1
- package/src/components/form-designer/form-widget/RenderDesignerWigetList.vue.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/useTableWidget.js +143 -138
- package/src/components/form-designer/form-widget/container-widget/useTableWidget.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/vf-box-widget.vue.js +2 -2
- package/src/components/form-designer/form-widget/container-widget/vf-box-widget.vue2.js +18 -19
- package/src/components/form-designer/form-widget/container-widget/vf-box-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/container-widget/vf-dialog-widget.vue.js +2 -2
- package/src/components/form-designer/form-widget/container-widget/vf-dialog-widget.vue2.js +22 -16
- package/src/components/form-designer/form-widget/container-widget/vf-dialog-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue.js +8 -0
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue.js.map +1 -0
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue2.js +58 -0
- package/src/components/form-designer/form-widget/field-widget/bpmn-editor-widget copy.vue2.js.map +1 -0
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue.js +1 -1
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue2.js +66 -54
- package/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/index.js +1 -1
- package/src/components/form-designer/form-widget/field-widget/index.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/rich-editor-widget.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/field-widget/useField.js +140 -140
- package/src/components/form-designer/form-widget/field-widget/useField.js.map +1 -1
- package/src/components/form-designer/form-widget/index.vue.js +2 -2
- package/src/components/form-designer/form-widget/index.vue2.js +56 -47
- package/src/components/form-designer/form-widget/index.vue2.js.map +1 -1
- package/src/components/form-designer/form-widget/useFormDesigner.js +34 -0
- package/src/components/form-designer/form-widget/useFormDesigner.js.map +1 -0
- package/src/components/form-designer/index.vue.js +77 -74
- package/src/components/form-designer/index.vue.js.map +1 -1
- package/src/components/form-designer/setting-panel/form-setting.vue.js +2 -2
- package/src/components/form-designer/setting-panel/form-setting.vue2.js +100 -126
- package/src/components/form-designer/setting-panel/form-setting.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/index.vue.js +1 -1
- package/src/components/form-designer/setting-panel/index.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/index.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/option-items-setting.vue.js +2 -2
- package/src/components/form-designer/setting-panel/option-items-setting.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/option-items-setting.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/boxModel-editor.vue.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/boxModel-editor.vue2.js +255 -201
- package/src/components/form-designer/setting-panel/property-editor/boxModel-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue2.js +45 -39
- package/src/components/form-designer/setting-panel/property-editor/button-list-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-customClass-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-customClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-dsEnabled-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-dsEnabled-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue.js +2 -2
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-showButtonsColumn-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-data-table/data-table-tableColumns-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue.js +2 -2
- package/src/components/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue.js +32 -0
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue.js +32 -0
- package/src/components/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonLabel-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/height-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue.js +5 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue2.js +38 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/left-editor.vue2.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue.js +5 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue2.js +38 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/top-editor.vue2.js.map +1 -0
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue2.js +10 -10
- package/src/components/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/customClass-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/customClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/event-handler/onTableChange-editor.vue2.js +4 -4
- package/src/components/form-designer/setting-panel/property-editor/event-handler/onTableChange-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-slider/range-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-slider/range-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-switch/switch-defaultValue-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/field-switch/switch-defaultValue-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/index.js +178 -176
- package/src/components/form-designer/setting-panel/property-editor/index.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/labelIconClass-editor.vue2.js +29 -18
- package/src/components/form-designer/setting-panel/property-editor/labelIconClass-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/multiple-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/optionItems-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/optionItems-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/rightSlotCss-editor.vue2.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/rightSlotCss-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/type-editor.vue2.js.map +1 -1
- package/src/components/form-designer/setting-panel/property-editor/useEditor.js +1 -1
- package/src/components/form-designer/setting-panel/property-editor/useEditor.js.map +1 -1
- package/src/components/form-designer/setting-panel/propertyRegister.js +12 -12
- package/src/components/form-designer/setting-panel/propertyRegister.js.map +1 -1
- package/src/components/form-designer/toolbar-panel/PreviewDialog.vue.js +1 -1
- package/src/components/form-designer/toolbar-panel/PreviewDialog.vue.js.map +1 -1
- package/src/components/form-designer/toolbar-panel/index.vue.js +2 -2
- package/src/components/form-designer/toolbar-panel/index.vue2.js +177 -137
- package/src/components/form-designer/toolbar-panel/index.vue2.js.map +1 -1
- package/src/components/form-designer/widget-panel/PanelItemDrag.vue.js +50 -0
- package/src/components/form-designer/widget-panel/PanelItemDrag.vue.js.map +1 -0
- package/src/components/form-designer/widget-panel/basicFields/input.js +4 -2
- package/src/components/form-designer/widget-panel/basicFields/input.js.map +1 -1
- package/src/components/form-designer/widget-panel/containers/vf-box.js +1 -4
- package/src/components/form-designer/widget-panel/containers/vf-box.js.map +1 -1
- package/src/components/form-designer/widget-panel/containers/vf-dialog.js +34 -10
- package/src/components/form-designer/widget-panel/containers/vf-dialog.js.map +1 -1
- package/src/components/form-designer/widget-panel/index.vue.js +2 -2
- package/src/components/form-designer/widget-panel/index.vue2.js +34 -74
- package/src/components/form-designer/widget-panel/index.vue2.js.map +1 -1
- package/src/components/form-render/container-items/data-table-widget.vue.js +3 -3
- package/src/components/form-render/container-items/data-table-widget.vue2.js +65 -64
- package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
- package/src/components/form-render/dynamic-dialog.vue.js +79 -83
- package/src/components/form-render/dynamic-dialog.vue.js.map +1 -1
- package/src/components/public/ActionButtonListDialog.vue.js +2 -2
- package/src/components/public/ActionButtonListDialog.vue2.js +117 -96
- package/src/components/public/ActionButtonListDialog.vue2.js.map +1 -1
- package/src/components/public/ActionButtonListRender.vue.js +17 -15
- package/src/components/public/ActionButtonListRender.vue.js.map +1 -1
- package/src/components/public/ActionButtonListRender.vue2.js +48 -38
- package/src/components/public/ActionButtonListRender.vue2.js.map +1 -1
- package/src/components/public/ConfigView/CustomPageRender.vue.js +58 -0
- package/src/components/public/ConfigView/CustomPageRender.vue.js.map +1 -0
- package/src/components/public/ConfigView/CustomPageRender.vue2.js +5 -0
- package/src/components/public/ConfigView/CustomPageRender.vue2.js.map +1 -0
- package/src/components/public/CustomerModal/CustomerModal.vue2.js +63 -56
- package/src/components/public/CustomerModal/CustomerModal.vue2.js.map +1 -1
- package/src/constants/EditorTypeEnum.js +1 -1
- package/src/constants/EditorTypeEnum.js.map +1 -1
- package/src/constants/WidgetTypeEnum.js +3 -4
- package/src/constants/WidgetTypeEnum.js.map +1 -1
- package/src/hooks/useDataHttp.js +8 -7
- package/src/hooks/useDataHttp.js.map +1 -1
- package/src/hooks/useLowcode.js.map +1 -1
- package/src/lang/en-US.js +3 -1
- package/src/lang/en-US.js.map +1 -1
- package/src/lang/zh-CN.js +5 -5
- package/src/lang/zh-CN.js.map +1 -1
- package/src/utils/util.js +26 -35
- package/src/utils/util.js.map +1 -1
- package/stats.html +1 -1
- package/styles/style.css +1 -1
- package/src/components/FormRender/FormContainer.js +0 -52
- package/src/components/FormRender/FormContainer.js.map +0 -1
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue.js +0 -8
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue.js.map +0 -1
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue2.js +0 -43
- package/src/components/bi-widget/echartBar/echart-bar-widget.vue2.js.map +0 -1
- package/src/components/bi-widget/echartBar/echart-bar.js +0 -35
- package/src/components/bi-widget/echartBar/echart-bar.js.map +0 -1
- package/src/components/bi-widget/index.js +0 -13
- package/src/components/bi-widget/index.js.map +0 -1
- package/src/components/designer.js.map +0 -1
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue.js +0 -26
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue.js.map +0 -1
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue2.js +0 -5
- package/src/components/form-designer/form-widget/RenderDesignerPC.vue2.js.map +0 -1
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue.js +0 -8
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue.js.map +0 -1
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue2.js +0 -68
- package/src/components/form-designer/form-widget/bi/RenderDesignerBI.vue2.js.map +0 -1
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue.js +0 -8
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue.js.map +0 -1
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue2.js +0 -136
- package/src/components/form-designer/form-widget/bi/RenderDesignerBIWigetList.vue2.js.map +0 -1
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue.js +0 -8
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue.js.map +0 -1
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue2.js +0 -153
- package/src/components/form-designer/form-widget/bi/WidgetContextMenu.vue2.js.map +0 -1
- package/src/components/form-designer/form-widget/bi/useRuler.js +0 -66
- package/src/components/form-designer/form-widget/bi/useRuler.js.map +0 -1
- package/src/components/form-designer/setting-panel/panel/PanelItemDrag.vue.js +0 -51
- package/src/components/form-designer/setting-panel/panel/PanelItemDrag.vue.js.map +0 -1
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue.js +0 -51
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue.js.map +0 -1
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue2.js +0 -5
- package/src/components/form-designer/setting-panel/panel/PanelItemDragForBI.vue2.js.map +0 -1
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue.js +0 -5
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue.js.map +0 -1
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue2.js +0 -71
- package/src/components/form-designer/setting-panel/property-editor/dsEnabled-editor.vue2.js.map +0 -1
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue.js +0 -5
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue.js.map +0 -1
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue2.js +0 -81
- package/src/components/form-designer/setting-panel/property-editor/echart-bar-editor.vue2.js.map +0 -1
- package/src/components/form-render/SubmitButtonRender.vue.js +0 -92
- package/src/components/form-render/SubmitButtonRender.vue.js.map +0 -1
- package/src/components/form-render/SubmitButtonRender.vue2.js +0 -5
- package/src/components/form-render/SubmitButtonRender.vue2.js.map +0 -1
- package/src/constants/LayoutTypeEnum.js +0 -5
- package/src/constants/LayoutTypeEnum.js.map +0 -1
- package/src/hooks/useDesigner.js +0 -51
- package/src/hooks/useDesigner.js.map +0 -1
- /package/src/components/form-designer/{setting-panel/panel → widget-panel}/PanelItemDrag.vue2.js +0 -0
- /package/src/components/form-designer/{setting-panel/panel → widget-panel}/PanelItemDrag.vue2.js.map +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useField.js","sources":["../../../../../../src/components/form-designer/form-widget/field-widget/useField.ts"],"sourcesContent":["import {\n ref,\n computed,\n inject,\n onMounted,\n onBeforeUnmount,\n getCurrentInstance,\n Ref,\n toRaw\n} from 'vue';\nimport { deepClone } from '@/utils/util';\nimport FormValidators from '@/utils/validators';\nimport { isArray, eq, get } from 'lodash-es';\nimport { FormConfig, Widget } from '@/types/schema';\nimport { useI18n } from '@/utils/i18n';\nimport { useEmitter } from '@/utils/useEmitter';\nimport { useAppRef } from '../../useAppRef';\nimport { useExecFunction } from 'tmgc2-share';\n\nexport type FieldProps<T = Widget> = {\n widget: T;\n field: T;\n designer?: any;\n parentWidget?: Widget | null;\n parentList?: T[] | null;\n indexOfParentList?: number;\n subFormRowIndex?: number;\n subFormRowId?: string;\n subFormColIndex?: number;\n};\n\n/**\n * 表单字段 Hook,提供表单字段的通用功能\n * @returns 表单字段相关的状态和方法\n */\nexport function useField<T extends Widget>(props: FieldProps<T>) {\n // 注入依赖\n const formConfig = inject<Ref<FormConfig>>('formConfig', ref({} as FormConfig));\n const formModel = inject<Ref<any>>('formData', ref({}));\n const getReadMode = inject('getReadMode', () => false);\n const isSubFormField = inject('isSubFormField', false);\n\n const getSubFormName = inject('getSubFormName', () => '');\n const designState = inject('designState', false);\n\n const { registerToRefList, getWidgetRef, getFormRef, unregisterFromRefList } = useAppRef();\n const { executeFunction, asyncExecuteFunction } = useExecFunction();\n\n const { i18nt, i18n2t } = useI18n();\n const { field } = props;\n\n const fieldEditor = ref<InstanceType<any>>(null);\n // 状态\n const oldFieldValue = ref<any>(null);\n const fieldReadonlyFlag = ref<boolean>(false);\n const loading = ref<boolean>(false);\n const rules = ref<any[]>([]);\n const uploadHeaders = ref<Record<string, any>>({});\n const uploadData = ref<Record<string, any>>({});\n const customToolbar = ref<any>(null);\n const instance = getCurrentInstance();\n const { dispatch } = useEmitter();\n\n const size = computed(() => {\n if (field?.options?.size) {\n return field.options.size;\n }\n return formConfig.value.size || 'middle';\n });\n\n const subFormName = computed(() => {\n return getSubFormName ? getSubFormName() : '';\n });\n\n const fieldModel = computed({\n get() {\n return get(formModel.value, getPropName.value);\n },\n set(value) {\n syncUpdateFormModel(value);\n }\n });\n\n const subFormData = computed(() => formModel.value[subFormName.value]);\n\n const isReadMode = computed(() => {\n return getReadMode() ? true : fieldReadonlyFlag.value;\n });\n\n /**\n * 处理字段隐藏逻辑\n * @returns 是否隐藏\n */\n const handleHidden = computed(() => {\n if (designState) {\n return false;\n }\n const { onHidden, hidden } = props.field.options;\n\n if (hidden) return true;\n if (onHidden) {\n try {\n const result = executeFunction({\n functionBody: onHidden\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return false;\n }\n } catch {\n return false;\n }\n }\n return false;\n });\n\n /**\n * 处理字段禁用逻辑\n * @returns 是否禁用\n */\n const handleDisabled = computed(() => {\n if (designState) {\n return false;\n }\n const { onDisabled, disabled } = props.field.options;\n if (disabled) return true;\n if (onDisabled) {\n try {\n const result = executeFunction({\n functionBody: onDisabled\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return false;\n }\n } catch (error) {\n console.log({ error });\n return false;\n }\n }\n return false;\n });\n\n /**\n * 在数组中查找元素\n * @param arrayObject 数组对象\n * @param element 要查找的元素\n * @returns 找到的索引,未找到返回-1\n */\n const findInArray = (arrayObject: any[], element: any) => {\n if (!Array.isArray(arrayObject)) {\n return -1;\n }\n\n let foundIdx = -1;\n arrayObject.forEach((aItem, aIdx) => {\n if (aItem === element) {\n foundIdx = aIdx;\n }\n });\n\n return foundIdx;\n };\n\n /**\n * 获取属性名称\n * @returns 属性名称\n */\n const getPropName = computed(() => {\n if (isSubFormField && !designState) {\n return (\n subFormName.value +\n '.' +\n props.subFormRowIndex +\n '.' +\n props.field.options.name +\n ''\n );\n } else {\n return props.field.options.name;\n }\n });\n\n /**\n * 处理组件创建事件\n */\n async function handleOnCreated() {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onCreated) {\n await asyncExecuteFunction({\n functionBody: props.field.options.onCreated\n });\n }\n }\n\n /**\n * 处理组件挂载事件\n */\n async function handleOnMounted() {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n if (props.field.options.onMounted) {\n await asyncExecuteFunction({\n functionBody: props.field.options.onMounted\n });\n }\n }\n\n /**\n * 刷新默认值\n */\n const refreshDefaultValue = () => {\n fieldModel.value = props.field.options.defaultValue;\n };\n\n /**\n * 清除字段规则\n */\n const clearFieldRules = () => {\n if (!props.field.formItemFlag) {\n return;\n }\n\n rules.value.splice(0, rules.value.length); // 清空已有\n };\n\n /**\n * 构建字段规则\n */\n const buildFieldRules = () => {\n if (!props?.field.formItemFlag || props?.field.options.hidden) {\n return;\n }\n\n rules.value.splice(0, rules.value.length); // 清空已有\n if (props.field.options.required) {\n rules.value.push({\n required: true,\n // trigger: ['blur', 'change'],\n trigger: [\n 'blur'\n ] /* 去掉change事件触发校验,change事件触发时formModel数据尚未更新,导致radio/checkbox必填校验出错!! */,\n message: props.field.options.requiredHint || i18nt('render.hint.fieldRequired')\n });\n }\n\n if (props.field.options.validation) {\n const vldName = props.field.options.validation;\n if (FormValidators[vldName]) {\n rules.value.push({\n validator: FormValidators[vldName],\n trigger: ['blur', 'change'],\n label: props.field.options.label,\n errorMsg: props.field.options.validationHint\n });\n } else {\n rules.value.push({\n validator: FormValidators['regExp'],\n trigger: ['blur', 'change'],\n regExp: vldName,\n label: props.field.options.label,\n errorMsg: props.field.options.validationHint\n });\n }\n }\n\n if (props.field.options.onValidate) {\n const customFn = (rule: any, value: any) => {\n return executeFunction({\n functionBody: props.field.options.onValidate,\n params: { rule, value },\n keys: ['rule', 'value']\n });\n };\n rules.value.push({\n validator: customFn,\n trigger: ['blur'],\n label: props.field.options.label\n });\n }\n };\n\n /**\n * 禁用字段值变动触发表单校验\n */\n const disableChangeValidate = () => {\n if (!rules.value) {\n return;\n }\n\n rules.value.forEach(rule => {\n if (rule.trigger) {\n rule.trigger.splice(0, rule.trigger.length);\n }\n });\n };\n\n /**\n * 启用字段值变动触发表单校验\n */\n const enableChangeValidate = () => {\n if (!rules.value) {\n return;\n }\n\n rules.value.forEach(rule => {\n if (rule.trigger) {\n rule.trigger.push('blur');\n rule.trigger.push('change');\n }\n });\n };\n\n /**\n * 禁用列表中的选项\n * @param optionList 选项列表\n * @param optionValue 选项值\n */\n const disableOptionOfList = (optionList: any[], optionValue: any) => {\n if (optionList && optionList.length > 0) {\n optionList.forEach(opt => {\n if (opt.value === optionValue) {\n opt.disabled = true;\n }\n });\n }\n };\n\n /**\n * 启用列表中的选项\n * @param optionList 选项列表\n * @param optionValue 选项值\n */\n const enableOptionOfList = (optionList: any[], optionValue: any) => {\n if (optionList && optionList.length > 0) {\n optionList.forEach(opt => {\n if (opt.value === optionValue) {\n opt.disabled = false;\n }\n });\n }\n };\n\n /**\n * 发送字段数据变更事件\n * @param newValue 新值\n * @param oldValue 旧值\n */\n const emitFieldDataChange = (newValue: any, oldValue: any) => {\n if (newValue) {\n newValue = newValue.target ? newValue.target.value : newValue;\n }\n\n if (!instance) return;\n\n /* 必须用dispatch向指定父组件派发消息!! */\n dispatch('VFormRender', 'fieldChange', [\n props.field.options.name,\n newValue,\n oldValue,\n subFormName.value,\n props.subFormRowIndex\n ]);\n };\n\n /**\n * 同步更新表单模型\n * @param value 值\n */\n\n const syncUpdateFormModel = value => {\n if (designState) {\n dispatch('VFormDesigner', 'fieldChange', {\n fieldName: getPropName.value,\n value,\n field: field\n });\n //设计状态不触发事件\n return;\n }\n /* 主动触发表单的单个字段校验,用于清除字段可能存在的校验错误提示 */\n dispatch('VFormRender', 'fieldValidation', [getPropName.value]);\n const oldValue = toRaw(fieldModel.value);\n dispatch('VFormRender', 'fieldChange', {\n fieldName: getPropName.value,\n value,\n oldValue: oldValue,\n field: field\n });\n handleOnChange(value, oldValue);\n };\n\n /**\n * 处理焦点自定义事件\n * @param event 事件对象\n */\n const handleFocusCustomEvent = (event: any) => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n oldFieldValue.value = deepClone(fieldModel.value); // 保存修改change之前的值\n\n if (props.field.options.onFocus) {\n executeFunction({\n functionBody: props.field.options.onFocus,\n params: { event },\n keys: ['event']\n });\n }\n };\n\n /**\n * 处理失焦自定义事件\n * @param event 事件对象\n */\n const handleBlurCustomEvent = (event: any) => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onBlur) {\n executeFunction({\n functionBody: props.field.options.onBlur,\n params: { event },\n keys: ['event']\n });\n }\n };\n\n /**\n * 发送附加按钮点击事件\n */\n const emitAppendButtonClick = () => {\n if (designState) {\n // 设计状态不触发点击事件\n return;\n }\n\n if (props.field.options.onAppendButtonClick) {\n executeFunction({\n functionBody: props.field.options.onAppendButtonClick\n });\n }\n };\n\n /**\n * 处理变更事件\n * @param val 新值\n * @param oldVal 旧值\n * @param ops 选项\n */\n const handleOnChange = (val: any, oldVal: any) => {\n // 自定义onChange事件\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onChange) {\n executeFunction({\n functionBody: props.field.options.onChange,\n params: {\n value: val,\n oldValue: oldVal,\n subFormData: subFormData.value,\n rowId: props.subFormRowId\n },\n keys: ['value', 'oldValue', 'subFormData', 'rowId']\n });\n }\n };\n\n /**\n * 处理点击事件\n */\n const onClick = async () => {\n if (designState) {\n // 设计状态不触发点击事件\n return;\n }\n\n if (props.field.options.onClick) {\n return await asyncExecuteFunction({\n functionBody: props.field.options.onClick\n });\n }\n };\n\n /**\n * 处理图标点击事件\n */\n const handleClickIcon = async () => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n if (handleDisabled.value) {\n return;\n }\n if (field.options.onClickIcon) {\n await asyncExecuteFunction({\n functionBody: field.options.onClickIcon\n });\n }\n };\n\n /**\n * 获取字段编辑器\n * @returns 字段编辑器\n */\n const getFieldEditor = () => {\n // 获取内置的el表单组件\n return fieldEditor.value;\n };\n\n /**\n * 显示文件列表\n * @param list 文件列表\n * @returns 格式化后的文件列表\n */\n const showFileList = (list: any) => {\n if (typeof list === 'string') {\n list = JSON.parse(list);\n }\n if (!isArray(list)) return [];\n const res = list.map((item: any, uid: number) => ({\n ...item,\n name: item.fileName,\n uid\n }));\n return res;\n };\n\n /**\n * 设置值\n * @param newValue 新值\n * @param disableChangeEvent 是否禁用变更事件\n */\n const setValue = (newValue: any, disableChangeEvent = false) => {\n if (newValue) {\n newValue = newValue.target ? newValue.target.value : newValue;\n }\n if (eq(fieldModel.value, newValue)) return;\n\n const oldValue = deepClone(fieldModel.value);\n if (props.field.type === 'file-upload') {\n newValue = showFileList(newValue || []);\n // TODO\n } else if (props.field.type === 'code-editor') {\n const fieldEditor = getFieldEditor();\n if (fieldEditor) {\n fieldEditor.setValue(newValue);\n }\n }\n fieldModel.value = newValue;\n if (!disableChangeEvent) {\n emitFieldDataChange(newValue, oldValue);\n }\n };\n\n /**\n * 获取值\n * @returns 字段值\n */\n const getValue = () => {\n return fieldModel.value;\n };\n\n /**\n * 重置字段\n */\n const resetField = () => {\n const defaultValue = props.field.options.defaultValue;\n setValue(defaultValue);\n\n // 清空上传组件文件列表\n if (props.field.type === 'picture-upload' || props.field.type === 'file-upload') {\n fieldModel.value.splice(0, fieldModel.value.length);\n // handleChangeEvent(fieldModel.value);\n }\n };\n\n /**\n * 设置只读\n * @param flag 是否只读\n */\n const setReadonly = (flag: boolean) => {\n props.field.options.readonly = flag;\n };\n\n /**\n * 设置禁用\n * @param flag 是否禁用\n */\n const setDisabled = (flag: boolean) => {\n props.field.options.disabled = flag;\n };\n\n /**\n * 设置附加按钮可见性\n * @param flag 是否可见\n */\n const setAppendButtonVisible = (flag: boolean) => {\n props.field.options.appendButton = flag;\n };\n\n /**\n * 设置附加按钮禁用状态\n * @param flag 是否禁用\n */\n const setAppendButtonDisabled = (flag: boolean) => {\n props.field.options.appendButtonDisabled = flag;\n };\n\n /**\n * 设置隐藏\n * @param flag 是否隐藏\n */\n const setHidden = (flag: boolean) => {\n props.field.options.hidden = flag;\n\n if (flag) {\n // 清除组件校验规则\n clearFieldRules();\n } else {\n // 重建组件校验规则\n buildFieldRules();\n }\n };\n\n /**\n * 设置必填\n * @param flag 是否必填\n */\n const setRequired = (flag: boolean) => {\n props.field.options.required = flag;\n buildFieldRules();\n\n if (!designState && !flag) {\n // 清除必填校验提示\n clearValidate();\n }\n };\n\n /**\n * 清除字段校验提示\n */\n const clearValidate = () => {\n if (designState) {\n return;\n }\n\n getFormRef().clearValidate(getPropName.value);\n };\n\n /**\n * 获取VForm上下文\n * @returns VForm上下文\n */\n const getVfCtx = () => {\n return getFormRef().vfCtx;\n };\n\n /**\n * 设置标签\n * @param newLabel 新标签\n */\n const setLabel = (newLabel: string) => {\n props.field.options.label = newLabel;\n };\n\n /**\n * 聚焦\n */\n const focus = () => {\n const fieldEditor = getFieldEditor();\n if (fieldEditor && fieldEditor.focus) {\n fieldEditor.focus();\n }\n };\n\n /**\n * 设置上传头\n * @param name 名称\n * @param value 值\n */\n const setUploadHeader = (name: string, value: any) => {\n uploadHeaders.value[name] = value;\n };\n\n /**\n * 设置上传数据\n * @param name 名称\n * @param value 值\n */\n const setUploadData = (name: string, value: any) => {\n uploadData.value[name] = value;\n };\n\n /**\n * 设置或取消设置字段只读查看模式\n * @param readonlyFlag 只读标志\n */\n const setReadMode = (readonlyFlag = true) => {\n fieldReadonlyFlag.value = readonlyFlag;\n };\n\n /**\n * 动态增加自定义css样式\n * @param className 类名\n */\n const addCssClass = (className: string) => {\n if (!props.field.options.customClass) {\n props.field.options.customClass = [className];\n } else {\n props.field.options.customClass.push(className);\n }\n };\n const customClass = computed(() => props.field.options.customClass);\n\n /**\n * 动态移除自定义css样式\n * @param className 类名\n */\n const removeCssClass = (className: string) => {\n if (!props.field.options.customClass) {\n return;\n }\n\n let foundIdx = -1;\n props.field.options.customClass.map((cc: string, idx: number) => {\n if (cc === className) {\n foundIdx = idx;\n }\n });\n if (foundIdx > -1) {\n props.field.options.customClass.splice(foundIdx, 1);\n }\n };\n\n const getEl = () => {\n return fieldEditor.value?.$el;\n };\n\n /**\n * 设置组件选项\n * @param optionName 选项名称\n * @param optionValue 选项值\n */\n const setWidgetOption = (optionName: string, optionValue: any) => {\n // 通用组件选项修改API\n props.field.options[optionName] = optionValue;\n };\n\n const options = computed({\n get() {\n return props.field.options;\n },\n set(value) {\n props.field.options = value;\n }\n });\n\n const initFieldModel = () => {\n dispatch('VFormRender', 'fieldChange', {\n fieldName: getPropName.value,\n value: props.field.options.defaultValue,\n oldValue: toRaw(fieldModel.value),\n field: field\n });\n };\n\n // 生命周期钩子\n onMounted(async () => {\n initFieldModel();\n await registerToRefList();\n\n await handleOnCreated();\n\n await handleOnMounted();\n buildFieldRules();\n });\n\n onBeforeUnmount(() => {\n unregisterFromRefList();\n });\n\n const defineExposed = {\n i18nt,\n options,\n proxy: instance?.proxy,\n field,\n widget: field,\n fieldModel,\n fieldEditor,\n isReadMode,\n setWidgetOption,\n setReadonly,\n setDisabled,\n getVfCtx,\n setLabel,\n getEl,\n setReadMode,\n resetField,\n setValue,\n getValue,\n getFieldEditor,\n getFormRef,\n getWidgetRef,\n setHidden,\n addCssClass,\n removeCssClass,\n setRequired,\n clearValidate,\n focus\n };\n\n return {\n asyncExecuteFunction,\n executeFunction,\n options,\n customClass,\n fieldEditor,\n // 状态\n fieldModel,\n oldFieldValue,\n fieldReadonlyFlag,\n loading,\n rules,\n uploadHeaders,\n uploadData,\n designState,\n customToolbar,\n i18nt,\n i18n2t,\n size,\n field,\n // 计算属性\n formConfig,\n subFormName,\n\n formModel,\n isReadMode,\n\n // 方法\n handleHidden,\n handleDisabled,\n findInArray,\n getPropName,\n refreshDefaultValue,\n clearFieldRules,\n buildFieldRules,\n disableChangeValidate,\n enableChangeValidate,\n disableOptionOfList,\n enableOptionOfList,\n emitFieldDataChange,\n syncUpdateFormModel,\n handleFocusCustomEvent,\n handleBlurCustomEvent,\n emitAppendButtonClick,\n handleOnChange,\n onClick,\n handleClickIcon,\n getFieldEditor,\n showFileList,\n\n setAppendButtonVisible,\n setAppendButtonDisabled,\n\n focus,\n setUploadHeader,\n setUploadData,\n\n isSubFormField,\n defineExposed\n };\n}\n"],"names":["useField","props","formConfig","inject","ref","formModel","getReadMode","isSubFormField","getSubFormName","designState","registerToRefList","getWidgetRef","getFormRef","unregisterFromRefList","useAppRef","executeFunction","asyncExecuteFunction","useExecFunction","i18nt","i18n2t","useI18n","field","fieldEditor","oldFieldValue","fieldReadonlyFlag","loading","rules","uploadHeaders","uploadData","customToolbar","instance","getCurrentInstance","dispatch","useEmitter","size","computed","_a","subFormName","fieldModel","get","getPropName","value","syncUpdateFormModel","subFormData","isReadMode","handleHidden","onHidden","hidden","result","handleDisabled","onDisabled","disabled","error","findInArray","arrayObject","element","foundIdx","aItem","aIdx","handleOnCreated","handleOnMounted","refreshDefaultValue","clearFieldRules","buildFieldRules","vldName","FormValidators","customFn","rule","disableChangeValidate","enableChangeValidate","disableOptionOfList","optionList","optionValue","opt","enableOptionOfList","emitFieldDataChange","newValue","oldValue","toRaw","handleOnChange","handleFocusCustomEvent","event","deepClone","handleBlurCustomEvent","emitAppendButtonClick","val","oldVal","onClick","handleClickIcon","getFieldEditor","showFileList","list","isArray","item","uid","setValue","disableChangeEvent","eq","getValue","resetField","defaultValue","setReadonly","flag","setDisabled","setAppendButtonVisible","setAppendButtonDisabled","setHidden","setRequired","clearValidate","getVfCtx","setLabel","newLabel","focus","setUploadHeader","name","setUploadData","setReadMode","readonlyFlag","addCssClass","className","customClass","removeCssClass","cc","idx","getEl","setWidgetOption","optionName","options","initFieldModel","onMounted","onBeforeUnmount","defineExposed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useField.js","sources":["../../../../../../src/components/form-designer/form-widget/field-widget/useField.ts"],"sourcesContent":["import {\n ref,\n computed,\n inject,\n onMounted,\n onBeforeUnmount,\n getCurrentInstance,\n Ref,\n nextTick,\n toRaw\n} from 'vue';\nimport { deepClone } from '@/utils/util';\nimport FormValidators from '@/utils/validators';\nimport { isArray, eq, get } from 'lodash-es';\nimport { FormConfig, Widget } from '@/types/schema';\nimport { useI18n } from '@/utils/i18n';\nimport { useEmitter } from '@/utils/useEmitter';\nimport { useAppRef } from '../../useAppRef';\nimport { useExecFunction } from 'tmgc2-share';\n\nexport type FieldProps<T = Widget> = {\n widget: T;\n field: T;\n designer?: any;\n parentWidget?: Widget | null;\n parentList?: T[] | null;\n indexOfParentList?: number;\n subFormRowIndex?: number;\n subFormRowId?: string;\n subFormColIndex?: number;\n};\n\nexport type LowCodeContext = {};\n\n/**\n * 表单字段 Hook,提供表单字段的通用功能\n * @returns 表单字段相关的状态和方法\n */\nexport function useField<T extends Widget>(props: FieldProps<T>) {\n // 注入依赖\n const getFormConfig = inject('getFormConfig', () => ({}));\n\n const formModel = inject<Ref<any>>('formData', ref({}));\n const getReadMode = inject('getReadMode', () => false);\n const isSubFormField = inject('isSubFormField', false);\n\n const getSubFormName = inject('getSubFormName', () => '');\n const designState = inject('designState', false);\n\n const { registerToRefList, getWidgetRef, getFormRef, unregisterFromRefList } = useAppRef();\n const { executeFunction, asyncExecuteFunction } = useExecFunction();\n\n const { i18nt, i18n2t } = useI18n();\n const { field } = props;\n\n const fieldEditor = ref<InstanceType<any>>(null);\n // 状态\n const oldFieldValue = ref<any>(null);\n const fieldReadonlyFlag = ref<boolean>(false);\n const loading = ref<boolean>(false);\n const rules = ref<any[]>([]);\n const uploadHeaders = ref<Record<string, any>>({});\n const uploadData = ref<Record<string, any>>({});\n const customToolbar = ref<any>(null);\n const instance = getCurrentInstance();\n const { dispatch } = useEmitter();\n\n // 计算属性\n const formConfig = computed(() => {\n return getFormConfig() as FormConfig;\n });\n\n const size = computed(() => {\n if (field?.options?.size) {\n return field.options.size;\n }\n return formConfig.value.size || 'middle';\n });\n\n const subFormName = computed(() => {\n return getSubFormName ? getSubFormName() : '';\n });\n\n const fieldModel = computed({\n get() {\n return get(formModel.value, getPropName.value);\n },\n set(value = null) {\n syncUpdateFormModel(value);\n }\n });\n\n const subFormData = computed(() => formModel.value[subFormName.value]);\n\n const isReadMode = computed(() => {\n return getReadMode() ? true : fieldReadonlyFlag.value;\n });\n\n /**\n * 处理字段隐藏逻辑\n * @returns 是否隐藏\n */\n const handleHidden = computed(() => {\n if (designState) {\n return false;\n }\n const { onHidden, hidden } = props.field.options;\n\n if (hidden) return true;\n if (onHidden) {\n try {\n const result = executeFunction({\n functionBody: onHidden\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return false;\n }\n } catch {\n return false;\n }\n }\n return false;\n });\n\n /**\n * 处理字段禁用逻辑\n * @returns 是否禁用\n */\n const handleDisabled = computed(() => {\n if (designState) {\n return false;\n }\n const { onDisabled, disabled } = props.field.options;\n if (disabled) return true;\n if (onDisabled) {\n try {\n const result = executeFunction({\n functionBody: onDisabled\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return false;\n }\n } catch (error) {\n console.log({ error });\n return false;\n }\n }\n return false;\n });\n\n /**\n * 在数组中查找元素\n * @param arrayObject 数组对象\n * @param element 要查找的元素\n * @returns 找到的索引,未找到返回-1\n */\n const findInArray = (arrayObject: any[], element: any) => {\n if (!Array.isArray(arrayObject)) {\n return -1;\n }\n\n let foundIdx = -1;\n arrayObject.forEach((aItem, aIdx) => {\n if (aItem === element) {\n foundIdx = aIdx;\n }\n });\n\n return foundIdx;\n };\n\n /**\n * 获取属性名称\n * @returns 属性名称\n */\n const getPropName = computed(() => {\n if (isSubFormField && !designState) {\n return (\n subFormName.value +\n '.' +\n props.subFormRowIndex +\n '.' +\n props.field.options.name +\n ''\n );\n } else {\n return props.field.options.name;\n }\n });\n\n /**\n * 处理组件创建事件\n */\n async function handleOnCreated() {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onCreated) {\n await asyncExecuteFunction({\n functionBody: props.field.options.onCreated\n });\n }\n }\n\n /**\n * 处理组件挂载事件\n */\n async function handleOnMounted() {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n if (props.field.options.onMounted) {\n await asyncExecuteFunction({\n functionBody: props.field.options.onMounted\n });\n }\n }\n\n /**\n * 刷新默认值\n */\n const refreshDefaultValue = () => {\n fieldModel.value = props.field.options.defaultValue;\n };\n\n /**\n * 清除字段规则\n */\n const clearFieldRules = () => {\n if (!props.field.formItemFlag) {\n return;\n }\n\n rules.value.splice(0, rules.value.length); // 清空已有\n };\n\n /**\n * 构建字段规则\n */\n const buildFieldRules = () => {\n if (!props?.field.formItemFlag || props?.field.options.hidden) {\n return;\n }\n\n rules.value.splice(0, rules.value.length); // 清空已有\n if (props.field.options.required) {\n rules.value.push({\n required: true,\n // trigger: ['blur', 'change'],\n trigger: [\n 'blur'\n ] /* 去掉change事件触发校验,change事件触发时formModel数据尚未更新,导致radio/checkbox必填校验出错!! */,\n message: props.field.options.requiredHint || i18nt('render.hint.fieldRequired')\n });\n }\n\n if (props.field.options.validation) {\n const vldName = props.field.options.validation;\n if (FormValidators[vldName]) {\n rules.value.push({\n validator: FormValidators[vldName],\n trigger: ['blur', 'change'],\n label: props.field.options.label,\n errorMsg: props.field.options.validationHint\n });\n } else {\n rules.value.push({\n validator: FormValidators['regExp'],\n trigger: ['blur', 'change'],\n regExp: vldName,\n label: props.field.options.label,\n errorMsg: props.field.options.validationHint\n });\n }\n }\n\n if (props.field.options.onValidate) {\n const customFn = (rule: any, value: any) => {\n return executeFunction({\n functionBody: props.field.options.onValidate,\n params: { rule, value },\n keys: ['rule', 'value']\n });\n };\n rules.value.push({\n validator: customFn,\n trigger: ['blur'],\n label: props.field.options.label\n });\n }\n };\n\n /**\n * 禁用字段值变动触发表单校验\n */\n const disableChangeValidate = () => {\n if (!rules.value) {\n return;\n }\n\n rules.value.forEach(rule => {\n if (rule.trigger) {\n rule.trigger.splice(0, rule.trigger.length);\n }\n });\n };\n\n /**\n * 启用字段值变动触发表单校验\n */\n const enableChangeValidate = () => {\n if (!rules.value) {\n return;\n }\n\n rules.value.forEach(rule => {\n if (rule.trigger) {\n rule.trigger.push('blur');\n rule.trigger.push('change');\n }\n });\n };\n\n /**\n * 禁用列表中的选项\n * @param optionList 选项列表\n * @param optionValue 选项值\n */\n const disableOptionOfList = (optionList: any[], optionValue: any) => {\n if (optionList && optionList.length > 0) {\n optionList.forEach(opt => {\n if (opt.value === optionValue) {\n opt.disabled = true;\n }\n });\n }\n };\n\n /**\n * 启用列表中的选项\n * @param optionList 选项列表\n * @param optionValue 选项值\n */\n const enableOptionOfList = (optionList: any[], optionValue: any) => {\n if (optionList && optionList.length > 0) {\n optionList.forEach(opt => {\n if (opt.value === optionValue) {\n opt.disabled = false;\n }\n });\n }\n };\n\n /**\n * 发送字段数据变更事件\n * @param newValue 新值\n * @param oldValue 旧值\n */\n const emitFieldDataChange = (newValue: any, oldValue: any) => {\n if (newValue) {\n newValue = newValue.target ? newValue.target.value : newValue;\n }\n\n if (!instance) return;\n\n /* 必须用dispatch向指定父组件派发消息!! */\n dispatch('VFormRender', 'fieldChange', [\n props.field.options.name,\n newValue,\n oldValue,\n subFormName.value,\n props.subFormRowIndex\n ]);\n };\n\n /**\n * 同步更新表单模型\n * @param value 值\n */\n\n const syncUpdateFormModel = value => {\n if (designState) {\n dispatch('VFormDesigner', 'fieldChange', {\n fieldName: getPropName.value,\n value,\n field: field\n });\n //设计状态不触发事件\n return;\n }\n /* 主动触发表单的单个字段校验,用于清除字段可能存在的校验错误提示 */\n dispatch('VFormRender', 'fieldValidation', [getPropName.value]);\n const oldValue = toRaw(fieldModel.value);\n dispatch('VFormRender', 'fieldChange', {\n fieldName: getPropName.value,\n value,\n oldValue: oldValue,\n field: field\n });\n handleOnChange(value, oldValue);\n };\n\n /**\n * 处理焦点自定义事件\n * @param event 事件对象\n */\n const handleFocusCustomEvent = (event: any) => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n oldFieldValue.value = deepClone(fieldModel.value); // 保存修改change之前的值\n\n if (props.field.options.onFocus) {\n executeFunction({\n functionBody: props.field.options.onFocus,\n params: { event },\n keys: ['event']\n });\n }\n };\n\n /**\n * 处理失焦自定义事件\n * @param event 事件对象\n */\n const handleBlurCustomEvent = (event: any) => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onBlur) {\n executeFunction({\n functionBody: props.field.options.onBlur,\n params: { event },\n keys: ['event']\n });\n }\n };\n\n /**\n * 发送附加按钮点击事件\n */\n const emitAppendButtonClick = () => {\n if (designState) {\n // 设计状态不触发点击事件\n return;\n }\n\n if (props.field.options.onAppendButtonClick) {\n executeFunction({\n functionBody: props.field.options.onAppendButtonClick\n });\n }\n };\n\n /**\n * 处理变更事件\n * @param val 新值\n * @param oldVal 旧值\n * @param ops 选项\n */\n const handleOnChange = (val: any, oldVal: any) => {\n // 自定义onChange事件\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n\n if (props.field.options.onChange) {\n executeFunction({\n functionBody: props.field.options.onChange,\n params: {\n value: val,\n oldValue: oldVal,\n subFormData: subFormData.value,\n rowId: props.subFormRowId\n },\n keys: ['value', 'oldValue', 'subFormData', 'rowId']\n });\n }\n };\n\n /**\n * 处理点击事件\n */\n const onClick = async () => {\n if (designState) {\n // 设计状态不触发点击事件\n return;\n }\n\n if (props.field.options.onClick) {\n return await asyncExecuteFunction({\n functionBody: props.field.options.onClick\n });\n }\n };\n\n /**\n * 处理图标点击事件\n */\n const handleClickIcon = async () => {\n if (designState) {\n // 设计状态不触发事件\n return;\n }\n if (handleDisabled.value) {\n return;\n }\n if (field.options.onClickIcon) {\n await asyncExecuteFunction({\n functionBody: field.options.onClickIcon\n });\n }\n };\n\n /**\n * 获取字段编辑器\n * @returns 字段编辑器\n */\n const getFieldEditor = () => {\n // 获取内置的el表单组件\n return fieldEditor.value;\n };\n\n /**\n * 显示文件列表\n * @param list 文件列表\n * @returns 格式化后的文件列表\n */\n const showFileList = (list: any) => {\n if (typeof list === 'string') {\n list = JSON.parse(list);\n }\n if (!isArray(list)) return [];\n const res = list.map((item: any, uid: number) => ({\n ...item,\n name: item.fileName,\n uid\n }));\n return res;\n };\n\n /**\n * 设置值\n * @param newValue 新值\n * @param disableChangeEvent 是否禁用变更事件\n */\n const setValue = (newValue: any, disableChangeEvent = false) => {\n console.log(field.options.name);\n\n if (newValue) {\n newValue = newValue.target ? newValue.target.value : newValue;\n }\n if (eq(fieldModel.value, newValue)) return;\n\n const oldValue = deepClone(fieldModel.value);\n if (props.field.type === 'file-upload') {\n newValue = showFileList(newValue || []);\n // TODO\n } else if (props.field.type === 'code-editor') {\n const fieldEditor = getFieldEditor();\n if (fieldEditor) {\n fieldEditor.setValue(newValue);\n }\n }\n fieldModel.value = newValue;\n if (!disableChangeEvent) {\n emitFieldDataChange(newValue, oldValue);\n }\n };\n\n /**\n * 获取值\n * @returns 字段值\n */\n const getValue = () => {\n return fieldModel.value;\n };\n\n /**\n * 重置字段\n */\n const resetField = () => {\n const defaultValue = props.field.options.defaultValue;\n setValue(defaultValue);\n\n // 清空上传组件文件列表\n if (props.field.type === 'picture-upload' || props.field.type === 'file-upload') {\n fieldModel.value.splice(0, fieldModel.value.length);\n // handleChangeEvent(fieldModel.value);\n }\n };\n\n /**\n * 设置组件选项\n * @param optionName 选项名称\n * @param optionValue 选项值\n */\n const setWidgetOption = (optionName: string, optionValue: any) => {\n // 通用组件选项修改API\n if (props.field.options.hasOwnProperty(optionName)) {\n props.field.options[optionName] = optionValue;\n }\n };\n\n /**\n * 设置只读\n * @param flag 是否只读\n */\n const setReadonly = (flag: boolean) => {\n props.field.options.readonly = flag;\n };\n\n /**\n * 设置禁用\n * @param flag 是否禁用\n */\n const setDisabled = (flag: boolean) => {\n props.field.options.disabled = flag;\n };\n\n /**\n * 设置附加按钮可见性\n * @param flag 是否可见\n */\n const setAppendButtonVisible = (flag: boolean) => {\n props.field.options.appendButton = flag;\n };\n\n /**\n * 设置附加按钮禁用状态\n * @param flag 是否禁用\n */\n const setAppendButtonDisabled = (flag: boolean) => {\n props.field.options.appendButtonDisabled = flag;\n };\n\n /**\n * 设置隐藏\n * @param flag 是否隐藏\n */\n const setHidden = (flag: boolean) => {\n props.field.options.hidden = flag;\n\n if (flag) {\n // 清除组件校验规则\n clearFieldRules();\n } else {\n // 重建组件校验规则\n buildFieldRules();\n }\n };\n\n /**\n * 设置必填\n * @param flag 是否必填\n */\n const setRequired = (flag: boolean) => {\n props.field.options.required = flag;\n buildFieldRules();\n\n if (!designState && !flag) {\n // 清除必填校验提示\n clearValidate();\n }\n };\n\n /**\n * 清除字段校验提示\n */\n const clearValidate = () => {\n if (designState) {\n return;\n }\n\n getFormRef().clearValidate(getPropName.value);\n };\n\n /**\n * 获取VForm上下文\n * @returns VForm上下文\n */\n const getVfCtx = () => {\n return getFormRef().vfCtx;\n };\n\n /**\n * 设置标签\n * @param newLabel 新标签\n */\n const setLabel = (newLabel: string) => {\n props.field.options.label = newLabel;\n };\n\n /**\n * 聚焦\n */\n const focus = () => {\n const fieldEditor = getFieldEditor();\n if (fieldEditor && fieldEditor.focus) {\n fieldEditor.focus();\n }\n };\n\n /**\n * 设置上传头\n * @param name 名称\n * @param value 值\n */\n const setUploadHeader = (name: string, value: any) => {\n uploadHeaders.value[name] = value;\n };\n\n /**\n * 设置上传数据\n * @param name 名称\n * @param value 值\n */\n const setUploadData = (name: string, value: any) => {\n uploadData.value[name] = value;\n };\n\n /**\n * 设置或取消设置字段只读查看模式\n * @param readonlyFlag 只读标志\n */\n const setReadMode = (readonlyFlag = true) => {\n fieldReadonlyFlag.value = readonlyFlag;\n };\n\n /**\n * 动态增加自定义css样式\n * @param className 类名\n */\n const addCssClass = (className: string) => {\n if (!props.field.options.customClass) {\n props.field.options.customClass = [className];\n } else {\n props.field.options.customClass.push(className);\n }\n };\n const customClass = computed(() => props.field.options.customClass);\n\n /**\n * 动态移除自定义css样式\n * @param className 类名\n */\n const removeCssClass = (className: string) => {\n if (!props.field.options.customClass) {\n return;\n }\n\n let foundIdx = -1;\n props.field.options.customClass.map((cc: string, idx: number) => {\n if (cc === className) {\n foundIdx = idx;\n }\n });\n if (foundIdx > -1) {\n props.field.options.customClass.splice(foundIdx, 1);\n }\n };\n\n const getEl = () => {\n return fieldEditor.value?.$el;\n };\n\n const options = computed({\n get() {\n return props.field.options;\n },\n set(value) {\n props.field.options = value;\n }\n });\n\n const initFieldModel = () => {\n dispatch('VFormRender', 'fieldChange', {\n fieldName: getPropName.value,\n value: props.field.options.defaultValue || null,\n oldValue: toRaw(fieldModel.value),\n field: field\n });\n };\n\n // 生命周期钩子\n onMounted(async () => {\n initFieldModel();\n await registerToRefList();\n\n await handleOnCreated();\n\n await handleOnMounted();\n buildFieldRules();\n });\n\n onBeforeUnmount(() => {\n unregisterFromRefList();\n });\n\n const defineExposed = {\n i18nt,\n options,\n proxy: instance?.proxy,\n field,\n widget: field,\n fieldModel,\n fieldEditor,\n isReadMode,\n setWidgetOption,\n setReadonly,\n setDisabled,\n getVfCtx,\n setLabel,\n getEl,\n setReadMode,\n resetField,\n setValue,\n getValue,\n getFieldEditor,\n getFormRef,\n getWidgetRef,\n setHidden,\n addCssClass,\n removeCssClass,\n setRequired,\n clearValidate,\n focus\n };\n\n return {\n asyncExecuteFunction,\n executeFunction,\n options,\n customClass,\n fieldEditor,\n // 状态\n fieldModel,\n oldFieldValue,\n fieldReadonlyFlag,\n loading,\n rules,\n uploadHeaders,\n uploadData,\n designState,\n customToolbar,\n i18nt,\n i18n2t,\n size,\n field,\n // 计算属性\n formConfig,\n subFormName,\n\n formModel,\n isReadMode,\n\n // 方法\n handleHidden,\n handleDisabled,\n findInArray,\n getPropName,\n refreshDefaultValue,\n clearFieldRules,\n buildFieldRules,\n disableChangeValidate,\n enableChangeValidate,\n disableOptionOfList,\n enableOptionOfList,\n emitFieldDataChange,\n syncUpdateFormModel,\n handleFocusCustomEvent,\n handleBlurCustomEvent,\n emitAppendButtonClick,\n handleOnChange,\n onClick,\n handleClickIcon,\n getFieldEditor,\n showFileList,\n\n setAppendButtonVisible,\n setAppendButtonDisabled,\n\n focus,\n setUploadHeader,\n setUploadData,\n\n isSubFormField,\n defineExposed\n };\n}\n"],"names":["useField","props","getFormConfig","inject","formModel","ref","getReadMode","isSubFormField","getSubFormName","designState","registerToRefList","getWidgetRef","getFormRef","unregisterFromRefList","useAppRef","executeFunction","asyncExecuteFunction","useExecFunction","i18nt","i18n2t","useI18n","field","fieldEditor","oldFieldValue","fieldReadonlyFlag","loading","rules","uploadHeaders","uploadData","customToolbar","instance","getCurrentInstance","dispatch","useEmitter","formConfig","computed","size","_a","subFormName","fieldModel","get","getPropName","value","syncUpdateFormModel","subFormData","isReadMode","handleHidden","onHidden","hidden","result","handleDisabled","onDisabled","disabled","error","findInArray","arrayObject","element","foundIdx","aItem","aIdx","handleOnCreated","handleOnMounted","refreshDefaultValue","clearFieldRules","buildFieldRules","vldName","FormValidators","customFn","rule","disableChangeValidate","enableChangeValidate","disableOptionOfList","optionList","optionValue","opt","enableOptionOfList","emitFieldDataChange","newValue","oldValue","toRaw","handleOnChange","handleFocusCustomEvent","event","deepClone","handleBlurCustomEvent","emitAppendButtonClick","val","oldVal","onClick","handleClickIcon","getFieldEditor","showFileList","list","isArray","item","uid","setValue","disableChangeEvent","eq","getValue","resetField","defaultValue","setWidgetOption","optionName","setReadonly","flag","setDisabled","setAppendButtonVisible","setAppendButtonDisabled","setHidden","setRequired","clearValidate","getVfCtx","setLabel","newLabel","focus","setUploadHeader","name","setUploadData","setReadMode","readonlyFlag","addCssClass","className","customClass","removeCssClass","cc","idx","getEl","options","initFieldModel","onMounted","onBeforeUnmount","defineExposed"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import o from "./index.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-70e501c6"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
p as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=index.vue.js.map
|
|
@@ -1,59 +1,68 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useI18n as
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import j from "./bi/RenderDesignerBI.vue.js";
|
|
6
|
-
const H = {
|
|
1
|
+
import { defineComponent as b, inject as l, ref as a, provide as s, computed as i, resolveComponent as c, createBlock as B, openBlock as d, withCtx as f, createElementVNode as m, createVNode as u, unref as n, normalizeClass as E, createElementBlock as H, createCommentVNode as I, toDisplayString as N } from "vue";
|
|
2
|
+
import { useI18n as V } from "../../../utils/i18n.js";
|
|
3
|
+
import W from "./RenderDesignerWigetList.vue.js";
|
|
4
|
+
const M = { class: "form-widget-container" }, P = {
|
|
7
5
|
key: 0,
|
|
8
6
|
class: "no-widget-hint"
|
|
9
|
-
},
|
|
7
|
+
}, R = {
|
|
8
|
+
class: "form-widget-canvas",
|
|
9
|
+
style: { minHeight: "calc(100vh - 56px - 68px)" }
|
|
10
|
+
}, A = /* @__PURE__ */ b({
|
|
10
11
|
__name: "index",
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
12
|
+
props: {
|
|
13
|
+
globalDsv: {},
|
|
14
|
+
formConfig: {}
|
|
15
|
+
},
|
|
16
|
+
setup(g) {
|
|
17
|
+
const { i18nt: p } = V(), v = g, e = l("designer", a({})), _ = a(/* @__PURE__ */ new Map());
|
|
18
|
+
s("refList", _), s("getReadMode", () => !1), s("getFormConfig", () => v.formConfig);
|
|
19
|
+
const C = l("formData", a({})), h = () => {
|
|
20
|
+
}, w = i(() => {
|
|
21
|
+
var o, t;
|
|
22
|
+
return ((t = (o = e.value) == null ? void 0 : o.formConfig) == null ? void 0 : t.labelPosition) || "horizontal";
|
|
23
|
+
}), r = i(() => e.value.formConfig && e.value.formConfig.size ? e.value.formConfig.size : "default"), y = i(() => e.value.formConfig.customClass || ""), z = i(() => e.value.getLayoutType()), x = (o) => {
|
|
24
|
+
const t = o.newIndex;
|
|
25
|
+
e.value.widgetList[t] && e.value.setSelected(e.value.widgetList[t]);
|
|
26
|
+
}, D = () => {
|
|
27
|
+
e.value.emitHistoryChange();
|
|
28
|
+
};
|
|
29
|
+
return (o, t) => {
|
|
30
|
+
const L = c("a-form"), k = c("a-config-provider");
|
|
31
|
+
return d(), B(k, {
|
|
32
|
+
"component-size": r.value,
|
|
33
|
+
input: { autocomplete: "off" }
|
|
33
34
|
}, {
|
|
34
|
-
default:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
35
|
+
default: f(() => [
|
|
36
|
+
m("div", M, [
|
|
37
|
+
u(L, {
|
|
38
|
+
class: E(["full-height-width widget-form tpf-form", [y.value, z.value + "-layout"]]),
|
|
39
|
+
layout: w.value,
|
|
40
|
+
size: r.value,
|
|
41
|
+
"validate-on-rule-change": !1,
|
|
42
|
+
model: n(C)
|
|
43
|
+
}, {
|
|
44
|
+
default: f(() => [
|
|
45
|
+
n(e).widgetList.length === 0 ? (d(), H("div", P, N(n(p)("designer.noWidgetHint")), 1)) : I("", !0),
|
|
46
|
+
m("div", R, [
|
|
47
|
+
u(W, {
|
|
48
|
+
list: n(e).widgetList,
|
|
49
|
+
parentWidget: n(e),
|
|
50
|
+
end: h,
|
|
51
|
+
add: x,
|
|
52
|
+
update: D
|
|
53
|
+
}, null, 8, ["list", "parentWidget"])
|
|
54
|
+
])
|
|
55
|
+
]),
|
|
56
|
+
_: 1
|
|
57
|
+
}, 8, ["layout", "class", "size", "model"])
|
|
58
|
+
])
|
|
59
|
+
]),
|
|
51
60
|
_: 1
|
|
52
61
|
}, 8, ["component-size"]);
|
|
53
62
|
};
|
|
54
63
|
}
|
|
55
64
|
});
|
|
56
65
|
export {
|
|
57
|
-
|
|
66
|
+
A as default
|
|
58
67
|
};
|
|
59
68
|
//# sourceMappingURL=index.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../../src/components/form-designer/form-widget/index.vue"],"sourcesContent":["<template>\n <a-config-provider :component-size=\"size\" :input=\"{ autocomplete: 'off' }\">\n <div
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../src/components/form-designer/form-widget/index.vue"],"sourcesContent":["<template>\n <a-config-provider :component-size=\"size\" :input=\"{ autocomplete: 'off' }\">\n <div class=\"form-widget-container\">\n <a-form\n class=\"full-height-width widget-form tpf-form\"\n :layout=\"labelPosition\"\n :class=\"[customClass, layoutType + '-layout']\"\n :size=\"size\"\n :validate-on-rule-change=\"false\"\n :model=\"formData\"\n >\n <template v-if=\"designer.widgetList.length === 0\">\n <div class=\"no-widget-hint\">{{ i18nt('designer.noWidgetHint') }}</div>\n </template>\n <div class=\"form-widget-canvas\" :style=\"{ minHeight: 'calc(100vh - 56px - 68px)' }\">\n <RenderDesignerWigetList\n :list=\"designer.widgetList\"\n :parentWidget=\"designer\"\n :end=\"onDragEnd\"\n :add=\"onDragAdd\"\n :update=\"onDragUpdate\"\n />\n </div>\n </a-form>\n </div>\n </a-config-provider>\n</template>\n\n<script lang=\"ts\" setup>\n import { useI18n } from '@/utils/i18n';\n import RenderDesignerWigetList from '@/components/form-designer/form-widget/RenderDesignerWigetList.vue';\n import { computed, provide, ref, inject, Ref } from 'vue';\n import { FormConfig } from '@/types/schema';\n import { FormDesigner } from '@/types/designer';\n\n const { i18nt } = useI18n();\n const props = withDefaults(\n defineProps<{\n globalDsv: Record<string, any>;\n formConfig: FormConfig;\n }>(),\n {}\n );\n const designer = inject<Ref<FormDesigner>>('designer', ref({} as FormDesigner));\n const widgetRefList = ref(new Map());\n\n provide('refList', widgetRefList);\n provide('getReadMode', () => false);\n provide('getFormConfig', () => props.formConfig);\n\n const formData = inject('formData', ref({}));\n\n const onDragEnd = () => {};\n\n const labelPosition = computed(() => {\n return designer.value?.formConfig?.labelPosition || 'horizontal';\n });\n\n const size = computed(() => {\n if (!!designer.value.formConfig && !!designer.value.formConfig.size) {\n return designer.value.formConfig.size;\n }\n\n return 'default';\n });\n\n const customClass = computed(() => {\n return designer.value.formConfig.customClass || '';\n });\n\n const layoutType = computed(() => {\n return designer.value.getLayoutType();\n });\n\n const onDragAdd = evt => {\n const newIndex = evt.newIndex;\n if (designer.value.widgetList[newIndex]) {\n designer.value.setSelected(designer.value.widgetList[newIndex]);\n }\n };\n\n const onDragUpdate = () => {\n designer.value.emitHistoryChange();\n };\n</script>\n\n<style lang=\"less\" scoped>\n .form-widget-container {\n padding: 5px;\n background: #f1f2f3;\n\n overflow-x: hidden;\n overflow-y: auto;\n // padding-bottom: 70px;\n .submit {\n flex: 1;\n display: flex;\n justify-content: end;\n position: absolute;\n height: 60px;\n padding: 0 10px;\n background: #fff;\n z-index: 99;\n bottom: 0;\n left: 5px;\n right: 5px;\n }\n\n .ant-form.full-height-width {\n overflow-y: auto;\n height: 100%;\n padding: 3px;\n background: #ffffff;\n\n .no-widget-hint {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n font-size: 18px;\n color: #999999;\n }\n\n .form-widget-canvas {\n //min-height: calc(100vh - 56px - 68px + 48px);\n display: flex;\n flex-direction: column;\n padding: 3px;\n position: relative;\n :deep(.container-wrapper) {\n margin: 10px 3px;\n min-width: 0;\n }\n :deep(.field-widget-item),\n :deep(.container-widget-item) {\n margin: 0 0 10px 0;\n border: 1px dashed #333;\n border-radius: 3px;\n background: #eee;\n height: 30px;\n align-items: center;\n display: flex;\n justify-content: center;\n color: #999999;\n }\n }\n }\n\n /* 隐藏组件拖拽状态中显示的黑点 */\n :deep(li.container-widget-item),\n :deep(li.field-widget-item) {\n list-style: none;\n }\n\n .ant-form.Pad-layout {\n margin: 0 auto;\n max-width: 960px;\n border-radius: 15px;\n box-shadow: 0 0 1px 10px #495060;\n }\n .ant-form.H5-layout {\n margin: 0 auto;\n width: 420px;\n border-radius: 15px;\n //border-width: 10px;\n box-shadow: 0 0 1px 10px #495060;\n }\n .ant-form.widget-form :deep(.ant-row) {\n padding: 2px;\n }\n }\n\n .grid-cell {\n min-height: 30px;\n border-right: 1px dotted #cccccc;\n }\n\n .fade-enter-active,\n .fade-leave-active {\n transition: opacity 0.5s;\n }\n\n .fade-enter,\n .fade-leave-to {\n opacity: 0;\n }\n</style>\n"],"names":["i18nt","useI18n","props","__props","designer","inject","ref","widgetRefList","provide","formData","onDragEnd","labelPosition","computed","_b","_a","size","customClass","layoutType","onDragAdd","evt","newIndex","onDragUpdate","_createBlock","_component_a_config_provider","_createElementVNode","_hoisted_1","_createVNode","_component_a_form","_normalizeClass","_unref","_createElementBlock","_hoisted_2","_toDisplayString","_hoisted_3","RenderDesignerWigetList"],"mappings":";;;;;;;;;;;;;;;;AAmCI,UAAM,EAAE,OAAAA,EAAA,IAAUC,EAAA,GACZC,IAAQC,GAORC,IAAWC,EAA0B,YAAYC,EAAI,CAAA,CAAkB,CAAC,GACxEC,IAAgBD,EAAI,oBAAI,KAAK;AAEnC,IAAAE,EAAQ,WAAWD,CAAa,GAChCC,EAAQ,eAAe,MAAM,EAAK,GAClCA,EAAQ,iBAAiB,MAAMN,EAAM,UAAU;AAE/C,UAAMO,IAAWJ,EAAO,YAAYC,EAAI,CAAA,CAAE,CAAC,GAErCI,IAAY,MAAM;AAAA,IAAC,GAEnBC,IAAgBC,EAAS,MAAM;;AACjC,eAAOC,KAAAC,IAAAV,EAAS,UAAT,gBAAAU,EAAgB,eAAhB,gBAAAD,EAA4B,kBAAiB;AAAA,IACxD,CAAC,GAEKE,IAAOH,EAAS,MACZR,EAAS,MAAM,cAAgBA,EAAS,MAAM,WAAW,OACpDA,EAAS,MAAM,WAAW,OAG9B,SACV,GAEKY,IAAcJ,EAAS,MAClBR,EAAS,MAAM,WAAW,eAAe,EACnD,GAEKa,IAAaL,EAAS,MACjBR,EAAS,MAAM,cAAA,CACzB,GAEKc,IAAY,CAAAC,MAAO;AACrB,YAAMC,IAAWD,EAAI;AACrB,MAAIf,EAAS,MAAM,WAAWgB,CAAQ,KAClChB,EAAS,MAAM,YAAYA,EAAS,MAAM,WAAWgB,CAAQ,CAAC;AAAA,IAEtE,GAEMC,IAAe,MAAM;AACvB,MAAAjB,EAAS,MAAM,kBAAA;AAAA,IACnB;;;kBAlFAkB,EAwBoBC,GAAA;AAAA,QAxBA,kBAAgBR,EAAA;AAAA,QAAO,OAAO,EAAA,cAAA,MAAA;AAAA,MAAA;mBAC9C,MAsBM;AAAA,UAtBNS,EAsBM,OAtBNC,GAsBM;AAAA,YArBFC,EAoBSC,GAAA;AAAA,cAnBL,OAAKC,EAAA,CAAC,0CAAwC,CAErCZ,EAAA,OAAaC,EAAA,QAAU,SAAA,CAAA,CAAA;AAAA,cAD/B,QAAQN,EAAA;AAAA,cAER,MAAMI,EAAA;AAAA,cACN,2BAAyB;AAAA,cACzB,OAAOc,EAAApB,CAAA;AAAA,YAAA;yBAER,MAEW;AAAA,gBAFKoB,EAAAzB,CAAA,EAAS,WAAW,WAAM,UACtC0B,EAAsE,OAAtEC,GAAsEC,EAAvCH,EAAA7B,CAAA,EAAK,uBAAA,CAAA,GAAA,CAAA;gBAExCwB,EAQM,OARNS,GAQM;AAAA,kBAPFP,EAMEQ,GAAA;AAAA,oBALG,MAAML,EAAAzB,CAAA,EAAS;AAAA,oBACf,cAAcyB,EAAAzB,CAAA;AAAA,oBACd,KAAKM;AAAA,oBACL,KAAKQ;AAAA,oBACL,QAAQG;AAAA,kBAAA;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RenderDesginWidgetList as i } from "./container-widget/index.js";
|
|
2
|
+
import f from "./field-widget/index.js";
|
|
3
|
+
import { inject as t, ref as o } from "vue";
|
|
4
|
+
function s(e) {
|
|
5
|
+
if (!e)
|
|
6
|
+
return;
|
|
7
|
+
const n = e.type + "-widget";
|
|
8
|
+
return i[n];
|
|
9
|
+
}
|
|
10
|
+
function c(e) {
|
|
11
|
+
if (!e)
|
|
12
|
+
return;
|
|
13
|
+
const n = e.type + "-widget";
|
|
14
|
+
return f[n];
|
|
15
|
+
}
|
|
16
|
+
function d(e) {
|
|
17
|
+
if (!e)
|
|
18
|
+
return;
|
|
19
|
+
const n = e.category === "container" ? s(e) : c(e);
|
|
20
|
+
return n || console.warn(`未找到组件类型: ${e.type},请确保已注册该组件。`), n;
|
|
21
|
+
}
|
|
22
|
+
function a() {
|
|
23
|
+
const e = t("designer", o({})), n = t("designState", !1), r = t("formConfig", o({}));
|
|
24
|
+
return {
|
|
25
|
+
designState: n,
|
|
26
|
+
formConfig: r,
|
|
27
|
+
designer: e
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
d as getWidget,
|
|
32
|
+
a as useDesigner
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=useFormDesigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormDesigner.js","sources":["../../../../../src/components/form-designer/form-widget/useFormDesigner.ts"],"sourcesContent":["import { FormConfig, Widget } from '@/types/schema';\nimport { RenderDesginWidgetList } from './container-widget';\nimport FieldComponents from '@/components/form-designer/form-widget/field-widget/index';\nimport { Component, inject, ref, Ref } from 'vue';\nimport { FormDesigner } from '@/types/designer';\n/**\n * 获取容器组件\n * @param widget 组件配置\n * @returns vue component or undefined\n */\nfunction getContainerWidget(widget: Widget): Component | undefined {\n if (!widget) {\n return undefined;\n }\n const widgetName = widget.type + '-widget';\n return RenderDesginWidgetList[widgetName];\n}\n\n/**\n * 获取普通字段组件\n * @param widget 组件配置\n * @returns vue component or undefined\n */\nfunction getFieldWidget(widget: Widget): Component | undefined {\n if (!widget) {\n return undefined;\n }\n const widgetName = widget.type + '-widget';\n return FieldComponents[widgetName];\n}\n\n/**\n * 获取组件\n * @param widget 组件配置\n * @returns vue component or undefined\n */\nexport function getWidget(widget: Widget): Component | undefined {\n if (!widget) {\n return undefined;\n }\n\n const component =\n widget.category === 'container' ? getContainerWidget(widget) : getFieldWidget(widget);\n\n if (!component) {\n console.warn(`未找到组件类型: ${widget.type},请确保已注册该组件。`);\n }\n return component;\n}\n\nexport function useDesigner() {\n const designer = inject<Ref<FormDesigner>>('designer', ref({} as FormDesigner));\n const designState = inject('designState', false);\n\n const formConfig = inject<Ref<FormConfig>>('formConfig', ref({} as FormConfig));\n\n return {\n designState,\n formConfig,\n designer\n };\n}\n"],"names":["getContainerWidget","widget","widgetName","RenderDesginWidgetList","getFieldWidget","FieldComponents","getWidget","component","useDesigner","designer","inject","ref","designState","formConfig"],"mappings":";;;AAUA,SAASA,EAAmBC,GAAuC;AAC/D,MAAI,CAACA;AACD;AAEJ,QAAMC,IAAaD,EAAO,OAAO;AACjC,SAAOE,EAAuBD,CAAU;AAC5C;AAOA,SAASE,EAAeH,GAAuC;AAC3D,MAAI,CAACA;AACD;AAEJ,QAAMC,IAAaD,EAAO,OAAO;AACjC,SAAOI,EAAgBH,CAAU;AACrC;AAOO,SAASI,EAAUL,GAAuC;AAC7D,MAAI,CAACA;AACD;AAGJ,QAAMM,IACFN,EAAO,aAAa,cAAcD,EAAmBC,CAAM,IAAIG,EAAeH,CAAM;AAExF,SAAKM,KACD,QAAQ,KAAK,YAAYN,EAAO,IAAI,aAAa,GAE9CM;AACX;AAEO,SAASC,IAAc;AAC1B,QAAMC,IAAWC,EAA0B,YAAYC,EAAI,CAAA,CAAkB,CAAC,GACxEC,IAAcF,EAAO,eAAe,EAAK,GAEzCG,IAAaH,EAAwB,cAAcC,EAAI,CAAA,CAAgB,CAAC;AAE9E,SAAO;AAAA,IACH,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAJ;AAAA,EAAA;AAER;"}
|