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
@@ -29,6 +29,10 @@ export interface RsTreeFlatNode {
29
29
  hasChildren: boolean;
30
30
  isLast: boolean;
31
31
  parentKey: string | null;
32
+ /** 同一父节点下的兄弟个数,对应 aria-setsize */
33
+ setSize: number;
34
+ /** 在兄弟中的位置,从 1 起算,对应 aria-posinset */
35
+ posInSet: number;
32
36
  /**
33
37
  * showLine 用:下标对应祖先深度 `0..depth-1`。
34
38
  * `true` 表示该祖先不是同级最后一项,竖线需贯穿当前行;`false` 则留空缺口。
@@ -46,6 +50,22 @@ export type RsTreeDropPosition = 'before' | 'inside' | 'after';
46
50
  /** handle=显示拖拽手柄;row=整行拖拽且不显示手柄 */
47
51
  export type RsTreeDragTrigger = 'handle' | 'row';
48
52
  export type RsTreeSize = RsComponentSize;
53
+ export interface RsTreeExpose {
54
+ expandAll: () => void;
55
+ collapseAll: () => void;
56
+ expandNode: (key: string) => void;
57
+ collapseNode: (key: string) => void;
58
+ focusNode: (key: string) => void;
59
+ focus: () => void;
60
+ scrollToKey: (key: string) => void;
61
+ getSelectedKeys: () => string[];
62
+ getCheckedKeys: () => string[];
63
+ getExpandedKeys: () => string[];
64
+ getHalfCheckedKeys: () => string[];
65
+ }
66
+ export type RsTreeInstance = RsTreeExpose & {
67
+ $el: HTMLElement;
68
+ };
49
69
  export declare const DEFAULT_TREE_FIELD_NAMES: Required<RsTreeFieldNames>;
50
70
  /**
51
71
  * 各尺寸档行高 / 缩进。
@@ -98,6 +118,8 @@ export declare function resolveTreeCheckState(key: string, checkedKeys: Readonly
98
118
  export declare function toggleTreeCheck(key: string, checkedKeys: ReadonlySet<string>, index: ReadonlyMap<string, RsTreeNodeIndex>, checkStrictly: boolean, onlyCheckLeaf?: boolean): string[];
99
119
  export declare function resolveAccordionExpandedKeys(key: string, expandedKeys: readonly string[], index: ReadonlyMap<string, RsTreeNodeIndex>, rootKeys: readonly string[]): string[];
100
120
  export declare function resolveTreeFocusKey(flatNodes: readonly RsTreeFlatNode[], currentKey: string | null, move: RsTreeFocusMove, index: ReadonlyMap<string, RsTreeNodeIndex>): string | null;
121
+ /** 从当前项之后找标签前缀匹配的可见节点;一圈后仍无匹配返回 null。 */
122
+ export declare function resolveTreeTypeaheadKey(flatNodes: readonly RsTreeFlatNode[], currentKey: string | null, query: string, fields?: Required<RsTreeFieldNames>): string | null;
101
123
  export declare function resolveTreeVirtualEnabled(options: {
102
124
  virtual?: boolean;
103
125
  flatCount: number;
@@ -164,6 +164,8 @@ function flattenVisibleTreeNodes(nodes, expandedKeys, fields = DEFAULT_TREE_FIEL
164
164
  hasChildren,
165
165
  isLast,
166
166
  parentKey: currentParentKey,
167
+ setSize: items.length,
168
+ posInSet: index + 1,
167
169
  levelLines
168
170
  });
169
171
  if (hasChildren && expandedKeys.has(key)) walk(getTreeChildren(node, fields), currentDepth + 1, key, [...ancestors, isLast]);
@@ -173,7 +175,7 @@ function flattenVisibleTreeNodes(nodes, expandedKeys, fields = DEFAULT_TREE_FIEL
173
175
  return result;
174
176
  }
175
177
  function defaultTreeFilterNode(node, keyword, fields = DEFAULT_TREE_FIELD_NAMES) {
176
- return getTreeLabel(node, fields).toLowerCase().includes(keyword.trim().toLowerCase());
178
+ return getTreeLabel(node, fields).toLocaleLowerCase().includes(keyword.trim().toLocaleLowerCase());
177
179
  }
178
180
  function filterTreeNodes(nodes, keyword, options = {}) {
179
181
  const fields = resolveTreeFieldNames(options.fieldNames);
@@ -201,8 +203,8 @@ function splitTreeLabelHighlight(label, keyword) {
201
203
  text: label,
202
204
  highlight: false
203
205
  }];
204
- const lowerLabel = label.toLowerCase();
205
- const lowerQuery = query.toLowerCase();
206
+ const lowerLabel = label.toLocaleLowerCase();
207
+ const lowerQuery = query.toLocaleLowerCase();
206
208
  const index = lowerLabel.indexOf(lowerQuery);
207
209
  if (index < 0) return [{
208
210
  text: label,
@@ -283,6 +285,18 @@ function resolveTreeFocusKey(flatNodes, currentKey, move, index) {
283
285
  default: return currentKey;
284
286
  }
285
287
  }
288
+ /** 从当前项之后找标签前缀匹配的可见节点;一圈后仍无匹配返回 null。 */
289
+ function resolveTreeTypeaheadKey(flatNodes, currentKey, query, fields = DEFAULT_TREE_FIELD_NAMES) {
290
+ const needle = query.trim().toLocaleLowerCase();
291
+ if (!needle || flatNodes.length === 0) return null;
292
+ const start = Math.max(0, flatNodes.findIndex((item) => item.key === currentKey));
293
+ for (let step = 1; step <= flatNodes.length; step += 1) {
294
+ const item = flatNodes[(start + step) % flatNodes.length];
295
+ if (!item || isTreeNodeDisabled(item.node, fields)) continue;
296
+ if (getTreeLabel(item.node, fields).toLocaleLowerCase().startsWith(needle)) return item.key;
297
+ }
298
+ return null;
299
+ }
286
300
  function resolveTreeVirtualEnabled(options) {
287
301
  if (options.virtual) return true;
288
302
  return options.flatCount > (options.virtualThreshold ?? 100);
@@ -307,4 +321,4 @@ function sliceVirtualTreeNodes(nodes, scrollTop, viewportHeight, itemHeight, ove
307
321
  };
308
322
  }
309
323
  //#endregion
310
- export { DEFAULT_TREE_FIELD_NAMES, TREE_INDENT_BY_SIZE, TREE_ROW_HEIGHT, buildTreeNodeIndex, collectDescendantKeys, collectExpandableKeys, collectHalfCheckedKeys, defaultTreeFilterNode, filterTreeNodes, flattenTreeNodeIds, flattenVisibleTreeNodes, getTreeChildren, getTreeIsLeaf, getTreeKey, getTreeLabel, hasTreeChildren, isTreeAncestorKey, isTreeCheckboxDisabled, isTreeNodeDisabled, isTreeNodeLoading, resolveAccordionExpandedKeys, resolveTreeCheckState, resolveTreeFieldNames, resolveTreeFocusKey, resolveTreeIndent, resolveTreeRowHeight, resolveTreeVirtualEnabled, shouldShowTreeCheckbox, sliceVirtualTreeNodes, splitTreeLabelHighlight, toggleTreeCheck };
324
+ export { DEFAULT_TREE_FIELD_NAMES, TREE_INDENT_BY_SIZE, TREE_ROW_HEIGHT, buildTreeNodeIndex, collectDescendantKeys, collectExpandableKeys, collectHalfCheckedKeys, defaultTreeFilterNode, filterTreeNodes, flattenTreeNodeIds, flattenVisibleTreeNodes, getTreeChildren, getTreeIsLeaf, getTreeKey, getTreeLabel, hasTreeChildren, isTreeAncestorKey, isTreeCheckboxDisabled, isTreeNodeDisabled, isTreeNodeLoading, resolveAccordionExpandedKeys, resolveTreeCheckState, resolveTreeFieldNames, resolveTreeFocusKey, resolveTreeIndent, resolveTreeRowHeight, resolveTreeTypeaheadKey, resolveTreeVirtualEnabled, shouldShowTreeCheckbox, sliceVirtualTreeNodes, splitTreeLabelHighlight, toggleTreeCheck };
@@ -91,13 +91,13 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, RsTre
91
91
  }>, {
92
92
  disabled: boolean;
93
93
  allowClear: boolean;
94
+ highlight: boolean;
94
95
  multiple: boolean;
95
96
  searchable: boolean;
96
97
  virtual: boolean;
97
98
  virtualThreshold: number;
98
99
  matchTriggerWidth: boolean;
99
100
  listHeight: number;
100
- highlight: boolean;
101
101
  checkable: boolean;
102
102
  checkStrictly: boolean;
103
103
  onlyCheckLeaf: boolean;
@@ -1,3 +1,3 @@
1
1
  export { default as RsVirtualList } from './src/RsVirtualList.js';
2
- export type { RsVirtualListItemSize } from './src/virtual-list-utils';
2
+ export type { RsVirtualListAlign, RsVirtualListExpose, RsVirtualListInstance, RsVirtualListItemKey, RsVirtualListItemSize, RsVirtualListOrientation, } from './src/virtual-list-utils';
3
3
  export { resolveItemSize, resolveVirtualListHeight } from './src/virtual-list-utils';
@@ -1,28 +1,83 @@
1
1
 
2
- .rs-virtual-list[data-v-4d459ccc] {
2
+ .rs-virtual-list[data-v-c4f5f6d4] {
3
3
  overflow: auto;
4
- border: 1px solid var(--rs-border-subtle);
4
+ box-sizing: border-box;
5
+ border: 1px solid var(--rs-virtual-list-border, var(--rs-border-subtle));
5
6
  border-radius: var(--rs-virtual-list-radius, var(--rs-radius-sm));
7
+ background: var(--rs-virtual-list-bg, var(--rs-surface));
8
+ color: var(--rs-virtual-list-fg, var(--rs-text-primary));
9
+ text-align: start;
10
+ }
11
+ .rs-virtual-list--horizontal[data-v-c4f5f6d4] {
12
+ overflow-x: auto;
13
+ overflow-y: hidden;
6
14
  }
7
- .rs-virtual-list--fill[data-v-4d459ccc] {
15
+ .rs-virtual-list--borderless[data-v-c4f5f6d4] {
16
+ border-color: transparent;
17
+ background: transparent;
18
+ }
19
+ .rs-virtual-list--fill[data-v-c4f5f6d4] {
8
20
  flex: 1;
9
21
  align-self: stretch;
10
22
  width: 100%;
11
23
  min-height: 0;
12
24
  height: 0;
13
25
  }
14
- .rs-virtual-list__spacer[data-v-4d459ccc] {
26
+ .rs-virtual-list--keyboard[data-v-c4f5f6d4]:focus-visible {
27
+ outline: var(--rs-focus-ring-width, 2px) solid var(--rs-focus-border);
28
+ outline-offset: calc(var(--rs-focus-ring-width, 2px) * -1);
29
+ }
30
+ .rs-virtual-list__spacer[data-v-c4f5f6d4] {
15
31
  position: relative;
16
32
  }
17
- .rs-virtual-list__items[data-v-4d459ccc] {
33
+ .rs-virtual-list__items[data-v-c4f5f6d4] {
18
34
  position: absolute;
19
35
  inset-inline: 0;
20
36
  top: 0;
37
+ transform: translate3d(var(--rs-virtual-list-x, 0px), var(--rs-virtual-list-y, 0px), 0);
21
38
  }
22
- .rs-virtual-list__item[data-v-4d459ccc] {
39
+ .rs-virtual-list--scrolling .rs-virtual-list__items[data-v-c4f5f6d4] {
40
+ will-change: transform;
41
+ }
42
+ .rs-virtual-list--horizontal .rs-virtual-list__items[data-v-c4f5f6d4] {
43
+ inset-inline: auto;
44
+ inset-inline-start: 0;
45
+ display: flex;
46
+ flex-direction: row;
47
+ width: max-content;
48
+ height: 100%;
49
+ }
50
+ .rs-virtual-list__item[data-v-c4f5f6d4] {
51
+ position: relative;
23
52
  box-sizing: border-box;
24
53
  }
25
- .rs-virtual-list__item--active[data-v-4d459ccc] {
26
- background: color-mix(in srgb, var(--rs-primary) 14%, var(--rs-surface));
27
- box-shadow: inset 2px 0 0 var(--rs-primary);
54
+ .rs-virtual-list--horizontal .rs-virtual-list__item[data-v-c4f5f6d4] {
55
+ flex: none;
56
+ height: 100%;
57
+ }
58
+ .rs-virtual-list__item--active[data-v-c4f5f6d4] {
59
+ background: var(
60
+ --rs-virtual-list-active-bg,
61
+ color-mix(in srgb, var(--rs-primary) 14%, var(--rs-surface))
62
+ );
63
+ }
64
+ .rs-virtual-list__item--active[data-v-c4f5f6d4]::before {
65
+ content: '';
66
+ position: absolute;
67
+ inset-inline-start: 0;
68
+ inset-block: 0;
69
+ width: var(--rs-virtual-list-accent-width, 0.125rem);
70
+ background: var(--rs-virtual-list-accent, var(--rs-primary));
71
+ pointer-events: none;
72
+ }
73
+ .rs-virtual-list__empty[data-v-c4f5f6d4] {
74
+ padding: var(--rs-space-lg);
75
+ color: var(--rs-text-secondary);
76
+ font-size: var(--rs-font-size-sm);
77
+ text-align: start;
78
+ }
79
+ @media (prefers-reduced-motion: reduce) {
80
+ .rs-virtual-list--scrolling .rs-virtual-list__items[data-v-c4f5f6d4] {
81
+ will-change: auto;
82
+ }
28
83
  }
@@ -1,30 +1,56 @@
1
1
  import type { RsRadius } from '../../../theme/types';
2
- import type { RsVirtualListItemSize } from './virtual-list-utils';
2
+ import type { RsVirtualListAlign, RsVirtualListItemKey, RsVirtualListItemSize, RsVirtualListOrientation } from './virtual-list-utils';
3
3
  declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
- props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<({
5
5
  items: T[];
6
6
  itemSize?: RsVirtualListItemSize;
7
+ /** `'auto'` 时,测量前用来估算总高度。 */
8
+ estimateSize?: number;
7
9
  height?: number | string;
8
10
  overscan?: number;
9
- activeIndex?: number | null;
10
11
  /** keep-alive 外层可见性;变为 true 时重同步视口与 scroll 位置 */
11
12
  layoutActive?: boolean;
12
13
  /** 外层圆角。直角列表传 `none`。默认 sm。 */
13
14
  radius?: RsRadius;
15
+ /** 滚动轴。默认纵向。 */
16
+ orientation?: RsVirtualListOrientation;
17
+ /** 稳定键。默认用索引,滚动时复用同一批节点。 */
18
+ itemKey?: RsVirtualListItemKey<T>;
19
+ /**
20
+ * 方向键 / Home / End 移动当前项。默认关,避免抢走外层(如日志)的键盘。
21
+ * 打开后根是 listbox,需要焦点。
22
+ */
23
+ keyboard?: boolean;
24
+ /** 外框。嵌进已有表面时关掉。 */
25
+ bordered?: boolean;
26
+ ariaLabel?: string;
27
+ id?: string;
28
+ } & {
29
+ activeIndex?: number | null;
30
+ }) & {
31
+ onChange?: ((index: number, item: T) => any) | undefined;
32
+ onScroll?: ((event: Event) => any) | undefined;
33
+ "onUpdate:activeIndex"?: ((value: number | null) => any) | undefined;
14
34
  }> & (typeof globalThis extends {
15
35
  __VLS_PROPS_FALLBACK: infer P;
16
36
  } ? P : {});
17
37
  expose: (exposed: import("vue").ShallowUnwrapRef<{
18
- scrollToIndex: (index: number, align?: "nearest" | "center" | "start" | "end") => void;
38
+ scrollToIndex: (index: number, align?: RsVirtualListAlign) => void;
39
+ scrollToOffset: (offset: number) => void;
40
+ getScrollOffset: () => number;
41
+ getViewport: () => HTMLElement | undefined;
42
+ focus: () => void;
19
43
  }>) => void;
20
44
  attrs: any;
21
45
  slots: {
46
+ empty?: (props: {}) => any;
47
+ } & {
22
48
  default?: (props: {
23
49
  item: T;
24
50
  index: number;
25
51
  }) => any;
26
52
  };
27
- emit: {};
53
+ emit: (((evt: "change", index: number, item: T) => void) & ((evt: "scroll", event: Event) => void)) & ((event: "update:activeIndex", value: number | null) => void);
28
54
  }>) => import("vue").VNode & {
29
55
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
30
56
  };