@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":"tabs-horizontal.js","names":[],"sources":["../../../src/components/tabs/tabs-horizontal.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n cls.b,\n cls.m('horizontal'),\n cls.m(position),\n cls.m(size),\n bem.is('block', block),\n bem.is('rounded', rounded)\n ]\"\n >\n <button\n v-show=\"showNav\"\n type=\"button\"\n :class=\"[cls.e('nav'), cls.em('nav', 'prev')]\"\n :disabled=\"!canPrev\"\n @click=\"scrollByStep(-1)\"\n >\n <u-icon> <ArrowLeft /> </u-icon>\n </button>\n\n <div ref=\"viewportRef\" :class=\"cls.e('viewport')\">\n <div ref=\"listRef\" :class=\"cls.e('list')\">\n <button\n type=\"button\"\n role=\"tab\"\n v-for=\"(item, index) in items\"\n :key=\"item.key\"\n :class=\"[\n cls.e('item'),\n bem.is('active', model === item.key),\n bem.is('disabled', item.disabled === true)\n ]\"\n @click.stop=\"handleClick(item, index)\"\n >\n <slot :name=\"`name:${item.key}`\" :item=\"item\">\n <span :class=\"cls.e('item-label')\">{{ item.name ?? item.key }}</span>\n </slot>\n\n <span\n v-if=\"isItemClosable(item)\"\n role=\"button\"\n tabindex=\"0\"\n :class=\"cls.e('close')\"\n :aria-label=\"`close ${item.name ?? item.key}`\"\n @click.stop=\"handleClose(item, index)\"\n >\n <u-icon>\n <Close />\n </u-icon>\n </span>\n </button>\n </div>\n </div>\n\n <button\n v-show=\"showNav\"\n type=\"button\"\n :class=\"[cls.e('nav'), cls.em('nav', 'next')]\"\n :disabled=\"!canNext\"\n @click=\"scrollByStep(1)\"\n >\n <u-icon> <ArrowRight /> </u-icon>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { ArrowLeft, ArrowRight, Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ComponentSize, TabItem, TabsHorizontalEmits, TabsHorizontalProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { useTabsBar } from './use-tabs-bar'\n\ndefineOptions({ name: 'TabsHorizontal' })\n\nconst props = withDefaults(defineProps<TabsHorizontalProps>(), {\n position: 'top',\n closable: false,\n block: false,\n rounded: false\n})\n\nconst emit = defineEmits<TabsHorizontalEmits>()\n\ndefineSlots<{ [key: `name:${string}`]: (props: { item: TabItem }) => any }>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('tabs-bar')\n\nconst model = defineModel<string>()\n\nconst viewportRef = shallowRef<HTMLElement>()\nconst listRef = shallowRef<HTMLElement>()\n\nconst itemsRef = computed(() => props.items)\n\nconst { showNav, canPrev, canNext, scrollByStep } = useTabsBar({\n viewportRef,\n listRef,\n items: itemsRef,\n model\n})\n\nconst isItemClosable = (item: TabItem) => {\n if (item.disabled) return false\n return item.closable ?? props.closable\n}\n\nconst handleClick = (item: TabItem, index: number) => {\n if (item.disabled) return\n model.value = item.key\n emit('click', item, index)\n}\n\nconst handleClose = (item: TabItem, index: number) => {\n if (item.disabled) return\n emit('close', item, index)\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-horizontal.js","names":[],"sources":["../../../src/components/tabs/tabs-horizontal.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n cls.b,\n cls.m('horizontal'),\n cls.m(position),\n cls.m(size),\n bem.is('block', block),\n bem.is('rounded', rounded)\n ]\"\n >\n <button\n v-show=\"showNav\"\n type=\"button\"\n :class=\"[cls.e('nav'), cls.em('nav', 'prev')]\"\n :disabled=\"!canPrev\"\n @click=\"scrollByStep(-1)\"\n >\n <u-icon> <ArrowLeft /> </u-icon>\n </button>\n\n <div ref=\"viewportRef\" :class=\"cls.e('viewport')\">\n <div ref=\"listRef\" :class=\"cls.e('list')\">\n <button\n type=\"button\"\n role=\"tab\"\n v-for=\"(item, index) in items\"\n :key=\"item.key\"\n :class=\"[\n cls.e('item'),\n bem.is('active', model === item.key),\n bem.is('disabled', item.disabled === true)\n ]\"\n @click.stop=\"handleClick(item, index)\"\n >\n <slot v-bind=\"{ item, index }\">\n <span :class=\"cls.e('item-label')\">{{ item.name ?? item.key }}</span>\n </slot>\n\n <span\n v-if=\"isItemClosable(item)\"\n role=\"button\"\n tabindex=\"0\"\n :class=\"cls.e('close')\"\n :aria-label=\"`close ${item.name ?? item.key}`\"\n @click.stop=\"handleClose(item, index)\"\n >\n <u-icon>\n <Close />\n </u-icon>\n </span>\n </button>\n </div>\n </div>\n\n <button\n v-show=\"showNav\"\n type=\"button\"\n :class=\"[cls.e('nav'), cls.em('nav', 'next')]\"\n :disabled=\"!canNext\"\n @click=\"scrollByStep(1)\"\n >\n <u-icon> <ArrowRight /> </u-icon>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { ArrowLeft, ArrowRight, Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ComponentSize, TabItem, TabsHorizontalEmits, TabsHorizontalProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { useTabsBar } from './use-tabs-bar'\n\ndefineOptions({ name: 'TabsHorizontal' })\n\nconst props = withDefaults(defineProps<TabsHorizontalProps>(), {\n position: 'top',\n closable: false,\n block: false,\n rounded: false\n})\n\nconst emit = defineEmits<TabsHorizontalEmits>()\n\ndefineSlots<{ default: (props: { item: TabItem; index: number }) => any }>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('tabs-bar')\n\nconst model = defineModel<string>()\n\nconst viewportRef = shallowRef<HTMLElement>()\nconst listRef = shallowRef<HTMLElement>()\n\nconst itemsRef = computed(() => props.items)\n\nconst { showNav, canPrev, canNext, scrollByStep } = useTabsBar({\n viewportRef,\n listRef,\n items: itemsRef,\n model\n})\n\nconst isItemClosable = (item: TabItem) => {\n if (item.disabled) return false\n return item.closable ?? props.closable\n}\n\nconst handleClick = (item: TabItem, index: number) => {\n if (item.disabled) return\n model.value = item.key\n emit('click', item, index)\n}\n\nconst handleClose = (item: TabItem, index: number) => {\n if (item.disabled) return\n emit('close', item, index)\n}\n</script>\n"],"mappings":"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"}
@@ -1,33 +1,32 @@
1
1
  import { TabItem, TabsHorizontalProps } from "../../types/tabs.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/tabs/tabs-horizontal.vue.d.ts
5
3
  type __VLS_Props = TabsHorizontalProps;
6
4
  type __VLS_Slots = {
7
- [key: `name:${string}`]: (props: {
5
+ default: (props: {
8
6
  item: TabItem;
7
+ index: number;
9
8
  }) => any;
10
9
  };
11
10
  type __VLS_ModelProps = {
12
11
  modelValue?: string;
13
12
  };
14
13
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
15
- declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
14
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
15
  "update:modelValue": (value: string | undefined) => any;
17
16
  } & {
18
17
  "update:modelValue": (value: string) => any;
19
18
  close: (item: TabItem, index: number) => any;
20
19
  click: (item: TabItem, index: number) => any;
21
- }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
20
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
22
21
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
23
22
  onClose?: ((item: TabItem, index: number) => any) | undefined;
24
23
  onClick?: ((item: TabItem, index: number) => any) | undefined;
25
24
  }>, {
26
25
  closable: boolean;
27
- rounded: boolean;
28
26
  position: "top" | "bottom";
29
27
  block: boolean;
30
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
28
+ rounded: boolean;
29
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
31
30
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
32
31
  declare const _default: typeof __VLS_export;
33
32
  type __VLS_WithSlots<T, S> = T & {
@@ -1,5 +1,5 @@
1
1
  import _sfc_main$1 from "../icon/icon.js";
2
- import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderList, renderSlot, toDisplayString, unref, useModel, withCtx, withModifiers } from "vue";
2
+ import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, mergeProps, normalizeClass, openBlock, renderList, renderSlot, toDisplayString, unref, useModel, withCtx, withModifiers } from "vue";
3
3
  import { useFallbackProps } from "@veltra/compositions";
4
4
  import { bem } from "@veltra/utils";
5
5
  import { Close } from "@veltra/icons/normal";
@@ -68,7 +68,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
68
68
  unref(bem).is("disabled", item.disabled === true)
69
69
  ]),
70
70
  onClick: withModifiers(($event) => handleClick(item, index), ["stop"])
71
- }, [renderSlot(_ctx.$slots, `name:${item.key}`, { item }, () => [createElementVNode("span", { class: normalizeClass(unref(cls).e("item-label")) }, toDisplayString(item.name ?? item.key), 3)]), isItemClosable(item) ? (openBlock(), createElementBlock("span", {
71
+ }, [renderSlot(_ctx.$slots, "default", mergeProps({ ref_for: true }, {
72
+ item,
73
+ index
74
+ }), () => [createElementVNode("span", { class: normalizeClass(unref(cls).e("item-label")) }, toDisplayString(item.name ?? item.key), 3)]), isItemClosable(item) ? (openBlock(), createElementBlock("span", {
72
75
  key: 0,
73
76
  role: "button",
74
77
  tabindex: "0",
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-vertical.js","names":[],"sources":["../../../src/components/tabs/tabs-vertical.vue"],"sourcesContent":["<template>\n <div\n :class=\"[cls.b, cls.m('vertical'), cls.m(position), cls.m(size), bem.is('rounded', rounded)]\"\n >\n <button\n type=\"button\"\n role=\"tab\"\n v-for=\"(item, index) in items\"\n :key=\"item.key\"\n :class=\"[\n cls.e('item'),\n bem.is('active', model === item.key),\n bem.is('disabled', item.disabled === true)\n ]\"\n @click.stop=\"handleClick(item, index)\"\n >\n <slot :name=\"`name:${item.key}`\" :item=\"item\">\n <span :class=\"cls.e('item-label')\">{{ item.name ?? item.key }}</span>\n </slot>\n <span\n v-if=\"isItemClosable(item)\"\n role=\"button\"\n tabindex=\"0\"\n :class=\"cls.e('close')\"\n :aria-label=\"`close ${item.name ?? item.key}`\"\n @click.stop=\"handleClose(item, index)\"\n >\n <u-icon>\n <Close />\n </u-icon>\n </span>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\n\nimport type { ComponentSize, TabItem, TabsVerticalEmits, TabsVerticalProps } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'TabsVertical' })\n\nconst props = withDefaults(defineProps<TabsVerticalProps>(), {\n position: 'left',\n closable: false,\n rounded: false\n})\n\nconst emit = defineEmits<TabsVerticalEmits>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('tabs-bar')\n\nconst model = defineModel<string>()\n\nconst isItemClosable = (item: TabItem) => {\n if (item.disabled) return false\n return item.closable ?? props.closable\n}\n\nconst handleClick = (item: TabItem, index: number) => {\n if (item.disabled) return\n model.value = item.key\n emit('click', item, index)\n}\n\nconst handleClose = (item: TabItem, index: number) => {\n if (item.disabled) return\n emit('close', item, index)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EAAE,MAAM,WAA4B,CAAA;EAE/E,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,QAAQ,SAAmB,SAAA,aAAC;EAElC,MAAM,kBAAkB,SAAkB;GACxC,IAAI,KAAK,UAAU,OAAO;GAC1B,OAAO,KAAK,YAAY,MAAM;;EAGhC,MAAM,eAAe,MAAe,UAAkB;GACpD,IAAI,KAAK,UAAU;GACnB,MAAM,QAAQ,KAAK;GACnB,KAAK,SAAS,MAAM,MAAK;;EAG3B,MAAM,eAAe,MAAe,UAAkB;GACpD,IAAI,KAAK,UAAU;GACnB,KAAK,SAAS,MAAM,MAAK;;;uBAvEzB,mBA+BM,OAAA,EA9BH,OAAK,eAAA;IAAG,MAAA,IAAA,CAAI;IAAG,MAAA,IAAA,CAAI,EAAC,WAAA;IAAc,MAAA,IAAA,CAAI,EAAE,QAAA,SAAQ;IAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA;IAAG,MAAA,IAAA,CAAI,GAAE,WAAY,QAAA,QAAO;IAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EAE1F,mBA2BS,UAAA,MAAA,WAxBiB,QAAA,QAAhB,MAAM,UAAK;wBAHrB,mBA2BS,UAAA;KA1BP,MAAK;KACL,MAAK;KAEJ,KAAK,KAAK;KACV,OAAK,eAAA;MAAY,MAAA,IAAA,CAAI,EAAC,OAAA;MAAkB,MAAA,IAAA,CAAI,GAAE,UAAW,MAAA,UAAU,KAAK,IAAG;MAAW,MAAA,IAAA,CAAI,GAAE,YAAa,KAAK,aAAQ,KAAA;;KAKtH,SAAK,eAAA,WAAO,YAAY,MAAM,MAAK,EAAA,CAAA,OAAA,CAAA;QAEpC,WAEO,KAAA,QAAA,QAFc,KAAK,OAAG,EAAW,MAAI,QAErC,CADL,mBAAqE,QAAA,EAA9D,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,aAAA,CAAA,EAAA,EAAA,gBAAmB,KAAK,QAAQ,KAAK,IAAG,EAAA,EAAA,CAAA,CAAA,EAGrD,eAAe,KAAI,IAAA,WAAA,EAD3B,mBAWO,QAAA;;KATL,MAAK;KACL,UAAS;KACR,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA;KACZ,cAAU,SAAW,KAAK,QAAQ,KAAK;KACvC,SAAK,eAAA,WAAO,YAAY,MAAM,MAAK,EAAA,CAAA,OAAA,CAAA;QAEpC,YAES,MAAA,YAAA,EAAA,MAAA;4BADE,CAAT,YAAS,MAAA,MAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"tabs-vertical.js","names":[],"sources":["../../../src/components/tabs/tabs-vertical.vue"],"sourcesContent":["<template>\n <div\n :class=\"[cls.b, cls.m('vertical'), cls.m(position), cls.m(size), bem.is('rounded', rounded)]\"\n >\n <button\n type=\"button\"\n role=\"tab\"\n v-for=\"(item, index) in items\"\n :key=\"item.key\"\n :class=\"[\n cls.e('item'),\n bem.is('active', model === item.key),\n bem.is('disabled', item.disabled === true)\n ]\"\n @click.stop=\"handleClick(item, index)\"\n >\n <slot v-bind=\"{ item, index }\">\n <span :class=\"cls.e('item-label')\">{{ item.name ?? item.key }}</span>\n </slot>\n <span\n v-if=\"isItemClosable(item)\"\n role=\"button\"\n tabindex=\"0\"\n :class=\"cls.e('close')\"\n :aria-label=\"`close ${item.name ?? item.key}`\"\n @click.stop=\"handleClose(item, index)\"\n >\n <u-icon>\n <Close />\n </u-icon>\n </span>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\n\nimport type { ComponentSize, TabItem, TabsVerticalEmits, TabsVerticalProps } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'TabsVertical' })\n\nconst props = withDefaults(defineProps<TabsVerticalProps>(), {\n position: 'left',\n closable: false,\n rounded: false\n})\n\nconst emit = defineEmits<TabsVerticalEmits>()\n\ndefineSlots<{ default: (props: { item: TabItem; index: number }) => any }>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('tabs-bar')\n\nconst model = defineModel<string>()\n\nconst isItemClosable = (item: TabItem) => {\n if (item.disabled) return false\n return item.closable ?? props.closable\n}\n\nconst handleClick = (item: TabItem, index: number) => {\n if (item.disabled) return\n model.value = item.key\n emit('click', item, index)\n}\n\nconst handleClose = (item: TabItem, index: number) => {\n if (item.disabled) return\n emit('close', item, index)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAIb,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,UAAU;EAE1B,MAAM,QAAQ,SAAmB,SAAA,YAAC;EAElC,MAAM,kBAAkB,SAAkB;GACxC,IAAI,KAAK,UAAU,OAAO;GAC1B,OAAO,KAAK,YAAY,MAAM;EAChC;EAEA,MAAM,eAAe,MAAe,UAAkB;GACpD,IAAI,KAAK,UAAU;GACnB,MAAM,QAAQ,KAAK;GACnB,KAAK,SAAS,MAAM,KAAK;EAC3B;EAEA,MAAM,eAAe,MAAe,UAAkB;GACpD,IAAI,KAAK,UAAU;GACnB,KAAK,SAAS,MAAM,KAAK;EAC3B;;uBA1EE,mBA+BM,OAAA,EA9BH,OAAK,eAAA;IAAG,MAAA,GAAA,EAAI;IAAG,MAAA,GAAA,EAAI,EAAC,UAAA;IAAc,MAAA,GAAA,EAAI,EAAE,QAAA,QAAQ;IAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI;IAAG,MAAA,GAAA,EAAI,GAAE,WAAY,QAAA,OAAO;GAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GAE1F,mBA2BS,UAAA,MAAA,WAxBiB,QAAA,QAAhB,MAAM,UAAK;wBAHrB,mBA2BS,UAAA;KA1BP,MAAK;KACL,MAAK;KAEJ,KAAK,KAAK;KACV,OAAK,eAAA;MAAY,MAAA,GAAA,EAAI,EAAC,MAAA;MAAkB,MAAA,GAAA,EAAI,GAAE,UAAW,MAAA,UAAU,KAAK,GAAG;MAAW,MAAA,GAAA,EAAI,GAAE,YAAa,KAAK,aAAQ,IAAA;;KAKtH,SAAK,eAAA,WAAO,YAAY,MAAM,KAAK,GAAA,CAAA,MAAA,CAAA;QAEpC,WAEO,KAAA,QAAA,WAFP,WAEO,EAAA,SAAA,KAAA,GAAA;KAFS;KAAM;IAAK,CAAA,SAEpB,CADL,mBAAqE,QAAA,EAA9D,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA,EAAA,GAAA,gBAAmB,KAAK,QAAQ,KAAK,GAAG,GAAA,CAAA,CAAA,CAAA,GAGrD,eAAe,IAAI,KAAA,UAAA,GAD3B,mBAWO,QAAA;;KATL,MAAK;KACL,UAAS;KACR,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,OAAA,CAAA;KACZ,cAAU,SAAW,KAAK,QAAQ,KAAK;KACvC,SAAK,eAAA,WAAO,YAAY,MAAM,KAAK,GAAA,CAAA,MAAA,CAAA;QAEpC,YAES,MAAA,WAAA,GAAA,MAAA;4BADE,CAAT,YAAS,MAAA,KAAA,CAAA,CAAA,CAAA"}
@@ -1,31 +1,31 @@
1
1
  import { TabItem, TabsVerticalProps } from "../../types/tabs.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/tabs/tabs-vertical.vue.d.ts
5
3
  type __VLS_Props = TabsVerticalProps;
4
+ type __VLS_Slots = {
5
+ default: (props: {
6
+ item: TabItem;
7
+ index: number;
8
+ }) => any;
9
+ };
6
10
  type __VLS_ModelProps = {
7
11
  modelValue?: string;
8
12
  };
9
13
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
- declare var __VLS_2: `name:${string}`, __VLS_3: {
11
- item: TabItem;
12
- };
13
- type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_2>]?: (props: typeof __VLS_3) => any };
14
- declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
14
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
15
  "update:modelValue": (value: string | undefined) => any;
16
16
  } & {
17
17
  "update:modelValue": (value: string) => any;
18
18
  close: (item: TabItem, index: number) => any;
19
19
  click: (item: TabItem, index: number) => any;
20
- }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
20
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
21
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
22
22
  onClose?: ((item: TabItem, index: number) => any) | undefined;
23
23
  onClick?: ((item: TabItem, index: number) => any) | undefined;
24
24
  }>, {
25
25
  closable: boolean;
26
- rounded: boolean;
27
26
  position: "left" | "right";
28
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
27
+ rounded: boolean;
28
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
29
29
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
30
30
  declare const _default: typeof __VLS_export;
31
31
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/tabs/tabs.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(position!)]\">\n <u-tabs-horizontal\n v-if=\"isHorizontal\"\n v-model=\"model\"\n :items=\"items\"\n :position=\"horizontalPosition\"\n :size=\"size\"\n :closable=\"closable\"\n :block=\"block\"\n :rounded=\"rounded\"\n @click=\"onClick\"\n @close=\"onClose\"\n />\n <u-tabs-vertical\n v-else\n v-model=\"model\"\n :items=\"items\"\n :position=\"verticalPosition\"\n :size=\"size\"\n :closable=\"closable\"\n :rounded=\"rounded\"\n @click=\"onClick\"\n @close=\"onClose\"\n />\n\n <transition name=\"fade\" mode=\"out-in\">\n <KeepAlive v-if=\"keepAlive\">\n <component :key=\"model\" :is=\"renderSlots()\" />\n </KeepAlive>\n <component v-else :key=\"model\" :is=\"renderSlots()\" />\n </transition>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { computed, createVNode, useSlots } from 'vue'\n\nimport type { ComponentSize, TabItem, TabsEmits, TabsProps } from '../../types'\nimport { UScroll } from '../scroll'\nimport UTabsHorizontal from './tabs-horizontal.vue'\nimport UTabsVertical from './tabs-vertical.vue'\n\ndefineOptions({ name: 'Tabs' })\n\nconst props = withDefaults(defineProps<TabsProps>(), {\n position: 'top',\n closable: false,\n block: false,\n rounded: false,\n keepAlive: false\n})\n\nconst emit = defineEmits<TabsEmits>()\n\nconst slots = useSlots() as Record<string, ((props?: any) => any) | undefined>\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('tabs')\n\nconst model = defineModel<string>()\n\nconst isHorizontal = computed(() => props.position === 'top' || props.position === 'bottom')\n\n/** 避免模板中使用类型断言:收敛 position 到水平 / 垂直子组件所需的子集。 */\nconst horizontalPosition = computed<'top' | 'bottom'>(() =>\n props.position === 'bottom' ? 'bottom' : 'top'\n)\n\nconst verticalPosition = computed<'left' | 'right'>(() =>\n props.position === 'right' ? 'right' : 'left'\n)\n\nconst onClick = (item: TabItem, index: number) => emit('click', item, index)\nconst onClose = (item: TabItem, index: number) => emit('close', item, index)\n\nconst renderSlots = () => {\n const key = model.value\n if (!key) return null\n const nodes = slots[key]?.({ key })\n if (Array.isArray(nodes)) {\n return createVNode(UScroll, { class: cls.e('content') }, { default: () => nodes })\n }\n return nodes\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,QAAQ,UAAS;EAEvB,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EAAE,MAAM,WAA4B,CAAA;EAE/E,MAAM,MAAM,IAAI,OAAM;EAEtB,MAAM,QAAQ,SAAmB,SAAA,aAAC;EAElC,MAAM,eAAe,eAAe,MAAM,aAAa,SAAS,MAAM,aAAa,SAAQ;;EAG3F,MAAM,qBAAqB,eACzB,MAAM,aAAa,WAAW,WAAW,MAC3C;EAEA,MAAM,mBAAmB,eACvB,MAAM,aAAa,UAAU,UAAU,OACzC;EAEA,MAAM,WAAW,MAAe,UAAkB,KAAK,SAAS,MAAM,MAAK;EAC3E,MAAM,WAAW,MAAe,UAAkB,KAAK,SAAS,MAAM,MAAK;EAE3E,MAAM,oBAAoB;GACxB,MAAM,MAAM,MAAM;GAClB,IAAI,CAAC,KAAK,OAAO;GACjB,MAAM,QAAQ,MAAM,OAAO,EAAE,KAAK,CAAA;GAClC,IAAI,MAAM,QAAQ,MAAK,EACrB,OAAO,YAAY,aAAS,EAAE,OAAO,IAAI,EAAE,UAAS,EAAE,EAAG,EAAE,eAAe,OAAO,CAAA;GAEnF,OAAO;;;uBArFP,mBA+BM,OAAA,EA/BA,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,GAAG,MAAA,IAAA,CAAI,EAAE,QAAA,SAAQ,CAAA,CAAA,EAAA,EAAA,CAEzB,aAAA,SAAA,WAAA,EADR,YAWE,aAAA;;gBATS,MAAA;iEAAA,MAAK,QAAA;IACb,OAAO,QAAA;IACP,UAAU,mBAAA;IACV,MAAM,MAAA,KAAA;IACN,UAAU,QAAA;IACV,OAAO,QAAA;IACP,SAAS,QAAA;IACF;IACA;;;;;;;;;uBAEV,YAUE,aAAA;;gBARS,MAAA;iEAAA,MAAK,QAAA;IACb,OAAO,QAAA;IACP,UAAU,iBAAA;IACV,MAAM,MAAA,KAAA;IACN,UAAU,QAAA;IACV,SAAS,QAAA;IACF;IACA;;;;;;;;QAGV,YAKa,YAAA;IALD,MAAK;IAAO,MAAK;;2BAGf,CAFK,QAAA,aAAA,WAAA,EAAjB,YAEY,WAAA,EAAA,KAAA,GAAA,EAAA,EAAA,WAAA,EADV,YAA8C,wBAAjB,aAAW,CAAA,EAAA,EAA5B,KAAK,MAAA,OAAK,CAAA,EAAA,EAAA,KAAA,KAAA,WAAA,EAExB,YAAqD,wBAAjB,aAAW,CAAA,EAAA,EAA5B,KAAK,MAAA,OAAK,CAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/tabs/tabs.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(position!)]\">\n <u-tabs-horizontal\n v-if=\"isHorizontal\"\n v-model=\"model\"\n :items=\"items\"\n :position=\"horizontalPosition\"\n :size=\"size\"\n :closable=\"closable\"\n :block=\"block\"\n :rounded=\"rounded\"\n @click=\"onClick\"\n @close=\"onClose\"\n />\n <u-tabs-vertical\n v-else\n v-model=\"model\"\n :items=\"items\"\n :position=\"verticalPosition\"\n :size=\"size\"\n :closable=\"closable\"\n :rounded=\"rounded\"\n @click=\"onClick\"\n @close=\"onClose\"\n />\n\n <transition name=\"fade\" mode=\"out-in\">\n <KeepAlive v-if=\"keepAlive\">\n <component :key=\"model\" :is=\"renderSlots()\" />\n </KeepAlive>\n <component v-else :key=\"model\" :is=\"renderSlots()\" />\n </transition>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { computed, createVNode } from 'vue'\n\nimport type { ComponentSize, TabItem, TabsEmits, TabsProps } from '../../types'\nimport { UScroll } from '../scroll'\nimport UTabsHorizontal from './tabs-horizontal.vue'\nimport UTabsVertical from './tabs-vertical.vue'\n\ndefineOptions({ name: 'Tabs' })\n\nconst props = withDefaults(defineProps<TabsProps>(), {\n position: 'top',\n closable: false,\n block: false,\n rounded: false,\n keepAlive: false\n})\n\nconst emit = defineEmits<TabsEmits>()\n\nconst slots = defineSlots<Record<string, (props: any) => any>>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('tabs')\n\nconst model = defineModel<string>()\n\nconst isHorizontal = computed(() => props.position === 'top' || props.position === 'bottom')\n\n/** 避免模板中使用类型断言:收敛 position 到水平 / 垂直子组件所需的子集。 */\nconst horizontalPosition = computed<'top' | 'bottom'>(() =>\n props.position === 'bottom' ? 'bottom' : 'top'\n)\n\nconst verticalPosition = computed<'left' | 'right'>(() =>\n props.position === 'right' ? 'right' : 'left'\n)\n\nconst onClick = (item: TabItem, index: number) => emit('click', item, index)\nconst onClose = (item: TabItem, index: number) => emit('close', item, index)\n\nconst renderSlots = () => {\n const key = model.value\n if (!key) return null\n const nodes = slots[key]?.({ key })\n if (Array.isArray(nodes)) {\n return createVNode(UScroll, { class: cls.e('content') }, { default: () => nodes })\n }\n return nodes\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAA;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,MAAM;EAEtB,MAAM,QAAQ,SAAmB,SAAA,YAAC;EAElC,MAAM,eAAe,eAAe,MAAM,aAAa,SAAS,MAAM,aAAa,QAAQ;;EAG3F,MAAM,qBAAqB,eACzB,MAAM,aAAa,WAAW,WAAW,KAC3C;EAEA,MAAM,mBAAmB,eACvB,MAAM,aAAa,UAAU,UAAU,MACzC;EAEA,MAAM,WAAW,MAAe,UAAkB,KAAK,SAAS,MAAM,KAAK;EAC3E,MAAM,WAAW,MAAe,UAAkB,KAAK,SAAS,MAAM,KAAK;EAE3E,MAAM,oBAAoB;GACxB,MAAM,MAAM,MAAM;GAClB,IAAI,CAAC,KAAK,OAAO;GACjB,MAAM,QAAQ,MAAM,OAAO,EAAE,IAAI,CAAC;GAClC,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,YAAY,aAAS,EAAE,OAAO,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,MAAM,CAAC;GAEnF,OAAO;EACT;;uBAtFE,mBA+BM,OAAA,EA/BA,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,GAAG,MAAA,GAAA,EAAI,EAAE,QAAA,QAAQ,CAAA,CAAA,EAAA,GAAA,CAEzB,aAAA,SAAA,UAAA,GADR,YAWE,aAAA;;gBATS,MAAA;iEAAA,MAAK,QAAA;IACb,OAAO,QAAA;IACP,UAAU,mBAAA;IACV,MAAM,MAAA,IAAA;IACN,UAAU,QAAA;IACV,OAAO,QAAA;IACP,SAAS,QAAA;IACF;IACA;;;;;;;;;uBAEV,YAUE,aAAA;;gBARS,MAAA;iEAAA,MAAK,QAAA;IACb,OAAO,QAAA;IACP,UAAU,iBAAA;IACV,MAAM,MAAA,IAAA;IACN,UAAU,QAAA;IACV,SAAS,QAAA;IACF;IACA;;;;;;;;QAGV,YAKa,YAAA;IALD,MAAK;IAAO,MAAK;;2BAGf,CAFK,QAAA,aAAA,UAAA,GAAjB,YAEY,WAAA,EAAA,KAAA,EAAA,GAAA,EAAA,UAAA,GADV,YAA8C,wBAAjB,YAAW,CAAA,GAAA,EAA5B,KAAK,MAAA,MAAK,CAAA,EAAA,GAAA,IAAA,MAAA,UAAA,GAExB,YAAqD,wBAAjB,YAAW,CAAA,GAAA,EAA5B,KAAK,MAAA,MAAK,CAAA,EAAA,CAAA"}
@@ -1,30 +1,35 @@
1
1
  import { TabItem, TabsProps } from "../../types/tabs.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/tabs/tabs.vue.d.ts
5
3
  type __VLS_Props = TabsProps;
4
+ type __VLS_Slots = Record<string, (props: any) => any>;
6
5
  type __VLS_ModelProps = {
7
6
  modelValue?: string;
8
7
  };
9
8
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
- declare const __VLS_export: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
9
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
10
  "update:modelValue": (value: string | undefined) => any;
12
11
  } & {
13
12
  "update:modelValue": (value: string) => any;
14
13
  close: (item: TabItem, index: number) => any;
15
14
  click: (item: TabItem, index: number) => any;
16
- }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
15
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
16
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
18
17
  onClose?: ((item: TabItem, index: number) => any) | undefined;
19
18
  onClick?: ((item: TabItem, index: number) => any) | undefined;
20
19
  }>, {
21
20
  closable: boolean;
22
- rounded: boolean;
23
21
  position: "left" | "right" | "top" | "bottom";
24
22
  block: boolean;
23
+ rounded: boolean;
25
24
  keepAlive: boolean;
26
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
27
27
  declare const _default: typeof __VLS_export;
28
+ type __VLS_WithSlots<T, S> = T & {
29
+ new (): {
30
+ $slots: S;
31
+ };
32
+ };
28
33
  //#endregion
29
34
  export { _default };
30
35
  //# sourceMappingURL=tabs.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-tabs-bar.js","names":[],"sources":["../../../src/components/tabs/use-tabs-bar.ts"],"sourcesContent":["import { useResizeObserver } from '@veltra/compositions'\nimport {\n type ModelRef,\n type Ref,\n type ShallowRef,\n nextTick,\n onBeforeUnmount,\n onMounted,\n shallowRef,\n watch\n} from 'vue'\n\nimport type { TabItem } from '../../types'\n\ninterface UseTabsBarOptions {\n viewportRef: ShallowRef<HTMLElement | undefined>\n listRef: ShallowRef<HTMLElement | undefined>\n items: Ref<TabItem[]>\n model: ModelRef<string | undefined>\n}\n\n/**\n * 水平标签栏的溢出滚动逻辑:\n * - 计算 nav 按钮显隐与可用状态\n * - 提供按步滚动与活动标签自动滚入视野的方法\n * - 绑定 wheel / scroll / resize 事件\n */\nexport function useTabsBar(options: UseTabsBarOptions) {\n const { viewportRef, listRef, items, model } = options\n\n const showNav = shallowRef(false)\n const canPrev = shallowRef(false)\n const canNext = shallowRef(false)\n\n /** 依据 viewport 与内容尺寸推导滚动按钮可用状态 */\n const updateNavState = () => {\n const vp = viewportRef.value\n if (!vp) return\n const { scrollLeft, scrollWidth, clientWidth } = vp\n const overflowing = scrollWidth - clientWidth > 1\n showNav.value = overflowing\n canPrev.value = overflowing && scrollLeft > 0\n canNext.value = overflowing && scrollLeft + clientWidth < scrollWidth - 1\n }\n\n /** 箭头按钮:按视口宽度 80% 的步长平滑滚动 */\n const scrollByStep = (dir: 1 | -1) => {\n const vp = viewportRef.value\n if (!vp) return\n vp.scrollTo({ left: vp.scrollLeft + dir * vp.clientWidth * 0.8, behavior: 'smooth' })\n }\n\n /** 活动标签自动滚入视野 */\n const ensureActiveVisible = () => {\n const vp = viewportRef.value\n const list = listRef.value\n if (!vp || !list) return\n const activeKey = model.value\n if (!activeKey) return\n const activeIndex = items.value.findIndex((i) => i.key === activeKey)\n if (activeIndex < 0) return\n const el = list.children[activeIndex] as HTMLElement | undefined\n if (!el) return\n\n const vpRect = vp.getBoundingClientRect()\n const elRect = el.getBoundingClientRect()\n if (elRect.left < vpRect.left) {\n vp.scrollTo({ left: vp.scrollLeft + (elRect.left - vpRect.left) - 8, behavior: 'smooth' })\n } else if (elRect.right > vpRect.right) {\n vp.scrollTo({ left: vp.scrollLeft + (elRect.right - vpRect.right) + 8, behavior: 'smooth' })\n }\n }\n\n /** 鼠标滚轮(纵向)驱动水平滚动;触控板横滑(已有 deltaX)不拦截 */\n const handleWheel = (e: WheelEvent) => {\n if (!showNav.value) return\n const vp = viewportRef.value\n if (!vp) return\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) return\n if (e.deltaY === 0) return\n e.preventDefault()\n vp.scrollLeft += e.deltaY\n }\n\n useResizeObserver({ targets: [viewportRef, listRef], onResize: () => updateNavState() })\n\n watch(model, async () => {\n await nextTick()\n ensureActiveVisible()\n })\n\n watch(\n items,\n async () => {\n await nextTick()\n updateNavState()\n ensureActiveVisible()\n },\n { deep: false }\n )\n\n onMounted(() => {\n const vp = viewportRef.value\n if (!vp) return\n vp.addEventListener('wheel', handleWheel, { passive: false })\n vp.addEventListener('scroll', updateNavState, { passive: true })\n updateNavState()\n nextTick(ensureActiveVisible)\n })\n\n onBeforeUnmount(() => {\n const vp = viewportRef.value\n if (!vp) return\n vp.removeEventListener('wheel', handleWheel)\n vp.removeEventListener('scroll', updateNavState)\n })\n\n return { showNav, canPrev, canNext, updateNavState, scrollByStep, ensureActiveVisible }\n}\n"],"mappings":";;;;;;;;;AA2BA,SAAgB,WAAW,SAA4B;CACrD,MAAM,EAAE,aAAa,SAAS,OAAO,UAAU;CAE/C,MAAM,UAAU,WAAW,MAAM;CACjC,MAAM,UAAU,WAAW,MAAM;CACjC,MAAM,UAAU,WAAW,MAAM;;CAGjC,MAAM,uBAAuB;EAC3B,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,MAAM,EAAE,YAAY,aAAa,gBAAgB;EACjD,MAAM,cAAc,cAAc,cAAc;EAChD,QAAQ,QAAQ;EAChB,QAAQ,QAAQ,eAAe,aAAa;EAC5C,QAAQ,QAAQ,eAAe,aAAa,cAAc,cAAc;;;CAI1E,MAAM,gBAAgB,QAAgB;EACpC,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,GAAG,SAAS;GAAE,MAAM,GAAG,aAAa,MAAM,GAAG,cAAc;GAAK,UAAU;GAAU,CAAC;;;CAIvF,MAAM,4BAA4B;EAChC,MAAM,KAAK,YAAY;EACvB,MAAM,OAAO,QAAQ;EACrB,IAAI,CAAC,MAAM,CAAC,MAAM;EAClB,MAAM,YAAY,MAAM;EACxB,IAAI,CAAC,WAAW;EAChB,MAAM,cAAc,MAAM,MAAM,WAAW,MAAM,EAAE,QAAQ,UAAU;EACrE,IAAI,cAAc,GAAG;EACrB,MAAM,KAAK,KAAK,SAAS;EACzB,IAAI,CAAC,IAAI;EAET,MAAM,SAAS,GAAG,uBAAuB;EACzC,MAAM,SAAS,GAAG,uBAAuB;EACzC,IAAI,OAAO,OAAO,OAAO,MACvB,GAAG,SAAS;GAAE,MAAM,GAAG,cAAc,OAAO,OAAO,OAAO,QAAQ;GAAG,UAAU;GAAU,CAAC;OACrF,IAAI,OAAO,QAAQ,OAAO,OAC/B,GAAG,SAAS;GAAE,MAAM,GAAG,cAAc,OAAO,QAAQ,OAAO,SAAS;GAAG,UAAU;GAAU,CAAC;;;CAKhG,MAAM,eAAe,MAAkB;EACrC,IAAI,CAAC,QAAQ,OAAO;EACpB,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,IAAI,KAAK,IAAI,EAAE,OAAO,GAAG,KAAK,IAAI,EAAE,OAAO,EAAE;EAC7C,IAAI,EAAE,WAAW,GAAG;EACpB,EAAE,gBAAgB;EAClB,GAAG,cAAc,EAAE;;CAGrB,kBAAkB;EAAE,SAAS,CAAC,aAAa,QAAQ;EAAE,gBAAgB,gBAAgB;EAAE,CAAC;CAExF,MAAM,OAAO,YAAY;EACvB,MAAM,UAAU;EAChB,qBAAqB;GACrB;CAEF,MACE,OACA,YAAY;EACV,MAAM,UAAU;EAChB,gBAAgB;EAChB,qBAAqB;IAEvB,EAAE,MAAM,OAAO,CAChB;CAED,gBAAgB;EACd,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,GAAG,iBAAiB,SAAS,aAAa,EAAE,SAAS,OAAO,CAAC;EAC7D,GAAG,iBAAiB,UAAU,gBAAgB,EAAE,SAAS,MAAM,CAAC;EAChE,gBAAgB;EAChB,SAAS,oBAAoB;GAC7B;CAEF,sBAAsB;EACpB,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,GAAG,oBAAoB,SAAS,YAAY;EAC5C,GAAG,oBAAoB,UAAU,eAAe;GAChD;CAEF,OAAO;EAAE;EAAS;EAAS;EAAS;EAAgB;EAAc;EAAqB"}
1
+ {"version":3,"file":"use-tabs-bar.js","names":[],"sources":["../../../src/components/tabs/use-tabs-bar.ts"],"sourcesContent":["import { useResizeObserver } from '@veltra/compositions'\nimport {\n type ModelRef,\n type Ref,\n type ShallowRef,\n nextTick,\n onBeforeUnmount,\n onMounted,\n shallowRef,\n watch\n} from 'vue'\n\nimport type { TabItem } from '../../types'\n\ninterface UseTabsBarOptions {\n viewportRef: ShallowRef<HTMLElement | undefined>\n listRef: ShallowRef<HTMLElement | undefined>\n items: Ref<TabItem[]>\n model: ModelRef<string | undefined>\n}\n\n/**\n * 水平标签栏的溢出滚动逻辑:\n * - 计算 nav 按钮显隐与可用状态\n * - 提供按步滚动与活动标签自动滚入视野的方法\n * - 绑定 wheel / scroll / resize 事件\n */\nexport function useTabsBar(options: UseTabsBarOptions) {\n const { viewportRef, listRef, items, model } = options\n\n const showNav = shallowRef(false)\n const canPrev = shallowRef(false)\n const canNext = shallowRef(false)\n\n /** 依据 viewport 与内容尺寸推导滚动按钮可用状态 */\n const updateNavState = () => {\n const vp = viewportRef.value\n if (!vp) return\n const { scrollLeft, scrollWidth, clientWidth } = vp\n const overflowing = scrollWidth - clientWidth > 1\n showNav.value = overflowing\n canPrev.value = overflowing && scrollLeft > 0\n canNext.value = overflowing && scrollLeft + clientWidth < scrollWidth - 1\n }\n\n /** 箭头按钮:按视口宽度 80% 的步长平滑滚动 */\n const scrollByStep = (dir: 1 | -1) => {\n const vp = viewportRef.value\n if (!vp) return\n vp.scrollTo({ left: vp.scrollLeft + dir * vp.clientWidth * 0.8, behavior: 'smooth' })\n }\n\n /** 活动标签自动滚入视野 */\n const ensureActiveVisible = () => {\n const vp = viewportRef.value\n const list = listRef.value\n if (!vp || !list) return\n const activeKey = model.value\n if (!activeKey) return\n const activeIndex = items.value.findIndex((i) => i.key === activeKey)\n if (activeIndex < 0) return\n const el = list.children[activeIndex] as HTMLElement | undefined\n if (!el) return\n\n const vpRect = vp.getBoundingClientRect()\n const elRect = el.getBoundingClientRect()\n if (elRect.left < vpRect.left) {\n vp.scrollTo({ left: vp.scrollLeft + (elRect.left - vpRect.left) - 8, behavior: 'smooth' })\n } else if (elRect.right > vpRect.right) {\n vp.scrollTo({ left: vp.scrollLeft + (elRect.right - vpRect.right) + 8, behavior: 'smooth' })\n }\n }\n\n /** 鼠标滚轮(纵向)驱动水平滚动;触控板横滑(已有 deltaX)不拦截 */\n const handleWheel = (e: WheelEvent) => {\n if (!showNav.value) return\n const vp = viewportRef.value\n if (!vp) return\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) return\n if (e.deltaY === 0) return\n e.preventDefault()\n vp.scrollLeft += e.deltaY\n }\n\n useResizeObserver({ targets: [viewportRef, listRef], onResize: () => updateNavState() })\n\n watch(model, async () => {\n await nextTick()\n ensureActiveVisible()\n })\n\n watch(\n items,\n async () => {\n await nextTick()\n updateNavState()\n ensureActiveVisible()\n },\n { deep: false }\n )\n\n onMounted(() => {\n const vp = viewportRef.value\n if (!vp) return\n vp.addEventListener('wheel', handleWheel, { passive: false })\n vp.addEventListener('scroll', updateNavState, { passive: true })\n updateNavState()\n nextTick(ensureActiveVisible)\n })\n\n onBeforeUnmount(() => {\n const vp = viewportRef.value\n if (!vp) return\n vp.removeEventListener('wheel', handleWheel)\n vp.removeEventListener('scroll', updateNavState)\n })\n\n return { showNav, canPrev, canNext, updateNavState, scrollByStep, ensureActiveVisible }\n}\n"],"mappings":";;;;;;;;;AA2BA,SAAgB,WAAW,SAA4B;CACrD,MAAM,EAAE,aAAa,SAAS,OAAO,UAAU;CAE/C,MAAM,UAAU,WAAW,KAAK;CAChC,MAAM,UAAU,WAAW,KAAK;CAChC,MAAM,UAAU,WAAW,KAAK;;CAGhC,MAAM,uBAAuB;EAC3B,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,MAAM,EAAE,YAAY,aAAa,gBAAgB;EACjD,MAAM,cAAc,cAAc,cAAc;EAChD,QAAQ,QAAQ;EAChB,QAAQ,QAAQ,eAAe,aAAa;EAC5C,QAAQ,QAAQ,eAAe,aAAa,cAAc,cAAc;CAC1E;;CAGA,MAAM,gBAAgB,QAAgB;EACpC,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,GAAG,SAAS;GAAE,MAAM,GAAG,aAAa,MAAM,GAAG,cAAc;GAAK,UAAU;EAAS,CAAC;CACtF;;CAGA,MAAM,4BAA4B;EAChC,MAAM,KAAK,YAAY;EACvB,MAAM,OAAO,QAAQ;EACrB,IAAI,CAAC,MAAM,CAAC,MAAM;EAClB,MAAM,YAAY,MAAM;EACxB,IAAI,CAAC,WAAW;EAChB,MAAM,cAAc,MAAM,MAAM,WAAW,MAAM,EAAE,QAAQ,SAAS;EACpE,IAAI,cAAc,GAAG;EACrB,MAAM,KAAK,KAAK,SAAS;EACzB,IAAI,CAAC,IAAI;EAET,MAAM,SAAS,GAAG,sBAAsB;EACxC,MAAM,SAAS,GAAG,sBAAsB;EACxC,IAAI,OAAO,OAAO,OAAO,MACvB,GAAG,SAAS;GAAE,MAAM,GAAG,cAAc,OAAO,OAAO,OAAO,QAAQ;GAAG,UAAU;EAAS,CAAC;OACpF,IAAI,OAAO,QAAQ,OAAO,OAC/B,GAAG,SAAS;GAAE,MAAM,GAAG,cAAc,OAAO,QAAQ,OAAO,SAAS;GAAG,UAAU;EAAS,CAAC;CAE/F;;CAGA,MAAM,eAAe,MAAkB;EACrC,IAAI,CAAC,QAAQ,OAAO;EACpB,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,IAAI,KAAK,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,EAAE,MAAM,GAAG;EAC7C,IAAI,EAAE,WAAW,GAAG;EACpB,EAAE,eAAe;EACjB,GAAG,cAAc,EAAE;CACrB;CAEA,kBAAkB;EAAE,SAAS,CAAC,aAAa,OAAO;EAAG,gBAAgB,eAAe;CAAE,CAAC;CAEvF,MAAM,OAAO,YAAY;EACvB,MAAM,SAAS;EACf,oBAAoB;CACtB,CAAC;CAED,MACE,OACA,YAAY;EACV,MAAM,SAAS;EACf,eAAe;EACf,oBAAoB;CACtB,GACA,EAAE,MAAM,MAAM,CAChB;CAEA,gBAAgB;EACd,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,GAAG,iBAAiB,SAAS,aAAa,EAAE,SAAS,MAAM,CAAC;EAC5D,GAAG,iBAAiB,UAAU,gBAAgB,EAAE,SAAS,KAAK,CAAC;EAC/D,eAAe;EACf,SAAS,mBAAmB;CAC9B,CAAC;CAED,sBAAsB;EACpB,MAAM,KAAK,YAAY;EACvB,IAAI,CAAC,IAAI;EACT,GAAG,oBAAoB,SAAS,WAAW;EAC3C,GAAG,oBAAoB,UAAU,cAAc;CACjD,CAAC;CAED,OAAO;EAAE;EAAS;EAAS;EAAS;EAAgB;EAAc;CAAoB;AACxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","names":[],"sources":["../../../src/components/tag/tag.vue"],"sourcesContent":["<template>\n <span :class=\"className\">\n <span :class=\"cls.e('content')\">\n <slot />\n </span>\n\n <u-icon v-if=\"closable\" @click.stop=\"handleClose\" :class=\"cls.e('icon-close')\">\n <Close />\n </u-icon>\n </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { TagEmits, TagProps } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Tag' })\n\nconst cls = bem('tag')\n\nconst props = defineProps<TagProps>()\n\nconst emit = defineEmits<TagEmits>()\n\nconst { formProps } = injectFormContext()\nconst { size } = useFormFallbackProps([formProps ?? {}, props], { size: 'default' })\n\nconst handleClose = () => {\n emit('close')\n}\n\nconst className = computed(() => {\n const { type } = props\n return [\n cls.b,\n cls.m(size.value),\n type && cls.m('color-' + type),\n bem.is('round', props.round),\n bem.is('dark', props.dark)\n ]\n})\n\n// const classRound = computed(() => {\n// return [bem.is('round', props.round)]\n// })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAwBA,MAAM,MAAM,IAAI,MAAK;EAErB,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,EAAE,cAAc,mBAAkB;EACxC,MAAM,EAAE,SAAS,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG,EAAE,MAAM,WAAW,CAAA;EAEnF,MAAM,oBAAoB;GACxB,KAAK,QAAO;;EAGd,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,SAAS;GACjB,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,QAAQ,IAAI,EAAE,WAAW,KAAI;IAC7B,IAAI,GAAG,SAAS,MAAM,MAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,KAAI;IAC3B;IACD;;uBA7CC,mBAQO,QAAA,EARA,OAAK,eAAE,UAAA,MAAS,EAAA,EAAA,CACrB,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,UAAA,CAAA,EAAA,EAAA,CACjB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,EAGI,QAAA,YAAA,WAAA,EAAd,YAES,MAAA,YAAA,EAAA;;IAFgB,SAAK,cAAO,aAAW,CAAA,OAAA,CAAA;IAAG,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,aAAA,CAAA;;2BACpD,CAAT,YAAS,MAAA,MAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"tag.js","names":[],"sources":["../../../src/components/tag/tag.vue"],"sourcesContent":["<template>\n <span :class=\"className\">\n <span :class=\"cls.e('content')\">\n <slot />\n </span>\n\n <u-icon v-if=\"closable\" @click.stop=\"handleClose\" :class=\"cls.e('icon-close')\">\n <Close />\n </u-icon>\n </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { TagEmits, TagProps } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Tag' })\n\nconst cls = bem('tag')\n\nconst props = defineProps<TagProps>()\n\nconst emit = defineEmits<TagEmits>()\n\nconst { formProps } = injectFormContext()\nconst { size } = useFormFallbackProps([formProps ?? {}, props], { size: 'default' })\n\nconst handleClose = () => {\n emit('close')\n}\n\nconst className = computed(() => {\n const { type } = props\n return [\n cls.b,\n cls.m(size.value),\n type && cls.m('color-' + type),\n bem.is('round', props.round),\n bem.is('dark', props.dark)\n ]\n})\n\n// const classRound = computed(() => {\n// return [bem.is('round', props.round)]\n// })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAwBA,MAAM,MAAM,IAAI,KAAK;EAErB,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,EAAE,cAAc,kBAAkB;EACxC,MAAM,EAAE,SAAS,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;EAEnF,MAAM,oBAAoB;GACxB,KAAK,OAAO;EACd;EAEA,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,SAAS;GACjB,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,KAAK;IAChB,QAAQ,IAAI,EAAE,WAAW,IAAI;IAC7B,IAAI,GAAG,SAAS,MAAM,KAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,IAAI;GAC3B;EACF,CAAC;;uBA7CC,mBAQO,QAAA,EARA,OAAK,eAAE,UAAA,KAAS,EAAA,GAAA,CACrB,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,SAAA,CAAA,EAAA,GAAA,CACjB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,GAGI,QAAA,YAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;IAFgB,SAAK,cAAO,aAAW,CAAA,MAAA,CAAA;IAAG,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA;;2BACpD,CAAT,YAAS,MAAA,KAAA,CAAA,CAAA,CAAA"}
@@ -1,16 +1,14 @@
1
1
  import { TagProps } from "../../types/tag.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/tag/tag.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<TagProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {} & {
7
+ declare const __VLS_base: import("vue").DefineComponent<TagProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
8
  close: () => any;
11
- }, string, _$vue.PublicProps, Readonly<TagProps> & Readonly<{
9
+ }, string, import("vue").PublicProps, Readonly<TagProps> & Readonly<{
12
10
  onClose?: (() => any) | undefined;
13
- }>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
12
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
13
  declare const _default: typeof __VLS_export;
16
14
  type __VLS_WithSlots<T, S> = T & {
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","names":[],"sources":["../../../src/components/text/text.vue"],"sourcesContent":["<template>\n <p :class=\"classList\" :style=\"style\">\n <UNodeRender :content=\"getTextVNode()\" ref=\"aa\" />\n </p>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem, withUnit, isTextNode, getHighlightChunks } from '@veltra/utils'\nimport { type CSSProperties, type VNode, computed, useSlots, h, createTextVNode } from 'vue'\n\nimport type { TextProps } from '../../types'\nimport { UNodeRender } from '../node-render'\n\ndefineOptions({ name: 'Text' })\n\nconst props = withDefaults(defineProps<TextProps>(), { as: 'content' })\n\nconst cls = bem('text')\n\nconst classList = computed(() => {\n return [cls.b, bem.is(props.as), bem.is('bold', props.bold), bem.is('italic', props.italic)]\n})\n\nconst style = computed(() => {\n const style: CSSProperties = { fontSize: withUnit(props.fontSize, 'px') }\n const { deleted, underline } = props\n if (deleted) {\n style.textDecoration = 'line-through'\n }\n if (underline) {\n style.textDecoration = 'underline'\n }\n\n return style\n})\n\nconst slots = useSlots()\nconst getTextVNode = () => {\n const nodes = slots.default?.()\n if (!nodes?.length) return undefined\n\n // 只允许渲染文本\n const textNodes = nodes.filter((node) => isTextNode(node))\n\n const { highlight } = props\n\n if (!highlight) {\n return textNodes\n }\n\n return textNodes.reduce((nodes, textNode) => {\n const chunks = getHighlightChunks(\n textNode.children as string,\n Array.isArray(highlight) ? highlight : [highlight]\n )\n\n chunks.forEach((chunk) => {\n if (chunk.highlight) {\n nodes.push(h('mark', chunk.text))\n } else {\n nodes.push(createTextVNode(chunk.text))\n }\n })\n\n return nodes\n }, [] as VNode[])\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,OAAM;EAEtB,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,GAAG,MAAM,GAAE;IAAG,IAAI,GAAG,QAAQ,MAAM,KAAI;IAAG,IAAI,GAAG,UAAU,MAAM,OAAM;IAAC;IAC5F;EAED,MAAM,QAAQ,eAAe;GAC3B,MAAM,QAAuB,EAAE,UAAU,SAAS,MAAM,UAAU,KAAI,EAAE;GACxE,MAAM,EAAE,SAAS,cAAc;GAC/B,IAAI,SACF,MAAM,iBAAiB;GAEzB,IAAI,WACF,MAAM,iBAAiB;GAGzB,OAAO;IACR;EAED,MAAM,QAAQ,UAAS;EACvB,MAAM,qBAAqB;GACzB,MAAM,QAAQ,MAAM,WAAU;GAC9B,IAAI,CAAC,OAAO,QAAQ,OAAO,KAAA;GAG3B,MAAM,YAAY,MAAM,QAAQ,SAAS,WAAW,KAAK,CAAA;GAEzD,MAAM,EAAE,cAAc;GAEtB,IAAI,CAAC,WACH,OAAO;GAGT,OAAO,UAAU,QAAQ,OAAO,aAAa;IAM3C,mBAJE,SAAS,UACT,MAAM,QAAQ,UAAS,GAAI,YAAY,CAAC,UAC1C,CAEA,CAAO,SAAS,UAAU;KACxB,IAAI,MAAM,WACR,MAAM,KAAK,EAAE,QAAQ,MAAM,KAAK,CAAA;UAEhC,MAAM,KAAK,gBAAgB,MAAM,KAAK,CAAA;MAEzC;IAED,OAAO;MACN,EAAa,CAAA;;;uBAhEhB,mBAEI,KAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAG,OAAK,eAAE,MAAA,MAAK;OACjC,YAAkD,MAAA,WAAA,EAAA;IAApC,SAAS,cAAY;IAAI,KAAI"}
1
+ {"version":3,"file":"text.js","names":[],"sources":["../../../src/components/text/text.vue"],"sourcesContent":["<template>\n <p :class=\"classList\" :style=\"style\">\n <UNodeRender :content=\"getTextVNode()\" ref=\"aa\" />\n </p>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem, withUnit, isTextNode, getHighlightChunks } from '@veltra/utils'\nimport { type CSSProperties, type VNode, computed, useSlots, h, createTextVNode } from 'vue'\n\nimport type { TextProps } from '../../types'\nimport { UNodeRender } from '../node-render'\n\ndefineOptions({ name: 'Text' })\n\nconst props = withDefaults(defineProps<TextProps>(), { as: 'content' })\n\nconst cls = bem('text')\n\nconst classList = computed(() => {\n return [cls.b, bem.is(props.as), bem.is('bold', props.bold), bem.is('italic', props.italic)]\n})\n\nconst style = computed(() => {\n const style: CSSProperties = { fontSize: withUnit(props.fontSize, 'px') }\n const { deleted, underline } = props\n if (deleted) {\n style.textDecoration = 'line-through'\n }\n if (underline) {\n style.textDecoration = 'underline'\n }\n\n return style\n})\n\nconst slots = useSlots()\nconst getTextVNode = () => {\n const nodes = slots.default?.()\n if (!nodes?.length) return undefined\n\n // 只允许渲染文本\n const textNodes = nodes.filter((node) => isTextNode(node))\n\n const { highlight } = props\n\n if (!highlight) {\n return textNodes\n }\n\n return textNodes.reduce((nodes, textNode) => {\n const chunks = getHighlightChunks(\n textNode.children as string,\n Array.isArray(highlight) ? highlight : [highlight]\n )\n\n chunks.forEach((chunk) => {\n if (chunk.highlight) {\n nodes.push(h('mark', chunk.text))\n } else {\n nodes.push(createTextVNode(chunk.text))\n }\n })\n\n return nodes\n }, [] as VNode[])\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,MAAM;EAEtB,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,GAAG,MAAM,EAAE;IAAG,IAAI,GAAG,QAAQ,MAAM,IAAI;IAAG,IAAI,GAAG,UAAU,MAAM,MAAM;GAAC;EAC7F,CAAC;EAED,MAAM,QAAQ,eAAe;GAC3B,MAAM,QAAuB,EAAE,UAAU,SAAS,MAAM,UAAU,IAAI,EAAE;GACxE,MAAM,EAAE,SAAS,cAAc;GAC/B,IAAI,SACF,MAAM,iBAAiB;GAEzB,IAAI,WACF,MAAM,iBAAiB;GAGzB,OAAO;EACT,CAAC;EAED,MAAM,QAAQ,SAAS;EACvB,MAAM,qBAAqB;GACzB,MAAM,QAAQ,MAAM,UAAU;GAC9B,IAAI,CAAC,OAAO,QAAQ,OAAO,KAAA;GAG3B,MAAM,YAAY,MAAM,QAAQ,SAAS,WAAW,IAAI,CAAC;GAEzD,MAAM,EAAE,cAAc;GAEtB,IAAI,CAAC,WACH,OAAO;GAGT,OAAO,UAAU,QAAQ,OAAO,aAAa;IAM3C,mBAJE,SAAS,UACT,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS,CAGnD,EAAO,SAAS,UAAU;KACxB,IAAI,MAAM,WACR,MAAM,KAAK,EAAE,QAAQ,MAAM,IAAI,CAAC;UAEhC,MAAM,KAAK,gBAAgB,MAAM,IAAI,CAAC;IAE1C,CAAC;IAED,OAAO;GACT,GAAG,CAAC,CAAY;EAClB;;uBAjEE,mBAEI,KAAA;IAFA,OAAK,eAAE,UAAA,KAAS;IAAG,OAAK,eAAE,MAAA,KAAK;OACjC,YAAkD,MAAA,UAAA,GAAA;IAApC,SAAS,aAAY;IAAI,KAAI"}
@@ -1,10 +1,8 @@
1
1
  import { TextProps } from "../../types/text.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/text/text.vue.d.ts
5
- declare const __VLS_export: _$vue.DefineComponent<TextProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<TextProps> & Readonly<{}>, {
3
+ declare const __VLS_export: import("vue").DefineComponent<TextProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TextProps> & Readonly<{}>, {
6
4
  as: "main-title" | "title" | "sub-title" | "content" | "additional";
7
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
5
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
6
  declare const _default: typeof __VLS_export;
9
7
  //#endregion
10
8
  export { _default };
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","names":[],"sources":["../../../src/components/textarea/textarea.vue"],"sourcesContent":["<template>\n <div\n v-if=\"!readonly\"\n :class=\"textareaClass\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n >\n <textarea\n :class=\"cls.e('native')\"\n :placeholder=\"placeholder\"\n v-model=\"model\"\n :maxlength=\"maxlength\"\n :rows=\"rows\"\n :cols=\"cols\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n ref=\"textareaRef\"\n />\n <span v-if=\"props.maxlength && props.showCount\" :class=\"cls.m('count')\">\n {{ initNum }}/{{ props.maxlength }}\n </span>\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"props.clearable && model! && hovered && !disabled && !readonly\"\n :class=\"cls.m('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n </Transition>\n </div>\n\n <span v-else style=\"white-space: pre-wrap\">\n {{ model || FORM_EMPTY_CONTENT }}\n </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFocus, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, ref, shallowRef, watch } from 'vue'\n\nimport type { TextareaProps, TextareaEmits, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\nimport { calcTextareaHeight } from './utils'\n\ndefineOptions({ name: 'Textarea' })\n\nconst props = withDefaults(defineProps<TextareaProps>(), {\n placeholder: '请输入',\n resize: true,\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n autosize: false\n})\n\nconst cls = bem('textarea')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default' as ComponentSize,\n disabled: false,\n readonly: false\n})\n\nconst emit = defineEmits<TextareaEmits>()\n\nconst textareaRef = ref<HTMLTextAreaElement | null>(null)\n\nconst model = defineModel<string>()\n\nconst hovered = shallowRef(false)\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n focused ? emit('focus') : emit('blur')\n})\n\nconst textareaClass = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('resize-none', !props.resize),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('focus', focus.value),\n cls.m('more')\n ]\n})\n\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n if (value.length > props.maxlength!) {\n // 如果输入的字符数超过了最大长度,截取字符串到最大长度\n const truncatedValue = value.slice(0, props.maxlength)\n emit('update:modelValue', truncatedValue)\n } else {\n // 如果没有超过最大长度,则正常更新模型值\n emit('update:modelValue', value)\n }\n}\n\nconst initNum = computed(() => {\n if (!props.maxlength) return 0\n return props.maxlength - (model.value?.length ?? 0)\n})\n\nconst handleClear = () => {\n model.value = ''\n emit('clear')\n}\n\nconst handleChange = (e: Event) => {\n emit('change', (e.target as HTMLTextAreaElement).value)\n}\n\nwatch(\n [model, textareaRef],\n ([model, textareaRef]) => {\n if (!textareaRef) return\n if (!props.autosize) return\n calcTextareaHeight(textareaRef)\n },\n { immediate: true }\n)\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"textarea.js","names":[],"sources":["../../../src/components/textarea/textarea.vue"],"sourcesContent":["<template>\n <div\n v-if=\"!readonly\"\n :class=\"textareaClass\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n >\n <textarea\n :class=\"cls.e('native')\"\n :placeholder=\"placeholder\"\n v-model=\"model\"\n :maxlength=\"maxlength\"\n :rows=\"rows\"\n :cols=\"cols\"\n @input=\"handleInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @change=\"handleChange\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n ref=\"textareaRef\"\n />\n <span v-if=\"props.maxlength && props.showCount\" :class=\"cls.m('count')\">\n {{ initNum }}/{{ props.maxlength }}\n </span>\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"props.clearable && model! && hovered && !disabled && !readonly\"\n :class=\"cls.m('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n </Transition>\n </div>\n\n <span v-else style=\"white-space: pre-wrap\">\n {{ model || FORM_EMPTY_CONTENT }}\n </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFocus, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, ref, shallowRef, watch } from 'vue'\n\nimport type { TextareaProps, TextareaEmits, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\nimport { calcTextareaHeight } from './utils'\n\ndefineOptions({ name: 'Textarea' })\n\nconst props = withDefaults(defineProps<TextareaProps>(), {\n placeholder: '请输入',\n resize: true,\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n autosize: false\n})\n\nconst cls = bem('textarea')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default' as ComponentSize,\n disabled: false,\n readonly: false\n})\n\nconst emit = defineEmits<TextareaEmits>()\n\nconst textareaRef = ref<HTMLTextAreaElement | null>(null)\n\nconst model = defineModel<string>()\n\nconst hovered = shallowRef(false)\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n focused ? emit('focus') : emit('blur')\n})\n\nconst textareaClass = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('resize-none', !props.resize),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('focus', focus.value),\n cls.m('more')\n ]\n})\n\nconst handleInput = (e: Event) => {\n const value = (e.target as HTMLTextAreaElement).value\n if (value.length > props.maxlength!) {\n // 如果输入的字符数超过了最大长度,截取字符串到最大长度\n const truncatedValue = value.slice(0, props.maxlength)\n emit('update:modelValue', truncatedValue)\n } else {\n // 如果没有超过最大长度,则正常更新模型值\n emit('update:modelValue', value)\n }\n}\n\nconst initNum = computed(() => {\n if (!props.maxlength) return 0\n return props.maxlength - (model.value?.length ?? 0)\n})\n\nconst handleClear = () => {\n model.value = ''\n emit('clear')\n}\n\nconst handleChange = (e: Event) => {\n emit('change', (e.target as HTMLTextAreaElement).value)\n}\n\nwatch(\n [model, textareaRef],\n ([model, textareaRef]) => {\n if (!textareaRef) return\n if (!props.autosize) return\n calcTextareaHeight(textareaRef)\n },\n { immediate: true }\n)\n</script>\n"],"mappings":"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"}
@@ -1,13 +1,11 @@
1
1
  import { TextareaProps } from "../../types/textarea.js";
2
- import * as _$vue from "vue";
3
-
4
2
  //#region src/components/textarea/textarea.vue.d.ts
5
3
  type __VLS_Props = TextareaProps;
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
10
  } & {
13
11
  "update:modelValue": (value: string) => any;
@@ -15,7 +13,7 @@ declare const __VLS_export: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {},
15
13
  change: (value: string) => any;
16
14
  focus: () => any;
17
15
  blur: () => any;
18
- }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
19
17
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
20
18
  onClear?: (() => any) | undefined;
21
19
  onChange?: ((value: string) => any) | undefined;
@@ -28,7 +26,7 @@ declare const __VLS_export: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {},
28
26
  placeholder: string;
29
27
  clearable: boolean;
30
28
  autosize: boolean;
31
- }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
29
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
32
30
  declare const _default: typeof __VLS_export;
33
31
  //#endregion
34
32
  export { _default };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/textarea/utils.ts"],"sourcesContent":["import { setStyles } from '@veltra/utils'\nimport { nextTick } from 'vue'\n\nexport function calcTextareaHeight(el: HTMLTextAreaElement): void {\n setStyles(el, { height: 'auto' })\n nextTick(() => {\n const { scrollHeight } = el\n\n setStyles(el, { overflow: 'hidden', height: scrollHeight + 'px' })\n })\n}\n"],"mappings":";;;AAGA,SAAgB,mBAAmB,IAA+B;CAChE,UAAU,IAAI,EAAE,QAAQ,QAAQ,CAAC;CACjC,eAAe;EACb,MAAM,EAAE,iBAAiB;EAEzB,UAAU,IAAI;GAAE,UAAU;GAAU,QAAQ,eAAe;GAAM,CAAC;GAClE"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/textarea/utils.ts"],"sourcesContent":["import { setStyles } from '@veltra/utils'\nimport { nextTick } from 'vue'\n\nexport function calcTextareaHeight(el: HTMLTextAreaElement): void {\n setStyles(el, { height: 'auto' })\n nextTick(() => {\n const { scrollHeight } = el\n\n setStyles(el, { overflow: 'hidden', height: scrollHeight + 'px' })\n })\n}\n"],"mappings":";;;AAGA,SAAgB,mBAAmB,IAA+B;CAChE,UAAU,IAAI,EAAE,QAAQ,OAAO,CAAC;CAChC,eAAe;EACb,MAAM,EAAE,iBAAiB;EAEzB,UAAU,IAAI;GAAE,UAAU;GAAU,QAAQ,eAAe;EAAK,CAAC;CACnE,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":[],"sources":["../../../src/components/theme/schema.ts"],"sourcesContent":["export type ThemeFieldKind = 'palette' | 'input' | 'number' | 'select'\n\nexport interface ThemeFieldOption {\n label: string\n value: string\n}\n\nexport interface ThemeField {\n key: string\n label: string\n path: string[]\n kind: ThemeFieldKind\n hint?: string\n placeholder?: string\n min?: number\n max?: number\n step?: number\n suffix?: string\n options?: ThemeFieldOption[]\n}\n\nexport interface ThemeSection {\n key: string\n title: string\n description: string\n fields: ThemeField[]\n}\n\nconst borderStyleOptions: ThemeFieldOption[] = [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n { label: '双线', value: 'double' }\n]\n\nfunction paletteField(key: string, label: string, path: string[], hint?: string): ThemeField {\n return { key, label, path, kind: 'palette', hint }\n}\n\nfunction inputField(\n key: string,\n label: string,\n path: string[],\n placeholder?: string,\n hint?: string\n): ThemeField {\n return { key, label, path, kind: 'input', placeholder, hint }\n}\n\nfunction numberField(\n key: string,\n label: string,\n path: string[],\n options: Pick<ThemeField, 'min' | 'max' | 'step' | 'suffix' | 'hint'>\n): ThemeField {\n return {\n key,\n label,\n path,\n kind: 'number',\n min: options.min,\n max: options.max,\n step: options.step,\n suffix: options.suffix,\n hint: options.hint\n }\n}\n\nfunction pxField(\n key: string,\n label: string,\n path: string[],\n min: number,\n max: number,\n hint?: string\n): ThemeField {\n return numberField(key, label, path, { min, max, step: 1, suffix: 'px', hint })\n}\n\nfunction selectField(\n key: string,\n label: string,\n path: string[],\n options: ThemeFieldOption[],\n hint?: string\n): ThemeField {\n return { key, label, path, kind: 'select', options, hint }\n}\n\nexport const THEME_SECTIONS: ThemeSection[] = [\n {\n key: 'color',\n title: '综合色板',\n description: '品牌色与语义状态色,决定按钮、标签与反馈态的主视觉。',\n fields: [\n paletteField('color.primary', '主要颜色', ['color', 'primary']),\n paletteField('color.success', '成功颜色', ['color', 'success']),\n paletteField('color.warning', '警告颜色', ['color', 'warning']),\n paletteField('color.danger', '危险颜色', ['color', 'danger']),\n paletteField('color.info', '信息颜色', ['color', 'info']),\n paletteField('color.disabled', '禁用颜色', ['color', 'disabled']),\n paletteField('color.default', '默认颜色', ['color', 'default'])\n ]\n },\n {\n key: 'surface',\n title: '表面层次',\n description: '控制背景、文字、边框与阴影,决定整个界面的空气感与对比度。',\n fields: [\n paletteField('bg.color.top', '顶部背景', ['bg', 'color', 'top']),\n paletteField('bg.color.middle', '中部背景', ['bg', 'color', 'middle']),\n paletteField('bg.color.bottom', '底部背景', ['bg', 'color', 'bottom']),\n paletteField('bg.color.hover', '悬停背景', ['bg', 'color', 'hover']),\n paletteField('bg.color.black', '黑色背景', ['bg', 'color', 'black']),\n inputField('bg.filter.blur', '背景模糊', ['bg', 'filter', 'blur'], '例如:blur(16px)'),\n inputField(\n 'bg.filter.saturate',\n '背景饱和度',\n ['bg', 'filter', 'saturate'],\n '例如:saturate(180%)'\n ),\n paletteField('text-color.title', '标题文字', ['text-color', 'title']),\n paletteField('text-color.main', '主要文字', ['text-color', 'main']),\n paletteField('text-color.placeholder', '占位文字', ['text-color', 'placeholder']),\n paletteField('text-color.second', '次要文字', ['text-color', 'second']),\n paletteField('text-color.assist', '辅助文字', ['text-color', 'assist']),\n paletteField('text-color.disabled', '禁用文字', ['text-color', 'disabled']),\n paletteField('text-color.white', '白色文字', ['text-color', 'white']),\n paletteField('border.color', '边框颜色', ['border', 'color']),\n pxField('border.width', '边框宽度', ['border', 'width'], 0, 10),\n selectField('border.style', '边框样式', ['border', 'style'], borderStyleOptions),\n paletteField('shadow.color', '阴影颜色', ['shadow', 'color']),\n pxField('shadow.x', '水平偏移', ['shadow', 'x'], -24, 24),\n pxField('shadow.y', '垂直偏移', ['shadow', 'y'], -24, 24),\n pxField('shadow.blur', '模糊半径', ['shadow', 'blur'], 0, 64),\n pxField('shadow.spread', '扩散半径', ['shadow', 'spread'], -12, 24)\n ]\n },\n {\n key: 'control',\n title: '表单尺度',\n description: '统一基础控件的边角、尺寸和节奏,让组件家族看起来更一致。',\n fields: [\n pxField('radius.small', '小圆角', ['radius', 'small'], 0, 24),\n pxField('radius.default', '默认圆角', ['radius', 'default'], 0, 24),\n pxField('radius.large', '大圆角', ['radius', 'large'], 0, 32),\n pxField(\n 'form-component-height.small',\n '小表单高度',\n ['form-component-height', 'small'],\n 16,\n 40\n ),\n pxField(\n 'form-component-height.default',\n '默认表单高度',\n ['form-component-height', 'default'],\n 20,\n 52\n ),\n pxField(\n 'form-component-height.large',\n '大表单高度',\n ['form-component-height', 'large'],\n 24,\n 64\n ),\n pxField('gap.small', '小间距', ['gap', 'small'], 0, 20),\n pxField('gap.default', '默认间距', ['gap', 'default'], 0, 24),\n pxField('gap.large', '大间距', ['gap', 'large'], 0, 32)\n ]\n },\n {\n key: 'typography',\n title: '字体系统',\n description: '管理字体族与标题、正文、辅助文本的层级尺寸。',\n fields: [\n inputField(\n 'font-family',\n '字体族',\n ['font-family'],\n '例如:\"IBM Plex Sans\", \"PingFang SC\", sans-serif'\n ),\n pxField('font-size-title.small', '小标题字号', ['font-size-title', 'small'], 8, 28),\n pxField('font-size-title.default', '默认标题字号', ['font-size-title', 'default'], 8, 32),\n pxField('font-size-title.large', '大标题字号', ['font-size-title', 'large'], 10, 40),\n pxField('font-size-main.small', '小正文字号', ['font-size-main', 'small'], 8, 20),\n pxField('font-size-main.default', '默认正文字号', ['font-size-main', 'default'], 8, 24),\n pxField('font-size-main.large', '大正文字号', ['font-size-main', 'large'], 10, 28),\n pxField('font-size-assist.small', '小辅助字号', ['font-size-assist', 'small'], 8, 18),\n pxField('font-size-assist.default', '默认辅助字号', ['font-size-assist', 'default'], 8, 20),\n pxField('font-size-assist.large', '大辅助字号', ['font-size-assist', 'large'], 8, 24)\n ]\n },\n {\n key: 'responsive',\n title: '响应断点',\n description: '维护布局与响应式行为使用的断点变量。',\n fields: [\n pxField('breakpoint.xs', '超小屏幕', ['breakpoint', 'xs'], 320, 900),\n pxField('breakpoint.sm', '小屏幕', ['breakpoint', 'sm'], 480, 1200),\n pxField('breakpoint.md', '中屏幕', ['breakpoint', 'md'], 768, 1600),\n pxField('breakpoint.lg', '大屏幕', ['breakpoint', 'lg'], 1024, 2560)\n ]\n }\n]\n\nexport const THEME_FIELD_COUNT = THEME_SECTIONS.reduce((count, section) => {\n return count + section.fields.length\n}, 0)\n"],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../../src/components/theme/schema.ts"],"sourcesContent":["export type ThemeFieldKind = 'palette' | 'input' | 'number' | 'select'\n\nexport interface ThemeFieldOption {\n label: string\n value: string\n}\n\nexport interface ThemeField {\n key: string\n label: string\n path: string[]\n kind: ThemeFieldKind\n hint?: string\n placeholder?: string\n min?: number\n max?: number\n step?: number\n suffix?: string\n options?: ThemeFieldOption[]\n}\n\nexport interface ThemeSection {\n key: string\n title: string\n description: string\n fields: ThemeField[]\n}\n\nconst borderStyleOptions: ThemeFieldOption[] = [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n { label: '双线', value: 'double' }\n]\n\nfunction paletteField(key: string, label: string, path: string[], hint?: string): ThemeField {\n return { key, label, path, kind: 'palette', hint }\n}\n\nfunction inputField(\n key: string,\n label: string,\n path: string[],\n placeholder?: string,\n hint?: string\n): ThemeField {\n return { key, label, path, kind: 'input', placeholder, hint }\n}\n\nfunction numberField(\n key: string,\n label: string,\n path: string[],\n options: Pick<ThemeField, 'min' | 'max' | 'step' | 'suffix' | 'hint'>\n): ThemeField {\n return {\n key,\n label,\n path,\n kind: 'number',\n min: options.min,\n max: options.max,\n step: options.step,\n suffix: options.suffix,\n hint: options.hint\n }\n}\n\nfunction pxField(\n key: string,\n label: string,\n path: string[],\n min: number,\n max: number,\n hint?: string\n): ThemeField {\n return numberField(key, label, path, { min, max, step: 1, suffix: 'px', hint })\n}\n\nfunction selectField(\n key: string,\n label: string,\n path: string[],\n options: ThemeFieldOption[],\n hint?: string\n): ThemeField {\n return { key, label, path, kind: 'select', options, hint }\n}\n\nexport const THEME_SECTIONS: ThemeSection[] = [\n {\n key: 'color',\n title: '综合色板',\n description: '品牌色与语义状态色,决定按钮、标签与反馈态的主视觉。',\n fields: [\n paletteField('color.primary', '主要颜色', ['color', 'primary']),\n paletteField('color.success', '成功颜色', ['color', 'success']),\n paletteField('color.warning', '警告颜色', ['color', 'warning']),\n paletteField('color.danger', '危险颜色', ['color', 'danger']),\n paletteField('color.info', '信息颜色', ['color', 'info']),\n paletteField('color.disabled', '禁用颜色', ['color', 'disabled']),\n paletteField('color.default', '默认颜色', ['color', 'default'])\n ]\n },\n {\n key: 'surface',\n title: '表面层次',\n description: '控制背景、文字、边框与阴影,决定整个界面的空气感与对比度。',\n fields: [\n paletteField('bg.color.top', '顶部背景', ['bg', 'color', 'top']),\n paletteField('bg.color.middle', '中部背景', ['bg', 'color', 'middle']),\n paletteField('bg.color.bottom', '底部背景', ['bg', 'color', 'bottom']),\n paletteField('bg.color.hover', '悬停背景', ['bg', 'color', 'hover']),\n paletteField('bg.color.black', '黑色背景', ['bg', 'color', 'black']),\n inputField('bg.filter.blur', '背景模糊', ['bg', 'filter', 'blur'], '例如:blur(16px)'),\n inputField(\n 'bg.filter.saturate',\n '背景饱和度',\n ['bg', 'filter', 'saturate'],\n '例如:saturate(180%)'\n ),\n paletteField('text-color.title', '标题文字', ['text-color', 'title']),\n paletteField('text-color.main', '主要文字', ['text-color', 'main']),\n paletteField('text-color.placeholder', '占位文字', ['text-color', 'placeholder']),\n paletteField('text-color.second', '次要文字', ['text-color', 'second']),\n paletteField('text-color.assist', '辅助文字', ['text-color', 'assist']),\n paletteField('text-color.disabled', '禁用文字', ['text-color', 'disabled']),\n paletteField('text-color.white', '白色文字', ['text-color', 'white']),\n paletteField('border.color', '边框颜色', ['border', 'color']),\n pxField('border.width', '边框宽度', ['border', 'width'], 0, 10),\n selectField('border.style', '边框样式', ['border', 'style'], borderStyleOptions),\n paletteField('shadow.color', '阴影颜色', ['shadow', 'color']),\n pxField('shadow.x', '水平偏移', ['shadow', 'x'], -24, 24),\n pxField('shadow.y', '垂直偏移', ['shadow', 'y'], -24, 24),\n pxField('shadow.blur', '模糊半径', ['shadow', 'blur'], 0, 64),\n pxField('shadow.spread', '扩散半径', ['shadow', 'spread'], -12, 24)\n ]\n },\n {\n key: 'control',\n title: '表单尺度',\n description: '统一基础控件的边角、尺寸和节奏,让组件家族看起来更一致。',\n fields: [\n pxField('radius.small', '小圆角', ['radius', 'small'], 0, 24),\n pxField('radius.default', '默认圆角', ['radius', 'default'], 0, 24),\n pxField('radius.large', '大圆角', ['radius', 'large'], 0, 32),\n pxField(\n 'form-component-height.small',\n '小表单高度',\n ['form-component-height', 'small'],\n 16,\n 40\n ),\n pxField(\n 'form-component-height.default',\n '默认表单高度',\n ['form-component-height', 'default'],\n 20,\n 52\n ),\n pxField(\n 'form-component-height.large',\n '大表单高度',\n ['form-component-height', 'large'],\n 24,\n 64\n ),\n pxField('gap.small', '小间距', ['gap', 'small'], 0, 20),\n pxField('gap.default', '默认间距', ['gap', 'default'], 0, 24),\n pxField('gap.large', '大间距', ['gap', 'large'], 0, 32)\n ]\n },\n {\n key: 'typography',\n title: '字体系统',\n description: '管理字体族与标题、正文、辅助文本的层级尺寸。',\n fields: [\n inputField(\n 'font-family',\n '字体族',\n ['font-family'],\n '例如:\"IBM Plex Sans\", \"PingFang SC\", sans-serif'\n ),\n pxField('font-size-title.small', '小标题字号', ['font-size-title', 'small'], 8, 28),\n pxField('font-size-title.default', '默认标题字号', ['font-size-title', 'default'], 8, 32),\n pxField('font-size-title.large', '大标题字号', ['font-size-title', 'large'], 10, 40),\n pxField('font-size-main.small', '小正文字号', ['font-size-main', 'small'], 8, 20),\n pxField('font-size-main.default', '默认正文字号', ['font-size-main', 'default'], 8, 24),\n pxField('font-size-main.large', '大正文字号', ['font-size-main', 'large'], 10, 28),\n pxField('font-size-assist.small', '小辅助字号', ['font-size-assist', 'small'], 8, 18),\n pxField('font-size-assist.default', '默认辅助字号', ['font-size-assist', 'default'], 8, 20),\n pxField('font-size-assist.large', '大辅助字号', ['font-size-assist', 'large'], 8, 24)\n ]\n },\n {\n key: 'responsive',\n title: '响应断点',\n description: '维护布局与响应式行为使用的断点变量。',\n fields: [\n pxField('breakpoint.xs', '超小屏幕', ['breakpoint', 'xs'], 320, 900),\n pxField('breakpoint.sm', '小屏幕', ['breakpoint', 'sm'], 480, 1200),\n pxField('breakpoint.md', '中屏幕', ['breakpoint', 'md'], 768, 1600),\n pxField('breakpoint.lg', '大屏幕', ['breakpoint', 'lg'], 1024, 2560)\n ]\n }\n]\n\nexport const THEME_FIELD_COUNT = THEME_SECTIONS.reduce((count, section) => {\n return count + section.fields.length\n}, 0)\n"],"mappings":"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"}