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
@@ -1,22 +1,86 @@
1
- import type { RsStepItem, RsStepsOrientation, RsStepsSize } from './steps-utils';
1
+ import type { RsStepItem, RsStepStatus, RsStepsLabelPlacement, RsStepsOrientation, RsStepsSize, RsStepsType } from './steps-utils';
2
2
  type __VLS_Props = {
3
3
  items: RsStepItem[];
4
4
  orientation?: RsStepsOrientation;
5
5
  size?: RsStepsSize;
6
6
  clickable?: boolean;
7
+ /** 标题在指示器旁(end)或下方(bottom)。竖排时仍在旁。 */
8
+ labelPlacement?: RsStepsLabelPlacement;
9
+ /** default 数字/图标;dot 圆点。 */
10
+ type?: RsStepsType;
11
+ /** 覆盖当前步状态(单项 status 仍优先)。 */
12
+ status?: RsStepStatus;
13
+ /** 当前步完成百分比 0–100。只影响 default + process 指示器。 */
14
+ percent?: number;
15
+ ariaLabel?: string;
16
+ id?: string;
7
17
  };
18
+ declare function goTo(value: string): boolean;
19
+ declare function next(): string | undefined;
20
+ declare function prev(): string | undefined;
21
+ declare function focus(value?: string): void;
8
22
  type __VLS_ModelProps = {
9
23
  modelValue?: string;
10
24
  };
11
25
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
- "update:modelValue": (value: string | undefined) => any;
26
+ declare var __VLS_9: {
27
+ item: RsStepItem;
28
+ index: number;
29
+ status: RsStepStatus;
30
+ active: boolean;
31
+ disabled: boolean;
32
+ }, __VLS_11: {
33
+ item: RsStepItem;
34
+ index: number;
35
+ status: RsStepStatus;
36
+ active: boolean;
37
+ disabled: boolean;
38
+ }, __VLS_28: {
39
+ item: RsStepItem;
40
+ index: number;
41
+ status: RsStepStatus;
42
+ active: boolean;
43
+ disabled: boolean;
44
+ }, __VLS_30: {
45
+ item: RsStepItem;
46
+ index: number;
47
+ status: RsStepStatus;
48
+ active: boolean;
49
+ disabled: boolean;
50
+ };
51
+ type __VLS_Slots = {} & {
52
+ item?: (props: typeof __VLS_9) => any;
53
+ } & {
54
+ icon?: (props: typeof __VLS_11) => any;
55
+ } & {
56
+ title?: (props: typeof __VLS_28) => any;
57
+ } & {
58
+ description?: (props: typeof __VLS_30) => any;
59
+ };
60
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
61
+ next: typeof next;
62
+ prev: typeof prev;
63
+ goTo: typeof goTo;
64
+ focus: typeof focus;
65
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
66
+ change: (value: string, item: RsStepItem) => any;
67
+ click: (item: RsStepItem, event: MouseEvent) => any;
68
+ "update:modelValue": (value: string) => any;
14
69
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
15
- "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
70
+ onChange?: ((value: string, item: RsStepItem) => any) | undefined;
71
+ onClick?: ((item: RsStepItem, event: MouseEvent) => any) | undefined;
72
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
16
73
  }>, {
17
- size: RsStepsSize;
74
+ type: RsStepsType;
18
75
  orientation: RsStepsOrientation;
76
+ labelPlacement: RsStepsLabelPlacement;
19
77
  clickable: boolean;
20
78
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
79
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
80
  declare const _default: typeof __VLS_export;
22
81
  export default _default;
82
+ type __VLS_WithSlots<T, S> = T & {
83
+ new (): {
84
+ $slots: S;
85
+ };
86
+ };
@@ -1,53 +1,193 @@
1
- import { resolveStepStatus } from "./steps-utils.js";
2
- import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderList, toDisplayString, unref, useModel } from "vue";
1
+ import { useRsConfigOptional } from "../../../composables/useRsConfig.js";
2
+ import { resolveDirMode } from "../../../locale/apply.js";
3
+ import { useRsI18n } from "../../../composables/useRsI18n.js";
4
+ import RsIcon_default from "../../icon/src/RsIcon.js";
5
+ import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
6
+ import { buildStepRenderItems, clampStepPercent, resolveActiveStepIndex, resolveAdjacentStepValue, resolveSelectableStepValues, resolveStepKeyboardMove } from "./steps-utils.js";
7
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeModels, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useModel, withCtx } from "vue";
3
8
  //#region src/components/steps/src/RsSteps.vue?vue&type=script&setup=true&lang.ts
4
- var _hoisted_1 = ["disabled", "onClick"];
5
- var _hoisted_2 = { class: "rs-steps__indicator" };
6
- var _hoisted_3 = { class: "rs-steps__body" };
7
- var _hoisted_4 = { class: "rs-steps__title" };
8
- var _hoisted_5 = {
9
+ var _hoisted_1 = ["id", "aria-label"];
10
+ var _hoisted_2 = { class: "rs-steps__list" };
11
+ var _hoisted_3 = ["aria-current"];
12
+ var _hoisted_4 = { class: "rs-steps__mark" };
13
+ var _hoisted_5 = { class: "rs-steps__body" };
14
+ var _hoisted_6 = { class: "rs-steps__title" };
15
+ var _hoisted_7 = {
9
16
  key: 0,
10
17
  class: "rs-steps__description"
11
18
  };
12
- var _hoisted_6 = {
13
- key: 0,
14
- class: "rs-steps__separator"
15
- };
19
+ var _hoisted_8 = { class: "rs-steps__status" };
16
20
  var RsSteps_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
21
+ name: "RsSteps",
17
22
  __name: "RsSteps",
18
23
  props: /*@__PURE__*/ mergeModels({
19
24
  items: {},
20
25
  orientation: { default: "horizontal" },
21
- size: { default: "md" },
26
+ size: {},
22
27
  clickable: {
23
28
  type: Boolean,
24
29
  default: false
25
- }
30
+ },
31
+ labelPlacement: { default: "end" },
32
+ type: { default: "default" },
33
+ status: {},
34
+ percent: {},
35
+ ariaLabel: {},
36
+ id: {}
26
37
  }, {
27
- "modelValue": {},
38
+ "modelValue": { default: "" },
28
39
  "modelModifiers": {}
29
40
  }),
30
- emits: ["update:modelValue"],
31
- setup(__props) {
41
+ emits: /*@__PURE__*/ mergeModels(["change", "click"], ["update:modelValue"]),
42
+ setup(__props, { expose: __expose, emit: __emit }) {
32
43
  const model = useModel(__props, "modelValue");
33
44
  const props = __props;
34
- const activeIndex = computed(() => Math.max(0, props.items.findIndex((item) => item.value === model.value)));
35
- function selectStep(item) {
45
+ const emit = __emit;
46
+ const { t, locale } = useRsI18n();
47
+ const config = useRsConfigOptional();
48
+ const rootRef = ref(null);
49
+ const resolvedSize = useResolvedRsComponentSize(() => props.size);
50
+ const writingDir = computed(() => resolveDirMode(config?.dir.value ?? "auto", locale.value));
51
+ const activeIndex = computed(() => resolveActiveStepIndex(props.items, model.value));
52
+ const rows = computed(() => buildStepRenderItems(props.items, activeIndex.value, props.type, props.status));
53
+ const selectableValues = computed(() => resolveSelectableStepValues(props.items));
54
+ const resolvedPercent = computed(() => clampStepPercent(props.percent));
55
+ const navLabel = computed(() => props.ariaLabel || t("steps.label"));
56
+ const currentValue = computed(() => props.items[activeIndex.value]?.value);
57
+ function statusLabel(status) {
58
+ return t(`steps.${status}`);
59
+ }
60
+ function slotProps(row) {
61
+ return {
62
+ item: row.item,
63
+ index: row.index,
64
+ status: row.status,
65
+ active: row.active,
66
+ disabled: row.disabled
67
+ };
68
+ }
69
+ function showPercent(row) {
70
+ return props.type === "default" && row.status === "process" && resolvedPercent.value != null;
71
+ }
72
+ function findTrigger(value) {
73
+ const root = rootRef.value;
74
+ if (!root) return null;
75
+ const nodes = root.querySelectorAll("[data-rs-step]");
76
+ for (const node of nodes) if (node.dataset.rsStep === value) return node;
77
+ return null;
78
+ }
79
+ function goTo(value) {
80
+ const item = props.items.find((entry) => entry.value === value);
81
+ if (!item || item.disabled) return false;
82
+ if (model.value === value) return true;
83
+ model.value = value;
84
+ emit("change", value, item);
85
+ return true;
86
+ }
87
+ function next() {
88
+ const value = resolveAdjacentStepValue(selectableValues.value, currentValue.value, 1);
89
+ return value && goTo(value) ? value : void 0;
90
+ }
91
+ function prev() {
92
+ const value = resolveAdjacentStepValue(selectableValues.value, currentValue.value, -1);
93
+ return value && goTo(value) ? value : void 0;
94
+ }
95
+ function focus(value) {
96
+ const target = value || currentValue.value || selectableValues.value[0];
97
+ if (!target) return;
98
+ findTrigger(target)?.focus();
99
+ }
100
+ function selectStep(item, event) {
101
+ emit("click", item, event);
36
102
  if (!props.clickable || item.disabled) return;
37
- model.value = item.value;
103
+ goTo(item.value);
104
+ }
105
+ function onKeydown(event) {
106
+ if (!props.clickable) return;
107
+ const target = event.target;
108
+ if (!(target instanceof HTMLElement) || !target.closest("[data-rs-step]")) return;
109
+ if (target.closest("input, textarea, select, [contenteditable=\"true\"]")) return;
110
+ const move = resolveStepKeyboardMove(event.key, props.orientation, writingDir.value === "rtl");
111
+ if (move == null) return;
112
+ const values = selectableValues.value;
113
+ if (values.length === 0) return;
114
+ event.preventDefault();
115
+ const focused = target.closest("[data-rs-step]")?.dataset.rsStep;
116
+ let nextValue;
117
+ if (move === "start") nextValue = values[0];
118
+ else if (move === "end") nextValue = values[values.length - 1];
119
+ else nextValue = resolveAdjacentStepValue(values, focused, move);
120
+ if (nextValue) focus(nextValue);
38
121
  }
122
+ __expose({
123
+ next,
124
+ prev,
125
+ goTo,
126
+ focus
127
+ });
39
128
  return (_ctx, _cache) => {
40
- return openBlock(), createElementBlock("ol", { class: normalizeClass(["rs-steps", [`rs-steps--${__props.orientation}`, `rs-steps--${__props.size}`]]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, index) => {
129
+ return openBlock(), createElementBlock("nav", {
130
+ id: __props.id,
131
+ ref_key: "rootRef",
132
+ ref: rootRef,
133
+ class: normalizeClass(["rs-steps", [
134
+ `rs-steps--${__props.orientation}`,
135
+ `rs-steps--${unref(resolvedSize)}`,
136
+ `rs-steps--label-${__props.labelPlacement}`,
137
+ `rs-steps--${__props.type}`,
138
+ { "rs-steps--clickable": __props.clickable }
139
+ ]]),
140
+ "aria-label": navLabel.value,
141
+ onKeydown
142
+ }, [createElementVNode("ol", _hoisted_2, [(openBlock(true), createElementBlock(Fragment, null, renderList(rows.value, (row, index) => {
41
143
  return openBlock(), createElementBlock("li", {
42
- key: item.value,
43
- class: normalizeClass(["rs-steps__item", `rs-steps__item--${unref(resolveStepStatus)(index, activeIndex.value, item.status)}`])
44
- }, [createElementVNode("button", {
45
- type: "button",
144
+ key: row.item.value,
145
+ class: normalizeClass(["rs-steps__item", [`rs-steps__item--${row.status}`, {
146
+ "rs-steps__item--active": row.active,
147
+ "rs-steps__item--disabled": row.disabled
148
+ }]]),
149
+ "aria-current": row.active ? "step" : void 0
150
+ }, [(openBlock(), createBlock(resolveDynamicComponent(__props.clickable ? "button" : "div"), {
151
+ type: __props.clickable ? "button" : void 0,
46
152
  class: "rs-steps__trigger",
47
- disabled: !__props.clickable || item.disabled,
48
- onClick: ($event) => selectStep(item)
49
- }, [createElementVNode("span", _hoisted_2, toDisplayString(index + 1), 1), createElementVNode("span", _hoisted_3, [createElementVNode("span", _hoisted_4, toDisplayString(item.title), 1), item.description ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(item.description), 1)) : createCommentVNode("", true)])], 8, _hoisted_1), index < __props.items.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_6)) : createCommentVNode("", true)], 2);
50
- }), 128))], 2);
153
+ "data-rs-step": row.item.value,
154
+ tabindex: __props.clickable && !row.disabled ? 0 : -1,
155
+ "aria-disabled": row.disabled ? "true" : void 0,
156
+ onClick: ($event) => selectStep(row.item, $event)
157
+ }, {
158
+ default: withCtx(() => [renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, slotProps(row)), () => [createElementVNode("span", {
159
+ class: normalizeClass(["rs-steps__indicator", { "rs-steps__indicator--percent": showPercent(row) }]),
160
+ style: normalizeStyle(showPercent(row) ? { "--rs-steps-percent": String(resolvedPercent.value) } : void 0)
161
+ }, [createElementVNode("span", _hoisted_4, [renderSlot(_ctx.$slots, "icon", mergeProps({ ref_for: true }, slotProps(row)), () => [row.indicator === "icon" && row.item.icon ? (openBlock(), createBlock(RsIcon_default, {
162
+ key: 0,
163
+ name: row.item.icon,
164
+ size: unref(resolvedSize)
165
+ }, null, 8, ["name", "size"])) : row.indicator === "check" ? (openBlock(), createBlock(RsIcon_default, {
166
+ key: 1,
167
+ name: "check",
168
+ size: unref(resolvedSize)
169
+ }, null, 8, ["size"])) : row.indicator === "error" ? (openBlock(), createBlock(RsIcon_default, {
170
+ key: 2,
171
+ name: "x",
172
+ size: unref(resolvedSize)
173
+ }, null, 8, ["size"])) : row.indicator !== "dot" ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [createTextVNode(toDisplayString(row.index + 1), 1)], 64)) : createCommentVNode("", true)], true)])], 6), createElementVNode("span", _hoisted_5, [
174
+ createElementVNode("span", _hoisted_6, [renderSlot(_ctx.$slots, "title", mergeProps({ ref_for: true }, slotProps(row)), () => [createTextVNode(toDisplayString(row.item.title), 1)], true)]),
175
+ row.item.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", _hoisted_7, [renderSlot(_ctx.$slots, "description", mergeProps({ ref_for: true }, slotProps(row)), () => [createTextVNode(toDisplayString(row.item.description), 1)], true)])) : createCommentVNode("", true),
176
+ createElementVNode("span", _hoisted_8, toDisplayString(statusLabel(row.status)), 1)
177
+ ])], true)]),
178
+ _: 2
179
+ }, 1032, [
180
+ "type",
181
+ "data-rs-step",
182
+ "tabindex",
183
+ "aria-disabled",
184
+ "onClick"
185
+ ])), index < rows.value.length - 1 ? (openBlock(), createElementBlock("span", {
186
+ key: 0,
187
+ class: normalizeClass(["rs-steps__separator", { "rs-steps__separator--finish": row.completedSeparator }]),
188
+ "aria-hidden": "true"
189
+ }, null, 2)) : createCommentVNode("", true)], 10, _hoisted_3);
190
+ }), 128))])], 42, _hoisted_1);
51
191
  };
52
192
  }
53
193
  });
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsSteps_vue_vue_type_script_setup_true_lang_default from "./RsSteps.impl.js";
4
4
 
5
5
  //#region src/components/steps/src/RsSteps.vue
6
- var RsSteps_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsSteps_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b7fdd868"]]);
6
+ var RsSteps_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsSteps_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-773a38b0"]]);
7
7
  //#endregion
8
8
  export { RsSteps_default as default };
@@ -1,12 +1,62 @@
1
+ import type { RsComponentSize } from '../../../theme/types';
1
2
  export type RsStepStatus = 'wait' | 'process' | 'finish' | 'error';
2
3
  export type RsStepsOrientation = 'horizontal' | 'vertical';
3
- export type RsStepsSize = 'sm' | 'md';
4
+ export type RsStepsSize = RsComponentSize;
5
+ export type RsStepsLabelPlacement = 'end' | 'bottom';
6
+ export type RsStepsType = 'default' | 'dot';
4
7
  export interface RsStepItem {
5
8
  value: string;
6
9
  title: string;
7
10
  description?: string;
8
11
  status?: RsStepStatus;
9
12
  disabled?: boolean;
13
+ /** Lucide kebab-case。有值时覆盖默认数字 / 勾 / 叉。 */
14
+ icon?: string;
10
15
  }
16
+ export interface RsStepsRenderItem {
17
+ item: RsStepItem;
18
+ index: number;
19
+ status: RsStepStatus;
20
+ active: boolean;
21
+ disabled: boolean;
22
+ completedSeparator: boolean;
23
+ indicator: 'number' | 'icon' | 'check' | 'error' | 'dot';
24
+ }
25
+ export interface RsStepsItemSlot {
26
+ item: RsStepItem;
27
+ index: number;
28
+ status: RsStepStatus;
29
+ active: boolean;
30
+ disabled: boolean;
31
+ }
32
+ export interface RsStepsExpose {
33
+ /** 跳到下一个未禁用步骤。已在末级或没有可选项时返回 undefined。 */
34
+ next: () => string | undefined;
35
+ /** 跳到上一个未禁用步骤。已在首级或没有可选项时返回 undefined。 */
36
+ prev: () => string | undefined;
37
+ /** 跳到指定 value。找不到或禁用时返回 false。 */
38
+ goTo: (value: string) => boolean;
39
+ /** 焦点落到指定步骤;未传则落到当前步。不可点时也能落(tabindex=-1)。 */
40
+ focus: (value?: string) => void;
41
+ }
42
+ export type RsStepsInstance = RsStepsExpose & {
43
+ $el: HTMLElement;
44
+ };
11
45
  export declare function resolveStepStatus(index: number, activeIndex: number, explicit?: RsStepStatus): RsStepStatus;
12
46
  export declare function isStepSeparatorCompleted(status: RsStepStatus): boolean;
47
+ /** model 对不上任一项时回退 0,与原先 Math.max(0, findIndex) 一致。 */
48
+ export declare function resolveActiveStepIndex(items: readonly RsStepItem[], value?: string): number;
49
+ /**
50
+ * 单项 status 优先;当前步可用组件级 status 覆盖自动推导(对标 Ant Design status)。
51
+ */
52
+ export declare function resolveCurrentStepStatus(index: number, activeIndex: number, itemStatus?: RsStepStatus, currentStatus?: RsStepStatus): RsStepStatus;
53
+ export declare function clampStepPercent(percent?: number): number | undefined;
54
+ export declare function resolveSelectableStepValues(items: readonly RsStepItem[]): string[];
55
+ export declare function resolveAdjacentStepValue(values: readonly string[], current: string | undefined, delta: number): string | undefined;
56
+ /**
57
+ * 可点步骤的键盘位移。竖排只用上下;横排左右在 RTL 下对调。
58
+ * Home / End 返回端点;不处理的键返回 null。
59
+ */
60
+ export declare function resolveStepKeyboardMove(key: string, orientation: RsStepsOrientation, rtl?: boolean): number | 'start' | 'end' | null;
61
+ export declare function resolveStepIndicator(status: RsStepStatus, type: RsStepsType, icon?: string): RsStepsRenderItem['indicator'];
62
+ export declare function buildStepRenderItems(items: readonly RsStepItem[], activeIndex: number, type?: RsStepsType, currentStatus?: RsStepStatus): RsStepsRenderItem[];
@@ -8,5 +8,71 @@ function resolveStepStatus(index, activeIndex, explicit) {
8
8
  function isStepSeparatorCompleted(status) {
9
9
  return status === "finish";
10
10
  }
11
+ /** model 对不上任一项时回退 0,与原先 Math.max(0, findIndex) 一致。 */
12
+ function resolveActiveStepIndex(items, value) {
13
+ return Math.max(0, items.findIndex((item) => item.value === value));
14
+ }
15
+ /**
16
+ * 单项 status 优先;当前步可用组件级 status 覆盖自动推导(对标 Ant Design status)。
17
+ */
18
+ function resolveCurrentStepStatus(index, activeIndex, itemStatus, currentStatus) {
19
+ if (itemStatus) return itemStatus;
20
+ if (index === activeIndex && currentStatus) return currentStatus;
21
+ return resolveStepStatus(index, activeIndex);
22
+ }
23
+ function clampStepPercent(percent) {
24
+ if (percent == null || Number.isNaN(Number(percent))) return void 0;
25
+ return Math.min(100, Math.max(0, Number(percent)));
26
+ }
27
+ function resolveSelectableStepValues(items) {
28
+ const values = [];
29
+ for (const item of items) if (!item.disabled) values.push(item.value);
30
+ return values;
31
+ }
32
+ function resolveAdjacentStepValue(values, current, delta) {
33
+ if (values.length === 0) return void 0;
34
+ const index = current ? values.indexOf(current) : -1;
35
+ let next = index + delta;
36
+ if (index < 0) next = delta > 0 ? 0 : values.length - 1;
37
+ if (next < 0 || next >= values.length) return void 0;
38
+ return values[next];
39
+ }
40
+ /**
41
+ * 可点步骤的键盘位移。竖排只用上下;横排左右在 RTL 下对调。
42
+ * Home / End 返回端点;不处理的键返回 null。
43
+ */
44
+ function resolveStepKeyboardMove(key, orientation, rtl = false) {
45
+ if (key === "Home") return "start";
46
+ if (key === "End") return "end";
47
+ if (orientation === "vertical") {
48
+ if (key === "ArrowUp") return -1;
49
+ if (key === "ArrowDown") return 1;
50
+ return null;
51
+ }
52
+ if (key === "ArrowLeft") return rtl ? 1 : -1;
53
+ if (key === "ArrowRight") return rtl ? -1 : 1;
54
+ return null;
55
+ }
56
+ function resolveStepIndicator(status, type, icon) {
57
+ if (type === "dot") return "dot";
58
+ if (icon) return "icon";
59
+ if (status === "finish") return "check";
60
+ if (status === "error") return "error";
61
+ return "number";
62
+ }
63
+ function buildStepRenderItems(items, activeIndex, type = "default", currentStatus) {
64
+ return items.map((item, index) => {
65
+ const status = resolveCurrentStepStatus(index, activeIndex, item.status, currentStatus);
66
+ return {
67
+ item,
68
+ index,
69
+ status,
70
+ active: index === activeIndex,
71
+ disabled: Boolean(item.disabled),
72
+ completedSeparator: isStepSeparatorCompleted(status),
73
+ indicator: resolveStepIndicator(status, type, item.icon)
74
+ };
75
+ });
76
+ }
11
77
  //#endregion
12
- export { isStepSeparatorCompleted, resolveStepStatus };
78
+ export { buildStepRenderItems, clampStepPercent, isStepSeparatorCompleted, resolveActiveStepIndex, resolveAdjacentStepValue, resolveCurrentStepStatus, resolveSelectableStepValues, resolveStepIndicator, resolveStepKeyboardMove, resolveStepStatus };
@@ -31,6 +31,7 @@ var _hoisted_3 = {
31
31
  var _hoisted_4 = { key: 0 };
32
32
  var _hoisted_5 = ["colspan"];
33
33
  var RsTable_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
34
+ name: "RsTable",
34
35
  inheritAttrs: false,
35
36
  __name: "RsTable",
36
37
  props: /*@__PURE__*/ mergeDefaults({
@@ -174,6 +175,7 @@ var RsTable_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
174
175
  const emit = __emit;
175
176
  const slots = useSlots();
176
177
  const { t } = useRsI18n();
178
+ const resolvedNullLabel = computed(() => props.nullLabel ?? t("table.nullValue"));
177
179
  const sharedTipRef = ref(null);
178
180
  const { state: cellTipState, onPointerOver: onCellTipOver, onPointerOut: onCellTipOut, hide: hideCellTooltip } = useTableCellTooltip({
179
181
  enabled: () => props.cellTooltip,
@@ -462,7 +464,7 @@ var RsTable_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
462
464
  rowCommit: () => props.rowCommit,
463
465
  allowNull: () => props.allowNull,
464
466
  editFocusMode: () => props.editFocusMode,
465
- nullLabel: () => props.nullLabel
467
+ nullLabel: () => resolvedNullLabel.value
466
468
  },
467
469
  layout: {
468
470
  useFixedColumnLayout,
@@ -587,7 +589,7 @@ var RsTable_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
587
589
  items: unref(ctxMenuItems),
588
590
  onSelect: unref(onCtxMenuSelect)
589
591
  }, {
590
- default: withCtx(() => [createElementVNode("div", mergeProps({ class: ["rs-table-shell", {
592
+ default: withCtx(() => [createElementVNode("div", mergeProps({ class: ["rs-table-shell rs-motion-reduce", {
591
593
  "rs-table-shell--ctx": contextMenuEnabled.value,
592
594
  "rs-table-shell--fill": __props.fill
593
595
  }] }, unref(shellBind), { onContextmenu: _cache[4] || (_cache[4] = (...args) => unref(onTableContextmenu) && unref(onTableContextmenu)(...args)) }), [createElementVNode("div", {
@@ -55,20 +55,36 @@ export declare function useRsTableContextMenu<T extends RsTableRowData>(options:
55
55
  key: string;
56
56
  label: string;
57
57
  icon?: string | undefined;
58
+ hint?: string | undefined;
58
59
  disabled?: boolean | undefined;
59
60
  danger?: boolean | undefined;
60
61
  separator?: boolean | undefined;
61
62
  children?: /*elided*/ any[] | undefined;
62
63
  shortcut?: string | undefined;
64
+ type?: import("../../../context-menu").RsContextMenuItemType | undefined;
65
+ checked?: boolean | undefined;
66
+ group?: string | undefined;
67
+ href?: string | undefined;
68
+ target?: string | undefined;
69
+ rel?: string | undefined;
70
+ closeOnSelect?: boolean | undefined;
63
71
  }[], RsContextMenuItem[] | {
64
72
  key: string;
65
73
  label: string;
66
74
  icon?: string | undefined;
75
+ hint?: string | undefined;
67
76
  disabled?: boolean | undefined;
68
77
  danger?: boolean | undefined;
69
78
  separator?: boolean | undefined;
70
79
  children?: /*elided*/ any[] | undefined;
71
80
  shortcut?: string | undefined;
81
+ type?: import("../../../context-menu").RsContextMenuItemType | undefined;
82
+ checked?: boolean | undefined;
83
+ group?: string | undefined;
84
+ href?: string | undefined;
85
+ target?: string | undefined;
86
+ rel?: string | undefined;
87
+ closeOnSelect?: boolean | undefined;
72
88
  }[]>;
73
89
  refreshCtxMenuItems: () => void;
74
90
  onCtxMenuSelect: (key: string) => Promise<void>;
@@ -93,7 +93,7 @@ function useRsTableContextMenu(options) {
93
93
  }
94
94
  }
95
95
  /**
96
- * 捕获阶段预填:须早于 ContextMenuTrigger 冒泡打开。
96
+ * 捕获阶段预填:须早于右键菜单在冒泡阶段打开。
97
97
  */
98
98
  function onContextmenuCapture(event) {
99
99
  if (!read(options.enabled)) return;
@@ -1,3 +1,4 @@
1
+ import { useRsI18n } from "../../../../composables/useRsI18n.js";
1
2
  import { buildTableEntries, buildTableTreeEntries, buildTableTreeNodeIndex, collectTableTreeExpandableKeys, injectExpandRows, isTableRowDisabled, resolveRowKey, resolveSelectAllState, resolveTableTreeIndent } from "../utils/table-utils.js";
2
3
  import { computed, ref, watch } from "vue";
3
4
  //#region src/components/table/src/composables/useRsTableEngine.ts
@@ -22,6 +23,7 @@ function read(source) {
22
23
  * 行勾选/展开的「交互处理函数」仍留在 RsTable(依赖 DOM 与其它 UI 状态)。
23
24
  */
24
25
  function useRsTableEngine(options) {
26
+ const { locale } = useRsI18n();
25
27
  const internalSort = ref(options.defaultSort ?? null);
26
28
  const internalSorts = ref([...options.defaultSorts]);
27
29
  const internalSelectedRowKeys = ref([...options.defaultSelectedRowKeys]);
@@ -133,7 +135,8 @@ function useRsTableEngine(options) {
133
135
  filterText: read(options.filterText),
134
136
  filterKeys: read(options.filterKeys),
135
137
  columnFilters: read(options.columnFilters),
136
- remoteSort: read(options.remoteSort)
138
+ remoteSort: read(options.remoteSort),
139
+ locale: locale.value
137
140
  });
138
141
  return injectExpandRows(buildTableEntries(data, columns, {
139
142
  sort: sortState.value,
@@ -144,7 +147,8 @@ function useRsTableEngine(options) {
144
147
  columnFilters: read(options.columnFilters),
145
148
  groupBy: read(options.groupBy),
146
149
  groupLabel: read(options.groupLabel),
147
- remoteSort: read(options.remoteSort)
150
+ remoteSort: read(options.remoteSort),
151
+ locale: locale.value
148
152
  }), expandedKeySet.value, rowKey, read(options.rowExpandable));
149
153
  });
150
154
  /**
@@ -153,6 +153,8 @@ function useRsTableScrollLayout(options) {
153
153
  viewportResizeObserver.observe(el);
154
154
  }
155
155
  function disposeScrollLayout() {
156
+ restoreGeneration += 1;
157
+ restoringScroll = false;
156
158
  viewportResizeObserver?.disconnect();
157
159
  viewportResizeObserver = null;
158
160
  if (scrollRafId) {
@@ -130,20 +130,36 @@ export declare function useRsTableShell<T extends RsTableRowData>(options: UseRs
130
130
  key: string;
131
131
  label: string;
132
132
  icon?: string | undefined;
133
+ hint?: string | undefined;
133
134
  disabled?: boolean | undefined;
134
135
  danger?: boolean | undefined;
135
136
  separator?: boolean | undefined;
136
137
  children?: /*elided*/ any[] | undefined;
137
138
  shortcut?: string | undefined;
139
+ type?: import("../../../context-menu").RsContextMenuItemType | undefined;
140
+ checked?: boolean | undefined;
141
+ group?: string | undefined;
142
+ href?: string | undefined;
143
+ target?: string | undefined;
144
+ rel?: string | undefined;
145
+ closeOnSelect?: boolean | undefined;
138
146
  }[], RsContextMenuItem[] | {
139
147
  key: string;
140
148
  label: string;
141
149
  icon?: string | undefined;
150
+ hint?: string | undefined;
142
151
  disabled?: boolean | undefined;
143
152
  danger?: boolean | undefined;
144
153
  separator?: boolean | undefined;
145
154
  children?: /*elided*/ any[] | undefined;
146
155
  shortcut?: string | undefined;
156
+ type?: import("../../../context-menu").RsContextMenuItemType | undefined;
157
+ checked?: boolean | undefined;
158
+ group?: string | undefined;
159
+ href?: string | undefined;
160
+ target?: string | undefined;
161
+ rel?: string | undefined;
162
+ closeOnSelect?: boolean | undefined;
147
163
  }[]>;
148
164
  refreshCtxMenuItems: () => void;
149
165
  onCtxMenuSelect: (key: string) => Promise<void>;
@@ -113,6 +113,7 @@ export interface RsTableProps<T extends RsTableRowData = RsTableRowData> {
113
113
  rowPending?: (row: T, index: number) => boolean;
114
114
  showRowStatus?: boolean;
115
115
  allowNull?: boolean;
116
+ /** 空值展示。未传时用 table.nullValue */
116
117
  nullLabel?: string;
117
118
  editFocusMode?: RsTableCellEditFocusMode;
118
119
  editKeyboard?: boolean;
@@ -309,7 +310,6 @@ export declare const RS_TABLE_PROP_DEFAULTS: {
309
310
  rowCommit: boolean;
310
311
  showRowStatus: boolean;
311
312
  allowNull: boolean;
312
- nullLabel: string;
313
313
  editFocusMode: "end";
314
314
  editKeyboard: boolean;
315
315
  editUndo: boolean;
@@ -50,7 +50,6 @@ var RS_TABLE_PROP_DEFAULTS = {
50
50
  rowCommit: false,
51
51
  showRowStatus: true,
52
52
  allowNull: true,
53
- nullLabel: "(NULL)",
54
53
  editFocusMode: "end",
55
54
  editKeyboard: true,
56
55
  editUndo: true,
@@ -30,6 +30,7 @@ var _hoisted_12 = ["colspan"];
30
30
  var _hoisted_13 = { key: 2 };
31
31
  var _hoisted_14 = ["colspan"];
32
32
  var RsTableBody_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
33
+ name: "RsTableBody",
33
34
  __name: "RsTableBody",
34
35
  setup(__props) {
35
36
  /**