xkit-editor 2.0.0-alpha.0

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 (479) hide show
  1. package/lib/index.d.ts +2 -0
  2. package/lib/packages/editor/env.d.ts +7 -0
  3. package/lib/packages/editor/src/component-configs/__tests__/config.test.d.ts +2 -0
  4. package/lib/packages/editor/src/component-configs/__tests__/config.test.d.ts.map +1 -0
  5. package/lib/packages/editor/src/component-configs/__tests__/group.test.d.ts +2 -0
  6. package/lib/packages/editor/src/component-configs/__tests__/group.test.d.ts.map +1 -0
  7. package/lib/packages/editor/src/component-configs/cascader.d.ts +3 -0
  8. package/lib/packages/editor/src/component-configs/cascader.d.ts.map +1 -0
  9. package/lib/packages/editor/src/component-configs/checkbox.d.ts +4 -0
  10. package/lib/packages/editor/src/component-configs/checkbox.d.ts.map +1 -0
  11. package/lib/packages/editor/src/component-configs/common-props.d.ts +16 -0
  12. package/lib/packages/editor/src/component-configs/common-props.d.ts.map +1 -0
  13. package/lib/packages/editor/src/component-configs/date-picker.d.ts +3 -0
  14. package/lib/packages/editor/src/component-configs/date-picker.d.ts.map +1 -0
  15. package/lib/packages/editor/src/component-configs/date-range-picker.d.ts +4 -0
  16. package/lib/packages/editor/src/component-configs/date-range-picker.d.ts.map +1 -0
  17. package/lib/packages/editor/src/component-configs/group.d.ts +3 -0
  18. package/lib/packages/editor/src/component-configs/group.d.ts.map +1 -0
  19. package/lib/packages/editor/src/component-configs/icon-select.d.ts +3 -0
  20. package/lib/packages/editor/src/component-configs/icon-select.d.ts.map +1 -0
  21. package/lib/packages/editor/src/component-configs/input-array.d.ts +4 -0
  22. package/lib/packages/editor/src/component-configs/input-array.d.ts.map +1 -0
  23. package/lib/packages/editor/src/component-configs/input-number-range.d.ts +3 -0
  24. package/lib/packages/editor/src/component-configs/input-number-range.d.ts.map +1 -0
  25. package/lib/packages/editor/src/component-configs/input-number.d.ts +3 -0
  26. package/lib/packages/editor/src/component-configs/input-number.d.ts.map +1 -0
  27. package/lib/packages/editor/src/component-configs/input-table.d.ts +3 -0
  28. package/lib/packages/editor/src/component-configs/input-table.d.ts.map +1 -0
  29. package/lib/packages/editor/src/component-configs/input-upload.d.ts +3 -0
  30. package/lib/packages/editor/src/component-configs/input-upload.d.ts.map +1 -0
  31. package/lib/packages/editor/src/component-configs/input.d.ts +3 -0
  32. package/lib/packages/editor/src/component-configs/input.d.ts.map +1 -0
  33. package/lib/packages/editor/src/component-configs/layout-sections.d.ts +11 -0
  34. package/lib/packages/editor/src/component-configs/layout-sections.d.ts.map +1 -0
  35. package/lib/packages/editor/src/component-configs/options-config.d.ts +3 -0
  36. package/lib/packages/editor/src/component-configs/options-config.d.ts.map +1 -0
  37. package/lib/packages/editor/src/component-configs/radio.d.ts +3 -0
  38. package/lib/packages/editor/src/component-configs/radio.d.ts.map +1 -0
  39. package/lib/packages/editor/src/component-configs/select.d.ts +3 -0
  40. package/lib/packages/editor/src/component-configs/select.d.ts.map +1 -0
  41. package/lib/packages/editor/src/component-configs/switch.d.ts +3 -0
  42. package/lib/packages/editor/src/component-configs/switch.d.ts.map +1 -0
  43. package/lib/packages/editor/src/component-configs/textarea.d.ts +3 -0
  44. package/lib/packages/editor/src/component-configs/textarea.d.ts.map +1 -0
  45. package/lib/packages/editor/src/component-configs/types.d.ts +33 -0
  46. package/lib/packages/editor/src/component-configs/types.d.ts.map +1 -0
  47. package/lib/packages/editor/src/components/condition-editor.vue.d.ts +19 -0
  48. package/lib/packages/editor/src/components/condition-editor.vue.d.ts.map +1 -0
  49. package/lib/packages/editor/src/components/design-renderers/input-array-design.vue.d.ts +17 -0
  50. package/lib/packages/editor/src/components/design-renderers/input-array-design.vue.d.ts.map +1 -0
  51. package/lib/packages/editor/src/components/design-renderers/input-table-design.vue.d.ts +15 -0
  52. package/lib/packages/editor/src/components/design-renderers/input-table-design.vue.d.ts.map +1 -0
  53. package/lib/packages/editor/src/components/form-item-layout-editor.vue.d.ts +14 -0
  54. package/lib/packages/editor/src/components/form-item-layout-editor.vue.d.ts.map +1 -0
  55. package/lib/packages/editor/src/components/form-item-span-editor.vue.d.ts +18 -0
  56. package/lib/packages/editor/src/components/form-item-span-editor.vue.d.ts.map +1 -0
  57. package/lib/packages/editor/src/components/form-layout-editor.vue.d.ts +21 -0
  58. package/lib/packages/editor/src/components/form-layout-editor.vue.d.ts.map +1 -0
  59. package/lib/packages/editor/src/components/group-title-color-select.vue.d.ts +10 -0
  60. package/lib/packages/editor/src/components/group-title-color-select.vue.d.ts.map +1 -0
  61. package/lib/packages/editor/src/components/group-title-style-picker.vue.d.ts +10 -0
  62. package/lib/packages/editor/src/components/group-title-style-picker.vue.d.ts.map +1 -0
  63. package/lib/packages/editor/src/components/input-number-range-binding-editor.vue.d.ts +25 -0
  64. package/lib/packages/editor/src/components/input-number-range-binding-editor.vue.d.ts.map +1 -0
  65. package/lib/packages/editor/src/components/input-table-default-rows-editor.vue.d.ts +11 -0
  66. package/lib/packages/editor/src/components/input-table-default-rows-editor.vue.d.ts.map +1 -0
  67. package/lib/packages/editor/src/components/input-table-operation-editor.vue.d.ts +11 -0
  68. package/lib/packages/editor/src/components/input-table-operation-editor.vue.d.ts.map +1 -0
  69. package/lib/packages/editor/src/components/json-code-editor.vue.d.ts +18 -0
  70. package/lib/packages/editor/src/components/json-code-editor.vue.d.ts.map +1 -0
  71. package/lib/packages/editor/src/components/object-section-editor.vue.d.ts +23 -0
  72. package/lib/packages/editor/src/components/object-section-editor.vue.d.ts.map +1 -0
  73. package/lib/packages/editor/src/components/options/default-dict-options-panel.vue.d.ts +10 -0
  74. package/lib/packages/editor/src/components/options/default-dict-options-panel.vue.d.ts.map +1 -0
  75. package/lib/packages/editor/src/components/options/options-editor.vue.d.ts +12 -0
  76. package/lib/packages/editor/src/components/options/options-editor.vue.d.ts.map +1 -0
  77. package/lib/packages/editor/src/components/validation-rules-editor.vue.d.ts +12 -0
  78. package/lib/packages/editor/src/components/validation-rules-editor.vue.d.ts.map +1 -0
  79. package/lib/packages/editor/src/config.d.ts +8 -0
  80. package/lib/packages/editor/src/config.d.ts.map +1 -0
  81. package/lib/packages/editor/src/editor-item-wrapper.vue.d.ts +39 -0
  82. package/lib/packages/editor/src/editor-item-wrapper.vue.d.ts.map +1 -0
  83. package/lib/packages/editor/src/group-title-styles.d.ts +9 -0
  84. package/lib/packages/editor/src/group-title-styles.d.ts.map +1 -0
  85. package/lib/packages/editor/src/index.d.ts +7 -0
  86. package/lib/packages/editor/src/index.d.ts.map +1 -0
  87. package/lib/packages/editor/src/option-sources.d.ts +10 -0
  88. package/lib/packages/editor/src/option-sources.d.ts.map +1 -0
  89. package/lib/packages/editor/src/root-configs.d.ts +12 -0
  90. package/lib/packages/editor/src/root-configs.d.ts.map +1 -0
  91. package/lib/packages/editor/src/shims-vue.d.ts +5 -0
  92. package/lib/packages/editor/src/utils/__tests__/component-replace.test.d.ts +2 -0
  93. package/lib/packages/editor/src/utils/__tests__/component-replace.test.d.ts.map +1 -0
  94. package/lib/packages/editor/src/utils/__tests__/editor-schema.test.d.ts +2 -0
  95. package/lib/packages/editor/src/utils/__tests__/editor-schema.test.d.ts.map +1 -0
  96. package/lib/packages/editor/src/utils/__tests__/form-item-width.test.d.ts +2 -0
  97. package/lib/packages/editor/src/utils/__tests__/form-item-width.test.d.ts.map +1 -0
  98. package/lib/packages/editor/src/utils/__tests__/group-drag-path.test.d.ts +2 -0
  99. package/lib/packages/editor/src/utils/__tests__/group-drag-path.test.d.ts.map +1 -0
  100. package/lib/packages/editor/src/utils/__tests__/record-field.test.d.ts +2 -0
  101. package/lib/packages/editor/src/utils/__tests__/record-field.test.d.ts.map +1 -0
  102. package/lib/packages/editor/src/utils/component-replace.d.ts +8 -0
  103. package/lib/packages/editor/src/utils/component-replace.d.ts.map +1 -0
  104. package/lib/packages/editor/src/utils/editor-schema.d.ts +28 -0
  105. package/lib/packages/editor/src/utils/editor-schema.d.ts.map +1 -0
  106. package/lib/packages/editor/src/utils/form-item-width.d.ts +6 -0
  107. package/lib/packages/editor/src/utils/form-item-width.d.ts.map +1 -0
  108. package/lib/packages/editor/src/utils/local-dict-center.d.ts +11 -0
  109. package/lib/packages/editor/src/utils/local-dict-center.d.ts.map +1 -0
  110. package/lib/packages/editor/src/utils/record-field.d.ts +7 -0
  111. package/lib/packages/editor/src/utils/record-field.d.ts.map +1 -0
  112. package/lib/packages/editor/src/validation-rules.d.ts +10 -0
  113. package/lib/packages/editor/src/validation-rules.d.ts.map +1 -0
  114. package/lib/packages/editor/src/x-editor.vue.d.ts +107 -0
  115. package/lib/packages/editor/src/x-editor.vue.d.ts.map +1 -0
  116. package/lib/packages/ui/src/assets/icon-add-circle-fill.vue.d.ts +3 -0
  117. package/lib/packages/ui/src/assets/icon-add-circle-fill.vue.d.ts.map +1 -0
  118. package/lib/packages/ui/src/assets/icon-close-line.vue.d.ts +3 -0
  119. package/lib/packages/ui/src/assets/icon-close-line.vue.d.ts.map +1 -0
  120. package/lib/packages/ui/src/assets/icon-drag.vue.d.ts +3 -0
  121. package/lib/packages/ui/src/assets/icon-drag.vue.d.ts.map +1 -0
  122. package/lib/packages/ui/src/assets/icon-minus-circle.vue.d.ts +3 -0
  123. package/lib/packages/ui/src/assets/icon-minus-circle.vue.d.ts.map +1 -0
  124. package/lib/packages/ui/src/components/_public/form-item-cols.vue.d.ts +17 -0
  125. package/lib/packages/ui/src/components/_public/form-item-cols.vue.d.ts.map +1 -0
  126. package/lib/packages/ui/src/components/button/type.d.ts +85 -0
  127. package/lib/packages/ui/src/components/button/type.d.ts.map +1 -0
  128. package/lib/packages/ui/src/components/cascader/index.vue.d.ts +66 -0
  129. package/lib/packages/ui/src/components/cascader/index.vue.d.ts.map +1 -0
  130. package/lib/packages/ui/src/components/cascader/type.d.ts +125 -0
  131. package/lib/packages/ui/src/components/cascader/type.d.ts.map +1 -0
  132. package/lib/packages/ui/src/components/checkbox/index.vue.d.ts +30 -0
  133. package/lib/packages/ui/src/components/checkbox/index.vue.d.ts.map +1 -0
  134. package/lib/packages/ui/src/components/checkbox/type.d.ts +36 -0
  135. package/lib/packages/ui/src/components/checkbox/type.d.ts.map +1 -0
  136. package/lib/packages/ui/src/components/checkboxes/index.vue.d.ts +42 -0
  137. package/lib/packages/ui/src/components/checkboxes/index.vue.d.ts.map +1 -0
  138. package/lib/packages/ui/src/components/checkboxes/type.d.ts +56 -0
  139. package/lib/packages/ui/src/components/checkboxes/type.d.ts.map +1 -0
  140. package/lib/packages/ui/src/components/component/index.d.ts +7 -0
  141. package/lib/packages/ui/src/components/component/index.d.ts.map +1 -0
  142. package/lib/packages/ui/src/components/condition-builder/condition-node.vue.d.ts +32 -0
  143. package/lib/packages/ui/src/components/condition-builder/condition-node.vue.d.ts.map +1 -0
  144. package/lib/packages/ui/src/components/condition-builder/group-bracket.vue.d.ts +19 -0
  145. package/lib/packages/ui/src/components/condition-builder/group-bracket.vue.d.ts.map +1 -0
  146. package/lib/packages/ui/src/components/condition-builder/group-indent.vue.d.ts +19 -0
  147. package/lib/packages/ui/src/components/condition-builder/group-indent.vue.d.ts.map +1 -0
  148. package/lib/packages/ui/src/components/condition-builder/index.vue.d.ts +160 -0
  149. package/lib/packages/ui/src/components/condition-builder/index.vue.d.ts.map +1 -0
  150. package/lib/packages/ui/src/components/condition-builder/type.d.ts +88 -0
  151. package/lib/packages/ui/src/components/condition-builder/type.d.ts.map +1 -0
  152. package/lib/packages/ui/src/components/crud/action-type.d.ts +80 -0
  153. package/lib/packages/ui/src/components/crud/action-type.d.ts.map +1 -0
  154. package/lib/packages/ui/src/components/crud/index.vue.d.ts +78 -0
  155. package/lib/packages/ui/src/components/crud/index.vue.d.ts.map +1 -0
  156. package/lib/packages/ui/src/components/crud/multi-action.vue.d.ts +8 -0
  157. package/lib/packages/ui/src/components/crud/multi-action.vue.d.ts.map +1 -0
  158. package/lib/packages/ui/src/components/crud/single-action.vue.d.ts +7 -0
  159. package/lib/packages/ui/src/components/crud/single-action.vue.d.ts.map +1 -0
  160. package/lib/packages/ui/src/components/crud/type.d.ts +171 -0
  161. package/lib/packages/ui/src/components/crud/type.d.ts.map +1 -0
  162. package/lib/packages/ui/src/components/crud-form/index.vue.d.ts +22 -0
  163. package/lib/packages/ui/src/components/crud-form/index.vue.d.ts.map +1 -0
  164. package/lib/packages/ui/src/components/crud-form/type.d.ts +65 -0
  165. package/lib/packages/ui/src/components/crud-form/type.d.ts.map +1 -0
  166. package/lib/packages/ui/src/components/date-picker/index.vue.d.ts +35 -0
  167. package/lib/packages/ui/src/components/date-picker/index.vue.d.ts.map +1 -0
  168. package/lib/packages/ui/src/components/date-picker/type.d.ts +139 -0
  169. package/lib/packages/ui/src/components/date-picker/type.d.ts.map +1 -0
  170. package/lib/packages/ui/src/components/date-range-picker/index.vue.d.ts +15 -0
  171. package/lib/packages/ui/src/components/date-range-picker/index.vue.d.ts.map +1 -0
  172. package/lib/packages/ui/src/components/date-range-picker/type.d.ts +137 -0
  173. package/lib/packages/ui/src/components/date-range-picker/type.d.ts.map +1 -0
  174. package/lib/packages/ui/src/components/date-range-picker-v2/index.vue.d.ts +22 -0
  175. package/lib/packages/ui/src/components/date-range-picker-v2/index.vue.d.ts.map +1 -0
  176. package/lib/packages/ui/src/components/date-range-picker-v2/type.d.ts +37 -0
  177. package/lib/packages/ui/src/components/date-range-picker-v2/type.d.ts.map +1 -0
  178. package/lib/packages/ui/src/components/description/index.vue.d.ts +28 -0
  179. package/lib/packages/ui/src/components/description/index.vue.d.ts.map +1 -0
  180. package/lib/packages/ui/src/components/description/type.d.ts +120 -0
  181. package/lib/packages/ui/src/components/description/type.d.ts.map +1 -0
  182. package/lib/packages/ui/src/components/dialog/type.d.ts +100 -0
  183. package/lib/packages/ui/src/components/dialog/type.d.ts.map +1 -0
  184. package/lib/packages/ui/src/components/dropdown/type.d.ts +62 -0
  185. package/lib/packages/ui/src/components/dropdown/type.d.ts.map +1 -0
  186. package/lib/packages/ui/src/components/ellipsis/index.vue.d.ts +34 -0
  187. package/lib/packages/ui/src/components/ellipsis/index.vue.d.ts.map +1 -0
  188. package/lib/packages/ui/src/components/ellipsis/type.d.ts +26 -0
  189. package/lib/packages/ui/src/components/ellipsis/type.d.ts.map +1 -0
  190. package/lib/packages/ui/src/components/event-menu/index.vue.d.ts +25 -0
  191. package/lib/packages/ui/src/components/event-menu/index.vue.d.ts.map +1 -0
  192. package/lib/packages/ui/src/components/form/form-item.type.d.ts +304 -0
  193. package/lib/packages/ui/src/components/form/form-item.type.d.ts.map +1 -0
  194. package/lib/packages/ui/src/components/form/form-item.vue.d.ts +50 -0
  195. package/lib/packages/ui/src/components/form/form-item.vue.d.ts.map +1 -0
  196. package/lib/packages/ui/src/components/form/form-layout-renderer.vue.d.ts +71 -0
  197. package/lib/packages/ui/src/components/form/form-layout-renderer.vue.d.ts.map +1 -0
  198. package/lib/packages/ui/src/components/form/index.vue.d.ts +220 -0
  199. package/lib/packages/ui/src/components/form/index.vue.d.ts.map +1 -0
  200. package/lib/packages/ui/src/components/form/query-form.d.ts +4 -0
  201. package/lib/packages/ui/src/components/form/query-form.d.ts.map +1 -0
  202. package/lib/packages/ui/src/components/form/type.d.ts +312 -0
  203. package/lib/packages/ui/src/components/form/type.d.ts.map +1 -0
  204. package/lib/packages/ui/src/components/group/group-item.vue.d.ts +9 -0
  205. package/lib/packages/ui/src/components/group/group-item.vue.d.ts.map +1 -0
  206. package/lib/packages/ui/src/components/group/index.vue.d.ts +24 -0
  207. package/lib/packages/ui/src/components/group/index.vue.d.ts.map +1 -0
  208. package/lib/packages/ui/src/components/group/type.d.ts +119 -0
  209. package/lib/packages/ui/src/components/group/type.d.ts.map +1 -0
  210. package/lib/packages/ui/src/components/icon-select/__tests__/icon-sources.test.d.ts +2 -0
  211. package/lib/packages/ui/src/components/icon-select/__tests__/icon-sources.test.d.ts.map +1 -0
  212. package/lib/packages/ui/src/components/icon-select/icon-parser.vue.d.ts +41 -0
  213. package/lib/packages/ui/src/components/icon-select/icon-parser.vue.d.ts.map +1 -0
  214. package/lib/packages/ui/src/components/icon-select/icon-sources.d.ts +22 -0
  215. package/lib/packages/ui/src/components/icon-select/icon-sources.d.ts.map +1 -0
  216. package/lib/packages/ui/src/components/icon-select/index.vue.d.ts +15 -0
  217. package/lib/packages/ui/src/components/icon-select/index.vue.d.ts.map +1 -0
  218. package/lib/packages/ui/src/components/icon-select/type.d.ts +24 -0
  219. package/lib/packages/ui/src/components/icon-select/type.d.ts.map +1 -0
  220. package/lib/packages/ui/src/components/index.d.ts +107 -0
  221. package/lib/packages/ui/src/components/index.d.ts.map +1 -0
  222. package/lib/packages/ui/src/components/input/index.vue.d.ts +20 -0
  223. package/lib/packages/ui/src/components/input/index.vue.d.ts.map +1 -0
  224. package/lib/packages/ui/src/components/input/type.d.ts +121 -0
  225. package/lib/packages/ui/src/components/input/type.d.ts.map +1 -0
  226. package/lib/packages/ui/src/components/input-array/__tests__/layout.test.d.ts +2 -0
  227. package/lib/packages/ui/src/components/input-array/__tests__/layout.test.d.ts.map +1 -0
  228. package/lib/packages/ui/src/components/input-array/index.vue.d.ts +28 -0
  229. package/lib/packages/ui/src/components/input-array/index.vue.d.ts.map +1 -0
  230. package/lib/packages/ui/src/components/input-array/layout.d.ts +11 -0
  231. package/lib/packages/ui/src/components/input-array/layout.d.ts.map +1 -0
  232. package/lib/packages/ui/src/components/input-array/type.d.ts +89 -0
  233. package/lib/packages/ui/src/components/input-array/type.d.ts.map +1 -0
  234. package/lib/packages/ui/src/components/input-collapse/index.vue.d.ts +7 -0
  235. package/lib/packages/ui/src/components/input-collapse/index.vue.d.ts.map +1 -0
  236. package/lib/packages/ui/src/components/input-collapse/type.d.ts +50 -0
  237. package/lib/packages/ui/src/components/input-collapse/type.d.ts.map +1 -0
  238. package/lib/packages/ui/src/components/input-linked/index.vue.d.ts +13 -0
  239. package/lib/packages/ui/src/components/input-linked/index.vue.d.ts.map +1 -0
  240. package/lib/packages/ui/src/components/input-linked/type.d.ts +32 -0
  241. package/lib/packages/ui/src/components/input-linked/type.d.ts.map +1 -0
  242. package/lib/packages/ui/src/components/input-number/index.vue.d.ts +29 -0
  243. package/lib/packages/ui/src/components/input-number/index.vue.d.ts.map +1 -0
  244. package/lib/packages/ui/src/components/input-number/type.d.ts +57 -0
  245. package/lib/packages/ui/src/components/input-number/type.d.ts.map +1 -0
  246. package/lib/packages/ui/src/components/input-number-range/index.vue.d.ts +28 -0
  247. package/lib/packages/ui/src/components/input-number-range/index.vue.d.ts.map +1 -0
  248. package/lib/packages/ui/src/components/input-number-range/type.d.ts +49 -0
  249. package/lib/packages/ui/src/components/input-number-range/type.d.ts.map +1 -0
  250. package/lib/packages/ui/src/components/input-table/index.vue.d.ts +25 -0
  251. package/lib/packages/ui/src/components/input-table/index.vue.d.ts.map +1 -0
  252. package/lib/packages/ui/src/components/input-table/type.d.ts +37 -0
  253. package/lib/packages/ui/src/components/input-table/type.d.ts.map +1 -0
  254. package/lib/packages/ui/src/components/input-upload/index.vue.d.ts +11 -0
  255. package/lib/packages/ui/src/components/input-upload/index.vue.d.ts.map +1 -0
  256. package/lib/packages/ui/src/components/input-upload/type.d.ts +59 -0
  257. package/lib/packages/ui/src/components/input-upload/type.d.ts.map +1 -0
  258. package/lib/packages/ui/src/components/json/index.vue.d.ts +10 -0
  259. package/lib/packages/ui/src/components/json/index.vue.d.ts.map +1 -0
  260. package/lib/packages/ui/src/components/link/index.vue.d.ts +21 -0
  261. package/lib/packages/ui/src/components/link/index.vue.d.ts.map +1 -0
  262. package/lib/packages/ui/src/components/link/type.d.ts +28 -0
  263. package/lib/packages/ui/src/components/link/type.d.ts.map +1 -0
  264. package/lib/packages/ui/src/components/radios/index.vue.d.ts +42 -0
  265. package/lib/packages/ui/src/components/radios/index.vue.d.ts.map +1 -0
  266. package/lib/packages/ui/src/components/radios/type.d.ts +36 -0
  267. package/lib/packages/ui/src/components/radios/type.d.ts.map +1 -0
  268. package/lib/packages/ui/src/components/search-bar/index.vue.d.ts +37 -0
  269. package/lib/packages/ui/src/components/search-bar/index.vue.d.ts.map +1 -0
  270. package/lib/packages/ui/src/components/select/index.vue.d.ts +48 -0
  271. package/lib/packages/ui/src/components/select/index.vue.d.ts.map +1 -0
  272. package/lib/packages/ui/src/components/select/type.d.ts +222 -0
  273. package/lib/packages/ui/src/components/select/type.d.ts.map +1 -0
  274. package/lib/packages/ui/src/components/static/options-viewer.vue.d.ts +16 -0
  275. package/lib/packages/ui/src/components/static/options-viewer.vue.d.ts.map +1 -0
  276. package/lib/packages/ui/src/components/static/rich-text-viewer.vue.d.ts +8 -0
  277. package/lib/packages/ui/src/components/static/rich-text-viewer.vue.d.ts.map +1 -0
  278. package/lib/packages/ui/src/components/static/textarea-viewer.vue.d.ts +6 -0
  279. package/lib/packages/ui/src/components/static/textarea-viewer.vue.d.ts.map +1 -0
  280. package/lib/packages/ui/src/components/switch/index.vue.d.ts +38 -0
  281. package/lib/packages/ui/src/components/switch/index.vue.d.ts.map +1 -0
  282. package/lib/packages/ui/src/components/switch/type.d.ts +72 -0
  283. package/lib/packages/ui/src/components/switch/type.d.ts.map +1 -0
  284. package/lib/packages/ui/src/components/table/index.vue.d.ts +1317 -0
  285. package/lib/packages/ui/src/components/table/index.vue.d.ts.map +1 -0
  286. package/lib/packages/ui/src/components/table/table-column.vue.d.ts +44 -0
  287. package/lib/packages/ui/src/components/table/table-column.vue.d.ts.map +1 -0
  288. package/lib/packages/ui/src/components/table/type.d.ts +306 -0
  289. package/lib/packages/ui/src/components/table/type.d.ts.map +1 -0
  290. package/lib/packages/ui/src/components/table-select/const.d.ts +14 -0
  291. package/lib/packages/ui/src/components/table-select/const.d.ts.map +1 -0
  292. package/lib/packages/ui/src/components/table-select/index.vue.d.ts +21871 -0
  293. package/lib/packages/ui/src/components/table-select/index.vue.d.ts.map +1 -0
  294. package/lib/packages/ui/src/components/table-select/table-selector-main.vue.d.ts +4795 -0
  295. package/lib/packages/ui/src/components/table-select/table-selector-main.vue.d.ts.map +1 -0
  296. package/lib/packages/ui/src/components/table-select/type.d.ts +71 -0
  297. package/lib/packages/ui/src/components/table-select/type.d.ts.map +1 -0
  298. package/lib/packages/ui/src/components/tabs/index.vue.d.ts +6 -0
  299. package/lib/packages/ui/src/components/tabs/index.vue.d.ts.map +1 -0
  300. package/lib/packages/ui/src/components/tabs/type.d.ts +23 -0
  301. package/lib/packages/ui/src/components/tabs/type.d.ts.map +1 -0
  302. package/lib/packages/ui/src/components/text/index.vue.d.ts +7 -0
  303. package/lib/packages/ui/src/components/text/index.vue.d.ts.map +1 -0
  304. package/lib/packages/ui/src/components/text/type.d.ts +7 -0
  305. package/lib/packages/ui/src/components/text/type.d.ts.map +1 -0
  306. package/lib/packages/ui/src/components/textarea/type.d.ts +79 -0
  307. package/lib/packages/ui/src/components/textarea/type.d.ts.map +1 -0
  308. package/lib/packages/ui/src/components/toolbar/index.vue.d.ts +15 -0
  309. package/lib/packages/ui/src/components/toolbar/index.vue.d.ts.map +1 -0
  310. package/lib/packages/ui/src/components/transitions/TransitionHeight.vue.d.ts +30 -0
  311. package/lib/packages/ui/src/components/transitions/TransitionHeight.vue.d.ts.map +1 -0
  312. package/lib/packages/ui/src/components/tree/index.vue.d.ts +17 -0
  313. package/lib/packages/ui/src/components/tree/index.vue.d.ts.map +1 -0
  314. package/lib/packages/ui/src/components/tree/tree-node.vue.d.ts +8 -0
  315. package/lib/packages/ui/src/components/tree/tree-node.vue.d.ts.map +1 -0
  316. package/lib/packages/ui/src/components/tree/tree-state.d.ts +35 -0
  317. package/lib/packages/ui/src/components/tree/tree-state.d.ts.map +1 -0
  318. package/lib/packages/ui/src/components/tree/type.d.ts +50 -0
  319. package/lib/packages/ui/src/components/tree/type.d.ts.map +1 -0
  320. package/lib/packages/ui/src/components/tree-select/index.vue.d.ts +94 -0
  321. package/lib/packages/ui/src/components/tree-select/index.vue.d.ts.map +1 -0
  322. package/lib/packages/ui/src/components/tree-select/type.d.ts +156 -0
  323. package/lib/packages/ui/src/components/tree-select/type.d.ts.map +1 -0
  324. package/lib/packages/ui/src/components/tree-select-crud/index.vue.d.ts +3102 -0
  325. package/lib/packages/ui/src/components/tree-select-crud/index.vue.d.ts.map +1 -0
  326. package/lib/packages/ui/src/components/tree-select-crud/type.d.ts +88 -0
  327. package/lib/packages/ui/src/components/tree-select-crud/type.d.ts.map +1 -0
  328. package/lib/packages/ui/src/components/upload/index.vue.d.ts +54 -0
  329. package/lib/packages/ui/src/components/upload/index.vue.d.ts.map +1 -0
  330. package/lib/packages/ui/src/composables/__tests__/use-option-static.test.d.ts +2 -0
  331. package/lib/packages/ui/src/composables/__tests__/use-option-static.test.d.ts.map +1 -0
  332. package/lib/packages/ui/src/composables/index.d.ts +3 -0
  333. package/lib/packages/ui/src/composables/index.d.ts.map +1 -0
  334. package/lib/packages/ui/src/composables/use-action.d.ts +21 -0
  335. package/lib/packages/ui/src/composables/use-action.d.ts.map +1 -0
  336. package/lib/packages/ui/src/composables/use-component.d.ts +74 -0
  337. package/lib/packages/ui/src/composables/use-component.d.ts.map +1 -0
  338. package/lib/packages/ui/src/composables/use-config.d.ts +76 -0
  339. package/lib/packages/ui/src/composables/use-config.d.ts.map +1 -0
  340. package/lib/packages/ui/src/composables/use-draggable.d.ts +22 -0
  341. package/lib/packages/ui/src/composables/use-draggable.d.ts.map +1 -0
  342. package/lib/packages/ui/src/composables/use-input-array.d.ts +45 -0
  343. package/lib/packages/ui/src/composables/use-input-array.d.ts.map +1 -0
  344. package/lib/packages/ui/src/composables/use-label.d.ts +2 -0
  345. package/lib/packages/ui/src/composables/use-label.d.ts.map +1 -0
  346. package/lib/packages/ui/src/composables/use-loading.d.ts +6 -0
  347. package/lib/packages/ui/src/composables/use-loading.d.ts.map +1 -0
  348. package/lib/packages/ui/src/composables/use-option-static.d.ts +51 -0
  349. package/lib/packages/ui/src/composables/use-option-static.d.ts.map +1 -0
  350. package/lib/packages/ui/src/composables/use-options.d.ts +66 -0
  351. package/lib/packages/ui/src/composables/use-options.d.ts.map +1 -0
  352. package/lib/packages/ui/src/composables/use-paging.d.ts +134 -0
  353. package/lib/packages/ui/src/composables/use-paging.d.ts.map +1 -0
  354. package/lib/packages/ui/src/composables/use-scaffold.d.ts +54 -0
  355. package/lib/packages/ui/src/composables/use-scaffold.d.ts.map +1 -0
  356. package/lib/packages/ui/src/composables/use-toggle.d.ts +11 -0
  357. package/lib/packages/ui/src/composables/use-toggle.d.ts.map +1 -0
  358. package/lib/packages/ui/src/composables/use-tree-static-path.d.ts +45 -0
  359. package/lib/packages/ui/src/composables/use-tree-static-path.d.ts.map +1 -0
  360. package/lib/packages/ui/src/composables/use-visible.d.ts +11 -0
  361. package/lib/packages/ui/src/composables/use-visible.d.ts.map +1 -0
  362. package/lib/packages/ui/src/config/layout.d.ts +9 -0
  363. package/lib/packages/ui/src/config/layout.d.ts.map +1 -0
  364. package/lib/packages/ui/src/constants/injection.d.ts +11 -0
  365. package/lib/packages/ui/src/constants/injection.d.ts.map +1 -0
  366. package/lib/packages/ui/src/directives/highlight.d.ts +7 -0
  367. package/lib/packages/ui/src/directives/highlight.d.ts.map +1 -0
  368. package/lib/packages/ui/src/directives/index.d.ts +2 -0
  369. package/lib/packages/ui/src/directives/index.d.ts.map +1 -0
  370. package/lib/packages/ui/src/index.d.ts +59 -0
  371. package/lib/packages/ui/src/index.d.ts.map +1 -0
  372. package/lib/packages/ui/src/types/api.d.ts +8 -0
  373. package/lib/packages/ui/src/types/api.d.ts.map +1 -0
  374. package/lib/packages/ui/src/types/base.d.ts +306 -0
  375. package/lib/packages/ui/src/types/base.d.ts.map +1 -0
  376. package/lib/packages/ui/src/types/form.d.ts +82 -0
  377. package/lib/packages/ui/src/types/form.d.ts.map +1 -0
  378. package/lib/packages/ui/src/types/index.d.ts +6 -0
  379. package/lib/packages/ui/src/types/index.d.ts.map +1 -0
  380. package/lib/packages/ui/src/types/option.d.ts +115 -0
  381. package/lib/packages/ui/src/types/option.d.ts.map +1 -0
  382. package/lib/packages/ui/src/types/pagination.d.ts +35 -0
  383. package/lib/packages/ui/src/types/pagination.d.ts.map +1 -0
  384. package/lib/packages/ui/src/types/table.d.ts +34 -0
  385. package/lib/packages/ui/src/types/table.d.ts.map +1 -0
  386. package/lib/packages/ui/src/types/util.d.ts +6 -0
  387. package/lib/packages/ui/src/types/util.d.ts.map +1 -0
  388. package/lib/packages/ui/src/utils/__tests__/condition.test.d.ts +2 -0
  389. package/lib/packages/ui/src/utils/__tests__/condition.test.d.ts.map +1 -0
  390. package/lib/packages/ui/src/utils/__tests__/editor-container.test.d.ts +2 -0
  391. package/lib/packages/ui/src/utils/__tests__/editor-container.test.d.ts.map +1 -0
  392. package/lib/packages/ui/src/utils/__tests__/form.test.d.ts +2 -0
  393. package/lib/packages/ui/src/utils/__tests__/form.test.d.ts.map +1 -0
  394. package/lib/packages/ui/src/utils/__tests__/tree.test.d.ts +2 -0
  395. package/lib/packages/ui/src/utils/__tests__/tree.test.d.ts.map +1 -0
  396. package/lib/packages/ui/src/utils/common.d.ts +13 -0
  397. package/lib/packages/ui/src/utils/common.d.ts.map +1 -0
  398. package/lib/packages/ui/src/utils/computed-state-manager.d.ts +3 -0
  399. package/lib/packages/ui/src/utils/computed-state-manager.d.ts.map +1 -0
  400. package/lib/packages/ui/src/utils/condition.d.ts +4 -0
  401. package/lib/packages/ui/src/utils/condition.d.ts.map +1 -0
  402. package/lib/packages/ui/src/utils/editor-container.d.ts +25 -0
  403. package/lib/packages/ui/src/utils/editor-container.d.ts.map +1 -0
  404. package/lib/packages/ui/src/utils/form-item.d.ts +23 -0
  405. package/lib/packages/ui/src/utils/form-item.d.ts.map +1 -0
  406. package/lib/packages/ui/src/utils/form.d.ts +75 -0
  407. package/lib/packages/ui/src/utils/form.d.ts.map +1 -0
  408. package/lib/packages/ui/src/utils/id.d.ts +24 -0
  409. package/lib/packages/ui/src/utils/id.d.ts.map +1 -0
  410. package/lib/packages/ui/src/utils/options.d.ts +14 -0
  411. package/lib/packages/ui/src/utils/options.d.ts.map +1 -0
  412. package/lib/packages/ui/src/utils/reactive.d.ts +13 -0
  413. package/lib/packages/ui/src/utils/reactive.d.ts.map +1 -0
  414. package/lib/packages/ui/src/utils/style.d.ts +5 -0
  415. package/lib/packages/ui/src/utils/style.d.ts.map +1 -0
  416. package/lib/packages/ui/src/utils/tree.d.ts +51 -0
  417. package/lib/packages/ui/src/utils/tree.d.ts.map +1 -0
  418. package/lib/xkit-editor.css +2 -0
  419. package/lib/xkit-editor.js +78741 -0
  420. package/lib/xkit-editor.umd.cjs +99 -0
  421. package/package.json +50 -0
  422. package/src/component-configs/__tests__/config.test.ts +288 -0
  423. package/src/component-configs/__tests__/group.test.ts +104 -0
  424. package/src/component-configs/cascader.ts +20 -0
  425. package/src/component-configs/checkbox.ts +43 -0
  426. package/src/component-configs/common-props.ts +130 -0
  427. package/src/component-configs/date-picker.ts +153 -0
  428. package/src/component-configs/date-range-picker.ts +185 -0
  429. package/src/component-configs/group.ts +196 -0
  430. package/src/component-configs/icon-select.ts +56 -0
  431. package/src/component-configs/input-array.ts +184 -0
  432. package/src/component-configs/input-number-range.ts +143 -0
  433. package/src/component-configs/input-number.ts +111 -0
  434. package/src/component-configs/input-table.ts +191 -0
  435. package/src/component-configs/input-upload.ts +123 -0
  436. package/src/component-configs/input.ts +48 -0
  437. package/src/component-configs/layout-sections.ts +546 -0
  438. package/src/component-configs/options-config.ts +12 -0
  439. package/src/component-configs/radio.ts +26 -0
  440. package/src/component-configs/select.ts +42 -0
  441. package/src/component-configs/switch.ts +19 -0
  442. package/src/component-configs/textarea.ts +84 -0
  443. package/src/component-configs/types.ts +37 -0
  444. package/src/components/condition-editor.vue +641 -0
  445. package/src/components/design-renderers/input-array-design.vue +283 -0
  446. package/src/components/design-renderers/input-table-design.vue +311 -0
  447. package/src/components/form-item-layout-editor.vue +291 -0
  448. package/src/components/form-item-span-editor.vue +328 -0
  449. package/src/components/form-layout-editor.vue +263 -0
  450. package/src/components/group-title-color-select.vue +75 -0
  451. package/src/components/group-title-style-picker.vue +125 -0
  452. package/src/components/input-number-range-binding-editor.vue +226 -0
  453. package/src/components/input-table-default-rows-editor.vue +147 -0
  454. package/src/components/input-table-operation-editor.vue +168 -0
  455. package/src/components/json-code-editor.vue +219 -0
  456. package/src/components/object-section-editor.vue +342 -0
  457. package/src/components/options/default-dict-options-panel.vue +197 -0
  458. package/src/components/options/options-editor.vue +161 -0
  459. package/src/components/table-columns-editor.vue +353 -0
  460. package/src/components/validation-rules-editor.vue +321 -0
  461. package/src/config.ts +51 -0
  462. package/src/editor-item-wrapper.vue +254 -0
  463. package/src/group-title-styles.ts +82 -0
  464. package/src/index.ts +6 -0
  465. package/src/option-sources.ts +45 -0
  466. package/src/root-configs.ts +278 -0
  467. package/src/shims-vue.d.ts +5 -0
  468. package/src/utils/__tests__/component-replace.test.ts +129 -0
  469. package/src/utils/__tests__/editor-schema.test.ts +429 -0
  470. package/src/utils/__tests__/form-item-width.test.ts +53 -0
  471. package/src/utils/__tests__/group-drag-path.test.ts +84 -0
  472. package/src/utils/__tests__/record-field.test.ts +34 -0
  473. package/src/utils/component-replace.ts +67 -0
  474. package/src/utils/editor-schema.ts +374 -0
  475. package/src/utils/form-item-width.ts +40 -0
  476. package/src/utils/local-dict-center.ts +81 -0
  477. package/src/utils/record-field.ts +30 -0
  478. package/src/validation-rules.ts +104 -0
  479. package/src/x-editor.vue +1300 -0
@@ -0,0 +1,147 @@
1
+ <template>
2
+ <div class="input-table-default-rows-editor">
3
+ <div class="input-table-default-rows-editor__summary">
4
+ <div class="input-table-default-rows-editor__main">
5
+ <span class="input-table-default-rows-editor__title">预设数据</span>
6
+ <span class="input-table-default-rows-editor__count">已配置 {{ rowCount }} 行</span>
7
+ </div>
8
+ <div class="input-table-default-rows-editor__actions">
9
+ <el-button size="small" @click="openDialog">编辑</el-button>
10
+ <el-button size="small" :disabled="rowCount === 0" @click="clearRows">清空</el-button>
11
+ </div>
12
+ </div>
13
+
14
+ <el-dialog
15
+ v-model="dialogVisible"
16
+ title="编辑预设数据"
17
+ width="960px"
18
+ append-to-body
19
+ destroy-on-close
20
+ class="input-table-default-rows-editor__dialog"
21
+ >
22
+ <x-input-table
23
+ v-model="draftRows"
24
+ :id-field="idField"
25
+ :items="editableColumns"
26
+ border
27
+ addable
28
+ deletable
29
+ :footer-toolbar="footerToolbar"
30
+ />
31
+ <template #footer>
32
+ <el-button @click="dialogVisible = false">取消</el-button>
33
+ <el-button type="primary" @click="commitRows">确定</el-button>
34
+ </template>
35
+ </el-dialog>
36
+ </div>
37
+ </template>
38
+
39
+ <script setup lang="ts">
40
+ import { computed, inject, ref, type ComputedRef } from 'vue'
41
+ import { ElButton, ElDialog } from 'element-plus'
42
+ import { XInputTable } from 'xkit-ui'
43
+
44
+ type TableColumn = Record<string, any>
45
+ type TableRow = Record<string, any>
46
+
47
+ const props = defineProps<{
48
+ modelValue?: TableRow[]
49
+ }>()
50
+
51
+ const emit = defineEmits<{
52
+ (e: 'update:modelValue', value: TableRow[] | undefined): void
53
+ }>()
54
+
55
+ const editorContext = inject<ComputedRef<{ selectedItem?: any }> | null>('x-editor-context', null)
56
+ const selectedItem = computed(() => editorContext?.value?.selectedItem || {})
57
+ const idField = computed(() => selectedItem.value.idField || 'id')
58
+ const sourceColumns = computed<TableColumn[]>(() => {
59
+ return Array.isArray(selectedItem.value.items) ? selectedItem.value.items.filter((item: TableColumn) => item.type !== 'operation') : []
60
+ })
61
+ const rowCount = computed(() => (Array.isArray(props.modelValue) ? props.modelValue.length : 0))
62
+ const dialogVisible = ref(false)
63
+ const draftRows = ref<TableRow[]>([])
64
+ const footerToolbar: any = {
65
+ left: [{ type: 'button', action: 'add', label: '新增', attrs: { type: 'primary' } }]
66
+ }
67
+
68
+ const cloneRows = (value: TableRow[] | undefined) => {
69
+ return JSON.parse(JSON.stringify(Array.isArray(value) ? value : [])) as TableRow[]
70
+ }
71
+
72
+ const editableColumns = computed<TableColumn[]>(() => {
73
+ const columns: TableColumn[] = sourceColumns.value.map((column, index) => {
74
+ const type = column.type === 'text' ? 'input' : column.type || 'input'
75
+ return {
76
+ width: 160,
77
+ ...column,
78
+ label: column.label || column.name || `列${index + 1}`,
79
+ name: column.name || `field${index + 1}`,
80
+ type
81
+ }
82
+ })
83
+
84
+ columns.push({
85
+ label: '操作',
86
+ type: 'operation',
87
+ actions: [{ type: 'link', action: 'delete', label: '删除' }]
88
+ })
89
+
90
+ return columns
91
+ })
92
+
93
+ const openDialog = () => {
94
+ draftRows.value = cloneRows(props.modelValue)
95
+ dialogVisible.value = true
96
+ }
97
+
98
+ const clearRows = () => {
99
+ emit('update:modelValue', undefined)
100
+ }
101
+
102
+ const commitRows = () => {
103
+ emit('update:modelValue', draftRows.value.length ? cloneRows(draftRows.value) : undefined)
104
+ dialogVisible.value = false
105
+ }
106
+ </script>
107
+
108
+ <style scoped lang="scss">
109
+ .input-table-default-rows-editor {
110
+ width: 100%;
111
+ }
112
+
113
+ .input-table-default-rows-editor__summary {
114
+ display: flex;
115
+ align-items: center;
116
+ justify-content: space-between;
117
+ gap: 8px;
118
+ padding: 8px;
119
+ border: 1px solid var(--el-border-color-lighter);
120
+ border-radius: 4px;
121
+ background: var(--el-fill-color-blank);
122
+ }
123
+
124
+ .input-table-default-rows-editor__main {
125
+ min-width: 0;
126
+ display: flex;
127
+ flex-direction: column;
128
+ gap: 2px;
129
+ }
130
+
131
+ .input-table-default-rows-editor__title {
132
+ color: var(--el-text-color-primary);
133
+ font-size: 13px;
134
+ font-weight: 600;
135
+ }
136
+
137
+ .input-table-default-rows-editor__count {
138
+ color: var(--el-text-color-secondary);
139
+ font-size: 12px;
140
+ }
141
+
142
+ .input-table-default-rows-editor__actions {
143
+ flex: none;
144
+ display: flex;
145
+ gap: 6px;
146
+ }
147
+ </style>
@@ -0,0 +1,168 @@
1
+ <template>
2
+ <div class="input-table-operation-editor">
3
+ <div class="input-table-operation-editor__row">
4
+ <span class="input-table-operation-editor__label">显示行操作列</span>
5
+ <el-switch v-model="operationVisible" @change="emitColumns" />
6
+ </div>
7
+ <div v-if="operationVisible" class="input-table-operation-editor__row">
8
+ <span class="input-table-operation-editor__label">操作列宽度</span>
9
+ <el-input-number
10
+ v-model="operationWidth"
11
+ :min="60"
12
+ :step="10"
13
+ controls-position="right"
14
+ size="small"
15
+ @change="emitColumns"
16
+ />
17
+ </div>
18
+ <div v-if="operationVisible" class="input-table-operation-editor__actions">
19
+ <label class="input-table-operation-editor__action">
20
+ <span>新增</span>
21
+ <el-switch v-model="operationActions.add" @change="emitColumns" />
22
+ </label>
23
+ <label class="input-table-operation-editor__action">
24
+ <span>删除</span>
25
+ <el-switch v-model="operationActions.delete" @change="emitColumns" />
26
+ </label>
27
+ <label class="input-table-operation-editor__action">
28
+ <span>新增子项</span>
29
+ <el-switch v-model="operationActions.addChild" @change="emitColumns" />
30
+ </label>
31
+ </div>
32
+ </div>
33
+ </template>
34
+
35
+ <script setup lang="ts">
36
+ import { ref, watch } from 'vue'
37
+ import { ElInputNumber, ElSwitch } from 'element-plus'
38
+
39
+ type TableColumn = Record<string, any>
40
+
41
+ const props = defineProps<{
42
+ modelValue?: TableColumn[]
43
+ }>()
44
+
45
+ const emit = defineEmits<{
46
+ (e: 'update:modelValue', value: TableColumn[]): void
47
+ }>()
48
+
49
+ const operationVisible = ref(true)
50
+ const operationWidth = ref(100)
51
+ const operationActions = ref({
52
+ add: true,
53
+ delete: true,
54
+ addChild: false
55
+ })
56
+ let syncingFromModel = false
57
+
58
+ const cleanOperationColumn = (column: TableColumn): TableColumn => {
59
+ const { __editorId: _editorId, id: _id, ...rest } = column
60
+ return rest
61
+ }
62
+
63
+ const createActionItem = (action: 'add' | 'delete' | 'add-child') => {
64
+ const labelMap = {
65
+ add: '新增',
66
+ delete: '删除',
67
+ 'add-child': '新增子项'
68
+ }
69
+ return { type: 'link', action, label: labelMap[action] }
70
+ }
71
+
72
+ const normalizeOperationActionState = (actions: unknown) => {
73
+ const actionList = Array.isArray(actions) ? actions : []
74
+ return {
75
+ add: actionList.length === 0 || actionList.some((item) => item?.action === 'add' || item === 'add'),
76
+ delete: actionList.length === 0 || actionList.some((item) => item?.action === 'delete' || item === 'delete'),
77
+ addChild: actionList.some((item) => item?.action === 'add-child' || item === 'add-child')
78
+ }
79
+ }
80
+
81
+ const createOperationActions = () => {
82
+ const result: TableColumn[] = []
83
+ if (operationActions.value.add) result.push(createActionItem('add'))
84
+ if (operationActions.value.delete) result.push(createActionItem('delete'))
85
+ if (operationActions.value.addChild) result.push(createActionItem('add-child'))
86
+ return result
87
+ }
88
+
89
+ const createOperationColumn = (): TableColumn => ({
90
+ label: '操作',
91
+ type: 'operation',
92
+ width: operationWidth.value,
93
+ actions: createOperationActions()
94
+ })
95
+
96
+ const syncFromModelValue = (value: TableColumn[] | undefined) => {
97
+ const source = Array.isArray(value) ? value : []
98
+ const operationColumn = source.find((item) => item.type === 'operation')
99
+ syncingFromModel = true
100
+ operationVisible.value = source.length === 0 || Boolean(operationColumn)
101
+ operationWidth.value = Number(operationColumn?.width) || 100
102
+ operationActions.value = normalizeOperationActionState(operationColumn?.actions)
103
+ syncingFromModel = false
104
+ }
105
+
106
+ const normalizeOutputColumns = (value: TableColumn[] | undefined) => {
107
+ const source = Array.isArray(value) ? value : []
108
+ return source.map((item) => (item.type === 'operation' ? cleanOperationColumn(item) : item))
109
+ }
110
+
111
+ const isSameColumns = (left: TableColumn[] | undefined, right: TableColumn[] | undefined) => {
112
+ return JSON.stringify(normalizeOutputColumns(left)) === JSON.stringify(normalizeOutputColumns(right))
113
+ }
114
+
115
+ const emitColumns = () => {
116
+ if (syncingFromModel) return
117
+ const source = Array.isArray(props.modelValue) ? props.modelValue : []
118
+ const columns = source.filter((item) => item.type !== 'operation')
119
+ if (operationVisible.value) {
120
+ columns.push(createOperationColumn())
121
+ }
122
+ if (isSameColumns(props.modelValue, columns)) return
123
+ emit('update:modelValue', columns)
124
+ }
125
+
126
+ watch(
127
+ () => props.modelValue,
128
+ (value) => {
129
+ syncFromModelValue(value)
130
+ },
131
+ { immediate: true }
132
+ )
133
+ </script>
134
+
135
+ <style scoped lang="scss">
136
+ .input-table-operation-editor {
137
+ width: 100%;
138
+ display: grid;
139
+ gap: 10px;
140
+ }
141
+
142
+ .input-table-operation-editor__row {
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: space-between;
146
+ gap: 8px;
147
+ }
148
+
149
+ .input-table-operation-editor__label {
150
+ color: var(--el-text-color-regular);
151
+ font-size: 13px;
152
+ }
153
+
154
+ .input-table-operation-editor__actions {
155
+ display: grid;
156
+ gap: 8px;
157
+ }
158
+
159
+ .input-table-operation-editor__action {
160
+ min-width: 0;
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: space-between;
164
+ gap: 8px;
165
+ color: var(--el-text-color-regular);
166
+ font-size: 12px;
167
+ }
168
+ </style>
@@ -0,0 +1,219 @@
1
+ <template>
2
+ <div class="json-code-editor" :class="{ 'is-readonly': readonly, 'has-line-numbers': hasLineNumbers }">
3
+ <template v-if="readonly">
4
+ <div v-if="hasLineNumbers" class="json-code-editor__gutter" aria-hidden="true">
5
+ <span v-for="line in highlightedLines" :key="line.number">{{ line.number }}</span>
6
+ </div>
7
+ <pre class="json-code-editor__viewer"><code><span
8
+ v-for="line in highlightedLines"
9
+ :key="line.number"
10
+ class="json-code-editor__line"
11
+ ><span
12
+ v-for="(token, index) in line.tokens"
13
+ :key="index"
14
+ :class="`json-code-editor__token is-${token.kind}`"
15
+ >{{ token.value }}</span></span></code></pre>
16
+ </template>
17
+ <template v-else>
18
+ <div v-if="hasLineNumbers" class="json-code-editor__gutter" aria-hidden="true">
19
+ <span v-for="line in editableLineNumbers" :key="line">{{ line }}</span>
20
+ </div>
21
+ <textarea
22
+ class="json-code-editor__textarea"
23
+ :value="modelValue"
24
+ spellcheck="false"
25
+ autocapitalize="off"
26
+ autocomplete="off"
27
+ @input="handleInput"
28
+ @keydown.tab.prevent="handleTab"
29
+ ></textarea>
30
+ </template>
31
+ </div>
32
+ </template>
33
+
34
+ <script setup lang="ts">
35
+ import { computed } from 'vue'
36
+
37
+ type JsonTokenKind = 'plain' | 'punctuation' | 'key' | 'string' | 'number' | 'boolean' | 'null'
38
+
39
+ interface JsonToken {
40
+ kind: JsonTokenKind
41
+ value: string
42
+ }
43
+
44
+ const props = withDefaults(
45
+ defineProps<{
46
+ modelValue?: string
47
+ readonly?: boolean
48
+ lineNumbers?: 'on' | 'off'
49
+ }>(),
50
+ {
51
+ modelValue: '',
52
+ readonly: false,
53
+ lineNumbers: 'on'
54
+ }
55
+ )
56
+
57
+ const emit = defineEmits<{
58
+ (e: 'update:modelValue', value: string): void
59
+ }>()
60
+
61
+ const tokenPattern = /("(?:\\.|[^"\\])*")(\s*:)?|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\btrue\b|\bfalse\b|\bnull\b|[{}\[\],:]/g
62
+
63
+ const getTokenKind = (value: string, separator = ''): JsonTokenKind => {
64
+ if (value.startsWith('"')) return separator ? 'key' : 'string'
65
+ if (value === 'true' || value === 'false') return 'boolean'
66
+ if (value === 'null') return 'null'
67
+ if (/^-?\d/.test(value)) return 'number'
68
+ return 'punctuation'
69
+ }
70
+
71
+ const tokenizeLine = (line: string) => {
72
+ const tokens: JsonToken[] = []
73
+ let offset = 0
74
+
75
+ for (const match of line.matchAll(tokenPattern)) {
76
+ const index = match.index ?? 0
77
+ if (index > offset) tokens.push({ kind: 'plain', value: line.slice(offset, index) })
78
+
79
+ const value = match[1] ?? match[0]
80
+ const separator = match[2] ?? ''
81
+ tokens.push({ kind: getTokenKind(value, separator), value })
82
+ if (separator) tokens.push({ kind: 'punctuation', value: separator })
83
+ offset = index + match[0].length
84
+ }
85
+
86
+ if (offset < line.length) tokens.push({ kind: 'plain', value: line.slice(offset) })
87
+ return tokens.length ? tokens : [{ kind: 'plain', value: '' }]
88
+ }
89
+
90
+ const textLines = computed(() => (props.modelValue || '').split('\n'))
91
+
92
+ const hasLineNumbers = computed(() => props.lineNumbers === 'on')
93
+
94
+ const highlightedLines = computed(() =>
95
+ textLines.value.map((line, index) => ({
96
+ number: index + 1,
97
+ tokens: tokenizeLine(line)
98
+ }))
99
+ )
100
+
101
+ const editableLineNumbers = computed(() => textLines.value.map((_, index) => index + 1))
102
+
103
+ const handleInput = (event: Event) => {
104
+ emit('update:modelValue', (event.target as HTMLTextAreaElement).value)
105
+ }
106
+
107
+ const handleTab = (event: KeyboardEvent) => {
108
+ const textarea = event.target as HTMLTextAreaElement
109
+ const start = textarea.selectionStart
110
+ const end = textarea.selectionEnd
111
+ const nextValue = `${textarea.value.slice(0, start)} ${textarea.value.slice(end)}`
112
+ emit('update:modelValue', nextValue)
113
+
114
+ requestAnimationFrame(() => {
115
+ textarea.selectionStart = start + 2
116
+ textarea.selectionEnd = start + 2
117
+ })
118
+ }
119
+
120
+ const formatDocument = async () => {
121
+ try {
122
+ emit('update:modelValue', JSON.stringify(JSON.parse(props.modelValue || '{}'), null, 2))
123
+ } catch {
124
+ // The parent validates JSON and owns the error message.
125
+ }
126
+ }
127
+
128
+ defineExpose({
129
+ formatDocument
130
+ })
131
+ </script>
132
+
133
+ <style scoped lang="scss">
134
+ .json-code-editor {
135
+ width: 100%;
136
+ min-height: 520px;
137
+ height: 100%;
138
+ display: grid;
139
+ grid-template-columns: minmax(0, 1fr);
140
+ overflow: hidden;
141
+ border: 1px solid #dcdfe6;
142
+ border-radius: 4px;
143
+ background: #fbfcfe;
144
+ color: #303133;
145
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;
146
+ font-size: 13px;
147
+ line-height: 1.6;
148
+ }
149
+
150
+ .json-code-editor.has-line-numbers {
151
+ grid-template-columns: auto minmax(0, 1fr);
152
+ }
153
+
154
+ .json-code-editor__gutter {
155
+ padding: 12px 10px;
156
+ display: flex;
157
+ flex-direction: column;
158
+ align-items: flex-end;
159
+ gap: 0;
160
+ user-select: none;
161
+ color: #a8abb2;
162
+ background: #f5f7fa;
163
+ border-right: 1px solid #e4e7ed;
164
+ font-variant-numeric: tabular-nums;
165
+ }
166
+
167
+ .json-code-editor__textarea,
168
+ .json-code-editor__viewer {
169
+ min-width: 0;
170
+ width: 100%;
171
+ min-height: 100%;
172
+ margin: 0;
173
+ padding: 12px 14px;
174
+ border: 0;
175
+ outline: none;
176
+ overflow: auto;
177
+ background: transparent;
178
+ color: inherit;
179
+ font: inherit;
180
+ line-height: inherit;
181
+ tab-size: 2;
182
+ }
183
+
184
+ .json-code-editor__textarea {
185
+ resize: none;
186
+ white-space: pre;
187
+ }
188
+
189
+ .json-code-editor__viewer {
190
+ box-sizing: border-box;
191
+ white-space: pre;
192
+ }
193
+
194
+ .json-code-editor__line {
195
+ display: block;
196
+ min-height: 1.6em;
197
+ }
198
+
199
+ .json-code-editor__token.is-key {
200
+ color: #7c3aed;
201
+ }
202
+
203
+ .json-code-editor__token.is-string {
204
+ color: #0f766e;
205
+ }
206
+
207
+ .json-code-editor__token.is-number {
208
+ color: #b45309;
209
+ }
210
+
211
+ .json-code-editor__token.is-boolean,
212
+ .json-code-editor__token.is-null {
213
+ color: #2563eb;
214
+ }
215
+
216
+ .json-code-editor__token.is-punctuation {
217
+ color: #64748b;
218
+ }
219
+ </style>