niuma-ui 2.0.4 → 2.0.9

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 (279) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/components/_shared/index.d.ts +2 -2
  3. package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
  4. package/dist/components/_shared/src/overlay-utils.js +87 -2
  5. package/dist/components/_shared/src/reka.js +2 -2
  6. package/dist/components/alert/index.d.ts +1 -0
  7. package/dist/components/alert/src/RsAlert.css +120 -65
  8. package/dist/components/alert/src/RsAlert.d.ts +24 -5
  9. package/dist/components/alert/src/RsAlert.impl.js +108 -36
  10. package/dist/components/alert/src/RsAlert.js +1 -1
  11. package/dist/components/alert/src/alert-utils.d.ts +37 -0
  12. package/dist/components/alert/src/alert-utils.js +71 -0
  13. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +1 -1
  14. package/dist/components/button/src/RsButton.impl.js +1 -1
  15. package/dist/components/card/src/RsCard.d.ts +1 -1
  16. package/dist/components/code-block/index.d.ts +1 -0
  17. package/dist/components/code-block/src/RsCodeBlock.css +93 -52
  18. package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
  19. package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
  20. package/dist/components/code-block/src/RsCodeBlock.js +1 -1
  21. package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
  22. package/dist/components/code-block/src/code-block-highlight.js +34 -0
  23. package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
  24. package/dist/components/code-block/src/code-block-utils.js +71 -0
  25. package/dist/components/code-editor/index.d.ts +1 -1
  26. package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
  27. package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
  28. package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
  29. package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
  30. package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
  31. package/dist/components/code-editor/src/code-editor-utils.js +36 -1
  32. package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
  33. package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
  34. package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
  35. package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
  36. package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
  37. package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
  38. package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
  39. package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
  40. package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
  41. package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
  42. package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
  43. package/dist/components/code-editor/src/code-mirror-session.js +30 -0
  44. package/dist/components/context-menu/index.d.ts +1 -1
  45. package/dist/components/context-menu/src/RsContextMenu.css +115 -89
  46. package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
  47. package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
  48. package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
  49. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
  50. package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
  51. package/dist/components/context-menu/src/context-menu-utils.js +168 -3
  52. package/dist/components/date-picker/src/RsDatePicker.d.ts +2 -2
  53. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +2 -2
  54. package/dist/components/descriptions/index.d.ts +1 -1
  55. package/dist/components/descriptions/src/RsDescriptions.css +38 -11
  56. package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
  57. package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
  58. package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
  59. package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
  60. package/dist/components/descriptions/src/descriptions-utils.js +39 -1
  61. package/dist/components/dialog/index.d.ts +1 -1
  62. package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
  63. package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
  64. package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
  65. package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
  66. package/dist/components/dialog/src/RsDialog.css +102 -109
  67. package/dist/components/dialog/src/RsDialog.d.ts +34 -24
  68. package/dist/components/dialog/src/RsDialog.impl.js +410 -177
  69. package/dist/components/dialog/src/RsDialog.js +2 -1
  70. package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
  71. package/dist/components/dialog/src/dialog-utils.js +152 -1
  72. package/dist/components/dialog/src/dialog-window.js +29 -8
  73. package/dist/components/drawer/index.d.ts +1 -1
  74. package/dist/components/drawer/src/RsDrawer.css +61 -29
  75. package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
  76. package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
  77. package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
  78. package/dist/components/drawer/src/drawer-utils.js +131 -1
  79. package/dist/components/dropdown/index.d.ts +1 -1
  80. package/dist/components/dropdown/src/RsDropdown.css +140 -61
  81. package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
  82. package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
  83. package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
  84. package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
  85. package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
  86. package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
  87. package/dist/components/dropdown/src/dropdown-utils.js +103 -3
  88. package/dist/components/empty/index.d.ts +1 -0
  89. package/dist/components/empty/src/RsEmpty.css +105 -23
  90. package/dist/components/empty/src/RsEmpty.d.ts +27 -4
  91. package/dist/components/empty/src/RsEmpty.impl.js +154 -11
  92. package/dist/components/empty/src/RsEmpty.js +2 -1
  93. package/dist/components/empty/src/empty-utils.d.ts +28 -0
  94. package/dist/components/empty/src/empty-utils.js +55 -0
  95. package/dist/components/form/src/RsForm.d.ts +1 -1
  96. package/dist/components/input-number/src/RsInputNumber.d.ts +1 -1
  97. package/dist/components/label/src/RsLabel.d.ts +1 -1
  98. package/dist/components/loading/index.d.ts +1 -0
  99. package/dist/components/loading/src/RsLoading.css +13 -97
  100. package/dist/components/loading/src/RsLoading.d.ts +52 -2
  101. package/dist/components/loading/src/RsLoading.impl.js +216 -33
  102. package/dist/components/loading/src/RsLoading.js +2 -1
  103. package/dist/components/loading/src/loading-status.css +210 -0
  104. package/dist/components/loading/src/loading-status.d.ts +34 -0
  105. package/dist/components/loading/src/loading-status.impl.js +84 -0
  106. package/dist/components/loading/src/loading-status.js +8 -0
  107. package/dist/components/loading/src/loading-utils.d.ts +51 -4
  108. package/dist/components/loading/src/loading-utils.js +122 -0
  109. package/dist/components/loading-bar/index.d.ts +1 -0
  110. package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
  111. package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
  112. package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
  113. package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
  114. package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
  115. package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
  116. package/dist/components/log/src/RsLog.css +52 -144
  117. package/dist/components/log/src/RsLog.d.ts +12 -11
  118. package/dist/components/log/src/RsLog.impl.js +181 -148
  119. package/dist/components/log/src/RsLog.js +1 -1
  120. package/dist/components/log/src/RsLogRow.css +152 -0
  121. package/dist/components/log/src/RsLogRow.d.ts +35 -0
  122. package/dist/components/log/src/RsLogRow.impl.js +91 -0
  123. package/dist/components/log/src/RsLogRow.js +8 -0
  124. package/dist/components/log/src/log-utils.d.ts +8 -0
  125. package/dist/components/log/src/log-utils.js +71 -10
  126. package/dist/components/markdown/index.d.ts +1 -1
  127. package/dist/components/markdown/src/RsMarkdown.css +75 -32
  128. package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
  129. package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
  130. package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
  131. package/dist/components/markdown/src/markdown-utils.js +114 -12
  132. package/dist/components/mentions/src/RsMentions.d.ts +2 -2
  133. package/dist/components/menu/index.d.ts +1 -1
  134. package/dist/components/menu/src/RsMenu.css +70 -29
  135. package/dist/components/menu/src/RsMenu.d.ts +58 -4
  136. package/dist/components/menu/src/RsMenu.impl.js +93 -46
  137. package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
  138. package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
  139. package/dist/components/menu/src/menu-utils.d.ts +56 -0
  140. package/dist/components/menu/src/menu-utils.js +139 -6
  141. package/dist/components/monaco-editor/index.d.ts +1 -1
  142. package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
  143. package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
  144. package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
  145. package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
  146. package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
  147. package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
  148. package/dist/components/pagination/index.d.ts +2 -2
  149. package/dist/components/pagination/src/RsPagination.css +93 -46
  150. package/dist/components/pagination/src/RsPagination.d.ts +68 -8
  151. package/dist/components/pagination/src/RsPagination.impl.js +229 -86
  152. package/dist/components/pagination/src/RsPagination.js +1 -1
  153. package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
  154. package/dist/components/pagination/src/pagination-utils.js +105 -1
  155. package/dist/components/popover/index.d.ts +1 -0
  156. package/dist/components/popover/src/RsPopover.css +124 -14
  157. package/dist/components/popover/src/RsPopover.d.ts +38 -7
  158. package/dist/components/popover/src/RsPopover.impl.js +546 -35
  159. package/dist/components/popover/src/RsPopover.js +2 -1
  160. package/dist/components/popover/src/popover-utils.d.ts +24 -2
  161. package/dist/components/popover/src/popover-utils.js +55 -0
  162. package/dist/components/sidebar/index.d.ts +1 -0
  163. package/dist/components/sidebar/src/RsSidebar.css +91 -33
  164. package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
  165. package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
  166. package/dist/components/sidebar/src/RsSidebar.js +1 -1
  167. package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
  168. package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
  169. package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
  170. package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
  171. package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
  172. package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
  173. package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
  174. package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
  175. package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
  176. package/dist/components/sidebar/src/sidebar-utils.js +72 -0
  177. package/dist/components/split-pane/index.d.ts +2 -2
  178. package/dist/components/split-pane/src/RsSplitPane.css +41 -30
  179. package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
  180. package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
  181. package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
  182. package/dist/components/split-pane/src/split-pane-utils.js +18 -1
  183. package/dist/components/stat-card/index.d.ts +1 -0
  184. package/dist/components/stat-card/src/RsStatCard.css +129 -25
  185. package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
  186. package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
  187. package/dist/components/stat-card/src/RsStatCard.js +1 -1
  188. package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
  189. package/dist/components/stat-card/src/stat-card-utils.js +113 -0
  190. package/dist/components/steps/index.d.ts +1 -1
  191. package/dist/components/steps/src/RsSteps.css +158 -37
  192. package/dist/components/steps/src/RsSteps.d.ts +69 -5
  193. package/dist/components/steps/src/RsSteps.impl.js +168 -28
  194. package/dist/components/steps/src/RsSteps.js +1 -1
  195. package/dist/components/steps/src/steps-utils.d.ts +51 -1
  196. package/dist/components/steps/src/steps-utils.js +67 -1
  197. package/dist/components/table/src/RsTable.impl.js +4 -2
  198. package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
  199. package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
  200. package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
  201. package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
  202. package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
  203. package/dist/components/table/src/rs-table-props.d.ts +1 -1
  204. package/dist/components/table/src/rs-table-props.js +0 -1
  205. package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
  206. package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
  207. package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
  208. package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
  209. package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
  210. package/dist/components/table/src/utils/table-utils.d.ts +10 -6
  211. package/dist/components/table/src/utils/table-utils.js +27 -25
  212. package/dist/components/table/style/rs-table.css +34 -20
  213. package/dist/components/tabs/index.d.ts +2 -2
  214. package/dist/components/tabs/src/RsTabs.css +225 -101
  215. package/dist/components/tabs/src/RsTabs.d.ts +37 -8
  216. package/dist/components/tabs/src/RsTabs.impl.js +400 -270
  217. package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
  218. package/dist/components/tabs/src/tabs-utils.js +55 -1
  219. package/dist/components/terminal/index.d.ts +1 -1
  220. package/dist/components/terminal/src/RsTerminal.css +60 -37
  221. package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
  222. package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
  223. package/dist/components/terminal/src/RsTerminal.js +1 -1
  224. package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
  225. package/dist/components/terminal/src/terminal-utils.js +113 -10
  226. package/dist/components/textarea/src/RsTextarea.d.ts +1 -1
  227. package/dist/components/time-picker/src/RsTimePicker.d.ts +2 -2
  228. package/dist/components/toaster/src/RsToaster.css +156 -203
  229. package/dist/components/toaster/src/RsToaster.d.ts +32 -2
  230. package/dist/components/toaster/src/RsToaster.impl.js +309 -34
  231. package/dist/components/toaster/src/toast-store.d.ts +95 -0
  232. package/dist/components/toaster/src/toast-store.js +177 -0
  233. package/dist/components/toaster/src/toast-utils.d.ts +60 -0
  234. package/dist/components/toaster/src/toast-utils.js +86 -0
  235. package/dist/components/toolbar/index.d.ts +1 -1
  236. package/dist/components/toolbar/src/RsToolbar.css +206 -32
  237. package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
  238. package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
  239. package/dist/components/toolbar/src/RsToolbar.js +2 -1
  240. package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
  241. package/dist/components/toolbar/src/toolbar-utils.js +105 -0
  242. package/dist/components/tooltip/index.d.ts +1 -0
  243. package/dist/components/tooltip/src/RsTooltip.css +104 -26
  244. package/dist/components/tooltip/src/RsTooltip.d.ts +38 -16
  245. package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
  246. package/dist/components/tooltip/src/RsTooltip.js +2 -1
  247. package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
  248. package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
  249. package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
  250. package/dist/components/tooltip/src/tooltip-utils.js +23 -0
  251. package/dist/components/tree/index.d.ts +2 -2
  252. package/dist/components/tree/src/RsTree.css +84 -75
  253. package/dist/components/tree/src/RsTree.d.ts +20 -20
  254. package/dist/components/tree/src/RsTree.impl.js +292 -66
  255. package/dist/components/tree/src/RsTree.js +1 -1
  256. package/dist/components/tree/src/tree-utils.d.ts +22 -0
  257. package/dist/components/tree/src/tree-utils.js +18 -4
  258. package/dist/components/tree-select/src/RsTreeSelect.d.ts +1 -1
  259. package/dist/components/virtual-list/index.d.ts +1 -1
  260. package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
  261. package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
  262. package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
  263. package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
  264. package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
  265. package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
  266. package/dist/composables/useRsLoadingBar.d.ts +2 -5
  267. package/dist/composables/useRsLoadingBar.js +21 -5
  268. package/dist/composables/useRsTabsNav.d.ts +3 -1
  269. package/dist/composables/useRsTabsNav.js +96 -28
  270. package/dist/composables/useRsToast.d.ts +11 -13
  271. package/dist/composables/useRsToast.js +66 -17
  272. package/dist/index.d.ts +30 -21
  273. package/dist/index.js +14 -0
  274. package/dist/locale/apply.js +6 -1
  275. package/dist/locale/messages.js +128 -2
  276. package/dist/styles.css +460 -797
  277. package/dist/theme/brand.example.css +2 -1
  278. package/dist/vite-plugins/niuma-ui-host.js +1 -1
  279. package/package.json +2 -3
@@ -0,0 +1,60 @@
1
+ import type { RsToastPosition, RsToastType } from '../../_shared/src/overlay-utils';
2
+ /** 未传 duration 时的自动关闭(ms)。 */
3
+ export declare const RS_TOAST_DEFAULT_DURATION = 4000;
4
+ /** 同一方位同时画在页面上的条数。 */
5
+ export declare const RS_TOAST_DEFAULT_VISIBLE = 3;
6
+ /** 每个宿主在内存里最多保留的条数,防止循环调用把队列撑满。 */
7
+ export declare const RS_TOAST_MAX = 24;
8
+ /** 离场过渡。减少动态时为 0,节点马上卸掉。 */
9
+ export declare const RS_TOAST_LEAVE_MS = 180;
10
+ /** 滑动超过该距离才关闭。 */
11
+ export declare const RS_TOAST_SWIPE_PX = 72;
12
+ export type RsToastKind = RsToastType | 'loading' | 'default';
13
+ export interface RsToastAction {
14
+ label: string;
15
+ onClick?: (event: MouseEvent) => void;
16
+ }
17
+ export interface RsToastOptions {
18
+ title: string;
19
+ description?: string;
20
+ position?: RsToastPosition;
21
+ /** 毫秒。0 或 Infinity 表示不自动关闭。未传则用宿主默认。 */
22
+ duration?: number;
23
+ id?: string;
24
+ toasterId?: string;
25
+ dismissible?: boolean;
26
+ closeButton?: boolean;
27
+ richColors?: boolean;
28
+ action?: RsToastAction;
29
+ cancel?: RsToastAction;
30
+ onDismiss?: (id: string) => void;
31
+ onAutoClose?: (id: string) => void;
32
+ }
33
+ export type RsToastInput = string | RsToastOptions;
34
+ export type RsToastPromiseMessage<T> = string | RsToastOptions | ((value: T) => string | RsToastOptions);
35
+ export interface RsToastPromiseMessages<T> {
36
+ loading: string | RsToastOptions;
37
+ success?: RsToastPromiseMessage<T>;
38
+ error?: RsToastPromiseMessage<unknown>;
39
+ id?: string;
40
+ toasterId?: string;
41
+ }
42
+ export declare function normalizeRsToastInput(input: RsToastInput): RsToastOptions;
43
+ export declare function normalizePromiseMessage<T>(message: RsToastPromiseMessage<T> | undefined, value: T): RsToastOptions | null;
44
+ /** 未传走 fallback;≤0 或非有限数表示常驻。 */
45
+ export declare function resolveRsToastDuration(duration: number | undefined, fallback: number): number;
46
+ export declare function shouldArmToastTimer(duration: number, hasWindow: boolean): boolean;
47
+ export declare function clampVisibleToasts(value: number | undefined): number;
48
+ export declare function clampToastGap(value: number | undefined): number;
49
+ /** 最新在前。超出上限时丢掉队尾。 */
50
+ export declare function trimToastList<T>(items: T[], max: number): T[];
51
+ export declare function resolveToastPosition(item: RsToastPosition | undefined, host: RsToastPosition): RsToastPosition;
52
+ export declare function toastLiveRole(type: RsToastKind): 'alert' | 'status';
53
+ export declare function toastAriaLive(type: RsToastKind): 'assertive' | 'polite';
54
+ export declare function toastIconName(type: RsToastKind): string;
55
+ export declare function prefersReducedToastMotion(): boolean;
56
+ export declare function toastLeaveDelay(): number;
57
+ export declare function isToastTypingTarget(target: EventTarget | null): boolean;
58
+ /** `alt+t` 这种写法。空字符串表示不注册快捷键。 */
59
+ export declare function matchToastHotkey(event: KeyboardEvent, spec: string | undefined): boolean;
60
+ export declare function errorToastText(error: unknown): string;
@@ -0,0 +1,86 @@
1
+ //#region src/components/toaster/src/toast-utils.ts
2
+ /** 未传 duration 时的自动关闭(ms)。 */
3
+ var RS_TOAST_DEFAULT_DURATION = 4e3;
4
+ function normalizeRsToastInput(input) {
5
+ if (typeof input === "string") return { title: input };
6
+ return input;
7
+ }
8
+ function normalizePromiseMessage(message, value) {
9
+ if (message == null) return null;
10
+ const resolved = typeof message === "function" ? message(value) : message;
11
+ if (typeof resolved === "string") return { title: resolved };
12
+ return resolved;
13
+ }
14
+ /** 未传走 fallback;≤0 或非有限数表示常驻。 */
15
+ function resolveRsToastDuration(duration, fallback) {
16
+ if (duration == null || Number.isNaN(duration)) return resolveRsToastDuration(fallback, RS_TOAST_DEFAULT_DURATION);
17
+ if (duration <= 0 || !Number.isFinite(duration)) return Number.POSITIVE_INFINITY;
18
+ return duration;
19
+ }
20
+ function shouldArmToastTimer(duration, hasWindow) {
21
+ return hasWindow && Number.isFinite(duration) && duration > 0;
22
+ }
23
+ function clampVisibleToasts(value) {
24
+ if (value == null || !Number.isFinite(value) || value < 1) return 3;
25
+ return Math.min(24, Math.floor(value));
26
+ }
27
+ function clampToastGap(value) {
28
+ if (value == null || !Number.isFinite(value) || value < 0) return 4;
29
+ return value;
30
+ }
31
+ /** 最新在前。超出上限时丢掉队尾。 */
32
+ function trimToastList(items, max) {
33
+ if (items.length <= max) return items;
34
+ return items.slice(0, max);
35
+ }
36
+ function resolveToastPosition(item, host) {
37
+ return item ?? host;
38
+ }
39
+ function toastLiveRole(type) {
40
+ return type === "error" ? "alert" : "status";
41
+ }
42
+ function toastAriaLive(type) {
43
+ return type === "error" ? "assertive" : "polite";
44
+ }
45
+ function toastIconName(type) {
46
+ switch (type) {
47
+ case "success": return "circle-check";
48
+ case "error": return "circle-alert";
49
+ case "warning": return "triangle-alert";
50
+ case "loading": return "loader-circle";
51
+ default: return "info";
52
+ }
53
+ }
54
+ function prefersReducedToastMotion() {
55
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return false;
56
+ return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
57
+ }
58
+ function toastLeaveDelay() {
59
+ return prefersReducedToastMotion() ? 0 : 180;
60
+ }
61
+ function isToastTypingTarget(target) {
62
+ if (typeof HTMLElement === "undefined" || !(target instanceof HTMLElement)) return false;
63
+ const tag = target.tagName;
64
+ return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT" || target.isContentEditable;
65
+ }
66
+ /** `alt+t` 这种写法。空字符串表示不注册快捷键。 */
67
+ function matchToastHotkey(event, spec) {
68
+ if (!spec || event.repeat) return false;
69
+ const parts = spec.toLowerCase().split("+").map((part) => part.trim()).filter(Boolean);
70
+ if (parts.length === 0) return false;
71
+ const key = parts[parts.length - 1];
72
+ const needAlt = parts.includes("alt");
73
+ const needCtrl = parts.includes("ctrl") || parts.includes("control");
74
+ const needShift = parts.includes("shift");
75
+ const needMeta = parts.includes("meta");
76
+ if (event.altKey !== needAlt || event.ctrlKey !== needCtrl) return false;
77
+ if (event.shiftKey !== needShift || event.metaKey !== needMeta) return false;
78
+ return event.key.toLowerCase() === key;
79
+ }
80
+ function errorToastText(error) {
81
+ if (typeof error === "string") return error;
82
+ if (error instanceof Error && error.message) return error.message;
83
+ return "";
84
+ }
85
+ //#endregion
86
+ export { RS_TOAST_DEFAULT_DURATION, clampToastGap, clampVisibleToasts, errorToastText, isToastTypingTarget, matchToastHotkey, normalizePromiseMessage, normalizeRsToastInput, prefersReducedToastMotion, resolveRsToastDuration, resolveToastPosition, shouldArmToastTimer, toastAriaLive, toastIconName, toastLeaveDelay, toastLiveRole, trimToastList };
@@ -1,2 +1,2 @@
1
1
  export { default as RsToolbar } from './src/RsToolbar.js';
2
- export type { RsToolbarBorder, RsToolbarSize } from './src/RsToolbar.js';
2
+ export type { RsToolbarBorder, RsToolbarExpose, RsToolbarInstance, RsToolbarOrientation, RsToolbarSize, } from './src/toolbar-utils';
@@ -1,61 +1,235 @@
1
1
 
2
- .rs-toolbar {
2
+ .rs-toolbar[data-v-7b347879] {
3
+ --rs-toolbar-bg: var(--rs-surface);
4
+ --rs-toolbar-fg: var(--rs-text-primary);
5
+ --rs-toolbar-border: var(--rs-border-subtle);
6
+ --rs-toolbar-gap: var(--rs-space-md);
7
+ --rs-toolbar-item-gap: var(--rs-space-xs);
8
+ --rs-toolbar-pad-block: 0px;
9
+ --rs-toolbar-pad-inline: var(--rs-space-md);
10
+ --rs-toolbar-height: var(--rs-control-height-lg);
11
+ --rs-toolbar-font-size: var(--rs-font-size-sm);
12
+ --rs-toolbar-rail-min: 0px;
13
+ --rs-toolbar-blur: 16px;
14
+ --rs-toolbar-sticky-offset: 0px;
15
+ --rs-toolbar-disabled-opacity: 0.5;
16
+ --rs-toolbar-z: 1;
3
17
  display: flex;
4
18
  align-items: center;
5
- gap: var(--rs-space-sm);
19
+ gap: var(--rs-toolbar-gap);
6
20
  box-sizing: border-box;
7
21
  width: 100%;
8
22
  min-width: 0;
9
23
  flex-shrink: 0;
10
- padding: 0 var(--rs-space-sm);
11
- background: var(--rs-surface);
12
- color: var(--rs-text);
24
+ white-space: nowrap;
25
+ padding-block: var(--rs-toolbar-pad-block);
26
+ padding-inline: var(--rs-toolbar-pad-inline);
27
+ min-height: var(--rs-toolbar-height);
28
+ background: var(--rs-toolbar-bg);
29
+ color: var(--rs-toolbar-fg);
30
+ font-size: var(--rs-toolbar-font-size);
31
+ font-weight: var(--rs-font-weight-regular);
32
+ line-height: var(--rs-line-height-tight);
13
33
  }
14
- .rs-toolbar--compact {
15
- padding-inline: var(--rs-space-xs);
16
- gap: var(--rs-space-xs);
34
+ .rs-toolbar--has-center[data-v-7b347879]:not(.rs-toolbar--wrap):not(.rs-toolbar--vertical) {
35
+ display: grid;
36
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
17
37
  }
18
- .rs-toolbar--elevated {
19
- background: var(--rs-surface-elevated);
38
+ .rs-toolbar--compact[data-v-7b347879] {
39
+ --rs-toolbar-pad-inline: var(--rs-space-sm);
40
+ --rs-toolbar-gap: var(--rs-space-sm);
20
41
  }
21
- .rs-toolbar--sm {
22
- height: 2rem;
42
+ .rs-toolbar--elevated[data-v-7b347879] {
43
+ --rs-toolbar-bg: var(--rs-surface-elevated);
23
44
  }
24
- .rs-toolbar--md {
25
- height: 2.25rem;
45
+ .rs-toolbar--ssm[data-v-7b347879] {
46
+ --rs-toolbar-height: calc(var(--rs-control-height-sm) + var(--rs-space-xs));
47
+ --rs-toolbar-font-size: var(--rs-font-size-xs);
48
+ --rs-toolbar-pad-inline: var(--rs-space-sm);
49
+ --rs-toolbar-gap: var(--rs-space-sm);
26
50
  }
27
- .rs-toolbar--lg {
28
- height: 2.75rem;
51
+ .rs-toolbar--sm[data-v-7b347879] {
52
+ --rs-toolbar-height: var(--rs-control-height-md);
53
+ --rs-toolbar-font-size: var(--rs-font-size-xs);
29
54
  }
30
- .rs-toolbar--border-bottom {
31
- border-bottom: 1px solid var(--rs-border-subtle);
55
+ .rs-toolbar--md[data-v-7b347879] {
56
+ --rs-toolbar-height: var(--rs-control-height-lg);
32
57
  }
33
- .rs-toolbar--border-top {
34
- border-top: 1px solid var(--rs-border-subtle);
58
+ .rs-toolbar--lg[data-v-7b347879] {
59
+ --rs-toolbar-height: calc(var(--rs-control-height-lg) + var(--rs-space-sm));
60
+ --rs-toolbar-pad-inline: var(--rs-space-lg);
35
61
  }
36
- .rs-toolbar--border-both {
37
- border-top: 1px solid var(--rs-border-subtle);
38
- border-bottom: 1px solid var(--rs-border-subtle);
62
+ .rs-toolbar--border-bottom[data-v-7b347879] {
63
+ border-block-end: 1px solid var(--rs-toolbar-border);
39
64
  }
40
- .rs-toolbar--border-none {
65
+ .rs-toolbar--border-top[data-v-7b347879] {
66
+ border-block-start: 1px solid var(--rs-toolbar-border);
67
+ }
68
+ .rs-toolbar--border-both[data-v-7b347879] {
69
+ border-block-start: 1px solid var(--rs-toolbar-border);
70
+ border-block-end: 1px solid var(--rs-toolbar-border);
71
+ }
72
+ .rs-toolbar--border-none[data-v-7b347879] {
41
73
  border: none;
42
74
  }
43
- .rs-toolbar__start,
44
- .rs-toolbar__center,
45
- .rs-toolbar__end {
75
+ .rs-toolbar--vertical[data-v-7b347879] {
76
+ flex-direction: column;
77
+ align-items: stretch;
78
+ align-self: stretch;
79
+ width: max-content;
80
+ max-width: 100%;
81
+ min-width: var(--rs-toolbar-rail-min);
82
+ min-height: 0;
83
+ height: auto;
84
+ padding-block: var(--rs-toolbar-pad-inline);
85
+ padding-inline: var(--rs-toolbar-pad-block);
86
+ }
87
+ .rs-toolbar--vertical.rs-toolbar--has-center[data-v-7b347879]:not(.rs-toolbar--wrap) {
88
+ display: grid;
89
+ grid-template-columns: minmax(0, max-content);
90
+ grid-template-rows: minmax(0, 1fr) auto minmax(0, 1fr);
91
+ justify-items: stretch;
92
+ }
93
+ .rs-toolbar--vertical.rs-toolbar--border-bottom[data-v-7b347879] {
94
+ border-block-end: none;
95
+ border-inline-end: 1px solid var(--rs-toolbar-border);
96
+ }
97
+ .rs-toolbar--vertical.rs-toolbar--border-top[data-v-7b347879] {
98
+ border-block-start: none;
99
+ border-inline-start: 1px solid var(--rs-toolbar-border);
100
+ }
101
+ .rs-toolbar--vertical.rs-toolbar--border-both[data-v-7b347879] {
102
+ border-block-start: none;
103
+ border-block-end: none;
104
+ border-inline-start: 1px solid var(--rs-toolbar-border);
105
+ border-inline-end: 1px solid var(--rs-toolbar-border);
106
+ }
107
+ .rs-toolbar--wrap[data-v-7b347879] {
108
+ display: flex;
109
+ flex-wrap: wrap;
110
+ align-items: center;
111
+ align-content: center;
112
+ height: auto;
113
+ white-space: normal;
114
+ gap: var(--rs-toolbar-item-gap) var(--rs-toolbar-gap);
115
+ }
116
+ .rs-toolbar--sticky[data-v-7b347879] {
117
+ position: sticky;
118
+ inset-block-start: var(--rs-toolbar-sticky-offset);
119
+ z-index: var(--rs-toolbar-z);
120
+ background: color-mix(in srgb, var(--rs-toolbar-bg) 78%, transparent);
121
+ backdrop-filter: saturate(1.2) blur(var(--rs-toolbar-blur));
122
+ -webkit-backdrop-filter: saturate(1.2) blur(var(--rs-toolbar-blur));
123
+ }
124
+ .rs-toolbar--disabled[data-v-7b347879] {
125
+ opacity: var(--rs-toolbar-disabled-opacity);
126
+ }
127
+ .rs-toolbar__start[data-v-7b347879],
128
+ .rs-toolbar__center[data-v-7b347879],
129
+ .rs-toolbar__end[data-v-7b347879] {
46
130
  display: flex;
47
131
  align-items: center;
48
- gap: var(--rs-space-xs);
132
+ gap: var(--rs-toolbar-item-gap);
49
133
  min-width: 0;
134
+ max-width: 100%;
50
135
  }
51
- .rs-toolbar__start {
136
+ .rs-toolbar__start[data-v-7b347879] {
52
137
  flex: 1 1 auto;
53
- overflow: hidden;
138
+ justify-content: flex-start;
139
+ overflow: clip;
140
+ overflow-clip-margin: var(--rs-focus-ring-width, 2px);
54
141
  }
55
- .rs-toolbar__center {
142
+ .rs-toolbar__center[data-v-7b347879] {
56
143
  flex: 0 0 auto;
144
+ justify-content: center;
145
+ min-width: max-content;
146
+ }
147
+ .rs-toolbar__end[data-v-7b347879] {
148
+ flex: 0 0 auto;
149
+ justify-content: flex-end;
150
+ margin-inline-start: auto;
151
+ }
152
+ .rs-toolbar--has-center:not(.rs-toolbar--wrap):not(.rs-toolbar--vertical) .rs-toolbar__start[data-v-7b347879],
153
+ .rs-toolbar--has-center:not(.rs-toolbar--wrap):not(.rs-toolbar--vertical) .rs-toolbar__end[data-v-7b347879] {
154
+ width: 100%;
155
+ overflow: clip;
156
+ overflow-clip-margin: var(--rs-focus-ring-width, 2px);
157
+ }
158
+ .rs-toolbar--has-center:not(.rs-toolbar--wrap):not(.rs-toolbar--vertical) .rs-toolbar__start[data-v-7b347879] {
159
+ grid-column: 1;
160
+ justify-self: stretch;
161
+ margin-inline-start: 0;
162
+ }
163
+ .rs-toolbar--has-center:not(.rs-toolbar--wrap):not(.rs-toolbar--vertical) .rs-toolbar__center[data-v-7b347879] {
164
+ grid-column: 2;
165
+ justify-self: center;
166
+ }
167
+ .rs-toolbar--has-center:not(.rs-toolbar--wrap):not(.rs-toolbar--vertical) .rs-toolbar__end[data-v-7b347879] {
168
+ grid-column: 3;
169
+ justify-self: stretch;
170
+ margin-inline-start: 0;
57
171
  }
58
- .rs-toolbar__end {
172
+ .rs-toolbar--vertical .rs-toolbar__start[data-v-7b347879],
173
+ .rs-toolbar--vertical .rs-toolbar__center[data-v-7b347879],
174
+ .rs-toolbar--vertical .rs-toolbar__end[data-v-7b347879] {
59
175
  flex: 0 0 auto;
176
+ flex-direction: column;
177
+ align-items: stretch;
178
+ justify-content: flex-start;
179
+ width: 100%;
180
+ max-width: none;
181
+ margin-inline-start: 0;
182
+ overflow: visible;
183
+ }
184
+ .rs-toolbar--vertical .rs-toolbar__end[data-v-7b347879] {
185
+ margin-block-start: auto;
186
+ }
187
+ .rs-toolbar--vertical.rs-toolbar--has-center:not(.rs-toolbar--wrap) .rs-toolbar__start[data-v-7b347879] {
188
+ grid-column: 1;
189
+ grid-row: 1;
190
+ justify-self: stretch;
191
+ align-self: start;
192
+ margin: 0;
193
+ }
194
+ .rs-toolbar--vertical.rs-toolbar--has-center:not(.rs-toolbar--wrap) .rs-toolbar__center[data-v-7b347879] {
195
+ grid-column: 1;
196
+ grid-row: 2;
197
+ justify-self: stretch;
198
+ align-self: center;
199
+ margin: 0;
200
+ }
201
+ .rs-toolbar--vertical.rs-toolbar--has-center:not(.rs-toolbar--wrap) .rs-toolbar__end[data-v-7b347879] {
202
+ grid-column: 1;
203
+ grid-row: 3;
204
+ justify-self: stretch;
205
+ align-self: end;
206
+ margin: 0;
207
+ }
208
+ .rs-toolbar--wrap .rs-toolbar__start[data-v-7b347879] {
209
+ flex-wrap: wrap;
210
+ overflow: visible;
211
+ }
212
+ .rs-toolbar--wrap:not(.rs-toolbar--vertical) .rs-toolbar__end[data-v-7b347879] {
60
213
  margin-inline-start: auto;
61
214
  }
215
+ @media (prefers-reduced-transparency: reduce) {
216
+ .rs-toolbar--sticky[data-v-7b347879] {
217
+ background: var(--rs-toolbar-bg);
218
+ backdrop-filter: none;
219
+ -webkit-backdrop-filter: none;
220
+ }
221
+ }
222
+ @media (forced-colors: active) {
223
+ .rs-toolbar[data-v-7b347879] {
224
+ --rs-toolbar-bg: Canvas;
225
+ --rs-toolbar-fg: CanvasText;
226
+ --rs-toolbar-border: CanvasText;
227
+ }
228
+ .rs-toolbar--elevated[data-v-7b347879],
229
+ .rs-toolbar--sticky[data-v-7b347879] {
230
+ --rs-toolbar-bg: Canvas;
231
+ background: Canvas;
232
+ backdrop-filter: none;
233
+ -webkit-backdrop-filter: none;
234
+ }
235
+ }
@@ -1,37 +1,62 @@
1
- /** 工具栏高度密度,对应常见面板顶栏。 */
2
- export type RsToolbarSize = 'sm' | 'md' | 'lg';
3
- /** 分割线位置。 */
4
- export type RsToolbarBorder = 'bottom' | 'top' | 'both' | 'none';
1
+ import type { RsComponentSize } from '../../../theme/types';
2
+ import { type RsToolbarBorder, type RsToolbarExpose, type RsToolbarOrientation } from './toolbar-utils';
3
+ export type { RsToolbarBorder, RsToolbarExpose, RsToolbarOrientation };
4
+ export type { RsToolbarSize } from './toolbar-utils';
5
5
  type __VLS_Props = {
6
6
  /** 根元素标签名。 */
7
7
  tag?: string;
8
- /** 高度密度:sm≈32px / md≈36px / lg≈44px。 */
9
- size?: RsToolbarSize;
10
- /** 分割线位置。 */
8
+ /** 高度密度。未传跟 ConfigProvider,再回退 md。 */
9
+ size?: RsComponentSize;
10
+ /** 分割线位置。竖排时映射到逻辑 inline 边。 */
11
11
  border?: RsToolbarBorder;
12
- /** 使用抬升底色(`--rs-surface-elevated`)。 */
12
+ orientation?: RsToolbarOrientation;
13
+ /** 使用抬升底色(`--rs-toolbar-bg` → `--rs-surface-elevated`)。 */
13
14
  elevated?: boolean;
14
15
  /** 收紧水平内边距。 */
15
16
  compact?: boolean;
16
- /** 无障碍标签(`role="toolbar"`)。 */
17
+ /** 允许换行,不再裁切 start 区。 */
18
+ wrap?: boolean;
19
+ /** sticky 吸附。偏移写入 `--rs-toolbar-sticky-offset`。 */
20
+ sticky?: boolean;
21
+ stickyOffset?: number;
22
+ disabled?: boolean;
23
+ /**
24
+ * APG 键盘:方向键 / Home / End 在命令控件间移动。
25
+ * 输入框不拦截。false 时不改 tabindex,每项仍是独立 Tab 停。
26
+ */
27
+ keyboard?: boolean;
28
+ /** 方向键在首尾循环。 */
29
+ loop?: boolean;
30
+ ariaLabel?: string;
31
+ /** 兼容旧名,等同 ariaLabel。 */
17
32
  label?: string;
33
+ id?: string;
18
34
  };
19
- declare var __VLS_8: {}, __VLS_10: {}, __VLS_12: {}, __VLS_14: {};
35
+ declare var __VLS_12: {}, __VLS_14: {}, __VLS_16: {}, __VLS_18: {}, __VLS_20: {}, __VLS_22: {};
20
36
  type __VLS_Slots = {} & {
21
- left?: (props: typeof __VLS_8) => any;
37
+ start?: (props: typeof __VLS_12) => any;
22
38
  } & {
23
- default?: (props: typeof __VLS_10) => any;
39
+ left?: (props: typeof __VLS_14) => any;
24
40
  } & {
25
- center?: (props: typeof __VLS_12) => any;
41
+ default?: (props: typeof __VLS_16) => any;
26
42
  } & {
27
- right?: (props: typeof __VLS_14) => any;
43
+ center?: (props: typeof __VLS_18) => any;
44
+ } & {
45
+ end?: (props: typeof __VLS_20) => any;
46
+ } & {
47
+ right?: (props: typeof __VLS_22) => any;
28
48
  };
29
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
49
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, RsToolbarExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
30
50
  tag: string;
31
- size: RsToolbarSize;
51
+ disabled: boolean;
32
52
  border: RsToolbarBorder;
53
+ orientation: RsToolbarOrientation;
33
54
  elevated: boolean;
34
55
  compact: boolean;
56
+ wrap: boolean;
57
+ sticky: boolean;
58
+ keyboard: boolean;
59
+ loop: boolean;
35
60
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
36
61
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
37
62
  declare const _default: typeof __VLS_export;