niuma-ui 2.0.3 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/dist/components/_shared/index.d.ts +2 -2
  3. package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
  4. package/dist/components/_shared/src/overlay-utils.js +87 -2
  5. package/dist/components/_shared/src/reka.d.ts +1 -1
  6. package/dist/components/_shared/src/reka.js +2 -2
  7. package/dist/components/alert/index.d.ts +1 -0
  8. package/dist/components/alert/src/RsAlert.css +120 -65
  9. package/dist/components/alert/src/RsAlert.d.ts +24 -5
  10. package/dist/components/alert/src/RsAlert.impl.js +108 -36
  11. package/dist/components/alert/src/RsAlert.js +1 -1
  12. package/dist/components/alert/src/alert-utils.d.ts +37 -0
  13. package/dist/components/alert/src/alert-utils.js +71 -0
  14. package/dist/components/anchor/index.d.ts +1 -1
  15. package/dist/components/anchor/src/RsAnchor.css +63 -32
  16. package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
  17. package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
  18. package/dist/components/anchor/src/RsAnchor.js +1 -1
  19. package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
  20. package/dist/components/anchor/src/anchor-utils.js +81 -19
  21. package/dist/components/auto-complete/index.d.ts +2 -0
  22. package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
  23. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
  24. package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
  25. package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
  26. package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
  27. package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
  28. package/dist/components/avatar/index.d.ts +1 -0
  29. package/dist/components/avatar/src/RsAvatar.css +36 -19
  30. package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
  31. package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
  32. package/dist/components/avatar/src/RsAvatar.js +2 -1
  33. package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
  34. package/dist/components/avatar/src/avatar-utils.js +41 -3
  35. package/dist/components/breadcrumb/index.d.ts +1 -1
  36. package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
  37. package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
  38. package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
  39. package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
  40. package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
  41. package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
  42. package/dist/components/button/src/RsButton.impl.js +1 -1
  43. package/dist/components/calendar-grid/index.d.ts +2 -0
  44. package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
  45. package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
  46. package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
  47. package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
  48. package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
  49. package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
  50. package/dist/components/card/index.d.ts +1 -1
  51. package/dist/components/card/src/RsCard.css +108 -98
  52. package/dist/components/card/src/RsCard.d.ts +4 -13
  53. package/dist/components/card/src/RsCard.impl.js +29 -25
  54. package/dist/components/card/src/RsCard.js +2 -1
  55. package/dist/components/card/src/card-utils.d.ts +25 -0
  56. package/dist/components/card/src/card-utils.js +10 -0
  57. package/dist/components/cascader/index.d.ts +1 -0
  58. package/dist/components/cascader/src/RsCascader.css +175 -30
  59. package/dist/components/cascader/src/RsCascader.d.ts +15 -3
  60. package/dist/components/cascader/src/RsCascader.impl.js +277 -48
  61. package/dist/components/cascader/src/RsCascader.js +1 -1
  62. package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
  63. package/dist/components/cascader/src/cascader-utils.js +8 -1
  64. package/dist/components/checkbox/index.d.ts +1 -0
  65. package/dist/components/checkbox/src/RsCheckbox.css +46 -23
  66. package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
  67. package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
  68. package/dist/components/checkbox/src/RsCheckbox.js +2 -1
  69. package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
  70. package/dist/components/checkbox/src/checkbox-utils.js +12 -0
  71. package/dist/components/code-block/index.d.ts +1 -0
  72. package/dist/components/code-block/src/RsCodeBlock.css +93 -52
  73. package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
  74. package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
  75. package/dist/components/code-block/src/RsCodeBlock.js +1 -1
  76. package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
  77. package/dist/components/code-block/src/code-block-highlight.js +34 -0
  78. package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
  79. package/dist/components/code-block/src/code-block-utils.js +71 -0
  80. package/dist/components/code-editor/index.d.ts +1 -1
  81. package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
  82. package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
  83. package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
  84. package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
  85. package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
  86. package/dist/components/code-editor/src/code-editor-utils.js +36 -1
  87. package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
  88. package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
  89. package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
  90. package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
  91. package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
  92. package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
  93. package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
  94. package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
  95. package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
  96. package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
  97. package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
  98. package/dist/components/code-editor/src/code-mirror-session.js +30 -0
  99. package/dist/components/container/index.d.ts +1 -1
  100. package/dist/components/container/src/RsContainer.css +11 -11
  101. package/dist/components/container/src/RsContainer.d.ts +2 -12
  102. package/dist/components/container/src/RsContainer.impl.js +10 -57
  103. package/dist/components/container/src/RsContainer.js +1 -1
  104. package/dist/components/container/src/container-utils.d.ts +23 -0
  105. package/dist/components/container/src/container-utils.js +51 -0
  106. package/dist/components/context-menu/index.d.ts +1 -1
  107. package/dist/components/context-menu/src/RsContextMenu.css +115 -89
  108. package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
  109. package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
  110. package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
  111. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
  112. package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
  113. package/dist/components/context-menu/src/context-menu-utils.js +168 -3
  114. package/dist/components/date-picker/index.d.ts +4 -2
  115. package/dist/components/date-picker/src/RsDatePicker.css +42 -22
  116. package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
  117. package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
  118. package/dist/components/date-picker/src/RsDatePicker.js +1 -3
  119. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
  120. package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
  121. package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
  122. package/dist/components/date-picker/src/date-picker-utils.js +33 -10
  123. package/dist/components/descriptions/index.d.ts +1 -1
  124. package/dist/components/descriptions/src/RsDescriptions.css +38 -11
  125. package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
  126. package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
  127. package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
  128. package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
  129. package/dist/components/descriptions/src/descriptions-utils.js +39 -1
  130. package/dist/components/dialog/index.d.ts +1 -1
  131. package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
  132. package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
  133. package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
  134. package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
  135. package/dist/components/dialog/src/RsDialog.css +102 -109
  136. package/dist/components/dialog/src/RsDialog.d.ts +34 -24
  137. package/dist/components/dialog/src/RsDialog.impl.js +410 -177
  138. package/dist/components/dialog/src/RsDialog.js +2 -1
  139. package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
  140. package/dist/components/dialog/src/dialog-utils.js +152 -1
  141. package/dist/components/dialog/src/dialog-window.js +29 -8
  142. package/dist/components/drawer/index.d.ts +1 -1
  143. package/dist/components/drawer/src/RsDrawer.css +61 -29
  144. package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
  145. package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
  146. package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
  147. package/dist/components/drawer/src/drawer-utils.js +131 -1
  148. package/dist/components/dropdown/index.d.ts +1 -1
  149. package/dist/components/dropdown/src/RsDropdown.css +140 -61
  150. package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
  151. package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
  152. package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
  153. package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
  154. package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
  155. package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
  156. package/dist/components/dropdown/src/dropdown-utils.js +103 -3
  157. package/dist/components/dynamic-tags/index.d.ts +1 -1
  158. package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
  159. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +58 -17
  160. package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
  161. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  162. package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
  163. package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
  164. package/dist/components/empty/index.d.ts +1 -0
  165. package/dist/components/empty/src/RsEmpty.css +105 -23
  166. package/dist/components/empty/src/RsEmpty.d.ts +27 -4
  167. package/dist/components/empty/src/RsEmpty.impl.js +154 -11
  168. package/dist/components/empty/src/RsEmpty.js +2 -1
  169. package/dist/components/empty/src/empty-utils.d.ts +28 -0
  170. package/dist/components/empty/src/empty-utils.js +55 -0
  171. package/dist/components/fieldset/src/RsFieldset.css +71 -41
  172. package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
  173. package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
  174. package/dist/components/fieldset/src/RsFieldset.js +1 -1
  175. package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
  176. package/dist/components/fieldset/src/fieldset-utils.js +9 -1
  177. package/dist/components/form/index.d.ts +1 -0
  178. package/dist/components/form/src/RsForm.css +15 -12
  179. package/dist/components/form/src/RsForm.d.ts +21 -23
  180. package/dist/components/form/src/RsForm.impl.js +33 -20
  181. package/dist/components/form/src/RsForm.js +1 -1
  182. package/dist/components/form/src/form-utils.d.ts +7 -0
  183. package/dist/components/form/src/form-utils.js +28 -1
  184. package/dist/components/input/index.d.ts +1 -1
  185. package/dist/components/input/src/RsInput.css +78 -260
  186. package/dist/components/input/src/RsInput.d.ts +5 -3
  187. package/dist/components/input/src/RsInput.impl.js +8 -16
  188. package/dist/components/input/src/RsInput.js +1 -1
  189. package/dist/components/input/src/input-utils.d.ts +11 -0
  190. package/dist/components/input/src/input-utils.js +22 -0
  191. package/dist/components/input-number/index.d.ts +1 -0
  192. package/dist/components/input-number/src/RsInputNumber.css +31 -31
  193. package/dist/components/input-number/src/RsInputNumber.d.ts +16 -14
  194. package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
  195. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  196. package/dist/components/label/src/RsLabel.css +30 -11
  197. package/dist/components/label/src/RsLabel.d.ts +18 -1
  198. package/dist/components/label/src/RsLabel.impl.js +63 -10
  199. package/dist/components/label/src/RsLabel.js +1 -1
  200. package/dist/components/label/src/label-utils.d.ts +6 -0
  201. package/dist/components/label/src/label-utils.js +16 -0
  202. package/dist/components/link/src/RsLink.d.ts +2 -2
  203. package/dist/components/loading/index.d.ts +1 -0
  204. package/dist/components/loading/src/RsLoading.css +13 -97
  205. package/dist/components/loading/src/RsLoading.d.ts +53 -3
  206. package/dist/components/loading/src/RsLoading.impl.js +216 -33
  207. package/dist/components/loading/src/RsLoading.js +2 -1
  208. package/dist/components/loading/src/loading-status.css +210 -0
  209. package/dist/components/loading/src/loading-status.d.ts +34 -0
  210. package/dist/components/loading/src/loading-status.impl.js +84 -0
  211. package/dist/components/loading/src/loading-status.js +8 -0
  212. package/dist/components/loading/src/loading-utils.d.ts +51 -4
  213. package/dist/components/loading/src/loading-utils.js +122 -0
  214. package/dist/components/loading-bar/index.d.ts +1 -0
  215. package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
  216. package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
  217. package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
  218. package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
  219. package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
  220. package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
  221. package/dist/components/log/src/RsLog.css +52 -144
  222. package/dist/components/log/src/RsLog.d.ts +12 -11
  223. package/dist/components/log/src/RsLog.impl.js +181 -148
  224. package/dist/components/log/src/RsLog.js +1 -1
  225. package/dist/components/log/src/RsLogRow.css +152 -0
  226. package/dist/components/log/src/RsLogRow.d.ts +35 -0
  227. package/dist/components/log/src/RsLogRow.impl.js +91 -0
  228. package/dist/components/log/src/RsLogRow.js +8 -0
  229. package/dist/components/log/src/log-utils.d.ts +8 -0
  230. package/dist/components/log/src/log-utils.js +71 -10
  231. package/dist/components/markdown/index.d.ts +1 -1
  232. package/dist/components/markdown/src/RsMarkdown.css +75 -32
  233. package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
  234. package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
  235. package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
  236. package/dist/components/markdown/src/markdown-utils.js +114 -12
  237. package/dist/components/mentions/index.d.ts +2 -1
  238. package/dist/components/mentions/src/RsMentions.css +119 -3
  239. package/dist/components/mentions/src/RsMentions.d.ts +57 -5
  240. package/dist/components/mentions/src/RsMentions.impl.js +298 -79
  241. package/dist/components/mentions/src/RsMentions.js +1 -3
  242. package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
  243. package/dist/components/mentions/src/mentions-utils.js +28 -9
  244. package/dist/components/menu/index.d.ts +1 -1
  245. package/dist/components/menu/src/RsMenu.css +70 -29
  246. package/dist/components/menu/src/RsMenu.d.ts +58 -4
  247. package/dist/components/menu/src/RsMenu.impl.js +93 -46
  248. package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
  249. package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
  250. package/dist/components/menu/src/menu-utils.d.ts +56 -0
  251. package/dist/components/menu/src/menu-utils.js +139 -6
  252. package/dist/components/monaco-editor/index.d.ts +1 -1
  253. package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
  254. package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
  255. package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
  256. package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
  257. package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
  258. package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
  259. package/dist/components/pagination/index.d.ts +2 -2
  260. package/dist/components/pagination/src/RsPagination.css +93 -46
  261. package/dist/components/pagination/src/RsPagination.d.ts +68 -8
  262. package/dist/components/pagination/src/RsPagination.impl.js +229 -86
  263. package/dist/components/pagination/src/RsPagination.js +1 -1
  264. package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
  265. package/dist/components/pagination/src/pagination-utils.js +105 -1
  266. package/dist/components/popover/index.d.ts +1 -0
  267. package/dist/components/popover/src/RsPopover.css +124 -14
  268. package/dist/components/popover/src/RsPopover.d.ts +38 -7
  269. package/dist/components/popover/src/RsPopover.impl.js +546 -35
  270. package/dist/components/popover/src/RsPopover.js +2 -1
  271. package/dist/components/popover/src/popover-utils.d.ts +24 -2
  272. package/dist/components/popover/src/popover-utils.js +55 -0
  273. package/dist/components/radio/index.d.ts +1 -1
  274. package/dist/components/radio/src/RsRadio.css +7 -6
  275. package/dist/components/radio/src/RsRadio.d.ts +8 -5
  276. package/dist/components/radio/src/RsRadio.impl.js +34 -24
  277. package/dist/components/radio/src/RsRadio.js +2 -1
  278. package/dist/components/radio/src/RsRadioItem.css +61 -44
  279. package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
  280. package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
  281. package/dist/components/radio/src/RsRadioItem.js +2 -1
  282. package/dist/components/radio/src/radio-utils.d.ts +12 -1
  283. package/dist/components/radio/src/radio-utils.js +15 -1
  284. package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
  285. package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
  286. package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
  287. package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
  288. package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
  289. package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
  290. package/dist/components/select/index.d.ts +1 -0
  291. package/dist/components/select/src/RsSelect.css +54 -42
  292. package/dist/components/select/src/RsSelect.d.ts +19 -2
  293. package/dist/components/select/src/RsSelect.impl.js +727 -312
  294. package/dist/components/select/src/RsSelect.js +1 -1
  295. package/dist/components/select/src/select-utils.d.ts +4 -2
  296. package/dist/components/select/src/select-utils.js +8 -3
  297. package/dist/components/select/src/use-rs-select.d.ts +1 -0
  298. package/dist/components/select/src/use-rs-select.js +23 -17
  299. package/dist/components/sidebar/index.d.ts +1 -0
  300. package/dist/components/sidebar/src/RsSidebar.css +91 -33
  301. package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
  302. package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
  303. package/dist/components/sidebar/src/RsSidebar.js +1 -1
  304. package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
  305. package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
  306. package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
  307. package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
  308. package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
  309. package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
  310. package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
  311. package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
  312. package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
  313. package/dist/components/sidebar/src/sidebar-utils.js +72 -0
  314. package/dist/components/split-pane/index.d.ts +2 -2
  315. package/dist/components/split-pane/src/RsSplitPane.css +41 -30
  316. package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
  317. package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
  318. package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
  319. package/dist/components/split-pane/src/split-pane-utils.js +18 -1
  320. package/dist/components/stat-card/index.d.ts +1 -0
  321. package/dist/components/stat-card/src/RsStatCard.css +129 -25
  322. package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
  323. package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
  324. package/dist/components/stat-card/src/RsStatCard.js +1 -1
  325. package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
  326. package/dist/components/stat-card/src/stat-card-utils.js +113 -0
  327. package/dist/components/steps/index.d.ts +1 -1
  328. package/dist/components/steps/src/RsSteps.css +158 -37
  329. package/dist/components/steps/src/RsSteps.d.ts +69 -5
  330. package/dist/components/steps/src/RsSteps.impl.js +168 -28
  331. package/dist/components/steps/src/RsSteps.js +1 -1
  332. package/dist/components/steps/src/steps-utils.d.ts +51 -1
  333. package/dist/components/steps/src/steps-utils.js +67 -1
  334. package/dist/components/switch/index.d.ts +2 -1
  335. package/dist/components/switch/src/RsSwitch.css +36 -18
  336. package/dist/components/switch/src/RsSwitch.d.ts +18 -5
  337. package/dist/components/switch/src/RsSwitch.impl.js +61 -29
  338. package/dist/components/switch/src/RsSwitch.js +2 -1
  339. package/dist/components/switch/src/switch-utils.d.ts +4 -0
  340. package/dist/components/switch/src/switch-utils.js +9 -0
  341. package/dist/components/table/src/RsTable.impl.js +4 -2
  342. package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
  343. package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
  344. package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
  345. package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
  346. package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
  347. package/dist/components/table/src/rs-table-props.d.ts +1 -1
  348. package/dist/components/table/src/rs-table-props.js +0 -1
  349. package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
  350. package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
  351. package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
  352. package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
  353. package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
  354. package/dist/components/table/src/utils/table-utils.d.ts +10 -6
  355. package/dist/components/table/src/utils/table-utils.js +27 -25
  356. package/dist/components/table/style/rs-table.css +34 -20
  357. package/dist/components/tabs/index.d.ts +2 -2
  358. package/dist/components/tabs/src/RsTabs.css +225 -101
  359. package/dist/components/tabs/src/RsTabs.d.ts +37 -8
  360. package/dist/components/tabs/src/RsTabs.impl.js +400 -270
  361. package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
  362. package/dist/components/tabs/src/tabs-utils.js +55 -1
  363. package/dist/components/terminal/index.d.ts +1 -1
  364. package/dist/components/terminal/src/RsTerminal.css +60 -37
  365. package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
  366. package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
  367. package/dist/components/terminal/src/RsTerminal.js +1 -1
  368. package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
  369. package/dist/components/terminal/src/terminal-utils.js +113 -10
  370. package/dist/components/textarea/src/RsTextarea.css +23 -23
  371. package/dist/components/textarea/src/RsTextarea.d.ts +7 -13
  372. package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
  373. package/dist/components/textarea/src/RsTextarea.js +1 -1
  374. package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
  375. package/dist/components/textarea/src/textarea-utils.js +61 -0
  376. package/dist/components/time-picker/index.d.ts +3 -2
  377. package/dist/components/time-picker/src/RsTimePicker.css +41 -24
  378. package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
  379. package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
  380. package/dist/components/time-picker/src/RsTimePicker.js +1 -3
  381. package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
  382. package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
  383. package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
  384. package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
  385. package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
  386. package/dist/components/time-picker/src/time-picker-utils.js +97 -5
  387. package/dist/components/toaster/src/RsToaster.css +156 -203
  388. package/dist/components/toaster/src/RsToaster.d.ts +33 -3
  389. package/dist/components/toaster/src/RsToaster.impl.js +309 -34
  390. package/dist/components/toaster/src/toast-store.d.ts +95 -0
  391. package/dist/components/toaster/src/toast-store.js +177 -0
  392. package/dist/components/toaster/src/toast-utils.d.ts +60 -0
  393. package/dist/components/toaster/src/toast-utils.js +86 -0
  394. package/dist/components/toolbar/index.d.ts +1 -1
  395. package/dist/components/toolbar/src/RsToolbar.css +206 -32
  396. package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
  397. package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
  398. package/dist/components/toolbar/src/RsToolbar.js +2 -1
  399. package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
  400. package/dist/components/toolbar/src/toolbar-utils.js +105 -0
  401. package/dist/components/tooltip/index.d.ts +1 -0
  402. package/dist/components/tooltip/src/RsTooltip.css +104 -26
  403. package/dist/components/tooltip/src/RsTooltip.d.ts +39 -17
  404. package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
  405. package/dist/components/tooltip/src/RsTooltip.js +2 -1
  406. package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
  407. package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
  408. package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
  409. package/dist/components/tooltip/src/tooltip-utils.js +23 -0
  410. package/dist/components/tree/index.d.ts +2 -2
  411. package/dist/components/tree/src/RsTree.css +84 -75
  412. package/dist/components/tree/src/RsTree.d.ts +23 -23
  413. package/dist/components/tree/src/RsTree.impl.js +292 -66
  414. package/dist/components/tree/src/RsTree.js +1 -1
  415. package/dist/components/tree/src/tree-utils.d.ts +22 -0
  416. package/dist/components/tree/src/tree-utils.js +18 -4
  417. package/dist/components/tree-select/index.d.ts +2 -0
  418. package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
  419. package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
  420. package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
  421. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  422. package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
  423. package/dist/components/tree-select/src/tree-select-utils.js +60 -0
  424. package/dist/components/upload/index.d.ts +2 -1
  425. package/dist/components/upload/src/RsUpload.css +223 -75
  426. package/dist/components/upload/src/RsUpload.d.ts +77 -1
  427. package/dist/components/upload/src/RsUpload.impl.js +404 -90
  428. package/dist/components/upload/src/RsUpload.js +1 -1
  429. package/dist/components/upload/src/upload-utils.d.ts +21 -2
  430. package/dist/components/upload/src/upload-utils.js +139 -9
  431. package/dist/components/virtual-list/index.d.ts +1 -1
  432. package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
  433. package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
  434. package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
  435. package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
  436. package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
  437. package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
  438. package/dist/composables/useRsLoadingBar.d.ts +2 -5
  439. package/dist/composables/useRsLoadingBar.js +21 -5
  440. package/dist/composables/useRsTabsNav.d.ts +3 -1
  441. package/dist/composables/useRsTabsNav.js +96 -28
  442. package/dist/composables/useRsToast.d.ts +11 -13
  443. package/dist/composables/useRsToast.js +66 -17
  444. package/dist/index.d.ts +51 -32
  445. package/dist/index.js +20 -0
  446. package/dist/locale/apply.js +6 -1
  447. package/dist/locale/messages.js +174 -4
  448. package/dist/styles.css +1007 -980
  449. package/dist/theme/brand.example.css +3 -2
  450. package/dist/vite-plugins/niuma-ui-host.js +1 -1
  451. package/package.json +2 -3
  452. package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
  453. package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
  454. package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
  455. package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
  456. package/dist/components/mentions/src/RsMentions-1.css +0 -29
  457. package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
@@ -21,6 +21,19 @@ type __VLS_Props = {
21
21
  size?: RsFieldsetSize;
22
22
  /** 原生 fieldset name */
23
23
  name?: string;
24
+ /** 关联外部 form id(分组不嵌在 form 内时) */
25
+ form?: string;
26
+ /** 根 fieldset id */
27
+ id?: string;
28
+ /**
29
+ * 组必填标记。只画星号;真正 required 仍在字段上。
30
+ * 没有 HTML fieldset.required。
31
+ */
32
+ required?: boolean;
33
+ /** 组级校验失败(描边走 danger) */
34
+ invalid?: boolean;
35
+ /** 组级错误文案;有文案或 #error 时也视为 invalid */
36
+ error?: string;
24
37
  /** 边框线型 */
25
38
  borderStyle?: RsFieldsetBorderStyle;
26
39
  /** 边框浓度;faded 为虚化 */
@@ -32,7 +45,7 @@ type __VLS_Props = {
32
45
  /** 标题字号 */
33
46
  titleSize?: RsFieldsetTitleSize;
34
47
  };
35
- declare var __VLS_1: {}, __VLS_10: {}, __VLS_12: {}, __VLS_14: {};
48
+ declare var __VLS_1: {}, __VLS_10: {}, __VLS_12: {}, __VLS_14: {}, __VLS_16: {}, __VLS_18: {};
36
49
  type __VLS_Slots = {} & {
37
50
  legend?: (props: typeof __VLS_1) => any;
38
51
  } & {
@@ -40,10 +53,16 @@ type __VLS_Slots = {} & {
40
53
  } & {
41
54
  extra?: (props: typeof __VLS_12) => any;
42
55
  } & {
43
- default?: (props: typeof __VLS_14) => any;
56
+ tooltip?: (props: typeof __VLS_14) => any;
57
+ } & {
58
+ default?: (props: typeof __VLS_16) => any;
59
+ } & {
60
+ error?: (props: typeof __VLS_18) => any;
44
61
  };
45
62
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
63
+ required: boolean;
46
64
  size: RsFieldsetSize;
65
+ invalid: boolean;
47
66
  disabled: boolean;
48
67
  borderStyle: RsFieldsetBorderStyle;
49
68
  borderTone: RsFieldsetBorderTone;
@@ -1,10 +1,17 @@
1
1
  import { useRsI18n } from "../../../composables/useRsI18n.js";
2
2
  import { useRsFormContext } from "../../form/src/form-utils.js";
3
3
  import RsTooltip_default from "../../tooltip/src/RsTooltip.js";
4
- import { resolveFieldsetTitleSize, resolveFieldsetTitleWeight } from "./fieldset-utils.js";
5
- import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, defineComponent, normalizeClass, normalizeStyle, openBlock, renderSlot, toDisplayString, useSlots, withCtx } from "vue";
4
+ import { resolveFieldsetInvalid, resolveFieldsetTitleSize, resolveFieldsetTitleWeight, resolveFieldsetTooltip } from "./fieldset-utils.js";
5
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, renderSlot, toDisplayString, unref, useId, useSlots, withCtx } from "vue";
6
6
  //#region src/components/fieldset/src/RsFieldset.vue?vue&type=script&setup=true&lang.ts
7
- var _hoisted_1 = ["name", "disabled"];
7
+ var _hoisted_1 = [
8
+ "id",
9
+ "name",
10
+ "form",
11
+ "disabled",
12
+ "aria-invalid",
13
+ "aria-describedby"
14
+ ];
8
15
  var _hoisted_2 = {
9
16
  key: 0,
10
17
  class: "rs-fieldset__legend"
@@ -12,10 +19,21 @@ var _hoisted_2 = {
12
19
  var _hoisted_3 = { class: "rs-fieldset__heading" };
13
20
  var _hoisted_4 = { class: "rs-fieldset__title" };
14
21
  var _hoisted_5 = {
22
+ key: 0,
23
+ class: "rs-fieldset__required",
24
+ "aria-hidden": "true"
25
+ };
26
+ var _hoisted_6 = {
27
+ key: 1,
28
+ class: "rs-fieldset__sr"
29
+ };
30
+ var _hoisted_7 = {
15
31
  key: 0,
16
32
  class: "rs-fieldset__extra"
17
33
  };
18
- var _hoisted_6 = { class: "rs-fieldset__body" };
34
+ var _hoisted_8 = { class: "rs-fieldset__body" };
35
+ var _hoisted_9 = ["id"];
36
+ var _hoisted_10 = ["id"];
19
37
  var RsFieldset_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
20
38
  name: "RsFieldset",
21
39
  __name: "RsFieldset",
@@ -29,6 +47,17 @@ var RsFieldset_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
29
47
  },
30
48
  size: { default: "md" },
31
49
  name: {},
50
+ form: {},
51
+ id: {},
52
+ required: {
53
+ type: Boolean,
54
+ default: false
55
+ },
56
+ invalid: {
57
+ type: Boolean,
58
+ default: false
59
+ },
60
+ error: {},
32
61
  borderStyle: { default: "solid" },
33
62
  borderTone: { default: "default" },
34
63
  titleWeight: { default: "semibold" },
@@ -39,38 +68,76 @@ var RsFieldset_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
39
68
  const props = __props;
40
69
  const slots = useSlots();
41
70
  const { t } = useRsI18n();
42
- const form = useRsFormContext();
43
- const isDisabled = computed(() => Boolean(props.disabled || form?.disabled.value));
44
- const resolvedTooltip = computed(() => (props.tooltip || props.description || "").trim());
71
+ const formContext = useRsFormContext();
72
+ const autoErrorId = useId();
73
+ const autoHintId = useId();
74
+ const isDisabled = computed(() => Boolean(props.disabled || formContext?.disabled.value));
75
+ const resolvedTooltip = computed(() => resolveFieldsetTooltip(props.tooltip, props.description));
45
76
  const hasTooltip = computed(() => Boolean(resolvedTooltip.value || slots.tooltip));
46
- const hasLegend = computed(() => Boolean(props.legend || slots.legend || slots.extra || hasTooltip.value));
77
+ const hasError = computed(() => Boolean(props.error?.trim() || slots.error));
78
+ const isInvalid = computed(() => resolveFieldsetInvalid(props.invalid, props.error, Boolean(slots.error)));
79
+ const hasLegend = computed(() => Boolean(props.legend || slots.legend || slots.extra || hasTooltip.value || props.required));
80
+ const showDisabledHint = computed(() => isDisabled.value && hasTooltip.value);
47
81
  const helpLabel = computed(() => t("fieldset.help", "Group help"));
82
+ const errorId = computed(() => hasError.value ? autoErrorId : void 0);
83
+ const hintId = computed(() => showDisabledHint.value ? autoHintId : void 0);
84
+ const describedBy = computed(() => {
85
+ const ids = [errorId.value, hintId.value].filter(Boolean);
86
+ return ids.length ? ids.join(" ") : void 0;
87
+ });
88
+ const rootClass = computed(() => [
89
+ "rs-fieldset",
90
+ `rs-fieldset--${props.size}`,
91
+ `rs-fieldset--${props.borderStyle}`,
92
+ `rs-fieldset--tone-${props.borderTone}`,
93
+ `rs-fieldset--title-${props.titleTone}`,
94
+ {
95
+ "rs-fieldset--disabled": isDisabled.value,
96
+ "rs-fieldset--invalid": isInvalid.value
97
+ }
98
+ ]);
48
99
  const rootStyle = computed(() => ({
49
100
  "--rs-fieldset-title-size": resolveFieldsetTitleSize(props.titleSize),
50
101
  "--rs-fieldset-title-weight": resolveFieldsetTitleWeight(props.titleWeight)
51
102
  }));
52
103
  return (_ctx, _cache) => {
53
104
  return openBlock(), createElementBlock("fieldset", {
54
- class: normalizeClass(["rs-fieldset", [
55
- `rs-fieldset--${__props.size}`,
56
- `rs-fieldset--${__props.borderStyle}`,
57
- `rs-fieldset--tone-${__props.borderTone}`,
58
- `rs-fieldset--title-${__props.titleTone}`,
59
- { "rs-fieldset--disabled": isDisabled.value }
60
- ]]),
105
+ id: __props.id,
106
+ class: normalizeClass(rootClass.value),
61
107
  style: normalizeStyle(rootStyle.value),
62
108
  name: __props.name,
63
- disabled: isDisabled.value
64
- }, [hasLegend.value ? (openBlock(), createElementBlock("legend", _hoisted_2, [createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "legend", {}, () => [createElementVNode("span", _hoisted_4, toDisplayString(__props.legend), 1)], true), hasTooltip.value ? (openBlock(), createBlock(RsTooltip_default, {
65
- key: 0,
66
- icon: "",
67
- content: resolvedTooltip.value,
68
- "aria-label": helpLabel.value
69
- }, createSlots({ _: 2 }, [_ctx.$slots.tooltip ? {
70
- name: "content",
71
- fn: withCtx(() => [renderSlot(_ctx.$slots, "tooltip", {}, void 0, true)]),
72
- key: "0"
73
- } : void 0]), 1032, ["content", "aria-label"])) : createCommentVNode("", true)]), _ctx.$slots.extra ? (openBlock(), createElementBlock("span", _hoisted_5, [renderSlot(_ctx.$slots, "extra", {}, void 0, true)])) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", _hoisted_6, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 14, _hoisted_1);
109
+ form: __props.form,
110
+ disabled: isDisabled.value,
111
+ "aria-invalid": isInvalid.value ? "true" : void 0,
112
+ "aria-describedby": describedBy.value
113
+ }, [hasLegend.value ? (openBlock(), createElementBlock("legend", _hoisted_2, [createElementVNode("span", _hoisted_3, [
114
+ renderSlot(_ctx.$slots, "legend", {}, () => [createElementVNode("span", _hoisted_4, toDisplayString(__props.legend), 1)], true),
115
+ __props.required ? (openBlock(), createElementBlock("span", _hoisted_5, "*")) : createCommentVNode("", true),
116
+ __props.required ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(unref(t)("label.required")), 1)) : createCommentVNode("", true),
117
+ hasTooltip.value && !isDisabled.value ? (openBlock(), createBlock(RsTooltip_default, {
118
+ key: 2,
119
+ icon: "",
120
+ content: resolvedTooltip.value,
121
+ "aria-label": helpLabel.value
122
+ }, createSlots({ _: 2 }, [_ctx.$slots.tooltip ? {
123
+ name: "content",
124
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "tooltip", {}, void 0, true)]),
125
+ key: "0"
126
+ } : void 0]), 1032, ["content", "aria-label"])) : createCommentVNode("", true)
127
+ ]), _ctx.$slots.extra ? (openBlock(), createElementBlock("span", _hoisted_7, [renderSlot(_ctx.$slots, "extra", {}, void 0, true)])) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", _hoisted_8, [
128
+ showDisabledHint.value ? (openBlock(), createElementBlock("div", {
129
+ key: 0,
130
+ id: hintId.value,
131
+ class: "rs-fieldset__hint"
132
+ }, [renderSlot(_ctx.$slots, "tooltip", {}, () => [createTextVNode(toDisplayString(resolvedTooltip.value), 1)], true)], 8, _hoisted_9)) : createCommentVNode("", true),
133
+ renderSlot(_ctx.$slots, "default", {}, void 0, true),
134
+ hasError.value ? (openBlock(), createElementBlock("p", {
135
+ key: 1,
136
+ id: errorId.value,
137
+ class: "rs-fieldset__error",
138
+ role: "alert"
139
+ }, [renderSlot(_ctx.$slots, "error", {}, () => [createTextVNode(toDisplayString(__props.error), 1)], true)], 8, _hoisted_10)) : createCommentVNode("", true)
140
+ ])], 14, _hoisted_1);
74
141
  };
75
142
  }
76
143
  });
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsFieldset_vue_vue_type_script_setup_true_lang_default from "./RsFieldset.impl.js";
4
4
 
5
5
  //#region src/components/fieldset/src/RsFieldset.vue
6
- var RsFieldset_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsFieldset_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b3043538"]]);
6
+ var RsFieldset_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsFieldset_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-460cb31f"]]);
7
7
  //#endregion
8
8
  export { RsFieldset_default as default };
@@ -27,3 +27,7 @@ export type RsFieldsetTitleSize = Extract<RsFontSize, 'xs' | 'sm' | 'base'>;
27
27
  export declare function resolveFieldsetTitleSize(size: RsFieldsetTitleSize): string;
28
28
  /** 解析标题字重 token。 */
29
29
  export declare function resolveFieldsetTitleWeight(weight: RsFontWeight): string;
30
+ /** tooltip 优先;弃用的 description 仍映射到同一 tip。 */
31
+ export declare function resolveFieldsetTooltip(tooltip: string | undefined, description: string | undefined): string;
32
+ /** 显式 invalid,或有错误文案 / #error,都算组级失败。 */
33
+ export declare function resolveFieldsetInvalid(invalid: boolean, error: string | undefined, hasErrorSlot: boolean): boolean;
@@ -8,5 +8,13 @@ function resolveFieldsetTitleSize(size) {
8
8
  function resolveFieldsetTitleWeight(weight) {
9
9
  return RS_FONT_WEIGHT_CSS[weight];
10
10
  }
11
+ /** tooltip 优先;弃用的 description 仍映射到同一 tip。 */
12
+ function resolveFieldsetTooltip(tooltip, description) {
13
+ return (tooltip || description || "").trim();
14
+ }
15
+ /** 显式 invalid,或有错误文案 / #error,都算组级失败。 */
16
+ function resolveFieldsetInvalid(invalid, error, hasErrorSlot) {
17
+ return Boolean(invalid || error?.trim() || hasErrorSlot);
18
+ }
11
19
  //#endregion
12
- export { resolveFieldsetTitleSize, resolveFieldsetTitleWeight };
20
+ export { resolveFieldsetInvalid, resolveFieldsetTitleSize, resolveFieldsetTitleWeight, resolveFieldsetTooltip };
@@ -1,4 +1,5 @@
1
1
  export { default as RsForm } from './src/RsForm.js';
2
+ export type { RsFormExpose, RsFormInstance } from './src/RsForm.js';
2
3
  export { default as RsFormItem } from './src/RsFormItem.js';
3
4
  export { default as RsFormList } from './src/RsFormList.js';
4
5
  export type { RsFormContext, RsFormErrorRender, RsFormErrorRenderContext, RsFormFieldExpose, RsFormItemContext, RsFormListContext, RsFormListField, RsFormListOperations, RsFormFieldValidationResult, RsFormGap, RsFormLabelAlign, RsFormLabelPosition, RsFormMaxWidth, RsFormSize, RsFormValidateStatus, RsFormValidationResult, } from './src/form-utils';
@@ -1,30 +1,33 @@
1
1
 
2
- .rs-form[data-v-2243abc5] {
2
+ .rs-form[data-v-0cdc7aeb] {
3
+ --rs-form-max-sm: 24rem;
4
+ --rs-form-max-md: 32rem;
5
+ --rs-form-max-lg: 48rem;
3
6
  display: flex;
4
7
  flex-direction: column;
5
8
  width: 100%;
6
9
  }
7
- .rs-form--gap-sm[data-v-2243abc5] {
10
+ .rs-form--gap-sm[data-v-0cdc7aeb] {
8
11
  gap: var(--rs-space-sm);
9
12
  }
10
- .rs-form--gap-md[data-v-2243abc5] {
13
+ .rs-form--gap-md[data-v-0cdc7aeb] {
11
14
  gap: var(--rs-space-md);
12
15
  }
13
- .rs-form--gap-lg[data-v-2243abc5] {
16
+ .rs-form--gap-lg[data-v-0cdc7aeb] {
14
17
  gap: var(--rs-space-lg);
15
18
  }
16
- .rs-form--max-sm[data-v-2243abc5] {
17
- max-width: 24rem;
19
+ .rs-form--max-sm[data-v-0cdc7aeb] {
20
+ max-width: var(--rs-form-max-sm);
18
21
  }
19
- .rs-form--max-md[data-v-2243abc5] {
20
- max-width: 32rem;
22
+ .rs-form--max-md[data-v-0cdc7aeb] {
23
+ max-width: var(--rs-form-max-md);
21
24
  }
22
- .rs-form--max-lg[data-v-2243abc5] {
23
- max-width: 48rem;
25
+ .rs-form--max-lg[data-v-0cdc7aeb] {
26
+ max-width: var(--rs-form-max-lg);
24
27
  }
25
- .rs-form--max-full[data-v-2243abc5] {
28
+ .rs-form--max-full[data-v-0cdc7aeb] {
26
29
  max-width: 100%;
27
30
  }
28
- .rs-form--max-none[data-v-2243abc5] {
31
+ .rs-form--max-none[data-v-0cdc7aeb] {
29
32
  max-width: none;
30
33
  }
@@ -1,6 +1,25 @@
1
1
  import type { RsFormErrorRender, RsFormFieldValidationResult, RsFormGap, RsFormLabelAlign, RsFormLabelPosition, RsFormMaxWidth, RsFormSize, RsFormValidationResult } from './form-utils';
2
2
  import type { RsFormRuleTrigger, RsFormRules, RsFormValidateMessages } from './form-rules';
3
3
  import { type RsFormNamePath } from './form-path';
4
+ /**
5
+ * RsForm 模板 ref 请用此类型。
6
+ * 不要写 `InstanceType<typeof RsForm>`:组件实例类型过深,vue-tsc 会报 Excessive stack depth。
7
+ */
8
+ export interface RsFormExpose {
9
+ validate: (trigger?: RsFormRuleTrigger) => Promise<RsFormValidationResult>;
10
+ validateField: (name: string, trigger?: RsFormRuleTrigger) => Promise<RsFormFieldValidationResult>;
11
+ clearValidation: (names?: string | string[]) => void;
12
+ resetFields: (names?: string | string[]) => void;
13
+ getFieldsValue: () => Record<string, unknown>;
14
+ setFieldsValue: (values: Record<string, unknown>) => void;
15
+ getFieldValue: (name: RsFormNamePath) => unknown;
16
+ setFieldValue: (name: RsFormNamePath, value: unknown) => void;
17
+ scrollToField: (name: RsFormNamePath) => void;
18
+ }
19
+ /** 模板 ref 实例:expose + 根 form */
20
+ export type RsFormInstance = RsFormExpose & {
21
+ $el: HTMLFormElement;
22
+ };
4
23
  type __VLS_Props = {
5
24
  disabled?: boolean;
6
25
  labelPosition?: RsFormLabelPosition;
@@ -29,32 +48,11 @@ type __VLS_Props = {
29
48
  */
30
49
  errorRender?: RsFormErrorRender;
31
50
  };
32
- declare function getFieldValue(name: RsFormNamePath): unknown;
33
- declare function setFieldValue(name: RsFormNamePath, value: unknown): void;
34
- declare function getFieldsValue(): Record<string, unknown>;
35
- declare function setFieldsValue(values: Record<string, unknown>): void;
36
- declare function scrollToField(name: RsFormNamePath): void;
37
- /** 校验全部字段;可传 trigger 过滤规则 */
38
- declare function validate(trigger?: RsFormRuleTrigger): Promise<RsFormValidationResult>;
39
- /** 按 name 校验单个字段 */
40
- declare function validateField(name: string, trigger?: RsFormRuleTrigger): Promise<RsFormFieldValidationResult>;
41
- declare function clearValidation(names?: string | string[]): void;
42
- declare function resetFields(names?: string | string[]): void;
43
51
  declare var __VLS_1: {};
44
52
  type __VLS_Slots = {} & {
45
53
  default?: (props: typeof __VLS_1) => any;
46
54
  };
47
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
48
- validate: typeof validate;
49
- validateField: typeof validateField;
50
- clearValidation: typeof clearValidation;
51
- resetFields: typeof resetFields;
52
- getFieldsValue: typeof getFieldsValue;
53
- setFieldsValue: typeof setFieldsValue;
54
- getFieldValue: typeof getFieldValue;
55
- setFieldValue: typeof setFieldValue;
56
- scrollToField: typeof scrollToField;
57
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
55
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, RsFormExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
58
56
  submit: (event: Event) => any;
59
57
  validate: (result: RsFormValidationResult) => any;
60
58
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
@@ -65,9 +63,9 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
65
63
  gap: RsFormGap;
66
64
  size: RsFormSize;
67
65
  disabled: boolean;
68
- labelPosition: RsFormLabelPosition;
69
66
  labelWidth: string;
70
67
  labelAlign: RsFormLabelAlign;
68
+ labelPosition: RsFormLabelPosition;
71
69
  validateOnSubmit: boolean;
72
70
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
73
71
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,8 +1,9 @@
1
1
  import { getByNamePath, namePathKey, setByNamePath } from "./form-path.js";
2
- import { cloneFormFieldValue, provideRsFormContext, resolveFieldRules } from "./form-utils.js";
3
- import { computed, createElementBlock, defineComponent, normalizeClass, openBlock, ref, renderSlot, toRef, useSlots } from "vue";
2
+ import { cloneFormFieldValue, normalizeRsFormNameFilter, provideRsFormContext, resolveFieldRules, scrollRsFormField } from "./form-utils.js";
3
+ import { computed, createElementBlock, defineComponent, normalizeClass, onBeforeUnmount, openBlock, renderSlot, toRef, useSlots, useTemplateRef } from "vue";
4
4
  //#region src/components/form/src/RsForm.vue?vue&type=script&setup=true&lang.ts
5
5
  var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
+ name: "RsForm",
6
7
  __name: "RsForm",
7
8
  props: {
8
9
  disabled: {
@@ -29,7 +30,11 @@ var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
29
30
  const props = __props;
30
31
  const emit = __emit;
31
32
  const slots = useSlots();
33
+ const formEl = useTemplateRef("formEl");
32
34
  const fields = /* @__PURE__ */ new Map();
35
+ const fieldsByName = /* @__PURE__ */ new Map();
36
+ const initialValues = /* @__PURE__ */ new Map();
37
+ let mounted = true;
33
38
  const disabledRef = computed(() => props.disabled);
34
39
  const labelPositionRef = computed(() => props.labelPosition);
35
40
  const labelWidthRef = computed(() => props.labelWidth);
@@ -38,30 +43,33 @@ var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
38
43
  const rulesRef = toRef(props, "rules");
39
44
  const modelRef = toRef(props, "model");
40
45
  const validateMessagesRef = computed(() => props.validateMessages);
41
- const initialValues = ref(/* @__PURE__ */ new Map());
42
46
  function registerField(id, field) {
43
47
  fields.set(id, field);
44
- initialValues.value.set(id, cloneFormFieldValue(field.getValue()));
48
+ initialValues.set(id, cloneFormFieldValue(field.getValue()));
49
+ if (field.name && !fieldsByName.has(field.name)) fieldsByName.set(field.name, field);
45
50
  }
46
51
  function unregisterField(id) {
52
+ const field = fields.get(id);
47
53
  fields.delete(id);
48
- initialValues.value.delete(id);
54
+ initialValues.delete(id);
55
+ if (field?.name && fieldsByName.get(field.name) === field) fieldsByName.delete(field.name);
56
+ }
57
+ function findField(name) {
58
+ return fieldsByName.get(name);
49
59
  }
50
60
  function getFieldRules(name) {
51
61
  return resolveFieldRules(props.rules, name);
52
62
  }
53
63
  function getFieldValue(name) {
54
64
  if (modelRef.value) return getByNamePath(modelRef.value, name);
55
- const key = namePathKey(name);
56
- return Array.from(fields.values()).find((item) => item.name === key)?.getValue();
65
+ return findField(namePathKey(name))?.getValue();
57
66
  }
58
67
  function setFieldValue(name, value) {
59
68
  if (modelRef.value) {
60
69
  setByNamePath(modelRef.value, name, value);
61
70
  return;
62
71
  }
63
- const key = namePathKey(name);
64
- Array.from(fields.values()).find((item) => item.name === key)?.setValue(value);
72
+ findField(namePathKey(name))?.setValue(value);
65
73
  }
66
74
  function getFieldsValue() {
67
75
  if (modelRef.value) return { ...modelRef.value };
@@ -78,13 +86,7 @@ var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
78
86
  });
79
87
  }
80
88
  function scrollToField(name) {
81
- if (typeof document === "undefined") return;
82
- const key = namePathKey(name);
83
- const el = document.querySelector(`[data-rs-form-item="${CSS.escape(key)}"]`);
84
- if (el instanceof HTMLElement) el.scrollIntoView({
85
- block: "nearest",
86
- behavior: "smooth"
87
- });
89
+ scrollRsFormField(formEl.value, name);
88
90
  }
89
91
  function renderError(ctx) {
90
92
  if (slots.error) return slots.error(ctx);
@@ -121,12 +123,13 @@ var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
121
123
  valid: true,
122
124
  name: field.name
123
125
  })));
126
+ if (!mounted) return aggregated;
124
127
  emit("validate", aggregated);
125
128
  return aggregated;
126
129
  }
127
130
  /** 按 name 校验单个字段 */
128
131
  async function validateField(name, trigger = "submit") {
129
- const field = Array.from(fields.values()).find((item) => item.name === name);
132
+ const field = findField(name);
130
133
  if (!field) return {
131
134
  valid: true,
132
135
  name
@@ -140,17 +143,17 @@ var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
140
143
  };
141
144
  }
142
145
  function clearValidation(names) {
143
- const nameSet = names ? new Set(Array.isArray(names) ? names : [names]) : null;
146
+ const nameSet = normalizeRsFormNameFilter(names);
144
147
  fields.forEach((field) => {
145
148
  if (nameSet && (!field.name || !nameSet.has(field.name))) return;
146
149
  field.clearValidation?.();
147
150
  });
148
151
  }
149
152
  function resetFields(names) {
150
- const nameSet = names ? new Set(Array.isArray(names) ? names : [names]) : null;
153
+ const nameSet = normalizeRsFormNameFilter(names);
151
154
  fields.forEach((field, id) => {
152
155
  if (nameSet && (!field.name || !nameSet.has(field.name))) return;
153
- field.setValue(cloneFormFieldValue(initialValues.value.get(id)));
156
+ field.setValue(cloneFormFieldValue(initialValues.get(id)));
154
157
  field.clearValidation?.();
155
158
  });
156
159
  }
@@ -159,8 +162,15 @@ var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
159
162
  event.preventDefault();
160
163
  if (!(await validate("submit")).valid) return;
161
164
  }
165
+ if (!mounted) return;
162
166
  emit("submit", event);
163
167
  }
168
+ onBeforeUnmount(() => {
169
+ mounted = false;
170
+ fields.clear();
171
+ fieldsByName.clear();
172
+ initialValues.clear();
173
+ });
164
174
  __expose({
165
175
  validate,
166
176
  validateField,
@@ -174,11 +184,14 @@ var RsForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
174
184
  });
175
185
  return (_ctx, _cache) => {
176
186
  return openBlock(), createElementBlock("form", {
187
+ ref_key: "formEl",
188
+ ref: formEl,
177
189
  class: normalizeClass(["rs-form", [
178
190
  `rs-form--gap-${__props.gap}`,
179
191
  `rs-form--max-${__props.maxWidth}`,
180
192
  `rs-form--label-${__props.labelPosition}`
181
193
  ]]),
194
+ novalidate: "",
182
195
  onSubmit
183
196
  }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 34);
184
197
  };
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
3
3
  import RsForm_vue_vue_type_script_setup_true_lang_default from "./RsForm.impl.js";
4
4
 
5
5
  //#region src/components/form/src/RsForm.vue
6
- var RsForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-2243abc5"]]);
6
+ var RsForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsForm_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0cdc7aeb"]]);
7
7
  //#endregion
8
8
  export { RsForm_default as default };
@@ -118,3 +118,10 @@ export declare function useRsFormField(getExpose: () => RsFormFieldExpose | unde
118
118
  export declare function resolveRsFormSize(size?: RsFormSize, form?: RsFormContext | null): ComputedRef<RsFormSize>;
119
119
  /** 供 Form 内部解析某字段 rules */
120
120
  export declare function resolveFieldRules(rules: RsFormRules | undefined, name?: string): RsFormRuleItem[];
121
+ /** clearValidation / resetFields 的 names 过滤。不传则清全部。 */
122
+ export declare function normalizeRsFormNameFilter(names?: string | string[]): Set<string> | null;
123
+ export declare function escapeRsFormSelectorValue(value: string): string;
124
+ export declare function prefersRsReducedMotion(): boolean;
125
+ /** 在本表根内找 data-rs-form-item,避免两张同名字段的表滚错。 */
126
+ export declare function queryRsFormItem(root: ParentNode | null | undefined, name: RsFormNamePath): HTMLElement | null;
127
+ export declare function scrollRsFormField(root: ParentNode | null | undefined, name: RsFormNamePath): void;
@@ -63,5 +63,32 @@ function resolveFieldRules(rules, name) {
63
63
  if (!name || !rules) return [];
64
64
  return normalizeFormRules(rules[name]);
65
65
  }
66
+ /** clearValidation / resetFields 的 names 过滤。不传则清全部。 */
67
+ function normalizeRsFormNameFilter(names) {
68
+ if (!names) return null;
69
+ return new Set(Array.isArray(names) ? names : [names]);
70
+ }
71
+ function escapeRsFormSelectorValue(value) {
72
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
73
+ return value.replace(/["\\]/g, (ch) => `\\${ch}`);
74
+ }
75
+ function prefersRsReducedMotion() {
76
+ return typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
77
+ }
78
+ /** 在本表根内找 data-rs-form-item,避免两张同名字段的表滚错。 */
79
+ function queryRsFormItem(root, name) {
80
+ if (!root || typeof root.querySelector !== "function") return null;
81
+ const key = namePathKey(name);
82
+ const el = root.querySelector(`[data-rs-form-item="${escapeRsFormSelectorValue(key)}"]`);
83
+ return el instanceof HTMLElement ? el : null;
84
+ }
85
+ function scrollRsFormField(root, name) {
86
+ const el = queryRsFormItem(root, name);
87
+ if (!el) return;
88
+ el.scrollIntoView({
89
+ block: "nearest",
90
+ behavior: prefersRsReducedMotion() ? "auto" : "smooth"
91
+ });
92
+ }
66
93
  //#endregion
67
- export { RS_FORM_INJECTION_KEY, RS_FORM_ITEM_INJECTION_KEY, RS_FORM_LIST_INJECTION_KEY, cloneFormFieldValue, isRsFormItemBoundControl, provideRsFormContext, provideRsFormItemContext, provideRsFormListContext, resolveFieldRules, useRsFormContext, useRsFormField, useRsFormItemContext, useRsFormListContext };
94
+ export { RS_FORM_INJECTION_KEY, RS_FORM_ITEM_INJECTION_KEY, RS_FORM_LIST_INJECTION_KEY, cloneFormFieldValue, escapeRsFormSelectorValue, isRsFormItemBoundControl, normalizeRsFormNameFilter, prefersRsReducedMotion, provideRsFormContext, provideRsFormItemContext, provideRsFormListContext, queryRsFormItem, resolveFieldRules, scrollRsFormField, useRsFormContext, useRsFormField, useRsFormItemContext, useRsFormListContext };
@@ -1,4 +1,4 @@
1
1
  export { default as RsInput } from './src/RsInput.js';
2
- export type { RsInputExpose, RsInputInstance } from './src/RsInput.js';
2
+ export type { RsInputExpose, RsInputInstance, RsInputType } from './src/RsInput.js';
3
3
  export type { RsInputRule, RsInputValidateTrigger, RsInputValidateResult, } from './src/input-rules';
4
4
  export { validateInputRule, runInputValidation, getInputRuleMessage, inputRuleMessageKeys, } from './src/input-rules';