@veltra/desktop 1.2.9 → 1.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/dist/components/action/action-group.js.map +1 -1
  2. package/dist/components/action/action-group.vue.d.ts +2 -2
  3. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js +1 -1
  4. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/action/action.js +2 -2
  6. package/dist/components/action/action.js.map +1 -1
  7. package/dist/components/action/action.vue.d.ts +1 -1
  8. package/dist/components/auto-complete/auto-complete.js +4 -4
  9. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  10. package/dist/components/auto-complete/auto-complete.vue.d.ts +2 -2
  11. package/dist/components/auto-complete/use-keyboard.js.map +1 -1
  12. package/dist/components/badge/badge.js +2 -2
  13. package/dist/components/badge/badge.js.map +1 -1
  14. package/dist/components/batch-edit/batch-edit-form.js +2 -2
  15. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  16. package/dist/components/batch-edit/batch-edit-list.js +2 -2
  17. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  18. package/dist/components/batch-edit/batch-edit.js +6 -3
  19. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  20. package/dist/components/batch-edit/use-edit-state.js +7 -3
  21. package/dist/components/batch-edit/use-edit-state.js.map +1 -1
  22. package/dist/components/batch-edit/use-features.js.map +1 -1
  23. package/dist/components/batch-edit/use-handlers.js.map +1 -1
  24. package/dist/components/breadcrumb/breadcrumb.js +2 -2
  25. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  26. package/dist/components/button/button-group.js +2 -2
  27. package/dist/components/button/button-group.js.map +1 -1
  28. package/dist/components/button/button.js +2 -2
  29. package/dist/components/button/button.js.map +1 -1
  30. package/dist/components/calendar/calendar.js +3 -3
  31. package/dist/components/calendar/calendar.js.map +1 -1
  32. package/dist/components/calendar/utils.js.map +1 -1
  33. package/dist/components/card/card-action.js +2 -2
  34. package/dist/components/card/card-action.js.map +1 -1
  35. package/dist/components/card/card-content.js +2 -2
  36. package/dist/components/card/card-content.js.map +1 -1
  37. package/dist/components/card/card-cover.js +2 -2
  38. package/dist/components/card/card-cover.js.map +1 -1
  39. package/dist/components/card/card-header.js +2 -2
  40. package/dist/components/card/card-header.js.map +1 -1
  41. package/dist/components/card/card.js +2 -2
  42. package/dist/components/card/card.js.map +1 -1
  43. package/dist/components/cascade/cascade-panel-item.js +1 -1
  44. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  45. package/dist/components/cascade/cascade.js +7 -3
  46. package/dist/components/cascade/cascade.js.map +1 -1
  47. package/dist/components/cascade/cascade.vue.d.ts +7 -4
  48. package/dist/components/cascade/use-check.js +3 -1
  49. package/dist/components/cascade/use-check.js.map +1 -1
  50. package/dist/components/cascade/use-data-map.js.map +1 -1
  51. package/dist/components/cascade/use-select.js +30 -14
  52. package/dist/components/cascade/use-select.js.map +1 -1
  53. package/dist/components/check-tag/check-tag.js +2 -2
  54. package/dist/components/check-tag/check-tag.js.map +1 -1
  55. package/dist/components/checkbox/checkbox-button.js +4 -4
  56. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  57. package/dist/components/checkbox/checkbox-button.vue.d.ts +2 -2
  58. package/dist/components/checkbox/checkbox.js +4 -4
  59. package/dist/components/checkbox/checkbox.js.map +1 -1
  60. package/dist/components/checkbox/checkbox.vue.d.ts +1 -1
  61. package/dist/components/checkbox-group/checkbox-group.js +4 -4
  62. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  63. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +2 -2
  64. package/dist/components/code-editor/basic-setup.js +44 -0
  65. package/dist/components/code-editor/basic-setup.js.map +1 -0
  66. package/dist/components/code-editor/code-editor.js +5 -5
  67. package/dist/components/code-editor/code-editor.js.map +1 -1
  68. package/dist/components/code-editor/code-editor.vue.d.ts +1 -1
  69. package/dist/components/collapse/collapse-item.js +2 -2
  70. package/dist/components/collapse/collapse-item.js.map +1 -1
  71. package/dist/components/collapse/collapse.js +2 -2
  72. package/dist/components/collapse/collapse.js.map +1 -1
  73. package/dist/components/condition-editor/components/condition-group.js +2 -2
  74. package/dist/components/condition-editor/components/condition-group.js.map +1 -1
  75. package/dist/components/condition-editor/components/condition-row.js +2 -2
  76. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  77. package/dist/components/condition-editor/condition-editor.js +2 -2
  78. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  79. package/dist/components/condition-editor/core/evaluator.js.map +1 -1
  80. package/dist/components/contextmenu/contextmenu-item.js +2 -2
  81. package/dist/components/contextmenu/contextmenu-item.js.map +1 -1
  82. package/dist/components/contextmenu/contextmenu-panel.js +2 -2
  83. package/dist/components/contextmenu/contextmenu-panel.js.map +1 -1
  84. package/dist/components/contextmenu/contextmenu-sub.js +2 -2
  85. package/dist/components/contextmenu/contextmenu-sub.js.map +1 -1
  86. package/dist/components/contextmenu/contextmenu.js +2 -2
  87. package/dist/components/contextmenu/contextmenu.js.map +1 -1
  88. package/dist/components/date-panel/date-panel.js +2 -2
  89. package/dist/components/date-panel/date-panel.js.map +1 -1
  90. package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
  91. package/dist/components/date-panel/headers/day.js +2 -2
  92. package/dist/components/date-panel/headers/day.js.map +1 -1
  93. package/dist/components/date-panel/headers/month.js +2 -2
  94. package/dist/components/date-panel/headers/month.js.map +1 -1
  95. package/dist/components/date-panel/headers/year.js +2 -2
  96. package/dist/components/date-panel/headers/year.js.map +1 -1
  97. package/dist/components/date-panel/panels/day.js +2 -2
  98. package/dist/components/date-panel/panels/day.js.map +1 -1
  99. package/dist/components/date-panel/panels/month.js +2 -2
  100. package/dist/components/date-panel/panels/month.js.map +1 -1
  101. package/dist/components/date-panel/panels/year.js +2 -2
  102. package/dist/components/date-panel/panels/year.js.map +1 -1
  103. package/dist/components/date-panel/use-panel-date.js.map +1 -1
  104. package/dist/components/date-picker/date-picker.js +2 -2
  105. package/dist/components/date-picker/date-picker.js.map +1 -1
  106. package/dist/components/date-picker/date-picker.vue.d.ts +2 -2
  107. package/dist/components/date-range-picker/date-range-picker.js +2 -2
  108. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  109. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +2 -2
  110. package/dist/components/dialog/dialog.js +4 -4
  111. package/dist/components/dialog/dialog.js.map +1 -1
  112. package/dist/components/drawer/drawer.js +4 -4
  113. package/dist/components/drawer/drawer.js.map +1 -1
  114. package/dist/components/dropdown/dropdown.js +2 -2
  115. package/dist/components/dropdown/dropdown.js.map +1 -1
  116. package/dist/components/dual-nav/dual-nav-app.js +2 -2
  117. package/dist/components/dual-nav/dual-nav-app.js.map +1 -1
  118. package/dist/components/dual-nav/dual-nav.js +2 -2
  119. package/dist/components/dual-nav/dual-nav.js.map +1 -1
  120. package/dist/components/empty/empty.js +2 -2
  121. package/dist/components/empty/empty.js.map +1 -1
  122. package/dist/components/empty/empty.vue.d.ts +1 -1
  123. package/dist/components/expression-editor/components/path-preview.js +2 -2
  124. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  125. package/dist/components/expression-editor/components/variable-picker.js +2 -2
  126. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  127. package/dist/components/expression-editor/core/editor.js.map +1 -1
  128. package/dist/components/expression-editor/core/model.js.map +1 -1
  129. package/dist/components/expression-editor/expression-editor.js +2 -2
  130. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  131. package/dist/components/file-picker/file-picker.js +2 -2
  132. package/dist/components/file-picker/file-picker.js.map +1 -1
  133. package/dist/components/file-picker/file-picker.vue.d.ts +1 -1
  134. package/dist/components/file-picker/helper.js.map +1 -1
  135. package/dist/components/file-viewer/file-viewer.js +4 -4
  136. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  137. package/dist/components/file-viewer/helper.js.map +1 -1
  138. package/dist/components/file-viewer/previewers/docx-previewer.js +2 -2
  139. package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
  140. package/dist/components/file-viewer/previewers/image-previewer.js +2 -2
  141. package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
  142. package/dist/components/file-viewer/previewers/pdf-previewer.js +2 -2
  143. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  144. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js +2 -2
  145. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  146. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js +2 -2
  147. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  148. package/dist/components/file-viewer/previewers/sheet-previewer.js +2 -2
  149. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  150. package/dist/components/file-viewer/previewers/text-previewer.js +2 -2
  151. package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
  152. package/dist/components/file-viewer/previewers/video-previewer.js +2 -2
  153. package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
  154. package/dist/components/file-viewer/sheet-parser.js.map +1 -1
  155. package/dist/components/float-button/float-button.js +2 -2
  156. package/dist/components/float-button/float-button.js.map +1 -1
  157. package/dist/components/form/form.js.map +1 -1
  158. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +1 -1
  159. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  160. package/dist/components/form/use-form-fields.js.map +1 -1
  161. package/dist/components/form/use-node-interceptor.js.map +1 -1
  162. package/dist/components/form-item/form-item.js.map +1 -1
  163. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +1 -1
  164. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  165. package/dist/components/form-item/validate.js.map +1 -1
  166. package/dist/components/gantt-chart/gantt-chart.js +2 -2
  167. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  168. package/dist/components/grid/breakpoint.js.map +1 -1
  169. package/dist/components/grid/grid-item.js +2 -2
  170. package/dist/components/grid/grid-item.js.map +1 -1
  171. package/dist/components/grid/grid.js +2 -2
  172. package/dist/components/grid/grid.js.map +1 -1
  173. package/dist/components/grid-input/grid-input.js +2 -2
  174. package/dist/components/grid-input/grid-input.js.map +1 -1
  175. package/dist/components/group-input/group-input.js +2 -2
  176. package/dist/components/group-input/group-input.js.map +1 -1
  177. package/dist/components/icon/icon.js +2 -2
  178. package/dist/components/icon/icon.js.map +1 -1
  179. package/dist/components/input/input.js.map +1 -1
  180. package/dist/components/input/input.vue.d.ts +4 -4
  181. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js +1 -1
  182. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  183. package/dist/components/kbd/kbd.js +2 -2
  184. package/dist/components/kbd/kbd.js.map +1 -1
  185. package/dist/components/layout/layout-resizer.js +2 -2
  186. package/dist/components/layout/layout-resizer.js.map +1 -1
  187. package/dist/components/layout/layout.js +2 -2
  188. package/dist/components/layout/layout.js.map +1 -1
  189. package/dist/components/list/list-item.js +2 -2
  190. package/dist/components/list/list-item.js.map +1 -1
  191. package/dist/components/list/list.js +2 -2
  192. package/dist/components/list/list.js.map +1 -1
  193. package/dist/components/loading/directive.js.map +1 -1
  194. package/dist/components/loading/loading.js +2 -2
  195. package/dist/components/loading/loading.js.map +1 -1
  196. package/dist/components/message/message-box.js +2 -2
  197. package/dist/components/message/message-box.js.map +1 -1
  198. package/dist/components/message/message.js +2 -2
  199. package/dist/components/message/message.js.map +1 -1
  200. package/dist/components/message/message2.js.map +1 -1
  201. package/dist/components/message-confirm/message-confirm.js +2 -2
  202. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  203. package/dist/components/multi-select/multi-select-option.js +2 -2
  204. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  205. package/dist/components/multi-select/multi-select.js +4 -4
  206. package/dist/components/multi-select/multi-select.js.map +1 -1
  207. package/dist/components/multi-select/multi-select.vue.d.ts +3 -3
  208. package/dist/components/multi-tree-select/multi-tree-select.js +4 -4
  209. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  210. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +5 -5
  211. package/dist/components/nav/nav-icon.js +2 -2
  212. package/dist/components/nav/nav-icon.js.map +1 -1
  213. package/dist/components/nav/nav-item-collapsed.js +2 -2
  214. package/dist/components/nav/nav-item-collapsed.js.map +1 -1
  215. package/dist/components/nav/nav-item.js +2 -2
  216. package/dist/components/nav/nav-item.js.map +1 -1
  217. package/dist/components/nav/nav-sub-collapsed.js +2 -2
  218. package/dist/components/nav/nav-sub-collapsed.js.map +1 -1
  219. package/dist/components/nav/nav-sub.js +2 -2
  220. package/dist/components/nav/nav-sub.js.map +1 -1
  221. package/dist/components/nav/nav.js +2 -2
  222. package/dist/components/nav/nav.js.map +1 -1
  223. package/dist/components/notification/index.js.map +1 -1
  224. package/dist/components/notification/notification.js +2 -2
  225. package/dist/components/notification/notification.js.map +1 -1
  226. package/dist/components/number/number.js +2 -2
  227. package/dist/components/number/number.js.map +1 -1
  228. package/dist/components/number-input/number-input.js +4 -4
  229. package/dist/components/number-input/number-input.js.map +1 -1
  230. package/dist/components/number-input/number-input.vue.d.ts +4 -4
  231. package/dist/components/number-range-input/number-range-input.js +4 -4
  232. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  233. package/dist/components/number-range-input/number-range-input.vue.d.ts +2 -2
  234. package/dist/components/paginator/paginator.js +4 -4
  235. package/dist/components/paginator/paginator.js.map +1 -1
  236. package/dist/components/palette/color-transform.js.map +1 -1
  237. package/dist/components/palette/palette-alpha.js +2 -2
  238. package/dist/components/palette/palette-alpha.js.map +1 -1
  239. package/dist/components/palette/palette-color-switch.js +1 -1
  240. package/dist/components/palette/palette-color-switch.js.map +1 -1
  241. package/dist/components/palette/palette-hue.js +2 -2
  242. package/dist/components/palette/palette-hue.js.map +1 -1
  243. package/dist/components/palette/palette-sv.js +2 -2
  244. package/dist/components/palette/palette-sv.js.map +1 -1
  245. package/dist/components/palette/palette.js +3 -3
  246. package/dist/components/palette/palette.js.map +1 -1
  247. package/dist/components/palette/palette.vue.d.ts +1 -1
  248. package/dist/components/palette/use-hsv.js.map +1 -1
  249. package/dist/components/password-input/password-input.js +3 -3
  250. package/dist/components/password-input/password-input.js.map +1 -1
  251. package/dist/components/password-input/password-input.vue.d.ts +2 -2
  252. package/dist/components/pop-confirm/pop-confirm.js +2 -2
  253. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  254. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +1 -1
  255. package/dist/components/progress/progress.js +2 -2
  256. package/dist/components/progress/progress.js.map +1 -1
  257. package/dist/components/progress-nodes/progress-nodes.js +2 -2
  258. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  259. package/dist/components/radio/radio.js +4 -4
  260. package/dist/components/radio/radio.js.map +1 -1
  261. package/dist/components/radio-group/radio-group.js +4 -4
  262. package/dist/components/radio-group/radio-group.js.map +1 -1
  263. package/dist/components/radio-group/radio-group.vue.d.ts +2 -2
  264. package/dist/components/rich-text-editor/rich-text-editor.js +2 -2
  265. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  266. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +2 -2
  267. package/dist/components/rich-text-editor/toolbar.js +1 -1
  268. package/dist/components/rich-text-editor/toolbar.js.map +1 -1
  269. package/dist/components/scroll/scroll-bar.js +2 -2
  270. package/dist/components/scroll/scroll-bar.js.map +1 -1
  271. package/dist/components/scroll/scroll.js +2 -2
  272. package/dist/components/scroll/scroll.js.map +1 -1
  273. package/dist/components/select/select.js +4 -4
  274. package/dist/components/select/select.js.map +1 -1
  275. package/dist/components/select/select.vue.d.ts +2 -2
  276. package/dist/components/select/use-keyboard.js.map +1 -1
  277. package/dist/components/select/use-options.js.map +1 -1
  278. package/dist/components/slider/slider-thumb.js +1 -1
  279. package/dist/components/slider/slider-thumb.js.map +1 -1
  280. package/dist/components/slider/slider.js +2 -2
  281. package/dist/components/slider/slider.js.map +1 -1
  282. package/dist/components/steps/steps.js +2 -2
  283. package/dist/components/steps/steps.js.map +1 -1
  284. package/dist/components/steps/steps.vue.d.ts +3 -3
  285. package/dist/components/switch/switch.js +4 -4
  286. package/dist/components/switch/switch.js.map +1 -1
  287. package/dist/components/switch/switch.vue.d.ts +1 -1
  288. package/dist/components/table/table-body.js +2 -2
  289. package/dist/components/table/table-body.js.map +1 -1
  290. package/dist/components/table/table-cell.js +2 -2
  291. package/dist/components/table/table-cell.js.map +1 -1
  292. package/dist/components/table/table-foot.js +2 -2
  293. package/dist/components/table/table-foot.js.map +1 -1
  294. package/dist/components/table/table-head.js.map +1 -1
  295. package/dist/components/table/table-row.js.map +1 -1
  296. package/dist/components/table/table.js +2 -2
  297. package/dist/components/table/table.js.map +1 -1
  298. package/dist/components/table/use-check.js.map +1 -1
  299. package/dist/components/table/use-col-resize.js.map +1 -1
  300. package/dist/components/table/use-columns.js.map +1 -1
  301. package/dist/components/table/use-rows.js.map +1 -1
  302. package/dist/components/table/use-table.js.map +1 -1
  303. package/dist/components/table-editor/table-editor.js +2 -2
  304. package/dist/components/table-editor/table-editor.js.map +1 -1
  305. package/dist/components/tabs/tabs-horizontal.js +4 -4
  306. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  307. package/dist/components/tabs/tabs-horizontal.vue.d.ts +2 -2
  308. package/dist/components/tabs/tabs-vertical.js +4 -4
  309. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  310. package/dist/components/tabs/tabs-vertical.vue.d.ts +2 -2
  311. package/dist/components/tabs/tabs.js +4 -4
  312. package/dist/components/tabs/tabs.js.map +1 -1
  313. package/dist/components/tabs/tabs.vue.d.ts +2 -2
  314. package/dist/components/tag/tag.js +2 -2
  315. package/dist/components/tag/tag.js.map +1 -1
  316. package/dist/components/text/text.js +2 -2
  317. package/dist/components/text/text.js.map +1 -1
  318. package/dist/components/textarea/textarea.js +4 -4
  319. package/dist/components/textarea/textarea.js.map +1 -1
  320. package/dist/components/textarea/textarea.vue.d.ts +4 -4
  321. package/dist/components/theme/theme.js +1 -1
  322. package/dist/components/theme/theme.js.map +1 -1
  323. package/dist/components/tip/tip.js +2 -2
  324. package/dist/components/tip/tip.js.map +1 -1
  325. package/dist/components/tip/tip.vue.d.ts +1 -1
  326. package/dist/components/tip/use-nest.js.map +1 -1
  327. package/dist/components/tree/tree-node.js +2 -2
  328. package/dist/components/tree/tree-node.js.map +1 -1
  329. package/dist/components/tree/tree-node2.js.map +1 -1
  330. package/dist/components/tree/tree.js +2 -2
  331. package/dist/components/tree/tree.js.map +1 -1
  332. package/dist/components/tree/use-check.js.map +1 -1
  333. package/dist/components/tree-select/tree-select.js +7 -6
  334. package/dist/components/tree-select/tree-select.js.map +1 -1
  335. package/dist/components/tree-select/tree-select.vue.d.ts +7 -6
  336. package/dist/components/watermark/watermark.js +2 -2
  337. package/dist/components/watermark/watermark.js.map +1 -1
  338. package/dist/types/cascade.d.ts +10 -6
  339. package/dist/types/tree-select.d.ts +2 -1
  340. package/package.json +24 -20
  341. package/src/components/action/action-group.vue +1 -1
  342. package/src/components/action/action.vue +1 -1
  343. package/src/components/auto-complete/auto-complete.vue +1 -1
  344. package/src/components/badge/badge.vue +1 -1
  345. package/src/components/batch-edit/batch-edit-form.vue +1 -2
  346. package/src/components/batch-edit/batch-edit-list.vue +1 -1
  347. package/src/components/batch-edit/batch-edit.vue +2 -2
  348. package/src/components/batch-edit/use-edit-state.ts +12 -6
  349. package/src/components/breadcrumb/breadcrumb.vue +1 -1
  350. package/src/components/button/button-group.vue +1 -1
  351. package/src/components/button/button.vue +1 -1
  352. package/src/components/calendar/calendar.vue +1 -1
  353. package/src/components/card/card-action.vue +1 -1
  354. package/src/components/card/card-content.vue +1 -1
  355. package/src/components/card/card-cover.vue +1 -1
  356. package/src/components/card/card-header.vue +1 -1
  357. package/src/components/card/card.vue +1 -1
  358. package/src/components/cascade/cascade.vue +3 -2
  359. package/src/components/cascade/use-check.ts +3 -1
  360. package/src/components/cascade/use-select.ts +43 -29
  361. package/src/components/check-tag/check-tag.vue +1 -1
  362. package/src/components/checkbox/checkbox-button.vue +1 -1
  363. package/src/components/checkbox/checkbox.vue +1 -1
  364. package/src/components/checkbox-group/checkbox-group.vue +1 -1
  365. package/src/components/code-editor/basic-setup.ts +63 -0
  366. package/src/components/code-editor/code-editor.vue +3 -3
  367. package/src/components/collapse/collapse-item.vue +1 -1
  368. package/src/components/collapse/collapse.vue +1 -1
  369. package/src/components/condition-editor/components/condition-group.vue +1 -1
  370. package/src/components/condition-editor/components/condition-row.vue +1 -1
  371. package/src/components/condition-editor/condition-editor.vue +1 -1
  372. package/src/components/contextmenu/contextmenu-item.vue +1 -1
  373. package/src/components/contextmenu/contextmenu-panel.vue +1 -1
  374. package/src/components/contextmenu/contextmenu-sub.vue +1 -1
  375. package/src/components/contextmenu/contextmenu.vue +1 -1
  376. package/src/components/date-panel/date-panel.vue +1 -1
  377. package/src/components/date-panel/headers/day.vue +1 -1
  378. package/src/components/date-panel/headers/month.vue +1 -1
  379. package/src/components/date-panel/headers/year.vue +1 -1
  380. package/src/components/date-panel/panels/day.vue +1 -1
  381. package/src/components/date-panel/panels/month.vue +1 -1
  382. package/src/components/date-panel/panels/year.vue +1 -1
  383. package/src/components/date-picker/date-picker.vue +1 -1
  384. package/src/components/date-range-picker/date-range-picker.vue +1 -1
  385. package/src/components/dialog/dialog.vue +1 -1
  386. package/src/components/drawer/drawer.vue +1 -1
  387. package/src/components/dropdown/dropdown.vue +1 -1
  388. package/src/components/dual-nav/dual-nav-app.vue +1 -1
  389. package/src/components/dual-nav/dual-nav.vue +1 -1
  390. package/src/components/empty/empty.vue +1 -1
  391. package/src/components/expression-editor/components/path-preview.vue +1 -1
  392. package/src/components/expression-editor/components/variable-picker.vue +1 -1
  393. package/src/components/expression-editor/expression-editor.vue +1 -1
  394. package/src/components/file-picker/file-picker.vue +1 -1
  395. package/src/components/file-viewer/file-viewer.vue +1 -1
  396. package/src/components/file-viewer/previewers/docx-previewer.vue +1 -1
  397. package/src/components/file-viewer/previewers/image-previewer.vue +1 -1
  398. package/src/components/file-viewer/previewers/pdf-previewer.vue +1 -1
  399. package/src/components/file-viewer/previewers/pdf-viewport-scroll.vue +1 -1
  400. package/src/components/file-viewer/previewers/pdf-zoom-bridge.vue +1 -1
  401. package/src/components/file-viewer/previewers/sheet-previewer.vue +1 -1
  402. package/src/components/file-viewer/previewers/text-previewer.vue +1 -1
  403. package/src/components/file-viewer/previewers/video-previewer.vue +1 -1
  404. package/src/components/float-button/float-button.vue +1 -1
  405. package/src/components/form/form.vue +1 -1
  406. package/src/components/form-item/form-item.vue +1 -1
  407. package/src/components/gantt-chart/gantt-chart.vue +1 -1
  408. package/src/components/grid/grid-item.vue +1 -1
  409. package/src/components/grid/grid.vue +1 -1
  410. package/src/components/grid-input/grid-input.vue +1 -1
  411. package/src/components/group-input/group-input.vue +1 -1
  412. package/src/components/icon/icon.vue +1 -1
  413. package/src/components/input/input.vue +1 -1
  414. package/src/components/kbd/kbd.vue +1 -1
  415. package/src/components/layout/layout-resizer.vue +1 -1
  416. package/src/components/layout/layout.vue +1 -1
  417. package/src/components/list/list-item.vue +1 -1
  418. package/src/components/list/list.vue +1 -1
  419. package/src/components/loading/loading.vue +1 -1
  420. package/src/components/message/message-box.vue +1 -1
  421. package/src/components/message/message.vue +1 -1
  422. package/src/components/message-confirm/message-confirm.vue +1 -1
  423. package/src/components/multi-select/multi-select-option.vue +1 -1
  424. package/src/components/multi-select/multi-select.vue +1 -1
  425. package/src/components/multi-tree-select/multi-tree-select.vue +1 -1
  426. package/src/components/nav/nav-icon.vue +1 -1
  427. package/src/components/nav/nav-item-collapsed.vue +1 -1
  428. package/src/components/nav/nav-item.vue +1 -1
  429. package/src/components/nav/nav-sub-collapsed.vue +1 -1
  430. package/src/components/nav/nav-sub.vue +1 -1
  431. package/src/components/nav/nav.vue +1 -1
  432. package/src/components/notification/notification.vue +1 -1
  433. package/src/components/number/number.vue +1 -1
  434. package/src/components/number-input/number-input.vue +1 -1
  435. package/src/components/number-range-input/number-range-input.vue +1 -1
  436. package/src/components/paginator/paginator.vue +1 -1
  437. package/src/components/palette/palette-alpha.vue +1 -1
  438. package/src/components/palette/palette-hue.vue +1 -1
  439. package/src/components/palette/palette-sv.vue +1 -1
  440. package/src/components/palette/palette.vue +1 -1
  441. package/src/components/password-input/password-input.vue +1 -1
  442. package/src/components/pop-confirm/pop-confirm.vue +1 -1
  443. package/src/components/progress/progress.vue +1 -1
  444. package/src/components/progress-nodes/progress-nodes.vue +1 -1
  445. package/src/components/radio/radio.vue +1 -1
  446. package/src/components/radio-group/radio-group.vue +1 -1
  447. package/src/components/scroll/scroll-bar.vue +1 -1
  448. package/src/components/scroll/scroll.vue +1 -1
  449. package/src/components/select/select.vue +1 -1
  450. package/src/components/slider/slider.vue +1 -1
  451. package/src/components/steps/steps.vue +1 -1
  452. package/src/components/switch/switch.vue +1 -1
  453. package/src/components/table/table-body.vue +1 -1
  454. package/src/components/table/table-cell.vue +1 -1
  455. package/src/components/table/table-foot.vue +1 -1
  456. package/src/components/table/table.vue +1 -1
  457. package/src/components/table-editor/table-editor.vue +1 -1
  458. package/src/components/tabs/tabs-horizontal.vue +1 -1
  459. package/src/components/tabs/tabs-vertical.vue +1 -1
  460. package/src/components/tabs/tabs.vue +1 -1
  461. package/src/components/tag/tag.vue +1 -1
  462. package/src/components/text/text.vue +1 -1
  463. package/src/components/textarea/textarea.vue +1 -1
  464. package/src/components/tip/tip.vue +1 -1
  465. package/src/components/tree/tree-node.vue +1 -1
  466. package/src/components/tree/tree.vue +1 -1
  467. package/src/components/tree-select/tree-select.vue +3 -3
  468. package/src/components/watermark/watermark.vue +1 -1
  469. package/src/types/cascade.ts +10 -6
  470. package/src/types/tree-select.ts +2 -1
@@ -15,8 +15,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, _Inpu
15
15
  "update:modelValue": (value: string | undefined) => any;
16
16
  } & {
17
17
  "update:modelValue": (value: string) => any;
18
- change: (value: string) => any;
19
18
  clear: () => any;
19
+ change: (value: string) => any;
20
20
  "suffix:click": (value?: string | undefined) => any;
21
21
  "prefix:click": (value?: string | undefined) => any;
22
22
  focus: (value?: string | undefined) => any;
@@ -24,18 +24,18 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, _Inpu
24
24
  "native:input": (ev: Event) => any;
25
25
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
26
26
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
27
- onChange?: ((value: string) => any) | undefined;
28
27
  onClear?: (() => any) | undefined;
28
+ onChange?: ((value: string) => any) | undefined;
29
29
  "onSuffix:click"?: ((value?: string | undefined) => any) | undefined;
30
30
  "onPrefix:click"?: ((value?: string | undefined) => any) | undefined;
31
31
  onFocus?: ((value?: string | undefined) => any) | undefined;
32
32
  onBlur?: ((value?: string | undefined) => any) | undefined;
33
33
  "onNative:input"?: ((ev: Event) => any) | undefined;
34
34
  }>, {
35
- readonly: boolean;
36
- disabled: boolean;
37
35
  placeholder: string;
38
36
  clearable: boolean;
37
+ disabled: boolean;
38
+ readonly: boolean;
39
39
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
40
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
41
41
  declare const _default: typeof __VLS_export;
@@ -11,7 +11,7 @@ const _hoisted_1 = [
11
11
  "readonly"
12
12
  ];
13
13
  var input_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
14
- name: "Input",
14
+ name: "UInput",
15
15
  __name: "input",
16
16
  props: /*@__PURE__*/ mergeModels({
17
17
  modelValue: {},
@@ -1 +1 @@
1
- {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n\n <span :class=\"suffixClass\" v-if=\"hasSuffix\">\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"showClear\"\n :class=\"cls.e('clear')\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n key=\"clear\"\n >\n <Close />\n </UIcon>\n\n <span v-else :class=\"cls.e('suffix-content')\" @click=\"handleSuffixClick\" key=\"suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </Transition>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" 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, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Input' })\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst showClear = computed(() => {\n return props.clearable && !disabled.value && !!model.value && hovered.value\n})\n\nconst hasSuffixContent = computed(() => {\n return !!inst?.slots.suffix || !!props.suffix\n})\n\nconst hasSuffix = computed(() => {\n return hasSuffixContent.value || showClear.value\n})\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({ el })\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n\n <span :class=\"suffixClass\" v-if=\"hasSuffix\">\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"showClear\"\n :class=\"cls.e('clear')\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n key=\"clear\"\n >\n <Close />\n </UIcon>\n\n <span v-else :class=\"cls.e('suffix-content')\" @click=\"handleSuffixClick\" key=\"suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </Transition>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" 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, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UInput' })\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst showClear = computed(() => {\n return props.clearable && !disabled.value && !!model.value && hovered.value\n})\n\nconst hasSuffixContent = computed(() => {\n return !!inst?.slots.suffix || !!props.suffix\n})\n\nconst hasSuffix = computed(() => {\n return hasSuffixContent.value || showClear.value\n})\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({ el })\n</script>\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref } from "vue";
2
2
  import { bem } from "@veltra/utils";
3
3
  //#region src/components/kbd/kbd.vue
4
- const _sfc_main = /* @__PURE__ */ defineComponent({
5
- name: "Kbd",
4
+ const _sfc_main = /*@__PURE__*/ defineComponent({
5
+ name: "UKbd",
6
6
  __name: "kbd",
7
7
  setup(__props) {
8
8
  const cls = bem("kbd");
@@ -1 +1 @@
1
- {"version":3,"file":"kbd.js","names":[],"sources":["../../../src/components/kbd/kbd.vue"],"sourcesContent":["<template>\n <kbd :class=\"cls.b\">\n <slot />\n </kbd>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'Kbd' })\n\nconst cls = bem('kbd')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,KAAK;;uBAVnB,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC,EAAA,GAAA,CAChB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"kbd.js","names":[],"sources":["../../../src/components/kbd/kbd.vue"],"sourcesContent":["<template>\n <kbd :class=\"cls.b\">\n <slot />\n </kbd>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'UKbd' })\n\nconst cls = bem('kbd')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,KAAK;;uBAVnB,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAAA,CAChB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -5,8 +5,8 @@ import { useDrag } from "@veltra/compositions";
5
5
  import { bem } from "@veltra/utils";
6
6
  import { Move } from "@veltra/icons/normal";
7
7
  //#region src/components/layout/layout-resizer.vue
8
- const _sfc_main = /* @__PURE__ */ defineComponent({
9
- name: "LayoutResizer",
8
+ const _sfc_main = /*@__PURE__*/ defineComponent({
9
+ name: "ULayoutResizer",
10
10
  __name: "layout-resizer",
11
11
  props: {
12
12
  horizontal: { type: Boolean },
@@ -1 +1 @@
1
- {"version":3,"file":"layout-resizer.js","names":[],"sources":["../../../src/components/layout/layout-resizer.vue"],"sourcesContent":["<template>\n <div\n :class=\"className\"\n :style=\"{ transform: `translate3d(${offsets.x}, ${offsets.y}, 0)` }\"\n ref=\"resizerRef\"\n >\n <u-icon :size=\"10\"> <Move /> </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag } from '@veltra/compositions'\nimport { Move } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowReactive, shallowRef } from 'vue'\n\nimport { UIcon } from '../icon'\nimport { LayoutDIKey } from './di'\n\ndefineOptions({ name: 'LayoutResizer' })\n\nconst props = defineProps<{\n /** 是否横向 */\n horizontal?: boolean\n /** 默认偏移量 */\n offset?: number\n}>()\n\nconst emit = defineEmits<{\n (e: 'resize', offset: number): void\n (e: 'resize-start'): void\n (e: 'resize-end'): void\n}>()\n\nconst { cls } = inject(LayoutDIKey)!\n\nconst className = computed(() => {\n return [cls.e('resizer'), bem.is('horizontal', props.horizontal)]\n})\n\nconst resizerRef = shallowRef<HTMLDivElement>()\n\nlet offset = props.offset ?? 0\nconst offsets = shallowReactive({\n x: props.horizontal ? '0' : offset + 'px',\n y: props.horizontal ? offset + 'px' : '0'\n})\nlet currentOffset = 0\nuseDrag({\n target: resizerRef,\n onDragStart() {\n currentOffset = offset\n emit('resize-start')\n },\n onDrag({ x, y }) {\n if (!props.horizontal) {\n offset = currentOffset + x\n offsets.x = offset + 'px'\n emit('resize', x)\n } else {\n offset = currentOffset + y\n offsets.y = offset + 'px'\n emit('resize', y)\n }\n },\n onDragEnd() {\n emit('resize-end')\n }\n})\n\ndefineExpose({\n update(_offset: number): void {\n offset = _offset\n if (!props.horizontal) {\n offsets.x = offset + 'px'\n } else {\n offsets.y = offset + 'px'\n }\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAMb,MAAM,EAAE,QAAQ,OAAO,WAAW;EAElC,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,cAAc,MAAM,UAAU,CAAC;EAClE,CAAC;EAED,MAAM,aAAa,WAA2B;EAE9C,IAAI,SAAS,MAAM,UAAU;EAC7B,MAAM,UAAU,gBAAgB;GAC9B,GAAG,MAAM,aAAa,MAAM,SAAS;GACrC,GAAG,MAAM,aAAa,SAAS,OAAO;EACxC,CAAC;EACD,IAAI,gBAAgB;EACpB,QAAQ;GACN,QAAQ;GACR,cAAc;IACZ,gBAAgB;IAChB,KAAK,cAAc;GACrB;GACA,OAAO,EAAE,GAAG,KAAK;IACf,IAAI,CAAC,MAAM,YAAY;KACrB,SAAS,gBAAgB;KACzB,QAAQ,IAAI,SAAS;KACrB,KAAK,UAAU,CAAC;IAClB,OAAO;KACL,SAAS,gBAAgB;KACzB,QAAQ,IAAI,SAAS;KACrB,KAAK,UAAU,CAAC;IAClB;GACF;GACA,YAAY;IACV,KAAK,YAAY;GACnB;EACF,CAAC;EAED,SAAa,EACX,OAAO,SAAuB;GAC5B,SAAS;GACT,IAAI,CAAC,MAAM,YACT,QAAQ,IAAI,SAAS;QAErB,QAAQ,IAAI,SAAS;EAEzB,EACF,CAAC;;uBA9EC,mBAMM,OAAA;IALH,OAAK,eAAE,UAAA,KAAS;IAChB,OAAK,eAAA,EAAA,WAAA,eAA8B,MAAA,OAAA,EAAQ,EAAC,IAAK,MAAA,OAAA,EAAQ,EAAC,MAAA,CAAA;aACvD;IAAJ,KAAI;OAEJ,YAAsC,MAAA,WAAA,GAAA,EAA7B,MAAM,GAAE,GAAA;2BAAW,CAAR,YAAQ,MAAA,IAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"layout-resizer.js","names":[],"sources":["../../../src/components/layout/layout-resizer.vue"],"sourcesContent":["<template>\n <div\n :class=\"className\"\n :style=\"{ transform: `translate3d(${offsets.x}, ${offsets.y}, 0)` }\"\n ref=\"resizerRef\"\n >\n <u-icon :size=\"10\"> <Move /> </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag } from '@veltra/compositions'\nimport { Move } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowReactive, shallowRef } from 'vue'\n\nimport { UIcon } from '../icon'\nimport { LayoutDIKey } from './di'\n\ndefineOptions({ name: 'ULayoutResizer' })\n\nconst props = defineProps<{\n /** 是否横向 */\n horizontal?: boolean\n /** 默认偏移量 */\n offset?: number\n}>()\n\nconst emit = defineEmits<{\n (e: 'resize', offset: number): void\n (e: 'resize-start'): void\n (e: 'resize-end'): void\n}>()\n\nconst { cls } = inject(LayoutDIKey)!\n\nconst className = computed(() => {\n return [cls.e('resizer'), bem.is('horizontal', props.horizontal)]\n})\n\nconst resizerRef = shallowRef<HTMLDivElement>()\n\nlet offset = props.offset ?? 0\nconst offsets = shallowReactive({\n x: props.horizontal ? '0' : offset + 'px',\n y: props.horizontal ? offset + 'px' : '0'\n})\nlet currentOffset = 0\nuseDrag({\n target: resizerRef,\n onDragStart() {\n currentOffset = offset\n emit('resize-start')\n },\n onDrag({ x, y }) {\n if (!props.horizontal) {\n offset = currentOffset + x\n offsets.x = offset + 'px'\n emit('resize', x)\n } else {\n offset = currentOffset + y\n offsets.y = offset + 'px'\n emit('resize', y)\n }\n },\n onDragEnd() {\n emit('resize-end')\n }\n})\n\ndefineExpose({\n update(_offset: number): void {\n offset = _offset\n if (!props.horizontal) {\n offsets.x = offset + 'px'\n } else {\n offsets.y = offset + 'px'\n }\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAMb,MAAM,EAAE,QAAQ,OAAO,WAAW;EAElC,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,cAAc,MAAM,UAAU,CAAC;EAClE,CAAC;EAED,MAAM,aAAa,WAA2B;EAE9C,IAAI,SAAS,MAAM,UAAU;EAC7B,MAAM,UAAU,gBAAgB;GAC9B,GAAG,MAAM,aAAa,MAAM,SAAS;GACrC,GAAG,MAAM,aAAa,SAAS,OAAO;EACxC,CAAC;EACD,IAAI,gBAAgB;EACpB,QAAQ;GACN,QAAQ;GACR,cAAc;IACZ,gBAAgB;IAChB,KAAK,cAAc;GACrB;GACA,OAAO,EAAE,GAAG,KAAK;IACf,IAAI,CAAC,MAAM,YAAY;KACrB,SAAS,gBAAgB;KACzB,QAAQ,IAAI,SAAS;KACrB,KAAK,UAAU,CAAC;IAClB,OAAO;KACL,SAAS,gBAAgB;KACzB,QAAQ,IAAI,SAAS;KACrB,KAAK,UAAU,CAAC;IAClB;GACF;GACA,YAAY;IACV,KAAK,YAAY;GACnB;EACF,CAAC;EAED,SAAa,EACX,OAAO,SAAuB;GAC5B,SAAS;GACT,IAAI,CAAC,MAAM,YACT,QAAQ,IAAI,SAAS;QAErB,QAAQ,IAAI,SAAS;EAEzB,EACF,CAAC;;uBA9EC,mBAMM,OAAA;IALH,OAAK,eAAE,UAAA,KAAS;IAChB,OAAK,eAAA,EAAA,WAAA,eAA8B,MAAA,OAAA,CAAO,CAAC,EAAC,IAAK,MAAA,OAAA,CAAO,CAAC,EAAC,MAAA,CAAA;aACvD;IAAJ,KAAI;OAEJ,YAAsC,MAAA,WAAA,GAAA,EAA7B,MAAM,GAAE,GAAA;2BAAW,CAAR,YAAQ,MAAA,IAAA,CAAA,CAAA,CAAA"}
@@ -4,8 +4,8 @@ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock
4
4
  import { useResizeObserver } from "@veltra/compositions";
5
5
  import { bem, withUnit } from "@veltra/utils";
6
6
  //#region src/components/layout/layout.vue
7
- const _sfc_main = /* @__PURE__ */ defineComponent({
8
- name: "Layout",
7
+ const _sfc_main = /*@__PURE__*/ defineComponent({
8
+ name: "ULayout",
9
9
  __name: "layout",
10
10
  props: {
11
11
  tag: { default: "div" },
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","names":[],"sources":["../../../src/components/layout/layout.vue"],"sourcesContent":["<template>\n <component :is=\"tag\" :class=\"cls.b\" :style=\"style\" ref=\"containerRef\">\n <slot />\n\n <!-- 竖向调节 -->\n <ULayoutResizer\n v-for=\"(offset, index) of resizerOffsets\"\n :offset=\"offset\"\n :key=\"index\"\n ref=\"resizerRefs\"\n direction=\"vertical\"\n @resize=\"handleResize($event, index)\"\n @resize-start=\"handleStartResize(index)\"\n >\n </ULayoutResizer>\n\n <!-- 横向调节 -->\n <!-- <ULayoutResizer\n v-for=\"item in horizontalResizerList\"\n :key=\"item\"\n direction=\"horizontal\"\n /> -->\n </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useResizeObserver } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport {\n computed,\n shallowRef,\n type CSSProperties,\n provide,\n watchEffect,\n ref,\n watch,\n nextTick\n} from 'vue'\n\nimport type { LayoutProps } from '../../types'\nimport { LayoutDIKey } from './di'\nimport ULayoutResizer from './layout-resizer.vue'\n\ndefineOptions({ name: 'Layout' })\n\nconst props = withDefaults(defineProps<LayoutProps>(), { tag: 'div' })\n\nconst cls = bem('layout')\n\nconst templateCols = ref<string[]>([])\n\nwatchEffect(() => {\n const { cols } = props\n if (!cols) {\n templateCols.value = []\n return\n }\n templateCols.value = typeof cols === 'string' ? cols.split(' ') : [...cols]\n})\n\nconst style = computed<CSSProperties>(() => {\n const { rows, gap, resizable } = props\n return {\n gridTemplateColumns: templateCols.value.join(' '),\n gridTemplateRows: rows ? (typeof rows === 'string' ? rows : rows.join(' ')) : '',\n columnGap: resizable ? '10px' : withUnit(gap, 'px')\n }\n})\n\nconst containerRef = shallowRef<HTMLElement>()\nconst resizerRefs = shallowRef<InstanceType<typeof ULayoutResizer>[]>([])\n\nconst resizerOffsets = ref<number[]>([])\n\nfunction getResizeOffsets() {\n const container = containerRef.value\n if (!props.resizable || !container || !props.cols) {\n return (resizerOffsets.value = [])\n }\n\n resizerOffsets.value = templateCols.value.slice(0, -1).map((_, index) => {\n const dom = container.children[index] as HTMLElement\n if (!dom) return 0\n return dom.offsetLeft + dom.offsetWidth\n })\n}\n\nwatch([() => props.resizable, containerRef, () => props.cols], () => {\n nextTick(() => {\n getResizeOffsets()\n })\n})\n\nuseResizeObserver({\n targets: containerRef,\n onResize() {\n getResizeOffsets()\n resizerRefs.value.forEach((r, i) => {\n r.update(resizerOffsets.value![i]!)\n })\n }\n})\n\n// const horizontalResizerList = []\n\n// const resizing = shallowRef(false)\n\nlet prevSize = 0\nlet nextSize = 0\nconst handleStartResize = (index: number) => {\n const container = containerRef.value\n if (!container) return\n\n // 拖拽前把相邻两列按实际渲染宽度固定成 px,\n // 这样拖拽时两列等量增减、容器整体宽度保持不变。\n const prevDom = container.children[index] as HTMLElement | undefined\n const nextDom = container.children[index + 1] as HTMLElement | undefined\n prevSize = prevDom ? prevDom.getBoundingClientRect().width : 0\n nextSize = nextDom ? nextDom.getBoundingClientRect().width : 0\n}\nconst handleResize = (offset: number, index: number) => {\n // 钳位到 [-prevSize, nextSize],避免轨道尺寸出现负值——\n // 一旦 grid-template-columns 中带负值,整条声明会被浏览器丢弃。\n const clamped = Math.max(-prevSize, Math.min(nextSize, offset))\n templateCols.value[index] = `${prevSize + clamped}px`\n templateCols.value[index + 1] = `${nextSize - clamped}px`\n}\n\nprovide(LayoutDIKey, { cls })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,QAAQ;EAExB,MAAM,eAAe,IAAc,CAAC,CAAC;EAErC,kBAAkB;GAChB,MAAM,EAAE,SAAS;GACjB,IAAI,CAAC,MAAM;IACT,aAAa,QAAQ,CAAC;IACtB;GACF;GACA,aAAa,QAAQ,OAAO,SAAS,WAAW,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI;EAC5E,CAAC;EAED,MAAM,QAAQ,eAA8B;GAC1C,MAAM,EAAE,MAAM,KAAK,cAAc;GACjC,OAAO;IACL,qBAAqB,aAAa,MAAM,KAAK,GAAG;IAChD,kBAAkB,OAAQ,OAAO,SAAS,WAAW,OAAO,KAAK,KAAK,GAAG,IAAK;IAC9E,WAAW,YAAY,SAAS,SAAS,KAAK,IAAI;GACpD;EACF,CAAC;EAED,MAAM,eAAe,WAAwB;EAC7C,MAAM,cAAc,WAAkD,CAAC,CAAC;EAExE,MAAM,iBAAiB,IAAc,CAAC,CAAC;EAEvC,SAAS,mBAAmB;GAC1B,MAAM,YAAY,aAAa;GAC/B,IAAI,CAAC,MAAM,aAAa,CAAC,aAAa,CAAC,MAAM,MAC3C,OAAQ,eAAe,QAAQ,CAAC;GAGlC,eAAe,QAAQ,aAAa,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,UAAU;IACvE,MAAM,MAAM,UAAU,SAAS;IAC/B,IAAI,CAAC,KAAK,OAAO;IACjB,OAAO,IAAI,aAAa,IAAI;GAC9B,CAAC;EACH;EAEA,MAAM;SAAO,MAAM;GAAW;SAAoB,MAAM;EAAI,SAAS;GACnE,eAAe;IACb,iBAAiB;GACnB,CAAC;EACH,CAAC;EAED,kBAAkB;GAChB,SAAS;GACT,WAAW;IACT,iBAAiB;IACjB,YAAY,MAAM,SAAS,GAAG,MAAM;KAClC,EAAE,OAAO,eAAe,MAAO,EAAG;IACpC,CAAC;GACH;EACF,CAAC;EAMD,IAAI,WAAW;EACf,IAAI,WAAW;EACf,MAAM,qBAAqB,UAAkB;GAC3C,MAAM,YAAY,aAAa;GAC/B,IAAI,CAAC,WAAW;GAIhB,MAAM,UAAU,UAAU,SAAS;GACnC,MAAM,UAAU,UAAU,SAAS,QAAQ;GAC3C,WAAW,UAAU,QAAQ,sBAAsB,EAAE,QAAQ;GAC7D,WAAW,UAAU,QAAQ,sBAAsB,EAAE,QAAQ;EAC/D;EACA,MAAM,gBAAgB,QAAgB,UAAkB;GAGtD,MAAM,UAAU,KAAK,IAAI,CAAC,UAAU,KAAK,IAAI,UAAU,MAAM,CAAC;GAC9D,aAAa,MAAM,SAAS,GAAG,WAAW,QAAQ;GAClD,aAAa,MAAM,QAAQ,KAAK,GAAG,WAAW,QAAQ;EACxD;EAEA,QAAQ,aAAa,EAAE,IAAI,CAAC;;uBA/H1B,YAqBY,wBArBI,QAAA,GAAG,GAAA;IAAG,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC;IAAG,OAAK,eAAE,MAAA,KAAK;aAAM;IAAJ,KAAI;;2BAC7C;KAAR,WAAQ,KAAA,QAAA,SAAA;KAER,mBAAA,QAAA;uBACA,mBASiB,UAAA,MAAA,WARW,eAAA,QAAlB,QAAQ,UAAK;0BADvB,YASiB,aAAA;OAPN;OACR,KAAK;;gBACF;OAAJ,KAAI;OACJ,WAAU;OACT,WAAM,WAAE,aAAa,QAAQ,KAAK;OAClC,gBAAY,WAAE,kBAAkB,KAAK;;;;;;;KAIxC,mBAAA,QAAA;KACA,mBAAA,+HAAA"}
1
+ {"version":3,"file":"layout.js","names":[],"sources":["../../../src/components/layout/layout.vue"],"sourcesContent":["<template>\n <component :is=\"tag\" :class=\"cls.b\" :style=\"style\" ref=\"containerRef\">\n <slot />\n\n <!-- 竖向调节 -->\n <ULayoutResizer\n v-for=\"(offset, index) of resizerOffsets\"\n :offset=\"offset\"\n :key=\"index\"\n ref=\"resizerRefs\"\n direction=\"vertical\"\n @resize=\"handleResize($event, index)\"\n @resize-start=\"handleStartResize(index)\"\n >\n </ULayoutResizer>\n\n <!-- 横向调节 -->\n <!-- <ULayoutResizer\n v-for=\"item in horizontalResizerList\"\n :key=\"item\"\n direction=\"horizontal\"\n /> -->\n </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useResizeObserver } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport {\n computed,\n shallowRef,\n type CSSProperties,\n provide,\n watchEffect,\n ref,\n watch,\n nextTick\n} from 'vue'\n\nimport type { LayoutProps } from '../../types'\nimport { LayoutDIKey } from './di'\nimport ULayoutResizer from './layout-resizer.vue'\n\ndefineOptions({ name: 'ULayout' })\n\nconst props = withDefaults(defineProps<LayoutProps>(), { tag: 'div' })\n\nconst cls = bem('layout')\n\nconst templateCols = ref<string[]>([])\n\nwatchEffect(() => {\n const { cols } = props\n if (!cols) {\n templateCols.value = []\n return\n }\n templateCols.value = typeof cols === 'string' ? cols.split(' ') : [...cols]\n})\n\nconst style = computed<CSSProperties>(() => {\n const { rows, gap, resizable } = props\n return {\n gridTemplateColumns: templateCols.value.join(' '),\n gridTemplateRows: rows ? (typeof rows === 'string' ? rows : rows.join(' ')) : '',\n columnGap: resizable ? '10px' : withUnit(gap, 'px')\n }\n})\n\nconst containerRef = shallowRef<HTMLElement>()\nconst resizerRefs = shallowRef<InstanceType<typeof ULayoutResizer>[]>([])\n\nconst resizerOffsets = ref<number[]>([])\n\nfunction getResizeOffsets() {\n const container = containerRef.value\n if (!props.resizable || !container || !props.cols) {\n return (resizerOffsets.value = [])\n }\n\n resizerOffsets.value = templateCols.value.slice(0, -1).map((_, index) => {\n const dom = container.children[index] as HTMLElement\n if (!dom) return 0\n return dom.offsetLeft + dom.offsetWidth\n })\n}\n\nwatch([() => props.resizable, containerRef, () => props.cols], () => {\n nextTick(() => {\n getResizeOffsets()\n })\n})\n\nuseResizeObserver({\n targets: containerRef,\n onResize() {\n getResizeOffsets()\n resizerRefs.value.forEach((r, i) => {\n r.update(resizerOffsets.value![i]!)\n })\n }\n})\n\n// const horizontalResizerList = []\n\n// const resizing = shallowRef(false)\n\nlet prevSize = 0\nlet nextSize = 0\nconst handleStartResize = (index: number) => {\n const container = containerRef.value\n if (!container) return\n\n // 拖拽前把相邻两列按实际渲染宽度固定成 px,\n // 这样拖拽时两列等量增减、容器整体宽度保持不变。\n const prevDom = container.children[index] as HTMLElement | undefined\n const nextDom = container.children[index + 1] as HTMLElement | undefined\n prevSize = prevDom ? prevDom.getBoundingClientRect().width : 0\n nextSize = nextDom ? nextDom.getBoundingClientRect().width : 0\n}\nconst handleResize = (offset: number, index: number) => {\n // 钳位到 [-prevSize, nextSize],避免轨道尺寸出现负值——\n // 一旦 grid-template-columns 中带负值,整条声明会被浏览器丢弃。\n const clamped = Math.max(-prevSize, Math.min(nextSize, offset))\n templateCols.value[index] = `${prevSize + clamped}px`\n templateCols.value[index + 1] = `${nextSize - clamped}px`\n}\n\nprovide(LayoutDIKey, { cls })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,QAAQ;EAExB,MAAM,eAAe,IAAc,CAAC,CAAC;EAErC,kBAAkB;GAChB,MAAM,EAAE,SAAS;GACjB,IAAI,CAAC,MAAM;IACT,aAAa,QAAQ,CAAC;IACtB;GACF;GACA,aAAa,QAAQ,OAAO,SAAS,WAAW,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI;EAC5E,CAAC;EAED,MAAM,QAAQ,eAA8B;GAC1C,MAAM,EAAE,MAAM,KAAK,cAAc;GACjC,OAAO;IACL,qBAAqB,aAAa,MAAM,KAAK,GAAG;IAChD,kBAAkB,OAAQ,OAAO,SAAS,WAAW,OAAO,KAAK,KAAK,GAAG,IAAK;IAC9E,WAAW,YAAY,SAAS,SAAS,KAAK,IAAI;GACpD;EACF,CAAC;EAED,MAAM,eAAe,WAAwB;EAC7C,MAAM,cAAc,WAAkD,CAAC,CAAC;EAExE,MAAM,iBAAiB,IAAc,CAAC,CAAC;EAEvC,SAAS,mBAAmB;GAC1B,MAAM,YAAY,aAAa;GAC/B,IAAI,CAAC,MAAM,aAAa,CAAC,aAAa,CAAC,MAAM,MAC3C,OAAQ,eAAe,QAAQ,CAAC;GAGlC,eAAe,QAAQ,aAAa,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,UAAU;IACvE,MAAM,MAAM,UAAU,SAAS;IAC/B,IAAI,CAAC,KAAK,OAAO;IACjB,OAAO,IAAI,aAAa,IAAI;GAC9B,CAAC;EACH;EAEA,MAAM;SAAO,MAAM;GAAW;SAAoB,MAAM;EAAI,SAAS;GACnE,eAAe;IACb,iBAAiB;GACnB,CAAC;EACH,CAAC;EAED,kBAAkB;GAChB,SAAS;GACT,WAAW;IACT,iBAAiB;IACjB,YAAY,MAAM,SAAS,GAAG,MAAM;KAClC,EAAE,OAAO,eAAe,MAAO,EAAG;IACpC,CAAC;GACH;EACF,CAAC;EAMD,IAAI,WAAW;EACf,IAAI,WAAW;EACf,MAAM,qBAAqB,UAAkB;GAC3C,MAAM,YAAY,aAAa;GAC/B,IAAI,CAAC,WAAW;GAIhB,MAAM,UAAU,UAAU,SAAS;GACnC,MAAM,UAAU,UAAU,SAAS,QAAQ;GAC3C,WAAW,UAAU,QAAQ,sBAAsB,CAAC,CAAC,QAAQ;GAC7D,WAAW,UAAU,QAAQ,sBAAsB,CAAC,CAAC,QAAQ;EAC/D;EACA,MAAM,gBAAgB,QAAgB,UAAkB;GAGtD,MAAM,UAAU,KAAK,IAAI,CAAC,UAAU,KAAK,IAAI,UAAU,MAAM,CAAC;GAC9D,aAAa,MAAM,SAAS,GAAG,WAAW,QAAQ;GAClD,aAAa,MAAM,QAAQ,KAAK,GAAG,WAAW,QAAQ;EACxD;EAEA,QAAQ,aAAa,EAAE,IAAI,CAAC;;uBA/H1B,YAqBY,wBArBI,QAAA,GAAG,GAAA;IAAG,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC;IAAG,OAAK,eAAE,MAAA,KAAK;aAAM;IAAJ,KAAI;;2BAC7C;KAAR,WAAQ,KAAA,QAAA,SAAA;KAER,mBAAA,QAAA;uBACA,mBASiB,UAAA,MAAA,WARW,eAAA,QAAlB,QAAQ,UAAK;0BADvB,YASiB,aAAA;OAPN;OACR,KAAK;;gBACF;OAAJ,KAAI;OACJ,WAAU;OACT,WAAM,WAAE,aAAa,QAAQ,KAAK;OAClC,gBAAY,WAAE,kBAAkB,KAAK;;;;;;;KAIxC,mBAAA,QAAA;KACA,mBAAA,+HAAA"}
@@ -1,8 +1,8 @@
1
1
  import { createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref } from "vue";
2
2
  import { bem } from "@veltra/utils";
3
3
  //#region src/components/list/list-item.vue
4
- const _sfc_main = /* @__PURE__ */ defineComponent({
5
- name: "ListItem",
4
+ const _sfc_main = /*@__PURE__*/ defineComponent({
5
+ name: "UListItem",
6
6
  __name: "list-item",
7
7
  setup(__props) {
8
8
  const cls = bem("list-item");
@@ -1 +1 @@
1
- {"version":3,"file":"list-item.js","names":[],"sources":["../../../src/components/list/list-item.vue"],"sourcesContent":["<template>\n <li :class=\"cls.b\">\n <slot />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'ListItem' })\n\nconst cls = bem('list-item')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,WAAW;;uBAVzB,mBAEK,MAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC,EAAA,GAAA,CACf,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"list-item.js","names":[],"sources":["../../../src/components/list/list-item.vue"],"sourcesContent":["<template>\n <li :class=\"cls.b\">\n <slot />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'UListItem' })\n\nconst cls = bem('list-item')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,WAAW;;uBAVzB,mBAEK,MAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,CAAC,EAAA,GAAA,CACf,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -3,8 +3,8 @@ import { Fragment, createBlock, createElementBlock, defineComponent, mergeProps,
3
3
  import { useFallbackProps } from "@veltra/compositions";
4
4
  import { bem } from "@veltra/utils";
5
5
  //#region src/components/list/list.vue
6
- const _sfc_main = /* @__PURE__ */ defineComponent({
7
- name: "List",
6
+ const _sfc_main = /*@__PURE__*/ defineComponent({
7
+ name: "UList",
8
8
  __name: "list",
9
9
  props: {
10
10
  size: {},
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","names":[],"sources":["../../../src/components/list/list.vue"],"sourcesContent":["<template>\n <u-scroll tag=\"ul\" :class=\"[cls.b, cls.m(size)]\">\n <slot v-for=\"(item, index) of data\" v-bind=\"{ item, index }\" />\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type { ListProps } from '../../types'\nimport type { ComponentSize } from '../../types'\nimport { UScroll } from '../scroll'\n\ndefineOptions({ name: 'List' })\n\nconst props = withDefaults(defineProps<ListProps>(), {})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('list')\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkBA,MAAM,EAAE,SAAS,iBAAiB,CAAC,OAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,MAAM;;uBAnBpB,YAEW,MAAA,WAAA,GAAA;IAFD,KAAI;IAAM,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,GAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;;2BACR,EAAA,UAAA,IAAA,GAAnC,mBAA+D,UAAA,MAAA,WAAjC,QAAA,OAAhB,MAAM,UAAK;YAAzB,WAA+D,KAAA,QAAA,WAA/D,WAA+D,EAAA,SAAA,KAAA,GAAA;MAAjB;MAAM;KAAK,CAAA,CAAA"}
1
+ {"version":3,"file":"list.js","names":[],"sources":["../../../src/components/list/list.vue"],"sourcesContent":["<template>\n <u-scroll tag=\"ul\" :class=\"[cls.b, cls.m(size)]\">\n <slot v-for=\"(item, index) of data\" v-bind=\"{ item, index }\" />\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type { ListProps } from '../../types'\nimport type { ComponentSize } from '../../types'\nimport { UScroll } from '../scroll'\n\ndefineOptions({ name: 'UList' })\n\nconst props = withDefaults(defineProps<ListProps>(), {})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('list')\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkBA,MAAM,EAAE,SAAS,iBAAiB,CAAC,OAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,MAAM;;uBAnBpB,YAEW,MAAA,WAAA,GAAA;IAFD,KAAI;IAAM,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;;2BACR,EAAA,UAAA,IAAA,GAAnC,mBAA+D,UAAA,MAAA,WAAjC,QAAA,OAAhB,MAAM,UAAK;YAAzB,WAA+D,KAAA,QAAA,WAA/D,WAA+D,EAAA,SAAA,KAAA,GAAA;MAAjB;MAAM;KAAK,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"directive.js","names":["LoadingComponent"],"sources":["../../../src/components/loading/directive.ts"],"sourcesContent":["import { bem } from '@veltra/utils'\nimport { createVNode, render, type DirectiveBinding, type ObjectDirective } from 'vue'\n\nimport type { LoadingType } from '../../types'\nimport LoadingComponent from './loading.vue'\n\nconst loadingCls = bem('loading')\nconst loadingContainerCls = loadingCls.e('container')\n\nfunction renderLoading(el: HTMLElement, binding: DirectiveBinding) {\n el.classList.add(loadingContainerCls)\n\n const node = createVNode(LoadingComponent, { type: binding.arg as LoadingType })\n\n render(node, el)\n}\n\nfunction removeLoading(el: HTMLElement) {\n render(null, el)\n el.classList.remove(loadingContainerCls)\n}\nexport const vLoading: ObjectDirective<HTMLElement> = {\n mounted(el, binding) {\n binding.value && renderLoading(el, binding)\n },\n\n updated(el, binding) {\n binding.value ? renderLoading(el, binding) : removeLoading(el)\n },\n\n unmounted(el) {\n removeLoading(el)\n }\n}\n"],"mappings":";;;;AAOA,MAAM,sBADa,IAAI,SACc,EAAE,EAAE,WAAW;AAEpD,SAAS,cAAc,IAAiB,SAA2B;CACjE,GAAG,UAAU,IAAI,mBAAmB;CAIpC,OAFa,YAAYA,WAAkB,EAAE,MAAM,QAAQ,IAAmB,CAEpE,GAAG,EAAE;AACjB;AAEA,SAAS,cAAc,IAAiB;CACtC,OAAO,MAAM,EAAE;CACf,GAAG,UAAU,OAAO,mBAAmB;AACzC;AACA,MAAa,WAAyC;CACpD,QAAQ,IAAI,SAAS;EACnB,QAAQ,SAAS,cAAc,IAAI,OAAO;CAC5C;CAEA,QAAQ,IAAI,SAAS;EACnB,QAAQ,QAAQ,cAAc,IAAI,OAAO,IAAI,cAAc,EAAE;CAC/D;CAEA,UAAU,IAAI;EACZ,cAAc,EAAE;CAClB;AACF"}
1
+ {"version":3,"file":"directive.js","names":["LoadingComponent"],"sources":["../../../src/components/loading/directive.ts"],"sourcesContent":["import { bem } from '@veltra/utils'\nimport { createVNode, render, type DirectiveBinding, type ObjectDirective } from 'vue'\n\nimport type { LoadingType } from '../../types'\nimport LoadingComponent from './loading.vue'\n\nconst loadingCls = bem('loading')\nconst loadingContainerCls = loadingCls.e('container')\n\nfunction renderLoading(el: HTMLElement, binding: DirectiveBinding) {\n el.classList.add(loadingContainerCls)\n\n const node = createVNode(LoadingComponent, { type: binding.arg as LoadingType })\n\n render(node, el)\n}\n\nfunction removeLoading(el: HTMLElement) {\n render(null, el)\n el.classList.remove(loadingContainerCls)\n}\nexport const vLoading: ObjectDirective<HTMLElement> = {\n mounted(el, binding) {\n binding.value && renderLoading(el, binding)\n },\n\n updated(el, binding) {\n binding.value ? renderLoading(el, binding) : removeLoading(el)\n },\n\n unmounted(el) {\n removeLoading(el)\n }\n}\n"],"mappings":";;;;AAOA,MAAM,sBADa,IAAI,SACc,CAAC,CAAC,EAAE,WAAW;AAEpD,SAAS,cAAc,IAAiB,SAA2B;CACjE,GAAG,UAAU,IAAI,mBAAmB;CAIpC,OAFa,YAAYA,WAAkB,EAAE,MAAM,QAAQ,IAAmB,CAEpE,GAAG,EAAE;AACjB;AAEA,SAAS,cAAc,IAAiB;CACtC,OAAO,MAAM,EAAE;CACf,GAAG,UAAU,OAAO,mBAAmB;AACzC;AACA,MAAa,WAAyC;CACpD,QAAQ,IAAI,SAAS;EACnB,QAAQ,SAAS,cAAc,IAAI,OAAO;CAC5C;CAEA,QAAQ,IAAI,SAAS;EACnB,QAAQ,QAAQ,cAAc,IAAI,OAAO,IAAI,cAAc,EAAE;CAC/D;CAEA,UAAU,IAAI;EACZ,cAAc,EAAE;CAClB;AACF"}
@@ -2,8 +2,8 @@ import { Transition, computed, createBlock, createElementVNode, defineComponent,
2
2
  import { useFallbackProps } from "@veltra/compositions";
3
3
  import { bem, zIndex } from "@veltra/utils";
4
4
  //#region src/components/loading/loading.vue
5
- const _sfc_main = /* @__PURE__ */ defineComponent({
6
- name: "Loading",
5
+ const _sfc_main = /*@__PURE__*/ defineComponent({
6
+ name: "ULoading",
7
7
  __name: "loading",
8
8
  props: { type: { default: "dual-ring" } },
9
9
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"loading.js","names":[],"sources":["../../../src/components/loading/loading.vue"],"sourcesContent":["<template>\n <transition name=\"fade\" appear>\n <div :class=\"className\" :style=\"{ zIndex: zIndex() }\">\n <div :class=\"cls.e('loader')\"></div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { LoadingProps, ComponentSize } from '../../types'\n\ndefineOptions({ name: 'Loading' })\n\nconst props = withDefaults(defineProps<LoadingProps>(), { type: 'dual-ring' })\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('loading')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), cls.e(props.type)]\n})\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,QAAQ;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,SAAS;EAEzB,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,EAAE,KAAK,KAAK;IAAG,IAAI,EAAE,MAAM,IAAI;GAAC;EACrD,CAAC;;uBAxBC,YAIa,YAAA;IAJD,MAAK;IAAO,QAAA;;2BAGhB,CAFN,mBAEM,OAAA;KAFA,OAAK,eAAE,UAAA,KAAS;KAAG,OAAK,eAAA,EAAA,QAAY,MAAA,MAAA,EAAM,EAAA,CAAA;QAC9C,mBAAoC,OAAA,EAA9B,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA,EAAA,GAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"loading.js","names":[],"sources":["../../../src/components/loading/loading.vue"],"sourcesContent":["<template>\n <transition name=\"fade\" appear>\n <div :class=\"className\" :style=\"{ zIndex: zIndex() }\">\n <div :class=\"cls.e('loader')\"></div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { LoadingProps, ComponentSize } from '../../types'\n\ndefineOptions({ name: 'ULoading' })\n\nconst props = withDefaults(defineProps<LoadingProps>(), { type: 'dual-ring' })\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('loading')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), cls.e(props.type)]\n})\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,QAAQ;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,SAAS;EAEzB,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,EAAE,KAAK,KAAK;IAAG,IAAI,EAAE,MAAM,IAAI;GAAC;EACrD,CAAC;;uBAxBC,YAIa,YAAA;IAJD,MAAK;IAAO,QAAA;;2BAGhB,CAFN,mBAEM,OAAA;KAFA,OAAK,eAAE,UAAA,KAAS;KAAG,OAAK,eAAA,EAAA,QAAY,MAAA,MAAA,CAAM,CAAA,EAAA,CAAA;QAC9C,mBAAoC,OAAA,EAA9B,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import _sfc_main$1 from "./message.js";
2
2
  import { Fragment, TransitionGroup, createBlock, createElementBlock, defineComponent, mergeProps, openBlock, renderList, withCtx } from "vue";
3
3
  //#region src/components/message/message-box.vue
4
- const _sfc_main = /* @__PURE__ */ defineComponent({
5
- name: "MessageBox",
4
+ const _sfc_main = /*@__PURE__*/ defineComponent({
5
+ name: "UMessageBox",
6
6
  __name: "message-box",
7
7
  props: { messages: {} },
8
8
  emits: ["closed", "close"],
@@ -1 +1 @@
1
- {"version":3,"file":"message-box.js","names":[],"sources":["../../../src/components/message/message-box.vue"],"sourcesContent":["<template>\n <transition-group name=\"message\" appear @after-leave=\"handleAfterLeave\">\n <UMessage\n v-for=\"({ onClose, ...message }, index) of messages\"\n v-bind=\"message\"\n :data-id=\"message.key\"\n @close=\"handleClose(index, onClose)\"\n />\n </transition-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { MessageOptions } from '../../types'\nimport UMessage from './message.vue'\n\ndefineOptions({ name: 'MessageBox' })\n\ndefineProps<{ messages: Array<Omit<MessageOptions & { key: string }, 'onClosed'>> }>()\n\nconst emit = defineEmits<{ (e: 'closed', id: string): void; (e: 'close', index: number): void }>()\n\nfunction handleAfterLeave(el: Element) {\n emit('closed', (el as HTMLElement).dataset.id as string)\n}\n\nfunction handleClose(i: number, onClose?: () => void) {\n emit('close', i)\n onClose?.()\n}\n</script>\n"],"mappings":";;;;;;;;;EAmBA,MAAM,OAAO;EAEb,SAAS,iBAAiB,IAAa;GACrC,KAAK,UAAW,GAAmB,QAAQ,EAAY;EACzD;EAEA,SAAS,YAAY,GAAW,SAAsB;GACpD,KAAK,SAAS,CAAC;GACf,UAAU;EACZ;;uBA3BE,YAOmB,iBAAA;IAPD,MAAK;IAAU,QAAA;IAAQ,cAAa;;2BAEE,EAAA,UAAA,IAAA,GADtD,mBAKE,UAAA,MAAA,WAJ2C,QAAA,WAAQ,EAAzC,SAAO,GAAK,WAAW,UAAK;yBADxC,YAKE,aALF,WAKE,EAAA,SAAA,KAAA,GAHQ,SAAO;MACd,WAAS,QAAQ;MACjB,UAAK,WAAE,YAAY,OAAO,OAAO"}
1
+ {"version":3,"file":"message-box.js","names":[],"sources":["../../../src/components/message/message-box.vue"],"sourcesContent":["<template>\n <transition-group name=\"message\" appear @after-leave=\"handleAfterLeave\">\n <UMessage\n v-for=\"({ onClose, ...message }, index) of messages\"\n v-bind=\"message\"\n :data-id=\"message.key\"\n @close=\"handleClose(index, onClose)\"\n />\n </transition-group>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { MessageOptions } from '../../types'\nimport UMessage from './message.vue'\n\ndefineOptions({ name: 'UMessageBox' })\n\ndefineProps<{ messages: Array<Omit<MessageOptions & { key: string }, 'onClosed'>> }>()\n\nconst emit = defineEmits<{ (e: 'closed', id: string): void; (e: 'close', index: number): void }>()\n\nfunction handleAfterLeave(el: Element) {\n emit('closed', (el as HTMLElement).dataset.id as string)\n}\n\nfunction handleClose(i: number, onClose?: () => void) {\n emit('close', i)\n onClose?.()\n}\n</script>\n"],"mappings":";;;;;;;;;EAmBA,MAAM,OAAO;EAEb,SAAS,iBAAiB,IAAa;GACrC,KAAK,UAAW,GAAmB,QAAQ,EAAY;EACzD;EAEA,SAAS,YAAY,GAAW,SAAsB;GACpD,KAAK,SAAS,CAAC;GACf,UAAU;EACZ;;uBA3BE,YAOmB,iBAAA;IAPD,MAAK;IAAU,QAAA;IAAQ,cAAa;;2BAEE,EAAA,UAAA,IAAA,GADtD,mBAKE,UAAA,MAAA,WAJ2C,QAAA,WAAQ,EAAzC,SAAO,GAAK,WAAW,UAAK;yBADxC,YAKE,aALF,WAKE,EAAA,SAAA,KAAA,GAHQ,SAAO;MACd,WAAS,QAAQ;MACjB,UAAK,WAAE,YAAY,OAAO,OAAO"}
@@ -6,8 +6,8 @@ import { bem } from "@veltra/utils";
6
6
  import { Close } from "@veltra/icons/normal";
7
7
  //#region src/components/message/message.vue
8
8
  const _hoisted_1 = ["innerHTML"];
9
- const _sfc_main = /* @__PURE__ */ defineComponent({
10
- name: "Message",
9
+ const _sfc_main = /*@__PURE__*/ defineComponent({
10
+ name: "UMessage",
11
11
  __name: "message",
12
12
  props: {
13
13
  message: {},
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","names":[],"sources":["../../../src/components/message/message.vue"],"sourcesContent":["<template>\n <li\n :class=\"[cls.b, cls.m(size), cls.m('color-' + getTypeColor(type))]\"\n @mouseenter=\"suspendClose\"\n @mouseleave=\"close\"\n >\n <div :class=\"cls.e('icon')\">\n <UIcon>\n <component :is=\"getTypeIcon(type, icon)\" />\n </UIcon>\n </div>\n <div :class=\"cls.e('content')\" v-if=\"html\" v-html=\"message\"></div>\n <div :class=\"cls.e('content')\" v-else>\n {{ message }}\n </div>\n <div :class=\"cls.e('close')\" v-if=\"closable || duration === 0\" @click.stop=\"immediateClose\">\n <UIcon><Close /></UIcon>\n </div>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { onMounted } from 'vue'\n\nimport type { MessageProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { getTypeColor, getTypeIcon } from './helper'\n\ndefineOptions({ name: 'Message' })\n\nconst props = withDefaults(defineProps<MessageProps>(), {\n type: 'default',\n duration: 3000,\n offset: 20\n})\n\nconst emit = defineEmits<{ (e: 'close'): void }>()\n\nconst { size } = useFallbackProps([props], { size: 'default' })\n\nconst cls = bem('message')\n\nlet startTime = 0\nlet timer: number\nlet restDuration = 0\n\nfunction close() {\n if (props.duration === 0) return\n startTime = Date.now()\n timer = setTimeout(() => {\n emit('close')\n }, restDuration)\n}\n\nfunction startClose() {\n if (props.duration <= 0) return\n restDuration = props.duration\n close()\n}\n\nonMounted(() => {\n startClose()\n})\n\nfunction suspendClose() {\n clearTimeout(timer)\n restDuration = restDuration - (Date.now() - startTime)\n}\n\nfunction immediateClose() {\n emit('close')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;EAE9D,MAAM,MAAM,IAAI,SAAS;EAEzB,IAAI,YAAY;EAChB,IAAI;EACJ,IAAI,eAAe;EAEnB,SAAS,QAAQ;GACf,IAAI,MAAM,aAAa,GAAG;GAC1B,YAAY,KAAK,IAAI;GACrB,QAAQ,iBAAiB;IACvB,KAAK,OAAO;GACd,GAAG,YAAY;EACjB;EAEA,SAAS,aAAa;GACpB,IAAI,MAAM,YAAY,GAAG;GACzB,eAAe,MAAM;GACrB,MAAM;EACR;EAEA,gBAAgB;GACd,WAAW;EACb,CAAC;EAED,SAAS,eAAe;GACtB,aAAa,KAAK;GAClB,eAAe,gBAAgB,KAAK,IAAI,IAAI;EAC9C;EAEA,SAAS,iBAAiB;GACxB,KAAK,OAAO;EACd;;uBAzEE,mBAiBK,MAAA;IAhBF,OAAK,eAAA;KAAG,MAAA,GAAA,EAAI;KAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI;KAAG,MAAA,GAAA,EAAI,EAAC,WAAY,MAAA,YAAA,EAAa,QAAA,IAAI,CAAA;IAAA,CAAA;IAC9D,cAAY;IACZ,cAAY;;IAEb,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA,CAChB,YAEQ,MAAA,WAAA,GAAA,MAAA;4BADqC,EAAA,UAAA,GAA3C,YAA2C,wBAA3B,MAAA,WAAA,EAAY,QAAA,MAAM,QAAA,IAAI,CAAA,CAAA,EAAA,CAAA;;;IAGL,QAAA,QAAA,UAAA,GAArC,mBAAkE,OAAA;;KAA5D,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,SAAA,CAAA;KAAyB,WAAQ,QAAA;8CACnD,mBAEM,OAAA;;KAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,SAAA,CAAA;uBACb,QAAA,OAAO,GAAA,CAAA;IAEuB,QAAA,YAAY,QAAA,aAAQ,KAAA,UAAA,GAAvD,mBAEM,OAAA;;KAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,OAAA,CAAA;KAA8C,SAAK,cAAO,gBAAc,CAAA,MAAA,CAAA;QACxF,YAAwB,MAAA,WAAA,GAAA,MAAA;4BAAR,CAAT,YAAS,MAAA,KAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"message.js","names":[],"sources":["../../../src/components/message/message.vue"],"sourcesContent":["<template>\n <li\n :class=\"[cls.b, cls.m(size), cls.m('color-' + getTypeColor(type))]\"\n @mouseenter=\"suspendClose\"\n @mouseleave=\"close\"\n >\n <div :class=\"cls.e('icon')\">\n <UIcon>\n <component :is=\"getTypeIcon(type, icon)\" />\n </UIcon>\n </div>\n <div :class=\"cls.e('content')\" v-if=\"html\" v-html=\"message\"></div>\n <div :class=\"cls.e('content')\" v-else>\n {{ message }}\n </div>\n <div :class=\"cls.e('close')\" v-if=\"closable || duration === 0\" @click.stop=\"immediateClose\">\n <UIcon><Close /></UIcon>\n </div>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { onMounted } from 'vue'\n\nimport type { MessageProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { getTypeColor, getTypeIcon } from './helper'\n\ndefineOptions({ name: 'UMessage' })\n\nconst props = withDefaults(defineProps<MessageProps>(), {\n type: 'default',\n duration: 3000,\n offset: 20\n})\n\nconst emit = defineEmits<{ (e: 'close'): void }>()\n\nconst { size } = useFallbackProps([props], { size: 'default' })\n\nconst cls = bem('message')\n\nlet startTime = 0\nlet timer: number\nlet restDuration = 0\n\nfunction close() {\n if (props.duration === 0) return\n startTime = Date.now()\n timer = setTimeout(() => {\n emit('close')\n }, restDuration)\n}\n\nfunction startClose() {\n if (props.duration <= 0) return\n restDuration = props.duration\n close()\n}\n\nonMounted(() => {\n startClose()\n})\n\nfunction suspendClose() {\n clearTimeout(timer)\n restDuration = restDuration - (Date.now() - startTime)\n}\n\nfunction immediateClose() {\n emit('close')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;EAE9D,MAAM,MAAM,IAAI,SAAS;EAEzB,IAAI,YAAY;EAChB,IAAI;EACJ,IAAI,eAAe;EAEnB,SAAS,QAAQ;GACf,IAAI,MAAM,aAAa,GAAG;GAC1B,YAAY,KAAK,IAAI;GACrB,QAAQ,iBAAiB;IACvB,KAAK,OAAO;GACd,GAAG,YAAY;EACjB;EAEA,SAAS,aAAa;GACpB,IAAI,MAAM,YAAY,GAAG;GACzB,eAAe,MAAM;GACrB,MAAM;EACR;EAEA,gBAAgB;GACd,WAAW;EACb,CAAC;EAED,SAAS,eAAe;GACtB,aAAa,KAAK;GAClB,eAAe,gBAAgB,KAAK,IAAI,IAAI;EAC9C;EAEA,SAAS,iBAAiB;GACxB,KAAK,OAAO;EACd;;uBAzEE,mBAiBK,MAAA;IAhBF,OAAK,eAAA;KAAG,MAAA,GAAA,CAAG,CAAC;KAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAA,IAAA,CAAI;KAAG,MAAA,GAAA,CAAG,CAAC,EAAC,WAAY,MAAA,YAAA,CAAY,CAAC,QAAA,IAAI,CAAA;IAAA,CAAA;IAC9D,cAAY;IACZ,cAAY;;IAEb,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA,CAChB,YAEQ,MAAA,WAAA,GAAA,MAAA;4BADqC,EAAA,UAAA,GAA3C,YAA2C,wBAA3B,MAAA,WAAA,CAAW,CAAC,QAAA,MAAM,QAAA,IAAI,CAAA,CAAA,EAAA,CAAA;;;IAGL,QAAA,QAAA,UAAA,GAArC,mBAAkE,OAAA;;KAA5D,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,SAAA,CAAA;KAAyB,WAAQ,QAAA;8CACnD,mBAEM,OAAA;;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,SAAA,CAAA;uBACb,QAAA,OAAO,GAAA,CAAA;IAEuB,QAAA,YAAY,QAAA,aAAQ,KAAA,UAAA,GAAvD,mBAEM,OAAA;;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA;KAA8C,SAAK,cAAO,gBAAc,CAAA,MAAA,CAAA;QACxF,YAAwB,MAAA,WAAA,GAAA,MAAA;4BAAR,CAAT,YAAS,MAAA,KAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"message2.js","names":["UMessageBox"],"sources":["../../../src/components/message/message.ts"],"sourcesContent":["import { bem, setStyles, zIndex } from '@veltra/utils'\nimport { h, render, shallowReactive } from 'vue'\n\nimport type { MessageOptions, Message, MessageInstance } from '../../types'\nimport UMessageBox from './message-box.vue'\n\nconst cls = bem('message')\n\n/** 消息项数据结构 */\ntype MessageItem = MessageOptions & { key: string }\n\n/** --- 状态管理 --- */\nlet container: HTMLElement | null = null\nconst messages = shallowReactive<MessageItem[]>([])\n\n/** 消息关闭后回调 */\nconst closedCallbacks = new Map<string, () => void>()\n\n/** 用于计数正在显示的 DOM 节点 (包含动画执行中) */\nlet activeCount = 0\nlet uid = 0\n\n/** --- 内部辅助函数 --- */\n\n/** 彻底销毁容器 */\nconst destroy = () => {\n if (container) {\n render(null, container)\n document.body.removeChild(container)\n container = null\n }\n}\n\n/** 离开动画结束后的清理 */\nconst handleClosed = (id: string) => {\n activeCount--\n\n const cb = closedCallbacks.get(id)\n if (cb) {\n cb()\n closedCallbacks.delete(id)\n }\n\n // 没有活跃消息时销毁容器,保持页面干净\n if (activeCount === 0) destroy()\n}\n\n/** 触发关闭 (仅从数组移除,触发 Transition 离开动画) */\nconst handleClose = (id: string) => {\n const index = messages.findIndex((m) => m.key === id)\n if (index !== -1) messages.splice(index, 1)\n}\n\n/** 挂载并渲染容器 */\nconst ensureContainer = () => {\n if (container) return container\n\n container = document.createElement('ul')\n container.className = cls.e('container')\n document.body.appendChild(container)\n return container\n}\n\n/** 执行 Vue 渲染逻辑 */\nconst updateView = () => {\n const el = ensureContainer()\n setStyles(el, { zIndex: zIndex() })\n\n const vnode = h(UMessageBox, {\n messages,\n onClosed: handleClosed,\n onClose: (i: number) => messages.splice(i, 1)\n })\n\n vnode.appContext = message._context\n render(vnode, el)\n}\n\n/** 创建消息实例 */\nconst createMessage = (options: MessageOptions): MessageInstance => {\n const { onClosed: userOnClosed, ...messageOptions } = options\n const id = `msg_${uid++}`\n activeCount++\n\n // 生命周期 Promise\n let resolveClosed: () => void\n const onClosed = new Promise<void>((r) => (resolveClosed = r))\n\n closedCallbacks.set(id, () => {\n userOnClosed?.()\n resolveClosed()\n })\n\n messages.push({ key: id, ...messageOptions })\n updateView()\n\n return { id, close: () => handleClose(id), onClosed }\n}\n\n/** --- 导出 API --- */\n\nexport const message = ((options) => {\n const mergedOptions = typeof options === 'string' ? { message: options } : options\n return createMessage(mergedOptions)\n}) as Message\n\nmessage._context = null\n\n// 挂载快捷方法: message.success(...)\nconst messageTypes = ['success', 'warn', 'info', 'error', 'default'] as const\nmessageTypes.forEach((type) => {\n message[type] = (msg, config) => message({ ...config, message: msg, type })\n})\n\n/** 关闭所有当前显示的消息 */\nmessage.closeAll = () => {\n messages.splice(0)\n}\n"],"mappings":";;;;AAMA,MAAM,MAAM,IAAI,SAAS;;AAMzB,IAAI,YAAgC;AACpC,MAAM,WAAW,gBAA+B,CAAC,CAAC;;AAGlD,MAAM,kCAAkB,IAAI,IAAwB;;AAGpD,IAAI,cAAc;AAClB,IAAI,MAAM;;;AAKV,MAAM,gBAAgB;CACpB,IAAI,WAAW;EACb,OAAO,MAAM,SAAS;EACtB,SAAS,KAAK,YAAY,SAAS;EACnC,YAAY;CACd;AACF;;AAGA,MAAM,gBAAgB,OAAe;CACnC;CAEA,MAAM,KAAK,gBAAgB,IAAI,EAAE;CACjC,IAAI,IAAI;EACN,GAAG;EACH,gBAAgB,OAAO,EAAE;CAC3B;CAGA,IAAI,gBAAgB,GAAG,QAAQ;AACjC;;AAGA,MAAM,eAAe,OAAe;CAClC,MAAM,QAAQ,SAAS,WAAW,MAAM,EAAE,QAAQ,EAAE;CACpD,IAAI,UAAU,IAAI,SAAS,OAAO,OAAO,CAAC;AAC5C;;AAGA,MAAM,wBAAwB;CAC5B,IAAI,WAAW,OAAO;CAEtB,YAAY,SAAS,cAAc,IAAI;CACvC,UAAU,YAAY,IAAI,EAAE,WAAW;CACvC,SAAS,KAAK,YAAY,SAAS;CACnC,OAAO;AACT;;AAGA,MAAM,mBAAmB;CACvB,MAAM,KAAK,gBAAgB;CAC3B,UAAU,IAAI,EAAE,QAAQ,OAAO,EAAE,CAAC;CAElC,MAAM,QAAQ,EAAEA,WAAa;EAC3B;EACA,UAAU;EACV,UAAU,MAAc,SAAS,OAAO,GAAG,CAAC;CAC9C,CAAC;CAED,MAAM,aAAa,QAAQ;CAC3B,OAAO,OAAO,EAAE;AAClB;;AAGA,MAAM,iBAAiB,YAA6C;CAClE,MAAM,EAAE,UAAU,cAAc,GAAG,mBAAmB;CACtD,MAAM,KAAK,OAAO;CAClB;CAGA,IAAI;CACJ,MAAM,WAAW,IAAI,SAAe,MAAO,gBAAgB,CAAE;CAE7D,gBAAgB,IAAI,UAAU;EAC5B,eAAe;EACf,cAAc;CAChB,CAAC;CAED,SAAS,KAAK;EAAE,KAAK;EAAI,GAAG;CAAe,CAAC;CAC5C,WAAW;CAEX,OAAO;EAAE;EAAI,aAAa,YAAY,EAAE;EAAG;CAAS;AACtD;;AAIA,MAAa,YAAY,YAAY;CAEnC,OAAO,cADe,OAAO,YAAY,WAAW,EAAE,SAAS,QAAQ,IAAI,OACzC;AACpC;AAEA,QAAQ,WAAW;AAInB;CADsB;CAAW;CAAQ;CAAQ;CAAS;AAC/C,EAAE,SAAS,SAAS;CAC7B,QAAQ,SAAS,KAAK,WAAW,QAAQ;EAAE,GAAG;EAAQ,SAAS;EAAK;CAAK,CAAC;AAC5E,CAAC;;AAGD,QAAQ,iBAAiB;CACvB,SAAS,OAAO,CAAC;AACnB"}
1
+ {"version":3,"file":"message2.js","names":["UMessageBox"],"sources":["../../../src/components/message/message.ts"],"sourcesContent":["import { bem, setStyles, zIndex } from '@veltra/utils'\nimport { h, render, shallowReactive } from 'vue'\n\nimport type { MessageOptions, Message, MessageInstance } from '../../types'\nimport UMessageBox from './message-box.vue'\n\nconst cls = bem('message')\n\n/** 消息项数据结构 */\ntype MessageItem = MessageOptions & { key: string }\n\n/** --- 状态管理 --- */\nlet container: HTMLElement | null = null\nconst messages = shallowReactive<MessageItem[]>([])\n\n/** 消息关闭后回调 */\nconst closedCallbacks = new Map<string, () => void>()\n\n/** 用于计数正在显示的 DOM 节点 (包含动画执行中) */\nlet activeCount = 0\nlet uid = 0\n\n/** --- 内部辅助函数 --- */\n\n/** 彻底销毁容器 */\nconst destroy = () => {\n if (container) {\n render(null, container)\n document.body.removeChild(container)\n container = null\n }\n}\n\n/** 离开动画结束后的清理 */\nconst handleClosed = (id: string) => {\n activeCount--\n\n const cb = closedCallbacks.get(id)\n if (cb) {\n cb()\n closedCallbacks.delete(id)\n }\n\n // 没有活跃消息时销毁容器,保持页面干净\n if (activeCount === 0) destroy()\n}\n\n/** 触发关闭 (仅从数组移除,触发 Transition 离开动画) */\nconst handleClose = (id: string) => {\n const index = messages.findIndex((m) => m.key === id)\n if (index !== -1) messages.splice(index, 1)\n}\n\n/** 挂载并渲染容器 */\nconst ensureContainer = () => {\n if (container) return container\n\n container = document.createElement('ul')\n container.className = cls.e('container')\n document.body.appendChild(container)\n return container\n}\n\n/** 执行 Vue 渲染逻辑 */\nconst updateView = () => {\n const el = ensureContainer()\n setStyles(el, { zIndex: zIndex() })\n\n const vnode = h(UMessageBox, {\n messages,\n onClosed: handleClosed,\n onClose: (i: number) => messages.splice(i, 1)\n })\n\n vnode.appContext = message._context\n render(vnode, el)\n}\n\n/** 创建消息实例 */\nconst createMessage = (options: MessageOptions): MessageInstance => {\n const { onClosed: userOnClosed, ...messageOptions } = options\n const id = `msg_${uid++}`\n activeCount++\n\n // 生命周期 Promise\n let resolveClosed: () => void\n const onClosed = new Promise<void>((r) => (resolveClosed = r))\n\n closedCallbacks.set(id, () => {\n userOnClosed?.()\n resolveClosed()\n })\n\n messages.push({ key: id, ...messageOptions })\n updateView()\n\n return { id, close: () => handleClose(id), onClosed }\n}\n\n/** --- 导出 API --- */\n\nexport const message = ((options) => {\n const mergedOptions = typeof options === 'string' ? { message: options } : options\n return createMessage(mergedOptions)\n}) as Message\n\nmessage._context = null\n\n// 挂载快捷方法: message.success(...)\nconst messageTypes = ['success', 'warn', 'info', 'error', 'default'] as const\nmessageTypes.forEach((type) => {\n message[type] = (msg, config) => message({ ...config, message: msg, type })\n})\n\n/** 关闭所有当前显示的消息 */\nmessage.closeAll = () => {\n messages.splice(0)\n}\n"],"mappings":";;;;AAMA,MAAM,MAAM,IAAI,SAAS;;AAMzB,IAAI,YAAgC;AACpC,MAAM,WAAW,gBAA+B,CAAC,CAAC;;AAGlD,MAAM,kCAAkB,IAAI,IAAwB;;AAGpD,IAAI,cAAc;AAClB,IAAI,MAAM;;;AAKV,MAAM,gBAAgB;CACpB,IAAI,WAAW;EACb,OAAO,MAAM,SAAS;EACtB,SAAS,KAAK,YAAY,SAAS;EACnC,YAAY;CACd;AACF;;AAGA,MAAM,gBAAgB,OAAe;CACnC;CAEA,MAAM,KAAK,gBAAgB,IAAI,EAAE;CACjC,IAAI,IAAI;EACN,GAAG;EACH,gBAAgB,OAAO,EAAE;CAC3B;CAGA,IAAI,gBAAgB,GAAG,QAAQ;AACjC;;AAGA,MAAM,eAAe,OAAe;CAClC,MAAM,QAAQ,SAAS,WAAW,MAAM,EAAE,QAAQ,EAAE;CACpD,IAAI,UAAU,IAAI,SAAS,OAAO,OAAO,CAAC;AAC5C;;AAGA,MAAM,wBAAwB;CAC5B,IAAI,WAAW,OAAO;CAEtB,YAAY,SAAS,cAAc,IAAI;CACvC,UAAU,YAAY,IAAI,EAAE,WAAW;CACvC,SAAS,KAAK,YAAY,SAAS;CACnC,OAAO;AACT;;AAGA,MAAM,mBAAmB;CACvB,MAAM,KAAK,gBAAgB;CAC3B,UAAU,IAAI,EAAE,QAAQ,OAAO,EAAE,CAAC;CAElC,MAAM,QAAQ,EAAEA,WAAa;EAC3B;EACA,UAAU;EACV,UAAU,MAAc,SAAS,OAAO,GAAG,CAAC;CAC9C,CAAC;CAED,MAAM,aAAa,QAAQ;CAC3B,OAAO,OAAO,EAAE;AAClB;;AAGA,MAAM,iBAAiB,YAA6C;CAClE,MAAM,EAAE,UAAU,cAAc,GAAG,mBAAmB;CACtD,MAAM,KAAK,OAAO;CAClB;CAGA,IAAI;CACJ,MAAM,WAAW,IAAI,SAAe,MAAO,gBAAgB,CAAE;CAE7D,gBAAgB,IAAI,UAAU;EAC5B,eAAe;EACf,cAAc;CAChB,CAAC;CAED,SAAS,KAAK;EAAE,KAAK;EAAI,GAAG;CAAe,CAAC;CAC5C,WAAW;CAEX,OAAO;EAAE;EAAI,aAAa,YAAY,EAAE;EAAG;CAAS;AACtD;;AAIA,MAAa,YAAY,YAAY;CAEnC,OAAO,cADe,OAAO,YAAY,WAAW,EAAE,SAAS,QAAQ,IAAI,OACzC;AACpC;AAEA,QAAQ,WAAW;AAInB;CADsB;CAAW;CAAQ;CAAQ;CAAS;AAC/C,CAAC,CAAC,SAAS,SAAS;CAC7B,QAAQ,SAAS,KAAK,WAAW,QAAQ;EAAE,GAAG;EAAQ,SAAS;EAAK;CAAK,CAAC;AAC5E,CAAC;;AAGD,QAAQ,iBAAiB;CACvB,SAAS,OAAO,CAAC;AACnB"}
@@ -3,8 +3,8 @@ import { Transition, createBlock, createCommentVNode, createElementBlock, create
3
3
  import { useFallbackProps } from "@veltra/compositions";
4
4
  import { bem, zIndex } from "@veltra/utils";
5
5
  //#region src/components/message-confirm/message-confirm.vue
6
- const _sfc_main = /* @__PURE__ */ defineComponent({
7
- name: "MessageConfirm",
6
+ const _sfc_main = /*@__PURE__*/ defineComponent({
7
+ name: "UMessageConfirm",
8
8
  __name: "message-confirm",
9
9
  props: {
10
10
  modelValue: {},
@@ -1 +1 @@
1
- {"version":3,"file":"message-confirm.js","names":["$emit"],"sources":["../../../src/components/message-confirm/message-confirm.vue"],"sourcesContent":["<template>\n <transition name=\"message-confirm-fade\" @after-leave=\"$emit('destroy')\">\n <div :class=\"[cls.b, cls.m(size)]\" v-show=\"visible\">\n <div :class=\"cls.e('mask')\" :style=\"{ zIndex: `${zIndex()}` }\">\n <div :class=\"cls.e('box')\">\n <div :class=\"cls.e('header')\" v-if=\"title\">{{ title }}</div>\n <div :class=\"cls.e('content')\">{{ message }}</div>\n <div :class=\"cls.e('footer')\">\n <UButton\n plain\n @click=\"close('cancel')\"\n :class=\"cls.em('footer', 'btn')\"\n v-if=\"cancelButtonText\"\n >{{ cancelButtonText }}</UButton\n >\n <UButton\n :type=\"confirmButtonType\"\n @click=\"close('confirm')\"\n :class=\"cls.em('footer', 'btn')\"\n >{{ confirmButtonText }}</UButton\n >\n </div>\n </div>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { ref, onMounted } from 'vue'\n\nimport type { MessageConfirmProps, ColorType, ComponentSize } from '../../types'\nimport { UButton } from '../button'\n\ndefineOptions({ name: 'MessageConfirm' })\n\nconst props = withDefaults(defineProps<MessageConfirmProps>(), {\n title: '',\n message: '',\n confirmButtonText: '确定',\n confirmButtonType: 'primary' as ColorType,\n cancelButtonText: ''\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('message-confirm')\n\nconst visible = ref<boolean>(false)\n\nonMounted(() => {\n visible.value = true\n})\n\nconst close = (action: 'cancel' | 'confirm') => {\n visible.value = false\n if (props.onClose) props.onClose(action)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAsCA,MAAM,QAAQ;EAQd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,iBAAiB;EAEjC,MAAM,UAAU,IAAa,KAAK;EAElC,gBAAgB;GACd,QAAQ,QAAQ;EAClB,CAAC;EAED,MAAM,SAAS,WAAiC;GAC9C,QAAQ,QAAQ;GAChB,IAAI,MAAM,SAAS,MAAM,QAAQ,MAAM;EACzC;;uBA1DE,YAwBa,YAAA;IAxBD,MAAK;IAAwB,cAAW,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;IAA3D,WAAA;;2BAuBQ,CAAA,eAtBN,mBAsBM,OAAA,EAtBA,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,GAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA,EAAA,GAAA,CAC7B,mBAoBM,OAAA;KApBA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA;KAAW,OAAK,eAAA,EAAA,QAAA,GAAe,MAAA,MAAA,EAAM,IAAA,CAAA;QACrD,mBAkBM,OAAA,EAlBA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,KAAA,CAAA,EAAA,GAAA;KACoB,QAAA,SAAA,UAAA,GAApC,mBAA4D,OAAA;;MAAtD,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA;wBAA4B,QAAA,KAAK,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;KACnD,mBAAkD,OAAA,EAA5C,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,SAAA,CAAA,EAAA,GAAA,gBAAgB,QAAA,OAAO,GAAA,CAAA;KACzC,mBAcM,OAAA,EAdA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA,EAAA,GAAA,CAKR,QAAA,oBAAA,UAAA,GAJR,YAMC,MAAA,WAAA,GAAA;;MALC,OAAA;MACC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAK,QAAA;MACZ,OAAK,eAAE,MAAA,GAAA,EAAI,GAAE,UAAA,KAAA,CAAA;;6BAES,CAAA,gBAAA,gBAAnB,QAAA,gBAAgB,GAAA,CAAA,CAAA,CAAA;;2DAEtB,YAKC,MAAA,WAAA,GAAA;MAJE,MAAM,QAAA;MACN,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAK,SAAA;MACZ,OAAK,eAAE,MAAA,GAAA,EAAI,GAAE,UAAA,KAAA,CAAA;;6BACU,CAAA,gBAAA,gBAApB,QAAA,iBAAiB,GAAA,CAAA,CAAA,CAAA;;;8BAjBY,QAAA,KAAO,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"message-confirm.js","names":["$emit"],"sources":["../../../src/components/message-confirm/message-confirm.vue"],"sourcesContent":["<template>\n <transition name=\"message-confirm-fade\" @after-leave=\"$emit('destroy')\">\n <div :class=\"[cls.b, cls.m(size)]\" v-show=\"visible\">\n <div :class=\"cls.e('mask')\" :style=\"{ zIndex: `${zIndex()}` }\">\n <div :class=\"cls.e('box')\">\n <div :class=\"cls.e('header')\" v-if=\"title\">{{ title }}</div>\n <div :class=\"cls.e('content')\">{{ message }}</div>\n <div :class=\"cls.e('footer')\">\n <UButton\n plain\n @click=\"close('cancel')\"\n :class=\"cls.em('footer', 'btn')\"\n v-if=\"cancelButtonText\"\n >{{ cancelButtonText }}</UButton\n >\n <UButton\n :type=\"confirmButtonType\"\n @click=\"close('confirm')\"\n :class=\"cls.em('footer', 'btn')\"\n >{{ confirmButtonText }}</UButton\n >\n </div>\n </div>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { ref, onMounted } from 'vue'\n\nimport type { MessageConfirmProps, ColorType, ComponentSize } from '../../types'\nimport { UButton } from '../button'\n\ndefineOptions({ name: 'UMessageConfirm' })\n\nconst props = withDefaults(defineProps<MessageConfirmProps>(), {\n title: '',\n message: '',\n confirmButtonText: '确定',\n confirmButtonType: 'primary' as ColorType,\n cancelButtonText: ''\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('message-confirm')\n\nconst visible = ref<boolean>(false)\n\nonMounted(() => {\n visible.value = true\n})\n\nconst close = (action: 'cancel' | 'confirm') => {\n visible.value = false\n if (props.onClose) props.onClose(action)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAsCA,MAAM,QAAQ;EAQd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,iBAAiB;EAEjC,MAAM,UAAU,IAAa,KAAK;EAElC,gBAAgB;GACd,QAAQ,QAAQ;EAClB,CAAC;EAED,MAAM,SAAS,WAAiC;GAC9C,QAAQ,QAAQ;GAChB,IAAI,MAAM,SAAS,MAAM,QAAQ,MAAM;EACzC;;uBA1DE,YAwBa,YAAA;IAxBD,MAAK;IAAwB,cAAW,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;IAA3D,WAAA;;2BAuBQ,CAAA,eAtBN,mBAsBM,OAAA,EAtBA,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA,EAAA,GAAA,CAC7B,mBAoBM,OAAA;KApBA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA;KAAW,OAAK,eAAA,EAAA,QAAA,GAAe,MAAA,MAAA,CAAM,CAAA,IAAA,CAAA;QACrD,mBAkBM,OAAA,EAlBA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,KAAA,CAAA,EAAA,GAAA;KACoB,QAAA,SAAA,UAAA,GAApC,mBAA4D,OAAA;;MAAtD,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA;wBAA4B,QAAA,KAAK,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;KACnD,mBAAkD,OAAA,EAA5C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,SAAA,CAAA,EAAA,GAAA,gBAAgB,QAAA,OAAO,GAAA,CAAA;KACzC,mBAcM,OAAA,EAdA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA,CAKR,QAAA,oBAAA,UAAA,GAJR,YAMC,MAAA,WAAA,GAAA;;MALC,OAAA;MACC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAK,QAAA;MACZ,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,GAAE,UAAA,KAAA,CAAA;;6BAES,CAAA,gBAAA,gBAAnB,QAAA,gBAAgB,GAAA,CAAA,CAAA,CAAA;;2DAEtB,YAKC,MAAA,WAAA,GAAA;MAJE,MAAM,QAAA;MACN,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAK,SAAA;MACZ,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,GAAE,UAAA,KAAA,CAAA;;6BACU,CAAA,gBAAA,gBAApB,QAAA,iBAAiB,GAAA,CAAA,CAAA,CAAA;;;8BAjBY,QAAA,KAAO,CAAA,CAAA,CAAA,CAAA"}
@@ -3,8 +3,8 @@ import { MultiSelectDIKey } from "./di.js";
3
3
  import { createElementBlock, createVNode, defineComponent, inject, normalizeClass, onBeforeUnmount, openBlock, renderSlot, shallowRef, unref, withModifiers } from "vue";
4
4
  import { Ripple } from "@veltra/directives";
5
5
  //#region src/components/multi-select/multi-select-option.vue
6
- const _sfc_main = /* @__PURE__ */ defineComponent({
7
- name: "MultiSelectOption",
6
+ const _sfc_main = /*@__PURE__*/ defineComponent({
7
+ name: "UMultiSelectOption",
8
8
  __name: "multi-select-option",
9
9
  props: {
10
10
  option: {},
@@ -1 +1 @@
1
- {"version":3,"file":"multi-select-option.js","names":[],"sources":["../../../src/components/multi-select/multi-select-option.vue"],"sourcesContent":["<template>\n <li\n :class=\"optionClass\"\n @click=\"handleClick\"\n @mousedown=\"handleMousedown\"\n @mouseup=\"handleMouseup\"\n @mouseleave=\"handleMouseleave\"\n :ref=\"measureRef\"\n >\n <u-checkbox\n :class=\"checkboxClass\"\n :model-value=\"checked\"\n @update:model-value=\"emit('check', $event)\"\n @click.stop\n :disabled=\"disabled\"\n />\n\n <slot />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Ripple } from '@veltra/directives'\nimport { inject, onBeforeUnmount, shallowRef } from 'vue'\n\nimport { UCheckbox } from '../checkbox'\nimport { MultiSelectDIKey } from './di'\n\ndefineOptions({ name: 'MultiSelectOption' })\n\nconst props = defineProps<{\n option: Record<string, any>\n disabled?: boolean\n checked: boolean\n /**\n * 虚拟项索引:对应 `options` 数组中的绝对位置。\n * 非虚拟模式下可省略;虚拟模式下必须传入,否则元素卸载时 Virtualizer 无法及时解绑,\n * 会因为 ResizeObserver 对脱离 DOM 的元素回调 size=0 而污染尺寸缓存。\n */\n index?: number\n measureElement?: (index: number, el: Element | null) => void\n}>()\n\nfunction measureRef(el: unknown) {\n if (typeof props.index !== 'number' || !props.measureElement) return\n props.measureElement(props.index, el as Element | null)\n}\n\nconst emit = defineEmits<{ (e: 'check', checked: boolean): void }>()\n\nconst { optionClass, rippleClass, checkboxClass } = inject(MultiSelectDIKey)!\n\nconst rippleRef = shallowRef<Ripple | null>(null)\n\nfunction handleClick(e) {\n if (props.disabled) return\n emit('check', !props.checked)\n}\n\nfunction handleMousedown(e: MouseEvent) {\n if (props.disabled) return\n\n // 清理旧实例,避免同一元素上多个 Ripple 实例同时修改样式\n if (rippleRef.value) {\n rippleRef.value.remove()\n rippleRef.value = null\n }\n\n rippleRef.value = new Ripple(e.currentTarget as HTMLElement, { rippleClass })\n\n rippleRef.value.showByEvent(e)\n}\n\nfunction handleMouseleave() {\n rippleRef.value?.remove()\n rippleRef.value = null\n}\n\nfunction handleMouseup() {\n rippleRef.value?.remove()\n rippleRef.value = null\n}\n\nonBeforeUnmount(() => {\n rippleRef.value?.remove()\n rippleRef.value = null\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;EAad,SAAS,WAAW,IAAa;GAC/B,IAAI,OAAO,MAAM,UAAU,YAAY,CAAC,MAAM,gBAAgB;GAC9D,MAAM,eAAe,MAAM,OAAO,EAAoB;EACxD;EAEA,MAAM,OAAO;EAEb,MAAM,EAAE,aAAa,aAAa,kBAAkB,OAAO,gBAAgB;EAE3E,MAAM,YAAY,WAA0B,IAAI;EAEhD,SAAS,YAAY,GAAG;GACtB,IAAI,MAAM,UAAU;GACpB,KAAK,SAAS,CAAC,MAAM,OAAO;EAC9B;EAEA,SAAS,gBAAgB,GAAe;GACtC,IAAI,MAAM,UAAU;GAGpB,IAAI,UAAU,OAAO;IACnB,UAAU,MAAM,OAAO;IACvB,UAAU,QAAQ;GACpB;GAEA,UAAU,QAAQ,IAAI,OAAO,EAAE,eAA8B,EAAE,YAAY,CAAC;GAE5E,UAAU,MAAM,YAAY,CAAC;EAC/B;EAEA,SAAS,mBAAmB;GAC1B,UAAU,OAAO,OAAO;GACxB,UAAU,QAAQ;EACpB;EAEA,SAAS,gBAAgB;GACvB,UAAU,OAAO,OAAO;GACxB,UAAU,QAAQ;EACpB;EAEA,sBAAsB;GACpB,UAAU,OAAO,OAAO;GACxB,UAAU,QAAQ;EACpB,CAAC;;uBArFC,mBAiBK,MAAA;IAhBF,OAAK,eAAE,MAAA,WAAA,CAAW;IAClB,SAAO;IACP,aAAW;IACX,WAAS;IACT,cAAY;IACZ,KAAK;OAEN,YAME,MAAA,WAAA,GAAA;IALC,OAAK,eAAE,MAAA,aAAA,CAAa;IACpB,eAAa,QAAA;IACb,uBAAkB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAU,MAAM;IACxC,SAAK,OAAA,OAAA,OAAA,KAAA,oBAAN,CAAA,GAAW,CAAA,MAAA,CAAA;IACV,UAAU,QAAA;;;;;OAGb,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA"}
1
+ {"version":3,"file":"multi-select-option.js","names":[],"sources":["../../../src/components/multi-select/multi-select-option.vue"],"sourcesContent":["<template>\n <li\n :class=\"optionClass\"\n @click=\"handleClick\"\n @mousedown=\"handleMousedown\"\n @mouseup=\"handleMouseup\"\n @mouseleave=\"handleMouseleave\"\n :ref=\"measureRef\"\n >\n <u-checkbox\n :class=\"checkboxClass\"\n :model-value=\"checked\"\n @update:model-value=\"emit('check', $event)\"\n @click.stop\n :disabled=\"disabled\"\n />\n\n <slot />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Ripple } from '@veltra/directives'\nimport { inject, onBeforeUnmount, shallowRef } from 'vue'\n\nimport { UCheckbox } from '../checkbox'\nimport { MultiSelectDIKey } from './di'\n\ndefineOptions({ name: 'UMultiSelectOption' })\n\nconst props = defineProps<{\n option: Record<string, any>\n disabled?: boolean\n checked: boolean\n /**\n * 虚拟项索引:对应 `options` 数组中的绝对位置。\n * 非虚拟模式下可省略;虚拟模式下必须传入,否则元素卸载时 Virtualizer 无法及时解绑,\n * 会因为 ResizeObserver 对脱离 DOM 的元素回调 size=0 而污染尺寸缓存。\n */\n index?: number\n measureElement?: (index: number, el: Element | null) => void\n}>()\n\nfunction measureRef(el: unknown) {\n if (typeof props.index !== 'number' || !props.measureElement) return\n props.measureElement(props.index, el as Element | null)\n}\n\nconst emit = defineEmits<{ (e: 'check', checked: boolean): void }>()\n\nconst { optionClass, rippleClass, checkboxClass } = inject(MultiSelectDIKey)!\n\nconst rippleRef = shallowRef<Ripple | null>(null)\n\nfunction handleClick(e) {\n if (props.disabled) return\n emit('check', !props.checked)\n}\n\nfunction handleMousedown(e: MouseEvent) {\n if (props.disabled) return\n\n // 清理旧实例,避免同一元素上多个 Ripple 实例同时修改样式\n if (rippleRef.value) {\n rippleRef.value.remove()\n rippleRef.value = null\n }\n\n rippleRef.value = new Ripple(e.currentTarget as HTMLElement, { rippleClass })\n\n rippleRef.value.showByEvent(e)\n}\n\nfunction handleMouseleave() {\n rippleRef.value?.remove()\n rippleRef.value = null\n}\n\nfunction handleMouseup() {\n rippleRef.value?.remove()\n rippleRef.value = null\n}\n\nonBeforeUnmount(() => {\n rippleRef.value?.remove()\n rippleRef.value = null\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;EAad,SAAS,WAAW,IAAa;GAC/B,IAAI,OAAO,MAAM,UAAU,YAAY,CAAC,MAAM,gBAAgB;GAC9D,MAAM,eAAe,MAAM,OAAO,EAAoB;EACxD;EAEA,MAAM,OAAO;EAEb,MAAM,EAAE,aAAa,aAAa,kBAAkB,OAAO,gBAAgB;EAE3E,MAAM,YAAY,WAA0B,IAAI;EAEhD,SAAS,YAAY,GAAG;GACtB,IAAI,MAAM,UAAU;GACpB,KAAK,SAAS,CAAC,MAAM,OAAO;EAC9B;EAEA,SAAS,gBAAgB,GAAe;GACtC,IAAI,MAAM,UAAU;GAGpB,IAAI,UAAU,OAAO;IACnB,UAAU,MAAM,OAAO;IACvB,UAAU,QAAQ;GACpB;GAEA,UAAU,QAAQ,IAAI,OAAO,EAAE,eAA8B,EAAE,YAAY,CAAC;GAE5E,UAAU,MAAM,YAAY,CAAC;EAC/B;EAEA,SAAS,mBAAmB;GAC1B,UAAU,OAAO,OAAO;GACxB,UAAU,QAAQ;EACpB;EAEA,SAAS,gBAAgB;GACvB,UAAU,OAAO,OAAO;GACxB,UAAU,QAAQ;EACpB;EAEA,sBAAsB;GACpB,UAAU,OAAO,OAAO;GACxB,UAAU,QAAQ;EACpB,CAAC;;uBArFC,mBAiBK,MAAA;IAhBF,OAAK,eAAE,MAAA,WAAA,CAAW;IAClB,SAAO;IACP,aAAW;IACX,WAAS;IACT,cAAY;IACZ,KAAK;OAEN,YAME,MAAA,WAAA,GAAA;IALC,OAAK,eAAE,MAAA,aAAA,CAAa;IACpB,eAAa,QAAA;IACb,uBAAkB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAU,MAAM;IACxC,SAAK,OAAA,OAAA,OAAA,KAAA,oBAAN,CAAA,GAAW,CAAA,MAAA,CAAA;IACV,UAAU,QAAA;;;;;OAGb,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA"}
@@ -14,10 +14,10 @@ import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
14
14
  import { ArrowDown, Close, Search } from "@veltra/icons/normal";
15
15
  import { o } from "@cat-kit/core";
16
16
  //#region src/components/multi-select/multi-select.vue
17
- const _sfc_main = /* @__PURE__ */ defineComponent({
18
- name: "MultiSelect",
17
+ const _sfc_main = /*@__PURE__*/ defineComponent({
18
+ name: "UMultiSelect",
19
19
  __name: "multi-select",
20
- props: /* @__PURE__ */ mergeModels({
20
+ props: /*@__PURE__*/ mergeModels({
21
21
  modelValue: {},
22
22
  options: {},
23
23
  valueKey: { default: "value" },
@@ -53,7 +53,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
53
53
  "modelValue": {},
54
54
  "modelModifiers": {}
55
55
  }),
56
- emits: /* @__PURE__ */ mergeModels(["update:modelValue", "change"], ["update:modelValue"]),
56
+ emits: /*@__PURE__*/ mergeModels(["update:modelValue", "change"], ["update:modelValue"]),
57
57
  setup(__props, { emit: __emit }) {
58
58
  const props = __props;
59
59
  const emit = __emit;
@@ -1 +1 @@
1
- {"version":3,"file":"multi-select.js","names":[],"sources":["../../../src/components/multi-select/multi-select.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :class=\"[cls.b, cls.m(size), bem.is('disabled', disabled)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size), contentClass]\"\n :content-style=\"contentStyle\"\n :min-width=\"minWidth\"\n :width=\"width\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n :disabled=\"disabled\"\n @update:visible=\"handleDropdownVisible\"\n >\n <!-- 触发 -->\n <template #trigger>\n <span :class=\"cls.e('placeholder')\" v-show=\"!model?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"model?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"option of tags\"\n :key=\"option[valueKey]\"\n :closable=\"!disabled\"\n size=\"small\"\n @close=\"handleClose(option)\"\n >\n {{ option[labelKey] }}\n </u-tag>\n <u-tag v-if=\"restTag\" size=\"small\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && model?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <!-- 多选栏 -->\n <div :class=\"cls.e('content-header')\">\n <u-checkbox\n :model-value=\"allChecked\"\n :indeterminate=\"indeterminate\"\n @update:model-value=\"handleCheckAll\"\n :disabled=\"max !== undefined\"\n >\n 全选\n </u-checkbox>\n\n <span> 已选 {{ model?.length }}/{{ max ?? options?.length ?? 0 }} </span>\n </div>\n\n <!-- 过滤器 -->\n <div v-if=\"filterable\" :class=\"cls.e('content-filter')\">\n <u-input\n placeholder=\"输入关键字进行过滤\"\n v-model=\"queryString\"\n @keydown.enter.prevent=\"handleCreateByEnter\"\n >\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <!-- 多选列表 -->\n <!--\n 虚拟化启用时内容容器 height 由 useVirtualizer 命令式写入;\n 模板不再绑定 totalSize,避免尺寸变化引起重渲染。\n -->\n <u-scroll\n tag=\"ul\"\n :class=\"[cls.e('options')]\"\n ref=\"scrollRef\"\n v-if=\"options.length\"\n :content-class=\"[cls.e('options-wrap'), bem.is('virtual', virtualEnabled)]\"\n >\n <template v-if=\"virtualEnabled\">\n <u-multi-select-option\n v-for=\"{ option, index, key, label, offset } of virtualOptions\"\n :option=\"option\"\n :disabled=\"isDisabled(option)\"\n :key=\"key\"\n :style=\"{ transform: `translateY(${offset}px)` }\"\n @check=\"handleCheck(option, $event)\"\n :checked=\"checkedSet.has(option)\"\n :index=\"index\"\n :measure-element=\"measureElement\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ label }}\n </slot>\n </u-multi-select-option>\n </template>\n\n <template v-else>\n <u-multi-select-option\n v-for=\"(option, index) of options\"\n :option=\"option\"\n :disabled=\"isDisabled(option)\"\n :key=\"chainObj(option).get(valueKey)\"\n @check=\"handleCheck(option, $event)\"\n :checked=\"checkedSet.has(option)\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ chainObj(option).get(labelKey) }}\n </slot>\n </u-multi-select-option>\n </template>\n </u-scroll>\n\n <div v-else :class=\"cls.e('empty')\">\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"option of tags\" :key=\"option[valueKey]\" size=\"small\">\n {{ option[labelKey] }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o as chainObj } from '@cat-kit/core'\nimport { useFormFallbackProps, useVirtualizer } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, shallowReactive, watch, provide } from 'vue'\n\nimport type {\n MultiSelectEmits,\n MultiSelectProps,\n ScrollExposed,\n DropdownExposed\n} from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useOptions } from '../select/use-options'\nimport { UTag } from '../tag'\nimport { MultiSelectDIKey } from './di'\nimport UMultiSelectOption from './multi-select-option.vue'\n\ndefineOptions({ name: 'MultiSelect' })\n\nconst props = withDefaults(defineProps<MultiSelectProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n clearable: true,\n visibilityLimit: 3,\n disabled: undefined,\n readonly: undefined,\n minWidth: '220px'\n})\n\nconst emit = defineEmits<MultiSelectEmits>()\n\nconst cls = bem('multi-select')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst scrollRef = shallowRef<ScrollExposed>()\n\nconst hovered = shallowRef(false)\n\nconst { options: rawOptions, queryString, allOptions: rawAllOptions } = useOptions({ props })\n\nconst createdOptions = shallowRef<Record<string, any>[]>([])\n\nconst options = computed(() => {\n const base = rawOptions.value\n if (!props.creatable || !createdOptions.value.length) return base\n\n const { valueKey } = props\n const createdValues = new Set(createdOptions.value.map((o) => chainObj(o).get(valueKey)))\n const deduped = base.filter((o) => !(o.__isTemp && createdValues.has(chainObj(o).get(valueKey))))\n const dedupedValues = new Set(deduped.map((o) => chainObj(o).get(valueKey)))\n const toAdd = createdOptions.value.filter((o) => !dedupedValues.has(chainObj(o).get(valueKey)))\n return [...toAdd, ...deduped]\n})\n\nconst allOptions = computed(() => {\n if (!props.creatable || !createdOptions.value.length) return rawAllOptions.value\n return [...createdOptions.value, ...rawAllOptions.value]\n})\n\nconst virtualEnabled = computed(() => options.value.length > 80)\n\nconst { virtualizer, items } = useVirtualizer({\n estimateSize: () => 40,\n count: computed(() => options.value.length),\n scrollEl: () => scrollRef.value?.containerRef ?? null,\n contentEl: () => (virtualEnabled.value ? (scrollRef.value?.contentRef ?? null) : null)\n})\n\nconst virtualOptions = computed(() => {\n const { valueKey, labelKey } = props\n const _options = options.value\n return items.value.map((v) => {\n const option = _options[v.index]!\n const val = chainObj(option).get(valueKey)\n return {\n option,\n index: v.index,\n val,\n key: v.index,\n offset: v.start,\n label: chainObj(option).get(labelKey)\n }\n })\n})\n\nconst measureElement: (index: number, el: Element | null) => void = (index, el) =>\n virtualizer.measureElement(index, el)\n\nconst filterable = computed(() => {\n return props.filterable || props.creatable || typeof props.options === 'function'\n})\n\nconst model = defineModel<Array<string | number>>()\n\nconst checkedSet = shallowReactive<Set<Record<string, any>>>(new Set())\nconst allChecked = computed(() => {\n return checkedSet.size === options.value.length\n})\nconst indeterminate = computed(() => {\n return checkedSet.size > 0 && !allChecked.value\n})\n\nconst optionsMap = computed(() => {\n const { valueKey } = props\n return new Map<string | number, Record<string, any>>(\n allOptions.value.map((option) => [option[valueKey], option])\n )\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nlet internalChange = false\n\nwatch(\n [model, optionsMap],\n ([model, optionsMap]) => {\n if (internalChange) {\n internalChange = false\n return\n }\n checkedSet.clear()\n if (optionsMap.size && model?.length) {\n model.forEach((v) => {\n const option = optionsMap.get(v)\n option && checkedSet.add(option)\n })\n }\n },\n { immediate: true }\n)\n\nconst emitChange = () => {\n emit('change', Array.from(checkedSet))\n}\n\nconst tags = computed(() => {\n let tags: Record<string, any>[] = []\n let { visibilityLimit } = props\n if (visibilityLimit < 0) {\n visibilityLimit = 0\n }\n\n // 禁用时,显示全部\n if (disabled.value || readonly.value) {\n visibilityLimit = model.value?.length ?? 0\n }\n\n model.value?.slice(0, visibilityLimit).forEach((k) => {\n const option = optionsMap.value.get(k)\n option && tags.push(option)\n })\n\n return tags\n})\n\nconst restTag = computed(() => {\n return (model.value?.length ?? 0) - tags.value.length\n})\n\nconst handleDropdownVisible = (visible: boolean) => {\n if (!visible) {\n queryString.value = ''\n }\n}\n\nconst handleCheck = (option: Record<string, any>, checked: boolean) => {\n const { valueKey, labelKey } = props\n if (checked) {\n if (option.__isTemp && props.creatable) {\n const created: Record<string, any> = {\n [labelKey]: chainObj(option).get(labelKey),\n [valueKey]: chainObj(option).get(valueKey)\n }\n createdOptions.value = [...createdOptions.value, created]\n checkedSet.add(created)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(created).get(valueKey)!]\n queryString.value = ''\n } else if (!checkedSet.has(option)) {\n checkedSet.add(option)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(option).get(valueKey)!]\n }\n } else {\n checkedSet.delete(option)\n const val = chainObj(option).get(valueKey)\n internalChange = true\n model.value = (model.value ?? []).filter((v) => v !== val)\n removeCreatedOption(option)\n }\n\n emitChange()\n dropdownRef.value?.updateDropdown()\n}\n\n/** 全选 */\nconst handleCheckAll = (checked: boolean) => {\n const { valueKey } = props\n if (checked) {\n options.value.forEach((option) => {\n if (!option.__isTemp) checkedSet.add(option)\n })\n internalChange = true\n model.value = Array.from(checkedSet).map((o) => chainObj(o).get(valueKey)!)\n } else {\n checkedSet.clear()\n internalChange = true\n model.value = []\n if (props.creatable) {\n createdOptions.value = []\n }\n }\n\n emitChange()\n dropdownRef.value?.updateDropdown()\n}\n\n/** 清除选项 */\nconst handleClear = () => {\n checkedSet.clear()\n internalChange = true\n model.value = []\n if (props.creatable) {\n createdOptions.value = []\n }\n emit('change', [])\n}\n\nconst handleClose = (option: Record<string, any>) => {\n checkedSet.delete(option)\n const val = chainObj(option).get(props.valueKey)\n internalChange = true\n model.value = (model.value ?? []).filter((v) => v !== val)\n removeCreatedOption(option)\n emitChange()\n}\n\nconst removeCreatedOption = (option: Record<string, any>) => {\n if (!props.creatable || !createdOptions.value.length) return\n const { valueKey } = props\n const val = chainObj(option).get(valueKey)\n createdOptions.value = createdOptions.value.filter((o) => chainObj(o).get(valueKey) !== val)\n}\n\nconst handleCreateByEnter = () => {\n if (!props.creatable) return\n const qs = queryString.value?.trim()\n if (!qs) return\n\n const { labelKey, valueKey } = props\n\n const existingCreated = createdOptions.value.find((o) => chainObj(o).get(valueKey) === qs)\n if (existingCreated) {\n if (!checkedSet.has(existingCreated)) {\n checkedSet.add(existingCreated)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(existingCreated).get(valueKey)!]\n }\n queryString.value = ''\n emitChange()\n dropdownRef.value?.updateDropdown()\n return\n }\n\n const exactMatch = rawOptions.value.find((o) => !o.__isTemp && chainObj(o).get(labelKey) === qs)\n if (exactMatch) {\n if (!checkedSet.has(exactMatch)) {\n checkedSet.add(exactMatch)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(exactMatch).get(valueKey)!]\n }\n queryString.value = ''\n emitChange()\n dropdownRef.value?.updateDropdown()\n return\n }\n\n const created: Record<string, any> = { [labelKey]: qs, [valueKey]: qs }\n createdOptions.value = [...createdOptions.value, created]\n checkedSet.add(created)\n internalChange = true\n model.value = [...(model.value ?? []), qs]\n queryString.value = ''\n emitChange()\n dropdownRef.value?.updateDropdown()\n}\n\nconst isDisabled = (option: Record<string, any>) => {\n const { max } = props\n return max !== undefined && checkedSet.size >= max && !checkedSet.has(option)\n}\n\nconst optionClass = cls.e('option')\nconst rippleClass = cls.e('ripple')\nconst checkboxClass = cls.e('checkbox')\n\nprovide(MultiSelectDIKey, { optionClass, rippleClass, checkboxClass })\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"multi-select.js","names":[],"sources":["../../../src/components/multi-select/multi-select.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :class=\"[cls.b, cls.m(size), bem.is('disabled', disabled)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size), contentClass]\"\n :content-style=\"contentStyle\"\n :min-width=\"minWidth\"\n :width=\"width\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n :disabled=\"disabled\"\n @update:visible=\"handleDropdownVisible\"\n >\n <!-- 触发 -->\n <template #trigger>\n <span :class=\"cls.e('placeholder')\" v-show=\"!model?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"model?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"option of tags\"\n :key=\"option[valueKey]\"\n :closable=\"!disabled\"\n size=\"small\"\n @close=\"handleClose(option)\"\n >\n {{ option[labelKey] }}\n </u-tag>\n <u-tag v-if=\"restTag\" size=\"small\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && model?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <!-- 多选栏 -->\n <div :class=\"cls.e('content-header')\">\n <u-checkbox\n :model-value=\"allChecked\"\n :indeterminate=\"indeterminate\"\n @update:model-value=\"handleCheckAll\"\n :disabled=\"max !== undefined\"\n >\n 全选\n </u-checkbox>\n\n <span> 已选 {{ model?.length }}/{{ max ?? options?.length ?? 0 }} </span>\n </div>\n\n <!-- 过滤器 -->\n <div v-if=\"filterable\" :class=\"cls.e('content-filter')\">\n <u-input\n placeholder=\"输入关键字进行过滤\"\n v-model=\"queryString\"\n @keydown.enter.prevent=\"handleCreateByEnter\"\n >\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <!-- 多选列表 -->\n <!--\n 虚拟化启用时内容容器 height 由 useVirtualizer 命令式写入;\n 模板不再绑定 totalSize,避免尺寸变化引起重渲染。\n -->\n <u-scroll\n tag=\"ul\"\n :class=\"[cls.e('options')]\"\n ref=\"scrollRef\"\n v-if=\"options.length\"\n :content-class=\"[cls.e('options-wrap'), bem.is('virtual', virtualEnabled)]\"\n >\n <template v-if=\"virtualEnabled\">\n <u-multi-select-option\n v-for=\"{ option, index, key, label, offset } of virtualOptions\"\n :option=\"option\"\n :disabled=\"isDisabled(option)\"\n :key=\"key\"\n :style=\"{ transform: `translateY(${offset}px)` }\"\n @check=\"handleCheck(option, $event)\"\n :checked=\"checkedSet.has(option)\"\n :index=\"index\"\n :measure-element=\"measureElement\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ label }}\n </slot>\n </u-multi-select-option>\n </template>\n\n <template v-else>\n <u-multi-select-option\n v-for=\"(option, index) of options\"\n :option=\"option\"\n :disabled=\"isDisabled(option)\"\n :key=\"chainObj(option).get(valueKey)\"\n @check=\"handleCheck(option, $event)\"\n :checked=\"checkedSet.has(option)\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ chainObj(option).get(labelKey) }}\n </slot>\n </u-multi-select-option>\n </template>\n </u-scroll>\n\n <div v-else :class=\"cls.e('empty')\">\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"option of tags\" :key=\"option[valueKey]\" size=\"small\">\n {{ option[labelKey] }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o as chainObj } from '@cat-kit/core'\nimport { useFormFallbackProps, useVirtualizer } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, shallowReactive, watch, provide } from 'vue'\n\nimport type {\n MultiSelectEmits,\n MultiSelectProps,\n ScrollExposed,\n DropdownExposed\n} from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useOptions } from '../select/use-options'\nimport { UTag } from '../tag'\nimport { MultiSelectDIKey } from './di'\nimport UMultiSelectOption from './multi-select-option.vue'\n\ndefineOptions({ name: 'UMultiSelect' })\n\nconst props = withDefaults(defineProps<MultiSelectProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n clearable: true,\n visibilityLimit: 3,\n disabled: undefined,\n readonly: undefined,\n minWidth: '220px'\n})\n\nconst emit = defineEmits<MultiSelectEmits>()\n\nconst cls = bem('multi-select')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst scrollRef = shallowRef<ScrollExposed>()\n\nconst hovered = shallowRef(false)\n\nconst { options: rawOptions, queryString, allOptions: rawAllOptions } = useOptions({ props })\n\nconst createdOptions = shallowRef<Record<string, any>[]>([])\n\nconst options = computed(() => {\n const base = rawOptions.value\n if (!props.creatable || !createdOptions.value.length) return base\n\n const { valueKey } = props\n const createdValues = new Set(createdOptions.value.map((o) => chainObj(o).get(valueKey)))\n const deduped = base.filter((o) => !(o.__isTemp && createdValues.has(chainObj(o).get(valueKey))))\n const dedupedValues = new Set(deduped.map((o) => chainObj(o).get(valueKey)))\n const toAdd = createdOptions.value.filter((o) => !dedupedValues.has(chainObj(o).get(valueKey)))\n return [...toAdd, ...deduped]\n})\n\nconst allOptions = computed(() => {\n if (!props.creatable || !createdOptions.value.length) return rawAllOptions.value\n return [...createdOptions.value, ...rawAllOptions.value]\n})\n\nconst virtualEnabled = computed(() => options.value.length > 80)\n\nconst { virtualizer, items } = useVirtualizer({\n estimateSize: () => 40,\n count: computed(() => options.value.length),\n scrollEl: () => scrollRef.value?.containerRef ?? null,\n contentEl: () => (virtualEnabled.value ? (scrollRef.value?.contentRef ?? null) : null)\n})\n\nconst virtualOptions = computed(() => {\n const { valueKey, labelKey } = props\n const _options = options.value\n return items.value.map((v) => {\n const option = _options[v.index]!\n const val = chainObj(option).get(valueKey)\n return {\n option,\n index: v.index,\n val,\n key: v.index,\n offset: v.start,\n label: chainObj(option).get(labelKey)\n }\n })\n})\n\nconst measureElement: (index: number, el: Element | null) => void = (index, el) =>\n virtualizer.measureElement(index, el)\n\nconst filterable = computed(() => {\n return props.filterable || props.creatable || typeof props.options === 'function'\n})\n\nconst model = defineModel<Array<string | number>>()\n\nconst checkedSet = shallowReactive<Set<Record<string, any>>>(new Set())\nconst allChecked = computed(() => {\n return checkedSet.size === options.value.length\n})\nconst indeterminate = computed(() => {\n return checkedSet.size > 0 && !allChecked.value\n})\n\nconst optionsMap = computed(() => {\n const { valueKey } = props\n return new Map<string | number, Record<string, any>>(\n allOptions.value.map((option) => [option[valueKey], option])\n )\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nlet internalChange = false\n\nwatch(\n [model, optionsMap],\n ([model, optionsMap]) => {\n if (internalChange) {\n internalChange = false\n return\n }\n checkedSet.clear()\n if (optionsMap.size && model?.length) {\n model.forEach((v) => {\n const option = optionsMap.get(v)\n option && checkedSet.add(option)\n })\n }\n },\n { immediate: true }\n)\n\nconst emitChange = () => {\n emit('change', Array.from(checkedSet))\n}\n\nconst tags = computed(() => {\n let tags: Record<string, any>[] = []\n let { visibilityLimit } = props\n if (visibilityLimit < 0) {\n visibilityLimit = 0\n }\n\n // 禁用时,显示全部\n if (disabled.value || readonly.value) {\n visibilityLimit = model.value?.length ?? 0\n }\n\n model.value?.slice(0, visibilityLimit).forEach((k) => {\n const option = optionsMap.value.get(k)\n option && tags.push(option)\n })\n\n return tags\n})\n\nconst restTag = computed(() => {\n return (model.value?.length ?? 0) - tags.value.length\n})\n\nconst handleDropdownVisible = (visible: boolean) => {\n if (!visible) {\n queryString.value = ''\n }\n}\n\nconst handleCheck = (option: Record<string, any>, checked: boolean) => {\n const { valueKey, labelKey } = props\n if (checked) {\n if (option.__isTemp && props.creatable) {\n const created: Record<string, any> = {\n [labelKey]: chainObj(option).get(labelKey),\n [valueKey]: chainObj(option).get(valueKey)\n }\n createdOptions.value = [...createdOptions.value, created]\n checkedSet.add(created)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(created).get(valueKey)!]\n queryString.value = ''\n } else if (!checkedSet.has(option)) {\n checkedSet.add(option)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(option).get(valueKey)!]\n }\n } else {\n checkedSet.delete(option)\n const val = chainObj(option).get(valueKey)\n internalChange = true\n model.value = (model.value ?? []).filter((v) => v !== val)\n removeCreatedOption(option)\n }\n\n emitChange()\n dropdownRef.value?.updateDropdown()\n}\n\n/** 全选 */\nconst handleCheckAll = (checked: boolean) => {\n const { valueKey } = props\n if (checked) {\n options.value.forEach((option) => {\n if (!option.__isTemp) checkedSet.add(option)\n })\n internalChange = true\n model.value = Array.from(checkedSet).map((o) => chainObj(o).get(valueKey)!)\n } else {\n checkedSet.clear()\n internalChange = true\n model.value = []\n if (props.creatable) {\n createdOptions.value = []\n }\n }\n\n emitChange()\n dropdownRef.value?.updateDropdown()\n}\n\n/** 清除选项 */\nconst handleClear = () => {\n checkedSet.clear()\n internalChange = true\n model.value = []\n if (props.creatable) {\n createdOptions.value = []\n }\n emit('change', [])\n}\n\nconst handleClose = (option: Record<string, any>) => {\n checkedSet.delete(option)\n const val = chainObj(option).get(props.valueKey)\n internalChange = true\n model.value = (model.value ?? []).filter((v) => v !== val)\n removeCreatedOption(option)\n emitChange()\n}\n\nconst removeCreatedOption = (option: Record<string, any>) => {\n if (!props.creatable || !createdOptions.value.length) return\n const { valueKey } = props\n const val = chainObj(option).get(valueKey)\n createdOptions.value = createdOptions.value.filter((o) => chainObj(o).get(valueKey) !== val)\n}\n\nconst handleCreateByEnter = () => {\n if (!props.creatable) return\n const qs = queryString.value?.trim()\n if (!qs) return\n\n const { labelKey, valueKey } = props\n\n const existingCreated = createdOptions.value.find((o) => chainObj(o).get(valueKey) === qs)\n if (existingCreated) {\n if (!checkedSet.has(existingCreated)) {\n checkedSet.add(existingCreated)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(existingCreated).get(valueKey)!]\n }\n queryString.value = ''\n emitChange()\n dropdownRef.value?.updateDropdown()\n return\n }\n\n const exactMatch = rawOptions.value.find((o) => !o.__isTemp && chainObj(o).get(labelKey) === qs)\n if (exactMatch) {\n if (!checkedSet.has(exactMatch)) {\n checkedSet.add(exactMatch)\n internalChange = true\n model.value = [...(model.value ?? []), chainObj(exactMatch).get(valueKey)!]\n }\n queryString.value = ''\n emitChange()\n dropdownRef.value?.updateDropdown()\n return\n }\n\n const created: Record<string, any> = { [labelKey]: qs, [valueKey]: qs }\n createdOptions.value = [...createdOptions.value, created]\n checkedSet.add(created)\n internalChange = true\n model.value = [...(model.value ?? []), qs]\n queryString.value = ''\n emitChange()\n dropdownRef.value?.updateDropdown()\n}\n\nconst isDisabled = (option: Record<string, any>) => {\n const { max } = props\n return max !== undefined && checkedSet.size >= max && !checkedSet.has(option)\n}\n\nconst optionClass = cls.e('option')\nconst rippleClass = cls.e('ripple')\nconst checkboxClass = cls.e('checkbox')\n\nprovide(MultiSelectDIKey, { optionClass, rippleClass, checkboxClass })\n</script>\n"],"mappings":"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"}
@@ -26,13 +26,13 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
26
26
  "onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
27
27
  onChange?: ((options: Record<string, any>[]) => any) | undefined;
28
28
  }>, {
29
- readonly: boolean;
30
- disabled: boolean;
31
29
  labelKey: string;
32
30
  valueKey: string;
33
- minWidth: string;
34
31
  placeholder: string;
35
32
  clearable: boolean;
33
+ minWidth: string;
34
+ disabled: boolean;
35
+ readonly: boolean;
36
36
  visibilityLimit: number;
37
37
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
38
38
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;