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
@@ -13,10 +13,33 @@ export interface RsTabItem {
13
13
  /** 是否可重命名;未设置时继承 RsTabs 的 renamable */
14
14
  renamable?: boolean;
15
15
  }
16
- /** 选项卡尺寸 */
17
- export type RsTabsSize = 'sm' | 'md';
16
+ /** 选项卡尺寸(ssm 由 ConfigProvider 落入时按 sm) */
17
+ export type RsTabsSize = 'sm' | 'md' | 'lg';
18
18
  /** line 下划线 · segmented 胶囊 · card 卡片(Ant editable-card) */
19
19
  export type RsTabsVariant = 'line' | 'segmented' | 'card';
20
+ /** 标签栏位置(对齐 Ant / Element tabPosition) */
21
+ export type RsTabsPosition = 'top' | 'bottom' | 'left' | 'right';
22
+ /**
23
+ * 键盘激活方式(WAI-ARIA APG)。
24
+ * automatic:方向键同时移动焦点并切换;manual:方向键只移焦点,Enter / Space 才切换。
25
+ */
26
+ export type RsTabsActivation = 'automatic' | 'manual';
27
+ /** `#tab` 插槽参数 */
28
+ export interface RsTabsTabSlot {
29
+ item: RsTabItem;
30
+ active: boolean;
31
+ disabled: boolean;
32
+ }
33
+ export interface RsTabsExpose {
34
+ /** 把焦点放到指定标签;未传则落到当前激活项 */
35
+ focus: (value?: string) => void;
36
+ /** 走 beforeLeave 后切换。被拦截时返回 false */
37
+ selectTab: (value: string) => Promise<boolean>;
38
+ }
39
+ /** 模板 ref 实例:expose + 根节点 */
40
+ export type RsTabsInstance = RsTabsExpose & {
41
+ $el: HTMLElement;
42
+ };
20
43
  /**
21
44
  * 标签栏对齐:start 左齐 · center 居中 · evenly 均分空隙 · stretch 项等宽铺满。
22
45
  * 用于登录等场景,避免业务侧 :deep 改 list/trigger。
@@ -69,3 +92,19 @@ export interface ResolveVisibleTabOptions {
69
92
  * 根据各标签宽度与可用宽度,计算应展示的标签 value 集合。
70
93
  */
71
94
  export declare function resolveVisibleTabValues(items: RsTabItem[], widths: Map<string, number>, availableWidth: number, activeValue: string, reservedWidth?: number, options?: ResolveVisibleTabOptions): Set<string>;
95
+ export declare function isVerticalTabsPosition(position: RsTabsPosition): boolean;
96
+ export declare function getEnabledTabValues(items: readonly RsTabItem[]): string[];
97
+ /** 在可启用项里按 delta 环移(跳过 disabled) */
98
+ export declare function getAdjacentTabValue(items: readonly RsTabItem[], current: string, delta: number): string | undefined;
99
+ export declare function getEdgeTabValue(items: readonly RsTabItem[], edge: 'start' | 'end'): string | undefined;
100
+ /**
101
+ * 解析标签栏键盘位移。竖排只用上下;横排左右在 RTL 下对调。
102
+ * Home / End 返回端点;不处理的键返回 null。
103
+ */
104
+ export declare function resolveTabKeyboardMove(key: string, position: RsTabsPosition, rtl?: boolean): number | 'start' | 'end' | null;
105
+ export declare function sanitizeTabDomId(value: string): string;
106
+ export declare function tabTriggerId(rootId: string, value: string): string;
107
+ export declare function tabPanelId(rootId: string, value: string): string;
108
+ /** lazy:首次激活才挂;destroyInactive:离开即卸。后者优先。 */
109
+ export declare function shouldRenderTabPanel(value: string, activeValue: string, visited: ReadonlySet<string>, lazy: boolean, destroyInactive: boolean): boolean;
110
+ export declare function resolveTabsSize(size: string | undefined): RsTabsSize;
@@ -143,5 +143,59 @@ function resolveVisibleTabValues(items, widths, availableWidth, activeValue, res
143
143
  }
144
144
  return new Set(visible);
145
145
  }
146
+ function isVerticalTabsPosition(position) {
147
+ return position === "left" || position === "right";
148
+ }
149
+ function getEnabledTabValues(items) {
150
+ return items.filter((item) => !item.disabled).map((item) => item.value);
151
+ }
152
+ /** 在可启用项里按 delta 环移(跳过 disabled) */
153
+ function getAdjacentTabValue(items, current, delta) {
154
+ const enabled = getEnabledTabValues(items);
155
+ if (!enabled.length) return void 0;
156
+ const index = enabled.indexOf(current);
157
+ return enabled[(Math.max(index, 0) + delta + enabled.length * 8) % enabled.length];
158
+ }
159
+ function getEdgeTabValue(items, edge) {
160
+ const enabled = getEnabledTabValues(items);
161
+ if (!enabled.length) return void 0;
162
+ return edge === "start" ? enabled[0] : enabled.at(-1);
163
+ }
164
+ /**
165
+ * 解析标签栏键盘位移。竖排只用上下;横排左右在 RTL 下对调。
166
+ * Home / End 返回端点;不处理的键返回 null。
167
+ */
168
+ function resolveTabKeyboardMove(key, position, rtl = false) {
169
+ if (key === "Home") return "start";
170
+ if (key === "End") return "end";
171
+ if (isVerticalTabsPosition(position)) {
172
+ if (key === "ArrowUp") return -1;
173
+ if (key === "ArrowDown") return 1;
174
+ return null;
175
+ }
176
+ if (key === "ArrowLeft") return rtl ? 1 : -1;
177
+ if (key === "ArrowRight") return rtl ? -1 : 1;
178
+ return null;
179
+ }
180
+ function sanitizeTabDomId(value) {
181
+ return value.replace(/[^a-zA-Z0-9_-]+/g, "-").replace(/^-/, "").replace(/-$/, "") || "tab";
182
+ }
183
+ function tabTriggerId(rootId, value) {
184
+ return `${rootId}-tab-${sanitizeTabDomId(value)}`;
185
+ }
186
+ function tabPanelId(rootId, value) {
187
+ return `${rootId}-panel-${sanitizeTabDomId(value)}`;
188
+ }
189
+ /** lazy:首次激活才挂;destroyInactive:离开即卸。后者优先。 */
190
+ function shouldRenderTabPanel(value, activeValue, visited, lazy, destroyInactive) {
191
+ if (destroyInactive) return value === activeValue;
192
+ if (!lazy) return true;
193
+ return value === activeValue || visited.has(value);
194
+ }
195
+ function resolveTabsSize(size) {
196
+ if (size === "lg") return "lg";
197
+ if (size === "sm" || size === "ssm") return "sm";
198
+ return "md";
199
+ }
146
200
  //#endregion
147
- export { buildTabContextMenuItems, getNextTabAfterBatchClose, getNextTabAfterClose, isTabClosable, isTabFixed, isTabRenamable, reorderTabItems, resolveTabsToClose, resolveVisibleTabValues };
201
+ export { buildTabContextMenuItems, getAdjacentTabValue, getEdgeTabValue, getEnabledTabValues, getNextTabAfterBatchClose, getNextTabAfterClose, isTabClosable, isTabFixed, isTabRenamable, isVerticalTabsPosition, reorderTabItems, resolveTabKeyboardMove, resolveTabsSize, resolveTabsToClose, resolveVisibleTabValues, sanitizeTabDomId, shouldRenderTabPanel, tabPanelId, tabTriggerId };
@@ -1,3 +1,3 @@
1
1
  export { default as RsTerminal } from './src/RsTerminal.js';
2
2
  export { buildAnsiColorDemo, containsEscapeSequence, getTerminalThemePalette, mergeTerminalTheme, readTerminalThemeFromCss, resolveTerminalTheme, terminalShortcutLabel, } from './src/terminal-utils';
3
- export type { RsResolvedTerminalTheme, RsTerminalAction, RsTerminalExpose, RsTerminalGeometry, RsTerminalThemeMode, } from './src/terminal-utils';
3
+ export type { RsResolvedTerminalTheme, RsTerminalAction, RsTerminalCursorStyle, RsTerminalExpose, RsTerminalGeometry, RsTerminalThemeMode, } from './src/terminal-utils';
@@ -1,5 +1,5 @@
1
1
 
2
- .rs-terminal[data-v-fcddd3a1] {
2
+ .rs-terminal[data-v-79324a27] {
3
3
  position: relative;
4
4
  height: 100%;
5
5
  min-height: 0;
@@ -10,19 +10,10 @@
10
10
  border-radius: var(--rs-radius-md);
11
11
  background: var(--rs-terminal-shell-bg, var(--rs-terminal-bg));
12
12
  color: var(--rs-terminal-fg);
13
- box-shadow:
14
- inset 0 1px 0 color-mix(in srgb, var(--rs-terminal-fg) 5%, transparent),
15
- inset 0 0 0 1px color-mix(in srgb, var(--rs-terminal-fg) 4%, transparent),
16
- 0 1px 3px color-mix(in srgb, #000 32%, transparent);
13
+ box-shadow: var(--rs-shadow-sm);
17
14
  overflow: hidden;
18
15
  }
19
- [data-rs-theme='light'] .rs-terminal[data-v-fcddd3a1] {
20
- box-shadow:
21
- inset 0 1px 0 color-mix(in srgb, #fff 80%, transparent),
22
- inset 0 0 0 1px color-mix(in srgb, #000 4%, transparent),
23
- 0 1px 4px color-mix(in srgb, #000 8%, transparent);
24
- }
25
- .rs-terminal__host[data-v-fcddd3a1] {
16
+ .rs-terminal__host[data-v-79324a27] {
26
17
  position: relative;
27
18
  width: 100%;
28
19
  height: 100%;
@@ -30,19 +21,19 @@
30
21
  /* FitAddon 取整余量露底时,与单元格同色(勿用 shell 灰底) */
31
22
  background: var(--rs-terminal-bg);
32
23
  }
33
- .rs-terminal__loading[data-v-fcddd3a1],
34
- .rs-terminal__overlay[data-v-fcddd3a1] {
24
+ .rs-terminal__loading[data-v-79324a27],
25
+ .rs-terminal__overlay[data-v-79324a27] {
35
26
  position: absolute;
36
27
  inset: 0;
37
28
  display: flex;
38
29
  align-items: center;
39
30
  justify-content: center;
40
31
  }
41
- .rs-terminal__overlay[data-v-fcddd3a1] {
32
+ .rs-terminal__overlay[data-v-79324a27] {
42
33
  flex-direction: column;
43
34
  gap: var(--rs-space-sm);
44
35
  padding: var(--rs-space-lg);
45
- color: color-mix(in srgb, var(--rs-terminal-fg) 92%, #fff 8%);
36
+ color: var(--rs-terminal-fg);
46
37
  background: color-mix(in srgb, var(--rs-terminal-bg) 84%, transparent);
47
38
  text-align: center;
48
39
  pointer-events: none;
@@ -51,28 +42,32 @@
51
42
  font-weight: var(--rs-font-weight-regular);
52
43
  line-height: var(--rs-line-height-normal);
53
44
  }
54
- .rs-terminal__overlay--interactive[data-v-fcddd3a1] {
45
+ .rs-terminal__overlay--interactive[data-v-79324a27] {
55
46
  pointer-events: auto;
56
47
  }
57
- .rs-terminal__overlay-action[data-v-fcddd3a1] {
48
+ .rs-terminal__overlay-action[data-v-79324a27] {
58
49
  pointer-events: auto;
59
50
  }
60
- .rs-terminal__search[data-v-fcddd3a1] {
51
+ .rs-terminal__search[data-v-79324a27] {
61
52
  position: absolute;
62
- top: var(--rs-space-xs);
53
+ inset-block-start: var(--rs-space-xs);
63
54
  inset-inline-end: var(--rs-space-xs);
64
55
  z-index: 2;
65
56
  display: flex;
57
+ flex-wrap: wrap;
66
58
  align-items: center;
59
+ max-inline-size: calc(100% - var(--rs-space-sm));
67
60
  gap: var(--rs-space-xs);
68
61
  padding: var(--rs-space-xs);
69
62
  border: 1px solid var(--rs-terminal-border);
70
63
  border-radius: var(--rs-radius-sm);
71
64
  background: color-mix(in srgb, var(--rs-terminal-bg) 92%, transparent);
72
65
  }
73
- .rs-terminal__search-input[data-v-fcddd3a1] {
74
- width: 12rem;
75
- padding: 0.2rem 0.4rem;
66
+ .rs-terminal__search-input[data-v-79324a27] {
67
+ inline-size: 12rem;
68
+ max-inline-size: 100%;
69
+ padding-block: var(--rs-space-xs);
70
+ padding-inline: var(--rs-space-xs);
76
71
  border: 1px solid var(--rs-terminal-border);
77
72
  border-radius: var(--rs-radius-sm);
78
73
  background: var(--rs-terminal-bg);
@@ -81,8 +76,14 @@
81
76
  font-size: var(--rs-font-size-xs);
82
77
  outline: none;
83
78
  }
84
- .rs-terminal__search-btn[data-v-fcddd3a1] {
85
- padding: 0.2rem 0.4rem;
79
+ .rs-terminal__search-input[data-v-79324a27]:focus-visible,
80
+ .rs-terminal__search-btn[data-v-79324a27]:focus-visible {
81
+ outline: var(--rs-focus-ring-width, 2px) solid var(--rs-focus-border);
82
+ outline-offset: 1px;
83
+ }
84
+ .rs-terminal__search-btn[data-v-79324a27] {
85
+ padding-block: var(--rs-space-xs);
86
+ padding-inline: var(--rs-space-xs);
86
87
  border: 1px solid var(--rs-terminal-border);
87
88
  border-radius: var(--rs-radius-sm);
88
89
  background: transparent;
@@ -90,6 +91,11 @@
90
91
  font-size: var(--rs-font-size-xs);
91
92
  cursor: pointer;
92
93
  }
94
+ .rs-terminal__search-status[data-v-79324a27] {
95
+ margin: 0;
96
+ color: var(--rs-text-secondary);
97
+ font-size: var(--rs-font-size-xs);
98
+ }
93
99
 
94
100
  /*
95
101
  * letter-spacing 必须在终端内归零:宿主应用常在祖先上设负字距(NiuMa 的 .nm-app 是 -0.011em)。
@@ -98,7 +104,7 @@
98
104
  * DOM 渲染器于是按 `cellWidth - 测量值` 给每个字符补正字距,行盒却仍是 cols × cellWidth,
99
105
  * 逐列累积后整行溢出十几到几十像素,被行盒的 overflow:hidden 切掉行尾几个字符。
100
106
  */
101
- .rs-terminal[data-v-fcddd3a1] .xterm {
107
+ .rs-terminal[data-v-79324a27] .xterm {
102
108
  width: 100%;
103
109
  height: 100%;
104
110
  line-height: normal;
@@ -109,7 +115,7 @@
109
115
  * xterm 6 官方仍给空的 .xterm-viewport 写 overflow-y:scroll + 背景 #000。
110
116
  * 真正滚动的是 .xterm-scrollable-element;空层滚动条会挡住最后一列。
111
117
  */
112
- .rs-terminal[data-v-fcddd3a1] .xterm .xterm-viewport {
118
+ .rs-terminal[data-v-79324a27] .xterm .xterm-viewport {
113
119
  overflow: hidden;
114
120
  background-color: transparent;
115
121
  }
@@ -119,7 +125,7 @@
119
125
  * 的圆角胶囊不一致。轨道宽度由 overviewRuler.width 决定,改它会给每个终端实例多建一块
120
126
  * overview ruler 画布,因此只重绘滑块:热区仍是 14px,靠透明边框内缩出 10px 可见胶囊。
121
127
  */
122
- .rs-terminal[data-v-fcddd3a1] .xterm-scrollable-element > .scrollbar > .slider {
128
+ .rs-terminal[data-v-79324a27] .xterm-scrollable-element > .scrollbar > .slider {
123
129
  box-sizing: border-box;
124
130
  border: var(--rs-scrollbar-padding, 2px) solid transparent;
125
131
  border-radius: var(--rs-radius-full);
@@ -127,18 +133,35 @@
127
133
  background-clip: padding-box;
128
134
  transition: background-color var(--rs-transition-fast);
129
135
  }
130
- .rs-terminal[data-v-fcddd3a1] .xterm-scrollable-element > .scrollbar > .slider:hover {
136
+ @media (prefers-reduced-motion: reduce) {
137
+ .rs-terminal[data-v-79324a27] .xterm-scrollable-element > .scrollbar > .slider {
138
+ transition: none;
139
+ }
140
+ }
141
+ @media (forced-colors: active) {
142
+ .rs-terminal[data-v-79324a27] {
143
+ background: Canvas;
144
+ color: CanvasText;
145
+ border-color: ButtonText;
146
+ box-shadow: none;
147
+ }
148
+ .rs-terminal__search-input[data-v-79324a27]:focus-visible,
149
+ .rs-terminal__search-btn[data-v-79324a27]:focus-visible {
150
+ outline: var(--rs-focus-ring-width, 2px) solid Highlight;
151
+ }
152
+ }
153
+ .rs-terminal[data-v-79324a27] .xterm-scrollable-element > .scrollbar > .slider:hover {
131
154
  background-color: color-mix(in srgb, var(--rs-primary) 40%, var(--rs-muted));
132
155
  }
133
- .rs-terminal[data-v-fcddd3a1] .xterm-scrollable-element > .scrollbar > .slider.active {
156
+ .rs-terminal[data-v-79324a27] .xterm-scrollable-element > .scrollbar > .slider.active {
134
157
  background-color: color-mix(in srgb, var(--rs-primary) 55%, var(--rs-muted));
135
158
  }
136
- .rs-terminal--zebra[data-v-fcddd3a1] .xterm-rows,
137
- .rs-terminal--zebra[data-v-fcddd3a1] .xterm-rows > div,
138
- .rs-terminal--zebra[data-v-fcddd3a1] .xterm-row {
159
+ .rs-terminal--zebra[data-v-79324a27] .xterm-rows,
160
+ .rs-terminal--zebra[data-v-79324a27] .xterm-rows > div,
161
+ .rs-terminal--zebra[data-v-79324a27] .xterm-row {
139
162
  background-color: transparent !important;
140
163
  }
141
- .rs-terminal--zebra[data-v-fcddd3a1] .xterm-scrollable-element {
164
+ .rs-terminal--zebra[data-v-79324a27] .xterm-scrollable-element {
142
165
  background-color: transparent !important;
143
166
  background-image: repeating-linear-gradient(
144
167
  to bottom,
@@ -149,12 +172,12 @@
149
172
  );
150
173
  background-attachment: local;
151
174
  }
152
- .rs-terminal--zebra[data-v-fcddd3a1] .xterm-screen {
175
+ .rs-terminal--zebra[data-v-79324a27] .xterm-screen {
153
176
  background-color: transparent !important;
154
177
  }
155
- .rs-terminal[data-v-fcddd3a1] .xterm-fg-257 {
178
+ .rs-terminal[data-v-79324a27] .xterm-fg-257 {
156
179
  color: var(--rs-terminal-bg) !important;
157
180
  }
158
- .rs-terminal[data-v-fcddd3a1] .xterm-bg-257 {
181
+ .rs-terminal[data-v-79324a27] .xterm-bg-257 {
159
182
  background-color: var(--rs-terminal-fg) !important;
160
183
  }
@@ -1,7 +1,7 @@
1
1
  import type { ITheme } from '@xterm/xterm';
2
2
  import '@xterm/xterm/css/xterm.css';
3
3
  import type { RsContextMenuItem } from '../../context-menu/src/context-menu-utils';
4
- import { type RsTerminalAction, type RsTerminalExpose, type RsTerminalThemeMode } from './terminal-utils';
4
+ import { type RsTerminalAction, type RsTerminalCursorStyle, type RsTerminalExpose, type RsTerminalThemeMode } from './terminal-utils';
5
5
  import { type RsTerminalWheelScrollModifier } from './terminal-wheel';
6
6
  type RsTerminalFontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
7
7
  type __VLS_Props = {
@@ -32,7 +32,8 @@ type __VLS_Props = {
32
32
  extraContextMenuItems?: RsContextMenuItem[];
33
33
  /**
34
34
  * 右键是否自动选中光标下单词。
35
- * SSH/vim/less 等 TUI 场景建议 false,避免冲掉用户已拖选的大段文本。
35
+ * 已经有拖选时不会缩成一个词,避免滚选大段文本时选区跳一下。
36
+ * SSH/vim/less 等 TUI 场景建议 false。
36
37
  */
37
38
  rightClickSelectsWord?: boolean;
38
39
  shortcuts?: boolean;
@@ -52,6 +53,27 @@ type __VLS_Props = {
52
53
  copyOnSelect?: boolean;
53
54
  /** 启用 Ctrl/⌘+F 终端内搜索 */
54
55
  searchEnabled?: boolean;
56
+ /** 光标形状。缺省 block,与 xterm 一致。 */
57
+ cursorStyle?: RsTerminalCursorStyle;
58
+ /**
59
+ * 读屏模式。缺省关闭:打开后 xterm 会为每次光标移动暴露辅助节点。
60
+ * 需要 NVDA / VoiceOver 跟随时再开。
61
+ */
62
+ screenReaderMode?: boolean;
63
+ /**
64
+ * 点击 http(s) / mailto 时用新标签打开。
65
+ * 设为 false 时只发 `link`,由宿主决定。javascript: 与 data: 一律忽略。
66
+ */
67
+ openLinks?: boolean;
68
+ /**
69
+ * 单格宽、字形却更宽的字符(GB18030 歧义宽度)按格缩放。
70
+ * 缺省开启。DOM 渲染器下无效。
71
+ */
72
+ rescaleOverlappingGlyphs?: boolean;
73
+ /** 区域的可访问名称。未传走 terminal.label。 */
74
+ ariaLabel?: string;
75
+ /** 根节点 id。 */
76
+ id?: string;
55
77
  /**
56
78
  * 单元格前景相对背景的最低对比度(xterm `minimumContrastRatio`)。
57
79
  * `ls --color` 软链接常用黑底;浅色主题把青/蓝调深后会看不清,4.5 对齐 WCAG AA。
@@ -64,33 +86,40 @@ type __VLS_Slots = {} & {
64
86
  overlayAction?: (props: typeof __VLS_15) => any;
65
87
  };
66
88
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, RsTerminalExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
89
+ link: (url: string) => any;
67
90
  data: (data: string) => any;
68
91
  resize: (payload: {
69
92
  cols: number;
70
93
  rows: number;
71
94
  }) => any;
95
+ bell: () => any;
96
+ action: (action: RsTerminalAction) => any;
72
97
  selectionChange: (text: string) => any;
73
98
  ready: () => any;
74
99
  askAi: (text: string) => any;
75
- action: (action: RsTerminalAction) => any;
76
100
  extraSelect: (key: string) => any;
101
+ titleChange: (title: string) => any;
77
102
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
103
+ onLink?: ((url: string) => any) | undefined;
78
104
  onData?: ((data: string) => any) | undefined;
79
105
  onResize?: ((payload: {
80
106
  cols: number;
81
107
  rows: number;
82
108
  }) => any) | undefined;
109
+ onBell?: (() => any) | undefined;
110
+ onAction?: ((action: RsTerminalAction) => any) | undefined;
83
111
  onSelectionChange?: ((text: string) => any) | undefined;
84
112
  onReady?: (() => any) | undefined;
85
113
  onAskAi?: ((text: string) => any) | undefined;
86
- onAction?: ((action: RsTerminalAction) => any) | undefined;
87
114
  onExtraSelect?: ((key: string) => any) | undefined;
115
+ onTitleChange?: ((title: string) => any) | undefined;
88
116
  }>, {
89
117
  theme: Partial<ITheme>;
90
118
  overlay: string;
91
119
  loading: boolean;
92
120
  contextMenu: boolean;
93
121
  shortcuts: boolean;
122
+ cursorStyle: RsTerminalCursorStyle;
94
123
  inputEnabled: boolean;
95
124
  cursorBlink: boolean;
96
125
  allowTransparency: boolean;
@@ -105,6 +134,9 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, RsTerminalE
105
134
  snapViewportOnTuiWrite: boolean;
106
135
  copyOnSelect: boolean;
107
136
  searchEnabled: boolean;
137
+ screenReaderMode: boolean;
138
+ openLinks: boolean;
139
+ rescaleOverlappingGlyphs: boolean;
108
140
  minimumContrastRatio: number;
109
141
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
110
142
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;