@veltra/desktop 1.2.10 → 1.2.13

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 (449) hide show
  1. package/dist/components/action/action-group.js.map +1 -1
  2. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js +2 -2
  3. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
  4. package/dist/components/action/action.js +2 -2
  5. package/dist/components/action/action.js.map +1 -1
  6. package/dist/components/auto-complete/auto-complete.js +4 -4
  7. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  8. package/dist/components/auto-complete/use-keyboard.js.map +1 -1
  9. package/dist/components/badge/badge.js +2 -2
  10. package/dist/components/badge/badge.js.map +1 -1
  11. package/dist/components/batch-edit/batch-edit-form.js +2 -2
  12. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  13. package/dist/components/batch-edit/batch-edit-list.js +2 -2
  14. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  15. package/dist/components/batch-edit/batch-edit.js +2 -2
  16. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  17. package/dist/components/batch-edit/use-edit-state.js.map +1 -1
  18. package/dist/components/batch-edit/use-features.js.map +1 -1
  19. package/dist/components/batch-edit/use-handlers.js.map +1 -1
  20. package/dist/components/breadcrumb/breadcrumb.js +2 -2
  21. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  22. package/dist/components/button/button-group.js +2 -2
  23. package/dist/components/button/button-group.js.map +1 -1
  24. package/dist/components/button/button.js +2 -2
  25. package/dist/components/button/button.js.map +1 -1
  26. package/dist/components/calendar/calendar.js +3 -3
  27. package/dist/components/calendar/calendar.js.map +1 -1
  28. package/dist/components/calendar/utils.js.map +1 -1
  29. package/dist/components/card/card-action.js +2 -2
  30. package/dist/components/card/card-action.js.map +1 -1
  31. package/dist/components/card/card-content.js +2 -2
  32. package/dist/components/card/card-content.js.map +1 -1
  33. package/dist/components/card/card-cover.js +2 -2
  34. package/dist/components/card/card-cover.js.map +1 -1
  35. package/dist/components/card/card-header.js +2 -2
  36. package/dist/components/card/card-header.js.map +1 -1
  37. package/dist/components/card/card.js +2 -2
  38. package/dist/components/card/card.js.map +1 -1
  39. package/dist/components/cascade/cascade-panel-item.js +1 -1
  40. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  41. package/dist/components/cascade/cascade.js +7 -3
  42. package/dist/components/cascade/cascade.js.map +1 -1
  43. package/dist/components/cascade/cascade.vue.d.ts +8 -5
  44. package/dist/components/cascade/use-check.js +3 -1
  45. package/dist/components/cascade/use-check.js.map +1 -1
  46. package/dist/components/cascade/use-data-map.js.map +1 -1
  47. package/dist/components/cascade/use-select.js +30 -14
  48. package/dist/components/cascade/use-select.js.map +1 -1
  49. package/dist/components/check-tag/check-tag.js +2 -2
  50. package/dist/components/check-tag/check-tag.js.map +1 -1
  51. package/dist/components/checkbox/checkbox-button.js +4 -4
  52. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  53. package/dist/components/checkbox/checkbox.js +4 -4
  54. package/dist/components/checkbox/checkbox.js.map +1 -1
  55. package/dist/components/checkbox-group/checkbox-group.js +4 -4
  56. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  57. package/dist/components/code-editor/basic-setup.js +44 -0
  58. package/dist/components/code-editor/basic-setup.js.map +1 -0
  59. package/dist/components/code-editor/code-editor.js +5 -5
  60. package/dist/components/code-editor/code-editor.js.map +1 -1
  61. package/dist/components/collapse/collapse-item.js +2 -2
  62. package/dist/components/collapse/collapse-item.js.map +1 -1
  63. package/dist/components/collapse/collapse.js +2 -2
  64. package/dist/components/collapse/collapse.js.map +1 -1
  65. package/dist/components/condition-editor/components/condition-group.js +2 -2
  66. package/dist/components/condition-editor/components/condition-group.js.map +1 -1
  67. package/dist/components/condition-editor/components/condition-row.js +2 -2
  68. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  69. package/dist/components/condition-editor/condition-editor.js +2 -2
  70. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  71. package/dist/components/condition-editor/core/evaluator.js.map +1 -1
  72. package/dist/components/contextmenu/contextmenu-item.js +2 -2
  73. package/dist/components/contextmenu/contextmenu-item.js.map +1 -1
  74. package/dist/components/contextmenu/contextmenu-panel.js +2 -2
  75. package/dist/components/contextmenu/contextmenu-panel.js.map +1 -1
  76. package/dist/components/contextmenu/contextmenu-sub.js +2 -2
  77. package/dist/components/contextmenu/contextmenu-sub.js.map +1 -1
  78. package/dist/components/contextmenu/contextmenu.js +2 -2
  79. package/dist/components/contextmenu/contextmenu.js.map +1 -1
  80. package/dist/components/date-panel/date-panel.js +2 -2
  81. package/dist/components/date-panel/date-panel.js.map +1 -1
  82. package/dist/components/date-panel/headers/day.js +2 -2
  83. package/dist/components/date-panel/headers/day.js.map +1 -1
  84. package/dist/components/date-panel/headers/month.js +2 -2
  85. package/dist/components/date-panel/headers/month.js.map +1 -1
  86. package/dist/components/date-panel/headers/year.js +2 -2
  87. package/dist/components/date-panel/headers/year.js.map +1 -1
  88. package/dist/components/date-panel/panels/day.js +2 -2
  89. package/dist/components/date-panel/panels/day.js.map +1 -1
  90. package/dist/components/date-panel/panels/month.js +2 -2
  91. package/dist/components/date-panel/panels/month.js.map +1 -1
  92. package/dist/components/date-panel/panels/year.js +2 -2
  93. package/dist/components/date-panel/panels/year.js.map +1 -1
  94. package/dist/components/date-panel/use-panel-date.js.map +1 -1
  95. package/dist/components/date-picker/date-picker.js +2 -2
  96. package/dist/components/date-picker/date-picker.js.map +1 -1
  97. package/dist/components/date-range-picker/date-range-picker.js +2 -2
  98. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  99. package/dist/components/dialog/dialog.js +4 -4
  100. package/dist/components/dialog/dialog.js.map +1 -1
  101. package/dist/components/drawer/drawer.js +4 -4
  102. package/dist/components/drawer/drawer.js.map +1 -1
  103. package/dist/components/dropdown/dropdown.js +2 -2
  104. package/dist/components/dropdown/dropdown.js.map +1 -1
  105. package/dist/components/dual-nav/dual-nav-app.js +2 -2
  106. package/dist/components/dual-nav/dual-nav-app.js.map +1 -1
  107. package/dist/components/dual-nav/dual-nav.js +2 -2
  108. package/dist/components/dual-nav/dual-nav.js.map +1 -1
  109. package/dist/components/empty/empty.js +2 -2
  110. package/dist/components/empty/empty.js.map +1 -1
  111. package/dist/components/expression-editor/components/path-preview.js +2 -2
  112. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  113. package/dist/components/expression-editor/components/variable-picker.js +2 -2
  114. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  115. package/dist/components/expression-editor/core/editor.js.map +1 -1
  116. package/dist/components/expression-editor/core/model.js.map +1 -1
  117. package/dist/components/expression-editor/expression-editor.js +2 -2
  118. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  119. package/dist/components/file-picker/file-picker.js +2 -2
  120. package/dist/components/file-picker/file-picker.js.map +1 -1
  121. package/dist/components/file-picker/helper.js.map +1 -1
  122. package/dist/components/file-viewer/file-viewer.js +4 -4
  123. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  124. package/dist/components/file-viewer/helper.js.map +1 -1
  125. package/dist/components/file-viewer/previewers/docx-previewer.js +2 -2
  126. package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
  127. package/dist/components/file-viewer/previewers/image-previewer.js +2 -2
  128. package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
  129. package/dist/components/file-viewer/previewers/pdf-previewer.js +2 -2
  130. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  131. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js +2 -2
  132. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  133. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js +2 -2
  134. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  135. package/dist/components/file-viewer/previewers/sheet-previewer.js +2 -2
  136. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  137. package/dist/components/file-viewer/previewers/text-previewer.js +2 -2
  138. package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
  139. package/dist/components/file-viewer/previewers/video-previewer.js +2 -2
  140. package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
  141. package/dist/components/file-viewer/sheet-parser.js.map +1 -1
  142. package/dist/components/float-button/float-button.js +2 -2
  143. package/dist/components/float-button/float-button.js.map +1 -1
  144. package/dist/components/form/form.js.map +1 -1
  145. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +1 -1
  146. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  147. package/dist/components/form/use-form-fields.js.map +1 -1
  148. package/dist/components/form/use-node-interceptor.js +1 -1
  149. package/dist/components/form/use-node-interceptor.js.map +1 -1
  150. package/dist/components/form-item/form-item.js.map +1 -1
  151. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +1 -1
  152. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/components/form-item/validate.js.map +1 -1
  154. package/dist/components/gantt-chart/gantt-chart.js +2 -2
  155. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  156. package/dist/components/grid/breakpoint.js.map +1 -1
  157. package/dist/components/grid/grid-item.js +2 -2
  158. package/dist/components/grid/grid-item.js.map +1 -1
  159. package/dist/components/grid/grid.js +2 -2
  160. package/dist/components/grid/grid.js.map +1 -1
  161. package/dist/components/grid-input/grid-input.js +2 -2
  162. package/dist/components/grid-input/grid-input.js.map +1 -1
  163. package/dist/components/grid-input/grid-input.vue.d.ts +1 -1
  164. package/dist/components/group-input/group-input.js +2 -2
  165. package/dist/components/group-input/group-input.js.map +1 -1
  166. package/dist/components/icon/icon.js +2 -2
  167. package/dist/components/icon/icon.js.map +1 -1
  168. package/dist/components/input/input.js.map +1 -1
  169. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js +1 -1
  170. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  171. package/dist/components/kbd/kbd.js +2 -2
  172. package/dist/components/kbd/kbd.js.map +1 -1
  173. package/dist/components/layout/layout-resizer.js +2 -2
  174. package/dist/components/layout/layout-resizer.js.map +1 -1
  175. package/dist/components/layout/layout.js +2 -2
  176. package/dist/components/layout/layout.js.map +1 -1
  177. package/dist/components/list/list-item.js +2 -2
  178. package/dist/components/list/list-item.js.map +1 -1
  179. package/dist/components/list/list.js +2 -2
  180. package/dist/components/list/list.js.map +1 -1
  181. package/dist/components/loading/directive.js.map +1 -1
  182. package/dist/components/loading/loading.js +2 -2
  183. package/dist/components/loading/loading.js.map +1 -1
  184. package/dist/components/message/message-box.js +2 -2
  185. package/dist/components/message/message-box.js.map +1 -1
  186. package/dist/components/message/message.js +2 -2
  187. package/dist/components/message/message.js.map +1 -1
  188. package/dist/components/message/message2.js.map +1 -1
  189. package/dist/components/message-confirm/message-confirm.js +2 -2
  190. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  191. package/dist/components/multi-select/multi-select-option.js +2 -2
  192. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  193. package/dist/components/multi-select/multi-select.js +4 -4
  194. package/dist/components/multi-select/multi-select.js.map +1 -1
  195. package/dist/components/multi-tree-select/multi-tree-select.js +4 -4
  196. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  197. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +1 -1
  198. package/dist/components/nav/nav-icon.js +2 -2
  199. package/dist/components/nav/nav-icon.js.map +1 -1
  200. package/dist/components/nav/nav-item-collapsed.js +2 -2
  201. package/dist/components/nav/nav-item-collapsed.js.map +1 -1
  202. package/dist/components/nav/nav-item.js +2 -2
  203. package/dist/components/nav/nav-item.js.map +1 -1
  204. package/dist/components/nav/nav-sub-collapsed.js +2 -2
  205. package/dist/components/nav/nav-sub-collapsed.js.map +1 -1
  206. package/dist/components/nav/nav-sub.js +2 -2
  207. package/dist/components/nav/nav-sub.js.map +1 -1
  208. package/dist/components/nav/nav.js +2 -2
  209. package/dist/components/nav/nav.js.map +1 -1
  210. package/dist/components/notification/index.js.map +1 -1
  211. package/dist/components/notification/notification.js +2 -2
  212. package/dist/components/notification/notification.js.map +1 -1
  213. package/dist/components/number/number.js +2 -2
  214. package/dist/components/number/number.js.map +1 -1
  215. package/dist/components/number-input/number-input.js +4 -4
  216. package/dist/components/number-input/number-input.js.map +1 -1
  217. package/dist/components/number-range-input/number-range-input.js +4 -4
  218. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  219. package/dist/components/number-range-input/number-range-input.vue.d.ts +1 -1
  220. package/dist/components/paginator/paginator.js +4 -4
  221. package/dist/components/paginator/paginator.js.map +1 -1
  222. package/dist/components/palette/color-transform.js.map +1 -1
  223. package/dist/components/palette/palette-alpha.js +2 -2
  224. package/dist/components/palette/palette-alpha.js.map +1 -1
  225. package/dist/components/palette/palette-color-switch.js +1 -1
  226. package/dist/components/palette/palette-color-switch.js.map +1 -1
  227. package/dist/components/palette/palette-hue.js +2 -2
  228. package/dist/components/palette/palette-hue.js.map +1 -1
  229. package/dist/components/palette/palette-sv.js +2 -2
  230. package/dist/components/palette/palette-sv.js.map +1 -1
  231. package/dist/components/palette/palette.js +3 -3
  232. package/dist/components/palette/palette.js.map +1 -1
  233. package/dist/components/palette/use-hsv.js.map +1 -1
  234. package/dist/components/password-input/password-input.js +3 -3
  235. package/dist/components/password-input/password-input.js.map +1 -1
  236. package/dist/components/pop-confirm/pop-confirm.js +2 -2
  237. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  238. package/dist/components/progress/progress.js +2 -2
  239. package/dist/components/progress/progress.js.map +1 -1
  240. package/dist/components/progress-nodes/progress-nodes.js +2 -2
  241. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  242. package/dist/components/progress-nodes/progress-nodes.vue.d.ts +1 -1
  243. package/dist/components/radio/radio.js +4 -4
  244. package/dist/components/radio/radio.js.map +1 -1
  245. package/dist/components/radio-group/radio-group.js +4 -4
  246. package/dist/components/radio-group/radio-group.js.map +1 -1
  247. package/dist/components/rich-text-editor/rich-text-editor.js +2 -2
  248. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  249. package/dist/components/rich-text-editor/toolbar.js +1 -1
  250. package/dist/components/rich-text-editor/toolbar.js.map +1 -1
  251. package/dist/components/scroll/scroll-bar.js +2 -2
  252. package/dist/components/scroll/scroll-bar.js.map +1 -1
  253. package/dist/components/scroll/scroll.js +2 -2
  254. package/dist/components/scroll/scroll.js.map +1 -1
  255. package/dist/components/select/select.js +4 -4
  256. package/dist/components/select/select.js.map +1 -1
  257. package/dist/components/select/use-keyboard.js.map +1 -1
  258. package/dist/components/select/use-options.js.map +1 -1
  259. package/dist/components/slider/slider-thumb.js +1 -1
  260. package/dist/components/slider/slider-thumb.js.map +1 -1
  261. package/dist/components/slider/slider.js +2 -2
  262. package/dist/components/slider/slider.js.map +1 -1
  263. package/dist/components/steps/steps.js +2 -2
  264. package/dist/components/steps/steps.js.map +1 -1
  265. package/dist/components/steps/steps.vue.d.ts +2 -2
  266. package/dist/components/switch/switch.js +4 -4
  267. package/dist/components/switch/switch.js.map +1 -1
  268. package/dist/components/table/table-body.js +2 -2
  269. package/dist/components/table/table-body.js.map +1 -1
  270. package/dist/components/table/table-cell.js +2 -2
  271. package/dist/components/table/table-cell.js.map +1 -1
  272. package/dist/components/table/table-foot.js +2 -2
  273. package/dist/components/table/table-foot.js.map +1 -1
  274. package/dist/components/table/table-head.js.map +1 -1
  275. package/dist/components/table/table-row.js.map +1 -1
  276. package/dist/components/table/table.js +2 -2
  277. package/dist/components/table/table.js.map +1 -1
  278. package/dist/components/table/use-check.js.map +1 -1
  279. package/dist/components/table/use-col-resize.js.map +1 -1
  280. package/dist/components/table/use-columns.js.map +1 -1
  281. package/dist/components/table/use-rows.js.map +1 -1
  282. package/dist/components/table/use-table.js.map +1 -1
  283. package/dist/components/table-editor/table-editor.js +2 -2
  284. package/dist/components/table-editor/table-editor.js.map +1 -1
  285. package/dist/components/tabs/tabs-horizontal.js +4 -4
  286. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  287. package/dist/components/tabs/tabs-horizontal.vue.d.ts +3 -3
  288. package/dist/components/tabs/tabs-vertical.js +4 -4
  289. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  290. package/dist/components/tabs/tabs-vertical.vue.d.ts +2 -2
  291. package/dist/components/tabs/tabs.js +4 -4
  292. package/dist/components/tabs/tabs.js.map +1 -1
  293. package/dist/components/tabs/tabs.vue.d.ts +3 -3
  294. package/dist/components/tag/tag.js +2 -2
  295. package/dist/components/tag/tag.js.map +1 -1
  296. package/dist/components/text/text.js +2 -2
  297. package/dist/components/text/text.js.map +1 -1
  298. package/dist/components/textarea/textarea.js +4 -4
  299. package/dist/components/textarea/textarea.js.map +1 -1
  300. package/dist/components/theme/theme.js +1 -1
  301. package/dist/components/theme/theme.js.map +1 -1
  302. package/dist/components/tip/tip.js +2 -2
  303. package/dist/components/tip/tip.js.map +1 -1
  304. package/dist/components/tip/use-nest.js.map +1 -1
  305. package/dist/components/tree/tree-node.js +2 -2
  306. package/dist/components/tree/tree-node.js.map +1 -1
  307. package/dist/components/tree/tree-node2.js.map +1 -1
  308. package/dist/components/tree/tree.js +2 -2
  309. package/dist/components/tree/tree.js.map +1 -1
  310. package/dist/components/tree/tree.vue.d.ts +1 -1
  311. package/dist/components/tree/use-check.js.map +1 -1
  312. package/dist/components/tree-select/tree-select.js +7 -6
  313. package/dist/components/tree-select/tree-select.js.map +1 -1
  314. package/dist/components/tree-select/tree-select.vue.d.ts +5 -4
  315. package/dist/components/watermark/watermark.js +2 -2
  316. package/dist/components/watermark/watermark.js.map +1 -1
  317. package/dist/types/cascade.d.ts +10 -6
  318. package/dist/types/tree-select.d.ts +2 -1
  319. package/package.json +24 -23
  320. package/src/components/action/action-group.vue +2 -2
  321. package/src/components/action/action.vue +1 -1
  322. package/src/components/auto-complete/auto-complete.vue +1 -1
  323. package/src/components/badge/badge.vue +1 -1
  324. package/src/components/batch-edit/batch-edit-form.vue +1 -1
  325. package/src/components/batch-edit/batch-edit-list.vue +1 -1
  326. package/src/components/batch-edit/batch-edit.vue +1 -1
  327. package/src/components/breadcrumb/breadcrumb.vue +1 -1
  328. package/src/components/button/button-group.vue +1 -1
  329. package/src/components/button/button.vue +1 -1
  330. package/src/components/calendar/calendar.vue +1 -1
  331. package/src/components/card/card-action.vue +1 -1
  332. package/src/components/card/card-content.vue +1 -1
  333. package/src/components/card/card-cover.vue +1 -1
  334. package/src/components/card/card-header.vue +1 -1
  335. package/src/components/card/card.vue +1 -1
  336. package/src/components/cascade/cascade.vue +3 -2
  337. package/src/components/cascade/use-check.ts +3 -1
  338. package/src/components/cascade/use-select.ts +43 -29
  339. package/src/components/check-tag/check-tag.vue +1 -1
  340. package/src/components/checkbox/checkbox-button.vue +1 -1
  341. package/src/components/checkbox/checkbox.vue +1 -1
  342. package/src/components/checkbox-group/checkbox-group.vue +1 -1
  343. package/src/components/code-editor/basic-setup.ts +63 -0
  344. package/src/components/code-editor/code-editor.vue +3 -3
  345. package/src/components/collapse/collapse-item.vue +1 -1
  346. package/src/components/collapse/collapse.vue +1 -1
  347. package/src/components/condition-editor/components/condition-group.vue +1 -1
  348. package/src/components/condition-editor/components/condition-row.vue +1 -1
  349. package/src/components/condition-editor/condition-editor.vue +1 -1
  350. package/src/components/contextmenu/contextmenu-item.vue +1 -1
  351. package/src/components/contextmenu/contextmenu-panel.vue +1 -1
  352. package/src/components/contextmenu/contextmenu-sub.vue +1 -1
  353. package/src/components/contextmenu/contextmenu.vue +1 -1
  354. package/src/components/date-panel/date-panel.vue +1 -1
  355. package/src/components/date-panel/headers/day.vue +1 -1
  356. package/src/components/date-panel/headers/month.vue +1 -1
  357. package/src/components/date-panel/headers/year.vue +1 -1
  358. package/src/components/date-panel/panels/day.vue +1 -1
  359. package/src/components/date-panel/panels/month.vue +1 -1
  360. package/src/components/date-panel/panels/year.vue +1 -1
  361. package/src/components/date-picker/date-picker.vue +1 -1
  362. package/src/components/date-range-picker/date-range-picker.vue +1 -1
  363. package/src/components/dialog/dialog.vue +1 -1
  364. package/src/components/drawer/drawer.vue +1 -1
  365. package/src/components/dropdown/dropdown.vue +1 -1
  366. package/src/components/dual-nav/dual-nav-app.vue +1 -1
  367. package/src/components/dual-nav/dual-nav.vue +1 -1
  368. package/src/components/empty/empty.vue +1 -1
  369. package/src/components/expression-editor/components/path-preview.vue +1 -1
  370. package/src/components/expression-editor/components/variable-picker.vue +1 -1
  371. package/src/components/expression-editor/expression-editor.vue +1 -1
  372. package/src/components/file-picker/file-picker.vue +1 -1
  373. package/src/components/file-viewer/file-viewer.vue +1 -1
  374. package/src/components/file-viewer/previewers/docx-previewer.vue +1 -1
  375. package/src/components/file-viewer/previewers/image-previewer.vue +1 -1
  376. package/src/components/file-viewer/previewers/pdf-previewer.vue +1 -1
  377. package/src/components/file-viewer/previewers/pdf-viewport-scroll.vue +1 -1
  378. package/src/components/file-viewer/previewers/pdf-zoom-bridge.vue +1 -1
  379. package/src/components/file-viewer/previewers/sheet-previewer.vue +1 -1
  380. package/src/components/file-viewer/previewers/text-previewer.vue +1 -1
  381. package/src/components/file-viewer/previewers/video-previewer.vue +1 -1
  382. package/src/components/float-button/float-button.vue +1 -1
  383. package/src/components/form/form.vue +1 -1
  384. package/src/components/form/use-node-interceptor.ts +2 -1
  385. package/src/components/form-item/form-item.vue +1 -1
  386. package/src/components/gantt-chart/gantt-chart.vue +1 -1
  387. package/src/components/grid/grid-item.vue +1 -1
  388. package/src/components/grid/grid.vue +1 -1
  389. package/src/components/grid-input/grid-input.vue +1 -1
  390. package/src/components/group-input/group-input.vue +1 -1
  391. package/src/components/icon/icon.vue +1 -1
  392. package/src/components/input/input.vue +1 -1
  393. package/src/components/kbd/kbd.vue +1 -1
  394. package/src/components/layout/layout-resizer.vue +1 -1
  395. package/src/components/layout/layout.vue +1 -1
  396. package/src/components/list/list-item.vue +1 -1
  397. package/src/components/list/list.vue +1 -1
  398. package/src/components/loading/loading.vue +1 -1
  399. package/src/components/message/message-box.vue +1 -1
  400. package/src/components/message/message.vue +1 -1
  401. package/src/components/message-confirm/message-confirm.vue +1 -1
  402. package/src/components/multi-select/multi-select-option.vue +1 -1
  403. package/src/components/multi-select/multi-select.vue +1 -1
  404. package/src/components/multi-tree-select/multi-tree-select.vue +1 -1
  405. package/src/components/nav/nav-icon.vue +1 -1
  406. package/src/components/nav/nav-item-collapsed.vue +1 -1
  407. package/src/components/nav/nav-item.vue +1 -1
  408. package/src/components/nav/nav-sub-collapsed.vue +1 -1
  409. package/src/components/nav/nav-sub.vue +1 -1
  410. package/src/components/nav/nav.vue +1 -1
  411. package/src/components/notification/notification.vue +1 -1
  412. package/src/components/number/number.vue +1 -1
  413. package/src/components/number-input/number-input.vue +1 -1
  414. package/src/components/number-range-input/number-range-input.vue +1 -1
  415. package/src/components/paginator/paginator.vue +1 -1
  416. package/src/components/palette/palette-alpha.vue +1 -1
  417. package/src/components/palette/palette-hue.vue +1 -1
  418. package/src/components/palette/palette-sv.vue +1 -1
  419. package/src/components/palette/palette.vue +1 -1
  420. package/src/components/password-input/password-input.vue +1 -1
  421. package/src/components/pop-confirm/pop-confirm.vue +1 -1
  422. package/src/components/progress/progress.vue +1 -1
  423. package/src/components/progress-nodes/progress-nodes.vue +1 -1
  424. package/src/components/radio/radio.vue +1 -1
  425. package/src/components/radio-group/radio-group.vue +1 -1
  426. package/src/components/scroll/scroll-bar.vue +1 -1
  427. package/src/components/scroll/scroll.vue +1 -1
  428. package/src/components/select/select.vue +1 -1
  429. package/src/components/slider/slider.vue +1 -1
  430. package/src/components/steps/steps.vue +1 -1
  431. package/src/components/switch/switch.vue +1 -1
  432. package/src/components/table/table-body.vue +1 -1
  433. package/src/components/table/table-cell.vue +1 -1
  434. package/src/components/table/table-foot.vue +1 -1
  435. package/src/components/table/table.vue +1 -1
  436. package/src/components/table-editor/table-editor.vue +1 -1
  437. package/src/components/tabs/tabs-horizontal.vue +1 -1
  438. package/src/components/tabs/tabs-vertical.vue +1 -1
  439. package/src/components/tabs/tabs.vue +1 -1
  440. package/src/components/tag/tag.vue +1 -1
  441. package/src/components/text/text.vue +1 -1
  442. package/src/components/textarea/textarea.vue +1 -1
  443. package/src/components/tip/tip.vue +1 -1
  444. package/src/components/tree/tree-node.vue +1 -1
  445. package/src/components/tree/tree.vue +1 -1
  446. package/src/components/tree-select/tree-select.vue +3 -3
  447. package/src/components/watermark/watermark.vue +1 -1
  448. package/src/types/cascade.ts +10 -6
  449. package/src/types/tree-select.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nav-item.js","names":[],"sources":["../../../src/components/nav/nav-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('first-level', depth === 0),\n bem.is('active', active),\n bem.is('disabled', item.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"handleClickItem\"\n >\n <NavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('item-title')\">\n {{ item.title }}\n </span>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { bem } from '@veltra/utils'\nimport { useTemplateRef } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport NavIcon from './nav-icon.vue'\nimport { useNavItem } from './use-nav-item'\n\ndefineOptions({ name: 'NavItem' })\n\nconst props = defineProps<{ item: NavItem; depth: number }>()\n\nconst itemRef = useTemplateRef('item')\n\nconst { cls, active, handleClickItem } = useNavItem({ itemProps: props, itemRef })\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkCA,MAAM,EAAE,KAAK,QAAQ,oBAAoB,WAAW;GAAE,WAAW;GAAO,SAFxD,eAAe,MAEyC;EAAQ,CAAC;;uBAjC/E,mBAgBK,MAAA;IAfF,OAAK,eAAA;KAAU,MAAA,GAAA,EAAI,EAAC,MAAA;KAAgB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA;KAAe,MAAA,GAAA,EAAI,GAAE,UAAW,MAAA,MAAA,CAAM;KAAS,MAAA,GAAA,EAAI,GAAE,YAAa,QAAA,KAAK,YAAQ,KAAA;;IAM/I,KAAI;IACH,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,MAAA,eAAA,KAAA,MAAA,eAAA,EAAA,GAAA,IAAA;;IAEO,QAAA,KAAK,QAAA,UAAA,GAApB,YAAqE,aAAA;;KAA1C,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA;;IAEzD,mBAAA,MAAA;IACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA,EAAA,GAAA,gBACd,QAAA,KAAK,KAAK,GAAA,CAAA"}
1
+ {"version":3,"file":"nav-item.js","names":[],"sources":["../../../src/components/nav/nav-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('first-level', depth === 0),\n bem.is('active', active),\n bem.is('disabled', item.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"handleClickItem\"\n >\n <NavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('item-title')\">\n {{ item.title }}\n </span>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { bem } from '@veltra/utils'\nimport { useTemplateRef } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport NavIcon from './nav-icon.vue'\nimport { useNavItem } from './use-nav-item'\n\ndefineOptions({ name: 'UNavItem' })\n\nconst props = defineProps<{ item: NavItem; depth: number }>()\n\nconst itemRef = useTemplateRef('item')\n\nconst { cls, active, handleClickItem } = useNavItem({ itemProps: props, itemRef })\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkCA,MAAM,EAAE,KAAK,QAAQ,oBAAoB,WAAW;GAAE,WAAW;GAAO,SAFxD,eAAe,MAEyC;EAAQ,CAAC;;uBAjC/E,mBAgBK,MAAA;IAfF,OAAK,eAAA;KAAU,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA;KAAgB,MAAA,GAAA,CAAG,CAAC,GAAE,eAAgB,QAAA,UAAK,CAAA;KAAe,MAAA,GAAA,CAAG,CAAC,GAAE,UAAW,MAAA,MAAA,CAAM;KAAS,MAAA,GAAA,CAAG,CAAC,GAAE,YAAa,QAAA,KAAK,YAAQ,KAAA;;IAM/I,KAAI;IACH,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,MAAA,eAAA,KAAA,MAAA,eAAA,CAAA,CAAA,GAAA,IAAA;;IAEO,QAAA,KAAK,QAAA,UAAA,GAApB,YAAqE,aAAA;;KAA1C,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA;;IAEzD,mBAAA,MAAA;IACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA,EAAA,GAAA,gBACd,QAAA,KAAK,KAAK,GAAA,CAAA"}
@@ -10,8 +10,8 @@ import { bem } from "@veltra/utils";
10
10
  import { ArrowRight } from "@veltra/icons/normal";
11
11
  //#region src/components/nav/nav-sub-collapsed.vue
12
12
  const _hoisted_1 = { key: 1 };
13
- const _sfc_main = /* @__PURE__ */ defineComponent({
14
- name: "NavSubCollapsed",
13
+ const _sfc_main = /*@__PURE__*/ defineComponent({
14
+ name: "UNavSubCollapsed",
15
15
  __name: "nav-sub-collapsed",
16
16
  props: {
17
17
  item: {},
@@ -1 +1 @@
1
- {"version":3,"file":"nav-sub-collapsed.js","names":[],"sources":["../../../src/components/nav/nav-sub-collapsed.vue"],"sourcesContent":["<template>\n <u-tip\n hide-arrow\n direction=\"right\"\n alignment=\"start\"\n :class=\"[collapsedCls.m(size), collapsedCls.e('panel')]\"\n style=\"padding: 0\"\n v-model:visible=\"visible\"\n >\n <li :class=\"[collapsedCls.e('sub-content'), bem.is('first-level', depth === 0)]\">\n <NavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"collapsedCls.e('icon')\" />\n\n <span v-else>{{ item.title[0] }}</span>\n\n <template v-if=\"depth !== 0\">\n <span :class=\"collapsedCls.e('sub-title')\">\n {{ item.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[collapsedCls.e('sub-expand')]\">\n <ArrowRight />\n </u-icon>\n </template>\n </li>\n\n <template #content>\n <u-scroll tag=\"ul\" :class=\"collapsedCls.e('sub-list')\">\n <template v-for=\"(child, index) of item.children!\" :key=\"getKey(index, parentKey)\">\n <UNavItemCollapsed\n v-if=\"!child.children?.length\"\n :item=\"child\"\n :depth=\"depth + 1\"\n @click=\"closeSubMenu\"\n />\n\n <NavSubCollapsed\n v-else\n :item=\"child\"\n :parent-key=\"getKey(index, parentKey)\"\n :depth=\"depth + 1\"\n />\n </template>\n </u-scroll>\n </template>\n </u-tip>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { inject, ref } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { UTip } from '../tip'\nimport { NavDIKey } from './di'\nimport { getKey } from './helper'\nimport NavIcon from './nav-icon.vue'\nimport UNavItemCollapsed from './nav-item-collapsed.vue'\n\ndefineOptions({ name: 'NavSubCollapsed' })\n\ndefineProps<{ item: NavItem; parentKey: string; depth: number }>()\n\nconst visible = ref(false)\n\nfunction closeSubMenu() {\n visible.value = false\n}\n\nconst { collapsedCls, size } = inject(NavDIKey)!\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAkEA,MAAM,UAAU,IAAI,KAAK;EAEzB,SAAS,eAAe;GACtB,QAAQ,QAAQ;EAClB;EAEA,MAAM,EAAE,cAAc,SAAS,OAAO,QAAQ;;;uBAvE5C,YA4CQ,MAAA,WAAA,GAAA;IA3CN,cAAA;IACA,WAAU;IACV,WAAU;IACT,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAE,MAAA,IAAA,CAAI,GAAG,MAAA,YAAA,EAAa,EAAC,OAAA,CAAA,CAAA;IAC7C,OAAA,EAAA,WAAA,IAAA;IACQ,SAAS,QAAA;8DAAA,QAAO,QAAA;;IAmBb,SAAO,cAiBL,CAhBX,YAgBW,MAAA,WAAA,GAAA;KAhBD,KAAI;KAAM,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,UAAA,CAAA;;4BACW,EAAA,UAAA,IAAA,GAAlD,mBAcW,UAAA,MAAA,WAdwB,QAAA,KAAK,WAAtB,OAAO,UAAK;8DAA2B,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS,EAAA,GAAA,CAAA,CAErE,MAAM,UAAU,UAAA,UAAA,GADzB,YAKE,aAAA;;OAHC,MAAM;OACN,OAAO,QAAA,QAAK;OACZ,SAAO;sDAGV,YAKE,4BAAA;;OAHC,MAAM;OACN,cAAY,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS;OACnC,OAAO,QAAA,QAAK;;;;;;;;;2BAhBhB,CAfL,mBAeK,MAAA,EAfA,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAC,aAAA,GAAiB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA,CAAA,CAAA,EAAA,GAAA,CACtD,QAAA,KAAK,QAAA,UAAA,GAApB,YAA8E,aAAA;;KAAnD,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,MAAA,CAAA;oDAElE,mBAAuC,QAAA,YAAA,gBAAvB,QAAA,KAAK,MAAK,EAAA,GAAA,CAAA,IAEV,QAAA,UAAK,KAAA,UAAA,GAArB,mBASW,UAAA,EAAA,KAAA,EAAA,GAAA;KART,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,WAAA,CAAA,EAAA,GAAA,gBACvB,QAAA,KAAK,KAAK,GAAA,CAAA;KAGf,mBAAA,QAAA;KACA,YAES,MAAA,WAAA,GAAA,EAFA,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAC,YAAA,CAAA,CAAA,EAAA,GAAA;6BACf,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"nav-sub-collapsed.js","names":[],"sources":["../../../src/components/nav/nav-sub-collapsed.vue"],"sourcesContent":["<template>\n <u-tip\n hide-arrow\n direction=\"right\"\n alignment=\"start\"\n :class=\"[collapsedCls.m(size), collapsedCls.e('panel')]\"\n style=\"padding: 0\"\n v-model:visible=\"visible\"\n >\n <li :class=\"[collapsedCls.e('sub-content'), bem.is('first-level', depth === 0)]\">\n <NavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"collapsedCls.e('icon')\" />\n\n <span v-else>{{ item.title[0] }}</span>\n\n <template v-if=\"depth !== 0\">\n <span :class=\"collapsedCls.e('sub-title')\">\n {{ item.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[collapsedCls.e('sub-expand')]\">\n <ArrowRight />\n </u-icon>\n </template>\n </li>\n\n <template #content>\n <u-scroll tag=\"ul\" :class=\"collapsedCls.e('sub-list')\">\n <template v-for=\"(child, index) of item.children!\" :key=\"getKey(index, parentKey)\">\n <UNavItemCollapsed\n v-if=\"!child.children?.length\"\n :item=\"child\"\n :depth=\"depth + 1\"\n @click=\"closeSubMenu\"\n />\n\n <NavSubCollapsed\n v-else\n :item=\"child\"\n :parent-key=\"getKey(index, parentKey)\"\n :depth=\"depth + 1\"\n />\n </template>\n </u-scroll>\n </template>\n </u-tip>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { inject, ref } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { UTip } from '../tip'\nimport { NavDIKey } from './di'\nimport { getKey } from './helper'\nimport NavIcon from './nav-icon.vue'\nimport UNavItemCollapsed from './nav-item-collapsed.vue'\n\ndefineOptions({ name: 'UNavSubCollapsed' })\n\ndefineProps<{ item: NavItem; parentKey: string; depth: number }>()\n\nconst visible = ref(false)\n\nfunction closeSubMenu() {\n visible.value = false\n}\n\nconst { collapsedCls, size } = inject(NavDIKey)!\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAkEA,MAAM,UAAU,IAAI,KAAK;EAEzB,SAAS,eAAe;GACtB,QAAQ,QAAQ;EAClB;EAEA,MAAM,EAAE,cAAc,SAAS,OAAO,QAAQ;;;uBAvE5C,YA4CQ,MAAA,WAAA,GAAA;IA3CN,cAAA;IACA,WAAU;IACV,WAAU;IACT,OAAK,eAAA,CAAG,MAAA,YAAA,CAAY,CAAC,EAAE,MAAA,IAAA,CAAI,GAAG,MAAA,YAAA,CAAY,CAAC,EAAC,OAAA,CAAA,CAAA;IAC7C,OAAA,EAAA,WAAA,IAAA;IACQ,SAAS,QAAA;8DAAA,QAAO,QAAA;;IAmBb,SAAO,cAiBL,CAhBX,YAgBW,MAAA,WAAA,GAAA;KAhBD,KAAI;KAAM,OAAK,eAAE,MAAA,YAAA,CAAY,CAAC,EAAC,UAAA,CAAA;;4BACW,EAAA,UAAA,IAAA,GAAlD,mBAcW,UAAA,MAAA,WAdwB,QAAA,KAAK,WAAtB,OAAO,UAAK;8DAA2B,MAAA,MAAA,CAAM,CAAC,OAAO,QAAA,SAAS,EAAA,GAAA,CAAA,CAErE,MAAM,UAAU,UAAA,UAAA,GADzB,YAKE,aAAA;;OAHC,MAAM;OACN,OAAO,QAAA,QAAK;OACZ,SAAO;sDAGV,YAKE,4BAAA;;OAHC,MAAM;OACN,cAAY,MAAA,MAAA,CAAM,CAAC,OAAO,QAAA,SAAS;OACnC,OAAO,QAAA,QAAK;;;;;;;;;2BAhBhB,CAfL,mBAeK,MAAA,EAfA,OAAK,eAAA,CAAG,MAAA,YAAA,CAAY,CAAC,EAAC,aAAA,GAAiB,MAAA,GAAA,CAAG,CAAC,GAAE,eAAgB,QAAA,UAAK,CAAA,CAAA,CAAA,EAAA,GAAA,CACtD,QAAA,KAAK,QAAA,UAAA,GAApB,YAA8E,aAAA;;KAAnD,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,YAAA,CAAY,CAAC,EAAC,MAAA,CAAA;oDAElE,mBAAuC,QAAA,YAAA,gBAAvB,QAAA,KAAK,MAAK,EAAA,GAAA,CAAA,IAEV,QAAA,UAAK,KAAA,UAAA,GAArB,mBASW,UAAA,EAAA,KAAA,EAAA,GAAA;KART,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,YAAA,CAAY,CAAC,EAAC,WAAA,CAAA,EAAA,GAAA,gBACvB,QAAA,KAAK,KAAK,GAAA,CAAA;KAGf,mBAAA,QAAA;KACA,YAES,MAAA,WAAA,GAAA,EAFA,OAAK,eAAA,CAAG,MAAA,YAAA,CAAY,CAAC,EAAC,YAAA,CAAA,CAAA,EAAA,GAAA;6BACf,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA"}
@@ -7,8 +7,8 @@ import { Fragment, Transition, computed, createBlock, createCommentVNode, create
7
7
  import { bem } from "@veltra/utils";
8
8
  import { ArrowRight } from "@veltra/icons/normal";
9
9
  //#region src/components/nav/nav-sub.vue
10
- const _sfc_main = /* @__PURE__ */ defineComponent({
11
- name: "NavSub",
10
+ const _sfc_main = /*@__PURE__*/ defineComponent({
11
+ name: "UNavSub",
12
12
  __name: "nav-sub",
13
13
  props: {
14
14
  item: {},
@@ -1 +1 @@
1
- {"version":3,"file":"nav-sub.js","names":[],"sources":["../../../src/components/nav/nav-sub.vue"],"sourcesContent":["<template>\n <li :class=\"cls.e('sub')\">\n <div\n :class=\"[\n cls.e('sub-content'),\n bem.is('first-level', depth === 0),\n bem.is('expanded', expanded),\n bem.is('branch-active', branchActive)\n ]\"\n @click=\"handleToggleExpand\"\n >\n <UNavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('sub-title')\">\n {{ item.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[cls.e('sub-expand'), bem.is('expanded', expanded)]\">\n <ArrowRight />\n </u-icon>\n </div>\n\n <!-- @vue-ignore -->\n <transition\n @enter=\"(el: Element) => expandTransition.enter(el as HTMLElement)\"\n @after-enter=\"(el: Element) => expandTransition.afterEnter(el as HTMLElement)\"\n @before-leave=\"(el: Element) => expandTransition.beforeLeave(el as HTMLElement)\"\n @leave=\"(el: Element) => expandTransition.leave(el as HTMLElement)\"\n @after-leave=\"(el: Element) => expandTransition.afterLeave(el as HTMLElement)\"\n >\n <ul :class=\"cls.e('sub-list')\" v-show=\"expanded\">\n <template v-for=\"(child, index) of item.children!\" :key=\"getKey(index, parentKey)\">\n <UNavItem v-if=\"!child.children?.length\" :item=\"child\" :depth=\"depth + 1\" />\n <NavSub v-else :item=\"child\" :parent-key=\"getKey(index, parentKey)\" :depth=\"depth + 1\" />\n </template>\n </ul>\n </transition>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { NavDIKey } from './di'\nimport { getKey } from './helper'\nimport UNavIcon from './nav-icon.vue'\nimport UNavItem from './nav-item.vue'\n\ndefineOptions({ name: 'NavSub' })\n\nconst props = defineProps<{ item: NavItem; parentKey: string; depth: number }>()\n\nconst { cls, expandedPath, navProps, expandTransition } = inject(NavDIKey)!\n\nconst expanded = computed(() => expandedPath.has(props.item.path))\n\nconst branchActive = computed(() => {\n const currentPath = navProps.currentPath\n if (!currentPath) return false\n\n const check = (items?: NavItem[]) => {\n return items?.some((item) => item.path === currentPath || check(item.children)) ?? false\n }\n\n return check(props.item.children)\n})\n\nfunction handleToggleExpand() {\n const { item } = props\n expandedPath.has(item.path) ? expandedPath.delete(item.path) : expandedPath.add(item.path)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAwDA,MAAM,QAAQ;EAEd,MAAM,EAAE,KAAK,cAAc,UAAU,qBAAqB,OAAO,QAAQ;EAEzE,MAAM,WAAW,eAAe,aAAa,IAAI,MAAM,KAAK,IAAI,CAAC;EAEjE,MAAM,eAAe,eAAe;GAClC,MAAM,cAAc,SAAS;GAC7B,IAAI,CAAC,aAAa,OAAO;GAEzB,MAAM,SAAS,UAAsB;IACnC,OAAO,OAAO,MAAM,SAAS,KAAK,SAAS,eAAe,MAAM,KAAK,QAAQ,CAAC,KAAK;GACrF;GAEA,OAAO,MAAM,MAAM,KAAK,QAAQ;EAClC,CAAC;EAED,SAAS,qBAAqB;GAC5B,MAAM,EAAE,SAAS;GACjB,aAAa,IAAI,KAAK,IAAI,IAAI,aAAa,OAAO,KAAK,IAAI,IAAI,aAAa,IAAI,KAAK,IAAI;EAC3F;;;uBA3EE,mBAsCK,MAAA,EAtCA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,KAAA,CAAA,EAAA,GAAA;IACf,mBAoBM,OAAA;KAnBH,OAAK,eAAA;MAAY,MAAA,GAAA,EAAI,EAAC,aAAA;MAAyB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA;MAAiB,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ;MAAW,MAAA,GAAA,EAAI,GAAE,iBAAkB,aAAA,KAAY;;KAMrK,SAAO;;KAEQ,QAAA,KAAK,QAAA,UAAA,GAArB,YAAsE,aAAA;;MAA1C,MAAM,QAAA,KAAK;MAAO,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA;;KAE1D,mBAAA,MAAA;KACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,WAAA,CAAA,EAAA,GAAA,gBACd,QAAA,KAAK,KAAK,GAAA,CAAA;KAGf,mBAAA,QAAA;KACA,YAES,MAAA,WAAA,GAAA,EAFA,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,EAAC,YAAA,GAAgB,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ,CAAA,CAAA,EAAA,GAAA;6BACjD,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;;IAIlB,mBAAA,eAAA;IACA,YAaa,YAAA;KAZV,SAAK,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,MAAM,EAAE;KACjD,cAAW,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,WAAW,EAAE;KAC5D,eAAY,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,YAAY,EAAE;KAC9D,SAAK,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,MAAM,EAAE;KACjD,cAAW,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,WAAW,EAAE;KAL/D,WAAA;;4BAYO,CAAA,eALL,mBAKK,MAAA,EALA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,UAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAGW,UAAA,MAAA,WAHwB,QAAA,KAAK,WAAtB,OAAO,UAAK;8DAA2B,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS,EAAA,GAAA,CAAA,CAC7D,MAAM,UAAU,UAAA,UAAA,GAAjC,YAA4E,aAAA;;OAAlC,MAAM;OAAQ,OAAO,QAAA,QAAK;sDACpE,YAAyF,mBAAA;;OAAzE,MAAM;OAAQ,cAAY,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS;OAAI,OAAO,QAAA,QAAK;;;;;;8BAH9C,SAAA,KAAQ,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"nav-sub.js","names":[],"sources":["../../../src/components/nav/nav-sub.vue"],"sourcesContent":["<template>\n <li :class=\"cls.e('sub')\">\n <div\n :class=\"[\n cls.e('sub-content'),\n bem.is('first-level', depth === 0),\n bem.is('expanded', expanded),\n bem.is('branch-active', branchActive)\n ]\"\n @click=\"handleToggleExpand\"\n >\n <UNavIcon v-if=\"item.icon\" :icon=\"item.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('sub-title')\">\n {{ item.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[cls.e('sub-expand'), bem.is('expanded', expanded)]\">\n <ArrowRight />\n </u-icon>\n </div>\n\n <!-- @vue-ignore -->\n <transition\n @enter=\"(el: Element) => expandTransition.enter(el as HTMLElement)\"\n @after-enter=\"(el: Element) => expandTransition.afterEnter(el as HTMLElement)\"\n @before-leave=\"(el: Element) => expandTransition.beforeLeave(el as HTMLElement)\"\n @leave=\"(el: Element) => expandTransition.leave(el as HTMLElement)\"\n @after-leave=\"(el: Element) => expandTransition.afterLeave(el as HTMLElement)\"\n >\n <ul :class=\"cls.e('sub-list')\" v-show=\"expanded\">\n <template v-for=\"(child, index) of item.children!\" :key=\"getKey(index, parentKey)\">\n <UNavItem v-if=\"!child.children?.length\" :item=\"child\" :depth=\"depth + 1\" />\n <NavSub v-else :item=\"child\" :parent-key=\"getKey(index, parentKey)\" :depth=\"depth + 1\" />\n </template>\n </ul>\n </transition>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { NavItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { NavDIKey } from './di'\nimport { getKey } from './helper'\nimport UNavIcon from './nav-icon.vue'\nimport UNavItem from './nav-item.vue'\n\ndefineOptions({ name: 'UNavSub' })\n\nconst props = defineProps<{ item: NavItem; parentKey: string; depth: number }>()\n\nconst { cls, expandedPath, navProps, expandTransition } = inject(NavDIKey)!\n\nconst expanded = computed(() => expandedPath.has(props.item.path))\n\nconst branchActive = computed(() => {\n const currentPath = navProps.currentPath\n if (!currentPath) return false\n\n const check = (items?: NavItem[]) => {\n return items?.some((item) => item.path === currentPath || check(item.children)) ?? false\n }\n\n return check(props.item.children)\n})\n\nfunction handleToggleExpand() {\n const { item } = props\n expandedPath.has(item.path) ? expandedPath.delete(item.path) : expandedPath.add(item.path)\n}\n</script>\n"],"mappings":"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"}
@@ -10,8 +10,8 @@ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock
10
10
  import { useFallbackProps } from "@veltra/compositions";
11
11
  import { ExpandTransition, bem } from "@veltra/utils";
12
12
  //#region src/components/nav/nav.vue
13
- const _sfc_main = /* @__PURE__ */ defineComponent({
14
- name: "Nav",
13
+ const _sfc_main = /*@__PURE__*/ defineComponent({
14
+ name: "UNav",
15
15
  __name: "nav",
16
16
  props: {
17
17
  currentPath: {},
@@ -1 +1 @@
1
- {"version":3,"file":"nav.js","names":[],"sources":["../../../src/components/nav/nav.vue"],"sourcesContent":["<template>\n <u-scroll tag=\"ul\" :class=\"[navCls.b, navCls.m(size)]\" :container-class=\"navCls.e('container')\">\n <!-- 常规 -->\n <template v-if=\"!collapsed\">\n <template v-for=\"(item, index) of menus\" :key=\"index\">\n <UNavSub v-if=\"item.children?.length\" :item=\"item\" :parent-key=\"String(index)\" :depth=\"0\" />\n <UNavItem v-else :item=\"item\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n\n <!-- 折叠 -->\n <template v-else>\n <template v-for=\"(item, index) of menus\" :key=\"index\">\n <UNavSubCollapsed\n v-if=\"item.children?.length\"\n :item=\"item\"\n :parent-key=\"String(index)\"\n :depth=\"0\"\n />\n <UNavItemCollapsed v-else :item=\"item\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport type { ComponentSize } from '@veltra/utils'\nimport { computed, provide, shallowReactive, watch } from 'vue'\n\nimport type { NavEmits, NavProps } from '../../types/nav'\nimport { UScroll } from '../scroll'\nimport { NavDIKey } from './di'\nimport { collectNavBranchPaths } from './helper'\nimport UNavItemCollapsed from './nav-item-collapsed.vue'\nimport UNavItem from './nav-item.vue'\nimport UNavSubCollapsed from './nav-sub-collapsed.vue'\nimport UNavSub from './nav-sub.vue'\nimport { walkNavWithPath } from './walk-nav-path'\n\ndefineOptions({ name: 'Nav' })\n\nconst props = withDefaults(defineProps<NavProps>(), { collapsed: false })\n\nconst emit = defineEmits<NavEmits>()\n\nconst cls = bem('nav')\nconst collapsedCls = bem('collapsed-nav')\n\nconst navCls = computed(() => {\n return props.collapsed ? collapsedCls : cls\n})\n\nconst expandTransition = new ExpandTransition({\n enterTransition:\n 'height 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-top 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-bottom 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.18s cubic-bezier(0.4, 0, 0.2, 1)',\n leaveTransition:\n 'height 0.2s cubic-bezier(0.4, 0, 1, 1), padding-top 0.2s cubic-bezier(0.4, 0, 1, 1), padding-bottom 0.2s cubic-bezier(0.4, 0, 1, 1), opacity 0.12s cubic-bezier(0.4, 0, 1, 1)',\n opacity: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst expandedPath = shallowReactive(new Set<string>())\n\nwatch(\n [() => props.currentPath, () => props.menus],\n ([currentPath, menus]) => {\n if (!currentPath || !menus) return\n menus.forEach((menu) => {\n walkNavWithPath(menu, (node, nodePath) => {\n if (node.path === currentPath) {\n nodePath.slice(0, -1).forEach((path) => {\n expandedPath.add(path.path)\n })\n return false\n }\n })\n })\n },\n { immediate: true }\n)\n\nprovide(NavDIKey, {\n cls,\n collapsedCls,\n navProps: props,\n navEmit: emit,\n expandedPath,\n size,\n expandTransition\n})\n\nfunction expandAll() {\n collectNavBranchPaths(props.menus).forEach((path) => {\n expandedPath.add(path)\n })\n}\n\nfunction collapseAll() {\n expandedPath.clear()\n}\n\ndefineExpose({ expandAll, collapseAll })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,KAAK;EACrB,MAAM,eAAe,IAAI,eAAe;EAExC,MAAM,SAAS,eAAe;GAC5B,OAAO,MAAM,YAAY,eAAe;EAC1C,CAAC;EAED,MAAM,mBAAmB,IAAI,iBAAiB;GAC5C,iBACE;GACF,iBACE;GACF,SAAS;EACX,CAAC;EAED,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,eAAe,gCAAgB,IAAI,IAAY,CAAC;EAEtD,MACE,OAAO,MAAM,mBAAmB,MAAM,KAAK,IAC1C,CAAC,aAAa,WAAW;GACxB,IAAI,CAAC,eAAe,CAAC,OAAO;GAC5B,MAAM,SAAS,SAAS;IACtB,gBAAgB,OAAO,MAAM,aAAa;KACxC,IAAI,KAAK,SAAS,aAAa;MAC7B,SAAS,MAAM,GAAG,EAAE,EAAE,SAAS,SAAS;OACtC,aAAa,IAAI,KAAK,IAAI;MAC5B,CAAC;MACD,OAAO;KACT;IACF,CAAC;GACH,CAAC;EACH,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,QAAQ,UAAU;GAChB;GACA;GACA,UAAU;GACV,SAAS;GACT;GACA;GACA;EACF,CAAC;EAED,SAAS,YAAY;GACnB,sBAAsB,MAAM,KAAK,EAAE,SAAS,SAAS;IACnD,aAAa,IAAI,IAAI;GACvB,CAAC;EACH;EAEA,SAAS,cAAc;GACrB,aAAa,MAAM;EACrB;EAEA,SAAa;GAAE;GAAW;EAAY,CAAC;;uBAvGrC,YAqBW,MAAA,WAAA,GAAA;IArBD,KAAI;IAAM,OAAK,eAAA,CAAG,OAAA,MAAO,GAAG,OAAA,MAAO,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;IAAK,mBAAiB,OAAA,MAAO,EAAC,WAAA;;2BACpE,CAAX,mBAAA,MAAA,GAAA,CACiB,QAAA,aAAA,UAAA,IAAA,GACf,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,WAHuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CACnC,KAAK,UAAU,UAAA,UAAA,GAA9B,YAA4F,aAAA;;MAA/C;MAAO,cAAY,OAAO,KAAK;MAAI,OAAO;0DACvF,YAAwD,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO;;8BAKvD,mBAUW,UAAA,EAAA,KAAA,EAAA,GAAA,CAXX,mBAAA,MAAA,IAAA,UAAA,IAAA,GAEE,mBAQW,UAAA,MAAA,WARuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CAE1C,KAAK,UAAU,UAAA,UAAA,GADvB,YAKE,aAAA;;MAHO;MACN,cAAY,OAAO,KAAK;MACxB,OAAO;0DAEV,YAAiE,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO"}
1
+ {"version":3,"file":"nav.js","names":[],"sources":["../../../src/components/nav/nav.vue"],"sourcesContent":["<template>\n <u-scroll tag=\"ul\" :class=\"[navCls.b, navCls.m(size)]\" :container-class=\"navCls.e('container')\">\n <!-- 常规 -->\n <template v-if=\"!collapsed\">\n <template v-for=\"(item, index) of menus\" :key=\"index\">\n <UNavSub v-if=\"item.children?.length\" :item=\"item\" :parent-key=\"String(index)\" :depth=\"0\" />\n <UNavItem v-else :item=\"item\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n\n <!-- 折叠 -->\n <template v-else>\n <template v-for=\"(item, index) of menus\" :key=\"index\">\n <UNavSubCollapsed\n v-if=\"item.children?.length\"\n :item=\"item\"\n :parent-key=\"String(index)\"\n :depth=\"0\"\n />\n <UNavItemCollapsed v-else :item=\"item\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport type { ComponentSize } from '@veltra/utils'\nimport { computed, provide, shallowReactive, watch } from 'vue'\n\nimport type { NavEmits, NavProps } from '../../types/nav'\nimport { UScroll } from '../scroll'\nimport { NavDIKey } from './di'\nimport { collectNavBranchPaths } from './helper'\nimport UNavItemCollapsed from './nav-item-collapsed.vue'\nimport UNavItem from './nav-item.vue'\nimport UNavSubCollapsed from './nav-sub-collapsed.vue'\nimport UNavSub from './nav-sub.vue'\nimport { walkNavWithPath } from './walk-nav-path'\n\ndefineOptions({ name: 'UNav' })\n\nconst props = withDefaults(defineProps<NavProps>(), { collapsed: false })\n\nconst emit = defineEmits<NavEmits>()\n\nconst cls = bem('nav')\nconst collapsedCls = bem('collapsed-nav')\n\nconst navCls = computed(() => {\n return props.collapsed ? collapsedCls : cls\n})\n\nconst expandTransition = new ExpandTransition({\n enterTransition:\n 'height 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-top 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-bottom 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.18s cubic-bezier(0.4, 0, 0.2, 1)',\n leaveTransition:\n 'height 0.2s cubic-bezier(0.4, 0, 1, 1), padding-top 0.2s cubic-bezier(0.4, 0, 1, 1), padding-bottom 0.2s cubic-bezier(0.4, 0, 1, 1), opacity 0.12s cubic-bezier(0.4, 0, 1, 1)',\n opacity: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst expandedPath = shallowReactive(new Set<string>())\n\nwatch(\n [() => props.currentPath, () => props.menus],\n ([currentPath, menus]) => {\n if (!currentPath || !menus) return\n menus.forEach((menu) => {\n walkNavWithPath(menu, (node, nodePath) => {\n if (node.path === currentPath) {\n nodePath.slice(0, -1).forEach((path) => {\n expandedPath.add(path.path)\n })\n return false\n }\n })\n })\n },\n { immediate: true }\n)\n\nprovide(NavDIKey, {\n cls,\n collapsedCls,\n navProps: props,\n navEmit: emit,\n expandedPath,\n size,\n expandTransition\n})\n\nfunction expandAll() {\n collectNavBranchPaths(props.menus).forEach((path) => {\n expandedPath.add(path)\n })\n}\n\nfunction collapseAll() {\n expandedPath.clear()\n}\n\ndefineExpose({ expandAll, collapseAll })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,KAAK;EACrB,MAAM,eAAe,IAAI,eAAe;EAExC,MAAM,SAAS,eAAe;GAC5B,OAAO,MAAM,YAAY,eAAe;EAC1C,CAAC;EAED,MAAM,mBAAmB,IAAI,iBAAiB;GAC5C,iBACE;GACF,iBACE;GACF,SAAS;EACX,CAAC;EAED,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,eAAe,gCAAgB,IAAI,IAAY,CAAC;EAEtD,MACE,OAAO,MAAM,mBAAmB,MAAM,KAAK,IAC1C,CAAC,aAAa,WAAW;GACxB,IAAI,CAAC,eAAe,CAAC,OAAO;GAC5B,MAAM,SAAS,SAAS;IACtB,gBAAgB,OAAO,MAAM,aAAa;KACxC,IAAI,KAAK,SAAS,aAAa;MAC7B,SAAS,MAAM,GAAG,EAAE,CAAC,CAAC,SAAS,SAAS;OACtC,aAAa,IAAI,KAAK,IAAI;MAC5B,CAAC;MACD,OAAO;KACT;IACF,CAAC;GACH,CAAC;EACH,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,QAAQ,UAAU;GAChB;GACA;GACA,UAAU;GACV,SAAS;GACT;GACA;GACA;EACF,CAAC;EAED,SAAS,YAAY;GACnB,sBAAsB,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS;IACnD,aAAa,IAAI,IAAI;GACvB,CAAC;EACH;EAEA,SAAS,cAAc;GACrB,aAAa,MAAM;EACrB;EAEA,SAAa;GAAE;GAAW;EAAY,CAAC;;uBAvGrC,YAqBW,MAAA,WAAA,GAAA;IArBD,KAAI;IAAM,OAAK,eAAA,CAAG,OAAA,MAAO,GAAG,OAAA,MAAO,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;IAAK,mBAAiB,OAAA,MAAO,EAAC,WAAA;;2BACpE,CAAX,mBAAA,MAAA,GAAA,CACiB,QAAA,aAAA,UAAA,IAAA,GACf,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,WAHuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CACnC,KAAK,UAAU,UAAA,UAAA,GAA9B,YAA4F,aAAA;;MAA/C;MAAO,cAAY,OAAO,KAAK;MAAI,OAAO;0DACvF,YAAwD,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO;;8BAKvD,mBAUW,UAAA,EAAA,KAAA,EAAA,GAAA,CAXX,mBAAA,MAAA,IAAA,UAAA,IAAA,GAEE,mBAQW,UAAA,MAAA,WARuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CAE1C,KAAK,UAAU,UAAA,UAAA,GADvB,YAKE,aAAA;;MAHO;MACN,cAAY,OAAO,KAAK;MACxB,OAAO;0DAEV,YAAiE,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["UNotification"],"sources":["../../../src/components/notification/index.ts"],"sourcesContent":["export { default as UNotification } from './notification.vue'\nimport { zIndex } from '@veltra/utils'\nimport { createVNode, render, type VNode, reactive } from 'vue'\n\nimport type { NotificationProps } from '../../types'\nimport UNotification from './notification.vue'\n\ntype NotificationItem = { vm: VNode }\n\nconst notificationQueue = reactive({\n 'bottom-right': [] as NotificationItem[],\n 'bottom-left': [] as NotificationItem[],\n 'top-right': [] as NotificationItem[],\n 'top-left': [] as NotificationItem[]\n})\n\nconst length = (key: string) => {\n return notificationQueue[key].length\n}\n\nlet count = 1\n\nconst close = (id: string, position: string, userClose?: (vm: VNode) => void) => {\n const index = notificationQueue[position].findIndex(({ vm }) => {\n return id === vm.component!.props.id\n })\n if (index > -1) {\n const { vm } = notificationQueue[position][index]!\n userClose?.(vm)\n let offset = Number(notificationQueue[position][index]!.vm.component!.props.offset)\n notificationQueue[position].splice(index, 1)\n let temp = 0\n for (let i = length(position); i > 0; i--) {\n if (i < index + 1) {\n temp = Number(notificationQueue[position][i - 1]!.vm.component!.props.offset)\n notificationQueue[position][i - 1]!.vm.component!.props.offset = offset\n offset = temp\n }\n }\n }\n if (!notificationQueue[position].length) {\n const wrapper = document.getElementById(`notification-${position}-id`)!\n wrapper.style.removeProperty('height')\n wrapper.style.removeProperty('overflow')\n }\n}\n\nconst createWrapper = (options: NotificationProps) => {\n const position = options.position || 'bottom-right'\n if (document.getElementById(`notification-${position}-id`)) {\n return document.getElementById(`notification-${position}-id`)\n } else {\n const offset = options.offset || 20\n const wrapper = document.createElement('div')\n wrapper.id = `notification-${position}-id`\n Object.assign(\n wrapper.style,\n { position: 'fixed', textAlign: 'center' },\n {\n 'top-right': { top: `${offset}px`, right: `${offset}px` },\n 'top-left': { top: `${offset}px`, left: `${offset}px` },\n 'bottom-left': { bottom: `${offset}px`, left: `${offset}px` },\n 'bottom-right': { bottom: `${offset}px`, right: `${offset}px` }\n }[position]\n )\n wrapper.addEventListener('mouseenter', (e: MouseEvent) => {\n if (length(position)) {\n let innerCount = 0\n let innerOffset = 0\n let width = 0\n let height = 0\n for (let i = length(position); i > 0; i--) {\n notificationQueue[position][i - 1]!.vm.component!.exposed!.clearTimer()\n if (i === length(position)) {\n width = notificationQueue[position][i - 1]!.vm.el?.offsetWidth + 8\n }\n notificationQueue[position][i - 1]!.vm.component!.props.offset = innerOffset\n innerOffset += notificationQueue[position][i - 1]!.vm.el?.offsetHeight / 2 + 5\n if (innerCount < 3) height += notificationQueue[position][i - 1]!.vm.el?.offsetHeight + 10\n innerCount++\n }\n\n Object.assign((e.target as HTMLElement).style, {\n width: `${width}px`,\n height: `${height}px`,\n overflow: 'hidden',\n transition: 'height 0.4s'\n })\n }\n })\n wrapper.addEventListener('mouseleave', (e: MouseEvent) => {\n if (length(position)) {\n let innerOffset = 0\n let innerCount = 0\n let height = 0\n for (let i = length(position); i > 0; i--) {\n notificationQueue[position][i - 1]!.vm.component!.exposed!.startTimer()\n if (i === length(position))\n height = notificationQueue[position][i - 1]!.vm.el?.offsetHeight + 80\n notificationQueue[position][i - 1]!.vm.component!.props.offset = innerOffset\n if (innerCount < 2) innerOffset += 10\n innerCount++\n }\n ;(e.target as HTMLElement).style.transition = 'height 0.45s'\n ;(e.target as HTMLElement).style.height = `${height}px`\n } else {\n ;(e.target as HTMLElement).style.removeProperty('height')\n ;(e.target as HTMLElement).style.removeProperty('overflow')\n }\n })\n document.body.appendChild(wrapper)\n return wrapper\n }\n}\n\nexport const Notification = (options: NotificationProps): void => {\n const position = options.position || 'bottom-right'\n const container = document.createElement('div')\n const id = `notification_${count++}`\n\n if (length(position)) {\n let innerOffset = 0\n let innerCount = 0\n for (let i = length(position); i > 0; i--) {\n if (innerCount < 2) innerOffset += 10\n notificationQueue[position][i - 1]!.vm.component!.props.offset = innerOffset\n innerCount++\n }\n }\n\n const vm = createVNode(UNotification, {\n ...options,\n offset: 0,\n id,\n zIndex: zIndex(),\n onClose: () => {\n close(id, position, options.onClose)\n }\n })\n vm.props!.onDestroy = () => render(null, container)\n render(vm, container)\n notificationQueue[position].push({ vm })\n const wrapper = createWrapper(options)\n wrapper?.appendChild(container.firstElementChild!)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["UNotification"],"sources":["../../../src/components/notification/index.ts"],"sourcesContent":["export { default as UNotification } from './notification.vue'\nimport { zIndex } from '@veltra/utils'\nimport { createVNode, render, type VNode, reactive } from 'vue'\n\nimport type { NotificationProps } from '../../types'\nimport UNotification from './notification.vue'\n\ntype NotificationItem = { vm: VNode }\n\nconst notificationQueue = reactive({\n 'bottom-right': [] as NotificationItem[],\n 'bottom-left': [] as NotificationItem[],\n 'top-right': [] as NotificationItem[],\n 'top-left': [] as NotificationItem[]\n})\n\nconst length = (key: string) => {\n return notificationQueue[key].length\n}\n\nlet count = 1\n\nconst close = (id: string, position: string, userClose?: (vm: VNode) => void) => {\n const index = notificationQueue[position].findIndex(({ vm }) => {\n return id === vm.component!.props.id\n })\n if (index > -1) {\n const { vm } = notificationQueue[position][index]!\n userClose?.(vm)\n let offset = Number(notificationQueue[position][index]!.vm.component!.props.offset)\n notificationQueue[position].splice(index, 1)\n let temp = 0\n for (let i = length(position); i > 0; i--) {\n if (i < index + 1) {\n temp = Number(notificationQueue[position][i - 1]!.vm.component!.props.offset)\n notificationQueue[position][i - 1]!.vm.component!.props.offset = offset\n offset = temp\n }\n }\n }\n if (!notificationQueue[position].length) {\n const wrapper = document.getElementById(`notification-${position}-id`)!\n wrapper.style.removeProperty('height')\n wrapper.style.removeProperty('overflow')\n }\n}\n\nconst createWrapper = (options: NotificationProps) => {\n const position = options.position || 'bottom-right'\n if (document.getElementById(`notification-${position}-id`)) {\n return document.getElementById(`notification-${position}-id`)\n } else {\n const offset = options.offset || 20\n const wrapper = document.createElement('div')\n wrapper.id = `notification-${position}-id`\n Object.assign(\n wrapper.style,\n { position: 'fixed', textAlign: 'center' },\n {\n 'top-right': { top: `${offset}px`, right: `${offset}px` },\n 'top-left': { top: `${offset}px`, left: `${offset}px` },\n 'bottom-left': { bottom: `${offset}px`, left: `${offset}px` },\n 'bottom-right': { bottom: `${offset}px`, right: `${offset}px` }\n }[position]\n )\n wrapper.addEventListener('mouseenter', (e: MouseEvent) => {\n if (length(position)) {\n let innerCount = 0\n let innerOffset = 0\n let width = 0\n let height = 0\n for (let i = length(position); i > 0; i--) {\n notificationQueue[position][i - 1]!.vm.component!.exposed!.clearTimer()\n if (i === length(position)) {\n width = notificationQueue[position][i - 1]!.vm.el?.offsetWidth + 8\n }\n notificationQueue[position][i - 1]!.vm.component!.props.offset = innerOffset\n innerOffset += notificationQueue[position][i - 1]!.vm.el?.offsetHeight / 2 + 5\n if (innerCount < 3) height += notificationQueue[position][i - 1]!.vm.el?.offsetHeight + 10\n innerCount++\n }\n\n Object.assign((e.target as HTMLElement).style, {\n width: `${width}px`,\n height: `${height}px`,\n overflow: 'hidden',\n transition: 'height 0.4s'\n })\n }\n })\n wrapper.addEventListener('mouseleave', (e: MouseEvent) => {\n if (length(position)) {\n let innerOffset = 0\n let innerCount = 0\n let height = 0\n for (let i = length(position); i > 0; i--) {\n notificationQueue[position][i - 1]!.vm.component!.exposed!.startTimer()\n if (i === length(position))\n height = notificationQueue[position][i - 1]!.vm.el?.offsetHeight + 80\n notificationQueue[position][i - 1]!.vm.component!.props.offset = innerOffset\n if (innerCount < 2) innerOffset += 10\n innerCount++\n }\n ;(e.target as HTMLElement).style.transition = 'height 0.45s'\n ;(e.target as HTMLElement).style.height = `${height}px`\n } else {\n ;(e.target as HTMLElement).style.removeProperty('height')\n ;(e.target as HTMLElement).style.removeProperty('overflow')\n }\n })\n document.body.appendChild(wrapper)\n return wrapper\n }\n}\n\nexport const Notification = (options: NotificationProps): void => {\n const position = options.position || 'bottom-right'\n const container = document.createElement('div')\n const id = `notification_${count++}`\n\n if (length(position)) {\n let innerOffset = 0\n let innerCount = 0\n for (let i = length(position); i > 0; i--) {\n if (innerCount < 2) innerOffset += 10\n notificationQueue[position][i - 1]!.vm.component!.props.offset = innerOffset\n innerCount++\n }\n }\n\n const vm = createVNode(UNotification, {\n ...options,\n offset: 0,\n id,\n zIndex: zIndex(),\n onClose: () => {\n close(id, position, options.onClose)\n }\n })\n vm.props!.onDestroy = () => render(null, container)\n render(vm, container)\n notificationQueue[position].push({ vm })\n const wrapper = createWrapper(options)\n wrapper?.appendChild(container.firstElementChild!)\n}\n"],"mappings":";;;;AASA,MAAM,oBAAoB,SAAS;CACjC,gBAAgB,CAAC;CACjB,eAAe,CAAC;CAChB,aAAa,CAAC;CACd,YAAY,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAgB;CAC9B,OAAO,kBAAkB,IAAI,CAAC;AAChC;AAEA,IAAI,QAAQ;AAEZ,MAAM,SAAS,IAAY,UAAkB,cAAoC;CAC/E,MAAM,QAAQ,kBAAkB,SAAS,CAAC,WAAW,EAAE,SAAS;EAC9D,OAAO,OAAO,GAAG,UAAW,MAAM;CACpC,CAAC;CACD,IAAI,QAAQ,IAAI;EACd,MAAM,EAAE,OAAO,kBAAkB,SAAS,CAAC;EAC3C,YAAY,EAAE;EACd,IAAI,SAAS,OAAO,kBAAkB,SAAS,CAAC,MAAM,CAAE,GAAG,UAAW,MAAM,MAAM;EAClF,kBAAkB,SAAS,CAAC,OAAO,OAAO,CAAC;EAC3C,IAAI,OAAO;EACX,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAG,IAAI,GAAG,KACpC,IAAI,IAAI,QAAQ,GAAG;GACjB,OAAO,OAAO,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,UAAW,MAAM,MAAM;GAC5E,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,UAAW,MAAM,SAAS;GACjE,SAAS;EACX;CAEJ;CACA,IAAI,CAAC,kBAAkB,SAAS,CAAC,QAAQ;EACvC,MAAM,UAAU,SAAS,eAAe,gBAAgB,SAAS,IAAI;EACrE,QAAQ,MAAM,eAAe,QAAQ;EACrC,QAAQ,MAAM,eAAe,UAAU;CACzC;AACF;AAEA,MAAM,iBAAiB,YAA+B;CACpD,MAAM,WAAW,QAAQ,YAAY;CACrC,IAAI,SAAS,eAAe,gBAAgB,SAAS,IAAI,GACvD,OAAO,SAAS,eAAe,gBAAgB,SAAS,IAAI;MACvD;EACL,MAAM,SAAS,QAAQ,UAAU;EACjC,MAAM,UAAU,SAAS,cAAc,KAAK;EAC5C,QAAQ,KAAK,gBAAgB,SAAS;EACtC,OAAO,OACL,QAAQ,OACR;GAAE,UAAU;GAAS,WAAW;EAAS,GACzC;GACE,aAAa;IAAE,KAAK,GAAG,OAAO;IAAK,OAAO,GAAG,OAAO;GAAI;GACxD,YAAY;IAAE,KAAK,GAAG,OAAO;IAAK,MAAM,GAAG,OAAO;GAAI;GACtD,eAAe;IAAE,QAAQ,GAAG,OAAO;IAAK,MAAM,GAAG,OAAO;GAAI;GAC5D,gBAAgB;IAAE,QAAQ,GAAG,OAAO;IAAK,OAAO,GAAG,OAAO;GAAI;EAChE,EAAE,SACJ;EACA,QAAQ,iBAAiB,eAAe,MAAkB;GACxD,IAAI,OAAO,QAAQ,GAAG;IACpB,IAAI,aAAa;IACjB,IAAI,cAAc;IAClB,IAAI,QAAQ;IACZ,IAAI,SAAS;IACb,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAG,IAAI,GAAG,KAAK;KACzC,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,UAAW,QAAS,WAAW;KACtE,IAAI,MAAM,OAAO,QAAQ,GACvB,QAAQ,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,IAAI,cAAc;KAEnE,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,UAAW,MAAM,SAAS;KACjE,eAAe,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,IAAI,eAAe,IAAI;KAC7E,IAAI,aAAa,GAAG,UAAU,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,IAAI,eAAe;KACxF;IACF;IAEA,OAAO,OAAQ,EAAE,OAAuB,OAAO;KAC7C,OAAO,GAAG,MAAM;KAChB,QAAQ,GAAG,OAAO;KAClB,UAAU;KACV,YAAY;IACd,CAAC;GACH;EACF,CAAC;EACD,QAAQ,iBAAiB,eAAe,MAAkB;GACxD,IAAI,OAAO,QAAQ,GAAG;IACpB,IAAI,cAAc;IAClB,IAAI,aAAa;IACjB,IAAI,SAAS;IACb,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAG,IAAI,GAAG,KAAK;KACzC,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,UAAW,QAAS,WAAW;KACtE,IAAI,MAAM,OAAO,QAAQ,GACvB,SAAS,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,IAAI,eAAe;KACrE,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,UAAW,MAAM,SAAS;KACjE,IAAI,aAAa,GAAG,eAAe;KACnC;IACF;IACC,EAAG,OAAuB,MAAM,aAAa;IAC7C,EAAG,OAAuB,MAAM,SAAS,GAAG,OAAO;GACtD,OAAO;IACJ,EAAG,OAAuB,MAAM,eAAe,QAAQ;IACvD,EAAG,OAAuB,MAAM,eAAe,UAAU;GAC5D;EACF,CAAC;EACD,SAAS,KAAK,YAAY,OAAO;EACjC,OAAO;CACT;AACF;AAEA,MAAa,gBAAgB,YAAqC;CAChE,MAAM,WAAW,QAAQ,YAAY;CACrC,MAAM,YAAY,SAAS,cAAc,KAAK;CAC9C,MAAM,KAAK,gBAAgB;CAE3B,IAAI,OAAO,QAAQ,GAAG;EACpB,IAAI,cAAc;EAClB,IAAI,aAAa;EACjB,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAG,IAAI,GAAG,KAAK;GACzC,IAAI,aAAa,GAAG,eAAe;GACnC,kBAAkB,SAAS,CAAC,IAAI,EAAE,CAAE,GAAG,UAAW,MAAM,SAAS;GACjE;EACF;CACF;CAEA,MAAM,KAAK,YAAYA,WAAe;EACpC,GAAG;EACH,QAAQ;EACR;EACA,QAAQ,OAAO;EACf,eAAe;GACb,MAAM,IAAI,UAAU,QAAQ,OAAO;EACrC;CACF,CAAC;CACD,GAAG,MAAO,kBAAkB,OAAO,MAAM,SAAS;CAClD,OAAO,IAAI,SAAS;CACpB,kBAAkB,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;CAEvC,cAD8B,OACxB,CAAC,EAAE,YAAY,UAAU,iBAAkB;AACnD"}
@@ -5,8 +5,8 @@ import { useFallbackProps } from "@veltra/compositions";
5
5
  import { bem } from "@veltra/utils";
6
6
  import { CircleCheckFilled, CircleClose, Close, InfoFilled, QuestionFilled, WarningFilled } from "@veltra/icons/normal";
7
7
  //#region src/components/notification/notification.vue
8
- const _sfc_main = /* @__PURE__ */ defineComponent({
9
- name: "Notification",
8
+ const _sfc_main = /*@__PURE__*/ defineComponent({
9
+ name: "UNotification",
10
10
  __name: "notification",
11
11
  props: {
12
12
  modelValue: {},
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","names":["$emit"],"sources":["../../../src/components/notification/notification.vue"],"sourcesContent":["<template>\n <transition\n :name=\"`notification-fade-${position.split('-')[0]}`\"\n @before-leave=\"onClose\"\n @after-leave=\"$emit('destroy')\"\n >\n <div\n :class=\"[cls.b, cls.m(size), cls.e(type), cls.e(position)]\"\n v-show=\"visible\"\n :style=\"customStyle\"\n >\n <div :class=\"cls.e('icon')\">\n <UIcon>\n <component :is=\"typeIcon\" />\n </UIcon>\n </div>\n <div :class=\"cls.e('content')\">\n <div :class=\"cls.em('content', 'title')\">{{ title }}</div>\n <div :class=\"cls.em('content', 'message')\">{{ message }}</div>\n <div :class=\"cls.em('content', 'button')\" v-if=\"buttonText\">\n <UButton :type=\"type\" plain @click=\"handleClick\">{{ buttonText }}</UButton>\n </div>\n </div>\n <div :class=\"cls.e('close')\" v-if=\"closable\" @click.stop=\"close\">\n <UIcon><Close /></UIcon>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport {\n CircleCheckFilled,\n CircleClose,\n Close,\n InfoFilled,\n QuestionFilled,\n WarningFilled\n} from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { ref, computed, onMounted, type CSSProperties } from 'vue'\n\nimport type { NotificationProps, NotificationExposed, ColorType } from '../../types'\nimport { UButton } from '../button'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Notification' })\n\nconst props = withDefaults(defineProps<NotificationProps>(), {\n closable: false,\n duration: 4500,\n offset: 20,\n buttonText: '',\n position: 'bottom-right'\n})\n\nconst { type, size } = useFallbackProps([props], { type: 'primary' as ColorType, size: 'default' })\n\nconst typeIcon = computed(() => {\n return (\n props.icon ||\n {\n primary: InfoFilled,\n info: QuestionFilled,\n success: CircleCheckFilled,\n warning: WarningFilled,\n danger: CircleClose\n }[type.value]\n )\n})\n\nconst cls = bem('notification')\n\nconst visible = ref<boolean>(false)\n\nonMounted(() => {\n visible.value = true\n startTimer()\n})\n\nconst close = () => {\n visible.value = false\n}\n\nconst customStyle = computed<CSSProperties>(() => {\n return props.offset > 0\n ? {\n [`${props.position.split('-')[0]}`]: `${props.offset}px`,\n zIndex: props.zIndex,\n transform:\n props.position.split('-')[0] === 'bottom'\n ? `translateY(-${props.offset}px)`\n : `translateY(${props.offset}px)`,\n transition: `opacity 0.3s, transform 0.4s, top 0.4s`\n }\n : { [`${props.position.split('-')[0]}`]: `${props.offset}px`, zIndex: props.zIndex }\n})\n\nlet timer = 0\n\nconst startTimer = () => {\n if (props.duration) {\n timer = setTimeout(() => {\n close()\n }, props.duration)\n }\n}\n\nconst clearTimer = () => clearTimeout(timer)\n\nconst handleClick = (e: MouseEvent) => {\n if (props.onClick) props.onClick(e)\n close()\n}\n\ndefineExpose<NotificationExposed>({ startTimer, clearTimer })\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"notification.js","names":["$emit"],"sources":["../../../src/components/notification/notification.vue"],"sourcesContent":["<template>\n <transition\n :name=\"`notification-fade-${position.split('-')[0]}`\"\n @before-leave=\"onClose\"\n @after-leave=\"$emit('destroy')\"\n >\n <div\n :class=\"[cls.b, cls.m(size), cls.e(type), cls.e(position)]\"\n v-show=\"visible\"\n :style=\"customStyle\"\n >\n <div :class=\"cls.e('icon')\">\n <UIcon>\n <component :is=\"typeIcon\" />\n </UIcon>\n </div>\n <div :class=\"cls.e('content')\">\n <div :class=\"cls.em('content', 'title')\">{{ title }}</div>\n <div :class=\"cls.em('content', 'message')\">{{ message }}</div>\n <div :class=\"cls.em('content', 'button')\" v-if=\"buttonText\">\n <UButton :type=\"type\" plain @click=\"handleClick\">{{ buttonText }}</UButton>\n </div>\n </div>\n <div :class=\"cls.e('close')\" v-if=\"closable\" @click.stop=\"close\">\n <UIcon><Close /></UIcon>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport {\n CircleCheckFilled,\n CircleClose,\n Close,\n InfoFilled,\n QuestionFilled,\n WarningFilled\n} from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { ref, computed, onMounted, type CSSProperties } from 'vue'\n\nimport type { NotificationProps, NotificationExposed, ColorType } from '../../types'\nimport { UButton } from '../button'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UNotification' })\n\nconst props = withDefaults(defineProps<NotificationProps>(), {\n closable: false,\n duration: 4500,\n offset: 20,\n buttonText: '',\n position: 'bottom-right'\n})\n\nconst { type, size } = useFallbackProps([props], { type: 'primary' as ColorType, size: 'default' })\n\nconst typeIcon = computed(() => {\n return (\n props.icon ||\n {\n primary: InfoFilled,\n info: QuestionFilled,\n success: CircleCheckFilled,\n warning: WarningFilled,\n danger: CircleClose\n }[type.value]\n )\n})\n\nconst cls = bem('notification')\n\nconst visible = ref<boolean>(false)\n\nonMounted(() => {\n visible.value = true\n startTimer()\n})\n\nconst close = () => {\n visible.value = false\n}\n\nconst customStyle = computed<CSSProperties>(() => {\n return props.offset > 0\n ? {\n [`${props.position.split('-')[0]}`]: `${props.offset}px`,\n zIndex: props.zIndex,\n transform:\n props.position.split('-')[0] === 'bottom'\n ? `translateY(-${props.offset}px)`\n : `translateY(${props.offset}px)`,\n transition: `opacity 0.3s, transform 0.4s, top 0.4s`\n }\n : { [`${props.position.split('-')[0]}`]: `${props.offset}px`, zIndex: props.zIndex }\n})\n\nlet timer = 0\n\nconst startTimer = () => {\n if (props.duration) {\n timer = setTimeout(() => {\n close()\n }, props.duration)\n }\n}\n\nconst clearTimer = () => clearTimeout(timer)\n\nconst handleClick = (e: MouseEvent) => {\n if (props.onClick) props.onClick(e)\n close()\n}\n\ndefineExpose<NotificationExposed>({ startTimer, clearTimer })\n</script>\n"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { computed, defineComponent, reactive, toDisplayString, watch } from "vue
2
2
  import { Tween } from "@veltra/utils";
3
3
  import { $n } from "@cat-kit/core";
4
4
  //#region src/components/number/number.vue
5
- const _sfc_main = /* @__PURE__ */ defineComponent({
6
- name: "Number",
5
+ const _sfc_main = /*@__PURE__*/ defineComponent({
6
+ name: "UNumber",
7
7
  __name: "number",
8
8
  props: {
9
9
  value: {},
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","names":[],"sources":["../../../src/components/number/number.vue"],"sourcesContent":["<template>\n {{ formatted }}\n</template>\n\n<script lang=\"ts\" setup>\nimport { $n } from '@cat-kit/core'\nimport { Tween } from '@veltra/utils'\nimport { computed, reactive, watch } from 'vue'\n\nimport type { NumberProps } from '../../types'\n\ndefineOptions({ name: 'Number' })\n\nconst props = withDefaults(defineProps<NumberProps>(), { duration: 800, format: 'decimal' })\n\nconst number = reactive({ value: 0 })\n\nconst tween = computed(() =>\n props.tween\n ? new Tween(number, { duration: props.duration, easingFunction: Tween.easing.easeInOutQuad })\n : null\n)\n\nconst formatter = computed(() => {\n return $n.formatter({\n currency: props.format === 'currency' ? 'CNY' : undefined,\n style: props.format,\n precision: props.precision,\n maximumFractionDigits: props.maxPrecision,\n minimumFractionDigits: props.minPrecision\n })\n})\n\nconst formatted = computed(() => {\n return formatter.value.format(number.value)\n})\n\nwatch(\n () => props.value,\n () => {\n props.tween ? tween.value.to({ value: props.value }) : (number.value = props.value)\n },\n { immediate: true }\n)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAEd,MAAM,SAAS,SAAS,EAAE,OAAO,EAAE,CAAC;EAEpC,MAAM,QAAQ,eACZ,MAAM,QACF,IAAI,MAAM,QAAQ;GAAE,UAAU,MAAM;GAAU,gBAAgB,MAAM,OAAO;EAAc,CAAC,IAC1F,IACN;EAEA,MAAM,YAAY,eAAe;GAC/B,OAAO,GAAG,UAAU;IAClB,UAAU,MAAM,WAAW,aAAa,QAAQ,KAAA;IAChD,OAAO,MAAM;IACb,WAAW,MAAM;IACjB,uBAAuB,MAAM;IAC7B,uBAAuB,MAAM;GAC/B,CAAC;EACH,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO,UAAU,MAAM,OAAO,OAAO,KAAK;EAC5C,CAAC;EAED,YACQ,MAAM,aACN;GACJ,MAAM,QAAQ,MAAM,MAAM,GAAG,EAAE,OAAO,MAAM,MAAM,CAAC,IAAK,OAAO,QAAQ,MAAM;EAC/E,GACA,EAAE,WAAW,KAAK,CACpB;;0BA1CK,UAAA,KAAS"}
1
+ {"version":3,"file":"number.js","names":[],"sources":["../../../src/components/number/number.vue"],"sourcesContent":["<template>\n {{ formatted }}\n</template>\n\n<script lang=\"ts\" setup>\nimport { $n } from '@cat-kit/core'\nimport { Tween } from '@veltra/utils'\nimport { computed, reactive, watch } from 'vue'\n\nimport type { NumberProps } from '../../types'\n\ndefineOptions({ name: 'UNumber' })\n\nconst props = withDefaults(defineProps<NumberProps>(), { duration: 800, format: 'decimal' })\n\nconst number = reactive({ value: 0 })\n\nconst tween = computed(() =>\n props.tween\n ? new Tween(number, { duration: props.duration, easingFunction: Tween.easing.easeInOutQuad })\n : null\n)\n\nconst formatter = computed(() => {\n return $n.formatter({\n currency: props.format === 'currency' ? 'CNY' : undefined,\n style: props.format,\n precision: props.precision,\n maximumFractionDigits: props.maxPrecision,\n minimumFractionDigits: props.minPrecision\n })\n})\n\nconst formatted = computed(() => {\n return formatter.value.format(number.value)\n})\n\nwatch(\n () => props.value,\n () => {\n props.tween ? tween.value.to({ value: props.value }) : (number.value = props.value)\n },\n { immediate: true }\n)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAEd,MAAM,SAAS,SAAS,EAAE,OAAO,EAAE,CAAC;EAEpC,MAAM,QAAQ,eACZ,MAAM,QACF,IAAI,MAAM,QAAQ;GAAE,UAAU,MAAM;GAAU,gBAAgB,MAAM,OAAO;EAAc,CAAC,IAC1F,IACN;EAEA,MAAM,YAAY,eAAe;GAC/B,OAAO,GAAG,UAAU;IAClB,UAAU,MAAM,WAAW,aAAa,QAAQ,KAAA;IAChD,OAAO,MAAM;IACb,WAAW,MAAM;IACjB,uBAAuB,MAAM;IAC7B,uBAAuB,MAAM;GAC/B,CAAC;EACH,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO,UAAU,MAAM,OAAO,OAAO,KAAK;EAC5C,CAAC;EAED,YACQ,MAAM,aACN;GACJ,MAAM,QAAQ,MAAM,MAAM,GAAG,EAAE,OAAO,MAAM,MAAM,CAAC,IAAK,OAAO,QAAQ,MAAM;EAC/E,GACA,EAAE,WAAW,KAAK,CACpB;;0BA1CK,UAAA,KAAS"}
@@ -7,10 +7,10 @@ import { ArrowDown, ArrowUp, Close } from "@veltra/icons/normal";
7
7
  import { $n, isUndef, n, o } from "@cat-kit/core";
8
8
  import { vRipple } from "@veltra/directives";
9
9
  //#region src/components/number-input/number-input.vue
10
- const _sfc_main = /* @__PURE__ */ defineComponent({
11
- name: "NumberInput",
10
+ const _sfc_main = /*@__PURE__*/ defineComponent({
11
+ name: "UNumberInput",
12
12
  __name: "number-input",
13
- props: /* @__PURE__ */ mergeModels({
13
+ props: /*@__PURE__*/ mergeModels({
14
14
  modelValue: {},
15
15
  currency: { type: Boolean },
16
16
  precision: {},
@@ -47,7 +47,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
47
47
  "modelValue": {},
48
48
  "modelModifiers": {}
49
49
  }),
50
- emits: /* @__PURE__ */ mergeModels([
50
+ emits: /*@__PURE__*/ mergeModels([
51
51
  "update:modelValue",
52
52
  "change",
53
53
  "clear"
@@ -1 +1 @@
1
- {"version":3,"file":"number-input.js","names":[],"sources":["../../../src/components/number-input/number-input.vue"],"sourcesContent":["<template>\n <u-input\n v-if=\"!readonly\"\n ref=\"inputRef\"\n :class=\"className\"\n :model-value=\"displayed\"\n v-bind=\"inputProps\"\n @update:model-value=\"handleUpdateModelValue\"\n @change=\"handleChange\"\n @keydown.stop=\"handleKeydown\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n :size=\"size\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :clearable=\"false\"\n >\n <template #suffix v-if=\"hasSuffix\">\n <span :class=\"cls.e('suffix')\">\n <u-icon\n v-if=\"props.clearable\"\n :class=\"[cls.e('clear'), bem.is('hidden', !showClear)]\"\n :title=\"showClear ? '清除' : undefined\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n <span v-if=\"hasCustomSuffix\" :class=\"cls.e('suffix-content')\">\n {{ suffix }}\n <slot name=\"suffix\" />\n </span>\n </span>\n\n <div v-if=\"showStep\" :class=\"cls.e('step')\">\n <u-icon\n @click=\"increase\"\n v-ripple=\"!disabled && increasable\"\n :class=\"bem.is('disabled', disabled || !increasable)\"\n >\n <ArrowUp />\n </u-icon>\n <u-icon\n @click=\"decrease\"\n v-ripple=\"!disabled && reducible\"\n :class=\"bem.is('disabled', disabled || !reducible)\"\n >\n <ArrowDown />\n </u-icon>\n </div>\n </template>\n\n <template #prefix v-if=\"slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n </u-input>\n\n <template v-else>\n {{ generateDisplayed || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { $n, n, o, isUndef } from '@cat-kit/core'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { ArrowDown, ArrowUp, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT, Tween } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { NumberInputEmits, NumberInputProps, InputExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({ name: 'NumberInput' })\n\nconst props = withDefaults(defineProps<NumberInputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\nconst emit = defineEmits<NumberInputEmits>()\n\nconst slots = defineSlots<{ prefix?: () => any; suffix?: () => any }>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst inputProps = computed(() => {\n return o(props).pick(['disabled', 'placeholder', 'size', 'prefix'])\n})\n\nconst inputRef = shallowRef<InputExposed>()\n\nconst inputDom = computed(() => inputRef.value?.el)\n\nconst cls = bem('number-input')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/** 实际值 */\nconst model = defineModel<NumberInputProps['modelValue']>()\n\n// 展示值\nconst displayed = shallowRef('')\n\nconst focused = shallowRef(false)\nconst hovered = shallowRef(false)\n\nconst generateDisplayed = computed(() => {\n if (!displayed.value) return ''\n\n return `${props.prefix ?? ''}${displayed.value}${props.suffix ?? ''}`\n})\n\nconst showStep = computed(() => props.step !== undefined && props.step !== false)\n\nconst hasCustomSuffix = computed(() => !!props.suffix || !!slots.suffix)\n\nconst hasSuffix = computed(() => props.clearable || hasCustomSuffix.value || showStep.value)\n\nconst showClear = computed(() => {\n return props.clearable && !disabled.value && displayed.value !== '' && hovered.value\n})\n\n/** 步长 */\nconst stepVal = computed<number>(() => {\n const { step } = props\n if (step === undefined) return 1\n return typeof step === 'boolean' ? 1 : step\n})\n\n/** 是否可增 */\nconst increasable = computed(() => {\n const { max, multiple } = props\n if (isUndef(max) || isUndef(model.value)) return true\n // 如果存在倍数,先将 model.value 除以倍数得到原始值再比较\n const rawValue = multiple ? $n.div(model.value, multiple) : model.value\n return rawValue < max\n})\n\n/** 是否可减 */\nconst reducible = computed(() => {\n const { min, multiple } = props\n if (isUndef(min) || isUndef(model.value)) return true\n // 如果存在倍数,先将 model.value 除以倍数得到原始值再比较\n const rawValue = multiple ? $n.div(model.value, multiple) : model.value\n return rawValue > min\n})\n\n// 通过值和步长值计算默认的最大精度\nconst defaultMaxPrecision = computed(() => {\n const { multiple } = props\n // 如果存在倍数,基于原始值计算精度\n const rawValue =\n multiple && model.value !== undefined ? $n.div(model.value, multiple) : model.value\n return Math.max(\n String(rawValue).split('.')[1]?.length ?? 0,\n String(stepVal.value).split('.')[1]?.length ?? 0\n )\n})\n\n/**\n * 获取展示值\n * @param num 实际值\n */\nfunction getDisplayed(num?: number): string {\n if (!num && num !== 0) return ''\n\n const {\n currency,\n precision,\n minPrecision,\n // 如果没有指定最大精度那么设置默认为值和步长值中的较大值\n maxPrecision = defaultMaxPrecision.value,\n multiple\n } = props\n\n // 如果存在倍数,先将实际值除以倍数得到原始值\n const displayValue = multiple ? $n.div(num, multiple) : num\n\n return currency\n ? n(displayValue).currency('CNY', { precision, minPrecision, maxPrecision })\n : n(displayValue).fixed(precision ?? { minPrecision, maxPrecision })\n}\n\nwatch(\n [model, focused, () => props.currency],\n ([modelValue, inputFocused]) => {\n if (inputFocused) return\n displayed.value = getDisplayed(modelValue)\n },\n { immediate: true }\n)\n\n/**\n * 解析展示值\n * @param str 展示值\n */\nfunction parseDisplayed(str: string): number | undefined {\n if (!str) return undefined\n\n // 将货币格式去掉再转化为数字\n const number = +str.replace(/,/g, '')\n const { multiple } = props\n\n // 如果解析失败,使用当前值作为回退\n // 如果存在倍数,需要先将 model.value 除以倍数得到原始值\n let result: number | undefined\n if (isNaN(number)) {\n if (model.value === undefined) return undefined\n result = multiple ? $n.div(model.value, multiple) : model.value\n } else {\n result = number\n }\n\n if (result === undefined) return undefined\n\n const { precision, maxPrecision, minPrecision } = props\n\n const fixedResult = +n(result).fixed(precision ?? { minPrecision, maxPrecision })\n\n // 如果存在倍数,将原始值乘以倍数返回实际值\n return multiple ? $n.mul(fixedResult, multiple) : fixedResult\n}\n\n/**\n * 获取有效值\n * @param val 值\n */\nfunction getValidValue<T extends undefined | number>(val: T): T {\n if (val === undefined) return val\n const { min, max, multiple } = props\n\n // 如果存在倍数,先将值除以倍数得到原始值进行验证,验证后再乘以倍数\n if (multiple) {\n const rawVal = $n.div(val, multiple)\n let validRawVal = rawVal\n if (min !== undefined && rawVal < min) validRawVal = min\n if (max !== undefined && rawVal > max) validRawVal = max\n return $n.mul(validRawVal, multiple) as T\n }\n\n if (min !== undefined && val < min) return min as T\n if (max !== undefined && val > max) return max as T\n return val\n}\n\nfunction handleUpdateModelValue(input: string): void {\n const newVal = parseDisplayed(input)\n model.value = getValidValue(newVal)\n displayed.value = input\n}\n\nfunction handleClear(): void {\n if (!showClear.value) return\n model.value = undefined\n displayed.value = ''\n emit('clear')\n}\n\n/**\n * 处理输入值变化的函数, 该函数仅在输入框失去焦点时触发,\n * 主要用于在输入非数字的情况下的修正处理\n * @param input 输入的值\n */\nfunction handleChange() {\n emit('change', model.value)\n}\n\nconst tween = new Tween(\n { n: model.value ?? 0 },\n {\n onUpdate(state) {\n const _rawInput = inputDom.value\n if (!_rawInput) return\n const { multiple } = props\n // 如果存在倍数,tween.state.n 存储的是原始值,需要乘以倍数后传给 getDisplayed\n const actualValue = multiple ? $n.mul(state.n, multiple) : state.n\n _rawInput.value = getDisplayed(actualValue)\n },\n // 动画进行的过程值有可能被改变, 因此在onComplete中确保还原的是原本的值\n onComplete() {\n const _rawInput = inputDom.value\n if (!_rawInput) return\n _rawInput.value = getDisplayed(model.value)\n }\n }\n)\n\n/** 增 */\nfunction increase(): void {\n if (disabled.value) return\n const { multiple } = props\n const val = model.value ?? 0\n\n if (multiple) {\n // 如果存在倍数,先将实际值除以倍数得到原始值\n const rawVal = $n.div(val, multiple)\n // 在原始值基础上加步长\n const newRawVal = $n.plus(rawVal, stepVal.value)\n // 乘以倍数得到新的实际值\n const newVal = $n.mul(newRawVal, multiple)\n const target = getValidValue(newVal)\n model.value = target\n // tween 动画在原始值上进行\n tween.state.n = $n.div(target, multiple)\n tween.to({ n: $n.div(target, multiple) })\n } else {\n tween.state.n = val\n const target = getValidValue($n.plus(val, stepVal.value))\n model.value = target\n tween.to({ n: target })\n }\n}\n\n/** 减 */\nfunction decrease(): void {\n if (disabled.value) return\n const { multiple } = props\n const val = model.value ?? 0\n\n if (multiple) {\n // 如果存在倍数,先将实际值除以倍数得到原始值\n const rawVal = $n.div(val, multiple)\n // 在原始值基础上减步长\n const newRawVal = $n.minus(rawVal, stepVal.value)\n // 乘以倍数得到新的实际值\n const newVal = $n.mul(newRawVal, multiple)\n const target = getValidValue(newVal)\n model.value = target\n // tween 动画在原始值上进行\n tween.state.n = $n.div(target, multiple)\n tween.to({ n: $n.div(target, multiple) })\n } else {\n tween.state.n = val\n const target = getValidValue($n.minus(val, stepVal.value))\n model.value = target\n tween.to({ n: target })\n }\n}\n\nfunction handleKeydown(e: KeyboardEvent): void {\n if (!props.step) return\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return increase()\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return decrease()\n }\n}\n\nfunction handleFocus(): void {\n focused.value = true\n\n // 如果初始值和当前设置的精度不匹配则进行精度修正\n if (model.value === undefined) return\n const { precision, maxPrecision, minPrecision, multiple } = props\n\n if (multiple) {\n // 如果存在倍数,先除以倍数得到原始值进行精度修正,再乘以倍数\n const rawVal = $n.div(model.value, multiple)\n const fixedRawVal = +n(rawVal).fixed(precision ?? { maxPrecision, minPrecision })\n model.value = $n.mul(fixedRawVal, multiple)\n } else {\n model.value = +n(model.value).fixed(precision ?? { maxPrecision, minPrecision })\n }\n}\n\nfunction handleBlur(): void {\n focused.value = false\n model.value = props.modelValue\n}\n\nfunction handleMouseEnter(): void {\n hovered.value = true\n}\n\nfunction handleMouseLeave(): void {\n hovered.value = false\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"number-input.js","names":[],"sources":["../../../src/components/number-input/number-input.vue"],"sourcesContent":["<template>\n <u-input\n v-if=\"!readonly\"\n ref=\"inputRef\"\n :class=\"className\"\n :model-value=\"displayed\"\n v-bind=\"inputProps\"\n @update:model-value=\"handleUpdateModelValue\"\n @change=\"handleChange\"\n @keydown.stop=\"handleKeydown\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n :size=\"size\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :clearable=\"false\"\n >\n <template #suffix v-if=\"hasSuffix\">\n <span :class=\"cls.e('suffix')\">\n <u-icon\n v-if=\"props.clearable\"\n :class=\"[cls.e('clear'), bem.is('hidden', !showClear)]\"\n :title=\"showClear ? '清除' : undefined\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n <span v-if=\"hasCustomSuffix\" :class=\"cls.e('suffix-content')\">\n {{ suffix }}\n <slot name=\"suffix\" />\n </span>\n </span>\n\n <div v-if=\"showStep\" :class=\"cls.e('step')\">\n <u-icon\n @click=\"increase\"\n v-ripple=\"!disabled && increasable\"\n :class=\"bem.is('disabled', disabled || !increasable)\"\n >\n <ArrowUp />\n </u-icon>\n <u-icon\n @click=\"decrease\"\n v-ripple=\"!disabled && reducible\"\n :class=\"bem.is('disabled', disabled || !reducible)\"\n >\n <ArrowDown />\n </u-icon>\n </div>\n </template>\n\n <template #prefix v-if=\"slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n </u-input>\n\n <template v-else>\n {{ generateDisplayed || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { $n, n, o, isUndef } from '@cat-kit/core'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { ArrowDown, ArrowUp, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT, Tween } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { NumberInputEmits, NumberInputProps, InputExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({ name: 'UNumberInput' })\n\nconst props = withDefaults(defineProps<NumberInputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\nconst emit = defineEmits<NumberInputEmits>()\n\nconst slots = defineSlots<{ prefix?: () => any; suffix?: () => any }>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst inputProps = computed(() => {\n return o(props).pick(['disabled', 'placeholder', 'size', 'prefix'])\n})\n\nconst inputRef = shallowRef<InputExposed>()\n\nconst inputDom = computed(() => inputRef.value?.el)\n\nconst cls = bem('number-input')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/** 实际值 */\nconst model = defineModel<NumberInputProps['modelValue']>()\n\n// 展示值\nconst displayed = shallowRef('')\n\nconst focused = shallowRef(false)\nconst hovered = shallowRef(false)\n\nconst generateDisplayed = computed(() => {\n if (!displayed.value) return ''\n\n return `${props.prefix ?? ''}${displayed.value}${props.suffix ?? ''}`\n})\n\nconst showStep = computed(() => props.step !== undefined && props.step !== false)\n\nconst hasCustomSuffix = computed(() => !!props.suffix || !!slots.suffix)\n\nconst hasSuffix = computed(() => props.clearable || hasCustomSuffix.value || showStep.value)\n\nconst showClear = computed(() => {\n return props.clearable && !disabled.value && displayed.value !== '' && hovered.value\n})\n\n/** 步长 */\nconst stepVal = computed<number>(() => {\n const { step } = props\n if (step === undefined) return 1\n return typeof step === 'boolean' ? 1 : step\n})\n\n/** 是否可增 */\nconst increasable = computed(() => {\n const { max, multiple } = props\n if (isUndef(max) || isUndef(model.value)) return true\n // 如果存在倍数,先将 model.value 除以倍数得到原始值再比较\n const rawValue = multiple ? $n.div(model.value, multiple) : model.value\n return rawValue < max\n})\n\n/** 是否可减 */\nconst reducible = computed(() => {\n const { min, multiple } = props\n if (isUndef(min) || isUndef(model.value)) return true\n // 如果存在倍数,先将 model.value 除以倍数得到原始值再比较\n const rawValue = multiple ? $n.div(model.value, multiple) : model.value\n return rawValue > min\n})\n\n// 通过值和步长值计算默认的最大精度\nconst defaultMaxPrecision = computed(() => {\n const { multiple } = props\n // 如果存在倍数,基于原始值计算精度\n const rawValue =\n multiple && model.value !== undefined ? $n.div(model.value, multiple) : model.value\n return Math.max(\n String(rawValue).split('.')[1]?.length ?? 0,\n String(stepVal.value).split('.')[1]?.length ?? 0\n )\n})\n\n/**\n * 获取展示值\n * @param num 实际值\n */\nfunction getDisplayed(num?: number): string {\n if (!num && num !== 0) return ''\n\n const {\n currency,\n precision,\n minPrecision,\n // 如果没有指定最大精度那么设置默认为值和步长值中的较大值\n maxPrecision = defaultMaxPrecision.value,\n multiple\n } = props\n\n // 如果存在倍数,先将实际值除以倍数得到原始值\n const displayValue = multiple ? $n.div(num, multiple) : num\n\n return currency\n ? n(displayValue).currency('CNY', { precision, minPrecision, maxPrecision })\n : n(displayValue).fixed(precision ?? { minPrecision, maxPrecision })\n}\n\nwatch(\n [model, focused, () => props.currency],\n ([modelValue, inputFocused]) => {\n if (inputFocused) return\n displayed.value = getDisplayed(modelValue)\n },\n { immediate: true }\n)\n\n/**\n * 解析展示值\n * @param str 展示值\n */\nfunction parseDisplayed(str: string): number | undefined {\n if (!str) return undefined\n\n // 将货币格式去掉再转化为数字\n const number = +str.replace(/,/g, '')\n const { multiple } = props\n\n // 如果解析失败,使用当前值作为回退\n // 如果存在倍数,需要先将 model.value 除以倍数得到原始值\n let result: number | undefined\n if (isNaN(number)) {\n if (model.value === undefined) return undefined\n result = multiple ? $n.div(model.value, multiple) : model.value\n } else {\n result = number\n }\n\n if (result === undefined) return undefined\n\n const { precision, maxPrecision, minPrecision } = props\n\n const fixedResult = +n(result).fixed(precision ?? { minPrecision, maxPrecision })\n\n // 如果存在倍数,将原始值乘以倍数返回实际值\n return multiple ? $n.mul(fixedResult, multiple) : fixedResult\n}\n\n/**\n * 获取有效值\n * @param val 值\n */\nfunction getValidValue<T extends undefined | number>(val: T): T {\n if (val === undefined) return val\n const { min, max, multiple } = props\n\n // 如果存在倍数,先将值除以倍数得到原始值进行验证,验证后再乘以倍数\n if (multiple) {\n const rawVal = $n.div(val, multiple)\n let validRawVal = rawVal\n if (min !== undefined && rawVal < min) validRawVal = min\n if (max !== undefined && rawVal > max) validRawVal = max\n return $n.mul(validRawVal, multiple) as T\n }\n\n if (min !== undefined && val < min) return min as T\n if (max !== undefined && val > max) return max as T\n return val\n}\n\nfunction handleUpdateModelValue(input: string): void {\n const newVal = parseDisplayed(input)\n model.value = getValidValue(newVal)\n displayed.value = input\n}\n\nfunction handleClear(): void {\n if (!showClear.value) return\n model.value = undefined\n displayed.value = ''\n emit('clear')\n}\n\n/**\n * 处理输入值变化的函数, 该函数仅在输入框失去焦点时触发,\n * 主要用于在输入非数字的情况下的修正处理\n * @param input 输入的值\n */\nfunction handleChange() {\n emit('change', model.value)\n}\n\nconst tween = new Tween(\n { n: model.value ?? 0 },\n {\n onUpdate(state) {\n const _rawInput = inputDom.value\n if (!_rawInput) return\n const { multiple } = props\n // 如果存在倍数,tween.state.n 存储的是原始值,需要乘以倍数后传给 getDisplayed\n const actualValue = multiple ? $n.mul(state.n, multiple) : state.n\n _rawInput.value = getDisplayed(actualValue)\n },\n // 动画进行的过程值有可能被改变, 因此在onComplete中确保还原的是原本的值\n onComplete() {\n const _rawInput = inputDom.value\n if (!_rawInput) return\n _rawInput.value = getDisplayed(model.value)\n }\n }\n)\n\n/** 增 */\nfunction increase(): void {\n if (disabled.value) return\n const { multiple } = props\n const val = model.value ?? 0\n\n if (multiple) {\n // 如果存在倍数,先将实际值除以倍数得到原始值\n const rawVal = $n.div(val, multiple)\n // 在原始值基础上加步长\n const newRawVal = $n.plus(rawVal, stepVal.value)\n // 乘以倍数得到新的实际值\n const newVal = $n.mul(newRawVal, multiple)\n const target = getValidValue(newVal)\n model.value = target\n // tween 动画在原始值上进行\n tween.state.n = $n.div(target, multiple)\n tween.to({ n: $n.div(target, multiple) })\n } else {\n tween.state.n = val\n const target = getValidValue($n.plus(val, stepVal.value))\n model.value = target\n tween.to({ n: target })\n }\n}\n\n/** 减 */\nfunction decrease(): void {\n if (disabled.value) return\n const { multiple } = props\n const val = model.value ?? 0\n\n if (multiple) {\n // 如果存在倍数,先将实际值除以倍数得到原始值\n const rawVal = $n.div(val, multiple)\n // 在原始值基础上减步长\n const newRawVal = $n.minus(rawVal, stepVal.value)\n // 乘以倍数得到新的实际值\n const newVal = $n.mul(newRawVal, multiple)\n const target = getValidValue(newVal)\n model.value = target\n // tween 动画在原始值上进行\n tween.state.n = $n.div(target, multiple)\n tween.to({ n: $n.div(target, multiple) })\n } else {\n tween.state.n = val\n const target = getValidValue($n.minus(val, stepVal.value))\n model.value = target\n tween.to({ n: target })\n }\n}\n\nfunction handleKeydown(e: KeyboardEvent): void {\n if (!props.step) return\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n return increase()\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n return decrease()\n }\n}\n\nfunction handleFocus(): void {\n focused.value = true\n\n // 如果初始值和当前设置的精度不匹配则进行精度修正\n if (model.value === undefined) return\n const { precision, maxPrecision, minPrecision, multiple } = props\n\n if (multiple) {\n // 如果存在倍数,先除以倍数得到原始值进行精度修正,再乘以倍数\n const rawVal = $n.div(model.value, multiple)\n const fixedRawVal = +n(rawVal).fixed(precision ?? { maxPrecision, minPrecision })\n model.value = $n.mul(fixedRawVal, multiple)\n } else {\n model.value = +n(model.value).fixed(precision ?? { maxPrecision, minPrecision })\n }\n}\n\nfunction handleBlur(): void {\n focused.value = false\n model.value = props.modelValue\n}\n\nfunction handleMouseEnter(): void {\n hovered.value = true\n}\n\nfunction handleMouseLeave(): void {\n hovered.value = false\n}\n</script>\n"],"mappings":"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"}
@@ -4,10 +4,10 @@ import { useFormFallbackProps } from "@veltra/compositions";
4
4
  import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
5
5
  import { $n, n, o } from "@cat-kit/core";
6
6
  //#region src/components/number-range-input/number-range-input.vue
7
- const _sfc_main = /* @__PURE__ */ defineComponent({
8
- name: "NumberRangeInput",
7
+ const _sfc_main = /*@__PURE__*/ defineComponent({
8
+ name: "UNumberRangeInput",
9
9
  __name: "number-range-input",
10
- props: /* @__PURE__ */ mergeModels({
10
+ props: /*@__PURE__*/ mergeModels({
11
11
  modelValue: {},
12
12
  start: {},
13
13
  end: {},
@@ -52,7 +52,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
52
52
  "end": {},
53
53
  "endModifiers": {}
54
54
  }),
55
- emits: /* @__PURE__ */ mergeModels([
55
+ emits: /*@__PURE__*/ mergeModels([
56
56
  "update:modelValue",
57
57
  "update:start",
58
58
  "update:end",
@@ -1 +1 @@
1
- {"version":3,"file":"number-range-input.js","names":[],"sources":["../../../src/components/number-range-input/number-range-input.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\">\n <u-number-input\n v-model=\"startModel\"\n :placeholder=\"startPlaceholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :size=\"size\"\n v-bind=\"numberInputBind\"\n @change=\"emitChange\"\n />\n <span :class=\"cls.e('separator')\">{{ separator }}</span>\n <u-number-input\n v-model=\"endModel\"\n :placeholder=\"endPlaceholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :size=\"size\"\n v-bind=\"numberInputBind\"\n @change=\"emitChange\"\n />\n </div>\n\n <template v-else>\n {{ readonlyText || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { n, $n, o } from '@cat-kit/core'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, getCurrentInstance, nextTick, onMounted, watch } from 'vue'\n\nimport type { NumberRangeInputEmits, NumberRangeInputProps, NumberRangeTuple } from '../../types'\nimport { UNumberInput } from '../number-input'\n\ndefineOptions({ name: 'NumberRangeInput' })\n\nconst props = withDefaults(defineProps<NumberRangeInputProps>(), {\n startPlaceholder: '请输入',\n endPlaceholder: '请输入',\n separator: '~',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<NumberRangeInputEmits>()\n\nconst inst = getCurrentInstance()\n\nfunction splitBound(): boolean {\n const p = inst?.vnode.props\n if (!p) return false\n return 'start' in p || 'onUpdate:start' in p || 'end' in p || 'onUpdate:end' in p\n}\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst cls = bem('number-range-input')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst model = defineModel<NumberRangeTuple>({ default: () => [undefined, undefined] })\n\nconst startRef = defineModel<number | undefined>('start')\nconst endRef = defineModel<number | undefined>('end')\n\nlet syncGuard = false\n\nfunction normalizeFromSplit(s: number | undefined, e: number | undefined): NumberRangeTuple {\n let nextS = s\n let nextE = e\n if (nextS !== undefined && nextE !== undefined && nextS > nextE) nextE = nextS\n return [nextS, nextE]\n}\n\nwatch(\n model,\n (t) => {\n if (syncGuard) return\n syncGuard = true\n const tuple = t ?? [undefined, undefined]\n if (startRef.value !== tuple[0]) startRef.value = tuple[0]\n if (endRef.value !== tuple[1]) endRef.value = tuple[1]\n nextTick(() => {\n syncGuard = false\n })\n },\n { deep: true }\n)\n\nwatch(\n [startRef, endRef],\n () => {\n if (!splitBound() || syncGuard) return\n syncGuard = true\n const normalized = normalizeFromSplit(startRef.value, endRef.value)\n const cur = model.value ?? [undefined, undefined]\n if (cur[0] !== normalized[0] || cur[1] !== normalized[1]) {\n model.value = normalized\n }\n nextTick(() => {\n syncGuard = false\n })\n },\n { deep: true }\n)\n\nonMounted(() => {\n if (!splitBound()) return\n const cur = model.value ?? [undefined, undefined]\n const hasModel = cur[0] !== undefined || cur[1] !== undefined\n if (hasModel) return\n const normalized = normalizeFromSplit(startRef.value, endRef.value)\n if (cur[0] !== normalized[0] || cur[1] !== normalized[1]) {\n syncGuard = true\n model.value = normalized\n nextTick(() => {\n syncGuard = false\n })\n }\n})\n\nconst numberInputBind = computed(() => {\n return o(props).pick([\n 'clearable',\n 'prefix',\n 'suffix',\n 'step',\n 'min',\n 'max',\n 'currency',\n 'precision',\n 'minPrecision',\n 'maxPrecision',\n 'multiple'\n ])\n})\n\nconst startModel = computed({\n get(): number | undefined {\n return model.value?.[0]\n },\n set(v: number | undefined) {\n const cur = model.value ?? [undefined, undefined]\n const end = cur[1]\n let nextEnd = end\n if (v !== undefined && end !== undefined && v > end) nextEnd = v\n model.value = [v, nextEnd]\n }\n})\n\nconst endModel = computed({\n get(): number | undefined {\n return model.value?.[1]\n },\n set(v: number | undefined) {\n const cur = model.value ?? [undefined, undefined]\n const start = cur[0]\n let nextStart = start\n if (v !== undefined && start !== undefined && v < start) nextStart = v\n model.value = [nextStart, v]\n }\n})\n\nfunction formatNumberPart(num: number): string {\n const { currency, precision, minPrecision, maxPrecision, multiple } = props\n\n const displayValue = multiple ? $n.div(num, multiple) : num\n\n return currency\n ? n(displayValue).currency('CNY', { precision, minPrecision, maxPrecision })\n : n(displayValue).fixed(precision ?? { minPrecision, maxPrecision })\n}\n\nconst readonlyText = computed(() => {\n const [s, e] = model.value ?? [undefined, undefined]\n if (s === undefined && e === undefined) return ''\n const p = props.prefix ?? ''\n const sfx = props.suffix ?? ''\n const sep = props.separator ?? '~'\n const a = s === undefined ? '—' : formatNumberPart(s)\n const b = e === undefined ? '—' : formatNumberPart(e)\n return `${p}${a} ${sep} ${b}${sfx}`\n})\n\nfunction emitChange(): void {\n emit('change', model.value ?? [undefined, undefined])\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"number-range-input.js","names":[],"sources":["../../../src/components/number-range-input/number-range-input.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\">\n <u-number-input\n v-model=\"startModel\"\n :placeholder=\"startPlaceholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :size=\"size\"\n v-bind=\"numberInputBind\"\n @change=\"emitChange\"\n />\n <span :class=\"cls.e('separator')\">{{ separator }}</span>\n <u-number-input\n v-model=\"endModel\"\n :placeholder=\"endPlaceholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n :size=\"size\"\n v-bind=\"numberInputBind\"\n @change=\"emitChange\"\n />\n </div>\n\n <template v-else>\n {{ readonlyText || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { n, $n, o } from '@cat-kit/core'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, getCurrentInstance, nextTick, onMounted, watch } from 'vue'\n\nimport type { NumberRangeInputEmits, NumberRangeInputProps, NumberRangeTuple } from '../../types'\nimport { UNumberInput } from '../number-input'\n\ndefineOptions({ name: 'UNumberRangeInput' })\n\nconst props = withDefaults(defineProps<NumberRangeInputProps>(), {\n startPlaceholder: '请输入',\n endPlaceholder: '请输入',\n separator: '~',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<NumberRangeInputEmits>()\n\nconst inst = getCurrentInstance()\n\nfunction splitBound(): boolean {\n const p = inst?.vnode.props\n if (!p) return false\n return 'start' in p || 'onUpdate:start' in p || 'end' in p || 'onUpdate:end' in p\n}\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst cls = bem('number-range-input')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst model = defineModel<NumberRangeTuple>({ default: () => [undefined, undefined] })\n\nconst startRef = defineModel<number | undefined>('start')\nconst endRef = defineModel<number | undefined>('end')\n\nlet syncGuard = false\n\nfunction normalizeFromSplit(s: number | undefined, e: number | undefined): NumberRangeTuple {\n let nextS = s\n let nextE = e\n if (nextS !== undefined && nextE !== undefined && nextS > nextE) nextE = nextS\n return [nextS, nextE]\n}\n\nwatch(\n model,\n (t) => {\n if (syncGuard) return\n syncGuard = true\n const tuple = t ?? [undefined, undefined]\n if (startRef.value !== tuple[0]) startRef.value = tuple[0]\n if (endRef.value !== tuple[1]) endRef.value = tuple[1]\n nextTick(() => {\n syncGuard = false\n })\n },\n { deep: true }\n)\n\nwatch(\n [startRef, endRef],\n () => {\n if (!splitBound() || syncGuard) return\n syncGuard = true\n const normalized = normalizeFromSplit(startRef.value, endRef.value)\n const cur = model.value ?? [undefined, undefined]\n if (cur[0] !== normalized[0] || cur[1] !== normalized[1]) {\n model.value = normalized\n }\n nextTick(() => {\n syncGuard = false\n })\n },\n { deep: true }\n)\n\nonMounted(() => {\n if (!splitBound()) return\n const cur = model.value ?? [undefined, undefined]\n const hasModel = cur[0] !== undefined || cur[1] !== undefined\n if (hasModel) return\n const normalized = normalizeFromSplit(startRef.value, endRef.value)\n if (cur[0] !== normalized[0] || cur[1] !== normalized[1]) {\n syncGuard = true\n model.value = normalized\n nextTick(() => {\n syncGuard = false\n })\n }\n})\n\nconst numberInputBind = computed(() => {\n return o(props).pick([\n 'clearable',\n 'prefix',\n 'suffix',\n 'step',\n 'min',\n 'max',\n 'currency',\n 'precision',\n 'minPrecision',\n 'maxPrecision',\n 'multiple'\n ])\n})\n\nconst startModel = computed({\n get(): number | undefined {\n return model.value?.[0]\n },\n set(v: number | undefined) {\n const cur = model.value ?? [undefined, undefined]\n const end = cur[1]\n let nextEnd = end\n if (v !== undefined && end !== undefined && v > end) nextEnd = v\n model.value = [v, nextEnd]\n }\n})\n\nconst endModel = computed({\n get(): number | undefined {\n return model.value?.[1]\n },\n set(v: number | undefined) {\n const cur = model.value ?? [undefined, undefined]\n const start = cur[0]\n let nextStart = start\n if (v !== undefined && start !== undefined && v < start) nextStart = v\n model.value = [nextStart, v]\n }\n})\n\nfunction formatNumberPart(num: number): string {\n const { currency, precision, minPrecision, maxPrecision, multiple } = props\n\n const displayValue = multiple ? $n.div(num, multiple) : num\n\n return currency\n ? n(displayValue).currency('CNY', { precision, minPrecision, maxPrecision })\n : n(displayValue).fixed(precision ?? { minPrecision, maxPrecision })\n}\n\nconst readonlyText = computed(() => {\n const [s, e] = model.value ?? [undefined, undefined]\n if (s === undefined && e === undefined) return ''\n const p = props.prefix ?? ''\n const sfx = props.suffix ?? ''\n const sep = props.separator ?? '~'\n const a = s === undefined ? '—' : formatNumberPart(s)\n const b = e === undefined ? '—' : formatNumberPart(e)\n return `${p}${a} ${sep} ${b}${sfx}`\n})\n\nfunction emitChange(): void {\n emit('change', model.value ?? [undefined, undefined])\n}\n</script>\n"],"mappings":"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"}
@@ -25,9 +25,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
25
25
  disabled: boolean;
26
26
  readonly: boolean;
27
27
  clearable: boolean;
28
+ separator: string;
28
29
  startPlaceholder: string;
29
30
  endPlaceholder: string;
30
- separator: string;
31
31
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
32
32
  declare const _default: typeof __VLS_export;
33
33
  //#endregion
@@ -11,10 +11,10 @@ import { vRipple } from "@veltra/directives";
11
11
  const _hoisted_1 = { key: 0 };
12
12
  const _hoisted_2 = ["onClick"];
13
13
  const _hoisted_3 = { key: 0 };
14
- const _sfc_main = /* @__PURE__ */ defineComponent({
15
- name: "Paginator",
14
+ const _sfc_main = /*@__PURE__*/ defineComponent({
15
+ name: "UPaginator",
16
16
  __name: "paginator",
17
- props: /* @__PURE__ */ mergeModels({
17
+ props: /*@__PURE__*/ mergeModels({
18
18
  pageNumber: {},
19
19
  pageSize: {},
20
20
  size: {},
@@ -27,7 +27,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
27
27
  "pageSize": { default: 10 },
28
28
  "pageSizeModifiers": {}
29
29
  }),
30
- emits: /* @__PURE__ */ mergeModels([
30
+ emits: /*@__PURE__*/ mergeModels([
31
31
  "update:pageNumber",
32
32
  "change:pageNumber",
33
33
  "update:pageSize",
@@ -1 +1 @@
1
- {"version":3,"file":"paginator.js","names":[],"sources":["../../../src/components/paginator/paginator.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size)]\" ref=\"paginatorRef\">\n <div>共 {{ total }} 条</div>\n\n <u-select\n :class=\"cls.e('size-select')\"\n v-model=\"pageSize\"\n size=\"small\"\n :options=\"sizeOptions\"\n :clearable=\"false\"\n @change=\"handleChangePageSize\"\n />\n\n <ul :class=\"[cls.e('pages')]\" v-if=\"!simple\">\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', preDisabled)]\"\n @click=\"handleJumpToFirst\"\n @mouseenter=\"hovered.first = true\"\n @mouseleave=\"hovered.first = false\"\n v-ripple=\"!preDisabled\"\n >\n <span v-if=\"hovered.first\">1</span>\n <UIcon v-else><DArrowLeft /></UIcon>\n </li>\n\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', pageNumber === 1)]\"\n @click=\"handleJumpToPrev\"\n v-ripple=\"!preDisabled\"\n >\n <UIcon><ArrowLeft /></UIcon>\n </li>\n\n <li\n v-for=\"num in pageNumbers\"\n :key=\"num\"\n :class=\"[cls.e('btn'), bem.is('active', pageNumber === num)]\"\n @click=\"handleChangePageNumber(num)\"\n v-ripple\n >\n {{ num }}\n </li>\n\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', nextDisabled)]\"\n @click=\"handleJumpToNext\"\n v-ripple=\"!nextDisabled\"\n >\n <UIcon><ArrowRight /></UIcon>\n </li>\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', nextDisabled)]\"\n @click=\"handleJumpToLast\"\n @mouseenter=\"hovered.last = true\"\n @mouseleave=\"hovered.last = false\"\n v-ripple=\"!nextDisabled\"\n >\n <span v-if=\"hovered.last\">{{ totalPages }}</span>\n <UIcon v-else><DArrowRight /></UIcon>\n </li>\n </ul>\n\n <div :class=\"cls.e('jumper')\">\n <span>前往</span>\n <u-number-input\n :class=\"cls.e('page-input')\"\n size=\"small\"\n :min=\"1\"\n :max=\"totalPages\"\n :precision=\"0\"\n :model-value=\"pageNumber\"\n :clearable=\"false\"\n @keyup.enter=\"handleKeyEnter\"\n @change=\"pageNumber = $event!\"\n />\n <span>/ {{ totalPages }}</span>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { n } from '@cat-kit/core'\nimport { useConfig, useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, reactive, shallowRef } from 'vue'\n\nimport type { PaginatorProps, PaginatorEmits, _PaginatorExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNumberInput } from '../number-input'\nimport { USelect } from '../select'\n\ndefineOptions({ name: 'Paginator' })\n\nconst { config } = useConfig()\n\nconst props = withDefaults(defineProps<PaginatorProps>(), { total: 0 })\n\nconst emit = defineEmits<PaginatorEmits>()\n\nconst cls = bem('paginator')\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst pageNumber = defineModel<number>('pageNumber', { default: 1 })\n\nconst pageSize = defineModel<number>('pageSize', { default: 10 })\n\nfunction emitPageSize(value: number) {\n emit('change:pageSize', value)\n}\n\nfunction emitPageNumber(value: number) {\n emit('change:pageNumber', value)\n}\n\nconst handleChangePageSize = (size?: Record<string, any>) => {\n emitPageSize(size?.value)\n pageNumber.value = 1\n}\n\nfunction handleChangePageNumber(num: number) {\n if (props.pageNumber === num) return\n pageNumber.value = num\n emitPageNumber(pageNumber.value)\n}\n\nconst currentSize = computed(() => {\n return props.pageSize ?? config.paginator.pageSize\n})\n\n/** 完整页码 */\nconst totalPages = computed(() => {\n return Math.ceil(props.total / currentSize.value)\n})\n\nconst sizeOptions = computed(() => {\n return (props.pageSizeOptions ?? config.paginator.pageSizeOptions).map((value) => {\n return { label: `${value}条`, value }\n })\n})\n\n/** 做多显示5个页码 */\nconst pageNumbers = computed(() => {\n const startPageNum = n(pageNumber.value - 2).range(1, Math.max(totalPages.value - 4, 1))\n\n return Array.from({ length: Math.min(totalPages.value, 5) }).map(\n (_, index) => startPageNum + index\n )\n})\n\nconst preDisabled = computed(() => {\n return pageNumber.value <= 1\n})\nconst nextDisabled = computed(() => {\n return pageNumber.value >= totalPages.value\n})\n\nfunction handleJumpToFirst() {\n if (preDisabled.value) return\n pageNumber.value = 1\n emitPageNumber(pageNumber.value)\n}\nfunction handleJumpToLast() {\n if (nextDisabled.value) return\n pageNumber.value = totalPages.value\n emitPageNumber(pageNumber.value)\n}\nfunction handleJumpToPrev() {\n if (preDisabled.value) return\n pageNumber.value = pageNumber.value - 1\n emitPageNumber(pageNumber.value)\n}\nfunction handleJumpToNext() {\n if (nextDisabled.value) return\n\n pageNumber.value = pageNumber.value + 1\n emitPageNumber(pageNumber.value)\n}\n\nfunction handleKeyEnter(e: KeyboardEvent) {\n const target = e.target as HTMLInputElement\n const val = +target.value\n if (!isNaN(val) && val > 0 && val <= totalPages.value) {\n pageNumber.value = val\n emitPageNumber(pageNumber.value)\n }\n}\n\n/** 鼠标停留位置 */\nconst hovered = reactive({ first: false, last: false })\n\nconst paginatorRef = shallowRef<HTMLElement>()\n\ndefineExpose<_PaginatorExposed>({ el: paginatorRef })\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"paginator.js","names":[],"sources":["../../../src/components/paginator/paginator.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size)]\" ref=\"paginatorRef\">\n <div>共 {{ total }} 条</div>\n\n <u-select\n :class=\"cls.e('size-select')\"\n v-model=\"pageSize\"\n size=\"small\"\n :options=\"sizeOptions\"\n :clearable=\"false\"\n @change=\"handleChangePageSize\"\n />\n\n <ul :class=\"[cls.e('pages')]\" v-if=\"!simple\">\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', preDisabled)]\"\n @click=\"handleJumpToFirst\"\n @mouseenter=\"hovered.first = true\"\n @mouseleave=\"hovered.first = false\"\n v-ripple=\"!preDisabled\"\n >\n <span v-if=\"hovered.first\">1</span>\n <UIcon v-else><DArrowLeft /></UIcon>\n </li>\n\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', pageNumber === 1)]\"\n @click=\"handleJumpToPrev\"\n v-ripple=\"!preDisabled\"\n >\n <UIcon><ArrowLeft /></UIcon>\n </li>\n\n <li\n v-for=\"num in pageNumbers\"\n :key=\"num\"\n :class=\"[cls.e('btn'), bem.is('active', pageNumber === num)]\"\n @click=\"handleChangePageNumber(num)\"\n v-ripple\n >\n {{ num }}\n </li>\n\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', nextDisabled)]\"\n @click=\"handleJumpToNext\"\n v-ripple=\"!nextDisabled\"\n >\n <UIcon><ArrowRight /></UIcon>\n </li>\n <li\n :class=\"[cls.e('btn'), bem.is('disabled', nextDisabled)]\"\n @click=\"handleJumpToLast\"\n @mouseenter=\"hovered.last = true\"\n @mouseleave=\"hovered.last = false\"\n v-ripple=\"!nextDisabled\"\n >\n <span v-if=\"hovered.last\">{{ totalPages }}</span>\n <UIcon v-else><DArrowRight /></UIcon>\n </li>\n </ul>\n\n <div :class=\"cls.e('jumper')\">\n <span>前往</span>\n <u-number-input\n :class=\"cls.e('page-input')\"\n size=\"small\"\n :min=\"1\"\n :max=\"totalPages\"\n :precision=\"0\"\n :model-value=\"pageNumber\"\n :clearable=\"false\"\n @keyup.enter=\"handleKeyEnter\"\n @change=\"pageNumber = $event!\"\n />\n <span>/ {{ totalPages }}</span>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { n } from '@cat-kit/core'\nimport { useConfig, useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, reactive, shallowRef } from 'vue'\n\nimport type { PaginatorProps, PaginatorEmits, _PaginatorExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNumberInput } from '../number-input'\nimport { USelect } from '../select'\n\ndefineOptions({ name: 'UPaginator' })\n\nconst { config } = useConfig()\n\nconst props = withDefaults(defineProps<PaginatorProps>(), { total: 0 })\n\nconst emit = defineEmits<PaginatorEmits>()\n\nconst cls = bem('paginator')\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst pageNumber = defineModel<number>('pageNumber', { default: 1 })\n\nconst pageSize = defineModel<number>('pageSize', { default: 10 })\n\nfunction emitPageSize(value: number) {\n emit('change:pageSize', value)\n}\n\nfunction emitPageNumber(value: number) {\n emit('change:pageNumber', value)\n}\n\nconst handleChangePageSize = (size?: Record<string, any>) => {\n emitPageSize(size?.value)\n pageNumber.value = 1\n}\n\nfunction handleChangePageNumber(num: number) {\n if (props.pageNumber === num) return\n pageNumber.value = num\n emitPageNumber(pageNumber.value)\n}\n\nconst currentSize = computed(() => {\n return props.pageSize ?? config.paginator.pageSize\n})\n\n/** 完整页码 */\nconst totalPages = computed(() => {\n return Math.ceil(props.total / currentSize.value)\n})\n\nconst sizeOptions = computed(() => {\n return (props.pageSizeOptions ?? config.paginator.pageSizeOptions).map((value) => {\n return { label: `${value}条`, value }\n })\n})\n\n/** 做多显示5个页码 */\nconst pageNumbers = computed(() => {\n const startPageNum = n(pageNumber.value - 2).range(1, Math.max(totalPages.value - 4, 1))\n\n return Array.from({ length: Math.min(totalPages.value, 5) }).map(\n (_, index) => startPageNum + index\n )\n})\n\nconst preDisabled = computed(() => {\n return pageNumber.value <= 1\n})\nconst nextDisabled = computed(() => {\n return pageNumber.value >= totalPages.value\n})\n\nfunction handleJumpToFirst() {\n if (preDisabled.value) return\n pageNumber.value = 1\n emitPageNumber(pageNumber.value)\n}\nfunction handleJumpToLast() {\n if (nextDisabled.value) return\n pageNumber.value = totalPages.value\n emitPageNumber(pageNumber.value)\n}\nfunction handleJumpToPrev() {\n if (preDisabled.value) return\n pageNumber.value = pageNumber.value - 1\n emitPageNumber(pageNumber.value)\n}\nfunction handleJumpToNext() {\n if (nextDisabled.value) return\n\n pageNumber.value = pageNumber.value + 1\n emitPageNumber(pageNumber.value)\n}\n\nfunction handleKeyEnter(e: KeyboardEvent) {\n const target = e.target as HTMLInputElement\n const val = +target.value\n if (!isNaN(val) && val > 0 && val <= totalPages.value) {\n pageNumber.value = val\n emitPageNumber(pageNumber.value)\n }\n}\n\n/** 鼠标停留位置 */\nconst hovered = reactive({ first: false, last: false })\n\nconst paginatorRef = shallowRef<HTMLElement>()\n\ndefineExpose<_PaginatorExposed>({ el: paginatorRef })\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"color-transform.js","names":[],"sources":["../../../src/components/palette/color-transform.ts"],"sourcesContent":["import type { PaletteRGB, PaletteHSV } from '../../types'\n\n/**\n * 将色相值转换为 RGB 颜色\n * @param h 色相值\n * @returns RGB 颜色\n */\nexport function HUE2RGB(h: number): PaletteRGB {\n // 将色相值映射到0-5的范围\n const segment = h / 60\n const x = 1 - Math.abs((segment % 2) - 1) // 计算中间值\n let r = 0,\n g = 0,\n b = 0\n // 根据色相所在的区间计算RGB值\n if (segment >= 0 && segment < 1) {\n ;[r, g, b] = [1, x, 0]\n } else if (segment < 2) {\n ;[r, g, b] = [x, 1, 0]\n } else if (segment < 3) {\n ;[r, g, b] = [0, 1, x]\n } else if (segment < 4) {\n ;[r, g, b] = [0, x, 1]\n } else if (segment < 5) {\n ;[r, g, b] = [x, 0, 1]\n } else {\n ;[r, g, b] = [1, 0, x]\n }\n // 将RGB值从0-1范围映射到0-255范围\n return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }\n}\n\n/**\n * 将色调、饱和度和亮度转换为 RGB 颜色\n * @param hsv 色调、饱和度和亮度\n */\nexport function HSV2RGB(hsv: PaletteHSV): PaletteRGB {\n const { h, s, v } = hsv\n\n // 使用色相区间映射获取基础RGB值\n const { r, g, b } = HUE2RGB(h)\n\n // 应用饱和度和亮度\n const saturationFactor = 1 - s\n const valueFactor = v\n\n return {\n r: Math.round((r + (255 - r) * saturationFactor) * valueFactor),\n g: Math.round((g + (255 - g) * saturationFactor) * valueFactor),\n b: Math.round((b + (255 - b) * saturationFactor) * valueFactor)\n }\n}\n\n/**\n * 将 RGB 颜色转换为 HEX 颜色\n * @param RGB RGB 颜色\n * @param alpha 透明度\n * @returns HEX 颜色\n */\nexport function RGB2HEX(RGB: PaletteRGB, alpha = 1): string {\n let hexStr = ['r', 'g', 'b']\n .map((key) => RGB[key].toString(16).padStart(2, '0'))\n .join('')\n .toUpperCase()\n\n if (alpha < 1) {\n hexStr += Math.round(alpha * 255)\n .toString(16)\n .padStart(2, '0')\n .toUpperCase()\n }\n\n return hexStr\n}\n\n/**\n * 将 RGB 颜色转换为 HSV 颜色\n * @param RGB RGB 颜色\n * @returns HSV 颜色\n */\nexport function RGB2HSV(RGB: PaletteRGB): PaletteHSV {\n // 归一化到0-1范围\n const red = RGB.r / 255\n const green = RGB.g / 255\n const blue = RGB.b / 255\n const max = Math.max(red, green, blue)\n const min = Math.min(red, green, blue)\n const delta = max - min\n let h = 0\n if (delta !== 0) {\n if (max === red) {\n h = ((green - blue) / delta) % 6\n } else if (max === green) {\n h = (blue - red) / delta + 2\n } else {\n h = (red - green) / delta + 4\n }\n h = (h * 60 + 360) % 360 // 确保正值\n }\n const s = max === 0 ? 0 : delta / max\n const v = max\n return { h, s, v }\n}\n\n/**\n * 将 HEX 颜色转换为 RGB 颜色\n * @param hex HEX 颜色\n * @returns RGB 颜色\n */\nexport function HEX2RGBA(hex: string): { RGB: PaletteRGB; alpha: number } {\n const rgb = { r: 0, g: 0, b: 0 }\n let alpha = 1\n\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex\n .split('')\n .map((char) => char + char)\n .join('')\n }\n\n const alphaStr = hex.slice(6)\n if (alphaStr) {\n alpha = parseInt(alphaStr, 16) / 255\n }\n rgb.r = parseInt(hex.slice(0, 2), 16)\n rgb.g = parseInt(hex.slice(2, 4), 16)\n rgb.b = parseInt(hex.slice(4, 6), 16)\n\n return { RGB: rgb, alpha }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"color-transform.js","names":[],"sources":["../../../src/components/palette/color-transform.ts"],"sourcesContent":["import type { PaletteRGB, PaletteHSV } from '../../types'\n\n/**\n * 将色相值转换为 RGB 颜色\n * @param h 色相值\n * @returns RGB 颜色\n */\nexport function HUE2RGB(h: number): PaletteRGB {\n // 将色相值映射到0-5的范围\n const segment = h / 60\n const x = 1 - Math.abs((segment % 2) - 1) // 计算中间值\n let r = 0,\n g = 0,\n b = 0\n // 根据色相所在的区间计算RGB值\n if (segment >= 0 && segment < 1) {\n ;[r, g, b] = [1, x, 0]\n } else if (segment < 2) {\n ;[r, g, b] = [x, 1, 0]\n } else if (segment < 3) {\n ;[r, g, b] = [0, 1, x]\n } else if (segment < 4) {\n ;[r, g, b] = [0, x, 1]\n } else if (segment < 5) {\n ;[r, g, b] = [x, 0, 1]\n } else {\n ;[r, g, b] = [1, 0, x]\n }\n // 将RGB值从0-1范围映射到0-255范围\n return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }\n}\n\n/**\n * 将色调、饱和度和亮度转换为 RGB 颜色\n * @param hsv 色调、饱和度和亮度\n */\nexport function HSV2RGB(hsv: PaletteHSV): PaletteRGB {\n const { h, s, v } = hsv\n\n // 使用色相区间映射获取基础RGB值\n const { r, g, b } = HUE2RGB(h)\n\n // 应用饱和度和亮度\n const saturationFactor = 1 - s\n const valueFactor = v\n\n return {\n r: Math.round((r + (255 - r) * saturationFactor) * valueFactor),\n g: Math.round((g + (255 - g) * saturationFactor) * valueFactor),\n b: Math.round((b + (255 - b) * saturationFactor) * valueFactor)\n }\n}\n\n/**\n * 将 RGB 颜色转换为 HEX 颜色\n * @param RGB RGB 颜色\n * @param alpha 透明度\n * @returns HEX 颜色\n */\nexport function RGB2HEX(RGB: PaletteRGB, alpha = 1): string {\n let hexStr = ['r', 'g', 'b']\n .map((key) => RGB[key].toString(16).padStart(2, '0'))\n .join('')\n .toUpperCase()\n\n if (alpha < 1) {\n hexStr += Math.round(alpha * 255)\n .toString(16)\n .padStart(2, '0')\n .toUpperCase()\n }\n\n return hexStr\n}\n\n/**\n * 将 RGB 颜色转换为 HSV 颜色\n * @param RGB RGB 颜色\n * @returns HSV 颜色\n */\nexport function RGB2HSV(RGB: PaletteRGB): PaletteHSV {\n // 归一化到0-1范围\n const red = RGB.r / 255\n const green = RGB.g / 255\n const blue = RGB.b / 255\n const max = Math.max(red, green, blue)\n const min = Math.min(red, green, blue)\n const delta = max - min\n let h = 0\n if (delta !== 0) {\n if (max === red) {\n h = ((green - blue) / delta) % 6\n } else if (max === green) {\n h = (blue - red) / delta + 2\n } else {\n h = (red - green) / delta + 4\n }\n h = (h * 60 + 360) % 360 // 确保正值\n }\n const s = max === 0 ? 0 : delta / max\n const v = max\n return { h, s, v }\n}\n\n/**\n * 将 HEX 颜色转换为 RGB 颜色\n * @param hex HEX 颜色\n * @returns RGB 颜色\n */\nexport function HEX2RGBA(hex: string): { RGB: PaletteRGB; alpha: number } {\n const rgb = { r: 0, g: 0, b: 0 }\n let alpha = 1\n\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex\n .split('')\n .map((char) => char + char)\n .join('')\n }\n\n const alphaStr = hex.slice(6)\n if (alphaStr) {\n alpha = parseInt(alphaStr, 16) / 255\n }\n rgb.r = parseInt(hex.slice(0, 2), 16)\n rgb.g = parseInt(hex.slice(2, 4), 16)\n rgb.b = parseInt(hex.slice(4, 6), 16)\n\n return { RGB: rgb, alpha }\n}\n"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { PaletteDIKey } from "./di.js";
2
2
  import { computed, createElementBlock, createElementVNode, defineComponent, inject, normalizeClass, normalizeStyle, onMounted, openBlock, shallowRef, unref, watch, withModifiers } from "vue";
3
3
  import { useDrag } from "@veltra/compositions";
4
4
  //#region src/components/palette/palette-alpha.vue
5
- const _sfc_main = /* @__PURE__ */ defineComponent({
6
- name: "PaletteAlpha",
5
+ const _sfc_main = /*@__PURE__*/ defineComponent({
6
+ name: "UPaletteAlpha",
7
7
  __name: "palette-alpha",
8
8
  setup(__props, { expose: __expose }) {
9
9
  const { cls, updateAlpha, hueRGB, alpha, userAction, isUserActive } = inject(PaletteDIKey);