@veltra/desktop 1.1.28 → 1.1.30

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 (309) hide show
  1. package/dist/components/action/action-group.vue.d.ts +4 -6
  2. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js +1 -1
  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.map +1 -1
  5. package/dist/components/action/action.vue.d.ts +4 -7
  6. package/dist/components/action/di.js.map +1 -1
  7. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  8. package/dist/components/auto-complete/auto-complete.vue.d.ts +3 -5
  9. package/dist/components/auto-complete/use-keyboard.js.map +1 -1
  10. package/dist/components/auto-complete/use-suggestions.js.map +1 -1
  11. package/dist/components/badge/badge.js.map +1 -1
  12. package/dist/components/badge/badge.vue.d.ts +2 -4
  13. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  14. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  15. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  16. package/dist/components/batch-edit/batch-edit.vue.d.ts +4 -7
  17. package/dist/components/batch-edit/di.js.map +1 -1
  18. package/dist/components/batch-edit/helper.js.map +1 -1
  19. package/dist/components/batch-edit/use-edit.js.map +1 -1
  20. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  21. package/dist/components/breadcrumb/breadcrumb.vue.d.ts +3 -5
  22. package/dist/components/button/button-group.js.map +1 -1
  23. package/dist/components/button/button-group.vue.d.ts +1 -3
  24. package/dist/components/button/button.js.map +1 -1
  25. package/dist/components/button/button.vue.d.ts +4 -6
  26. package/dist/components/calendar/calendar.js.map +1 -1
  27. package/dist/components/calendar/calendar.vue.d.ts +3 -5
  28. package/dist/components/calendar/utils.js.map +1 -1
  29. package/dist/components/card/card-action.js.map +1 -1
  30. package/dist/components/card/card-action.vue.d.ts +1 -3
  31. package/dist/components/card/card-content.js.map +1 -1
  32. package/dist/components/card/card-content.vue.d.ts +1 -3
  33. package/dist/components/card/card-cover.js.map +1 -1
  34. package/dist/components/card/card-cover.vue.d.ts +1 -3
  35. package/dist/components/card/card-header.js.map +1 -1
  36. package/dist/components/card/card-header.vue.d.ts +1 -3
  37. package/dist/components/card/card.js.map +1 -1
  38. package/dist/components/card/card.vue.d.ts +1 -3
  39. package/dist/components/card/di.js.map +1 -1
  40. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  41. package/dist/components/cascade/cascade.js.map +1 -1
  42. package/dist/components/cascade/cascade.vue.d.ts +6 -8
  43. package/dist/components/cascade/di.js.map +1 -1
  44. package/dist/components/cascade/node.js.map +1 -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.map +1 -1
  48. package/dist/components/check-tag/check-tag.js.map +1 -1
  49. package/dist/components/check-tag/check-tag.vue.d.ts +3 -5
  50. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  51. package/dist/components/checkbox/checkbox-button.vue.d.ts +4 -7
  52. package/dist/components/checkbox/checkbox.js.map +1 -1
  53. package/dist/components/checkbox/checkbox.vue.d.ts +3 -5
  54. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  55. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +3 -5
  56. package/dist/components/code-editor/code-editor.js.map +1 -1
  57. package/dist/components/code-editor/code-editor.vue.d.ts +3 -5
  58. package/dist/components/collapse/collapse-item.js.map +1 -1
  59. package/dist/components/collapse/collapse-item.vue.d.ts +1 -3
  60. package/dist/components/collapse/collapse.js.map +1 -1
  61. package/dist/components/collapse/collapse.vue.d.ts +3 -5
  62. package/dist/components/collapse/di.js.map +1 -1
  63. package/dist/components/condition-editor/components/condition-group.js.map +1 -1
  64. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  65. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  66. package/dist/components/condition-editor/condition-editor.vue.d.ts +3 -5
  67. package/dist/components/condition-editor/core/evaluator.js.map +1 -1
  68. package/dist/components/condition-editor/core/operators.js.map +1 -1
  69. package/dist/components/context-menu/api.js.map +1 -1
  70. package/dist/components/context-menu/context-menu-item.js.map +1 -1
  71. package/dist/components/context-menu/context-menu.js.map +1 -1
  72. package/dist/components/context-menu/context-menu.vue.d.ts +3 -5
  73. package/dist/components/context-menu/di.js.map +1 -1
  74. package/dist/components/date-panel/date-panel.js.map +1 -1
  75. package/dist/components/date-panel/date-panel.vue.d.ts +8 -12
  76. package/dist/components/date-panel/di.js.map +1 -1
  77. package/dist/components/date-panel/headers/day.js.map +1 -1
  78. package/dist/components/date-panel/headers/month.js.map +1 -1
  79. package/dist/components/date-panel/headers/year.js.map +1 -1
  80. package/dist/components/date-panel/panels/day.js.map +1 -1
  81. package/dist/components/date-panel/panels/month.js.map +1 -1
  82. package/dist/components/date-panel/panels/year.js.map +1 -1
  83. package/dist/components/date-panel/use-date-select.js.map +1 -1
  84. package/dist/components/date-panel/use-panel-date.js.map +1 -1
  85. package/dist/components/date-panel/use-panel.js.map +1 -1
  86. package/dist/components/date-picker/date-picker.js.map +1 -1
  87. package/dist/components/date-picker/date-picker.vue.d.ts +3 -5
  88. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  89. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +3 -5
  90. package/dist/components/dialog/di.js.map +1 -1
  91. package/dist/components/dialog/dialog.js.map +1 -1
  92. package/dist/components/dialog/dialog.vue.d.ts +3 -6
  93. package/dist/components/dialog/use-maximum.js.map +1 -1
  94. package/dist/components/drawer/drawer.js.map +1 -1
  95. package/dist/components/drawer/drawer.vue.d.ts +3 -5
  96. package/dist/components/dropdown/dropdown.js.map +1 -1
  97. package/dist/components/dropdown/dropdown.vue.d.ts +3 -6
  98. package/dist/components/empty/empty.js.map +1 -1
  99. package/dist/components/empty/empty.vue.d.ts +2 -4
  100. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  101. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  102. package/dist/components/expression-editor/core/chip.js.map +1 -1
  103. package/dist/components/expression-editor/core/editor.js.map +1 -1
  104. package/dist/components/expression-editor/core/mention.js.map +1 -1
  105. package/dist/components/expression-editor/core/model.js.map +1 -1
  106. package/dist/components/expression-editor/di.js.map +1 -1
  107. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  108. package/dist/components/expression-editor/expression-editor.vue.d.ts +3 -5
  109. package/dist/components/file-picker/file-picker.js.map +1 -1
  110. package/dist/components/file-picker/file-picker.vue.d.ts +3 -5
  111. package/dist/components/file-picker/helper.js.map +1 -1
  112. package/dist/components/file-viewer/file-viewer.js +1 -1
  113. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  114. package/dist/components/file-viewer/file-viewer.vue.d.ts +5 -6
  115. package/dist/components/file-viewer/helper.js.map +1 -1
  116. package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
  117. package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
  118. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  119. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  120. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  121. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  122. package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
  123. package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
  124. package/dist/components/float-button/float-button.js.map +1 -1
  125. package/dist/components/float-button/float-button.vue.d.ts +3 -5
  126. package/dist/components/form/dynamic-form-model.js.map +1 -1
  127. package/dist/components/form/form-model.js.map +1 -1
  128. package/dist/components/form/form.vue.d.ts +3 -4
  129. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +1 -1
  130. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  131. package/dist/components/form/helper.js.map +1 -1
  132. package/dist/components/form/use-node-interceptor.js.map +1 -1
  133. package/dist/components/form-item/form-item.vue.d.ts +2 -4
  134. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/form-item/helper.js.map +1 -1
  137. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  138. package/dist/components/gantt-chart/gantt-chart.vue.d.ts +1 -3
  139. package/dist/components/grid/breakpoint.js.map +1 -1
  140. package/dist/components/grid/di.js.map +1 -1
  141. package/dist/components/grid/grid-item.js.map +1 -1
  142. package/dist/components/grid/grid-item.vue.d.ts +2 -4
  143. package/dist/components/grid/grid.js.map +1 -1
  144. package/dist/components/grid/grid.vue.d.ts +3 -5
  145. package/dist/components/grid/use-responsive.js.map +1 -1
  146. package/dist/components/grid-input/grid-input.js.map +1 -1
  147. package/dist/components/grid-input/grid-input.vue.d.ts +3 -6
  148. package/dist/components/group-input/group-input.js.map +1 -1
  149. package/dist/components/group-input/group-input.vue.d.ts +2 -4
  150. package/dist/components/group-input/use-group-items.js.map +1 -1
  151. package/dist/components/icon/icon.js.map +1 -1
  152. package/dist/components/icon/icon.vue.d.ts +1 -3
  153. package/dist/components/input/input.vue.d.ts +3 -5
  154. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js +3 -3
  155. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  156. package/dist/components/kbd/kbd.js.map +1 -1
  157. package/dist/components/kbd/kbd.vue.d.ts +1 -3
  158. package/dist/components/layout/di.js.map +1 -1
  159. package/dist/components/layout/layout-resizer.js.map +1 -1
  160. package/dist/components/layout/layout.js.map +1 -1
  161. package/dist/components/layout/layout.vue.d.ts +2 -4
  162. package/dist/components/list/list-item.js.map +1 -1
  163. package/dist/components/list/list-item.vue.d.ts +1 -3
  164. package/dist/components/list/list.js.map +1 -1
  165. package/dist/components/list/list.vue.d.ts +1 -3
  166. package/dist/components/loading/directive.js.map +1 -1
  167. package/dist/components/loading/loading.js.map +1 -1
  168. package/dist/components/loading/loading.vue.d.ts +2 -4
  169. package/dist/components/menu/di.js.map +1 -1
  170. package/dist/components/menu/helper.js.map +1 -1
  171. package/dist/components/menu/menu-icon.js.map +1 -1
  172. package/dist/components/menu/menu-item-collapsed.js.map +1 -1
  173. package/dist/components/menu/menu-item.js.map +1 -1
  174. package/dist/components/menu/menu-item.vue.d.ts +1 -3
  175. package/dist/components/menu/menu-sub-collapsed.js.map +1 -1
  176. package/dist/components/menu/menu-sub.js.map +1 -1
  177. package/dist/components/menu/menu-sub.vue.d.ts +1 -3
  178. package/dist/components/menu/menu.js.map +1 -1
  179. package/dist/components/menu/menu.vue.d.ts +3 -5
  180. package/dist/components/menu/use-menu-item.js.map +1 -1
  181. package/dist/components/menu/walk-menu-path.js.map +1 -1
  182. package/dist/components/message/helper.js.map +1 -1
  183. package/dist/components/message/message-box.js.map +1 -1
  184. package/dist/components/message/message.js.map +1 -1
  185. package/dist/components/message/message.vue.d.ts +3 -5
  186. package/dist/components/message/message2.js.map +1 -1
  187. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  188. package/dist/components/message-confirm/message-confirm.vue.d.ts +2 -3
  189. package/dist/components/message-confirm/message-confirm2.js.map +1 -1
  190. package/dist/components/multi-select/di.js.map +1 -1
  191. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  192. package/dist/components/multi-select/multi-select.js.map +1 -1
  193. package/dist/components/multi-select/multi-select.vue.d.ts +5 -7
  194. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  195. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +6 -7
  196. package/dist/components/node-render/node-render.js.map +1 -1
  197. package/dist/components/notification/index.js.map +1 -1
  198. package/dist/components/notification/notification.js.map +1 -1
  199. package/dist/components/notification/notification.vue.d.ts +3 -6
  200. package/dist/components/number/number.js.map +1 -1
  201. package/dist/components/number/number.vue.d.ts +2 -4
  202. package/dist/components/number-input/number-input.js.map +1 -1
  203. package/dist/components/number-input/number-input.vue.d.ts +3 -5
  204. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  205. package/dist/components/number-range-input/number-range-input.vue.d.ts +4 -6
  206. package/dist/components/paginator/paginator.js.map +1 -1
  207. package/dist/components/paginator/paginator.vue.d.ts +3 -5
  208. package/dist/components/palette/color-transform.js.map +1 -1
  209. package/dist/components/palette/di.js.map +1 -1
  210. package/dist/components/palette/palette-alpha.js.map +1 -1
  211. package/dist/components/palette/palette-color-switch.js.map +1 -1
  212. package/dist/components/palette/palette-hue.js.map +1 -1
  213. package/dist/components/palette/palette-sv.js.map +1 -1
  214. package/dist/components/palette/palette.js.map +1 -1
  215. package/dist/components/palette/palette.vue.d.ts +3 -5
  216. package/dist/components/palette/use-hsv.js.map +1 -1
  217. package/dist/components/password-input/password-input.js.map +1 -1
  218. package/dist/components/password-input/password-input.vue.d.ts +3 -5
  219. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  220. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +4 -6
  221. package/dist/components/progress/progress.js.map +1 -1
  222. package/dist/components/progress/progress.vue.d.ts +2 -3
  223. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  224. package/dist/components/progress-nodes/progress-nodes.vue.d.ts +4 -7
  225. package/dist/components/radio/radio.js.map +1 -1
  226. package/dist/components/radio/radio.vue.d.ts +3 -5
  227. package/dist/components/radio-group/radio-group.js.map +1 -1
  228. package/dist/components/radio-group/radio-group.vue.d.ts +3 -5
  229. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  230. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +4 -6
  231. package/dist/components/rich-text-editor/toolbar.js.map +1 -1
  232. package/dist/components/scroll/di.js.map +1 -1
  233. package/dist/components/scroll/scroll-bar.js.map +1 -1
  234. package/dist/components/scroll/scroll.js.map +1 -1
  235. package/dist/components/scroll/scroll.vue.d.ts +3 -5
  236. package/dist/components/select/select.js.map +1 -1
  237. package/dist/components/select/select.vue.d.ts +5 -7
  238. package/dist/components/select/use-keyboard.js.map +1 -1
  239. package/dist/components/select/use-options.js.map +1 -1
  240. package/dist/components/slider/di.js.map +1 -1
  241. package/dist/components/slider/slider-thumb.js.map +1 -1
  242. package/dist/components/slider/slider.js.map +1 -1
  243. package/dist/components/slider/slider.vue.d.ts +2 -4
  244. package/dist/components/slider/use-slider.js.map +1 -1
  245. package/dist/components/steps/steps.js.map +1 -1
  246. package/dist/components/steps/steps.vue.d.ts +4 -7
  247. package/dist/components/switch/switch.js.map +1 -1
  248. package/dist/components/switch/switch.vue.d.ts +3 -5
  249. package/dist/components/table/di.js.map +1 -1
  250. package/dist/components/table/node/col.js.map +1 -1
  251. package/dist/components/table/node/row.js.map +1 -1
  252. package/dist/components/table/table-body.js.map +1 -1
  253. package/dist/components/table/table-cell.js.map +1 -1
  254. package/dist/components/table/table-foot.js.map +1 -1
  255. package/dist/components/table/table-head.js.map +1 -1
  256. package/dist/components/table/table-row.js.map +1 -1
  257. package/dist/components/table/table.js.map +1 -1
  258. package/dist/components/table/table.vue.d.ts +7 -10
  259. package/dist/components/table/use-check.js.map +1 -1
  260. package/dist/components/table/use-col-resize.js.map +1 -1
  261. package/dist/components/table/use-columns.js.map +1 -1
  262. package/dist/components/table/use-fixed-columns.js.map +1 -1
  263. package/dist/components/table/use-rows.js.map +1 -1
  264. package/dist/components/table/use-table.js.map +1 -1
  265. package/dist/components/table-editor/table-editor.js.map +1 -1
  266. package/dist/components/table-editor/table-editor.vue.d.ts +3 -5
  267. package/dist/components/tabs/tabs-horizontal.js +5 -2
  268. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  269. package/dist/components/tabs/tabs-horizontal.vue.d.ts +6 -7
  270. package/dist/components/tabs/tabs-vertical.js +5 -2
  271. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  272. package/dist/components/tabs/tabs-vertical.vue.d.ts +10 -10
  273. package/dist/components/tabs/tabs.js.map +1 -1
  274. package/dist/components/tabs/tabs.vue.d.ts +11 -6
  275. package/dist/components/tabs/use-tabs-bar.js.map +1 -1
  276. package/dist/components/tag/tag.js.map +1 -1
  277. package/dist/components/tag/tag.vue.d.ts +3 -5
  278. package/dist/components/text/text.js.map +1 -1
  279. package/dist/components/text/text.vue.d.ts +2 -4
  280. package/dist/components/textarea/textarea.js.map +1 -1
  281. package/dist/components/textarea/textarea.vue.d.ts +3 -5
  282. package/dist/components/textarea/utils.js.map +1 -1
  283. package/dist/components/theme/schema.js.map +1 -1
  284. package/dist/components/theme/theme.js.map +1 -1
  285. package/dist/components/theme/theme.vue.d.ts +1 -3
  286. package/dist/components/tip/tip.js.map +1 -1
  287. package/dist/components/tip/tip.vue.d.ts +3 -5
  288. package/dist/components/tip/use-nest.js.map +1 -1
  289. package/dist/components/tree/di.js.map +1 -1
  290. package/dist/components/tree/tree-node.js.map +1 -1
  291. package/dist/components/tree/tree-node2.js.map +1 -1
  292. package/dist/components/tree/tree.js.map +1 -1
  293. package/dist/components/tree/tree.vue.d.ts +3 -5
  294. package/dist/components/tree/use-check.js.map +1 -1
  295. package/dist/components/tree/use-filter.js.map +1 -1
  296. package/dist/components/tree/use-select.js.map +1 -1
  297. package/dist/components/tree/use-tree-nodes.js.map +1 -1
  298. package/dist/components/tree-select/tree-select.js.map +1 -1
  299. package/dist/components/tree-select/tree-select.vue.d.ts +6 -7
  300. package/dist/components/watermark/watermark.js.map +1 -1
  301. package/dist/components/watermark/watermark.vue.d.ts +2 -4
  302. package/dist/index.d.ts +1 -1
  303. package/dist/install.js.map +1 -1
  304. package/dist/types/index.d.ts +1 -1
  305. package/package.json +8 -8
  306. package/src/components/tabs/tabs-horizontal.vue +2 -2
  307. package/src/components/tabs/tabs-vertical.vue +3 -1
  308. package/src/components/tabs/tabs.vue +2 -2
  309. package/dist/components/kbd/index.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../../src/components/breadcrumb/breadcrumb.vue"],"sourcesContent":["<template>\n <nav :class=\"[cls.b, cls.m(size)]\" aria-label=\"Breadcrumb\">\n <ol :class=\"cls.e('list')\">\n <template v-for=\"(item, index) in props.items\" :key=\"index\">\n <li :class=\"cls.e('item')\">\n <slot name=\"item\" v-bind=\"{ item, index, isLast: index === props.items.length - 1 }\">\n <a\n v-if=\"isAnchor(item, index)\"\n :class=\"linkClass(item, index)\"\n :href=\"item.href\"\n :aria-disabled=\"item.disabled ? 'true' : undefined\"\n :tabindex=\"item.disabled ? -1 : undefined\"\n @click=\"handleAnchorClick($event, item, index)\"\n >\n {{ item.title }}\n </a>\n <span\n v-else-if=\"isActionSpan(item, index)\"\n :class=\"linkClass(item, index)\"\n role=\"link\"\n :tabindex=\"item.disabled ? -1 : 0\"\n @click=\"handleSpanClick($event, item, index)\"\n @keydown=\"handleSpanKeydown($event, item, index)\"\n >\n {{ item.title }}\n </span>\n <span v-else :class=\"innerClass(true)\" aria-current=\"page\">{{ item.title }}</span>\n </slot>\n </li>\n <li v-if=\"index < props.items.length - 1\" :class=\"cls.e('separator')\" aria-hidden=\"true\">\n <slot name=\"separator\">/</slot>\n </li>\n </template>\n </ol>\n </nav>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type {\n BreadcrumbEmits,\n BreadcrumbItem,\n BreadcrumbProps,\n BreadcrumbSlotScope,\n ComponentSize\n} from '../../types'\n\ndefineOptions({ name: 'Breadcrumb' })\n\nconst props = withDefaults(defineProps<BreadcrumbProps>(), { lastLinked: false })\n\nconst emit = defineEmits<BreadcrumbEmits>()\n\ndefineSlots<{ item?: (scope: BreadcrumbSlotScope) => unknown; separator?: () => unknown }>()\n\nconst cls = bem('breadcrumb')\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst isLast = (index: number) => index === props.items.length - 1\n\nconst isLinked = (item: BreadcrumbItem, index: number) => {\n if (item.disabled) return false\n if (isLast(index)) return props.lastLinked\n return true\n}\n\nconst isAnchor = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !!item.href\n\nconst isActionSpan = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !item.href\n\nconst innerClass = (current: boolean) => [cls.e('inner'), current && bem.is('current', current)]\n\nconst linkClass = (item: BreadcrumbItem, index: number) => [\n cls.e('inner'),\n cls.e('link'),\n bem.is('disabled', !!item.disabled),\n bem.is('current', isLast(index) && !props.lastLinked)\n]\n\nconst handleAnchorClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n ev.stopPropagation()\n }\n}\n\nconst handleSpanClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n return\n }\n emit('click', item, index, ev)\n}\n\nconst handleSpanKeydown = (ev: KeyboardEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) return\n if (ev.key !== 'Enter' && ev.key !== ' ') return\n ev.preventDefault()\n emit('click', item, index, ev)\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../../src/components/breadcrumb/breadcrumb.vue"],"sourcesContent":["<template>\n <nav :class=\"[cls.b, cls.m(size)]\" aria-label=\"Breadcrumb\">\n <ol :class=\"cls.e('list')\">\n <template v-for=\"(item, index) in props.items\" :key=\"index\">\n <li :class=\"cls.e('item')\">\n <slot name=\"item\" v-bind=\"{ item, index, isLast: index === props.items.length - 1 }\">\n <a\n v-if=\"isAnchor(item, index)\"\n :class=\"linkClass(item, index)\"\n :href=\"item.href\"\n :aria-disabled=\"item.disabled ? 'true' : undefined\"\n :tabindex=\"item.disabled ? -1 : undefined\"\n @click=\"handleAnchorClick($event, item, index)\"\n >\n {{ item.title }}\n </a>\n <span\n v-else-if=\"isActionSpan(item, index)\"\n :class=\"linkClass(item, index)\"\n role=\"link\"\n :tabindex=\"item.disabled ? -1 : 0\"\n @click=\"handleSpanClick($event, item, index)\"\n @keydown=\"handleSpanKeydown($event, item, index)\"\n >\n {{ item.title }}\n </span>\n <span v-else :class=\"innerClass(true)\" aria-current=\"page\">{{ item.title }}</span>\n </slot>\n </li>\n <li v-if=\"index < props.items.length - 1\" :class=\"cls.e('separator')\" aria-hidden=\"true\">\n <slot name=\"separator\">/</slot>\n </li>\n </template>\n </ol>\n </nav>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type {\n BreadcrumbEmits,\n BreadcrumbItem,\n BreadcrumbProps,\n BreadcrumbSlotScope,\n ComponentSize\n} from '../../types'\n\ndefineOptions({ name: 'Breadcrumb' })\n\nconst props = withDefaults(defineProps<BreadcrumbProps>(), { lastLinked: false })\n\nconst emit = defineEmits<BreadcrumbEmits>()\n\ndefineSlots<{ item?: (scope: BreadcrumbSlotScope) => unknown; separator?: () => unknown }>()\n\nconst cls = bem('breadcrumb')\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst isLast = (index: number) => index === props.items.length - 1\n\nconst isLinked = (item: BreadcrumbItem, index: number) => {\n if (item.disabled) return false\n if (isLast(index)) return props.lastLinked\n return true\n}\n\nconst isAnchor = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !!item.href\n\nconst isActionSpan = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !item.href\n\nconst innerClass = (current: boolean) => [cls.e('inner'), current && bem.is('current', current)]\n\nconst linkClass = (item: BreadcrumbItem, index: number) => [\n cls.e('inner'),\n cls.e('link'),\n bem.is('disabled', !!item.disabled),\n bem.is('current', isLast(index) && !props.lastLinked)\n]\n\nconst handleAnchorClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n ev.stopPropagation()\n }\n}\n\nconst handleSpanClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n return\n }\n emit('click', item, index, ev)\n}\n\nconst handleSpanKeydown = (ev: KeyboardEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) return\n if (ev.key !== 'Enter' && ev.key !== ' ') return\n ev.preventDefault()\n emit('click', item, index, ev)\n}\n</script>\n"],"mappings":"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"}
@@ -1,18 +1,16 @@
1
1
  import { BreadcrumbItem, BreadcrumbProps, BreadcrumbSlotScope } from "../../types/breadcrumb.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/breadcrumb/breadcrumb.vue.d.ts
5
3
  type __VLS_Slots = {
6
4
  item?: (scope: BreadcrumbSlotScope) => unknown;
7
5
  separator?: () => unknown;
8
6
  };
9
- declare const __VLS_base: _$vue.DefineComponent<BreadcrumbProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {} & {
7
+ declare const __VLS_base: import("vue").DefineComponent<BreadcrumbProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
8
  click: (item: BreadcrumbItem, index: number, ev: Event) => any;
11
- }, string, _$vue.PublicProps, Readonly<BreadcrumbProps> & Readonly<{
9
+ }, string, import("vue").PublicProps, Readonly<BreadcrumbProps> & Readonly<{
12
10
  onClick?: ((item: BreadcrumbItem, index: number, ev: Event) => any) | undefined;
13
11
  }>, {
14
12
  lastLinked: boolean;
15
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
13
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
15
  declare const _default: typeof __VLS_export;
18
16
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button/button-group.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot v-bind=\"{ props }\" />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { ButtonProps } from '../../types'\n\ndefineOptions({ name: 'ButtonGroup' })\n\nconst props = defineProps<ButtonProps>()\n\nconst cls = bem('button-group')\n\ndefineSlots<{ default: (props: { props: ButtonProps }) => any }>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,eAAc;;uBAd5B,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAX,OAAK,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button/button-group.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot v-bind=\"{ props }\" />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { ButtonProps } from '../../types'\n\ndefineOptions({ name: 'ButtonGroup' })\n\nconst props = defineProps<ButtonProps>()\n\nconst cls = bem('button-group')\n\ndefineSlots<{ default: (props: { props: ButtonProps }) => any }>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,cAAc;;uBAd5B,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC,EAAA,GAAA,CAChB,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAX,MAAK,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA"}
@@ -1,13 +1,11 @@
1
1
  import { ButtonProps } from "../../types/button.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/button/button-group.vue.d.ts
5
3
  type __VLS_Slots = {
6
4
  default: (props: {
7
5
  props: ButtonProps;
8
6
  }) => any;
9
7
  };
10
- declare const __VLS_base: _$vue.DefineComponent<ButtonProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<ButtonProps> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
8
+ declare const __VLS_base: import("vue").DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
9
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
10
  declare const _default: typeof __VLS_export;
13
11
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"classList\"\n type=\"button\"\n aria-label=\"button\"\n ref=\"buttonRef\"\n v-ripple=\"ripple\"\n @click=\"handleClick\"\n >\n <!-- 加载图标 -->\n <u-icon v-if=\"loading\" :class=\"[bem.is('loading')]\" :size=\"iconSize\">\n <component :is=\"loadingIcon\" />\n </u-icon>\n\n <!-- 左侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'left' && !loading\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n\n <slot />\n\n <!-- 右侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'right'\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ButtonEmits, ButtonProps, _ButtonExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Button' })\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n iconPosition: 'left',\n loadingIcon: () => Loading,\n disabled: false,\n propagate: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst emit = defineEmits<ButtonEmits>()\n\nconst cls = bem('button')\n\nconst classList = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n props.type && cls.m('color-' + props.type),\n bem.is('circle', props.circle),\n bem.is('disabled', props.disabled),\n bem.is('loading', props.loading),\n bem.is('plain', props.plain),\n bem.is('text', props.text)\n ]\n})\n\nconst ripple = computed(() => {\n if (props.disabled || props.loading) return false\n if ((props.plain || props.text) && props.type) {\n return bem.is(`ripple-${props.type}`)\n }\n return true\n})\n\nconst handleClick = (e: MouseEvent) => {\n if (props.disabled || props.loading) {\n e.stopPropagation()\n return\n }\n\n !props.propagate && e.stopPropagation()\n\n emit('click', e)\n}\n\nconst buttonRef = shallowRef<HTMLButtonElement>()\n\nconst exposed: _ButtonExposed = { el: buttonRef }\n\ndefineExpose(exposed)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EAOd,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EAAE,MAAM,WAA4B,CAAA;EAE/E,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,SAAQ;EAExB,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,KAAI;IACzC,IAAI,GAAG,UAAU,MAAM,OAAM;IAC7B,IAAI,GAAG,YAAY,MAAM,SAAQ;IACjC,IAAI,GAAG,WAAW,MAAM,QAAO;IAC/B,IAAI,GAAG,SAAS,MAAM,MAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,KAAI;IAC3B;IACD;EAED,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,MAAM,SAAS,OAAO;GAC5C,KAAK,MAAM,SAAS,MAAM,SAAS,MAAM,MACvC,OAAO,IAAI,GAAG,UAAU,MAAM,OAAM;GAEtC,OAAO;IACR;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,MAAM,YAAY,MAAM,SAAS;IACnC,EAAE,iBAAgB;IAClB;;GAGF,CAAC,MAAM,aAAa,EAAE,iBAAgB;GAEtC,KAAK,SAAS,EAAC;;EAGjB,MAAM,YAAY,YAA8B;EAIhD,SAAa,EAFqB,IAAI,WAElB,CAAA;;uCAxFlB,mBAwBS,UAAA;IAvBN,OAAK,eAAE,UAAA,MAAS;IACjB,MAAK;IACL,cAAW;aACP;IAAJ,KAAI;IAEH,SAAO;;IAER,mBAAA,SAAA;IACc,QAAA,WAAA,WAAA,EAAd,YAES,MAAA,YAAA,EAAA;;KAFe,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,GAAE,UAAA,CAAA,CAAA;KAAe,MAAM,QAAA;;4BAC1B,EAAA,WAAA,EAA/B,YAA+B,wBAAf,QAAA,YAAW,CAAA,EAAA,CAAA;;;IAG7B,mBAAA,SAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,UAAA,CAAgB,QAAA,WAAA,WAAA,EAApD,YAES,MAAA,YAAA,EAAA;;KAFqD,MAAM,QAAA;;4BAC1C,EAAA,WAAA,EAAxB,YAAwB,wBAAR,QAAA,KAAI,CAAA,EAAA,CAAA;;;IAGtB,WAAQ,KAAA,QAAA,UAAA;IAER,mBAAA,SAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,WAAA,WAAA,EAApC,YAES,MAAA,YAAA,EAAA;;KAF0C,MAAM,QAAA;;4BAC/B,EAAA,WAAA,EAAxB,YAAwB,wBAAR,QAAA,KAAI,CAAA,EAAA,CAAA;;;6BAjBZ,OAAA,MAAM,CAAA,CAAA"}
1
+ {"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"classList\"\n type=\"button\"\n aria-label=\"button\"\n ref=\"buttonRef\"\n v-ripple=\"ripple\"\n @click=\"handleClick\"\n >\n <!-- 加载图标 -->\n <u-icon v-if=\"loading\" :class=\"[bem.is('loading')]\" :size=\"iconSize\">\n <component :is=\"loadingIcon\" />\n </u-icon>\n\n <!-- 左侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'left' && !loading\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n\n <slot />\n\n <!-- 右侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'right'\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ButtonEmits, ButtonProps, _ButtonExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Button' })\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n iconPosition: 'left',\n loadingIcon: () => Loading,\n disabled: false,\n propagate: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst emit = defineEmits<ButtonEmits>()\n\nconst cls = bem('button')\n\nconst classList = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n props.type && cls.m('color-' + props.type),\n bem.is('circle', props.circle),\n bem.is('disabled', props.disabled),\n bem.is('loading', props.loading),\n bem.is('plain', props.plain),\n bem.is('text', props.text)\n ]\n})\n\nconst ripple = computed(() => {\n if (props.disabled || props.loading) return false\n if ((props.plain || props.text) && props.type) {\n return bem.is(`ripple-${props.type}`)\n }\n return true\n})\n\nconst handleClick = (e: MouseEvent) => {\n if (props.disabled || props.loading) {\n e.stopPropagation()\n return\n }\n\n !props.propagate && e.stopPropagation()\n\n emit('click', e)\n}\n\nconst buttonRef = shallowRef<HTMLButtonElement>()\n\nconst exposed: _ButtonExposed = { el: buttonRef }\n\ndefineExpose(exposed)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EAOd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,QAAQ;EAExB,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,IAAI;IACzC,IAAI,GAAG,UAAU,MAAM,MAAM;IAC7B,IAAI,GAAG,YAAY,MAAM,QAAQ;IACjC,IAAI,GAAG,WAAW,MAAM,OAAO;IAC/B,IAAI,GAAG,SAAS,MAAM,KAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,IAAI;GAC3B;EACF,CAAC;EAED,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,MAAM,SAAS,OAAO;GAC5C,KAAK,MAAM,SAAS,MAAM,SAAS,MAAM,MACvC,OAAO,IAAI,GAAG,UAAU,MAAM,MAAM;GAEtC,OAAO;EACT,CAAC;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,MAAM,YAAY,MAAM,SAAS;IACnC,EAAE,gBAAgB;IAClB;GACF;GAEA,CAAC,MAAM,aAAa,EAAE,gBAAgB;GAEtC,KAAK,SAAS,CAAC;EACjB;EAEA,MAAM,YAAY,WAA8B;EAIhD,SAAa,EAFqB,IAAI,UAEzB,CAAO;;uCAxFlB,mBAwBS,UAAA;IAvBN,OAAK,eAAE,UAAA,KAAS;IACjB,MAAK;IACL,cAAW;aACP;IAAJ,KAAI;IAEH,SAAO;;IAER,mBAAA,QAAA;IACc,QAAA,WAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;KAFe,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,GAAE,SAAA,CAAA,CAAA;KAAe,MAAM,QAAA;;4BAC1B,EAAA,UAAA,GAA/B,YAA+B,wBAAf,QAAA,WAAW,CAAA,EAAA,CAAA;;;IAG7B,mBAAA,QAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,UAAA,CAAgB,QAAA,WAAA,UAAA,GAApD,YAES,MAAA,WAAA,GAAA;;KAFqD,MAAM,QAAA;;4BAC1C,EAAA,UAAA,GAAxB,YAAwB,wBAAR,QAAA,IAAI,CAAA,EAAA,CAAA;;;IAGtB,WAAQ,KAAA,QAAA,SAAA;IAER,mBAAA,QAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,WAAA,UAAA,GAApC,YAES,MAAA,WAAA,GAAA;;KAF0C,MAAM,QAAA;;4BAC/B,EAAA,UAAA,GAAxB,YAAwB,wBAAR,QAAA,IAAI,CAAA,EAAA,CAAA;;;6BAjBZ,OAAA,KAAM,CAAA,CAAA"}
@@ -1,21 +1,19 @@
1
1
  import { ButtonProps, _ButtonExposed } from "../../types/button.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/button/button.vue.d.ts
5
3
  declare var __VLS_23: {};
6
4
  type __VLS_Slots = {} & {
7
5
  default?: (props: typeof __VLS_23) => any;
8
6
  };
9
- declare const __VLS_base: _$vue.DefineComponent<ButtonProps, _ButtonExposed, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {} & {
7
+ declare const __VLS_base: import("vue").DefineComponent<ButtonProps, _ButtonExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
8
  click: (e: MouseEvent) => any;
11
- }, string, _$vue.PublicProps, Readonly<ButtonProps> & Readonly<{
9
+ }, string, import("vue").PublicProps, Readonly<ButtonProps> & Readonly<{
12
10
  onClick?: ((e: MouseEvent) => any) | undefined;
13
11
  }>, {
14
12
  disabled: boolean;
15
- loadingIcon: _$vue.Component;
13
+ loadingIcon: import("vue").Component;
16
14
  iconPosition: "left" | "right";
17
15
  propagate: boolean;
18
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
16
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
17
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
18
  declare const _default: typeof __VLS_export;
21
19
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/calendar/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <ul :class=\"cls.e('days')\">\n <li\n :class=\"[cls.e('day'), cls.em('day', day.type)]\"\n v-for=\"day of days\"\n :key=\"day.date.timestamp\"\n >\n {{ day.date.day }}\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CalendarProps } from '../../types'\nimport { getMonthDays } from './utils'\n\ndefineOptions({ name: 'Calendar' })\n\ndefineProps<CalendarProps>()\n\nconst model = defineModel<string>()\n\nconst cls = bem('calendar')\n\nconst days = computed(() => {\n return getMonthDays(model.value ?? new Date())\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAyBA,MAAM,QAAQ,SAAmB,SAAA,aAAC;EAElC,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,OAAO,eAAe;GAC1B,OAAO,aAAa,MAAM,yBAAS,IAAI,MAAM,CAAA;IAC9C;;uBA9BC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,mBAQK,MAAA,EARA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAMK,UAAA,MAAA,WAJW,KAAA,QAAP,QAAG;wBAFZ,mBAMK,MAAA;KALF,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,EAAC,MAAA,EAAS,MAAA,IAAA,CAAI,GAAE,OAAQ,IAAI,KAAI,CAAA,CAAA;KAE5C,KAAK,IAAI,KAAK;uBAEZ,IAAI,KAAK,IAAG,EAAA,EAAA"}
1
+ {"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/calendar/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <ul :class=\"cls.e('days')\">\n <li\n :class=\"[cls.e('day'), cls.em('day', day.type)]\"\n v-for=\"day of days\"\n :key=\"day.date.timestamp\"\n >\n {{ day.date.day }}\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CalendarProps } from '../../types'\nimport { getMonthDays } from './utils'\n\ndefineOptions({ name: 'Calendar' })\n\ndefineProps<CalendarProps>()\n\nconst model = defineModel<string>()\n\nconst cls = bem('calendar')\n\nconst days = computed(() => {\n return getMonthDays(model.value ?? new Date())\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAyBA,MAAM,QAAQ,SAAmB,SAAA,YAAC;EAElC,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,OAAO,eAAe;GAC1B,OAAO,aAAa,MAAM,yBAAS,IAAI,KAAK,CAAC;EAC/C,CAAC;;uBA9BC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC,EAAA,GAAA,CAChB,mBAQK,MAAA,EARA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAMK,UAAA,MAAA,WAJW,KAAA,QAAP,QAAG;wBAFZ,mBAMK,MAAA;KALF,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,EAAC,KAAA,GAAS,MAAA,GAAA,EAAI,GAAE,OAAQ,IAAI,IAAI,CAAA,CAAA;KAE5C,KAAK,IAAI,KAAK;uBAEZ,IAAI,KAAK,GAAG,GAAA,CAAA"}
@@ -1,17 +1,15 @@
1
1
  import { CalendarProps } from "../../types/calendar.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/calendar/calendar.vue.d.ts
5
3
  type __VLS_Props = CalendarProps;
6
4
  type __VLS_ModelProps = {
7
5
  modelValue?: string;
8
6
  };
9
7
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
- declare const __VLS_export: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
9
  "update:modelValue": (value: string | undefined) => any;
12
- }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
10
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
13
11
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
14
- }>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
13
  declare const _default: typeof __VLS_export;
16
14
  //#endregion
17
15
  export { _default };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/calendar/utils.ts"],"sourcesContent":["import { type Dater, date } from '@cat-kit/core'\n\nimport type { CalendarDay, CalendarMonth, CalendarYear } from '../../types'\n\nexport const weekDays: string[] = ['日', '一', '二', '三', '四', '五', '六']\n\n/**\n * 获取一个月的天数\n * @param d 日期\n * @param disabledDate 禁用日期\n * @returns\n */\nexport function getMonthDays(\n d: Date | string | number | Dater,\n disabledDate?: (d: Dater) => boolean\n): CalendarDay[] {\n const todayStr = date().format()\n if (d instanceof Date || typeof d === 'string' || typeof d === 'number') {\n d = date(d)\n }\n\n // 本月天数\n d.setDay(1)\n const currentMonthDays: CalendarDay[] = Array.from({ length: d.getDays() }).map((_, i) => {\n const day: CalendarDay = { date: d.calc(i, 'days'), type: 'current' }\n day.isToday = day.date.format() === todayStr\n day.disabled = disabledDate?.(day.date)\n return day\n })\n\n const preMonthDays: CalendarDay[] = []\n\n const nextMonthDays: CalendarDay[] = []\n\n // 上月天数\n const firstDayWeek = d.weekDay\n\n if (firstDayWeek !== 0) {\n // 上个月最后一天\n d.setDay(0)\n let i = 0\n while (i < firstDayWeek) {\n const day: CalendarDay = { date: d.calc(-i, 'days'), type: 'pre' }\n day.disabled = disabledDate?.(day.date)\n preMonthDays.unshift(day)\n i++\n }\n }\n\n // 下个月的天数\n const nextMonthDaysAmount = 42 - currentMonthDays.length - preMonthDays.length\n\n let j = 0\n d.setMonth(d.month + 2).setDay(1)\n\n while (j < nextMonthDaysAmount) {\n const day: CalendarDay = { date: d.calc(j++, 'days'), type: 'next' }\n day.disabled = disabledDate?.(day.date)\n nextMonthDays.push(day)\n }\n\n return [...preMonthDays, ...currentMonthDays, ...nextMonthDays]\n}\n\n/**\n * 获取一年的月份\n * @param d 日期\n * @param disabledDate 禁用的日期\n * @returns\n */\nexport function getYearMonths(\n d: Date | string | number | Dater,\n disabledDate?: (d: Dater) => boolean\n): CalendarMonth[] {\n if (d instanceof Date || typeof d === 'string' || typeof d === 'number') {\n d = date(d)\n }\n\n const year = d.year\n\n return Array.from({ length: 12 }).map((_, i) => {\n const month = i + 1\n\n const ym = `${year}-${month}`\n\n const monthDate = date(ym).toEndOfMonth().setHours(23)\n\n monthDate.setMinutes(59)\n monthDate.setSeconds(59)\n\n return { key: ym, month, date: monthDate, disabled: disabledDate?.(monthDate) }\n })\n}\n\n/**\n * 获取当前年份所处的10年\n * @param d 日期\n * @param disabledDate 禁用的日期\n * @returns\n */\nexport function getTenYears(\n d: Date | string | number | Dater,\n disabledDate?: (d: Dater) => boolean\n): CalendarYear[] {\n if (d instanceof Date || typeof d === 'string' || typeof d === 'number') {\n d = date(d)\n }\n\n const startYear = d.year - (d.year % 10) + 1\n\n return Array.from({ length: 10 }).map((_, i) => {\n const year = startYear + i\n\n const yearDate = date(`${year}-12-31 23:59:59`)\n\n return { year, date: yearDate, disabled: disabledDate?.(yearDate) }\n })\n}\n"],"mappings":";;AAIA,MAAa,WAAqB;CAAC;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;CAAI;;;;;;;AAQrE,SAAgB,aACd,GACA,cACe;CACf,MAAM,WAAW,MAAM,CAAC,QAAQ;CAChC,IAAI,aAAa,QAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,UAC7D,IAAI,KAAK,EAAE;CAIb,EAAE,OAAO,EAAE;CACX,MAAM,mBAAkC,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM;EACxF,MAAM,MAAmB;GAAE,MAAM,EAAE,KAAK,GAAG,OAAO;GAAE,MAAM;GAAW;EACrE,IAAI,UAAU,IAAI,KAAK,QAAQ,KAAK;EACpC,IAAI,WAAW,eAAe,IAAI,KAAK;EACvC,OAAO;GACP;CAEF,MAAM,eAA8B,EAAE;CAEtC,MAAM,gBAA+B,EAAE;CAGvC,MAAM,eAAe,EAAE;CAEvB,IAAI,iBAAiB,GAAG;EAEtB,EAAE,OAAO,EAAE;EACX,IAAI,IAAI;EACR,OAAO,IAAI,cAAc;GACvB,MAAM,MAAmB;IAAE,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO;IAAE,MAAM;IAAO;GAClE,IAAI,WAAW,eAAe,IAAI,KAAK;GACvC,aAAa,QAAQ,IAAI;GACzB;;;CAKJ,MAAM,sBAAsB,KAAK,iBAAiB,SAAS,aAAa;CAExE,IAAI,IAAI;CACR,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE;CAEjC,OAAO,IAAI,qBAAqB;EAC9B,MAAM,MAAmB;GAAE,MAAM,EAAE,KAAK,KAAK,OAAO;GAAE,MAAM;GAAQ;EACpE,IAAI,WAAW,eAAe,IAAI,KAAK;EACvC,cAAc,KAAK,IAAI;;CAGzB,OAAO;EAAC,GAAG;EAAc,GAAG;EAAkB,GAAG;EAAc;;;;;;;;AASjE,SAAgB,cACd,GACA,cACiB;CACjB,IAAI,aAAa,QAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,UAC7D,IAAI,KAAK,EAAE;CAGb,MAAM,OAAO,EAAE;CAEf,OAAO,MAAM,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM;EAC9C,MAAM,QAAQ,IAAI;EAElB,MAAM,KAAK,GAAG,KAAK,GAAG;EAEtB,MAAM,YAAY,KAAK,GAAG,CAAC,cAAc,CAAC,SAAS,GAAG;EAEtD,UAAU,WAAW,GAAG;EACxB,UAAU,WAAW,GAAG;EAExB,OAAO;GAAE,KAAK;GAAI;GAAO,MAAM;GAAW,UAAU,eAAe,UAAU;GAAE;GAC/E;;;;;;;;AASJ,SAAgB,YACd,GACA,cACgB;CAChB,IAAI,aAAa,QAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,UAC7D,IAAI,KAAK,EAAE;CAGb,MAAM,YAAY,EAAE,OAAQ,EAAE,OAAO,KAAM;CAE3C,OAAO,MAAM,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM;EAC9C,MAAM,OAAO,YAAY;EAEzB,MAAM,WAAW,KAAK,GAAG,KAAK,iBAAiB;EAE/C,OAAO;GAAE;GAAM,MAAM;GAAU,UAAU,eAAe,SAAS;GAAE;GACnE"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/calendar/utils.ts"],"sourcesContent":["import { type Dater, date } from '@cat-kit/core'\n\nimport type { CalendarDay, CalendarMonth, CalendarYear } from '../../types'\n\nexport const weekDays: string[] = ['日', '一', '二', '三', '四', '五', '六']\n\n/**\n * 获取一个月的天数\n * @param d 日期\n * @param disabledDate 禁用日期\n * @returns\n */\nexport function getMonthDays(\n d: Date | string | number | Dater,\n disabledDate?: (d: Dater) => boolean\n): CalendarDay[] {\n const todayStr = date().format()\n if (d instanceof Date || typeof d === 'string' || typeof d === 'number') {\n d = date(d)\n }\n\n // 本月天数\n d.setDay(1)\n const currentMonthDays: CalendarDay[] = Array.from({ length: d.getDays() }).map((_, i) => {\n const day: CalendarDay = { date: d.calc(i, 'days'), type: 'current' }\n day.isToday = day.date.format() === todayStr\n day.disabled = disabledDate?.(day.date)\n return day\n })\n\n const preMonthDays: CalendarDay[] = []\n\n const nextMonthDays: CalendarDay[] = []\n\n // 上月天数\n const firstDayWeek = d.weekDay\n\n if (firstDayWeek !== 0) {\n // 上个月最后一天\n d.setDay(0)\n let i = 0\n while (i < firstDayWeek) {\n const day: CalendarDay = { date: d.calc(-i, 'days'), type: 'pre' }\n day.disabled = disabledDate?.(day.date)\n preMonthDays.unshift(day)\n i++\n }\n }\n\n // 下个月的天数\n const nextMonthDaysAmount = 42 - currentMonthDays.length - preMonthDays.length\n\n let j = 0\n d.setMonth(d.month + 2).setDay(1)\n\n while (j < nextMonthDaysAmount) {\n const day: CalendarDay = { date: d.calc(j++, 'days'), type: 'next' }\n day.disabled = disabledDate?.(day.date)\n nextMonthDays.push(day)\n }\n\n return [...preMonthDays, ...currentMonthDays, ...nextMonthDays]\n}\n\n/**\n * 获取一年的月份\n * @param d 日期\n * @param disabledDate 禁用的日期\n * @returns\n */\nexport function getYearMonths(\n d: Date | string | number | Dater,\n disabledDate?: (d: Dater) => boolean\n): CalendarMonth[] {\n if (d instanceof Date || typeof d === 'string' || typeof d === 'number') {\n d = date(d)\n }\n\n const year = d.year\n\n return Array.from({ length: 12 }).map((_, i) => {\n const month = i + 1\n\n const ym = `${year}-${month}`\n\n const monthDate = date(ym).toEndOfMonth().setHours(23)\n\n monthDate.setMinutes(59)\n monthDate.setSeconds(59)\n\n return { key: ym, month, date: monthDate, disabled: disabledDate?.(monthDate) }\n })\n}\n\n/**\n * 获取当前年份所处的10年\n * @param d 日期\n * @param disabledDate 禁用的日期\n * @returns\n */\nexport function getTenYears(\n d: Date | string | number | Dater,\n disabledDate?: (d: Dater) => boolean\n): CalendarYear[] {\n if (d instanceof Date || typeof d === 'string' || typeof d === 'number') {\n d = date(d)\n }\n\n const startYear = d.year - (d.year % 10) + 1\n\n return Array.from({ length: 10 }).map((_, i) => {\n const year = startYear + i\n\n const yearDate = date(`${year}-12-31 23:59:59`)\n\n return { year, date: yearDate, disabled: disabledDate?.(yearDate) }\n })\n}\n"],"mappings":";;AAIA,MAAa,WAAqB;CAAC;CAAK;CAAK;CAAK;CAAK;CAAK;CAAK;AAAG;;;;;;;AAQpE,SAAgB,aACd,GACA,cACe;CACf,MAAM,WAAW,KAAK,EAAE,OAAO;CAC/B,IAAI,aAAa,QAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,UAC7D,IAAI,KAAK,CAAC;CAIZ,EAAE,OAAO,CAAC;CACV,MAAM,mBAAkC,MAAM,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM;EACxF,MAAM,MAAmB;GAAE,MAAM,EAAE,KAAK,GAAG,MAAM;GAAG,MAAM;EAAU;EACpE,IAAI,UAAU,IAAI,KAAK,OAAO,MAAM;EACpC,IAAI,WAAW,eAAe,IAAI,IAAI;EACtC,OAAO;CACT,CAAC;CAED,MAAM,eAA8B,CAAC;CAErC,MAAM,gBAA+B,CAAC;CAGtC,MAAM,eAAe,EAAE;CAEvB,IAAI,iBAAiB,GAAG;EAEtB,EAAE,OAAO,CAAC;EACV,IAAI,IAAI;EACR,OAAO,IAAI,cAAc;GACvB,MAAM,MAAmB;IAAE,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;IAAG,MAAM;GAAM;GACjE,IAAI,WAAW,eAAe,IAAI,IAAI;GACtC,aAAa,QAAQ,GAAG;GACxB;EACF;CACF;CAGA,MAAM,sBAAsB,KAAK,iBAAiB,SAAS,aAAa;CAExE,IAAI,IAAI;CACR,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;CAEhC,OAAO,IAAI,qBAAqB;EAC9B,MAAM,MAAmB;GAAE,MAAM,EAAE,KAAK,KAAK,MAAM;GAAG,MAAM;EAAO;EACnE,IAAI,WAAW,eAAe,IAAI,IAAI;EACtC,cAAc,KAAK,GAAG;CACxB;CAEA,OAAO;EAAC,GAAG;EAAc,GAAG;EAAkB,GAAG;CAAa;AAChE;;;;;;;AAQA,SAAgB,cACd,GACA,cACiB;CACjB,IAAI,aAAa,QAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,UAC7D,IAAI,KAAK,CAAC;CAGZ,MAAM,OAAO,EAAE;CAEf,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM;EAC9C,MAAM,QAAQ,IAAI;EAElB,MAAM,KAAK,GAAG,KAAK,GAAG;EAEtB,MAAM,YAAY,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE;EAErD,UAAU,WAAW,EAAE;EACvB,UAAU,WAAW,EAAE;EAEvB,OAAO;GAAE,KAAK;GAAI;GAAO,MAAM;GAAW,UAAU,eAAe,SAAS;EAAE;CAChF,CAAC;AACH;;;;;;;AAQA,SAAgB,YACd,GACA,cACgB;CAChB,IAAI,aAAa,QAAQ,OAAO,MAAM,YAAY,OAAO,MAAM,UAC7D,IAAI,KAAK,CAAC;CAGZ,MAAM,YAAY,EAAE,OAAQ,EAAE,OAAO,KAAM;CAE3C,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM;EAC9C,MAAM,OAAO,YAAY;EAEzB,MAAM,WAAW,KAAK,GAAG,KAAK,gBAAgB;EAE9C,OAAO;GAAE;GAAM,MAAM;GAAU,UAAU,eAAe,QAAQ;EAAE;CACpE,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"card-action.js","names":[],"sources":["../../../src/components/card/card-action.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('action')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type CSSProperties, computed, inject } from 'vue'\n\nimport type { CardActionProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardAction' })\n\nconst props = defineProps<CardActionProps>()\n\nconst style = computed<CSSProperties>(() => {\n return { textAlign: props.alignRight ? 'right' : undefined }\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardAction组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA8B;GAC1C,OAAO,EAAE,WAAW,MAAM,aAAa,UAAU,KAAA,GAAU;IAC5D;EAED,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,2BAA0B;;uBAvBvC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,SAAA,CAAA;IAAa,OAAK,eAAE,MAAA,MAAK;OAC1C,WAAc,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"card-action.js","names":[],"sources":["../../../src/components/card/card-action.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('action')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type CSSProperties, computed, inject } from 'vue'\n\nimport type { CardActionProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardAction' })\n\nconst props = defineProps<CardActionProps>()\n\nconst style = computed<CSSProperties>(() => {\n return { textAlign: props.alignRight ? 'right' : undefined }\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardAction组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA8B;GAC1C,OAAO,EAAE,WAAW,MAAM,aAAa,UAAU,KAAA,EAAU;EAC7D,CAAC;EAED,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,0BAA0B;;uBAvBvC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,GAAA,GAAK,EAAC,QAAA,CAAA;IAAa,OAAK,eAAE,MAAA,KAAK;OAC1C,WAAc,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -1,12 +1,10 @@
1
1
  import { CardActionProps } from "../../types/card.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/card/card-action.vue.d.ts
5
3
  declare var __VLS_1: {};
6
4
  type __VLS_Slots = {} & {
7
5
  default?: (props: typeof __VLS_1) => any;
8
6
  };
9
- declare const __VLS_base: _$vue.DefineComponent<CardActionProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<CardActionProps> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
7
+ declare const __VLS_base: import("vue").DefineComponent<CardActionProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CardActionProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
8
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
9
  declare const _default: typeof __VLS_export;
12
10
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"card-content.js","names":[],"sources":["../../../src/components/card/card-content.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('content')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, type CSSProperties } from 'vue'\n\nimport type { CardContentProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardContent' })\n\nconst props = defineProps<CardContentProps>()\n\nconst style = computed<CSSProperties | undefined>(() => {\n return props.cover ? { padding: 0, fontSize: 0 } : undefined\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardContent组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA0C;GACtD,OAAO,MAAM,QAAQ;IAAE,SAAS;IAAG,UAAU;IAAE,GAAI,KAAA;IACpD;EAED,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,4BAA2B;;uBAvBxC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,UAAA,CAAA;IAAc,OAAK,eAAE,MAAA,MAAK;OAC3C,WAAc,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"card-content.js","names":[],"sources":["../../../src/components/card/card-content.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('content')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, type CSSProperties } from 'vue'\n\nimport type { CardContentProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardContent' })\n\nconst props = defineProps<CardContentProps>()\n\nconst style = computed<CSSProperties | undefined>(() => {\n return props.cover ? { padding: 0, fontSize: 0 } : undefined\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardContent组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA0C;GACtD,OAAO,MAAM,QAAQ;IAAE,SAAS;IAAG,UAAU;GAAE,IAAI,KAAA;EACrD,CAAC;EAED,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,2BAA2B;;uBAvBxC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,GAAA,GAAK,EAAC,SAAA,CAAA;IAAc,OAAK,eAAE,MAAA,KAAK;OAC3C,WAAc,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -1,12 +1,10 @@
1
1
  import { CardContentProps } from "../../types/card.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/card/card-content.vue.d.ts
5
3
  declare var __VLS_1: {};
6
4
  type __VLS_Slots = {} & {
7
5
  default?: (props: typeof __VLS_1) => any;
8
6
  };
9
- declare const __VLS_base: _$vue.DefineComponent<CardContentProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<CardContentProps> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
7
+ declare const __VLS_base: import("vue").DefineComponent<CardContentProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CardContentProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
8
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
9
  declare const _default: typeof __VLS_export;
12
10
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"card-cover.js","names":[],"sources":["../../../src/components/card/card-cover.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('cover')\" :style=\"style\">\n <img\n v-if=\"src\"\n :src=\"src\"\n draggable=\"false\"\n alt=\"封面\"\n :class=\"bem.is('height-fixed', props.height !== undefined)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { withUnit, bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { CardCoverProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardCover' })\n\nconst props = defineProps<CardCoverProps>()\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardCover组件仅能在Card组件中使用')\n}\n\nconst style = computed(() => {\n return { height: withUnit(props.height, 'px') }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAEd,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,0BAAyB;EAGxC,MAAM,QAAQ,eAAe;GAC3B,OAAO,EAAE,QAAQ,SAAS,MAAM,QAAQ,KAAI,EAAE;IAC/C;;uBA/BC,mBAQM,OAAA;IARA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,QAAA,CAAA;IAAY,OAAK,eAAE,MAAA,MAAK;OAEjC,QAAA,OAAA,WAAA,EADR,mBAME,OAAA;;IAJC,KAAK,QAAA;IACN,WAAU;IACV,KAAI;IACH,OAAK,eAAE,MAAA,IAAA,CAAI,GAAE,gBAAiB,MAAM,WAAW,KAAA,EAAS,CAAA"}
1
+ {"version":3,"file":"card-cover.js","names":[],"sources":["../../../src/components/card/card-cover.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('cover')\" :style=\"style\">\n <img\n v-if=\"src\"\n :src=\"src\"\n draggable=\"false\"\n alt=\"封面\"\n :class=\"bem.is('height-fixed', props.height !== undefined)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { withUnit, bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { CardCoverProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardCover' })\n\nconst props = defineProps<CardCoverProps>()\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardCover组件仅能在Card组件中使用')\n}\n\nconst style = computed(() => {\n return { height: withUnit(props.height, 'px') }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAEd,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,yBAAyB;EAGxC,MAAM,QAAQ,eAAe;GAC3B,OAAO,EAAE,QAAQ,SAAS,MAAM,QAAQ,IAAI,EAAE;EAChD,CAAC;;uBA/BC,mBAQM,OAAA;IARA,OAAK,eAAE,MAAA,GAAA,GAAK,EAAC,OAAA,CAAA;IAAY,OAAK,eAAE,MAAA,KAAK;OAEjC,QAAA,OAAA,UAAA,GADR,mBAME,OAAA;;IAJC,KAAK,QAAA;IACN,WAAU;IACV,KAAI;IACH,OAAK,eAAE,MAAA,GAAA,EAAI,GAAE,gBAAiB,MAAM,WAAW,KAAA,CAAS,CAAA"}
@@ -1,8 +1,6 @@
1
1
  import { CardCoverProps } from "../../types/card.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/card/card-cover.vue.d.ts
5
- declare const __VLS_export: _$vue.DefineComponent<CardCoverProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<CardCoverProps> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
3
+ declare const __VLS_export: import("vue").DefineComponent<CardCoverProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CardCoverProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
4
  declare const _default: typeof __VLS_export;
7
5
  //#endregion
8
6
  export { _default };
@@ -1 +1 @@
1
- {"version":3,"file":"card-header.js","names":[],"sources":["../../../src/components/card/card-header.vue"],"sourcesContent":["<template>\n <div :class=\"classList\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\n\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardHeader' })\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nconst classList = computed(() => {\n const ret: string[] = []\n if (cls) {\n ret.push(cls.e('header'))\n }\n\n return ret\n})\n\nif (!injected) {\n console.warn('CardHeader组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;EAaA,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,MAAM,YAAY,eAAe;GAC/B,MAAM,MAAgB,EAAC;GACvB,IAAI,KACF,IAAI,KAAK,IAAI,EAAE,SAAS,CAAA;GAG1B,OAAO;IACR;EAED,IAAI,CAAC,UACH,QAAQ,KAAK,2BAA0B;;uBAzBvC,mBAEM,OAAA,EAFA,OAAK,eAAE,UAAA,MAAS,EAAA,EAAA,CACpB,WAAc,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"card-header.js","names":[],"sources":["../../../src/components/card/card-header.vue"],"sourcesContent":["<template>\n <div :class=\"classList\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\n\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardHeader' })\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nconst classList = computed(() => {\n const ret: string[] = []\n if (cls) {\n ret.push(cls.e('header'))\n }\n\n return ret\n})\n\nif (!injected) {\n console.warn('CardHeader组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;EAaA,MAAM,WAAW,OAAO,SAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,CAAC;EAE7B,MAAM,YAAY,eAAe;GAC/B,MAAM,MAAgB,CAAC;GACvB,IAAI,KACF,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC;GAG1B,OAAO;EACT,CAAC;EAED,IAAI,CAAC,UACH,QAAQ,KAAK,0BAA0B;;uBAzBvC,mBAEM,OAAA,EAFA,OAAK,eAAE,UAAA,KAAS,EAAA,GAAA,CACpB,WAAc,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -1,11 +1,9 @@
1
- import * as _$vue from "vue";
2
-
3
1
  //#region src/components/card/card-header.vue.d.ts
4
2
  declare var __VLS_1: {};
5
3
  type __VLS_Slots = {} & {
6
4
  default?: (props: typeof __VLS_1) => any;
7
5
  };
8
- declare const __VLS_base: _$vue.DefineComponent<{}, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
6
+ declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
9
7
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
10
8
  declare const _default: typeof __VLS_export;
11
9
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","names":[],"sources":["../../../src/components/card/card.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" :style=\"styles\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport { computed, provide } from 'vue'\n\nimport type { CardProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'Card' })\n\nconst props = defineProps<CardProps>()\n\nconst cls = bem('card')\n\nconst { size } = useFormFallbackProps([props], { size: 'default' })\n\nconst classList = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('integrate', props.integrate)]\n})\n\nconst styles = computed(() => {\n return { width: withUnit(props.width, 'px') }\n})\n\nprovide(CardDIKey, { cls, cardProps: props })\n</script>\n"],"mappings":";;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,OAAM;EAEtB,MAAM,EAAE,SAAS,qBAAqB,CAAC,MAAK,EAAG,EAAE,MAAM,WAAW,CAAA;EAElE,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,EAAE,KAAK,MAAK;IAAG,IAAI,GAAG,aAAa,MAAM,UAAS;IAAC;IACvE;EAED,MAAM,SAAS,eAAe;GAC5B,OAAO,EAAE,OAAO,SAAS,MAAM,OAAO,KAAI,EAAE;IAC7C;EAED,QAAQ,WAAW;GAAE;GAAK,WAAW;GAAO,CAAA;;uBA7B1C,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAG,OAAK,eAAE,OAAA,MAAM;OACpC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"card.js","names":[],"sources":["../../../src/components/card/card.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" :style=\"styles\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport { computed, provide } from 'vue'\n\nimport type { CardProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'Card' })\n\nconst props = defineProps<CardProps>()\n\nconst cls = bem('card')\n\nconst { size } = useFormFallbackProps([props], { size: 'default' })\n\nconst classList = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('integrate', props.integrate)]\n})\n\nconst styles = computed(() => {\n return { width: withUnit(props.width, 'px') }\n})\n\nprovide(CardDIKey, { cls, cardProps: props })\n</script>\n"],"mappings":";;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,MAAM;EAEtB,MAAM,EAAE,SAAS,qBAAqB,CAAC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;EAElE,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,EAAE,KAAK,KAAK;IAAG,IAAI,GAAG,aAAa,MAAM,SAAS;GAAC;EACxE,CAAC;EAED,MAAM,SAAS,eAAe;GAC5B,OAAO,EAAE,OAAO,SAAS,MAAM,OAAO,IAAI,EAAE;EAC9C,CAAC;EAED,QAAQ,WAAW;GAAE;GAAK,WAAW;EAAM,CAAC;;uBA7B1C,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,KAAS;IAAG,OAAK,eAAE,OAAA,KAAM;OACpC,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -1,12 +1,10 @@
1
1
  import { CardProps } from "../../types/card.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/card/card.vue.d.ts
5
3
  declare var __VLS_1: {};
6
4
  type __VLS_Slots = {} & {
7
5
  default?: (props: typeof __VLS_1) => any;
8
6
  };
9
- declare const __VLS_base: _$vue.DefineComponent<CardProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<CardProps> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
7
+ declare const __VLS_base: import("vue").DefineComponent<CardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CardProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
8
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
9
  declare const _default: typeof __VLS_export;
12
10
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"di.js","names":[],"sources":["../../../src/components/card/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { InjectionKey } from 'vue'\n\nimport type { CardProps } from '../../types'\n\nexport interface CardContext {\n cls: BEM<'card'>\n cardProps: CardProps\n}\n\nexport const CardDIKey: InjectionKey<CardContext> = Symbol('CardDIKey')\n"],"mappings":";AAUA,MAAa,YAAuC,OAAO,YAAY"}
1
+ {"version":3,"file":"di.js","names":[],"sources":["../../../src/components/card/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { InjectionKey } from 'vue'\n\nimport type { CardProps } from '../../types'\n\nexport interface CardContext {\n cls: BEM<'card'>\n cardProps: CardProps\n}\n\nexport const CardDIKey: InjectionKey<CardContext> = Symbol('CardDIKey')\n"],"mappings":";AAUA,MAAa,YAAuC,OAAO,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-panel-item.js","names":[],"sources":["../../../src/components/cascade/cascade-panel-item.vue"],"sourcesContent":["<template>\n <u-scroll\n tag=\"ul\"\n :class=\"panelCls.b\"\n ref=\"scroll-container\"\n :content-class=\"panelCls.e('content')\"\n >\n <li\n v-for=\"(node, index) of data\"\n :key=\"node.value ?? index\"\n ref=\"itemRefs\"\n :class=\"getItemCls(node)\"\n @click=\"emit('click', panelIndex, node)\"\n >\n <u-checkbox\n v-if=\"cascadeProps.multiple\"\n :class=\"panelCls.e('option-checkbox')\"\n :model-value=\"checkedSet.has(node)\"\n @update:model-value=\"emit('check', node, $event)\"\n />\n\n <span :class=\"panelCls.e('option-label')\">\n {{ node.label }}\n </span>\n\n <u-icon :class=\"panelCls.e('option-expand')\" v-if=\"node.children?.length\">\n <ArrowRight />\n </u-icon>\n </li>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem, scrollIntoContainerView } from '@veltra/utils'\nimport { inject, onMounted, shallowRef, useTemplateRef } from 'vue'\n\nimport type { CascadeNode } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { CascadeDIKey } from './di'\n\ndefineOptions({ name: 'UCascadePanelItem' })\n\nconst props = defineProps<{ data: CascadeNode[]; value?: string; panelIndex: number }>()\n\nconst emit = defineEmits<{\n (e: 'click', panelIndex: number, item: CascadeNode): void\n (e: 'check', item: CascadeNode, checked: boolean): void\n}>()\n\nconst { cls, cascadeProps, checkedSet } = inject(CascadeDIKey)!\n\nconst panelCls = cls.create('panel-item')\n\nconst optionCls = panelCls.e('option')\n\nfunction getItemCls(item: CascadeNode) {\n const selected = props.value === item.value\n return [\n optionCls,\n bem.is('active', selected),\n bem.is('selected', selected && !cascadeProps.multiple)\n ]\n}\n\nconst itemRefs = shallowRef<HTMLElement[]>([])\nconst scrollContainerRef = useTemplateRef('scroll-container')\n\nonMounted(() => {\n const activeItem = itemRefs.value.find((el) => el.classList.contains(bem.is('active')))\n if (activeItem) {\n setTimeout(() => {\n scrollIntoContainerView(activeItem, scrollContainerRef.value?.containerRef ?? null)\n })\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAKb,MAAM,EAAE,KAAK,cAAc,eAAe,OAAO,aAAY;EAE7D,MAAM,WAAW,IAAI,OAAO,aAAY;EAExC,MAAM,YAAY,SAAS,EAAE,SAAQ;EAErC,SAAS,WAAW,MAAmB;GACrC,MAAM,WAAW,MAAM,UAAU,KAAK;GACtC,OAAO;IACL;IACA,IAAI,GAAG,UAAU,SAAQ;IACzB,IAAI,GAAG,YAAY,YAAY,CAAC,aAAa,SAAQ;IACvD;;EAGF,MAAM,WAAW,WAA0B,EAAE,CAAA;EAC7C,MAAM,qBAAqB,eAAe,mBAAkB;EAE5D,gBAAgB;GACd,MAAM,aAAa,SAAS,MAAM,MAAM,OAAO,GAAG,UAAU,SAAS,IAAI,GAAG,SAAS,CAAC,CAAA;GACtF,IAAI,YACF,iBAAiB;IACf,wBAAwB,YAAY,mBAAmB,OAAO,gBAAgB,KAAI;KACnF;IAEJ;;uBA5EC,YA4BW,MAAA,YAAA,EAAA;IA3BT,KAAI;IACH,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC;IAClB,KAAI;IACH,iBAAe,MAAA,SAAA,CAAS,EAAC,UAAA;;2BAGK,EAAA,UAAA,KAAA,EAD/B,mBAqBK,UAAA,MAAA,WApBqB,QAAA,OAAhB,MAAM,UAAK;yBADrB,mBAqBK,MAAA;MAnBF,KAAK,KAAK,SAAS;;eAChB;MAAJ,KAAI;MACH,OAAK,eAAE,WAAW,KAAI,CAAA;MACtB,UAAK,WAAE,KAAI,SAAU,QAAA,YAAY,KAAI;;MAG9B,MAAA,aAAA,CAAa,YAAA,WAAA,EADrB,YAKE,MAAA,YAAA,EAAA;;OAHC,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,kBAAA,CAAA;OACjB,eAAa,MAAA,WAAA,CAAW,IAAI,KAAI;OAChC,wBAAkB,WAAE,KAAI,SAAU,MAAM,OAAM;;;;;;MAGjD,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,eAAA,CAAA,EAAA,EAAA,gBACnB,KAAK,MAAK,EAAA,EAAA;MAGoC,KAAK,UAAU,UAAA,WAAA,EAAlE,YAES,MAAA,YAAA,EAAA;;OAFA,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,gBAAA,CAAA;;8BACV,CAAd,YAAc,MAAA,WAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"cascade-panel-item.js","names":[],"sources":["../../../src/components/cascade/cascade-panel-item.vue"],"sourcesContent":["<template>\n <u-scroll\n tag=\"ul\"\n :class=\"panelCls.b\"\n ref=\"scroll-container\"\n :content-class=\"panelCls.e('content')\"\n >\n <li\n v-for=\"(node, index) of data\"\n :key=\"node.value ?? index\"\n ref=\"itemRefs\"\n :class=\"getItemCls(node)\"\n @click=\"emit('click', panelIndex, node)\"\n >\n <u-checkbox\n v-if=\"cascadeProps.multiple\"\n :class=\"panelCls.e('option-checkbox')\"\n :model-value=\"checkedSet.has(node)\"\n @update:model-value=\"emit('check', node, $event)\"\n />\n\n <span :class=\"panelCls.e('option-label')\">\n {{ node.label }}\n </span>\n\n <u-icon :class=\"panelCls.e('option-expand')\" v-if=\"node.children?.length\">\n <ArrowRight />\n </u-icon>\n </li>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem, scrollIntoContainerView } from '@veltra/utils'\nimport { inject, onMounted, shallowRef, useTemplateRef } from 'vue'\n\nimport type { CascadeNode } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { CascadeDIKey } from './di'\n\ndefineOptions({ name: 'UCascadePanelItem' })\n\nconst props = defineProps<{ data: CascadeNode[]; value?: string; panelIndex: number }>()\n\nconst emit = defineEmits<{\n (e: 'click', panelIndex: number, item: CascadeNode): void\n (e: 'check', item: CascadeNode, checked: boolean): void\n}>()\n\nconst { cls, cascadeProps, checkedSet } = inject(CascadeDIKey)!\n\nconst panelCls = cls.create('panel-item')\n\nconst optionCls = panelCls.e('option')\n\nfunction getItemCls(item: CascadeNode) {\n const selected = props.value === item.value\n return [\n optionCls,\n bem.is('active', selected),\n bem.is('selected', selected && !cascadeProps.multiple)\n ]\n}\n\nconst itemRefs = shallowRef<HTMLElement[]>([])\nconst scrollContainerRef = useTemplateRef('scroll-container')\n\nonMounted(() => {\n const activeItem = itemRefs.value.find((el) => el.classList.contains(bem.is('active')))\n if (activeItem) {\n setTimeout(() => {\n scrollIntoContainerView(activeItem, scrollContainerRef.value?.containerRef ?? null)\n })\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAKb,MAAM,EAAE,KAAK,cAAc,eAAe,OAAO,YAAY;EAE7D,MAAM,WAAW,IAAI,OAAO,YAAY;EAExC,MAAM,YAAY,SAAS,EAAE,QAAQ;EAErC,SAAS,WAAW,MAAmB;GACrC,MAAM,WAAW,MAAM,UAAU,KAAK;GACtC,OAAO;IACL;IACA,IAAI,GAAG,UAAU,QAAQ;IACzB,IAAI,GAAG,YAAY,YAAY,CAAC,aAAa,QAAQ;GACvD;EACF;EAEA,MAAM,WAAW,WAA0B,CAAC,CAAC;EAC7C,MAAM,qBAAqB,eAAe,kBAAkB;EAE5D,gBAAgB;GACd,MAAM,aAAa,SAAS,MAAM,MAAM,OAAO,GAAG,UAAU,SAAS,IAAI,GAAG,QAAQ,CAAC,CAAC;GACtF,IAAI,YACF,iBAAiB;IACf,wBAAwB,YAAY,mBAAmB,OAAO,gBAAgB,IAAI;GACpF,CAAC;EAEL,CAAC;;uBA5EC,YA4BW,MAAA,WAAA,GAAA;IA3BT,KAAI;IACH,OAAK,eAAE,MAAA,QAAA,EAAS,CAAC;IAClB,KAAI;IACH,iBAAe,MAAA,QAAA,EAAS,EAAC,SAAA;;2BAGK,EAAA,UAAA,IAAA,GAD/B,mBAqBK,UAAA,MAAA,WApBqB,QAAA,OAAhB,MAAM,UAAK;yBADrB,mBAqBK,MAAA;MAnBF,KAAK,KAAK,SAAS;;eAChB;MAAJ,KAAI;MACH,OAAK,eAAE,WAAW,IAAI,CAAA;MACtB,UAAK,WAAE,KAAI,SAAU,QAAA,YAAY,IAAI;;MAG9B,MAAA,YAAA,EAAa,YAAA,UAAA,GADrB,YAKE,MAAA,WAAA,GAAA;;OAHC,OAAK,eAAE,MAAA,QAAA,EAAS,EAAC,iBAAA,CAAA;OACjB,eAAa,MAAA,UAAA,EAAW,IAAI,IAAI;OAChC,wBAAkB,WAAE,KAAI,SAAU,MAAM,MAAM;;;;;;MAGjD,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,QAAA,EAAS,EAAC,cAAA,CAAA,EAAA,GAAA,gBACnB,KAAK,KAAK,GAAA,CAAA;MAGoC,KAAK,UAAU,UAAA,UAAA,GAAlE,YAES,MAAA,WAAA,GAAA;;OAFA,OAAK,eAAE,MAAA,QAAA,EAAS,EAAC,eAAA,CAAA;;8BACV,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.js","names":[],"sources":["../../../src/components/cascade/cascade.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n :class=\"[cls.b, bem.is('disabled', disabled), bem.is('multiple', multiple), cls.m(size)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n width=\"auto\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n @update:visible=\"!$event && (qs = '')\"\n >\n <template #trigger>\n <!-- 单选展示 -->\n <u-input\n v-if=\"!multiple\"\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n native-readonly\n :model-value=\"displayedValue\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\"><ArrowDown /></u-icon>\n </template>\n </u-input>\n\n <!-- 多选展示 -->\n <template v-if=\"multiple\">\n <span :class=\"cls.e('placeholder')\" v-show=\"!modelValue?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"modelValue?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"tag of tags\"\n :key=\"tag.value\"\n :closable=\"!disabled\"\n @close=\"handleCloseTag(tag)\"\n >\n {{ tag.label }}\n </u-tag>\n <u-tag v-if=\"restTag\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && modelValue?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n </template>\n\n <template #content>\n <!-- 过滤 -->\n <div v-if=\"filterable\" :class=\"cls.e('panel-filter')\">\n <u-input placeholder=\"输入关键字进行过滤\" v-model=\"qs\" :size=\"size\" clearable>\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <div :class=\"cls.e('content')\" v-if=\"panelItemList.length\">\n <UCascadePanelItem\n v-for=\"({ nodes, key }, index) of panelItemList\"\n :data=\"nodes\"\n :key=\"key\"\n :panel-index=\"index\"\n :value=\"selectedNodeKeys[index]\"\n @click=\"handleClick\"\n @check=\"handleCheck\"\n />\n </div>\n\n <div :class=\"cls.e('empty')\" v-else>\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <!-- 只读 -->\n <template v-else>\n <div :class=\"[cls.m(size)]\" v-if=\"multiple\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of tags\" :key=\"tag.value\">\n {{ tag.label }}\n </u-tag>\n </div>\n </div>\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Forest, o } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, provide, shallowRef, triggerRef, watch } from 'vue'\n\nimport type { CascadeProps, CascadeEmits, DropdownExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UTag } from '../tag'\nimport UCascadePanelItem from './cascade-panel-item.vue'\nimport { CascadeDIKey } from './di'\nimport { CascadeNode } from './node'\nimport { useCheck } from './use-check'\nimport { useDataMap } from './use-data-map'\nimport { useSelect } from './use-select'\n\ndefineOptions({ name: 'Cascade' })\n\nconst props = withDefaults(defineProps<CascadeProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n separator: '/',\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n childrenKey: 'children',\n filterable: false,\n data: () => [],\n visibilityLimit: 3\n})\n\nconst emit = defineEmits<CascadeEmits>()\n\nconst cls = bem('cascade')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst forest = computed(() => {\n return new Forest<Record<string, unknown>, any>({\n data: (props.data ?? []) as Record<string, unknown>[],\n childrenKey: props.childrenKey,\n createNode: (data, index, depth, _forest, parent) => {\n if (!data) {\n return new CascadeNode({ data, index, depth, value: '', label: '', parent })\n }\n\n return new CascadeNode({\n data,\n index,\n depth,\n value: o(data).get(props.valueKey) ?? '',\n label: o(data).get(props.labelKey) ?? '',\n parent\n })\n }\n })\n})\n\nconst { dataMap } = useDataMap({ props, forest })\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst {\n displayedValue,\n selectItem,\n updateSingleValue,\n panelItemList,\n getPanelItemList,\n createPanelItem,\n selectedNodeKeys\n} = useSelect({ props, emit, dataMap, forest, isUserActive, dropdownRef })\n\nconst { hovered, tags, restTag, updateMultipleValue, handleCloseTag, checkItem, checkedSet } =\n useCheck({ props, forest, getPanelItemList, emit, dataMap, isUserActive, disabled, readonly })\n\nconst commitSingleSelect = userAction((item: CascadeNode) => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n})\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n selectItem(panelIndex, item)\n\n if (!props.multiple) {\n commitSingleSelect(item)\n }\n}\n\nconst handleCheck = userAction((item: CascadeNode, checked: boolean) => {\n checkItem(item, checked)\n})\n\nfunction handleClear() {\n if (props.multiple) {\n checkedSet.value.clear()\n triggerRef(checkedSet)\n updateMultipleValue()\n } else {\n selectedNodeKeys.value = []\n updateSingleValue()\n }\n\n emit('clear')\n}\n\n// 过滤\nconst qs = shallowRef<string>('')\n\nwatch([qs, forest], ([qs, forest]) => {\n const { filterable } = props\n if (!filterable || !qs) {\n forest.dfs((node) => {\n node.visible = true\n })\n getPanelItemList(forest.roots)\n return\n }\n\n const cache = new Set<CascadeNode>()\n\n forest.dfs((node) => {\n if (node.label?.toLowerCase().includes(qs.toLowerCase())) {\n node.visible = true\n let parent = node.parent\n while (parent && !cache.has(parent)) {\n parent.visible = true\n cache.add(parent)\n parent = parent.parent\n }\n } else {\n node.visible = false\n }\n })\n\n panelItemList.value = [createPanelItem(forest.roots)]\n})\n\nprovide(CascadeDIKey, { cls, size, disabled, readonly, cascadeProps: props, checkedSet })\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"cascade.js","names":[],"sources":["../../../src/components/cascade/cascade.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n :class=\"[cls.b, bem.is('disabled', disabled), bem.is('multiple', multiple), cls.m(size)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n width=\"auto\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n @update:visible=\"!$event && (qs = '')\"\n >\n <template #trigger>\n <!-- 单选展示 -->\n <u-input\n v-if=\"!multiple\"\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n native-readonly\n :model-value=\"displayedValue\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\"><ArrowDown /></u-icon>\n </template>\n </u-input>\n\n <!-- 多选展示 -->\n <template v-if=\"multiple\">\n <span :class=\"cls.e('placeholder')\" v-show=\"!modelValue?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"modelValue?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"tag of tags\"\n :key=\"tag.value\"\n :closable=\"!disabled\"\n @close=\"handleCloseTag(tag)\"\n >\n {{ tag.label }}\n </u-tag>\n <u-tag v-if=\"restTag\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && modelValue?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n </template>\n\n <template #content>\n <!-- 过滤 -->\n <div v-if=\"filterable\" :class=\"cls.e('panel-filter')\">\n <u-input placeholder=\"输入关键字进行过滤\" v-model=\"qs\" :size=\"size\" clearable>\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <div :class=\"cls.e('content')\" v-if=\"panelItemList.length\">\n <UCascadePanelItem\n v-for=\"({ nodes, key }, index) of panelItemList\"\n :data=\"nodes\"\n :key=\"key\"\n :panel-index=\"index\"\n :value=\"selectedNodeKeys[index]\"\n @click=\"handleClick\"\n @check=\"handleCheck\"\n />\n </div>\n\n <div :class=\"cls.e('empty')\" v-else>\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <!-- 只读 -->\n <template v-else>\n <div :class=\"[cls.m(size)]\" v-if=\"multiple\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of tags\" :key=\"tag.value\">\n {{ tag.label }}\n </u-tag>\n </div>\n </div>\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Forest, o } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, provide, shallowRef, triggerRef, watch } from 'vue'\n\nimport type { CascadeProps, CascadeEmits, DropdownExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UTag } from '../tag'\nimport UCascadePanelItem from './cascade-panel-item.vue'\nimport { CascadeDIKey } from './di'\nimport { CascadeNode } from './node'\nimport { useCheck } from './use-check'\nimport { useDataMap } from './use-data-map'\nimport { useSelect } from './use-select'\n\ndefineOptions({ name: 'Cascade' })\n\nconst props = withDefaults(defineProps<CascadeProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n separator: '/',\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n childrenKey: 'children',\n filterable: false,\n data: () => [],\n visibilityLimit: 3\n})\n\nconst emit = defineEmits<CascadeEmits>()\n\nconst cls = bem('cascade')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst forest = computed(() => {\n return new Forest<Record<string, unknown>, any>({\n data: (props.data ?? []) as Record<string, unknown>[],\n childrenKey: props.childrenKey,\n createNode: (data, index, depth, _forest, parent) => {\n if (!data) {\n return new CascadeNode({ data, index, depth, value: '', label: '', parent })\n }\n\n return new CascadeNode({\n data,\n index,\n depth,\n value: o(data).get(props.valueKey) ?? '',\n label: o(data).get(props.labelKey) ?? '',\n parent\n })\n }\n })\n})\n\nconst { dataMap } = useDataMap({ props, forest })\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst {\n displayedValue,\n selectItem,\n updateSingleValue,\n panelItemList,\n getPanelItemList,\n createPanelItem,\n selectedNodeKeys\n} = useSelect({ props, emit, dataMap, forest, isUserActive, dropdownRef })\n\nconst { hovered, tags, restTag, updateMultipleValue, handleCloseTag, checkItem, checkedSet } =\n useCheck({ props, forest, getPanelItemList, emit, dataMap, isUserActive, disabled, readonly })\n\nconst commitSingleSelect = userAction((item: CascadeNode) => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n})\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n selectItem(panelIndex, item)\n\n if (!props.multiple) {\n commitSingleSelect(item)\n }\n}\n\nconst handleCheck = userAction((item: CascadeNode, checked: boolean) => {\n checkItem(item, checked)\n})\n\nfunction handleClear() {\n if (props.multiple) {\n checkedSet.value.clear()\n triggerRef(checkedSet)\n updateMultipleValue()\n } else {\n selectedNodeKeys.value = []\n updateSingleValue()\n }\n\n emit('clear')\n}\n\n// 过滤\nconst qs = shallowRef<string>('')\n\nwatch([qs, forest], ([qs, forest]) => {\n const { filterable } = props\n if (!filterable || !qs) {\n forest.dfs((node) => {\n node.visible = true\n })\n getPanelItemList(forest.roots)\n return\n }\n\n const cache = new Set<CascadeNode>()\n\n forest.dfs((node) => {\n if (node.label?.toLowerCase().includes(qs.toLowerCase())) {\n node.visible = true\n let parent = node.parent\n while (parent && !cache.has(parent)) {\n parent.visible = true\n cache.add(parent)\n parent = parent.parent\n }\n } else {\n node.visible = false\n }\n })\n\n panelItemList.value = [createPanelItem(forest.roots)]\n})\n\nprovide(CascadeDIKey, { cls, size, disabled, readonly, cascadeProps: props, checkedSet })\n</script>\n"],"mappings":"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"}
@@ -1,28 +1,26 @@
1
1
  import { CascadeProps } from "../../types/cascade.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/cascade/cascade.vue.d.ts
5
- declare const __VLS_export: _$vue.DefineComponent<CascadeProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {} & {
3
+ declare const __VLS_export: import("vue").DefineComponent<CascadeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
6
4
  "update:modelValue": (value?: string | string[] | undefined) => any;
7
5
  clear: () => any;
8
6
  change: (...args: [value?: string | undefined, label?: string | undefined, item?: Record<string, any> | undefined] | [value: string[], label: string[], data: Record<string, any>[]]) => any;
9
- }, string, _$vue.PublicProps, Readonly<CascadeProps> & Readonly<{
7
+ }, string, import("vue").PublicProps, Readonly<CascadeProps> & Readonly<{
10
8
  "onUpdate:modelValue"?: ((value?: string | string[] | undefined) => any) | undefined;
11
9
  onClear?: (() => any) | undefined;
12
10
  onChange?: ((...args: [value?: string | undefined, label?: string | undefined, item?: Record<string, any> | undefined] | [value: string[], label: string[], data: Record<string, any>[]]) => any) | undefined;
13
11
  }>, {
14
12
  disabled: boolean;
15
13
  readonly: boolean;
16
- placeholder: string;
17
- clearable: boolean;
18
14
  labelKey: string;
19
15
  valueKey: string;
20
16
  childrenKey: string;
21
17
  data: Record<string, any>[];
18
+ placeholder: string;
19
+ clearable: boolean;
22
20
  filterable: boolean;
23
- visibilityLimit: number;
24
21
  separator: string;
25
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
22
+ visibilityLimit: number;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
24
  declare const _default: typeof __VLS_export;
27
25
  //#endregion
28
26
  export { _default };
@@ -1 +1 @@
1
- {"version":3,"file":"di.js","names":[],"sources":["../../../src/components/cascade/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey, ShallowRef } from 'vue'\n\nimport type { CascadeProps, ComponentSize } from '../../types'\n\nexport const CascadeDIKey: InjectionKey<{\n /** 样式*/\n cls: BEM<'cascade'>\n size: ComputedRef<ComponentSize>\n disabled: ComputedRef<boolean>\n readonly: ComputedRef<boolean>\n cascadeProps: CascadeProps\n checkedSet: ShallowRef<Set<Record<string, any>>>\n}> = Symbol('CascadeDIKey')\n"],"mappings":";AAKA,MAAa,eAQR,OAAO,eAAe"}
1
+ {"version":3,"file":"di.js","names":[],"sources":["../../../src/components/cascade/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey, ShallowRef } from 'vue'\n\nimport type { CascadeProps, ComponentSize } from '../../types'\n\nexport const CascadeDIKey: InjectionKey<{\n /** 样式*/\n cls: BEM<'cascade'>\n size: ComputedRef<ComponentSize>\n disabled: ComputedRef<boolean>\n readonly: ComputedRef<boolean>\n cascadeProps: CascadeProps\n checkedSet: ShallowRef<Set<Record<string, any>>>\n}> = Symbol('CascadeDIKey')\n"],"mappings":";AAKA,MAAa,eAQR,OAAO,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","names":[],"sources":["../../../src/components/cascade/node.ts"],"sourcesContent":["import { TreeNode } from '@cat-kit/core'\nimport { shallowReactive } from 'vue'\n\nexport class CascadeNode<T extends Record<string, any> = Record<string, any>> extends TreeNode<\n T,\n CascadeNode<T>\n> {\n visible = true\n\n value: string\n label: string\n\n constructor(options: {\n data: Record<string, any>\n index: number\n depth: number\n value: string\n label: string\n parent?: CascadeNode<T>\n }) {\n const { data, index, depth, parent, value, label } = options\n super(data as T, index, depth, parent)\n this.value = value\n this.label = label\n\n return shallowReactive(this)\n }\n}\n"],"mappings":";;;AAGA,IAAa,cAAb,cAAsF,SAGpF;CACA,UAAU;CAEV;CACA;CAEA,YAAY,SAOT;EACD,MAAM,EAAE,MAAM,OAAO,OAAO,QAAQ,OAAO,UAAU;EACrD,MAAM,MAAW,OAAO,OAAO,OAAO;EACtC,KAAK,QAAQ;EACb,KAAK,QAAQ;EAEb,OAAO,gBAAgB,KAAK"}
1
+ {"version":3,"file":"node.js","names":[],"sources":["../../../src/components/cascade/node.ts"],"sourcesContent":["import { TreeNode } from '@cat-kit/core'\nimport { shallowReactive } from 'vue'\n\nexport class CascadeNode<T extends Record<string, any> = Record<string, any>> extends TreeNode<\n T,\n CascadeNode<T>\n> {\n visible = true\n\n value: string\n label: string\n\n constructor(options: {\n data: Record<string, any>\n index: number\n depth: number\n value: string\n label: string\n parent?: CascadeNode<T>\n }) {\n const { data, index, depth, parent, value, label } = options\n super(data as T, index, depth, parent)\n this.value = value\n this.label = label\n\n return shallowReactive(this)\n }\n}\n"],"mappings":";;;AAGA,IAAa,cAAb,cAAsF,SAGpF;CACA,UAAU;CAEV;CACA;CAEA,YAAY,SAOT;EACD,MAAM,EAAE,MAAM,OAAO,OAAO,QAAQ,OAAO,UAAU;EACrD,MAAM,MAAW,OAAO,OAAO,MAAM;EACrC,KAAK,QAAQ;EACb,KAAK,QAAQ;EAEb,OAAO,gBAAgB,IAAI;CAC7B;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-check.js","names":[],"sources":["../../../src/components/cascade/use-check.ts"],"sourcesContent":["import { dfs, type Forest } from '@cat-kit/core'\nimport {\n computed,\n shallowRef,\n triggerRef,\n watch,\n type ComputedRef,\n type Ref,\n type ShallowRef\n} from 'vue'\n\nimport type { CascadeProps, CascadeEmits, CascadeNode } from '../../types'\n\ninterface CheckOptions {\n props: CascadeProps\n emit: CascadeEmits\n dataMap: ShallowRef<Map<string, CascadeNode>>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n forest: Ref<Forest<Record<string, unknown>, any>>\n isUserActive: () => boolean\n getPanelItemList: (data?: CascadeNode[]) => void\n}\n\ninterface UseCheckReturned {\n hovered: ShallowRef<boolean>\n tags: ComputedRef<CascadeNode[]>\n checkedSet: ShallowRef<Set<CascadeNode>>\n restTag: ComputedRef<number>\n handleCloseTag: (tag: CascadeNode) => void\n updateMultipleValue: () => void\n checkItem: (item: CascadeNode, checked: boolean) => void\n}\n\nexport function useCheck(options: CheckOptions): UseCheckReturned {\n const { props, emit, dataMap, disabled, readonly, forest, isUserActive, getPanelItemList } =\n options\n\n const hovered = shallowRef(false)\n\n const checkedSet = shallowRef(new Set<CascadeNode>())\n\n const tags = computed(() => {\n const { modelValue, multiple } = props\n let tags: CascadeNode[] = []\n\n if (!multiple || !Array.isArray(modelValue)) return tags\n\n let { visibilityLimit } = props\n if (visibilityLimit! < 0) {\n visibilityLimit = 0\n }\n\n // 禁用时,显示全部\n if (disabled.value || readonly.value) {\n visibilityLimit = props.modelValue?.length ?? 0\n }\n\n modelValue.slice(0, visibilityLimit).forEach((k) => {\n const option = dataMap.value.get(k)\n option && tags.push(option)\n })\n\n return tags\n })\n\n function updateMultipleValue() {\n const checkedArr = Array.from(checkedSet.value)\n const targetValues = checkedArr.map((item) => item.value)\n const targetLabels = checkedArr.map((item) => item.label)\n emit('update:modelValue', targetValues)\n emit('change', targetValues, targetLabels, checkedArr)\n }\n\n const restTag = computed(() => {\n const { visibilityLimit, modelValue } = props\n\n return Math.max((modelValue?.length ?? 0) - visibilityLimit!, 0)\n })\n\n function handleCloseTag(tag: CascadeNode) {\n checkedSet.value.delete(tag)\n updateMultipleValue()\n }\n\n function checkItem(item: CascadeNode, checked: boolean) {\n const childrenKey = props.childrenKey ?? 'children'\n if (checked) {\n dfs(\n item as unknown as Record<string, unknown>,\n (node) => {\n checkedSet.value.add(node as unknown as CascadeNode)\n },\n childrenKey\n )\n } else {\n dfs(\n item as unknown as Record<string, unknown>,\n (node) => {\n checkedSet.value.delete(node as unknown as CascadeNode)\n },\n childrenKey\n )\n }\n\n triggerRef(checkedSet)\n\n updateMultipleValue()\n }\n\n function initMultipleCheck() {\n const { modelValue } = props\n getPanelItemList()\n if (Array.isArray(modelValue)) {\n checkedSet.value = new Set(modelValue.map((v) => dataMap.value.get(v)!))\n }\n }\n\n watch(\n [() => props.multiple, () => props.modelValue, forest],\n ([multiple]) => {\n if (!multiple || isUserActive()) return\n initMultipleCheck()\n },\n { immediate: false }\n )\n\n return { hovered, tags, checkedSet, restTag, handleCloseTag, updateMultipleValue, checkItem }\n}\n"],"mappings":";;;AAkCA,SAAgB,SAAS,SAAyC;CAChE,MAAM,EAAE,OAAO,MAAM,SAAS,UAAU,UAAU,QAAQ,cAAc,qBACtE;CAEF,MAAM,UAAU,WAAW,MAAM;CAEjC,MAAM,aAAa,2BAAW,IAAI,KAAkB,CAAC;CAErD,MAAM,OAAO,eAAe;EAC1B,MAAM,EAAE,YAAY,aAAa;EACjC,IAAI,OAAsB,EAAE;EAE5B,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,WAAW,EAAE,OAAO;EAEpD,IAAI,EAAE,oBAAoB;EAC1B,IAAI,kBAAmB,GACrB,kBAAkB;EAIpB,IAAI,SAAS,SAAS,SAAS,OAC7B,kBAAkB,MAAM,YAAY,UAAU;EAGhD,WAAW,MAAM,GAAG,gBAAgB,CAAC,SAAS,MAAM;GAClD,MAAM,SAAS,QAAQ,MAAM,IAAI,EAAE;GACnC,UAAU,KAAK,KAAK,OAAO;IAC3B;EAEF,OAAO;GACP;CAEF,SAAS,sBAAsB;EAC7B,MAAM,aAAa,MAAM,KAAK,WAAW,MAAM;EAC/C,MAAM,eAAe,WAAW,KAAK,SAAS,KAAK,MAAM;EACzD,MAAM,eAAe,WAAW,KAAK,SAAS,KAAK,MAAM;EACzD,KAAK,qBAAqB,aAAa;EACvC,KAAK,UAAU,cAAc,cAAc,WAAW;;CAGxD,MAAM,UAAU,eAAe;EAC7B,MAAM,EAAE,iBAAiB,eAAe;EAExC,OAAO,KAAK,KAAK,YAAY,UAAU,KAAK,iBAAkB,EAAE;GAChE;CAEF,SAAS,eAAe,KAAkB;EACxC,WAAW,MAAM,OAAO,IAAI;EAC5B,qBAAqB;;CAGvB,SAAS,UAAU,MAAmB,SAAkB;EACtD,MAAM,cAAc,MAAM,eAAe;EACzC,IAAI,SACF,IACE,OACC,SAAS;GACR,WAAW,MAAM,IAAI,KAA+B;KAEtD,YACD;OAED,IACE,OACC,SAAS;GACR,WAAW,MAAM,OAAO,KAA+B;KAEzD,YACD;EAGH,WAAW,WAAW;EAEtB,qBAAqB;;CAGvB,SAAS,oBAAoB;EAC3B,MAAM,EAAE,eAAe;EACvB,kBAAkB;EAClB,IAAI,MAAM,QAAQ,WAAW,EAC3B,WAAW,QAAQ,IAAI,IAAI,WAAW,KAAK,MAAM,QAAQ,MAAM,IAAI,EAAE,CAAE,CAAC;;CAI5E,MACE;QAAO,MAAM;QAAgB,MAAM;EAAY;EAAO,GACrD,CAAC,cAAc;EACd,IAAI,CAAC,YAAY,cAAc,EAAE;EACjC,mBAAmB;IAErB,EAAE,WAAW,OAAO,CACrB;CAED,OAAO;EAAE;EAAS;EAAM;EAAY;EAAS;EAAgB;EAAqB;EAAW"}
1
+ {"version":3,"file":"use-check.js","names":[],"sources":["../../../src/components/cascade/use-check.ts"],"sourcesContent":["import { dfs, type Forest } from '@cat-kit/core'\nimport {\n computed,\n shallowRef,\n triggerRef,\n watch,\n type ComputedRef,\n type Ref,\n type ShallowRef\n} from 'vue'\n\nimport type { CascadeProps, CascadeEmits, CascadeNode } from '../../types'\n\ninterface CheckOptions {\n props: CascadeProps\n emit: CascadeEmits\n dataMap: ShallowRef<Map<string, CascadeNode>>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n forest: Ref<Forest<Record<string, unknown>, any>>\n isUserActive: () => boolean\n getPanelItemList: (data?: CascadeNode[]) => void\n}\n\ninterface UseCheckReturned {\n hovered: ShallowRef<boolean>\n tags: ComputedRef<CascadeNode[]>\n checkedSet: ShallowRef<Set<CascadeNode>>\n restTag: ComputedRef<number>\n handleCloseTag: (tag: CascadeNode) => void\n updateMultipleValue: () => void\n checkItem: (item: CascadeNode, checked: boolean) => void\n}\n\nexport function useCheck(options: CheckOptions): UseCheckReturned {\n const { props, emit, dataMap, disabled, readonly, forest, isUserActive, getPanelItemList } =\n options\n\n const hovered = shallowRef(false)\n\n const checkedSet = shallowRef(new Set<CascadeNode>())\n\n const tags = computed(() => {\n const { modelValue, multiple } = props\n let tags: CascadeNode[] = []\n\n if (!multiple || !Array.isArray(modelValue)) return tags\n\n let { visibilityLimit } = props\n if (visibilityLimit! < 0) {\n visibilityLimit = 0\n }\n\n // 禁用时,显示全部\n if (disabled.value || readonly.value) {\n visibilityLimit = props.modelValue?.length ?? 0\n }\n\n modelValue.slice(0, visibilityLimit).forEach((k) => {\n const option = dataMap.value.get(k)\n option && tags.push(option)\n })\n\n return tags\n })\n\n function updateMultipleValue() {\n const checkedArr = Array.from(checkedSet.value)\n const targetValues = checkedArr.map((item) => item.value)\n const targetLabels = checkedArr.map((item) => item.label)\n emit('update:modelValue', targetValues)\n emit('change', targetValues, targetLabels, checkedArr)\n }\n\n const restTag = computed(() => {\n const { visibilityLimit, modelValue } = props\n\n return Math.max((modelValue?.length ?? 0) - visibilityLimit!, 0)\n })\n\n function handleCloseTag(tag: CascadeNode) {\n checkedSet.value.delete(tag)\n updateMultipleValue()\n }\n\n function checkItem(item: CascadeNode, checked: boolean) {\n const childrenKey = props.childrenKey ?? 'children'\n if (checked) {\n dfs(\n item as unknown as Record<string, unknown>,\n (node) => {\n checkedSet.value.add(node as unknown as CascadeNode)\n },\n childrenKey\n )\n } else {\n dfs(\n item as unknown as Record<string, unknown>,\n (node) => {\n checkedSet.value.delete(node as unknown as CascadeNode)\n },\n childrenKey\n )\n }\n\n triggerRef(checkedSet)\n\n updateMultipleValue()\n }\n\n function initMultipleCheck() {\n const { modelValue } = props\n getPanelItemList()\n if (Array.isArray(modelValue)) {\n checkedSet.value = new Set(modelValue.map((v) => dataMap.value.get(v)!))\n }\n }\n\n watch(\n [() => props.multiple, () => props.modelValue, forest],\n ([multiple]) => {\n if (!multiple || isUserActive()) return\n initMultipleCheck()\n },\n { immediate: false }\n )\n\n return { hovered, tags, checkedSet, restTag, handleCloseTag, updateMultipleValue, checkItem }\n}\n"],"mappings":";;;AAkCA,SAAgB,SAAS,SAAyC;CAChE,MAAM,EAAE,OAAO,MAAM,SAAS,UAAU,UAAU,QAAQ,cAAc,qBACtE;CAEF,MAAM,UAAU,WAAW,KAAK;CAEhC,MAAM,aAAa,2BAAW,IAAI,IAAiB,CAAC;CAEpD,MAAM,OAAO,eAAe;EAC1B,MAAM,EAAE,YAAY,aAAa;EACjC,IAAI,OAAsB,CAAC;EAE3B,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,UAAU,GAAG,OAAO;EAEpD,IAAI,EAAE,oBAAoB;EAC1B,IAAI,kBAAmB,GACrB,kBAAkB;EAIpB,IAAI,SAAS,SAAS,SAAS,OAC7B,kBAAkB,MAAM,YAAY,UAAU;EAGhD,WAAW,MAAM,GAAG,eAAe,EAAE,SAAS,MAAM;GAClD,MAAM,SAAS,QAAQ,MAAM,IAAI,CAAC;GAClC,UAAU,KAAK,KAAK,MAAM;EAC5B,CAAC;EAED,OAAO;CACT,CAAC;CAED,SAAS,sBAAsB;EAC7B,MAAM,aAAa,MAAM,KAAK,WAAW,KAAK;EAC9C,MAAM,eAAe,WAAW,KAAK,SAAS,KAAK,KAAK;EACxD,MAAM,eAAe,WAAW,KAAK,SAAS,KAAK,KAAK;EACxD,KAAK,qBAAqB,YAAY;EACtC,KAAK,UAAU,cAAc,cAAc,UAAU;CACvD;CAEA,MAAM,UAAU,eAAe;EAC7B,MAAM,EAAE,iBAAiB,eAAe;EAExC,OAAO,KAAK,KAAK,YAAY,UAAU,KAAK,iBAAkB,CAAC;CACjE,CAAC;CAED,SAAS,eAAe,KAAkB;EACxC,WAAW,MAAM,OAAO,GAAG;EAC3B,oBAAoB;CACtB;CAEA,SAAS,UAAU,MAAmB,SAAkB;EACtD,MAAM,cAAc,MAAM,eAAe;EACzC,IAAI,SACF,IACE,OACC,SAAS;GACR,WAAW,MAAM,IAAI,IAA8B;EACrD,GACA,WACF;OAEA,IACE,OACC,SAAS;GACR,WAAW,MAAM,OAAO,IAA8B;EACxD,GACA,WACF;EAGF,WAAW,UAAU;EAErB,oBAAoB;CACtB;CAEA,SAAS,oBAAoB;EAC3B,MAAM,EAAE,eAAe;EACvB,iBAAiB;EACjB,IAAI,MAAM,QAAQ,UAAU,GAC1B,WAAW,QAAQ,IAAI,IAAI,WAAW,KAAK,MAAM,QAAQ,MAAM,IAAI,CAAC,CAAE,CAAC;CAE3E;CAEA,MACE;QAAO,MAAM;QAAgB,MAAM;EAAY;CAAM,IACpD,CAAC,cAAc;EACd,IAAI,CAAC,YAAY,aAAa,GAAG;EACjC,kBAAkB;CACpB,GACA,EAAE,WAAW,MAAM,CACrB;CAEA,OAAO;EAAE;EAAS;EAAM;EAAY;EAAS;EAAgB;EAAqB;CAAU;AAC9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-data-map.js","names":[],"sources":["../../../src/components/cascade/use-data-map.ts"],"sourcesContent":["import { Forest, o } from '@cat-kit/core'\nimport { shallowRef, triggerRef, watchEffect, type ComputedRef, type ShallowRef } from 'vue'\n\nimport type { CascadeNode, CascadeProps } from '../../types'\n\ninterface DataMapOptions {\n props: CascadeProps\n forest: ComputedRef<Forest<Record<string, unknown>, any>>\n}\n\n/** 数据映射相关逻辑 */\ninterface UseDataMapReturned {\n dataMap: ShallowRef<Map<string, CascadeNode>>\n}\n\nexport function useDataMap(options: DataMapOptions): UseDataMapReturned {\n const { props, forest } = options\n const dataMap = shallowRef(new Map<string, CascadeNode>())\n\n watchEffect(() => {\n const { valueKey } = props\n\n dataMap.value.clear()\n\n forest.value.dfs((node) => {\n const value = o(node.data).get(valueKey!)\n if (value !== null && value !== undefined) {\n dataMap.value.set(value, node)\n }\n })\n\n triggerRef(dataMap)\n })\n\n return { dataMap }\n}\n"],"mappings":";;;AAeA,SAAgB,WAAW,SAA6C;CACtE,MAAM,EAAE,OAAO,WAAW;CAC1B,MAAM,UAAU,2BAAW,IAAI,KAA0B,CAAC;CAE1D,kBAAkB;EAChB,MAAM,EAAE,aAAa;EAErB,QAAQ,MAAM,OAAO;EAErB,OAAO,MAAM,KAAK,SAAS;GACzB,MAAM,QAAQ,EAAE,KAAK,KAAK,CAAC,IAAI,SAAU;GACzC,IAAI,UAAU,QAAQ,UAAU,KAAA,GAC9B,QAAQ,MAAM,IAAI,OAAO,KAAK;IAEhC;EAEF,WAAW,QAAQ;GACnB;CAEF,OAAO,EAAE,SAAS"}
1
+ {"version":3,"file":"use-data-map.js","names":[],"sources":["../../../src/components/cascade/use-data-map.ts"],"sourcesContent":["import { Forest, o } from '@cat-kit/core'\nimport { shallowRef, triggerRef, watchEffect, type ComputedRef, type ShallowRef } from 'vue'\n\nimport type { CascadeNode, CascadeProps } from '../../types'\n\ninterface DataMapOptions {\n props: CascadeProps\n forest: ComputedRef<Forest<Record<string, unknown>, any>>\n}\n\n/** 数据映射相关逻辑 */\ninterface UseDataMapReturned {\n dataMap: ShallowRef<Map<string, CascadeNode>>\n}\n\nexport function useDataMap(options: DataMapOptions): UseDataMapReturned {\n const { props, forest } = options\n const dataMap = shallowRef(new Map<string, CascadeNode>())\n\n watchEffect(() => {\n const { valueKey } = props\n\n dataMap.value.clear()\n\n forest.value.dfs((node) => {\n const value = o(node.data).get(valueKey!)\n if (value !== null && value !== undefined) {\n dataMap.value.set(value, node)\n }\n })\n\n triggerRef(dataMap)\n })\n\n return { dataMap }\n}\n"],"mappings":";;;AAeA,SAAgB,WAAW,SAA6C;CACtE,MAAM,EAAE,OAAO,WAAW;CAC1B,MAAM,UAAU,2BAAW,IAAI,IAAyB,CAAC;CAEzD,kBAAkB;EAChB,MAAM,EAAE,aAAa;EAErB,QAAQ,MAAM,MAAM;EAEpB,OAAO,MAAM,KAAK,SAAS;GACzB,MAAM,QAAQ,EAAE,KAAK,IAAI,EAAE,IAAI,QAAS;GACxC,IAAI,UAAU,QAAQ,UAAU,KAAA,GAC9B,QAAQ,MAAM,IAAI,OAAO,IAAI;EAEjC,CAAC;EAED,WAAW,OAAO;CACpB,CAAC;CAED,OAAO,EAAE,QAAQ;AACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-select.js","names":[],"sources":["../../../src/components/cascade/use-select.ts"],"sourcesContent":["import { Forest } from '@cat-kit/core'\nimport { createIncrease } from '@veltra/utils'\nimport {\n computed,\n nextTick,\n shallowRef,\n triggerRef,\n watch,\n type ComputedRef,\n type Ref,\n type ShallowRef\n} from 'vue'\n\nimport type {\n CascadeProps,\n CascadeEmits,\n CascadeNode,\n DropdownExposed,\n PanelItem\n} from '../../types'\n\ninterface SelectOptions {\n props: CascadeProps\n emit: CascadeEmits\n isUserActive: () => boolean\n forest: Ref<Forest<Record<string, unknown>, any>>\n dataMap: Ref<Map<string, CascadeNode>>\n dropdownRef: Ref<DropdownExposed | undefined>\n}\n\ninterface UseSelectReturned {\n displayedValue: ComputedRef<string | undefined>\n selectItem: (panelIndex: number, item: CascadeNode) => void\n selectedNodeKeys: ShallowRef<string[]>\n updateSingleValue: () => void\n initSingleSelect: () => void\n panelItemList: ShallowRef<PanelItem[]>\n getPanelItemList: (data?: CascadeNode[]) => void\n setPanelItem: (panelIndex: number, panelData?: CascadeNode[]) => void\n createPanelItem: (nodes: CascadeNode[]) => PanelItem\n}\n\nexport function useSelect(options: SelectOptions): UseSelectReturned {\n const { props, emit, dataMap, isUserActive, dropdownRef, forest } = options\n\n /** 选中的节点key */\n const selectedNodeKeys = shallowRef<string[]>([])\n\n const currentItem = shallowRef<Record<string, any>>()\n\n /** 面板数据 */\n const panelItemList = shallowRef<PanelItem[]>([])\n const uid = createIncrease()\n function createPanelItem(nodes: CascadeNode[]): PanelItem {\n return { key: uid(), nodes: nodes.filter((node) => node.visible) }\n }\n\n const displayedValue = computed(() => {\n const { modelValue, separator } = props\n const valueNodes =\n modelValue && typeof modelValue === 'string' ? modelValue.split(separator!) : undefined\n return (\n valueNodes\n ?.map((v) => {\n const node = dataMap.value.get(v)\n return node?.label ?? v\n })\n .join(props.separator) ?? ''\n )\n })\n\n function getPanelItemList(data?: CascadeNode[]) {\n const _panelItemList: Array<PanelItem> = []\n if (!data?.length) return panelItemList\n _panelItemList.push(createPanelItem(data))\n\n selectedNodeKeys.value.slice(0, -1).forEach((key) => {\n const node = dataMap.value.get(key)\n node?.children?.length && _panelItemList.push(createPanelItem(node.children))\n })\n\n panelItemList.value = _panelItemList\n }\n\n function setPanelItem(panelIndex: number, panelData?: CascadeNode[]) {\n if (panelData?.length) {\n panelItemList.value[panelIndex + 1] = createPanelItem(panelData)\n panelItemList.value.splice(panelIndex + 2)\n } else {\n panelItemList.value.splice(panelIndex + 1)\n }\n\n triggerRef(panelItemList)\n }\n\n function updateSingleValue() {\n const { separator } = props\n\n const targetValue = selectedNodeKeys.value.length\n ? selectedNodeKeys.value.join(separator!)\n : undefined\n\n const targetLabel = selectedNodeKeys.value\n .map((key) => {\n const node = dataMap.value.get(key)\n return node?.label\n })\n .filter(Boolean)\n .join(separator!)\n\n emit('update:modelValue', targetValue)\n emit('change', targetValue, targetLabel, currentItem.value!)\n }\n\n /**\n * 单选选择\n *\n * @param panelIndex 面板索引\n * @param item 选中的节点\n */\n function selectItem(panelIndex: number, item: CascadeNode) {\n // 设置选中的节点\n currentItem.value = item\n selectedNodeKeys.value[panelIndex] = item.value\n selectedNodeKeys.value.splice(panelIndex + 1)\n triggerRef(selectedNodeKeys)\n\n // 展开子级面板\n setPanelItem(panelIndex, item.children)\n\n nextTick(() => {\n dropdownRef.value?.updateDropdown()\n })\n\n if (!item.children?.length && !props.multiple) {\n dropdownRef.value?.close()\n }\n }\n\n function initSingleSelect() {\n const { modelValue, separator } = props\n\n if (modelValue && typeof modelValue === 'string') {\n const nodes = modelValue.split(separator!)\n selectedNodeKeys.value = nodes\n getPanelItemList(forest.value.roots)\n } else {\n selectedNodeKeys.value = []\n getPanelItemList(forest.value.roots)\n }\n }\n\n watch(\n [() => props.multiple, () => props.modelValue, forest],\n ([multiple]) => {\n if (multiple || isUserActive()) return\n initSingleSelect()\n },\n { immediate: true }\n )\n\n return {\n displayedValue,\n selectItem,\n selectedNodeKeys,\n updateSingleValue,\n initSingleSelect,\n panelItemList,\n getPanelItemList,\n setPanelItem,\n createPanelItem\n }\n}\n"],"mappings":";;;;AA0CA,SAAgB,UAAU,SAA2C;CACnE,MAAM,EAAE,OAAO,MAAM,SAAS,cAAc,aAAa,WAAW;;CAGpE,MAAM,mBAAmB,WAAqB,EAAE,CAAC;CAEjD,MAAM,cAAc,YAAiC;;CAGrD,MAAM,gBAAgB,WAAwB,EAAE,CAAC;CACjD,MAAM,MAAM,gBAAgB;CAC5B,SAAS,gBAAgB,OAAiC;EACxD,OAAO;GAAE,KAAK,KAAK;GAAE,OAAO,MAAM,QAAQ,SAAS,KAAK,QAAQ;GAAE;;CAGpE,MAAM,iBAAiB,eAAe;EACpC,MAAM,EAAE,YAAY,cAAc;EAGlC,QADE,cAAc,OAAO,eAAe,WAAW,WAAW,MAAM,UAAW,GAAG,KAAA,IAG1E,KAAK,MAAM;GAEX,OADa,QAAQ,MAAM,IAAI,EACpB,EAAE,SAAS;IACtB,CACD,KAAK,MAAM,UAAU,IAAI;GAE9B;CAEF,SAAS,iBAAiB,MAAsB;EAC9C,MAAM,iBAAmC,EAAE;EAC3C,IAAI,CAAC,MAAM,QAAQ,OAAO;EAC1B,eAAe,KAAK,gBAAgB,KAAK,CAAC;EAE1C,iBAAiB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,QAAQ;GACnD,MAAM,OAAO,QAAQ,MAAM,IAAI,IAAI;GACnC,MAAM,UAAU,UAAU,eAAe,KAAK,gBAAgB,KAAK,SAAS,CAAC;IAC7E;EAEF,cAAc,QAAQ;;CAGxB,SAAS,aAAa,YAAoB,WAA2B;EACnE,IAAI,WAAW,QAAQ;GACrB,cAAc,MAAM,aAAa,KAAK,gBAAgB,UAAU;GAChE,cAAc,MAAM,OAAO,aAAa,EAAE;SAE1C,cAAc,MAAM,OAAO,aAAa,EAAE;EAG5C,WAAW,cAAc;;CAG3B,SAAS,oBAAoB;EAC3B,MAAM,EAAE,cAAc;EAEtB,MAAM,cAAc,iBAAiB,MAAM,SACvC,iBAAiB,MAAM,KAAK,UAAW,GACvC,KAAA;EAEJ,MAAM,cAAc,iBAAiB,MAClC,KAAK,QAAQ;GAEZ,OADa,QAAQ,MAAM,IAAI,IACpB,EAAE;IACb,CACD,OAAO,QAAQ,CACf,KAAK,UAAW;EAEnB,KAAK,qBAAqB,YAAY;EACtC,KAAK,UAAU,aAAa,aAAa,YAAY,MAAO;;;;;;;;CAS9D,SAAS,WAAW,YAAoB,MAAmB;EAEzD,YAAY,QAAQ;EACpB,iBAAiB,MAAM,cAAc,KAAK;EAC1C,iBAAiB,MAAM,OAAO,aAAa,EAAE;EAC7C,WAAW,iBAAiB;EAG5B,aAAa,YAAY,KAAK,SAAS;EAEvC,eAAe;GACb,YAAY,OAAO,gBAAgB;IACnC;EAEF,IAAI,CAAC,KAAK,UAAU,UAAU,CAAC,MAAM,UACnC,YAAY,OAAO,OAAO;;CAI9B,SAAS,mBAAmB;EAC1B,MAAM,EAAE,YAAY,cAAc;EAElC,IAAI,cAAc,OAAO,eAAe,UAAU;GAEhD,iBAAiB,QADH,WAAW,MAAM,UACD;GAC9B,iBAAiB,OAAO,MAAM,MAAM;SAC/B;GACL,iBAAiB,QAAQ,EAAE;GAC3B,iBAAiB,OAAO,MAAM,MAAM;;;CAIxC,MACE;QAAO,MAAM;QAAgB,MAAM;EAAY;EAAO,GACrD,CAAC,cAAc;EACd,IAAI,YAAY,cAAc,EAAE;EAChC,kBAAkB;IAEpB,EAAE,WAAW,MAAM,CACpB;CAED,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
1
+ {"version":3,"file":"use-select.js","names":[],"sources":["../../../src/components/cascade/use-select.ts"],"sourcesContent":["import { Forest } from '@cat-kit/core'\nimport { createIncrease } from '@veltra/utils'\nimport {\n computed,\n nextTick,\n shallowRef,\n triggerRef,\n watch,\n type ComputedRef,\n type Ref,\n type ShallowRef\n} from 'vue'\n\nimport type {\n CascadeProps,\n CascadeEmits,\n CascadeNode,\n DropdownExposed,\n PanelItem\n} from '../../types'\n\ninterface SelectOptions {\n props: CascadeProps\n emit: CascadeEmits\n isUserActive: () => boolean\n forest: Ref<Forest<Record<string, unknown>, any>>\n dataMap: Ref<Map<string, CascadeNode>>\n dropdownRef: Ref<DropdownExposed | undefined>\n}\n\ninterface UseSelectReturned {\n displayedValue: ComputedRef<string | undefined>\n selectItem: (panelIndex: number, item: CascadeNode) => void\n selectedNodeKeys: ShallowRef<string[]>\n updateSingleValue: () => void\n initSingleSelect: () => void\n panelItemList: ShallowRef<PanelItem[]>\n getPanelItemList: (data?: CascadeNode[]) => void\n setPanelItem: (panelIndex: number, panelData?: CascadeNode[]) => void\n createPanelItem: (nodes: CascadeNode[]) => PanelItem\n}\n\nexport function useSelect(options: SelectOptions): UseSelectReturned {\n const { props, emit, dataMap, isUserActive, dropdownRef, forest } = options\n\n /** 选中的节点key */\n const selectedNodeKeys = shallowRef<string[]>([])\n\n const currentItem = shallowRef<Record<string, any>>()\n\n /** 面板数据 */\n const panelItemList = shallowRef<PanelItem[]>([])\n const uid = createIncrease()\n function createPanelItem(nodes: CascadeNode[]): PanelItem {\n return { key: uid(), nodes: nodes.filter((node) => node.visible) }\n }\n\n const displayedValue = computed(() => {\n const { modelValue, separator } = props\n const valueNodes =\n modelValue && typeof modelValue === 'string' ? modelValue.split(separator!) : undefined\n return (\n valueNodes\n ?.map((v) => {\n const node = dataMap.value.get(v)\n return node?.label ?? v\n })\n .join(props.separator) ?? ''\n )\n })\n\n function getPanelItemList(data?: CascadeNode[]) {\n const _panelItemList: Array<PanelItem> = []\n if (!data?.length) return panelItemList\n _panelItemList.push(createPanelItem(data))\n\n selectedNodeKeys.value.slice(0, -1).forEach((key) => {\n const node = dataMap.value.get(key)\n node?.children?.length && _panelItemList.push(createPanelItem(node.children))\n })\n\n panelItemList.value = _panelItemList\n }\n\n function setPanelItem(panelIndex: number, panelData?: CascadeNode[]) {\n if (panelData?.length) {\n panelItemList.value[panelIndex + 1] = createPanelItem(panelData)\n panelItemList.value.splice(panelIndex + 2)\n } else {\n panelItemList.value.splice(panelIndex + 1)\n }\n\n triggerRef(panelItemList)\n }\n\n function updateSingleValue() {\n const { separator } = props\n\n const targetValue = selectedNodeKeys.value.length\n ? selectedNodeKeys.value.join(separator!)\n : undefined\n\n const targetLabel = selectedNodeKeys.value\n .map((key) => {\n const node = dataMap.value.get(key)\n return node?.label\n })\n .filter(Boolean)\n .join(separator!)\n\n emit('update:modelValue', targetValue)\n emit('change', targetValue, targetLabel, currentItem.value!)\n }\n\n /**\n * 单选选择\n *\n * @param panelIndex 面板索引\n * @param item 选中的节点\n */\n function selectItem(panelIndex: number, item: CascadeNode) {\n // 设置选中的节点\n currentItem.value = item\n selectedNodeKeys.value[panelIndex] = item.value\n selectedNodeKeys.value.splice(panelIndex + 1)\n triggerRef(selectedNodeKeys)\n\n // 展开子级面板\n setPanelItem(panelIndex, item.children)\n\n nextTick(() => {\n dropdownRef.value?.updateDropdown()\n })\n\n if (!item.children?.length && !props.multiple) {\n dropdownRef.value?.close()\n }\n }\n\n function initSingleSelect() {\n const { modelValue, separator } = props\n\n if (modelValue && typeof modelValue === 'string') {\n const nodes = modelValue.split(separator!)\n selectedNodeKeys.value = nodes\n getPanelItemList(forest.value.roots)\n } else {\n selectedNodeKeys.value = []\n getPanelItemList(forest.value.roots)\n }\n }\n\n watch(\n [() => props.multiple, () => props.modelValue, forest],\n ([multiple]) => {\n if (multiple || isUserActive()) return\n initSingleSelect()\n },\n { immediate: true }\n )\n\n return {\n displayedValue,\n selectItem,\n selectedNodeKeys,\n updateSingleValue,\n initSingleSelect,\n panelItemList,\n getPanelItemList,\n setPanelItem,\n createPanelItem\n }\n}\n"],"mappings":";;;;AA0CA,SAAgB,UAAU,SAA2C;CACnE,MAAM,EAAE,OAAO,MAAM,SAAS,cAAc,aAAa,WAAW;;CAGpE,MAAM,mBAAmB,WAAqB,CAAC,CAAC;CAEhD,MAAM,cAAc,WAAgC;;CAGpD,MAAM,gBAAgB,WAAwB,CAAC,CAAC;CAChD,MAAM,MAAM,eAAe;CAC3B,SAAS,gBAAgB,OAAiC;EACxD,OAAO;GAAE,KAAK,IAAI;GAAG,OAAO,MAAM,QAAQ,SAAS,KAAK,OAAO;EAAE;CACnE;CAEA,MAAM,iBAAiB,eAAe;EACpC,MAAM,EAAE,YAAY,cAAc;EAGlC,QADE,cAAc,OAAO,eAAe,WAAW,WAAW,MAAM,SAAU,IAAI,KAAA,IAG1E,KAAK,MAAM;GAEX,OADa,QAAQ,MAAM,IAAI,CACrB,GAAG,SAAS;EACxB,CAAC,EACA,KAAK,MAAM,SAAS,KAAK;CAEhC,CAAC;CAED,SAAS,iBAAiB,MAAsB;EAC9C,MAAM,iBAAmC,CAAC;EAC1C,IAAI,CAAC,MAAM,QAAQ,OAAO;EAC1B,eAAe,KAAK,gBAAgB,IAAI,CAAC;EAEzC,iBAAiB,MAAM,MAAM,GAAG,EAAE,EAAE,SAAS,QAAQ;GACnD,MAAM,OAAO,QAAQ,MAAM,IAAI,GAAG;GAClC,MAAM,UAAU,UAAU,eAAe,KAAK,gBAAgB,KAAK,QAAQ,CAAC;EAC9E,CAAC;EAED,cAAc,QAAQ;CACxB;CAEA,SAAS,aAAa,YAAoB,WAA2B;EACnE,IAAI,WAAW,QAAQ;GACrB,cAAc,MAAM,aAAa,KAAK,gBAAgB,SAAS;GAC/D,cAAc,MAAM,OAAO,aAAa,CAAC;EAC3C,OACE,cAAc,MAAM,OAAO,aAAa,CAAC;EAG3C,WAAW,aAAa;CAC1B;CAEA,SAAS,oBAAoB;EAC3B,MAAM,EAAE,cAAc;EAEtB,MAAM,cAAc,iBAAiB,MAAM,SACvC,iBAAiB,MAAM,KAAK,SAAU,IACtC,KAAA;EAEJ,MAAM,cAAc,iBAAiB,MAClC,KAAK,QAAQ;GAEZ,OADa,QAAQ,MAAM,IAAI,GACrB,GAAG;EACf,CAAC,EACA,OAAO,OAAO,EACd,KAAK,SAAU;EAElB,KAAK,qBAAqB,WAAW;EACrC,KAAK,UAAU,aAAa,aAAa,YAAY,KAAM;CAC7D;;;;;;;CAQA,SAAS,WAAW,YAAoB,MAAmB;EAEzD,YAAY,QAAQ;EACpB,iBAAiB,MAAM,cAAc,KAAK;EAC1C,iBAAiB,MAAM,OAAO,aAAa,CAAC;EAC5C,WAAW,gBAAgB;EAG3B,aAAa,YAAY,KAAK,QAAQ;EAEtC,eAAe;GACb,YAAY,OAAO,eAAe;EACpC,CAAC;EAED,IAAI,CAAC,KAAK,UAAU,UAAU,CAAC,MAAM,UACnC,YAAY,OAAO,MAAM;CAE7B;CAEA,SAAS,mBAAmB;EAC1B,MAAM,EAAE,YAAY,cAAc;EAElC,IAAI,cAAc,OAAO,eAAe,UAAU;GAEhD,iBAAiB,QADH,WAAW,MAAM,SACF;GAC7B,iBAAiB,OAAO,MAAM,KAAK;EACrC,OAAO;GACL,iBAAiB,QAAQ,CAAC;GAC1B,iBAAiB,OAAO,MAAM,KAAK;EACrC;CACF;CAEA,MACE;QAAO,MAAM;QAAgB,MAAM;EAAY;CAAM,IACpD,CAAC,cAAc;EACd,IAAI,YAAY,aAAa,GAAG;EAChC,iBAAiB;CACnB,GACA,EAAE,WAAW,KAAK,CACpB;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-tag.js","names":[],"sources":["../../../src/components/check-tag/check-tag.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" @click=\"handleChange\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckTagEmits, CheckTagProps } from '../../types'\n\ndefineOptions({ name: 'CheckTag' })\n\nconst cls = bem('check-tag')\n\nconst props = withDefaults(defineProps<CheckTagProps>(), {})\n\nconst emits = defineEmits<CheckTagEmits>()\n\nconst classList = computed(() => {\n return [cls.b, bem.is('checked', props.checked)]\n})\n\nconst handleChange = () => {\n emits('update:modelValue', props.checked)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;EAcA,MAAM,MAAM,IAAI,YAAW;EAE3B,MAAM,QAAQ;EAEd,MAAM,QAAQ;EAEd,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,WAAW,MAAM,QAAQ,CAAA;IAChD;EAED,MAAM,qBAAqB;GACzB,MAAM,qBAAqB,MAAM,QAAO;;;uBAxBxC,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAG,SAAO;OAC9B,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"check-tag.js","names":[],"sources":["../../../src/components/check-tag/check-tag.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" @click=\"handleChange\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckTagEmits, CheckTagProps } from '../../types'\n\ndefineOptions({ name: 'CheckTag' })\n\nconst cls = bem('check-tag')\n\nconst props = withDefaults(defineProps<CheckTagProps>(), {})\n\nconst emits = defineEmits<CheckTagEmits>()\n\nconst classList = computed(() => {\n return [cls.b, bem.is('checked', props.checked)]\n})\n\nconst handleChange = () => {\n emits('update:modelValue', props.checked)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;EAcA,MAAM,MAAM,IAAI,WAAW;EAE3B,MAAM,QAAQ;EAEd,MAAM,QAAQ;EAEd,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,WAAW,MAAM,OAAO,CAAC;EACjD,CAAC;EAED,MAAM,qBAAqB;GACzB,MAAM,qBAAqB,MAAM,OAAO;EAC1C;;uBAzBE,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,KAAS;IAAG,SAAO;OAC9B,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}