@robot-admin/naive-ui-components 0.3.2 → 0.3.4

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 (177) hide show
  1. package/dist/C_ActionBar-nnfbZCea.css.map +1 -0
  2. package/dist/C_ActionBar2.js +2 -2
  3. package/dist/C_ActionBar2.js.map +1 -1
  4. package/dist/C_AntV-DGjscTWa.css.map +1 -0
  5. package/dist/C_AntV2.js +6 -6
  6. package/dist/C_AntV2.js.map +1 -1
  7. package/dist/C_Barcode-DjTmDkbQ.css.map +1 -0
  8. package/dist/C_Barcode2.js +1 -1
  9. package/dist/C_Barcode2.js.map +1 -1
  10. package/dist/C_Captcha-Ccq3DMrR.css.map +1 -0
  11. package/dist/C_Captcha2.js +1 -1
  12. package/dist/C_Captcha2.js.map +1 -1
  13. package/dist/C_Cascade-IUUHIh7r.css.map +1 -0
  14. package/dist/C_Cascade2.js +2 -2
  15. package/dist/C_Cascade2.js.map +1 -1
  16. package/dist/C_City-Cv5BESaN.css.map +1 -0
  17. package/dist/C_City2.js +2 -2
  18. package/dist/C_City2.js.map +1 -1
  19. package/dist/C_Code-DPZlNSxL.css.map +1 -0
  20. package/dist/C_Code2.js +8 -7
  21. package/dist/C_Code2.js.map +1 -1
  22. package/dist/C_CollapsePanel-Fap-lv_5.css.map +1 -0
  23. package/dist/C_CollapsePanel2.js +1 -1
  24. package/dist/C_CollapsePanel2.js.map +1 -1
  25. package/dist/C_Cron-C0-8b5af.css.map +1 -0
  26. package/dist/C_Cron2.js +15 -14
  27. package/dist/C_Cron2.js.map +1 -1
  28. package/dist/C_Date2.js +1 -1
  29. package/dist/C_Date2.js.map +1 -1
  30. package/dist/C_Draggable-Bq6o0qXn.css.map +1 -0
  31. package/dist/C_Draggable2.js +1 -1
  32. package/dist/C_Draggable2.js.map +1 -1
  33. package/dist/C_Editor-OlxIF9-5.css.map +1 -0
  34. package/dist/C_Editor2.js +1 -1
  35. package/dist/C_Editor2.js.map +1 -1
  36. package/dist/C_FilePreview-B4XgTv-h.css.map +1 -0
  37. package/dist/C_FilePreview.cjs +1 -0
  38. package/dist/C_FilePreview.js +1 -0
  39. package/dist/C_FilePreview2.js +10 -9
  40. package/dist/C_FilePreview2.js.map +1 -1
  41. package/dist/C_Form-BoMQ3VH9.css.map +1 -0
  42. package/dist/C_Form2.js +167 -104
  43. package/dist/C_Form2.js.map +1 -1
  44. package/dist/C_FormSearch-DlIEoh7X.css.map +1 -0
  45. package/dist/C_FormSearch2.js +2 -2
  46. package/dist/C_FormSearch2.js.map +1 -1
  47. package/dist/C_FormulaEditor-Cm0CokN5.css.map +1 -0
  48. package/dist/C_FormulaEditor2.js +6 -6
  49. package/dist/C_FormulaEditor2.js.map +1 -1
  50. package/dist/C_FullCalendar-BULCIlVK.css.map +1 -0
  51. package/dist/C_FullCalendar2.js +2 -2
  52. package/dist/C_FullCalendar2.js.map +1 -1
  53. package/dist/C_Guide2.js +1 -1
  54. package/dist/C_Guide2.js.map +1 -1
  55. package/dist/C_Icon2.js.map +1 -1
  56. package/dist/C_ImageCropper-DrmUlaLi.css.map +1 -0
  57. package/dist/C_ImageCropper2.js +4 -4
  58. package/dist/C_ImageCropper2.js.map +1 -1
  59. package/dist/C_Language2.js +1 -1
  60. package/dist/C_Language2.js.map +1 -1
  61. package/dist/C_Map-WUMXSAfy.css.map +1 -0
  62. package/dist/C_Map2.js +2 -2
  63. package/dist/C_Map2.js.map +1 -1
  64. package/dist/C_Markdown-Dmv8yaM4.css.map +1 -0
  65. package/dist/C_Markdown2.js +4 -4
  66. package/dist/C_Markdown2.js.map +1 -1
  67. package/dist/C_NotificationCenter-DbgBiyqB.css.map +1 -0
  68. package/dist/C_NotificationCenter2.js +21 -20
  69. package/dist/C_NotificationCenter2.js.map +1 -1
  70. package/dist/C_Progress2.js +1 -1
  71. package/dist/C_Progress2.js.map +1 -1
  72. package/dist/C_QRCode-G7fiAkm4.css.map +1 -0
  73. package/dist/C_QRCode2.js +1 -1
  74. package/dist/C_QRCode2.js.map +1 -1
  75. package/dist/C_Signature-es-ZNPzr.css.map +1 -0
  76. package/dist/C_Signature2.js +2 -2
  77. package/dist/C_Signature2.js.map +1 -1
  78. package/dist/C_SplitPane-Br2eK8IG.css.map +1 -0
  79. package/dist/C_SplitPane2.js +1 -1
  80. package/dist/C_SplitPane2.js.map +1 -1
  81. package/dist/C_Steps-P9Qj9iDd.css.map +1 -0
  82. package/dist/C_Steps2.js +1 -1
  83. package/dist/C_Steps2.js.map +1 -1
  84. package/dist/C_Table-DAwAxr72.css.map +1 -0
  85. package/dist/C_Table2.js +3 -3
  86. package/dist/C_Table2.js.map +1 -1
  87. package/dist/C_Theme2.js +1 -1
  88. package/dist/C_Theme2.js.map +1 -1
  89. package/dist/C_Time-Bd_e1YDN.css.map +1 -0
  90. package/dist/C_Time2.js +2 -2
  91. package/dist/C_Time2.js.map +1 -1
  92. package/dist/C_Tree-DnGc_MPb.css.map +1 -0
  93. package/dist/C_Tree2.js +2 -2
  94. package/dist/C_Tree2.js.map +1 -1
  95. package/dist/C_Upload-i8LB_29U.css.map +1 -0
  96. package/dist/C_Upload2.js +5 -5
  97. package/dist/C_Upload2.js.map +1 -1
  98. package/dist/C_VideoPlayer-rm0MODUv.css.map +1 -0
  99. package/dist/C_VideoPlayer2.js +21 -20
  100. package/dist/C_VideoPlayer2.js.map +1 -1
  101. package/dist/C_VtableGantt-BpY-Rng3.css.map +1 -0
  102. package/dist/C_VtableGantt2.js +2 -2
  103. package/dist/C_VtableGantt2.js.map +1 -1
  104. package/dist/C_WaterFall-HWB-gPON.css.map +1 -0
  105. package/dist/C_WaterFall2.js +2 -2
  106. package/dist/C_WaterFall2.js.map +1 -1
  107. package/dist/C_WorkFlow-CSO86Cuc.css.map +1 -0
  108. package/dist/C_WorkFlow2.js +6 -6
  109. package/dist/C_WorkFlow2.js.map +1 -1
  110. package/dist/constants.d.ts +3 -3
  111. package/dist/constants2.d.ts +4 -4
  112. package/dist/constants4.d.ts +4 -4
  113. package/dist/index.vue.d.ts +1 -1
  114. package/dist/index10.vue.d.ts +2 -2
  115. package/dist/index11.vue.d.ts +2 -2
  116. package/dist/index12.vue.d.ts +5 -5
  117. package/dist/index12.vue.d.ts.map +1 -1
  118. package/dist/index13.vue.d.ts +2 -2
  119. package/dist/index14.vue.d.ts +1 -1
  120. package/dist/index16.vue.d.ts +3 -3
  121. package/dist/index16.vue.d.ts.map +1 -1
  122. package/dist/index2.vue.d.ts +3 -3
  123. package/dist/index3.vue.d.ts +2 -2
  124. package/dist/index4.vue.d.ts +2 -2
  125. package/dist/index5.vue.d.ts +2 -2
  126. package/dist/index8.vue.d.ts +2 -2
  127. package/dist/style.css +1555 -1555
  128. package/dist/useCalendarEvents.d.ts +1 -1
  129. package/dist/useCollapsePanel.d.ts +3 -3
  130. package/dist/useCollapsePanel.d.ts.map +1 -1
  131. package/dist/useDraggableLayout.d.ts +9 -9
  132. package/dist/useDynamicFormState.d.ts +9 -9
  133. package/dist/useDynamicFormState.d.ts.map +1 -1
  134. package/dist/useFullscreen.d.ts +2 -2
  135. package/dist/useInfiniteScroll.d.ts +2 -2
  136. package/dist/useModalEdit.d.ts +4 -4
  137. package/dist/useModalEdit.d.ts.map +1 -1
  138. package/dist/useQRCode.d.ts +3 -3
  139. package/dist/useQRCode.d.ts.map +1 -1
  140. package/dist/useSplitResize.d.ts +5 -5
  141. package/dist/useSplitResize.d.ts.map +1 -1
  142. package/dist/useTimeSelection.d.ts +2 -2
  143. package/dist/useTreeOperations.d.ts +1 -1
  144. package/dist/useWorkflowValidation.d.ts +6 -6
  145. package/package.json +2 -1
  146. package/dist/C_ActionBar-DWN-woTc.css.map +0 -1
  147. package/dist/C_AntV-AFKyK6hH.css.map +0 -1
  148. package/dist/C_Barcode-P_EFj8dC.css.map +0 -1
  149. package/dist/C_Captcha-C-ef41xw.css.map +0 -1
  150. package/dist/C_Cascade-D9kNsjsV.css.map +0 -1
  151. package/dist/C_City-BCQ4ipiK.css.map +0 -1
  152. package/dist/C_Code-C9kvvEmO.css.map +0 -1
  153. package/dist/C_CollapsePanel-BUJHuYcU.css.map +0 -1
  154. package/dist/C_Cron-yx2Ob4Jl.css.map +0 -1
  155. package/dist/C_Draggable-C483syRC.css.map +0 -1
  156. package/dist/C_Editor-Bp0SyIEw.css.map +0 -1
  157. package/dist/C_FilePreview-CPqvhoCy.css.map +0 -1
  158. package/dist/C_Form-Jx7PY3sT.css.map +0 -1
  159. package/dist/C_FormSearch-DvRgxlRn.css.map +0 -1
  160. package/dist/C_FormulaEditor-DtGkt4T_.css.map +0 -1
  161. package/dist/C_FullCalendar-BF7H0YIx.css.map +0 -1
  162. package/dist/C_ImageCropper-BVJfUufl.css.map +0 -1
  163. package/dist/C_Map-DpzeuWdX.css.map +0 -1
  164. package/dist/C_Markdown-BEjxknqd.css.map +0 -1
  165. package/dist/C_NotificationCenter-0l3TY2Gn.css.map +0 -1
  166. package/dist/C_QRCode-DbdiAIPg.css.map +0 -1
  167. package/dist/C_Signature-zhHCbra9.css.map +0 -1
  168. package/dist/C_SplitPane-C6sBsfKY.css.map +0 -1
  169. package/dist/C_Steps-CODHN5Hs.css.map +0 -1
  170. package/dist/C_Table-DSNsntmT.css.map +0 -1
  171. package/dist/C_Time-BvZLYraL.css.map +0 -1
  172. package/dist/C_Tree-0GDv--jX.css.map +0 -1
  173. package/dist/C_Upload-BXd3YYLx.css.map +0 -1
  174. package/dist/C_VideoPlayer-DYG3RL0Q.css.map +0 -1
  175. package/dist/C_VtableGantt-fhItIiHE.css.map +0 -1
  176. package/dist/C_WaterFall-8sQDFXKg.css.map +0 -1
  177. package/dist/C_WorkFlow-J-dyIuh9.css.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Form-BoMQ3VH9.css","names":[],"sources":["../src/components/C_Form/layouts/Default/index.vue?vue&type=style&index=0&scoped=a0e973bb&lang.css","../src/components/C_Form/layouts/Inline/index.vue?vue&type=style&index=0&scoped=ca3767dc&lang.scss","../src/components/C_Form/layouts/Grid/index.vue?vue&type=style&index=0&scoped=feb1a2b2&lang.scss","../src/components/C_Form/layouts/Card/index.vue?vue&type=style&index=0&scoped=c9b312a4&lang.scss","../src/components/C_Form/layouts/Tabs/index.vue?vue&type=style&index=0&scoped=68d1ce03&lang.scss","../src/components/C_Form/layouts/Steps/index.vue?vue&type=style&index=0&scoped=7249a960&lang.scss","../src/components/C_Form/layouts/Dynamic/index.vue?vue&type=style&index=0&scoped=12a3673e&lang.scss","../src/components/C_Form/layouts/Custom/index.vue?vue&type=style&index=0&scoped=7cb397b8&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */\n.c-form-default[data-v-a0e973bb] {\r\n width: 100%;\n}\r\n","/* unplugin-vue-components disabled *//* Inline 布局样式 */\n.c-form-inline[data-v-ca3767dc] {\n width: 100%;\n min-height: 0;\n transition: all 0.3s ease;\n}\n.c-form-inline-item[data-v-ca3767dc] {\n min-width: 0;\n transition: all 0.3s ease;\n}\n\n/* 确保内部所有表单组件都占满容器宽度 */\n.c-form-inline-item[data-v-ca3767dc] .n-form-item {\n width: 100%;\n margin-bottom: 0;\n}\n.c-form-inline-item[data-v-ca3767dc] .n-form-item-blank {\n width: 100%;\n}\n.c-form-inline-item[data-v-ca3767dc] .n-input,\n.c-form-inline-item[data-v-ca3767dc] .n-select,\n.c-form-inline-item[data-v-ca3767dc] .n-date-picker,\n.c-form-inline-item[data-v-ca3767dc] .n-time-picker,\n.c-form-inline-item[data-v-ca3767dc] .n-input-number,\n.c-form-inline-item[data-v-ca3767dc] .n-cascader,\n.c-form-inline-item[data-v-ca3767dc] .n-color-picker,\n.c-form-inline-item[data-v-ca3767dc] .n-auto-complete,\n.c-form-inline-item[data-v-ca3767dc] .n-tree-select {\n width: 100% !important;\n}\n\n/* 单选框和复选框组保持自然宽度 */\n.c-form-inline-item[data-v-ca3767dc] .n-radio-group,\n.c-form-inline-item[data-v-ca3767dc] .n-checkbox-group {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n/* 开关组件居左对齐 */\n.c-form-inline-item[data-v-ca3767dc] .n-switch {\n width: auto;\n}\n\n/* ================= 对齐方式样式增强 ================= */\n/* 当容器使用 center 对齐时,确保表单项也居中 */\n.c-form-inline[style*=\"justify-content: center\"] .c-form-inline-item[data-v-ca3767dc] {\n text-align: center;\n}\n\n/* 当容器使用 end 对齐时,确保表单项也右对齐 */\n.c-form-inline[style*=\"justify-content: flex-end\"] .c-form-inline-item[data-v-ca3767dc] {\n text-align: right;\n}\n\n/* 当容器使用 start 对齐时,确保表单项左对齐 */\n.c-form-inline[style*=\"justify-content: flex-start\"] .c-form-inline-item[data-v-ca3767dc] {\n text-align: left;\n}\n\n/* ================= 响应式设计 ================= */\n/* 移动设备 - 改为垂直布局 */\n@media (max-width: 768px) {\n.c-form-inline[data-v-ca3767dc] {\n flex-direction: column !important;\n gap: 12px !important;\n justify-content: flex-start !important;\n}\n.c-form-inline-item[data-v-ca3767dc] {\n width: 100% !important;\n text-align: left !important;\n}\n}\n/* 小屏手机 */\n@media (max-width: 480px) {\n.c-form-inline[data-v-ca3767dc] {\n gap: 8px !important;\n}\n}","/* unplugin-vue-components disabled *//* Grid 布局样式 */\n/* 变量定义 */\n.c-grid-layout[data-v-feb1a2b2] {\n width: 100%;\n /* 配置面板 */\n /* 网格容器 */\n /* 统计信息 */\n}\n.c-grid-layout .config-panel[data-v-feb1a2b2] {\n margin-bottom: 1rem;\n}\n.c-grid-layout .config-panel .config-header[data-v-feb1a2b2] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.c-grid-layout .config-panel .config-controls[data-v-feb1a2b2] {\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-feb1a2b2] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item .config-label[data-v-feb1a2b2] {\n font-size: 0.875rem;\n white-space: nowrap;\n min-width: 3rem;\n}\n.c-grid-layout .grid-container[data-v-feb1a2b2] {\n width: 100%;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2] {\n /* 进场动画 */\n animation: fadeInUp-feb1a2b2 0.3s ease-out both;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(1) {\n animation-delay: 0.05s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(2) {\n animation-delay: 0.1s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(3) {\n animation-delay: 0.15s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(4) {\n animation-delay: 0.2s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(5) {\n animation-delay: 0.25s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(6) {\n animation-delay: 0.3s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(7) {\n animation-delay: 0.35s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(8) {\n animation-delay: 0.4s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(9) {\n animation-delay: 0.45s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(10) {\n animation-delay: 0.5s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(11) {\n animation-delay: 0.55s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(12) {\n animation-delay: 0.6s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(13) {\n animation-delay: 0.65s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(14) {\n animation-delay: 0.7s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(15) {\n animation-delay: 0.75s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(16) {\n animation-delay: 0.8s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(17) {\n animation-delay: 0.85s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(18) {\n animation-delay: 0.9s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(19) {\n animation-delay: 0.95s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-feb1a2b2]:nth-child(20) {\n animation-delay: 1s;\n}\n.c-grid-layout .grid-stats[data-v-feb1a2b2] {\n margin-top: 1rem;\n font-size: 0.875rem;\n opacity: 0.8;\n}\n\n/* 动画定义 */\n@keyframes fadeInUp-feb1a2b2 {\nfrom {\n opacity: 0;\n transform: translateY(10px) scale(0.95);\n}\nto {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n}\n/* 表单控件统一宽度 */\n[data-v-feb1a2b2] .n-form-item .n-form-item-blank {\n /* 统一所有表单控件的宽度 */\n}\n[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-input,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-input-number,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-select,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-date-picker,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-time-picker,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-cascader,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-tree-select,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-auto-complete,[data-v-feb1a2b2] .n-form-item .n-form-item-blank .n-dynamic-tags {\n width: 100% !important;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.c-grid-layout .config-panel .config-controls[data-v-feb1a2b2] {\n flex-direction: column;\n gap: 0.75rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-feb1a2b2] {\n justify-content: space-between;\n}\n.c-grid-layout .grid-container[data-v-feb1a2b2] .n-grid {\n gap: 0.5rem !important;\n}\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-feb1a2b2] {\n padding: 0.125rem;\n}\n.c-grid-layout .grid-stats[data-v-feb1a2b2] {\n margin-top: 0.75rem;\n font-size: 0.875rem;\n}\n}\n@media (max-width: 480px) {\n.c-grid-layout .config-panel[data-v-feb1a2b2] {\n margin-bottom: 0.75rem;\n}\n}\n/* 主题适配 */\n[data-v-feb1a2b2] .n-card {\n --n-border-radius: 8px;\n}\n[data-v-feb1a2b2] .n-input-number {\n --n-width: 100%;\n}\n\n/* 暗色主题 */\n@media (prefers-color-scheme: dark) {\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-feb1a2b2]:hover {\n background-color: rgba(255, 255, 255, 0.05);\n}\n}","/* unplugin-vue-components disabled *//* Card 布局样式 */\n.c-form-card[data-v-c9b312a4] {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n/* ================= 配置面板 ================= */\n.layout-config-panel[data-v-c9b312a4] {\n margin-bottom: 0;\n}\n.config-controls[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n gap: 1.5rem;\n flex-wrap: wrap;\n}\n@media (max-width: 768px) {\n.config-controls[data-v-c9b312a4] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.config-item[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n}\n@media (max-width: 768px) {\n.config-item[data-v-c9b312a4] {\n justify-content: space-between;\n}\n}\n\n/* ================= 表单内容区域 ================= */\n.form-content[data-v-c9b312a4] {\n display: flex;\n}\n.layout-single[data-v-c9b312a4],\n.layout-vertical[data-v-c9b312a4] {\n flex-direction: column;\n}\n.layout-horizontal[data-v-c9b312a4] {\n flex-direction: row;\n flex-wrap: wrap;\n}\n.layout-horizontal .group-card[data-v-c9b312a4] {\n flex: 1;\n min-width: 0;\n}\n@media (max-width: 1200px) {\n.layout-horizontal[data-v-c9b312a4] {\n flex-direction: column;\n}\n}\n\n/* ================= 卡片样式 ================= */\n.single-card[data-v-c9b312a4],\n.group-card[data-v-c9b312a4] {\n transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);\n border-left-width: 4px;\n}\n.single-card[data-v-c9b312a4],\n.basic-card[data-v-c9b312a4] {\n border-left-color: #3b82f6;\n}\n.contact-card[data-v-c9b312a4] {\n border-left-color: #22c55e;\n}\n.preferences-card[data-v-c9b312a4] {\n border-left-color: #a855f7;\n}\n.group-card.collapsed .card-content[data-v-c9b312a4] {\n display: none;\n}\n\n/* ================= 卡片头部 ================= */\n.card-header[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n.header-info[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.card-icon[data-v-c9b312a4] {\n width: 2.5rem;\n height: 2.5rem;\n padding: 0.5rem;\n border-radius: 0.5rem;\n background: linear-gradient(to bottom right, #3b82f6, #9333ea);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.125rem;\n}\n.header-text h3[data-v-c9b312a4] {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 0 0 0.25rem;\n}\n.header-text p[data-v-c9b312a4] {\n font-size: 0.875rem;\n color: #6b7280;\n margin: 0;\n}\n.header-actions[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.field-stats[data-v-c9b312a4] {\n display: flex;\n gap: 0.5rem;\n}\n\n/* ================= 卡片内容 ================= */\n.card-content[data-v-c9b312a4] {\n padding-top: 1rem;\n}\n.progress-section[data-v-c9b312a4] {\n padding-bottom: 1rem;\n}\n\n/* ================= 操作面板 ================= */\n.action-content[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1.5rem;\n}\n@media (max-width: 768px) {\n.action-content[data-v-c9b312a4] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.status-summary[data-v-c9b312a4] {\n display: flex;\n gap: 1.5rem;\n align-items: center;\n flex-wrap: wrap;\n}\n.status-item[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.status-item .label[data-v-c9b312a4] {\n font-size: 0.875rem;\n}\n.progress-display[data-v-c9b312a4] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 8rem;\n}\n.action-buttons[data-v-c9b312a4] {\n display: flex;\n gap: 0.75rem;\n}","/* unplugin-vue-components disabled *//* Tabs 布局样式 */\n.c-form-tabs[data-v-68d1ce03] {\n width: 100%;\n}\n.single-panel[data-v-68d1ce03] {\n width: 100%;\n}\n.tabs-container[data-v-68d1ce03] {\n width: 100%;\n}\n.form-tabs[data-v-68d1ce03] {\n width: 100%;\n}\n.tab-icon[data-v-68d1ce03] {\n font-size: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.tab-header[data-v-68d1ce03] {\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.tab-description[data-v-68d1ce03] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n opacity: 0.8;\n}\n.tab-form-items[data-v-68d1ce03] {\n width: 100%;\n}\n.tab-empty[data-v-68d1ce03] {\n padding: 40px 0;\n}\n.tabs-actions[data-v-68d1ce03] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-border-color);\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.tabs-actions[data-v-68d1ce03] {\n margin-top: 12px;\n padding-top: 8px;\n}\n.tabs-actions[data-v-68d1ce03] .n-space {\n flex-wrap: wrap;\n}\n}","/* unplugin-vue-components disabled *//* Steps 布局样式 */\n.c-form-steps[data-v-7249a960] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.single-panel[data-v-7249a960] {\n width: 100%;\n}\n.steps-container[data-v-7249a960] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.steps-indicator[data-v-7249a960] {\n padding: 24px;\n border-radius: 8px;\n}\n.steps-content[data-v-7249a960] {\n min-height: 400px;\n}\n.step-panel[data-v-7249a960] {\n animation: fadeIn-7249a960 0.3s ease-in-out;\n}\n.step-header[data-v-7249a960] {\n margin-bottom: 24px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.step-title[data-v-7249a960] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n}\n.step-description[data-v-7249a960] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n}\n.step-form-items[data-v-7249a960] {\n width: 100%;\n}\n.steps-actions[data-v-7249a960] {\n margin-top: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--n-border-color);\n}\n@keyframes fadeIn-7249a960 {\nfrom {\n opacity: 0;\n transform: translateY(8px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 垂直步骤样式 */\n.steps-container[data-v-7249a960]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: row;\n align-items: flex-start;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-7249a960] {\n flex-shrink: 0;\n width: 250px;\n margin-right: 24px;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-content[data-v-7249a960] {\n flex: 1;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.steps-container[data-v-7249a960]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: column !important;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-7249a960] {\n width: 100% !important;\n margin-right: 0 !important;\n margin-bottom: 16px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.step-panel[data-v-7249a960] {\n animation: none !important;\n}\n}","/* unplugin-vue-components disabled *//* Dynamic 布局样式 */\n.c-form-dynamic[data-v-12a3673e] {\n width: 100%;\n}\n.dynamic-controls[data-v-12a3673e],\n.dynamic-controls-fallback[data-v-12a3673e] {\n margin-bottom: 16px;\n}\n.dynamic-stats[data-v-12a3673e] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-divider-color);\n}\n.dynamic-item-wrapper[data-v-12a3673e] {\n position: relative;\n transition: all 0.3s ease;\n animation: fadeInUp-12a3673e 0.3s ease-out;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-12a3673e] {\n border: 1px dashed var(--n-color-primary);\n border-radius: 6px;\n padding: 8px;\n background-color: var(--n-color-primary-suppl);\n}\n.max-fields-config[data-v-12a3673e] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n}\n.max-fields-config span[data-v-12a3673e] {\n font-weight: 500;\n white-space: nowrap;\n color: var(--n-text-color-2);\n}\n@keyframes fadeInUp-12a3673e {\nfrom {\n opacity: 0;\n transform: translateY(10px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 响应式设计 */\n@media (max-width: 768px) {\n.dynamic-controls[data-v-12a3673e],\n .dynamic-controls-fallback[data-v-12a3673e] {\n margin-bottom: 12px;\n}\n.dynamic-stats[data-v-12a3673e] {\n margin-top: 12px;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-12a3673e] {\n padding: 6px;\n}\n.max-fields-config[data-v-12a3673e] {\n margin-top: 8px;\n}\n}\n/* 辅助功能 */\n@media (prefers-reduced-motion: reduce) {\n.dynamic-item-wrapper[data-v-12a3673e] {\n animation: none !important;\n transition: none !important;\n}\n}\n@media (prefers-contrast: high) {\n.dynamic-item-wrapper.is-dynamic-field[data-v-12a3673e] {\n border-width: 2px;\n border-color: currentColor;\n}\n}","/* unplugin-vue-components disabled *//* Custom 布局样式 */\n.custom-layout .toolbar-card[data-v-7cb397b8] {\n margin-bottom: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content[data-v-7cb397b8] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content .mode-section[data-v-7cb397b8],\n.custom-layout .toolbar-card .toolbar-content .stats-section[data-v-7cb397b8],\n.custom-layout .toolbar-card .toolbar-content .actions-section[data-v-7cb397b8] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.custom-layout .toolbar-card .toolbar-content .section-label[data-v-7cb397b8] {\n font-size: 14px;\n font-weight: 500;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item[data-v-7cb397b8] {\n text-align: center;\n min-width: 60px;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-value[data-v-7cb397b8] {\n display: block;\n font-size: 18px;\n font-weight: 600;\n color: var(--n-primary-color);\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-label[data-v-7cb397b8] {\n font-size: 12px;\n opacity: 0.7;\n margin-top: 4px;\n}\n.custom-layout .design-panel[data-v-7cb397b8] {\n margin-bottom: 16px;\n}\n.custom-layout .design-panel .design-tools[data-v-7cb397b8] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n.custom-layout .design-panel .design-tools .tool-group[data-v-7cb397b8] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .design-panel .design-tools .tool-group .group-label[data-v-7cb397b8] {\n font-size: 14px;\n font-weight: 500;\n margin-right: 4px;\n}\n.custom-layout .layout-canvas[data-v-7cb397b8] {\n min-height: 200px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-7cb397b8] {\n border: 2px dashed var(--n-border-color);\n border-radius: 8px;\n padding: 16px;\n background: var(--n-body-color);\n}\n.custom-layout .layout-canvas .canvas-hint[data-v-7cb397b8] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n text-align: center;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content h3[data-v-7cb397b8] {\n margin: 0 0 8px 0;\n font-size: 18px;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content p[data-v-7cb397b8] {\n margin: 0;\n opacity: 0.7;\n font-size: 14px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-7cb397b8] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .layout-canvas .custom-area[data-v-7cb397b8] {\n border: 1px solid var(--n-border-color);\n border-radius: 8px;\n background: var(--n-card-color);\n padding: 16px;\n min-height: 120px;\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .custom-area .area-header[data-v-7cb397b8] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--n-divider-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info[data-v-7cb397b8] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-7cb397b8] {\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n padding: 2px 6px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-7cb397b8]:hover {\n background: var(--n-button-color-hover);\n color: var(--n-primary-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .title-input[data-v-7cb397b8] {\n min-width: 120px;\n max-width: 200px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-controls[data-v-7cb397b8] {\n display: flex;\n gap: 4px;\n}\n.custom-layout .layout-canvas .custom-area .area-fields[data-v-7cb397b8] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-height: 60px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-7cb397b8] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 60px;\n border: 2px dashed var(--n-border-color);\n border-radius: 6px;\n font-size: 14px;\n opacity: 0.6;\n transition: all 0.2s ease;\n background: var(--n-body-color);\n margin-top: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-7cb397b8]:hover {\n border-color: var(--n-primary-color);\n opacity: 1;\n}\n.custom-layout .layout-canvas .custom-area.area-horizontal .area-fields[data-v-7cb397b8] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .custom-area.area-grid .area-fields[data-v-7cb397b8] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item[data-v-7cb397b8] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-body-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .field-item[data-v-7cb397b8]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-item .field-preview[data-v-7cb397b8] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-label[data-v-7cb397b8] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-type[data-v-7cb397b8] {\n font-size: 11px;\n opacity: 0.6;\n background: var(--n-tag-color);\n padding: 2px 6px;\n border-radius: 4px;\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .field-pool[data-v-7cb397b8] {\n margin-top: 16px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-7cb397b8] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-7cb397b8] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-card-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-7cb397b8]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-name[data-v-7cb397b8] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-type-tag[data-v-7cb397b8] {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--n-tag-color);\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .empty-layout[data-v-7cb397b8] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n padding: 16px;\n}\n.custom-layout .layout-canvas .form-areas[data-v-7cb397b8] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-start;\n}\n.custom-layout .layout-canvas .form-areas .form-area[data-v-7cb397b8] {\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .form-areas .form-area.area-vertical[data-v-7cb397b8] {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n /* 统一表单项宽度 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank {\n width: 100%;\n /* 统一输入控件宽度 */\n /* 特殊控件的额外处理 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-input,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-date-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-input-number,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-textarea,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-checkbox-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-cascader,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-tree-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-time-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-color-picker {\n width: 100% !important;\n max-width: 100% !important;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-7cb397b8] .n-form-item .n-form-item-blank .n-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-7cb397b8] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-7cb397b8] .n-form-item {\n flex: 1;\n min-width: 200px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-7cb397b8] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-7cb397b8] .n-form-item {\n width: 100%;\n}\n\n/* 拖拽状态 */\n.area-ghost[data-v-7cb397b8],\n.field-ghost[data-v-7cb397b8] {\n opacity: 0.5;\n background: var(--n-primary-color-suppl);\n border: 2px dashed var(--n-primary-color);\n transform: rotate(2deg);\n}\n\n/* 响应式 */\n@media (max-width: 1024px) {\n.custom-layout .toolbar-content[data-v-7cb397b8] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-7cb397b8] {\n flex-direction: column;\n}\n}\n@media (max-width: 768px) {\n.custom-layout .design-tools[data-v-7cb397b8] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-7cb397b8] {\n padding: 12px;\n}\n.custom-layout .custom-area[data-v-7cb397b8] {\n padding: 12px;\n min-height: 100px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-7cb397b8] {\n grid-template-columns: repeat(2, 1fr);\n}\n}"],"mappings":"AAAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
package/dist/C_Form2.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { t as C_Icon_default } from "./C_Icon2.js";
2
2
  import { t as export_helper_default } from "./export-helper.js";
3
3
  import { t as C_Editor_default } from "./C_Editor2.js";
4
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, getCurrentInstance, h, inject, mergeProps, nextTick, normalizeClass, normalizeStyle, onMounted, openBlock, reactive, readonly, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, toRaw, unref, vShow, watch, watchEffect, withCtx, withDirectives, withKeys } from "vue";
5
- import { NButton, NCascader, NCheckbox, NCheckboxGroup, NColorPicker, NDatePicker, NForm, NFormItem, NInput, NInputNumber, NRadio, NRadioGroup, NRate, NSelect, NSlider, NSpace, NSwitch, NTimePicker, NUpload } from "naive-ui";
4
+ import { NAlert, NBadge, NButton, NButtonGroup, NCard, NCascader, NCheckbox, NCheckboxGroup, NColorPicker, NDatePicker, NEmpty, NForm, NFormItem, NGrid, NGridItem, NInput, NInputNumber, NProgress, NRadio, NRadioGroup, NRate, NSelect, NSlider, NSpace, NStep, NSteps, NSwitch, NTabPane, NTabs, NTag, NTimePicker, NUpload } from "naive-ui";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, getCurrentInstance, h, inject, mergeProps, nextTick, normalizeClass, normalizeStyle, onMounted, openBlock, reactive, readonly, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, toRaw, unref, vShow, watch, watchEffect, withCtx, withDirectives, withKeys } from "vue";
6
+ import { VueDraggable } from "vue-draggable-plus";
6
7
  import { mergeRules } from "@robot-admin/form-validate";
7
8
 
8
9
  //#region src/components/C_Form/composables/useFormConfig.ts
@@ -369,7 +370,7 @@ var index_vue_vue_type_script_setup_true_lang_default$8 = /* @__PURE__ */ define
369
370
 
370
371
  //#endregion
371
372
  //#region src/components/C_Form/layouts/Default/index.vue
372
- var Default_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$8, [["__scopeId", "data-v-3422ba86"]]);
373
+ var Default_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$8, [["__scopeId", "data-v-a0e973bb"]]);
373
374
 
374
375
  //#endregion
375
376
  //#region src/components/C_Form/layouts/Inline/index.vue?vue&type=script&setup=true&lang.ts
@@ -478,7 +479,7 @@ var index_vue_vue_type_script_setup_true_lang_default$7 = /* @__PURE__ */ define
478
479
 
479
480
  //#endregion
480
481
  //#region src/components/C_Form/layouts/Inline/index.vue
481
- var Inline_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$7, [["__scopeId", "data-v-c4648e30"]]);
482
+ var Inline_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$7, [["__scopeId", "data-v-ca3767dc"]]);
482
483
 
483
484
  //#endregion
484
485
  //#region src/components/C_Form/layouts/Grid/index.vue?vue&type=script&setup=true&lang.ts
@@ -613,10 +614,10 @@ var index_vue_vue_type_script_setup_true_lang_default$6 = /* @__PURE__ */ define
613
614
  })
614
615
  });
615
616
  return (_ctx, _cache) => {
616
- const _component_NCard = resolveComponent("NCard");
617
- const _component_NGridItem = resolveComponent("NGridItem");
618
- const _component_NGrid = resolveComponent("NGrid");
619
- const _component_NAlert = resolveComponent("NAlert");
617
+ const _component_NCard = NCard;
618
+ const _component_NGridItem = NGridItem;
619
+ const _component_NGrid = NGrid;
620
+ const _component_NAlert = NAlert;
620
621
  return openBlock(), createElementBlock("div", _hoisted_1$5, [
621
622
  createCommentVNode(" 配置面板 "),
622
623
  showConfigPanel.value ? (openBlock(), createBlock(_component_NCard, {
@@ -672,7 +673,7 @@ var index_vue_vue_type_script_setup_true_lang_default$6 = /* @__PURE__ */ define
672
673
 
673
674
  //#endregion
674
675
  //#region src/components/C_Form/layouts/Grid/index.vue
675
- var Grid_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$6, [["__scopeId", "data-v-ec7e9532"]]);
676
+ var Grid_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$6, [["__scopeId", "data-v-feb1a2b2"]]);
676
677
 
677
678
  //#endregion
678
679
  //#region src/components/C_Form/layouts/Card/index.vue?vue&type=script&setup=true&lang.ts
@@ -810,14 +811,14 @@ var index_vue_vue_type_script_setup_true_lang_default$5 = /* @__PURE__ */ define
810
811
  });
811
812
  });
812
813
  return (_ctx, _cache) => {
813
- const _component_NSlider = resolveComponent("NSlider");
814
- const _component_NSwitch = resolveComponent("NSwitch");
815
- const _component_NRadio = resolveComponent("NRadio");
816
- const _component_NRadioGroup = resolveComponent("NRadioGroup");
817
- const _component_NCard = resolveComponent("NCard");
818
- const _component_NBadge = resolveComponent("NBadge");
819
- const _component_NButton = resolveComponent("NButton");
820
- const _component_NProgress = resolveComponent("NProgress");
814
+ const _component_NSlider = NSlider;
815
+ const _component_NSwitch = NSwitch;
816
+ const _component_NRadio = NRadio;
817
+ const _component_NRadioGroup = NRadioGroup;
818
+ const _component_NCard = NCard;
819
+ const _component_NBadge = NBadge;
820
+ const _component_NButton = NButton;
821
+ const _component_NProgress = NProgress;
821
822
  return openBlock(), createElementBlock("div", _hoisted_1$4, [
822
823
  createCommentVNode(" 布局配置面板 "),
823
824
  hasGroups.value && showLayoutConfig.value ? (openBlock(), createBlock(_component_NCard, {
@@ -974,7 +975,7 @@ var index_vue_vue_type_script_setup_true_lang_default$5 = /* @__PURE__ */ define
974
975
 
975
976
  //#endregion
976
977
  //#region src/components/C_Form/layouts/Card/index.vue
977
- var Card_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$5, [["__scopeId", "data-v-fff86989"]]);
978
+ var Card_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$5, [["__scopeId", "data-v-c9b312a4"]]);
978
979
 
979
980
  //#endregion
980
981
  //#region src/components/C_Form/layouts/Tabs/index.vue?vue&type=script&setup=true&lang.ts
@@ -1127,12 +1128,12 @@ var index_vue_vue_type_script_setup_true_lang_default$4 = /* @__PURE__ */ define
1127
1128
  tabsWithItems: readonly(tabsWithItems)
1128
1129
  });
1129
1130
  return (_ctx, _cache) => {
1130
- const _component_NBadge = resolveComponent("NBadge");
1131
- const _component_NSpace = resolveComponent("NSpace");
1132
- const _component_NEmpty = resolveComponent("NEmpty");
1133
- const _component_NTabPane = resolveComponent("NTabPane");
1134
- const _component_NTabs = resolveComponent("NTabs");
1135
- const _component_NButton = resolveComponent("NButton");
1131
+ const _component_NBadge = NBadge;
1132
+ const _component_NSpace = NSpace;
1133
+ const _component_NEmpty = NEmpty;
1134
+ const _component_NTabPane = NTabPane;
1135
+ const _component_NTabs = NTabs;
1136
+ const _component_NButton = NButton;
1136
1137
  return openBlock(), createElementBlock("div", _hoisted_1$3, [createCommentVNode(" 无标签配置时的单一面板模式 "), !hasTabs.value ? (openBlock(), createElementBlock("div", _hoisted_2$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.formItems, (item, index) => {
1137
1138
  return openBlock(), createBlock(resolveDynamicComponent(item), { key: getItemKey(item, index) });
1138
1139
  }), 128))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 有标签配置时的分标签模式 "), createElementVNode("div", _hoisted_3$3, [
@@ -1244,7 +1245,7 @@ var index_vue_vue_type_script_setup_true_lang_default$4 = /* @__PURE__ */ define
1244
1245
 
1245
1246
  //#endregion
1246
1247
  //#region src/components/C_Form/layouts/Tabs/index.vue
1247
- var Tabs_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$4, [["__scopeId", "data-v-5a6ef2b7"]]);
1248
+ var Tabs_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$4, [["__scopeId", "data-v-68d1ce03"]]);
1248
1249
 
1249
1250
  //#endregion
1250
1251
  //#region src/components/C_Form/layouts/Steps/index.vue?vue&type=script&setup=true&lang.ts
@@ -1391,11 +1392,11 @@ var index_vue_vue_type_script_setup_true_lang_default$3 = /* @__PURE__ */ define
1391
1392
  totalSteps: computed(() => stepsWithItems.value.length)
1392
1393
  });
1393
1394
  return (_ctx, _cache) => {
1394
- const _component_NStep = resolveComponent("NStep");
1395
- const _component_NSteps = resolveComponent("NSteps");
1396
- const _component_NCard = resolveComponent("NCard");
1397
- const _component_NButton = resolveComponent("NButton");
1398
- const _component_NSpace = resolveComponent("NSpace");
1395
+ const _component_NStep = NStep;
1396
+ const _component_NSteps = NSteps;
1397
+ const _component_NCard = NCard;
1398
+ const _component_NButton = NButton;
1399
+ const _component_NSpace = NSpace;
1399
1400
  return openBlock(), createElementBlock("div", _hoisted_1$2, [createCommentVNode(" 无步骤配置时的单一面板模式 "), !hasSteps.value ? (openBlock(), createElementBlock("div", _hoisted_2$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.formItems, (item, index) => {
1400
1401
  return openBlock(), createBlock(resolveDynamicComponent(item), { key: getItemKey(item, index) });
1401
1402
  }), 128))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 有步骤配置时的分步骤模式 "), createElementVNode("div", _hoisted_3$2, [
@@ -1497,7 +1498,7 @@ var index_vue_vue_type_script_setup_true_lang_default$3 = /* @__PURE__ */ define
1497
1498
 
1498
1499
  //#endregion
1499
1500
  //#region src/components/C_Form/layouts/Steps/index.vue
1500
- var Steps_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$3, [["__scopeId", "data-v-c0439a30"]]);
1501
+ var Steps_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$3, [["__scopeId", "data-v-7249a960"]]);
1501
1502
 
1502
1503
  //#endregion
1503
1504
  //#region src/components/C_Form/composables/useDynamicFormState.ts
@@ -1799,15 +1800,15 @@ var index_vue_vue_type_script_setup_true_lang_default$2 = /* @__PURE__ */ define
1799
1800
  });
1800
1801
  });
1801
1802
  return (_ctx, _cache) => {
1802
- const _component_NBadge = resolveComponent("NBadge");
1803
- const _component_NButton = resolveComponent("NButton");
1804
- const _component_NSpace = resolveComponent("NSpace");
1805
- const _component_NInputNumber = resolveComponent("NInputNumber");
1806
- const _component_NTag = resolveComponent("NTag");
1807
- const _component_NCard = resolveComponent("NCard");
1808
- const _component_NAlert = resolveComponent("NAlert");
1809
- const _component_NGridItem = resolveComponent("NGridItem");
1810
- const _component_NGrid = resolveComponent("NGrid");
1803
+ const _component_NBadge = NBadge;
1804
+ const _component_NButton = NButton;
1805
+ const _component_NSpace = NSpace;
1806
+ const _component_NInputNumber = NInputNumber;
1807
+ const _component_NTag = NTag;
1808
+ const _component_NCard = NCard;
1809
+ const _component_NAlert = NAlert;
1810
+ const _component_NGridItem = NGridItem;
1811
+ const _component_NGrid = NGrid;
1811
1812
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
1812
1813
  createCommentVNode(" 动态控制面板 "),
1813
1814
  showControls.value && isDynamicStateAvailable.value ? (openBlock(), createElementBlock("div", _hoisted_2$1, [createVNode(_component_NCard, {
@@ -1945,7 +1946,7 @@ var index_vue_vue_type_script_setup_true_lang_default$2 = /* @__PURE__ */ define
1945
1946
 
1946
1947
  //#endregion
1947
1948
  //#region src/components/C_Form/layouts/Dynamic/index.vue
1948
- var Dynamic_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$2, [["__scopeId", "data-v-3f0739c2"]]);
1949
+ var Dynamic_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$2, [["__scopeId", "data-v-12a3673e"]]);
1949
1950
 
1950
1951
  //#endregion
1951
1952
  //#region src/components/C_Form/layouts/Custom/index.vue?vue&type=script&setup=true&lang.ts
@@ -1969,26 +1970,24 @@ const _hoisted_14 = { class: "area-header" };
1969
1970
  const _hoisted_15 = { class: "area-info" };
1970
1971
  const _hoisted_16 = ["onClick"];
1971
1972
  const _hoisted_17 = { class: "area-controls" };
1972
- const _hoisted_18 = { class: "area-fields" };
1973
- const _hoisted_19 = { class: "field-preview" };
1974
- const _hoisted_20 = { class: "field-label" };
1975
- const _hoisted_21 = { class: "field-type" };
1976
- const _hoisted_22 = {
1973
+ const _hoisted_18 = { class: "field-preview" };
1974
+ const _hoisted_19 = { class: "field-label" };
1975
+ const _hoisted_20 = { class: "field-type" };
1976
+ const _hoisted_21 = {
1977
1977
  key: 0,
1978
1978
  class: "area-drop-zone"
1979
1979
  };
1980
- const _hoisted_23 = { class: "pool-fields-grid" };
1981
- const _hoisted_24 = { class: "field-name" };
1982
- const _hoisted_25 = { class: "field-type-tag" };
1983
- const _hoisted_26 = {
1980
+ const _hoisted_22 = { class: "field-name" };
1981
+ const _hoisted_23 = { class: "field-type-tag" };
1982
+ const _hoisted_24 = {
1984
1983
  key: 0,
1985
1984
  class: "empty-layout"
1986
1985
  };
1987
- const _hoisted_27 = {
1986
+ const _hoisted_25 = {
1988
1987
  key: 1,
1989
1988
  class: "form-container"
1990
1989
  };
1991
- const _hoisted_28 = { class: "form-areas" };
1990
+ const _hoisted_26 = { class: "form-areas" };
1992
1991
  var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
1993
1992
  __name: "index",
1994
1993
  props: {
@@ -2047,6 +2046,19 @@ var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ define
2047
2046
  const index = customAreas.value.findIndex((area) => area.id === areaId);
2048
2047
  if (index !== -1) customAreas.value.splice(index, 1);
2049
2048
  };
2049
+ /** 克隆字段(从字段池拖出时使用副本,保证字段池不丢数据) */
2050
+ const cloneField = (field) => ({
2051
+ ...field,
2052
+ id: `${field.prop}-${generateId()}`
2053
+ });
2054
+ /** 从指定区域移除字段 */
2055
+ const removeFieldFromArea = (areaId, fieldId) => {
2056
+ const area = customAreas.value.find((a) => a.id === areaId);
2057
+ if (area) {
2058
+ const idx = area.fields.findIndex((f) => f.id === fieldId);
2059
+ if (idx !== -1) area.fields.splice(idx, 1);
2060
+ }
2061
+ };
2050
2062
  const handleSaveLayout = () => {
2051
2063
  const config = JSON.stringify(customAreas.value, null, 2);
2052
2064
  const blob = new Blob([config], { type: "application/json" });
@@ -2083,12 +2095,12 @@ var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ define
2083
2095
  }))));
2084
2096
  }, { deep: true });
2085
2097
  return (_ctx, _cache) => {
2086
- const _component_NButton = resolveComponent("NButton");
2087
- const _component_NButtonGroup = resolveComponent("NButtonGroup");
2088
- const _component_NCard = resolveComponent("NCard");
2089
- const _component_NInput = resolveComponent("NInput");
2090
- const _component_NTag = resolveComponent("NTag");
2091
- const _component_NEmpty = resolveComponent("NEmpty");
2098
+ const _component_NButton = NButton;
2099
+ const _component_NButtonGroup = NButtonGroup;
2100
+ const _component_NCard = NCard;
2101
+ const _component_NInput = NInput;
2102
+ const _component_NTag = NTag;
2103
+ const _component_NEmpty = NEmpty;
2092
2104
  return openBlock(), createElementBlock("div", _hoisted_1, [
2093
2105
  createCommentVNode(" 顶部工具栏 "),
2094
2106
  createVNode(_component_NCard, {
@@ -2097,54 +2109,54 @@ var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ define
2097
2109
  }, {
2098
2110
  default: withCtx(() => [createElementVNode("div", _hoisted_2, [
2099
2111
  createCommentVNode(" 模式切换 "),
2100
- createElementVNode("div", _hoisted_3, [_cache[11] || (_cache[11] = createElementVNode("span", { class: "section-label" }, "自定义模式:", -1)), createVNode(_component_NButtonGroup, null, {
2112
+ createElementVNode("div", _hoisted_3, [_cache[12] || (_cache[12] = createElementVNode("span", { class: "section-label" }, "自定义模式:", -1)), createVNode(_component_NButtonGroup, null, {
2101
2113
  default: withCtx(() => [createVNode(_component_NButton, {
2102
2114
  type: isDesignMode.value ? "primary" : "default",
2103
2115
  onClick: _cache[0] || (_cache[0] = ($event) => isDesignMode.value = true),
2104
2116
  size: "small"
2105
2117
  }, {
2106
- default: withCtx(() => _cache[9] || (_cache[9] = [createTextVNode(" 🎨 设计模式 ", -1)])),
2118
+ default: withCtx(() => _cache[10] || (_cache[10] = [createTextVNode(" 🎨 设计模式 ", -1)])),
2107
2119
  _: 1,
2108
- __: [9]
2120
+ __: [10]
2109
2121
  }, 8, ["type"]), createVNode(_component_NButton, {
2110
2122
  type: !isDesignMode.value ? "primary" : "default",
2111
2123
  onClick: _cache[1] || (_cache[1] = ($event) => isDesignMode.value = false),
2112
2124
  size: "small"
2113
2125
  }, {
2114
- default: withCtx(() => _cache[10] || (_cache[10] = [createTextVNode(" 📝 填写模式 ", -1)])),
2126
+ default: withCtx(() => _cache[11] || (_cache[11] = [createTextVNode(" 📝 填写模式 ", -1)])),
2115
2127
  _: 1,
2116
- __: [10]
2128
+ __: [11]
2117
2129
  }, 8, ["type"])]),
2118
2130
  _: 1
2119
2131
  })]),
2120
2132
  createCommentVNode(" 统计信息 "),
2121
- createElementVNode("div", _hoisted_4, [createElementVNode("div", _hoisted_5, [createElementVNode("div", _hoisted_6, toDisplayString(customAreas.value.length), 1), _cache[12] || (_cache[12] = createElementVNode("div", { class: "stat-label" }, "自定义区域", -1))]), createElementVNode("div", _hoisted_7, [createElementVNode("div", _hoisted_8, toDisplayString(totalFieldsCount.value), 1), _cache[13] || (_cache[13] = createElementVNode("div", { class: "stat-label" }, "字段总数", -1))])]),
2133
+ createElementVNode("div", _hoisted_4, [createElementVNode("div", _hoisted_5, [createElementVNode("div", _hoisted_6, toDisplayString(customAreas.value.length), 1), _cache[13] || (_cache[13] = createElementVNode("div", { class: "stat-label" }, "自定义区域", -1))]), createElementVNode("div", _hoisted_7, [createElementVNode("div", _hoisted_8, toDisplayString(totalFieldsCount.value), 1), _cache[14] || (_cache[14] = createElementVNode("div", { class: "stat-label" }, "字段总数", -1))])]),
2122
2134
  createCommentVNode(" 操作按钮 "),
2123
2135
  createElementVNode("div", _hoisted_9, [isDesignMode.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(_component_NButton, {
2124
2136
  secondary: "",
2125
2137
  onClick: handleSaveLayout,
2126
2138
  size: "small"
2127
2139
  }, {
2128
- default: withCtx(() => _cache[14] || (_cache[14] = [createTextVNode(" 💾 保存布局 ", -1)])),
2140
+ default: withCtx(() => _cache[15] || (_cache[15] = [createTextVNode(" 💾 保存布局 ", -1)])),
2129
2141
  _: 1,
2130
- __: [14]
2142
+ __: [15]
2131
2143
  }), createVNode(_component_NButton, {
2132
2144
  secondary: "",
2133
2145
  onClick: handleResetLayout,
2134
2146
  size: "small"
2135
2147
  }, {
2136
- default: withCtx(() => _cache[15] || (_cache[15] = [createTextVNode(" 🔄 重置布局 ", -1)])),
2148
+ default: withCtx(() => _cache[16] || (_cache[16] = [createTextVNode(" 🔄 重置布局 ", -1)])),
2137
2149
  _: 1,
2138
- __: [15]
2150
+ __: [16]
2139
2151
  })], 64)) : (openBlock(), createBlock(_component_NButton, {
2140
2152
  key: 1,
2141
2153
  secondary: "",
2142
2154
  onClick: handleExportData,
2143
2155
  size: "small"
2144
2156
  }, {
2145
- default: withCtx(() => _cache[16] || (_cache[16] = [createTextVNode(" 📊 导出数据 ", -1)])),
2157
+ default: withCtx(() => _cache[17] || (_cache[17] = [createTextVNode(" 📊 导出数据 ", -1)])),
2146
2158
  _: 1,
2147
- __: [16]
2159
+ __: [17]
2148
2160
  }))])
2149
2161
  ])]),
2150
2162
  _: 1
@@ -2156,37 +2168,37 @@ var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ define
2156
2168
  title: "🎨 设计工具"
2157
2169
  }, {
2158
2170
  default: withCtx(() => [createElementVNode("div", _hoisted_10, [createElementVNode("div", _hoisted_11, [
2159
- _cache[20] || (_cache[20] = createElementVNode("span", { class: "group-label" }, "添加区域:", -1)),
2171
+ _cache[21] || (_cache[21] = createElementVNode("span", { class: "group-label" }, "添加区域:", -1)),
2160
2172
  createVNode(_component_NButton, {
2161
2173
  onClick: _cache[2] || (_cache[2] = ($event) => addArea("horizontal")),
2162
2174
  size: "small"
2163
2175
  }, {
2164
- default: withCtx(() => _cache[17] || (_cache[17] = [createTextVNode(" ➡️ 水平区域 ", -1)])),
2176
+ default: withCtx(() => _cache[18] || (_cache[18] = [createTextVNode(" ➡️ 水平区域 ", -1)])),
2165
2177
  _: 1,
2166
- __: [17]
2178
+ __: [18]
2167
2179
  }),
2168
2180
  createVNode(_component_NButton, {
2169
2181
  onClick: _cache[3] || (_cache[3] = ($event) => addArea("vertical")),
2170
2182
  size: "small"
2171
2183
  }, {
2172
- default: withCtx(() => _cache[18] || (_cache[18] = [createTextVNode(" ⬇️ 垂直区域 ", -1)])),
2184
+ default: withCtx(() => _cache[19] || (_cache[19] = [createTextVNode(" ⬇️ 垂直区域 ", -1)])),
2173
2185
  _: 1,
2174
- __: [18]
2186
+ __: [19]
2175
2187
  }),
2176
2188
  createVNode(_component_NButton, {
2177
2189
  onClick: _cache[4] || (_cache[4] = ($event) => addArea("grid")),
2178
2190
  size: "small"
2179
2191
  }, {
2180
- default: withCtx(() => _cache[19] || (_cache[19] = [createTextVNode(" ⚏ 网格区域 ", -1)])),
2192
+ default: withCtx(() => _cache[20] || (_cache[20] = [createTextVNode(" ⚏ 网格区域 ", -1)])),
2181
2193
  _: 1,
2182
- __: [19]
2194
+ __: [20]
2183
2195
  })
2184
2196
  ])])]),
2185
2197
  _: 1
2186
2198
  })) : createCommentVNode("v-if", true),
2187
2199
  createCommentVNode(" 主画布区域 "),
2188
2200
  createElementVNode("div", { class: normalizeClass(["layout-canvas", { "design-mode": isDesignMode.value }]) }, [createCommentVNode(" 设计模式 "), isDesignMode.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
2189
- customAreas.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_12, _cache[21] || (_cache[21] = [createElementVNode("div", { class: "hint-content" }, [createElementVNode("h3", null, "🎨 开始自定义你的布局"), createElementVNode("p", null, "点击上方按钮添加区域")], -1)]))) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 区域列表 "), createElementVNode("div", _hoisted_13, [(openBlock(true), createElementBlock(Fragment, null, renderList(customAreas.value, (area) => {
2201
+ customAreas.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_12, _cache[22] || (_cache[22] = [createElementVNode("div", { class: "hint-content" }, [createElementVNode("h3", null, "🎨 开始自定义你的布局"), createElementVNode("p", null, "点击上方按钮添加区域")], -1)]))) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 区域列表 "), createElementVNode("div", _hoisted_13, [(openBlock(true), createElementBlock(Fragment, null, renderList(customAreas.value, (area) => {
2190
2202
  return openBlock(), createElementBlock("div", {
2191
2203
  key: area.id,
2192
2204
  class: normalizeClass(["custom-area", `area-${area.type}`])
@@ -2213,44 +2225,95 @@ var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ define
2213
2225
  type: "error",
2214
2226
  title: "删除区域"
2215
2227
  }, {
2216
- default: withCtx(() => _cache[22] || (_cache[22] = [createTextVNode(" 🗑️ ", -1)])),
2228
+ default: withCtx(() => _cache[23] || (_cache[23] = [createTextVNode(" 🗑️ ", -1)])),
2217
2229
  _: 2,
2218
- __: [22]
2230
+ __: [23]
2219
2231
  }, 1032, ["onClick"])])]),
2220
- createCommentVNode(" 字段容器 "),
2221
- createElementVNode("div", _hoisted_18, [(openBlock(true), createElementBlock(Fragment, null, renderList(area.fields, (field) => {
2222
- return openBlock(), createElementBlock("div", {
2223
- key: field.id,
2224
- class: "field-item"
2225
- }, [createElementVNode("div", _hoisted_19, [createElementVNode("span", _hoisted_20, toDisplayString(field.label || field.prop), 1), createElementVNode("span", _hoisted_21, toDisplayString(getFieldTypeName(field.type)), 1)])]);
2226
- }), 128))]),
2227
- area.fields.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_22, " 拖拽字段到这里 ")) : createCommentVNode("v-if", true)
2232
+ createCommentVNode(" 字段容器(可拖入) "),
2233
+ createVNode(unref(VueDraggable), {
2234
+ modelValue: area.fields,
2235
+ "onUpdate:modelValue": ($event) => area.fields = $event,
2236
+ class: "area-fields",
2237
+ group: {
2238
+ name: "form-fields",
2239
+ pull: true,
2240
+ put: true
2241
+ },
2242
+ animation: 200,
2243
+ "ghost-class": "field-ghost",
2244
+ "item-key": "id"
2245
+ }, {
2246
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(area.fields, (field) => {
2247
+ return openBlock(), createElementBlock("div", {
2248
+ key: field.id,
2249
+ class: "field-item"
2250
+ }, [createElementVNode("div", _hoisted_18, [
2251
+ _cache[25] || (_cache[25] = createElementVNode("span", { class: "drag-handle" }, "⠿", -1)),
2252
+ createElementVNode("span", _hoisted_19, toDisplayString(field.label || field.prop), 1),
2253
+ createElementVNode("span", _hoisted_20, toDisplayString(getFieldTypeName(field.type)), 1),
2254
+ createVNode(_component_NButton, {
2255
+ text: "",
2256
+ size: "tiny",
2257
+ type: "error",
2258
+ onClick: ($event) => removeFieldFromArea(area.id, field.id),
2259
+ title: "移出字段"
2260
+ }, {
2261
+ default: withCtx(() => _cache[24] || (_cache[24] = [createTextVNode(" ✕ ", -1)])),
2262
+ _: 2,
2263
+ __: [24]
2264
+ }, 1032, ["onClick"])
2265
+ ])]);
2266
+ }), 128))]),
2267
+ _: 2
2268
+ }, 1032, ["modelValue", "onUpdate:modelValue"]),
2269
+ area.fields.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_21, " 从下方字段池拖拽字段到这里 ")) : createCommentVNode("v-if", true)
2228
2270
  ], 2);
2229
2271
  }), 128))])], 2112)),
2230
- createCommentVNode(" 字段池 "),
2272
+ createCommentVNode(" 字段池(可拖出) "),
2231
2273
  createVNode(_component_NCard, {
2232
2274
  class: "field-pool",
2233
2275
  title: "📦 可用字段"
2234
2276
  }, {
2235
- default: withCtx(() => [createElementVNode("div", _hoisted_23, [(openBlock(true), createElementBlock(Fragment, null, renderList(availableFields.value, (field) => {
2236
- return openBlock(), createElementBlock("div", {
2237
- key: field.id,
2238
- class: "pool-field"
2239
- }, [createElementVNode("span", _hoisted_24, toDisplayString(field.label || field.prop), 1), createElementVNode("span", _hoisted_25, toDisplayString(getFieldTypeName(field.type)), 1)]);
2240
- }), 128))])]),
2277
+ default: withCtx(() => [createVNode(unref(VueDraggable), {
2278
+ modelValue: availableFields.value,
2279
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => availableFields.value = $event),
2280
+ class: "pool-fields-grid",
2281
+ group: {
2282
+ name: "form-fields",
2283
+ pull: "clone",
2284
+ put: true
2285
+ },
2286
+ animation: 200,
2287
+ sort: false,
2288
+ "ghost-class": "field-ghost",
2289
+ "item-key": "id",
2290
+ clone: cloneField
2291
+ }, {
2292
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(availableFields.value, (field) => {
2293
+ return openBlock(), createElementBlock("div", {
2294
+ key: field.id,
2295
+ class: "pool-field"
2296
+ }, [
2297
+ _cache[26] || (_cache[26] = createElementVNode("span", { class: "drag-handle" }, "⠿", -1)),
2298
+ createElementVNode("span", _hoisted_22, toDisplayString(field.label || field.prop), 1),
2299
+ createElementVNode("span", _hoisted_23, toDisplayString(getFieldTypeName(field.type)), 1)
2300
+ ]);
2301
+ }), 128))]),
2302
+ _: 1
2303
+ }, 8, ["modelValue"])]),
2241
2304
  _: 1
2242
2305
  })
2243
- ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 填写模式 "), customAreas.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_26, [createVNode(_component_NEmpty, { description: "尚未设计布局" }, {
2306
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" 填写模式 "), customAreas.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_24, [createVNode(_component_NEmpty, { description: "尚未设计布局" }, {
2244
2307
  extra: withCtx(() => [createVNode(_component_NButton, {
2245
- onClick: _cache[7] || (_cache[7] = ($event) => isDesignMode.value = true),
2308
+ onClick: _cache[8] || (_cache[8] = ($event) => isDesignMode.value = true),
2246
2309
  type: "primary"
2247
2310
  }, {
2248
- default: withCtx(() => _cache[23] || (_cache[23] = [createTextVNode(" 🎨 开始设计 ", -1)])),
2311
+ default: withCtx(() => _cache[27] || (_cache[27] = [createTextVNode(" 🎨 开始设计 ", -1)])),
2249
2312
  _: 1,
2250
- __: [23]
2313
+ __: [27]
2251
2314
  })]),
2252
2315
  _: 1
2253
- })])) : (openBlock(), createElementBlock("div", _hoisted_27, [createElementVNode("div", _hoisted_28, [(openBlock(true), createElementBlock(Fragment, null, renderList(customAreas.value, (area) => {
2316
+ })])) : (openBlock(), createElementBlock("div", _hoisted_25, [createElementVNode("div", _hoisted_26, [(openBlock(true), createElementBlock(Fragment, null, renderList(customAreas.value, (area) => {
2254
2317
  return openBlock(), createElementBlock("div", {
2255
2318
  key: area.id,
2256
2319
  class: normalizeClass(["form-area", `area-${area.type}`])
@@ -2268,13 +2331,13 @@ var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ define
2268
2331
  size: "small"
2269
2332
  }, {
2270
2333
  extra: withCtx(() => [createVNode(_component_NButton, {
2271
- onClick: _cache[8] || (_cache[8] = ($event) => isDesignMode.value = true),
2334
+ onClick: _cache[9] || (_cache[9] = ($event) => isDesignMode.value = true),
2272
2335
  size: "small",
2273
2336
  secondary: ""
2274
2337
  }, {
2275
- default: withCtx(() => _cache[24] || (_cache[24] = [createTextVNode(" 🎨 添加字段 ", -1)])),
2338
+ default: withCtx(() => _cache[28] || (_cache[28] = [createTextVNode(" 🎨 添加字段 ", -1)])),
2276
2339
  _: 1,
2277
- __: [24]
2340
+ __: [28]
2278
2341
  })]),
2279
2342
  _: 1
2280
2343
  }))], 2);
@@ -2286,7 +2349,7 @@ var index_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ define
2286
2349
 
2287
2350
  //#endregion
2288
2351
  //#region src/components/C_Form/layouts/Custom/index.vue
2289
- var Custom_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$1, [["__scopeId", "data-v-a21051df"]]);
2352
+ var Custom_default = /* @__PURE__ */ export_helper_default(index_vue_vue_type_script_setup_true_lang_default$1, [["__scopeId", "data-v-7cb397b8"]]);
2290
2353
 
2291
2354
  //#endregion
2292
2355
  //#region src/components/C_Form/index.vue?vue&type=script&setup=true&lang.ts