@veltra/desktop 1.2.9 → 1.2.12

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 (470) hide show
  1. package/dist/components/action/action-group.js.map +1 -1
  2. package/dist/components/action/action-group.vue.d.ts +2 -2
  3. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js +1 -1
  4. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/action/action.js +2 -2
  6. package/dist/components/action/action.js.map +1 -1
  7. package/dist/components/action/action.vue.d.ts +1 -1
  8. package/dist/components/auto-complete/auto-complete.js +4 -4
  9. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  10. package/dist/components/auto-complete/auto-complete.vue.d.ts +2 -2
  11. package/dist/components/auto-complete/use-keyboard.js.map +1 -1
  12. package/dist/components/badge/badge.js +2 -2
  13. package/dist/components/badge/badge.js.map +1 -1
  14. package/dist/components/batch-edit/batch-edit-form.js +2 -2
  15. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  16. package/dist/components/batch-edit/batch-edit-list.js +2 -2
  17. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  18. package/dist/components/batch-edit/batch-edit.js +6 -3
  19. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  20. package/dist/components/batch-edit/use-edit-state.js +7 -3
  21. package/dist/components/batch-edit/use-edit-state.js.map +1 -1
  22. package/dist/components/batch-edit/use-features.js.map +1 -1
  23. package/dist/components/batch-edit/use-handlers.js.map +1 -1
  24. package/dist/components/breadcrumb/breadcrumb.js +2 -2
  25. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  26. package/dist/components/button/button-group.js +2 -2
  27. package/dist/components/button/button-group.js.map +1 -1
  28. package/dist/components/button/button.js +2 -2
  29. package/dist/components/button/button.js.map +1 -1
  30. package/dist/components/calendar/calendar.js +3 -3
  31. package/dist/components/calendar/calendar.js.map +1 -1
  32. package/dist/components/calendar/utils.js.map +1 -1
  33. package/dist/components/card/card-action.js +2 -2
  34. package/dist/components/card/card-action.js.map +1 -1
  35. package/dist/components/card/card-content.js +2 -2
  36. package/dist/components/card/card-content.js.map +1 -1
  37. package/dist/components/card/card-cover.js +2 -2
  38. package/dist/components/card/card-cover.js.map +1 -1
  39. package/dist/components/card/card-header.js +2 -2
  40. package/dist/components/card/card-header.js.map +1 -1
  41. package/dist/components/card/card.js +2 -2
  42. package/dist/components/card/card.js.map +1 -1
  43. package/dist/components/cascade/cascade-panel-item.js +1 -1
  44. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  45. package/dist/components/cascade/cascade.js +7 -3
  46. package/dist/components/cascade/cascade.js.map +1 -1
  47. package/dist/components/cascade/cascade.vue.d.ts +7 -4
  48. package/dist/components/cascade/use-check.js +3 -1
  49. package/dist/components/cascade/use-check.js.map +1 -1
  50. package/dist/components/cascade/use-data-map.js.map +1 -1
  51. package/dist/components/cascade/use-select.js +30 -14
  52. package/dist/components/cascade/use-select.js.map +1 -1
  53. package/dist/components/check-tag/check-tag.js +2 -2
  54. package/dist/components/check-tag/check-tag.js.map +1 -1
  55. package/dist/components/checkbox/checkbox-button.js +4 -4
  56. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  57. package/dist/components/checkbox/checkbox-button.vue.d.ts +2 -2
  58. package/dist/components/checkbox/checkbox.js +4 -4
  59. package/dist/components/checkbox/checkbox.js.map +1 -1
  60. package/dist/components/checkbox/checkbox.vue.d.ts +1 -1
  61. package/dist/components/checkbox-group/checkbox-group.js +4 -4
  62. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  63. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +2 -2
  64. package/dist/components/code-editor/basic-setup.js +44 -0
  65. package/dist/components/code-editor/basic-setup.js.map +1 -0
  66. package/dist/components/code-editor/code-editor.js +5 -5
  67. package/dist/components/code-editor/code-editor.js.map +1 -1
  68. package/dist/components/code-editor/code-editor.vue.d.ts +1 -1
  69. package/dist/components/collapse/collapse-item.js +2 -2
  70. package/dist/components/collapse/collapse-item.js.map +1 -1
  71. package/dist/components/collapse/collapse.js +2 -2
  72. package/dist/components/collapse/collapse.js.map +1 -1
  73. package/dist/components/condition-editor/components/condition-group.js +2 -2
  74. package/dist/components/condition-editor/components/condition-group.js.map +1 -1
  75. package/dist/components/condition-editor/components/condition-row.js +2 -2
  76. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  77. package/dist/components/condition-editor/condition-editor.js +2 -2
  78. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  79. package/dist/components/condition-editor/core/evaluator.js.map +1 -1
  80. package/dist/components/contextmenu/contextmenu-item.js +2 -2
  81. package/dist/components/contextmenu/contextmenu-item.js.map +1 -1
  82. package/dist/components/contextmenu/contextmenu-panel.js +2 -2
  83. package/dist/components/contextmenu/contextmenu-panel.js.map +1 -1
  84. package/dist/components/contextmenu/contextmenu-sub.js +2 -2
  85. package/dist/components/contextmenu/contextmenu-sub.js.map +1 -1
  86. package/dist/components/contextmenu/contextmenu.js +2 -2
  87. package/dist/components/contextmenu/contextmenu.js.map +1 -1
  88. package/dist/components/date-panel/date-panel.js +2 -2
  89. package/dist/components/date-panel/date-panel.js.map +1 -1
  90. package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
  91. package/dist/components/date-panel/headers/day.js +2 -2
  92. package/dist/components/date-panel/headers/day.js.map +1 -1
  93. package/dist/components/date-panel/headers/month.js +2 -2
  94. package/dist/components/date-panel/headers/month.js.map +1 -1
  95. package/dist/components/date-panel/headers/year.js +2 -2
  96. package/dist/components/date-panel/headers/year.js.map +1 -1
  97. package/dist/components/date-panel/panels/day.js +2 -2
  98. package/dist/components/date-panel/panels/day.js.map +1 -1
  99. package/dist/components/date-panel/panels/month.js +2 -2
  100. package/dist/components/date-panel/panels/month.js.map +1 -1
  101. package/dist/components/date-panel/panels/year.js +2 -2
  102. package/dist/components/date-panel/panels/year.js.map +1 -1
  103. package/dist/components/date-panel/use-panel-date.js.map +1 -1
  104. package/dist/components/date-picker/date-picker.js +2 -2
  105. package/dist/components/date-picker/date-picker.js.map +1 -1
  106. package/dist/components/date-picker/date-picker.vue.d.ts +2 -2
  107. package/dist/components/date-range-picker/date-range-picker.js +2 -2
  108. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  109. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +2 -2
  110. package/dist/components/dialog/dialog.js +4 -4
  111. package/dist/components/dialog/dialog.js.map +1 -1
  112. package/dist/components/drawer/drawer.js +4 -4
  113. package/dist/components/drawer/drawer.js.map +1 -1
  114. package/dist/components/dropdown/dropdown.js +2 -2
  115. package/dist/components/dropdown/dropdown.js.map +1 -1
  116. package/dist/components/dual-nav/dual-nav-app.js +2 -2
  117. package/dist/components/dual-nav/dual-nav-app.js.map +1 -1
  118. package/dist/components/dual-nav/dual-nav.js +2 -2
  119. package/dist/components/dual-nav/dual-nav.js.map +1 -1
  120. package/dist/components/empty/empty.js +2 -2
  121. package/dist/components/empty/empty.js.map +1 -1
  122. package/dist/components/empty/empty.vue.d.ts +1 -1
  123. package/dist/components/expression-editor/components/path-preview.js +2 -2
  124. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  125. package/dist/components/expression-editor/components/variable-picker.js +2 -2
  126. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  127. package/dist/components/expression-editor/core/editor.js.map +1 -1
  128. package/dist/components/expression-editor/core/model.js.map +1 -1
  129. package/dist/components/expression-editor/expression-editor.js +2 -2
  130. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  131. package/dist/components/file-picker/file-picker.js +2 -2
  132. package/dist/components/file-picker/file-picker.js.map +1 -1
  133. package/dist/components/file-picker/file-picker.vue.d.ts +1 -1
  134. package/dist/components/file-picker/helper.js.map +1 -1
  135. package/dist/components/file-viewer/file-viewer.js +4 -4
  136. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  137. package/dist/components/file-viewer/helper.js.map +1 -1
  138. package/dist/components/file-viewer/previewers/docx-previewer.js +2 -2
  139. package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
  140. package/dist/components/file-viewer/previewers/image-previewer.js +2 -2
  141. package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
  142. package/dist/components/file-viewer/previewers/pdf-previewer.js +2 -2
  143. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  144. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js +2 -2
  145. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  146. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js +2 -2
  147. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  148. package/dist/components/file-viewer/previewers/sheet-previewer.js +2 -2
  149. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  150. package/dist/components/file-viewer/previewers/text-previewer.js +2 -2
  151. package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
  152. package/dist/components/file-viewer/previewers/video-previewer.js +2 -2
  153. package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
  154. package/dist/components/file-viewer/sheet-parser.js.map +1 -1
  155. package/dist/components/float-button/float-button.js +2 -2
  156. package/dist/components/float-button/float-button.js.map +1 -1
  157. package/dist/components/form/form.js.map +1 -1
  158. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +1 -1
  159. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  160. package/dist/components/form/use-form-fields.js.map +1 -1
  161. package/dist/components/form/use-node-interceptor.js.map +1 -1
  162. package/dist/components/form-item/form-item.js.map +1 -1
  163. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +1 -1
  164. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  165. package/dist/components/form-item/validate.js.map +1 -1
  166. package/dist/components/gantt-chart/gantt-chart.js +2 -2
  167. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  168. package/dist/components/grid/breakpoint.js.map +1 -1
  169. package/dist/components/grid/grid-item.js +2 -2
  170. package/dist/components/grid/grid-item.js.map +1 -1
  171. package/dist/components/grid/grid.js +2 -2
  172. package/dist/components/grid/grid.js.map +1 -1
  173. package/dist/components/grid-input/grid-input.js +2 -2
  174. package/dist/components/grid-input/grid-input.js.map +1 -1
  175. package/dist/components/group-input/group-input.js +2 -2
  176. package/dist/components/group-input/group-input.js.map +1 -1
  177. package/dist/components/icon/icon.js +2 -2
  178. package/dist/components/icon/icon.js.map +1 -1
  179. package/dist/components/input/input.js.map +1 -1
  180. package/dist/components/input/input.vue.d.ts +4 -4
  181. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js +1 -1
  182. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  183. package/dist/components/kbd/kbd.js +2 -2
  184. package/dist/components/kbd/kbd.js.map +1 -1
  185. package/dist/components/layout/layout-resizer.js +2 -2
  186. package/dist/components/layout/layout-resizer.js.map +1 -1
  187. package/dist/components/layout/layout.js +2 -2
  188. package/dist/components/layout/layout.js.map +1 -1
  189. package/dist/components/list/list-item.js +2 -2
  190. package/dist/components/list/list-item.js.map +1 -1
  191. package/dist/components/list/list.js +2 -2
  192. package/dist/components/list/list.js.map +1 -1
  193. package/dist/components/loading/directive.js.map +1 -1
  194. package/dist/components/loading/loading.js +2 -2
  195. package/dist/components/loading/loading.js.map +1 -1
  196. package/dist/components/message/message-box.js +2 -2
  197. package/dist/components/message/message-box.js.map +1 -1
  198. package/dist/components/message/message.js +2 -2
  199. package/dist/components/message/message.js.map +1 -1
  200. package/dist/components/message/message2.js.map +1 -1
  201. package/dist/components/message-confirm/message-confirm.js +2 -2
  202. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  203. package/dist/components/multi-select/multi-select-option.js +2 -2
  204. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  205. package/dist/components/multi-select/multi-select.js +4 -4
  206. package/dist/components/multi-select/multi-select.js.map +1 -1
  207. package/dist/components/multi-select/multi-select.vue.d.ts +3 -3
  208. package/dist/components/multi-tree-select/multi-tree-select.js +4 -4
  209. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  210. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +5 -5
  211. package/dist/components/nav/nav-icon.js +2 -2
  212. package/dist/components/nav/nav-icon.js.map +1 -1
  213. package/dist/components/nav/nav-item-collapsed.js +2 -2
  214. package/dist/components/nav/nav-item-collapsed.js.map +1 -1
  215. package/dist/components/nav/nav-item.js +2 -2
  216. package/dist/components/nav/nav-item.js.map +1 -1
  217. package/dist/components/nav/nav-sub-collapsed.js +2 -2
  218. package/dist/components/nav/nav-sub-collapsed.js.map +1 -1
  219. package/dist/components/nav/nav-sub.js +2 -2
  220. package/dist/components/nav/nav-sub.js.map +1 -1
  221. package/dist/components/nav/nav.js +2 -2
  222. package/dist/components/nav/nav.js.map +1 -1
  223. package/dist/components/notification/index.js.map +1 -1
  224. package/dist/components/notification/notification.js +2 -2
  225. package/dist/components/notification/notification.js.map +1 -1
  226. package/dist/components/number/number.js +2 -2
  227. package/dist/components/number/number.js.map +1 -1
  228. package/dist/components/number-input/number-input.js +4 -4
  229. package/dist/components/number-input/number-input.js.map +1 -1
  230. package/dist/components/number-input/number-input.vue.d.ts +4 -4
  231. package/dist/components/number-range-input/number-range-input.js +4 -4
  232. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  233. package/dist/components/number-range-input/number-range-input.vue.d.ts +2 -2
  234. package/dist/components/paginator/paginator.js +4 -4
  235. package/dist/components/paginator/paginator.js.map +1 -1
  236. package/dist/components/palette/color-transform.js.map +1 -1
  237. package/dist/components/palette/palette-alpha.js +2 -2
  238. package/dist/components/palette/palette-alpha.js.map +1 -1
  239. package/dist/components/palette/palette-color-switch.js +1 -1
  240. package/dist/components/palette/palette-color-switch.js.map +1 -1
  241. package/dist/components/palette/palette-hue.js +2 -2
  242. package/dist/components/palette/palette-hue.js.map +1 -1
  243. package/dist/components/palette/palette-sv.js +2 -2
  244. package/dist/components/palette/palette-sv.js.map +1 -1
  245. package/dist/components/palette/palette.js +3 -3
  246. package/dist/components/palette/palette.js.map +1 -1
  247. package/dist/components/palette/palette.vue.d.ts +1 -1
  248. package/dist/components/palette/use-hsv.js.map +1 -1
  249. package/dist/components/password-input/password-input.js +3 -3
  250. package/dist/components/password-input/password-input.js.map +1 -1
  251. package/dist/components/password-input/password-input.vue.d.ts +2 -2
  252. package/dist/components/pop-confirm/pop-confirm.js +2 -2
  253. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  254. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +1 -1
  255. package/dist/components/progress/progress.js +2 -2
  256. package/dist/components/progress/progress.js.map +1 -1
  257. package/dist/components/progress-nodes/progress-nodes.js +2 -2
  258. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  259. package/dist/components/radio/radio.js +4 -4
  260. package/dist/components/radio/radio.js.map +1 -1
  261. package/dist/components/radio-group/radio-group.js +4 -4
  262. package/dist/components/radio-group/radio-group.js.map +1 -1
  263. package/dist/components/radio-group/radio-group.vue.d.ts +2 -2
  264. package/dist/components/rich-text-editor/rich-text-editor.js +2 -2
  265. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  266. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +2 -2
  267. package/dist/components/rich-text-editor/toolbar.js +1 -1
  268. package/dist/components/rich-text-editor/toolbar.js.map +1 -1
  269. package/dist/components/scroll/scroll-bar.js +2 -2
  270. package/dist/components/scroll/scroll-bar.js.map +1 -1
  271. package/dist/components/scroll/scroll.js +2 -2
  272. package/dist/components/scroll/scroll.js.map +1 -1
  273. package/dist/components/select/select.js +4 -4
  274. package/dist/components/select/select.js.map +1 -1
  275. package/dist/components/select/select.vue.d.ts +2 -2
  276. package/dist/components/select/use-keyboard.js.map +1 -1
  277. package/dist/components/select/use-options.js.map +1 -1
  278. package/dist/components/slider/slider-thumb.js +1 -1
  279. package/dist/components/slider/slider-thumb.js.map +1 -1
  280. package/dist/components/slider/slider.js +2 -2
  281. package/dist/components/slider/slider.js.map +1 -1
  282. package/dist/components/steps/steps.js +2 -2
  283. package/dist/components/steps/steps.js.map +1 -1
  284. package/dist/components/steps/steps.vue.d.ts +3 -3
  285. package/dist/components/switch/switch.js +4 -4
  286. package/dist/components/switch/switch.js.map +1 -1
  287. package/dist/components/switch/switch.vue.d.ts +1 -1
  288. package/dist/components/table/table-body.js +2 -2
  289. package/dist/components/table/table-body.js.map +1 -1
  290. package/dist/components/table/table-cell.js +2 -2
  291. package/dist/components/table/table-cell.js.map +1 -1
  292. package/dist/components/table/table-foot.js +2 -2
  293. package/dist/components/table/table-foot.js.map +1 -1
  294. package/dist/components/table/table-head.js.map +1 -1
  295. package/dist/components/table/table-row.js.map +1 -1
  296. package/dist/components/table/table.js +2 -2
  297. package/dist/components/table/table.js.map +1 -1
  298. package/dist/components/table/use-check.js.map +1 -1
  299. package/dist/components/table/use-col-resize.js.map +1 -1
  300. package/dist/components/table/use-columns.js.map +1 -1
  301. package/dist/components/table/use-rows.js.map +1 -1
  302. package/dist/components/table/use-table.js.map +1 -1
  303. package/dist/components/table-editor/table-editor.js +2 -2
  304. package/dist/components/table-editor/table-editor.js.map +1 -1
  305. package/dist/components/tabs/tabs-horizontal.js +4 -4
  306. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  307. package/dist/components/tabs/tabs-horizontal.vue.d.ts +2 -2
  308. package/dist/components/tabs/tabs-vertical.js +4 -4
  309. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  310. package/dist/components/tabs/tabs-vertical.vue.d.ts +2 -2
  311. package/dist/components/tabs/tabs.js +4 -4
  312. package/dist/components/tabs/tabs.js.map +1 -1
  313. package/dist/components/tabs/tabs.vue.d.ts +2 -2
  314. package/dist/components/tag/tag.js +2 -2
  315. package/dist/components/tag/tag.js.map +1 -1
  316. package/dist/components/text/text.js +2 -2
  317. package/dist/components/text/text.js.map +1 -1
  318. package/dist/components/textarea/textarea.js +4 -4
  319. package/dist/components/textarea/textarea.js.map +1 -1
  320. package/dist/components/textarea/textarea.vue.d.ts +4 -4
  321. package/dist/components/theme/theme.js +1 -1
  322. package/dist/components/theme/theme.js.map +1 -1
  323. package/dist/components/tip/tip.js +2 -2
  324. package/dist/components/tip/tip.js.map +1 -1
  325. package/dist/components/tip/tip.vue.d.ts +1 -1
  326. package/dist/components/tip/use-nest.js.map +1 -1
  327. package/dist/components/tree/tree-node.js +2 -2
  328. package/dist/components/tree/tree-node.js.map +1 -1
  329. package/dist/components/tree/tree-node2.js.map +1 -1
  330. package/dist/components/tree/tree.js +2 -2
  331. package/dist/components/tree/tree.js.map +1 -1
  332. package/dist/components/tree/use-check.js.map +1 -1
  333. package/dist/components/tree-select/tree-select.js +7 -6
  334. package/dist/components/tree-select/tree-select.js.map +1 -1
  335. package/dist/components/tree-select/tree-select.vue.d.ts +7 -6
  336. package/dist/components/watermark/watermark.js +2 -2
  337. package/dist/components/watermark/watermark.js.map +1 -1
  338. package/dist/types/cascade.d.ts +10 -6
  339. package/dist/types/tree-select.d.ts +2 -1
  340. package/package.json +24 -20
  341. package/src/components/action/action-group.vue +1 -1
  342. package/src/components/action/action.vue +1 -1
  343. package/src/components/auto-complete/auto-complete.vue +1 -1
  344. package/src/components/badge/badge.vue +1 -1
  345. package/src/components/batch-edit/batch-edit-form.vue +1 -2
  346. package/src/components/batch-edit/batch-edit-list.vue +1 -1
  347. package/src/components/batch-edit/batch-edit.vue +2 -2
  348. package/src/components/batch-edit/use-edit-state.ts +12 -6
  349. package/src/components/breadcrumb/breadcrumb.vue +1 -1
  350. package/src/components/button/button-group.vue +1 -1
  351. package/src/components/button/button.vue +1 -1
  352. package/src/components/calendar/calendar.vue +1 -1
  353. package/src/components/card/card-action.vue +1 -1
  354. package/src/components/card/card-content.vue +1 -1
  355. package/src/components/card/card-cover.vue +1 -1
  356. package/src/components/card/card-header.vue +1 -1
  357. package/src/components/card/card.vue +1 -1
  358. package/src/components/cascade/cascade.vue +3 -2
  359. package/src/components/cascade/use-check.ts +3 -1
  360. package/src/components/cascade/use-select.ts +43 -29
  361. package/src/components/check-tag/check-tag.vue +1 -1
  362. package/src/components/checkbox/checkbox-button.vue +1 -1
  363. package/src/components/checkbox/checkbox.vue +1 -1
  364. package/src/components/checkbox-group/checkbox-group.vue +1 -1
  365. package/src/components/code-editor/basic-setup.ts +63 -0
  366. package/src/components/code-editor/code-editor.vue +3 -3
  367. package/src/components/collapse/collapse-item.vue +1 -1
  368. package/src/components/collapse/collapse.vue +1 -1
  369. package/src/components/condition-editor/components/condition-group.vue +1 -1
  370. package/src/components/condition-editor/components/condition-row.vue +1 -1
  371. package/src/components/condition-editor/condition-editor.vue +1 -1
  372. package/src/components/contextmenu/contextmenu-item.vue +1 -1
  373. package/src/components/contextmenu/contextmenu-panel.vue +1 -1
  374. package/src/components/contextmenu/contextmenu-sub.vue +1 -1
  375. package/src/components/contextmenu/contextmenu.vue +1 -1
  376. package/src/components/date-panel/date-panel.vue +1 -1
  377. package/src/components/date-panel/headers/day.vue +1 -1
  378. package/src/components/date-panel/headers/month.vue +1 -1
  379. package/src/components/date-panel/headers/year.vue +1 -1
  380. package/src/components/date-panel/panels/day.vue +1 -1
  381. package/src/components/date-panel/panels/month.vue +1 -1
  382. package/src/components/date-panel/panels/year.vue +1 -1
  383. package/src/components/date-picker/date-picker.vue +1 -1
  384. package/src/components/date-range-picker/date-range-picker.vue +1 -1
  385. package/src/components/dialog/dialog.vue +1 -1
  386. package/src/components/drawer/drawer.vue +1 -1
  387. package/src/components/dropdown/dropdown.vue +1 -1
  388. package/src/components/dual-nav/dual-nav-app.vue +1 -1
  389. package/src/components/dual-nav/dual-nav.vue +1 -1
  390. package/src/components/empty/empty.vue +1 -1
  391. package/src/components/expression-editor/components/path-preview.vue +1 -1
  392. package/src/components/expression-editor/components/variable-picker.vue +1 -1
  393. package/src/components/expression-editor/expression-editor.vue +1 -1
  394. package/src/components/file-picker/file-picker.vue +1 -1
  395. package/src/components/file-viewer/file-viewer.vue +1 -1
  396. package/src/components/file-viewer/previewers/docx-previewer.vue +1 -1
  397. package/src/components/file-viewer/previewers/image-previewer.vue +1 -1
  398. package/src/components/file-viewer/previewers/pdf-previewer.vue +1 -1
  399. package/src/components/file-viewer/previewers/pdf-viewport-scroll.vue +1 -1
  400. package/src/components/file-viewer/previewers/pdf-zoom-bridge.vue +1 -1
  401. package/src/components/file-viewer/previewers/sheet-previewer.vue +1 -1
  402. package/src/components/file-viewer/previewers/text-previewer.vue +1 -1
  403. package/src/components/file-viewer/previewers/video-previewer.vue +1 -1
  404. package/src/components/float-button/float-button.vue +1 -1
  405. package/src/components/form/form.vue +1 -1
  406. package/src/components/form-item/form-item.vue +1 -1
  407. package/src/components/gantt-chart/gantt-chart.vue +1 -1
  408. package/src/components/grid/grid-item.vue +1 -1
  409. package/src/components/grid/grid.vue +1 -1
  410. package/src/components/grid-input/grid-input.vue +1 -1
  411. package/src/components/group-input/group-input.vue +1 -1
  412. package/src/components/icon/icon.vue +1 -1
  413. package/src/components/input/input.vue +1 -1
  414. package/src/components/kbd/kbd.vue +1 -1
  415. package/src/components/layout/layout-resizer.vue +1 -1
  416. package/src/components/layout/layout.vue +1 -1
  417. package/src/components/list/list-item.vue +1 -1
  418. package/src/components/list/list.vue +1 -1
  419. package/src/components/loading/loading.vue +1 -1
  420. package/src/components/message/message-box.vue +1 -1
  421. package/src/components/message/message.vue +1 -1
  422. package/src/components/message-confirm/message-confirm.vue +1 -1
  423. package/src/components/multi-select/multi-select-option.vue +1 -1
  424. package/src/components/multi-select/multi-select.vue +1 -1
  425. package/src/components/multi-tree-select/multi-tree-select.vue +1 -1
  426. package/src/components/nav/nav-icon.vue +1 -1
  427. package/src/components/nav/nav-item-collapsed.vue +1 -1
  428. package/src/components/nav/nav-item.vue +1 -1
  429. package/src/components/nav/nav-sub-collapsed.vue +1 -1
  430. package/src/components/nav/nav-sub.vue +1 -1
  431. package/src/components/nav/nav.vue +1 -1
  432. package/src/components/notification/notification.vue +1 -1
  433. package/src/components/number/number.vue +1 -1
  434. package/src/components/number-input/number-input.vue +1 -1
  435. package/src/components/number-range-input/number-range-input.vue +1 -1
  436. package/src/components/paginator/paginator.vue +1 -1
  437. package/src/components/palette/palette-alpha.vue +1 -1
  438. package/src/components/palette/palette-hue.vue +1 -1
  439. package/src/components/palette/palette-sv.vue +1 -1
  440. package/src/components/palette/palette.vue +1 -1
  441. package/src/components/password-input/password-input.vue +1 -1
  442. package/src/components/pop-confirm/pop-confirm.vue +1 -1
  443. package/src/components/progress/progress.vue +1 -1
  444. package/src/components/progress-nodes/progress-nodes.vue +1 -1
  445. package/src/components/radio/radio.vue +1 -1
  446. package/src/components/radio-group/radio-group.vue +1 -1
  447. package/src/components/scroll/scroll-bar.vue +1 -1
  448. package/src/components/scroll/scroll.vue +1 -1
  449. package/src/components/select/select.vue +1 -1
  450. package/src/components/slider/slider.vue +1 -1
  451. package/src/components/steps/steps.vue +1 -1
  452. package/src/components/switch/switch.vue +1 -1
  453. package/src/components/table/table-body.vue +1 -1
  454. package/src/components/table/table-cell.vue +1 -1
  455. package/src/components/table/table-foot.vue +1 -1
  456. package/src/components/table/table.vue +1 -1
  457. package/src/components/table-editor/table-editor.vue +1 -1
  458. package/src/components/tabs/tabs-horizontal.vue +1 -1
  459. package/src/components/tabs/tabs-vertical.vue +1 -1
  460. package/src/components/tabs/tabs.vue +1 -1
  461. package/src/components/tag/tag.vue +1 -1
  462. package/src/components/text/text.vue +1 -1
  463. package/src/components/textarea/textarea.vue +1 -1
  464. package/src/components/tip/tip.vue +1 -1
  465. package/src/components/tree/tree-node.vue +1 -1
  466. package/src/components/tree/tree.vue +1 -1
  467. package/src/components/tree-select/tree-select.vue +3 -3
  468. package/src/components/watermark/watermark.vue +1 -1
  469. package/src/types/cascade.ts +10 -6
  470. package/src/types/tree-select.ts +2 -1
@@ -3,10 +3,10 @@ import { Fragment, computed, createBlock, createElementBlock, createTextVNode, d
3
3
  import { useFormFallbackProps } from "@veltra/compositions";
4
4
  import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
5
5
  //#region src/components/checkbox/checkbox-button.vue
6
- const _sfc_main = /* @__PURE__ */ defineComponent({
7
- name: "CheckboxButton",
6
+ const _sfc_main = /*@__PURE__*/ defineComponent({
7
+ name: "UCheckboxButton",
8
8
  __name: "checkbox-button",
9
- props: /* @__PURE__ */ mergeModels({
9
+ props: /*@__PURE__*/ mergeModels({
10
10
  modelValue: { type: Boolean },
11
11
  round: {
12
12
  type: Boolean,
@@ -31,7 +31,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
31
31
  "modelValue": { type: Boolean },
32
32
  "modelModifiers": {}
33
33
  }),
34
- emits: /* @__PURE__ */ mergeModels(["update:modelValue", "change"], ["update:modelValue"]),
34
+ emits: /*@__PURE__*/ mergeModels(["update:modelValue", "change"], ["update:modelValue"]),
35
35
  setup(__props, { emit: __emit }) {
36
36
  const props = __props;
37
37
  const emit = __emit;
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-button.js","names":[],"sources":["../../../src/components/checkbox/checkbox-button.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\" @click=\"handleInput\">\n <slot />\n </div>\n\n <u-tag v-else-if=\"checked !== undefined\" :type=\"checked ? 'success' : 'danger'\">\n {{ checked ? '是' : '否' }}\n </u-tag>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxButtonProps, CheckboxButtonEmits } from '../../types'\nimport { UTag } from '../tag'\n\ndefineOptions({ name: 'CheckboxButton' })\n\nconst props = withDefaults(defineProps<CheckboxButtonProps>(), {\n disabled: undefined,\n readonly: undefined,\n type: 'primary',\n round: false\n})\n\nconst emit = defineEmits<CheckboxButtonEmits>()\n\nconst slot = defineSlots<{ default(): any }>()\n\nconst cls = bem('checkbox-button')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is(props.type),\n bem.is('round', props.round),\n bem.is('disabled', disabled.value),\n bem.is('checked', checked.value)\n ]\n})\n\nconst handleInput = () => {\n checked.value = !checked.value\n emit('change', !!checked.value)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEA,SAAA;EAEb,MAAM,MAAM,IAAI,iBAAiB;EAEjC,MAAM,UAAU,SAAoB,SAAA,YAAC;EAErC,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,IAAI,GAAG,MAAM,IAAI;IACjB,IAAI,GAAG,SAAS,MAAM,KAAK;IAC3B,IAAI,GAAG,YAAY,SAAS,KAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,KAAK;GACjC;EACF,CAAC;EAED,MAAM,oBAAoB;GACxB,QAAQ,QAAQ,CAAC,QAAQ;GACzB,KAAK,UAAU,CAAC,CAAC,QAAQ,KAAK;EAChC;;WA7Dc,MAAA,QAAA,KAAA,UAAA,GAAZ,mBAEM,OAAA;;IAFiB,OAAK,eAAE,UAAA,KAAS;IAAG,SAAO;OAC/C,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,KAGQ,QAAA,UAAY,KAAA,KAAA,UAAA,GAA9B,YAEQ,MAAA,WAAA,GAAA;;IAFkC,MAAM,QAAA,QAAO,YAAA;;2BAC5B,CAAA,gBAAA,gBAAtB,QAAA,QAAO,MAAA,GAAA,GAAA,CAAA,CAAA,CAAA;;oCAGZ,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,MAAA,kBAAA,CAAkB,GAAA,CAAA,CAAA,GAAA,EAAA"}
1
+ {"version":3,"file":"checkbox-button.js","names":[],"sources":["../../../src/components/checkbox/checkbox-button.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\" @click=\"handleInput\">\n <slot />\n </div>\n\n <u-tag v-else-if=\"checked !== undefined\" :type=\"checked ? 'success' : 'danger'\">\n {{ checked ? '是' : '否' }}\n </u-tag>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxButtonProps, CheckboxButtonEmits } from '../../types'\nimport { UTag } from '../tag'\n\ndefineOptions({ name: 'UCheckboxButton' })\n\nconst props = withDefaults(defineProps<CheckboxButtonProps>(), {\n disabled: undefined,\n readonly: undefined,\n type: 'primary',\n round: false\n})\n\nconst emit = defineEmits<CheckboxButtonEmits>()\n\nconst slot = defineSlots<{ default(): any }>()\n\nconst cls = bem('checkbox-button')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is(props.type),\n bem.is('round', props.round),\n bem.is('disabled', disabled.value),\n bem.is('checked', checked.value)\n ]\n})\n\nconst handleInput = () => {\n checked.value = !checked.value\n emit('change', !!checked.value)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEA,SAAA;EAEb,MAAM,MAAM,IAAI,iBAAiB;EAEjC,MAAM,UAAU,SAAoB,SAAA,YAAC;EAErC,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,IAAI,GAAG,MAAM,IAAI;IACjB,IAAI,GAAG,SAAS,MAAM,KAAK;IAC3B,IAAI,GAAG,YAAY,SAAS,KAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,KAAK;GACjC;EACF,CAAC;EAED,MAAM,oBAAoB;GACxB,QAAQ,QAAQ,CAAC,QAAQ;GACzB,KAAK,UAAU,CAAC,CAAC,QAAQ,KAAK;EAChC;;WA7Dc,MAAA,QAAA,KAAA,UAAA,GAAZ,mBAEM,OAAA;;IAFiB,OAAK,eAAE,UAAA,KAAS;IAAG,SAAO;OAC/C,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,KAGQ,QAAA,UAAY,KAAA,KAAA,UAAA,GAA9B,YAEQ,MAAA,WAAA,GAAA;;IAFkC,MAAM,QAAA,QAAO,YAAA;;2BAC5B,CAAA,gBAAA,gBAAtB,QAAA,QAAO,MAAA,GAAA,GAAA,CAAA,CAAA,CAAA;;oCAGZ,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,MAAA,kBAAA,CAAkB,GAAA,CAAA,CAAA,GAAA,EAAA"}
@@ -17,9 +17,9 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
17
17
  "onUpdate:modelValue"?: ((checked: boolean) => any) | undefined;
18
18
  onChange?: ((checked: boolean) => any) | undefined;
19
19
  }>, {
20
- readonly: boolean;
21
- disabled: boolean;
22
20
  type: import("@veltra/utils").ColorType;
21
+ disabled: boolean;
22
+ readonly: boolean;
23
23
  round: boolean;
24
24
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -8,10 +8,10 @@ const _hoisted_1 = {
8
8
  fill: "currentColor"
9
9
  };
10
10
  const _hoisted_2 = ["checked", "disabled"];
11
- const _sfc_main = /* @__PURE__ */ defineComponent({
12
- name: "Checkbox",
11
+ const _sfc_main = /*@__PURE__*/ defineComponent({
12
+ name: "UCheckbox",
13
13
  __name: "checkbox",
14
- props: /* @__PURE__ */ mergeModels({
14
+ props: /*@__PURE__*/ mergeModels({
15
15
  indeterminate: { type: Boolean },
16
16
  modelValue: { type: Boolean },
17
17
  tips: {},
@@ -32,7 +32,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
32
32
  "modelValue": { type: Boolean },
33
33
  "modelModifiers": {}
34
34
  }),
35
- emits: /* @__PURE__ */ mergeModels(["update:modelValue", "change"], ["update:modelValue"]),
35
+ emits: /*@__PURE__*/ mergeModels(["update:modelValue", "change"], ["update:modelValue"]),
36
36
  setup(__props, { emit: __emit }) {
37
37
  const props = __props;
38
38
  const emit = __emit;
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":["$slots"],"sources":["../../../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <label :class=\"className\">\n <span :class=\"cls.e('wrap')\">\n <transition name=\"zoom-in\" mode=\"out-in\">\n <svg viewBox=\"0 0 64 64\" v-if=\"checked\" fill=\"currentColor\">\n <path\n d=\"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z\"\n ></path>\n </svg>\n <span v-else-if=\"indeterminate\" :class=\"cls.m('indeterminate')\"></span>\n </transition>\n </span>\n\n <input type=\"checkbox\" :checked=\"checked\" :disabled=\"disabled\" hidden @click=\"handleInput\" />\n\n <span :class=\"cls.e('label')\" v-if=\"$slots.default\"><slot /> </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxProps, CheckboxEmits } from '../../types'\n\ndefineOptions({ name: 'Checkbox' })\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<CheckboxEmits>()\nconst cls = bem('checkbox')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('checked', checked.value || props.indeterminate)\n ]\n})\n\nconst handleInput = (e: MouseEvent) => {\n if (readonly.value) return\n const target = e.target as HTMLInputElement\n checked.value = target.checked\n emit('change', target.checked, e)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BA,MAAM,QAAQ;EAKd,MAAM,OAAO;EACb,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,UAAU,SAAoB,SAAA,YAAC;EAErC,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,IAAI,GAAG,YAAY,SAAS,KAAK;IACjC,IAAI,GAAG,YAAY,SAAS,KAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,SAAS,MAAM,aAAa;GACxD;EACF,CAAC;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,SAAS,OAAO;GACpB,MAAM,SAAS,EAAE;GACjB,QAAQ,QAAQ,OAAO;GACvB,KAAK,UAAU,OAAO,SAAS,CAAC;EAClC;;uBA5DE,mBAeQ,SAAA,EAfA,OAAK,eAAE,UAAA,KAAS,EAAA,GAAA;IACtB,mBASO,QAAA,EATA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA,CACjB,YAOa,YAAA;KAPD,MAAK;KAAU,MAAK;;4BAKxB,CAJyB,QAAA,SAAA,UAAA,GAA/B,mBAIM,OAJN,YAIM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAHJ,mBAEQ,QAAA,EADN,GAAE,qRAAoR,GAAA,MAAA,EAAA,CAAA,EAAA,CAAA,KAGzQ,QAAA,iBAAA,UAAA,GAAjB,mBAAuE,QAAA;;MAAtC,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,eAAA,CAAA;;;;IAIjD,mBAA6F,SAAA;KAAtF,MAAK;KAAY,SAAS,QAAA;KAAU,UAAU,MAAA,QAAA;KAAU,QAAA;KAAQ,SAAO;;IAE1CA,KAAAA,OAAO,WAAA,UAAA,GAA3C,mBAAoE,QAAA;;KAA7D,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,OAAA,CAAA;QAAiC,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA"}
1
+ {"version":3,"file":"checkbox.js","names":["$slots"],"sources":["../../../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <label :class=\"className\">\n <span :class=\"cls.e('wrap')\">\n <transition name=\"zoom-in\" mode=\"out-in\">\n <svg viewBox=\"0 0 64 64\" v-if=\"checked\" fill=\"currentColor\">\n <path\n d=\"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z\"\n ></path>\n </svg>\n <span v-else-if=\"indeterminate\" :class=\"cls.m('indeterminate')\"></span>\n </transition>\n </span>\n\n <input type=\"checkbox\" :checked=\"checked\" :disabled=\"disabled\" hidden @click=\"handleInput\" />\n\n <span :class=\"cls.e('label')\" v-if=\"$slots.default\"><slot /> </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxProps, CheckboxEmits } from '../../types'\n\ndefineOptions({ name: 'UCheckbox' })\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<CheckboxEmits>()\nconst cls = bem('checkbox')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('checked', checked.value || props.indeterminate)\n ]\n})\n\nconst handleInput = (e: MouseEvent) => {\n if (readonly.value) return\n const target = e.target as HTMLInputElement\n checked.value = target.checked\n emit('change', target.checked, e)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BA,MAAM,QAAQ;EAKd,MAAM,OAAO;EACb,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,UAAU,SAAoB,SAAA,YAAC;EAErC,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,IAAI,GAAG,YAAY,SAAS,KAAK;IACjC,IAAI,GAAG,YAAY,SAAS,KAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,SAAS,MAAM,aAAa;GACxD;EACF,CAAC;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,SAAS,OAAO;GACpB,MAAM,SAAS,EAAE;GACjB,QAAQ,QAAQ,OAAO;GACvB,KAAK,UAAU,OAAO,SAAS,CAAC;EAClC;;uBA5DE,mBAeQ,SAAA,EAfA,OAAK,eAAE,UAAA,KAAS,EAAA,GAAA;IACtB,mBASO,QAAA,EATA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA,CACjB,YAOa,YAAA;KAPD,MAAK;KAAU,MAAK;;4BAKxB,CAJyB,QAAA,SAAA,UAAA,GAA/B,mBAIM,OAJN,YAIM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAHJ,mBAEQ,QAAA,EADN,GAAE,qRAAoR,GAAA,MAAA,EAAA,CAAA,EAAA,CAAA,KAGzQ,QAAA,iBAAA,UAAA,GAAjB,mBAAuE,QAAA;;MAAtC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,eAAA,CAAA;;;;IAIjD,mBAA6F,SAAA;KAAtF,MAAK;KAAY,SAAS,QAAA;KAAU,UAAU,MAAA,QAAA;KAAU,QAAA;KAAQ,SAAO;;IAE1CA,KAAAA,OAAO,WAAA,UAAA,GAA3C,mBAAoE,QAAA;;KAA7D,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA;QAAiC,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA"}
@@ -18,8 +18,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
18
18
  "onUpdate:modelValue"?: ((checked: boolean) => any) | undefined;
19
19
  onChange?: ((checked: boolean, e: MouseEvent) => any) | undefined;
20
20
  }>, {
21
- readonly: boolean;
22
21
  disabled: boolean;
22
+ readonly: boolean;
23
23
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
24
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
25
25
  declare const _default: typeof __VLS_export;
@@ -4,10 +4,10 @@ import { Fragment, createBlock, createElementBlock, createElementVNode, createTe
4
4
  import { useFormFallbackProps } from "@veltra/compositions";
5
5
  import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
6
6
  //#region src/components/checkbox-group/checkbox-group.vue
7
- const _sfc_main = /* @__PURE__ */ defineComponent({
8
- name: "CheckboxGroup",
7
+ const _sfc_main = /*@__PURE__*/ defineComponent({
8
+ name: "UCheckboxGroup",
9
9
  __name: "checkbox-group",
10
- props: /* @__PURE__ */ mergeModels({
10
+ props: /*@__PURE__*/ mergeModels({
11
11
  modelValue: {},
12
12
  items: {},
13
13
  labelKey: { default: "label" },
@@ -31,7 +31,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
31
31
  "modelValue": {},
32
32
  "modelModifiers": {}
33
33
  }),
34
- emits: /* @__PURE__ */ mergeModels(["update:modelValue"], ["update:modelValue"]),
34
+ emits: /*@__PURE__*/ mergeModels(["update:modelValue"], ["update:modelValue"]),
35
35
  setup(__props) {
36
36
  const props = __props;
37
37
  const model = useModel(__props, "modelValue");
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-group.js","names":[],"sources":["../../../src/components/checkbox-group/checkbox-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size), bem.is('block', block)]\" v-if=\"!readonly\">\n <u-checkbox\n v-for=\"item of items\"\n :key=\"item[valueKey]\"\n :model-value=\"getCheckStatus(item)\"\n @update:model-value=\"handleUpdate($event, item)\"\n :disabled=\"disabled\"\n :size=\"size\"\n >\n {{ item[labelKey] }}\n </u-checkbox>\n </div>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of model\" :key=\"tag\">\n {{ getLabel(tag) }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\n\nimport type { CheckboxGroupProps, CheckboxGroupEmits } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UTag } from '../tag'\n\ndefineOptions({ name: 'CheckboxGroup' })\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n disabled: undefined,\n readonly: undefined\n})\n\ndefineEmits<CheckboxGroupEmits>()\n\nconst model = defineModel<any[]>()\n\nconst cls = bem('checkbox-group')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\n/**\n * 获取checkbox的选中状态\n * @param item - 模型对象\n * @returns 模型值是否存在于model.value中\n */\nconst getCheckStatus = (item: Record<string, string | number>): boolean => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value || !model.value) return false\n return model.value.includes(value)\n}\n\n/**\n * 处理更新操作\n * @param checked - 指示是否选中\n * @param item - 更新的项\n */\nconst handleUpdate = (checked: boolean, item: Record<string, string | number>) => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value) return\n if (checked) {\n model.value = [...(model.value ?? []), value]\n } else {\n model.value = model.value?.filter((v) => v !== value)\n }\n}\n\nconst getLabel = (value: string | number) => {\n const { items, valueKey, labelKey } = props\n const item = items.find((item) => item[valueKey] === value)\n return item?.[labelKey]\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCA,MAAM,QAAQ;EASd,MAAM,QAAQ,SAAkB,SAAA,YAAC;EAEjC,MAAM,MAAM,IAAI,gBAAgB;EAEhC,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;;;;;;EAOD,MAAM,kBAAkB,SAAmD;GACzE,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,OAAO;GACnC,OAAO,MAAM,MAAM,SAAS,KAAK;EACnC;;;;;;EAOA,MAAM,gBAAgB,SAAkB,SAA0C;GAChF,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,OAAO;GACZ,IAAI,SACF,MAAM,QAAQ,CAAC,GAAI,MAAM,SAAS,CAAC,GAAI,KAAK;QAE5C,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,KAAK;EAExD;EAEA,MAAM,YAAY,UAA2B;GAC3C,MAAM,EAAE,OAAO,UAAU,aAAa;GAEtC,OADa,MAAM,MAAM,SAAS,KAAK,cAAc,KAC9C,IAAO;EAChB;;WA1FoE,MAAA,QAAA,KAAA,UAAA,GAAlE,mBAWM,OAAA;;IAXA,OAAK,eAAA;KAAG,MAAA,GAAA,EAAI;KAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI;KAAG,MAAA,GAAA,EAAI,GAAE,SAAU,QAAA,KAAK;IAAA,CAAA;yBACrD,mBASa,UAAA,MAAA,WARI,QAAA,QAAR,SAAI;wBADb,YASa,MAAA,WAAA,GAAA;KAPV,KAAK,KAAK,QAAA;KACV,eAAa,eAAe,IAAI;KAChC,wBAAkB,WAAE,aAAa,QAAQ,IAAI;KAC7C,UAAU,MAAA,QAAA;KACV,MAAM,MAAA,IAAA;;4BAEa,CAAA,gBAAA,gBAAjB,KAAK,QAAA,SAAQ,GAAA,CAAA,CAAA,CAAA;;;;;;;;qBAIJ,MAAA,OAAO,UAAA,UAAA,GAAvB,mBAMM,OAAA;;IAN0B,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI,GAAG,MAAA,GAAA,EAAI,EAAC,eAAA,CAAA,CAAA;OACxD,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GAChB,mBAEQ,UAAA,MAAA,WAFa,MAAA,QAAP,QAAG;wBAAjB,YAEQ,MAAA,WAAA,GAAA,EAFqB,KAAK,IAAG,GAAA;4BAChB,CAAA,gBAAA,gBAAhB,SAAS,GAAG,CAAA,GAAA,CAAA,CAAA,CAAA;;;wCAKrB,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,MAAA,kBAAA,CAAkB,GAAA,CAAA,CAAA,GAAA,EAAA"}
1
+ {"version":3,"file":"checkbox-group.js","names":[],"sources":["../../../src/components/checkbox-group/checkbox-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size), bem.is('block', block)]\" v-if=\"!readonly\">\n <u-checkbox\n v-for=\"item of items\"\n :key=\"item[valueKey]\"\n :model-value=\"getCheckStatus(item)\"\n @update:model-value=\"handleUpdate($event, item)\"\n :disabled=\"disabled\"\n :size=\"size\"\n >\n {{ item[labelKey] }}\n </u-checkbox>\n </div>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of model\" :key=\"tag\">\n {{ getLabel(tag) }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\n\nimport type { CheckboxGroupProps, CheckboxGroupEmits } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UTag } from '../tag'\n\ndefineOptions({ name: 'UCheckboxGroup' })\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n disabled: undefined,\n readonly: undefined\n})\n\ndefineEmits<CheckboxGroupEmits>()\n\nconst model = defineModel<any[]>()\n\nconst cls = bem('checkbox-group')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\n/**\n * 获取checkbox的选中状态\n * @param item - 模型对象\n * @returns 模型值是否存在于model.value中\n */\nconst getCheckStatus = (item: Record<string, string | number>): boolean => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value || !model.value) return false\n return model.value.includes(value)\n}\n\n/**\n * 处理更新操作\n * @param checked - 指示是否选中\n * @param item - 更新的项\n */\nconst handleUpdate = (checked: boolean, item: Record<string, string | number>) => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value) return\n if (checked) {\n model.value = [...(model.value ?? []), value]\n } else {\n model.value = model.value?.filter((v) => v !== value)\n }\n}\n\nconst getLabel = (value: string | number) => {\n const { items, valueKey, labelKey } = props\n const item = items.find((item) => item[valueKey] === value)\n return item?.[labelKey]\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCA,MAAM,QAAQ;EASd,MAAM,QAAQ,SAAkB,SAAA,YAAC;EAEjC,MAAM,MAAM,IAAI,gBAAgB;EAEhC,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;;;;;;EAOD,MAAM,kBAAkB,SAAmD;GACzE,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,OAAO;GACnC,OAAO,MAAM,MAAM,SAAS,KAAK;EACnC;;;;;;EAOA,MAAM,gBAAgB,SAAkB,SAA0C;GAChF,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,OAAO;GACZ,IAAI,SACF,MAAM,QAAQ,CAAC,GAAI,MAAM,SAAS,CAAC,GAAI,KAAK;QAE5C,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,KAAK;EAExD;EAEA,MAAM,YAAY,UAA2B;GAC3C,MAAM,EAAE,OAAO,UAAU,aAAa;GAEtC,OADa,MAAM,MAAM,SAAS,KAAK,cAAc,KAC9C,CAAA,GAAO;EAChB;;WA1FoE,MAAA,QAAA,KAAA,UAAA,GAAlE,mBAWM,OAAA;;IAXA,OAAK,eAAA;KAAG,MAAA,GAAA,CAAG,CAAC;KAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAA,IAAA,CAAI;KAAG,MAAA,GAAA,CAAG,CAAC,GAAE,SAAU,QAAA,KAAK;IAAA,CAAA;yBACrD,mBASa,UAAA,MAAA,WARI,QAAA,QAAR,SAAI;wBADb,YASa,MAAA,WAAA,GAAA;KAPV,KAAK,KAAK,QAAA;KACV,eAAa,eAAe,IAAI;KAChC,wBAAkB,WAAE,aAAa,QAAQ,IAAI;KAC7C,UAAU,MAAA,QAAA;KACV,MAAM,MAAA,IAAA;;4BAEa,CAAA,gBAAA,gBAAjB,KAAK,QAAA,SAAQ,GAAA,CAAA,CAAA,CAAA;;;;;;;;qBAIJ,MAAA,OAAO,UAAA,UAAA,GAAvB,mBAMM,OAAA;;IAN0B,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAA,IAAA,CAAI,GAAG,MAAA,GAAA,CAAG,CAAC,EAAC,eAAA,CAAA,CAAA;OACxD,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GAChB,mBAEQ,UAAA,MAAA,WAFa,MAAA,QAAP,QAAG;wBAAjB,YAEQ,MAAA,WAAA,GAAA,EAFqB,KAAK,IAAG,GAAA;4BAChB,CAAA,gBAAA,gBAAhB,SAAS,GAAG,CAAA,GAAA,CAAA,CAAA,CAAA;;;wCAKrB,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,MAAA,kBAAA,CAAkB,GAAA,CAAA,CAAA,GAAA,EAAA"}
@@ -12,10 +12,10 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
12
12
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
13
13
  "onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
14
14
  }>, {
15
- readonly: boolean;
16
- disabled: boolean;
17
15
  labelKey: string;
18
16
  valueKey: string;
17
+ disabled: boolean;
18
+ readonly: boolean;
19
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
20
  declare const _default: typeof __VLS_export;
21
21
  //#endregion
@@ -0,0 +1,44 @@
1
+ import { EditorState } from "@codemirror/state";
2
+ import { crosshairCursor, drawSelection, dropCursor, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, keymap, lineNumbers, rectangularSelection } from "@codemirror/view";
3
+ import { autocompletion, closeBrackets, closeBracketsKeymap, completionKeymap } from "@codemirror/autocomplete";
4
+ import { defaultKeymap, history, historyKeymap } from "@codemirror/commands";
5
+ import { bracketMatching, defaultHighlightStyle, foldGutter, foldKeymap, indentOnInput, syntaxHighlighting } from "@codemirror/language";
6
+ import { lintKeymap } from "@codemirror/lint";
7
+ import { highlightSelectionMatches, searchKeymap } from "@codemirror/search";
8
+ //#region src/components/code-editor/basic-setup.ts
9
+ /**
10
+ * 等价于 codemirror 包的 basicSetup,按官方建议内联以便统一依赖来源。
11
+ * @see https://codemirror.net/docs/ref/#codemirror.basicSetup
12
+ */
13
+ const basicSetup = (() => [
14
+ lineNumbers(),
15
+ highlightActiveLineGutter(),
16
+ highlightSpecialChars(),
17
+ history(),
18
+ foldGutter(),
19
+ drawSelection(),
20
+ dropCursor(),
21
+ EditorState.allowMultipleSelections.of(true),
22
+ indentOnInput(),
23
+ syntaxHighlighting(defaultHighlightStyle, { fallback: true }),
24
+ bracketMatching(),
25
+ closeBrackets(),
26
+ autocompletion(),
27
+ rectangularSelection(),
28
+ crosshairCursor(),
29
+ highlightActiveLine(),
30
+ highlightSelectionMatches(),
31
+ keymap.of([
32
+ ...closeBracketsKeymap,
33
+ ...defaultKeymap,
34
+ ...searchKeymap,
35
+ ...historyKeymap,
36
+ ...foldKeymap,
37
+ ...completionKeymap,
38
+ ...lintKeymap
39
+ ])
40
+ ])();
41
+ //#endregion
42
+ export { basicSetup };
43
+
44
+ //# sourceMappingURL=basic-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-setup.js","names":[],"sources":["../../../src/components/code-editor/basic-setup.ts"],"sourcesContent":["import {\n closeBrackets,\n autocompletion,\n closeBracketsKeymap,\n completionKeymap\n} from '@codemirror/autocomplete'\nimport { history, defaultKeymap, historyKeymap } from '@codemirror/commands'\nimport {\n foldGutter,\n indentOnInput,\n syntaxHighlighting,\n defaultHighlightStyle,\n bracketMatching,\n foldKeymap\n} from '@codemirror/language'\nimport { lintKeymap } from '@codemirror/lint'\nimport { highlightSelectionMatches, searchKeymap } from '@codemirror/search'\nimport { EditorState, type Extension } from '@codemirror/state'\nimport {\n lineNumbers,\n highlightActiveLineGutter,\n highlightSpecialChars,\n drawSelection,\n dropCursor,\n rectangularSelection,\n crosshairCursor,\n highlightActiveLine,\n keymap,\n type KeyBinding\n} from '@codemirror/view'\n\n/**\n * 等价于 codemirror 包的 basicSetup,按官方建议内联以便统一依赖来源。\n * @see https://codemirror.net/docs/ref/#codemirror.basicSetup\n */\nexport const basicSetup: Extension = (() => [\n lineNumbers(),\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n foldGutter(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n bracketMatching(),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n highlightSelectionMatches(),\n keymap.of([\n ...closeBracketsKeymap,\n ...defaultKeymap,\n ...searchKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n ...lintKeymap\n ] as readonly KeyBinding[])\n])()\n"],"mappings":";;;;;;;;;;;;AAmCA,MAAa,oBAA+B;CAC1C,YAAY;CACZ,0BAA0B;CAC1B,sBAAsB;CACtB,QAAQ;CACR,WAAW;CACX,cAAc;CACd,WAAW;CACX,YAAY,wBAAwB,GAAG,IAAI;CAC3C,cAAc;CACd,mBAAmB,uBAAuB,EAAE,UAAU,KAAK,CAAC;CAC5D,gBAAgB;CAChB,cAAc;CACd,eAAe;CACf,qBAAqB;CACrB,gBAAgB;CAChB,oBAAoB;CACpB,0BAA0B;CAC1B,OAAO,GAAG;EACR,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;CACL,CAA0B;AAC5B,EAAA,CAAG"}
@@ -1,17 +1,17 @@
1
1
  import _sfc_main$1 from "../scroll/scroll.js";
2
+ import { basicSetup } from "./basic-setup.js";
2
3
  import { computed, createBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, shallowRef, unref, useModel, useTemplateRef, watch, withCtx, withKeys, withModifiers } from "vue";
3
4
  import { useFormFallbackProps } from "@veltra/compositions";
4
5
  import { bem, injectFormContext, zIndex } from "@veltra/utils";
5
6
  import { Compartment, EditorState } from "@codemirror/state";
6
7
  import { oneDark } from "@codemirror/theme-one-dark";
7
- import { ViewPlugin, tooltips } from "@codemirror/view";
8
- import { EditorView, basicSetup } from "codemirror";
8
+ import { EditorView, ViewPlugin, tooltips } from "@codemirror/view";
9
9
  //#region src/components/code-editor/code-editor.vue
10
10
  const _hoisted_1 = { ref: "container" };
11
- const _sfc_main = /* @__PURE__ */ defineComponent({
12
- name: "CodeEditor",
11
+ const _sfc_main = /*@__PURE__*/ defineComponent({
12
+ name: "UCodeEditor",
13
13
  __name: "code-editor",
14
- props: /* @__PURE__ */ mergeModels({
14
+ props: /*@__PURE__*/ mergeModels({
15
15
  modelValue: {},
16
16
  language: {},
17
17
  dark: {
@@ -1 +1 @@
1
- {"version":3,"file":"code-editor.js","names":[],"sources":["../../../src/components/code-editor/code-editor.vue"],"sourcesContent":["<template>\n <u-scroll :class=\"className\" :style=\"rootStyle\" @keyup.enter.stop>\n <div ref=\"container\"></div>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Compartment, EditorState, type Extension } from '@codemirror/state'\nimport { oneDark } from '@codemirror/theme-one-dark'\nimport { ViewPlugin, tooltips, type ViewUpdate } from '@codemirror/view'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { EditorView, basicSetup } from 'codemirror'\nimport {\n computed,\n onBeforeUnmount,\n shallowRef,\n useTemplateRef,\n watch,\n type CSSProperties\n} from 'vue'\n\nimport type { CodeEditorLang, CodeEditorProps } from '../../types'\nimport { UScroll } from '../scroll'\n\ndefineOptions({ name: 'CodeEditor' })\n\nconst props = withDefaults(defineProps<CodeEditorProps>(), {\n disabled: undefined,\n readonly: undefined,\n dark: false,\n defaultLines: 8\n})\n\nconst model = defineModel<string>()\n\nconst cls = bem('code-editor')\n\nconst { formProps } = injectFormContext()\n\nconst { disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n disabled: false,\n readonly: false\n})\n\nconst className = computed<string[]>(() => [\n cls.b,\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('dark', props.dark)\n])\n\nconst rootStyle = computed<CSSProperties>(() => ({\n '--u-code-editor-default-lines': Math.max(1, props.defaultLines)\n}))\n\nconst containerRef = useTemplateRef('container')\nconst editor = shallowRef<EditorView | null>(null)\n\nconst langLoaders: Record<CodeEditorLang, () => Promise<Extension>> = {\n js: () => import('@codemirror/lang-javascript').then((m) => m.javascript({ typescript: true })),\n sql: () => import('@codemirror/lang-sql').then((m) => m.sql()),\n java: () => import('@codemirror/lang-java').then((m) => m.java()),\n json: () => import('@codemirror/lang-json').then((m) => m.json())\n}\n\nconst themeCompartment = new Compartment()\nconst editableCompartment = new Compartment()\nconst readOnlyCompartment = new Compartment()\nconst langCompartment = new Compartment()\n\nlet phantomGutter: HTMLElement | null = null\nlet phantomContainer: HTMLElement | null = null\nlet lastPhantomKey = ''\n\nfunction resetPhantomCache() {\n phantomGutter = null\n phantomContainer = null\n lastPhantomKey = ''\n}\n\n/**\n * 在 .cm-lineNumbers 末尾追加占位行号 DOM,使可视行号数量补齐到 defaultLines。\n * CodeMirror 的 lineNumbers() 仅为真实文档行渲染行号,超出部分由本逻辑补全。\n */\nfunction syncPhantomLineNumbers() {\n const view = editor.value\n if (!view) return\n\n if (!phantomGutter || !phantomGutter.isConnected) {\n phantomGutter = view.dom.querySelector<HTMLElement>('.cm-gutter.cm-lineNumbers')\n }\n if (!phantomGutter) return\n\n if (!phantomContainer) {\n phantomContainer = document.createElement('div')\n phantomContainer.className = 'cm-phantom-lines'\n }\n if (\n phantomContainer.parentElement !== phantomGutter ||\n phantomContainer !== phantomGutter.lastElementChild\n ) {\n phantomGutter.appendChild(phantomContainer)\n }\n\n const realLines = view.state.doc.lines\n const target = Math.max(0, Math.max(1, props.defaultLines) - realLines)\n const lineHeight = view.defaultLineHeight\n\n const key = `${realLines}|${target}|${lineHeight}`\n if (key === lastPhantomKey) return\n lastPhantomKey = key\n\n while (phantomContainer.children.length > target) {\n phantomContainer.lastElementChild!.remove()\n }\n while (phantomContainer.children.length < target) {\n const el = document.createElement('div')\n el.className = 'cm-gutterElement cm-gutterElement-phantom'\n phantomContainer.appendChild(el)\n }\n for (let i = 0; i < target; i++) {\n const el = phantomContainer.children[i] as HTMLElement\n const num = String(realLines + i + 1)\n if (el.textContent !== num) el.textContent = num\n if (lineHeight && el.style.height !== `${lineHeight}px`) {\n el.style.height = `${lineHeight}px`\n }\n }\n}\n\nconst phantomLineNumbersPlugin = ViewPlugin.fromClass(\n class {\n update(update: ViewUpdate) {\n if (update.docChanged || update.geometryChanged) {\n syncPhantomLineNumbers()\n }\n }\n }\n)\n\nfunction buildExtensions(): Extension[] {\n return [\n basicSetup,\n tooltips({ parent: document.body }),\n EditorView.theme({ '.cm-tooltip': { zIndex: zIndex() } }),\n themeCompartment.of(props.dark ? oneDark : []),\n editableCompartment.of(EditorView.editable.of(!disabled.value)),\n readOnlyCompartment.of(EditorState.readOnly.of(readonly.value)),\n langCompartment.of([]),\n phantomLineNumbersPlugin\n ]\n}\n\nlet editorToken = 0\nlet langToken = 0\n\nasync function applyLanguage() {\n const view = editor.value\n if (!view) return\n const myToken = ++langToken\n const { language } = props\n const ext = language ? await langLoaders[language]() : []\n if (myToken !== langToken || editor.value !== view) return\n view.dispatch({ effects: langCompartment.reconfigure(ext) })\n}\n\nfunction destroyEditor() {\n ++editorToken\n ++langToken\n editor.value?.destroy()\n editor.value = null\n resetPhantomCache()\n}\n\nfunction createEditor() {\n destroyEditor()\n const myToken = ++editorToken\n const parent = containerRef.value\n if (!parent) return\n\n const view = new EditorView({\n doc: model.value,\n extensions: buildExtensions(),\n parent,\n dispatch(tr) {\n view.update([tr])\n if (tr.docChanged) {\n model.value = tr.state.doc.toString()\n }\n }\n })\n\n if (myToken !== editorToken) {\n view.destroy()\n return\n }\n\n editor.value = view\n syncPhantomLineNumbers()\n applyLanguage()\n}\n\nwatch(\n containerRef,\n (el) => {\n if (el) createEditor()\n else destroyEditor()\n },\n { immediate: true, flush: 'post' }\n)\n\nwatch(() => props.language, applyLanguage)\n\nwatch(\n () => props.dark,\n (dark) => {\n editor.value?.dispatch({ effects: themeCompartment.reconfigure(dark ? oneDark : []) })\n }\n)\n\nwatch(disabled, (v) => {\n editor.value?.dispatch({ effects: editableCompartment.reconfigure(EditorView.editable.of(!v)) })\n})\n\nwatch(readonly, (v) => {\n editor.value?.dispatch({ effects: readOnlyCompartment.reconfigure(EditorState.readOnly.of(v)) })\n})\n\nwatch(() => props.defaultLines, syncPhantomLineNumbers)\n\nwatch(\n [() => props.modelValue, editor],\n ([v, e]) => {\n if (!e) return\n if (e.composing) return\n const next = v ?? ''\n if (e.state.doc.toString() === next) return\n\n const valueLength = next.length\n const inRange = e.state.selection.ranges.every(\n (range) => range.anchor <= valueLength && range.head <= valueLength\n )\n e.dispatch({\n changes: { from: 0, to: e.state.doc.length, insert: next },\n selection: inRange ? e.state.selection : { anchor: 0, head: 0 },\n scrollIntoView: true\n })\n },\n { immediate: true }\n)\n\nonBeforeUnmount(destroyEditor)\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"code-editor.js","names":[],"sources":["../../../src/components/code-editor/code-editor.vue"],"sourcesContent":["<template>\n <u-scroll :class=\"className\" :style=\"rootStyle\" @keyup.enter.stop>\n <div ref=\"container\"></div>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Compartment, EditorState, type Extension } from '@codemirror/state'\nimport { oneDark } from '@codemirror/theme-one-dark'\nimport { EditorView, ViewPlugin, tooltips, type ViewUpdate } from '@codemirror/view'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport {\n computed,\n onBeforeUnmount,\n shallowRef,\n useTemplateRef,\n watch,\n type CSSProperties\n} from 'vue'\n\nimport type { CodeEditorLang, CodeEditorProps } from '../../types'\nimport { UScroll } from '../scroll'\nimport { basicSetup } from './basic-setup'\n\ndefineOptions({ name: 'UCodeEditor' })\n\nconst props = withDefaults(defineProps<CodeEditorProps>(), {\n disabled: undefined,\n readonly: undefined,\n dark: false,\n defaultLines: 8\n})\n\nconst model = defineModel<string>()\n\nconst cls = bem('code-editor')\n\nconst { formProps } = injectFormContext()\n\nconst { disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n disabled: false,\n readonly: false\n})\n\nconst className = computed<string[]>(() => [\n cls.b,\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('dark', props.dark)\n])\n\nconst rootStyle = computed<CSSProperties>(() => ({\n '--u-code-editor-default-lines': Math.max(1, props.defaultLines)\n}))\n\nconst containerRef = useTemplateRef('container')\nconst editor = shallowRef<EditorView | null>(null)\n\nconst langLoaders: Record<CodeEditorLang, () => Promise<Extension>> = {\n js: () => import('@codemirror/lang-javascript').then((m) => m.javascript({ typescript: true })),\n sql: () => import('@codemirror/lang-sql').then((m) => m.sql()),\n java: () => import('@codemirror/lang-java').then((m) => m.java()),\n json: () => import('@codemirror/lang-json').then((m) => m.json())\n}\n\nconst themeCompartment = new Compartment()\nconst editableCompartment = new Compartment()\nconst readOnlyCompartment = new Compartment()\nconst langCompartment = new Compartment()\n\nlet phantomGutter: HTMLElement | null = null\nlet phantomContainer: HTMLElement | null = null\nlet lastPhantomKey = ''\n\nfunction resetPhantomCache() {\n phantomGutter = null\n phantomContainer = null\n lastPhantomKey = ''\n}\n\n/**\n * 在 .cm-lineNumbers 末尾追加占位行号 DOM,使可视行号数量补齐到 defaultLines。\n * CodeMirror 的 lineNumbers() 仅为真实文档行渲染行号,超出部分由本逻辑补全。\n */\nfunction syncPhantomLineNumbers() {\n const view = editor.value\n if (!view) return\n\n if (!phantomGutter || !phantomGutter.isConnected) {\n phantomGutter = view.dom.querySelector<HTMLElement>('.cm-gutter.cm-lineNumbers')\n }\n if (!phantomGutter) return\n\n if (!phantomContainer) {\n phantomContainer = document.createElement('div')\n phantomContainer.className = 'cm-phantom-lines'\n }\n if (\n phantomContainer.parentElement !== phantomGutter ||\n phantomContainer !== phantomGutter.lastElementChild\n ) {\n phantomGutter.appendChild(phantomContainer)\n }\n\n const realLines = view.state.doc.lines\n const target = Math.max(0, Math.max(1, props.defaultLines) - realLines)\n const lineHeight = view.defaultLineHeight\n\n const key = `${realLines}|${target}|${lineHeight}`\n if (key === lastPhantomKey) return\n lastPhantomKey = key\n\n while (phantomContainer.children.length > target) {\n phantomContainer.lastElementChild!.remove()\n }\n while (phantomContainer.children.length < target) {\n const el = document.createElement('div')\n el.className = 'cm-gutterElement cm-gutterElement-phantom'\n phantomContainer.appendChild(el)\n }\n for (let i = 0; i < target; i++) {\n const el = phantomContainer.children[i] as HTMLElement\n const num = String(realLines + i + 1)\n if (el.textContent !== num) el.textContent = num\n if (lineHeight && el.style.height !== `${lineHeight}px`) {\n el.style.height = `${lineHeight}px`\n }\n }\n}\n\nconst phantomLineNumbersPlugin = ViewPlugin.fromClass(\n class {\n update(update: ViewUpdate) {\n if (update.docChanged || update.geometryChanged) {\n syncPhantomLineNumbers()\n }\n }\n }\n)\n\nfunction buildExtensions(): Extension[] {\n return [\n basicSetup,\n tooltips({ parent: document.body }),\n EditorView.theme({ '.cm-tooltip': { zIndex: zIndex() } }),\n themeCompartment.of(props.dark ? oneDark : []),\n editableCompartment.of(EditorView.editable.of(!disabled.value)),\n readOnlyCompartment.of(EditorState.readOnly.of(readonly.value)),\n langCompartment.of([]),\n phantomLineNumbersPlugin\n ]\n}\n\nlet editorToken = 0\nlet langToken = 0\n\nasync function applyLanguage() {\n const view = editor.value\n if (!view) return\n const myToken = ++langToken\n const { language } = props\n const ext = language ? await langLoaders[language]() : []\n if (myToken !== langToken || editor.value !== view) return\n view.dispatch({ effects: langCompartment.reconfigure(ext) })\n}\n\nfunction destroyEditor() {\n ++editorToken\n ++langToken\n editor.value?.destroy()\n editor.value = null\n resetPhantomCache()\n}\n\nfunction createEditor() {\n destroyEditor()\n const myToken = ++editorToken\n const parent = containerRef.value\n if (!parent) return\n\n const view = new EditorView({\n doc: model.value,\n extensions: buildExtensions(),\n parent,\n dispatch(tr) {\n view.update([tr])\n if (tr.docChanged) {\n model.value = tr.state.doc.toString()\n }\n }\n })\n\n if (myToken !== editorToken) {\n view.destroy()\n return\n }\n\n editor.value = view\n syncPhantomLineNumbers()\n applyLanguage()\n}\n\nwatch(\n containerRef,\n (el) => {\n if (el) createEditor()\n else destroyEditor()\n },\n { immediate: true, flush: 'post' }\n)\n\nwatch(() => props.language, applyLanguage)\n\nwatch(\n () => props.dark,\n (dark) => {\n editor.value?.dispatch({ effects: themeCompartment.reconfigure(dark ? oneDark : []) })\n }\n)\n\nwatch(disabled, (v) => {\n editor.value?.dispatch({ effects: editableCompartment.reconfigure(EditorView.editable.of(!v)) })\n})\n\nwatch(readonly, (v) => {\n editor.value?.dispatch({ effects: readOnlyCompartment.reconfigure(EditorState.readOnly.of(v)) })\n})\n\nwatch(() => props.defaultLines, syncPhantomLineNumbers)\n\nwatch(\n [() => props.modelValue, editor],\n ([v, e]) => {\n if (!e) return\n if (e.composing) return\n const next = v ?? ''\n if (e.state.doc.toString() === next) return\n\n const valueLength = next.length\n const inRange = e.state.selection.ranges.every(\n (range) => range.anchor <= valueLength && range.head <= valueLength\n )\n e.dispatch({\n changes: { from: 0, to: e.state.doc.length, insert: next },\n selection: inRange ? e.state.selection : { anchor: 0, head: 0 },\n scrollIntoView: true\n })\n },\n { immediate: true }\n)\n\nonBeforeUnmount(destroyEditor)\n</script>\n"],"mappings":"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"}
@@ -10,8 +10,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
10
10
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
11
11
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
12
12
  }>, {
13
- readonly: boolean;
14
13
  disabled: boolean;
14
+ readonly: boolean;
15
15
  dark: boolean;
16
16
  defaultLines: number;
17
17
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -11,8 +11,8 @@ const _hoisted_1 = [
11
11
  "onKeydown"
12
12
  ];
13
13
  const _hoisted_2 = ["aria-hidden"];
14
- const _sfc_main = /* @__PURE__ */ defineComponent({
15
- name: "CollapseItem",
14
+ const _sfc_main = /*@__PURE__*/ defineComponent({
15
+ name: "UCollapseItem",
16
16
  __name: "collapse-item",
17
17
  props: {
18
18
  value: {},
@@ -1 +1 @@
1
- {"version":3,"file":"collapse-item.js","names":[],"sources":["../../../src/components/collapse/collapse-item.vue"],"sourcesContent":["<template>\n <div :class=\"classList\">\n <div\n :class=\"headerClassList\"\n role=\"button\"\n :aria-expanded=\"isActive\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"handleClick\"\n @keydown.enter.prevent=\"handleClick\"\n @keydown.space.prevent=\"handleClick\"\n >\n <span :class=\"cls.e('title')\">\n <slot name=\"title\">{{ title }}</slot>\n </span>\n\n <span :class=\"cls.e('icon')\">\n <slot name=\"icon\" :is-active=\"isActive\">\n <UIcon><component :is=\"iconComponent\" /></UIcon>\n </slot>\n </span>\n </div>\n <div ref=\"wrapperEl\" :class=\"cls.e('content-wrapper')\" :aria-hidden=\"!isActive\">\n <div :class=\"cls.e('content')\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, onBeforeUnmount, onMounted, ref, watch } from 'vue'\n\nimport type { CollapseItemProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({ name: 'CollapseItem' })\n\nconst props = defineProps<CollapseItemProps>()\n\nconst context = inject(CollapseDIKey)!\n\nconst cls = context?.cls ?? bem('collapse')\n\nconst isActive = computed(() => !!context?.activeValues.value.includes(props.value))\n\nconst iconComponent = computed(() => context?.expandIcon.value ?? ArrowRight)\n\nconst classList = computed(() => [\n cls.e('item'),\n bem.is('active', isActive.value),\n bem.is('disabled', props.disabled)\n])\n\nconst headerClassList = computed(() => [\n cls.e('header'),\n bem.is('disabled', props.disabled),\n bem.is('active', isActive.value)\n])\n\nconst handleClick = () => {\n if (props.disabled) return\n context?.toggle(props.value)\n}\n\nconst wrapperEl = ref<HTMLElement>()\n\nconst { expandTransition } = context\n\nonMounted(() => {\n context?.register(props.value)\n if (!wrapperEl.value) return\n expandTransition.setExpanded(wrapperEl.value, isActive.value)\n})\n\nwatch(isActive, (active) => {\n if (!wrapperEl.value) return\n active ? expandTransition.expand(wrapperEl.value) : expandTransition.collapse(wrapperEl.value)\n})\n\nonBeforeUnmount(() => {\n context?.unregister(props.value)\n if (!wrapperEl.value) return\n expandTransition.cancel(wrapperEl.value)\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAyCA,MAAM,QAAQ;EAEd,MAAM,UAAU,OAAO,aAAa;EAEpC,MAAM,MAAM,SAAS,OAAO,IAAI,UAAU;EAE1C,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,aAAa,MAAM,SAAS,MAAM,KAAK,CAAC;EAEnF,MAAM,gBAAgB,eAAe,SAAS,WAAW,SAAS,UAAU;EAE5E,MAAM,YAAY,eAAe;GAC/B,IAAI,EAAE,MAAM;GACZ,IAAI,GAAG,UAAU,SAAS,KAAK;GAC/B,IAAI,GAAG,YAAY,MAAM,QAAQ;EACnC,CAAC;EAED,MAAM,kBAAkB,eAAe;GACrC,IAAI,EAAE,QAAQ;GACd,IAAI,GAAG,YAAY,MAAM,QAAQ;GACjC,IAAI,GAAG,UAAU,SAAS,KAAK;EACjC,CAAC;EAED,MAAM,oBAAoB;GACxB,IAAI,MAAM,UAAU;GACpB,SAAS,OAAO,MAAM,KAAK;EAC7B;EAEA,MAAM,YAAY,IAAiB;EAEnC,MAAM,EAAE,qBAAqB;EAE7B,gBAAgB;GACd,SAAS,SAAS,MAAM,KAAK;GAC7B,IAAI,CAAC,UAAU,OAAO;GACtB,iBAAiB,YAAY,UAAU,OAAO,SAAS,KAAK;EAC9D,CAAC;EAED,MAAM,WAAW,WAAW;GAC1B,IAAI,CAAC,UAAU,OAAO;GACtB,SAAS,iBAAiB,OAAO,UAAU,KAAK,IAAI,iBAAiB,SAAS,UAAU,KAAK;EAC/F,CAAC;EAED,sBAAsB;GACpB,SAAS,WAAW,MAAM,KAAK;GAC/B,IAAI,CAAC,UAAU,OAAO;GACtB,iBAAiB,OAAO,UAAU,KAAK;EACzC,CAAC;;uBAtFC,mBA0BM,OAAA,EA1BA,OAAK,eAAE,UAAA,KAAS,EAAA,GAAA,CACpB,mBAmBM,OAAA;IAlBH,OAAK,eAAE,gBAAA,KAAe;IACvB,MAAK;IACJ,iBAAe,SAAA;IACf,iBAAe,QAAA;IACf,UAAU,QAAA,WAAQ,KAAA;IAClB,SAAO;IACP,WAAO,CAAA,SAAA,cAAgB,aAAW,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA,GAAA,SAAA,cACX,aAAW,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;OAEnC,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,OAAA,CAAA,EAAA,GAAA,CACjB,WAAqC,KAAA,QAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,gBAAf,QAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAG7B,mBAIO,QAAA,EAJA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA,CACjB,WAEO,KAAA,QAAA,QAAA,EAFY,UAAW,SAAA,MAAQ,SAE/B,CADL,YAAgD,MAAA,WAAA,GAAA,MAAA;2BAAR,EAAA,UAAA,GAAjC,YAAiC,wBAAjB,cAAA,KAAa,CAAA,EAAA,CAAA;;gCAI1C,mBAIM,OAAA;aAJG;IAAJ,KAAI;IAAa,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,iBAAA,CAAA;IAAsB,eAAW,CAAG,SAAA;OACpE,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,SAAA,CAAA,EAAA,GAAA,CAChB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"collapse-item.js","names":[],"sources":["../../../src/components/collapse/collapse-item.vue"],"sourcesContent":["<template>\n <div :class=\"classList\">\n <div\n :class=\"headerClassList\"\n role=\"button\"\n :aria-expanded=\"isActive\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"handleClick\"\n @keydown.enter.prevent=\"handleClick\"\n @keydown.space.prevent=\"handleClick\"\n >\n <span :class=\"cls.e('title')\">\n <slot name=\"title\">{{ title }}</slot>\n </span>\n\n <span :class=\"cls.e('icon')\">\n <slot name=\"icon\" :is-active=\"isActive\">\n <UIcon><component :is=\"iconComponent\" /></UIcon>\n </slot>\n </span>\n </div>\n <div ref=\"wrapperEl\" :class=\"cls.e('content-wrapper')\" :aria-hidden=\"!isActive\">\n <div :class=\"cls.e('content')\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, onBeforeUnmount, onMounted, ref, watch } from 'vue'\n\nimport type { CollapseItemProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({ name: 'UCollapseItem' })\n\nconst props = defineProps<CollapseItemProps>()\n\nconst context = inject(CollapseDIKey)!\n\nconst cls = context?.cls ?? bem('collapse')\n\nconst isActive = computed(() => !!context?.activeValues.value.includes(props.value))\n\nconst iconComponent = computed(() => context?.expandIcon.value ?? ArrowRight)\n\nconst classList = computed(() => [\n cls.e('item'),\n bem.is('active', isActive.value),\n bem.is('disabled', props.disabled)\n])\n\nconst headerClassList = computed(() => [\n cls.e('header'),\n bem.is('disabled', props.disabled),\n bem.is('active', isActive.value)\n])\n\nconst handleClick = () => {\n if (props.disabled) return\n context?.toggle(props.value)\n}\n\nconst wrapperEl = ref<HTMLElement>()\n\nconst { expandTransition } = context\n\nonMounted(() => {\n context?.register(props.value)\n if (!wrapperEl.value) return\n expandTransition.setExpanded(wrapperEl.value, isActive.value)\n})\n\nwatch(isActive, (active) => {\n if (!wrapperEl.value) return\n active ? expandTransition.expand(wrapperEl.value) : expandTransition.collapse(wrapperEl.value)\n})\n\nonBeforeUnmount(() => {\n context?.unregister(props.value)\n if (!wrapperEl.value) return\n expandTransition.cancel(wrapperEl.value)\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAyCA,MAAM,QAAQ;EAEd,MAAM,UAAU,OAAO,aAAa;EAEpC,MAAM,MAAM,SAAS,OAAO,IAAI,UAAU;EAE1C,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,aAAa,MAAM,SAAS,MAAM,KAAK,CAAC;EAEnF,MAAM,gBAAgB,eAAe,SAAS,WAAW,SAAS,UAAU;EAE5E,MAAM,YAAY,eAAe;GAC/B,IAAI,EAAE,MAAM;GACZ,IAAI,GAAG,UAAU,SAAS,KAAK;GAC/B,IAAI,GAAG,YAAY,MAAM,QAAQ;EACnC,CAAC;EAED,MAAM,kBAAkB,eAAe;GACrC,IAAI,EAAE,QAAQ;GACd,IAAI,GAAG,YAAY,MAAM,QAAQ;GACjC,IAAI,GAAG,UAAU,SAAS,KAAK;EACjC,CAAC;EAED,MAAM,oBAAoB;GACxB,IAAI,MAAM,UAAU;GACpB,SAAS,OAAO,MAAM,KAAK;EAC7B;EAEA,MAAM,YAAY,IAAiB;EAEnC,MAAM,EAAE,qBAAqB;EAE7B,gBAAgB;GACd,SAAS,SAAS,MAAM,KAAK;GAC7B,IAAI,CAAC,UAAU,OAAO;GACtB,iBAAiB,YAAY,UAAU,OAAO,SAAS,KAAK;EAC9D,CAAC;EAED,MAAM,WAAW,WAAW;GAC1B,IAAI,CAAC,UAAU,OAAO;GACtB,SAAS,iBAAiB,OAAO,UAAU,KAAK,IAAI,iBAAiB,SAAS,UAAU,KAAK;EAC/F,CAAC;EAED,sBAAsB;GACpB,SAAS,WAAW,MAAM,KAAK;GAC/B,IAAI,CAAC,UAAU,OAAO;GACtB,iBAAiB,OAAO,UAAU,KAAK;EACzC,CAAC;;uBAtFC,mBA0BM,OAAA,EA1BA,OAAK,eAAE,UAAA,KAAS,EAAA,GAAA,CACpB,mBAmBM,OAAA;IAlBH,OAAK,eAAE,gBAAA,KAAe;IACvB,MAAK;IACJ,iBAAe,SAAA;IACf,iBAAe,QAAA;IACf,UAAU,QAAA,WAAQ,KAAA;IAClB,SAAO;IACP,WAAO,CAAA,SAAA,cAAgB,aAAW,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA,GAAA,SAAA,cACX,aAAW,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;OAEnC,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA,EAAA,GAAA,CACjB,WAAqC,KAAA,QAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,gBAAf,QAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAG7B,mBAIO,QAAA,EAJA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA,CACjB,WAEO,KAAA,QAAA,QAAA,EAFY,UAAW,SAAA,MAAQ,SAE/B,CADL,YAAgD,MAAA,WAAA,GAAA,MAAA;2BAAR,EAAA,UAAA,GAAjC,YAAiC,wBAAjB,cAAA,KAAa,CAAA,EAAA,CAAA;;gCAI1C,mBAIM,OAAA;aAJG;IAAJ,KAAI;IAAa,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,iBAAA,CAAA;IAAsB,eAAW,CAAG,SAAA;OACpE,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,SAAA,CAAA,EAAA,GAAA,CAChB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA,CAAA,GAAA,CAAA"}
@@ -3,8 +3,8 @@ import { computed, createElementBlock, defineComponent, normalizeClass, openBloc
3
3
  import { useFormFallbackProps, useModel as useModel$1 } from "@veltra/compositions";
4
4
  import { ExpandTransition, bem } from "@veltra/utils";
5
5
  //#region src/components/collapse/collapse.vue
6
- const _sfc_main = /* @__PURE__ */ defineComponent({
7
- name: "Collapse",
6
+ const _sfc_main = /*@__PURE__*/ defineComponent({
7
+ name: "UCollapse",
8
8
  __name: "collapse",
9
9
  props: {
10
10
  modelValue: {},
@@ -1 +1 @@
1
- {"version":3,"file":"collapse.js","names":[],"sources":["../../../src/components/collapse/collapse.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" role=\"region\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps, useModel } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport { computed, provide, ref } from 'vue'\n\nimport type { CollapseEmits, CollapseModelValue, CollapseProps, CollapseValue } from '../../types'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({ name: 'Collapse' })\n\nconst props = withDefaults(defineProps<CollapseProps>(), {\n accordion: false,\n defaultCollapseAll: false\n})\nconst emit = defineEmits<CollapseEmits>()\n\nconst cls = bem('collapse')\n\nconst expandTransition = new ExpandTransition({\n transition: 'height 0.24s cubic-bezier(0.4, 0, 0.2, 1)'\n})\n\nconst { size } = useFormFallbackProps([props], { size: 'default' })\n\nconst expandIcon = computed(() => props.expandIcon)\n\nconst classList = computed(() => [cls.b, cls.m(size.value)])\n\nconst modelValue = useModel<CollapseProps, 'modelValue'>({ props, emit, propName: 'modelValue' })\n\nconst activeValues = computed<CollapseValue[]>(() => {\n const v = modelValue.value\n if (v === undefined || v === null) return []\n return Array.isArray(v) ? v : [v]\n})\n\nconst update = (next: CollapseModelValue) => {\n modelValue.value = next\n emit('change', next)\n}\n\nconst toggle = (value: CollapseValue) => {\n if (props.accordion) {\n update(activeValues.value[0] === value ? [] : value)\n return\n }\n\n const values = activeValues.value.slice()\n const index = values.indexOf(value)\n if (index > -1) values.splice(index, 1)\n else values.push(value)\n update(values)\n}\n\n// 收集子组件已注册的 values\nconst registeredValues = ref<CollapseValue[]>([])\n\n// 初始捕获 modelValue 是否具有有效初值\nconst hasInitialValue =\n modelValue.value !== undefined &&\n modelValue.value !== null &&\n (!Array.isArray(modelValue.value) || modelValue.value.length > 0)\n\nconst register = (value: CollapseValue) => {\n if (!registeredValues.value.includes(value)) {\n registeredValues.value.push(value)\n\n // 若默认展开全部(defaultCollapseAll 为 false)且外部未指定初始值,则自动展开该子项\n if (!props.defaultCollapseAll && !hasInitialValue) {\n if (props.accordion) {\n if (registeredValues.value.length === 1) {\n update(value)\n }\n } else {\n const current = Array.isArray(modelValue.value)\n ? modelValue.value\n : modelValue.value !== undefined && modelValue.value !== null\n ? [modelValue.value]\n : []\n if (!current.includes(value)) {\n update([...current, value])\n }\n }\n }\n }\n}\n\nconst unregister = (value: CollapseValue) => {\n const idx = registeredValues.value.indexOf(value)\n if (idx > -1) {\n registeredValues.value.splice(idx, 1)\n }\n}\n\nprovide(CollapseDIKey, {\n cls,\n size,\n expandIcon,\n activeValues,\n toggle,\n expandTransition,\n register,\n unregister\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAId,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,mBAAmB,IAAI,iBAAiB,EAC5C,YAAY,4CACd,CAAC;EAED,MAAM,EAAE,SAAS,qBAAqB,CAAC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;EAElE,MAAM,aAAa,eAAe,MAAM,UAAU;EAElD,MAAM,YAAY,eAAe,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;EAE3D,MAAM,aAAa,WAAsC;GAAE;GAAO;GAAM,UAAU;EAAa,CAAC;EAEhG,MAAM,eAAe,eAAgC;GACnD,MAAM,IAAI,WAAW;GACrB,IAAI,MAAM,KAAA,KAAa,MAAM,MAAM,OAAO,CAAC;GAC3C,OAAO,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;EAClC,CAAC;EAED,MAAM,UAAU,SAA6B;GAC3C,WAAW,QAAQ;GACnB,KAAK,UAAU,IAAI;EACrB;EAEA,MAAM,UAAU,UAAyB;GACvC,IAAI,MAAM,WAAW;IACnB,OAAO,aAAa,MAAM,OAAO,QAAQ,CAAC,IAAI,KAAK;IACnD;GACF;GAEA,MAAM,SAAS,aAAa,MAAM,MAAM;GACxC,MAAM,QAAQ,OAAO,QAAQ,KAAK;GAClC,IAAI,QAAQ,IAAI,OAAO,OAAO,OAAO,CAAC;QACjC,OAAO,KAAK,KAAK;GACtB,OAAO,MAAM;EACf;EAGA,MAAM,mBAAmB,IAAqB,CAAC,CAAC;EAGhD,MAAM,kBACJ,WAAW,UAAU,KAAA,KACrB,WAAW,UAAU,SACpB,CAAC,MAAM,QAAQ,WAAW,KAAK,KAAK,WAAW,MAAM,SAAS;EAEjE,MAAM,YAAY,UAAyB;GACzC,IAAI,CAAC,iBAAiB,MAAM,SAAS,KAAK,GAAG;IAC3C,iBAAiB,MAAM,KAAK,KAAK;IAGjC,IAAI,CAAC,MAAM,sBAAsB,CAAC,iBAChC,IAAI,MAAM;SACJ,iBAAiB,MAAM,WAAW,GACpC,OAAO,KAAK;IAAA,OAET;KACL,MAAM,UAAU,MAAM,QAAQ,WAAW,KAAK,IAC1C,WAAW,QACX,WAAW,UAAU,KAAA,KAAa,WAAW,UAAU,OACrD,CAAC,WAAW,KAAK,IACjB,CAAC;KACP,IAAI,CAAC,QAAQ,SAAS,KAAK,GACzB,OAAO,CAAC,GAAG,SAAS,KAAK,CAAC;IAE9B;GAEJ;EACF;EAEA,MAAM,cAAc,UAAyB;GAC3C,MAAM,MAAM,iBAAiB,MAAM,QAAQ,KAAK;GAChD,IAAI,MAAM,IACR,iBAAiB,MAAM,OAAO,KAAK,CAAC;EAExC;EAEA,QAAQ,eAAe;GACrB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;;uBA5GC,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,KAAS;IAAE,MAAK;OAC3B,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"collapse.js","names":[],"sources":["../../../src/components/collapse/collapse.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" role=\"region\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps, useModel } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport { computed, provide, ref } from 'vue'\n\nimport type { CollapseEmits, CollapseModelValue, CollapseProps, CollapseValue } from '../../types'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({ name: 'UCollapse' })\n\nconst props = withDefaults(defineProps<CollapseProps>(), {\n accordion: false,\n defaultCollapseAll: false\n})\nconst emit = defineEmits<CollapseEmits>()\n\nconst cls = bem('collapse')\n\nconst expandTransition = new ExpandTransition({\n transition: 'height 0.24s cubic-bezier(0.4, 0, 0.2, 1)'\n})\n\nconst { size } = useFormFallbackProps([props], { size: 'default' })\n\nconst expandIcon = computed(() => props.expandIcon)\n\nconst classList = computed(() => [cls.b, cls.m(size.value)])\n\nconst modelValue = useModel<CollapseProps, 'modelValue'>({ props, emit, propName: 'modelValue' })\n\nconst activeValues = computed<CollapseValue[]>(() => {\n const v = modelValue.value\n if (v === undefined || v === null) return []\n return Array.isArray(v) ? v : [v]\n})\n\nconst update = (next: CollapseModelValue) => {\n modelValue.value = next\n emit('change', next)\n}\n\nconst toggle = (value: CollapseValue) => {\n if (props.accordion) {\n update(activeValues.value[0] === value ? [] : value)\n return\n }\n\n const values = activeValues.value.slice()\n const index = values.indexOf(value)\n if (index > -1) values.splice(index, 1)\n else values.push(value)\n update(values)\n}\n\n// 收集子组件已注册的 values\nconst registeredValues = ref<CollapseValue[]>([])\n\n// 初始捕获 modelValue 是否具有有效初值\nconst hasInitialValue =\n modelValue.value !== undefined &&\n modelValue.value !== null &&\n (!Array.isArray(modelValue.value) || modelValue.value.length > 0)\n\nconst register = (value: CollapseValue) => {\n if (!registeredValues.value.includes(value)) {\n registeredValues.value.push(value)\n\n // 若默认展开全部(defaultCollapseAll 为 false)且外部未指定初始值,则自动展开该子项\n if (!props.defaultCollapseAll && !hasInitialValue) {\n if (props.accordion) {\n if (registeredValues.value.length === 1) {\n update(value)\n }\n } else {\n const current = Array.isArray(modelValue.value)\n ? modelValue.value\n : modelValue.value !== undefined && modelValue.value !== null\n ? [modelValue.value]\n : []\n if (!current.includes(value)) {\n update([...current, value])\n }\n }\n }\n }\n}\n\nconst unregister = (value: CollapseValue) => {\n const idx = registeredValues.value.indexOf(value)\n if (idx > -1) {\n registeredValues.value.splice(idx, 1)\n }\n}\n\nprovide(CollapseDIKey, {\n cls,\n size,\n expandIcon,\n activeValues,\n toggle,\n expandTransition,\n register,\n unregister\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAId,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,mBAAmB,IAAI,iBAAiB,EAC5C,YAAY,4CACd,CAAC;EAED,MAAM,EAAE,SAAS,qBAAqB,CAAC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;EAElE,MAAM,aAAa,eAAe,MAAM,UAAU;EAElD,MAAM,YAAY,eAAe,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;EAE3D,MAAM,aAAa,WAAsC;GAAE;GAAO;GAAM,UAAU;EAAa,CAAC;EAEhG,MAAM,eAAe,eAAgC;GACnD,MAAM,IAAI,WAAW;GACrB,IAAI,MAAM,KAAA,KAAa,MAAM,MAAM,OAAO,CAAC;GAC3C,OAAO,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;EAClC,CAAC;EAED,MAAM,UAAU,SAA6B;GAC3C,WAAW,QAAQ;GACnB,KAAK,UAAU,IAAI;EACrB;EAEA,MAAM,UAAU,UAAyB;GACvC,IAAI,MAAM,WAAW;IACnB,OAAO,aAAa,MAAM,OAAO,QAAQ,CAAC,IAAI,KAAK;IACnD;GACF;GAEA,MAAM,SAAS,aAAa,MAAM,MAAM;GACxC,MAAM,QAAQ,OAAO,QAAQ,KAAK;GAClC,IAAI,QAAQ,IAAI,OAAO,OAAO,OAAO,CAAC;QACjC,OAAO,KAAK,KAAK;GACtB,OAAO,MAAM;EACf;EAGA,MAAM,mBAAmB,IAAqB,CAAC,CAAC;EAGhD,MAAM,kBACJ,WAAW,UAAU,KAAA,KACrB,WAAW,UAAU,SACpB,CAAC,MAAM,QAAQ,WAAW,KAAK,KAAK,WAAW,MAAM,SAAS;EAEjE,MAAM,YAAY,UAAyB;GACzC,IAAI,CAAC,iBAAiB,MAAM,SAAS,KAAK,GAAG;IAC3C,iBAAiB,MAAM,KAAK,KAAK;IAGjC,IAAI,CAAC,MAAM,sBAAsB,CAAC,iBAChC,IAAI,MAAM;SACJ,iBAAiB,MAAM,WAAW,GACpC,OAAO,KAAK;IAAA,OAET;KACL,MAAM,UAAU,MAAM,QAAQ,WAAW,KAAK,IAC1C,WAAW,QACX,WAAW,UAAU,KAAA,KAAa,WAAW,UAAU,OACrD,CAAC,WAAW,KAAK,IACjB,CAAC;KACP,IAAI,CAAC,QAAQ,SAAS,KAAK,GACzB,OAAO,CAAC,GAAG,SAAS,KAAK,CAAC;IAE9B;GAEJ;EACF;EAEA,MAAM,cAAc,UAAyB;GAC3C,MAAM,MAAM,iBAAiB,MAAM,QAAQ,KAAK;GAChD,IAAI,MAAM,IACR,iBAAiB,MAAM,OAAO,KAAK,CAAC;EAExC;EAEA,QAAQ,eAAe;GACrB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;;uBA5GC,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,KAAS;IAAE,MAAK;OAC3B,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -14,8 +14,8 @@ const _hoisted_1 = [
14
14
  const _hoisted_2 = ["disabled"];
15
15
  const _hoisted_3 = ["disabled"];
16
16
  const _hoisted_4 = ["disabled"];
17
- const _sfc_main = /* @__PURE__ */ defineComponent({
18
- name: "ConditionGroup",
17
+ const _sfc_main = /*@__PURE__*/ defineComponent({
18
+ name: "UConditionGroup",
19
19
  __name: "condition-group",
20
20
  props: {
21
21
  group: {},
@@ -1 +1 @@
1
- {"version":3,"file":"condition-group.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.e('group'), depth > 0 ? cls.em('group', 'nested') : '']\">\n <template v-if=\"group.children.length === 0\">\n <div :class=\"cls.e('group-empty')\">\n <span :class=\"cls.e('group-empty-tip')\">暂无条件</span>\n </div>\n </template>\n\n <ul :class=\"cls.e('group-list')\">\n <li v-for=\"(child, idx) in group.children\" :key=\"idx\" :class=\"cls.e('group-item')\">\n <span\n v-if=\"idx > 0\"\n :class=\"[cls.e('connector'), cls.em('connector', connectorAt(idx - 1))]\"\n :tabindex=\"readonly || disabled ? -1 : 0\"\n role=\"button\"\n :aria-label=\"`切换连接符(当前 ${connectorAt(idx - 1).toUpperCase()})`\"\n @click=\"toggleConnector(idx - 1)\"\n @keydown.enter.prevent=\"toggleConnector(idx - 1)\"\n @keydown.space.prevent=\"toggleConnector(idx - 1)\"\n >{{ connectorAt(idx - 1).toUpperCase() }}</span\n >\n <span v-else :class=\"cls.e('connector-placeholder')\">WHERE</span>\n\n <div :class=\"cls.e('group-item-body')\">\n <ConditionRow\n v-if=\"child.type === 'condition'\"\n :item=\"child\"\n :fields=\"fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:item=\"(it) => updateChild(idx, it)\"\n @delete=\"removeChild(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n <ConditionGroup\n v-else\n :group=\"child\"\n :fields=\"fields\"\n :size=\"size\"\n :depth=\"depth + 1\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"(g) => updateChild(idx, g)\"\n @remove=\"removeChild(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n </div>\n </li>\n </ul>\n\n <div v-if=\"!readonly\" :class=\"cls.e('group-actions')\">\n <button type=\"button\" :class=\"cls.e('action-btn')\" :disabled=\"disabled\" @click=\"addCondition\">\n <u-icon><Plus /></u-icon>\n <span>添加条件</span>\n </button>\n <button type=\"button\" :class=\"cls.e('action-btn')\" :disabled=\"disabled\" @click=\"addGroup\">\n <u-icon><Plus /></u-icon>\n <span>添加条件组</span>\n </button>\n <button\n v-if=\"depth > 0\"\n type=\"button\"\n :class=\"[cls.e('action-btn'), cls.em('action-btn', 'danger')]\"\n :disabled=\"disabled\"\n @click=\"emit('remove')\"\n >\n <u-icon><Delete /></u-icon>\n <span>删除组</span>\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Delete, Plus } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\n\nimport type {\n ConditionConnector,\n ConditionField,\n ConditionGroup as ConditionGroupNode,\n ConditionNode\n} from '../../../types'\nimport { UIcon } from '../../icon'\nimport { createEmptyGroup, createEmptyLeaf } from '../core/evaluator'\nimport ConditionRow, { type MentionPayload } from './condition-row.vue'\n\ndefineOptions({ name: 'ConditionGroup' })\n\nconst props = withDefaults(\n defineProps<{\n group: ConditionGroupNode\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n depth?: number\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default', depth: 0 }\n)\n\nconst emit = defineEmits<{\n (e: 'update:group', group: ConditionGroupNode): void\n (e: 'remove'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nfunction connectorAt(index: number): ConditionConnector {\n return props.group.connectors[index] ?? 'and'\n}\n\nfunction emitUpdate(next: Partial<ConditionGroupNode>) {\n emit('update:group', { ...props.group, ...next })\n}\n\nfunction toggleConnector(index: number) {\n if (props.disabled || props.readonly) return\n const next = props.group.connectors.slice()\n next[index] = connectorAt(index) === 'and' ? 'or' : 'and'\n emitUpdate({ connectors: next })\n}\n\nfunction addCondition() {\n appendChild(createEmptyLeaf())\n}\n\nfunction addGroup() {\n appendChild({ ...createEmptyGroup(), children: [createEmptyLeaf()], connectors: [] })\n}\n\nfunction appendChild(node: ConditionNode) {\n const children = [...props.group.children, node]\n const connectors =\n props.group.children.length === 0\n ? props.group.connectors\n : [...props.group.connectors, 'and' as const]\n emitUpdate({ children, connectors })\n}\n\nfunction updateChild(index: number, node: ConditionNode) {\n const children = props.group.children.slice()\n children[index] = node\n emitUpdate({ children })\n}\n\nfunction removeChild(index: number) {\n const children = props.group.children.slice()\n children.splice(index, 1)\n const connectors = props.group.connectors.slice()\n // 移除第 index 项时,连接到该项的连接符也要移除\n // connectors[i] 位于 children[i] 与 children[i+1] 之间\n if (index === 0) {\n if (connectors.length > 0) connectors.shift()\n } else {\n connectors.splice(index - 1, 1)\n }\n emitUpdate({ children, connectors })\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"condition-group.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.e('group'), depth > 0 ? cls.em('group', 'nested') : '']\">\n <template v-if=\"group.children.length === 0\">\n <div :class=\"cls.e('group-empty')\">\n <span :class=\"cls.e('group-empty-tip')\">暂无条件</span>\n </div>\n </template>\n\n <ul :class=\"cls.e('group-list')\">\n <li v-for=\"(child, idx) in group.children\" :key=\"idx\" :class=\"cls.e('group-item')\">\n <span\n v-if=\"idx > 0\"\n :class=\"[cls.e('connector'), cls.em('connector', connectorAt(idx - 1))]\"\n :tabindex=\"readonly || disabled ? -1 : 0\"\n role=\"button\"\n :aria-label=\"`切换连接符(当前 ${connectorAt(idx - 1).toUpperCase()})`\"\n @click=\"toggleConnector(idx - 1)\"\n @keydown.enter.prevent=\"toggleConnector(idx - 1)\"\n @keydown.space.prevent=\"toggleConnector(idx - 1)\"\n >{{ connectorAt(idx - 1).toUpperCase() }}</span\n >\n <span v-else :class=\"cls.e('connector-placeholder')\">WHERE</span>\n\n <div :class=\"cls.e('group-item-body')\">\n <ConditionRow\n v-if=\"child.type === 'condition'\"\n :item=\"child\"\n :fields=\"fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:item=\"(it) => updateChild(idx, it)\"\n @delete=\"removeChild(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n <ConditionGroup\n v-else\n :group=\"child\"\n :fields=\"fields\"\n :size=\"size\"\n :depth=\"depth + 1\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"(g) => updateChild(idx, g)\"\n @remove=\"removeChild(idx)\"\n @mention=\"(p) => emit('mention', p)\"\n />\n </div>\n </li>\n </ul>\n\n <div v-if=\"!readonly\" :class=\"cls.e('group-actions')\">\n <button type=\"button\" :class=\"cls.e('action-btn')\" :disabled=\"disabled\" @click=\"addCondition\">\n <u-icon><Plus /></u-icon>\n <span>添加条件</span>\n </button>\n <button type=\"button\" :class=\"cls.e('action-btn')\" :disabled=\"disabled\" @click=\"addGroup\">\n <u-icon><Plus /></u-icon>\n <span>添加条件组</span>\n </button>\n <button\n v-if=\"depth > 0\"\n type=\"button\"\n :class=\"[cls.e('action-btn'), cls.em('action-btn', 'danger')]\"\n :disabled=\"disabled\"\n @click=\"emit('remove')\"\n >\n <u-icon><Delete /></u-icon>\n <span>删除组</span>\n </button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Delete, Plus } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\n\nimport type {\n ConditionConnector,\n ConditionField,\n ConditionGroup as ConditionGroupNode,\n ConditionNode\n} from '../../../types'\nimport { UIcon } from '../../icon'\nimport { createEmptyGroup, createEmptyLeaf } from '../core/evaluator'\nimport ConditionRow, { type MentionPayload } from './condition-row.vue'\n\ndefineOptions({ name: 'UConditionGroup' })\n\nconst props = withDefaults(\n defineProps<{\n group: ConditionGroupNode\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n depth?: number\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default', depth: 0 }\n)\n\nconst emit = defineEmits<{\n (e: 'update:group', group: ConditionGroupNode): void\n (e: 'remove'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nfunction connectorAt(index: number): ConditionConnector {\n return props.group.connectors[index] ?? 'and'\n}\n\nfunction emitUpdate(next: Partial<ConditionGroupNode>) {\n emit('update:group', { ...props.group, ...next })\n}\n\nfunction toggleConnector(index: number) {\n if (props.disabled || props.readonly) return\n const next = props.group.connectors.slice()\n next[index] = connectorAt(index) === 'and' ? 'or' : 'and'\n emitUpdate({ connectors: next })\n}\n\nfunction addCondition() {\n appendChild(createEmptyLeaf())\n}\n\nfunction addGroup() {\n appendChild({ ...createEmptyGroup(), children: [createEmptyLeaf()], connectors: [] })\n}\n\nfunction appendChild(node: ConditionNode) {\n const children = [...props.group.children, node]\n const connectors =\n props.group.children.length === 0\n ? props.group.connectors\n : [...props.group.connectors, 'and' as const]\n emitUpdate({ children, connectors })\n}\n\nfunction updateChild(index: number, node: ConditionNode) {\n const children = props.group.children.slice()\n children[index] = node\n emitUpdate({ children })\n}\n\nfunction removeChild(index: number) {\n const children = props.group.children.slice()\n children.splice(index, 1)\n const connectors = props.group.connectors.slice()\n // 移除第 index 项时,连接到该项的连接符也要移除\n // connectors[i] 位于 children[i] 与 children[i+1] 之间\n if (index === 0) {\n if (connectors.length > 0) connectors.shift()\n } else {\n connectors.splice(index - 1, 1)\n }\n emitUpdate({ children, connectors })\n}\n</script>\n"],"mappings":"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"}
@@ -14,8 +14,8 @@ const _hoisted_2 = [
14
14
  "readonly"
15
15
  ];
16
16
  const _hoisted_3 = ["disabled"];
17
- const _sfc_main = /* @__PURE__ */ defineComponent({
18
- name: "ConditionRow",
17
+ const _sfc_main = /*@__PURE__*/ defineComponent({
18
+ name: "UConditionRow",
19
19
  __name: "condition-row",
20
20
  props: {
21
21
  item: {},
@@ -1 +1 @@
1
- {"version":3,"file":"condition-row.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-row.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('row')\">\n <u-select\n :class=\"cls.e('field')\"\n :model-value=\"item.field\"\n :options=\"fieldOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"字段\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n filterable\n @update:model-value=\"onFieldChange\"\n />\n\n <u-select\n :class=\"cls.e('operator')\"\n :model-value=\"item.operator\"\n :options=\"operatorOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"运算符\"\n :size=\"size\"\n :disabled=\"disabled || readonly || !currentField\"\n :clearable=\"false\"\n @update:model-value=\"onOperatorChange\"\n />\n\n <div :class=\"cls.e('value')\">\n <template v-if=\"!needValue\">\n <span :class=\"cls.e('value-empty')\">—</span>\n </template>\n\n <template v-else-if=\"enumValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"enumValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"booleanValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"booleanValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"item.value.kind === 'variable'\">\n <span\n ref=\"chipRef\"\n :class=\"cls.e('value-chip')\"\n tabindex=\"0\"\n :title=\"`变量:${item.value.name}`\"\n @click=\"onChipClick\"\n @keydown.delete=\"onChipDelete\"\n >\n <span :class=\"cls.e('value-chip-label')\">{{ item.value.name }}</span>\n <span :class=\"cls.e('value-chip-close')\" @click.stop=\"onChipDelete\">\n <u-icon><Close /></u-icon>\n </span>\n </span>\n </template>\n\n <template v-else>\n <input\n ref=\"valueInputRef\"\n :class=\"cls.e('value-input')\"\n :type=\"inputType\"\n :value=\"constantValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @input=\"onValueInput\"\n @keydown=\"onValueKeydown\"\n />\n </template>\n </div>\n\n <button\n v-if=\"!readonly\"\n type=\"button\"\n :class=\"cls.e('row-delete')\"\n :disabled=\"disabled\"\n title=\"删除条件\"\n @click=\"emit('delete')\"\n >\n <u-icon><Delete /></u-icon>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close, Delete } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, useTemplateRef } from 'vue'\n\nimport type { ConditionField, ConditionLeaf, ConditionValue } from '../../../types'\nimport { UIcon } from '../../icon'\nimport { USelect } from '../../select'\nimport { getOperatorsByFieldType, type OperatorDef } from '../core/operators'\n\ndefineOptions({ name: 'ConditionRow' })\n\nexport interface MentionPayload {\n triggerDom: HTMLElement\n setValue: (val: ConditionValue) => void\n}\n\nconst props = withDefaults(\n defineProps<{\n item: ConditionLeaf\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default' }\n)\n\nconst emit = defineEmits<{\n (e: 'update:item', item: ConditionLeaf): void\n (e: 'delete'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nconst valueInputRef = useTemplateRef<HTMLInputElement>('valueInputRef')\nconst chipRef = useTemplateRef<HTMLElement>('chipRef')\n\nconst fieldOptions = computed(() =>\n (props.fields ?? []).map((f) => ({ label: f.label, value: f.value }))\n)\n\nconst currentField = computed(() => props.fields?.find((f) => f.value === props.item.field))\n\nconst operatorOptions = computed<OperatorDef[]>(() => {\n if (!currentField.value) {\n return props.item.operator\n ? [{ label: props.item.operator, value: props.item.operator, needValue: true }]\n : []\n }\n return getOperatorsByFieldType(currentField.value.type)\n})\n\nconst currentOperator = computed(() =>\n operatorOptions.value.find((o) => o.value === props.item.operator)\n)\n\nconst needValue = computed(() => currentOperator.value?.needValue ?? true)\n\nconst constantValue = computed(() =>\n props.item.value.kind === 'constant' ? props.item.value.value : ''\n)\n\n/** 枚举字段的可选值(仅在非 `in` 等多值运算符下展开为下拉) */\nconst enumValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'enum') return null\n if (props.item.operator === 'in') return null\n return currentField.value.enumOptions ?? []\n})\n\nconst booleanValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'boolean') return null\n if (!needValue.value) return null\n return [\n { label: '是', value: 'true' },\n { label: '否', value: 'false' }\n ]\n})\n\nconst inputType = computed(() => {\n const type = currentField.value?.type\n if (type === 'number') return 'number'\n if (type === 'date') return 'date'\n return 'text'\n})\n\nconst placeholder = computed(() => {\n if (props.item.operator === 'in') return '多个值用逗号分隔'\n if (!props.fields?.length) return ''\n return '输入值或 @ 引用变量'\n})\n\nfunction emitUpdate(patch: Partial<ConditionLeaf>) {\n emit('update:item', { ...props.item, ...patch })\n}\n\nfunction onFieldChange(val: string) {\n const field = props.fields?.find((f) => f.value === val)\n const nextOps = field ? getOperatorsByFieldType(field.type) : []\n const nextOp = nextOps[0]?.value ?? 'eq'\n emit('update:item', {\n ...props.item,\n field: val,\n operator: nextOp,\n value: { kind: 'constant', value: '' }\n })\n}\n\nfunction onOperatorChange(val: string) {\n emitUpdate({ operator: val, value: { kind: 'constant', value: '' } })\n}\n\nfunction onValueInput(e: Event) {\n emitUpdate({ value: { kind: 'constant', value: (e.target as HTMLInputElement).value } })\n}\n\nfunction onConstantChange(val: string) {\n emitUpdate({ value: { kind: 'constant', value: val } })\n}\n\nfunction onValueKeydown(e: KeyboardEvent) {\n if (props.disabled || props.readonly) return\n if (e.key === '@' && valueInputRef.value) {\n e.preventDefault()\n emit('mention', {\n triggerDom: valueInputRef.value,\n setValue: (val) => emitUpdate({ value: val })\n })\n }\n}\n\nfunction onChipClick() {\n if (props.disabled || props.readonly) return\n const dom = chipRef.value\n if (!dom) return\n emit('mention', { triggerDom: dom, setValue: (val) => emitUpdate({ value: val }) })\n}\n\nfunction onChipDelete() {\n if (props.disabled || props.readonly) return\n emitUpdate({ value: { kind: 'constant', value: '' } })\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"condition-row.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-row.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('row')\">\n <u-select\n :class=\"cls.e('field')\"\n :model-value=\"item.field\"\n :options=\"fieldOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"字段\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n filterable\n @update:model-value=\"onFieldChange\"\n />\n\n <u-select\n :class=\"cls.e('operator')\"\n :model-value=\"item.operator\"\n :options=\"operatorOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"运算符\"\n :size=\"size\"\n :disabled=\"disabled || readonly || !currentField\"\n :clearable=\"false\"\n @update:model-value=\"onOperatorChange\"\n />\n\n <div :class=\"cls.e('value')\">\n <template v-if=\"!needValue\">\n <span :class=\"cls.e('value-empty')\">—</span>\n </template>\n\n <template v-else-if=\"enumValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"enumValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"booleanValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"booleanValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"item.value.kind === 'variable'\">\n <span\n ref=\"chipRef\"\n :class=\"cls.e('value-chip')\"\n tabindex=\"0\"\n :title=\"`变量:${item.value.name}`\"\n @click=\"onChipClick\"\n @keydown.delete=\"onChipDelete\"\n >\n <span :class=\"cls.e('value-chip-label')\">{{ item.value.name }}</span>\n <span :class=\"cls.e('value-chip-close')\" @click.stop=\"onChipDelete\">\n <u-icon><Close /></u-icon>\n </span>\n </span>\n </template>\n\n <template v-else>\n <input\n ref=\"valueInputRef\"\n :class=\"cls.e('value-input')\"\n :type=\"inputType\"\n :value=\"constantValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @input=\"onValueInput\"\n @keydown=\"onValueKeydown\"\n />\n </template>\n </div>\n\n <button\n v-if=\"!readonly\"\n type=\"button\"\n :class=\"cls.e('row-delete')\"\n :disabled=\"disabled\"\n title=\"删除条件\"\n @click=\"emit('delete')\"\n >\n <u-icon><Delete /></u-icon>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close, Delete } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, useTemplateRef } from 'vue'\n\nimport type { ConditionField, ConditionLeaf, ConditionValue } from '../../../types'\nimport { UIcon } from '../../icon'\nimport { USelect } from '../../select'\nimport { getOperatorsByFieldType, type OperatorDef } from '../core/operators'\n\ndefineOptions({ name: 'UConditionRow' })\n\nexport interface MentionPayload {\n triggerDom: HTMLElement\n setValue: (val: ConditionValue) => void\n}\n\nconst props = withDefaults(\n defineProps<{\n item: ConditionLeaf\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default' }\n)\n\nconst emit = defineEmits<{\n (e: 'update:item', item: ConditionLeaf): void\n (e: 'delete'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nconst valueInputRef = useTemplateRef<HTMLInputElement>('valueInputRef')\nconst chipRef = useTemplateRef<HTMLElement>('chipRef')\n\nconst fieldOptions = computed(() =>\n (props.fields ?? []).map((f) => ({ label: f.label, value: f.value }))\n)\n\nconst currentField = computed(() => props.fields?.find((f) => f.value === props.item.field))\n\nconst operatorOptions = computed<OperatorDef[]>(() => {\n if (!currentField.value) {\n return props.item.operator\n ? [{ label: props.item.operator, value: props.item.operator, needValue: true }]\n : []\n }\n return getOperatorsByFieldType(currentField.value.type)\n})\n\nconst currentOperator = computed(() =>\n operatorOptions.value.find((o) => o.value === props.item.operator)\n)\n\nconst needValue = computed(() => currentOperator.value?.needValue ?? true)\n\nconst constantValue = computed(() =>\n props.item.value.kind === 'constant' ? props.item.value.value : ''\n)\n\n/** 枚举字段的可选值(仅在非 `in` 等多值运算符下展开为下拉) */\nconst enumValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'enum') return null\n if (props.item.operator === 'in') return null\n return currentField.value.enumOptions ?? []\n})\n\nconst booleanValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'boolean') return null\n if (!needValue.value) return null\n return [\n { label: '是', value: 'true' },\n { label: '否', value: 'false' }\n ]\n})\n\nconst inputType = computed(() => {\n const type = currentField.value?.type\n if (type === 'number') return 'number'\n if (type === 'date') return 'date'\n return 'text'\n})\n\nconst placeholder = computed(() => {\n if (props.item.operator === 'in') return '多个值用逗号分隔'\n if (!props.fields?.length) return ''\n return '输入值或 @ 引用变量'\n})\n\nfunction emitUpdate(patch: Partial<ConditionLeaf>) {\n emit('update:item', { ...props.item, ...patch })\n}\n\nfunction onFieldChange(val: string) {\n const field = props.fields?.find((f) => f.value === val)\n const nextOps = field ? getOperatorsByFieldType(field.type) : []\n const nextOp = nextOps[0]?.value ?? 'eq'\n emit('update:item', {\n ...props.item,\n field: val,\n operator: nextOp,\n value: { kind: 'constant', value: '' }\n })\n}\n\nfunction onOperatorChange(val: string) {\n emitUpdate({ operator: val, value: { kind: 'constant', value: '' } })\n}\n\nfunction onValueInput(e: Event) {\n emitUpdate({ value: { kind: 'constant', value: (e.target as HTMLInputElement).value } })\n}\n\nfunction onConstantChange(val: string) {\n emitUpdate({ value: { kind: 'constant', value: val } })\n}\n\nfunction onValueKeydown(e: KeyboardEvent) {\n if (props.disabled || props.readonly) return\n if (e.key === '@' && valueInputRef.value) {\n e.preventDefault()\n emit('mention', {\n triggerDom: valueInputRef.value,\n setValue: (val) => emitUpdate({ value: val })\n })\n }\n}\n\nfunction onChipClick() {\n if (props.disabled || props.readonly) return\n const dom = chipRef.value\n if (!dom) return\n emit('mention', { triggerDom: dom, setValue: (val) => emitUpdate({ value: val }) })\n}\n\nfunction onChipDelete() {\n if (props.disabled || props.readonly) return\n emitUpdate({ value: { kind: 'constant', value: '' } })\n}\n</script>\n"],"mappings":"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"}
@@ -5,8 +5,8 @@ import { computed, createElementBlock, createVNode, defineComponent, normalizeCl
5
5
  import { useFormFallbackProps } from "@veltra/compositions";
6
6
  import { bem, injectFormContext } from "@veltra/utils";
7
7
  //#region src/components/condition-editor/condition-editor.vue
8
- const _sfc_main = /* @__PURE__ */ defineComponent({
9
- name: "ConditionEditor",
8
+ const _sfc_main = /*@__PURE__*/ defineComponent({
9
+ name: "UConditionEditor",
10
10
  __name: "condition-editor",
11
11
  props: {
12
12
  modelValue: {},
@@ -1 +1 @@
1
- {"version":3,"file":"condition-editor.js","names":[],"sources":["../../../src/components/condition-editor/condition-editor.vue"],"sourcesContent":["<template>\n <div :class=\"className\" @keydown=\"onKeydown\">\n <ConditionGroup\n :group=\"rootGroup\"\n :fields=\"props.fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"onGroupUpdate\"\n @mention=\"onMention\"\n />\n\n <VariablePicker\n ref=\"pickerRef\"\n :visible=\"pickerVisible\"\n :trigger-dom=\"pickerTriggerDom\"\n :variables=\"props.variables\"\n :filter=\"pickerFilter\"\n :selectable-levels=\"'leaf'\"\n @select=\"onPickerSelect\"\n @dismiss=\"onPickerDismiss\"\n @update:visible=\"onPickerVisibleChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\n\nimport type { ConditionEditorProps, ConditionExpression } from '../../types'\nimport VariablePicker from '../expression-editor/components/variable-picker.vue'\nimport ConditionGroup from './components/condition-group.vue'\nimport type { MentionPayload } from './components/condition-row.vue'\nimport { createEmptyGroup } from './core/evaluator'\n\ndefineOptions({ name: 'ConditionEditor' })\n\nconst props = withDefaults(defineProps<ConditionEditorProps>(), { fields: () => [] })\n\nconst emit = defineEmits<{ (e: 'update:modelValue', value: ConditionExpression): void }>()\n\nconst cls = bem('condition-editor')\nconst { formProps } = injectFormContext()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst className = computed(() => [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value)\n])\n\nconst rootGroup = shallowRef<ConditionExpression>(\n props.modelValue ? clone(props.modelValue) : createEmptyGroup()\n)\n\nfunction clone<T>(v: T): T {\n return JSON.parse(JSON.stringify(v)) as T\n}\n\nfunction onGroupUpdate(group: ConditionExpression) {\n rootGroup.value = group\n emit('update:modelValue', clone(group))\n}\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (!v) {\n rootGroup.value = createEmptyGroup()\n return\n }\n if (JSON.stringify(v) === JSON.stringify(rootGroup.value)) return\n rootGroup.value = clone(v)\n }\n)\n\n// ── VariablePicker ──\n\nconst pickerRef = useTemplateRef<{ handleKeydown: (e: KeyboardEvent) => boolean }>('pickerRef')\nconst pickerVisible = shallowRef(false)\nconst pickerTriggerDom = shallowRef<HTMLElement | undefined>(undefined)\nconst pickerFilter = shallowRef('')\nconst mentionTarget = shallowRef<MentionPayload | null>(null)\n\nfunction onMention(payload: MentionPayload) {\n if (disabled.value || readonly.value) return\n mentionTarget.value = payload\n pickerTriggerDom.value = payload.triggerDom\n pickerFilter.value = ''\n pickerVisible.value = true\n}\n\nfunction onPickerSelect(item: { label: string; value: string }) {\n mentionTarget.value?.setValue({ kind: 'variable', name: item.value })\n pickerVisible.value = false\n mentionTarget.value = null\n}\n\nfunction onPickerDismiss() {\n pickerVisible.value = false\n mentionTarget.value = null\n}\n\nfunction onPickerVisibleChange(v: boolean) {\n if (!v) {\n pickerVisible.value = false\n mentionTarget.value = null\n }\n}\n\nfunction onKeydown(e: KeyboardEvent) {\n if (disabled.value || readonly.value) return\n if (pickerVisible.value) {\n const handled = pickerRef.value?.handleKeydown(e)\n if (handled) {\n e.preventDefault()\n }\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAuCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,kBAAkB;EAClC,MAAM,EAAE,cAAc,kBAAkB;EACxC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;EAElF,MAAM,YAAY,eAAe;GAC/B,IAAI;GACJ,IAAI,EAAE,KAAK,KAAK;GAChB,IAAI,GAAG,YAAY,SAAS,KAAK;GACjC,IAAI,GAAG,YAAY,SAAS,KAAK;EACnC,CAAC;EAED,MAAM,YAAY,WAChB,MAAM,aAAa,MAAM,MAAM,UAAU,IAAI,iBAAiB,CAChE;EAEA,SAAS,MAAS,GAAS;GACzB,OAAO,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC;EACrC;EAEA,SAAS,cAAc,OAA4B;GACjD,UAAU,QAAQ;GAClB,KAAK,qBAAqB,MAAM,KAAK,CAAC;EACxC;EAEA,YACQ,MAAM,aACX,MAAM;GACL,IAAI,CAAC,GAAG;IACN,UAAU,QAAQ,iBAAiB;IACnC;GACF;GACA,IAAI,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,UAAU,KAAK,GAAG;GAC3D,UAAU,QAAQ,MAAM,CAAC;EAC3B,CACF;EAIA,MAAM,YAAY,eAAiE,WAAW;EAC9F,MAAM,gBAAgB,WAAW,KAAK;EACtC,MAAM,mBAAmB,WAAoC,KAAA,CAAS;EACtE,MAAM,eAAe,WAAW,EAAE;EAClC,MAAM,gBAAgB,WAAkC,IAAI;EAE5D,SAAS,UAAU,SAAyB;GAC1C,IAAI,SAAS,SAAS,SAAS,OAAO;GACtC,cAAc,QAAQ;GACtB,iBAAiB,QAAQ,QAAQ;GACjC,aAAa,QAAQ;GACrB,cAAc,QAAQ;EACxB;EAEA,SAAS,eAAe,MAAwC;GAC9D,cAAc,OAAO,SAAS;IAAE,MAAM;IAAY,MAAM,KAAK;GAAM,CAAC;GACpE,cAAc,QAAQ;GACtB,cAAc,QAAQ;EACxB;EAEA,SAAS,kBAAkB;GACzB,cAAc,QAAQ;GACtB,cAAc,QAAQ;EACxB;EAEA,SAAS,sBAAsB,GAAY;GACzC,IAAI,CAAC,GAAG;IACN,cAAc,QAAQ;IACtB,cAAc,QAAQ;GACxB;EACF;EAEA,SAAS,UAAU,GAAkB;GACnC,IAAI,SAAS,SAAS,SAAS,OAAO;GACtC,IAAI,cAAc;QACA,UAAU,OAAO,cAAc,CAAC,GAE9C,EAAE,eAAe;GAAA;EAGvB;;uBAxHE,mBAsBM,OAAA;IAtBA,OAAK,eAAE,UAAA,KAAS;IAAY;OAChC,YAQE,aAAA;IAPC,OAAO,UAAA;IACP,QAAQ,MAAM;IACd,MAAM,MAAA,IAAA;IACN,UAAU,MAAA,QAAA;IACV,UAAU,MAAA,QAAA;IACV,kBAAc;IACL;;;;;;;OAGZ,YAUE,aAAA;aATI;IAAJ,KAAI;IACH,SAAS,cAAA;IACT,eAAa,iBAAA;IACb,WAAW,MAAM;IACjB,QAAQ,aAAA;IACR,qBAAmB;IACnB,UAAQ;IACR,WAAS;IACT,oBAAgB"}
1
+ {"version":3,"file":"condition-editor.js","names":[],"sources":["../../../src/components/condition-editor/condition-editor.vue"],"sourcesContent":["<template>\n <div :class=\"className\" @keydown=\"onKeydown\">\n <ConditionGroup\n :group=\"rootGroup\"\n :fields=\"props.fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"onGroupUpdate\"\n @mention=\"onMention\"\n />\n\n <VariablePicker\n ref=\"pickerRef\"\n :visible=\"pickerVisible\"\n :trigger-dom=\"pickerTriggerDom\"\n :variables=\"props.variables\"\n :filter=\"pickerFilter\"\n :selectable-levels=\"'leaf'\"\n @select=\"onPickerSelect\"\n @dismiss=\"onPickerDismiss\"\n @update:visible=\"onPickerVisibleChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\n\nimport type { ConditionEditorProps, ConditionExpression } from '../../types'\nimport VariablePicker from '../expression-editor/components/variable-picker.vue'\nimport ConditionGroup from './components/condition-group.vue'\nimport type { MentionPayload } from './components/condition-row.vue'\nimport { createEmptyGroup } from './core/evaluator'\n\ndefineOptions({ name: 'UConditionEditor' })\n\nconst props = withDefaults(defineProps<ConditionEditorProps>(), { fields: () => [] })\n\nconst emit = defineEmits<{ (e: 'update:modelValue', value: ConditionExpression): void }>()\n\nconst cls = bem('condition-editor')\nconst { formProps } = injectFormContext()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst className = computed(() => [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value)\n])\n\nconst rootGroup = shallowRef<ConditionExpression>(\n props.modelValue ? clone(props.modelValue) : createEmptyGroup()\n)\n\nfunction clone<T>(v: T): T {\n return JSON.parse(JSON.stringify(v)) as T\n}\n\nfunction onGroupUpdate(group: ConditionExpression) {\n rootGroup.value = group\n emit('update:modelValue', clone(group))\n}\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (!v) {\n rootGroup.value = createEmptyGroup()\n return\n }\n if (JSON.stringify(v) === JSON.stringify(rootGroup.value)) return\n rootGroup.value = clone(v)\n }\n)\n\n// ── VariablePicker ──\n\nconst pickerRef = useTemplateRef<{ handleKeydown: (e: KeyboardEvent) => boolean }>('pickerRef')\nconst pickerVisible = shallowRef(false)\nconst pickerTriggerDom = shallowRef<HTMLElement | undefined>(undefined)\nconst pickerFilter = shallowRef('')\nconst mentionTarget = shallowRef<MentionPayload | null>(null)\n\nfunction onMention(payload: MentionPayload) {\n if (disabled.value || readonly.value) return\n mentionTarget.value = payload\n pickerTriggerDom.value = payload.triggerDom\n pickerFilter.value = ''\n pickerVisible.value = true\n}\n\nfunction onPickerSelect(item: { label: string; value: string }) {\n mentionTarget.value?.setValue({ kind: 'variable', name: item.value })\n pickerVisible.value = false\n mentionTarget.value = null\n}\n\nfunction onPickerDismiss() {\n pickerVisible.value = false\n mentionTarget.value = null\n}\n\nfunction onPickerVisibleChange(v: boolean) {\n if (!v) {\n pickerVisible.value = false\n mentionTarget.value = null\n }\n}\n\nfunction onKeydown(e: KeyboardEvent) {\n if (disabled.value || readonly.value) return\n if (pickerVisible.value) {\n const handled = pickerRef.value?.handleKeydown(e)\n if (handled) {\n e.preventDefault()\n }\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAuCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,kBAAkB;EAClC,MAAM,EAAE,cAAc,kBAAkB;EACxC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;EAElF,MAAM,YAAY,eAAe;GAC/B,IAAI;GACJ,IAAI,EAAE,KAAK,KAAK;GAChB,IAAI,GAAG,YAAY,SAAS,KAAK;GACjC,IAAI,GAAG,YAAY,SAAS,KAAK;EACnC,CAAC;EAED,MAAM,YAAY,WAChB,MAAM,aAAa,MAAM,MAAM,UAAU,IAAI,iBAAiB,CAChE;EAEA,SAAS,MAAS,GAAS;GACzB,OAAO,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC;EACrC;EAEA,SAAS,cAAc,OAA4B;GACjD,UAAU,QAAQ;GAClB,KAAK,qBAAqB,MAAM,KAAK,CAAC;EACxC;EAEA,YACQ,MAAM,aACX,MAAM;GACL,IAAI,CAAC,GAAG;IACN,UAAU,QAAQ,iBAAiB;IACnC;GACF;GACA,IAAI,KAAK,UAAU,CAAC,MAAM,KAAK,UAAU,UAAU,KAAK,GAAG;GAC3D,UAAU,QAAQ,MAAM,CAAC;EAC3B,CACF;EAIA,MAAM,YAAY,eAAiE,WAAW;EAC9F,MAAM,gBAAgB,WAAW,KAAK;EACtC,MAAM,mBAAmB,WAAoC,KAAA,CAAS;EACtE,MAAM,eAAe,WAAW,EAAE;EAClC,MAAM,gBAAgB,WAAkC,IAAI;EAE5D,SAAS,UAAU,SAAyB;GAC1C,IAAI,SAAS,SAAS,SAAS,OAAO;GACtC,cAAc,QAAQ;GACtB,iBAAiB,QAAQ,QAAQ;GACjC,aAAa,QAAQ;GACrB,cAAc,QAAQ;EACxB;EAEA,SAAS,eAAe,MAAwC;GAC9D,cAAc,OAAO,SAAS;IAAE,MAAM;IAAY,MAAM,KAAK;GAAM,CAAC;GACpE,cAAc,QAAQ;GACtB,cAAc,QAAQ;EACxB;EAEA,SAAS,kBAAkB;GACzB,cAAc,QAAQ;GACtB,cAAc,QAAQ;EACxB;EAEA,SAAS,sBAAsB,GAAY;GACzC,IAAI,CAAC,GAAG;IACN,cAAc,QAAQ;IACtB,cAAc,QAAQ;GACxB;EACF;EAEA,SAAS,UAAU,GAAkB;GACnC,IAAI,SAAS,SAAS,SAAS,OAAO;GACtC,IAAI,cAAc;QACA,UAAU,OAAO,cAAc,CAAC,GAE9C,EAAE,eAAe;GAAA;EAGvB;;uBAxHE,mBAsBM,OAAA;IAtBA,OAAK,eAAE,UAAA,KAAS;IAAY;OAChC,YAQE,aAAA;IAPC,OAAO,UAAA;IACP,QAAQ,MAAM;IACd,MAAM,MAAA,IAAA;IACN,UAAU,MAAA,QAAA;IACV,UAAU,MAAA,QAAA;IACV,kBAAc;IACL;;;;;;;OAGZ,YAUE,aAAA;aATI;IAAJ,KAAI;IACH,SAAS,cAAA;IACT,eAAa,iBAAA;IACb,WAAW,MAAM;IACjB,QAAQ,aAAA;IACR,qBAAmB;IACnB,UAAQ;IACR,WAAS;IACT,oBAAgB"}