@veltra/desktop 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
  2. package/dist/components/action/action.js.map +1 -1
  3. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  4. package/dist/components/badge/badge.js.map +1 -1
  5. package/dist/components/badge/style.d.ts +1 -1
  6. package/dist/components/batch-edit/batch-edit-form.js +8 -12
  7. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  8. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  9. package/dist/components/batch-edit/batch-edit.js +2 -1
  10. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  11. package/dist/components/batch-edit/di.js.map +1 -1
  12. package/dist/components/batch-edit/index.d.ts +2 -2
  13. package/dist/components/batch-edit/use-edit-state.js +11 -9
  14. package/dist/components/batch-edit/use-edit-state.js.map +1 -1
  15. package/dist/components/batch-edit/use-handlers.js.map +1 -1
  16. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  17. package/dist/components/breadcrumb/style.d.ts +1 -1
  18. package/dist/components/button/button-group.js.map +1 -1
  19. package/dist/components/button/button.js.map +1 -1
  20. package/dist/components/calendar/calendar.js.map +1 -1
  21. package/dist/components/calendar/style.d.ts +1 -1
  22. package/dist/components/card/card-action.js.map +1 -1
  23. package/dist/components/card/card-content.js.map +1 -1
  24. package/dist/components/card/card-cover.js.map +1 -1
  25. package/dist/components/card/card-header.js.map +1 -1
  26. package/dist/components/card/card.js.map +1 -1
  27. package/dist/components/card/style.d.ts +1 -1
  28. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  29. package/dist/components/cascade/cascade.js.map +1 -1
  30. package/dist/components/check-tag/check-tag.js.map +1 -1
  31. package/dist/components/check-tag/style.d.ts +1 -1
  32. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  33. package/dist/components/checkbox/checkbox.js.map +1 -1
  34. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  35. package/dist/components/code-editor/basic-setup.js +2 -2
  36. package/dist/components/code-editor/code-editor.js +2 -2
  37. package/dist/components/code-editor/code-editor.js.map +1 -1
  38. package/dist/components/code-editor/lang-loaders.js +1 -1
  39. package/dist/components/code-editor/shell-extension.js +2 -2
  40. package/dist/components/collapse/collapse-item.js.map +1 -1
  41. package/dist/components/collapse/collapse.js.map +1 -1
  42. package/dist/components/collapse/style.d.ts +1 -1
  43. package/dist/components/condition-editor/components/condition-group.js.map +1 -1
  44. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  45. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  46. package/dist/components/condition-editor/index.d.ts +2 -2
  47. package/dist/components/contextmenu/contextmenu-item.js +13 -6
  48. package/dist/components/contextmenu/contextmenu-item.js.map +1 -1
  49. package/dist/components/contextmenu/contextmenu-panel.js +12 -6
  50. package/dist/components/contextmenu/contextmenu-panel.js.map +1 -1
  51. package/dist/components/contextmenu/contextmenu-sub.js.map +1 -1
  52. package/dist/components/contextmenu/contextmenu.js.map +1 -1
  53. package/dist/components/contextmenu/di.d.ts +15 -0
  54. package/dist/components/contextmenu/index.d.ts +3 -2
  55. package/dist/components/contextmenu/style2.css +13 -0
  56. package/dist/components/date-panel/date-panel.js.map +1 -1
  57. package/dist/components/date-panel/headers/day.js.map +1 -1
  58. package/dist/components/date-panel/headers/month.js.map +1 -1
  59. package/dist/components/date-panel/headers/year.js.map +1 -1
  60. package/dist/components/date-panel/panels/day.js.map +1 -1
  61. package/dist/components/date-panel/panels/month.js.map +1 -1
  62. package/dist/components/date-panel/panels/year.js.map +1 -1
  63. package/dist/components/date-panel/style.d.ts +1 -1
  64. package/dist/components/date-picker/date-picker.js.map +1 -1
  65. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  66. package/dist/components/dialog/dialog.js.map +1 -1
  67. package/dist/components/drawer/drawer.js.map +1 -1
  68. package/dist/components/dropdown/dropdown.js.map +1 -1
  69. package/dist/components/dual-nav/dual-nav-app.js.map +1 -1
  70. package/dist/components/dual-nav/dual-nav.js.map +1 -1
  71. package/dist/components/empty/empty.js.map +1 -1
  72. package/dist/components/empty/style.d.ts +1 -1
  73. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  74. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  75. package/dist/components/expression-editor/core/editor.js.map +1 -1
  76. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  77. package/dist/components/expression-editor/style.d.ts +1 -1
  78. package/dist/components/file-picker/file-picker.js.map +1 -1
  79. package/dist/components/file-picker/style.d.ts +1 -1
  80. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  81. package/dist/components/file-viewer/helper.js +1 -38
  82. package/dist/components/file-viewer/helper.js.map +1 -1
  83. package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
  84. package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
  85. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  86. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  87. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  88. package/dist/components/file-viewer/previewers/sheet-previewer.js +68 -37
  89. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  90. package/dist/components/file-viewer/previewers/text-previewer.js +2 -2
  91. package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
  92. package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
  93. package/dist/components/file-viewer/style.d.ts +1 -1
  94. package/dist/components/float-button/float-button.js.map +1 -1
  95. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/components/form/style.d.ts +1 -1
  97. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/form-item/style.d.ts +1 -1
  99. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  100. package/dist/components/gantt-chart/style.d.ts +1 -1
  101. package/dist/components/grid/grid-item.js.map +1 -1
  102. package/dist/components/grid/grid.js +3 -2
  103. package/dist/components/grid/grid.js.map +1 -1
  104. package/dist/components/grid/style.d.ts +1 -1
  105. package/dist/components/grid-input/grid-input.js.map +1 -1
  106. package/dist/components/grid-input/style.d.ts +1 -1
  107. package/dist/components/group-input/group-input.js.map +1 -1
  108. package/dist/components/group-nav/group-nav-item.js.map +1 -1
  109. package/dist/components/group-nav/group-nav.js.map +1 -1
  110. package/dist/components/group-nav/style.d.ts +1 -1
  111. package/dist/components/icon/icon.js.map +1 -1
  112. package/dist/components/icon/style.d.ts +1 -1
  113. package/dist/components/index.d.ts +91 -156
  114. package/dist/components/index.js +4 -1
  115. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/kbd/kbd.js.map +1 -1
  117. package/dist/components/kbd/style.d.ts +1 -1
  118. package/dist/components/layout/layout-resizer.js.map +1 -1
  119. package/dist/components/layout/layout.js.map +1 -1
  120. package/dist/components/layout/style.d.ts +1 -1
  121. package/dist/components/list/list-item.js.map +1 -1
  122. package/dist/components/list/list.js.map +1 -1
  123. package/dist/components/loading/directive.js +2 -1
  124. package/dist/components/loading/directive.js.map +1 -1
  125. package/dist/components/loading/index.d.ts +2 -2
  126. package/dist/components/loading/loading.js.map +1 -1
  127. package/dist/components/message/index.d.ts +2 -2
  128. package/dist/components/message/message-box.js.map +1 -1
  129. package/dist/components/message/message.js.map +1 -1
  130. package/dist/components/message/style.d.ts +1 -1
  131. package/dist/components/message-confirm/index.d.ts +2 -2
  132. package/dist/components/message-confirm/message-confirm-box.js.map +1 -1
  133. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  134. package/dist/components/message-confirm/style.d.ts +1 -1
  135. package/dist/components/message-confirm/style2.css +18 -0
  136. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  137. package/dist/components/multi-select/multi-select.js +6 -3
  138. package/dist/components/multi-select/multi-select.js.map +1 -1
  139. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  140. package/dist/components/nav/nav-icon.js.map +1 -1
  141. package/dist/components/nav/nav-item-collapsed.js.map +1 -1
  142. package/dist/components/nav/nav-item.js +4 -2
  143. package/dist/components/nav/nav-item.js.map +1 -1
  144. package/dist/components/nav/nav-sub-collapsed.js.map +1 -1
  145. package/dist/components/nav/nav-sub.js.map +1 -1
  146. package/dist/components/nav/nav.js.map +1 -1
  147. package/dist/components/nav/style.d.ts +1 -1
  148. package/dist/components/node-render/style.d.ts +1 -1
  149. package/dist/components/notification/index.d.ts +2 -2
  150. package/dist/components/notification/notification-box.js +2 -2
  151. package/dist/components/notification/notification-box.js.map +1 -1
  152. package/dist/components/notification/notification.js.map +1 -1
  153. package/dist/components/notification/style.d.ts +1 -1
  154. package/dist/components/number/number.js.map +1 -1
  155. package/dist/components/number/style.d.ts +1 -1
  156. package/dist/components/number-input/number-input.js +2 -1
  157. package/dist/components/number-input/number-input.js.map +1 -1
  158. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  159. package/dist/components/paginator/paginator.js.map +1 -1
  160. package/dist/components/palette/palette-alpha.js.map +1 -1
  161. package/dist/components/palette/palette-color-switch.js.map +1 -1
  162. package/dist/components/palette/palette-hue.js.map +1 -1
  163. package/dist/components/palette/palette-sv.js.map +1 -1
  164. package/dist/components/palette/palette.js.map +1 -1
  165. package/dist/components/password-input/password-input.js.map +1 -1
  166. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  167. package/dist/components/progress/progress.js.map +1 -1
  168. package/dist/components/progress/style.d.ts +1 -1
  169. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  170. package/dist/components/progress-nodes/style.d.ts +1 -1
  171. package/dist/components/radio/radio.js.map +1 -1
  172. package/dist/components/radio-group/radio-group.js.map +1 -1
  173. package/dist/components/rich-text-editor/rich-text-editor.js +2 -1
  174. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  175. package/dist/components/rich-text-editor/style.d.ts +1 -1
  176. package/dist/components/rich-text-editor/toolbar.js +3 -4
  177. package/dist/components/rich-text-editor/toolbar.js.map +1 -1
  178. package/dist/components/scroll/scroll-bar.js.map +1 -1
  179. package/dist/components/scroll/scroll.js.map +1 -1
  180. package/dist/components/scroll/style.d.ts +1 -1
  181. package/dist/components/select/select.js.map +1 -1
  182. package/dist/components/slider/slider-thumb.js.map +1 -1
  183. package/dist/components/slider/slider.js.map +1 -1
  184. package/dist/components/slider/style.d.ts +1 -1
  185. package/dist/components/steps/steps.js.map +1 -1
  186. package/dist/components/steps/style.d.ts +1 -1
  187. package/dist/components/switch/style.d.ts +1 -1
  188. package/dist/components/switch/switch.js.map +1 -1
  189. package/dist/components/table/index.d.ts +2 -2
  190. package/dist/components/table/node/col.d.ts +1 -49
  191. package/dist/components/table/table-body.js.map +1 -1
  192. package/dist/components/table/table-cell.js.map +1 -1
  193. package/dist/components/table/table-foot.js.map +1 -1
  194. package/dist/components/table/table-row.js +2 -1
  195. package/dist/components/table/table-row.js.map +1 -1
  196. package/dist/components/table/table.js.map +1 -1
  197. package/dist/components/table/use-check.js +2 -1
  198. package/dist/components/table/use-check.js.map +1 -1
  199. package/dist/components/table/use-columns.d.ts +1 -1
  200. package/dist/components/table/use-rows.js +2 -1
  201. package/dist/components/table/use-rows.js.map +1 -1
  202. package/dist/components/table-editor/table-editor.js.map +1 -1
  203. package/dist/components/tabs/tabs-horizontal.js +2 -1
  204. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  205. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  206. package/dist/components/tabs/tabs.js.map +1 -1
  207. package/dist/components/tabs/use-tabs-bar.js +10 -25
  208. package/dist/components/tabs/use-tabs-bar.js.map +1 -1
  209. package/dist/components/tag/style.d.ts +1 -1
  210. package/dist/components/tag/tag.js.map +1 -1
  211. package/dist/components/text/style.d.ts +1 -1
  212. package/dist/components/text/text.js.map +1 -1
  213. package/dist/components/textarea/textarea.js.map +1 -1
  214. package/dist/components/theme/theme.js +3 -2
  215. package/dist/components/theme/theme.js.map +1 -1
  216. package/dist/components/tip/style.d.ts +1 -1
  217. package/dist/components/tip/tip.js.map +1 -1
  218. package/dist/components/tree/tree-node.js.map +1 -1
  219. package/dist/components/tree/tree.js.map +1 -1
  220. package/dist/components/tree-select/tree-select.js.map +1 -1
  221. package/dist/components/watermark/style.d.ts +1 -1
  222. package/dist/components/watermark/watermark.js.map +1 -1
  223. package/dist/index.d.ts +92 -96
  224. package/dist/index.js +2 -1
  225. package/dist/node_modules/.bun/@codemirror_autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js +2 -2
  226. package/dist/node_modules/.bun/@codemirror_autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js.map +1 -1
  227. package/dist/node_modules/.bun/@codemirror_commands@6.10.4/node_modules/@codemirror/commands/dist/index.js +3 -3
  228. package/dist/node_modules/.bun/@codemirror_commands@6.10.4/node_modules/@codemirror/commands/dist/index.js.map +1 -1
  229. package/dist/node_modules/.bun/@codemirror_lang-css@6.3.1/node_modules/@codemirror/lang-css/dist/index.js.map +1 -1
  230. package/dist/node_modules/.bun/@codemirror_lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js +5 -4
  231. package/dist/node_modules/.bun/@codemirror_lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js.map +1 -1
  232. package/dist/node_modules/.bun/@codemirror_lang-javascript@6.2.5/node_modules/@codemirror/lang-javascript/dist/index.js +2 -2
  233. package/dist/node_modules/.bun/{@codemirror_lang-markdown@6.5.1 → @codemirror_lang-markdown@6.5.2}/node_modules/@codemirror/lang-markdown/dist/index.js +4 -3
  234. package/dist/node_modules/.bun/@codemirror_lang-markdown@6.5.2/node_modules/@codemirror/lang-markdown/dist/index.js.map +1 -0
  235. package/dist/node_modules/.bun/@codemirror_lang-sql@6.10.0/node_modules/@codemirror/lang-sql/dist/index.js +2 -1
  236. package/dist/node_modules/.bun/@codemirror_lang-sql@6.10.0/node_modules/@codemirror/lang-sql/dist/index.js.map +1 -1
  237. package/dist/node_modules/.bun/@codemirror_language@6.12.4/node_modules/@codemirror/language/dist/index.js +2 -2
  238. package/dist/node_modules/.bun/@codemirror_language@6.12.4/node_modules/@codemirror/language/dist/index.js.map +1 -1
  239. package/dist/node_modules/.bun/@codemirror_lint@6.9.7/node_modules/@codemirror/lint/dist/index.js +4 -3
  240. package/dist/node_modules/.bun/@codemirror_lint@6.9.7/node_modules/@codemirror/lint/dist/index.js.map +1 -1
  241. package/dist/node_modules/.bun/@codemirror_search@6.7.1/node_modules/@codemirror/search/dist/index.js +2 -2
  242. package/dist/node_modules/.bun/@codemirror_search@6.7.1/node_modules/@codemirror/search/dist/index.js.map +1 -1
  243. package/dist/node_modules/.bun/{@codemirror_state@6.7.0 → @codemirror_state@6.7.1}/node_modules/@codemirror/state/dist/index.js +13 -3
  244. package/dist/node_modules/.bun/@codemirror_state@6.7.1/node_modules/@codemirror/state/dist/index.js.map +1 -0
  245. package/dist/node_modules/.bun/@codemirror_theme-one-dark@6.1.3/node_modules/@codemirror/theme-one-dark/dist/index.js +1 -1
  246. package/dist/node_modules/.bun/@codemirror_theme-one-dark@6.1.3/node_modules/@codemirror/theme-one-dark/dist/index.js.map +1 -1
  247. package/dist/node_modules/.bun/{@codemirror_view@6.43.4 → @codemirror_view@6.43.8}/node_modules/@codemirror/view/dist/index.js +86 -64
  248. package/dist/node_modules/.bun/@codemirror_view@6.43.8/node_modules/@codemirror/view/dist/index.js.map +1 -0
  249. package/dist/node_modules/.bun/@lezer_common@1.5.2/node_modules/@lezer/common/dist/index.js.map +1 -1
  250. package/dist/node_modules/.bun/@lezer_css@1.3.4/node_modules/@lezer/css/dist/index.js.map +1 -1
  251. package/dist/node_modules/.bun/@lezer_highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js.map +1 -1
  252. package/dist/node_modules/.bun/@lezer_html@1.3.13/node_modules/@lezer/html/dist/index.js.map +1 -1
  253. package/dist/node_modules/.bun/@lezer_javascript@1.5.4/node_modules/@lezer/javascript/dist/index.js.map +1 -1
  254. package/dist/node_modules/.bun/@lezer_lr@1.4.10/node_modules/@lezer/lr/dist/index.js.map +1 -1
  255. package/dist/node_modules/.bun/@lezer_markdown@1.7.2/node_modules/@lezer/markdown/dist/index.js +1 -1
  256. package/dist/node_modules/.bun/@lezer_markdown@1.7.2/node_modules/@lezer/markdown/dist/index.js.map +1 -1
  257. package/dist/node_modules/.bun/@marijn_find-cluster-break@1.0.2/node_modules/@marijn/find-cluster-break/src/index.js.map +1 -1
  258. package/dist/node_modules/.bun/style-mod@4.1.3/node_modules/style-mod/src/style-mod.js.map +1 -1
  259. package/dist/types/contextmenu.d.ts +10 -4
  260. package/dist/types/index.d.ts +1 -7
  261. package/package.json +34 -30
  262. package/src/components/batch-edit/__test__/batch-edit.test.ts +199 -0
  263. package/src/components/batch-edit/batch-edit-form.vue +8 -8
  264. package/src/components/batch-edit/batch-edit.vue +2 -1
  265. package/src/components/batch-edit/di.ts +2 -0
  266. package/src/components/batch-edit/use-edit-state.ts +19 -12
  267. package/src/components/contextmenu/__test__/contextmenu.test.ts +165 -0
  268. package/src/components/contextmenu/contextmenu-item.vue +7 -4
  269. package/src/components/contextmenu/contextmenu-panel.vue +7 -4
  270. package/src/components/contextmenu/index.ts +1 -0
  271. package/src/components/contextmenu/style.scss +16 -0
  272. package/src/components/file-viewer/helper.ts +0 -53
  273. package/src/components/file-viewer/previewers/sheet-previewer.vue +91 -46
  274. package/src/components/message-confirm/style.scss +19 -0
  275. package/src/components/notification/style.scss +16 -4
  276. package/src/components/radio-group/style.scss +1 -1
  277. package/src/components/slider/style.scss +1 -1
  278. package/src/components/tabs/use-tabs-bar.ts +15 -20
  279. package/src/types/contextmenu.ts +10 -4
  280. package/dist/components/action/action-group.vue.d.ts +0 -25
  281. package/dist/components/action/action.vue.d.ts +0 -33
  282. package/dist/components/action/index.d.ts +0 -3
  283. package/dist/components/auto-complete/auto-complete.vue.d.ts +0 -41
  284. package/dist/components/auto-complete/index.d.ts +0 -2
  285. package/dist/components/badge/badge.vue.d.ts +0 -20
  286. package/dist/components/badge/index.d.ts +0 -2
  287. package/dist/components/batch-edit/batch-edit.vue.d.ts +0 -45
  288. package/dist/components/breadcrumb/breadcrumb.vue.d.ts +0 -24
  289. package/dist/components/breadcrumb/index.d.ts +0 -2
  290. package/dist/components/button/button-group.vue.d.ts +0 -19
  291. package/dist/components/button/button.vue.d.ts +0 -27
  292. package/dist/components/button/index.d.ts +0 -3
  293. package/dist/components/calendar/calendar.vue.d.ts +0 -17
  294. package/dist/components/calendar/index.d.ts +0 -2
  295. package/dist/components/card/card-action.vue.d.ts +0 -18
  296. package/dist/components/card/card-content.vue.d.ts +0 -18
  297. package/dist/components/card/card-cover.vue.d.ts +0 -8
  298. package/dist/components/card/card-header.vue.d.ts +0 -16
  299. package/dist/components/card/card.vue.d.ts +0 -18
  300. package/dist/components/card/index.d.ts +0 -6
  301. package/dist/components/cascade/cascade.vue.d.ts +0 -31
  302. package/dist/components/cascade/index.d.ts +0 -2
  303. package/dist/components/check-tag/check-tag.vue.d.ts +0 -22
  304. package/dist/components/check-tag/index.d.ts +0 -2
  305. package/dist/components/checkbox/checkbox-button.vue.d.ts +0 -35
  306. package/dist/components/checkbox/checkbox.vue.d.ts +0 -34
  307. package/dist/components/checkbox/index.d.ts +0 -3
  308. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +0 -24
  309. package/dist/components/checkbox-group/index.d.ts +0 -2
  310. package/dist/components/code-editor/code-editor.vue.d.ts +0 -30
  311. package/dist/components/code-editor/index.d.ts +0 -2
  312. package/dist/components/collapse/collapse-item.vue.d.ts +0 -32
  313. package/dist/components/collapse/collapse.vue.d.ts +0 -27
  314. package/dist/components/collapse/index.d.ts +0 -3
  315. package/dist/components/condition-editor/condition-editor.vue.d.ts +0 -15
  316. package/dist/components/contextmenu/contextmenu.vue.d.ts +0 -14
  317. package/dist/components/date-panel/date-panel.vue.d.ts +0 -17
  318. package/dist/components/date-panel/index.d.ts +0 -2
  319. package/dist/components/date-picker/date-picker.vue.d.ts +0 -18
  320. package/dist/components/date-picker/index.d.ts +0 -2
  321. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +0 -18
  322. package/dist/components/date-range-picker/index.d.ts +0 -2
  323. package/dist/components/dialog/dialog.vue.d.ts +0 -43
  324. package/dist/components/dialog/index.d.ts +0 -2
  325. package/dist/components/drawer/drawer.vue.d.ts +0 -36
  326. package/dist/components/drawer/index.d.ts +0 -2
  327. package/dist/components/dropdown/dropdown.vue.d.ts +0 -30
  328. package/dist/components/dropdown/index.d.ts +0 -2
  329. package/dist/components/dual-nav/dual-nav.vue.d.ts +0 -15
  330. package/dist/components/dual-nav/index.d.ts +0 -2
  331. package/dist/components/empty/empty.vue.d.ts +0 -11
  332. package/dist/components/empty/index.d.ts +0 -2
  333. package/dist/components/expression-editor/expression-editor.vue.d.ts +0 -16
  334. package/dist/components/expression-editor/index.d.ts +0 -2
  335. package/dist/components/file-picker/file-picker.vue.d.ts +0 -27
  336. package/dist/components/file-picker/index.d.ts +0 -2
  337. package/dist/components/file-viewer/file-viewer.vue.d.ts +0 -40
  338. package/dist/components/file-viewer/index.d.ts +0 -2
  339. package/dist/components/file-viewer/sheet-parser.js +0 -46
  340. package/dist/components/file-viewer/sheet-parser.js.map +0 -1
  341. package/dist/components/float-button/float-button.vue.d.ts +0 -12
  342. package/dist/components/float-button/index.d.ts +0 -2
  343. package/dist/components/form/form.vue.d.ts +0 -23
  344. package/dist/components/form/index.d.ts +0 -2
  345. package/dist/components/form-item/form-item.vue.d.ts +0 -21
  346. package/dist/components/form-item/index.d.ts +0 -2
  347. package/dist/components/gantt-chart/gantt-chart.vue.d.ts +0 -8
  348. package/dist/components/gantt-chart/index.d.ts +0 -2
  349. package/dist/components/grid/grid-item.vue.d.ts +0 -20
  350. package/dist/components/grid/grid.vue.d.ts +0 -27
  351. package/dist/components/grid/index.d.ts +0 -3
  352. package/dist/components/grid-input/grid-input.vue.d.ts +0 -19
  353. package/dist/components/grid-input/index.d.ts +0 -2
  354. package/dist/components/group-input/group-input.vue.d.ts +0 -26
  355. package/dist/components/group-input/index.d.ts +0 -2
  356. package/dist/components/group-nav/group-nav.vue.d.ts +0 -12
  357. package/dist/components/group-nav/index.d.ts +0 -2
  358. package/dist/components/icon/icon.vue.d.ts +0 -18
  359. package/dist/components/icon/index.d.ts +0 -2
  360. package/dist/components/input/index.d.ts +0 -2
  361. package/dist/components/input/input.vue.d.ts +0 -50
  362. package/dist/components/kbd/kbd.vue.d.ts +0 -16
  363. package/dist/components/layout/index.d.ts +0 -2
  364. package/dist/components/layout/layout.vue.d.ts +0 -20
  365. package/dist/components/list/index.d.ts +0 -3
  366. package/dist/components/list/list-item.vue.d.ts +0 -16
  367. package/dist/components/list/list.vue.d.ts +0 -21
  368. package/dist/components/loading/loading.vue.d.ts +0 -11
  369. package/dist/components/message/message.vue.d.ts +0 -16
  370. package/dist/components/message-confirm/message-confirm.vue.d.ts +0 -19
  371. package/dist/components/multi-select/index.d.ts +0 -2
  372. package/dist/components/multi-select/multi-select.vue.d.ts +0 -48
  373. package/dist/components/multi-tree-select/index.d.ts +0 -2
  374. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +0 -44
  375. package/dist/components/nav/index.d.ts +0 -4
  376. package/dist/components/nav/nav-item.vue.d.ts +0 -12
  377. package/dist/components/nav/nav-sub.vue.d.ts +0 -13
  378. package/dist/components/nav/nav.vue.d.ts +0 -19
  379. package/dist/components/notification/notification.vue.d.ts +0 -18
  380. package/dist/components/number/index.d.ts +0 -2
  381. package/dist/components/number/number.vue.d.ts +0 -11
  382. package/dist/components/number-input/index.d.ts +0 -2
  383. package/dist/components/number-input/number-input.vue.d.ts +0 -39
  384. package/dist/components/number-range-input/index.d.ts +0 -2
  385. package/dist/components/number-range-input/number-range-input.vue.d.ts +0 -36
  386. package/dist/components/paginator/index.d.ts +0 -2
  387. package/dist/components/paginator/paginator.vue.d.ts +0 -29
  388. package/dist/components/palette/index.d.ts +0 -2
  389. package/dist/components/palette/palette.vue.d.ts +0 -20
  390. package/dist/components/password-input/index.d.ts +0 -2
  391. package/dist/components/password-input/password-input.vue.d.ts +0 -30
  392. package/dist/components/pop-confirm/index.d.ts +0 -2
  393. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +0 -33
  394. package/dist/components/progress/index.d.ts +0 -2
  395. package/dist/components/progress/progress.vue.d.ts +0 -25
  396. package/dist/components/progress-nodes/index.d.ts +0 -2
  397. package/dist/components/progress-nodes/progress-nodes.vue.d.ts +0 -36
  398. package/dist/components/radio/index.d.ts +0 -2
  399. package/dist/components/radio/radio.vue.d.ts +0 -31
  400. package/dist/components/radio-group/index.d.ts +0 -2
  401. package/dist/components/radio-group/radio-group.vue.d.ts +0 -26
  402. package/dist/components/rich-text-editor/index.d.ts +0 -2
  403. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +0 -23
  404. package/dist/components/scroll/index.d.ts +0 -2
  405. package/dist/components/scroll/scroll.vue.d.ts +0 -28
  406. package/dist/components/select/index.d.ts +0 -2
  407. package/dist/components/select/select.vue.d.ts +0 -38
  408. package/dist/components/slider/index.d.ts +0 -2
  409. package/dist/components/slider/slider.vue.d.ts +0 -21
  410. package/dist/components/steps/index.d.ts +0 -2
  411. package/dist/components/steps/steps.vue.d.ts +0 -29
  412. package/dist/components/switch/index.d.ts +0 -2
  413. package/dist/components/switch/switch.vue.d.ts +0 -24
  414. package/dist/components/table/node/row.d.ts +0 -49
  415. package/dist/components/table/table.vue.d.ts +0 -54
  416. package/dist/components/table-editor/index.d.ts +0 -2
  417. package/dist/components/table-editor/table-editor.vue.d.ts +0 -12
  418. package/dist/components/tabs/index.d.ts +0 -4
  419. package/dist/components/tabs/tabs-horizontal.vue.d.ts +0 -40
  420. package/dist/components/tabs/tabs-vertical.vue.d.ts +0 -39
  421. package/dist/components/tabs/tabs.vue.d.ts +0 -36
  422. package/dist/components/tag/index.d.ts +0 -2
  423. package/dist/components/tag/tag.vue.d.ts +0 -22
  424. package/dist/components/text/index.d.ts +0 -2
  425. package/dist/components/text/text.vue.d.ts +0 -10
  426. package/dist/components/textarea/index.d.ts +0 -2
  427. package/dist/components/textarea/textarea.vue.d.ts +0 -34
  428. package/dist/components/theme/index.d.ts +0 -2
  429. package/dist/components/theme/theme.vue.d.ts +0 -8
  430. package/dist/components/tip/index.d.ts +0 -2
  431. package/dist/components/tip/tip.vue.d.ts +0 -31
  432. package/dist/components/tree/di.d.ts +0 -12
  433. package/dist/components/tree/index.d.ts +0 -2
  434. package/dist/components/tree/tree.vue.d.ts +0 -40
  435. package/dist/components/tree-select/index.d.ts +0 -2
  436. package/dist/components/tree-select/tree-select.vue.d.ts +0 -48
  437. package/dist/components/watermark/index.d.ts +0 -2
  438. package/dist/components/watermark/watermark.vue.d.ts +0 -21
  439. package/dist/node_modules/.bun/@codemirror_lang-markdown@6.5.1/node_modules/@codemirror/lang-markdown/dist/index.js.map +0 -1
  440. package/dist/node_modules/.bun/@codemirror_state@6.7.0/node_modules/@codemirror/state/dist/index.js.map +0 -1
  441. package/dist/node_modules/.bun/@codemirror_view@6.43.4/node_modules/@codemirror/view/dist/index.js.map +0 -1
  442. package/src/components/file-viewer/sheet-parser.ts +0 -52
@@ -1,7 +1,7 @@
1
1
  import _sfc_main$1 from "../icon/icon.js";
2
2
  import { ContextmenuPanelDIKey, ContextmenuRootDIKey } from "./di.js";
3
3
  import { getMenuDisabled } from "./helper.js";
4
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, resolveDynamicComponent, shallowRef, toDisplayString, unref, withCtx, withDirectives } from "vue";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, resolveDynamicComponent, shallowRef, toDisplayString, unref, withCtx, withDirectives, withModifiers } from "vue";
5
5
  import { bem } from "@veltra/utils";
6
6
  import { Loading } from "@veltra/icons/normal";
7
7
  import { vRipple } from "@veltra/directives";
@@ -16,7 +16,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
16
16
  const loading = shallowRef(false);
17
17
  const disabled = computed(() => getMenuDisabled(__props.menu));
18
18
  function handleClickMenu() {
19
- if (disabled.value || loading.value) return;
19
+ if (disabled.value || loading.value || __props.menu.keepOpen) return;
20
20
  onItemClickStart();
21
21
  loading.value = true;
22
22
  const done = () => {
@@ -36,7 +36,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
36
36
  ]),
37
37
  onClick: handleClickMenu
38
38
  }, [createElementVNode("div", { class: normalizeClass(unref(cls).e("item-content")) }, [
39
- unref(showIconColumn) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [loading.value ? (openBlock(), createBlock(unref(_sfc_main$1), {
39
+ unref(showIconColumn) && !__props.menu.render ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [loading.value ? (openBlock(), createBlock(unref(_sfc_main$1), {
40
40
  key: 0,
41
41
  class: normalizeClass(unref(bem).is("loading"))
42
42
  }, {
@@ -49,12 +49,19 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
49
49
  key: 2,
50
50
  class: normalizeClass(unref(cls).e("icon-place"))
51
51
  }, null, 2))], 64)) : createCommentVNode("v-if", true),
52
- createElementVNode("span", { class: normalizeClass(unref(cls).e("label")) }, toDisplayString(__props.menu.label), 3),
53
- unref(showArrowColumn) ? (openBlock(), createElementBlock("i", {
52
+ __props.menu.render ? (openBlock(), createElementBlock("div", {
54
53
  key: 1,
54
+ class: normalizeClass(unref(cls).e("custom")),
55
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
56
+ }, [(openBlock(), createBlock(resolveDynamicComponent(__props.menu.render)))], 2)) : (openBlock(), createElementBlock("span", {
57
+ key: 2,
58
+ class: normalizeClass(unref(cls).e("label"))
59
+ }, toDisplayString(__props.menu.label), 3)),
60
+ unref(showArrowColumn) ? (openBlock(), createElementBlock("i", {
61
+ key: 3,
55
62
  class: normalizeClass(unref(cls).e("arrow-place"))
56
63
  }, null, 2)) : createCommentVNode("v-if", true)
57
- ], 2)], 2)), [[unref(vRipple), !disabled.value && !loading.value]]);
64
+ ], 2)], 2)), [[unref(vRipple), !disabled.value && !loading.value && !__props.menu.keepOpen]]);
58
65
  };
59
66
  }
60
67
  });
@@ -1 +1 @@
1
- {"version":3,"file":"contextmenu-item.js","names":[],"sources":["../../../src/components/contextmenu/contextmenu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[cls.e('item'), bem.is('disabled', disabled), bem.is('loading', loading)]\"\n v-ripple=\"!disabled && !loading\"\n @click=\"handleClickMenu\"\n >\n <div :class=\"cls.e('item-content')\">\n <template v-if=\"showIconColumn\">\n <u-icon v-if=\"loading\" :class=\"bem.is('loading')\">\n <Loading />\n </u-icon>\n <u-icon v-else-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <span :class=\"cls.e('label')\">{{ menu.label }}</span>\n\n <i v-if=\"showArrowColumn\" :class=\"cls.e('arrow-place')\"></i>\n </div>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef } from 'vue'\n\nimport type { ContextmenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { ContextmenuPanelDIKey, ContextmenuRootDIKey } from './di'\nimport { getMenuDisabled } from './helper'\n\ndefineOptions({ name: 'UContextmenuItem' })\n\nconst { menu } = defineProps<{ menu: ContextmenuItem }>()\n\nconst { cls, onItemClickStart, onItemClickEnd } = inject(ContextmenuRootDIKey)!\nconst { showIconColumn, showArrowColumn } = inject(ContextmenuPanelDIKey)!\n\nconst loading = shallowRef(false)\nconst disabled = computed(() => getMenuDisabled(menu))\n\nfunction handleClickMenu() {\n if (disabled.value || loading.value) return\n onItemClickStart()\n loading.value = true\n\n const done = () => {\n onItemClickEnd()\n loading.value = false\n }\n\n const result = menu.callback?.()\n if (result instanceof Promise) {\n result.finally(done)\n } else {\n done()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;EAuCA,MAAM,EAAE,KAAK,kBAAkB,mBAAmB,OAAO,oBAAoB;EAC7E,MAAM,EAAE,gBAAgB,oBAAoB,OAAO,qBAAqB;EAExE,MAAM,UAAU,WAAW,KAAK;EAChC,MAAM,WAAW,eAAe,gBAAgB,QAAA,IAAI,CAAC;EAErD,SAAS,kBAAkB;GACzB,IAAI,SAAS,SAAS,QAAQ,OAAO;GACrC,iBAAiB;GACjB,QAAQ,QAAQ;GAEhB,MAAM,aAAa;IACjB,eAAe;IACf,QAAQ,QAAQ;GAClB;GAEA,MAAM,SAAS,QAAA,KAAK,WAAW;GAC/B,IAAI,kBAAkB,SACpB,OAAO,QAAQ,IAAI;QAEnB,KAAK;EAET;;uCA5DE,mBAoBK,MAAA;IAnBF,OAAK,eAAA;KAAG,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA;KAAU,MAAA,GAAA,CAAG,CAAC,GAAE,YAAa,SAAA,KAAQ;KAAG,MAAA,GAAA,CAAG,CAAC,GAAE,WAAY,QAAA,KAAO;IAAA,CAAA;IAE9E,SAAO;OAER,mBAcM,OAAA,EAdA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,cAAA,CAAA,EAAA,GAAA;IACA,MAAA,cAAA,KAAA,UAAA,GAAhB,mBAQW,UAAA,EAAA,KAAA,EAAA,GAAA,CAPK,QAAA,SAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;KAFe,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,GAAE,SAAA,CAAA;;4BACxB,CAAX,YAAW,MAAA,OAAA,CAAA,CAAA,CAAA;;wBAEM,QAAA,KAAK,QAAA,UAAA,GAAxB,YAES,MAAA,WAAA,GAAA,EAAA,KAAA,EAAA,GAAA;4BADsB,EAAA,UAAA,GAA7B,YAA6B,wBAAb,QAAA,KAAK,IAAI,CAAA,EAAA,CAAA;;wBAE3B,mBAA2C,KAAA;;KAAhC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA;;IAGzB,mBAAqD,QAAA,EAA9C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA,EAAA,GAAA,gBAAc,QAAA,KAAK,KAAK,GAAA,CAAA;IAElC,MAAA,eAAA,KAAA,UAAA,GAAT,mBAA4D,KAAA;;KAAjC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;;mCAhB9B,SAAA,SAAQ,CAAK,QAAA,KAAO,CAAA,CAAA"}
1
+ {"version":3,"file":"contextmenu-item.js","names":[],"sources":["../../../src/components/contextmenu/contextmenu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[cls.e('item'), bem.is('disabled', disabled), bem.is('loading', loading)]\"\n v-ripple=\"!disabled && !loading && !menu.keepOpen\"\n @click=\"handleClickMenu\"\n >\n <div :class=\"cls.e('item-content')\">\n <template v-if=\"showIconColumn && !menu.render\">\n <u-icon v-if=\"loading\" :class=\"bem.is('loading')\">\n <Loading />\n </u-icon>\n <u-icon v-else-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <div v-if=\"menu.render\" :class=\"cls.e('custom')\" @click.stop>\n <component :is=\"menu.render\" />\n </div>\n <span v-else :class=\"cls.e('label')\">{{ menu.label }}</span>\n\n <i v-if=\"showArrowColumn\" :class=\"cls.e('arrow-place')\"></i>\n </div>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef } from 'vue'\n\nimport type { ContextmenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { ContextmenuPanelDIKey, ContextmenuRootDIKey } from './di'\nimport { getMenuDisabled } from './helper'\n\ndefineOptions({ name: 'UContextmenuItem' })\n\nconst { menu } = defineProps<{ menu: ContextmenuItem }>()\n\nconst { cls, onItemClickStart, onItemClickEnd } = inject(ContextmenuRootDIKey)!\nconst { showIconColumn, showArrowColumn } = inject(ContextmenuPanelDIKey)!\n\nconst loading = shallowRef(false)\nconst disabled = computed(() => getMenuDisabled(menu))\n\nfunction handleClickMenu() {\n if (disabled.value || loading.value || menu.keepOpen) return\n onItemClickStart()\n loading.value = true\n\n const done = () => {\n onItemClickEnd()\n loading.value = false\n }\n\n const result = menu.callback?.()\n if (result instanceof Promise) {\n result.finally(done)\n } else {\n done()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;EA0CA,MAAM,EAAE,KAAK,kBAAkB,mBAAmB,OAAO,oBAAoB;EAC7E,MAAM,EAAE,gBAAgB,oBAAoB,OAAO,qBAAqB;EAExE,MAAM,UAAU,WAAW,KAAK;EAChC,MAAM,WAAW,eAAe,gBAAgB,QAAA,IAAI,CAAC;EAErD,SAAS,kBAAkB;GACzB,IAAI,SAAS,SAAS,QAAQ,SAAS,QAAA,KAAK,UAAU;GACtD,iBAAiB;GACjB,QAAQ,QAAQ;GAEhB,MAAM,aAAa;IACjB,eAAe;IACf,QAAQ,QAAQ;GAClB;GAEA,MAAM,SAAS,QAAA,KAAK,WAAW;GAC/B,IAAI,kBAAkB,SACpB,OAAO,QAAQ,IAAI;QAEnB,KAAK;EAET;;GA/DE,OAAA,gBAAA,UAAA,GAAA,mBAuBK,MAAA;IAtBF,OAAK,eAAA;KAAG,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA;KAAU,MAAA,GAAA,CAAG,CAAC,GAAE,YAAa,SAAA,KAAQ;KAAG,MAAA,GAAA,CAAG,CAAC,GAAE,WAAY,QAAA,KAAO;IAAA,CAAA;IAE9E,SAAO;GAER,GAAA,CAAA,mBAiBM,OAAA,EAjBA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,cAAA,CAAA,EAAA,GAAA;IACA,MAAA,cAAA,KAAc,CAAK,QAAA,KAAK,UAAA,UAAA,GAAxC,mBAQW,UAAA,EAAA,KAAA,EAAA,GAAA,CAPK,QAAA,SAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;KAFe,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,GAAE,SAAA,CAAA;;KACxB,SAAA,cAAA,CAAX,YAAW,MAAA,OAAA,CAAA,CAAA,CAAA;;IAEM,GAAA,GAAA,CAAA,OAAA,CAAA,KAAA,QAAA,KAAK,QAAA,UAAA,GAAxB,YAES,MAAA,WAAA,GAAA,EAAA,KAAA,EAAA,GAAA;KADsB,SAAA,cAAA,EAAA,UAAA,GAA7B,YAA6B,wBAAb,QAAA,KAAK,IAAI,CAAA,EAAA,CAAA;;IAE3B,CAAA,MAAA,UAAA,GAAA,mBAA2C,KAAA;;KAAhC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA;;IAGd,QAAA,KAAK,UAAA,UAAA,GAAhB,mBAEM,OAAA;;KAFmB,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA;KAAa,SAAK,OAAA,OAAA,OAAA,KAAA,oBAAN,CAAA,GAAW,CAAA,MAAA,CAAA;IAC1D,GAAA,EAAA,UAAA,GAAA,YAA+B,wBAAf,QAAA,KAAK,MAAM,CAAA,EAAA,GAAA,CAE7B,MAAA,UAAA,GAAA,mBAA4D,QAAA;;KAA9C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA;IAAc,GAAA,gBAAA,QAAA,KAAK,KAAK,GAAA,CAAA;IAEzC,MAAA,eAAA,KAAA,UAAA,GAAT,mBAA4D,KAAA;;KAAjC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;;GAnB9B,GAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,OAAA,GAAA,CAAA,SAAA,SAAQ,CAAK,QAAA,SAAO,CAAK,QAAA,KAAK,QAAQ,CAAA,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { ContextmenuPanelDIKey, ContextmenuRootDIKey } from "./di.js";
2
2
  import _sfc_main$1 from "./contextmenu-item.js";
3
3
  import _sfc_main$2 from "./contextmenu-sub.js";
4
- import { Fragment, computed, createBlock, createElementBlock, defineComponent, guardReactiveProps, inject, normalizeProps, openBlock, provide, renderList } from "vue";
4
+ import { Fragment, computed, createBlock, createElementBlock, defineComponent, guardReactiveProps, inject, normalizeClass, normalizeProps, openBlock, provide, renderList, unref } from "vue";
5
5
  //#region src/components/contextmenu/contextmenu-panel.vue
6
6
  const _sfc_main = /*@__PURE__*/ defineComponent({
7
7
  name: "UContextmenuPanel",
@@ -9,18 +9,24 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
9
9
  __name: "contextmenu-panel",
10
10
  props: { menus: {} },
11
11
  setup(__props) {
12
- inject(ContextmenuRootDIKey);
12
+ const { cls } = inject(ContextmenuRootDIKey);
13
+ const showIconColumn = computed(() => __props.menus.some((menu) => !menu.divider && !!menu.icon));
14
+ const showArrowColumn = computed(() => __props.menus.some((menu) => !menu.divider && !!menu.children?.length));
13
15
  provide(ContextmenuPanelDIKey, {
14
- showIconColumn: computed(() => __props.menus.some((menu) => !!menu.icon)),
15
- showArrowColumn: computed(() => __props.menus.some((menu) => !!menu.children?.length))
16
+ showIconColumn,
17
+ showArrowColumn
16
18
  });
17
19
  return (_ctx, _cache) => {
18
20
  return openBlock(), createElementBlock("ul", normalizeProps(guardReactiveProps(_ctx.$attrs)), [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.menus, (menu, index) => {
19
- return openBlock(), createElementBlock(Fragment, { key: index }, [menu.children?.length ? (openBlock(), createBlock(_sfc_main$2, {
21
+ return openBlock(), createElementBlock(Fragment, { key: index }, [menu.divider ? (openBlock(), createElementBlock("li", {
20
22
  key: 0,
23
+ class: normalizeClass(unref(cls).e("divider")),
24
+ role: "separator"
25
+ }, null, 2)) : menu.children?.length ? (openBlock(), createBlock(_sfc_main$2, {
26
+ key: 1,
21
27
  menu
22
28
  }, null, 8, ["menu"])) : (openBlock(), createBlock(_sfc_main$1, {
23
- key: 1,
29
+ key: 2,
24
30
  menu
25
31
  }, null, 8, ["menu"]))], 64);
26
32
  }), 128))], 16);
@@ -1 +1 @@
1
- {"version":3,"file":"contextmenu-panel.js","names":["$attrs"],"sources":["../../../src/components/contextmenu/contextmenu-panel.vue"],"sourcesContent":["<template>\n <ul v-bind=\"$attrs\">\n <template v-for=\"(menu, index) of menus\" :key=\"index\">\n <UContextmenuSub v-if=\"menu.children?.length\" :menu=\"menu\" />\n <UContextmenuItem v-else :menu=\"menu\" />\n </template>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, provide } from 'vue'\n\nimport type { ContextmenuItem } from '../../types'\nimport UContextmenuItem from './contextmenu-item.vue'\nimport UContextmenuSub from './contextmenu-sub.vue'\nimport { ContextmenuPanelDIKey, ContextmenuRootDIKey } from './di'\n\ndefineOptions({ name: 'UContextmenuPanel', inheritAttrs: false })\n\nconst { menus } = defineProps<{ menus: ContextmenuItem[] }>()\n\ninject(ContextmenuRootDIKey)\n\nconst showIconColumn = computed(() => menus.some((menu) => !!menu.icon))\nconst showArrowColumn = computed(() => menus.some((menu) => !!menu.children?.length))\n\nprovide(ContextmenuPanelDIKey, { showIconColumn, showArrowColumn })\n</script>\n"],"mappings":";;;;;;;;;;;EAqBA,OAAO,oBAAoB;EAK3B,QAAQ,uBAAuB;GAAE,gBAHV,eAAe,QAAA,MAAM,MAAM,SAAS,CAAC,CAAC,KAAK,IAAI,CAGrC;GAAgB,iBAFzB,eAAe,QAAA,MAAM,MAAM,SAAS,CAAC,CAAC,KAAK,UAAU,MAAM,CAElC;EAAgB,CAAC;;uBAzBhE,mBAKK,MAAA,eAAA,mBALOA,KAAAA,MAAM,CAAA,GAAA,EAAA,UAAA,IAAA,GAChB,mBAGW,UAAA,MAAA,WAHuB,QAAA,QAAhB,MAAM,UAAK;4DAAkB,MAAK,GAAA,CAC3B,KAAK,UAAU,UAAA,UAAA,GAAtC,YAA6D,aAAA;;KAAR;2CACrD,YAAwC,aAAA;;KAAR"}
1
+ {"version":3,"file":"contextmenu-panel.js","names":["$attrs"],"sources":["../../../src/components/contextmenu/contextmenu-panel.vue"],"sourcesContent":["<template>\n <ul v-bind=\"$attrs\">\n <template v-for=\"(menu, index) of menus\" :key=\"index\">\n <li v-if=\"menu.divider\" :class=\"cls.e('divider')\" role=\"separator\" />\n <UContextmenuSub v-else-if=\"menu.children?.length\" :menu=\"menu\" />\n <UContextmenuItem v-else :menu=\"menu\" />\n </template>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, provide } from 'vue'\n\nimport type { ContextmenuItem } from '../../types'\nimport UContextmenuItem from './contextmenu-item.vue'\nimport UContextmenuSub from './contextmenu-sub.vue'\nimport { ContextmenuPanelDIKey, ContextmenuRootDIKey } from './di'\n\ndefineOptions({ name: 'UContextmenuPanel', inheritAttrs: false })\n\nconst { menus } = defineProps<{ menus: ContextmenuItem[] }>()\n\nconst { cls } = inject(ContextmenuRootDIKey)!\n\nconst showIconColumn = computed(() => menus.some((menu) => !menu.divider && !!menu.icon))\nconst showArrowColumn = computed(() =>\n menus.some((menu) => !menu.divider && !!menu.children?.length)\n)\n\nprovide(ContextmenuPanelDIKey, { showIconColumn, showArrowColumn })\n</script>\n"],"mappings":";;;;;;;;;;;EAsBA,MAAM,EAAE,QAAQ,OAAO,oBAAoB;EAE3C,MAAM,iBAAiB,eAAe,QAAA,MAAM,MAAM,SAAS,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK,IAAI,CAAC;EACxF,MAAM,kBAAkB,eACtB,QAAA,MAAM,MAAM,SAAS,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK,UAAU,MAAM,CAC/D;EAEA,QAAQ,uBAAuB;GAAE;GAAgB;EAAgB,CAAC;;GA5BhE,OAAA,UAAA,GAAA,mBAMK,MAAA,eAAA,mBANOA,KAAAA,MAAM,CAAA,GAAA,EAAA,UAAA,IAAA,GAChB,mBAIW,UAAA,MAAA,WAJuB,QAAA,QAAhB,MAAM,UAAK;IAAkB,OAAA,UAAA,GAAA,mBAAA,UAAA,EAAA,KAAA,MAAK,GAAA,CACxC,KAAK,WAAA,UAAA,GAAf,mBAAqE,MAAA;;KAA5C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,SAAA,CAAA;KAAa,MAAK;IAC3B,GAAA,MAAA,CAAA,KAAA,KAAK,UAAU,UAAA,UAAA,GAA3C,YAAkE,aAAA;;KAAR;IAC1D,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,MAAA,UAAA,GAAA,YAAwC,aAAA;;KAAR"}
@@ -1 +1 @@
1
- {"version":3,"file":"contextmenu-sub.js","names":[],"sources":["../../../src/components/contextmenu/contextmenu-sub.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('disabled', disabled),\n bem.is('open', subVisible),\n bem.is('flip-x', flipX)\n ]\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"scheduleClose\"\n >\n <div :class=\"cls.e('item-content')\">\n <template v-if=\"showIconColumn\">\n <u-icon v-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <span :class=\"cls.e('label')\">{{ menu.label }}</span>\n\n <u-icon v-if=\"showArrowColumn\" :class=\"cls.e('arrow')\">\n <ArrowRight />\n </u-icon>\n <i v-else :class=\"cls.e('arrow-place')\"></i>\n </div>\n\n <UContextmenuPanel\n v-show=\"subVisible\"\n :menus=\"menu.children!\"\n :class=\"[cls.e('sub'), bem.is('flip-x', flipX)]\"\n @mouseenter=\"cancelClose\"\n @mouseleave=\"scheduleClose\"\n />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, nextTick, onBeforeUnmount, shallowRef } from 'vue'\n\nimport type { ContextmenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport UContextmenuPanel from './contextmenu-panel.vue'\nimport { ContextmenuPanelDIKey, ContextmenuRootDIKey } from './di'\nimport { getMenuDisabled } from './helper'\n\ndefineOptions({ name: 'UContextmenuSub' })\n\nconst { menu } = defineProps<{ menu: ContextmenuItem }>()\n\nconst { cls } = inject(ContextmenuRootDIKey)!\nconst { showIconColumn, showArrowColumn } = inject(ContextmenuPanelDIKey)!\n\nconst subVisible = shallowRef(false)\nconst flipX = shallowRef(false)\n\nlet closeTimer: ReturnType<typeof setTimeout> | undefined\n\nconst disabled = computed(() => getMenuDisabled(menu))\n\nfunction cancelClose() {\n if (closeTimer !== undefined) {\n clearTimeout(closeTimer)\n closeTimer = undefined\n }\n}\n\nfunction scheduleClose() {\n cancelClose()\n closeTimer = setTimeout(() => {\n subVisible.value = false\n }, 250)\n}\n\nfunction handleMouseEnter(e: MouseEvent) {\n if (disabled.value) return\n cancelClose()\n subVisible.value = true\n nextTick(() => {\n const panel = (e.currentTarget as HTMLElement).querySelector<HTMLElement>(`.${cls.e('sub')}`)\n if (panel) flipX.value = panel.getBoundingClientRect().right > window.innerWidth\n })\n}\n\nonBeforeUnmount(cancelClose)\n</script>\n"],"mappings":";;;;;;;;;;;;;EAoDA,MAAM,EAAE,QAAQ,OAAO,oBAAoB;EAC3C,MAAM,EAAE,gBAAgB,oBAAoB,OAAO,qBAAqB;EAExE,MAAM,aAAa,WAAW,KAAK;EACnC,MAAM,QAAQ,WAAW,KAAK;EAE9B,IAAI;EAEJ,MAAM,WAAW,eAAe,gBAAgB,QAAA,IAAI,CAAC;EAErD,SAAS,cAAc;GACrB,IAAI,eAAe,KAAA,GAAW;IAC5B,aAAa,UAAU;IACvB,aAAa,KAAA;GACf;EACF;EAEA,SAAS,gBAAgB;GACvB,YAAY;GACZ,aAAa,iBAAiB;IAC5B,WAAW,QAAQ;GACrB,GAAG,GAAG;EACR;EAEA,SAAS,iBAAiB,GAAe;GACvC,IAAI,SAAS,OAAO;GACpB,YAAY;GACZ,WAAW,QAAQ;GACnB,eAAe;IACb,MAAM,QAAS,EAAE,cAA8B,cAA2B,IAAI,IAAI,EAAE,KAAK,GAAG;IAC5F,IAAI,OAAO,MAAM,QAAQ,MAAM,sBAAsB,CAAC,CAAC,QAAQ,OAAO;GACxE,CAAC;EACH;EAEA,gBAAgB,WAAW;;uBArFzB,mBAiCK,MAAA;IAhCF,OAAK,eAAA;KAAU,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA;KAAgB,MAAA,GAAA,CAAG,CAAC,GAAE,YAAa,SAAA,KAAQ;KAAS,MAAA,GAAA,CAAG,CAAC,GAAE,QAAS,WAAA,KAAU;KAAS,MAAA,GAAA,CAAG,CAAC,GAAE,UAAW,MAAA,KAAK;;IAMhI,cAAY;IACZ,cAAY;OAEb,mBAcM,OAAA,EAdA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,cAAA,CAAA,EAAA,GAAA;IACA,MAAA,cAAA,KAAA,UAAA,GAAhB,mBAKW,UAAA,EAAA,KAAA,EAAA,GAAA,CAJK,QAAA,KAAK,QAAA,UAAA,GAAnB,YAES,MAAA,WAAA,GAAA,EAAA,KAAA,EAAA,GAAA;4BADsB,EAAA,UAAA,GAA7B,YAA6B,wBAAb,QAAA,KAAK,IAAI,CAAA,EAAA,CAAA;;wBAE3B,mBAA2C,KAAA;;KAAhC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA;;IAGzB,mBAAqD,QAAA,EAA9C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA,EAAA,GAAA,gBAAc,QAAA,KAAK,KAAK,GAAA,CAAA;IAE7B,MAAA,eAAA,KAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;KAFuB,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA;;4BAC5B,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;sCAEhB,mBAA4C,KAAA;;KAAjC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;;yBAGzB,YAME,aAAA;IAJC,OAAO,QAAA,KAAK;IACZ,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,EAAC,KAAA,GAAS,MAAA,GAAA,CAAG,CAAC,GAAE,UAAW,MAAA,KAAK,CAAA,CAAA;IAC5C,cAAY;IACZ,cAAY;6CAJL,WAAA,KAAU,CAAA,CAAA,CAAA,GAAA,EAAA"}
1
+ {"version":3,"file":"contextmenu-sub.js","names":[],"sources":["../../../src/components/contextmenu/contextmenu-sub.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('disabled', disabled),\n bem.is('open', subVisible),\n bem.is('flip-x', flipX)\n ]\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"scheduleClose\"\n >\n <div :class=\"cls.e('item-content')\">\n <template v-if=\"showIconColumn\">\n <u-icon v-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <span :class=\"cls.e('label')\">{{ menu.label }}</span>\n\n <u-icon v-if=\"showArrowColumn\" :class=\"cls.e('arrow')\">\n <ArrowRight />\n </u-icon>\n <i v-else :class=\"cls.e('arrow-place')\"></i>\n </div>\n\n <UContextmenuPanel\n v-show=\"subVisible\"\n :menus=\"menu.children!\"\n :class=\"[cls.e('sub'), bem.is('flip-x', flipX)]\"\n @mouseenter=\"cancelClose\"\n @mouseleave=\"scheduleClose\"\n />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, nextTick, onBeforeUnmount, shallowRef } from 'vue'\n\nimport type { ContextmenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport UContextmenuPanel from './contextmenu-panel.vue'\nimport { ContextmenuPanelDIKey, ContextmenuRootDIKey } from './di'\nimport { getMenuDisabled } from './helper'\n\ndefineOptions({ name: 'UContextmenuSub' })\n\nconst { menu } = defineProps<{ menu: ContextmenuItem }>()\n\nconst { cls } = inject(ContextmenuRootDIKey)!\nconst { showIconColumn, showArrowColumn } = inject(ContextmenuPanelDIKey)!\n\nconst subVisible = shallowRef(false)\nconst flipX = shallowRef(false)\n\nlet closeTimer: ReturnType<typeof setTimeout> | undefined\n\nconst disabled = computed(() => getMenuDisabled(menu))\n\nfunction cancelClose() {\n if (closeTimer !== undefined) {\n clearTimeout(closeTimer)\n closeTimer = undefined\n }\n}\n\nfunction scheduleClose() {\n cancelClose()\n closeTimer = setTimeout(() => {\n subVisible.value = false\n }, 250)\n}\n\nfunction handleMouseEnter(e: MouseEvent) {\n if (disabled.value) return\n cancelClose()\n subVisible.value = true\n nextTick(() => {\n const panel = (e.currentTarget as HTMLElement).querySelector<HTMLElement>(`.${cls.e('sub')}`)\n if (panel) flipX.value = panel.getBoundingClientRect().right > window.innerWidth\n })\n}\n\nonBeforeUnmount(cancelClose)\n</script>\n"],"mappings":";;;;;;;;;;;;;EAoDA,MAAM,EAAE,QAAQ,OAAO,oBAAoB;EAC3C,MAAM,EAAE,gBAAgB,oBAAoB,OAAO,qBAAqB;EAExE,MAAM,aAAa,WAAW,KAAK;EACnC,MAAM,QAAQ,WAAW,KAAK;EAE9B,IAAI;EAEJ,MAAM,WAAW,eAAe,gBAAgB,QAAA,IAAI,CAAC;EAErD,SAAS,cAAc;GACrB,IAAI,eAAe,KAAA,GAAW;IAC5B,aAAa,UAAU;IACvB,aAAa,KAAA;GACf;EACF;EAEA,SAAS,gBAAgB;GACvB,YAAY;GACZ,aAAa,iBAAiB;IAC5B,WAAW,QAAQ;GACrB,GAAG,GAAG;EACR;EAEA,SAAS,iBAAiB,GAAe;GACvC,IAAI,SAAS,OAAO;GACpB,YAAY;GACZ,WAAW,QAAQ;GACnB,eAAe;IACb,MAAM,QAAS,EAAE,cAA8B,cAA2B,IAAI,IAAI,EAAE,KAAK,GAAG;IAC5F,IAAI,OAAO,MAAM,QAAQ,MAAM,sBAAsB,CAAC,CAAC,QAAQ,OAAO;GACxE,CAAC;EACH;EAEA,gBAAgB,WAAW;;GArFzB,OAAA,UAAA,GAAA,mBAiCK,MAAA;IAhCF,OAAK,eAAA;KAAU,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA;KAAgB,MAAA,GAAA,CAAG,CAAC,GAAE,YAAa,SAAA,KAAQ;KAAS,MAAA,GAAA,CAAG,CAAC,GAAE,QAAS,WAAA,KAAU;KAAS,MAAA,GAAA,CAAG,CAAC,GAAE,UAAW,MAAA,KAAK;;IAMhI,cAAY;IACZ,cAAY;GAEb,GAAA,CAAA,mBAcM,OAAA,EAdA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,cAAA,CAAA,EAAA,GAAA;IACA,MAAA,cAAA,KAAA,UAAA,GAAhB,mBAKW,UAAA,EAAA,KAAA,EAAA,GAAA,CAJK,QAAA,KAAK,QAAA,UAAA,GAAnB,YAES,MAAA,WAAA,GAAA,EAAA,KAAA,EAAA,GAAA;KADsB,SAAA,cAAA,EAAA,UAAA,GAA7B,YAA6B,wBAAb,QAAA,KAAK,IAAI,CAAA,EAAA,CAAA;;IAE3B,CAAA,MAAA,UAAA,GAAA,mBAA2C,KAAA;;KAAhC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA;;IAGzB,mBAAqD,QAAA,EAA9C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA,EAAA,GAAc,gBAAA,QAAA,KAAK,KAAK,GAAA,CAAA;IAE7B,MAAA,eAAA,KAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;KAFuB,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA;;KAC5B,SAAA,cAAA,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;IAEhB,GAAA,GAAA,CAAA,OAAA,CAAA,MAAA,UAAA,GAAA,mBAA4C,KAAA;;KAAjC,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;;GAGzB,GAAA,CAAA,GAAA,eAAA,YAME,aAAA;IAJC,OAAO,QAAA,KAAK;IACZ,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,EAAC,KAAA,GAAS,MAAA,GAAA,CAAG,CAAC,GAAE,UAAW,MAAA,KAAK,CAAA,CAAA;IAC5C,cAAY;IACZ,cAAY;GAJL,GAAA,MAAA,GAAA,CAAA,SAAA,OAAA,CAAA,GAAA,CAAA,CAAA,OAAA,WAAA,KAAU,CAAA,CAAA,CAAA,GAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"contextmenu.js","names":[],"sources":["../../../src/components/contextmenu/contextmenu.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"zoom-in\" appear @after-leave=\"emit('destroy')\">\n <UContextmenuPanel\n v-if=\"visible\"\n :menus=\"menus\"\n :class=\"[cls.b, cls.m(size)]\"\n :style=\"style\"\n v-click-outside=\"handleClickOutside\"\n />\n </transition>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, withUnit, zIndex } from '@veltra/utils'\nimport { computed, provide, shallowRef, type CSSProperties } from 'vue'\n\nimport type { ContextmenuEmits, ContextmenuProps, ComponentSize } from '../../types'\nimport UContextmenuPanel from './contextmenu-panel.vue'\nimport { ContextmenuRootDIKey } from './di'\n\ndefineOptions({ name: 'UContextmenu' })\n\nconst props = withDefaults(defineProps<ContextmenuProps>(), { width: 150 })\n\nconst emit = defineEmits<ContextmenuEmits>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('contextmenu')\n\nconst visible = shallowRef(true)\n\nconst style = computed<CSSProperties>(() => {\n const { x, y } = props.mousePosition\n const flipX = x > window.innerWidth / 2\n const flipY = y > window.innerHeight / 2\n return {\n width: withUnit(props.width, 'px'),\n zIndex: zIndex(),\n ...(flipX\n ? { right: withUnit(window.innerWidth - x - 1, 'px') }\n : { left: withUnit(x + 1, 'px') }),\n ...(flipY\n ? { bottom: withUnit(window.innerHeight - y - 1, 'px') }\n : { top: withUnit(y + 1, 'px') }),\n transformOrigin: `${flipY ? 'bottom' : 'top'} ${flipX ? 'right' : 'left'}`\n }\n})\n\nconst menus = computed(() => (typeof props.menus === 'function' ? props.menus() : props.menus))\n\nfunction close() {\n visible.value = false\n}\n\nlet loading = false\n\nprovide(ContextmenuRootDIKey, {\n cls,\n onItemClickStart: () => {\n loading = true\n },\n onItemClickEnd: () => {\n loading = false\n close()\n }\n})\n\nfunction handleClickOutside() {\n if (loading) return\n close()\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EA0BA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,aAAa;EAE7B,MAAM,UAAU,WAAW,IAAI;EAE/B,MAAM,QAAQ,eAA8B;GAC1C,MAAM,EAAE,GAAG,MAAM,MAAM;GACvB,MAAM,QAAQ,IAAI,OAAO,aAAa;GACtC,MAAM,QAAQ,IAAI,OAAO,cAAc;GACvC,OAAO;IACL,OAAO,SAAS,MAAM,OAAO,IAAI;IACjC,QAAQ,OAAO;IACf,GAAI,QACA,EAAE,OAAO,SAAS,OAAO,aAAa,IAAI,GAAG,IAAI,EAAE,IACnD,EAAE,MAAM,SAAS,IAAI,GAAG,IAAI,EAAE;IAClC,GAAI,QACA,EAAE,QAAQ,SAAS,OAAO,cAAc,IAAI,GAAG,IAAI,EAAE,IACrD,EAAE,KAAK,SAAS,IAAI,GAAG,IAAI,EAAE;IACjC,iBAAiB,GAAG,QAAQ,WAAW,MAAM,GAAG,QAAQ,UAAU;GACpE;EACF,CAAC;EAED,MAAM,QAAQ,eAAgB,OAAO,MAAM,UAAU,aAAa,MAAM,MAAM,IAAI,MAAM,KAAM;EAE9F,SAAS,QAAQ;GACf,QAAQ,QAAQ;EAClB;EAEA,IAAI,UAAU;EAEd,QAAQ,sBAAsB;GAC5B;GACA,wBAAwB;IACtB,UAAU;GACZ;GACA,sBAAsB;IACpB,UAAU;IACV,MAAM;GACR;EACF,CAAC;EAED,SAAS,qBAAqB;GAC5B,IAAI,SAAS;GACb,MAAM;EACR;;uBA1EE,YAUW,UAAA,EAVD,IAAG,OAAM,GAAA,CACjB,YAQa,YAAA;IARD,MAAK;IAAU,QAAA;IAAQ,cAAW,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;;2BAOhD,CALM,QAAA,QAAA,gBAAA,UAAA,GADR,YAME,aAAA;;KAJC,OAAO,MAAA;KACP,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;KACzB,OAAK,eAAE,MAAA,KAAK;;;;;iCACI,kBAAkB,CAAA,CAAA,IAAA,mBAAA,QAAA,IAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"contextmenu.js","names":[],"sources":["../../../src/components/contextmenu/contextmenu.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"zoom-in\" appear @after-leave=\"emit('destroy')\">\n <UContextmenuPanel\n v-if=\"visible\"\n :menus=\"menus\"\n :class=\"[cls.b, cls.m(size)]\"\n :style=\"style\"\n v-click-outside=\"handleClickOutside\"\n />\n </transition>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, withUnit, zIndex } from '@veltra/utils'\nimport { computed, provide, shallowRef, type CSSProperties } from 'vue'\n\nimport type { ContextmenuEmits, ContextmenuProps, ComponentSize } from '../../types'\nimport UContextmenuPanel from './contextmenu-panel.vue'\nimport { ContextmenuRootDIKey } from './di'\n\ndefineOptions({ name: 'UContextmenu' })\n\nconst props = withDefaults(defineProps<ContextmenuProps>(), { width: 150 })\n\nconst emit = defineEmits<ContextmenuEmits>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('contextmenu')\n\nconst visible = shallowRef(true)\n\nconst style = computed<CSSProperties>(() => {\n const { x, y } = props.mousePosition\n const flipX = x > window.innerWidth / 2\n const flipY = y > window.innerHeight / 2\n return {\n width: withUnit(props.width, 'px'),\n zIndex: zIndex(),\n ...(flipX\n ? { right: withUnit(window.innerWidth - x - 1, 'px') }\n : { left: withUnit(x + 1, 'px') }),\n ...(flipY\n ? { bottom: withUnit(window.innerHeight - y - 1, 'px') }\n : { top: withUnit(y + 1, 'px') }),\n transformOrigin: `${flipY ? 'bottom' : 'top'} ${flipX ? 'right' : 'left'}`\n }\n})\n\nconst menus = computed(() => (typeof props.menus === 'function' ? props.menus() : props.menus))\n\nfunction close() {\n visible.value = false\n}\n\nlet loading = false\n\nprovide(ContextmenuRootDIKey, {\n cls,\n onItemClickStart: () => {\n loading = true\n },\n onItemClickEnd: () => {\n loading = false\n close()\n }\n})\n\nfunction handleClickOutside() {\n if (loading) return\n close()\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EA0BA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,aAAa;EAE7B,MAAM,UAAU,WAAW,IAAI;EAE/B,MAAM,QAAQ,eAA8B;GAC1C,MAAM,EAAE,GAAG,MAAM,MAAM;GACvB,MAAM,QAAQ,IAAI,OAAO,aAAa;GACtC,MAAM,QAAQ,IAAI,OAAO,cAAc;GACvC,OAAO;IACL,OAAO,SAAS,MAAM,OAAO,IAAI;IACjC,QAAQ,OAAO;IACf,GAAI,QACA,EAAE,OAAO,SAAS,OAAO,aAAa,IAAI,GAAG,IAAI,EAAE,IACnD,EAAE,MAAM,SAAS,IAAI,GAAG,IAAI,EAAE;IAClC,GAAI,QACA,EAAE,QAAQ,SAAS,OAAO,cAAc,IAAI,GAAG,IAAI,EAAE,IACrD,EAAE,KAAK,SAAS,IAAI,GAAG,IAAI,EAAE;IACjC,iBAAiB,GAAG,QAAQ,WAAW,MAAM,GAAG,QAAQ,UAAU;GACpE;EACF,CAAC;EAED,MAAM,QAAQ,eAAgB,OAAO,MAAM,UAAU,aAAa,MAAM,MAAM,IAAI,MAAM,KAAM;EAE9F,SAAS,QAAQ;GACf,QAAQ,QAAQ;EAClB;EAEA,IAAI,UAAU;EAEd,QAAQ,sBAAsB;GAC5B;GACA,wBAAwB;IACtB,UAAU;GACZ;GACA,sBAAsB;IACpB,UAAU;IACV,MAAM;GACR;EACF,CAAC;EAED,SAAS,qBAAqB;GAC5B,IAAI,SAAS;GACb,MAAM;EACR;;GA1EE,OAAA,UAAA,GAAA,YAUW,UAAA,EAVD,IAAG,OAAM,GAAA,CACjB,YAQa,YAAA;IARD,MAAK;IAAU,QAAA;IAAQ,cAAW,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;;IAOhD,SAAA,cAAA,CALM,QAAA,QAAA,gBAAA,UAAA,GADR,YAME,aAAA;;KAJC,OAAO,MAAA;KACP,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;KACzB,OAAK,eAAE,MAAA,KAAK;;;;;IACI,CAAA,IAAA,CAAA,CAAA,MAAA,aAAA,GAAA,kBAAkB,CAAA,CAAA,IAAA,mBAAA,QAAA,IAAA,CAAA,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { ComputedRef, InjectionKey } from "vue";
2
+ import { BEM } from "@veltra/utils";
3
+ //#region src/components/contextmenu/di.d.ts
4
+ declare const ContextmenuRootDIKey: InjectionKey<{
5
+ cls: BEM<'contextmenu'>;
6
+ onItemClickStart: () => void;
7
+ onItemClickEnd: () => void;
8
+ }>;
9
+ declare const ContextmenuPanelDIKey: InjectionKey<{
10
+ showIconColumn: ComputedRef<boolean>;
11
+ showArrowColumn: ComputedRef<boolean>;
12
+ }>;
13
+ //#endregion
14
+ export { ContextmenuPanelDIKey, ContextmenuRootDIKey };
15
+ //# sourceMappingURL=di.d.ts.map
@@ -1,3 +1,4 @@
1
- import _default from "./contextmenu.vue.js";
1
+ import _sfc_main from "./contextmenu.js";
2
2
  import { contextmenu } from "./api.js";
3
- export { _default as UContextmenu, contextmenu };
3
+ import { ContextmenuPanelDIKey, ContextmenuRootDIKey } from "./di.js";
4
+ export { ContextmenuPanelDIKey, ContextmenuRootDIKey, _sfc_main as UContextmenu, contextmenu };
@@ -17,6 +17,7 @@
17
17
  /** 暗色:data-theme 与系统偏好,与 UITheme.injectBuiltInThemes 选择器策略一致 */
18
18
  .u-contextmenu {
19
19
  position: fixed;
20
+ min-width: 120px;
20
21
  margin: 0;
21
22
  padding: 4px;
22
23
  list-style: none;
@@ -39,6 +40,18 @@
39
40
  text-overflow: ellipsis;
40
41
  white-space: nowrap;
41
42
  }
43
+ .u-contextmenu__custom {
44
+ flex: 1;
45
+ min-width: 0;
46
+ }
47
+ .u-contextmenu__divider {
48
+ height: 0;
49
+ margin: 4px 8px;
50
+ border: 0;
51
+ border-top: 1px solid var(--u-border-color);
52
+ list-style: none;
53
+ pointer-events: none;
54
+ }
42
55
  .u-contextmenu__item {
43
56
  position: relative;
44
57
  cursor: pointer;
@@ -1 +1 @@
1
- {"version":3,"file":"date-panel.js","names":[],"sources":["../../../src/components/date-panel/date-panel.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(props.size)]\">\n <template v-if=\"panelType === 'day'\">\n <DayHeader />\n <DayPanel />\n </template>\n\n <template v-else-if=\"panelType === 'year'\">\n <YearHeader />\n <YearPanel />\n </template>\n\n <template v-else-if=\"panelType === 'month'\">\n <MonthHeader />\n <MonthPanel />\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DatePanelEmits, DatePanelProps } from '../../types'\nimport DayHeader from './headers/day.vue'\nimport MonthHeader from './headers/month.vue'\nimport YearHeader from './headers/year.vue'\nimport DayPanel from './panels/day.vue'\nimport MonthPanel from './panels/month.vue'\nimport YearPanel from './panels/year.vue'\nimport { usePanel } from './use-panel'\n\ndefineOptions({ name: 'UDatePanel' })\n\nconst props = withDefaults(defineProps<DatePanelProps>(), { size: 'default', type: 'date' })\n\nconst emit = defineEmits<DatePanelEmits>()\n\nconst { cls, panelType } = usePanel({ props, emit })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA+BA,MAAM,QAAQ;EAId,MAAM,EAAE,KAAK,cAAc,SAAS;GAAE;GAAO,MAAA;EAAK,CAAC;;uBAlCjD,mBAeM,OAAA,EAfA,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,CACnB,MAAA,SAAA,MAAS,SAAA,UAAA,GAAzB,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAa,WAAA,GACb,YAAY,WAAA,CAAA,GAAA,EAAA,KAGO,MAAA,SAAA,MAAS,UAAA,UAAA,GAA9B,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAc,WAAA,GACd,YAAa,WAAA,CAAA,GAAA,EAAA,KAGM,MAAA,SAAA,MAAS,WAAA,UAAA,GAA9B,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAe,WAAA,GACf,YAAc,WAAA,CAAA,GAAA,EAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"date-panel.js","names":[],"sources":["../../../src/components/date-panel/date-panel.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(props.size)]\">\n <template v-if=\"panelType === 'day'\">\n <DayHeader />\n <DayPanel />\n </template>\n\n <template v-else-if=\"panelType === 'year'\">\n <YearHeader />\n <YearPanel />\n </template>\n\n <template v-else-if=\"panelType === 'month'\">\n <MonthHeader />\n <MonthPanel />\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DatePanelEmits, DatePanelProps } from '../../types'\nimport DayHeader from './headers/day.vue'\nimport MonthHeader from './headers/month.vue'\nimport YearHeader from './headers/year.vue'\nimport DayPanel from './panels/day.vue'\nimport MonthPanel from './panels/month.vue'\nimport YearPanel from './panels/year.vue'\nimport { usePanel } from './use-panel'\n\ndefineOptions({ name: 'UDatePanel' })\n\nconst props = withDefaults(defineProps<DatePanelProps>(), { size: 'default', type: 'date' })\n\nconst emit = defineEmits<DatePanelEmits>()\n\nconst { cls, panelType } = usePanel({ props, emit })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA+BA,MAAM,QAAQ;EAId,MAAM,EAAE,KAAK,cAAc,SAAS;GAAE;GAAO,MAAA;EAAK,CAAC;;GAlCjD,OAAA,UAAA,GAAA,mBAeM,OAAA,EAfA,OAAK,eAAA,CAAG,MAAA,GAAA,CAAG,CAAC,GAAG,MAAA,GAAA,CAAG,CAAC,EAAE,MAAM,IAAI,CAAA,CAAA,EAAA,GACnB,CAAA,MAAA,SAAA,MAAS,SAAA,UAAA,GAAzB,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAa,WAAA,GACb,YAAY,WAAA,CAAA,GAAA,EAGO,KAAA,MAAA,SAAA,MAAS,UAAA,UAAA,GAA9B,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAc,WAAA,GACd,YAAa,WAAA,CAAA,GAAA,EAGM,KAAA,MAAA,SAAA,MAAS,WAAA,UAAA,GAA9B,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAe,WAAA,GACf,YAAc,WAAA,CAAA,GAAA,EAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/headers/day.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <div>\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n <u-icon @click=\"toPrevMonth\" title=\"上个月\">\n <ArrowLeft />\n </u-icon>\n </div>\n\n <div>\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n <span :class=\"cls.e('header-month')\" @click=\"panelType = 'month'\">\n {{ panelDate.month }}月\n </span>\n </div>\n\n <div>\n <u-icon @click=\"toNextMonth\" title=\"下个月\">\n <ArrowRight />\n </u-icon>\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelDayHeader' })\n\nconst { panelDate, panelType, cls, toPrevMonth, toNextMonth, toPrevYear, toNextYear } =\n inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAwCA,MAAM,EAAE,WAAW,WAAW,KAAK,aAAa,aAAa,YAAY,eACvE,OAAO,cAAc;;uBAxCrB,mBA2BM,OAAA,EA3BA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BAClB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;wBAEhB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,WAAA;KAAa,OAAM;;4BACpB,CAAb,YAAa,MAAA,SAAA,CAAA,CAAA,CAAA;;;IAIjB,mBAOM,OAAA,MAAA,CANJ,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBAChD,MAAA,SAAA,CAAS,CAAC,IAAI,GAAA,CAAA,GAEnB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,cAAA,CAAA;KAAmB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBACjD,MAAA,SAAA,CAAS,CAAC,KAAK,IAAG,MACvB,CAAA,CAAA,CAAA;IAGF,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,WAAA;KAAa,OAAM;;4BACnB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;wBAEhB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BACjB,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/headers/day.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <div>\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n <u-icon @click=\"toPrevMonth\" title=\"上个月\">\n <ArrowLeft />\n </u-icon>\n </div>\n\n <div>\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n <span :class=\"cls.e('header-month')\" @click=\"panelType = 'month'\">\n {{ panelDate.month }}月\n </span>\n </div>\n\n <div>\n <u-icon @click=\"toNextMonth\" title=\"下个月\">\n <ArrowRight />\n </u-icon>\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelDayHeader' })\n\nconst { panelDate, panelType, cls, toPrevMonth, toNextMonth, toPrevYear, toNextYear } =\n inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAwCA,MAAM,EAAE,WAAW,WAAW,KAAK,aAAa,aAAa,YAAY,eACvE,OAAO,cAAc;;GAxCrB,OAAA,UAAA,GAAA,mBA2BM,OAAA,EA3BA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;KAClB,SAAA,cAAA,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;IAEhB,GAAA,GAAA,CAAA,SAAA,CAAA,GAAA,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,WAAA;KAAa,OAAM;;KACpB,SAAA,cAAA,CAAb,YAAa,MAAA,SAAA,CAAA,CAAA,CAAA;;;IAIjB,mBAOM,OAAA,MAAA,CANJ,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;IAChD,GAAA,gBAAA,MAAA,SAAA,CAAS,CAAC,IAAI,GAAA,CAAA,GAEnB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,cAAA,CAAA;KAAmB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;IACjD,GAAA,gBAAA,MAAA,SAAA,CAAS,CAAC,KAAK,IAAG,MACvB,CAAA,CAAA,CAAA;IAGF,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,WAAA;KAAa,OAAM;;KACnB,SAAA,cAAA,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;IAEhB,GAAA,GAAA,CAAA,SAAA,CAAA,GAAA,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;KACjB,SAAA,cAAA,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/headers/month.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelMonthHeader' })\n\nconst { panelDate, panelType, toPrevYear, toNextYear, cls } = inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAyBA,MAAM,EAAE,WAAW,WAAW,YAAY,YAAY,QAAQ,OAAO,cAAc;;uBAxBjF,mBAYM,OAAA,EAZA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BAClB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBAChD,MAAA,SAAA,CAAS,CAAC,IAAI,GAAA,CAAA;IAGnB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BACjB,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/headers/month.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelMonthHeader' })\n\nconst { panelDate, panelType, toPrevYear, toNextYear, cls } = inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAyBA,MAAM,EAAE,WAAW,WAAW,YAAY,YAAY,QAAQ,OAAO,cAAc;;GAxBjF,OAAA,UAAA,GAAA,mBAYM,OAAA,EAZA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;KAClB,SAAA,cAAA,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,aAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;IAChD,GAAA,gBAAA,MAAA,SAAA,CAAS,CAAC,IAAI,GAAA,CAAA;IAGnB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;KACjB,SAAA,cAAA,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/headers/year.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevTenYears\" title=\"上个十年\">\n <DArrowLeft />\n </u-icon>\n\n <span> {{ startYear }} ~ {{ endYear }} </span>\n\n <u-icon @click=\"toNextTenYears\" title=\"下个十年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelYearHeader' })\n\nconst { panelDate, toPrevTenYears, toNextTenYears, cls } = inject(DatePanelDIKey)!\n\nconst startYear = computed(() => {\n return panelDate.value.year - (panelDate.value.year % 10) + 1\n})\n\nconst endYear = computed(() => {\n return startYear.value + 9\n})\n</script>\n"],"mappings":";;;;;;;;;EAwBA,MAAM,EAAE,WAAW,gBAAgB,gBAAgB,QAAQ,OAAO,cAAc;EAEhF,MAAM,YAAY,eAAe;GAC/B,OAAO,UAAU,MAAM,OAAQ,UAAU,MAAM,OAAO,KAAM;EAC9D,CAAC;EAED,MAAM,UAAU,eAAe;GAC7B,OAAO,UAAU,QAAQ;EAC3B,CAAC;;uBA/BC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,cAAA;KAAgB,OAAM;;4BACtB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAA8C,QAAA,MAAA,gBAApC,UAAA,KAAS,IAAG,QAAG,gBAAG,QAAA,KAAO,GAAA,CAAA;IAEnC,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,cAAA;KAAgB,OAAM;;4BACrB,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/headers/year.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevTenYears\" title=\"上个十年\">\n <DArrowLeft />\n </u-icon>\n\n <span> {{ startYear }} ~ {{ endYear }} </span>\n\n <u-icon @click=\"toNextTenYears\" title=\"下个十年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelYearHeader' })\n\nconst { panelDate, toPrevTenYears, toNextTenYears, cls } = inject(DatePanelDIKey)!\n\nconst startYear = computed(() => {\n return panelDate.value.year - (panelDate.value.year % 10) + 1\n})\n\nconst endYear = computed(() => {\n return startYear.value + 9\n})\n</script>\n"],"mappings":";;;;;;;;;EAwBA,MAAM,EAAE,WAAW,gBAAgB,gBAAgB,QAAQ,OAAO,cAAc;EAEhF,MAAM,YAAY,eAAe;GAC/B,OAAO,UAAU,MAAM,OAAQ,UAAU,MAAM,OAAO,KAAM;EAC9D,CAAC;EAED,MAAM,UAAU,eAAe;GAC7B,OAAO,UAAU,QAAQ;EAC3B,CAAC;;GA/BC,OAAA,UAAA,GAAA,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,cAAA;KAAgB,OAAM;;KACtB,SAAA,cAAA,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAA8C,QAAA,MAAA,gBAApC,UAAA,KAAS,IAAG,QAAG,gBAAG,QAAA,KAAO,GAAA,CAAA;IAEnC,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,cAAA;KAAgB,OAAM;;KACrB,SAAA,cAAA,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/panels/day.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('week')\">\n <li :class=\"cls.e('week-day')\" v-for=\"weekDay of weekDays\">\n {{ weekDay }}\n </li>\n </ul>\n\n <ul :class=\"cls.e('days')\">\n <li\n v-for=\"day of days\"\n :title=\"day.isToday ? '今天' : ''\"\n :class=\"getDayCls(day)\"\n :key=\"day.date.timestamp\"\n @click=\"!day.disabled && handleDateSelect(day.date)\"\n @mouseenter=\"!day.disabled && handleDateRangeHover(day.date)\"\n >\n <span :class=\"cls.e('cell-value')\">\n {{ day.date.day }}\n </span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarDay } from '../../../types'\nimport { getMonthDays, weekDays } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelDay', inheritAttrs: false })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst days = computed<CalendarDay[]>(() => {\n return getMonthDays(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(day: CalendarDay) {\n return [\n bem.is('in-range', didInRange(day.date)),\n bem.is('range-start', isRangeStart(day.date)),\n bem.is('range-end', isRangeEnd(day.date))\n ]\n}\n\nfunction getSingleCls(day: CalendarDay) {\n return [bem.is('selected', didSelected(day.date))]\n}\nfunction getDayCls(day: CalendarDay) {\n const ret = [\n cls.e('cell'),\n bem.is(day.type),\n bem.is('today', day.isToday === true),\n bem.is('disabled', day.disabled === true)\n ]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(day)]\n }\n return [...ret, ...getSingleCls(day)]\n}\n\nconst fmtStr = 'yyyyMMdd'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;;;;;AAkEA,MAAM,SAAS;;;;;;EA/Bf,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,OAAO,eAA8B;GACzC,OAAO,aAAa,UAAU,MAAM,WAAW,WAAW,YAAY;EACxE,CAAC;EAED,SAAS,YAAY,KAAkB;GACrC,OAAO;IACL,IAAI,GAAG,YAAY,WAAW,IAAI,IAAI,CAAC;IACvC,IAAI,GAAG,eAAe,aAAa,IAAI,IAAI,CAAC;IAC5C,IAAI,GAAG,aAAa,WAAW,IAAI,IAAI,CAAC;GAC1C;EACF;EAEA,SAAS,aAAa,KAAkB;GACtC,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,IAAI,IAAI,CAAC,CAAC;EACnD;EACA,SAAS,UAAU,KAAkB;GACnC,MAAM,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,GAAG,IAAI,IAAI;IACf,IAAI,GAAG,SAAS,IAAI,YAAY,IAAI;IACpC,IAAI,GAAG,YAAY,IAAI,aAAa,IAAI;GAC1C;GACA,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,GAAG,CAAC;GAErC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,GAAG,CAAC;EACtC;EAIA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,OAAO,MAAM,MAAM,WAAW,KAAK,OAAO,MAAM;EAC9D;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM;EACpD;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,IAAI,OAAO,MAAM;EAClD;;2DAxFE,mBAIK,MAAA,EAJA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAEK,UAAA,MAAA,WAF4C,MAAA,QAAA,IAAX,YAAO;wBAA7C,mBAEK,MAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,UAAA,CAAA,EAAA,GAAA,gBACZ,OAAO,GAAA,CAAA;mBAId,mBAaK,MAAA,EAbA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAWK,UAAA,MAAA,WAVW,KAAA,QAAP,QAAG;wBADZ,mBAWK,MAAA;KATF,OAAO,IAAI,UAAO,OAAA;KAClB,OAAK,eAAE,UAAU,GAAG,CAAA;KACpB,KAAK,IAAI,KAAK;KACd,UAAK,WAAA,CAAG,IAAI,YAAY,MAAA,gBAAA,CAAgB,CAAC,IAAI,IAAI;KACjD,eAAU,WAAA,CAAG,IAAI,YAAY,MAAA,oBAAA,CAAoB,CAAC,IAAI,IAAI;QAE3D,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA,EAAA,GAAA,gBACd,IAAI,KAAK,GAAG,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA"}
1
+ {"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/panels/day.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('week')\">\n <li :class=\"cls.e('week-day')\" v-for=\"weekDay of weekDays\">\n {{ weekDay }}\n </li>\n </ul>\n\n <ul :class=\"cls.e('days')\">\n <li\n v-for=\"day of days\"\n :title=\"day.isToday ? '今天' : ''\"\n :class=\"getDayCls(day)\"\n :key=\"day.date.timestamp\"\n @click=\"!day.disabled && handleDateSelect(day.date)\"\n @mouseenter=\"!day.disabled && handleDateRangeHover(day.date)\"\n >\n <span :class=\"cls.e('cell-value')\">\n {{ day.date.day }}\n </span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarDay } from '../../../types'\nimport { getMonthDays, weekDays } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelDay', inheritAttrs: false })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst days = computed<CalendarDay[]>(() => {\n return getMonthDays(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(day: CalendarDay) {\n return [\n bem.is('in-range', didInRange(day.date)),\n bem.is('range-start', isRangeStart(day.date)),\n bem.is('range-end', isRangeEnd(day.date))\n ]\n}\n\nfunction getSingleCls(day: CalendarDay) {\n return [bem.is('selected', didSelected(day.date))]\n}\nfunction getDayCls(day: CalendarDay) {\n const ret = [\n cls.e('cell'),\n bem.is(day.type),\n bem.is('today', day.isToday === true),\n bem.is('disabled', day.disabled === true)\n ]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(day)]\n }\n return [...ret, ...getSingleCls(day)]\n}\n\nconst fmtStr = 'yyyyMMdd'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/panels/month.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('months')\">\n <li\n v-for=\"month of months\"\n :key=\"month.key\"\n :class=\"getMonthCls(month)\"\n @click=\"!month.disabled && handleDateSelect(month.date)\"\n @mouseenter=\"!month.disabled && handleDateRangeHover(month.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ month.month }}月</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarMonth } from '../../../types'\nimport { getYearMonths } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelMonth' })\n\nconst { cls, panelDate, rangeDate, panelProps, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst months = computed(() => {\n return getYearMonths(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(month: CalendarMonth) {\n return [\n bem.is('in-range', didInRange(month.date)),\n bem.is('range-start', isRangeStart(month.date)),\n bem.is('range-end', isRangeEnd(month.date))\n ]\n}\n\nfunction getSingleCls(month: CalendarMonth) {\n return [bem.is('selected', didSelected(month.date))]\n}\n\nfunction getMonthCls(month: CalendarMonth) {\n const ret = [cls.e('cell'), bem.is('disabled', month.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(month)]\n }\n return [...ret, ...getSingleCls(month)]\n}\n\nconst fmtStr = 'yyyyMM'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;AAqDA,MAAM,SAAS;;;;;EA3Bf,MAAM,EAAE,KAAK,WAAW,WAAW,YAAY,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,SAAS,eAAe;GAC5B,OAAO,cAAc,UAAU,MAAM,WAAW,WAAW,YAAY;EACzE,CAAC;EAED,SAAS,YAAY,OAAsB;GACzC,OAAO;IACL,IAAI,GAAG,YAAY,WAAW,MAAM,IAAI,CAAC;IACzC,IAAI,GAAG,eAAe,aAAa,MAAM,IAAI,CAAC;IAC9C,IAAI,GAAG,aAAa,WAAW,MAAM,IAAI,CAAC;GAC5C;EACF;EAEA,SAAS,aAAa,OAAsB;GAC1C,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,MAAM,IAAI,CAAC,CAAC;EACrD;EAEA,SAAS,YAAY,OAAsB;GACzC,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,MAAM,aAAa,IAAI,CAAC;GACvE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,KAAK,CAAC;GAEvC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,KAAK,CAAC;EACxC;EAIA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,OAAO,MAAM,MAAM,WAAW,KAAK,OAAO,MAAM;EAC9D;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM;EACpD;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,IAAI,OAAO,MAAM;EAClD;;uBA3EE,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAQK,UAAA,MAAA,WAPa,OAAA,QAAT,UAAK;wBADd,mBAQK,MAAA;KANF,KAAK,MAAM;KACX,OAAK,eAAE,YAAY,KAAK,CAAA;KACxB,UAAK,WAAA,CAAG,MAAM,YAAY,MAAA,gBAAA,CAAgB,CAAC,MAAM,IAAI;KACrD,eAAU,WAAA,CAAG,MAAM,YAAY,MAAA,oBAAA,CAAoB,CAAC,MAAM,IAAI;QAE/D,mBAA4D,QAAA,EAArD,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA,EAAA,GAAA,gBAAmB,MAAM,KAAK,IAAG,KAAC,CAAA,CAAA,GAAA,IAAA,UAAA"}
1
+ {"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/panels/month.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('months')\">\n <li\n v-for=\"month of months\"\n :key=\"month.key\"\n :class=\"getMonthCls(month)\"\n @click=\"!month.disabled && handleDateSelect(month.date)\"\n @mouseenter=\"!month.disabled && handleDateRangeHover(month.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ month.month }}月</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarMonth } from '../../../types'\nimport { getYearMonths } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelMonth' })\n\nconst { cls, panelDate, rangeDate, panelProps, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst months = computed(() => {\n return getYearMonths(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(month: CalendarMonth) {\n return [\n bem.is('in-range', didInRange(month.date)),\n bem.is('range-start', isRangeStart(month.date)),\n bem.is('range-end', isRangeEnd(month.date))\n ]\n}\n\nfunction getSingleCls(month: CalendarMonth) {\n return [bem.is('selected', didSelected(month.date))]\n}\n\nfunction getMonthCls(month: CalendarMonth) {\n const ret = [cls.e('cell'), bem.is('disabled', month.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(month)]\n }\n return [...ret, ...getSingleCls(month)]\n}\n\nconst fmtStr = 'yyyyMM'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;AAqDA,MAAM,SAAS;;;;;EA3Bf,MAAM,EAAE,KAAK,WAAW,WAAW,YAAY,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,SAAS,eAAe;GAC5B,OAAO,cAAc,UAAU,MAAM,WAAW,WAAW,YAAY;EACzE,CAAC;EAED,SAAS,YAAY,OAAsB;GACzC,OAAO;IACL,IAAI,GAAG,YAAY,WAAW,MAAM,IAAI,CAAC;IACzC,IAAI,GAAG,eAAe,aAAa,MAAM,IAAI,CAAC;IAC9C,IAAI,GAAG,aAAa,WAAW,MAAM,IAAI,CAAC;GAC5C;EACF;EAEA,SAAS,aAAa,OAAsB;GAC1C,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,MAAM,IAAI,CAAC,CAAC;EACrD;EAEA,SAAS,YAAY,OAAsB;GACzC,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,MAAM,aAAa,IAAI,CAAC;GACvE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,KAAK,CAAC;GAEvC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,KAAK,CAAC;EACxC;EAIA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,OAAO,MAAM,MAAM,WAAW,KAAK,OAAO,MAAM;EAC9D;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM;EACpD;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,IAAI,OAAO,MAAM;EAClD;;GA3EE,OAAA,UAAA,GAAA,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,QAAA,CAAA,EAAA,GACf,EAAA,UAAA,IAAA,GAAA,mBAQK,UAAA,MAAA,WAPa,OAAA,QAAT,UAAK;IADd,OAAA,UAAA,GAAA,mBAQK,MAAA;KANF,KAAK,MAAM;KACX,OAAK,eAAE,YAAY,KAAK,CAAA;KACxB,UAAK,WAAA,CAAG,MAAM,YAAY,MAAA,gBAAA,CAAgB,CAAC,MAAM,IAAI;KACrD,eAAU,WAAA,CAAG,MAAM,YAAY,MAAA,oBAAA,CAAoB,CAAC,MAAM,IAAI;IAE/D,GAAA,CAAA,mBAA4D,QAAA,EAArD,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA,EAAA,GAAmB,gBAAA,MAAM,KAAK,IAAG,KAAC,CAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/panels/year.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('years')\">\n <li\n v-for=\"year of years\"\n :key=\"year.year\"\n :class=\"getYearCls(year)\"\n @click=\"!year.disabled && handleDateSelect(year.date)\"\n @mouseenter=\"!year.disabled && handleDateRangeHover(year.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ year.year }}</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarYear } from '../../../types'\nimport { getTenYears } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelYear' })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst years = computed(() => {\n return getTenYears(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(year: CalendarYear) {\n return [\n bem.is('range', didInRange(year.date)),\n bem.is('range-start', isRangeStart(year.date)),\n bem.is('range-end', isRangeEnd(year.date))\n ]\n}\n\nfunction getSingleCls(year: CalendarYear) {\n return [bem.is('selected', didSelected(year.date))]\n}\n\nfunction getYearCls(year: CalendarYear) {\n const ret = [cls.e('cell'), bem.is('disabled', year.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(year)]\n }\n return [...ret, ...getSingleCls(year)]\n}\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.year === panelProps.date.year\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.year === start.year\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.year === end.year\n}\n</script>\n"],"mappings":";;;;;;;;;;EA0BA,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,QAAQ,eAAe;GAC3B,OAAO,YAAY,UAAU,MAAM,WAAW,WAAW,YAAY;EACvE,CAAC;EAED,SAAS,YAAY,MAAoB;GACvC,OAAO;IACL,IAAI,GAAG,SAAS,WAAW,KAAK,IAAI,CAAC;IACrC,IAAI,GAAG,eAAe,aAAa,KAAK,IAAI,CAAC;IAC7C,IAAI,GAAG,aAAa,WAAW,KAAK,IAAI,CAAC;GAC3C;EACF;EAEA,SAAS,aAAa,MAAoB;GACxC,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,KAAK,IAAI,CAAC,CAAC;EACpD;EAEA,SAAS,WAAW,MAAoB;GACtC,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,KAAK,aAAa,IAAI,CAAC;GACtE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,IAAI,CAAC;GAEtC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,IAAI,CAAC;EACvC;EAEA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,SAAS,WAAW,KAAK;EACvC;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,SAAS,MAAM;EAC7B;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,SAAS,IAAI;EAC3B;;uBAzEE,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAQK,UAAA,MAAA,WAPY,MAAA,QAAR,SAAI;wBADb,mBAQK,MAAA;KANF,KAAK,KAAK;KACV,OAAK,eAAE,WAAW,IAAI,CAAA;KACtB,UAAK,WAAA,CAAG,KAAK,YAAY,MAAA,gBAAA,CAAgB,CAAC,KAAK,IAAI;KACnD,eAAU,WAAA,CAAG,KAAK,YAAY,MAAA,oBAAA,CAAoB,CAAC,KAAK,IAAI;QAE7D,mBAAyD,QAAA,EAAlD,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA,EAAA,GAAA,gBAAmB,KAAK,IAAI,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA"}
1
+ {"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/panels/year.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('years')\">\n <li\n v-for=\"year of years\"\n :key=\"year.year\"\n :class=\"getYearCls(year)\"\n @click=\"!year.disabled && handleDateSelect(year.date)\"\n @mouseenter=\"!year.disabled && handleDateRangeHover(year.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ year.year }}</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarYear } from '../../../types'\nimport { getTenYears } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'UDatePanelYear' })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst years = computed(() => {\n return getTenYears(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(year: CalendarYear) {\n return [\n bem.is('range', didInRange(year.date)),\n bem.is('range-start', isRangeStart(year.date)),\n bem.is('range-end', isRangeEnd(year.date))\n ]\n}\n\nfunction getSingleCls(year: CalendarYear) {\n return [bem.is('selected', didSelected(year.date))]\n}\n\nfunction getYearCls(year: CalendarYear) {\n const ret = [cls.e('cell'), bem.is('disabled', year.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(year)]\n }\n return [...ret, ...getSingleCls(year)]\n}\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.year === panelProps.date.year\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.year === start.year\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.year === end.year\n}\n</script>\n"],"mappings":";;;;;;;;;;EA0BA,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,QAAQ,eAAe;GAC3B,OAAO,YAAY,UAAU,MAAM,WAAW,WAAW,YAAY;EACvE,CAAC;EAED,SAAS,YAAY,MAAoB;GACvC,OAAO;IACL,IAAI,GAAG,SAAS,WAAW,KAAK,IAAI,CAAC;IACrC,IAAI,GAAG,eAAe,aAAa,KAAK,IAAI,CAAC;IAC7C,IAAI,GAAG,aAAa,WAAW,KAAK,IAAI,CAAC;GAC3C;EACF;EAEA,SAAS,aAAa,MAAoB;GACxC,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,KAAK,IAAI,CAAC,CAAC;EACpD;EAEA,SAAS,WAAW,MAAoB;GACtC,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,KAAK,aAAa,IAAI,CAAC;GACtE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,IAAI,CAAC;GAEtC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,IAAI,CAAC;EACvC;EAEA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,SAAS,WAAW,KAAK;EACvC;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,SAAS,MAAM;EAC7B;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,SAAS,IAAI;EAC3B;;GAzEE,OAAA,UAAA,GAAA,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA,EAAA,GACf,EAAA,UAAA,IAAA,GAAA,mBAQK,UAAA,MAAA,WAPY,MAAA,QAAR,SAAI;IADb,OAAA,UAAA,GAAA,mBAQK,MAAA;KANF,KAAK,KAAK;KACV,OAAK,eAAE,WAAW,IAAI,CAAA;KACtB,UAAK,WAAA,CAAG,KAAK,YAAY,MAAA,gBAAA,CAAgB,CAAC,KAAK,IAAI;KACnD,eAAU,WAAA,CAAG,KAAK,YAAY,MAAA,oBAAA,CAAoB,CAAC,KAAK,IAAI;IAE7D,GAAA,CAAA,mBAAyD,QAAA,EAAlD,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,YAAA,CAAA,EAAA,GAAmB,gBAAA,KAAK,IAAI,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.js","names":["$attrs"],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n v-bind=\"$attrs\"\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({ name: 'UDatePicker', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DatePickerProps>(), {\n placeholder: '选择日期',\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DatePickerEmits>()\n\nconst cls = bem('date-picker')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nconst currentDate = shallowRef<Dater>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n if (isUserActive()) return\n currentDate.value = modelValue ? date(modelValue) : undefined\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nconst commitSelectedDate = userAction((date: Dater) => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n})\n\nasync function handleSelectDate(date: Dater) {\n await commitSelectedDate(date)\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,aAAa;EAE7B,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;EAClC,CAAC;EAED,MAAM,cAAc,WAA4B;EAEhD,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,QAAQ,SAAS;GACzB,IAAI,QAAQ,OAAO;GACnB,IAAI,SAAS,QAAQ,OAAO;GAC5B,IAAI,SAAS,SAAS,OAAO;GAC7B,IAAI,SAAS,QAAQ,OAAO;GAC5B,OAAO;EACT,CAAC;EAED,MAAM,cAAc,WAAkB;EAEtC,MAAM,EAAE,YAAY,iBAAiB,cAAc;EAEnD,YACQ,MAAM,aACX,eAAe;GACd,IAAI,aAAa,GAAG;GACpB,YAAY,QAAQ,aAAa,KAAK,UAAU,IAAI,KAAA;EACtD,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,MAAM,iBAAiB,eAAe;GACpC,OAAO,YAAY,OAAO,OAAO,UAAU,KAAK,KAAK;EACvD,CAAC;EAED,MAAM,qBAAqB,YAAY,SAAgB;GACrD,YAAY,QAAQ;GACpB,KAAK,qBAAqB,KAAK,OAAO,UAAU,KAAK,CAAC;EACxD,CAAC;EAED,eAAe,iBAAiB,MAAa;GAC3C,MAAM,mBAAmB,IAAI;GAC7B,YAAY,OAAO,MAAM;EAC3B;EAEA,SAAS,cAAc;GACrB,YAAY,QAAQ,KAAA;GACpB,KAAK,qBAAqB,KAAA,CAAS;EACrC;;WArHW,MAAA,QAAA,KAAA,UAAA,GADT,YA6Ba,MAAA,WAAA,GA7Bb,WA6Ba,EAAA,KAAA,EAAA,GA3BHA,KAAAA,QAAM;IACb,OAAO,UAAA;IACR,SAAQ;IACR,OAAM;aACF;IAAJ,KAAI;IACH,oBAAc,OAAA,OAAA,OAAA,WAAf,CAAA;IACC,UAAU,MAAA,QAAA;;IAEA,SAAO,cAaN,CAZV,YAYU,MAAA,aAAA,GAAA;KAXP,MAAM,MAAA,IAAA;KACP,mBAAA;KACC,WAAW,QAAA;KACX,aAAa,QAAA;KACb,eAAa,eAAA;KACb,UAAU,MAAA,QAAA;KACV,SAAO;;KAEG,QAAM,cACqC,CAApD,YAAoD,MAAA,WAAA,GAAA,EAA3C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA;6BAAsB,CAAZ,YAAY,MAAA,QAAA,CAAA,CAAA,CAAA;;;;;;;;;;;IAKtC,SAAO,cAC6E,CAA7F,YAA6F,MAAA,WAAA,GAAA;KAAhF,MAAA,MAAA,IAAA;KAAM,MAAA,QAAA;KAAM,iBAAA,QAAA;KAAe,MAAM,YAAA;KAAc,iBAAa;;;;;;;;kDAI7E,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,eAAA,SAAkB,MAAA,kBAAA,CAAkB,GAAA,CAAA,CAAA,GAAA,EAAA"}
1
+ {"version":3,"file":"date-picker.js","names":["$attrs"],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n v-bind=\"$attrs\"\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({ name: 'UDatePicker', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DatePickerProps>(), {\n placeholder: '选择日期',\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DatePickerEmits>()\n\nconst cls = bem('date-picker')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nconst currentDate = shallowRef<Dater>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n if (isUserActive()) return\n currentDate.value = modelValue ? date(modelValue) : undefined\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nconst commitSelectedDate = userAction((date: Dater) => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n})\n\nasync function handleSelectDate(date: Dater) {\n await commitSelectedDate(date)\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,aAAa;EAE7B,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;EAClC,CAAC;EAED,MAAM,cAAc,WAA4B;EAEhD,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,QAAQ,SAAS;GACzB,IAAI,QAAQ,OAAO;GACnB,IAAI,SAAS,QAAQ,OAAO;GAC5B,IAAI,SAAS,SAAS,OAAO;GAC7B,IAAI,SAAS,QAAQ,OAAO;GAC5B,OAAO;EACT,CAAC;EAED,MAAM,cAAc,WAAkB;EAEtC,MAAM,EAAE,YAAY,iBAAiB,cAAc;EAEnD,YACQ,MAAM,aACX,eAAe;GACd,IAAI,aAAa,GAAG;GACpB,YAAY,QAAQ,aAAa,KAAK,UAAU,IAAI,KAAA;EACtD,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,MAAM,iBAAiB,eAAe;GACpC,OAAO,YAAY,OAAO,OAAO,UAAU,KAAK,KAAK;EACvD,CAAC;EAED,MAAM,qBAAqB,YAAY,SAAgB;GACrD,YAAY,QAAQ;GACpB,KAAK,qBAAqB,KAAK,OAAO,UAAU,KAAK,CAAC;EACxD,CAAC;EAED,eAAe,iBAAiB,MAAa;GAC3C,MAAM,mBAAmB,IAAI;GAC7B,YAAY,OAAO,MAAM;EAC3B;EAEA,SAAS,cAAc;GACrB,YAAY,QAAQ,KAAA;GACpB,KAAK,qBAAqB,KAAA,CAAS;EACrC;;GArHW,OAAA,CAAA,MAAA,QAAA,KAAA,UAAA,GADT,YA6Ba,MAAA,WAAA,GA7Bb,WA6Ba,EAAA,KAAA,EAAA,GA3BHA,KAAAA,QAAM;IACb,OAAO,UAAA;IACR,SAAQ;IACR,OAAM;IACF,SAAA;IAAJ,KAAI;IACH,oBAAc,OAAA,OAAA,OAAA,WAAf,CAAA;IACC,UAAU,MAAA,QAAA;;IAEA,SAAO,cAaN,CAZV,YAYU,MAAA,aAAA,GAAA;KAXP,MAAM,MAAA,IAAA;KACP,mBAAA;KACC,WAAW,QAAA;KACX,aAAa,QAAA;KACb,eAAa,eAAA;KACb,UAAU,MAAA,QAAA;KACV,SAAO;;KAEG,QAAM,cACqC,CAApD,YAAoD,MAAA,WAAA,GAAA,EAA3C,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,MAAA,CAAA,EAAA,GAAA;MAAsB,SAAA,cAAA,CAAZ,YAAY,MAAA,QAAA,CAAA,CAAA,CAAA;;;;;;;;;;;IAKtC,SAAO,cAC6E,CAA7F,YAA6F,MAAA,WAAA,GAAA;KAAhF,MAAA,MAAA,IAAA;KAAM,MAAA,QAAA;KAAM,iBAAA,QAAA;KAAe,MAAM,YAAA;KAAc,iBAAa;;;;;;;;GAI7E,GAAA,IAAA,CAAA,SAAA,UAAA,CAAA,MAAA,UAAA,GAAA,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBADN,gBAAA,eAAA,SAAkB,MAAA,kBAAA,CAAkB,GAAA,CAAA,CAAA,GAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-picker.js","names":["$attrs"],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n v-bind=\"$attrs\"\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n @update:visible=\"dropdownVisible = $event\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UDateRangePicker', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DateRangePickerProps>(), {\n placeholder: () => ['起始日期', '结束日期'],\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DateRangePickerEmits>()\n\nconst cls = bem('date-range-picker')\n\nconst dropdownVisible = shallowRef(false)\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('focus', dropdownVisible.value)\n ]\n})\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst currentRangeDate = shallowRef<[Dater, Dater]>()\n\nconst displayedOfStart = computed(() => {\n return props.modelValue?.[0]\n})\n\nconst displayedOfEnd = computed(() => {\n return props.modelValue?.[1]\n})\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (isUserActive()) return\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n } else {\n currentRangeDate.value = undefined\n }\n },\n { immediate: true }\n)\n\nconst commitSelectedRange = userAction((rangeDate: [Dater, Dater] | undefined) => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n})\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await commitSelectedRange(rangeDate)\n dropdownRef.value?.close()\n}\n\nconst hovered = shallowRef(false)\n\nfunction handleClear() {\n currentRangeDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-range-picker.js","names":["$attrs"],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n v-bind=\"$attrs\"\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n @update:visible=\"dropdownVisible = $event\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UDateRangePicker', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DateRangePickerProps>(), {\n placeholder: () => ['起始日期', '结束日期'],\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DateRangePickerEmits>()\n\nconst cls = bem('date-range-picker')\n\nconst dropdownVisible = shallowRef(false)\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('focus', dropdownVisible.value)\n ]\n})\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst currentRangeDate = shallowRef<[Dater, Dater]>()\n\nconst displayedOfStart = computed(() => {\n return props.modelValue?.[0]\n})\n\nconst displayedOfEnd = computed(() => {\n return props.modelValue?.[1]\n})\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (isUserActive()) return\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n } else {\n currentRangeDate.value = undefined\n }\n },\n { immediate: true }\n)\n\nconst commitSelectedRange = userAction((rangeDate: [Dater, Dater] | undefined) => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n})\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await commitSelectedRange(rangeDate)\n dropdownRef.value?.close()\n}\n\nconst hovered = shallowRef(false)\n\nfunction handleClear() {\n currentRangeDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition :name=\"transition\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({ name: 'UDialog', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true,\n transition: 'fade-scale'\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({ default: false })\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({ dialogRef, cls })\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = { x: 0, y: 0 }\n\n/**\n * 更新弹框位置\n * 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,\n * 避免动画期间整体 transform 被关键帧覆盖、动画结束后又\"啪\"地跳回内联位置\n */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, { translate: `${x}px ${y}px` })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, { visible })\n\ndefineExpose<DialogExposed>({ close })\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition :name=\"transition\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({ name: 'UDialog', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true,\n transition: 'fade-scale'\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({ default: false })\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({ dialogRef, cls })\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = { x: 0, y: 0 }\n\n/**\n * 更新弹框位置\n * 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,\n * 避免动画期间整体 transform 被关键帧覆盖、动画结束后又\"啪\"地跳回内联位置\n */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, { translate: `${x}px ${y}px` })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, { visible })\n\ndefineExpose<DialogExposed>({ close })\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"drawer.js","names":["$attrs"],"sources":["../../../src/components/drawer/drawer.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" mode=\"out-in\" @enter=\"onEnter\">\n <div v-if=\"overlayVisible\" :class=\"overlayCls.b\" :style=\"{ zIndex: zIndex() }\" @click=\"close\">\n <transition :name=\"transitionName\" appear @after-leave=\"onAfterDrawerLeave\">\n <div\n v-bind=\"$attrs\"\n v-if=\"drawerVisible\"\n :class=\"drawerClass\"\n :style=\"drawerStyle\"\n @click.stop\n >\n <span :class=\"cls.e('close')\" @click=\"close\" v-if=\"showClose\">\n <u-icon><Close /></u-icon>\n </span>\n <slot />\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close } from '@veltra/icons/normal'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { DrawerProps, DrawerEmits } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UDrawer', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DrawerProps>(), { direction: 'right', closable: true })\n\nconst emit = defineEmits<DrawerEmits>()\n\nconst cls = bem('drawer')\nconst overlayCls = bem('drawer-overlay')\n\nconst overlayVisible = defineModel<boolean>({ default: false })\n\nconst drawerVisible = shallowRef(false)\n\n// 根据方向计算过渡动画名称\nconst transitionName = computed(() => {\n return `drawer-slide-${props.direction}`\n})\n\n// 计算抽屉样式类\nconst drawerClass = computed(() => {\n return [cls.b, bem.is(props.direction)]\n})\n\n// 计算抽屉样式\nconst drawerStyle = computed(() => {\n const style: Record<string, string> = {}\n\n return style\n})\n\nconst onEnter = () => {\n drawerVisible.value = true\n}\n\nconst onAfterDrawerLeave = () => {\n overlayVisible.value = false\n}\n\n// 关闭抽屉\nconst close = () => {\n drawerVisible.value = false\n emit('close')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,QAAQ;EACxB,MAAM,aAAa,IAAI,gBAAgB;EAEvC,MAAM,iBAAiB,SAAoB,SAAA,YAAmB;EAE9D,MAAM,gBAAgB,WAAW,KAAK;EAGtC,MAAM,iBAAiB,eAAe;GACpC,OAAO,gBAAgB,MAAM;EAC/B,CAAC;EAGD,MAAM,cAAc,eAAe;GACjC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,SAAS,CAAC;EACxC,CAAC;EAGD,MAAM,cAAc,eAAe;GAGjC,OAAO,CAAA;EACT,CAAC;EAED,MAAM,gBAAgB;GACpB,cAAc,QAAQ;EACxB;EAEA,MAAM,2BAA2B;GAC/B,eAAe,QAAQ;EACzB;EAGA,MAAM,cAAc;GAClB,cAAc,QAAQ;GACtB,KAAK,OAAO;EACd;;uBAxEE,YAmBW,UAAA,EAnBD,IAAG,OAAM,GAAA,CACjB,YAiBa,YAAA;IAjBD,MAAK;IAAO,MAAK;IAAiB;;2BAgBtC,CAfK,eAAA,SAAA,UAAA,GAAX,mBAeM,OAAA;;KAfsB,OAAK,eAAE,MAAA,UAAA,CAAU,CAAC,CAAC;KAAG,OAAK,eAAA,EAAA,QAAY,MAAA,MAAA,CAAM,CAAA,EAAA,CAAA;KAAO,SAAO;QACrF,YAaa,YAAA;KAbA,MAAM,eAAA;KAAgB,QAAA;KAAQ,cAAa;;4BAYhD,CATE,cAAA,SAAA,UAAA,GAFR,mBAWM,OAXN,WAWM,EAAA,KAAA,EAAA,GAVIA,KAAAA,QAAM;MAEb,OAAO,YAAA;MACP,OAAO,YAAA;MACP,SAAK,OAAA,OAAA,OAAA,KAAA,oBAAN,CAAA,GAAW,CAAA,MAAA,CAAA;UAEwC,QAAA,aAAA,UAAA,GAAnD,mBAEO,QAAA;;MAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA;MAAY,SAAO;SACpC,YAA0B,MAAA,WAAA,GAAA,MAAA;6BAAT,CAAT,YAAS,MAAA,KAAA,CAAA,CAAA,CAAA;;kDAEnB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"drawer.js","names":["$attrs"],"sources":["../../../src/components/drawer/drawer.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" mode=\"out-in\" @enter=\"onEnter\">\n <div v-if=\"overlayVisible\" :class=\"overlayCls.b\" :style=\"{ zIndex: zIndex() }\" @click=\"close\">\n <transition :name=\"transitionName\" appear @after-leave=\"onAfterDrawerLeave\">\n <div\n v-bind=\"$attrs\"\n v-if=\"drawerVisible\"\n :class=\"drawerClass\"\n :style=\"drawerStyle\"\n @click.stop\n >\n <span :class=\"cls.e('close')\" @click=\"close\" v-if=\"showClose\">\n <u-icon><Close /></u-icon>\n </span>\n <slot />\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close } from '@veltra/icons/normal'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { DrawerProps, DrawerEmits } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'UDrawer', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DrawerProps>(), { direction: 'right', closable: true })\n\nconst emit = defineEmits<DrawerEmits>()\n\nconst cls = bem('drawer')\nconst overlayCls = bem('drawer-overlay')\n\nconst overlayVisible = defineModel<boolean>({ default: false })\n\nconst drawerVisible = shallowRef(false)\n\n// 根据方向计算过渡动画名称\nconst transitionName = computed(() => {\n return `drawer-slide-${props.direction}`\n})\n\n// 计算抽屉样式类\nconst drawerClass = computed(() => {\n return [cls.b, bem.is(props.direction)]\n})\n\n// 计算抽屉样式\nconst drawerStyle = computed(() => {\n const style: Record<string, string> = {}\n\n return style\n})\n\nconst onEnter = () => {\n drawerVisible.value = true\n}\n\nconst onAfterDrawerLeave = () => {\n overlayVisible.value = false\n}\n\n// 关闭抽屉\nconst close = () => {\n drawerVisible.value = false\n emit('close')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,QAAQ;EACxB,MAAM,aAAa,IAAI,gBAAgB;EAEvC,MAAM,iBAAiB,SAAoB,SAAA,YAAmB;EAE9D,MAAM,gBAAgB,WAAW,KAAK;EAGtC,MAAM,iBAAiB,eAAe;GACpC,OAAO,gBAAgB,MAAM;EAC/B,CAAC;EAGD,MAAM,cAAc,eAAe;GACjC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,SAAS,CAAC;EACxC,CAAC;EAGD,MAAM,cAAc,eAAe;GAGjC,OAAO,CAAA;EACT,CAAC;EAED,MAAM,gBAAgB;GACpB,cAAc,QAAQ;EACxB;EAEA,MAAM,2BAA2B;GAC/B,eAAe,QAAQ;EACzB;EAGA,MAAM,cAAc;GAClB,cAAc,QAAQ;GACtB,KAAK,OAAO;EACd;;GAxEE,OAAA,UAAA,GAAA,YAmBW,UAAA,EAnBD,IAAG,OAAM,GAAA,CACjB,YAiBa,YAAA;IAjBD,MAAK;IAAO,MAAK;IAAiB;;IAgBtC,SAAA,cAAA,CAfK,eAAA,SAAA,UAAA,GAAX,mBAeM,OAAA;;KAfsB,OAAK,eAAE,MAAA,UAAA,CAAU,CAAC,CAAC;KAAG,OAAK,eAAA,EAAA,QAAY,MAAA,MAAA,CAAM,CAAA,EAAA,CAAA;KAAO,SAAO;IACrF,GAAA,CAAA,YAaa,YAAA;KAbA,MAAM,eAAA;KAAgB,QAAA;KAAQ,cAAa;;KAYhD,SAAA,cAAA,CATE,cAAA,SAAA,UAAA,GAFR,mBAWM,OAXN,WAWM,EAAA,KAAA,EAAA,GAVIA,KAAAA,QAAM;MAEb,OAAO,YAAA;MACP,OAAO,YAAA;MACP,SAAK,OAAA,OAAA,OAAA,KAAA,oBAAN,CAAA,GAAW,CAAA,MAAA,CAAA;KAEwC,CAAA,GAAA,CAAA,QAAA,aAAA,UAAA,GAAnD,mBAEO,QAAA;;MAFA,OAAK,eAAE,MAAA,GAAA,CAAG,CAAC,EAAC,OAAA,CAAA;MAAY,SAAO;KACpC,GAAA,CAAA,YAA0B,MAAA,WAAA,GAAA,MAAA;MAAT,SAAA,cAAA,CAAT,YAAS,MAAA,KAAA,CAAA,CAAA,CAAA;;KAEnB,CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,GAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,EAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","names":[],"sources":["../../../src/components/dropdown/dropdown.vue"],"sourcesContent":["<template>\n <UNodeRender :content=\"renderTriggerNode()\" ref=\"trigger\" />\n\n <Teleport :to=\"`#${popperContainerId}`\">\n <component\n v-if=\"dropdownVisible\"\n ref=\"contentRef\"\n :is=\"contentTag\"\n :class=\"dropdownContentClass\"\n :style=\"[{ zIndex: zIndex() }, contentStyle]\"\n @mouseenter=\"eventsHandlers.onMouseenter\"\n @mouseleave=\"eventsHandlers.onMouseleave\"\n @keydown=\"emit('keydown', $event)\"\n v-click-outside=\"trigger === 'click' ? handleClickOutside : undefined\"\n >\n <slot name=\"content\" />\n </component>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useModel, usePop, useTransition } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, computed, createVNode, cloneVNode, useTemplateRef, useAttrs } from 'vue'\n\nimport type { DropdownProps, DropdownExposed, DropdownEmits } from '../../types'\nimport { UNodeRender } from '../node-render'\nimport { useNest } from '../tip/use-nest'\n\ndefineOptions({ name: 'UDropdown', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DropdownProps>(), { trigger: 'hover', contentTag: 'div' })\n\nconst emit = defineEmits<DropdownEmits>()\n\nconst slots = defineSlots<{\n /** 内容 */\n content?: () => any\n /** 触发器 */\n trigger?: () => any\n}>()\n\nconst cls = bem('dropdown')\n\nconst dropdownContentClass = computed(() => {\n let fixed = [cls.e('content')]\n const className = props.contentClass\n if (!className) return fixed\n if (!Array.isArray(className)) {\n return [...fixed, className]\n }\n return [...fixed, ...className]\n})\n\nconst triggerRef = useTemplateRef('trigger')\nconst customTriggerRef = shallowRef<HTMLElement>()\nconst contentRef = shallowRef<HTMLElement>()\n\nconst triggerDom = computed(() => {\n return customTriggerRef.value || triggerRef.value?.$el\n})\n\n/**显示隐藏 */\nconst visible = useModel({ defaultValue: false, propName: 'visible', props, emit })\n\nconst dropdownVisible = useNest(visible)\n\nlet closeTimer: number | undefined\n\nconst attrs = useAttrs()\nfunction renderTriggerNode() {\n const slotsNode = slots.trigger?.()\n if (!slotsNode) return null\n const nodes = extractNormalVNodes(slotsNode)\n const props = { class: cls.b, ...attrs, ...eventsHandlers.value }\n if (nodes.length === 1) return cloneVNode(nodes[0]!, props)\n\n return createVNode('div', props, nodes)\n}\n\nfunction stopClose() {\n closeTimer !== undefined && clearTimeout(closeTimer)\n}\n\n/** 打开下拉框 */\nfunction open(config?: { trigger?: HTMLElement }) {\n stopClose()\n const { trigger } = config || {}\n if (trigger && trigger instanceof HTMLElement) {\n customTriggerRef.value = trigger\n }\n\n visible.value = true\n}\n\nfunction close() {\n if (props.trigger === 'hover') {\n // 给200毫秒重新浮动的缓冲时间\n closeTimer = setTimeout(() => {\n transition.leave()\n }, 200)\n } else {\n transition.leave()\n }\n}\n\n/** 点击外部 */\nfunction handleClickOutside(e: MouseEvent) {\n const { trigger } = props\n // 当下拉框为点击时触发时,点击触发元素时不关闭\n // 其他任何时候点击外部都关闭下拉器\n if (trigger === 'click' && triggerDom.value.contains(e.target as Node)) {\n return\n }\n close()\n}\n\nconst transitionName = shallowRef('slide-down')\n\nconst { update, popperContainerId } = usePop({\n triggerRef: triggerDom,\n contentRef,\n direction: 'bottom',\n alignment: 'start',\n onPop(position) {\n transitionName.value = position.placement.includes('top') ? 'slide-up' : 'slide-down'\n\n transition.enter()\n },\n\n onTriggerPositionChange() {\n close()\n },\n\n onBeforeUpdate(triggerEl, contentEl) {\n setStyles(contentEl, {\n width: props.width ?? `${triggerEl.offsetWidth}px`,\n minWidth: props.minWidth\n })\n }\n})\n\nconst transition = useTransition('css', {\n name: transitionName,\n target: contentRef,\n afterLeave() {\n visible.value = false\n },\n\n leaveCanceled() {\n visible.value = false\n }\n})\n\nfunction triggerClick() {\n if (visible.value) {\n close()\n } else {\n open()\n }\n}\n\nconst eventsHandlers = computed(() => {\n const { trigger, disabled } = props\n\n const handlers: Record<string, Function> = {}\n if (disabled || trigger === 'custom') return handlers\n\n if (trigger === 'click') {\n handlers.onClick = triggerClick\n } else if (trigger === 'hover') {\n handlers.onMouseenter = open\n handlers.onMouseleave = close\n }\n\n return handlers\n})\n\ndefineExpose<DropdownExposed>({\n open,\n close,\n /**暴露出更新dropdown内容位置方法 适用与级联选择器组件 */\n updateDropdown: update\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.js","names":[],"sources":["../../../src/components/dropdown/dropdown.vue"],"sourcesContent":["<template>\n <UNodeRender :content=\"renderTriggerNode()\" ref=\"trigger\" />\n\n <Teleport :to=\"`#${popperContainerId}`\">\n <component\n v-if=\"dropdownVisible\"\n ref=\"contentRef\"\n :is=\"contentTag\"\n :class=\"dropdownContentClass\"\n :style=\"[{ zIndex: zIndex() }, contentStyle]\"\n @mouseenter=\"eventsHandlers.onMouseenter\"\n @mouseleave=\"eventsHandlers.onMouseleave\"\n @keydown=\"emit('keydown', $event)\"\n v-click-outside=\"trigger === 'click' ? handleClickOutside : undefined\"\n >\n <slot name=\"content\" />\n </component>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useModel, usePop, useTransition } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, computed, createVNode, cloneVNode, useTemplateRef, useAttrs } from 'vue'\n\nimport type { DropdownProps, DropdownExposed, DropdownEmits } from '../../types'\nimport { UNodeRender } from '../node-render'\nimport { useNest } from '../tip/use-nest'\n\ndefineOptions({ name: 'UDropdown', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DropdownProps>(), { trigger: 'hover', contentTag: 'div' })\n\nconst emit = defineEmits<DropdownEmits>()\n\nconst slots = defineSlots<{\n /** 内容 */\n content?: () => any\n /** 触发器 */\n trigger?: () => any\n}>()\n\nconst cls = bem('dropdown')\n\nconst dropdownContentClass = computed(() => {\n let fixed = [cls.e('content')]\n const className = props.contentClass\n if (!className) return fixed\n if (!Array.isArray(className)) {\n return [...fixed, className]\n }\n return [...fixed, ...className]\n})\n\nconst triggerRef = useTemplateRef('trigger')\nconst customTriggerRef = shallowRef<HTMLElement>()\nconst contentRef = shallowRef<HTMLElement>()\n\nconst triggerDom = computed(() => {\n return customTriggerRef.value || triggerRef.value?.$el\n})\n\n/**显示隐藏 */\nconst visible = useModel({ defaultValue: false, propName: 'visible', props, emit })\n\nconst dropdownVisible = useNest(visible)\n\nlet closeTimer: number | undefined\n\nconst attrs = useAttrs()\nfunction renderTriggerNode() {\n const slotsNode = slots.trigger?.()\n if (!slotsNode) return null\n const nodes = extractNormalVNodes(slotsNode)\n const props = { class: cls.b, ...attrs, ...eventsHandlers.value }\n if (nodes.length === 1) return cloneVNode(nodes[0]!, props)\n\n return createVNode('div', props, nodes)\n}\n\nfunction stopClose() {\n closeTimer !== undefined && clearTimeout(closeTimer)\n}\n\n/** 打开下拉框 */\nfunction open(config?: { trigger?: HTMLElement }) {\n stopClose()\n const { trigger } = config || {}\n if (trigger && trigger instanceof HTMLElement) {\n customTriggerRef.value = trigger\n }\n\n visible.value = true\n}\n\nfunction close() {\n if (props.trigger === 'hover') {\n // 给200毫秒重新浮动的缓冲时间\n closeTimer = setTimeout(() => {\n transition.leave()\n }, 200)\n } else {\n transition.leave()\n }\n}\n\n/** 点击外部 */\nfunction handleClickOutside(e: MouseEvent) {\n const { trigger } = props\n // 当下拉框为点击时触发时,点击触发元素时不关闭\n // 其他任何时候点击外部都关闭下拉器\n if (trigger === 'click' && triggerDom.value.contains(e.target as Node)) {\n return\n }\n close()\n}\n\nconst transitionName = shallowRef('slide-down')\n\nconst { update, popperContainerId } = usePop({\n triggerRef: triggerDom,\n contentRef,\n direction: 'bottom',\n alignment: 'start',\n onPop(position) {\n transitionName.value = position.placement.includes('top') ? 'slide-up' : 'slide-down'\n\n transition.enter()\n },\n\n onTriggerPositionChange() {\n close()\n },\n\n onBeforeUpdate(triggerEl, contentEl) {\n setStyles(contentEl, {\n width: props.width ?? `${triggerEl.offsetWidth}px`,\n minWidth: props.minWidth\n })\n }\n})\n\nconst transition = useTransition('css', {\n name: transitionName,\n target: contentRef,\n afterLeave() {\n visible.value = false\n },\n\n leaveCanceled() {\n visible.value = false\n }\n})\n\nfunction triggerClick() {\n if (visible.value) {\n close()\n } else {\n open()\n }\n}\n\nconst eventsHandlers = computed(() => {\n const { trigger, disabled } = props\n\n const handlers: Record<string, Function> = {}\n if (disabled || trigger === 'custom') return handlers\n\n if (trigger === 'click') {\n handlers.onClick = triggerClick\n } else if (trigger === 'hover') {\n handlers.onMouseenter = open\n handlers.onMouseleave = close\n }\n\n return handlers\n})\n\ndefineExpose<DropdownExposed>({\n open,\n close,\n /**暴露出更新dropdown内容位置方法 适用与级联选择器组件 */\n updateDropdown: update\n})\n</script>\n"],"mappings":"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"}