@kp-ui/lowcode-pc 1.0.5 → 1.0.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.
Files changed (133) hide show
  1. package/assets/styles/style.css +54 -54
  2. package/core/src/components/common/RenderWidgetList.vue.js +1 -1
  3. package/core/src/components/common/RenderWidgetList.vue2.js +13 -2
  4. package/core/src/components/common/RenderWidgetList.vue2.js.map +1 -1
  5. package/core/src/components/common/render/Debugger.vue.js +1 -1
  6. package/core/src/components/common/render/Debugger.vue2.js +1 -12
  7. package/core/src/components/common/render/Debugger.vue2.js.map +1 -1
  8. package/core/src/hooks/useAppRef.js +1 -0
  9. package/core/src/hooks/useAppRef.js.map +1 -1
  10. package/core/src/hooks/useDesigner.js +4 -0
  11. package/core/src/hooks/useDesigner.js.map +1 -1
  12. package/core/src/hooks/useField.js +7 -4
  13. package/core/src/hooks/useField.js.map +1 -1
  14. package/core/src/hooks/useWebMCP.js +73 -0
  15. package/core/src/hooks/useWebMCP.js.map +1 -1
  16. package/core/src/lang/en-US.js +5 -0
  17. package/core/src/lang/en-US.js.map +1 -1
  18. package/core/src/lang/zh-CN.js +6 -0
  19. package/core/src/lang/zh-CN.js.map +1 -1
  20. package/package.json +36 -36
  21. package/src/components/desginer/form-widget/container-widget/data-table-widget.vue.js +1 -1
  22. package/src/components/desginer/form-widget/container-widget/data-table-widget.vue2.js +15 -3
  23. package/src/components/desginer/form-widget/container-widget/data-table-widget.vue2.js.map +1 -1
  24. package/src/components/desginer/form-widget/container-widget/grid-col-widget.vue2.js +1 -2
  25. package/src/components/desginer/form-widget/container-widget/grid-col-widget.vue2.js.map +1 -1
  26. package/src/components/desginer/form-widget/container-widget/grid-sub-form-widget.vue2.js +1 -2
  27. package/src/components/desginer/form-widget/container-widget/grid-sub-form-widget.vue2.js.map +1 -1
  28. package/src/components/desginer/form-widget/container-widget/grid-widget.vue2.js +1 -2
  29. package/src/components/desginer/form-widget/container-widget/grid-widget.vue2.js.map +1 -1
  30. package/src/components/desginer/form-widget/container-widget/tab-widget.vue.js +1 -1
  31. package/src/components/desginer/form-widget/container-widget/tab-widget.vue2.js +9 -7
  32. package/src/components/desginer/form-widget/container-widget/tab-widget.vue2.js.map +1 -1
  33. package/src/components/desginer/form-widget/container-widget/useTableWidget.js +24 -5
  34. package/src/components/desginer/form-widget/container-widget/useTableWidget.js.map +1 -1
  35. package/src/components/desginer/form-widget/container-widget/vf-box-widget.vue2.js +1 -2
  36. package/src/components/desginer/form-widget/container-widget/vf-box-widget.vue2.js.map +1 -1
  37. package/src/components/desginer/form-widget/container-widget/vf-collapse-widget.vue2.js +1 -2
  38. package/src/components/desginer/form-widget/container-widget/vf-collapse-widget.vue2.js.map +1 -1
  39. package/src/components/desginer/form-widget/container-widget/vf-dialog-widget.vue2.js +2 -3
  40. package/src/components/desginer/form-widget/container-widget/vf-dialog-widget.vue2.js.map +1 -1
  41. package/src/components/desginer/widget-panel/advanced/data-table.js +7 -0
  42. package/src/components/desginer/widget-panel/advanced/data-table.js.map +1 -1
  43. package/src/components/desginer/widget-panel/containers/tab-pane.js.map +1 -1
  44. package/src/components/field-widget/bpmn-editor-widget.vue2.js +0 -1
  45. package/src/components/field-widget/bpmn-editor-widget.vue2.js.map +1 -1
  46. package/src/components/field-widget/button-list-widget.vue2.js +1 -2
  47. package/src/components/field-widget/button-list-widget.vue2.js.map +1 -1
  48. package/src/components/field-widget/button-widget.vue2.js +0 -1
  49. package/src/components/field-widget/button-widget.vue2.js.map +1 -1
  50. package/src/components/field-widget/cascader-widget.vue2.js +0 -1
  51. package/src/components/field-widget/cascader-widget.vue2.js.map +1 -1
  52. package/src/components/field-widget/checkbox-widget.vue2.js +0 -1
  53. package/src/components/field-widget/checkbox-widget.vue2.js.map +1 -1
  54. package/src/components/field-widget/code-editor-widget.vue2.js +0 -1
  55. package/src/components/field-widget/code-editor-widget.vue2.js.map +1 -1
  56. package/src/components/field-widget/color-widget.vue2.js +0 -1
  57. package/src/components/field-widget/color-widget.vue2.js.map +1 -1
  58. package/src/components/field-widget/date-range-widget.vue2.js +0 -1
  59. package/src/components/field-widget/date-range-widget.vue2.js.map +1 -1
  60. package/src/components/field-widget/date-widget.vue2.js +0 -1
  61. package/src/components/field-widget/date-widget.vue2.js.map +1 -1
  62. package/src/components/field-widget/divider-widget.vue2.js +0 -1
  63. package/src/components/field-widget/divider-widget.vue2.js.map +1 -1
  64. package/src/components/field-widget/diy-compontent-widget.vue2.js +12 -4
  65. package/src/components/field-widget/diy-compontent-widget.vue2.js.map +1 -1
  66. package/src/components/field-widget/dropdown-widget.vue2.js +0 -1
  67. package/src/components/field-widget/dropdown-widget.vue2.js.map +1 -1
  68. package/src/components/field-widget/file-upload-widget.vue2.js +0 -1
  69. package/src/components/field-widget/file-upload-widget.vue2.js.map +1 -1
  70. package/src/components/field-widget/form-item-wrapper.vue.js +1 -1
  71. package/src/components/field-widget/form-item-wrapper.vue2.js +2 -2
  72. package/src/components/field-widget/form-item-wrapper.vue2.js.map +1 -1
  73. package/src/components/field-widget/html-text-widget.vue2.js +0 -1
  74. package/src/components/field-widget/html-text-widget.vue2.js.map +1 -1
  75. package/src/components/field-widget/input-widget.vue2.js +0 -1
  76. package/src/components/field-widget/input-widget.vue2.js.map +1 -1
  77. package/src/components/field-widget/number-widget.vue2.js +0 -1
  78. package/src/components/field-widget/number-widget.vue2.js.map +1 -1
  79. package/src/components/field-widget/radio-widget.vue2.js +0 -1
  80. package/src/components/field-widget/radio-widget.vue2.js.map +1 -1
  81. package/src/components/field-widget/rate-widget.vue2.js +0 -1
  82. package/src/components/field-widget/rate-widget.vue2.js.map +1 -1
  83. package/src/components/field-widget/rich-editor-widget.vue2.js +0 -1
  84. package/src/components/field-widget/rich-editor-widget.vue2.js.map +1 -1
  85. package/src/components/field-widget/select-widget.vue2.js +0 -1
  86. package/src/components/field-widget/select-widget.vue2.js.map +1 -1
  87. package/src/components/field-widget/slider-widget.vue2.js +0 -1
  88. package/src/components/field-widget/slider-widget.vue2.js.map +1 -1
  89. package/src/components/field-widget/static-text-widget.vue2.js +0 -1
  90. package/src/components/field-widget/static-text-widget.vue2.js.map +1 -1
  91. package/src/components/field-widget/switch-widget.vue2.js +0 -1
  92. package/src/components/field-widget/switch-widget.vue2.js.map +1 -1
  93. package/src/components/field-widget/textarea-widget.vue2.js +0 -1
  94. package/src/components/field-widget/textarea-widget.vue2.js.map +1 -1
  95. package/src/components/field-widget/time-range-widget.vue2.js +0 -1
  96. package/src/components/field-widget/time-range-widget.vue2.js.map +1 -1
  97. package/src/components/field-widget/time-widget.vue2.js +0 -1
  98. package/src/components/field-widget/time-widget.vue2.js.map +1 -1
  99. package/src/components/field-widget/tree-widget.vue2.js +0 -1
  100. package/src/components/field-widget/tree-widget.vue2.js.map +1 -1
  101. package/src/components/field-widget/treeSelect-widget.vue2.js +0 -1
  102. package/src/components/field-widget/treeSelect-widget.vue2.js.map +1 -1
  103. package/src/components/field-widget/vue-render-widget.vue2.js +0 -1
  104. package/src/components/field-widget/vue-render-widget.vue2.js.map +1 -1
  105. package/src/components/form-render/RenderWigetList.vue2.js +7 -6
  106. package/src/components/form-render/RenderWigetList.vue2.js.map +1 -1
  107. package/src/components/form-render/container-items/data-table-widget.vue2.js +1 -2
  108. package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
  109. package/src/components/form-render/container-items/grid-col-widget.vue2.js +1 -2
  110. package/src/components/form-render/container-items/grid-col-widget.vue2.js.map +1 -1
  111. package/src/components/form-render/container-items/grid-sub-form-widget.vue.js +1 -1
  112. package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js +2 -6
  113. package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js.map +1 -1
  114. package/src/components/form-render/container-items/grid-widget.vue2.js +1 -2
  115. package/src/components/form-render/container-items/grid-widget.vue2.js.map +1 -1
  116. package/src/components/form-render/container-items/tab-widget.vue.js +1 -1
  117. package/src/components/form-render/container-items/tab-widget.vue2.js +16 -3
  118. package/src/components/form-render/container-items/tab-widget.vue2.js.map +1 -1
  119. package/src/components/form-render/container-items/vf-box-widget.vue.js +1 -1
  120. package/src/components/form-render/container-items/vf-box-widget.vue2.js +4 -6
  121. package/src/components/form-render/container-items/vf-box-widget.vue2.js.map +1 -1
  122. package/src/components/form-render/container-items/vf-collapse-widget.vue2.js +1 -2
  123. package/src/components/form-render/container-items/vf-collapse-widget.vue2.js.map +1 -1
  124. package/src/components/public/ActionButtonListRender.vue.js +50 -127
  125. package/src/components/public/ActionButtonListRender.vue.js.map +1 -1
  126. package/src/components/public/ActionButtonListRender.vue2.js +130 -0
  127. package/src/components/public/{ActionButtonListRender.vue3.js.map → ActionButtonListRender.vue2.js.map} +1 -1
  128. package/src/components/public/ConfigView/CustomPageRender.vue.js +1 -1
  129. package/src/components/public/CustomerModal/CustomerModal.vue2.js +1 -1
  130. package/src/components/public/DynamicDialog.vue.js +1 -1
  131. package/src/components/render/index.vue2.js +1 -1
  132. package/stats.html +1 -1
  133. package/src/components/public/ActionButtonListRender.vue3.js +0 -53
@@ -30,20 +30,20 @@
30
30
  }
31
31
  @tailwind components;
32
32
  @tailwind utilities;
33
- .sub-form-container[data-v-0268e409] {
33
+ .sub-form-container[data-v-79efc207] {
34
34
  margin-bottom: 16px;
35
35
  text-align: left;
36
36
  background: #fafafa;
37
37
  border-radius: 8px;
38
38
  padding: 10px;
39
39
  }
40
- .sub-form-container .header-row[data-v-0268e409] {
40
+ .sub-form-container .header-row[data-v-79efc207] {
41
41
  margin-top: 15px;
42
42
  }
43
- .sub-form-container .header-row[data-v-0268e409] .action-button {
43
+ .sub-form-container .header-row[data-v-79efc207] .action-button {
44
44
  height: 35px;
45
45
  }
46
- .sub-form-container .sub-form-row[data-v-0268e409] {
46
+ .sub-form-container .sub-form-row[data-v-79efc207] {
47
47
  display: flex;
48
48
  align-items: center;
49
49
  background: white;
@@ -51,22 +51,22 @@
51
51
  border-radius: 6px;
52
52
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
53
53
  }
54
- .sub-form-container .sub-form-row .row-number-span[data-v-0268e409] {
54
+ .sub-form-container .sub-form-row .row-number-span[data-v-79efc207] {
55
55
  margin-left: 16px;
56
56
  }
57
- .sub-form-action-column[data-v-0268e409] {
57
+ .sub-form-action-column[data-v-79efc207] {
58
58
  display: inline-block;
59
59
  align-items: center;
60
60
  text-align: center;
61
61
  padding: 8px;
62
62
  }
63
- .grid-sub-form-data-row[data-v-0268e409] {
63
+ .grid-sub-form-data-row[data-v-79efc207] {
64
64
  display: inline-block;
65
65
  flex: 1;
66
66
  padding: 10px;
67
67
  position: relative;
68
68
  }
69
- .grid-sub-form-data-row[data-v-0268e409]:before, .grid-sub-form-data-row[data-v-0268e409]:after {
69
+ .grid-sub-form-data-row[data-v-79efc207]:before, .grid-sub-form-data-row[data-v-79efc207]:after {
70
70
  content: "";
71
71
  display: inline-block;
72
72
  width: 1px;
@@ -76,16 +76,16 @@
76
76
  top: 50%;
77
77
  transform: translateY(-50%);
78
78
  }
79
- .grid-sub-form-data-row[data-v-0268e409]:before {
79
+ .grid-sub-form-data-row[data-v-79efc207]:before {
80
80
  left: 0;
81
81
  }
82
- .grid-sub-form-data-row[data-v-0268e409]:after {
82
+ .grid-sub-form-data-row[data-v-79efc207]:after {
83
83
  right: 0;
84
84
  }
85
- .grid-sub-form-data-row[data-v-0268e409] .ant-form-item {
85
+ .grid-sub-form-data-row[data-v-79efc207] .ant-form-item {
86
86
  margin-bottom: 0;
87
87
  }
88
- .row-no-column[data-v-0268e409] {
88
+ .row-no-column[data-v-79efc207] {
89
89
  display: flex;
90
90
  align-items: center;
91
91
  width: 50px;
@@ -96,7 +96,7 @@
96
96
  font-size: 14px;
97
97
  color: #666;
98
98
  }
99
- .action-button-column[data-v-0268e409] {
99
+ .action-button-column[data-v-79efc207] {
100
100
  width: 140px;
101
101
  }.grid-cell[data-v-13ad810a] {
102
102
  padding: 3px;
@@ -251,17 +251,17 @@
251
251
  overflow: hidden;
252
252
  background-color: #fff;
253
253
  }
254
- .box-container[data-v-053bd1ae] {
254
+ .box-container[data-v-2f18f5a7] {
255
255
  width: 100%;
256
256
  position: relative;
257
257
  }
258
- .tab-container .form-widget-list[data-v-1080446b] {
258
+ .tab-container .form-widget-list[data-v-7dd195c1] {
259
259
  min-height: 28px;
260
260
  }
261
- .tab-container[data-v-1080446b] .ant-tabs.ant-tabs-bottom .ant-tabs-nav-wrap, .tab-container[data-v-1080446b] .ant-tabs.ant-tabs-top .ant-tabs-nav-wrap {
261
+ .tab-container[data-v-7dd195c1] .ant-tabs.ant-tabs-bottom .ant-tabs-nav-wrap, .tab-container[data-v-7dd195c1] .ant-tabs.ant-tabs-top .ant-tabs-nav-wrap {
262
262
  padding-left: 26px;
263
263
  }
264
- .tab-container[data-v-1080446b] .tab-content-wrapper {
264
+ .tab-container[data-v-7dd195c1] .tab-content-wrapper {
265
265
  min-height: 100px;
266
266
  }.drag-handler[data-v-d93fc5cc] {
267
267
  position: absolute;
@@ -344,38 +344,38 @@
344
344
  .widget-wrapper .action-buttons[data-v-f2552afd]:hover {
345
345
  background-color: #ff4d4f;
346
346
  }
347
- .designer-widget-list[data-v-0fdc8abe] {
347
+ .designer-widget-list[data-v-cdfa16a0] {
348
348
  position: relative;
349
349
  display: flex;
350
350
  flex-direction: column;
351
351
  }
352
- .designer-widget-list.empty-list[data-v-0fdc8abe] {
352
+ .designer-widget-list.empty-list[data-v-cdfa16a0] {
353
353
  min-height: 96px;
354
354
  }
355
- .designer-widget-list .empty-drop-zone[data-v-0fdc8abe] {
355
+ .designer-widget-list .empty-drop-zone[data-v-cdfa16a0] {
356
356
  position: absolute;
357
357
  left: 0;
358
358
  width: 100%;
359
359
  z-index: 2;
360
360
  }
361
- .designer-widget-list[data-v-0fdc8abe] .sortable-ghost {
361
+ .designer-widget-list[data-v-cdfa16a0] .sortable-ghost {
362
362
  z-index: 99;
363
363
  }
364
- .list-transition-container[data-v-0fdc8abe] {
364
+ .list-transition-container[data-v-cdfa16a0] {
365
365
  display: flex;
366
366
  flex-direction: column;
367
367
  padding: 2px;
368
368
  }
369
- .transition-group-el[data-v-0fdc8abe] {
369
+ .transition-group-el[data-v-cdfa16a0] {
370
370
  position: relative;
371
371
  padding: 1px;
372
372
  }
373
- .transition-group-el .sortable-ghost[data-v-0fdc8abe] {
373
+ .transition-group-el .sortable-ghost[data-v-cdfa16a0] {
374
374
  width: 100%;
375
375
  }
376
376
 
377
377
  /* SortableJS 自动应用的类 */
378
- .ghost-placeholder[data-v-0fdc8abe] {
378
+ .ghost-placeholder[data-v-cdfa16a0] {
379
379
  opacity: 0.5;
380
380
  background: #c8ebfb;
381
381
  border: 2px dashed var(--ant-primary-color);
@@ -383,10 +383,10 @@
383
383
  margin: 4px 0;
384
384
  border-radius: 4px;
385
385
  }
386
- .sortable-chosen[data-v-0fdc8abe] {
386
+ .sortable-chosen[data-v-cdfa16a0] {
387
387
  background: #fdfdfd;
388
388
  }
389
- .empty-drop-zone[data-v-0fdc8abe] {
389
+ .empty-drop-zone[data-v-cdfa16a0] {
390
390
  line-height: 1.2;
391
391
  display: flex;
392
392
  align-items: center;
@@ -404,10 +404,10 @@
404
404
  color: #999;
405
405
  font-size: 14px;
406
406
  }
407
- .desginer-canvas[data-v-0fdc8abe] .ant-form-item {
407
+ .desginer-canvas[data-v-cdfa16a0] .ant-form-item {
408
408
  margin-bottom: 0;
409
409
  }/* 调试面板样式 */
410
- .debug-panel[data-v-10eb5e61] {
410
+ .debug-panel[data-v-db68aa3b] {
411
411
  position: absolute;
412
412
  top: 0;
413
413
  right: 0;
@@ -422,18 +422,18 @@
422
422
  border-top-left-radius: 8px;
423
423
  border-bottom-left-radius: 8px;
424
424
  }
425
- .debug-panel[data-v-10eb5e61] .jv-container .jv-code {
425
+ .debug-panel[data-v-db68aa3b] .jv-container .jv-code {
426
426
  padding: 0;
427
427
  }
428
- .debug-panel.collapsed[data-v-10eb5e61] {
428
+ .debug-panel.collapsed[data-v-db68aa3b] {
429
429
  transform: translateX(400px);
430
430
  }
431
- .debug-panel.collapsed .debug-toggle[data-v-10eb5e61] {
431
+ .debug-panel.collapsed .debug-toggle[data-v-db68aa3b] {
432
432
  left: -40px;
433
433
  border-radius: 8px 0 0 8px;
434
434
  width: 40px;
435
435
  }
436
- .debug-panel .debug-toggle[data-v-10eb5e61] {
436
+ .debug-panel .debug-toggle[data-v-db68aa3b] {
437
437
  position: absolute;
438
438
  left: -40px;
439
439
  top: 20px;
@@ -452,20 +452,20 @@
452
452
  padding: 8px 0;
453
453
  user-select: none;
454
454
  }
455
- .debug-panel .debug-content[data-v-10eb5e61] {
455
+ .debug-panel .debug-content[data-v-db68aa3b] {
456
456
  flex: 1;
457
457
  overflow: auto;
458
458
  padding: 16px;
459
459
  background-color: #f5f7fa;
460
460
  }
461
- .debug-panel .debug-content .debug-section[data-v-10eb5e61] {
461
+ .debug-panel .debug-content .debug-section[data-v-db68aa3b] {
462
462
  margin-bottom: 24px;
463
463
  background-color: #fff;
464
464
  border-radius: 8px;
465
465
  padding: 16px;
466
466
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
467
467
  }
468
- .debug-panel .debug-content .debug-section h3[data-v-10eb5e61] {
468
+ .debug-panel .debug-content .debug-section h3[data-v-db68aa3b] {
469
469
  margin: 0 0 12px 0;
470
470
  font-size: 14px;
471
471
  font-weight: 600;
@@ -473,18 +473,18 @@
473
473
  border-bottom: 1px solid #e8e8e8;
474
474
  padding-bottom: 8px;
475
475
  }
476
- .debug-panel .debug-content .debug-section .empty-state[data-v-10eb5e61] {
476
+ .debug-panel .debug-content .debug-section .empty-state[data-v-db68aa3b] {
477
477
  color: #999;
478
478
  font-size: 12px;
479
479
  text-align: center;
480
480
  padding: 20px;
481
481
  }
482
- .debug-panel .debug-content .debug-section .widget-list[data-v-10eb5e61] {
482
+ .debug-panel .debug-content .debug-section .widget-list[data-v-db68aa3b] {
483
483
  display: flex;
484
484
  flex-direction: column;
485
485
  gap: 2px;
486
486
  }
487
- .debug-panel .debug-content .debug-section .widget-list .widget-item[data-v-10eb5e61] {
487
+ .debug-panel .debug-content .debug-section .widget-list .widget-item[data-v-db68aa3b] {
488
488
  border: 1px solid #e8e8e8;
489
489
  border-radius: 4px;
490
490
  padding: 2px 4px;
@@ -492,12 +492,12 @@
492
492
  background-color: #fafafa;
493
493
  cursor: pointer;
494
494
  }
495
- .debug-panel .debug-content .debug-section .widget-list .widget-item .widget-key[data-v-10eb5e61] {
495
+ .debug-panel .debug-content .debug-section .widget-list .widget-item .widget-key[data-v-db68aa3b] {
496
496
  font-weight: 600;
497
497
  color: var(--ant-primary-color);
498
498
  font-size: 12px;
499
499
  }
500
- .debug-panel .debug-content pre[data-v-10eb5e61] {
500
+ .debug-panel .debug-content pre[data-v-db68aa3b] {
501
501
  margin: 0;
502
502
  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
503
503
  font-size: 12px;
@@ -509,25 +509,25 @@
509
509
  color: #333;
510
510
  }
511
511
 
512
- .field-wrapper[data-v-fe290edb] {
512
+ .field-wrapper[data-v-1e482344] {
513
513
  position: relative;
514
514
  }
515
- .ant-form-item[data-v-fe290edb] {
515
+ .ant-form-item[data-v-1e482344] {
516
516
  position: relative;
517
517
  /* 隐藏Chrome浏览器中el-input数字输入框右侧的上下调整小箭头 */
518
518
  }
519
- .ant-form-item[data-v-fe290edb] .ant-form-item-label {
519
+ .ant-form-item[data-v-1e482344] .ant-form-item-label {
520
520
  white-space: nowrap;
521
521
  text-overflow: ellipsis;
522
522
  }
523
- .ant-form-item span.custom-label[data-v-fe290edb] {
523
+ .ant-form-item span.custom-label[data-v-1e482344] {
524
524
  display: flex;
525
525
  }
526
- .ant-form-item span.custom-label i[data-v-fe290edb] {
526
+ .ant-form-item span.custom-label i[data-v-1e482344] {
527
527
  margin: 0 3px;
528
528
  }
529
- .ant-form-item[data-v-fe290edb] .hide-spin-button input::-webkit-outer-spin-button,
530
- .ant-form-item[data-v-fe290edb] .hide-spin-button input::-webkit-inner-spin-button {
529
+ .ant-form-item[data-v-1e482344] .hide-spin-button input::-webkit-outer-spin-button,
530
+ .ant-form-item[data-v-1e482344] .hide-spin-button input::-webkit-inner-spin-button {
531
531
  -webkit-appearance: none !important;
532
532
  }[data-v-3974eef4] .bjs-powered-by {
533
533
  display: none;
@@ -706,25 +706,25 @@
706
706
  }
707
707
  .grid-container .form-widget-list[data-v-d41dbfac] {
708
708
  min-height: 28px;
709
- }.top-action[data-v-d47a2444] {
709
+ }.top-action[data-v-63f1a31d] {
710
710
  display: flex;
711
711
  gap: 8px;
712
712
  padding: 4px 0 8px;
713
713
  }
714
- .talbe-wrapper[data-v-d47a2444] {
714
+ .talbe-wrapper[data-v-63f1a31d] {
715
715
  width: 100%;
716
716
  }
717
- .talbe-wrapper .vxe-grid[data-v-d47a2444] {
717
+ .talbe-wrapper .vxe-grid[data-v-63f1a31d] {
718
718
  width: 100%;
719
719
  }
720
- .talbe-wrapper__pagination[data-v-d47a2444] {
720
+ .talbe-wrapper__pagination[data-v-63f1a31d] {
721
721
  margin-top: 10px;
722
722
  display: flex;
723
723
  justify-content: end;
724
- }.tab-container .form-widget-list[data-v-3280ee5e] {
724
+ }.tab-container .form-widget-list[data-v-149d976d] {
725
725
  min-height: 28px;
726
726
  }
727
- .tab-container[data-v-3280ee5e] .ant-tabs.ant-tabs-bottom .ant-tabs-nav-wrap, .tab-container[data-v-3280ee5e] .ant-tabs.ant-tabs-top .ant-tabs-nav-wrap {
727
+ .tab-container[data-v-149d976d] .ant-tabs.ant-tabs-bottom .ant-tabs-nav-wrap, .tab-container[data-v-149d976d] .ant-tabs.ant-tabs-top .ant-tabs-nav-wrap {
728
728
  padding-left: 26px;
729
729
  }.collapse-container[data-v-eefdb1f5] {
730
730
  display: flex;
@@ -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-0fdc8abe"]]);
4
+ const RenderWidgetList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-cdfa16a0"]]);
5
5
  export {
6
6
  RenderWidgetList as default
7
7
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeModels, useModel, createBlock, createElementBlock, unref, openBlock, normalizeClass, withCtx, createCommentVNode, createElementVNode, createVNode, resolveDynamicComponent, Fragment, renderList } from "vue";
1
+ import { defineComponent, mergeModels, provide, toRef, useModel, createBlock, createElementBlock, unref, openBlock, normalizeClass, withCtx, createCommentVNode, createElementVNode, createVNode, resolveDynamicComponent, Fragment, renderList } from "vue";
2
2
  import Draggable from "vuedraggable";
3
3
  import { useDesigner } from "../../hooks/useDesigner.js";
4
4
  import WidgetWrapper from "./desginer/WidgetWrapper.vue.js";
@@ -15,6 +15,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15
15
  },
16
16
  __name: "RenderWidgetList",
17
17
  props: /* @__PURE__ */ mergeModels({
18
+ subFormRowIndex: {},
18
19
  isCanvas: { type: Boolean, default: false },
19
20
  allowTypes: { default: () => [] },
20
21
  notAllowTypes: { default: () => [] },
@@ -28,7 +29,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
28
29
  }),
29
30
  emits: ["update:list"],
30
31
  setup(__props) {
31
- const { designer, onDragAdd, onDragUpdate, designState, getWidget } = useDesigner();
32
+ const props = __props;
33
+ const {
34
+ designer,
35
+ onDragAdd,
36
+ onDragUpdate,
37
+ designState,
38
+ getWidget
39
+ } = useDesigner();
40
+ if (typeof props.subFormRowIndex === "number") {
41
+ provide("subFormRowIndex", toRef(props.subFormRowIndex));
42
+ }
32
43
  const onMove = (evt) => {
33
44
  return designer.value.checkWidgetMove(evt);
34
45
  };
@@ -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 :data-allow-types=\"allowTypes.join(',')\"\n :data-not-allow-types=\"notAllowTypes.join(',')\"\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\n v-for=\"(widget, index) in draggableList\"\n :key=\"`${widget.id}_${index}`\"\n class=\"t-overflow-hidden\"\n :id=\"widget.id\"\n >\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 allowTypes?: string[];\n notAllowTypes?: string[];\n parentWidget: Widget | FormDesigner | null;\n }>(),\n {\n isCanvas: false,\n allowTypes: () => [],\n notAllowTypes: () => []\n }\n );\n\n const { designer, onDragAdd, onDragUpdate, designState, getWidget } = useDesigner();\n\n const onMove = (evt: any) => {\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","allowTypes","notAllowTypes","_withCtx","_createElementVNode","_createVNode","_resolveDynamicComponent","_createElementBlock","_openBlock","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEI,UAAM,EAAE,UAAU,WAAW,cAAc,aAAa,UAAA,IAAc,YAAA;AAEtE,UAAM,SAAS,CAAC,QAAa;AACzB,aAAO,SAAS,MAAM,gBAAgB,GAAG;AAAA,IAC7C;AAEA,UAAM,gBAAgBA,kBAAsB,MAG3C;;aA9EeC,MAAA,WAAA,kBACZC,YA8BYD,MAAAE,SAAA,GAAA;AAAA;oBA7BC,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,oBAAkBC,KAAAA,WAAW,KAAI,GAAA;AAAA,QACjC,wBAAsBC,KAAAA,cAAc,KAAI,GAAA;AAAA,QACxC,UAAQL,MAAA,YAAA;AAAA,QACR,kCAAM,QAAaA,iBAAU,KAAK,cAAA,KAAa;AAAA,MAAA;QAErC,MAAIM,QACX,CASM,EAAA,SAVkB,QAAQ,YAAK;AAAA,UACrCC,mBASM,OAAA;AAAA,YATA,IAAI,OAAO;AAAA,YAAI,OAAM;AAAA,YAAuB,kBAAgB,OAAO;AAAA,UAAA;YACrEC,YAOgBR,MAAA,aAAA,GAAA;AAAA,cAPA;AAAA,cAAiB;AAAA,cAAsB,MAAM,cAAA;AAAA,qEAAA,cAAa,QAAA;AAAA,YAAA;+BACtE,MAKE;AAAA,8BALFC,YAKEQ,wBAJOT,MAAA,SAAA,EAAU,MAAM,CAAA,GAAA;AAAA,kBACpB;AAAA,kBACA,OAAO;AAAA,kBACP;AAAA,gBAAA;;;;;;QAKN,gBACP,MAAyE;AAAA,UAA7D,CAAA,cAAA,MAAc,uBAA1BU,mBAAyE,OAAzE,YAA0D,WAAS;;;iGAK3EC,UAAA,IAAA,GAAAD,mBAOME,UAAA,EAAA,KAAA,EAAA,GAAAC,WANwB,cAAA,OAAa,CAA/B,QAAQ,UAAK;4BADzBH,mBAOM,OAAA;AAAA,UALD,KAAG,GAAK,OAAO,EAAE,IAAI,KAAK;AAAA,UAC3B,OAAM;AAAA,UACL,IAAI,OAAO;AAAA,QAAA;wBAEZT,YAAqFQ,wBAArET,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 :data-allow-types=\"allowTypes.join(',')\"\n :data-not-allow-types=\"notAllowTypes.join(',')\"\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\n v-for=\"(widget, index) in draggableList\"\n :key=\"`${widget.id}_${index}`\"\n class=\"t-overflow-hidden\"\n :id=\"widget.id\"\n >\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 import { onMounted, provide, toRef } from 'vue';\n\n defineOptions({\n inheritAttrs: false,\n name: 'RenderWidgetList'\n });\n\n const props = withDefaults(\n defineProps<{\n subFormRowIndex?: number | string;\n isCanvas?: boolean;\n allowTypes?: string[];\n notAllowTypes?: string[];\n parentWidget: Widget | FormDesigner | null;\n }>(),\n {\n isCanvas: false,\n allowTypes: () => [],\n notAllowTypes: () => []\n }\n );\n\n const {\n isSubFormField,\n subFormRowIndex,\n designer,\n onDragAdd,\n onDragUpdate,\n designState,\n getWidget\n } = useDesigner();\n\n if (typeof props.subFormRowIndex === 'number') {\n provide('subFormRowIndex', toRef(props.subFormRowIndex));\n }\n\n const onMove = (evt: any) => {\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","allowTypes","notAllowTypes","_withCtx","_createElementVNode","_createVNode","_resolveDynamicComponent","_createElementBlock","_openBlock","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDI,UAAM,QAAQ;AAed,UAAM;AAAA,MAGF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,YAAA;AAEJ,QAAI,OAAO,MAAM,oBAAoB,UAAU;AAC3C,cAAQ,mBAAmB,MAAM,MAAM,eAAe,CAAC;AAAA,IAC3D;AAEA,UAAM,SAAS,CAAC,QAAa;AACzB,aAAO,SAAS,MAAM,gBAAgB,GAAG;AAAA,IAC7C;AAEA,UAAM,gBAAgBA,kBAAsB,MAG3C;;aA5FeC,MAAA,WAAA,kBACZC,YA8BYD,MAAAE,SAAA,GAAA;AAAA;oBA7BC,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,oBAAkBC,KAAAA,WAAW,KAAI,GAAA;AAAA,QACjC,wBAAsBC,KAAAA,cAAc,KAAI,GAAA;AAAA,QACxC,UAAQL,MAAA,YAAA;AAAA,QACR,kCAAM,QAAaA,iBAAU,KAAK,cAAA,KAAa;AAAA,MAAA;QAErC,MAAIM,QACX,CASM,EAAA,SAVkB,QAAQ,YAAK;AAAA,UACrCC,mBASM,OAAA;AAAA,YATA,IAAI,OAAO;AAAA,YAAI,OAAM;AAAA,YAAuB,kBAAgB,OAAO;AAAA,UAAA;YACrEC,YAOgBR,MAAA,aAAA,GAAA;AAAA,cAPA;AAAA,cAAiB;AAAA,cAAsB,MAAM,cAAA;AAAA,qEAAA,cAAa,QAAA;AAAA,YAAA;+BACtE,MAKE;AAAA,8BALFC,YAKEQ,wBAJOT,MAAA,SAAA,EAAU,MAAM,CAAA,GAAA;AAAA,kBACpB;AAAA,kBACA,OAAO;AAAA,kBACP;AAAA,gBAAA;;;;;;QAKN,gBACP,MAAyE;AAAA,UAA7D,CAAA,cAAA,MAAc,uBAA1BU,mBAAyE,OAAzE,YAA0D,WAAS;;;iGAK3EC,UAAA,IAAA,GAAAD,mBAOME,UAAA,EAAA,KAAA,EAAA,GAAAC,WANwB,cAAA,OAAa,CAA/B,QAAQ,UAAK;4BADzBH,mBAOM,OAAA;AAAA,UALD,KAAG,GAAK,OAAO,EAAE,IAAI,KAAK;AAAA,UAC3B,OAAM;AAAA,UACL,IAAI,OAAO;AAAA,QAAA;wBAEZT,YAAqFQ,wBAArET,MAAA,SAAA,EAAU,MAAM,CAAA,GAAA;AAAA,YAAI;AAAA,YAAiB,OAAO;AAAA,YAAS;AAAA,UAAA;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./Debugger.vue2.js";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../../../_virtual/_plugin-vue_export-helper.js";
4
- const Debugger = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-10eb5e61"]]);
4
+ const Debugger = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-db68aa3b"]]);
5
5
  export {
6
6
  Debugger as default
7
7
  };
@@ -6,8 +6,6 @@ const _hoisted_3 = { class: "debug-section" };
6
6
  const _hoisted_4 = { class: "widget-list" };
7
7
  const _hoisted_5 = ["onClick"];
8
8
  const _hoisted_6 = { class: "widget-key" };
9
- const _hoisted_7 = { class: "debug-section" };
10
- const _hoisted_8 = { class: "widget-list" };
11
9
  const _sfc_main = /* @__PURE__ */ defineComponent({
12
10
  __name: "Debugger",
13
11
  props: {
@@ -22,7 +20,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
22
20
  const debugVisible = useModel(__props, "visible");
23
21
  const formDataModel = inject("formData", {});
24
22
  const widgetRefList = inject("refList", ref(/* @__PURE__ */ new Map()));
25
- const formConfig = inject("formConfig", ref({}));
23
+ inject("formConfig", ref({}));
26
24
  return (_ctx, _cache) => {
27
25
  return openBlock(), createElementBlock("div", {
28
26
  class: normalizeClass(["debug-panel", { collapsed: !debugVisible.value }])
@@ -52,15 +50,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
52
50
  ], 8, _hoisted_5);
53
51
  }), 128))
54
52
  ])
55
- ]),
56
- createElementVNode("div", _hoisted_7, [
57
- _cache[2] || (_cache[2] = createElementVNode("h3", null, "FormConfig", -1)),
58
- createElementVNode("div", _hoisted_8, [
59
- createVNode(unref(JsonViewer), {
60
- value: unref(formConfig),
61
- "expand-depth": 5
62
- }, null, 8, ["value"])
63
- ])
64
53
  ])
65
54
  ])
66
55
  ], 2);
@@ -1 +1 @@
1
- {"version":3,"file":"Debugger.vue2.js","sources":["../../../../../../../core/src/components/common/render/Debugger.vue"],"sourcesContent":["<template>\n <div class=\"debug-panel\" :class=\"{ collapsed: !debugVisible }\">\n <div class=\"debug-toggle\" @click=\"debugVisible = !debugVisible\">\n {{ debugVisible ? '收起' : '调试' }}\n </div>\n <div class=\"debug-content\">\n <div class=\"debug-section\">\n <h3>Form Data Model</h3>\n <JsonViewer :value=\"formDataModel\" :expand-depth=\"5\" />\n </div>\n <div class=\"debug-section\">\n <h3>Widget Ref List ({{ widgetRefList.size }} widgets)</h3>\n <div class=\"widget-list\">\n <div\n v-for=\"[key, value] in widgetRefList\"\n @click=\"console.log(value)\"\n :key=\"key\"\n class=\"widget-item\"\n >\n <div class=\"widget-key\">{{ key }}</div>\n </div>\n </div>\n </div>\n <div class=\"debug-section\">\n <h3>FormConfig</h3>\n <div class=\"widget-list\">\n <JsonViewer :value=\"formConfig\" :expand-depth=\"5\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, inject } from 'vue';\n import JsonViewer from 'vue-json-viewer';\n const debugVisible = defineModel('visible', {\n type: Boolean,\n default: false\n });\n\n const formDataModel = inject('formData', {});\n const widgetRefList = inject('refList', ref(new Map()));\n const formConfig = inject('formConfig', ref({}));\n</script>\n\n<style lang=\"less\" scoped>\n /* 调试面板样式 */\n .debug-panel {\n position: absolute;\n top: 0;\n right: 0;\n width: 400px;\n height: 100vh;\n background-color: #fff;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\n z-index: 9999;\n transition: transform 0.3s ease-in-out;\n display: flex;\n flex-direction: column;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n :deep(.jv-container .jv-code) {\n padding: 0;\n }\n\n &.collapsed {\n transform: translateX(400px);\n\n .debug-toggle {\n left: -40px;\n border-radius: 8px 0 0 8px;\n width: 40px;\n }\n }\n\n .debug-toggle {\n position: absolute;\n left: -40px;\n top: 20px;\n width: 40px;\n height: 40px;\n background-color: var(--ant-primary-color);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px 0 0 8px;\n font-size: 12px;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\n writing-mode: vertical-lr;\n padding: 8px 0;\n user-select: none;\n }\n\n .debug-content {\n flex: 1;\n overflow: auto;\n padding: 16px;\n background-color: #f5f7fa;\n\n .debug-section {\n margin-bottom: 24px;\n background-color: #fff;\n border-radius: 8px;\n padding: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n\n h3 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n border-bottom: 1px solid #e8e8e8;\n padding-bottom: 8px;\n }\n\n .empty-state {\n color: #999;\n font-size: 12px;\n text-align: center;\n padding: 20px;\n }\n\n .widget-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n .widget-item {\n border: 1px solid #e8e8e8;\n border-radius: 4px;\n padding: 2px 4px;\n line-height: 1.2;\n background-color: #fafafa;\n cursor: pointer;\n\n .widget-key {\n font-weight: 600;\n color: var(--ant-primary-color);\n font-size: 12px;\n }\n }\n }\n }\n\n pre {\n margin: 0;\n font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n font-size: 12px;\n white-space: pre-wrap;\n word-wrap: break-word;\n background-color: #f5f5f5;\n padding: 8px;\n border-radius: 4px;\n color: #333;\n }\n }\n }\n</style>\n"],"names":["_useModel","_createElementBlock","_normalizeClass","_createElementVNode","_createVNode","_unref","_toDisplayString","_openBlock","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAoCI,UAAM,eAAeA,SAAW,SAAC,SAGhC;AAED,UAAM,gBAAgB,OAAO,YAAY,EAAE;AAC3C,UAAM,gBAAgB,OAAO,WAAW,IAAI,oBAAI,IAAA,CAAK,CAAC;AACtD,UAAM,aAAa,OAAO,cAAc,IAAI,CAAA,CAAE,CAAC;;0BA1C/CC,mBA6BM,OAAA;AAAA,QA7BD,OAAKC,eAAA,CAAC,eAAa,EAAA,WAAA,CAAuB,aAAA,OAAY,CAAA;AAAA,MAAA;QACvDC,mBAEM,OAAA;AAAA,UAFD,OAAM;AAAA,UAAgB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,aAAA,QAAY,CAAI,aAAA;AAAA,QAAA,mBAC3C,aAAA,QAAY,OAAA,IAAA,GAAA,CAAA;AAAA,QAEnBA,mBAwBM,OAxBN,YAwBM;AAAA,UAvBFA,mBAGM,OAHN,YAGM;AAAA,YAFF,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,mBAAwB,YAApB,mBAAe,EAAA;AAAA,YACnBC,YAAuDC,MAAA,UAAA,GAAA;AAAA,cAA1C,OAAOA,MAAA,aAAA;AAAA,cAAgB,gBAAc;AAAA,YAAA;;UAEtDF,mBAYM,OAZN,YAYM;AAAA,YAXFA,mBAA2D,YAAvD,sBAAiBG,gBAAGD,qBAAc,IAAI,IAAG,aAAS,CAAA;AAAA,YACtDF,mBASM,OATN,YASM;AAAA,eARFI,UAAA,IAAA,GAAAN,mBAOMO,UAAA,MAAAC,WANqBJ,MAAA,aAAA,GAAa,CAAA,CAA5B,KAAK,KAAK,MAAA;oCADtBJ,mBAOM,OAAA;AAAA,kBALD,SAAK,CAAA,WAAE,QAAQ,IAAI,KAAK;AAAA,kBACxB;AAAA,kBACD,OAAM;AAAA,gBAAA;kBAENE,mBAAuC,OAAvC,YAAuCG,gBAAZ,GAAG,GAAA,CAAA;AAAA,gBAAA;;;;UAI1CH,mBAKM,OALN,YAKM;AAAA,YAJF,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,mBAAmB,YAAf,cAAU,EAAA;AAAA,YACdA,mBAEM,OAFN,YAEM;AAAA,cADFC,YAAoDC,MAAA,UAAA,GAAA;AAAA,gBAAvC,OAAOA,MAAA,UAAA;AAAA,gBAAa,gBAAc;AAAA,cAAA;;;;;;;;"}
1
+ {"version":3,"file":"Debugger.vue2.js","sources":["../../../../../../../core/src/components/common/render/Debugger.vue"],"sourcesContent":["<template>\n <div class=\"debug-panel\" :class=\"{ collapsed: !debugVisible }\">\n <div class=\"debug-toggle\" @click=\"debugVisible = !debugVisible\">\n {{ debugVisible ? '收起' : '调试' }}\n </div>\n <div class=\"debug-content\">\n <div class=\"debug-section\">\n <h3>Form Data Model</h3>\n <JsonViewer :value=\"formDataModel\" :expand-depth=\"5\" />\n </div>\n <div class=\"debug-section\">\n <h3>Widget Ref List ({{ widgetRefList.size }} widgets)</h3>\n <div class=\"widget-list\">\n <div\n v-for=\"[key, value] in widgetRefList\"\n @click=\"console.log(value)\"\n :key=\"key\"\n class=\"widget-item\"\n >\n <div class=\"widget-key\">{{ key }}</div>\n </div>\n </div>\n </div>\n <!-- <div class=\"debug-section\">\n <h3>FormConfig</h3>\n <div class=\"widget-list\">\n <JsonViewer :value=\"formConfig || {}\" :expand-depth=\"5\" />\n </div>\n </div> -->\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { ref, inject, computed } from 'vue';\n import JsonViewer from 'vue-json-viewer';\n const debugVisible = defineModel('visible', {\n type: Boolean,\n default: false\n });\n\n const formDataModel = inject('formData', {});\n const widgetRefList = inject('refList', ref(new Map()));\n const formConfig = inject('formConfig', ref({}));\n</script>\n\n<style lang=\"less\" scoped>\n /* 调试面板样式 */\n .debug-panel {\n position: absolute;\n top: 0;\n right: 0;\n width: 400px;\n height: 100vh;\n background-color: #fff;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\n z-index: 9999;\n transition: transform 0.3s ease-in-out;\n display: flex;\n flex-direction: column;\n border-top-left-radius: 8px;\n border-bottom-left-radius: 8px;\n :deep(.jv-container .jv-code) {\n padding: 0;\n }\n\n &.collapsed {\n transform: translateX(400px);\n\n .debug-toggle {\n left: -40px;\n border-radius: 8px 0 0 8px;\n width: 40px;\n }\n }\n\n .debug-toggle {\n position: absolute;\n left: -40px;\n top: 20px;\n width: 40px;\n height: 40px;\n background-color: var(--ant-primary-color);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 8px 0 0 8px;\n font-size: 12px;\n box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\n writing-mode: vertical-lr;\n padding: 8px 0;\n user-select: none;\n }\n\n .debug-content {\n flex: 1;\n overflow: auto;\n padding: 16px;\n background-color: #f5f7fa;\n\n .debug-section {\n margin-bottom: 24px;\n background-color: #fff;\n border-radius: 8px;\n padding: 16px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n\n h3 {\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n border-bottom: 1px solid #e8e8e8;\n padding-bottom: 8px;\n }\n\n .empty-state {\n color: #999;\n font-size: 12px;\n text-align: center;\n padding: 20px;\n }\n\n .widget-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n .widget-item {\n border: 1px solid #e8e8e8;\n border-radius: 4px;\n padding: 2px 4px;\n line-height: 1.2;\n background-color: #fafafa;\n cursor: pointer;\n\n .widget-key {\n font-weight: 600;\n color: var(--ant-primary-color);\n font-size: 12px;\n }\n }\n }\n }\n\n pre {\n margin: 0;\n font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n font-size: 12px;\n white-space: pre-wrap;\n word-wrap: break-word;\n background-color: #f5f5f5;\n padding: 8px;\n border-radius: 4px;\n color: #333;\n }\n }\n }\n</style>\n"],"names":["_useModel","_createElementBlock","_normalizeClass","_createElementVNode","_createVNode","_unref","_toDisplayString","_openBlock","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;AAoCI,UAAM,eAAeA,SAAW,SAAC,SAGhC;AAED,UAAM,gBAAgB,OAAO,YAAY,EAAE;AAC3C,UAAM,gBAAgB,OAAO,WAAW,IAAI,oBAAI,IAAA,CAAK,CAAC;AACnC,WAAO,cAAc,IAAI,EAAE,CAAC;;0BA1C/CC,mBA6BM,OAAA;AAAA,QA7BD,OAAKC,eAAA,CAAC,eAAa,EAAA,WAAA,CAAuB,aAAA,OAAY,CAAA;AAAA,MAAA;QACvDC,mBAEM,OAAA;AAAA,UAFD,OAAM;AAAA,UAAgB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,aAAA,QAAY,CAAI,aAAA;AAAA,QAAA,mBAC3C,aAAA,QAAY,OAAA,IAAA,GAAA,CAAA;AAAA,QAEnBA,mBAwBM,OAxBN,YAwBM;AAAA,UAvBFA,mBAGM,OAHN,YAGM;AAAA,YAFF,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,mBAAwB,YAApB,mBAAe,EAAA;AAAA,YACnBC,YAAuDC,MAAA,UAAA,GAAA;AAAA,cAA1C,OAAOA,MAAA,aAAA;AAAA,cAAgB,gBAAc;AAAA,YAAA;;UAEtDF,mBAYM,OAZN,YAYM;AAAA,YAXFA,mBAA2D,YAAvD,sBAAiBG,gBAAGD,qBAAc,IAAI,IAAG,aAAS,CAAA;AAAA,YACtDF,mBASM,OATN,YASM;AAAA,eARFI,UAAA,IAAA,GAAAN,mBAOMO,UAAA,MAAAC,WANqBJ,MAAA,aAAA,GAAa,CAAA,CAA5B,KAAK,KAAK,MAAA;oCADtBJ,mBAOM,OAAA;AAAA,kBALD,SAAK,CAAA,WAAE,QAAQ,IAAI,KAAK;AAAA,kBACxB;AAAA,kBACD,OAAM;AAAA,gBAAA;kBAENE,mBAAuC,OAAvC,YAAuCG,gBAAZ,GAAG,GAAA,CAAA;AAAA,gBAAA;;;;;;;;;"}
@@ -26,6 +26,7 @@ function useAppRef(widgetRefList, formWidgetId) {
26
26
  };
27
27
  const registerToRefList = (widgetName) => {
28
28
  const list = isRoot ? widgetRefList == null ? void 0 : widgetRefList.value : refList.value;
29
+ console.log(widgetId.value);
29
30
  list.set(widgetName || widgetId.value, {
30
31
  instance,
31
32
  proxy: instance == null ? void 0 : instance.proxy,
@@ -1 +1 @@
1
- {"version":3,"file":"useAppRef.js","sources":["../../../../../core/src/hooks/useAppRef.ts"],"sourcesContent":["import { useI18n } from '@kp-ui/lowcode-core';\nimport { message } from 'ant-design-vue';\nimport { computed, getCurrentInstance, inject, ref, Ref } from 'vue';\n\nexport function useAppRef(widgetRefList?: Ref<Map<string, any>>, formWidgetId?: any) {\n const { i18nt } = useI18n();\n const isRoot = formWidgetId !== undefined;\n\n if (!isRoot) {\n formWidgetId = inject('formWidgetId', '');\n }\n\n const refList = inject<Ref<Map<string, any>>>('refList', widgetRefList || ref(new Map()));\n\n const instance = getCurrentInstance();\n\n const widgetId = computed(() => instance?.exposed?.field?.options?.name as string);\n\n const initRefList = () => {\n registerToRefList();\n };\n\n const getWidgetRef = (widgetName, showError?: boolean) => {\n const list = isRoot ? (widgetRefList?.value as Map<any, any>) : refList.value;\n const foundRef = list.get(widgetName);\n if (!foundRef && !!showError) {\n message.error(i18nt('render.hint.refNotFound') + widgetName);\n }\n return foundRef;\n };\n\n /* 该方法用于组件重名检查!! */\n const registerToRefList = (widgetName?: symbol | string) => {\n const list = isRoot ? (widgetRefList?.value as Map<any, any>) : refList.value;\n list.set(widgetName || widgetId.value, {\n instance,\n proxy: instance?.proxy,\n ...instance?.appContext.config.globalProperties,\n ...instance?.exposed\n });\n };\n\n /**\n * 从引用列表中注销\n */\n const unregisterFromRefList = () => {\n const widgetId = instance?.exposed?.field?.options?.name;\n refList?.value?.delete(widgetId);\n };\n\n const getFormRef = () => {\n return getWidgetRef(formWidgetId);\n };\n\n return {\n refList,\n getFormRef,\n registerToRefList,\n unregisterFromRefList,\n initRefList,\n getWidgetRef\n };\n}\n"],"names":["widgetId"],"mappings":";;;AAIO,SAAS,UAAU,eAAuC,cAAoB;AACjF,QAAM,EAAE,MAAA,IAAU,QAAA;AAClB,QAAM,SAAS,iBAAiB;AAEhC,MAAI,CAAC,QAAQ;AACT,mBAAe,OAAO,gBAAgB,EAAE;AAAA,EAC5C;AAEA,QAAM,UAAU,OAA8B,WAAW,iBAAiB,IAAI,oBAAI,IAAA,CAAK,CAAC;AAExF,QAAM,WAAW,mBAAA;AAEjB,QAAM,WAAW,SAAS,MAAA;;AAAM,kEAAU,YAAV,mBAAmB,UAAnB,mBAA0B,YAA1B,mBAAmC;AAAA,GAAc;AAEjF,QAAM,cAAc,MAAM;AACtB,sBAAA;AAAA,EACJ;AAEA,QAAM,eAAe,CAAC,YAAY,cAAwB;AACtD,UAAM,OAAO,SAAU,+CAAe,QAA0B,QAAQ;AACxE,UAAM,WAAW,KAAK,IAAI,UAAU;AACpC,QAAI,CAAC,YAAY,CAAC,CAAC,WAAW;AAC1B,cAAQ,MAAM,MAAM,yBAAyB,IAAI,UAAU;AAAA,IAC/D;AACA,WAAO;AAAA,EACX;AAGA,QAAM,oBAAoB,CAAC,eAAiC;AACxD,UAAM,OAAO,SAAU,+CAAe,QAA0B,QAAQ;AACxE,SAAK,IAAI,cAAc,SAAS,OAAO;AAAA,MACnC;AAAA,MACA,OAAO,qCAAU;AAAA,MACjB,GAAG,qCAAU,WAAW,OAAO;AAAA,MAC/B,GAAG,qCAAU;AAAA,IAAA,CAChB;AAAA,EACL;AAKA,QAAM,wBAAwB,MAAM;;AAChC,UAAMA,aAAW,sDAAU,YAAV,mBAAmB,UAAnB,mBAA0B,YAA1B,mBAAmC;AACpD,6CAAS,UAAT,mBAAgB,OAAOA;AAAAA,EAC3B;AAEA,QAAM,aAAa,MAAM;AACrB,WAAO,aAAa,YAAY;AAAA,EACpC;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"useAppRef.js","sources":["../../../../../core/src/hooks/useAppRef.ts"],"sourcesContent":["import { useI18n } from '@kp-ui/lowcode-core';\nimport { message } from 'ant-design-vue';\nimport { computed, getCurrentInstance, inject, ref, Ref } from 'vue';\n\nexport function useAppRef(widgetRefList?: Ref<Map<string, any>>, formWidgetId?: any) {\n const { i18nt } = useI18n();\n const isRoot = formWidgetId !== undefined;\n\n if (!isRoot) {\n formWidgetId = inject('formWidgetId', '');\n }\n\n const refList = inject<Ref<Map<string, any>>>('refList', widgetRefList || ref(new Map()));\n\n const instance = getCurrentInstance();\n\n const widgetId = computed(() => instance?.exposed?.field?.options?.name as string);\n\n const initRefList = () => {\n registerToRefList();\n };\n\n const getWidgetRef = (widgetName, showError?: boolean) => {\n const list = isRoot ? (widgetRefList?.value as Map<any, any>) : refList.value;\n const foundRef = list.get(widgetName);\n if (!foundRef && !!showError) {\n message.error(i18nt('render.hint.refNotFound') + widgetName);\n }\n return foundRef;\n };\n\n /* 该方法用于组件重名检查!! */\n const registerToRefList = (widgetName?: symbol | string) => {\n const list = isRoot ? (widgetRefList?.value as Map<any, any>) : refList.value;\n console.log(widgetId.value);\n\n list.set(widgetName || widgetId.value, {\n instance,\n proxy: instance?.proxy,\n ...instance?.appContext.config.globalProperties,\n ...instance?.exposed\n });\n };\n\n /**\n * 从引用列表中注销\n */\n const unregisterFromRefList = () => {\n const widgetId = instance?.exposed?.field?.options?.name;\n refList?.value?.delete(widgetId);\n };\n\n const getFormRef = () => {\n return getWidgetRef(formWidgetId);\n };\n\n return {\n refList,\n getFormRef,\n registerToRefList,\n unregisterFromRefList,\n initRefList,\n getWidgetRef\n };\n}\n"],"names":["widgetId"],"mappings":";;;AAIO,SAAS,UAAU,eAAuC,cAAoB;AACjF,QAAM,EAAE,MAAA,IAAU,QAAA;AAClB,QAAM,SAAS,iBAAiB;AAEhC,MAAI,CAAC,QAAQ;AACT,mBAAe,OAAO,gBAAgB,EAAE;AAAA,EAC5C;AAEA,QAAM,UAAU,OAA8B,WAAW,iBAAiB,IAAI,oBAAI,IAAA,CAAK,CAAC;AAExF,QAAM,WAAW,mBAAA;AAEjB,QAAM,WAAW,SAAS,MAAA;;AAAM,kEAAU,YAAV,mBAAmB,UAAnB,mBAA0B,YAA1B,mBAAmC;AAAA,GAAc;AAEjF,QAAM,cAAc,MAAM;AACtB,sBAAA;AAAA,EACJ;AAEA,QAAM,eAAe,CAAC,YAAY,cAAwB;AACtD,UAAM,OAAO,SAAU,+CAAe,QAA0B,QAAQ;AACxE,UAAM,WAAW,KAAK,IAAI,UAAU;AACpC,QAAI,CAAC,YAAY,CAAC,CAAC,WAAW;AAC1B,cAAQ,MAAM,MAAM,yBAAyB,IAAI,UAAU;AAAA,IAC/D;AACA,WAAO;AAAA,EACX;AAGA,QAAM,oBAAoB,CAAC,eAAiC;AACxD,UAAM,OAAO,SAAU,+CAAe,QAA0B,QAAQ;AACxE,YAAQ,IAAI,SAAS,KAAK;AAE1B,SAAK,IAAI,cAAc,SAAS,OAAO;AAAA,MACnC;AAAA,MACA,OAAO,qCAAU;AAAA,MACjB,GAAG,qCAAU,WAAW,OAAO;AAAA,MAC/B,GAAG,qCAAU;AAAA,IAAA,CAChB;AAAA,EACL;AAKA,QAAM,wBAAwB,MAAM;;AAChC,UAAMA,aAAW,sDAAU,YAAV,mBAAmB,UAAnB,mBAA0B,YAA1B,mBAAmC;AACpD,6CAAS,UAAT,mBAAgB,OAAOA;AAAAA,EAC3B;AAEA,QAAM,aAAa,MAAM;AACrB,WAAO,aAAa,YAAY;AAAA,EACpC;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAER;"}
@@ -7,6 +7,8 @@ function useDesigner() {
7
7
  });
8
8
  const formConfig = inject("formConfig", ref({}));
9
9
  const formData = inject("formData", ref({}));
10
+ const isSubFormField = inject("isSubFormField", false);
11
+ const subFormRowIndex = inject("subFormRowIndex", ref(0));
10
12
  const layoutType = inject("layoutType", ref(LayoutTypeEnum.PC));
11
13
  const isPc = computed(
12
14
  () => layoutType.value === LayoutTypeEnum.PC || layoutType.value === LayoutTypeEnum.H5
@@ -37,7 +39,9 @@ function useDesigner() {
37
39
  designer.value.setSelected(widget);
38
40
  };
39
41
  return {
42
+ isSubFormField,
40
43
  selectedWidget,
44
+ subFormRowIndex,
41
45
  getWidget,
42
46
  selected,
43
47
  isPc,
@@ -1 +1 @@
1
- {"version":3,"file":"useDesigner.js","sources":["../../../../../core/src/hooks/useDesigner.ts"],"sourcesContent":["import { FormConfig, Widget } from '@kp-ui/lowcode-core/src/types/schema';\nimport { FormDesigner } from '@kp-ui/lowcode-core/src/types/designer';\nimport { LayoutTypeEnum } from '@kp-ui/lowcode-core';\nimport { computed, inject, nextTick, ref, Ref, watchEffect } from 'vue';\n\nexport function useDesigner() {\n const designer = inject<Ref<FormDesigner>>('designer', ref({} as FormDesigner));\n const designState = inject('designState', false);\n const getWidget = inject('getWidget', (widget: Widget) => {});\n const formConfig = inject<Ref<FormConfig>>('formConfig', ref({} as FormConfig));\n const formData = inject('formData', ref({}));\n\n const layoutType = inject('layoutType', ref(LayoutTypeEnum.PC));\n const isPc = computed(\n () => layoutType.value === LayoutTypeEnum.PC || layoutType.value === LayoutTypeEnum.H5\n );\n const isH5 = computed(() => layoutType.value === LayoutTypeEnum.H5);\n\n const isBI = computed(() => layoutType.value === LayoutTypeEnum.BI);\n\n const onDragAdd = ({ newIndex }, widgetList: Widget[]) => {\n const newWidget = widgetList[newIndex];\n if (newWidget) {\n designer.value.setSelected(newWidget);\n } else {\n designer.value.setSelected(widgetList[newIndex - 1]);\n }\n };\n\n const onDragUpdate = () => {\n designer.value.emitHistoryChange();\n };\n\n /**\n * 选择子组件\n * @param widget 组件配置\n */\n const selectWidget = widget => {\n if (designState) {\n designer.value.setSelected(widget);\n }\n };\n\n const selectedWidget = computed(() => designer.value.selectedWidget);\n\n const selected = (widgetId: string) => {\n return designer.value.selectedId === widgetId;\n };\n\n const onWidgetClick = (widget: Widget) => {\n designer.value.setSelected(widget);\n };\n\n return {\n selectedWidget,\n getWidget,\n selected,\n isPc,\n isH5,\n isBI,\n designState,\n formData,\n formConfig,\n designer,\n layoutType,\n onWidgetClick,\n selectWidget,\n onDragAdd,\n onDragUpdate\n };\n}\n"],"names":[],"mappings":";;AAKO,SAAS,cAAc;AAC1B,QAAM,WAAW,OAA0B,YAAY,IAAI,CAAA,CAAkB,CAAC;AAC9E,QAAM,cAAc,OAAO,eAAe,KAAK;AAC/C,QAAM,YAAY,OAAO,aAAa,CAAC,WAAmB;AAAA,EAAC,CAAC;AAC5D,QAAM,aAAa,OAAwB,cAAc,IAAI,CAAA,CAAgB,CAAC;AAC9E,QAAM,WAAW,OAAO,YAAY,IAAI,CAAA,CAAE,CAAC;AAE3C,QAAM,aAAa,OAAO,cAAc,IAAI,eAAe,EAAE,CAAC;AAC9D,QAAM,OAAO;AAAA,IACT,MAAM,WAAW,UAAU,eAAe,MAAM,WAAW,UAAU,eAAe;AAAA,EAAA;AAExF,QAAM,OAAO,SAAS,MAAM,WAAW,UAAU,eAAe,EAAE;AAElE,QAAM,OAAO,SAAS,MAAM,WAAW,UAAU,eAAe,EAAE;AAElE,QAAM,YAAY,CAAC,EAAE,SAAA,GAAY,eAAyB;AACtD,UAAM,YAAY,WAAW,QAAQ;AACrC,QAAI,WAAW;AACX,eAAS,MAAM,YAAY,SAAS;AAAA,IACxC,OAAO;AACH,eAAS,MAAM,YAAY,WAAW,WAAW,CAAC,CAAC;AAAA,IACvD;AAAA,EACJ;AAEA,QAAM,eAAe,MAAM;AACvB,aAAS,MAAM,kBAAA;AAAA,EACnB;AAMA,QAAM,eAAe,CAAA,WAAU;AAC3B,QAAI,aAAa;AACb,eAAS,MAAM,YAAY,MAAM;AAAA,IACrC;AAAA,EACJ;AAEA,QAAM,iBAAiB,SAAS,MAAM,SAAS,MAAM,cAAc;AAEnE,QAAM,WAAW,CAAC,aAAqB;AACnC,WAAO,SAAS,MAAM,eAAe;AAAA,EACzC;AAEA,QAAM,gBAAgB,CAAC,WAAmB;AACtC,aAAS,MAAM,YAAY,MAAM;AAAA,EACrC;AAEA,SAAO;AAAA,IACH;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,EAAA;AAER;"}
1
+ {"version":3,"file":"useDesigner.js","sources":["../../../../../core/src/hooks/useDesigner.ts"],"sourcesContent":["import { FormConfig, Widget } from '@kp-ui/lowcode-core/src/types/schema';\nimport { FormDesigner } from '@kp-ui/lowcode-core/src/types/designer';\nimport { LayoutTypeEnum } from '@kp-ui/lowcode-core';\nimport { computed, inject, nextTick, ref, Ref, watchEffect } from 'vue';\n\nexport function useDesigner() {\n const designer = inject<Ref<FormDesigner>>('designer', ref({} as FormDesigner));\n const designState = inject('designState', false);\n const getWidget = inject('getWidget', (widget: Widget) => {});\n const formConfig = inject<Ref<FormConfig>>('formConfig', ref({} as FormConfig));\n const formData = inject('formData', ref({}));\n const isSubFormField = inject('isSubFormField', false);\n const subFormRowIndex = inject<Ref<number>>('subFormRowIndex', ref(0));\n const layoutType = inject('layoutType', ref(LayoutTypeEnum.PC));\n const isPc = computed(\n () => layoutType.value === LayoutTypeEnum.PC || layoutType.value === LayoutTypeEnum.H5\n );\n const isH5 = computed(() => layoutType.value === LayoutTypeEnum.H5);\n\n const isBI = computed(() => layoutType.value === LayoutTypeEnum.BI);\n\n const onDragAdd = ({ newIndex }, widgetList: Widget[]) => {\n const newWidget = widgetList[newIndex];\n if (newWidget) {\n designer.value.setSelected(newWidget);\n } else {\n designer.value.setSelected(widgetList[newIndex - 1]);\n }\n };\n\n const onDragUpdate = () => {\n designer.value.emitHistoryChange();\n };\n\n /**\n * 选择子组件\n * @param widget 组件配置\n */\n const selectWidget = widget => {\n if (designState) {\n designer.value.setSelected(widget);\n }\n };\n\n const selectedWidget = computed(() => designer.value.selectedWidget);\n\n const selected = (widgetId: string) => {\n return designer.value.selectedId === widgetId;\n };\n\n const onWidgetClick = (widget: Widget) => {\n designer.value.setSelected(widget);\n };\n\n return {\n isSubFormField,\n selectedWidget,\n subFormRowIndex,\n getWidget,\n selected,\n isPc,\n isH5,\n isBI,\n designState,\n formData,\n formConfig,\n designer,\n layoutType,\n onWidgetClick,\n selectWidget,\n onDragAdd,\n onDragUpdate\n };\n}\n"],"names":[],"mappings":";;AAKO,SAAS,cAAc;AAC1B,QAAM,WAAW,OAA0B,YAAY,IAAI,CAAA,CAAkB,CAAC;AAC9E,QAAM,cAAc,OAAO,eAAe,KAAK;AAC/C,QAAM,YAAY,OAAO,aAAa,CAAC,WAAmB;AAAA,EAAC,CAAC;AAC5D,QAAM,aAAa,OAAwB,cAAc,IAAI,CAAA,CAAgB,CAAC;AAC9E,QAAM,WAAW,OAAO,YAAY,IAAI,CAAA,CAAE,CAAC;AAC3C,QAAM,iBAAiB,OAAO,kBAAkB,KAAK;AACrD,QAAM,kBAAkB,OAAoB,mBAAmB,IAAI,CAAC,CAAC;AACrE,QAAM,aAAa,OAAO,cAAc,IAAI,eAAe,EAAE,CAAC;AAC9D,QAAM,OAAO;AAAA,IACT,MAAM,WAAW,UAAU,eAAe,MAAM,WAAW,UAAU,eAAe;AAAA,EAAA;AAExF,QAAM,OAAO,SAAS,MAAM,WAAW,UAAU,eAAe,EAAE;AAElE,QAAM,OAAO,SAAS,MAAM,WAAW,UAAU,eAAe,EAAE;AAElE,QAAM,YAAY,CAAC,EAAE,SAAA,GAAY,eAAyB;AACtD,UAAM,YAAY,WAAW,QAAQ;AACrC,QAAI,WAAW;AACX,eAAS,MAAM,YAAY,SAAS;AAAA,IACxC,OAAO;AACH,eAAS,MAAM,YAAY,WAAW,WAAW,CAAC,CAAC;AAAA,IACvD;AAAA,EACJ;AAEA,QAAM,eAAe,MAAM;AACvB,aAAS,MAAM,kBAAA;AAAA,EACnB;AAMA,QAAM,eAAe,CAAA,WAAU;AAC3B,QAAI,aAAa;AACb,eAAS,MAAM,YAAY,MAAM;AAAA,IACrC;AAAA,EACJ;AAEA,QAAM,iBAAiB,SAAS,MAAM,SAAS,MAAM,cAAc;AAEnE,QAAM,WAAW,CAAC,aAAqB;AACnC,WAAO,SAAS,MAAM,eAAe;AAAA,EACzC;AAEA,QAAM,gBAAgB,CAAC,WAAmB;AACtC,aAAS,MAAM,YAAY,MAAM;AAAA,EACrC;AAEA,SAAO;AAAA,IACH;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,EAAA;AAER;"}
@@ -11,6 +11,7 @@ function useField(props, isInitModelValue = true) {
11
11
  const formModel = inject("formData", ref({}));
12
12
  const getReadMode = inject("getReadMode", () => false);
13
13
  const isSubFormField = inject("isSubFormField", false);
14
+ const subFormRowIndex = inject("subFormRowIndex", ref(0));
14
15
  const getSubFormName = inject("getSubFormName", () => "");
15
16
  const designState = inject("designState", false);
16
17
  const { registerToRefList, getWidgetRef, getFormRef, unregisterFromRefList } = useAppRef();
@@ -107,7 +108,7 @@ function useField(props, isInitModelValue = true) {
107
108
  };
108
109
  const getPropName = computed(() => {
109
110
  if (isSubFormField && !designState) {
110
- return subFormName.value + "." + props.subFormRowIndex + "." + props.field.options.name;
111
+ return subFormName.value + "." + subFormRowIndex.value + "." + props.field.options.name;
111
112
  } else {
112
113
  return props.field.options.name;
113
114
  }
@@ -239,7 +240,7 @@ function useField(props, isInitModelValue = true) {
239
240
  newValue,
240
241
  oldValue,
241
242
  subFormName.value,
242
- props.subFormRowIndex
243
+ subFormRowIndex.value
243
244
  ]);
244
245
  };
245
246
  const syncUpdateFormModel = (value) => {
@@ -319,7 +320,7 @@ function useField(props, isInitModelValue = true) {
319
320
  value: val,
320
321
  oldValue: oldVal,
321
322
  subFormData: subFormData.value,
322
- rowId: props.subFormRowId
323
+ rowId: subFormRowIndex.value
323
324
  },
324
325
  keys: ["value", "oldValue", "subFormData", "rowId"]
325
326
  });
@@ -488,6 +489,7 @@ function useField(props, isInitModelValue = true) {
488
489
  } else {
489
490
  value = typeof props.field.options.defaultValue === "undefined" ? "" : props.field.options.defaultValue;
490
491
  }
492
+ console.log(getPropName.value);
491
493
  dispatch("VFormRender", "fieldChange", {
492
494
  fieldName: getPropName.value,
493
495
  value: toRaw(value),
@@ -508,7 +510,7 @@ function useField(props, isInitModelValue = true) {
508
510
  unregisterFromRefList();
509
511
  });
510
512
  const defineExposed = {
511
- subFormRowIndex: computed(() => props.subFormRowIndex),
513
+ subFormRowIndex,
512
514
  i18nt,
513
515
  options,
514
516
  proxy: instance == null ? void 0 : instance.proxy,
@@ -589,6 +591,7 @@ function useField(props, isInitModelValue = true) {
589
591
  setAppendButtonDisabled,
590
592
  focus,
591
593
  setUploadData,
594
+ subFormRowIndex,
592
595
  isSubFormField,
593
596
  defineExposed
594
597
  };