@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":"index.vue2.js","sources":["../../../../../src/components/form-designer/setting-panel/index.vue"],"sourcesContent":["<template>\n <a-config-provider componentSize=\"small\">\n <a-layout class=\"panel-container\">\n <a-tabs\n v-model:activeKey=\"activeTab\"\n style=\"height: 100%; width: 100%; overflow: hidden\"\n >\n <a-tab-pane :tab=\"i18nt('designer.hint.widgetSetting')\" key=\"1\">\n <div class=\"setting-scrollbar desgin-wrapper\">\n <a-form\n v-if=\"!!designer.selectedWidget\"\n :model=\"optionModel\"\n labelAlign=\"left\"\n label-width=\"120px\"\n class=\"setting-form tpf-form\"\n @submit.prevent\n >\n <a-collapse\n v-model:activeKey=\"widgetActiveCollapseNames\"\n class=\"setting-collapse\"\n >\n <a-collapse-panel\n v-for=\"panel in collapsePanels\"\n :key=\"panel.key\"\n :class=\"panel.className\"\n :header=\"panel.headerKey\"\n >\n <component\n v-for=\"(value, key) in panel.props\"\n :key=\"key\"\n :is=\"value\"\n :selected-widget=\"selectedWidget\"\n v-model:option-model=\"optionModel\"\n :event-handled=\"getEventHandled(key)\"\n />\n </a-collapse-panel>\n </a-collapse>\n </a-form>\n\n <a-empty\n v-else\n :description=\"i18nt('designer.hint.noSelectedWidgetHint')\"\n />\n </div>\n </a-tab-pane>\n\n <a-tab-pane v-if=\"!!designer\" :tab=\"i18nt('designer.hint.表单设置')\" key=\"2\">\n <div class=\"setting-scrollbar\">\n <form-setting />\n </div>\n </a-tab-pane>\n\n <a-tab-pane :tab=\"i18nt('designer.hint.表单api配置')\" key=\"3\">\n <div class=\"ds-setting-scrollbar\">\n <FormCrudSetting v-model:form-config=\"formConfig\" />\n </div>\n </a-tab-pane>\n </a-tabs>\n </a-layout>\n </a-config-provider>\n <TpfCodeEditor\n :eventHeader=\"eventHeader\"\n ref=\"CodeModalEditorRef\"\n :title=\"dialogTitle || i18nt('designer.setting.editWidgetEventHandler')\"\n :mode=\"currentMode\"\n :readonly=\"false\"\n @setCode=\"saveEventHandler\"\n />\n</template>\n\n<script lang=\"ts\" setup>\n import PropertyEditors from './property-editor/index';\n import { TpfCodeEditor } from 'tmgc2-share';\n import FormSetting from './form-setting.vue';\n import FormCrudSetting from './form-crud-setting.vue';\n import WidgetProperties, { PROPERTY_TYPE } from './propertyRegister';\n import { get } from '@/utils/smart-vue-i18n/utils';\n import { useEmitter } from '@/utils/useEmitter';\n import type { Widget } from '@/types/schema';\n import { computed, inject, onBeforeMount, ref, watch, provide, watchEffect } from 'vue';\n import { useI18n } from '@/utils/i18n';\n import { set } from 'lodash-es';\n import { message } from 'ant-design-vue';\n import { useDesigner } from '../../../hooks/useDesigner';\n\n // 组件名称定义\n defineOptions({\n name: 'SettingPanel',\n componentName: 'SettingPanel',\n inheritAttrs: false\n });\n const { formConfig, designer } = useDesigner();\n const { i18nt } = useI18n();\n const { COMMON_PROPERTIES, ADVANCED_PROPERTIES, EVENT_PROPERTIES } = WidgetProperties;\n\n // Props 定义\n const props = withDefaults(\n defineProps<{\n globalDsv?: Record<string, any>;\n }>(),\n {}\n );\n\n const emitter = useEmitter();\n\n // Provide\n const subFormChildWidgetFlag = ref(false);\n\n provide('isSubFormChildWidget', () => subFormChildWidgetFlag.value);\n\n // 组件引用\n const CodeModalEditorRef = ref();\n\n // 数据定义\n const dialogTitle = ref();\n const currentMode = ref('javascript');\n\n const activeTab = ref('2');\n const widgetActiveCollapseNames = ref(['1', '2', '3']);\n const eventHandlerCode = ref('');\n const curEventName = ref('');\n const eventHeader = ref('');\n\n // computed属性\n\n const selectedWidget = defineModel<Widget<any> | null>('selected-widget', {\n required: true,\n default: () => ({} as Widget)\n });\n\n const optionModel = computed({\n get() {\n return selectedWidget.value?.options || {};\n },\n set(newVal) {\n if (selectedWidget.value) {\n selectedWidget.value.options = newVal;\n }\n }\n });\n\n /**\n * 检查事件是否已处理\n */\n const getEventHandled = (eventName: string) => {\n if (eventName) {\n eventName = eventName.replace('-editor', '');\n }\n return !!optionModel.value[eventName] && optionModel.value[eventName].length > 0;\n };\n\n const selectedWidgetOptionsEditor = computed(() =>\n Object.keys(selectedWidget.value?.options || {})\n );\n /**\n * 获取属性编辑器\n */\n const getPropEditor = (obj: Record<string, any>) => {\n const selectType = selectedWidget.value?.type;\n const list: Record<string, any> = {};\n Object.entries(obj).map(([key, value]) => {\n for (let i = 0; i < selectedWidgetOptionsEditor.value.length; i++) {\n const editorPropName = selectedWidgetOptionsEditor.value[i];\n if (key === editorPropName) {\n const originalPropName = value;\n // 组件私有属性编辑器\n const ownPropEditorName = `${selectType}-${originalPropName}`;\n // 优先判断私有属性\n if (PropertyEditors[ownPropEditorName]) {\n list[ownPropEditorName] = PropertyEditors[ownPropEditorName];\n } else if (PropertyEditors[originalPropName]) {\n list[originalPropName] = PropertyEditors[originalPropName];\n }\n break;\n }\n }\n });\n return list;\n };\n\n // 构建折叠面板配置列表\n const collapsePanels = computed(() => {\n // 根据 selectedWidget.type 进行属性分类\n\n const commonProps = getPropEditor(COMMON_PROPERTIES);\n const advProps = getPropEditor(ADVANCED_PROPERTIES);\n const eventProps = getPropEditor(EVENT_PROPERTIES);\n\n return [\n {\n key: '1',\n headerKey: i18nt('designer.setting.常见属性'),\n props: commonProps,\n type: PROPERTY_TYPE.Common,\n className: '',\n visible: Object.keys(commonProps).length > 0,\n useVModel: true,\n isEvent: false\n },\n {\n key: '2',\n headerKey: i18nt('designer.setting.高级属性'),\n props: advProps,\n type: PROPERTY_TYPE.Advanced,\n className: '',\n visible: Object.keys(advProps).length > 0,\n useVModel: false,\n isEvent: false\n },\n {\n key: '3',\n headerKey: i18nt('designer.setting.事件属性'),\n props: eventProps,\n type: PROPERTY_TYPE.Event,\n className: 'eventPanel',\n visible: Object.keys(eventProps).length > 0,\n useVModel: false,\n isEvent: true\n }\n ].filter(item => item.visible);\n });\n\n type EventHandlerParams = {\n title: string;\n attr: string;\n eventParams: string[];\n mode: 'javascript' | 'json' | 'css' | 'html';\n };\n /**\n * 重构后的事件处理函数\n */\n const onChangeEventHandler = () => {\n emitter.off$('onChangeEventHandler');\n emitter.on$(\n 'onChangeEventHandler',\n ({ title, attr, eventParams = [], mode }: EventHandlerParams) => {\n dialogTitle.value = title || i18nt('designer.setting.editWidgetEventHandler');\n\n const isJsonMode = mode === 'json';\n curEventName.value = attr;\n currentMode.value = mode;\n const eventHeaderText = `${optionModel.value.name}.${attr}`;\n eventHeader.value = isJsonMode\n ? `${eventHeaderText}{`\n : `${eventHeaderText}(${eventParams.join(', ')}) {`;\n\n eventHandlerCode.value = get(selectedWidget.value?.options, attr) || '';\n if (mode === 'json') {\n eventHandlerCode.value = JSON.stringify(eventHandlerCode.value, null, ' ');\n }\n\n // 设置字段校验函数示例代码\n if (attr === 'onValidate' && !optionModel.value['onValidate']) {\n eventHandlerCode.value =\n \" /* sample code */\\n /*\\n if ((value > 100) || (value < 0)) {\\n return Promise.reject('error message') //fail\\n } else {\\n return Promise.resolve(); //pass\\n }\\n */\";\n }\n CodeModalEditorRef.value.open(eventHandlerCode.value);\n }\n );\n };\n\n /**\n * 使用onChangeEventHandler\n * @deprecated\n */\n const editEventHandler = (eventName: string, eventParams: string[], mode = 'javascript') => {\n const isJsonMode = mode === 'json';\n curEventName.value = eventName;\n currentMode.value = mode;\n\n const eventHeaderText = `${optionModel.value.name}.${eventName}`;\n eventHeader.value = isJsonMode\n ? `${eventHeaderText}{`\n : `${eventHeaderText}(${eventParams.join(', ')}) {`;\n\n eventHandlerCode.value = get(selectedWidget.value.options, eventName) || '';\n if (mode === 'json') {\n eventHandlerCode.value = JSON.stringify(optionModel.value.menuList, null, ' ');\n }\n\n // 设置字段校验函数示例代码\n if (eventName === 'onValidate' && !optionModel.value['onValidate']) {\n eventHandlerCode.value =\n \" /* sample code */\\n /*\\n if ((value > 100) || (value < 0)) {\\n return Promise.reject('error message') //fail\\n } else {\\n return Promise.resolve(); //pass\\n }\\n */\";\n }\n CodeModalEditorRef.value.open(eventHandlerCode.value);\n };\n\n /**\n * 保存事件处理函数\n */\n const saveEventHandler = (value: any) => {\n if (value?.length && currentMode.value === 'json') {\n try {\n value = JSON.parse(value);\n } catch {\n return message.error(i18nt('designer.setting.syntaxCheckWarning'));\n }\n }\n set(selectedWidget.value?.options, curEventName.value, value);\n };\n\n watchEffect(() => {\n if (selectedWidget.value) {\n activeTab.value = '1';\n }\n });\n\n // 组件属性变动后,立即保存表单JSON\n watch(\n () => selectedWidget.value?.options,\n () => {\n designer.value.saveCurrentHistoryStep();\n },\n { deep: true }\n );\n\n // 表单配置变化时保存历史步骤\n watch(\n () => formConfig.value,\n () => {\n designer.value.saveCurrentHistoryStep();\n },\n { deep: true }\n );\n\n // 生命周期钩子\n onBeforeMount(() => {\n emitter.on$('editEventHandler', (eventParams: any) => {\n editEventHandler(eventParams[0], eventParams[1], eventParams[2]);\n });\n onChangeEventHandler();\n designer.value.handleEvent('form-css-updated', (cssClassList: any) => {\n designer.value.setCssClassList(cssClassList);\n });\n\n // 监听字段组件选中事件\n designer.value.handleEvent('field-selected', (parentWidget: any) => {\n subFormChildWidgetFlag.value = !!parentWidget && parentWidget.type === 'sub-form';\n });\n });\n\n defineExpose({\n emit$: emitter.emit$\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .panel-container {\n background-color: #fff;\n border-radius: 4px;\n height: 100%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n :deep(.ant-tabs-content-holder) {\n flex: 1;\n display: flex;\n }\n .tpf-form.ant-form {\n padding: 0;\n }\n .eventPanel {\n :deep(.ant-form-item-row) {\n flex: 1;\n .ant-form-item-label {\n flex: 1;\n }\n .ant-form-item-control-input-content .ant-btn {\n border: 1px solid #eee;\n }\n }\n\n :deep(.ant-col.ant-form-item-control) {\n flex: 0 0 80px;\n }\n }\n :deep(.ant-tabs-nav) {\n padding: 0 16px;\n margin: 0;\n margin-bottom: 0;\n height: 42px;\n border-bottom: 1px solid #f0f0f0;\n }\n :deep(.ant-tabs-tab) {\n padding: 12px 0;\n margin: 0 16px 0 0;\n transition: all 0.3s;\n }\n :deep(.ant-tabs-content) {\n overflow: auto;\n padding: 0;\n }\n :deep(.ant-form-item) {\n .ant-form-item-row {\n flex: 1;\n }\n .ant-select {\n width: 100%;\n }\n margin-bottom: 3px;\n &:last-child {\n margin-bottom: 0;\n }\n }\n :deep(.ant-collapse) {\n border: none;\n background: transparent;\n }\n :deep(.ant-collapse-item) {\n border: none;\n overflow: hidden;\n &:last-child {\n margin-bottom: 0;\n }\n }\n :deep(.ant-collapse-header) {\n padding: 8px !important;\n background: #fafafa;\n &:hover {\n background: #f5f5f5;\n }\n }\n :deep(.ant-collapse-content-box) {\n padding: 8px;\n background: #fff;\n .ant-form-item {\n display: flex;\n }\n .ant-form-item-label {\n width: 130px;\n }\n }\n }\n\n /* 隐藏Chrome浏览器中el-input数字输入框右侧的上下调整小箭头 */\n :deep(.hide-spin-button) input::-webkit-outer-spin-button,\n :deep(.hide-spin-button) input::-webkit-inner-spin-button {\n -webkit-appearance: none !important;\n }\n</style>\n\n<style lang=\"scss\">\n .ds-setting-drawer {\n right: 320px !important;\n }\n</style>\n"],"names":["formConfig","designer","useDesigner","i18nt","useI18n","COMMON_PROPERTIES","ADVANCED_PROPERTIES","EVENT_PROPERTIES","WidgetProperties","emitter","useEmitter","subFormChildWidgetFlag","ref","provide","CodeModalEditorRef","dialogTitle","currentMode","activeTab","widgetActiveCollapseNames","eventHandlerCode","curEventName","eventHeader","selectedWidget","_useModel","__props","optionModel","computed","_a","newVal","getEventHandled","eventName","selectedWidgetOptionsEditor","getPropEditor","obj","selectType","list","key","value","editorPropName","originalPropName","ownPropEditorName","PropertyEditors","collapsePanels","commonProps","advProps","eventProps","PROPERTY_TYPE","item","onChangeEventHandler","title","attr","eventParams","mode","isJsonMode","eventHeaderText","get","editEventHandler","saveEventHandler","message","set","watchEffect","watch","onBeforeMount","cssClassList","parentWidget","__expose","_createVNode","_component_a_config_provider","_component_a_layout","_component_a_tabs","$event","_component_a_tab_pane","_unref","_createElementVNode","_hoisted_1","_createBlock","_component_a_form","_component_a_collapse","_createElementBlock","_Fragment","_renderList","panel","_component_a_collapse_panel","_normalizeClass","_openBlock","_resolveDynamicComponent","_component_a_empty","_hoisted_2","FormSetting","_hoisted_3","FormCrudSetting","TpfCodeEditor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../src/components/form-designer/setting-panel/index.vue"],"sourcesContent":["<template>\n <a-config-provider componentSize=\"small\">\n <a-layout class=\"panel-container\">\n <a-tabs\n v-model:activeKey=\"activeTab\"\n style=\"height: 100%; width: 100%; overflow: hidden\"\n >\n <a-tab-pane :tab=\"i18nt('designer.hint.widgetSetting')\" key=\"1\">\n <div class=\"setting-scrollbar desgin-wrapper\">\n <a-form\n v-if=\"!!designer.selectedWidget\"\n :model=\"optionModel\"\n labelAlign=\"left\"\n label-width=\"120px\"\n class=\"setting-form tpf-form\"\n @submit.prevent\n >\n <a-collapse\n v-model:activeKey=\"widgetActiveCollapseNames\"\n class=\"setting-collapse\"\n >\n <a-collapse-panel\n v-for=\"panel in collapsePanels\"\n :key=\"panel.key\"\n :class=\"panel.className\"\n :header=\"panel.headerKey\"\n >\n <component\n v-for=\"(value, key) in panel.props\"\n :key=\"key\"\n :is=\"value\"\n :selected-widget=\"selectedWidget\"\n v-model:option-model=\"optionModel\"\n :event-handled=\"getEventHandled(key)\"\n />\n </a-collapse-panel>\n </a-collapse>\n </a-form>\n\n <a-empty\n v-else\n :description=\"i18nt('designer.hint.noSelectedWidgetHint')\"\n />\n </div>\n </a-tab-pane>\n\n <a-tab-pane v-if=\"!!designer\" :tab=\"i18nt('designer.hint.表单设置')\" key=\"2\">\n <div class=\"setting-scrollbar\">\n <form-setting />\n </div>\n </a-tab-pane>\n\n <a-tab-pane :tab=\"i18nt('designer.hint.表单api配置')\" key=\"3\">\n <div class=\"ds-setting-scrollbar\">\n <FormCrudSetting v-model:form-config=\"formConfig\" />\n </div>\n </a-tab-pane>\n </a-tabs>\n </a-layout>\n </a-config-provider>\n <TpfCodeEditor\n :eventHeader=\"eventHeader\"\n ref=\"CodeModalEditorRef\"\n :title=\"dialogTitle || i18nt('designer.setting.editWidgetEventHandler')\"\n :mode=\"currentMode\"\n :readonly=\"false\"\n @setCode=\"saveEventHandler\"\n />\n</template>\n\n<script lang=\"ts\" setup>\n import PropertyEditors from './property-editor/index';\n import { TpfCodeEditor } from 'tmgc2-share';\n import FormSetting from './form-setting.vue';\n import FormCrudSetting from './form-crud-setting.vue';\n import WidgetProperties, { PROPERTY_TYPE } from './propertyRegister';\n import { get } from '@/utils/smart-vue-i18n/utils';\n import { useEmitter } from '@/utils/useEmitter';\n import type { Widget } from '@/types/schema';\n import { computed, inject, onBeforeMount, ref, watch, provide, watchEffect } from 'vue';\n import { useI18n } from '@/utils/i18n';\n import { set } from 'lodash-es';\n import { message } from 'ant-design-vue';\n import { useDesigner } from '../form-widget/useFormDesigner';\n\n // 组件名称定义\n defineOptions({\n name: 'SettingPanel',\n componentName: 'SettingPanel',\n inheritAttrs: false\n });\n const { formConfig, designer } = useDesigner();\n const { i18nt } = useI18n();\n const { COMMON_PROPERTIES, ADVANCED_PROPERTIES, EVENT_PROPERTIES } = WidgetProperties;\n\n // Props 定义\n const props = withDefaults(\n defineProps<{\n globalDsv?: Record<string, any>;\n }>(),\n {}\n );\n\n const emitter = useEmitter();\n\n // Provide\n const subFormChildWidgetFlag = ref(false);\n\n provide('isSubFormChildWidget', () => subFormChildWidgetFlag.value);\n\n // 组件引用\n const CodeModalEditorRef = ref();\n\n // 数据定义\n const dialogTitle = ref();\n const currentMode = ref('javascript');\n\n const activeTab = ref('2');\n const widgetActiveCollapseNames = ref(['1', '2', '3']);\n const eventHandlerCode = ref('');\n const curEventName = ref('');\n const eventHeader = ref('');\n\n // computed属性\n\n const selectedWidget = defineModel<Widget<any> | null>('selected-widget', {\n required: true,\n default: () => ({} as Widget)\n });\n\n const optionModel = computed({\n get() {\n return selectedWidget.value?.options || {};\n },\n set(newVal) {\n if (selectedWidget.value) {\n selectedWidget.value.options = newVal;\n }\n }\n });\n\n /**\n * 检查事件是否已处理\n */\n const getEventHandled = (eventName: string) => {\n if (eventName) {\n eventName = eventName.replace('-editor', '');\n }\n return !!optionModel.value[eventName] && optionModel.value[eventName].length > 0;\n };\n\n const selectedWidgetOptionsEditor = computed(() =>\n Object.keys(selectedWidget.value?.options || {})\n );\n /**\n * 获取属性编辑器\n */\n const getPropEditor = (obj: Record<string, any>) => {\n const selectType = selectedWidget.value?.type;\n const list: Record<string, any> = {};\n Object.entries(obj).map(([key, value]) => {\n for (let i = 0; i < selectedWidgetOptionsEditor.value.length; i++) {\n const editorPropName = selectedWidgetOptionsEditor.value[i];\n if (key === editorPropName) {\n const originalPropName = value;\n // 组件私有属性编辑器\n const ownPropEditorName = `${selectType}-${originalPropName}`;\n // 优先判断私有属性\n if (PropertyEditors[ownPropEditorName]) {\n list[ownPropEditorName] = PropertyEditors[ownPropEditorName];\n } else if (PropertyEditors[originalPropName]) {\n list[originalPropName] = PropertyEditors[originalPropName];\n }\n break;\n }\n }\n });\n return list;\n };\n\n // 构建折叠面板配置列表\n const collapsePanels = computed(() => {\n // 根据 selectedWidget.type 进行属性分类\n\n const commonProps = getPropEditor(COMMON_PROPERTIES);\n const advProps = getPropEditor(ADVANCED_PROPERTIES);\n const eventProps = getPropEditor(EVENT_PROPERTIES);\n\n return [\n {\n key: '1',\n headerKey: i18nt('designer.setting.常见属性'),\n props: commonProps,\n type: PROPERTY_TYPE.Common,\n className: '',\n visible: Object.keys(commonProps).length > 0,\n useVModel: true,\n isEvent: false\n },\n {\n key: '2',\n headerKey: i18nt('designer.setting.高级属性'),\n props: advProps,\n type: PROPERTY_TYPE.Advanced,\n className: '',\n visible: Object.keys(advProps).length > 0,\n useVModel: false,\n isEvent: false\n },\n {\n key: '3',\n headerKey: i18nt('designer.setting.事件属性'),\n props: eventProps,\n type: PROPERTY_TYPE.Event,\n className: 'eventPanel',\n visible: Object.keys(eventProps).length > 0,\n useVModel: false,\n isEvent: true\n }\n ].filter(item => item.visible);\n });\n\n type EventHandlerParams = {\n title: string;\n attr: string;\n eventParams: string[];\n mode: 'javascript' | 'json' | 'css' | 'html';\n };\n /**\n * 重构后的事件处理函数\n */\n const onChangeEventHandler = () => {\n emitter.off$('onChangeEventHandler');\n emitter.on$(\n 'onChangeEventHandler',\n ({ title, attr, eventParams = [], mode }: EventHandlerParams) => {\n dialogTitle.value = title || i18nt('designer.setting.editWidgetEventHandler');\n\n const isJsonMode = mode === 'json';\n curEventName.value = attr;\n currentMode.value = mode;\n const eventHeaderText = `${optionModel.value.name}.${attr}`;\n eventHeader.value = isJsonMode\n ? `${eventHeaderText}{`\n : `${eventHeaderText}(${eventParams.join(', ')}) {`;\n\n eventHandlerCode.value = get(selectedWidget.value?.options, attr) || '';\n if (mode === 'json') {\n eventHandlerCode.value = JSON.stringify(eventHandlerCode.value, null, ' ');\n }\n\n // 设置字段校验函数示例代码\n if (attr === 'onValidate' && !optionModel.value['onValidate']) {\n eventHandlerCode.value =\n \" /* sample code */\\n /*\\n if ((value > 100) || (value < 0)) {\\n return Promise.reject('error message') //fail\\n } else {\\n return Promise.resolve(); //pass\\n }\\n */\";\n }\n CodeModalEditorRef.value.open(eventHandlerCode.value);\n }\n );\n };\n\n /**\n * 使用onChangeEventHandler\n * @deprecated\n */\n const editEventHandler = (eventName: string, eventParams: string[], mode = 'javascript') => {\n const isJsonMode = mode === 'json';\n curEventName.value = eventName;\n currentMode.value = mode;\n\n const eventHeaderText = `${optionModel.value.name}.${eventName}`;\n eventHeader.value = isJsonMode\n ? `${eventHeaderText}{`\n : `${eventHeaderText}(${eventParams.join(', ')}) {`;\n\n eventHandlerCode.value = get(selectedWidget.value.options, eventName) || '';\n if (mode === 'json') {\n eventHandlerCode.value = JSON.stringify(optionModel.value.menuList, null, ' ');\n }\n\n // 设置字段校验函数示例代码\n if (eventName === 'onValidate' && !optionModel.value['onValidate']) {\n eventHandlerCode.value =\n \" /* sample code */\\n /*\\n if ((value > 100) || (value < 0)) {\\n return Promise.reject('error message') //fail\\n } else {\\n return Promise.resolve(); //pass\\n }\\n */\";\n }\n CodeModalEditorRef.value.open(eventHandlerCode.value);\n };\n\n /**\n * 保存事件处理函数\n */\n const saveEventHandler = (value: any) => {\n if (value?.length && currentMode.value === 'json') {\n try {\n value = JSON.parse(value);\n } catch {\n return message.error(i18nt('designer.setting.syntaxCheckWarning'));\n }\n }\n set(selectedWidget.value?.options, curEventName.value, value);\n };\n\n watchEffect(() => {\n if (selectedWidget.value) {\n activeTab.value = '1';\n }\n });\n\n // 组件属性变动后,立即保存表单JSON\n watch(\n () => selectedWidget.value?.options,\n () => {\n designer.value.saveCurrentHistoryStep();\n },\n { deep: true }\n );\n\n // 表单配置变化时保存历史步骤\n watch(\n () => formConfig.value,\n () => {\n designer.value.saveCurrentHistoryStep();\n },\n { deep: true }\n );\n\n // 生命周期钩子\n onBeforeMount(() => {\n emitter.on$('editEventHandler', (eventParams: any) => {\n editEventHandler(eventParams[0], eventParams[1], eventParams[2]);\n });\n onChangeEventHandler();\n designer.value.handleEvent('form-css-updated', (cssClassList: any) => {\n designer.value.setCssClassList(cssClassList);\n });\n\n // 监听字段组件选中事件\n designer.value.handleEvent('field-selected', (parentWidget: any) => {\n subFormChildWidgetFlag.value = !!parentWidget && parentWidget.type === 'sub-form';\n });\n });\n\n defineExpose({\n emit$: emitter.emit$\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .panel-container {\n background-color: #fff;\n border-radius: 4px;\n height: 100%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n :deep(.ant-tabs-content-holder) {\n flex: 1;\n display: flex;\n }\n .tpf-form.ant-form {\n padding: 0;\n }\n .eventPanel {\n :deep(.ant-form-item-row) {\n flex: 1;\n .ant-form-item-label {\n flex: 1;\n }\n .ant-form-item-control-input-content .ant-btn {\n border: 1px solid #eee;\n }\n }\n\n :deep(.ant-col.ant-form-item-control) {\n flex: 0 0 80px;\n }\n }\n :deep(.ant-tabs-nav) {\n padding: 0 16px;\n margin: 0;\n margin-bottom: 0;\n height: 42px;\n border-bottom: 1px solid #f0f0f0;\n }\n :deep(.ant-tabs-tab) {\n padding: 12px 0;\n margin: 0 16px 0 0;\n transition: all 0.3s;\n }\n :deep(.ant-tabs-content) {\n overflow: auto;\n padding: 0;\n }\n :deep(.ant-form-item) {\n .ant-form-item-row {\n flex: 1;\n }\n .ant-select {\n width: 100%;\n }\n margin-bottom: 3px;\n &:last-child {\n margin-bottom: 0;\n }\n }\n :deep(.ant-collapse) {\n border: none;\n background: transparent;\n }\n :deep(.ant-collapse-item) {\n border: none;\n overflow: hidden;\n &:last-child {\n margin-bottom: 0;\n }\n }\n :deep(.ant-collapse-header) {\n padding: 8px !important;\n background: #fafafa;\n &:hover {\n background: #f5f5f5;\n }\n }\n :deep(.ant-collapse-content-box) {\n padding: 8px;\n background: #fff;\n .ant-form-item {\n display: flex;\n }\n .ant-form-item-label {\n width: 130px;\n }\n }\n }\n\n /* 隐藏Chrome浏览器中el-input数字输入框右侧的上下调整小箭头 */\n :deep(.hide-spin-button) input::-webkit-outer-spin-button,\n :deep(.hide-spin-button) input::-webkit-inner-spin-button {\n -webkit-appearance: none !important;\n }\n</style>\n\n<style lang=\"scss\">\n .ds-setting-drawer {\n right: 320px !important;\n }\n</style>\n"],"names":["formConfig","designer","useDesigner","i18nt","useI18n","COMMON_PROPERTIES","ADVANCED_PROPERTIES","EVENT_PROPERTIES","WidgetProperties","emitter","useEmitter","subFormChildWidgetFlag","ref","provide","CodeModalEditorRef","dialogTitle","currentMode","activeTab","widgetActiveCollapseNames","eventHandlerCode","curEventName","eventHeader","selectedWidget","_useModel","__props","optionModel","computed","_a","newVal","getEventHandled","eventName","selectedWidgetOptionsEditor","getPropEditor","obj","selectType","list","key","value","editorPropName","originalPropName","ownPropEditorName","PropertyEditors","collapsePanels","commonProps","advProps","eventProps","PROPERTY_TYPE","item","onChangeEventHandler","title","attr","eventParams","mode","isJsonMode","eventHeaderText","get","editEventHandler","saveEventHandler","message","set","watchEffect","watch","onBeforeMount","cssClassList","parentWidget","__expose","_createVNode","_component_a_config_provider","_component_a_layout","_component_a_tabs","$event","_component_a_tab_pane","_unref","_createElementVNode","_hoisted_1","_createBlock","_component_a_form","_component_a_collapse","_createElementBlock","_Fragment","_renderList","panel","_component_a_collapse_panel","_normalizeClass","_openBlock","_resolveDynamicComponent","_component_a_empty","_hoisted_2","FormSetting","_hoisted_3","FormCrudSetting","TpfCodeEditor"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import t from "./option-items-setting.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import o from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const r = /* @__PURE__ */ o(t, [["__scopeId", "data-v-f941fa7b"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
r as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=option-items-setting.vue.js.map
|
|
@@ -3,7 +3,7 @@ import O from "../../../lib/vuedraggable/src/vuedraggable.js";
|
|
|
3
3
|
import { useI18n as H } from "../../../utils/i18n.js";
|
|
4
4
|
import { TpfCodeEditor as J } from "tmgc2-share";
|
|
5
5
|
import { DragOutlined as U, DeleteOutlined as w, ImportOutlined as q, ReloadOutlined as A } from "@ant-design/icons-vue";
|
|
6
|
-
import { useDesigner as F } from "
|
|
6
|
+
import { useDesigner as F } from "../form-widget/useFormDesigner.js";
|
|
7
7
|
const K = { class: "option-items-pane" }, L = {
|
|
8
8
|
class: "drag-option",
|
|
9
9
|
title: "拖动排序"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option-items-setting.vue2.js","sources":["../../../../../src/components/form-designer/setting-panel/option-items-setting.vue"],"sourcesContent":["<template>\n <div class=\"option-items-pane\">\n <a-radio-group\n v-if=\"\n selectedWidget.type === 'radio' ||\n (selectedWidget.type === 'select' &&\n ['combobox'].includes(selectedWidget.options.mode || ''))\n \"\n v-model:value=\"selectedWidget.options.defaultValue\"\n @change=\"emitDefaultValueChange\"\n class=\"option-group\"\n >\n <draggable\n tag=\"ul\"\n :list=\"selectedWidget.options.optionItems\"\n item-key=\"id\"\n v-bind=\"{ group: 'optionsGroup', ghostClass: 'ghost', handle: '.drag-option' }\"\n >\n <template #item=\"{ element: option, index: idx }\">\n <li>\n <a-radio :value=\"option.value\">\n <span class=\"drag-option\" title=\"拖动排序\">\n <DragOutlined />\n </span>\n <a-input\n v-model:value=\"option.value\"\n size=\"small\"\n style=\"width: 80px\"\n placeholder=\"值\"\n />\n <a-input\n v-model:value=\"option.label\"\n size=\"small\"\n style=\"width: 80px\"\n placeholder=\"文本\"\n />\n <a-button size=\"small\" @click=\"deleteOption(option, idx)\">\n <DeleteOutlined />\n </a-button>\n </a-radio>\n </li>\n </template>\n </draggable>\n </a-radio-group>\n <a-checkbox-group\n v-else-if=\"\n selectedWidget.type === 'checkbox' ||\n (selectedWidget.type === 'select' &&\n ['multiple', 'tags'].includes(selectedWidget.options.mode || ''))\n \"\n v-model:value=\"selectedWidget.options.defaultValue\"\n @change=\"emitDefaultValueChange\"\n style=\"width: 100%\"\n class=\"option-group\"\n >\n <draggable\n tag=\"ul\"\n :list=\"selectedWidget.options.optionItems\"\n item-key=\"id\"\n v-bind=\"{ group: 'optionsGroup', ghostClass: 'ghost', handle: '.drag-option' }\"\n >\n <template #item=\"{ element: option, index: idx }\">\n <li>\n <span class=\"drag-option\" title=\"拖动排序\">\n <DragOutlined />\n </span>\n <a-checkbox :value=\"option.value\">\n <a-input\n v-model:value=\"option.value\"\n size=\"small\"\n style=\"width: 85px\"\n placeholder=\"值\"\n />\n <a-input\n v-model:value=\"option.label\"\n size=\"small\"\n style=\"width: 95px\"\n placeholder=\"文本\"\n />\n </a-checkbox>\n <div size=\"small\" @click=\"deleteOption(option, idx)\">\n <DeleteOutlined />\n </div>\n </li>\n </template>\n </draggable>\n </a-checkbox-group>\n <!-- 设置联级选择默认值 -->\n <div v-else-if=\"selectedWidget.type === 'cascader'\" class=\"full-width-input\">\n <a-cascader\n v-model:value=\"selectedWidget.options.defaultValue\"\n :multiple=\"selectedWidget.options.multiple\"\n :options=\"selectedWidget.options.optionItems\"\n @change=\"emitDefaultValueChange\"\n :placeholder=\"i18nt('render.hint.selectPlaceholder')\"\n />\n </div>\n <!-- 设置树的默认值 -->\n <div v-else-if=\"selectedWidget.type === 'treeSelect'\" class=\"full-width-input\">\n <a-tree-select\n v-model:value=\"selectedWidget.options.defaultValue\"\n :treeData=\"selectedWidget.options.optionItems\"\n @change=\"emitDefaultValueChange\"\n :placeholder=\"i18nt('render.hint.selectPlaceholder')\"\n />\n </div>\n <div v-if=\"['cascader', 'treeSelect'].includes(selectedWidget.type)\" class=\"action-buttons\">\n <a-button @click=\"importCascaderOptions\">\n <ImportOutlined />\n {{ i18nt('designer.setting.importOptions') }}\n </a-button>\n <a-button @click=\"resetDefault\">\n <ReloadOutlined />\n {{ i18nt('designer.setting.resetDefault') }}\n </a-button>\n </div>\n\n <div\n v-if=\"['radio', 'checkbox', 'select'].includes(selectedWidget.type)\"\n class=\"action-buttons\"\n >\n <a-button @click=\"addOption\">\n {{ i18nt('designer.setting.addOption') }}\n </a-button>\n <a-button @click=\"resetDefault\">\n {{ i18nt('designer.setting.resetDefault') }}\n </a-button>\n </div>\n\n <TpfCodeEditor\n :isShowEventHeader=\"false\"\n :title=\"i18nt('designer.setting.importOptions')\"\n mode=\"javascript\"\n :readonly=\"false\"\n ref=\"codeEditorRef\"\n @set-code=\"saveCascaderOptions\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref } from 'vue';\n import Draggable from '@/lib/vuedraggable/src/vuedraggable';\n import { useI18n } from '@/utils/i18n';\n import { TpfCodeEditor } from 'tmgc2-share';\n import {\n DragOutlined,\n ImportOutlined,\n ReloadOutlined,\n DeleteOutlined\n } from '@ant-design/icons-vue';\n import { useDesigner } from '../../../hooks/useDesigner';\n import { Widget } from '@/types/schema';\n\n const codeEditorRef = ref();\n\n interface OptionItem {\n value: string | number;\n label: string;\n [key: string]: any;\n }\n\n interface Props {\n selectedWidget: Widget;\n }\n\n const props = defineProps<Props>();\n\n const { i18nt } = useI18n();\n const { formConfig, designer } = useDesigner();\n\n const emitDefaultValueChange = () => {\n if (designer.value?.formWidget) {\n const fieldWidget = designer.value.formWidget.getWidgetRef(\n props.selectedWidget.options.name\n );\n if (fieldWidget?.refreshDefaultValue) {\n fieldWidget.refreshDefaultValue();\n }\n }\n };\n\n const deleteOption = (option: OptionItem, index: number) => {\n props.selectedWidget.options.optionItems.splice(index, 1);\n };\n\n const addOption = () => {\n const newValue = props.selectedWidget.options.optionItems.length + 1;\n props.selectedWidget.options.optionItems.push({\n value: newValue,\n label: 'new option'\n });\n };\n\n const importOptions = () => {\n codeEditorRef.value.open(\n JSON.stringify(props.selectedWidget.options.optionItems, null, '')\n );\n };\n\n const resetDefault = () => {\n if (\n props.selectedWidget.type === 'checkbox' ||\n (props.selectedWidget.type === 'select' && props.selectedWidget.options.multiple)\n ) {\n props.selectedWidget.options.defaultValue = [];\n } else {\n props.selectedWidget.options.defaultValue = '';\n }\n\n emitDefaultValueChange();\n };\n\n const importCascaderOptions = () => {\n codeEditorRef.value.open(props.selectedWidget.options.optionItems);\n };\n\n const saveCascaderOptions = (value: any) => {\n props.selectedWidget.options.optionItems = JSON.parse(value);\n };\n</script>\n\n<style lang=\"scss\" scoped>\n .option-items-pane {\n width: 100%;\n\n ul {\n width: 100%;\n margin-bottom: 0;\n > li {\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n\n .ant-radio-wrapper,\n .ant-checkbox-wrapper {\n display: flex;\n align-items: center;\n width: 100%;\n margin-right: 0;\n }\n\n .ant-input {\n margin: 0 4px;\n }\n\n .drag-option {\n display: inline-flex;\n align-items: center;\n margin: 0 6px;\n cursor: move;\n color: #999;\n\n &:hover {\n color: var(--ant-primary-color);\n }\n }\n\n .ant-btn {\n margin-left: 4px;\n }\n }\n }\n\n .option-header {\n display: flex;\n margin-bottom: 8px;\n padding-left: 28px;\n\n .value-label {\n width: 64px;\n margin-right: 4px;\n color: rgba(0, 0, 0, 0.85);\n font-size: 12px;\n }\n\n .text-label {\n width: 74px;\n color: rgba(0, 0, 0, 0.85);\n font-size: 12px;\n }\n }\n\n .option-group {\n width: 100%;\n margin-bottom: 2px;\n }\n\n .ant-btn {\n margin-right: 8px;\n\n &:last-child {\n margin-right: 0;\n }\n\n .anticon {\n margin-right: 0;\n }\n }\n }\n\n li.ghost {\n background: #f5f5f5;\n border: 1px dashed var(--ant-primary-color);\n border-radius: 4px;\n padding: 4px;\n }\n\n .dialog-footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 16px;\n\n .ant-btn {\n min-width: 80px;\n margin-left: 8px;\n }\n }\n\n .full-width-input {\n width: 100% !important;\n margin-bottom: 5px;\n\n :deep(.ant-cascader),\n :deep(.ant-tree-select) {\n width: 100% !important;\n }\n }\n\n /* Button action group styles */\n .action-buttons {\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 5px;\n justify-content: center;\n }\n</style>\n"],"names":["codeEditorRef","ref","props","__props","i18nt","useI18n","designer","useDesigner","emitDefaultValueChange","_a","fieldWidget","deleteOption","option","index","addOption","newValue","resetDefault","importCascaderOptions","saveCascaderOptions","value","_openBlock","_createElementBlock","_hoisted_1","selectedWidget","_createBlock","_component_a_radio_group","$event","_createVNode","_unref","_mergeProps","_withCtx","idx","_createElementVNode","_component_a_radio","_hoisted_2","DragOutlined","_component_a_input","_component_a_button","DeleteOutlined","_component_a_checkbox_group","_hoisted_3","_component_a_checkbox","_hoisted_5","_component_a_cascader","_hoisted_6","_component_a_tree_select","_hoisted_7","ImportOutlined","_createTextVNode","ReloadOutlined","_hoisted_8","TpfCodeEditor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"option-items-setting.vue2.js","sources":["../../../../../src/components/form-designer/setting-panel/option-items-setting.vue"],"sourcesContent":["<template>\n <div class=\"option-items-pane\">\n <a-radio-group\n v-if=\"\n selectedWidget.type === 'radio' ||\n (selectedWidget.type === 'select' &&\n ['combobox'].includes(selectedWidget.options.mode || ''))\n \"\n v-model:value=\"selectedWidget.options.defaultValue\"\n @change=\"emitDefaultValueChange\"\n class=\"option-group\"\n >\n <draggable\n tag=\"ul\"\n :list=\"selectedWidget.options.optionItems\"\n item-key=\"id\"\n v-bind=\"{ group: 'optionsGroup', ghostClass: 'ghost', handle: '.drag-option' }\"\n >\n <template #item=\"{ element: option, index: idx }\">\n <li>\n <a-radio :value=\"option.value\">\n <span class=\"drag-option\" title=\"拖动排序\">\n <DragOutlined />\n </span>\n <a-input\n v-model:value=\"option.value\"\n size=\"small\"\n style=\"width: 80px\"\n placeholder=\"值\"\n />\n <a-input\n v-model:value=\"option.label\"\n size=\"small\"\n style=\"width: 80px\"\n placeholder=\"文本\"\n />\n <a-button size=\"small\" @click=\"deleteOption(option, idx)\">\n <DeleteOutlined />\n </a-button>\n </a-radio>\n </li>\n </template>\n </draggable>\n </a-radio-group>\n <a-checkbox-group\n v-else-if=\"\n selectedWidget.type === 'checkbox' ||\n (selectedWidget.type === 'select' &&\n ['multiple', 'tags'].includes(selectedWidget.options.mode || ''))\n \"\n v-model:value=\"selectedWidget.options.defaultValue\"\n @change=\"emitDefaultValueChange\"\n style=\"width: 100%\"\n class=\"option-group\"\n >\n <draggable\n tag=\"ul\"\n :list=\"selectedWidget.options.optionItems\"\n item-key=\"id\"\n v-bind=\"{ group: 'optionsGroup', ghostClass: 'ghost', handle: '.drag-option' }\"\n >\n <template #item=\"{ element: option, index: idx }\">\n <li>\n <span class=\"drag-option\" title=\"拖动排序\">\n <DragOutlined />\n </span>\n <a-checkbox :value=\"option.value\">\n <a-input\n v-model:value=\"option.value\"\n size=\"small\"\n style=\"width: 85px\"\n placeholder=\"值\"\n />\n <a-input\n v-model:value=\"option.label\"\n size=\"small\"\n style=\"width: 95px\"\n placeholder=\"文本\"\n />\n </a-checkbox>\n <div size=\"small\" @click=\"deleteOption(option, idx)\">\n <DeleteOutlined />\n </div>\n </li>\n </template>\n </draggable>\n </a-checkbox-group>\n <!-- 设置联级选择默认值 -->\n <div v-else-if=\"selectedWidget.type === 'cascader'\" class=\"full-width-input\">\n <a-cascader\n v-model:value=\"selectedWidget.options.defaultValue\"\n :multiple=\"selectedWidget.options.multiple\"\n :options=\"selectedWidget.options.optionItems\"\n @change=\"emitDefaultValueChange\"\n :placeholder=\"i18nt('render.hint.selectPlaceholder')\"\n />\n </div>\n <!-- 设置树的默认值 -->\n <div v-else-if=\"selectedWidget.type === 'treeSelect'\" class=\"full-width-input\">\n <a-tree-select\n v-model:value=\"selectedWidget.options.defaultValue\"\n :treeData=\"selectedWidget.options.optionItems\"\n @change=\"emitDefaultValueChange\"\n :placeholder=\"i18nt('render.hint.selectPlaceholder')\"\n />\n </div>\n <div v-if=\"['cascader', 'treeSelect'].includes(selectedWidget.type)\" class=\"action-buttons\">\n <a-button @click=\"importCascaderOptions\">\n <ImportOutlined />\n {{ i18nt('designer.setting.importOptions') }}\n </a-button>\n <a-button @click=\"resetDefault\">\n <ReloadOutlined />\n {{ i18nt('designer.setting.resetDefault') }}\n </a-button>\n </div>\n\n <div\n v-if=\"['radio', 'checkbox', 'select'].includes(selectedWidget.type)\"\n class=\"action-buttons\"\n >\n <a-button @click=\"addOption\">\n {{ i18nt('designer.setting.addOption') }}\n </a-button>\n <a-button @click=\"resetDefault\">\n {{ i18nt('designer.setting.resetDefault') }}\n </a-button>\n </div>\n\n <TpfCodeEditor\n :isShowEventHeader=\"false\"\n :title=\"i18nt('designer.setting.importOptions')\"\n mode=\"javascript\"\n :readonly=\"false\"\n ref=\"codeEditorRef\"\n @set-code=\"saveCascaderOptions\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref } from 'vue';\n import Draggable from '@/lib/vuedraggable/src/vuedraggable';\n import { useI18n } from '@/utils/i18n';\n import { TpfCodeEditor } from 'tmgc2-share';\n import {\n DragOutlined,\n ImportOutlined,\n ReloadOutlined,\n DeleteOutlined\n } from '@ant-design/icons-vue';\n import { useDesigner } from '../form-widget/useFormDesigner';\n import { Widget } from '@/types/schema';\n\n const codeEditorRef = ref();\n\n interface OptionItem {\n value: string | number;\n label: string;\n [key: string]: any;\n }\n\n interface Props {\n selectedWidget: Widget;\n }\n\n const props = defineProps<Props>();\n\n const { i18nt } = useI18n();\n const { formConfig, designer } = useDesigner();\n\n const emitDefaultValueChange = () => {\n if (designer.value?.formWidget) {\n const fieldWidget = designer.value.formWidget.getWidgetRef(\n props.selectedWidget.options.name\n );\n if (fieldWidget?.refreshDefaultValue) {\n fieldWidget.refreshDefaultValue();\n }\n }\n };\n\n const deleteOption = (option: OptionItem, index: number) => {\n props.selectedWidget.options.optionItems.splice(index, 1);\n };\n\n const addOption = () => {\n const newValue = props.selectedWidget.options.optionItems.length + 1;\n props.selectedWidget.options.optionItems.push({\n value: newValue,\n label: 'new option'\n });\n };\n\n const importOptions = () => {\n codeEditorRef.value.open(\n JSON.stringify(props.selectedWidget.options.optionItems, null, '')\n );\n };\n\n const resetDefault = () => {\n if (\n props.selectedWidget.type === 'checkbox' ||\n (props.selectedWidget.type === 'select' && props.selectedWidget.options.multiple)\n ) {\n props.selectedWidget.options.defaultValue = [];\n } else {\n props.selectedWidget.options.defaultValue = '';\n }\n\n emitDefaultValueChange();\n };\n\n const importCascaderOptions = () => {\n codeEditorRef.value.open(props.selectedWidget.options.optionItems);\n };\n\n const saveCascaderOptions = (value: any) => {\n props.selectedWidget.options.optionItems = JSON.parse(value);\n };\n</script>\n\n<style lang=\"scss\" scoped>\n .option-items-pane {\n width: 100%;\n\n ul {\n width: 100%;\n margin-bottom: 0;\n > li {\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n\n .ant-radio-wrapper,\n .ant-checkbox-wrapper {\n display: flex;\n align-items: center;\n width: 100%;\n margin-right: 0;\n }\n\n .ant-input {\n margin: 0 4px;\n }\n\n .drag-option {\n display: inline-flex;\n align-items: center;\n margin: 0 6px;\n cursor: move;\n color: #999;\n\n &:hover {\n color: var(--ant-primary-color);\n }\n }\n\n .ant-btn {\n margin-left: 4px;\n }\n }\n }\n\n .option-header {\n display: flex;\n margin-bottom: 8px;\n padding-left: 28px;\n\n .value-label {\n width: 64px;\n margin-right: 4px;\n color: rgba(0, 0, 0, 0.85);\n font-size: 12px;\n }\n\n .text-label {\n width: 74px;\n color: rgba(0, 0, 0, 0.85);\n font-size: 12px;\n }\n }\n\n .option-group {\n width: 100%;\n margin-bottom: 2px;\n }\n\n .ant-btn {\n margin-right: 8px;\n\n &:last-child {\n margin-right: 0;\n }\n\n .anticon {\n margin-right: 0;\n }\n }\n }\n\n li.ghost {\n background: #f5f5f5;\n border: 1px dashed var(--ant-primary-color);\n border-radius: 4px;\n padding: 4px;\n }\n\n .dialog-footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 16px;\n\n .ant-btn {\n min-width: 80px;\n margin-left: 8px;\n }\n }\n\n .full-width-input {\n width: 100% !important;\n margin-bottom: 5px;\n\n :deep(.ant-cascader),\n :deep(.ant-tree-select) {\n width: 100% !important;\n }\n }\n\n /* Button action group styles */\n .action-buttons {\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 5px;\n justify-content: center;\n }\n</style>\n"],"names":["codeEditorRef","ref","props","__props","i18nt","useI18n","designer","useDesigner","emitDefaultValueChange","_a","fieldWidget","deleteOption","option","index","addOption","newValue","resetDefault","importCascaderOptions","saveCascaderOptions","value","_openBlock","_createElementBlock","_hoisted_1","selectedWidget","_createBlock","_component_a_radio_group","$event","_createVNode","_unref","_mergeProps","_withCtx","idx","_createElementVNode","_component_a_radio","_hoisted_2","DragOutlined","_component_a_input","_component_a_button","DeleteOutlined","_component_a_checkbox_group","_hoisted_3","_component_a_checkbox","_hoisted_5","_component_a_cascader","_hoisted_6","_component_a_tree_select","_hoisted_7","ImportOutlined","_createTextVNode","ReloadOutlined","_hoisted_8","TpfCodeEditor"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./boxModel-editor.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-
|
|
4
|
+
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-7e82120e"]]);
|
|
5
5
|
export {
|
|
6
6
|
p as default
|
|
7
7
|
};
|