@kp-ui/lowcode-pc 1.0.0-alpha.5 → 1.0.0-alpha.7

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.
@@ -213,38 +213,38 @@ div.row-no-column[data-v-ddd06b7d] {
213
213
  .widget-wrapper .action-buttons[data-v-f2552afd]:hover {
214
214
  background-color: #ff4d4f;
215
215
  }
216
- .designer-widget-list[data-v-8ca010af] {
216
+ .designer-widget-list[data-v-62bc239f] {
217
217
  position: relative;
218
218
  display: flex;
219
219
  flex-direction: column;
220
220
  }
221
- .designer-widget-list.empty-list[data-v-8ca010af] {
221
+ .designer-widget-list.empty-list[data-v-62bc239f] {
222
222
  min-height: 96px;
223
223
  }
224
- .designer-widget-list .empty-drop-zone[data-v-8ca010af] {
224
+ .designer-widget-list .empty-drop-zone[data-v-62bc239f] {
225
225
  position: absolute;
226
226
  left: 0;
227
227
  width: 100%;
228
228
  z-index: 2;
229
229
  }
230
- .designer-widget-list[data-v-8ca010af] .sortable-ghost {
230
+ .designer-widget-list[data-v-62bc239f] .sortable-ghost {
231
231
  z-index: 99;
232
232
  }
233
- .list-transition-container[data-v-8ca010af] {
233
+ .list-transition-container[data-v-62bc239f] {
234
234
  display: flex;
235
235
  flex-direction: column;
236
236
  padding: 2px;
237
237
  }
238
- .transition-group-el[data-v-8ca010af] {
238
+ .transition-group-el[data-v-62bc239f] {
239
239
  position: relative;
240
240
  padding: 1px;
241
241
  }
242
- .transition-group-el .sortable-ghost[data-v-8ca010af] {
242
+ .transition-group-el .sortable-ghost[data-v-62bc239f] {
243
243
  width: 100%;
244
244
  }
245
245
 
246
246
  /* SortableJS 自动应用的类 */
247
- .ghost-placeholder[data-v-8ca010af] {
247
+ .ghost-placeholder[data-v-62bc239f] {
248
248
  opacity: 0.5;
249
249
  background: #c8ebfb;
250
250
  border: 2px dashed var(--ant-primary-color);
@@ -252,10 +252,16 @@ div.row-no-column[data-v-ddd06b7d] {
252
252
  margin: 4px 0;
253
253
  border-radius: 4px;
254
254
  }
255
- .sortable-chosen[data-v-8ca010af] {
255
+ .sortable-chosen[data-v-62bc239f] {
256
256
  background: #fdfdfd;
257
257
  }
258
- .empty-drop-zone[data-v-8ca010af] {
258
+ .empty-drop-zone[data-v-62bc239f] {
259
+ line-height: 1.2;
260
+ display: flex;
261
+ align-items: center;
262
+ justify-content: center;
263
+ overflow: hidden;
264
+ font-size: 12px;
259
265
  margin: 2px 0;
260
266
  height: 90px;
261
267
  background: rgba(0, 0, 0, 0.05);
@@ -267,7 +273,7 @@ div.row-no-column[data-v-ddd06b7d] {
267
273
  color: #999;
268
274
  font-size: 14px;
269
275
  }
270
- .desginer-canvas[data-v-8ca010af] .ant-form-item {
276
+ .desginer-canvas[data-v-62bc239f] .ant-form-item {
271
277
  margin-bottom: 0;
272
278
  }/* 调试面板样式 */
273
279
  .debug-panel[data-v-68185782] {
@@ -372,25 +378,25 @@ div.row-no-column[data-v-ddd06b7d] {
372
378
  color: #333;
373
379
  }
374
380
 
375
- .field-wrapper[data-v-4322845c] {
381
+ .field-wrapper[data-v-0930180b] {
376
382
  position: relative;
377
383
  }
378
- .ant-form-item[data-v-4322845c] {
384
+ .ant-form-item[data-v-0930180b] {
379
385
  position: relative;
380
386
  /* 隐藏Chrome浏览器中el-input数字输入框右侧的上下调整小箭头 */
381
387
  }
382
- .ant-form-item[data-v-4322845c] .ant-form-item-label {
388
+ .ant-form-item[data-v-0930180b] .ant-form-item-label {
383
389
  white-space: nowrap;
384
390
  text-overflow: ellipsis;
385
391
  }
386
- .ant-form-item span.custom-label[data-v-4322845c] {
392
+ .ant-form-item span.custom-label[data-v-0930180b] {
387
393
  display: flex;
388
394
  }
389
- .ant-form-item span.custom-label i[data-v-4322845c] {
395
+ .ant-form-item span.custom-label i[data-v-0930180b] {
390
396
  margin: 0 3px;
391
397
  }
392
- .ant-form-item[data-v-4322845c] .hide-spin-button input::-webkit-outer-spin-button,
393
- .ant-form-item[data-v-4322845c] .hide-spin-button input::-webkit-inner-spin-button {
398
+ .ant-form-item[data-v-0930180b] .hide-spin-button input::-webkit-outer-spin-button,
399
+ .ant-form-item[data-v-0930180b] .hide-spin-button input::-webkit-inner-spin-button {
394
400
  -webkit-appearance: none !important;
395
401
  }[data-v-fb5e5201] .bjs-powered-by {
396
402
  display: none;
@@ -403,6 +409,19 @@ div.row-no-column[data-v-ddd06b7d] {
403
409
  justify-content: var(--flex);
404
410
  }.hide-text-span[data-v-f3a8f507] span {
405
411
  display: none;
412
+ }.designer[data-v-6c36fd38] {
413
+ position: relative;
414
+ }
415
+ .designer[data-v-6c36fd38]::before {
416
+ position: absolute;
417
+ z-index: 99;
418
+ content: "";
419
+ display: inline-block;
420
+ top: 0;
421
+ left: 0;
422
+ right: 0;
423
+ bottom: 0;
424
+ background: rgba(0, 0, 0, 0.01);
406
425
  }
407
426
  /* form-item-wrapper已引入,还需要重复引入吗? */
408
427
  /* form-item-wrapper已引入,还需要重复引入吗? */
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./RenderWidgetList.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
4
- const RenderWidgetList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8ca010af"]]);
4
+ const RenderWidgetList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-62bc239f"]]);
5
5
  export {
6
6
  RenderWidgetList as default
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RenderWidgetList.vue2.js","sources":["../../../../../../core/src/components/common/RenderWidgetList.vue"],"sourcesContent":["<template>\n <template v-if=\"designState\">\n <draggable\n v-model=\"draggableList\"\n class=\"designer-widget-list list-transition-container\"\n :class=\"[{ 'empty-list': !draggableList.length }, { 'desginer-canvas': isCanvas }]\"\n tag=\"div\"\n :animation=\"200\"\n group=\"widget\"\n handle=\".drag-handler\"\n item-key=\"id\"\n :move=\"onMove\"\n @update=\"onDragUpdate\"\n @add=\"(evt: any) => onDragAdd(evt, draggableList)\"\n >\n <template #item=\"{ element: widget, index }\">\n <div :id=\"widget.id\" class=\"transition-group-el\" :data-widget-id=\"widget.id\">\n <WidgetWrapper :widget=\"widget\" :index=\"index\" v-model:list=\"draggableList\">\n <component\n :is=\"getWidget(widget)\"\n :widget=\"widget\"\n :field=\"widget\"\n :index=\"index\"\n />\n </WidgetWrapper>\n </div>\n </template>\n <template #footer>\n <div v-if=\"!draggableList.length\" class=\"empty-drop-zone\"> 拖拽组件到此处 </div>\n </template>\n </draggable>\n </template>\n <template v-else>\n <div v-for=\"(widget, index) in draggableList\" :key=\"widget.id\" class=\"t-overflow-hidden\">\n <component :is=\"getWidget(widget)\" :widget=\"widget\" :field=\"widget\" :index=\"index\" />\n </div>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\n import draggable from 'vuedraggable';\n import { useDesigner, WidgetWrapper } from '@kp-ui/lowcode-core';\n import type { Widget, FormDesigner } from '@kp-ui/lowcode-core';\n\n defineOptions({\n inheritAttrs: false,\n name: 'RenderWidgetList'\n });\n\n const props = withDefaults(\n defineProps<{\n isCanvas?: boolean;\n parentWidget: Widget | FormDesigner | null;\n }>(),\n {\n isCanvas: false\n }\n );\n\n const { designer, onDragAdd, onDragUpdate, designState, getWidget } = useDesigner();\n\n const onMove = (evt: any) => {\n console.log({ evt });\n\n return designer.value.checkWidgetMove(evt);\n };\n\n const draggableList = defineModel<Widget[]>('list', {\n type: Array,\n default: () => []\n });\n</script>\n\n<style scoped lang=\"scss\">\n .designer-widget-list {\n position: relative;\n display: flex;\n flex-direction: column;\n // gap: 3px;\n &.empty-list {\n min-height: 96px;\n }\n .empty-drop-zone {\n position: absolute;\n // top: 5px;\n left: 0;\n width: 100%;\n z-index: 2;\n }\n :deep(.sortable-ghost) {\n z-index: 99;\n }\n }\n\n .list-transition-container {\n display: flex;\n flex-direction: column;\n padding: 2px;\n }\n\n .transition-group-el {\n position: relative;\n padding: 1px;\n .sortable-ghost {\n width: 100%;\n }\n }\n\n /* SortableJS 自动应用的类 */\n .ghost-placeholder {\n opacity: 0.5;\n background: #c8ebfb;\n border: 2px dashed var(--ant-primary-color);\n height: 40px;\n margin: 4px 0;\n border-radius: 4px;\n }\n\n .sortable-chosen {\n background: #fdfdfd;\n }\n\n .empty-drop-zone {\n margin: 2px 0;\n height: 90px;\n background: rgba(#000, 0.05);\n border: 1px dashed #d9d9d9;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #999;\n font-size: 14px;\n }\n .desginer-canvas {\n &:deep(.ant-form-item) {\n margin-bottom: 0;\n }\n }\n</style>\n"],"names":["_useModel","_unref","_createBlock","draggable","isCanvas","_withCtx","_createElementVNode","_createVNode","_resolveDynamicComponent","_createElementBlock","_openBlock","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DI,UAAM,EAAE,UAAU,WAAW,cAAc,aAAa,UAAA,IAAc,YAAA;AAEtE,UAAM,SAAS,CAAC,QAAa;AACzB,cAAQ,IAAI,EAAE,KAAK;AAEnB,aAAO,SAAS,MAAM,gBAAgB,GAAG;AAAA,IAC7C;AAEA,UAAM,gBAAgBA,kBAAsB,MAG3C;;aArEeC,MAAA,WAAA,kBACZC,YA4BYD,MAAAE,SAAA,GAAA;AAAA;oBA3BC,cAAA;AAAA,qEAAA,cAAa,QAAA;AAAA,QACtB,uBAAM,kDAAgD,CAAA,EAAA,cAAA,CAC5B,oBAAc,OAAA,wBAA+BC,KAAAA,SAAAA,CAAQ,CAAA,CAAA;AAAA,QAC/E,KAAI;AAAA,QACH,WAAW;AAAA,QACZ,OAAM;AAAA,QACN,QAAO;AAAA,QACP,YAAS;AAAA,QACR,MAAM;AAAA,QACN,UAAQH,MAAA,YAAA;AAAA,QACR,kCAAM,QAAaA,iBAAU,KAAK,cAAA,KAAa;AAAA,MAAA;QAErC,MAAII,QACX,CASM,EAAA,SAVkB,QAAQ,YAAK;AAAA,UACrCC,mBASM,OAAA;AAAA,YATA,IAAI,OAAO;AAAA,YAAI,OAAM;AAAA,YAAuB,kBAAgB,OAAO;AAAA,UAAA;YACrEC,YAOgBN,MAAA,aAAA,GAAA;AAAA,cAPA;AAAA,cAAiB;AAAA,cAAsB,MAAM,cAAA;AAAA,qEAAA,cAAa,QAAA;AAAA,YAAA;+BACtE,MAKE;AAAA,8BALFC,YAKEM,wBAJOP,MAAA,SAAA,EAAU,MAAM,CAAA,GAAA;AAAA,kBACpB;AAAA,kBACA,OAAO;AAAA,kBACP;AAAA,gBAAA;;;;;;QAKN,gBACP,MAAyE;AAAA,UAA7D,CAAA,cAAA,MAAc,uBAA1BQ,mBAAyE,OAAzE,YAA0D,WAAS;;;qDAK3EC,UAAA,IAAA,GAAAD,mBAEME,UAAA,EAAA,KAAA,KAAAC,WAFyB,cAAA,OAAa,CAA/B,QAAQ,UAAK;4BAA1BH,mBAEM,OAAA;AAAA,UAFyC,KAAK,OAAO;AAAA,UAAI,OAAM;AAAA,QAAA;wBACjEP,YAAqFM,wBAArEP,MAAA,SAAA,EAAU,MAAM,CAAA,GAAA;AAAA,YAAI;AAAA,YAAiB,OAAO;AAAA,YAAS;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"RenderWidgetList.vue2.js","sources":["../../../../../../core/src/components/common/RenderWidgetList.vue"],"sourcesContent":["<template>\n <template v-if=\"designState\">\n <draggable\n v-model=\"draggableList\"\n class=\"designer-widget-list list-transition-container\"\n :class=\"[{ 'empty-list': !draggableList.length }, { 'desginer-canvas': isCanvas }]\"\n tag=\"div\"\n :animation=\"200\"\n group=\"widget\"\n handle=\".drag-handler\"\n item-key=\"id\"\n :move=\"onMove\"\n @update=\"onDragUpdate\"\n @add=\"(evt: any) => onDragAdd(evt, draggableList)\"\n >\n <template #item=\"{ element: widget, index }\">\n <div :id=\"widget.id\" class=\"transition-group-el\" :data-widget-id=\"widget.id\">\n <WidgetWrapper :widget=\"widget\" :index=\"index\" v-model:list=\"draggableList\">\n <component\n :is=\"getWidget(widget)\"\n :widget=\"widget\"\n :field=\"widget\"\n :index=\"index\"\n />\n </WidgetWrapper>\n </div>\n </template>\n <template #footer>\n <div v-if=\"!draggableList.length\" class=\"empty-drop-zone\"> 拖拽组件到此处 </div>\n </template>\n </draggable>\n </template>\n <template v-else>\n <div v-for=\"(widget, index) in draggableList\" :key=\"widget.id\" class=\"t-overflow-hidden\">\n <component :is=\"getWidget(widget)\" :widget=\"widget\" :field=\"widget\" :index=\"index\" />\n </div>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\n import draggable from 'vuedraggable';\n import { useDesigner, WidgetWrapper } from '@kp-ui/lowcode-core';\n import type { Widget, FormDesigner } from '@kp-ui/lowcode-core';\n\n defineOptions({\n inheritAttrs: false,\n name: 'RenderWidgetList'\n });\n\n const props = withDefaults(\n defineProps<{\n isCanvas?: boolean;\n parentWidget: Widget | FormDesigner | null;\n }>(),\n {\n isCanvas: false\n }\n );\n\n const { designer, onDragAdd, onDragUpdate, designState, getWidget } = useDesigner();\n\n const onMove = (evt: any) => {\n console.log({ evt });\n\n return designer.value.checkWidgetMove(evt);\n };\n\n const draggableList = defineModel<Widget[]>('list', {\n type: Array,\n default: () => []\n });\n</script>\n\n<style scoped lang=\"scss\">\n .designer-widget-list {\n position: relative;\n display: flex;\n flex-direction: column;\n // gap: 3px;\n &.empty-list {\n min-height: 96px;\n }\n .empty-drop-zone {\n position: absolute;\n // top: 5px;\n left: 0;\n width: 100%;\n z-index: 2;\n }\n :deep(.sortable-ghost) {\n z-index: 99;\n }\n }\n\n .list-transition-container {\n display: flex;\n flex-direction: column;\n padding: 2px;\n }\n\n .transition-group-el {\n position: relative;\n padding: 1px;\n .sortable-ghost {\n width: 100%;\n }\n }\n\n /* SortableJS 自动应用的类 */\n .ghost-placeholder {\n opacity: 0.5;\n background: #c8ebfb;\n border: 2px dashed var(--ant-primary-color);\n height: 40px;\n margin: 4px 0;\n border-radius: 4px;\n }\n\n .sortable-chosen {\n background: #fdfdfd;\n }\n\n .empty-drop-zone {\n line-height: 1.2;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n font-size: 12px;\n margin: 2px 0;\n height: 90px;\n background: rgba(#000, 0.05);\n border: 1px dashed #d9d9d9;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #999;\n font-size: 14px;\n }\n .desginer-canvas {\n &:deep(.ant-form-item) {\n margin-bottom: 0;\n }\n }\n</style>\n"],"names":["_useModel","_unref","_createBlock","draggable","isCanvas","_withCtx","_createElementVNode","_createVNode","_resolveDynamicComponent","_createElementBlock","_openBlock","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DI,UAAM,EAAE,UAAU,WAAW,cAAc,aAAa,UAAA,IAAc,YAAA;AAEtE,UAAM,SAAS,CAAC,QAAa;AACzB,cAAQ,IAAI,EAAE,KAAK;AAEnB,aAAO,SAAS,MAAM,gBAAgB,GAAG;AAAA,IAC7C;AAEA,UAAM,gBAAgBA,kBAAsB,MAG3C;;aArEeC,MAAA,WAAA,kBACZC,YA4BYD,MAAAE,SAAA,GAAA;AAAA;oBA3BC,cAAA;AAAA,qEAAA,cAAa,QAAA;AAAA,QACtB,uBAAM,kDAAgD,CAAA,EAAA,cAAA,CAC5B,oBAAc,OAAA,wBAA+BC,KAAAA,SAAAA,CAAQ,CAAA,CAAA;AAAA,QAC/E,KAAI;AAAA,QACH,WAAW;AAAA,QACZ,OAAM;AAAA,QACN,QAAO;AAAA,QACP,YAAS;AAAA,QACR,MAAM;AAAA,QACN,UAAQH,MAAA,YAAA;AAAA,QACR,kCAAM,QAAaA,iBAAU,KAAK,cAAA,KAAa;AAAA,MAAA;QAErC,MAAII,QACX,CASM,EAAA,SAVkB,QAAQ,YAAK;AAAA,UACrCC,mBASM,OAAA;AAAA,YATA,IAAI,OAAO;AAAA,YAAI,OAAM;AAAA,YAAuB,kBAAgB,OAAO;AAAA,UAAA;YACrEC,YAOgBN,MAAA,aAAA,GAAA;AAAA,cAPA;AAAA,cAAiB;AAAA,cAAsB,MAAM,cAAA;AAAA,qEAAA,cAAa,QAAA;AAAA,YAAA;+BACtE,MAKE;AAAA,8BALFC,YAKEM,wBAJOP,MAAA,SAAA,EAAU,MAAM,CAAA,GAAA;AAAA,kBACpB;AAAA,kBACA,OAAO;AAAA,kBACP;AAAA,gBAAA;;;;;;QAKN,gBACP,MAAyE;AAAA,UAA7D,CAAA,cAAA,MAAc,uBAA1BQ,mBAAyE,OAAzE,YAA0D,WAAS;;;qDAK3EC,UAAA,IAAA,GAAAD,mBAEME,UAAA,EAAA,KAAA,KAAAC,WAFyB,cAAA,OAAa,CAA/B,QAAQ,UAAK;4BAA1BH,mBAEM,OAAA;AAAA,UAFyC,KAAK,OAAO;AAAA,UAAI,OAAM;AAAA,QAAA;wBACjEP,YAAqFM,wBAArEP,MAAA,SAAA,EAAU,MAAM,CAAA,GAAA;AAAA,YAAI;AAAA,YAAiB,OAAO;AAAA,YAAS;AAAA,UAAA;;;;;;"}
@@ -130,9 +130,8 @@ const useFormContext = ({ renderForm, props }) => {
130
130
  const fieldChangeEventHandler = () => {
131
131
  emitter.off$("fieldChange");
132
132
  emitter.on$("fieldChange", ({ fieldName, value }) => {
133
- if (typeof fieldName !== "undefined" && typeof value !== "undefined") {
134
- set(formDataModel.value, fieldName, value);
135
- }
133
+ value = value ?? "";
134
+ set(formDataModel.value, fieldName, value);
136
135
  });
137
136
  };
138
137
  const onFormDetail = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useFormContext.js","sources":["../../../../../../../core/src/components/common/render/useFormContext.ts"],"sourcesContent":["import { computed, nextTick, onMounted, provide, ref, useTemplateRef, watchEffect } from 'vue';\nimport {\n useFormValidation,\n FormConfig,\n Widget,\n cloneFormConfigWithoutEventHandler,\n generateId,\n getContainerWidgetByName,\n insertCustomCssToHead,\n insertGlobalFunctionsToHtml\n} from '@kp-ui/lowcode-core';\nimport { cloneDeep, set } from 'lodash-es';\nimport { message } from 'ant-design-vue';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { routerReloadStatus, useComRef, useExecFunction, useRef } from 'tmgc2-share';\nimport { useEmitter } from '@kp-ui/lowcode-core/src/utils/useEmitter';\nimport { useI18n, useAppRef } from '@kp-ui/lowcode-core';\n\nexport interface FormRenderProps {\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n renderConfig?: {\n languageName?: string;\n };\n parentForm?: any;\n dynamicCreation?: boolean;\n debug?: boolean;\n}\n\n/**\n * 表单上下文配置\n */\nexport interface FormContextOptions {\n props: FormRenderProps;\n renderForm: any;\n}\n\n/**\n * 创建表单上下文\n * @param options 表单上下文配置\n * @returns 表单上下文\n */\nexport const useFormContext = ({ renderForm, props }: FormContextOptions) => {\n const { formJson } = props;\n const dynamicDialogRef = useTemplateRef<any>('dynamicDialogRef');\n const { i18nt } = useI18n();\n const [readModeFlag, setReadMode] = useRef(false);\n\n const emitter = useEmitter();\n\n const formJsonObj = ref();\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n const isLoading = ref(false);\n const widgetRefList = ref<Map<string, any>>(new Map());\n const dialogProps = ref({});\n const childFormRef = ref();\n\n const formWidgetId = Symbol('formWidget');\n\n const dialogOrDrawerRef = ref();\n\n const { executeFunction, context, execHttpFunction } = useExecFunction();\n const { getFormRef, getWidgetRef, registerToRefList } = useAppRef(widgetRefList, formWidgetId);\n\n // 计算属性\n const formConfig = computed<FormConfig>(() => formJsonObj.value?.formConfig || {});\n\n const widgetList = computed(() => formJsonObj.value?.widgetList || []);\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const setChildFormRef = chid => {\n childFormRef.value = chid;\n };\n\n const labelWidth = computed(() => {\n return formConfig.value?.labelWidth ? `${formConfig.value.labelWidth}px` : '80px';\n });\n\n const customClass = computed(() => {\n return formConfig.value?.customClass || '';\n });\n\n // 初始化表单验证器\n let formValidator = useFormValidation(renderForm);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n\n // 重新构建表单数据模型\n formDataModel.value = {};\n insertCustomCode();\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialogRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialogRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n if (typeof fieldName !== 'undefined' && typeof value !== 'undefined') {\n set(formDataModel.value, fieldName, value);\n }\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n console.log({ cssCode });\n\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n const getFieldValue = (field: string) => {\n return formDataModel.value[field];\n };\n\n const getVfCtx = () => {\n return props.vfCtx;\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n });\n\n const expose = {\n context,\n i18nt,\n goBack,\n reload,\n formValidator,\n getFieldValue,\n resetValidation,\n clearValidate,\n getVfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n showDialog,\n getFormData,\n getChildFormRef,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n formDataModel,\n isLoading,\n vfCtx: props.vfCtx,\n // 计算属性\n formConfig,\n dynamicDialogRef,\n setChildFormRef,\n setDialogOrDrawerRef\n };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n\n emitter,\n // 状态\n formJsonObj,\n readModeFlag,\n // 引用\n widgetRefList,\n\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dialogProps,\n\n expose,\n ...expose\n };\n};\n"],"names":["goBack"],"mappings":"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"}
1
+ {"version":3,"file":"useFormContext.js","sources":["../../../../../../../core/src/components/common/render/useFormContext.ts"],"sourcesContent":["import { computed, nextTick, onMounted, provide, ref, useTemplateRef, watchEffect } from 'vue';\nimport {\n useFormValidation,\n FormConfig,\n Widget,\n cloneFormConfigWithoutEventHandler,\n generateId,\n getContainerWidgetByName,\n insertCustomCssToHead,\n insertGlobalFunctionsToHtml\n} from '@kp-ui/lowcode-core';\nimport { cloneDeep, set } from 'lodash-es';\nimport { message } from 'ant-design-vue';\nimport { getUuidKey } from '@kp-ui/tool';\nimport { routerReloadStatus, useComRef, useExecFunction, useRef } from 'tmgc2-share';\nimport { useEmitter } from '@kp-ui/lowcode-core/src/utils/useEmitter';\nimport { useI18n, useAppRef } from '@kp-ui/lowcode-core';\n\nexport interface FormRenderProps {\n vfCtx?: Record<string, any>;\n formJson?: any;\n formData?: Record<string, any>;\n optionData?: Record<string, any>;\n disabledMode?: boolean;\n renderConfig?: {\n languageName?: string;\n };\n parentForm?: any;\n dynamicCreation?: boolean;\n debug?: boolean;\n}\n\n/**\n * 表单上下文配置\n */\nexport interface FormContextOptions {\n props: FormRenderProps;\n renderForm: any;\n}\n\n/**\n * 创建表单上下文\n * @param options 表单上下文配置\n * @returns 表单上下文\n */\nexport const useFormContext = ({ renderForm, props }: FormContextOptions) => {\n const { formJson } = props;\n const dynamicDialogRef = useTemplateRef<any>('dynamicDialogRef');\n const { i18nt } = useI18n();\n const [readModeFlag, setReadMode] = useRef(false);\n\n const emitter = useEmitter();\n\n const formJsonObj = ref();\n // 状态变量\n const formDataModel = ref<Record<string, any>>({});\n const isLoading = ref(false);\n const widgetRefList = ref<Map<string, any>>(new Map());\n const dialogProps = ref({});\n const childFormRef = ref();\n\n const formWidgetId = Symbol('formWidget');\n\n const dialogOrDrawerRef = ref();\n\n const { executeFunction, context, execHttpFunction } = useExecFunction();\n const { getFormRef, getWidgetRef, registerToRefList } = useAppRef(widgetRefList, formWidgetId);\n\n // 计算属性\n const formConfig = computed<FormConfig>(() => formJsonObj.value?.formConfig || {});\n\n const widgetList = computed(() => formJsonObj.value?.widgetList || []);\n const labelPosition = computed(() => {\n return formConfig.value?.labelPosition || 'horizontal';\n });\n\n const setChildFormRef = chid => {\n childFormRef.value = chid;\n };\n\n const labelWidth = computed(() => {\n return formConfig.value?.labelWidth ? `${formConfig.value.labelWidth}px` : '80px';\n });\n\n const customClass = computed(() => {\n return formConfig.value?.customClass || '';\n });\n\n // 初始化表单验证器\n let formValidator = useFormValidation(renderForm);\n\n // 监听 widgetList 变化,重新初始化验证器\n watchEffect(() => {\n formValidator = useFormValidation(renderForm);\n });\n\n /**\n * 设置表单JSON数据\n */\n const setFormJson = async (json: any) => {\n formJsonObj.value = json || { widgetList: [], formConfig: {} };\n\n // 重新构建表单数据模型\n formDataModel.value = {};\n insertCustomCode();\n await nextTick();\n handleOnMounted();\n };\n\n /**\n * 获取表单数据\n */\n const getFormData = () => {\n return formDataModel.value || {};\n };\n\n /**\n * 设置表单数据\n */\n const setFormData = (data: Record<string, any>) => {\n if (!data) return;\n // 更新表单数据模型\n Object.keys(data).forEach(key => {\n if (Object.prototype.hasOwnProperty.call(formDataModel.value, key)) {\n formDataModel.value[key] = data[key];\n }\n });\n };\n\n /**\n * 设置加载状态\n */\n const setLoading = (loading: boolean) => {\n isLoading.value = loading;\n };\n\n /**\n * 重置表单验证\n */\n const resetValidation = () => {\n formValidator.resetValidation();\n };\n\n /**\n * 清除表单验证\n */\n const clearValidate = () => {\n formValidator.clearValidate();\n };\n\n const setDialogOrDrawerRef = (ddRef: any) => {\n dialogOrDrawerRef.value = ddRef;\n };\n\n /**\n * 当显示多级嵌套弹窗或抽屉时,获取最顶层VFormRender组件实例\n * @returns {object}\n */\n const getTopFormRef = () => {\n if (!props.parentForm) {\n return getFormRef();\n }\n\n let topFormRef = props.parentForm;\n while (topFormRef.parentForm) {\n topFormRef = topFormRef.parentForm;\n }\n\n return topFormRef;\n };\n\n /**\n * 显示弹窗表单,动态创建v-form-render组件,option-data、global-dsv等属性继承父级表单\n * @param dialogName\n * @param formData\n * @param extraData\n */\n const showDialog = (dialogName, formData = {}, extraData = {}) => {\n const topFormRef = getTopFormRef();\n const dialogCon = (getContainerWidgetByName(topFormRef?.widgetList || [], dialogName) ||\n getContainerWidgetByName(widgetList.value || [], dialogName)) as Widget | null;\n\n if (dialogCon === null) {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n\n if (!dialogName || dialogCon.type !== 'vf-dialog') {\n message.error(i18nt('render.hint.refNotFound') + dialogName);\n return;\n }\n const dFormJson = {\n widgetList: cloneDeep(dialogCon?.widgetList || []),\n formConfig: cloneFormConfigWithoutEventHandler(topFormRef?.formConfig?.value || {})\n };\n const wrapperDivId = getUuidKey();\n dialogProps.value = {\n options: dialogCon.options,\n formJson: dFormJson,\n formData: { ...formData },\n optionData: topFormRef.optionData,\n parentFormRef: context.value,\n extraData: extraData,\n wrapperId: wrapperDivId,\n vfCtx: { ...formData }\n };\n\n dynamicDialogRef.value?.show();\n };\n /**\n * 获取父级VFormRender组件实例\n * @returns {object}\n */\n const getParentFormRef = () => {\n return props.parentForm;\n };\n\n const getChildFormRef = () => {\n return dynamicDialogRef.value?.getFormRef();\n };\n\n /**\n * 字段值变化事件处理器\n */\n const fieldChangeEventHandler = () => {\n emitter.off$('fieldChange');\n emitter.on$('fieldChange', ({ fieldName, value }) => {\n // 过滤掉错误值\n value = value ?? '';\n set(formDataModel.value, fieldName, value);\n });\n };\n\n const onFormDetail = async () => {\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformDetail, {\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const onFormUpdate = async () => {\n const valid = await formValidator.validate();\n if (!valid) throw new Error(i18nt('表单验证失败'));\n\n const serveList = formConfig.value.serveList;\n const res = await execHttpFunction(serveList.vformUpdate, {\n data: formDataModel.value,\n vfCtx: props.vfCtx\n });\n console.log('res: ', res);\n return res;\n };\n\n const handleOnMounted = () => {\n if (formConfig.value?.onFormMounted) {\n console.log('onFormMounted: ');\n executeFunction({\n functionBody: formConfig.value?.onFormMounted\n });\n }\n };\n\n /**\n * 插入自定义样式和脚本\n * @param cssCode CSS代码\n * @param functions 自定义函数\n * @param formId 表单ID\n */\n const insertCustomCode = () => {\n const formId = 'vfRender' + generateId();\n const { cssCode, functions } = formConfig.value;\n console.log({ cssCode });\n\n if (cssCode) {\n insertCustomCssToHead(cssCode, formId || '');\n }\n if (functions) {\n insertGlobalFunctionsToHtml(functions, formId || '');\n }\n };\n\n const reload = () => {\n const router = context.value?.$router;\n router?.replace({\n query: {\n ...router.currentRoute.value.query,\n _t: Date.now()\n }\n });\n };\n\n const goBack = (reloadStatus?: routerReloadStatus, cb?: () => void) => {\n const goBack = getFormRef().vfCtx?.goBack;\n if (typeof goBack === 'function') {\n goBack(reloadStatus, cb);\n } else {\n const router = context.value?.$router;\n router?.go(-1);\n }\n };\n\n const getFieldValue = (field: string) => {\n return formDataModel.value[field];\n };\n\n const getVfCtx = () => {\n return props.vfCtx;\n };\n\n onMounted(() => {\n if (formJson) {\n setFormJson(formJson);\n }\n fieldChangeEventHandler();\n });\n\n const expose = {\n context,\n i18nt,\n goBack,\n reload,\n formValidator,\n getFieldValue,\n resetValidation,\n clearValidate,\n getVfCtx,\n getParentFormRef,\n getFormRef,\n getWidgetRef,\n showDialog,\n getFormData,\n getChildFormRef,\n setFormData,\n setReadMode,\n setFormJson,\n setLoading,\n onFormDetail,\n onFormUpdate,\n formDataModel,\n isLoading,\n vfCtx: props.vfCtx,\n // 计算属性\n formConfig,\n dynamicDialogRef,\n setChildFormRef,\n setDialogOrDrawerRef\n };\n\n return {\n formWidgetId,\n registerToRefList,\n dialogOrDrawerRef,\n\n emitter,\n // 状态\n formJsonObj,\n readModeFlag,\n // 引用\n widgetRefList,\n\n widgetList,\n labelPosition,\n labelWidth,\n customClass,\n dialogProps,\n\n expose,\n ...expose\n };\n};\n"],"names":["goBack"],"mappings":";;;;;;;;;;AA6CO,MAAM,iBAAiB,CAAC,EAAE,YAAY,YAAgC;AACzE,QAAM,EAAE,aAAa;AACrB,QAAM,mBAAmB,eAAoB,kBAAkB;AAC/D,QAAM,EAAE,MAAA,IAAU,QAAA;AAClB,QAAM,CAAC,cAAc,WAAW,IAAI,OAAO,KAAK;AAEhD,QAAM,UAAU,WAAA;AAEhB,QAAM,cAAc,IAAA;AAEpB,QAAM,gBAAgB,IAAyB,EAAE;AACjD,QAAM,YAAY,IAAI,KAAK;AAC3B,QAAM,gBAAgB,IAAsB,oBAAI,KAAK;AACrD,QAAM,cAAc,IAAI,EAAE;AAC1B,QAAM,eAAe,IAAA;AAErB,QAAM,eAAe,OAAO,YAAY;AAExC,QAAM,oBAAoB,IAAA;AAE1B,QAAM,EAAE,iBAAiB,SAAS,iBAAA,IAAqB,gBAAA;AACvD,QAAM,EAAE,YAAY,cAAc,sBAAsB,UAAU,eAAe,YAAY;AAG7F,QAAM,aAAa,SAAqB,MAAA;;AAAM,8BAAY,UAAZ,mBAAmB,eAAc;GAAE;AAEjF,QAAM,aAAa,SAAS,MAAA;;AAAM,8BAAY,UAAZ,mBAAmB,eAAc;GAAE;AACrE,QAAM,gBAAgB,SAAS,MAAM;;AACjC,aAAO,gBAAW,UAAX,mBAAkB,kBAAiB;AAAA,EAC9C,CAAC;AAED,QAAM,kBAAkB,CAAA,SAAQ;AAC5B,iBAAa,QAAQ;AAAA,EACzB;AAEA,QAAM,aAAa,SAAS,MAAM;;AAC9B,aAAO,gBAAW,UAAX,mBAAkB,cAAa,GAAG,WAAW,MAAM,UAAU,OAAO;AAAA,EAC/E,CAAC;AAED,QAAM,cAAc,SAAS,MAAM;;AAC/B,aAAO,gBAAW,UAAX,mBAAkB,gBAAe;AAAA,EAC5C,CAAC;AAGD,MAAI,gBAAgB,kBAAkB,UAAU;AAGhD,cAAY,MAAM;AACd,oBAAgB,kBAAkB,UAAU;AAAA,EAChD,CAAC;AAKD,QAAM,cAAc,OAAO,SAAc;AACrC,gBAAY,QAAQ,QAAQ,EAAE,YAAY,CAAA,GAAI,YAAY,GAAC;AAG3D,kBAAc,QAAQ,CAAA;AACtB,qBAAA;AACA,UAAM,SAAA;AACN,oBAAA;AAAA,EACJ;AAKA,QAAM,cAAc,MAAM;AACtB,WAAO,cAAc,SAAS,CAAA;AAAA,EAClC;AAKA,QAAM,cAAc,CAAC,SAA8B;AAC/C,QAAI,CAAC,KAAM;AAEX,WAAO,KAAK,IAAI,EAAE,QAAQ,CAAA,QAAO;AAC7B,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,OAAO,GAAG,GAAG;AAChE,sBAAc,MAAM,GAAG,IAAI,KAAK,GAAG;AAAA,MACvC;AAAA,IACJ,CAAC;AAAA,EACL;AAKA,QAAM,aAAa,CAAC,YAAqB;AACrC,cAAU,QAAQ;AAAA,EACtB;AAKA,QAAM,kBAAkB,MAAM;AAC1B,kBAAc,gBAAA;AAAA,EAClB;AAKA,QAAM,gBAAgB,MAAM;AACxB,kBAAc,cAAA;AAAA,EAClB;AAEA,QAAM,uBAAuB,CAAC,UAAe;AACzC,sBAAkB,QAAQ;AAAA,EAC9B;AAMA,QAAM,gBAAgB,MAAM;AACxB,QAAI,CAAC,MAAM,YAAY;AACnB,aAAO,WAAA;AAAA,IACX;AAEA,QAAI,aAAa,MAAM;AACvB,WAAO,WAAW,YAAY;AAC1B,mBAAa,WAAW;AAAA,IAC5B;AAEA,WAAO;AAAA,EACX;AAQA,QAAM,aAAa,CAAC,YAAY,WAAW,CAAA,GAAI,YAAY,OAAO;;AAC9D,UAAM,aAAa,cAAA;AACnB,UAAM,YAAa,0BAAyB,yCAAY,eAAc,CAAA,GAAI,UAAU,KAChF,yBAAyB,WAAW,SAAS,CAAA,GAAI,UAAU;AAE/D,QAAI,cAAc,MAAM;AACpB,cAAQ,MAAM,MAAM,yBAAyB,IAAI,UAAU;AAC3D;AAAA,IACJ;AAEA,QAAI,CAAC,cAAc,UAAU,SAAS,aAAa;AAC/C,cAAQ,MAAM,MAAM,yBAAyB,IAAI,UAAU;AAC3D;AAAA,IACJ;AACA,UAAM,YAAY;AAAA,MACd,YAAY,WAAU,uCAAW,eAAc,CAAA,CAAE;AAAA,MACjD,YAAY,qCAAmC,8CAAY,eAAZ,mBAAwB,UAAS,CAAA,CAAE;AAAA,IAAA;AAEtF,UAAM,eAAe,WAAA;AACrB,gBAAY,QAAQ;AAAA,MAChB,SAAS,UAAU;AAAA,MACnB,UAAU;AAAA,MACV,UAAU,EAAE,GAAG,SAAA;AAAA,MACf,YAAY,WAAW;AAAA,MACvB,eAAe,QAAQ;AAAA,MACvB;AAAA,MACA,WAAW;AAAA,MACX,OAAO,EAAE,GAAG,SAAA;AAAA,IAAS;AAGzB,2BAAiB,UAAjB,mBAAwB;AAAA,EAC5B;AAKA,QAAM,mBAAmB,MAAM;AAC3B,WAAO,MAAM;AAAA,EACjB;AAEA,QAAM,kBAAkB,MAAM;;AAC1B,YAAO,sBAAiB,UAAjB,mBAAwB;AAAA,EACnC;AAKA,QAAM,0BAA0B,MAAM;AAClC,YAAQ,KAAK,aAAa;AAC1B,YAAQ,IAAI,eAAe,CAAC,EAAE,WAAW,YAAY;AAEjD,cAAQ,SAAS;AACjB,UAAI,cAAc,OAAO,WAAW,KAAK;AAAA,IAC7C,CAAC;AAAA,EACL;AAEA,QAAM,eAAe,YAAY;AAC7B,UAAM,YAAY,WAAW,MAAM;AACnC,UAAM,MAAM,MAAM,iBAAiB,UAAU,aAAa;AAAA,MACtD,OAAO,MAAM;AAAA,IAAA,CAChB;AACD,YAAQ,IAAI,SAAS,GAAG;AACxB,WAAO;AAAA,EACX;AAEA,QAAM,eAAe,YAAY;AAC7B,UAAM,QAAQ,MAAM,cAAc,SAAA;AAClC,QAAI,CAAC,MAAO,OAAM,IAAI,MAAM,MAAM,QAAQ,CAAC;AAE3C,UAAM,YAAY,WAAW,MAAM;AACnC,UAAM,MAAM,MAAM,iBAAiB,UAAU,aAAa;AAAA,MACtD,MAAM,cAAc;AAAA,MACpB,OAAO,MAAM;AAAA,IAAA,CAChB;AACD,YAAQ,IAAI,SAAS,GAAG;AACxB,WAAO;AAAA,EACX;AAEA,QAAM,kBAAkB,MAAM;;AAC1B,SAAI,gBAAW,UAAX,mBAAkB,eAAe;AACjC,cAAQ,IAAI,iBAAiB;AAC7B,sBAAgB;AAAA,QACZ,eAAc,gBAAW,UAAX,mBAAkB;AAAA,MAAA,CACnC;AAAA,IACL;AAAA,EACJ;AAQA,QAAM,mBAAmB,MAAM;AAC3B,UAAM,SAAS,aAAa,WAAA;AAC5B,UAAM,EAAE,SAAS,UAAA,IAAc,WAAW;AAC1C,YAAQ,IAAI,EAAE,SAAS;AAEvB,QAAI,SAAS;AACT,4BAAsB,SAAS,UAAU,EAAE;AAAA,IAC/C;AACA,QAAI,WAAW;AACX,kCAA4B,WAAW,UAAU,EAAE;AAAA,IACvD;AAAA,EACJ;AAEA,QAAM,SAAS,MAAM;;AACjB,UAAM,UAAS,aAAQ,UAAR,mBAAe;AAC9B,qCAAQ,QAAQ;AAAA,MACZ,OAAO;AAAA,QACH,GAAG,OAAO,aAAa,MAAM;AAAA,QAC7B,IAAI,KAAK,IAAA;AAAA,MAAI;AAAA,IACjB;AAAA,EAER;AAEA,QAAM,SAAS,CAAC,cAAmC,OAAoB;;AACnE,UAAMA,WAAS,kBAAa,UAAb,mBAAoB;AACnC,QAAI,OAAOA,YAAW,YAAY;AAC9BA,cAAO,cAAc,EAAE;AAAA,IAC3B,OAAO;AACH,YAAM,UAAS,aAAQ,UAAR,mBAAe;AAC9B,uCAAQ,GAAG;AAAA,IACf;AAAA,EACJ;AAEA,QAAM,gBAAgB,CAAC,UAAkB;AACrC,WAAO,cAAc,MAAM,KAAK;AAAA,EACpC;AAEA,QAAM,WAAW,MAAM;AACnB,WAAO,MAAM;AAAA,EACjB;AAEA,YAAU,MAAM;AACZ,QAAI,UAAU;AACV,kBAAY,QAAQ;AAAA,IACxB;AACA,4BAAA;AAAA,EACJ,CAAC;AAED,QAAM,SAAS;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA;AAAA,IAEb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGJ,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA,GAAG;AAAA,EAAA;AAEX;"}
package/install.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { getLocat, getUserInfo } from "@kp-ui/tool";
2
2
  import { VxeTooltip } from "vxe-pc-ui";
3
3
  import dayjs from "dayjs";
4
- import "virtual:svg-icons-register";
4
+ import { http } from "tmgc2-share";
5
5
  import { default as default2 } from "./src/components/render/index.vue.js";
6
6
  import { useLowcode } from "./src/hooks/useLowcode.js";
7
7
  import { default as default3 } from "./src/components/public/ConfigView/CustomPageRender.vue.js";
8
8
  const registerLowcodeCore = (params) => {
9
9
  const { app, factoryRender } = params;
10
+ app.config.globalProperties.$http = http;
10
11
  app.config.globalProperties.$getLocat = getLocat;
11
12
  app.config.globalProperties.$dayjs = dayjs;
12
13
  app.config.globalProperties.$getUserInfo = getUserInfo;
package/install.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sources":["../install.ts"],"sourcesContent":["import { getLocat, getUserInfo } from '@kp-ui/tool';\nimport { VxeTooltip } from 'vxe-pc-ui';\nimport dayjs from 'dayjs';\nimport 'virtual:svg-icons-register';\nimport { App } from 'vue';\n\nexport { default as VFormRender } from './src/components/render/index.vue';\n\nexport * from './src/hooks/useLowcode';\n\nexport { default as CustomPageRender } from './src/components/public/ConfigView/CustomPageRender.vue';\ninterface RegisterLowcodeCoreParams {\n app: App;\n factoryRender: (name: any, props: any, ...args: any[]) => any;\n}\n\n// 注册 HTTP\nexport const registerLowcodeCore = (params: RegisterLowcodeCoreParams) => {\n const { app, factoryRender } = params;\n app.config.globalProperties.$getLocat = getLocat;\n app.config.globalProperties.$dayjs = dayjs;\n app.config.globalProperties.$getUserInfo = getUserInfo;\n app.config.globalProperties.$factoryRender = factoryRender;\n app.config.globalProperties.$openCustomerModal = ops => {\n import('./src/components/public/CustomerModal/useCustomerModal').then(\n ({ openCustomerModal }) => {\n openCustomerModal(ops, app);\n }\n );\n };\n app.component('VxeTooltip', VxeTooltip);\n};\n"],"names":[],"mappings":";;;;;;;AAiBO,MAAM,sBAAsB,CAAC,WAAsC;AACtE,QAAM,EAAE,KAAK,cAAA,IAAkB;AAC/B,MAAI,OAAO,iBAAiB,YAAY;AACxC,MAAI,OAAO,iBAAiB,SAAS;AACrC,MAAI,OAAO,iBAAiB,eAAe;AAC3C,MAAI,OAAO,iBAAiB,iBAAiB;AAC7C,MAAI,OAAO,iBAAiB,qBAAqB,CAAA,QAAO;AACpD,WAAO,2DAAwD,EAAE;AAAA,MAC7D,CAAC,EAAE,kBAAA,MAAwB;AACvB,0BAAkB,KAAK,GAAG;AAAA,MAC9B;AAAA,IAAA;AAAA,EAER;AACA,MAAI,UAAU,cAAc,UAAU;AAC1C;"}
1
+ {"version":3,"file":"install.js","sources":["../install.ts"],"sourcesContent":["import { getLocat, getUserInfo } from '@kp-ui/tool';\nimport { VxeTooltip } from 'vxe-pc-ui';\nimport dayjs from 'dayjs';\nimport { App } from 'vue';\nimport { http } from 'tmgc2-share';\n\nexport { default as VFormRender } from './src/components/render/index.vue';\n\nexport * from './src/hooks/useLowcode';\n\nexport { default as CustomPageRender } from './src/components/public/ConfigView/CustomPageRender.vue';\ninterface RegisterLowcodeCoreParams {\n app: App;\n factoryRender: (name: any, props: any, ...args: any[]) => any;\n}\n\n// 注册 HTTP\nexport const registerLowcodeCore = (params: RegisterLowcodeCoreParams) => {\n const { app, factoryRender } = params;\n\n app.config.globalProperties.$http = http;\n app.config.globalProperties.$getLocat = getLocat;\n app.config.globalProperties.$dayjs = dayjs;\n app.config.globalProperties.$getUserInfo = getUserInfo;\n app.config.globalProperties.$factoryRender = factoryRender;\n app.config.globalProperties.$openCustomerModal = ops => {\n import('./src/components/public/CustomerModal/useCustomerModal').then(\n ({ openCustomerModal }) => {\n openCustomerModal(ops, app);\n }\n );\n };\n app.component('VxeTooltip', VxeTooltip);\n};\n"],"names":[],"mappings":";;;;;;;AAiBO,MAAM,sBAAsB,CAAC,WAAsC;AACtE,QAAM,EAAE,KAAK,cAAA,IAAkB;AAE/B,MAAI,OAAO,iBAAiB,QAAQ;AACpC,MAAI,OAAO,iBAAiB,YAAY;AACxC,MAAI,OAAO,iBAAiB,SAAS;AACrC,MAAI,OAAO,iBAAiB,eAAe;AAC3C,MAAI,OAAO,iBAAiB,iBAAiB;AAC7C,MAAI,OAAO,iBAAiB,qBAAqB,CAAA,QAAO;AACpD,WAAO,2DAAwD,EAAE;AAAA,MAC7D,CAAC,EAAE,kBAAA,MAAwB;AACvB,0BAAkB,KAAK,GAAG;AAAA,MAC9B;AAAA,IAAA;AAAA,EAER;AACA,MAAI,UAAU,cAAc,UAAU;AAC1C;"}
package/package.json CHANGED
@@ -1,37 +1,39 @@
1
1
  {
2
- "name": "@kp-ui/lowcode-pc",
3
- "version": "1.0.0-alpha.5",
4
- "publishConfig": {
5
- "access": "public",
6
- "registry": "https://registry.npmjs.org/"
2
+ "name": "@kp-ui/lowcode-pc",
3
+ "version": "1.0.0-alpha.7",
4
+ "publishConfig": {
5
+ "access": "public",
6
+ "registry": "https://registry.npmjs.org/"
7
+ },
8
+ "module": "index.js",
9
+ "dependencies": {
10
+ "vxe-pc-ui": "4.10.29",
11
+ "vxe-table": "4.17.18",
12
+ "vuedraggable": "^4.0.0",
13
+ "bpmn-js": "13.2.0",
14
+ "vue-json-viewer": "^3.0.1",
15
+ "ant-design-vue": "4.2.6",
16
+ "query-string": "^6.14.1",
17
+ "dayjs": "^1.11.7",
18
+ "@kp-ui/tool": "2.14.1",
19
+ "tailwindcss": "3.4.9",
20
+ "vue": "3.5.17",
21
+ "vue-echarts": "^8.0.1",
22
+ "file-saver": "^2.0.5",
23
+ "echarts": "^5.6.0"
24
+ },
25
+ "main": "index.js",
26
+ "types": "types/pc/install.d.ts",
27
+ "sideEffects": [
28
+ "./assets/styles/*",
29
+ "./_virtual/*"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "import": "./install.js",
34
+ "types": "./types/pc/install.d.ts"
7
35
  },
8
- "module": "index.js",
9
- "dependencies": {
10
- "vuedraggable": "^4.0.0",
11
- "bpmn-js": "13.2.0",
12
- "vue-json-viewer": "^3.0.1",
13
- "ant-design-vue": "4.2.6",
14
- "query-string": "^6.14.1",
15
- "dayjs": "^1.11.7",
16
- "@kp-ui/tool": "2.14.1",
17
- "tailwindcss": "3.4.9",
18
- "vue": "3.5.17",
19
- "vue-echarts": "^8.0.1",
20
- "file-saver": "^2.0.5",
21
- "echarts": "^5.6.0"
22
- },
23
- "main": "index.js",
24
- "types": "types/pc/install.d.ts",
25
- "sideEffects": [
26
- "./assets/styles/*",
27
- "./_virtual/*"
28
- ],
29
- "exports": {
30
- ".": {
31
- "import": "./install.js",
32
- "types": "./types/pc/install.d.ts"
33
- },
34
- "./style": "./assets/styles/style.css",
35
- "./styles/*": "./assets/styles/*"
36
- }
36
+ "./style": "./assets/styles/style.css",
37
+ "./styles/*": "./assets/styles/*"
38
+ }
37
39
  }
@@ -1,5 +1,8 @@
1
1
  import _sfc_main from "./code-editor-widget.vue2.js";
2
+ /* empty css */
3
+ import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
4
+ const codeEditorWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6c36fd38"]]);
2
5
  export {
3
- _sfc_main as default
6
+ codeEditorWidget as default
4
7
  };
5
8
  //# sourceMappingURL=code-editor-widget.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-editor-widget.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"code-editor-widget.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -24,6 +24,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
24
24
  const props = __props;
25
25
  const {
26
26
  rules,
27
+ designState,
27
28
  fieldEditor,
28
29
  field,
29
30
  fieldModel,
@@ -36,7 +37,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
36
37
  ...defineExposed
37
38
  });
38
39
  return (_ctx, _cache) => {
39
- return !unref(handleHidden) ? (openBlock(), createBlock(FormItemWrapper, mergeProps({ key: 0 }, props, { rules: unref(rules) }), {
40
+ return !unref(handleHidden) ? (openBlock(), createBlock(FormItemWrapper, mergeProps({ key: 0 }, props, {
41
+ rules: unref(rules),
42
+ class: unref(designState) ? "designer" : ""
43
+ }), {
40
44
  default: withCtx(() => [
41
45
  createVNode(unref(CodeEditor), {
42
46
  mode: unref(field).options.mode,
@@ -49,7 +53,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
49
53
  }, null, 8, ["mode", "readonly", "value", "onBlur"])
50
54
  ]),
51
55
  _: 1
52
- }, 16, ["rules"])) : createCommentVNode("", true);
56
+ }, 16, ["rules", "class"])) : createCommentVNode("", true);
53
57
  };
54
58
  }
55
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"code-editor-widget.vue2.js","sources":["../../../../src/components/field-widget/code-editor-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <CodeEditor\n :mode=\"field.options.mode\"\n :readonly=\"field.options.readonly || isReadMode\"\n v-model:value=\"fieldModel\"\n ref=\"fieldEditor\"\n @blur=\"handleBlurCustomEvent\"\n />\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import { FieldProps, useField } from './useField';\n import { CodeEditor } from 'tmgc2-share';\n\n defineOptions({\n name: WidgetTypeEnum.codeEditor,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n rules,\n fieldEditor,\n field,\n fieldModel,\n isReadMode,\n handleHidden,\n handleBlurCustomEvent,\n defineExposed\n } = useField(props);\n\n defineExpose({\n ...defineExposed\n });\n</script>\n<style lang=\"scss\" scoped></style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsBI,UAAM,QAAQ;AAEd,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,SAAS,KAAK;AAElB,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;cApCwCA,MAAA,YAAA,KAAzCC,aAAAC,YAQoB,iBARpBC,WAQoB,EAAA,KAAA,EAAA,GARO,OAAK,EAAwB,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAChE,MAME;AAAA,UANFI,YAMEJ,MAAA,UAAA,GAAA;AAAA,YALG,MAAMA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACpB,UAAUA,MAAA,KAAA,EAAM,QAAQ,YAAYA,MAAA,UAAA;AAAA,YAC7B,OAAOA,MAAA,UAAA;AAAA,wFAAA,WAAU,QAAA,SAAA;AAAA,qBACrB;AAAA,YAAJ,KAAI;AAAA,YACH,QAAMA,MAAA,qBAAA;AAAA,UAAA;;;;;;;"}
1
+ {"version":3,"file":"code-editor-widget.vue2.js","sources":["../../../../src/components/field-widget/code-editor-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper\n v-bind=\"props\"\n v-if=\"!handleHidden\"\n :rules=\"rules\"\n :class=\"designState ? 'designer' : ''\"\n >\n <CodeEditor\n :mode=\"field.options.mode\"\n :readonly=\"field.options.readonly || isReadMode\"\n v-model:value=\"fieldModel\"\n ref=\"fieldEditor\"\n @blur=\"handleBlurCustomEvent\"\n />\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import { FieldProps, useField } from './useField';\n import { CodeEditor } from 'tmgc2-share';\n\n defineOptions({\n name: WidgetTypeEnum.codeEditor,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n rules,\n designState,\n fieldEditor,\n field,\n fieldModel,\n isReadMode,\n handleHidden,\n handleBlurCustomEvent,\n defineExposed\n } = useField(props);\n\n defineExpose({\n ...defineExposed\n });\n</script>\n<style lang=\"scss\" scoped>\n .designer {\n position: relative;\n &::before {\n position: absolute;\n z-index: 99;\n content: '';\n display: inline-block;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(#000, 0.01);\n }\n }\n</style>\n"],"names":["_unref","_createBlock","_mergeProps","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2BI,UAAM,QAAQ;AAEd,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,SAAS,KAAK;AAElB,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;cAxCUA,MAAA,YAAA,kBAFXC,YAaoB,iBAbpBC,WAaoB,EAAA,KAAA,EAAA,GAZR,OAAK;AAAA,QAEZ,OAAOF,MAAA,KAAA;AAAA,QACP,OAAOA,MAAA,WAAA,IAAW,aAAA;AAAA,MAAA;yBAEnB,MAME;AAAA,UANFG,YAMEH,MAAA,UAAA,GAAA;AAAA,YALG,MAAMA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACpB,UAAUA,MAAA,KAAA,EAAM,QAAQ,YAAYA,MAAA,UAAA;AAAA,YAC7B,OAAOA,MAAA,UAAA;AAAA,wFAAA,WAAU,QAAA,SAAA;AAAA,qBACrB;AAAA,YAAJ,KAAI;AAAA,YACH,QAAMA,MAAA,qBAAA;AAAA,UAAA;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./form-item-wrapper.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const FormItemWrapper = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4322845c"]]);
4
+ const FormItemWrapper = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0930180b"]]);
5
5
  export {
6
6
  FormItemWrapper as default
7
7
  };
@@ -78,7 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
78
78
  const subFormName = computed(() => () => {
79
79
  return getSubFormName ? getSubFormName() : "";
80
80
  });
81
- const size = computed(() => {
81
+ computed(() => {
82
82
  var _a, _b, _c;
83
83
  if ((_b = (_a = props.field) == null ? void 0 : _a.options) == null ? void 0 : _b.size) {
84
84
  return props.field.options.size;
@@ -102,8 +102,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
102
102
  width: labelWidth.value + "px"
103
103
  }
104
104
  },
105
- title: label.value,
106
- size: size.value,
107
105
  rules: _ctx.rules,
108
106
  name: getPropName.value,
109
107
  labelAlign: labelAlign.value,
@@ -130,7 +128,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
130
128
  }, 8, ["title"])], 64)) : createCommentVNode("", true)])) : (openBlock(), createElementBlock("div", _hoisted_6, toDisplayString(label.value), 1))])]),
131
129
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, void 0, true)]),
132
130
  _: 3
133
- }, 8, ["labelCol", "title", "size", "rules", "name", "labelAlign", "class"])]);
131
+ }, 8, ["labelCol", "rules", "name", "labelAlign", "class"])]);
134
132
  };
135
133
  }
136
134
  });
@@ -1 +1 @@
1
- {"version":3,"file":"form-item-wrapper.vue2.js","sources":["../../../../src/components/field-widget/form-item-wrapper.vue"],"sourcesContent":["<template>\n <div class=\"field-wrapper\">\n <FormItem\n :labelCol=\"{ style: { width: labelWidth + 'px' } }\"\n :title=\"label\"\n :size=\"size\"\n :rules=\"rules\"\n :name=\"getPropName\"\n :labelAlign=\"labelAlign\"\n :class=\"[customClass]\"\n >\n <template #label>\n <div class=\"label-box\">\n <span v-if=\"!!field.options.labelIconClass\" class=\"custom-label\">\n <template v-if=\"field.options.labelIconPosition === 'front'\">\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n <template v-else-if=\"field.options.labelIconPosition === 'rear'\">\n <div class=\"label-text\">\n {{ label }}\n </div>\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n </template>\n </span>\n <template v-else>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n </div>\n </template>\n <slot></slot>\n </FormItem>\n </div>\n</template>\n\n<script lang=\"tsx\" setup>\n import { SvgIcon } from 'tmgc2-share';\n import { FieldProps } from './useField';\n import { computed, inject } from 'vue';\n import { FormItem } from 'ant-design-vue';\n import { useDesigner } from '@kp-ui/lowcode-core';\n import { reactive } from 'vue';\n defineOptions({\n name: 'form-item-wrapper'\n });\n\n interface FormItemWrapperProps extends FieldProps {\n rules?: Array<any>;\n }\n const props = withDefaults(defineProps<FormItemWrapperProps>(), {\n parentWidget: null,\n indexOfParentList: 0\n });\n const getSubFormName = inject('getSubFormName', () => '');\n const getSubFormFieldFlag = inject('getSubFormFieldFlag', () => false);\n\n const { formConfig, designer, designState } = useDesigner();\n\n const labelWidth = computed(() => {\n if (props.field?.options?.labelHidden) {\n return 0;\n }\n\n if (props.field?.options?.labelWidth) {\n return props.field.options.labelWidth;\n }\n\n return formConfig.value?.labelWidth;\n });\n\n const label = computed(() => {\n if (props.field?.options?.labelHidden) {\n return '';\n }\n return props.field?.options?.label;\n });\n\n const labelAlign = computed(() => {\n if (props.field?.options?.labelAlign) {\n return props.field.options.labelAlign;\n }\n return formConfig.value?.labelAlign || 'right';\n });\n\n const subFormName = computed(() => () => {\n return getSubFormName ? getSubFormName() : '';\n });\n\n const size = computed(() => {\n if (props.field?.options?.size) {\n return props.field.options.size;\n }\n return formConfig.value?.size || 'middle';\n });\n\n const subFormItemFlag = computed(() => {\n return getSubFormFieldFlag ? getSubFormFieldFlag() : false;\n });\n\n const getPropName = computed(() => {\n if (subFormItemFlag.value && !designState) {\n return (\n subFormName.value +\n '.' +\n props.subFormRowIndex +\n '.' +\n props.field.options.name +\n ''\n );\n } else return props.field.options.name;\n });\n\n const customClass = computed(() =>\n props.field.options.customClass ? props.field.options.customClass.join(' ') : ''\n );\n</script>\n\n<style lang=\"scss\" scoped>\n .field-wrapper {\n position: relative;\n }\n\n .ant-form-item {\n position: relative;\n\n :deep(.ant-form-item-label) {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n span.custom-label {\n display: flex;\n i {\n margin: 0 3px;\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 }\n</style>\n"],"names":["props","__props","getSubFormName","inject","getSubFormFieldFlag","formConfig","designState","useDesigner","labelWidth","computed","field","options","labelHidden","value","label","labelAlign","subFormName","size","subFormItemFlag","getPropName","subFormRowIndex","name","customClass","join","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","FormItem","labelCol","title","rules","class","_createElementVNode","_hoisted_2","labelIconClass","_hoisted_3","labelIconPosition","_Fragment","key","_component_a_tooltip","labelIconTooltip","SvgIcon","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_renderSlot","_ctx","$slots","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"form-item-wrapper.vue2.js","sources":["../../../../src/components/field-widget/form-item-wrapper.vue"],"sourcesContent":["<template>\n <div class=\"field-wrapper\">\n <FormItem\n :labelCol=\"{ style: { width: labelWidth + 'px' } }\"\n :rules=\"rules\"\n :name=\"getPropName\"\n :labelAlign=\"labelAlign\"\n :class=\"[customClass]\"\n >\n <template #label>\n <div class=\"label-box\">\n <span v-if=\"!!field.options.labelIconClass\" class=\"custom-label\">\n <template v-if=\"field.options.labelIconPosition === 'front'\">\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n <template v-else-if=\"field.options.labelIconPosition === 'rear'\">\n <div class=\"label-text\">\n {{ label }}\n </div>\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n </template>\n </span>\n <template v-else>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n </div>\n </template>\n <slot></slot>\n </FormItem>\n </div>\n</template>\n\n<script lang=\"tsx\" setup>\n import { SvgIcon } from 'tmgc2-share';\n import { FieldProps } from './useField';\n import { computed, inject } from 'vue';\n import { FormItem } from 'ant-design-vue';\n import { useDesigner } from '@kp-ui/lowcode-core';\n import { reactive } from 'vue';\n defineOptions({\n name: 'form-item-wrapper'\n });\n\n interface FormItemWrapperProps extends FieldProps {\n rules?: Array<any>;\n }\n const props = withDefaults(defineProps<FormItemWrapperProps>(), {\n parentWidget: null,\n indexOfParentList: 0\n });\n const getSubFormName = inject('getSubFormName', () => '');\n const getSubFormFieldFlag = inject('getSubFormFieldFlag', () => false);\n\n const { formConfig, designer, designState } = useDesigner();\n\n const labelWidth = computed(() => {\n if (props.field?.options?.labelHidden) {\n return 0;\n }\n\n if (props.field?.options?.labelWidth) {\n return props.field.options.labelWidth;\n }\n\n return formConfig.value?.labelWidth;\n });\n\n const label = computed(() => {\n if (props.field?.options?.labelHidden) {\n return '';\n }\n return props.field?.options?.label;\n });\n\n const labelAlign = computed(() => {\n if (props.field?.options?.labelAlign) {\n return props.field.options.labelAlign;\n }\n return formConfig.value?.labelAlign || 'right';\n });\n\n const subFormName = computed(() => () => {\n return getSubFormName ? getSubFormName() : '';\n });\n\n const size = computed(() => {\n if (props.field?.options?.size) {\n return props.field.options.size;\n }\n return formConfig.value?.size || 'middle';\n });\n\n const subFormItemFlag = computed(() => {\n return getSubFormFieldFlag ? getSubFormFieldFlag() : false;\n });\n\n const getPropName = computed(() => {\n if (subFormItemFlag.value && !designState) {\n return (\n subFormName.value +\n '.' +\n props.subFormRowIndex +\n '.' +\n props.field.options.name +\n ''\n );\n } else return props.field.options.name;\n });\n\n const customClass = computed(() =>\n props.field.options.customClass ? props.field.options.customClass.join(' ') : ''\n );\n</script>\n\n<style lang=\"scss\" scoped>\n .field-wrapper {\n position: relative;\n }\n\n .ant-form-item {\n position: relative;\n\n :deep(.ant-form-item-label) {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n span.custom-label {\n display: flex;\n i {\n margin: 0 3px;\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 }\n</style>\n"],"names":["props","__props","getSubFormName","inject","getSubFormFieldFlag","formConfig","designState","useDesigner","labelWidth","computed","field","options","labelHidden","value","label","labelAlign","subFormName","size","subFormItemFlag","getPropName","subFormRowIndex","name","customClass","join","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","FormItem","labelCol","rules","class","_createElementVNode","_hoisted_2","labelIconClass","_hoisted_3","labelIconPosition","_Fragment","key","_component_a_tooltip","title","labelIconTooltip","SvgIcon","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_renderSlot","_ctx","$slots","undefined"],"mappings":"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"}
@@ -414,7 +414,7 @@ function useField(props, isInitModelValue = true) {
414
414
  getFormRef().clearValidate(getPropName.value);
415
415
  };
416
416
  const getVfCtx = () => {
417
- return getFormRef().vfCtx;
417
+ return getFormRef().vfCtx || {};
418
418
  };
419
419
  const setLabel = (newLabel) => {
420
420
  props.field.options.label = newLabel;