niuma-ui 1.1.12 → 1.2.1

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 (897) hide show
  1. package/CHANGELOG.md +28 -18
  2. package/README.en.md +12 -9
  3. package/README.md +13 -10
  4. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  5. package/dist/components/RsAlert.css +111 -0
  6. package/dist/components/RsAlert.d.ts +32 -0
  7. package/dist/components/RsAlert.impl.js +83 -0
  8. package/dist/components/RsAlert.js +8 -0
  9. package/dist/components/RsAvatar.css +60 -0
  10. package/dist/components/RsAvatar.d.ts +30 -0
  11. package/dist/components/RsAvatar.impl.js +59 -0
  12. package/dist/components/RsAvatar.js +7 -0
  13. package/dist/components/RsBadge.css +41 -0
  14. package/dist/components/RsBadge.d.ts +18 -0
  15. package/dist/components/RsBadge.impl.js +13 -0
  16. package/dist/components/RsBadge.js +8 -0
  17. package/dist/components/RsBreadcrumb.css +37 -0
  18. package/dist/components/RsBreadcrumb.d.ts +11 -0
  19. package/dist/components/RsBreadcrumb.impl.js +26 -0
  20. package/dist/components/RsBreadcrumb.js +7 -0
  21. package/dist/components/RsBreadcrumbItems.d.ts +8 -0
  22. package/dist/components/RsBreadcrumbItems.impl.js +40 -0
  23. package/dist/components/RsBreadcrumbItems.js +5 -0
  24. package/dist/components/RsButton.css +298 -0
  25. package/dist/components/RsButton.d.ts +56 -0
  26. package/dist/components/RsButton.impl.js +244 -0
  27. package/dist/components/RsButton.js +8 -0
  28. package/dist/components/RsCalendarGrid.css +99 -0
  29. package/dist/components/RsCalendarGrid.d.ts +30 -0
  30. package/dist/components/RsCalendarGrid.impl.js +182 -0
  31. package/dist/components/RsCalendarGrid.js +8 -0
  32. package/dist/components/RsCard.css +282 -0
  33. package/dist/components/RsCard.d.ts +78 -0
  34. package/dist/components/RsCard.impl.js +104 -0
  35. package/dist/components/RsCard.js +7 -0
  36. package/dist/components/RsCheckbox.css +104 -0
  37. package/dist/components/RsCheckbox.d.ts +36 -0
  38. package/dist/components/RsCheckbox.impl.js +86 -0
  39. package/dist/components/RsCheckbox.js +7 -0
  40. package/dist/components/RsCodeBlock.css +102 -0
  41. package/dist/components/RsCodeBlock.d.ts +34 -0
  42. package/dist/components/RsCodeBlock.impl.js +173 -0
  43. package/dist/components/RsCodeBlock.js +8 -0
  44. package/dist/components/RsCodeEditor.css +214 -0
  45. package/dist/components/RsCodeEditor.d.ts +88 -0
  46. package/dist/components/RsCodeEditor.impl.js +308 -0
  47. package/dist/components/RsCodeEditor.js +8 -0
  48. package/dist/components/RsConfigProvider.css +7 -0
  49. package/dist/components/RsConfigProvider.d.ts +36 -0
  50. package/dist/components/RsConfigProvider.impl.js +49 -0
  51. package/dist/components/RsConfigProvider.js +8 -0
  52. package/dist/components/RsConfirmDialog.css +118 -0
  53. package/dist/components/RsConfirmDialog.d.ts +72 -0
  54. package/dist/components/RsConfirmDialog.impl.js +207 -0
  55. package/dist/components/RsConfirmDialog.js +7 -0
  56. package/dist/components/RsContainer.css +94 -0
  57. package/dist/components/RsContainer.d.ts +52 -0
  58. package/dist/components/RsContainer.impl.js +99 -0
  59. package/dist/components/RsContainer.js +8 -0
  60. package/dist/components/RsContextMenu.css +178 -0
  61. package/dist/components/RsContextMenu.d.ts +35 -0
  62. package/dist/components/RsContextMenu.impl.js +81 -0
  63. package/dist/components/RsContextMenu.js +7 -0
  64. package/dist/components/RsContextMenuItems.d.ts +11 -0
  65. package/dist/components/RsContextMenuItems.impl.js +90 -0
  66. package/dist/components/RsContextMenuItems.js +5 -0
  67. package/dist/components/RsDatePicker-1.css +157 -0
  68. package/dist/components/RsDatePicker.css +100 -0
  69. package/dist/components/RsDatePicker.d.ts +72 -0
  70. package/dist/components/RsDatePicker.impl.js +719 -0
  71. package/dist/components/RsDatePicker.js +10 -0
  72. package/dist/components/RsDateTimePicker.d.ts +50 -0
  73. package/dist/components/RsDateTimePicker.impl.js +70 -0
  74. package/dist/components/RsDateTimePicker.js +5 -0
  75. package/dist/components/RsDescriptions.css +86 -0
  76. package/dist/components/RsDescriptions.d.ts +34 -0
  77. package/dist/components/RsDescriptions.impl.js +69 -0
  78. package/dist/components/RsDescriptions.js +7 -0
  79. package/dist/components/RsDescriptionsItem.d.ts +21 -0
  80. package/dist/components/RsDescriptionsItem.impl.js +26 -0
  81. package/dist/components/RsDescriptionsItem.js +5 -0
  82. package/dist/components/RsDialog.css +298 -0
  83. package/dist/components/RsDialog.d.ts +143 -0
  84. package/dist/components/RsDialog.impl.js +410 -0
  85. package/dist/components/RsDialog.js +7 -0
  86. package/dist/components/RsDivider.css +51 -0
  87. package/dist/components/RsDivider.d.ts +20 -0
  88. package/dist/components/RsDivider.impl.js +31 -0
  89. package/dist/components/RsDivider.js +8 -0
  90. package/dist/components/RsDrawer.css +368 -0
  91. package/dist/components/RsDrawer.d.ts +104 -0
  92. package/dist/components/RsDrawer.impl.js +497 -0
  93. package/dist/components/RsDrawer.js +7 -0
  94. package/dist/components/RsDropdown.css +157 -0
  95. package/dist/components/RsDropdown.d.ts +34 -0
  96. package/dist/components/RsDropdown.impl.js +100 -0
  97. package/dist/components/RsDropdown.js +7 -0
  98. package/dist/components/RsDropdownItems.d.ts +15 -0
  99. package/dist/components/RsDropdownItems.impl.js +99 -0
  100. package/dist/components/RsDropdownItems.js +5 -0
  101. package/dist/components/RsDynamicTags.css +148 -0
  102. package/dist/components/RsDynamicTags.d.ts +71 -0
  103. package/dist/components/RsDynamicTags.impl.js +313 -0
  104. package/dist/components/RsDynamicTags.js +8 -0
  105. package/dist/components/RsEmpty.css +52 -0
  106. package/dist/components/RsEmpty.d.ts +32 -0
  107. package/dist/components/RsEmpty.impl.js +43 -0
  108. package/dist/components/RsEmpty.js +7 -0
  109. package/dist/components/RsForm.css +30 -0
  110. package/dist/components/RsForm.d.ts +80 -0
  111. package/dist/components/RsForm.impl.js +188 -0
  112. package/dist/components/RsForm.js +8 -0
  113. package/dist/components/RsFormItem.css +52 -0
  114. package/dist/components/RsFormItem.d.ts +78 -0
  115. package/dist/components/RsFormItem.impl.js +288 -0
  116. package/dist/components/RsFormItem.js +8 -0
  117. package/dist/components/RsFormItemControl.d.ts +21 -0
  118. package/dist/components/RsFormItemControl.impl.js +19 -0
  119. package/dist/components/RsFormItemControl.js +5 -0
  120. package/dist/components/RsFormList.d.ts +23 -0
  121. package/dist/components/RsFormList.impl.js +86 -0
  122. package/dist/components/RsFormList.js +5 -0
  123. package/dist/components/RsIcon.css +14 -0
  124. package/dist/components/RsIcon.d.ts +24 -0
  125. package/dist/components/RsIcon.impl.js +77 -0
  126. package/dist/components/RsIcon.js +8 -0
  127. package/dist/components/RsInput.css +528 -0
  128. package/dist/components/RsInput.d.ts +147 -0
  129. package/dist/components/RsInput.impl.js +439 -0
  130. package/dist/components/RsInput.js +8 -0
  131. package/dist/components/RsInputNumber.css +163 -0
  132. package/dist/components/RsInputNumber.d.ts +88 -0
  133. package/dist/components/RsInputNumber.impl.js +375 -0
  134. package/dist/components/RsInputNumber.js +8 -0
  135. package/dist/components/RsLabel.css +33 -0
  136. package/dist/components/RsLabel.d.ts +25 -0
  137. package/dist/components/RsLabel.impl.js +45 -0
  138. package/dist/components/RsLabel.js +8 -0
  139. package/dist/components/RsLink.css +45 -0
  140. package/dist/components/RsLink.d.ts +25 -0
  141. package/dist/components/RsLink.impl.js +59 -0
  142. package/dist/components/RsLink.js +7 -0
  143. package/dist/components/RsLoading.css +106 -0
  144. package/dist/components/RsLoading.d.ts +24 -0
  145. package/dist/components/RsLoading.impl.js +72 -0
  146. package/dist/components/RsLoading.js +7 -0
  147. package/dist/components/RsLoadingBar.css +20 -0
  148. package/dist/components/RsLoadingBar.d.ts +31 -0
  149. package/dist/components/RsLoadingBar.impl.js +111 -0
  150. package/dist/components/RsLoadingBar.js +8 -0
  151. package/dist/components/RsMarkdown.css +214 -0
  152. package/dist/components/RsMarkdown.d.ts +36 -0
  153. package/dist/components/RsMarkdown.impl.js +139 -0
  154. package/dist/components/RsMarkdown.js +7 -0
  155. package/dist/components/RsMenu.css +200 -0
  156. package/dist/components/RsMenu.d.ts +28 -0
  157. package/dist/components/RsMenu.impl.js +108 -0
  158. package/dist/components/RsMenu.js +7 -0
  159. package/dist/components/RsMenuItems.d.ts +25 -0
  160. package/dist/components/RsMenuItems.impl.js +282 -0
  161. package/dist/components/RsMenuItems.js +5 -0
  162. package/dist/components/RsMonacoEditor.css +28 -0
  163. package/dist/components/RsMonacoEditor.d.ts +105 -0
  164. package/dist/components/RsMonacoEditor.impl.js +353 -0
  165. package/dist/components/RsMonacoEditor.js +8 -0
  166. package/dist/components/RsPagination.css +83 -0
  167. package/dist/components/RsPagination.d.ts +44 -0
  168. package/dist/components/RsPagination.impl.js +208 -0
  169. package/dist/components/RsPagination.js +8 -0
  170. package/dist/components/RsPopover.css +24 -0
  171. package/dist/components/RsPopover.d.ts +43 -0
  172. package/dist/components/RsPopover.impl.js +71 -0
  173. package/dist/components/RsPopover.js +7 -0
  174. package/dist/components/RsProseEditor.css +19 -0
  175. package/dist/components/RsProseEditor.d.ts +38 -0
  176. package/dist/components/RsProseEditor.impl.js +137 -0
  177. package/dist/components/RsProseEditor.js +8 -0
  178. package/dist/components/RsRadio.css +19 -0
  179. package/dist/components/RsRadio.d.ts +34 -0
  180. package/dist/components/RsRadio.impl.js +66 -0
  181. package/dist/components/RsRadio.js +7 -0
  182. package/dist/components/RsRadioItem.css +90 -0
  183. package/dist/components/RsRadioItem.d.ts +23 -0
  184. package/dist/components/RsRadioItem.impl.js +55 -0
  185. package/dist/components/RsRadioItem.js +7 -0
  186. package/dist/components/RsScrollbar.css +68 -0
  187. package/dist/components/RsScrollbar.d.ts +31 -0
  188. package/dist/components/RsScrollbar.impl.js +81 -0
  189. package/dist/components/RsScrollbar.js +7 -0
  190. package/dist/components/RsSelect.css +233 -0
  191. package/dist/components/RsSelect.d.ts +148 -0
  192. package/dist/components/RsSelect.impl.js +506 -0
  193. package/dist/components/RsSelect.js +8 -0
  194. package/dist/components/RsSidebar.css +61 -0
  195. package/dist/components/RsSidebar.d.ts +44 -0
  196. package/dist/components/RsSidebar.impl.js +63 -0
  197. package/dist/components/RsSidebar.js +8 -0
  198. package/dist/components/RsSidebarGroup.css +15 -0
  199. package/dist/components/RsSidebarGroup.d.ts +17 -0
  200. package/dist/components/RsSidebarGroup.impl.js +22 -0
  201. package/dist/components/RsSidebarGroup.js +8 -0
  202. package/dist/components/RsSidebarItem.css +45 -0
  203. package/dist/components/RsSidebarItem.d.ts +20 -0
  204. package/dist/components/RsSidebarItem.impl.js +41 -0
  205. package/dist/components/RsSidebarItem.js +8 -0
  206. package/dist/components/RsSplitPane.css +183 -0
  207. package/dist/components/RsSplitPane.d.ts +51 -0
  208. package/dist/components/RsSplitPane.impl.js +408 -0
  209. package/dist/components/RsSplitPane.js +7 -0
  210. package/dist/components/RsStatCard.css +51 -0
  211. package/dist/components/RsStatCard.d.ts +26 -0
  212. package/dist/components/RsStatCard.impl.js +41 -0
  213. package/dist/components/RsStatCard.js +8 -0
  214. package/dist/components/RsSteps.css +83 -0
  215. package/dist/components/RsSteps.d.ts +22 -0
  216. package/dist/components/RsSteps.impl.js +55 -0
  217. package/dist/components/RsSteps.js +8 -0
  218. package/dist/components/RsSwitch.css +101 -0
  219. package/dist/components/RsSwitch.d.ts +41 -0
  220. package/dist/components/RsSwitch.impl.js +92 -0
  221. package/dist/components/RsSwitch.js +7 -0
  222. package/dist/components/RsTable.d.ts +139 -0
  223. package/dist/components/RsTable.impl.js +676 -0
  224. package/dist/components/RsTable.js +5 -0
  225. package/dist/components/RsTabs.css +616 -0
  226. package/dist/components/RsTabs.d.ts +92 -0
  227. package/dist/components/RsTabs.impl.js +526 -0
  228. package/dist/components/RsTabs.js +7 -0
  229. package/dist/components/RsTag.css +94 -0
  230. package/dist/components/RsTag.d.ts +33 -0
  231. package/dist/components/RsTag.impl.js +70 -0
  232. package/dist/components/RsTag.js +8 -0
  233. package/dist/components/RsTerminal.css +119 -0
  234. package/dist/components/RsTerminal.d.ts +85 -0
  235. package/dist/components/RsTerminal.impl.js +525 -0
  236. package/dist/components/RsTerminal.js +8 -0
  237. package/dist/components/RsTimePicker-1.css +98 -0
  238. package/dist/components/RsTimePicker.css +106 -0
  239. package/dist/components/RsTimePicker.d.ts +41 -0
  240. package/dist/components/RsTimePicker.impl.js +374 -0
  241. package/dist/components/RsTimePicker.js +10 -0
  242. package/dist/components/RsTimePickerColumns.css +104 -0
  243. package/dist/components/RsTimePickerColumns.d.ts +30 -0
  244. package/dist/components/RsTimePickerColumns.impl.js +172 -0
  245. package/dist/components/RsTimePickerColumns.js +8 -0
  246. package/dist/components/RsToaster.css +329 -0
  247. package/dist/components/RsToaster.d.ts +17 -0
  248. package/dist/components/RsToaster.impl.js +67 -0
  249. package/dist/components/RsToaster.js +7 -0
  250. package/dist/components/RsToolbar.css +61 -0
  251. package/dist/components/RsToolbar.d.ts +43 -0
  252. package/dist/components/RsToolbar.impl.js +57 -0
  253. package/dist/components/RsToolbar.js +7 -0
  254. package/dist/components/RsTooltip.css +59 -0
  255. package/dist/components/RsTooltip.d.ts +47 -0
  256. package/dist/components/RsTooltip.impl.js +88 -0
  257. package/dist/components/RsTooltip.js +7 -0
  258. package/dist/components/RsTooltipProvider.d.ts +26 -0
  259. package/dist/components/RsTooltipProvider.impl.js +32 -0
  260. package/dist/components/RsTooltipProvider.js +5 -0
  261. package/dist/components/RsTree.css +308 -0
  262. package/dist/components/RsTree.d.ts +131 -0
  263. package/dist/components/RsTree.impl.js +762 -0
  264. package/dist/components/RsTree.js +8 -0
  265. package/dist/components/RsUpload.css +191 -0
  266. package/dist/components/RsUpload.d.ts +38 -0
  267. package/dist/components/RsUpload.impl.js +198 -0
  268. package/dist/components/RsUpload.js +8 -0
  269. package/dist/components/RsVNodeHost.d.ts +18 -0
  270. package/dist/components/RsVNodeHost.impl.js +18 -0
  271. package/dist/components/RsVNodeHost.js +5 -0
  272. package/dist/components/RsVirtualList.css +29 -0
  273. package/dist/components/RsVirtualList.d.ts +37 -0
  274. package/dist/components/RsVirtualList.impl.js +138 -0
  275. package/dist/components/RsVirtualList.js +8 -0
  276. package/dist/components/avatar-utils.d.ts +11 -0
  277. package/dist/components/avatar-utils.js +13 -0
  278. package/dist/components/breadcrumb-utils.d.ts +12 -0
  279. package/dist/components/breadcrumb-utils.js +12 -0
  280. package/dist/components/button-utils.d.ts +17 -0
  281. package/dist/components/button-utils.js +13 -0
  282. package/dist/components/class-utils.d.ts +2 -0
  283. package/dist/components/code-editor-utils.d.ts +33 -0
  284. package/dist/components/code-editor-utils.js +64 -0
  285. package/dist/components/code-mirror-completion.d.ts +5 -0
  286. package/dist/components/code-mirror-completion.js +37 -0
  287. package/dist/components/code-mirror-diagnostics.d.ts +6 -0
  288. package/dist/components/code-mirror-diagnostics.js +35 -0
  289. package/dist/components/code-mirror-ghost.d.ts +8 -0
  290. package/dist/components/code-mirror-ghost.js +133 -0
  291. package/dist/components/code-mirror-inline-edit.d.ts +11 -0
  292. package/dist/components/code-mirror-inline-edit.js +51 -0
  293. package/dist/components/code-mirror-intel.d.ts +22 -0
  294. package/dist/components/code-mirror-intel.js +62 -0
  295. package/dist/components/code-mirror-lang.d.ts +10 -0
  296. package/dist/components/code-mirror-lang.js +113 -0
  297. package/dist/components/context-menu-utils.d.ts +21 -0
  298. package/dist/components/context-menu-utils.js +8 -0
  299. package/dist/components/date-picker-utils.d.ts +115 -0
  300. package/dist/components/date-picker-utils.js +270 -0
  301. package/dist/components/date-range-validation.d.ts +15 -0
  302. package/dist/components/date-range-validation.js +16 -0
  303. package/dist/components/date-validation.d.ts +15 -0
  304. package/dist/components/date-validation.js +46 -0
  305. package/dist/components/descriptions-utils.d.ts +18 -0
  306. package/dist/components/descriptions-utils.js +4 -0
  307. package/dist/components/dialog-utils.d.ts +95 -0
  308. package/dist/components/dialog-utils.js +58 -0
  309. package/dist/components/dialog-viewport.d.ts +14 -0
  310. package/dist/components/dialog-viewport.js +38 -0
  311. package/dist/components/dialog-window.d.ts +45 -0
  312. package/dist/components/dialog-window.js +275 -0
  313. package/dist/components/drawer-utils.d.ts +37 -0
  314. package/dist/components/drawer-utils.js +59 -0
  315. package/dist/components/dropdown-utils.d.ts +13 -0
  316. package/dist/components/dropdown-utils.js +12 -0
  317. package/dist/components/form-item-control.d.ts +7 -0
  318. package/dist/components/form-item-control.js +46 -0
  319. package/dist/components/form-path.d.ts +29 -0
  320. package/dist/components/form-path.js +78 -0
  321. package/dist/components/form-rules.d.ts +82 -0
  322. package/dist/components/form-rules.js +130 -0
  323. package/dist/components/form-utils.d.ts +120 -0
  324. package/dist/components/form-utils.js +67 -0
  325. package/dist/components/input-number-utils.d.ts +36 -0
  326. package/dist/components/input-number-utils.js +74 -0
  327. package/dist/components/input-rules.d.ts +15 -0
  328. package/dist/components/input-rules.js +59 -0
  329. package/dist/components/loading-utils.d.ts +6 -0
  330. package/dist/components/markdown-utils.d.ts +16 -0
  331. package/dist/components/markdown-utils.js +143 -0
  332. package/dist/components/menu-utils.d.ts +16 -0
  333. package/dist/components/menu-utils.js +29 -0
  334. package/dist/components/overlay-utils.d.ts +23 -0
  335. package/dist/components/overlay-utils.js +17 -0
  336. package/dist/components/pagination-utils.d.ts +9 -0
  337. package/dist/components/pagination-utils.js +53 -0
  338. package/dist/components/popover-utils.d.ts +6 -0
  339. package/dist/components/radio-utils.d.ts +9 -0
  340. package/dist/components/radio-utils.js +4 -0
  341. package/dist/components/reka.d.ts +2 -0
  342. package/dist/components/reka.js +2 -0
  343. package/dist/components/resolve-radius.d.ts +9 -0
  344. package/dist/components/resolve-radius.js +18 -0
  345. package/dist/components/resolve-size.d.ts +10 -0
  346. package/dist/components/resolve-size.js +20 -0
  347. package/dist/components/scrollbar-utils.d.ts +3 -0
  348. package/dist/components/scrollbar-utils.js +7 -0
  349. package/dist/components/select-utils.d.ts +83 -0
  350. package/dist/components/select-utils.js +211 -0
  351. package/dist/components/split-pane-utils.d.ts +74 -0
  352. package/dist/components/split-pane-utils.js +135 -0
  353. package/dist/components/steps-utils.d.ts +12 -0
  354. package/dist/components/steps-utils.js +12 -0
  355. package/dist/components/table/RsTableBody.d.ts +47 -0
  356. package/dist/components/table/RsTableBody.impl.js +312 -0
  357. package/dist/components/table/RsTableBody.js +5 -0
  358. package/dist/components/table/RsTableBodyRow.d.ts +149 -0
  359. package/dist/components/table/RsTableBodyRow.impl.js +438 -0
  360. package/dist/components/table/RsTableBodyRow.js +5 -0
  361. package/dist/components/table/RsTableCell.d.ts +59 -0
  362. package/dist/components/table/RsTableCell.impl.js +213 -0
  363. package/dist/components/table/RsTableCell.js +5 -0
  364. package/dist/components/table/RsTableCellContent.d.ts +19 -0
  365. package/dist/components/table/RsTableCellContent.js +25 -0
  366. package/dist/components/table/RsTableCellEditor.d.ts +46 -0
  367. package/dist/components/table/RsTableCellEditor.impl.js +341 -0
  368. package/dist/components/table/RsTableCellEditor.js +5 -0
  369. package/dist/components/table/RsTableColGroup.d.ts +18 -0
  370. package/dist/components/table/RsTableColGroup.impl.js +58 -0
  371. package/dist/components/table/RsTableColGroup.js +5 -0
  372. package/dist/components/table/RsTableEditGutter.d.ts +17 -0
  373. package/dist/components/table/RsTableEditGutter.impl.js +52 -0
  374. package/dist/components/table/RsTableEditGutter.js +5 -0
  375. package/dist/components/table/RsTableHeader.d.ts +22 -0
  376. package/dist/components/table/RsTableHeader.impl.js +184 -0
  377. package/dist/components/table/RsTableHeader.js +5 -0
  378. package/dist/components/table/RsTableHeaderFilter.css +24 -0
  379. package/dist/components/table/RsTableHeaderFilter.d.ts +19 -0
  380. package/dist/components/table/RsTableHeaderFilter.impl.js +102 -0
  381. package/dist/components/table/RsTableHeaderFilter.js +8 -0
  382. package/dist/components/table/RsTableRowStatus.css +30 -0
  383. package/dist/components/table/RsTableRowStatus.d.ts +14 -0
  384. package/dist/components/table/RsTableRowStatus.impl.js +44 -0
  385. package/dist/components/table/RsTableRowStatus.js +8 -0
  386. package/dist/components/table/RsTableSummaryRow.d.ts +37 -0
  387. package/dist/components/table/RsTableSummaryRow.impl.js +57 -0
  388. package/dist/components/table/RsTableSummaryRow.js +5 -0
  389. package/dist/components/table/rs-table-api.d.ts +65 -0
  390. package/dist/components/table/rs-table-api.js +22 -0
  391. package/dist/components/table/rs-table-compat-matrix.d.ts +24 -0
  392. package/dist/components/table/rs-table-compat-matrix.js +64 -0
  393. package/dist/components/table/rs-table-echarts-adapter.d.ts +47 -0
  394. package/dist/components/table/rs-table-echarts-adapter.js +49 -0
  395. package/dist/components/table/rs-table-feature-host.d.ts +61 -0
  396. package/dist/components/table/rs-table-feature-host.js +97 -0
  397. package/dist/components/table/rs-table-grid-nav.d.ts +22 -0
  398. package/dist/components/table/rs-table-grid-nav.js +80 -0
  399. package/dist/components/table/rs-table-header-types.d.ts +45 -0
  400. package/dist/components/table/rs-table-module-registry.d.ts +37 -0
  401. package/dist/components/table/rs-table-module-registry.js +51 -0
  402. package/dist/components/table/rs-table-props.d.ts +315 -0
  403. package/dist/components/table/rs-table-props.js +64 -0
  404. package/dist/components/table/rs-table-view-context.d.ts +218 -0
  405. package/dist/components/table/rs-table-view-context.js +47 -0
  406. package/dist/components/table/table-chart-utils.d.ts +62 -0
  407. package/dist/components/table/table-chart-utils.js +91 -0
  408. package/dist/components/table/table-context-menu.d.ts +13 -0
  409. package/dist/components/table/table-context-menu.js +30 -0
  410. package/dist/components/table/table-edit-utils.d.ts +94 -0
  411. package/dist/components/table/table-edit-utils.js +282 -0
  412. package/dist/components/table/table-features.d.ts +149 -0
  413. package/dist/components/table/table-features.js +119 -0
  414. package/dist/components/table/table-keys.d.ts +5 -0
  415. package/dist/components/table/table-keys.js +6 -0
  416. package/dist/components/table/table-summary-utils.d.ts +90 -0
  417. package/dist/components/table/table-summary-utils.js +97 -0
  418. package/dist/components/table-drag.d.ts +39 -0
  419. package/dist/components/table-drag.js +130 -0
  420. package/dist/components/table-utils.d.ts +440 -0
  421. package/dist/components/table-utils.js +722 -0
  422. package/dist/components/tabs-utils.d.ts +71 -0
  423. package/dist/components/tabs-utils.js +147 -0
  424. package/dist/components/terminal-utils.d.ts +59 -0
  425. package/dist/components/terminal-utils.js +210 -0
  426. package/dist/components/terminal-wheel.d.ts +24 -0
  427. package/dist/components/terminal-wheel.js +42 -0
  428. package/dist/components/time-picker-utils.d.ts +51 -0
  429. package/dist/components/time-picker-utils.js +158 -0
  430. package/dist/components/time-range-validation.d.ts +11 -0
  431. package/dist/components/time-range-validation.js +15 -0
  432. package/dist/components/time-validation.d.ts +11 -0
  433. package/dist/components/time-validation.js +22 -0
  434. package/dist/components/tree-utils.d.ts +112 -0
  435. package/dist/components/tree-utils.js +310 -0
  436. package/dist/components/upload-utils.d.ts +26 -0
  437. package/dist/components/upload-utils.js +177 -0
  438. package/dist/components/use-rs-select.d.ts +78 -0
  439. package/dist/components/use-rs-select.js +266 -0
  440. package/dist/components/virtual-list-utils.d.ts +7 -0
  441. package/dist/components/virtual-list-utils.js +28 -0
  442. package/dist/composables/assembleRsTableApi.d.ts +34 -0
  443. package/dist/composables/assembleRsTableApi.js +26 -0
  444. package/dist/composables/bindRsTableViewContext.d.ts +73 -0
  445. package/dist/composables/bindRsTableViewContext.js +104 -0
  446. package/dist/composables/createRsDialog.d.ts +77 -0
  447. package/dist/composables/createRsDialog.js +263 -0
  448. package/dist/composables/createRsTableEditEmitBridge.d.ts +16 -0
  449. package/dist/composables/createRsTableEditEmitBridge.js +25 -0
  450. package/dist/composables/useClickOutside.d.ts +2 -0
  451. package/dist/composables/useRsConfig.d.ts +26 -0
  452. package/dist/composables/useRsConfig.js +55 -0
  453. package/dist/composables/useRsI18n.d.ts +9 -0
  454. package/dist/composables/useRsI18n.js +25 -0
  455. package/dist/composables/useRsLoadingBar.d.ts +13 -0
  456. package/dist/composables/useRsLoadingBar.js +30 -0
  457. package/dist/composables/useRsTable.d.ts +61 -0
  458. package/dist/composables/useRsTable.js +57 -0
  459. package/dist/composables/useRsTableA11y.d.ts +35 -0
  460. package/dist/composables/useRsTableA11y.js +34 -0
  461. package/dist/composables/useRsTableChartBridge.d.ts +37 -0
  462. package/dist/composables/useRsTableChartBridge.js +47 -0
  463. package/dist/composables/useRsTableColumnLayout.d.ts +75 -0
  464. package/dist/composables/useRsTableColumnLayout.js +250 -0
  465. package/dist/composables/useRsTableColumnResize.d.ts +35 -0
  466. package/dist/composables/useRsTableColumnResize.js +182 -0
  467. package/dist/composables/useRsTableColumnVirtual.d.ts +76 -0
  468. package/dist/composables/useRsTableColumnVirtual.js +116 -0
  469. package/dist/composables/useRsTableColumns.d.ts +70 -0
  470. package/dist/composables/useRsTableColumns.js +132 -0
  471. package/dist/composables/useRsTableContextMenu.d.ts +83 -0
  472. package/dist/composables/useRsTableContextMenu.js +152 -0
  473. package/dist/composables/useRsTableCore.d.ts +177 -0
  474. package/dist/composables/useRsTableCore.js +164 -0
  475. package/dist/composables/useRsTableEditActions.d.ts +129 -0
  476. package/dist/composables/useRsTableEditActions.js +376 -0
  477. package/dist/composables/useRsTableEditLayer.d.ts +228 -0
  478. package/dist/composables/useRsTableEditLayer.js +146 -0
  479. package/dist/composables/useRsTableEngine.d.ts +115 -0
  480. package/dist/composables/useRsTableEngine.js +225 -0
  481. package/dist/composables/useRsTableGridKeyboard.d.ts +38 -0
  482. package/dist/composables/useRsTableGridKeyboard.js +70 -0
  483. package/dist/composables/useRsTableHeadless.d.ts +138 -0
  484. package/dist/composables/useRsTableHeadless.js +105 -0
  485. package/dist/composables/useRsTableInteraction.d.ts +145 -0
  486. package/dist/composables/useRsTableInteraction.js +249 -0
  487. package/dist/composables/useRsTableScrollHost.d.ts +25 -0
  488. package/dist/composables/useRsTableScrollHost.js +42 -0
  489. package/dist/composables/useRsTableScrollLayout.d.ts +42 -0
  490. package/dist/composables/useRsTableScrollLayout.js +195 -0
  491. package/dist/composables/useRsTableSelectionSource.d.ts +38 -0
  492. package/dist/composables/useRsTableSelectionSource.js +57 -0
  493. package/dist/composables/useRsTableShell.d.ts +380 -0
  494. package/dist/composables/useRsTableShell.js +237 -0
  495. package/dist/composables/useRsTableShellChrome.d.ts +126 -0
  496. package/dist/composables/useRsTableShellChrome.js +110 -0
  497. package/dist/composables/useRsTableSummary.d.ts +44 -0
  498. package/dist/composables/useRsTableSummary.js +52 -0
  499. package/dist/composables/useRsTableViewProvide.d.ts +111 -0
  500. package/dist/composables/useRsTableViewProvide.js +93 -0
  501. package/dist/composables/useRsTableVirtual.d.ts +75 -0
  502. package/dist/composables/useRsTableVirtual.js +83 -0
  503. package/dist/composables/useRsTabsNav.d.ts +33 -0
  504. package/dist/composables/useRsTabsNav.js +137 -0
  505. package/dist/composables/useRsToast.d.ts +15 -0
  506. package/dist/composables/useRsToast.js +30 -0
  507. package/dist/composables/useTableCellTooltip.d.ts +28 -0
  508. package/dist/composables/useTableCellTooltip.js +177 -0
  509. package/dist/composables/useTableEdit.d.ts +63 -0
  510. package/dist/composables/useTableEdit.js +176 -0
  511. package/dist/composables/useTableRowHighlight.d.ts +14 -0
  512. package/dist/composables/useTableRowHighlight.js +35 -0
  513. package/dist/dev/vite-codemirror-deps.d.ts +20 -0
  514. package/dist/dev/vite-codemirror-deps.js +16 -0
  515. package/dist/dev/vite-xterm-deps.d.ts +8 -0
  516. package/dist/dev/vite-xterm-deps.js +3 -0
  517. package/dist/icons/custom/api.d.ts +37 -0
  518. package/dist/icons/custom/api.js +56 -0
  519. package/dist/icons/custom/clickhouse.d.ts +37 -0
  520. package/dist/icons/custom/clickhouse.js +61 -0
  521. package/dist/icons/custom/dameng.d.ts +37 -0
  522. package/dist/icons/custom/dameng.js +81 -0
  523. package/dist/icons/custom/ftp.d.ts +37 -0
  524. package/dist/icons/custom/ftp.js +62 -0
  525. package/dist/icons/custom/kingbase.d.ts +37 -0
  526. package/dist/icons/custom/kingbase.js +61 -0
  527. package/dist/icons/custom/mongodb.d.ts +37 -0
  528. package/dist/icons/custom/mongodb.js +59 -0
  529. package/dist/icons/custom/mysql.d.ts +37 -0
  530. package/dist/icons/custom/mysql.js +60 -0
  531. package/dist/icons/custom/oracle.d.ts +37 -0
  532. package/dist/icons/custom/oracle.js +61 -0
  533. package/dist/icons/custom/postgres.d.ts +37 -0
  534. package/dist/icons/custom/postgres.js +61 -0
  535. package/dist/icons/custom/redis.d.ts +38 -0
  536. package/dist/icons/custom/redis.js +60 -0
  537. package/dist/icons/custom/sqlite.d.ts +37 -0
  538. package/dist/icons/custom/sqlite.js +59 -0
  539. package/dist/icons/custom/sqlserver.d.ts +37 -0
  540. package/dist/icons/custom/sqlserver.js +61 -0
  541. package/dist/icons/custom/vastbase.d.ts +37 -0
  542. package/dist/icons/custom/vastbase.js +67 -0
  543. package/dist/icons/lucide.d.ts +7 -0
  544. package/dist/icons/lucide.js +74 -0
  545. package/dist/icons/registry.d.ts +3 -0
  546. package/dist/icons/registry.js +31 -0
  547. package/dist/index.d.ts +209 -0
  548. package/dist/index.js +156 -0
  549. package/dist/lib/iso-local-datetime.d.ts +17 -0
  550. package/dist/lib/iso-local-datetime.js +103 -0
  551. package/dist/lib/rs-dayjs.d.ts +15 -0
  552. package/dist/lib/rs-dayjs.js +41 -0
  553. package/dist/locale/interpolate.d.ts +14 -0
  554. package/dist/locale/interpolate.js +24 -0
  555. package/dist/locale/messages.d.ts +7 -0
  556. package/dist/locale/messages.js +407 -0
  557. package/dist/locale/types.d.ts +3 -0
  558. package/dist/locale/types.js +4 -0
  559. package/dist/monaco/debug-decorations.d.ts +21 -0
  560. package/dist/monaco/debug-decorations2.js +44 -0
  561. package/dist/monaco/index.d.ts +5 -0
  562. package/dist/monaco/languages/index.d.ts +3 -0
  563. package/dist/monaco/languages/mongodb-shell.d.ts +7 -0
  564. package/dist/monaco/languages/mongodb-shell.js +222 -0
  565. package/dist/monaco/languages/types.d.ts +30 -0
  566. package/dist/monaco/languages/types.js +25 -0
  567. package/dist/monaco/setup.d.ts +9 -0
  568. package/dist/monaco/setup.js +53 -0
  569. package/dist/styles.css +2006 -0
  570. package/dist/theme/apply.d.ts +6 -0
  571. package/dist/theme/apply.js +10 -0
  572. package/dist/theme/css-token.d.ts +27 -0
  573. package/dist/theme/css-token.js +72 -0
  574. package/dist/theme/presets.d.ts +7 -0
  575. package/dist/theme/presets.js +74 -0
  576. package/dist/theme/types.d.ts +97 -0
  577. package/dist/theme/types.js +65 -0
  578. package/dist/utils/rs-clipboard.d.ts +17 -0
  579. package/dist/utils/rs-clipboard.js +187 -0
  580. package/dist/vite-plugins/monaco-zh-nls.d.ts +7 -0
  581. package/dist/vite-plugins/monaco-zh-nls.js +84 -0
  582. package/dist/vite-plugins/niuma-ui-host.d.ts +22 -0
  583. package/dist/vite-plugins/niuma-ui-host.js +254 -0
  584. package/dist/vite-plugins/rewrite-named-imports.d.ts +5 -0
  585. package/dist/vite-plugins/rewrite-named-imports.js +5 -0
  586. package/dist/vite-plugins/silence-antlr-parse-console.d.ts +19 -0
  587. package/dist/vite-plugins/silence-antlr-parse-console.js +35 -0
  588. package/package.json +58 -16
  589. package/src/__tests__/RsBadge.spec.ts +0 -40
  590. package/src/__tests__/RsBreadcrumb.spec.ts +0 -172
  591. package/src/__tests__/RsButton.spec.ts +0 -188
  592. package/src/__tests__/RsCalendarGrid.spec.ts +0 -101
  593. package/src/__tests__/RsCard.spec.ts +0 -256
  594. package/src/__tests__/RsCheckbox.spec.ts +0 -36
  595. package/src/__tests__/RsCodeEditor.spec.ts +0 -111
  596. package/src/__tests__/RsConfirmDialog.spec.ts +0 -285
  597. package/src/__tests__/RsContainer.spec.ts +0 -89
  598. package/src/__tests__/RsContextMenu.spec.ts +0 -130
  599. package/src/__tests__/RsDatePicker.spec.ts +0 -109
  600. package/src/__tests__/RsDateTimePicker.spec.ts +0 -80
  601. package/src/__tests__/RsDescriptions.spec.ts +0 -50
  602. package/src/__tests__/RsDialog.spec.ts +0 -595
  603. package/src/__tests__/RsDrawer.spec.ts +0 -292
  604. package/src/__tests__/RsDropdown.spec.ts +0 -135
  605. package/src/__tests__/RsDynamicTags.spec.ts +0 -52
  606. package/src/__tests__/RsEmpty.spec.ts +0 -99
  607. package/src/__tests__/RsForm.spec.ts +0 -417
  608. package/src/__tests__/RsFormItem.spec.ts +0 -478
  609. package/src/__tests__/RsFormList.spec.ts +0 -109
  610. package/src/__tests__/RsIcon.spec.ts +0 -258
  611. package/src/__tests__/RsInput.spec.ts +0 -377
  612. package/src/__tests__/RsInputNumber.spec.ts +0 -151
  613. package/src/__tests__/RsLabel.spec.ts +0 -106
  614. package/src/__tests__/RsLink.spec.ts +0 -49
  615. package/src/__tests__/RsLoading.spec.ts +0 -84
  616. package/src/__tests__/RsMarkdown.spec.ts +0 -180
  617. package/src/__tests__/RsMenu.spec.ts +0 -511
  618. package/src/__tests__/RsNewComponents.spec.ts +0 -17
  619. package/src/__tests__/RsPagination.spec.ts +0 -223
  620. package/src/__tests__/RsPopover.spec.ts +0 -140
  621. package/src/__tests__/RsScrollbar.spec.ts +0 -53
  622. package/src/__tests__/RsSelect.spec.ts +0 -850
  623. package/src/__tests__/RsSidebar.spec.ts +0 -119
  624. package/src/__tests__/RsSplitPane.spec.ts +0 -177
  625. package/src/__tests__/RsStatCard.spec.ts +0 -79
  626. package/src/__tests__/RsSteps.spec.ts +0 -125
  627. package/src/__tests__/RsSwitch.spec.ts +0 -74
  628. package/src/__tests__/RsTable.a11y.spec.ts +0 -83
  629. package/src/__tests__/RsTable.dom-baseline.spec.ts +0 -87
  630. package/src/__tests__/RsTable.perf.spec.ts +0 -122
  631. package/src/__tests__/RsTable.spec.ts +0 -1207
  632. package/src/__tests__/RsTable.ssr.spec.ts +0 -71
  633. package/src/__tests__/RsTable.summary.spec.ts +0 -45
  634. package/src/__tests__/RsTabs.spec.ts +0 -426
  635. package/src/__tests__/RsTerminal.spec.ts +0 -218
  636. package/src/__tests__/RsTimePicker.spec.ts +0 -97
  637. package/src/__tests__/RsToaster.spec.ts +0 -95
  638. package/src/__tests__/RsToolbar.spec.ts +0 -75
  639. package/src/__tests__/RsTooltip.spec.ts +0 -154
  640. package/src/__tests__/RsTree.spec.ts +0 -573
  641. package/src/__tests__/RsUpload.spec.ts +0 -216
  642. package/src/__tests__/RsVirtualList.spec.ts +0 -77
  643. package/src/__tests__/createRsDialog.spec.ts +0 -158
  644. package/src/__tests__/css-token.spec.ts +0 -51
  645. package/src/__tests__/date-picker-utils.spec.ts +0 -119
  646. package/src/__tests__/dialog-utils.spec.ts +0 -43
  647. package/src/__tests__/dialog-viewport.spec.ts +0 -38
  648. package/src/__tests__/form-path.spec.ts +0 -46
  649. package/src/__tests__/form-rules.spec.ts +0 -139
  650. package/src/__tests__/iso-local-datetime.spec.ts +0 -58
  651. package/src/__tests__/perf-budgets.ts +0 -32
  652. package/src/__tests__/rs-clipboard.spec.ts +0 -142
  653. package/src/__tests__/rs-select-model.types.spec.ts +0 -28
  654. package/src/__tests__/rs-table-api.spec.ts +0 -206
  655. package/src/__tests__/rs-table-compat-matrix.spec.ts +0 -108
  656. package/src/__tests__/rs-table-echarts-adapter.spec.ts +0 -43
  657. package/src/__tests__/rs-table-grid-nav.spec.ts +0 -63
  658. package/src/__tests__/rs-table-isolation.spec.ts +0 -158
  659. package/src/__tests__/rs-table-slots.types.spec.ts +0 -20
  660. package/src/__tests__/setup.ts +0 -12
  661. package/src/__tests__/split-pane-utils.spec.ts +0 -157
  662. package/src/__tests__/table-chart-utils.spec.ts +0 -88
  663. package/src/__tests__/table-drag.spec.ts +0 -35
  664. package/src/__tests__/table-edit-utils.spec.ts +0 -194
  665. package/src/__tests__/table-summary-utils.spec.ts +0 -62
  666. package/src/__tests__/table-utils.spec.ts +0 -410
  667. package/src/__tests__/theme.spec.ts +0 -49
  668. package/src/__tests__/tree-utils.spec.ts +0 -234
  669. package/src/__tests__/useRsTableColumnResize.spec.ts +0 -25
  670. package/src/__tests__/useRsTableCore.perf.spec.ts +0 -170
  671. package/src/__tests__/useTableCellTooltip.spec.ts +0 -101
  672. package/src/components/RsAlert.vue +0 -212
  673. package/src/components/RsAvatar.vue +0 -115
  674. package/src/components/RsBadge.vue +0 -59
  675. package/src/components/RsBreadcrumb.vue +0 -65
  676. package/src/components/RsBreadcrumbItems.vue +0 -36
  677. package/src/components/RsButton.vue +0 -596
  678. package/src/components/RsCalendarGrid.vue +0 -318
  679. package/src/components/RsCard.vue +0 -421
  680. package/src/components/RsCheckbox.vue +0 -189
  681. package/src/components/RsCodeBlock.vue +0 -327
  682. package/src/components/RsCodeEditor.vue +0 -597
  683. package/src/components/RsConfigProvider.vue +0 -92
  684. package/src/components/RsConfirmDialog.vue +0 -365
  685. package/src/components/RsContainer.vue +0 -235
  686. package/src/components/RsContextMenu.vue +0 -277
  687. package/src/components/RsContextMenuItems.vue +0 -77
  688. package/src/components/RsDatePicker.vue +0 -1033
  689. package/src/components/RsDateTimePicker.vue +0 -67
  690. package/src/components/RsDescriptions.vue +0 -186
  691. package/src/components/RsDescriptionsItem.vue +0 -32
  692. package/src/components/RsDialog.vue +0 -813
  693. package/src/components/RsDivider.vue +0 -89
  694. package/src/components/RsDrawer.vue +0 -979
  695. package/src/components/RsDropdown.vue +0 -283
  696. package/src/components/RsDropdownItems.vue +0 -90
  697. package/src/components/RsDynamicTags.vue +0 -531
  698. package/src/components/RsEmpty.vue +0 -107
  699. package/src/components/RsForm.vue +0 -287
  700. package/src/components/RsFormItem.vue +0 -423
  701. package/src/components/RsFormItemControl.vue +0 -21
  702. package/src/components/RsFormList.vue +0 -117
  703. package/src/components/RsIcon.vue +0 -104
  704. package/src/components/RsInput.vue +0 -1508
  705. package/src/components/RsInputNumber.vue +0 -582
  706. package/src/components/RsLabel.vue +0 -69
  707. package/src/components/RsLink.vue +0 -106
  708. package/src/components/RsLoading.vue +0 -171
  709. package/src/components/RsLoadingBar.vue +0 -151
  710. package/src/components/RsMarkdown.vue +0 -348
  711. package/src/components/RsMenu.vue +0 -314
  712. package/src/components/RsMenuItems.vue +0 -263
  713. package/src/components/RsMonacoEditor.vue +0 -567
  714. package/src/components/RsPagination.vue +0 -263
  715. package/src/components/RsPopover.vue +0 -79
  716. package/src/components/RsProseEditor.vue +0 -160
  717. package/src/components/RsRadio.vue +0 -81
  718. package/src/components/RsRadioItem.vue +0 -156
  719. package/src/components/RsScrollbar.vue +0 -171
  720. package/src/components/RsSelect.vue +0 -786
  721. package/src/components/RsSidebar.vue +0 -121
  722. package/src/components/RsSidebarGroup.vue +0 -32
  723. package/src/components/RsSidebarItem.vue +0 -72
  724. package/src/components/RsSplitPane.vue +0 -714
  725. package/src/components/RsStatCard.vue +0 -85
  726. package/src/components/RsSteps.vue +0 -138
  727. package/src/components/RsSwitch.vue +0 -192
  728. package/src/components/RsTable.vue +0 -762
  729. package/src/components/RsTabs.vue +0 -1283
  730. package/src/components/RsTag.vue +0 -191
  731. package/src/components/RsTerminal.vue +0 -840
  732. package/src/components/RsTimePicker.vue +0 -617
  733. package/src/components/RsTimePickerColumns.vue +0 -285
  734. package/src/components/RsToaster.vue +0 -436
  735. package/src/components/RsToolbar.vue +0 -135
  736. package/src/components/RsTooltip.vue +0 -151
  737. package/src/components/RsTooltipProvider.vue +0 -30
  738. package/src/components/RsTree.vue +0 -1270
  739. package/src/components/RsUpload.vue +0 -412
  740. package/src/components/RsVNodeHost.vue +0 -20
  741. package/src/components/RsVirtualList.vue +0 -217
  742. package/src/components/avatar-utils.ts +0 -19
  743. package/src/components/breadcrumb-utils.ts +0 -19
  744. package/src/components/button-utils.ts +0 -39
  745. package/src/components/class-utils.ts +0 -29
  746. package/src/components/code-editor-utils.ts +0 -106
  747. package/src/components/code-mirror-completion.ts +0 -40
  748. package/src/components/code-mirror-diagnostics.ts +0 -52
  749. package/src/components/code-mirror-ghost.ts +0 -158
  750. package/src/components/code-mirror-inline-edit.ts +0 -55
  751. package/src/components/code-mirror-intel.ts +0 -81
  752. package/src/components/code-mirror-lang.ts +0 -128
  753. package/src/components/context-menu-utils.ts +0 -26
  754. package/src/components/date-picker-utils.ts +0 -475
  755. package/src/components/date-range-validation.ts +0 -29
  756. package/src/components/date-validation.ts +0 -38
  757. package/src/components/descriptions-utils.ts +0 -24
  758. package/src/components/dialog-utils.ts +0 -183
  759. package/src/components/dialog-viewport.ts +0 -48
  760. package/src/components/dialog-window.ts +0 -318
  761. package/src/components/drawer-utils.ts +0 -109
  762. package/src/components/dropdown-utils.ts +0 -31
  763. package/src/components/form-item-control.ts +0 -55
  764. package/src/components/form-path.ts +0 -92
  765. package/src/components/form-rules.ts +0 -311
  766. package/src/components/form-utils.ts +0 -219
  767. package/src/components/input-number-utils.ts +0 -128
  768. package/src/components/input-rules.ts +0 -84
  769. package/src/components/loading-utils.ts +0 -8
  770. package/src/components/markdown-utils.ts +0 -174
  771. package/src/components/menu-utils.ts +0 -59
  772. package/src/components/overlay-utils.ts +0 -50
  773. package/src/components/pagination-utils.ts +0 -38
  774. package/src/components/popover-utils.ts +0 -8
  775. package/src/components/radio-utils.ts +0 -12
  776. package/src/components/reka.ts +0 -111
  777. package/src/components/resolve-radius.ts +0 -22
  778. package/src/components/resolve-size.ts +0 -29
  779. package/src/components/scrollbar-utils.ts +0 -10
  780. package/src/components/select-utils.ts +0 -372
  781. package/src/components/split-pane-utils.ts +0 -254
  782. package/src/components/steps-utils.ts +0 -22
  783. package/src/components/table/RsTableBody.vue +0 -217
  784. package/src/components/table/RsTableBodyRow.vue +0 -376
  785. package/src/components/table/RsTableCell.vue +0 -239
  786. package/src/components/table/RsTableCellContent.ts +0 -18
  787. package/src/components/table/RsTableCellEditor.vue +0 -352
  788. package/src/components/table/RsTableColGroup.vue +0 -41
  789. package/src/components/table/RsTableEditGutter.vue +0 -54
  790. package/src/components/table/RsTableHeader.vue +0 -158
  791. package/src/components/table/RsTableHeaderFilter.vue +0 -107
  792. package/src/components/table/RsTableRowStatus.vue +0 -69
  793. package/src/components/table/RsTableSummaryRow.vue +0 -52
  794. package/src/components/table/rs-table-api.ts +0 -99
  795. package/src/components/table/rs-table-compat-matrix.ts +0 -71
  796. package/src/components/table/rs-table-echarts-adapter.ts +0 -81
  797. package/src/components/table/rs-table-feature-host.ts +0 -178
  798. package/src/components/table/rs-table-grid-nav.ts +0 -122
  799. package/src/components/table/rs-table-header-types.ts +0 -47
  800. package/src/components/table/rs-table-module-registry.ts +0 -72
  801. package/src/components/table/rs-table-props.ts +0 -340
  802. package/src/components/table/rs-table-view-context.ts +0 -258
  803. package/src/components/table/table-chart-utils.ts +0 -165
  804. package/src/components/table/table-context-menu.ts +0 -53
  805. package/src/components/table/table-edit-utils.ts +0 -496
  806. package/src/components/table/table-features.ts +0 -284
  807. package/src/components/table/table-keys.ts +0 -12
  808. package/src/components/table/table-summary-utils.ts +0 -194
  809. package/src/components/table-drag.ts +0 -215
  810. package/src/components/table-utils.ts +0 -1400
  811. package/src/components/tabs-utils.ts +0 -247
  812. package/src/components/terminal-utils.ts +0 -323
  813. package/src/components/terminal-wheel.ts +0 -74
  814. package/src/components/time-picker-utils.ts +0 -240
  815. package/src/components/time-range-validation.ts +0 -23
  816. package/src/components/time-validation.ts +0 -20
  817. package/src/components/tree-utils.ts +0 -518
  818. package/src/components/upload-utils.ts +0 -177
  819. package/src/components/use-rs-select.ts +0 -451
  820. package/src/components/virtual-list-utils.ts +0 -30
  821. package/src/composables/assembleRsTableApi.ts +0 -79
  822. package/src/composables/bindRsTableViewContext.ts +0 -269
  823. package/src/composables/createRsDialog.ts +0 -408
  824. package/src/composables/createRsTableEditEmitBridge.ts +0 -38
  825. package/src/composables/useClickOutside.ts +0 -22
  826. package/src/composables/useRsConfig.ts +0 -98
  827. package/src/composables/useRsI18n.ts +0 -33
  828. package/src/composables/useRsLoadingBar.ts +0 -36
  829. package/src/composables/useRsTable.ts +0 -134
  830. package/src/composables/useRsTableA11y.ts +0 -52
  831. package/src/composables/useRsTableChartBridge.ts +0 -79
  832. package/src/composables/useRsTableColumnLayout.ts +0 -320
  833. package/src/composables/useRsTableColumnResize.ts +0 -244
  834. package/src/composables/useRsTableColumnVirtual.ts +0 -180
  835. package/src/composables/useRsTableColumns.ts +0 -200
  836. package/src/composables/useRsTableContextMenu.ts +0 -257
  837. package/src/composables/useRsTableCore.ts +0 -258
  838. package/src/composables/useRsTableEditActions.ts +0 -606
  839. package/src/composables/useRsTableEditLayer.ts +0 -251
  840. package/src/composables/useRsTableEngine.ts +0 -357
  841. package/src/composables/useRsTableGridKeyboard.ts +0 -123
  842. package/src/composables/useRsTableHeadless.ts +0 -145
  843. package/src/composables/useRsTableInteraction.ts +0 -433
  844. package/src/composables/useRsTableScrollHost.ts +0 -75
  845. package/src/composables/useRsTableScrollLayout.ts +0 -255
  846. package/src/composables/useRsTableSelectionSource.ts +0 -89
  847. package/src/composables/useRsTableShell.ts +0 -416
  848. package/src/composables/useRsTableShellChrome.ts +0 -170
  849. package/src/composables/useRsTableSummary.ts +0 -113
  850. package/src/composables/useRsTableViewProvide.ts +0 -263
  851. package/src/composables/useRsTableVirtual.ts +0 -154
  852. package/src/composables/useRsTabsNav.ts +0 -191
  853. package/src/composables/useRsToast.ts +0 -48
  854. package/src/composables/useTableCellTooltip.ts +0 -240
  855. package/src/composables/useTableEdit.ts +0 -271
  856. package/src/composables/useTableRowHighlight.ts +0 -50
  857. package/src/dev/vite-codemirror-deps.ts +0 -20
  858. package/src/dev/vite-xterm-deps.ts +0 -8
  859. package/src/icons/custom/api.ts +0 -54
  860. package/src/icons/custom/clickhouse.ts +0 -52
  861. package/src/icons/custom/dameng.ts +0 -83
  862. package/src/icons/custom/ftp.ts +0 -61
  863. package/src/icons/custom/kingbase.ts +0 -52
  864. package/src/icons/custom/mongodb.ts +0 -50
  865. package/src/icons/custom/mysql.ts +0 -51
  866. package/src/icons/custom/oracle.ts +0 -52
  867. package/src/icons/custom/postgres.ts +0 -52
  868. package/src/icons/custom/redis.ts +0 -51
  869. package/src/icons/custom/sqlite.ts +0 -50
  870. package/src/icons/custom/sqlserver.ts +0 -52
  871. package/src/icons/custom/vastbase.ts +0 -57
  872. package/src/icons/lucide.ts +0 -94
  873. package/src/icons/registry.ts +0 -35
  874. package/src/index.ts +0 -813
  875. package/src/lib/iso-local-datetime.ts +0 -152
  876. package/src/lib/rs-dayjs.ts +0 -56
  877. package/src/locale/interpolate.ts +0 -32
  878. package/src/locale/messages.ts +0 -408
  879. package/src/locale/types.ts +0 -5
  880. package/src/monaco/debug-decorations.ts +0 -70
  881. package/src/monaco/index.ts +0 -23
  882. package/src/monaco/languages/index.ts +0 -22
  883. package/src/monaco/languages/mongodb-shell.ts +0 -125
  884. package/src/monaco/languages/types.ts +0 -59
  885. package/src/monaco/setup.ts +0 -101
  886. package/src/styles.css +0 -1364
  887. package/src/theme/apply.ts +0 -12
  888. package/src/theme/css-token.ts +0 -107
  889. package/src/theme/presets.ts +0 -73
  890. package/src/theme/types.ts +0 -149
  891. package/src/utils/rs-clipboard.ts +0 -272
  892. package/src/vite-env.d.ts +0 -7
  893. package/vite-plugins/monaco-zh-nls.ts +0 -101
  894. package/vite-plugins/silence-antlr-parse-console.ts +0 -29
  895. /package/{src → dist}/components/table/rs-table.css +0 -0
  896. /package/{src → dist}/monaco/debug-decorations.css +0 -0
  897. /package/{src → dist}/theme/brand.example.css +0 -0
@@ -1,1207 +0,0 @@
1
- import { flushPromises, mount } from '@vue/test-utils'
2
- import { describe, expect, it, vi } from 'vitest'
3
- import { h } from 'vue'
4
- import RsTable from '../components/RsTable.vue'
5
-
6
- vi.mock('../utils/rs-clipboard', () => ({
7
- copyTextToClipboard: vi.fn().mockResolvedValue(true),
8
- }))
9
-
10
- import { copyTextToClipboard } from '../utils/rs-clipboard'
11
-
12
- describe('RsTable', () => {
13
- const columns = [
14
- { key: 'name', title: '名称', sortable: true, width: 120 },
15
- { key: 'count', title: '数量', align: 'right' as const, sortable: true, width: 80 },
16
- ]
17
-
18
- const data = [
19
- { id: '1', name: 'B', count: 20, status: 'running' },
20
- { id: '2', name: 'A', count: 10, status: 'stopped' },
21
- { id: '3', name: 'C', count: 5, status: 'running' },
22
- ]
23
-
24
- it('renders column headers and cell values', () => {
25
- const wrapper = mount(RsTable, {
26
- props: { columns, data },
27
- })
28
- expect(wrapper.text()).toContain('名称')
29
- expect(wrapper.text()).toContain('数量')
30
- expect(wrapper.text()).toContain('B')
31
- expect(wrapper.text()).toContain('20')
32
- })
33
-
34
- it('sorts rows ascending then descending on sort icon click', async () => {
35
- const wrapper = mount(RsTable, {
36
- props: { columns, data },
37
- })
38
- const nameSort = wrapper.findAll('.rs-table__sort')[0]!
39
- await nameSort.trigger('click')
40
- expect(wrapper.findAll('.rs-table__row td')[0].text()).toBe('A')
41
- await nameSort.trigger('click')
42
- expect(wrapper.findAll('.rs-table__row td')[0].text()).toBe('C')
43
- })
44
-
45
- it('clears sort on third sort icon click', async () => {
46
- const wrapper = mount(RsTable, {
47
- props: { columns, data },
48
- })
49
- const nameSort = wrapper.findAll('.rs-table__sort')[0]!
50
- await nameSort.trigger('click')
51
- await nameSort.trigger('click')
52
- await nameSort.trigger('click')
53
- expect(wrapper.find('.rs-table__sort--active').exists()).toBe(false)
54
- expect(wrapper.findAll('.rs-table__row td')[0].text()).toBe('B')
55
- })
56
-
57
- it('supports controlled sort via v-model:sort', async () => {
58
- const wrapper = mount(RsTable, {
59
- props: {
60
- columns,
61
- data,
62
- sort: { key: 'count', order: 'asc' as const },
63
- 'onUpdate:sort': (value: { key: string; order: 'asc' | 'desc' } | null) => wrapper.setProps({ sort: value }),
64
- },
65
- })
66
- expect(wrapper.findAll('.rs-table__row td')[1].text()).toBe('5')
67
- await wrapper.findAll('.rs-table__sort')[1]!.trigger('click')
68
- expect(wrapper.emitted('update:sort')?.[0]?.[0]).toEqual({ key: 'count', order: 'desc' })
69
- })
70
-
71
- it('filters rows with filterText', () => {
72
- const wrapper = mount(RsTable, {
73
- props: { columns, data, filterText: 'a' },
74
- })
75
- expect(wrapper.findAll('.rs-table__row')).toHaveLength(1)
76
- expect(wrapper.text()).toContain('A')
77
- })
78
-
79
- it('renders group headers when groupBy is set', () => {
80
- const wrapper = mount(RsTable, {
81
- props: {
82
- columns: [...columns, { key: 'status', title: '状态' }],
83
- data,
84
- groupBy: 'status',
85
- groupLabel: (key: string) => `分组 ${key}`,
86
- },
87
- })
88
- expect(wrapper.findAll('.rs-table__group-row')).toHaveLength(2)
89
- expect(wrapper.text()).toContain('分组 running')
90
- expect(wrapper.text()).toContain('分组 stopped')
91
- })
92
-
93
- it('virtual mode renders a subset of rows', () => {
94
- const largeData = Array.from({ length: 200 }, (_, index) => ({
95
- id: String(index),
96
- name: `Row ${index}`,
97
- count: index,
98
- status: 'running',
99
- }))
100
- const wrapper = mount(RsTable, {
101
- props: {
102
- columns,
103
- data: largeData,
104
- virtual: true,
105
- height: 200,
106
- rowHeight: 40,
107
- },
108
- })
109
- expect(wrapper.findAll('.rs-table__row').length).toBeLessThan(largeData.length)
110
- expect(wrapper.find('.rs-table__virtual-pad').exists()).toBe(true)
111
- })
112
-
113
- it('emits loadMore when scrolled near bottom in infinite mode', async () => {
114
- const wrapper = mount(RsTable, {
115
- props: {
116
- columns,
117
- data,
118
- infinite: true,
119
- hasMore: true,
120
- height: 120,
121
- },
122
- })
123
- const container = wrapper.find('.rs-table').element as HTMLElement
124
- Object.defineProperty(container, 'scrollHeight', { value: 400, configurable: true })
125
- Object.defineProperty(container, 'clientHeight', { value: 120, configurable: true })
126
- container.scrollTop = 300
127
- await wrapper.find('.rs-table').trigger('scroll')
128
- expect(wrapper.emitted('loadMore')).toHaveLength(1)
129
- })
130
-
131
- it('auto enables virtual scroll in infinite mode for large datasets', () => {
132
- const largeData = Array.from({ length: 500 }, (_, index) => ({
133
- id: String(index),
134
- name: `Row ${index}`,
135
- count: index,
136
- status: 'running',
137
- }))
138
- const wrapper = mount(RsTable, {
139
- props: {
140
- columns,
141
- data: largeData,
142
- infinite: true,
143
- hasMore: false,
144
- height: 200,
145
- rowHeight: 40,
146
- },
147
- })
148
- expect(wrapper.find('.rs-table').classes()).toContain('rs-table--virtual')
149
- expect(wrapper.findAll('.rs-table__row').length).toBeLessThan(30)
150
- expect(wrapper.find('.rs-table__virtual-pad').exists()).toBe(true)
151
- })
152
-
153
- it('shows loading placeholder', () => {
154
- const wrapper = mount(RsTable, {
155
- props: { columns, data, loading: true },
156
- })
157
- expect(wrapper.find('.rs-table__empty').text()).toBe('加载中…')
158
- expect(wrapper.findAll('.rs-table__row')).toHaveLength(0)
159
- })
160
-
161
- it('shows default empty state', () => {
162
- const wrapper = mount(RsTable, {
163
- props: { columns, data: [] },
164
- })
165
- expect(wrapper.find('.rs-table__empty').text()).toBe('暂无数据')
166
- expect(wrapper.find('.rs-table__empty-content').exists()).toBe(true)
167
- })
168
-
169
- it('renders custom empty slot', () => {
170
- const wrapper = mount(RsTable, {
171
- props: { columns, data: [] },
172
- slots: { empty: '暂无数据' },
173
- })
174
- expect(wrapper.find('.rs-table__empty').text()).toBe('暂无数据')
175
- })
176
-
177
- it('wraps empty and loading placeholders in sticky viewport content', () => {
178
- const empty = mount(RsTable, {
179
- props: { columns, data: [] },
180
- })
181
- expect(empty.find('.rs-table__empty-content').exists()).toBe(true)
182
- empty.unmount()
183
-
184
- const loading = mount(RsTable, {
185
- props: { columns, data, loading: true },
186
- })
187
- expect(loading.find('.rs-table__empty-content').text()).toBe('加载中…')
188
- loading.unmount()
189
- })
190
-
191
- it('applies compact and bordered modifiers', () => {
192
- const wrapper = mount(RsTable, {
193
- props: { columns, data, compact: true, bordered: false },
194
- })
195
- const root = wrapper.find('.rs-table')
196
- expect(root.classes()).toContain('rs-table--compact')
197
- expect(root.classes()).not.toContain('rs-table--rounded')
198
- expect(root.classes()).not.toContain('rs-table--bordered')
199
- })
200
-
201
- it('can enable outer rounded corners', () => {
202
- const wrapper = mount(RsTable, {
203
- props: { columns, data, rounded: true },
204
- })
205
- expect(wrapper.find('.rs-table').classes()).toContain('rs-table--rounded')
206
- })
207
-
208
- it('applies configurable index column width', () => {
209
- const wrapper = mount(RsTable, {
210
- props: { columns, data, showIndex: true, indexWidth: 40 },
211
- })
212
- expect(wrapper.find('.rs-table').attributes('style')).toContain('--rs-table-index-width: 40px')
213
- })
214
-
215
- it('applies configurable edit gutter width', () => {
216
- const wrapper = mount(RsTable, {
217
- props: {
218
- columns,
219
- data,
220
- editable: true,
221
- editGutter: true,
222
- editGutterWidth: 40,
223
- rowKey: 'id',
224
- },
225
- })
226
- expect(wrapper.find('.rs-table').attributes('style')).toContain('--rs-table-gutter-width: 40px')
227
- })
228
-
229
- it('uses column render function', () => {
230
- const wrapper = mount(RsTable, {
231
- props: {
232
- columns: [{ key: 'name', title: '名称', render: (row) => `·${(row as { name: string }).name}·` }],
233
- data: [{ id: '1', name: '任务' }],
234
- },
235
- })
236
- expect(wrapper.find('td').text()).toBe('·任务·')
237
- })
238
-
239
- it('renders column render VNode without stringifying', () => {
240
- const wrapper = mount(RsTable, {
241
- props: {
242
- columns: [
243
- {
244
- key: 'time',
245
- title: 'Time',
246
- render: (row) =>
247
- h('span', { class: 'time-cell', title: 'long' }, String((row as { time: number }).time)),
248
- },
249
- ],
250
- data: [{ id: '1', time: 42 }],
251
- },
252
- })
253
- const cell = wrapper.find('.time-cell')
254
- expect(cell.exists()).toBe(true)
255
- expect(cell.text()).toBe('42')
256
- expect(cell.attributes('title')).toBe('long')
257
- expect(wrapper.find('td').text()).not.toContain('[object Object]')
258
- })
259
-
260
- it('renders cell slot by column key', () => {
261
- const wrapper = mount(RsTable, {
262
- props: {
263
- columns: [{ key: 'name', title: '名称' }],
264
- data: [{ id: '1', name: '任务' }],
265
- },
266
- slots: { name: '<span class="custom-cell">自定义</span>' },
267
- })
268
- expect(wrapper.find('.custom-cell').text()).toBe('自定义')
269
- })
270
-
271
- it('emits rowClick with row and index', async () => {
272
- const wrapper = mount(RsTable, {
273
- props: { columns, data },
274
- })
275
- await wrapper.find('.rs-table__row').trigger('click')
276
- expect(wrapper.emitted('rowClick')?.[0]).toEqual([data[0], 0])
277
- })
278
-
279
- it('updates column width when resize handle is dragged', async () => {
280
- const offsetWidth = vi
281
- .spyOn(HTMLElement.prototype, 'offsetWidth', 'get')
282
- .mockImplementation(function (this: HTMLElement) {
283
- const key = this.getAttribute('data-col-key')
284
- if (key === 'name') return 120
285
- if (key === 'count') return 80
286
- return 0
287
- })
288
-
289
- try {
290
- const wrapper = mount(RsTable, {
291
- props: { columns, data, resizable: true },
292
- })
293
- const handle = wrapper.find('.rs-table__resize-handle')
294
- await handle.trigger('mousedown', { clientX: 100 })
295
- document.dispatchEvent(new MouseEvent('mousemove', { clientX: 140, bubbles: true }))
296
- document.dispatchEvent(new MouseEvent('mouseup', { clientX: 140, bubbles: true }))
297
- expect(wrapper.emitted('columnResize')?.[0]).toEqual(['name', 160])
298
- } finally {
299
- offsetWidth.mockRestore()
300
- }
301
- })
302
-
303
- it('supports row selection with select all', async () => {
304
- const wrapper = mount(RsTable, {
305
- props: {
306
- columns,
307
- data,
308
- selectable: true,
309
- rowKey: 'id',
310
- selectedRowKeys: [] as string[],
311
- 'onUpdate:selectedRowKeys': (keys: string[]) => wrapper.setProps({ selectedRowKeys: keys }),
312
- },
313
- })
314
- const rowChecks = wrapper.findAll('.rs-table__row .rs-table__checkbox-input')
315
- await rowChecks[0]!.setValue(true)
316
- expect(wrapper.props('selectedRowKeys')).toEqual(['1'])
317
- await wrapper.find('.rs-table__head .rs-table__checkbox-input').setValue(true)
318
- expect(wrapper.props('selectedRowKeys')).toEqual(['1', '2', '3'])
319
- })
320
-
321
- it('renders index column and striped rows', () => {
322
- const wrapper = mount(RsTable, {
323
- props: { columns, data, showIndex: true, striped: true, selectable: true, rowKey: 'id' },
324
- })
325
- expect(wrapper.find('.rs-table__td--index').text()).toBe('1')
326
- expect(wrapper.find('.rs-table__row--striped').exists()).toBe(true)
327
- const stripedRow = wrapper.find('.rs-table__row--striped')
328
- const selectionCell = stripedRow.find('.rs-table__td--selection')
329
- expect(selectionCell.exists()).toBe(true)
330
- expect(getComputedStyle(selectionCell.element).backgroundColor).toBe(
331
- getComputedStyle(stripedRow.element).backgroundColor,
332
- )
333
- })
334
-
335
- it('shows sort icons on sortable columns and highlights active sort', async () => {
336
- const wrapper = mount(RsTable, {
337
- props: { columns, data },
338
- })
339
- const sortIcons = wrapper.findAll('.rs-table__sort')
340
- expect(sortIcons.length).toBe(2)
341
- expect(wrapper.find('.rs-table__sort--active').exists()).toBe(false)
342
- await sortIcons[0]!.trigger('click')
343
- expect(wrapper.find('.rs-table__sort--active').exists()).toBe(true)
344
- expect(wrapper.find('.rs-table__sort--active .rs-icon').exists()).toBe(true)
345
- })
346
-
347
- it('showHeader=false 时表头视觉隐藏但仍保留 th', () => {
348
- const wrapper = mount(RsTable, {
349
- props: { columns, data, showHeader: false },
350
- })
351
- const head = wrapper.find('thead.rs-table__head--sr-only')
352
- expect(head.exists()).toBe(true)
353
- expect(head.findAll('th').length).toBeGreaterThan(0)
354
- expect(wrapper.find('thead.rs-table__head:not(.rs-table__head--sr-only)').exists()).toBe(
355
- false,
356
- )
357
- })
358
-
359
- it('applies ellipsis wrapper and overflow styles', () => {
360
- const wrapper = mount(RsTable, {
361
- props: {
362
- columns: [{ key: 'name', title: '名称', ellipsis: true, width: 80 }],
363
- data: [{ id: '1', name: '这是一段非常非常长的文本用于测试省略号效果' }],
364
- },
365
- })
366
- const cell = wrapper.find('.rs-table__td--ellipsis')
367
- const text = wrapper.find('.rs-table__cell-tip')
368
- expect(cell.exists()).toBe(true)
369
- expect(text.exists()).toBe(true)
370
- expect(text.text()).toContain('非常非常长')
371
- expect(text.attributes('data-rs-table-tip-mode')).toBe('overflow')
372
- expect(cell.attributes('style')).toContain('width: 80px')
373
- })
374
-
375
- it('attaches overflow tooltip on slotted ellipsis columns', () => {
376
- const wrapper = mount(RsTable, {
377
- props: {
378
- columns: [{ key: 'name', title: '名称', ellipsis: true, width: 80 }],
379
- data: [{ id: '1', name: '很长的名字' }],
380
- },
381
- slots: {
382
- name: ({ row }: { row: { name: string } }) => row.name,
383
- },
384
- })
385
- const tip = wrapper.find('.rs-table__cell-tip')
386
- expect(tip.exists()).toBe(true)
387
- expect(tip.attributes('data-rs-table-tip-mode')).toBe('overflow')
388
- expect(tip.attributes('data-rs-table-tip-text')).toBe('很长的名字')
389
- wrapper.unmount()
390
- })
391
-
392
- it('shows shared cell tooltip on ellipsis overflow hover', async () => {
393
- vi.useFakeTimers()
394
- const wrapper = mount(RsTable, {
395
- attachTo: document.body,
396
- props: {
397
- columns: [{ key: 'name', title: '名称', ellipsis: true, width: 80 }],
398
- data: [{ id: '1', name: '这是一段非常非常长的文本用于测试省略号效果' }],
399
- cellTooltipDelay: 0,
400
- },
401
- })
402
- const cell = wrapper.find('.rs-table__ellipsis-text').element as HTMLElement
403
- Object.defineProperty(cell, 'scrollWidth', { value: 500, configurable: true })
404
- Object.defineProperty(cell, 'clientWidth', { value: 80, configurable: true })
405
- await wrapper.find('.rs-table__cell-tip').trigger('pointerover', { pointerType: 'mouse' })
406
- await vi.runAllTimersAsync()
407
- await wrapper.vm.$nextTick()
408
- const tip = document.body.querySelector('.rs-table__shared-tip')
409
- expect(tip).not.toBeNull()
410
- expect(tip?.textContent).toContain('非常非常长')
411
- wrapper.unmount()
412
- expect(document.body.querySelector('.rs-table__shared-tip')).toBeNull()
413
- vi.useRealTimers()
414
- })
415
-
416
- it('shows shared tooltip for column.tooltip', async () => {
417
- vi.useFakeTimers()
418
- const wrapper = mount(RsTable, {
419
- attachTo: document.body,
420
- props: {
421
- columns: [{ key: 'name', title: '名称', tooltip: () => '自定义说明' }],
422
- data: [{ id: '1', name: '短文本' }],
423
- cellTooltipDelay: 0,
424
- },
425
- })
426
- await wrapper.find('.rs-table__cell-tip').trigger('pointerover', { pointerType: 'mouse' })
427
- await vi.runAllTimersAsync()
428
- await wrapper.vm.$nextTick()
429
- const tip = document.body.querySelector('.rs-table__shared-tip')
430
- expect(tip?.textContent).toContain('自定义说明')
431
- wrapper.unmount()
432
- vi.useRealTimers()
433
- })
434
-
435
- it('shows shared header tooltip for column.headerTip', async () => {
436
- vi.useFakeTimers()
437
- const wrapper = mount(RsTable, {
438
- attachTo: document.body,
439
- props: {
440
- columns: [
441
- {
442
- key: 'name',
443
- title: '名称',
444
- headerTip: '字段: name\n类型: varchar(64)',
445
- },
446
- ],
447
- data: [{ id: '1', name: 'Alice' }],
448
- cellTooltipDelay: 0,
449
- },
450
- })
451
- await wrapper.find('.rs-table__th-label--tip').trigger('pointerover', { pointerType: 'mouse' })
452
- await vi.runAllTimersAsync()
453
- await wrapper.vm.$nextTick()
454
- const tip = document.body.querySelector('.rs-table__shared-tip--header')
455
- expect(tip).not.toBeNull()
456
- expect(tip?.textContent).toContain('varchar(64)')
457
- wrapper.unmount()
458
- vi.useRealTimers()
459
- })
460
-
461
- it('highlights row on click when highlightRow is enabled', async () => {
462
- const wrapper = mount(RsTable, {
463
- props: {
464
- columns,
465
- data,
466
- rowKey: 'id',
467
- highlightRow: true,
468
- },
469
- })
470
- await wrapper.findAll('.rs-table__row')[1]?.trigger('click')
471
- expect(wrapper.emitted('highlightChange')?.[0]?.[0]).toBe('2')
472
- expect(wrapper.find('.rs-table__row--highlighted').exists()).toBe(true)
473
- })
474
-
475
- it('highlights row when clicking a data cell', async () => {
476
- const wrapper = mount(RsTable, {
477
- props: {
478
- columns,
479
- data,
480
- rowKey: 'id',
481
- highlightRow: true,
482
- },
483
- })
484
- const row = wrapper.findAll('.rs-table__row')[1]
485
- await row.find('.rs-table__td--data').trigger('click')
486
- expect(wrapper.emitted('highlightChange')?.[0]?.[0]).toBe('2')
487
- expect(wrapper.find('.rs-table__row--highlighted').exists()).toBe(true)
488
- })
489
-
490
- it('emits rowDblclick when double-clicking a non-editable data cell', async () => {
491
- const wrapper = mount(RsTable, {
492
- props: {
493
- columns,
494
- data,
495
- rowKey: 'id',
496
- },
497
- })
498
- const row = wrapper.findAll('.rs-table__row')[1]
499
- await row.find('.rs-table__td--data').trigger('dblclick')
500
- expect(wrapper.emitted('rowDblclick')?.[0]?.[0]).toEqual(data[1])
501
- expect(wrapper.emitted('rowDblclick')?.[0]?.[1]).toBe(1)
502
- })
503
-
504
- it('shows highlight background on striped rows', async () => {
505
- const wrapper = mount(RsTable, {
506
- props: {
507
- columns,
508
- data,
509
- rowKey: 'id',
510
- striped: true,
511
- highlightRow: true,
512
- },
513
- })
514
- const stripedRow = wrapper.find('.rs-table__row--striped')
515
- expect(stripedRow.exists()).toBe(true)
516
- await stripedRow.find('.rs-table__td--data').trigger('click')
517
- expect(stripedRow.classes()).toContain('rs-table__row--highlighted')
518
- expect(wrapper.emitted('highlightChange')?.[0]?.[0]).toBe('2')
519
- })
520
-
521
- it('highlights row when clicking edit gutter line number', async () => {
522
- const rows = [{ id: '1', name: 'Alpha', count: 1, status: 'running' as const }]
523
- const wrapper = mount(RsTable, {
524
- props: {
525
- columns: [{ key: 'name', title: '名称' }],
526
- data: rows,
527
- rowKey: 'id',
528
- editable: true,
529
- highlightRow: true,
530
- },
531
- })
532
- await wrapper.find('.rs-table__td--gutter').trigger('click')
533
- expect(wrapper.emitted('highlightChange')?.[0]?.[0]).toBe('1')
534
- expect(wrapper.find('.rs-table__row--highlighted').exists()).toBe(true)
535
- })
536
-
537
- it('supports inline cell editing commit', async () => {
538
- const rows = [{ id: '1', name: 'Alpha', count: 1, status: 'running' as const }]
539
- const wrapper = mount(RsTable, {
540
- props: {
541
- columns: [{ key: 'name', title: '名称', editable: true }],
542
- data: rows,
543
- rowKey: 'id',
544
- editable: true,
545
- },
546
- })
547
- expect(wrapper.find('.rs-table__td--gutter').exists()).toBe(true)
548
- await wrapper.find('.rs-table__cell-body--editable').trigger('dblclick')
549
- const input = wrapper.find('.rs-table-cell-editor input')
550
- expect(input.exists()).toBe(true)
551
- await input.setValue('Beta')
552
- await input.trigger('keydown', { key: 'Enter' })
553
- expect(wrapper.emitted('cellEditCommit')?.[0]?.[3]).toBe('Beta')
554
- wrapper.unmount()
555
- })
556
-
557
- it('toggles boolean cells without mounting an editor', async () => {
558
- const rows = [{ id: '1', name: 'Alpha', active: false }]
559
- const wrapper = mount(RsTable, {
560
- props: {
561
- columns: [
562
- { key: 'name', title: '名称' },
563
- { key: 'active', title: '启用', editable: true, valueType: 'boolean' },
564
- ],
565
- data: rows,
566
- rowKey: 'id',
567
- editable: true,
568
- },
569
- })
570
- const check = wrapper.find('.rs-table__cell-check')
571
- expect(check.exists()).toBe(true)
572
- expect(wrapper.find('.rs-table-cell-editor').exists()).toBe(false)
573
- await check.trigger('click')
574
- expect(wrapper.emitted('cellEditCommit')?.[0]?.[3]).toBe(true)
575
- expect(wrapper.find('.rs-table-cell-editor').exists()).toBe(false)
576
- wrapper.unmount()
577
- })
578
-
579
- it('refreshes boolean cell after parent commits new row data (v-memo)', async () => {
580
- const rows = [{ id: '1', name: 'Alpha', active: false }]
581
- const wrapper = mount(RsTable, {
582
- props: {
583
- columns: [
584
- { key: 'name', title: '名称' },
585
- { key: 'active', title: '启用', editable: true, valueType: 'boolean' },
586
- ],
587
- data: rows,
588
- rowKey: 'id',
589
- editable: true,
590
- },
591
- })
592
- await wrapper.find('.rs-table__cell-check').trigger('click')
593
- const next = (wrapper.emitted('cellEditCommit')?.[0]?.[3] as boolean) ?? true
594
- await wrapper.setProps({ data: [{ id: '1', name: 'Alpha', active: next }] })
595
- await wrapper.vm.$nextTick()
596
- const input = wrapper.find('.rs-table__cell-check input')
597
- expect((input.element as HTMLInputElement).checked).toBe(next)
598
- wrapper.unmount()
599
- })
600
-
601
- it('blocks commit and shows invalid state when validator fails', async () => {
602
- const rows = [{ id: '1', name: 'Alpha', count: 1 }]
603
- const wrapper = mount(RsTable, {
604
- props: {
605
- columns: [
606
- {
607
- key: 'count',
608
- title: '数量',
609
- editable: true,
610
- validator: (value) => (Number(value) >= 0 ? null : '不能为负'),
611
- parser: (input) => Number(input),
612
- },
613
- ],
614
- data: rows,
615
- rowKey: 'id',
616
- editable: true,
617
- },
618
- })
619
- await wrapper.find('.rs-table__cell-body--editable').trigger('dblclick')
620
- const input = wrapper.find('.rs-table-cell-editor input')
621
- await input.setValue('-3')
622
- await wrapper.vm.$nextTick()
623
- await input.trigger('blur')
624
- await wrapper.vm.$nextTick()
625
- expect(wrapper.emitted('cellEditCommit')).toBeUndefined()
626
- expect(wrapper.emitted('cellEditInvalid')?.[0]?.[3]).toBe('不能为负')
627
- expect(wrapper.find('.rs-table__td--invalid').exists()).toBe(true)
628
- wrapper.unmount()
629
- })
630
-
631
- it('displays NULL placeholder for null cell values', () => {
632
- const wrapper = mount(RsTable, {
633
- props: {
634
- columns: [{ key: 'note', title: '备注', editable: true, nullable: true }],
635
- data: [{ id: '1', note: null }],
636
- rowKey: 'id',
637
- editable: true,
638
- allowNull: true,
639
- },
640
- })
641
- expect(wrapper.find('.rs-table__cell-body--null').text()).toContain('NULL')
642
- wrapper.unmount()
643
- })
644
-
645
- it('batches commit across selected rows for the same column', async () => {
646
- const rows = [
647
- { id: '1', name: 'A' },
648
- { id: '2', name: 'B' },
649
- { id: '3', name: 'C' },
650
- ]
651
- const wrapper = mount(RsTable, {
652
- props: {
653
- columns: [{ key: 'name', title: '名称', editable: true }],
654
- data: rows,
655
- rowKey: 'id',
656
- editable: true,
657
- selectable: true,
658
- editBatch: true,
659
- selectedRowKeys: ['1', '2'],
660
- },
661
- })
662
- await wrapper.find('.rs-table__cell-body--editable').trigger('dblclick')
663
- const input = wrapper.find('.rs-table-cell-editor input')
664
- await input.setValue('Z')
665
- await wrapper.vm.$nextTick()
666
- await input.trigger('blur')
667
- await wrapper.vm.$nextTick()
668
- const commits = wrapper.emitted('cellEditCommit') ?? []
669
- expect(commits.length).toBe(2)
670
- expect(wrapper.emitted('cellEditBatchCommit')?.[0]?.[1]).toHaveLength(2)
671
- wrapper.unmount()
672
- })
673
-
674
- it('supports async validator blocking commit', async () => {
675
- const rows = [{ id: '1', name: 'Alpha' }]
676
- const wrapper = mount(RsTable, {
677
- props: {
678
- columns: [
679
- {
680
- key: 'name',
681
- title: '名称',
682
- editable: true,
683
- validator: async (value) => {
684
- await Promise.resolve()
685
- return String(value).length < 2 ? '太短' : null
686
- },
687
- },
688
- ],
689
- data: rows,
690
- rowKey: 'id',
691
- editable: true,
692
- },
693
- })
694
- await wrapper.find('.rs-table__cell-body--editable').trigger('dblclick')
695
- const input = wrapper.find('.rs-table-cell-editor input')
696
- await input.setValue('x')
697
- await wrapper.vm.$nextTick()
698
- await input.trigger('blur')
699
- await wrapper.vm.$nextTick()
700
- await Promise.resolve()
701
- await wrapper.vm.$nextTick()
702
- expect(wrapper.emitted('cellEditCommit')).toBeUndefined()
703
- expect(wrapper.emitted('cellEditInvalid')?.[0]?.[3]).toBe('太短')
704
- wrapper.unmount()
705
- })
706
-
707
- it('select editor is not clearable by default', async () => {
708
- const rows = [{ id: '1', kind: 'a' }]
709
- const wrapper = mount(RsTable, {
710
- props: {
711
- columns: [
712
- {
713
- key: 'kind',
714
- title: '类型',
715
- editable: true,
716
- valueType: 'select',
717
- editorOptions: {
718
- options: [
719
- { value: 'a', label: 'A' },
720
- { value: 'b', label: 'B' },
721
- ],
722
- },
723
- },
724
- ],
725
- data: rows,
726
- rowKey: 'id',
727
- editable: true,
728
- allowNull: true,
729
- },
730
- })
731
- await wrapper.find('.rs-table__cell-body--editable').trigger('click')
732
- expect(wrapper.find('.rs-table-cell-editor').exists()).toBe(true)
733
- expect(wrapper.find('.rs-select__clear').exists()).toBe(false)
734
- wrapper.unmount()
735
- })
736
-
737
- it('opens select editor on click and commits on change', async () => {
738
- const rows = [{ id: '1', name: 'Alpha', kind: 'a' }]
739
- const wrapper = mount(RsTable, {
740
- props: {
741
- columns: [
742
- {
743
- key: 'kind',
744
- title: '类型',
745
- editable: true,
746
- valueType: 'select',
747
- editorOptions: {
748
- options: [
749
- { value: 'a', label: 'A' },
750
- { value: 'b', label: 'B' },
751
- ],
752
- },
753
- },
754
- ],
755
- data: rows,
756
- rowKey: 'id',
757
- editable: true,
758
- },
759
- })
760
- await wrapper.find('.rs-table__cell-body--editable').trigger('click')
761
- await wrapper.vm.$nextTick()
762
- expect(wrapper.find('.rs-table-cell-editor--select').exists()).toBe(true)
763
- const select = wrapper.findComponent({ name: 'RsSelect' })
764
- expect(select.exists()).toBe(true)
765
- select.vm.$emit('update:modelValue', 'b')
766
- await wrapper.vm.$nextTick()
767
- expect(wrapper.emitted('cellEditCommit')?.[0]?.[3]).toBe('b')
768
- wrapper.unmount()
769
- })
770
-
771
- it('multiple select commits joined values when dropdown closes', async () => {
772
- Element.prototype.scrollIntoView = vi.fn()
773
- const rows = [{ id: '1', cols: 'a' }]
774
- const wrapper = mount(RsTable, {
775
- props: {
776
- columns: [
777
- {
778
- key: 'cols',
779
- title: '列',
780
- editable: true,
781
- valueType: 'select',
782
- editorOptions: {
783
- multiple: true,
784
- clearable: true,
785
- options: [
786
- { value: 'a', label: 'A' },
787
- { value: 'b', label: 'B' },
788
- { value: 'c', label: 'C' },
789
- ],
790
- },
791
- },
792
- ],
793
- data: rows,
794
- rowKey: 'id',
795
- editable: true,
796
- },
797
- })
798
- await wrapper.find('.rs-table__cell-body--editable').trigger('click')
799
- await wrapper.vm.$nextTick()
800
- const select = wrapper.findComponent({ name: 'RsSelect' })
801
- expect(select.exists()).toBe(true)
802
- select.vm.$emit('update:modelValue', ['a', 'b'])
803
- await wrapper.vm.$nextTick()
804
- expect(wrapper.emitted('cellEditCommit')).toBeFalsy()
805
- select.vm.$emit('update:open', true)
806
- await wrapper.vm.$nextTick()
807
- select.vm.$emit('update:open', false)
808
- await wrapper.vm.$nextTick()
809
- expect(wrapper.emitted('cellEditCommit')?.[0]?.[3]).toBe('a, b')
810
- wrapper.unmount()
811
- })
812
-
813
- it('shows gutter commit while actively editing a changed cell', async () => {
814
- const rows = [{ id: '1', name: 'Alpha', count: 1, status: 'running' as const }]
815
- const wrapper = mount(RsTable, {
816
- props: {
817
- columns: [{ key: 'name', title: '名称', editable: true }],
818
- data: rows,
819
- rowKey: 'id',
820
- editable: true,
821
- },
822
- })
823
- await wrapper.find('.rs-table__cell-body--editable').trigger('dblclick')
824
- expect(wrapper.find('.rs-table-edit-gutter__line').exists()).toBe(true)
825
- const input = wrapper.find('.rs-table-cell-editor input')
826
- await input.setValue('Beta')
827
- await wrapper.vm.$nextTick()
828
- expect(wrapper.find('.rs-table-edit-gutter__commit').exists()).toBe(true)
829
- wrapper.unmount()
830
- })
831
-
832
- it('stages row edits and commits manually in rowCommit mode', async () => {
833
- const rows = [{ id: '1', name: 'Alpha', count: 1, status: 'running' as const }]
834
- const wrapper = mount(RsTable, {
835
- props: {
836
- columns: [{ key: 'name', title: '名称', editable: true }],
837
- data: rows,
838
- rowKey: 'id',
839
- editable: true,
840
- rowCommit: true,
841
- },
842
- })
843
- await wrapper.find('.rs-table__cell-body--editable').trigger('dblclick')
844
- expect(wrapper.find('.rs-table__th--gutter').exists()).toBe(true)
845
- expect(wrapper.find('.rs-table__td--gutter').exists()).toBe(true)
846
- const input = wrapper.find('.rs-table-cell-editor input')
847
- await input.setValue('Beta')
848
- await wrapper.vm.$nextTick()
849
- await input.trigger('blur')
850
- await wrapper.vm.$nextTick()
851
- expect(wrapper.emitted('cellEditCommit')).toBeUndefined()
852
- expect(wrapper.find('.rs-table-edit-gutter__commit').exists()).toBe(true)
853
- expect(wrapper.find('.rs-table-edit-gutter__commit-hint').text()).toBe('提交')
854
- await wrapper.find('.rs-table-edit-gutter__commit').trigger('click')
855
- const payload = wrapper.emitted('rowEditCommit')?.[0]
856
- expect(payload?.[2]).toEqual([{ colKey: 'name', value: 'Beta', previous: 'Alpha' }])
857
- wrapper.unmount()
858
- })
859
-
860
- it('does not show shared tooltip for non-overflow ellipsis cells', async () => {
861
- vi.useFakeTimers()
862
- const wrapper = mount(RsTable, {
863
- attachTo: document.body,
864
- props: {
865
- columns: [{ key: 'name', title: '名称', ellipsis: true, width: 240 }],
866
- data: [{ id: '1', name: '短文本' }],
867
- cellTooltipDelay: 0,
868
- },
869
- })
870
- await wrapper.find('.rs-table__cell-tip').trigger('pointerover', { pointerType: 'mouse' })
871
- await vi.runAllTimersAsync()
872
- await wrapper.vm.$nextTick()
873
- expect(document.body.querySelector('.rs-table__shared-tip')).toBeNull()
874
- wrapper.unmount()
875
- vi.useRealTimers()
876
- })
877
-
878
- it('expands rows with expand slot', async () => {
879
- const wrapper = mount(RsTable, {
880
- props: {
881
- columns,
882
- data,
883
- expandable: true,
884
- expandedRowKeys: [] as string[],
885
- rowKey: 'id',
886
- 'onUpdate:expandedRowKeys': (keys: string[]) => wrapper.setProps({ expandedRowKeys: keys }),
887
- },
888
- slots: { expand: '<div class="expand-slot">detail</div>' },
889
- })
890
- await wrapper.find('.rs-table__expand-btn').trigger('click')
891
- expect(wrapper.props('expandedRowKeys')).toEqual(['1'])
892
- await wrapper.setProps({ expandedRowKeys: ['1'] })
893
- expect(wrapper.find('.expand-slot').exists()).toBe(true)
894
- })
895
-
896
- it('renders tree rows with indent toggle on expand column', async () => {
897
- const treeData = [
898
- {
899
- id: 'p',
900
- name: 'Parent',
901
- count: 1,
902
- children: [
903
- { id: 'c1', name: 'Child', count: 2 },
904
- ],
905
- },
906
- ]
907
- const wrapper = mount(RsTable, {
908
- props: {
909
- columns,
910
- data: treeData,
911
- rowKey: 'id',
912
- treeConfig: {
913
- childrenField: 'children',
914
- expandColumnKey: 'name',
915
- indent: 16,
916
- },
917
- expandedRowKeys: [] as string[],
918
- 'onUpdate:expandedRowKeys': (keys: string[]) => wrapper.setProps({ expandedRowKeys: keys }),
919
- },
920
- })
921
- expect(wrapper.find('.rs-table--tree').exists()).toBe(true)
922
- expect(wrapper.findAll('.rs-table__row')).toHaveLength(1)
923
- expect(wrapper.find('.rs-table__tree-toggle').exists()).toBe(true)
924
- await wrapper.find('.rs-table__tree-toggle').trigger('click')
925
- expect(wrapper.props('expandedRowKeys')).toEqual(['p'])
926
- await wrapper.setProps({ expandedRowKeys: ['p'] })
927
- expect(wrapper.findAll('.rs-table__row')).toHaveLength(2)
928
- expect(wrapper.text()).toContain('Child')
929
- })
930
-
931
- it('supports row selection without checkbox column', async () => {
932
- const wrapper = mount(RsTable, {
933
- props: {
934
- columns,
935
- data,
936
- selectable: true,
937
- selectionType: 'row' as const,
938
- rowKey: 'id',
939
- selectedRowKeys: [] as string[],
940
- 'onUpdate:selectedRowKeys': (keys: string[]) => wrapper.setProps({ selectedRowKeys: keys }),
941
- },
942
- })
943
- expect(wrapper.find('.rs-table__th--selection').exists()).toBe(false)
944
- const rows = wrapper.findAll('.rs-table__row')
945
- await rows[0]!.trigger('click')
946
- expect(wrapper.props('selectedRowKeys')).toEqual(['1'])
947
- rows[1]!.element.dispatchEvent(
948
- new MouseEvent('click', { bubbles: true, cancelable: true, ctrlKey: true }),
949
- )
950
- await wrapper.vm.$nextTick()
951
- expect(wrapper.props('selectedRowKeys')).toEqual(['1', '2'])
952
- })
953
-
954
- it('supports shift range row selection without checkbox', async () => {
955
- const wrapper = mount(RsTable, {
956
- props: {
957
- columns,
958
- data,
959
- selectable: true,
960
- selectionType: 'row' as const,
961
- rowKey: 'id',
962
- selectedRowKeys: [] as string[],
963
- 'onUpdate:selectedRowKeys': (keys: string[]) => wrapper.setProps({ selectedRowKeys: keys }),
964
- },
965
- })
966
- const rows = wrapper.findAll('.rs-table__row')
967
- await rows[0]!.trigger('click')
968
- expect(wrapper.props('selectedRowKeys')).toEqual(['1'])
969
- rows[2]!.element.dispatchEvent(
970
- new MouseEvent('click', { bubbles: true, cancelable: true, shiftKey: true }),
971
- )
972
- await wrapper.vm.$nextTick()
973
- expect(wrapper.props('selectedRowKeys')).toEqual(['1', '2', '3'])
974
- })
975
-
976
- it('supports radio selection', async () => {
977
- const wrapper = mount(RsTable, {
978
- props: {
979
- columns,
980
- data,
981
- selectable: true,
982
- selectionType: 'radio' as const,
983
- rowKey: 'id',
984
- selectedRowKeys: [] as string[],
985
- 'onUpdate:selectedRowKeys': (keys: string[]) => wrapper.setProps({ selectedRowKeys: keys }),
986
- },
987
- })
988
- const inputs = wrapper.findAll('.rs-table__row .rs-table__checkbox-input')
989
- await inputs[0]!.setValue(true)
990
- await inputs[1]!.setValue(true)
991
- expect(wrapper.props('selectedRowKeys')).toEqual(['2'])
992
- })
993
-
994
- it('does not sort locally when remoteSort is enabled', async () => {
995
- const wrapper = mount(RsTable, {
996
- props: {
997
- columns,
998
- data,
999
- remoteSort: true,
1000
- sort: null,
1001
- 'onUpdate:sort': (value: { key: string; order: 'asc' | 'desc' } | null) => wrapper.setProps({ sort: value }),
1002
- },
1003
- })
1004
- await wrapper.findAll('.rs-table__sort')[0]!.trigger('click')
1005
- expect(wrapper.emitted('update:sort')?.[0]?.[0]).toEqual({ key: 'name', order: 'asc' })
1006
- expect(wrapper.findAll('.rs-table__row td')[0].text()).toBe('B')
1007
- })
1008
-
1009
- it('renders fixed column classes and horizontal scroll', () => {
1010
- const wrapper = mount(RsTable, {
1011
- props: {
1012
- columns: [
1013
- { key: 'name', title: '名称', fixed: 'left' as const, width: 120 },
1014
- { key: 'count', title: '数量', fixed: 'right' as const, width: 80 },
1015
- ],
1016
- data,
1017
- scrollX: 600,
1018
- rowKey: 'id',
1019
- },
1020
- })
1021
- expect(wrapper.find('.rs-table').classes()).toContain('rs-table--scroll-x')
1022
- expect(wrapper.find('.rs-table__cell--fixed').exists()).toBe(true)
1023
- })
1024
-
1025
- it('renders summary slot in footer', () => {
1026
- const wrapper = mount(RsTable, {
1027
- props: { columns, data },
1028
- slots: { summary: '<span class="summary-total">合计</span>' },
1029
- })
1030
- expect(wrapper.find('.rs-table__summary .summary-total').text()).toBe('合计')
1031
- })
1032
-
1033
- it('uses custom column sorter', async () => {
1034
- const wrapper = mount(RsTable, {
1035
- props: {
1036
- columns: [{ key: 'name', title: '名称', sortable: true, sorter: (a, b) => (b as { name: string }).name.localeCompare((a as { name: string }).name) }],
1037
- data,
1038
- },
1039
- })
1040
- await wrapper.find('.rs-table__sort').trigger('click')
1041
- expect(wrapper.findAll('.rs-table__row td')[0].text()).toBe('C')
1042
- })
1043
-
1044
- it('supports multi-column sort', async () => {
1045
- const wrapper = mount(RsTable, {
1046
- props: {
1047
- columns,
1048
- data,
1049
- multiSort: true,
1050
- sorts: [],
1051
- 'onUpdate:sorts': (value: { key: string; order: 'asc' | 'desc' }[]) => wrapper.setProps({ sorts: value }),
1052
- },
1053
- })
1054
- const sortButtons = wrapper.findAll('.rs-table__sort')
1055
- await sortButtons[0]!.trigger('click')
1056
- await sortButtons[1]!.trigger('click')
1057
- expect(wrapper.emitted('update:sorts')?.[1]?.[0]).toEqual([
1058
- { key: 'name', order: 'asc' },
1059
- { key: 'count', order: 'asc' },
1060
- ])
1061
- })
1062
-
1063
- it('emits rowDrop when rows are reordered', async () => {
1064
- const wrapper = mount(RsTable, {
1065
- props: { columns, data, rowDraggable: true, rowKey: 'id' },
1066
- })
1067
- const handle = wrapper.find('.rs-table__row-drag-handle')
1068
- await handle.trigger('dragstart')
1069
- await wrapper.findAll('.rs-table__row')[1].trigger('drop')
1070
- const emitted = wrapper.emitted('rowDrop')
1071
- expect(emitted).toBeTruthy()
1072
- expect(emitted?.[0]?.[0]).toEqual(expect.arrayContaining([expect.any(String)]))
1073
- })
1074
-
1075
- it('reorders columns with columnDraggable', async () => {
1076
- const wrapper = mount(RsTable, {
1077
- props: {
1078
- columns,
1079
- data,
1080
- columnDraggable: true,
1081
- columnOrder: ['name', 'count'],
1082
- 'onUpdate:columnOrder': (value: string[]) => wrapper.setProps({ columnOrder: value }),
1083
- },
1084
- })
1085
- const handle = wrapper.find('.rs-table__column-drag-handle')
1086
- await handle.trigger('dragstart')
1087
- const headers = wrapper.findAll('th')
1088
- await headers[headers.length - 1].trigger('drop')
1089
- expect(wrapper.emitted('update:columnOrder')).toBeTruthy()
1090
- })
1091
-
1092
- it('emits rowDrop with into position in into drop mode', async () => {
1093
- const onRowDrop = vi.fn()
1094
- const wrapper = mount(RsTable, {
1095
- props: {
1096
- columns,
1097
- data: [
1098
- { id: 'dir', name: 'Folder', status: 'running', count: 0, updatedAt: '' },
1099
- { id: 'file', name: 'File', status: 'running', count: 1, updatedAt: '' },
1100
- ],
1101
- rowDraggable: true,
1102
- rowDragTrigger: 'row',
1103
- rowDropMode: 'into',
1104
- rowDraggableWhen: (row) => (row as { id: string }).id !== 'dir',
1105
- rowDropTargetWhen: (row) => (row as { id: string }).id === 'dir',
1106
- rowKey: 'id',
1107
- onRowDrop,
1108
- },
1109
- })
1110
- const fileCell = wrapper.findAll('.rs-table__td--row-draggable')[0]
1111
- await fileCell.trigger('dragstart')
1112
- await wrapper.findAll('.rs-table__row')[0].trigger('drop')
1113
- expect(onRowDrop).toHaveBeenCalled()
1114
- const [dragKeys, dropKey, position] = onRowDrop.mock.calls[0] as [string[], string, string]
1115
- expect(dragKeys).toEqual(['file'])
1116
- expect(dropKey).toBe('dir')
1117
- expect(position).toBe('into')
1118
- })
1119
-
1120
- it('shows filter icon for filterable columns and filters rows', async () => {
1121
- const filterColumns = [
1122
- { key: 'name', title: '名称', filterable: true },
1123
- { key: 'count', title: '数量' },
1124
- ]
1125
- const wrapper = mount(RsTable, {
1126
- props: {
1127
- columns: filterColumns,
1128
- data,
1129
- columnFilters: { name: 'A' },
1130
- 'onUpdate:columnFilters': (value: Record<string, string>) =>
1131
- wrapper.setProps({ columnFilters: value }),
1132
- },
1133
- })
1134
- expect(wrapper.find('.rs-table__filter').exists()).toBe(true)
1135
- expect(wrapper.findAll('.rs-table__row')).toHaveLength(1)
1136
- expect(wrapper.find('.rs-table__row td').text()).toBe('A')
1137
-
1138
- await wrapper.setProps({ columnFilters: {} })
1139
- expect(wrapper.findAll('.rs-table__row')).toHaveLength(3)
1140
- })
1141
-
1142
- it('highlights active column filter', async () => {
1143
- const wrapper = mount(RsTable, {
1144
- props: {
1145
- columns: [{ key: 'name', title: '名称', filterable: true }],
1146
- data,
1147
- columnFilters: { name: 'B' },
1148
- },
1149
- })
1150
- expect(wrapper.find('.rs-table__filter--active').exists()).toBe(true)
1151
- expect(wrapper.findAll('.rs-table__row')).toHaveLength(1)
1152
- await wrapper.setProps({ columnFilters: {} })
1153
- expect(wrapper.find('.rs-table__filter--active').exists()).toBe(false)
1154
- })
1155
-
1156
- it('shows default copy actions in context menu on data cell', async () => {
1157
- const wrapper = mount(RsTable, {
1158
- props: { columns, data, rowKey: 'id' },
1159
- attachTo: document.body,
1160
- })
1161
- await wrapper.find('.rs-table__td--data').trigger('contextmenu')
1162
- await flushPromises()
1163
- const labels = [...document.body.querySelectorAll('.rs-context-menu__label')].map(
1164
- (node) => node.textContent?.trim(),
1165
- )
1166
- expect(labels).toContain('复制单元格')
1167
- expect(labels).toContain('复制行')
1168
- wrapper.unmount()
1169
- })
1170
-
1171
- it('copies cell and row text from built-in context menu', async () => {
1172
- const copyMock = vi.mocked(copyTextToClipboard)
1173
- copyMock.mockClear()
1174
- const wrapper = mount(RsTable, {
1175
- props: { columns, data, rowKey: 'id' },
1176
- attachTo: document.body,
1177
- })
1178
- await wrapper.find('.rs-table__td--data').trigger('contextmenu')
1179
- await flushPromises()
1180
- const items = document.body.querySelectorAll('.rs-context-menu__item')
1181
- const copyCell = [...items].find((item) => item.textContent?.includes('复制单元格'))
1182
- expect(copyCell).toBeTruthy()
1183
- ;(copyCell as HTMLElement).click()
1184
- await flushPromises()
1185
- expect(copyMock).toHaveBeenCalledWith('B')
1186
-
1187
- copyMock.mockClear()
1188
- await wrapper.find('.rs-table__td--data').trigger('contextmenu')
1189
- await flushPromises()
1190
- const copyRow = [...document.body.querySelectorAll('.rs-context-menu__item')].find((item) =>
1191
- item.textContent?.includes('复制行'),
1192
- )
1193
- ;(copyRow as HTMLElement).click()
1194
- await flushPromises()
1195
- expect(copyMock).toHaveBeenCalledWith('B\t20')
1196
- wrapper.unmount()
1197
- })
1198
-
1199
- it('can disable built-in context menu', async () => {
1200
- const wrapper = mount(RsTable, {
1201
- props: { columns, data, rowKey: 'id', contextMenu: false },
1202
- })
1203
- await wrapper.find('.rs-table__td--data').trigger('contextmenu')
1204
- expect(document.body.querySelector('.rs-context-menu__content')).toBeNull()
1205
- wrapper.unmount()
1206
- })
1207
- })