@veltra/desktop 1.3.10 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
  2. package/dist/components/action/action.js.map +1 -1
  3. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  4. package/dist/components/badge/badge.js.map +1 -1
  5. package/dist/components/badge/style.d.ts +1 -1
  6. package/dist/components/batch-edit/batch-edit-form.js +8 -12
  7. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  8. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  9. package/dist/components/batch-edit/batch-edit.js +2 -1
  10. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  11. package/dist/components/batch-edit/di.js.map +1 -1
  12. package/dist/components/batch-edit/index.d.ts +2 -2
  13. package/dist/components/batch-edit/use-edit-state.js +11 -9
  14. package/dist/components/batch-edit/use-edit-state.js.map +1 -1
  15. package/dist/components/batch-edit/use-handlers.js.map +1 -1
  16. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  17. package/dist/components/breadcrumb/style.d.ts +1 -1
  18. package/dist/components/button/button-group.js.map +1 -1
  19. package/dist/components/button/button.js.map +1 -1
  20. package/dist/components/calendar/calendar.js.map +1 -1
  21. package/dist/components/calendar/style.d.ts +1 -1
  22. package/dist/components/card/card-action.js.map +1 -1
  23. package/dist/components/card/card-content.js.map +1 -1
  24. package/dist/components/card/card-cover.js.map +1 -1
  25. package/dist/components/card/card-header.js.map +1 -1
  26. package/dist/components/card/card.js.map +1 -1
  27. package/dist/components/card/style.d.ts +1 -1
  28. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  29. package/dist/components/cascade/cascade.js.map +1 -1
  30. package/dist/components/check-tag/check-tag.js.map +1 -1
  31. package/dist/components/check-tag/style.d.ts +1 -1
  32. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  33. package/dist/components/checkbox/checkbox.js.map +1 -1
  34. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  35. package/dist/components/code-editor/basic-setup.js +2 -2
  36. package/dist/components/code-editor/code-editor.js +2 -2
  37. package/dist/components/code-editor/code-editor.js.map +1 -1
  38. package/dist/components/code-editor/lang-loaders.js +1 -1
  39. package/dist/components/code-editor/shell-extension.js +2 -2
  40. package/dist/components/collapse/collapse-item.js +34 -11
  41. package/dist/components/collapse/collapse-item.js.map +1 -1
  42. package/dist/components/collapse/collapse.js.map +1 -1
  43. package/dist/components/collapse/style.d.ts +1 -1
  44. package/dist/components/collapse/style2.css +29 -51
  45. package/dist/components/condition-editor/components/condition-group.js.map +1 -1
  46. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  47. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  48. package/dist/components/condition-editor/index.d.ts +2 -2
  49. package/dist/components/contextmenu/contextmenu-item.js +13 -6
  50. package/dist/components/contextmenu/contextmenu-item.js.map +1 -1
  51. package/dist/components/contextmenu/contextmenu-panel.js +12 -6
  52. package/dist/components/contextmenu/contextmenu-panel.js.map +1 -1
  53. package/dist/components/contextmenu/contextmenu-sub.js.map +1 -1
  54. package/dist/components/contextmenu/contextmenu.js.map +1 -1
  55. package/dist/components/contextmenu/di.d.ts +15 -0
  56. package/dist/components/contextmenu/index.d.ts +3 -2
  57. package/dist/components/contextmenu/style2.css +13 -0
  58. package/dist/components/date-panel/date-panel.js.map +1 -1
  59. package/dist/components/date-panel/headers/day.js.map +1 -1
  60. package/dist/components/date-panel/headers/month.js.map +1 -1
  61. package/dist/components/date-panel/headers/year.js.map +1 -1
  62. package/dist/components/date-panel/panels/day.js.map +1 -1
  63. package/dist/components/date-panel/panels/month.js.map +1 -1
  64. package/dist/components/date-panel/panels/year.js.map +1 -1
  65. package/dist/components/date-panel/style.d.ts +1 -1
  66. package/dist/components/date-picker/date-picker.js.map +1 -1
  67. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  68. package/dist/components/dialog/dialog.js.map +1 -1
  69. package/dist/components/drawer/drawer.js.map +1 -1
  70. package/dist/components/dropdown/dropdown.js.map +1 -1
  71. package/dist/components/dual-nav/dual-nav-app.js.map +1 -1
  72. package/dist/components/dual-nav/dual-nav.js.map +1 -1
  73. package/dist/components/empty/empty.js.map +1 -1
  74. package/dist/components/empty/style.d.ts +1 -1
  75. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  76. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  77. package/dist/components/expression-editor/core/editor.js.map +1 -1
  78. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  79. package/dist/components/expression-editor/style.d.ts +1 -1
  80. package/dist/components/file-picker/file-picker.js.map +1 -1
  81. package/dist/components/file-picker/style.d.ts +1 -1
  82. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  83. package/dist/components/file-viewer/helper.js +1 -38
  84. package/dist/components/file-viewer/helper.js.map +1 -1
  85. package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
  86. package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
  87. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  88. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  89. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  90. package/dist/components/file-viewer/previewers/sheet-previewer.js +68 -37
  91. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  92. package/dist/components/file-viewer/previewers/text-previewer.js +2 -2
  93. package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
  94. package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
  95. package/dist/components/file-viewer/style.d.ts +1 -1
  96. package/dist/components/float-button/float-button.js.map +1 -1
  97. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/form/style.d.ts +1 -1
  99. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  100. package/dist/components/form-item/style.d.ts +1 -1
  101. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  102. package/dist/components/gantt-chart/style.d.ts +1 -1
  103. package/dist/components/grid/grid-item.js.map +1 -1
  104. package/dist/components/grid/grid.js +3 -2
  105. package/dist/components/grid/grid.js.map +1 -1
  106. package/dist/components/grid/style.d.ts +1 -1
  107. package/dist/components/grid-input/grid-input.js.map +1 -1
  108. package/dist/components/grid-input/style.d.ts +1 -1
  109. package/dist/components/group-input/group-input.js.map +1 -1
  110. package/dist/components/group-nav/group-nav-item.js.map +1 -1
  111. package/dist/components/group-nav/group-nav.js.map +1 -1
  112. package/dist/components/group-nav/style.d.ts +1 -1
  113. package/dist/components/icon/icon.js.map +1 -1
  114. package/dist/components/icon/style.d.ts +1 -1
  115. package/dist/components/index.d.ts +91 -156
  116. package/dist/components/index.js +4 -1
  117. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/kbd/kbd.js.map +1 -1
  119. package/dist/components/kbd/style.d.ts +1 -1
  120. package/dist/components/layout/layout-resizer.js.map +1 -1
  121. package/dist/components/layout/layout.js.map +1 -1
  122. package/dist/components/layout/style.d.ts +1 -1
  123. package/dist/components/list/list-item.js.map +1 -1
  124. package/dist/components/list/list.js.map +1 -1
  125. package/dist/components/loading/directive.js +2 -1
  126. package/dist/components/loading/directive.js.map +1 -1
  127. package/dist/components/loading/index.d.ts +2 -2
  128. package/dist/components/loading/loading.js.map +1 -1
  129. package/dist/components/message/index.d.ts +2 -2
  130. package/dist/components/message/message-box.js.map +1 -1
  131. package/dist/components/message/message.js.map +1 -1
  132. package/dist/components/message/style.d.ts +1 -1
  133. package/dist/components/message-confirm/index.d.ts +2 -2
  134. package/dist/components/message-confirm/message-confirm-box.js.map +1 -1
  135. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  136. package/dist/components/message-confirm/style.d.ts +1 -1
  137. package/dist/components/message-confirm/style2.css +18 -0
  138. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  139. package/dist/components/multi-select/multi-select.js +6 -3
  140. package/dist/components/multi-select/multi-select.js.map +1 -1
  141. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  142. package/dist/components/nav/nav-icon.js.map +1 -1
  143. package/dist/components/nav/nav-item-collapsed.js.map +1 -1
  144. package/dist/components/nav/nav-item.js +4 -2
  145. package/dist/components/nav/nav-item.js.map +1 -1
  146. package/dist/components/nav/nav-sub-collapsed.js.map +1 -1
  147. package/dist/components/nav/nav-sub.js.map +1 -1
  148. package/dist/components/nav/nav.js.map +1 -1
  149. package/dist/components/nav/style.d.ts +1 -1
  150. package/dist/components/node-render/style.d.ts +1 -1
  151. package/dist/components/notification/index.d.ts +2 -2
  152. package/dist/components/notification/notification-box.js +2 -2
  153. package/dist/components/notification/notification-box.js.map +1 -1
  154. package/dist/components/notification/notification.js.map +1 -1
  155. package/dist/components/notification/style.d.ts +1 -1
  156. package/dist/components/number/number.js.map +1 -1
  157. package/dist/components/number/style.d.ts +1 -1
  158. package/dist/components/number-input/number-input.js +2 -1
  159. package/dist/components/number-input/number-input.js.map +1 -1
  160. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  161. package/dist/components/paginator/paginator.js.map +1 -1
  162. package/dist/components/palette/palette-alpha.js.map +1 -1
  163. package/dist/components/palette/palette-color-switch.js.map +1 -1
  164. package/dist/components/palette/palette-hue.js.map +1 -1
  165. package/dist/components/palette/palette-sv.js.map +1 -1
  166. package/dist/components/palette/palette.js.map +1 -1
  167. package/dist/components/password-input/password-input.js.map +1 -1
  168. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  169. package/dist/components/progress/progress.js.map +1 -1
  170. package/dist/components/progress/style.d.ts +1 -1
  171. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  172. package/dist/components/progress-nodes/style.d.ts +1 -1
  173. package/dist/components/radio/radio.js.map +1 -1
  174. package/dist/components/radio-group/radio-group.js.map +1 -1
  175. package/dist/components/rich-text-editor/rich-text-editor.js +2 -1
  176. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  177. package/dist/components/rich-text-editor/style.d.ts +1 -1
  178. package/dist/components/rich-text-editor/toolbar.js +3 -4
  179. package/dist/components/rich-text-editor/toolbar.js.map +1 -1
  180. package/dist/components/scroll/scroll-bar.js.map +1 -1
  181. package/dist/components/scroll/scroll.js.map +1 -1
  182. package/dist/components/scroll/style.d.ts +1 -1
  183. package/dist/components/select/select.js.map +1 -1
  184. package/dist/components/slider/slider-thumb.js.map +1 -1
  185. package/dist/components/slider/slider.js.map +1 -1
  186. package/dist/components/slider/style.d.ts +1 -1
  187. package/dist/components/steps/steps.js.map +1 -1
  188. package/dist/components/steps/style.d.ts +1 -1
  189. package/dist/components/steps/style2.css +14 -14
  190. package/dist/components/switch/style.d.ts +1 -1
  191. package/dist/components/switch/switch.js.map +1 -1
  192. package/dist/components/table/index.d.ts +2 -2
  193. package/dist/components/table/node/col.d.ts +1 -49
  194. package/dist/components/table/table-body.js.map +1 -1
  195. package/dist/components/table/table-cell.js.map +1 -1
  196. package/dist/components/table/table-foot.js.map +1 -1
  197. package/dist/components/table/table-row.js +2 -1
  198. package/dist/components/table/table-row.js.map +1 -1
  199. package/dist/components/table/table.js.map +1 -1
  200. package/dist/components/table/use-check.js +2 -1
  201. package/dist/components/table/use-check.js.map +1 -1
  202. package/dist/components/table/use-columns.d.ts +1 -1
  203. package/dist/components/table/use-rows.js +2 -1
  204. package/dist/components/table/use-rows.js.map +1 -1
  205. package/dist/components/table-editor/table-editor.js.map +1 -1
  206. package/dist/components/tabs/tabs-horizontal.js +2 -1
  207. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  208. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  209. package/dist/components/tabs/tabs.js.map +1 -1
  210. package/dist/components/tabs/use-tabs-bar.js +10 -25
  211. package/dist/components/tabs/use-tabs-bar.js.map +1 -1
  212. package/dist/components/tag/style.d.ts +1 -1
  213. package/dist/components/tag/tag.js.map +1 -1
  214. package/dist/components/text/style.d.ts +1 -1
  215. package/dist/components/text/text.js.map +1 -1
  216. package/dist/components/textarea/textarea.js.map +1 -1
  217. package/dist/components/theme/theme.js +3 -2
  218. package/dist/components/theme/theme.js.map +1 -1
  219. package/dist/components/tip/style.d.ts +1 -1
  220. package/dist/components/tip/tip.js.map +1 -1
  221. package/dist/components/tree/tree-node.js.map +1 -1
  222. package/dist/components/tree/tree.js.map +1 -1
  223. package/dist/components/tree-select/tree-select.js.map +1 -1
  224. package/dist/components/watermark/style.d.ts +1 -1
  225. package/dist/components/watermark/watermark.js.map +1 -1
  226. package/dist/index.d.ts +93 -97
  227. package/dist/index.js +2 -1
  228. package/dist/node_modules/.bun/@codemirror_autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js +2 -2
  229. package/dist/node_modules/.bun/@codemirror_autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js.map +1 -1
  230. package/dist/node_modules/.bun/@codemirror_commands@6.10.4/node_modules/@codemirror/commands/dist/index.js +3 -3
  231. package/dist/node_modules/.bun/@codemirror_commands@6.10.4/node_modules/@codemirror/commands/dist/index.js.map +1 -1
  232. package/dist/node_modules/.bun/@codemirror_lang-css@6.3.1/node_modules/@codemirror/lang-css/dist/index.js.map +1 -1
  233. package/dist/node_modules/.bun/@codemirror_lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js +5 -4
  234. package/dist/node_modules/.bun/@codemirror_lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js.map +1 -1
  235. package/dist/node_modules/.bun/@codemirror_lang-javascript@6.2.5/node_modules/@codemirror/lang-javascript/dist/index.js +2 -2
  236. package/dist/node_modules/.bun/{@codemirror_lang-markdown@6.5.1 → @codemirror_lang-markdown@6.5.2}/node_modules/@codemirror/lang-markdown/dist/index.js +4 -3
  237. package/dist/node_modules/.bun/@codemirror_lang-markdown@6.5.2/node_modules/@codemirror/lang-markdown/dist/index.js.map +1 -0
  238. package/dist/node_modules/.bun/@codemirror_lang-sql@6.10.0/node_modules/@codemirror/lang-sql/dist/index.js +2 -1
  239. package/dist/node_modules/.bun/@codemirror_lang-sql@6.10.0/node_modules/@codemirror/lang-sql/dist/index.js.map +1 -1
  240. package/dist/node_modules/.bun/@codemirror_language@6.12.4/node_modules/@codemirror/language/dist/index.js +2 -2
  241. package/dist/node_modules/.bun/@codemirror_language@6.12.4/node_modules/@codemirror/language/dist/index.js.map +1 -1
  242. package/dist/node_modules/.bun/@codemirror_lint@6.9.7/node_modules/@codemirror/lint/dist/index.js +4 -3
  243. package/dist/node_modules/.bun/@codemirror_lint@6.9.7/node_modules/@codemirror/lint/dist/index.js.map +1 -1
  244. package/dist/node_modules/.bun/@codemirror_search@6.7.1/node_modules/@codemirror/search/dist/index.js +2 -2
  245. package/dist/node_modules/.bun/@codemirror_search@6.7.1/node_modules/@codemirror/search/dist/index.js.map +1 -1
  246. package/dist/node_modules/.bun/{@codemirror_state@6.7.0 → @codemirror_state@6.7.1}/node_modules/@codemirror/state/dist/index.js +13 -3
  247. package/dist/node_modules/.bun/@codemirror_state@6.7.1/node_modules/@codemirror/state/dist/index.js.map +1 -0
  248. package/dist/node_modules/.bun/@codemirror_theme-one-dark@6.1.3/node_modules/@codemirror/theme-one-dark/dist/index.js +1 -1
  249. package/dist/node_modules/.bun/@codemirror_theme-one-dark@6.1.3/node_modules/@codemirror/theme-one-dark/dist/index.js.map +1 -1
  250. package/dist/node_modules/.bun/{@codemirror_view@6.43.4 → @codemirror_view@6.43.8}/node_modules/@codemirror/view/dist/index.js +86 -64
  251. package/dist/node_modules/.bun/@codemirror_view@6.43.8/node_modules/@codemirror/view/dist/index.js.map +1 -0
  252. package/dist/node_modules/.bun/@lezer_common@1.5.2/node_modules/@lezer/common/dist/index.js.map +1 -1
  253. package/dist/node_modules/.bun/@lezer_css@1.3.4/node_modules/@lezer/css/dist/index.js.map +1 -1
  254. package/dist/node_modules/.bun/@lezer_highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js.map +1 -1
  255. package/dist/node_modules/.bun/@lezer_html@1.3.13/node_modules/@lezer/html/dist/index.js.map +1 -1
  256. package/dist/node_modules/.bun/@lezer_javascript@1.5.4/node_modules/@lezer/javascript/dist/index.js.map +1 -1
  257. package/dist/node_modules/.bun/@lezer_lr@1.4.10/node_modules/@lezer/lr/dist/index.js.map +1 -1
  258. package/dist/node_modules/.bun/@lezer_markdown@1.7.2/node_modules/@lezer/markdown/dist/index.js +1 -1
  259. package/dist/node_modules/.bun/@lezer_markdown@1.7.2/node_modules/@lezer/markdown/dist/index.js.map +1 -1
  260. package/dist/node_modules/.bun/@marijn_find-cluster-break@1.0.2/node_modules/@marijn/find-cluster-break/src/index.js.map +1 -1
  261. package/dist/node_modules/.bun/style-mod@4.1.3/node_modules/style-mod/src/style-mod.js.map +1 -1
  262. package/dist/types/collapse.d.ts +23 -4
  263. package/dist/types/contextmenu.d.ts +10 -4
  264. package/dist/types/index.d.ts +2 -8
  265. package/package.json +34 -30
  266. package/src/components/batch-edit/__test__/batch-edit.test.ts +199 -0
  267. package/src/components/batch-edit/batch-edit-form.vue +8 -8
  268. package/src/components/batch-edit/batch-edit.vue +2 -1
  269. package/src/components/batch-edit/di.ts +2 -0
  270. package/src/components/batch-edit/use-edit-state.ts +19 -12
  271. package/src/components/collapse/__test__/collapse.test.ts +178 -1
  272. package/src/components/collapse/collapse-item.vue +40 -12
  273. package/src/components/collapse/style.scss +26 -62
  274. package/src/components/contextmenu/__test__/contextmenu.test.ts +165 -0
  275. package/src/components/contextmenu/contextmenu-item.vue +7 -4
  276. package/src/components/contextmenu/contextmenu-panel.vue +7 -4
  277. package/src/components/contextmenu/index.ts +1 -0
  278. package/src/components/contextmenu/style.scss +16 -0
  279. package/src/components/file-viewer/helper.ts +0 -53
  280. package/src/components/file-viewer/previewers/sheet-previewer.vue +91 -46
  281. package/src/components/message-confirm/style.scss +19 -0
  282. package/src/components/notification/style.scss +16 -4
  283. package/src/components/radio-group/style.scss +1 -1
  284. package/src/components/slider/style.scss +1 -1
  285. package/src/components/steps/style.scss +2 -2
  286. package/src/components/tabs/use-tabs-bar.ts +15 -20
  287. package/src/types/collapse.ts +25 -3
  288. package/src/types/contextmenu.ts +10 -4
  289. package/dist/components/action/action-group.vue.d.ts +0 -25
  290. package/dist/components/action/action.vue.d.ts +0 -33
  291. package/dist/components/action/index.d.ts +0 -3
  292. package/dist/components/auto-complete/auto-complete.vue.d.ts +0 -41
  293. package/dist/components/auto-complete/index.d.ts +0 -2
  294. package/dist/components/badge/badge.vue.d.ts +0 -20
  295. package/dist/components/badge/index.d.ts +0 -2
  296. package/dist/components/batch-edit/batch-edit.vue.d.ts +0 -45
  297. package/dist/components/breadcrumb/breadcrumb.vue.d.ts +0 -24
  298. package/dist/components/breadcrumb/index.d.ts +0 -2
  299. package/dist/components/button/button-group.vue.d.ts +0 -19
  300. package/dist/components/button/button.vue.d.ts +0 -27
  301. package/dist/components/button/index.d.ts +0 -3
  302. package/dist/components/calendar/calendar.vue.d.ts +0 -17
  303. package/dist/components/calendar/index.d.ts +0 -2
  304. package/dist/components/card/card-action.vue.d.ts +0 -18
  305. package/dist/components/card/card-content.vue.d.ts +0 -18
  306. package/dist/components/card/card-cover.vue.d.ts +0 -8
  307. package/dist/components/card/card-header.vue.d.ts +0 -16
  308. package/dist/components/card/card.vue.d.ts +0 -18
  309. package/dist/components/card/index.d.ts +0 -6
  310. package/dist/components/cascade/cascade.vue.d.ts +0 -31
  311. package/dist/components/cascade/index.d.ts +0 -2
  312. package/dist/components/check-tag/check-tag.vue.d.ts +0 -22
  313. package/dist/components/check-tag/index.d.ts +0 -2
  314. package/dist/components/checkbox/checkbox-button.vue.d.ts +0 -35
  315. package/dist/components/checkbox/checkbox.vue.d.ts +0 -34
  316. package/dist/components/checkbox/index.d.ts +0 -3
  317. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +0 -24
  318. package/dist/components/checkbox-group/index.d.ts +0 -2
  319. package/dist/components/code-editor/code-editor.vue.d.ts +0 -30
  320. package/dist/components/code-editor/index.d.ts +0 -2
  321. package/dist/components/collapse/collapse-item.vue.d.ts +0 -24
  322. package/dist/components/collapse/collapse.vue.d.ts +0 -27
  323. package/dist/components/collapse/index.d.ts +0 -3
  324. package/dist/components/condition-editor/condition-editor.vue.d.ts +0 -15
  325. package/dist/components/contextmenu/contextmenu.vue.d.ts +0 -14
  326. package/dist/components/date-panel/date-panel.vue.d.ts +0 -17
  327. package/dist/components/date-panel/index.d.ts +0 -2
  328. package/dist/components/date-picker/date-picker.vue.d.ts +0 -18
  329. package/dist/components/date-picker/index.d.ts +0 -2
  330. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +0 -18
  331. package/dist/components/date-range-picker/index.d.ts +0 -2
  332. package/dist/components/dialog/dialog.vue.d.ts +0 -43
  333. package/dist/components/dialog/index.d.ts +0 -2
  334. package/dist/components/drawer/drawer.vue.d.ts +0 -36
  335. package/dist/components/drawer/index.d.ts +0 -2
  336. package/dist/components/dropdown/dropdown.vue.d.ts +0 -30
  337. package/dist/components/dropdown/index.d.ts +0 -2
  338. package/dist/components/dual-nav/dual-nav.vue.d.ts +0 -15
  339. package/dist/components/dual-nav/index.d.ts +0 -2
  340. package/dist/components/empty/empty.vue.d.ts +0 -11
  341. package/dist/components/empty/index.d.ts +0 -2
  342. package/dist/components/expression-editor/expression-editor.vue.d.ts +0 -16
  343. package/dist/components/expression-editor/index.d.ts +0 -2
  344. package/dist/components/file-picker/file-picker.vue.d.ts +0 -27
  345. package/dist/components/file-picker/index.d.ts +0 -2
  346. package/dist/components/file-viewer/file-viewer.vue.d.ts +0 -40
  347. package/dist/components/file-viewer/index.d.ts +0 -2
  348. package/dist/components/file-viewer/sheet-parser.js +0 -46
  349. package/dist/components/file-viewer/sheet-parser.js.map +0 -1
  350. package/dist/components/float-button/float-button.vue.d.ts +0 -12
  351. package/dist/components/float-button/index.d.ts +0 -2
  352. package/dist/components/form/form.vue.d.ts +0 -23
  353. package/dist/components/form/index.d.ts +0 -2
  354. package/dist/components/form-item/form-item.vue.d.ts +0 -21
  355. package/dist/components/form-item/index.d.ts +0 -2
  356. package/dist/components/gantt-chart/gantt-chart.vue.d.ts +0 -8
  357. package/dist/components/gantt-chart/index.d.ts +0 -2
  358. package/dist/components/grid/grid-item.vue.d.ts +0 -20
  359. package/dist/components/grid/grid.vue.d.ts +0 -27
  360. package/dist/components/grid/index.d.ts +0 -3
  361. package/dist/components/grid-input/grid-input.vue.d.ts +0 -19
  362. package/dist/components/grid-input/index.d.ts +0 -2
  363. package/dist/components/group-input/group-input.vue.d.ts +0 -26
  364. package/dist/components/group-input/index.d.ts +0 -2
  365. package/dist/components/group-nav/group-nav.vue.d.ts +0 -12
  366. package/dist/components/group-nav/index.d.ts +0 -2
  367. package/dist/components/icon/icon.vue.d.ts +0 -18
  368. package/dist/components/icon/index.d.ts +0 -2
  369. package/dist/components/input/index.d.ts +0 -2
  370. package/dist/components/input/input.vue.d.ts +0 -50
  371. package/dist/components/kbd/kbd.vue.d.ts +0 -16
  372. package/dist/components/layout/index.d.ts +0 -2
  373. package/dist/components/layout/layout.vue.d.ts +0 -20
  374. package/dist/components/list/index.d.ts +0 -3
  375. package/dist/components/list/list-item.vue.d.ts +0 -16
  376. package/dist/components/list/list.vue.d.ts +0 -21
  377. package/dist/components/loading/loading.vue.d.ts +0 -11
  378. package/dist/components/message/message.vue.d.ts +0 -16
  379. package/dist/components/message-confirm/message-confirm.vue.d.ts +0 -19
  380. package/dist/components/multi-select/index.d.ts +0 -2
  381. package/dist/components/multi-select/multi-select.vue.d.ts +0 -48
  382. package/dist/components/multi-tree-select/index.d.ts +0 -2
  383. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +0 -44
  384. package/dist/components/nav/index.d.ts +0 -4
  385. package/dist/components/nav/nav-item.vue.d.ts +0 -12
  386. package/dist/components/nav/nav-sub.vue.d.ts +0 -13
  387. package/dist/components/nav/nav.vue.d.ts +0 -19
  388. package/dist/components/notification/notification.vue.d.ts +0 -18
  389. package/dist/components/number/index.d.ts +0 -2
  390. package/dist/components/number/number.vue.d.ts +0 -11
  391. package/dist/components/number-input/index.d.ts +0 -2
  392. package/dist/components/number-input/number-input.vue.d.ts +0 -39
  393. package/dist/components/number-range-input/index.d.ts +0 -2
  394. package/dist/components/number-range-input/number-range-input.vue.d.ts +0 -36
  395. package/dist/components/paginator/index.d.ts +0 -2
  396. package/dist/components/paginator/paginator.vue.d.ts +0 -29
  397. package/dist/components/palette/index.d.ts +0 -2
  398. package/dist/components/palette/palette.vue.d.ts +0 -20
  399. package/dist/components/password-input/index.d.ts +0 -2
  400. package/dist/components/password-input/password-input.vue.d.ts +0 -30
  401. package/dist/components/pop-confirm/index.d.ts +0 -2
  402. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +0 -33
  403. package/dist/components/progress/index.d.ts +0 -2
  404. package/dist/components/progress/progress.vue.d.ts +0 -25
  405. package/dist/components/progress-nodes/index.d.ts +0 -2
  406. package/dist/components/progress-nodes/progress-nodes.vue.d.ts +0 -36
  407. package/dist/components/radio/index.d.ts +0 -2
  408. package/dist/components/radio/radio.vue.d.ts +0 -31
  409. package/dist/components/radio-group/index.d.ts +0 -2
  410. package/dist/components/radio-group/radio-group.vue.d.ts +0 -26
  411. package/dist/components/rich-text-editor/index.d.ts +0 -2
  412. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +0 -23
  413. package/dist/components/scroll/index.d.ts +0 -2
  414. package/dist/components/scroll/scroll.vue.d.ts +0 -28
  415. package/dist/components/select/index.d.ts +0 -2
  416. package/dist/components/select/select.vue.d.ts +0 -38
  417. package/dist/components/slider/index.d.ts +0 -2
  418. package/dist/components/slider/slider.vue.d.ts +0 -21
  419. package/dist/components/steps/index.d.ts +0 -2
  420. package/dist/components/steps/steps.vue.d.ts +0 -29
  421. package/dist/components/switch/index.d.ts +0 -2
  422. package/dist/components/switch/switch.vue.d.ts +0 -24
  423. package/dist/components/table/node/row.d.ts +0 -49
  424. package/dist/components/table/table.vue.d.ts +0 -54
  425. package/dist/components/table-editor/index.d.ts +0 -2
  426. package/dist/components/table-editor/table-editor.vue.d.ts +0 -12
  427. package/dist/components/tabs/index.d.ts +0 -4
  428. package/dist/components/tabs/tabs-horizontal.vue.d.ts +0 -40
  429. package/dist/components/tabs/tabs-vertical.vue.d.ts +0 -39
  430. package/dist/components/tabs/tabs.vue.d.ts +0 -36
  431. package/dist/components/tag/index.d.ts +0 -2
  432. package/dist/components/tag/tag.vue.d.ts +0 -22
  433. package/dist/components/text/index.d.ts +0 -2
  434. package/dist/components/text/text.vue.d.ts +0 -10
  435. package/dist/components/textarea/index.d.ts +0 -2
  436. package/dist/components/textarea/textarea.vue.d.ts +0 -34
  437. package/dist/components/theme/index.d.ts +0 -2
  438. package/dist/components/theme/theme.vue.d.ts +0 -8
  439. package/dist/components/tip/index.d.ts +0 -2
  440. package/dist/components/tip/tip.vue.d.ts +0 -31
  441. package/dist/components/tree/di.d.ts +0 -12
  442. package/dist/components/tree/index.d.ts +0 -2
  443. package/dist/components/tree/tree.vue.d.ts +0 -40
  444. package/dist/components/tree-select/index.d.ts +0 -2
  445. package/dist/components/tree-select/tree-select.vue.d.ts +0 -48
  446. package/dist/components/watermark/index.d.ts +0 -2
  447. package/dist/components/watermark/watermark.vue.d.ts +0 -21
  448. package/dist/node_modules/.bun/@codemirror_lang-markdown@6.5.1/node_modules/@codemirror/lang-markdown/dist/index.js.map +0 -1
  449. package/dist/node_modules/.bun/@codemirror_state@6.7.0/node_modules/@codemirror/state/dist/index.js.map +0 -1
  450. package/dist/node_modules/.bun/@codemirror_view@6.43.4/node_modules/@codemirror/view/dist/index.js.map +0 -1
  451. package/src/components/file-viewer/sheet-parser.ts +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"action-group.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/action/action-group.vue"],"sourcesContent":["<template>\n <component v-for=\"node of getSlotsNodes()\" :key=\"node.key\" :is=\"node\" />\n</template>\n\n<script lang=\"tsx\" setup>\nimport { MoreFilled } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes } from '@veltra/utils'\nimport { cloneVNode, provide, shallowRef, type VNode } from 'vue'\n\nimport type { _ActionGroupExposed, ActionGroupProps } from '../../types'\nimport { UButton } from '../button'\nimport { UTip } from '../tip'\nimport { ActionDIKey } from './di'\n\ndefineOptions({\n name: 'UActionGroup',\n inheritAttrs: false\n})\n\nconst props = withDefaults(defineProps<ActionGroupProps>(), {\n max: 3,\n loading: false,\n circle: false,\n size: 'small',\n text: true,\n type: 'primary'\n})\n\nconst cls = bem('action-group')\n\nconst slots = defineSlots<{\n default?: () => VNode[]\n}>()\n\nfunction isInDropdownNode(node: VNode): boolean {\n const p = node.props as Record<string, unknown> | null\n if (!p) return false\n const v = p.inDropdown ?? p['in-dropdown']\n return v === true || v === '' || v === 'true'\n}\n\nconst tipVisible = shallowRef(false)\n\nfunction closeTip() {\n tipVisible.value = false\n}\n\nfunction withSeparators(nodes: VNode[]) {\n return nodes.flatMap((node, index) => {\n if (index === 0) return [node]\n\n return [\n <i\n key={`separator-${index}`}\n class={cls.e('separator')}\n aria-hidden=\"true\"\n />,\n node\n ]\n })\n}\n\nfunction getSlotsNodes() {\n const nodes = slots.default?.()\n if (!nodes) return []\n\n const extracted = extractNormalVNodes(nodes).filter(\n (node) => (node.type as { name?: string } | null | undefined)?.name === 'UAction'\n )\n\n const visible: VNode[] = []\n const fixedHidden: VNode[] = []\n\n extracted.forEach((node) => {\n if (isInDropdownNode(node)) {\n fixedHidden.push(node)\n } else {\n visible.push(node)\n }\n })\n\n const willOverflow = visible.length > props.max\n const overflow = willOverflow ? visible.splice(props.max - 1) : []\n\n const hiddenNodes = [...overflow, ...fixedHidden]\n\n const dropdownNodes = hiddenNodes.map((node) =>\n cloneVNode(node, { inDropdown: true, circle: false })\n )\n\n const dropdown = hiddenNodes.length ? (\n <UTip\n direction=\"bottom\"\n alignment=\"end\"\n trigger=\"click\"\n class={cls.e('dropdown')}\n visible={tipVisible.value}\n onUpdate:visible={(val: boolean) => {\n tipVisible.value = val\n }}\n >\n {{\n content: () => dropdownNodes,\n default: () => (\n <UButton\n class={cls.e('more')}\n type={props.type}\n size={props.size}\n text={props.text}\n circle\n icon={MoreFilled}\n />\n )\n }}\n </UTip>\n ) : null\n\n return withSeparators(dropdown ? [...visible, dropdown] : visible)\n}\n\nprovide(ActionDIKey, {\n groupProps: props,\n closeTip\n})\n\ndefineExpose<_ActionGroupExposed>({\n closeTip\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBA,MAAM,QAAQ;EASd,MAAM,MAAM,IAAI,cAAc;EAE9B,MAAM,QAAQ,SAAA;EAId,SAAS,iBAAiB,MAAsB;GAC9C,MAAM,IAAI,KAAK;GACf,IAAI,CAAC,GAAG,OAAO;GACf,MAAM,IAAI,EAAE,cAAc,EAAE;GAC5B,OAAO,MAAM,QAAQ,MAAM,MAAM,MAAM;EACzC;EAEA,MAAM,aAAa,WAAW,KAAK;EAEnC,SAAS,WAAW;GAClB,WAAW,QAAQ;EACrB;EAEA,SAAS,eAAe,OAAgB;GACtC,OAAO,MAAM,SAAS,MAAM,UAAU;IACpC,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI;IAE7B,OAAO,CAAA,YAAA,KAAA;KAAA,OAEE,aAAa;KAAO,SAClB,IAAI,EAAE,WAAW;KAAC,eAAA;IAAA,GAAA,IAAA,GAG3B,IAAG;GAEP,CAAC;EACH;EAEA,SAAS,gBAAgB;GACvB,MAAM,QAAQ,MAAM,UAAU;GAC9B,IAAI,CAAC,OAAO,OAAO,CAAA;GAEnB,MAAM,YAAY,oBAAoB,KAAK,CAAC,CAAC,QAC1C,SAAU,KAAK,MAA+C,SAAS,SAC1E;GAEA,MAAM,UAAmB,CAAA;GACzB,MAAM,cAAuB,CAAA;GAE7B,UAAU,SAAS,SAAS;IAC1B,IAAI,iBAAiB,IAAI,GACvB,YAAY,KAAK,IAAI;SAErB,QAAQ,KAAK,IAAI;GAErB,CAAC;GAKD,MAAM,cAAc,CAAC,GAHA,QAAQ,SAAS,MAAM,MACZ,QAAQ,OAAO,MAAM,MAAM,CAAC,IAAI,CAAA,GAE9B,GAAG,WAAW;GAEhD,MAAM,gBAAgB,YAAY,KAAK,SACrC,WAAW,MAAM;IAAE,YAAY;IAAM,QAAQ;GAAM,CAAC,CACtD;GAEA,MAAM,WAAW,YAAY,SAAM,YAAA,WAAA;IAAA,aAAA;IAAA,aAAA;IAAA,WAAA;IAAA,SAKxB,IAAI,EAAE,UAAU;IAAC,WACf,WAAW;IAAK,qBACN,QAAiB;KAClC,WAAW,QAAQ;IACrB;GAAC,GAAA;IAGC,eAAe;IACf,eAAS,YAAA,aAAA;KAAA,SAEE,IAAI,EAAE,MAAM;KAAC,QACd,MAAM;KAAI,QACV,MAAM;KAAI,QACV,MAAM;KAAI,UAAA;KAAA,QAEV;IAAU,GAAA,IAAA;GAEpB,CAAA,IAGF;GAEJ,OAAO,eAAe,WAAW,CAAC,GAAG,SAAS,QAAQ,IAAI,OAAO;EACnE;EAEA,QAAQ,aAAa;GACnB,YAAY;GACZ;EACF,CAAC;EAED,SAAkC,EAChC,SACF,CAAC;;2BA9HC,mBAAwE,UAAA,MAAA,WAA9C,cAAa,IAArB,SAAI;wBAAtB,YAAwE,wBAAR,IAAI,GAAA,EAAxB,KAAK,KAAK,IAAA,CAAA"}
1
+ {"version":3,"file":"action-group.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/action/action-group.vue"],"sourcesContent":["<template>\n <component v-for=\"node of getSlotsNodes()\" :key=\"node.key\" :is=\"node\" />\n</template>\n\n<script lang=\"tsx\" setup>\nimport { MoreFilled } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes } from '@veltra/utils'\nimport { cloneVNode, provide, shallowRef, type VNode } from 'vue'\n\nimport type { _ActionGroupExposed, ActionGroupProps } from '../../types'\nimport { UButton } from '../button'\nimport { UTip } from '../tip'\nimport { ActionDIKey } from './di'\n\ndefineOptions({\n name: 'UActionGroup',\n inheritAttrs: false\n})\n\nconst props = withDefaults(defineProps<ActionGroupProps>(), {\n max: 3,\n loading: false,\n circle: false,\n size: 'small',\n text: true,\n type: 'primary'\n})\n\nconst cls = bem('action-group')\n\nconst slots = defineSlots<{\n default?: () => VNode[]\n}>()\n\nfunction isInDropdownNode(node: VNode): boolean {\n const p = node.props as Record<string, unknown> | null\n if (!p) return false\n const v = p.inDropdown ?? p['in-dropdown']\n return v === true || v === '' || v === 'true'\n}\n\nconst tipVisible = shallowRef(false)\n\nfunction closeTip() {\n tipVisible.value = false\n}\n\nfunction withSeparators(nodes: VNode[]) {\n return nodes.flatMap((node, index) => {\n if (index === 0) return [node]\n\n return [\n <i\n key={`separator-${index}`}\n class={cls.e('separator')}\n aria-hidden=\"true\"\n />,\n node\n ]\n })\n}\n\nfunction getSlotsNodes() {\n const nodes = slots.default?.()\n if (!nodes) return []\n\n const extracted = extractNormalVNodes(nodes).filter(\n (node) => (node.type as { name?: string } | null | undefined)?.name === 'UAction'\n )\n\n const visible: VNode[] = []\n const fixedHidden: VNode[] = []\n\n extracted.forEach((node) => {\n if (isInDropdownNode(node)) {\n fixedHidden.push(node)\n } else {\n visible.push(node)\n }\n })\n\n const willOverflow = visible.length > props.max\n const overflow = willOverflow ? visible.splice(props.max - 1) : []\n\n const hiddenNodes = [...overflow, ...fixedHidden]\n\n const dropdownNodes = hiddenNodes.map((node) =>\n cloneVNode(node, { inDropdown: true, circle: false })\n )\n\n const dropdown = hiddenNodes.length ? (\n <UTip\n direction=\"bottom\"\n alignment=\"end\"\n trigger=\"click\"\n class={cls.e('dropdown')}\n visible={tipVisible.value}\n onUpdate:visible={(val: boolean) => {\n tipVisible.value = val\n }}\n >\n {{\n content: () => dropdownNodes,\n default: () => (\n <UButton\n class={cls.e('more')}\n type={props.type}\n size={props.size}\n text={props.text}\n circle\n icon={MoreFilled}\n />\n )\n }}\n </UTip>\n ) : null\n\n return withSeparators(dropdown ? [...visible, dropdown] : visible)\n}\n\nprovide(ActionDIKey, {\n groupProps: props,\n closeTip\n})\n\ndefineExpose<_ActionGroupExposed>({\n closeTip\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBA,MAAM,QAAQ;EASd,MAAM,MAAM,IAAI,cAAc;EAE9B,MAAM,QAAQ,SAAA;EAId,SAAS,iBAAiB,MAAsB;GAC9C,MAAM,IAAI,KAAK;GACf,IAAI,CAAC,GAAG,OAAO;GACf,MAAM,IAAI,EAAE,cAAc,EAAE;GAC5B,OAAO,MAAM,QAAQ,MAAM,MAAM,MAAM;EACzC;EAEA,MAAM,aAAa,WAAW,KAAK;EAEnC,SAAS,WAAW;GAClB,WAAW,QAAQ;EACrB;EAEA,SAAS,eAAe,OAAgB;GACtC,OAAO,MAAM,SAAS,MAAM,UAAU;IACpC,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI;IAE7B,OAAO,CAAA,YAAA,KAAA;KAAA,OAEE,aAAa;KAAO,SAClB,IAAI,EAAE,WAAW;KAAC,eAAA;IAAA,GAAA,IAAA,GAG3B,IAAG;GAEP,CAAC;EACH;EAEA,SAAS,gBAAgB;GACvB,MAAM,QAAQ,MAAM,UAAU;GAC9B,IAAI,CAAC,OAAO,OAAO,CAAA;GAEnB,MAAM,YAAY,oBAAoB,KAAK,CAAC,CAAC,QAC1C,SAAU,KAAK,MAA+C,SAAS,SAC1E;GAEA,MAAM,UAAmB,CAAA;GACzB,MAAM,cAAuB,CAAA;GAE7B,UAAU,SAAS,SAAS;IAC1B,IAAI,iBAAiB,IAAI,GACvB,YAAY,KAAK,IAAI;SAErB,QAAQ,KAAK,IAAI;GAErB,CAAC;GAKD,MAAM,cAAc,CAAC,GAHA,QAAQ,SAAS,MAAM,MACZ,QAAQ,OAAO,MAAM,MAAM,CAAC,IAAI,CAAA,GAE9B,GAAG,WAAW;GAEhD,MAAM,gBAAgB,YAAY,KAAK,SACrC,WAAW,MAAM;IAAE,YAAY;IAAM,QAAQ;GAAM,CAAC,CACtD;GAEA,MAAM,WAAW,YAAY,SAAM,YAAA,WAAA;IAAA,aAAA;IAAA,aAAA;IAAA,WAAA;IAAA,SAKxB,IAAI,EAAE,UAAU;IAAC,WACf,WAAW;IAAK,qBACN,QAAiB;KAClC,WAAW,QAAQ;IACrB;GAAC,GAAA;IAGC,eAAe;IACf,eAAS,YAAA,aAAA;KAAA,SAEE,IAAI,EAAE,MAAM;KAAC,QACd,MAAM;KAAI,QACV,MAAM;KAAI,QACV,MAAM;KAAI,UAAA;KAAA,QAEV;IAAU,GAAA,IAAA;GAEpB,CAAA,IAGF;GAEJ,OAAO,eAAe,WAAW,CAAC,GAAG,SAAS,QAAQ,IAAI,OAAO;EACnE;EAEA,QAAQ,aAAa;GACnB,YAAY;GACZ;EACF,CAAC;EAED,SAAkC,EAChC,SACF,CAAC;;GA9HC,OAAA,UAAA,IAAA,GAAA,mBAAwE,UAAA,MAAA,WAA9C,cAAa,IAArB,SAAI;IAAtB,OAAA,UAAA,GAAA,YAAwE,wBAAR,IAAI,GAAA,EAAxB,KAAK,KAAK,IAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","names":["$attrs"],"sources":["../../../src/components/action/action.vue"],"sourcesContent":["<template>\n <u-pop-confirm\n v-if=\"needConfirm\"\n title=\"确认执行此操作吗?\"\n style=\"display: inline-block\"\n direction=\"left\"\n @confirm=\"handleConfirm\"\n >\n <template #reference>\n <u-button\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n >\n <slot />\n </u-button>\n </template>\n </u-pop-confirm>\n\n <u-button\n v-else\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n @click=\"handleRun\"\n >\n <slot />\n </u-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { ActionEmits, ActionProps } from '../../types'\nimport { UButton } from '../button'\nimport { UPopConfirm } from '../pop-confirm'\nimport { ActionDIKey } from './di'\n\ndefineOptions({ name: 'UAction', inheritAttrs: false })\n\n// 这里所有可继承自 `<u-action-group>` 的默认值都强制为 `undefined`,\n// 否则 Vue 对 Boolean 类型 prop 的默认值(false)会让 `??` 兜底始终失效\nconst props = withDefaults(defineProps<ActionProps>(), {\n inDropdown: false,\n loading: undefined,\n circle: undefined,\n text: undefined,\n size: undefined,\n type: undefined\n})\n\nconst ctx = inject(ActionDIKey, undefined)\n\nconst size = computed(() => props.size ?? ctx?.groupProps.size ?? 'small')\nconst text = computed(() => props.text ?? ctx?.groupProps.text ?? true)\nconst type = computed(() => props.type ?? ctx?.groupProps.type ?? 'primary')\n\nconst loading = computed(() => {\n return props.loading ?? ctx?.groupProps.loading\n})\n\n// 下拉菜单中的操作项强制非圆形以呈现完整文本,否则跟随用户/分组配置\nconst circle = computed(() => {\n if (props.inDropdown) return false\n return props.circle ?? ctx?.groupProps.circle\n})\n\nconst buttonProps = computed(() => {\n return {\n ...o(props as Record<string, any>).omit([\n 'needConfirm',\n 'loading',\n 'circle',\n 'propagate',\n 'size',\n 'text',\n 'type',\n 'inDropdown'\n ]),\n size: size.value,\n text: text.value,\n type: type.value\n }\n})\n\nconst emit = defineEmits<ActionEmits>()\n\nconst cls = bem('action')\n\nfunction handleConfirm() {\n handleRun()\n}\n\nfunction handleRun() {\n emit('run')\n\n if (props.inDropdown) {\n ctx?.closeTip()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,MAAM,QAAQ;EASd,MAAM,MAAM,OAAO,aAAa,KAAA,CAAS;EAEzC,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,OAAO;EACzE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,IAAI;EACtE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,SAAS;EAE3E,MAAM,UAAU,eAAe;GAC7B,OAAO,MAAM,WAAW,KAAK,WAAW;EAC1C,CAAC;EAGD,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,OAAO;GAC7B,OAAO,MAAM,UAAU,KAAK,WAAW;EACzC,CAAC;EAED,MAAM,cAAc,eAAe;GACjC,OAAO;IACL,GAAG,EAAE,KAA4B,CAAC,CAAC,KAAK;KACtC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF,CAAC;IACD,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;GACb;EACF,CAAC;EAED,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,QAAQ;EAExB,SAAS,gBAAgB;GACvB,UAAU;EACZ;EAEA,SAAS,YAAY;GACnB,KAAK,KAAK;GAEV,IAAI,MAAM,YACR,KAAK,SAAS;EAElB;;UAvGU,QAAA,eAAA,UAAA,GADR,YAkBgB,MAAA,WAAA,GAAA;;IAhBd,OAAM;IACN,OAAA,EAAA,WAAA,eAAA;IACA,WAAU;IACT,WAAS;;IAEC,WAAS,cASP,CARX,YAQW,MAAA,WAAA,GARX,WAQW;KAPR,OAAO,MAAA,GAAA,CAAG,CAAC;KACX,SAAA,QAAA;KACA,QAAA,OAAA;KACA,WAAW;;QACC,YAAA;KAAW,GAAKA,KAAAA;IAAM,CAAA,GAAA;4BAE3B,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA;;;;;;;;uBAKd,YAUW,MAAA,WAAA,GAVX,WAUW;;IARR,OAAO,MAAA,GAAA,CAAG,CAAC;IACX,SAAA,QAAA;IACA,QAAA,OAAA;IACA,WAAW;;OACC,YAAA;IAAW,GAAKA,KAAAA;GAAM,GAAA,EAClC,SAAO,UAAS,CAAA,GAAA;2BAET,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"action.js","names":["$attrs"],"sources":["../../../src/components/action/action.vue"],"sourcesContent":["<template>\n <u-pop-confirm\n v-if=\"needConfirm\"\n title=\"确认执行此操作吗?\"\n style=\"display: inline-block\"\n direction=\"left\"\n @confirm=\"handleConfirm\"\n >\n <template #reference>\n <u-button\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n >\n <slot />\n </u-button>\n </template>\n </u-pop-confirm>\n\n <u-button\n v-else\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n @click=\"handleRun\"\n >\n <slot />\n </u-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { ActionEmits, ActionProps } from '../../types'\nimport { UButton } from '../button'\nimport { UPopConfirm } from '../pop-confirm'\nimport { ActionDIKey } from './di'\n\ndefineOptions({ name: 'UAction', inheritAttrs: false })\n\n// 这里所有可继承自 `<u-action-group>` 的默认值都强制为 `undefined`,\n// 否则 Vue 对 Boolean 类型 prop 的默认值(false)会让 `??` 兜底始终失效\nconst props = withDefaults(defineProps<ActionProps>(), {\n inDropdown: false,\n loading: undefined,\n circle: undefined,\n text: undefined,\n size: undefined,\n type: undefined\n})\n\nconst ctx = inject(ActionDIKey, undefined)\n\nconst size = computed(() => props.size ?? ctx?.groupProps.size ?? 'small')\nconst text = computed(() => props.text ?? ctx?.groupProps.text ?? true)\nconst type = computed(() => props.type ?? ctx?.groupProps.type ?? 'primary')\n\nconst loading = computed(() => {\n return props.loading ?? ctx?.groupProps.loading\n})\n\n// 下拉菜单中的操作项强制非圆形以呈现完整文本,否则跟随用户/分组配置\nconst circle = computed(() => {\n if (props.inDropdown) return false\n return props.circle ?? ctx?.groupProps.circle\n})\n\nconst buttonProps = computed(() => {\n return {\n ...o(props as Record<string, any>).omit([\n 'needConfirm',\n 'loading',\n 'circle',\n 'propagate',\n 'size',\n 'text',\n 'type',\n 'inDropdown'\n ]),\n size: size.value,\n text: text.value,\n type: type.value\n }\n})\n\nconst emit = defineEmits<ActionEmits>()\n\nconst cls = bem('action')\n\nfunction handleConfirm() {\n handleRun()\n}\n\nfunction handleRun() {\n emit('run')\n\n if (props.inDropdown) {\n ctx?.closeTip()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,MAAM,QAAQ;EASd,MAAM,MAAM,OAAO,aAAa,KAAA,CAAS;EAEzC,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,OAAO;EACzE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,IAAI;EACtE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,SAAS;EAE3E,MAAM,UAAU,eAAe;GAC7B,OAAO,MAAM,WAAW,KAAK,WAAW;EAC1C,CAAC;EAGD,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,OAAO;GAC7B,OAAO,MAAM,UAAU,KAAK,WAAW;EACzC,CAAC;EAED,MAAM,cAAc,eAAe;GACjC,OAAO;IACL,GAAG,EAAE,KAA4B,CAAC,CAAC,KAAK;KACtC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF,CAAC;IACD,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;GACb;EACF,CAAC;EAED,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,QAAQ;EAExB,SAAS,gBAAgB;GACvB,UAAU;EACZ;EAEA,SAAS,YAAY;GACnB,KAAK,KAAK;GAEV,IAAI,MAAM,YACR,KAAK,SAAS;EAElB;;GAvGU,OAAA,QAAA,eAAA,UAAA,GADR,YAkBgB,MAAA,WAAA,GAAA;;IAhBd,OAAM;IACN,OAAA,EAAA,WAAA,eAAA;IACA,WAAU;IACT,WAAS;;IAEC,WAAS,cASP,CARX,YAQW,MAAA,WAAA,GARX,WAQW;KAPR,OAAO,MAAA,GAAA,CAAG,CAAC;KACX,SAAA,QAAA;KACA,QAAA,OAAA;KACA,WAAW;;KACC,GAAA,YAAA;KAAW,GAAKA,KAAAA;IAAM,CAAA,GAAA;KAE3B,SAAA,cAAA,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA;;;;;;;;GAKd,CAAA,MAAA,UAAA,GAAA,YAUW,MAAA,WAAA,GAVX,WAUW;;IARR,OAAO,MAAA,GAAA,CAAG,CAAC;IACX,SAAA,QAAA;IACA,QAAA,OAAA;IACA,WAAW;;IACC,GAAA,YAAA;IAAW,GAAKA,KAAAA;GAAM,GAAA,EAClC,SAAO,UAAS,CAAA,GAAA;IAET,SAAA,cAAA,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-complete.js","names":["$attrs"],"sources":["../../../src/components/auto-complete/auto-complete.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n v-bind=\"$attrs\"\n trigger=\"click\"\n :class=\"[cls.b, cls.m(size), bem.is('disabled', disabled)]\"\n ref=\"dropdownRef\"\n v-model:visible=\"dropdownVisible\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n :disabled=\"disabled\"\n >\n <!-- 触发 -->\n <template #trigger>\n <!-- 单选 -->\n <u-input\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n v-model=\"model\"\n @keydown=\"handleInputKeydown\"\n @native:input=\"handleNativeInput\"\n >\n <template #suffix v-if=\"slots.suffix\">\n <slot name=\"suffix\" />\n </template>\n\n <template #prefix v-if=\"slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n </u-input>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <u-scroll tag=\"ul\" :class=\"cls.e('options')\" ref=\"scrollRef\">\n <li\n v-if=\"displayCachedSuggestion\"\n :class=\"[optionClass, bem.is('active', isCachedActive)]\"\n @click=\"handleSelectCachedOption(displayCachedSuggestion)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"displayCachedSuggestion\"\n :key=\"displayCachedSuggestion\"\n >\n <slot v-bind=\"{ option: displayCachedSuggestion, index: -1 }\">\n {{ displayCachedSuggestion }}\n </slot>\n </li>\n\n <li\n v-for=\"(option, index) of suggestions\"\n :class=\"[\n optionClass,\n bem.is('selected', option === model),\n bem.is('active', isActiveOption(index))\n ]\"\n @click=\"handleSelect(option)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"option\"\n :key=\"option\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ option }}\n </slot>\n </li>\n </u-scroll>\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ model || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { bem, FORM_EMPTY_CONTENT, scrollIntoContainerView } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { AutoCompleteEmits, AutoCompleteProps, _AutoCompleteExposed } from '../../types'\nimport type { DropdownExposed, ScrollExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useKeyboard } from './use-keyboard'\nimport { useSuggestions } from './use-suggestions'\n\ndefineOptions({ name: 'UAutoComplete', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<AutoCompleteProps>(), {\n placeholder: '请输入',\n clearable: true,\n allowCustom: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<AutoCompleteEmits>()\n\nconst slots = defineSlots<{\n default?: (props: { option: string; index: number }) => any\n suffix?: () => any\n prefix?: () => any\n}>()\n\n// 当前输入框的值\nconst model = defineModel<string>()\n\nconst cls = bem('auto-complete')\n\nconst optionClass = cls.e('option')\n\nconst { formProps } = injectFormContext()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\nconst dropdownVisible = shallowRef(false)\nconst scrollRef = shallowRef<ScrollExposed>()\n\nwatch(scrollRef, (scroll) => {\n if (scroll && model.value !== undefined) {\n const li = scroll.contentRef!.querySelector(`li[data-key=\"${model.value}\"]`) as HTMLElement\n li && scrollIntoContainerView(li, scroll.containerRef ?? null)\n }\n})\n\nconst { suggestions, appendedSuggestions, cachedSuggestion } = useSuggestions({ props, model })\n\nconst displayCachedSuggestion = computed(() => {\n if (!props.allowCustom) return undefined\n return cachedSuggestion.value\n})\n\nconst keyboardOptions = computed(() => {\n const currentSuggestions = suggestions.value\n return displayCachedSuggestion.value\n ? [displayCachedSuggestion.value, ...currentSuggestions]\n : currentSuggestions\n})\n\nconst { point, handleKeydown } = useKeyboard({\n options: keyboardOptions,\n dropdownVisible,\n getDefaultIndex: (options) => {\n if (!options.length) return -1\n if (model.value) {\n const matchIndex = options.indexOf(model.value)\n if (matchIndex > -1) return matchIndex\n }\n return 0\n },\n onSelect: (option, index) => {\n if (displayCachedSuggestion.value && index === 0) {\n handleSelectCachedOption(option)\n return\n }\n handleSelect(option)\n }\n})\n\nconst isCachedActive = computed(() => !!displayCachedSuggestion.value && point.value === 0)\n\nconst isActiveOption = (index: number) => {\n const offset = displayCachedSuggestion.value ? 1 : 0\n return point.value === index + offset\n}\n\nconst handleInputKeydown = (event: KeyboardEvent) => {\n if (!dropdownVisible.value && event.key === 'Enter' && displayCachedSuggestion.value) {\n event.preventDefault()\n event.stopPropagation()\n handleSelectCachedOption(displayCachedSuggestion.value)\n return\n }\n handleKeydown(event)\n}\n\n/** 用户输入时展开建议面板(选中项不会触发原生 input 事件,因此不会误展开) */\nconst handleNativeInput = () => {\n if (!dropdownVisible.value) {\n dropdownVisible.value = true\n }\n}\n\nwatch([point, keyboardOptions], ([currentPoint, options]) => {\n if (!scrollRef.value || currentPoint < 0) return\n const currentOption = options[currentPoint]\n if (!currentOption) return\n const target = scrollRef.value.contentRef?.querySelector(\n `li[data-key=\"${currentOption}\"]`\n ) as HTMLElement | null\n if (target) {\n scrollIntoContainerView(target, scrollRef.value.containerRef ?? null)\n }\n})\n\n/** 选中选项 */\nconst handleSelect = (option: string) => {\n model.value = option\n dropdownRef.value?.close()\n saveCache()\n emit('select', option)\n}\n\nfunction saveCache() {\n if (!model.value) return\n appendedSuggestions.value = [...appendedSuggestions.value, model.value]\n}\n\nconst handleSelectCachedOption = (cachedOption: string) => {\n appendedSuggestions.value = [...appendedSuggestions.value, cachedOption]\n dropdownRef.value?.close()\n}\n\ndefineExpose<_AutoCompleteExposed>({\n open: () => dropdownRef.value?.open(),\n close: () => dropdownRef.value?.close()\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"auto-complete.js","names":["$attrs"],"sources":["../../../src/components/auto-complete/auto-complete.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n v-bind=\"$attrs\"\n trigger=\"click\"\n :class=\"[cls.b, cls.m(size), bem.is('disabled', disabled)]\"\n ref=\"dropdownRef\"\n v-model:visible=\"dropdownVisible\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n :disabled=\"disabled\"\n >\n <!-- 触发 -->\n <template #trigger>\n <!-- 单选 -->\n <u-input\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n v-model=\"model\"\n @keydown=\"handleInputKeydown\"\n @native:input=\"handleNativeInput\"\n >\n <template #suffix v-if=\"slots.suffix\">\n <slot name=\"suffix\" />\n </template>\n\n <template #prefix v-if=\"slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n </u-input>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <u-scroll tag=\"ul\" :class=\"cls.e('options')\" ref=\"scrollRef\">\n <li\n v-if=\"displayCachedSuggestion\"\n :class=\"[optionClass, bem.is('active', isCachedActive)]\"\n @click=\"handleSelectCachedOption(displayCachedSuggestion)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"displayCachedSuggestion\"\n :key=\"displayCachedSuggestion\"\n >\n <slot v-bind=\"{ option: displayCachedSuggestion, index: -1 }\">\n {{ displayCachedSuggestion }}\n </slot>\n </li>\n\n <li\n v-for=\"(option, index) of suggestions\"\n :class=\"[\n optionClass,\n bem.is('selected', option === model),\n bem.is('active', isActiveOption(index))\n ]\"\n @click=\"handleSelect(option)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"option\"\n :key=\"option\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ option }}\n </slot>\n </li>\n </u-scroll>\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ model || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { bem, FORM_EMPTY_CONTENT, scrollIntoContainerView } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { AutoCompleteEmits, AutoCompleteProps, _AutoCompleteExposed } from '../../types'\nimport type { DropdownExposed, ScrollExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useKeyboard } from './use-keyboard'\nimport { useSuggestions } from './use-suggestions'\n\ndefineOptions({ name: 'UAutoComplete', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<AutoCompleteProps>(), {\n placeholder: '请输入',\n clearable: true,\n allowCustom: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<AutoCompleteEmits>()\n\nconst slots = defineSlots<{\n default?: (props: { option: string; index: number }) => any\n suffix?: () => any\n prefix?: () => any\n}>()\n\n// 当前输入框的值\nconst model = defineModel<string>()\n\nconst cls = bem('auto-complete')\n\nconst optionClass = cls.e('option')\n\nconst { formProps } = injectFormContext()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\nconst dropdownVisible = shallowRef(false)\nconst scrollRef = shallowRef<ScrollExposed>()\n\nwatch(scrollRef, (scroll) => {\n if (scroll && model.value !== undefined) {\n const li = scroll.contentRef!.querySelector(`li[data-key=\"${model.value}\"]`) as HTMLElement\n li && scrollIntoContainerView(li, scroll.containerRef ?? null)\n }\n})\n\nconst { suggestions, appendedSuggestions, cachedSuggestion } = useSuggestions({ props, model })\n\nconst displayCachedSuggestion = computed(() => {\n if (!props.allowCustom) return undefined\n return cachedSuggestion.value\n})\n\nconst keyboardOptions = computed(() => {\n const currentSuggestions = suggestions.value\n return displayCachedSuggestion.value\n ? [displayCachedSuggestion.value, ...currentSuggestions]\n : currentSuggestions\n})\n\nconst { point, handleKeydown } = useKeyboard({\n options: keyboardOptions,\n dropdownVisible,\n getDefaultIndex: (options) => {\n if (!options.length) return -1\n if (model.value) {\n const matchIndex = options.indexOf(model.value)\n if (matchIndex > -1) return matchIndex\n }\n return 0\n },\n onSelect: (option, index) => {\n if (displayCachedSuggestion.value && index === 0) {\n handleSelectCachedOption(option)\n return\n }\n handleSelect(option)\n }\n})\n\nconst isCachedActive = computed(() => !!displayCachedSuggestion.value && point.value === 0)\n\nconst isActiveOption = (index: number) => {\n const offset = displayCachedSuggestion.value ? 1 : 0\n return point.value === index + offset\n}\n\nconst handleInputKeydown = (event: KeyboardEvent) => {\n if (!dropdownVisible.value && event.key === 'Enter' && displayCachedSuggestion.value) {\n event.preventDefault()\n event.stopPropagation()\n handleSelectCachedOption(displayCachedSuggestion.value)\n return\n }\n handleKeydown(event)\n}\n\n/** 用户输入时展开建议面板(选中项不会触发原生 input 事件,因此不会误展开) */\nconst handleNativeInput = () => {\n if (!dropdownVisible.value) {\n dropdownVisible.value = true\n }\n}\n\nwatch([point, keyboardOptions], ([currentPoint, options]) => {\n if (!scrollRef.value || currentPoint < 0) return\n const currentOption = options[currentPoint]\n if (!currentOption) return\n const target = scrollRef.value.contentRef?.querySelector(\n `li[data-key=\"${currentOption}\"]`\n ) as HTMLElement | null\n if (target) {\n scrollIntoContainerView(target, scrollRef.value.containerRef ?? null)\n }\n})\n\n/** 选中选项 */\nconst handleSelect = (option: string) => {\n model.value = option\n dropdownRef.value?.close()\n saveCache()\n emit('select', option)\n}\n\nfunction saveCache() {\n if (!model.value) return\n appendedSuggestions.value = [...appendedSuggestions.value, model.value]\n}\n\nconst handleSelectCachedOption = (cachedOption: string) => {\n appendedSuggestions.value = [...appendedSuggestions.value, cachedOption]\n dropdownRef.value?.close()\n}\n\ndefineExpose<_AutoCompleteExposed>({\n open: () => dropdownRef.value?.open(),\n close: () => dropdownRef.value?.close()\n})\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","names":[],"sources":["../../../src/components/badge/badge.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot />\n <sup :class=\"classList\" ref=\"supRef\" v-if=\"!hidden\">{{ badgeValue }}</sup>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, setStyles, zIndex } from '@veltra/utils'\nimport { computed, nextTick, onMounted, shallowRef, watch } from 'vue'\n\nimport type { BadgeProps, ComponentSize } from '../../types'\n\ndefineOptions({ name: 'UBadge' })\n\nconst cls = bem('badge')\n\nconst props = withDefaults(defineProps<BadgeProps>(), { max: 99 })\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst badgeValue = computed(() => {\n if (props.dot) return ''\n if (typeof props.value === 'number' && typeof props.max === 'number') {\n return props.value > props.max ? `${props.max}+` : props.value\n }\n return props.value\n})\n\nconst classList = computed(() => {\n return [\n cls.e('sup'),\n props.type && cls.m('color-' + props.type),\n cls.m(size.value),\n bem.is('dot', props.dot)\n ]\n})\n\nconst supRef = shallowRef<HTMLElement>()\n\nconst setPosition = () => {\n if (supRef.value) {\n const { width, height } = supRef.value.getBoundingClientRect()\n setStyles(supRef.value, {\n transform: `translate(-${width / 2}px, -${height / 2}px)`,\n backgroundColor: props.color,\n zIndex: zIndex()\n })\n }\n}\n\nwatch(\n () => size.value,\n () => {\n nextTick(() => {\n setPosition()\n })\n }\n)\n\nonMounted(() => {\n setPosition()\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EAgBA,MAAM,MAAM,IAAI,OAAO;EAEvB,MAAM,QAAQ;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,aAAa,eAAe;GAChC,IAAI,MAAM,KAAK,OAAO;GACtB,IAAI,OAAO,MAAM,UAAU,YAAY,OAAO,MAAM,QAAQ,UAC1D,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,MAAM;GAE3D,OAAO,MAAM;EACf,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI,EAAE,KAAK;IACX,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,IAAI;IACzC,IAAI,EAAE,KAAK,KAAK;IAChB,IAAI,GAAG,OAAO,MAAM,GAAG;GACzB;EACF,CAAC;EAED,MAAM,SAAS,WAAwB;EAEvC,MAAM,oBAAoB;GACxB,IAAI,OAAO,OAAO;IAChB,MAAM,EAAE,OAAO,WAAW,OAAO,MAAM,sBAAsB;IAC7D,UAAU,OAAO,OAAO;KACtB,WAAW,cAAc,QAAQ,EAAE,OAAO,SAAS,EAAE;KACrD,iBAAiB,MAAM;KACvB,QAAQ,OAAO;IACjB,CAAC;GACH;EACF;EAEA,YACQ,KAAK,aACL;GACJ,eAAe;IACb,YAAY;GACd,CAAC;EACH,CACF;EAEA,gBAAgB;GACd,YAAY;EACd,CAAC;;uBA9DC,mBAGM,OAAA,EAHA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAAA,CAChB,WAAQ,KAAA,QAAA,SAAA,GAAA,CACoC,QAAA,UAAA,UAAA,GAA5C,mBAA0E,OAAA;;IAApE,OAAK,eAAE,UAAA,KAAS;aAAM;IAAJ,KAAI;sBAA2B,WAAA,KAAU,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../../src/components/badge/badge.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot />\n <sup :class=\"classList\" ref=\"supRef\" v-if=\"!hidden\">{{ badgeValue }}</sup>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, setStyles, zIndex } from '@veltra/utils'\nimport { computed, nextTick, onMounted, shallowRef, watch } from 'vue'\n\nimport type { BadgeProps, ComponentSize } from '../../types'\n\ndefineOptions({ name: 'UBadge' })\n\nconst cls = bem('badge')\n\nconst props = withDefaults(defineProps<BadgeProps>(), { max: 99 })\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst badgeValue = computed(() => {\n if (props.dot) return ''\n if (typeof props.value === 'number' && typeof props.max === 'number') {\n return props.value > props.max ? `${props.max}+` : props.value\n }\n return props.value\n})\n\nconst classList = computed(() => {\n return [\n cls.e('sup'),\n props.type && cls.m('color-' + props.type),\n cls.m(size.value),\n bem.is('dot', props.dot)\n ]\n})\n\nconst supRef = shallowRef<HTMLElement>()\n\nconst setPosition = () => {\n if (supRef.value) {\n const { width, height } = supRef.value.getBoundingClientRect()\n setStyles(supRef.value, {\n transform: `translate(-${width / 2}px, -${height / 2}px)`,\n backgroundColor: props.color,\n zIndex: zIndex()\n })\n }\n}\n\nwatch(\n () => size.value,\n () => {\n nextTick(() => {\n setPosition()\n })\n }\n)\n\nonMounted(() => {\n setPosition()\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EAgBA,MAAM,MAAM,IAAI,OAAO;EAEvB,MAAM,QAAQ;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,aAAa,eAAe;GAChC,IAAI,MAAM,KAAK,OAAO;GACtB,IAAI,OAAO,MAAM,UAAU,YAAY,OAAO,MAAM,QAAQ,UAC1D,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,MAAM;GAE3D,OAAO,MAAM;EACf,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI,EAAE,KAAK;IACX,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,IAAI;IACzC,IAAI,EAAE,KAAK,KAAK;IAChB,IAAI,GAAG,OAAO,MAAM,GAAG;GACzB;EACF,CAAC;EAED,MAAM,SAAS,WAAwB;EAEvC,MAAM,oBAAoB;GACxB,IAAI,OAAO,OAAO;IAChB,MAAM,EAAE,OAAO,WAAW,OAAO,MAAM,sBAAsB;IAC7D,UAAU,OAAO,OAAO;KACtB,WAAW,cAAc,QAAQ,EAAE,OAAO,SAAS,EAAE;KACrD,iBAAiB,MAAM;KACvB,QAAQ,OAAO;IACjB,CAAC;GACH;EACF;EAEA,YACQ,KAAK,aACL;GACJ,eAAe;IACb,YAAY;GACd,CAAC;EACH,CACF;EAEA,gBAAgB;GACd,YAAY;EACd,CAAC;;GA9DC,OAAA,UAAA,GAAA,mBAGM,OAAA,EAHA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAChB,CAAA,WAAQ,KAAA,QAAA,SAAA,GAAA,CACoC,QAAA,UAAA,UAAA,GAA5C,mBAA0E,OAAA;;IAApE,OAAK,eAAE,UAAA,KAAS;IAAM,SAAA;IAAJ,KAAI;GAA2B,GAAA,gBAAA,WAAA,KAAU,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,CAAA"}
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -5,7 +5,7 @@ import _sfc_main$3 from "../button/button.js";
5
5
  import _sfc_main$4 from "../kbd/kbd.js";
6
6
  import { BatchEditDIKey } from "./di.js";
7
7
  import { FORM_ACTION_HEADER_MAP } from "./form-action-header.js";
8
- import { Fragment, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, inject, normalizeClass, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRef, unref, withCtx } from "vue";
8
+ import { Fragment, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, inject, normalizeClass, normalizeProps, openBlock, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRef, unref, vShow, withCtx, withDirectives } from "vue";
9
9
  import { bem } from "@veltra/utils";
10
10
  import { Close, Save } from "@veltra/icons/normal";
11
11
  import { o } from "@cat-kit/core";
@@ -15,7 +15,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
15
15
  __name: "batch-edit-form",
16
16
  setup(__props, { expose: __expose }) {
17
17
  const batchEditCtx = inject(BatchEditDIKey);
18
- const { cls, props, state, handleClose, handleSave, staticFeatures, dynamicFeatures } = batchEditCtx;
18
+ const { cls, props, state, handleClose, handleSave, staticFeatures, dynamicFeatures, syncing } = batchEditCtx;
19
19
  const focused = toRef(batchEditCtx, "focused");
20
20
  const formComponentRef = shallowRef();
21
21
  __expose({
@@ -25,6 +25,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
25
25
  reset: () => formComponentRef.value?.reset()
26
26
  });
27
27
  function handleFieldChange(field, value) {
28
+ if (syncing.value) return;
28
29
  if (state.row && props.quickEdit) o(state.row.data).set(field, value);
29
30
  }
30
31
  const creatable = computed(() => {
@@ -45,12 +46,8 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
45
46
  return creatable.value || updatable.value || creatableChild.value;
46
47
  });
47
48
  const headerInfo = computed(() => FORM_ACTION_HEADER_MAP[state.formActionType]);
48
- /** 通过 row 切换 / 类型切换驱动表单内容淡出淡入 */
49
- const bodyKey = computed(() => {
50
- return `${state.formActionType}-${state.row?.uid ?? "create"}-${state.parentRow?.uid ?? "root"}`;
51
- });
52
49
  return (_ctx, _cache) => {
53
- return unref(state).formVisible && !!unref(props).model ? (openBlock(), createElementBlock("aside", {
50
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" 表单常驻挂载(快照只在挂载时对传入的 model 拍一次),仅用 v-show 控制显隐 "), !!unref(props).model ? withDirectives((openBlock(), createElementBlock("aside", {
54
51
  key: 0,
55
52
  class: normalizeClass(unref(cls).e("form"))
56
53
  }, [
@@ -74,10 +71,9 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
74
71
  "onClick"
75
72
  ])
76
73
  ], 2),
77
- (openBlock(), createBlock(unref(_sfc_main$2), {
74
+ createVNode(unref(_sfc_main$2), {
78
75
  always: "",
79
- class: normalizeClass(unref(cls).e("form-body")),
80
- key: bodyKey.value
76
+ class: normalizeClass(unref(cls).e("form-body"))
81
77
  }, {
82
78
  default: withCtx(() => [createVNode(Transition, {
83
79
  name: "fade",
@@ -109,7 +105,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
109
105
  _: 3
110
106
  })]),
111
107
  _: 3
112
- }, 8, ["class"])),
108
+ }, 8, ["class"]),
113
109
  createElementVNode("footer", { class: normalizeClass(unref(cls).e("form-footer")) }, [createElementVNode("span", { class: normalizeClass(unref(cls).e("form-hint")) }, [unref(props).readonly ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(" 只读模式 ")], 64)) : createCommentVNode("v-if", true), createElementVNode("span", { class: normalizeClass({ [unref(bem).is("concealed")]: !focused.value }) }, [
114
110
  !(unref(state).formActionType === "update" && unref(props).quickEdit) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(unref(_sfc_main$4), null, {
115
111
  default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("Ctrl + S", -1)])]),
@@ -141,7 +137,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
141
137
  "loading",
142
138
  "onClick"
143
139
  ])) : createCommentVNode("v-if", true)], 2)], 2)
144
- ], 2)) : createCommentVNode("v-if", true);
140
+ ], 2)), [[vShow, unref(state).formVisible]]) : createCommentVNode("v-if", true)], 2112);
145
141
  };
146
142
  }
147
143
  });
@@ -1 +1 @@
1
- {"version":3,"file":"batch-edit-form.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-form.vue"],"sourcesContent":["<template>\n <aside :class=\"cls.e('form')\" v-if=\"state.formVisible && !!props.model\">\n <header :class=\"cls.e('form-header')\">\n <span :class=\"[cls.e('form-icon'), bem.is(state.formActionType)]\">\n <u-icon>\n <component :is=\"headerInfo.icon\" />\n </u-icon>\n </span>\n <div :class=\"cls.e('form-title')\">\n <h3 :class=\"cls.e('form-title-text')\">{{ headerInfo.title }}</h3>\n </div>\n <u-button\n :class=\"cls.e('form-close')\"\n :icon=\"Close\"\n text\n circle\n size=\"small\"\n title=\"关闭\"\n @click=\"handleClose\"\n />\n </header>\n\n <u-scroll always :class=\"cls.e('form-body')\" :key=\"bodyKey\">\n <transition name=\"fade\" appear mode=\"out-in\">\n <u-form\n ref=\"formComponentRef\"\n :model=\"props.model\"\n :readonly=\"props.readonly\"\n :label-width=\"props.labelWidth\"\n @field:change=\"handleFieldChange\"\n >\n <slot\n v-bind=\"{\n row: state.row,\n parentRow: state.parentRow,\n formActionType: state.formActionType,\n depth: state.depth,\n indexes: state.indexPath,\n index: state.row?.index\n }\"\n />\n </u-form>\n </transition>\n </u-scroll>\n\n <footer :class=\"cls.e('form-footer')\">\n <span :class=\"cls.e('form-hint')\">\n <template v-if=\"props.readonly\"> 只读模式 </template>\n\n <span :class=\"{ [bem.is('concealed')]: !focused }\">\n <template v-if=\"!(state.formActionType === 'update' && props.quickEdit)\">\n <u-kbd>Ctrl + S</u-kbd> 保存 ·\n </template>\n <u-kbd>Esc</u-kbd> 关闭\n </span>\n </span>\n\n <div :class=\"cls.e('form-actions')\">\n <u-button size=\"small\" text :loading=\"state.loading\" @click=\"handleClose\"> 取消 </u-button>\n <u-button\n v-if=\"showSaveBtn\"\n type=\"primary\"\n size=\"small\"\n title=\"保存\"\n :icon=\"Save\"\n :loading=\"state.loading\"\n @click=\"handleSave\"\n />\n </div>\n </footer>\n </aside>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { Close, Save } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef, toRef } from 'vue'\n\nimport type { _FormExposed, FormExposed } from '../../types/form'\nimport { UButton } from '../button'\nimport { UForm } from '../form'\nimport { UIcon } from '../icon'\nimport { UKbd } from '../kbd'\nimport { UScroll } from '../scroll'\nimport { BatchEditDIKey } from './di'\nimport { FORM_ACTION_HEADER_MAP } from './form-action-header'\n\ndefineOptions({ name: 'UBatchEditForm' })\n\nconst batchEditCtx = inject(BatchEditDIKey)!\n\nconst { cls, props, state, handleClose, handleSave, staticFeatures, dynamicFeatures } = batchEditCtx\n\nconst focused = toRef(batchEditCtx, 'focused')\n\nconst formComponentRef = shallowRef<FormExposed>()\n\ndefineExpose<_FormExposed>({\n el: toRef(() => formComponentRef.value?.el),\n validate: () => formComponentRef.value?.validate() ?? Promise.resolve(true),\n clearValidate: () => formComponentRef.value?.clearValidate(),\n reset: () => formComponentRef.value?.reset()\n})\n\nfunction handleFieldChange(field: string, value: any) {\n if (state.row && props.quickEdit) {\n o(state.row.data).set(field, value)\n }\n}\n\nconst creatable = computed(() => {\n if (state.formActionType !== 'create') return false\n return staticFeatures.value.has('create') || dynamicFeatures.value.create?.(state.row)\n})\n\nconst creatableChild = computed(() => {\n if (state.formActionType !== 'createChild') return false\n return (\n staticFeatures.value.has('createChild') || dynamicFeatures.value.createChild?.(state.parentRow)\n )\n})\n\nconst updatable = computed(() => {\n if (state.formActionType !== 'update') return false\n return staticFeatures.value.has('update') || dynamicFeatures.value.update?.(state.row)\n})\n\nconst showSaveBtn = computed(() => {\n if (props.readonly) return false\n if (props.quickEdit && state.formActionType === 'update') return false\n return creatable.value || updatable.value || creatableChild.value\n})\n\nconst headerInfo = computed(() => FORM_ACTION_HEADER_MAP[state.formActionType])\n\n/** 通过 row 切换 / 类型切换驱动表单内容淡出淡入 */\nconst bodyKey = computed(() => {\n return `${state.formActionType}-${state.row?.uid ?? 'create'}-${state.parentRow?.uid ?? 'root'}`\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"batch-edit-form.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-form.vue"],"sourcesContent":["<template>\n <!-- 表单常驻挂载(快照只在挂载时对传入的 model 拍一次),仅用 v-show 控制显隐 -->\n <aside :class=\"cls.e('form')\" v-if=\"!!props.model\" v-show=\"state.formVisible\">\n <header :class=\"cls.e('form-header')\">\n <span :class=\"[cls.e('form-icon'), bem.is(state.formActionType)]\">\n <u-icon>\n <component :is=\"headerInfo.icon\" />\n </u-icon>\n </span>\n <div :class=\"cls.e('form-title')\">\n <h3 :class=\"cls.e('form-title-text')\">{{ headerInfo.title }}</h3>\n </div>\n <u-button\n :class=\"cls.e('form-close')\"\n :icon=\"Close\"\n text\n circle\n size=\"small\"\n title=\"关闭\"\n @click=\"handleClose\"\n />\n </header>\n\n <u-scroll always :class=\"cls.e('form-body')\">\n <transition name=\"fade\" appear mode=\"out-in\">\n <u-form\n ref=\"formComponentRef\"\n :model=\"props.model\"\n :readonly=\"props.readonly\"\n :label-width=\"props.labelWidth\"\n @field:change=\"handleFieldChange\"\n >\n <slot\n v-bind=\"{\n row: state.row,\n parentRow: state.parentRow,\n formActionType: state.formActionType,\n depth: state.depth,\n indexes: state.indexPath,\n index: state.row?.index\n }\"\n />\n </u-form>\n </transition>\n </u-scroll>\n\n <footer :class=\"cls.e('form-footer')\">\n <span :class=\"cls.e('form-hint')\">\n <template v-if=\"props.readonly\"> 只读模式 </template>\n\n <span :class=\"{ [bem.is('concealed')]: !focused }\">\n <template v-if=\"!(state.formActionType === 'update' && props.quickEdit)\">\n <u-kbd>Ctrl + S</u-kbd> 保存 ·\n </template>\n <u-kbd>Esc</u-kbd> 关闭\n </span>\n </span>\n\n <div :class=\"cls.e('form-actions')\">\n <u-button size=\"small\" text :loading=\"state.loading\" @click=\"handleClose\"> 取消 </u-button>\n <u-button\n v-if=\"showSaveBtn\"\n type=\"primary\"\n size=\"small\"\n title=\"保存\"\n :icon=\"Save\"\n :loading=\"state.loading\"\n @click=\"handleSave\"\n />\n </div>\n </footer>\n </aside>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { Close, Save } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef, toRef } from 'vue'\n\nimport type { _FormExposed, FormExposed } from '../../types/form'\nimport { UButton } from '../button'\nimport { UForm } from '../form'\nimport { UIcon } from '../icon'\nimport { UKbd } from '../kbd'\nimport { UScroll } from '../scroll'\nimport { BatchEditDIKey } from './di'\nimport { FORM_ACTION_HEADER_MAP } from './form-action-header'\n\ndefineOptions({ name: 'UBatchEditForm' })\n\nconst batchEditCtx = inject(BatchEditDIKey)!\n\nconst { cls, props, state, handleClose, handleSave, staticFeatures, dynamicFeatures, syncing } =\n batchEditCtx\n\nconst focused = toRef(batchEditCtx, 'focused')\n\nconst formComponentRef = shallowRef<FormExposed>()\n\ndefineExpose<_FormExposed>({\n el: toRef(() => formComponentRef.value?.el),\n validate: () => formComponentRef.value?.validate() ?? Promise.resolve(true),\n clearValidate: () => formComponentRef.value?.clearValidate(),\n reset: () => formComponentRef.value?.reset()\n})\n\nfunction handleFieldChange(field: string, value: any) {\n // 编程方式重置/回显期间不写回行数据,避免默认值污染源数据\n if (syncing.value) return\n\n if (state.row && props.quickEdit) {\n o(state.row.data).set(field, value)\n }\n}\n\nconst creatable = computed(() => {\n if (state.formActionType !== 'create') return false\n return staticFeatures.value.has('create') || dynamicFeatures.value.create?.(state.row)\n})\n\nconst creatableChild = computed(() => {\n if (state.formActionType !== 'createChild') return false\n return (\n staticFeatures.value.has('createChild') || dynamicFeatures.value.createChild?.(state.parentRow)\n )\n})\n\nconst updatable = computed(() => {\n if (state.formActionType !== 'update') return false\n return staticFeatures.value.has('update') || dynamicFeatures.value.update?.(state.row)\n})\n\nconst showSaveBtn = computed(() => {\n if (props.readonly) return false\n if (props.quickEdit && state.formActionType === 'update') return false\n return creatable.value || updatable.value || creatableChild.value\n})\n\nconst headerInfo = computed(() => FORM_ACTION_HEADER_MAP[state.formActionType])\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"batch-edit-list.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-list.vue"],"sourcesContent":["<template>\n <u-table\n v-bind=\"tableProps\"\n :slots=\"slots\"\n :class=\"[cls.e('table')]\"\n :columns=\"columns\"\n highlight-current\n :current=\"state.row\"\n @update:current=\"handleUpdateCurrentRow\"\n @update:checked=\"emit('update:checked', $event)\"\n @update:selected=\"emit('update:selected', $event)\"\n >\n <template #column:__action__=\"{ row }\">\n <u-action-group :class=\"cls.e('row-actions')\" :max=\"5\" @click.stop circle>\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToPrev\"\n title=\"在上方插入\"\n @run=\"handleInsertToPrev(row)\"\n />\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToNext\"\n title=\"在下方插入\"\n @run=\"handleInsertToNext(row)\"\n />\n <u-action\n v-if=\"!!props.tree && allowed('createChild', row)\"\n :icon=\"AddChild\"\n title=\"添加子级\"\n @run=\"handleInsertChild(row)\"\n />\n <u-action\n v-if=\"canDelete(row)\"\n :icon=\"Delete\"\n type=\"danger\"\n title=\"删除\"\n @run=\"handleDelete(row)\"\n v-bind=\"props.actionsProps?.delete\"\n />\n </u-action-group>\n </template>\n\n <!-- 新增按钮 -->\n <template #append v-if=\"showCreateBtn\">\n <div :class=\"cls.e('add')\">\n <u-button\n :class=\"cls.e('add-btn')\"\n :icon=\"Plus\"\n :loading=\"state.loading\"\n type=\"primary\"\n plain\n @click.stop=\"handleCreate\"\n >\n 新增一行\n </u-button>\n </div>\n </template>\n </u-table>\n</template>\n\n<script setup lang=\"ts\">\nimport { o } from '@cat-kit/core'\nimport { AddChild, Delete, InsertToNext, InsertToPrev, Plus } from '@veltra/icons/normal'\nimport { computed, inject, type Slots } from 'vue'\n\nimport type { BatchEditFeature, TableRow } from '../../types'\nimport { UAction, UActionGroup } from '../action'\nimport { UButton } from '../button'\nimport { UTable } from '../table'\nimport { BatchEditDIKey } from './di'\n\ndefineOptions({ name: 'UBatchEditList' })\n\ndefineProps<{ slots: Slots }>()\n\nconst {\n cls,\n state,\n props,\n emit,\n staticFeatures,\n dynamicFeatures,\n handleCreate,\n handleDelete,\n handleInsertToNext,\n handleInsertToPrev,\n handleInsertChild\n} = inject(BatchEditDIKey)!\n\nconst tableProps = computed(() => {\n return o(props as Record<string, any>).omit([\n 'model',\n 'columns',\n 'cols',\n 'readonly',\n 'deleteMethod',\n 'saveMethod',\n 'features',\n 'mode',\n 'beforeCreate'\n ])\n})\n\nconst hasNot = (value: BatchEditFeature[]) => value.every((v) => !staticFeatures.value.has(v))\n\nconst allowed = (feature: BatchEditFeature, row?: TableRow) => {\n return staticFeatures.value.has(feature) || !!dynamicFeatures.value[feature]?.(row)\n}\n\nconst columns = computed(() => {\n if (props.readonly || hasNot(['create', 'delete', 'createChild', 'update'])) return props.columns\n\n return (props.columns ?? []).concat({\n name: '操作',\n key: '__action__',\n align: 'center',\n width: 180,\n fixed: 'right',\n resizable: false\n })\n})\n\nfunction handleUpdateCurrentRow(row?: TableRow) {\n if (allowed('update', row)) {\n state.row = row\n }\n}\n\nfunction canDelete(row: TableRow) {\n return !props.readonly && allowed('delete', row)\n}\n\nconst showCreateBtn = computed(() => {\n if (props.readonly) return false\n\n const hasFeature = staticFeatures.value.has('create') || dynamicFeatures.value.create?.()\n const createActionVisible = state.formActionType === 'create' && state.formVisible\n return hasFeature && !createActionVisible\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"batch-edit-list.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-list.vue"],"sourcesContent":["<template>\n <u-table\n v-bind=\"tableProps\"\n :slots=\"slots\"\n :class=\"[cls.e('table')]\"\n :columns=\"columns\"\n highlight-current\n :current=\"state.row\"\n @update:current=\"handleUpdateCurrentRow\"\n @update:checked=\"emit('update:checked', $event)\"\n @update:selected=\"emit('update:selected', $event)\"\n >\n <template #column:__action__=\"{ row }\">\n <u-action-group :class=\"cls.e('row-actions')\" :max=\"5\" @click.stop circle>\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToPrev\"\n title=\"在上方插入\"\n @run=\"handleInsertToPrev(row)\"\n />\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToNext\"\n title=\"在下方插入\"\n @run=\"handleInsertToNext(row)\"\n />\n <u-action\n v-if=\"!!props.tree && allowed('createChild', row)\"\n :icon=\"AddChild\"\n title=\"添加子级\"\n @run=\"handleInsertChild(row)\"\n />\n <u-action\n v-if=\"canDelete(row)\"\n :icon=\"Delete\"\n type=\"danger\"\n title=\"删除\"\n @run=\"handleDelete(row)\"\n v-bind=\"props.actionsProps?.delete\"\n />\n </u-action-group>\n </template>\n\n <!-- 新增按钮 -->\n <template #append v-if=\"showCreateBtn\">\n <div :class=\"cls.e('add')\">\n <u-button\n :class=\"cls.e('add-btn')\"\n :icon=\"Plus\"\n :loading=\"state.loading\"\n type=\"primary\"\n plain\n @click.stop=\"handleCreate\"\n >\n 新增一行\n </u-button>\n </div>\n </template>\n </u-table>\n</template>\n\n<script setup lang=\"ts\">\nimport { o } from '@cat-kit/core'\nimport { AddChild, Delete, InsertToNext, InsertToPrev, Plus } from '@veltra/icons/normal'\nimport { computed, inject, type Slots } from 'vue'\n\nimport type { BatchEditFeature, TableRow } from '../../types'\nimport { UAction, UActionGroup } from '../action'\nimport { UButton } from '../button'\nimport { UTable } from '../table'\nimport { BatchEditDIKey } from './di'\n\ndefineOptions({ name: 'UBatchEditList' })\n\ndefineProps<{ slots: Slots }>()\n\nconst {\n cls,\n state,\n props,\n emit,\n staticFeatures,\n dynamicFeatures,\n handleCreate,\n handleDelete,\n handleInsertToNext,\n handleInsertToPrev,\n handleInsertChild\n} = inject(BatchEditDIKey)!\n\nconst tableProps = computed(() => {\n return o(props as Record<string, any>).omit([\n 'model',\n 'columns',\n 'cols',\n 'readonly',\n 'deleteMethod',\n 'saveMethod',\n 'features',\n 'mode',\n 'beforeCreate'\n ])\n})\n\nconst hasNot = (value: BatchEditFeature[]) => value.every((v) => !staticFeatures.value.has(v))\n\nconst allowed = (feature: BatchEditFeature, row?: TableRow) => {\n return staticFeatures.value.has(feature) || !!dynamicFeatures.value[feature]?.(row)\n}\n\nconst columns = computed(() => {\n if (props.readonly || hasNot(['create', 'delete', 'createChild', 'update'])) return props.columns\n\n return (props.columns ?? []).concat({\n name: '操作',\n key: '__action__',\n align: 'center',\n width: 180,\n fixed: 'right',\n resizable: false\n })\n})\n\nfunction handleUpdateCurrentRow(row?: TableRow) {\n if (allowed('update', row)) {\n state.row = row\n }\n}\n\nfunction canDelete(row: TableRow) {\n return !props.readonly && allowed('delete', row)\n}\n\nconst showCreateBtn = computed(() => {\n if (props.readonly) return false\n\n const hasFeature = staticFeatures.value.has('create') || dynamicFeatures.value.create?.()\n const createActionVisible = state.formActionType === 'create' && state.formVisible\n return hasFeature && !createActionVisible\n})\n</script>\n"],"mappings":"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"}
@@ -65,7 +65,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
65
65
  const slots = useSlots();
66
66
  const cls = bem("batch-edit");
67
67
  const formRef = useTemplateRef("form");
68
- const { state, resetState } = useEditState({
68
+ const { state, resetState, syncing } = useEditState({
69
69
  props,
70
70
  formRef
71
71
  });
@@ -94,6 +94,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
94
94
  staticFeatures,
95
95
  dynamicFeatures,
96
96
  focused,
97
+ syncing,
97
98
  ...handlers
98
99
  });
99
100
  return (_ctx, _cache) => {
@@ -1 +1 @@
1
- {"version":3,"file":"batch-edit.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit.vue"],"sourcesContent":["<template>\n <u-layout\n :class=\"cls.b\"\n :cols=\"cols\"\n rows=\"minmax(0, 1fr) \"\n gap=\"8px\"\n resizable\n tabindex=\"-1\"\n @focusin=\"handleFocusIn\"\n @focusout=\"handleFocusOut\"\n @keydown.capture=\"handleKeydown\"\n >\n <!-- 编辑列表 -->\n <BatchEditList :slots=\"slots\" />\n\n <!-- 编辑表单 -->\n <BatchEditForm ref=\"form\" v-slot=\"scoped\">\n <slot name=\"form\" v-bind=\"scoped\" />\n </BatchEditForm>\n </u-layout>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed, provide, useTemplateRef } from 'vue'\n\nimport type { BatchEditEmits, BatchEditProps, BatchEditSlots, FormExposed } from '../../types'\nimport { ULayout } from '../layout'\nimport BatchEditForm from './batch-edit-form.vue'\nimport BatchEditList from './batch-edit-list.vue'\nimport { BatchEditDIKey } from './di'\nimport { useEditState } from './use-edit-state'\nimport { useFeatures } from './use-features'\nimport { useHandlers } from './use-handlers'\nimport { useShortcutKey } from './use-shortcut-key'\n\ndefineOptions({ name: 'UBatchEdit' })\n\nconst props = withDefaults(defineProps<BatchEditProps>(), { cols: () => ['1fr', '420px'] })\n\nconst emit = defineEmits<BatchEditEmits>()\n\nconst slots = defineSlots<BatchEditSlots>()\n\nconst cls = bem('batch-edit')\n\nconst formRef = useTemplateRef<FormExposed>('form')\n\nconst { state, resetState } = useEditState({ props, formRef })\n\nconst { staticFeatures, dynamicFeatures } = useFeatures({ props })\n\nconst handlers = useHandlers({ props, emit, state, resetState, formRef })\n\n// 快捷键处理\nconst { handleFocusIn, handleFocusOut, handleKeydown, focused } = useShortcutKey({\n props,\n onSave: handlers.handleSave,\n onClose: handlers.handleClose,\n state\n})\n\nconst cols = computed(() => {\n return state.formVisible ? props.cols : undefined\n})\n\nprovide(BatchEditDIKey, {\n cls,\n props,\n emit,\n state,\n staticFeatures,\n dynamicFeatures,\n focused,\n ...handlers\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAA;EAEd,MAAM,MAAM,IAAI,YAAY;EAE5B,MAAM,UAAU,eAA4B,MAAM;EAElD,MAAM,EAAE,OAAO,eAAe,aAAa;GAAE;GAAO;EAAQ,CAAC;EAE7D,MAAM,EAAE,gBAAgB,oBAAoB,YAAY,EAAE,MAAM,CAAC;EAEjE,MAAM,WAAW,YAAY;GAAE;GAAO;GAAM;GAAO;GAAY;EAAQ,CAAC;EAGxE,MAAM,EAAE,eAAe,gBAAgB,eAAe,YAAY,eAAe;GAC/E;GACA,QAAQ,SAAS;GACjB,SAAS,SAAS;GAClB;EACF,CAAC;EAED,MAAM,OAAO,eAAe;GAC1B,OAAO,MAAM,cAAc,MAAM,OAAO,KAAA;EAC1C,CAAC;EAED,QAAQ,gBAAgB;GACtB;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;EACL,CAAC;;uBA1EC,YAkBW,MAAA,WAAA,GAAA;IAjBR,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC;IACZ,MAAM,KAAA;IACP,MAAK;IACL,KAAI;IACJ,WAAA;IACA,UAAS;IACR,WAAS,MAAA,aAAA;IACT,YAAU,MAAA,cAAA;sBACO,MAAA,aAAA;;2BAEL;KAAb,mBAAA,QAAA;KACA,YAAgC,aAAA,EAAT,MAAK,CAAA;KAE5B,mBAAA,QAAA;KACA,YAEgB,aAAA,EAFD,KAAI,OAAM,GAAA;wBAAS,WAAM,CACtC,WAAoC,KAAA,QAAA,QAAA,eAAA,mBAAV,MAAM,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"batch-edit.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit.vue"],"sourcesContent":["<template>\n <u-layout\n :class=\"cls.b\"\n :cols=\"cols\"\n rows=\"minmax(0, 1fr) \"\n gap=\"8px\"\n resizable\n tabindex=\"-1\"\n @focusin=\"handleFocusIn\"\n @focusout=\"handleFocusOut\"\n @keydown.capture=\"handleKeydown\"\n >\n <!-- 编辑列表 -->\n <BatchEditList :slots=\"slots\" />\n\n <!-- 编辑表单 -->\n <BatchEditForm ref=\"form\" v-slot=\"scoped\">\n <slot name=\"form\" v-bind=\"scoped\" />\n </BatchEditForm>\n </u-layout>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed, provide, useTemplateRef } from 'vue'\n\nimport type { BatchEditEmits, BatchEditProps, BatchEditSlots, FormExposed } from '../../types'\nimport { ULayout } from '../layout'\nimport BatchEditForm from './batch-edit-form.vue'\nimport BatchEditList from './batch-edit-list.vue'\nimport { BatchEditDIKey } from './di'\nimport { useEditState } from './use-edit-state'\nimport { useFeatures } from './use-features'\nimport { useHandlers } from './use-handlers'\nimport { useShortcutKey } from './use-shortcut-key'\n\ndefineOptions({ name: 'UBatchEdit' })\n\nconst props = withDefaults(defineProps<BatchEditProps>(), { cols: () => ['1fr', '420px'] })\n\nconst emit = defineEmits<BatchEditEmits>()\n\nconst slots = defineSlots<BatchEditSlots>()\n\nconst cls = bem('batch-edit')\n\nconst formRef = useTemplateRef<FormExposed>('form')\n\nconst { state, resetState, syncing } = useEditState({ props, formRef })\n\nconst { staticFeatures, dynamicFeatures } = useFeatures({ props })\n\nconst handlers = useHandlers({ props, emit, state, resetState, formRef })\n\n// 快捷键处理\nconst { handleFocusIn, handleFocusOut, handleKeydown, focused } = useShortcutKey({\n props,\n onSave: handlers.handleSave,\n onClose: handlers.handleClose,\n state\n})\n\nconst cols = computed(() => {\n return state.formVisible ? props.cols : undefined\n})\n\nprovide(BatchEditDIKey, {\n cls,\n props,\n emit,\n state,\n staticFeatures,\n dynamicFeatures,\n focused,\n syncing,\n ...handlers\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAA;EAEd,MAAM,MAAM,IAAI,YAAY;EAE5B,MAAM,UAAU,eAA4B,MAAM;EAElD,MAAM,EAAE,OAAO,YAAY,YAAY,aAAa;GAAE;GAAO;EAAQ,CAAC;EAEtE,MAAM,EAAE,gBAAgB,oBAAoB,YAAY,EAAE,MAAM,CAAC;EAEjE,MAAM,WAAW,YAAY;GAAE;GAAO;GAAM;GAAO;GAAY;EAAQ,CAAC;EAGxE,MAAM,EAAE,eAAe,gBAAgB,eAAe,YAAY,eAAe;GAC/E;GACA,QAAQ,SAAS;GACjB,SAAS,SAAS;GAClB;EACF,CAAC;EAED,MAAM,OAAO,eAAe;GAC1B,OAAO,MAAM,cAAc,MAAM,OAAO,KAAA;EAC1C,CAAC;EAED,QAAQ,gBAAgB;GACtB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;EACL,CAAC;;GA3EC,OAAA,UAAA,GAAA,YAkBW,MAAA,WAAA,GAAA;IAjBR,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC;IACZ,MAAM,KAAA;IACP,MAAK;IACL,KAAI;IACJ,WAAA;IACA,UAAS;IACR,WAAS,MAAA,aAAA;IACT,YAAU,MAAA,cAAA;IACO,kBAAA,MAAA,aAAA;;IAEL,SAAA,cAAA;KAAb,mBAAA,QAAA;KACA,YAAgC,aAAA,EAAT,MAAK,CAAA;KAE5B,mBAAA,QAAA;KACA,YAEgB,aAAA,EAFD,KAAI,OAAM,GAAA;MAAS,SAAA,SAAA,WAAM,CACtC,WAAoC,KAAA,QAAA,QAAA,eAAA,mBAAV,MAAM,CAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"di.js","names":[],"sources":["../../../src/components/batch-edit/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey, ShallowRef } from 'vue'\n\nimport type {\n BatchEditEmits,\n BatchEditFeature,\n BatchEditProps,\n BatchEditStates,\n TableRow\n} from '../../types'\nimport type { EditReturned } from './use-handlers'\n\nexport const BatchEditDIKey: InjectionKey<\n {\n cls: BEM<'batch-edit', 'u-'>\n props: BatchEditProps\n emit: BatchEditEmits\n state: BatchEditStates\n staticFeatures: ComputedRef<Set<BatchEditFeature>>\n dynamicFeatures: ComputedRef<\n Record<BatchEditFeature, ((row?: TableRow) => boolean) | undefined>\n >\n /** 组件或其子节点是否处于聚焦状态 */\n focused: ShallowRef<boolean>\n } & EditReturned\n> = Symbol('BatchEditDIKey')\n"],"mappings":";AAYA,MAAa,iBAaT,OAAO,gBAAgB"}
1
+ {"version":3,"file":"di.js","names":[],"sources":["../../../src/components/batch-edit/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey, ShallowRef } from 'vue'\n\nimport type {\n BatchEditEmits,\n BatchEditFeature,\n BatchEditProps,\n BatchEditStates,\n TableRow\n} from '../../types'\nimport type { EditReturned } from './use-handlers'\n\nexport const BatchEditDIKey: InjectionKey<\n {\n cls: BEM<'batch-edit', 'u-'>\n props: BatchEditProps\n emit: BatchEditEmits\n state: BatchEditStates\n staticFeatures: ComputedRef<Set<BatchEditFeature>>\n dynamicFeatures: ComputedRef<\n Record<BatchEditFeature, ((row?: TableRow) => boolean) | undefined>\n >\n /** 组件或其子节点是否处于聚焦状态 */\n focused: ShallowRef<boolean>\n /** 是否正在以编程方式重置/回显表单,此期间禁止 quick-edit 回写行数据 */\n syncing: ShallowRef<boolean>\n } & EditReturned\n> = Symbol('BatchEditDIKey')\n"],"mappings":";AAYA,MAAa,iBAeT,OAAO,gBAAgB"}
@@ -1,3 +1,3 @@
1
- import _default from "./batch-edit.vue.js";
1
+ import _sfc_main from "./batch-edit.js";
2
2
  import { defineBatchEditColumns } from "./helper.js";
3
- export { _default as UBatchEdit, defineBatchEditColumns };
3
+ export { _sfc_main as UBatchEdit, defineBatchEditColumns };
@@ -1,4 +1,4 @@
1
- import { nextTick, shallowReactive, watch } from "vue";
1
+ import { nextTick, shallowReactive, shallowRef, watch } from "vue";
2
2
  import { o } from "@cat-kit/core";
3
3
  //#region src/components/batch-edit/use-edit-state.ts
4
4
  function useEditState(options) {
@@ -11,6 +11,8 @@ function useEditState(options) {
11
11
  indexPath: []
12
12
  };
13
13
  const state = shallowReactive({ ...defaultState });
14
+ /** 是否正在以编程方式重置/回显表单,此期间禁止 quick-edit 回写行数据 */
15
+ const syncing = shallowRef(false);
14
16
  function resetState() {
15
17
  formRef.value?.reset();
16
18
  if (state.row) state.row.isCurrent = false;
@@ -20,23 +22,23 @@ function useEditState(options) {
20
22
  Object.assign(state, defaultState);
21
23
  }
22
24
  watch(() => state.row, (row) => {
25
+ syncing.value = true;
23
26
  formRef.value?.reset();
24
27
  if (row) {
25
- /** 延迟设置 model,防止表单初始状态丢失 */
26
- nextTick(() => {
27
- if (props.model) o(props.model).deepExtend(row.data);
28
- });
28
+ if (props.model) o(props.model).deepExtend(row.data);
29
29
  state.formActionType = props.readonly ? "view" : "update";
30
30
  state.formVisible = true;
31
31
  state.depth = row.depth;
32
32
  state.indexPath = [...row.indexes];
33
- return;
34
- }
35
- resetState();
33
+ } else resetState();
34
+ nextTick(() => {
35
+ syncing.value = false;
36
+ });
36
37
  });
37
38
  return {
38
39
  state,
39
- resetState
40
+ resetState,
41
+ syncing
40
42
  };
41
43
  }
42
44
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-edit-state.js","names":[],"sources":["../../../src/components/batch-edit/use-edit-state.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\nimport { nextTick, shallowReactive, watch, type ShallowRef } from 'vue'\n\nimport type { BatchEditProps, BatchEditStates, FormExposed } from '../../types'\n\ninterface Options {\n props: BatchEditProps\n formRef: ShallowRef<FormExposed | null>\n}\n\nexport function useEditState(options: Options) {\n const { props, formRef } = options\n\n const defaultState: BatchEditStates = {\n depth: -1,\n formVisible: false,\n formActionType: 'create',\n loading: false,\n indexPath: []\n }\n\n const state = shallowReactive({ ...defaultState })\n\n function resetState() {\n // 销毁表单前先重置,避免下次 v-if 重挂载时 Form 拍到脏 model\n formRef.value?.reset()\n\n if (state.row) {\n state.row.isCurrent = false\n }\n\n Object.keys(state).forEach((key) => {\n delete state[key]\n })\n\n Object.assign(state, defaultState)\n }\n\n watch(\n () => state.row,\n (row) => {\n formRef.value?.reset()\n\n if (row) {\n /** 延迟设置 model,防止表单初始状态丢失 */\n nextTick(() => {\n if (props.model) {\n o(props.model).deepExtend(row.data)\n }\n })\n state.formActionType = props.readonly ? 'view' : 'update'\n state.formVisible = true\n state.depth = row.depth\n state.indexPath = [...row.indexes]\n\n return\n }\n\n resetState()\n }\n )\n\n return { state, resetState }\n}\n"],"mappings":";;;AAUA,SAAgB,aAAa,SAAkB;CAC7C,MAAM,EAAE,OAAO,YAAY;CAE3B,MAAM,eAAgC;EACpC,OAAO;EACP,aAAa;EACb,gBAAgB;EAChB,SAAS;EACT,WAAW,CAAC;CACd;CAEA,MAAM,QAAQ,gBAAgB,EAAE,GAAG,aAAa,CAAC;CAEjD,SAAS,aAAa;EAEpB,QAAQ,OAAO,MAAM;EAErB,IAAI,MAAM,KACR,MAAM,IAAI,YAAY;EAGxB,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,QAAQ;GAClC,OAAO,MAAM;EACf,CAAC;EAED,OAAO,OAAO,OAAO,YAAY;CACnC;CAEA,YACQ,MAAM,MACX,QAAQ;EACP,QAAQ,OAAO,MAAM;EAErB,IAAI,KAAK;;GAEP,eAAe;IACb,IAAI,MAAM,OACR,EAAE,MAAM,KAAK,CAAC,CAAC,WAAW,IAAI,IAAI;GAEtC,CAAC;GACD,MAAM,iBAAiB,MAAM,WAAW,SAAS;GACjD,MAAM,cAAc;GACpB,MAAM,QAAQ,IAAI;GAClB,MAAM,YAAY,CAAC,GAAG,IAAI,OAAO;GAEjC;EACF;EAEA,WAAW;CACb,CACF;CAEA,OAAO;EAAE;EAAO;CAAW;AAC7B"}
1
+ {"version":3,"file":"use-edit-state.js","names":[],"sources":["../../../src/components/batch-edit/use-edit-state.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\nimport { nextTick, shallowReactive, shallowRef, watch, type ShallowRef } from 'vue'\n\nimport type { BatchEditProps, BatchEditStates, FormExposed } from '../../types'\n\ninterface Options {\n props: BatchEditProps\n formRef: ShallowRef<FormExposed | null>\n}\n\nexport function useEditState(options: Options) {\n const { props, formRef } = options\n\n const defaultState: BatchEditStates = {\n depth: -1,\n formVisible: false,\n formActionType: 'create',\n loading: false,\n indexPath: []\n }\n\n const state = shallowReactive({ ...defaultState })\n\n /** 是否正在以编程方式重置/回显表单,此期间禁止 quick-edit 回写行数据 */\n const syncing = shallowRef(false)\n\n function resetState() {\n // 表单常驻挂载,重置即恢复到 model 初始快照\n formRef.value?.reset()\n\n if (state.row) {\n state.row.isCurrent = false\n }\n\n Object.keys(state).forEach((key) => {\n delete state[key]\n })\n\n Object.assign(state, defaultState)\n }\n\n watch(\n () => state.row,\n (row) => {\n syncing.value = true\n\n // 先重置回 model 初始快照,再同步回显行数据。\n // 同一 tick 内的连续写入会被表单字段 watcher 合并,\n // 重置产生的默认值不会触发 field:change 回写行数据\n formRef.value?.reset()\n\n if (row) {\n if (props.model) {\n o(props.model).deepExtend(row.data)\n }\n state.formActionType = props.readonly ? 'view' : 'update'\n state.formVisible = true\n state.depth = row.depth\n state.indexPath = [...row.indexes]\n } else {\n resetState()\n }\n\n nextTick(() => {\n syncing.value = false\n })\n }\n )\n\n return { state, resetState, syncing }\n}\n"],"mappings":";;;AAUA,SAAgB,aAAa,SAAkB;CAC7C,MAAM,EAAE,OAAO,YAAY;CAE3B,MAAM,eAAgC;EACpC,OAAO;EACP,aAAa;EACb,gBAAgB;EAChB,SAAS;EACT,WAAW,CAAC;CACd;CAEA,MAAM,QAAQ,gBAAgB,EAAE,GAAG,aAAa,CAAC;;CAGjD,MAAM,UAAU,WAAW,KAAK;CAEhC,SAAS,aAAa;EAEpB,QAAQ,OAAO,MAAM;EAErB,IAAI,MAAM,KACR,MAAM,IAAI,YAAY;EAGxB,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,QAAQ;GAClC,OAAO,MAAM;EACf,CAAC;EAED,OAAO,OAAO,OAAO,YAAY;CACnC;CAEA,YACQ,MAAM,MACX,QAAQ;EACP,QAAQ,QAAQ;EAKhB,QAAQ,OAAO,MAAM;EAErB,IAAI,KAAK;GACP,IAAI,MAAM,OACR,EAAE,MAAM,KAAK,CAAC,CAAC,WAAW,IAAI,IAAI;GAEpC,MAAM,iBAAiB,MAAM,WAAW,SAAS;GACjD,MAAM,cAAc;GACpB,MAAM,QAAQ,IAAI;GAClB,MAAM,YAAY,CAAC,GAAG,IAAI,OAAO;EACnC,OACE,WAAW;EAGb,eAAe;GACb,QAAQ,QAAQ;EAClB,CAAC;CACH,CACF;CAEA,OAAO;EAAE;EAAO;EAAY;CAAQ;AACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-handlers.js","names":[],"sources":["../../../src/components/batch-edit/use-handlers.ts"],"sourcesContent":["import { last, o } from '@cat-kit/core'\nimport { computed, nextTick, type ShallowRef } from 'vue'\n\nimport type {\n TableRow,\n BatchEditEmits,\n BatchEditProps,\n BatchEditStates,\n FormExposed\n} from '../../types'\n\n/** 按索引路径在原始数据树中定位节点(等价于历史 Forest.visit 路径访问) */\nfunction visitDataByIndexPath<T extends Record<string, unknown>>(\n roots: T[],\n indexPath: number[],\n childrenKey: string\n): T | undefined {\n if (!indexPath.length) return undefined\n let currentList: T[] | undefined = roots\n let node: T | undefined\n for (let i = 0; i < indexPath.length; i++) {\n const idx = indexPath[i]!\n if (!currentList) return undefined\n node = currentList[idx]\n if (node === undefined) return undefined\n if (i < indexPath.length - 1) {\n const next = node[childrenKey]\n currentList = Array.isArray(next) ? (next as T[]) : undefined\n }\n }\n return node\n}\n\ninterface Options {\n props: BatchEditProps\n emit: BatchEditEmits\n state: BatchEditStates\n formRef: ShallowRef<FormExposed | null>\n resetState: () => void\n}\n\nexport interface EditReturned {\n handleSave: () => Promise<void>\n handleClose: () => void\n handleCreate: () => void\n handleDelete: (row: TableRow) => Promise<void>\n handleInsertToNext: (row: TableRow) => void\n handleInsertToPrev: (row: TableRow) => void\n handleInsertChild: (row: TableRow) => void\n}\n\nexport function useHandlers(options: Options): EditReturned {\n const { props, emit, state, resetState, formRef } = options\n\n const childrenKey = computed(() => {\n return typeof props.tree === 'string' ? props.tree : 'children'\n })\n\n function getInsertData(): Record<string, any> {\n return o(props.model ?? {}).copy()\n }\n\n /**\n * 插入数据\n * @param item 数据\n */\n function insert(item: Record<string, any>) {\n const data = [...(props.data ?? [])]\n\n const parent = visitDataByIndexPath(data ?? [], state.indexPath.slice(0, -1), childrenKey.value)\n\n if (parent) {\n const children = parent[childrenKey.value]\n if (!children) {\n parent[childrenKey.value] = [item]\n } else {\n children.splice(last(state.indexPath), 0, item)\n }\n } else {\n data.splice(last(state.indexPath), 0, item)\n }\n\n emit('update:data', data)\n\n return item\n }\n\n /**\n * 点击新增按钮\n */\n function handleCreate() {\n const { data } = props\n\n resetState()\n\n nextTick(() => {\n state.formActionType = 'create'\n state.formVisible = true\n state.depth = 1\n state.indexPath = [data?.length ?? 0]\n emit('create')\n })\n }\n\n function handleInsertToPrev(row: TableRow) {\n resetState()\n state.formActionType = 'create'\n state.formVisible = true\n state.parentRow = row.parent\n state.depth = row.depth\n state.indexPath = [...row.indexes]\n emit('create-prev', row)\n }\n\n function handleInsertToNext(row: TableRow) {\n resetState()\n state.formActionType = 'create'\n state.formVisible = true\n state.parentRow = row.parent\n state.depth = row.depth\n state.indexPath = [...row.indexes.slice(0, -1), row.index + 1]\n emit('create-next', row)\n }\n\n function handleInsertChild(row: TableRow) {\n resetState()\n state.formActionType = 'createChild'\n state.formVisible = true\n state.parentRow = row\n state.depth = row.depth + 1\n row.expanded = true\n state.indexPath = [...row.indexes, row.children?.length ?? 0]\n emit('create-child', row)\n }\n\n function runWithLoading<Arg extends any[]>(fn: (...args: Arg) => Promise<void> | void) {\n return async (...args: Arg) => {\n state.loading = true\n if (state.row) {\n state.row.operating = true\n }\n try {\n await fn.apply(null, args)\n } catch (error) {\n console.error(error)\n }\n state.loading = false\n if (state.row) {\n state.row.operating = false\n }\n }\n }\n\n /** 保存 */\n const handleSave = runWithLoading(async () => {\n const { model, saveMethod } = props\n const valid = await formRef.value?.validate()\n if (!model || !valid) return\n\n let item = getInsertData()\n\n // 新增\n if (state.formActionType === 'create' || state.formActionType === 'createChild') {\n await props.beforeCreate?.(item, state.parentRow?.data)\n if (saveMethod) {\n const result = await saveMethod(item, state.formActionType, state.parentRow?.data)\n if (result) {\n item = result\n }\n }\n insert(item)\n\n // 推进插入点,便于连续新增;并重置表单到初始默认值\n const next = last(state.indexPath) + 1\n state.indexPath = [...state.indexPath.slice(0, -1), next]\n formRef.value?.reset()\n return\n }\n\n // 普通模式下的编辑\n if (saveMethod) {\n const result = await saveMethod(item, state.formActionType, state.parentRow?.data)\n if (result) {\n item = result\n }\n }\n\n const { row } = state\n row &&\n Object.keys(item).forEach((key) => {\n o(row.data).set(key, o(item).get(key))\n })\n })\n\n const handleDelete = runWithLoading(async (row: TableRow) => {\n const { deleteMethod } = props\n\n if (deleteMethod) {\n const result = await deleteMethod([row.data])\n if (result === false) {\n return\n }\n }\n\n const data = [...(props.data ?? [])]\n\n const parent = visitDataByIndexPath(data, row.indexes.slice(0, -1), childrenKey.value)\n\n if (parent) {\n const children = parent[childrenKey.value]\n if (children) {\n children.splice(row.index, 1)\n } else {\n console.error('行路径不正确')\n }\n } else {\n data.splice(row.index, 1)\n }\n\n if (state.row === row) {\n resetState()\n }\n\n emit('update:data', data)\n })\n\n function handleClose() {\n resetState()\n }\n\n return {\n handleDelete,\n handleInsertChild,\n handleInsertToNext,\n handleInsertToPrev,\n handleCreate,\n handleClose,\n handleSave\n }\n}\n"],"mappings":";;;;AAYA,SAAS,qBACP,OACA,WACA,aACe;CACf,IAAI,CAAC,UAAU,QAAQ,OAAO,KAAA;CAC9B,IAAI,cAA+B;CACnC,IAAI;CACJ,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;EACzC,MAAM,MAAM,UAAU;EACtB,IAAI,CAAC,aAAa,OAAO,KAAA;EACzB,OAAO,YAAY;EACnB,IAAI,SAAS,KAAA,GAAW,OAAO,KAAA;EAC/B,IAAI,IAAI,UAAU,SAAS,GAAG;GAC5B,MAAM,OAAO,KAAK;GAClB,cAAc,MAAM,QAAQ,IAAI,IAAK,OAAe,KAAA;EACtD;CACF;CACA,OAAO;AACT;AAoBA,SAAgB,YAAY,SAAgC;CAC1D,MAAM,EAAE,OAAO,MAAM,OAAO,YAAY,YAAY;CAEpD,MAAM,cAAc,eAAe;EACjC,OAAO,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;CACvD,CAAC;CAED,SAAS,gBAAqC;EAC5C,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK;CACnC;;;;;CAMA,SAAS,OAAO,MAA2B;EACzC,MAAM,OAAO,CAAC,GAAI,MAAM,QAAQ,CAAC,CAAE;EAEnC,MAAM,SAAS,qBAAqB,QAAQ,CAAC,GAAG,MAAM,UAAU,MAAM,GAAG,EAAE,GAAG,YAAY,KAAK;EAE/F,IAAI,QAAQ;GACV,MAAM,WAAW,OAAO,YAAY;GACpC,IAAI,CAAC,UACH,OAAO,YAAY,SAAS,CAAC,IAAI;QAEjC,SAAS,OAAO,KAAK,MAAM,SAAS,GAAG,GAAG,IAAI;EAElD,OACE,KAAK,OAAO,KAAK,MAAM,SAAS,GAAG,GAAG,IAAI;EAG5C,KAAK,eAAe,IAAI;EAExB,OAAO;CACT;;;;CAKA,SAAS,eAAe;EACtB,MAAM,EAAE,SAAS;EAEjB,WAAW;EAEX,eAAe;GACb,MAAM,iBAAiB;GACvB,MAAM,cAAc;GACpB,MAAM,QAAQ;GACd,MAAM,YAAY,CAAC,MAAM,UAAU,CAAC;GACpC,KAAK,QAAQ;EACf,CAAC;CACH;CAEA,SAAS,mBAAmB,KAAe;EACzC,WAAW;EACX,MAAM,iBAAiB;EACvB,MAAM,cAAc;EACpB,MAAM,YAAY,IAAI;EACtB,MAAM,QAAQ,IAAI;EAClB,MAAM,YAAY,CAAC,GAAG,IAAI,OAAO;EACjC,KAAK,eAAe,GAAG;CACzB;CAEA,SAAS,mBAAmB,KAAe;EACzC,WAAW;EACX,MAAM,iBAAiB;EACvB,MAAM,cAAc;EACpB,MAAM,YAAY,IAAI;EACtB,MAAM,QAAQ,IAAI;EAClB,MAAM,YAAY,CAAC,GAAG,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG,IAAI,QAAQ,CAAC;EAC7D,KAAK,eAAe,GAAG;CACzB;CAEA,SAAS,kBAAkB,KAAe;EACxC,WAAW;EACX,MAAM,iBAAiB;EACvB,MAAM,cAAc;EACpB,MAAM,YAAY;EAClB,MAAM,QAAQ,IAAI,QAAQ;EAC1B,IAAI,WAAW;EACf,MAAM,YAAY,CAAC,GAAG,IAAI,SAAS,IAAI,UAAU,UAAU,CAAC;EAC5D,KAAK,gBAAgB,GAAG;CAC1B;CAEA,SAAS,eAAkC,IAA4C;EACrF,OAAO,OAAO,GAAG,SAAc;GAC7B,MAAM,UAAU;GAChB,IAAI,MAAM,KACR,MAAM,IAAI,YAAY;GAExB,IAAI;IACF,MAAM,GAAG,MAAM,MAAM,IAAI;GAC3B,SAAS,OAAO;IACd,QAAQ,MAAM,KAAK;GACrB;GACA,MAAM,UAAU;GAChB,IAAI,MAAM,KACR,MAAM,IAAI,YAAY;EAE1B;CACF;;CAGA,MAAM,aAAa,eAAe,YAAY;EAC5C,MAAM,EAAE,OAAO,eAAe;EAC9B,MAAM,QAAQ,MAAM,QAAQ,OAAO,SAAS;EAC5C,IAAI,CAAC,SAAS,CAAC,OAAO;EAEtB,IAAI,OAAO,cAAc;EAGzB,IAAI,MAAM,mBAAmB,YAAY,MAAM,mBAAmB,eAAe;GAC/E,MAAM,MAAM,eAAe,MAAM,MAAM,WAAW,IAAI;GACtD,IAAI,YAAY;IACd,MAAM,SAAS,MAAM,WAAW,MAAM,MAAM,gBAAgB,MAAM,WAAW,IAAI;IACjF,IAAI,QACF,OAAO;GAEX;GACA,OAAO,IAAI;GAGX,MAAM,OAAO,KAAK,MAAM,SAAS,IAAI;GACrC,MAAM,YAAY,CAAC,GAAG,MAAM,UAAU,MAAM,GAAG,EAAE,GAAG,IAAI;GACxD,QAAQ,OAAO,MAAM;GACrB;EACF;EAGA,IAAI,YAAY;GACd,MAAM,SAAS,MAAM,WAAW,MAAM,MAAM,gBAAgB,MAAM,WAAW,IAAI;GACjF,IAAI,QACF,OAAO;EAEX;EAEA,MAAM,EAAE,QAAQ;EAChB,OACE,OAAO,KAAK,IAAI,CAAC,CAAC,SAAS,QAAQ;GACjC,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;EACvC,CAAC;CACL,CAAC;CAED,MAAM,eAAe,eAAe,OAAO,QAAkB;EAC3D,MAAM,EAAE,iBAAiB;EAEzB,IAAI;OAEE,MADiB,aAAa,CAAC,IAAI,IAAI,CAAC,MAC7B,OACb;EAAA;EAIJ,MAAM,OAAO,CAAC,GAAI,MAAM,QAAQ,CAAC,CAAE;EAEnC,MAAM,SAAS,qBAAqB,MAAM,IAAI,QAAQ,MAAM,GAAG,EAAE,GAAG,YAAY,KAAK;EAErF,IAAI,QAAQ;GACV,MAAM,WAAW,OAAO,YAAY;GACpC,IAAI,UACF,SAAS,OAAO,IAAI,OAAO,CAAC;QAE5B,QAAQ,MAAM,QAAQ;EAE1B,OACE,KAAK,OAAO,IAAI,OAAO,CAAC;EAG1B,IAAI,MAAM,QAAQ,KAChB,WAAW;EAGb,KAAK,eAAe,IAAI;CAC1B,CAAC;CAED,SAAS,cAAc;EACrB,WAAW;CACb;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"use-handlers.js","names":[],"sources":["../../../src/components/batch-edit/use-handlers.ts"],"sourcesContent":["import { last, o } from '@cat-kit/core'\nimport { computed, nextTick, type ShallowRef } from 'vue'\n\nimport type {\n TableRow,\n BatchEditEmits,\n BatchEditProps,\n BatchEditStates,\n FormExposed\n} from '../../types'\n\n/** 按索引路径在原始数据树中定位节点(等价于历史 Forest.visit 路径访问) */\nfunction visitDataByIndexPath<T extends Record<string, unknown>>(\n roots: T[],\n indexPath: number[],\n childrenKey: string\n): T | undefined {\n if (!indexPath.length) return undefined\n let currentList: T[] | undefined = roots\n let node: T | undefined\n for (let i = 0; i < indexPath.length; i++) {\n const idx = indexPath[i]!\n if (!currentList) return undefined\n node = currentList[idx]\n if (node === undefined) return undefined\n if (i < indexPath.length - 1) {\n const next = node[childrenKey]\n currentList = Array.isArray(next) ? (next as T[]) : undefined\n }\n }\n return node\n}\n\ninterface Options {\n props: BatchEditProps\n emit: BatchEditEmits\n state: BatchEditStates\n formRef: ShallowRef<FormExposed | null>\n resetState: () => void\n}\n\nexport interface EditReturned {\n handleSave: () => Promise<void>\n handleClose: () => void\n handleCreate: () => void\n handleDelete: (row: TableRow) => Promise<void>\n handleInsertToNext: (row: TableRow) => void\n handleInsertToPrev: (row: TableRow) => void\n handleInsertChild: (row: TableRow) => void\n}\n\nexport function useHandlers(options: Options): EditReturned {\n const { props, emit, state, resetState, formRef } = options\n\n const childrenKey = computed(() => {\n return typeof props.tree === 'string' ? props.tree : 'children'\n })\n\n function getInsertData(): Record<string, any> {\n return o(props.model ?? {}).copy()\n }\n\n /**\n * 插入数据\n * @param item 数据\n */\n function insert(item: Record<string, any>) {\n const data = [...(props.data ?? [])]\n\n const parent = visitDataByIndexPath(data ?? [], state.indexPath.slice(0, -1), childrenKey.value)\n\n if (parent) {\n const children = parent[childrenKey.value]\n if (!children) {\n parent[childrenKey.value] = [item]\n } else {\n children.splice(last(state.indexPath), 0, item)\n }\n } else {\n data.splice(last(state.indexPath), 0, item)\n }\n\n emit('update:data', data)\n\n return item\n }\n\n /**\n * 点击新增按钮\n */\n function handleCreate() {\n const { data } = props\n\n resetState()\n\n nextTick(() => {\n state.formActionType = 'create'\n state.formVisible = true\n state.depth = 1\n state.indexPath = [data?.length ?? 0]\n emit('create')\n })\n }\n\n function handleInsertToPrev(row: TableRow) {\n resetState()\n state.formActionType = 'create'\n state.formVisible = true\n state.parentRow = row.parent\n state.depth = row.depth\n state.indexPath = [...row.indexes]\n emit('create-prev', row)\n }\n\n function handleInsertToNext(row: TableRow) {\n resetState()\n state.formActionType = 'create'\n state.formVisible = true\n state.parentRow = row.parent\n state.depth = row.depth\n state.indexPath = [...row.indexes.slice(0, -1), row.index + 1]\n emit('create-next', row)\n }\n\n function handleInsertChild(row: TableRow) {\n resetState()\n state.formActionType = 'createChild'\n state.formVisible = true\n state.parentRow = row\n state.depth = row.depth + 1\n row.expanded = true\n state.indexPath = [...row.indexes, row.children?.length ?? 0]\n emit('create-child', row)\n }\n\n function runWithLoading<Arg extends any[]>(fn: (...args: Arg) => Promise<void> | void) {\n return async (...args: Arg) => {\n state.loading = true\n if (state.row) {\n state.row.operating = true\n }\n try {\n await fn.apply(null, args)\n } catch (error) {\n console.error(error)\n }\n state.loading = false\n if (state.row) {\n state.row.operating = false\n }\n }\n }\n\n /** 保存 */\n const handleSave = runWithLoading(async () => {\n const { model, saveMethod } = props\n const valid = await formRef.value?.validate()\n if (!model || !valid) return\n\n let item = getInsertData()\n\n // 新增\n if (state.formActionType === 'create' || state.formActionType === 'createChild') {\n await props.beforeCreate?.(item, state.parentRow?.data)\n if (saveMethod) {\n const result = await saveMethod(item, state.formActionType, state.parentRow?.data)\n if (result) {\n item = result\n }\n }\n insert(item)\n\n // 推进插入点,便于连续新增;并重置表单到初始默认值\n const next = last(state.indexPath) + 1\n state.indexPath = [...state.indexPath.slice(0, -1), next]\n formRef.value?.reset()\n return\n }\n\n // 普通模式下的编辑\n if (saveMethod) {\n const result = await saveMethod(item, state.formActionType, state.parentRow?.data)\n if (result) {\n item = result\n }\n }\n\n const { row } = state\n row &&\n Object.keys(item).forEach((key) => {\n o(row.data).set(key, o(item).get(key))\n })\n })\n\n const handleDelete = runWithLoading(async (row: TableRow) => {\n const { deleteMethod } = props\n\n if (deleteMethod) {\n const result = await deleteMethod([row.data])\n if (result === false) {\n return\n }\n }\n\n const data = [...(props.data ?? [])]\n\n const parent = visitDataByIndexPath(data, row.indexes.slice(0, -1), childrenKey.value)\n\n if (parent) {\n const children = parent[childrenKey.value]\n if (children) {\n children.splice(row.index, 1)\n } else {\n console.error('行路径不正确')\n }\n } else {\n data.splice(row.index, 1)\n }\n\n if (state.row === row) {\n resetState()\n }\n\n emit('update:data', data)\n })\n\n function handleClose() {\n resetState()\n }\n\n return {\n handleDelete,\n handleInsertChild,\n handleInsertToNext,\n handleInsertToPrev,\n handleCreate,\n handleClose,\n handleSave\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../../src/components/breadcrumb/breadcrumb.vue"],"sourcesContent":["<template>\n <nav :class=\"[cls.b, cls.m(size)]\" aria-label=\"Breadcrumb\">\n <ol :class=\"cls.e('list')\">\n <template v-for=\"(item, index) in props.items\" :key=\"index\">\n <li :class=\"cls.e('item')\">\n <slot name=\"item\" v-bind=\"{ item, index, isLast: index === props.items.length - 1 }\">\n <a\n v-if=\"isAnchor(item, index)\"\n :class=\"linkClass(item, index)\"\n :href=\"item.href\"\n :aria-disabled=\"item.disabled ? 'true' : undefined\"\n :tabindex=\"item.disabled ? -1 : undefined\"\n @click=\"handleAnchorClick($event, item, index)\"\n >\n {{ item.title }}\n </a>\n <span\n v-else-if=\"isActionSpan(item, index)\"\n :class=\"linkClass(item, index)\"\n role=\"link\"\n :tabindex=\"item.disabled ? -1 : 0\"\n @click=\"handleSpanClick($event, item, index)\"\n @keydown=\"handleSpanKeydown($event, item, index)\"\n >\n {{ item.title }}\n </span>\n <span v-else :class=\"innerClass(true)\" aria-current=\"page\">{{ item.title }}</span>\n </slot>\n </li>\n <li v-if=\"index < props.items.length - 1\" :class=\"cls.e('separator')\" aria-hidden=\"true\">\n <slot name=\"separator\">/</slot>\n </li>\n </template>\n </ol>\n </nav>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type {\n BreadcrumbEmits,\n BreadcrumbItem,\n BreadcrumbProps,\n BreadcrumbSlotScope,\n ComponentSize\n} from '../../types'\n\ndefineOptions({ name: 'UBreadcrumb' })\n\nconst props = withDefaults(defineProps<BreadcrumbProps>(), { lastLinked: false })\n\nconst emit = defineEmits<BreadcrumbEmits>()\n\ndefineSlots<{ item?: (scope: BreadcrumbSlotScope) => unknown; separator?: () => unknown }>()\n\nconst cls = bem('breadcrumb')\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst isLast = (index: number) => index === props.items.length - 1\n\nconst isLinked = (item: BreadcrumbItem, index: number) => {\n if (item.disabled) return false\n if (isLast(index)) return props.lastLinked\n return true\n}\n\nconst isAnchor = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !!item.href\n\nconst isActionSpan = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !item.href\n\nconst innerClass = (current: boolean) => [cls.e('inner'), current && bem.is('current', current)]\n\nconst linkClass = (item: BreadcrumbItem, index: number) => [\n cls.e('inner'),\n cls.e('link'),\n bem.is('disabled', !!item.disabled),\n bem.is('current', isLast(index) && !props.lastLinked)\n]\n\nconst handleAnchorClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n ev.stopPropagation()\n }\n}\n\nconst handleSpanClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n return\n }\n emit('click', item, index, ev)\n}\n\nconst handleSpanKeydown = (ev: KeyboardEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) return\n if (ev.key !== 'Enter' && ev.key !== ' ') return\n ev.preventDefault()\n emit('click', item, index, ev)\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../../src/components/breadcrumb/breadcrumb.vue"],"sourcesContent":["<template>\n <nav :class=\"[cls.b, cls.m(size)]\" aria-label=\"Breadcrumb\">\n <ol :class=\"cls.e('list')\">\n <template v-for=\"(item, index) in props.items\" :key=\"index\">\n <li :class=\"cls.e('item')\">\n <slot name=\"item\" v-bind=\"{ item, index, isLast: index === props.items.length - 1 }\">\n <a\n v-if=\"isAnchor(item, index)\"\n :class=\"linkClass(item, index)\"\n :href=\"item.href\"\n :aria-disabled=\"item.disabled ? 'true' : undefined\"\n :tabindex=\"item.disabled ? -1 : undefined\"\n @click=\"handleAnchorClick($event, item, index)\"\n >\n {{ item.title }}\n </a>\n <span\n v-else-if=\"isActionSpan(item, index)\"\n :class=\"linkClass(item, index)\"\n role=\"link\"\n :tabindex=\"item.disabled ? -1 : 0\"\n @click=\"handleSpanClick($event, item, index)\"\n @keydown=\"handleSpanKeydown($event, item, index)\"\n >\n {{ item.title }}\n </span>\n <span v-else :class=\"innerClass(true)\" aria-current=\"page\">{{ item.title }}</span>\n </slot>\n </li>\n <li v-if=\"index < props.items.length - 1\" :class=\"cls.e('separator')\" aria-hidden=\"true\">\n <slot name=\"separator\">/</slot>\n </li>\n </template>\n </ol>\n </nav>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type {\n BreadcrumbEmits,\n BreadcrumbItem,\n BreadcrumbProps,\n BreadcrumbSlotScope,\n ComponentSize\n} from '../../types'\n\ndefineOptions({ name: 'UBreadcrumb' })\n\nconst props = withDefaults(defineProps<BreadcrumbProps>(), { lastLinked: false })\n\nconst emit = defineEmits<BreadcrumbEmits>()\n\ndefineSlots<{ item?: (scope: BreadcrumbSlotScope) => unknown; separator?: () => unknown }>()\n\nconst cls = bem('breadcrumb')\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst isLast = (index: number) => index === props.items.length - 1\n\nconst isLinked = (item: BreadcrumbItem, index: number) => {\n if (item.disabled) return false\n if (isLast(index)) return props.lastLinked\n return true\n}\n\nconst isAnchor = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !!item.href\n\nconst isActionSpan = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !item.href\n\nconst innerClass = (current: boolean) => [cls.e('inner'), current && bem.is('current', current)]\n\nconst linkClass = (item: BreadcrumbItem, index: number) => [\n cls.e('inner'),\n cls.e('link'),\n bem.is('disabled', !!item.disabled),\n bem.is('current', isLast(index) && !props.lastLinked)\n]\n\nconst handleAnchorClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n ev.stopPropagation()\n }\n}\n\nconst handleSpanClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n return\n }\n emit('click', item, index, ev)\n}\n\nconst handleSpanKeydown = (ev: KeyboardEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) return\n if (ev.key !== 'Enter' && ev.key !== ' ') return\n ev.preventDefault()\n emit('click', item, index, ev)\n}\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button/button-group.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot v-bind=\"{ props }\" />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { ButtonProps } from '../../types'\n\ndefineOptions({ name: 'UButtonGroup' })\n\nconst props = defineProps<ButtonProps>()\n\nconst cls = bem('button-group')\n\ndefineSlots<{ default: (props: { props: ButtonProps }) => any }>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,cAAc;;uBAd5B,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAAA,CAChB,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAX,MAAK,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button/button-group.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot v-bind=\"{ props }\" />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { ButtonProps } from '../../types'\n\ndefineOptions({ name: 'UButtonGroup' })\n\nconst props = defineProps<ButtonProps>()\n\nconst cls = bem('button-group')\n\ndefineSlots<{ default: (props: { props: ButtonProps }) => any }>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,cAAc;;GAd5B,OAAA,UAAA,GAAA,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAChB,CAAA,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAX,MAAK,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"classList\"\n type=\"button\"\n aria-label=\"button\"\n ref=\"buttonRef\"\n v-ripple=\"ripple\"\n @click=\"handleClick\"\n >\n <!-- 加载图标 -->\n <u-icon v-if=\"loading\" :class=\"[bem.is('loading')]\" :size=\"iconSize\">\n <component :is=\"loadingIcon\" />\n </u-icon>\n\n <!-- 左侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'left' && !loading\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n\n <slot />\n\n <!-- 右侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'right'\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ButtonEmits, ButtonProps, _ButtonExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UButton' })\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n iconPosition: 'left',\n loadingIcon: () => Loading,\n disabled: false,\n propagate: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst emit = defineEmits<ButtonEmits>()\n\nconst cls = bem('button')\n\nconst classList = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n props.type && cls.m('color-' + props.type),\n bem.is('circle', props.circle),\n bem.is('disabled', props.disabled),\n bem.is('loading', props.loading),\n bem.is('plain', props.plain),\n bem.is('text', props.text)\n ]\n})\n\nconst ripple = computed(() => {\n if (props.disabled || props.loading) return false\n if ((props.plain || props.text) && props.type) {\n return bem.is(`ripple-${props.type}`)\n }\n return true\n})\n\nconst handleClick = (e: MouseEvent) => {\n if (props.disabled || props.loading) {\n e.stopPropagation()\n return\n }\n\n !props.propagate && e.stopPropagation()\n\n emit('click', e)\n}\n\nconst buttonRef = shallowRef<HTMLButtonElement>()\n\nconst exposed: _ButtonExposed = { el: buttonRef }\n\ndefineExpose(exposed)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EAOd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,QAAQ;EAExB,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,IAAI;IACzC,IAAI,GAAG,UAAU,MAAM,MAAM;IAC7B,IAAI,GAAG,YAAY,MAAM,QAAQ;IACjC,IAAI,GAAG,WAAW,MAAM,OAAO;IAC/B,IAAI,GAAG,SAAS,MAAM,KAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,IAAI;GAC3B;EACF,CAAC;EAED,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,MAAM,SAAS,OAAO;GAC5C,KAAK,MAAM,SAAS,MAAM,SAAS,MAAM,MACvC,OAAO,IAAI,GAAG,UAAU,MAAM,MAAM;GAEtC,OAAO;EACT,CAAC;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,MAAM,YAAY,MAAM,SAAS;IACnC,EAAE,gBAAgB;IAClB;GACF;GAEA,CAAC,MAAM,aAAa,EAAE,gBAAgB;GAEtC,KAAK,SAAS,CAAC;EACjB;EAEA,MAAM,YAAY,WAA8B;EAIhD,SAAa,EAFqB,IAAI,UAEzB,CAAO;;uCAxFlB,mBAwBS,UAAA;IAvBN,OAAK,eAAE,UAAA,KAAS;IACjB,MAAK;IACL,cAAW;aACP;IAAJ,KAAI;IAEH,SAAO;;IAER,mBAAA,QAAA;IACc,QAAA,WAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;KAFe,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAE,SAAA,CAAA,CAAA;KAAe,MAAM,QAAA;;4BAC1B,EAAA,UAAA,GAA/B,YAA+B,wBAAf,QAAA,WAAW,CAAA,EAAA,CAAA;;;IAG7B,mBAAA,QAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,UAAA,CAAgB,QAAA,WAAA,UAAA,GAApD,YAES,MAAA,WAAA,GAAA;;KAFqD,MAAM,QAAA;;4BAC1C,EAAA,UAAA,GAAxB,YAAwB,wBAAR,QAAA,IAAI,CAAA,EAAA,CAAA;;;IAGtB,WAAQ,KAAA,QAAA,SAAA;IAER,mBAAA,QAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,WAAA,UAAA,GAApC,YAES,MAAA,WAAA,GAAA;;KAF0C,MAAM,QAAA;;4BAC/B,EAAA,UAAA,GAAxB,YAAwB,wBAAR,QAAA,IAAI,CAAA,EAAA,CAAA;;;6BAjBZ,OAAA,KAAM,CAAA,CAAA"}
1
+ {"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"classList\"\n type=\"button\"\n aria-label=\"button\"\n ref=\"buttonRef\"\n v-ripple=\"ripple\"\n @click=\"handleClick\"\n >\n <!-- 加载图标 -->\n <u-icon v-if=\"loading\" :class=\"[bem.is('loading')]\" :size=\"iconSize\">\n <component :is=\"loadingIcon\" />\n </u-icon>\n\n <!-- 左侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'left' && !loading\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n\n <slot />\n\n <!-- 右侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'right'\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ButtonEmits, ButtonProps, _ButtonExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UButton' })\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n iconPosition: 'left',\n loadingIcon: () => Loading,\n disabled: false,\n propagate: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst emit = defineEmits<ButtonEmits>()\n\nconst cls = bem('button')\n\nconst classList = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n props.type && cls.m('color-' + props.type),\n bem.is('circle', props.circle),\n bem.is('disabled', props.disabled),\n bem.is('loading', props.loading),\n bem.is('plain', props.plain),\n bem.is('text', props.text)\n ]\n})\n\nconst ripple = computed(() => {\n if (props.disabled || props.loading) return false\n if ((props.plain || props.text) && props.type) {\n return bem.is(`ripple-${props.type}`)\n }\n return true\n})\n\nconst handleClick = (e: MouseEvent) => {\n if (props.disabled || props.loading) {\n e.stopPropagation()\n return\n }\n\n !props.propagate && e.stopPropagation()\n\n emit('click', e)\n}\n\nconst buttonRef = shallowRef<HTMLButtonElement>()\n\nconst exposed: _ButtonExposed = { el: buttonRef }\n\ndefineExpose(exposed)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EAOd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,QAAQ;EAExB,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,IAAI;IACzC,IAAI,GAAG,UAAU,MAAM,MAAM;IAC7B,IAAI,GAAG,YAAY,MAAM,QAAQ;IACjC,IAAI,GAAG,WAAW,MAAM,OAAO;IAC/B,IAAI,GAAG,SAAS,MAAM,KAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,IAAI;GAC3B;EACF,CAAC;EAED,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,MAAM,SAAS,OAAO;GAC5C,KAAK,MAAM,SAAS,MAAM,SAAS,MAAM,MACvC,OAAO,IAAI,GAAG,UAAU,MAAM,MAAM;GAEtC,OAAO;EACT,CAAC;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,MAAM,YAAY,MAAM,SAAS;IACnC,EAAE,gBAAgB;IAClB;GACF;GAEA,CAAC,MAAM,aAAa,EAAE,gBAAgB;GAEtC,KAAK,SAAS,CAAC;EACjB;EAEA,MAAM,YAAY,WAA8B;EAIhD,SAAa,EAFqB,IAAI,UAEzB,CAAO;;GAxFlB,OAAA,gBAAA,UAAA,GAAA,mBAwBS,UAAA;IAvBN,OAAK,eAAE,UAAA,KAAS;IACjB,MAAK;IACL,cAAW;IACP,SAAA;IAAJ,KAAI;IAEH,SAAO;;IAER,mBAAA,QAAA;IACc,QAAA,WAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;KAFe,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAE,SAAA,CAAA,CAAA;KAAe,MAAM,QAAA;;KAC1B,SAAA,cAAA,EAAA,UAAA,GAA/B,YAA+B,wBAAf,QAAA,WAAW,CAAA,EAAA,CAAA;;;IAG7B,mBAAA,QAAA;IACgB,CAAA,CAAA,QAAA,QAAQ,QAAA,iBAAY,UAAA,CAAgB,QAAA,WAAA,UAAA,GAApD,YAES,MAAA,WAAA,GAAA;;KAFqD,MAAM,QAAA;;KAC1C,SAAA,cAAA,EAAA,UAAA,GAAxB,YAAwB,wBAAR,QAAA,IAAI,CAAA,EAAA,CAAA;;;IAGtB,WAAQ,KAAA,QAAA,SAAA;IAER,mBAAA,QAAA;IACgB,CAAA,CAAA,QAAA,QAAQ,QAAA,iBAAY,WAAA,UAAA,GAApC,YAES,MAAA,WAAA,GAAA;;KAF0C,MAAM,QAAA;;KAC/B,SAAA,cAAA,EAAA,UAAA,GAAxB,YAAwB,wBAAR,QAAA,IAAI,CAAA,EAAA,CAAA;;;GAjBZ,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,OAAA,GAAA,OAAA,KAAM,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/calendar/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <ul :class=\"cls.e('days')\">\n <li\n :class=\"[cls.e('day'), cls.em('day', day.type)]\"\n v-for=\"day of days\"\n :key=\"day.date.timestamp\"\n >\n {{ day.date.day }}\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CalendarProps } from '../../types'\nimport { getMonthDays } from './utils'\n\ndefineOptions({ name: 'UCalendar' })\n\ndefineProps<CalendarProps>()\n\nconst model = defineModel<string>()\n\nconst cls = bem('calendar')\n\nconst days = computed(() => {\n return getMonthDays(model.value ?? new Date())\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAyBA,MAAM,QAAQ,SAAmB,SAAA,YAAC;EAElC,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,OAAO,eAAe;GAC1B,OAAO,aAAa,MAAM,yBAAS,IAAI,KAAK,CAAC;EAC/C,CAAC;;uBA9BC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAAA,CAChB,mBAQK,MAAA,EARA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAMK,UAAA,MAAA,WAJW,KAAA,QAAP,QAAG;wBAFZ,mBAMK,MAAA;KALF,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,EAAC,KAAA,GAAS,MAAA,GAAA,CAAG,CAAC,GAAE,OAAQ,IAAI,IAAI,CAAA,CAAA;KAE5C,KAAK,IAAI,KAAK;uBAEZ,IAAI,KAAK,GAAG,GAAA,CAAA"}
1
+ {"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/calendar/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <ul :class=\"cls.e('days')\">\n <li\n :class=\"[cls.e('day'), cls.em('day', day.type)]\"\n v-for=\"day of days\"\n :key=\"day.date.timestamp\"\n >\n {{ day.date.day }}\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CalendarProps } from '../../types'\nimport { getMonthDays } from './utils'\n\ndefineOptions({ name: 'UCalendar' })\n\ndefineProps<CalendarProps>()\n\nconst model = defineModel<string>()\n\nconst cls = bem('calendar')\n\nconst days = computed(() => {\n return getMonthDays(model.value ?? new Date())\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAyBA,MAAM,QAAQ,SAAmB,SAAA,YAAC;EAElC,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,OAAO,eAAe;GAC1B,OAAO,aAAa,MAAM,yBAAS,IAAI,KAAK,CAAC;EAC/C,CAAC;;GA9BC,OAAA,UAAA,GAAA,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAChB,CAAA,mBAQK,MAAA,EARA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GACf,EAAA,UAAA,IAAA,GAAA,mBAMK,UAAA,MAAA,WAJW,KAAA,QAAP,QAAG;IAFZ,OAAA,UAAA,GAAA,mBAMK,MAAA;KALF,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,EAAC,KAAA,GAAS,MAAA,GAAA,CAAG,CAAC,GAAE,OAAQ,IAAI,IAAI,CAAA,CAAA;KAE5C,KAAK,IAAI,KAAK;IAEZ,GAAA,gBAAA,IAAI,KAAK,GAAG,GAAA,CAAA"}
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1 +1 @@
1
- {"version":3,"file":"card-action.js","names":[],"sources":["../../../src/components/card/card-action.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('action')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type CSSProperties, computed, inject } from 'vue'\n\nimport type { CardActionProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'UCardAction' })\n\nconst props = defineProps<CardActionProps>()\n\nconst style = computed<CSSProperties>(() => {\n return { textAlign: props.alignRight ? 'right' : undefined }\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardAction组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA8B;GAC1C,OAAO,EAAE,WAAW,MAAM,aAAa,UAAU,KAAA,EAAU;EAC7D,CAAC;EAED,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,0BAA0B;;uBAvBvC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,GAAA,CAAG,EAAE,EAAC,QAAA,CAAA;IAAa,OAAK,eAAE,MAAA,KAAK;OAC1C,WAAc,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"card-action.js","names":[],"sources":["../../../src/components/card/card-action.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('action')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type CSSProperties, computed, inject } from 'vue'\n\nimport type { CardActionProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'UCardAction' })\n\nconst props = defineProps<CardActionProps>()\n\nconst style = computed<CSSProperties>(() => {\n return { textAlign: props.alignRight ? 'right' : undefined }\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardAction组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA8B;GAC1C,OAAO,EAAE,WAAW,MAAM,aAAa,UAAU,KAAA,EAAU;EAC7D,CAAC;EAED,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,0BAA0B;;GAvBvC,OAAA,UAAA,GAAA,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,GAAA,CAAG,EAAE,EAAC,QAAA,CAAA;IAAa,OAAK,eAAE,MAAA,KAAK;GAC1C,GAAA,CAAA,WAAc,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"card-content.js","names":[],"sources":["../../../src/components/card/card-content.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('content')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, type CSSProperties } from 'vue'\n\nimport type { CardContentProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'UCardContent' })\n\nconst props = defineProps<CardContentProps>()\n\nconst style = computed<CSSProperties | undefined>(() => {\n return props.cover ? { padding: 0, fontSize: 0 } : undefined\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardContent组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA0C;GACtD,OAAO,MAAM,QAAQ;IAAE,SAAS;IAAG,UAAU;GAAE,IAAI,KAAA;EACrD,CAAC;EAED,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,2BAA2B;;uBAvBxC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,GAAA,CAAG,EAAE,EAAC,SAAA,CAAA;IAAc,OAAK,eAAE,MAAA,KAAK;OAC3C,WAAc,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"card-content.js","names":[],"sources":["../../../src/components/card/card-content.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('content')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, type CSSProperties } from 'vue'\n\nimport type { CardContentProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'UCardContent' })\n\nconst props = defineProps<CardContentProps>()\n\nconst style = computed<CSSProperties | undefined>(() => {\n return props.cover ? { padding: 0, fontSize: 0 } : undefined\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardContent组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA0C;GACtD,OAAO,MAAM,QAAQ;IAAE,SAAS;IAAG,UAAU;GAAE,IAAI,KAAA;EACrD,CAAC;EAED,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,2BAA2B;;GAvBxC,OAAA,UAAA,GAAA,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,GAAA,CAAG,EAAE,EAAC,SAAA,CAAA;IAAc,OAAK,eAAE,MAAA,KAAK;GAC3C,GAAA,CAAA,WAAc,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"card-cover.js","names":[],"sources":["../../../src/components/card/card-cover.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('cover')\" :style=\"style\">\n <img\n v-if=\"src\"\n :src=\"src\"\n draggable=\"false\"\n alt=\"封面\"\n :class=\"bem.is('height-fixed', props.height !== undefined)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { withUnit, bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { CardCoverProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'UCardCover' })\n\nconst props = defineProps<CardCoverProps>()\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardCover组件仅能在Card组件中使用')\n}\n\nconst style = computed(() => {\n return { height: withUnit(props.height, 'px') }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAEd,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,yBAAyB;EAGxC,MAAM,QAAQ,eAAe;GAC3B,OAAO,EAAE,QAAQ,SAAS,MAAM,QAAQ,IAAI,EAAE;EAChD,CAAC;;uBA/BC,mBAQM,OAAA;IARA,OAAK,eAAE,MAAA,GAAA,CAAG,EAAE,EAAC,OAAA,CAAA;IAAY,OAAK,eAAE,MAAA,KAAK;OAEjC,QAAA,OAAA,UAAA,GADR,mBAME,OAAA;;IAJC,KAAK,QAAA;IACN,WAAU;IACV,KAAI;IACH,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,GAAE,gBAAiB,MAAM,WAAW,KAAA,CAAS,CAAA"}
1
+ {"version":3,"file":"card-cover.js","names":[],"sources":["../../../src/components/card/card-cover.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('cover')\" :style=\"style\">\n <img\n v-if=\"src\"\n :src=\"src\"\n draggable=\"false\"\n alt=\"封面\"\n :class=\"bem.is('height-fixed', props.height !== undefined)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { withUnit, bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { CardCoverProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'UCardCover' })\n\nconst props = defineProps<CardCoverProps>()\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardCover组件仅能在Card组件中使用')\n}\n\nconst style = computed(() => {\n return { height: withUnit(props.height, 'px') }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAEd,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,yBAAyB;EAGxC,MAAM,QAAQ,eAAe;GAC3B,OAAO,EAAE,QAAQ,SAAS,MAAM,QAAQ,IAAI,EAAE;EAChD,CAAC;;GA/BC,OAAA,UAAA,GAAA,mBAQM,OAAA;IARA,OAAK,eAAE,MAAA,GAAA,CAAG,EAAE,EAAC,OAAA,CAAA;IAAY,OAAK,eAAE,MAAA,KAAK;GAEjC,GAAA,CAAA,QAAA,OAAA,UAAA,GADR,mBAME,OAAA;;IAJC,KAAK,QAAA;IACN,WAAU;IACV,KAAI;IACH,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,GAAE,gBAAiB,MAAM,WAAW,KAAA,CAAS,CAAA"}