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
@@ -1,11 +1,35 @@
1
1
  import { type RsContextMenuItem } from './context-menu-utils';
2
2
  type __VLS_Props = {
3
3
  items: RsContextMenuItem[];
4
+ highlight: string;
5
+ openKey: string;
6
+ menuId: string;
7
+ layerId: string;
8
+ iconSize: number;
4
9
  };
5
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ declare var __VLS_20: {
11
+ item: RsContextMenuItem;
12
+ highlighted: boolean;
13
+ checked: boolean;
14
+ };
15
+ type __VLS_Slots = {} & {
16
+ item?: (props: typeof __VLS_20) => any;
17
+ };
18
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
19
+ getHighlight: () => string;
20
+ setHighlight: (key: string) => void;
21
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
22
  select: (item: RsContextMenuItem) => any;
23
+ hover: (item: RsContextMenuItem) => any;
7
24
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
8
25
  onSelect?: ((item: RsContextMenuItem) => any) | undefined;
26
+ onHover?: ((item: RsContextMenuItem) => any) | undefined;
9
27
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
10
29
  declare const _default: typeof __VLS_export;
11
30
  export default _default;
31
+ type __VLS_WithSlots<T, S> = T & {
32
+ new (): {
33
+ $slots: S;
34
+ };
35
+ };
@@ -1,86 +1,135 @@
1
- import { ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger } from "../../_shared/src/reka.js";
2
1
  import RsIcon_default from "../../icon/src/RsIcon.js";
3
- import RsContextMenuItems_default from "./RsContextMenuItems.js";
4
- import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
2
+ import { contextMenuItemRole, hasContextMenuChildren, isContextMenuSeparator, resolveContextMenuRel } from "./context-menu-utils.js";
3
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, watch, withCtx } from "vue";
5
4
  //#region src/components/context-menu/src/RsContextMenuItems.vue?vue&type=script&setup=true&lang.ts
6
- var _hoisted_1 = { class: "rs-context-menu__icon-cell" };
7
- var _hoisted_2 = { class: "rs-context-menu__label" };
5
+ var _hoisted_1 = {
6
+ key: 0,
7
+ class: "rs-context-menu__group"
8
+ };
9
+ var _hoisted_2 = {
10
+ key: 1,
11
+ class: "rs-context-menu__separator"
12
+ };
8
13
  var _hoisted_3 = { class: "rs-context-menu__icon-cell" };
9
- var _hoisted_4 = { class: "rs-context-menu__label" };
10
- var _hoisted_5 = {
14
+ var _hoisted_4 = { class: "rs-context-menu__text" };
15
+ var _hoisted_5 = { class: "rs-context-menu__label" };
16
+ var _hoisted_6 = {
17
+ key: 0,
18
+ class: "rs-context-menu__hint"
19
+ };
20
+ var _hoisted_7 = {
11
21
  key: 0,
12
22
  class: "rs-context-menu__shortcut"
13
23
  };
14
24
  var RsContextMenuItems_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
15
25
  __name: "RsContextMenuItems",
16
- props: { items: {} },
17
- emits: ["select"],
18
- setup(__props, { emit: __emit }) {
26
+ props: {
27
+ items: {},
28
+ highlight: {},
29
+ openKey: {},
30
+ menuId: {},
31
+ layerId: {},
32
+ iconSize: {}
33
+ },
34
+ emits: ["select", "hover"],
35
+ setup(__props, { expose: __expose, emit: __emit }) {
36
+ const props = __props;
19
37
  const emit = __emit;
20
- function onSelect(item) {
21
- if (item.disabled || item.separator) return;
38
+ const current = ref(props.highlight);
39
+ watch(() => props.highlight, (key) => {
40
+ current.value = key;
41
+ });
42
+ function onPointerEnter(item) {
43
+ if (current.value !== item.key) current.value = item.key;
44
+ emit("hover", item);
45
+ }
46
+ __expose({
47
+ getHighlight: () => current.value,
48
+ setHighlight: (key) => {
49
+ current.value = key;
50
+ }
51
+ });
52
+ function itemId(item, index) {
53
+ return `${props.menuId}-${props.layerId}-${index}`;
54
+ }
55
+ function onClick(item, event) {
56
+ if (item.disabled || isContextMenuSeparator(item)) {
57
+ event.preventDefault();
58
+ return;
59
+ }
60
+ if (event.button !== 0) return;
61
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
62
+ emit("select", item);
63
+ return;
64
+ }
22
65
  emit("select", item);
23
66
  }
24
67
  return (_ctx, _cache) => {
25
- return openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
26
- return openBlock(), createElementBlock(Fragment, { key: item.key }, [item.separator ? (openBlock(), createBlock(unref(ContextMenuSeparator), {
27
- key: 0,
28
- class: "rs-context-menu__separator"
29
- })) : item.children?.length ? (openBlock(), createBlock(unref(ContextMenuSub), { key: 1 }, {
30
- default: withCtx(() => [createVNode(unref(ContextMenuSubTrigger), {
31
- class: normalizeClass(["rs-context-menu__item", { "rs-context-menu__item--danger": item.danger }]),
32
- disabled: item.disabled
33
- }, {
34
- default: withCtx(() => [
35
- createElementVNode("span", _hoisted_1, [item.icon ? (openBlock(), createBlock(RsIcon_default, {
36
- key: 0,
37
- name: item.icon,
38
- size: unref(16)
39
- }, null, 8, ["name", "size"])) : createCommentVNode("", true)]),
40
- createElementVNode("span", _hoisted_2, toDisplayString(item.label), 1),
41
- createVNode(RsIcon_default, {
42
- name: "chevron-right",
43
- size: unref(14),
44
- class: "rs-context-menu__arrow"
45
- }, null, 8, ["size"])
46
- ]),
47
- _: 2
48
- }, 1032, ["class", "disabled"]), createVNode(unref(ContextMenuPortal), null, {
49
- default: withCtx(() => [createVNode(unref(ContextMenuSubContent), {
50
- class: "rs-context-menu__sub-content rs-native-scrollbar rs-motion-reduce",
51
- "side-offset": 2,
52
- "align-offset": -6,
53
- "collision-padding": 8
54
- }, {
55
- default: withCtx(() => [createVNode(RsContextMenuItems_default, {
56
- items: item.children,
57
- onSelect: _cache[0] || (_cache[0] = ($event) => emit("select", $event))
58
- }, null, 8, ["items"])]),
59
- _: 2
60
- }, 1024)]),
61
- _: 2
62
- }, 1024)]),
63
- _: 2
64
- }, 1024)) : (openBlock(), createBlock(unref(ContextMenuItem), {
68
+ return openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, index) => {
69
+ return openBlock(), createElementBlock(Fragment, { key: item.key }, [unref(isContextMenuSeparator)(item) && item.label ? (openBlock(), createElementBlock("p", _hoisted_1, toDisplayString(item.label), 1)) : unref(isContextMenuSeparator)(item) ? (openBlock(), createElementBlock("hr", _hoisted_2)) : (openBlock(), createBlock(resolveDynamicComponent(item.href && !item.disabled ? "a" : "button"), {
65
70
  key: 2,
71
+ id: itemId(item, index),
72
+ type: item.href && !item.disabled ? void 0 : "button",
73
+ href: item.href && !item.disabled ? item.href : void 0,
74
+ target: item.href && !item.disabled ? item.target : void 0,
75
+ rel: item.href && !item.disabled ? unref(resolveContextMenuRel)(item) : void 0,
66
76
  class: normalizeClass(["rs-context-menu__item", { "rs-context-menu__item--danger": item.danger }]),
67
- disabled: item.disabled,
68
- onSelect: ($event) => onSelect(item)
77
+ role: unref(contextMenuItemRole)(item),
78
+ tabindex: item.key === current.value && !item.disabled ? 0 : -1,
79
+ "data-ctx-key": item.key,
80
+ "data-highlighted": item.key === current.value ? "" : void 0,
81
+ "data-state": item.key === __props.openKey ? "open" : void 0,
82
+ "data-disabled": item.disabled ? "" : void 0,
83
+ "aria-disabled": item.disabled ? "true" : void 0,
84
+ "aria-checked": item.type === "checkbox" || item.type === "radio" ? Boolean(item.checked) : void 0,
85
+ "aria-haspopup": unref(hasContextMenuChildren)(item) ? "menu" : void 0,
86
+ "aria-expanded": unref(hasContextMenuChildren)(item) ? item.key === __props.openKey : void 0,
87
+ onClick: ($event) => onClick(item, $event),
88
+ onPointerenter: ($event) => onPointerEnter(item)
69
89
  }, {
70
90
  default: withCtx(() => [
71
- createElementVNode("span", _hoisted_3, [item.icon ? (openBlock(), createBlock(RsIcon_default, {
91
+ createElementVNode("span", _hoisted_3, [(item.type === "checkbox" || item.type === "radio") && item.checked ? (openBlock(), createBlock(RsIcon_default, {
72
92
  key: 0,
93
+ name: "check",
94
+ size: __props.iconSize
95
+ }, null, 8, ["size"])) : item.icon ? (openBlock(), createBlock(RsIcon_default, {
96
+ key: 1,
73
97
  name: item.icon,
74
- size: unref(16)
98
+ size: __props.iconSize
75
99
  }, null, 8, ["name", "size"])) : createCommentVNode("", true)]),
76
- createElementVNode("span", _hoisted_4, toDisplayString(item.label), 1),
77
- item.shortcut ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(item.shortcut), 1)) : createCommentVNode("", true)
100
+ createElementVNode("span", _hoisted_4, [renderSlot(_ctx.$slots, "item", {
101
+ item,
102
+ highlighted: item.key === current.value,
103
+ checked: Boolean(item.checked)
104
+ }, () => [createElementVNode("span", _hoisted_5, toDisplayString(item.label), 1), item.hint ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(item.hint), 1)) : createCommentVNode("", true)])]),
105
+ item.shortcut ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(item.shortcut), 1)) : createCommentVNode("", true),
106
+ unref(hasContextMenuChildren)(item) ? (openBlock(), createBlock(RsIcon_default, {
107
+ key: 1,
108
+ name: "chevron-right",
109
+ size: unref(14),
110
+ class: "rs-context-menu__arrow"
111
+ }, null, 8, ["size"])) : createCommentVNode("", true)
78
112
  ]),
79
113
  _: 2
80
- }, 1032, [
114
+ }, 1064, [
115
+ "id",
116
+ "type",
117
+ "href",
118
+ "target",
119
+ "rel",
81
120
  "class",
82
- "disabled",
83
- "onSelect"
121
+ "role",
122
+ "tabindex",
123
+ "data-ctx-key",
124
+ "data-highlighted",
125
+ "data-state",
126
+ "data-disabled",
127
+ "aria-disabled",
128
+ "aria-checked",
129
+ "aria-haspopup",
130
+ "aria-expanded",
131
+ "onClick",
132
+ "onPointerenter"
84
133
  ]))], 64);
85
134
  }), 128);
86
135
  };
@@ -1,21 +1,107 @@
1
+ import { type RsOverlayPopupSize, type RsOverlayViewport } from '../../_shared/src/overlay-utils';
1
2
  /** 右键菜单图标尺寸(与 Dropdown / Menu 一致) */
2
3
  export declare const RS_CONTEXT_MENU_ICON_SIZE = 16;
3
4
  export declare const RS_CONTEXT_MENU_ARROW_SIZE = 14;
5
+ /** 菜单项种类。缺省是普通命令。separator 仍用布尔字段,兼容旧数据。 */
6
+ export type RsContextMenuItemType = 'item' | 'checkbox' | 'radio';
4
7
  /** 右键菜单项定义 */
5
8
  export interface RsContextMenuItem {
6
9
  /** 唯一标识,选中时回传 */
7
10
  key: string;
8
11
  label: string;
9
12
  icon?: string;
13
+ /** 次要说明,不参与选中 */
14
+ hint?: string;
10
15
  disabled?: boolean;
11
16
  /** 危险操作样式 */
12
17
  danger?: boolean;
13
- /** 为 true 时渲染分隔线 */
18
+ /** 为 true 时渲染分隔线。带 label 时是分组标题,仍不可选。 */
14
19
  separator?: boolean;
15
- /** 子菜单项 */
20
+ /** 子菜单项。父级只负责展开,不发 select。 */
16
21
  children?: RsContextMenuItem[];
17
22
  /** 键盘快捷键提示(仅展示,不绑定事件),如 "⌘K"、"⌃C" */
18
23
  shortcut?: string;
24
+ /** checkbox / radio 用 menuitemcheckbox / menuitemradio。缺省是普通命令。 */
25
+ type?: RsContextMenuItemType;
26
+ /** checkbox / radio 的勾选态,由调用方持有 */
27
+ checked?: boolean;
28
+ /** 同一 radio 组的名字,只给无障碍和样式分组,不代管状态 */
29
+ group?: string;
30
+ /** 叶子可写成链接。外链 target=_blank 会补 noopener noreferrer。 */
31
+ href?: string;
32
+ target?: string;
33
+ rel?: string;
34
+ /**
35
+ * 选中后是否关闭。
36
+ * 缺省时普通项跟 hideOnSelect,checkbox / radio 保持打开。
37
+ */
38
+ closeOnSelect?: boolean;
19
39
  }
20
- /** 是否存在可操作项(排除纯分隔线),用于避免空菜单气泡 */
40
+ export type RsContextMenuGetPopupContainer = (trigger?: HTMLElement) => HTMLElement | null | undefined;
41
+ export interface RsContextMenuPoint {
42
+ x: number;
43
+ y: number;
44
+ }
45
+ export interface RsContextMenuExpose {
46
+ /** 在指针处或触发器下沿打开。禁用或没有可点项时无操作。 */
47
+ open: (point?: RsContextMenuPoint) => void;
48
+ close: () => void;
49
+ }
50
+ export interface RsContextMenuItemSlot {
51
+ item: RsContextMenuItem;
52
+ highlighted: boolean;
53
+ checked: boolean;
54
+ }
55
+ export interface RsContextMenuPointBox {
56
+ top: number;
57
+ left: number;
58
+ maxHeight: number;
59
+ originX: 'left' | 'right';
60
+ originY: 'top' | 'bottom';
61
+ }
62
+ export interface RsContextMenuLayerState {
63
+ id: string;
64
+ items: RsContextMenuItem[];
65
+ parentKey: string | null;
66
+ }
67
+ /** 同时只留一个右键菜单,避免多层监听叠在 document 上。 */
68
+ export declare function claimContextMenu(close: () => void): void;
69
+ export declare function releaseContextMenu(close: () => void): void;
70
+ export declare function isContextMenuSeparator(item: RsContextMenuItem): boolean;
71
+ export declare function hasContextMenuChildren(item: RsContextMenuItem): boolean;
72
+ export declare function isContextMenuCheck(item: RsContextMenuItem): boolean;
73
+ export declare function contextMenuItemRole(item: RsContextMenuItem): 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';
74
+ /** 是否存在可操作项(排除纯分隔线与分组标题),用于避免空菜单气泡 */
21
75
  export declare function hasActionableContextMenuItems(items: RsContextMenuItem[] | undefined): boolean;
76
+ /** 当前层可聚焦的项(不含分隔线与分组标题)。 */
77
+ export declare function listContextMenuLayerItems(items: readonly RsContextMenuItem[]): RsContextMenuItem[];
78
+ export declare function firstEnabledContextMenuKey(items: readonly RsContextMenuItem[]): string;
79
+ export declare function lastEnabledContextMenuKey(items: readonly RsContextMenuItem[]): string;
80
+ export declare function stepContextMenuKey(items: readonly RsContextMenuItem[], current: string, delta: 1 | -1): string;
81
+ export declare function findContextMenuItem(items: readonly RsContextMenuItem[], key: string): RsContextMenuItem | undefined;
82
+ /** 根层 + 已展开路径上的子层。路径中断就停,不渲染未打开的分支。 */
83
+ export declare function resolveContextMenuLayers(items: readonly RsContextMenuItem[], path: readonly string[]): RsContextMenuLayerState[];
84
+ export declare function shouldCloseContextMenuOnSelect(item: RsContextMenuItem, hideOnSelect: boolean): boolean;
85
+ export declare function resolveContextMenuKeys(rtl: boolean): {
86
+ next: string;
87
+ prev: string;
88
+ openSub: string;
89
+ closeSub: string;
90
+ };
91
+ export declare function matchContextMenuTypeahead(items: readonly RsContextMenuItem[], query: string, fromIndex?: number): number;
92
+ export declare function escapeContextMenuSelector(value: string): string;
93
+ export declare function resolveContextMenuPortalTarget(getPopupContainer: RsContextMenuGetPopupContainer | undefined, trigger?: HTMLElement | null): string | HTMLElement;
94
+ export declare function resolveContextMenuRel(item: RsContextMenuItem): string | undefined;
95
+ export declare function resolveContextMenuElement(value: unknown): HTMLElement | null;
96
+ /**
97
+ * 菜单从指针处展开:默认向右下,贴边翻到左或上,并给出可滚动的最大高度。
98
+ * RTL 优先向左。padding 把菜单夹进视口。
99
+ */
100
+ export declare function placeContextMenuPoint(point: RsContextMenuPoint, popup: RsOverlayPopupSize, viewport: RsOverlayViewport, padding?: number, rtl?: boolean): RsContextMenuPointBox;
101
+ /** 子菜单贴父项侧面。视口不够时翻到另一侧,并限制可滚动高度。 */
102
+ export declare function placeContextMenuSubmenu(anchor: {
103
+ top: number;
104
+ left: number;
105
+ width: number;
106
+ height: number;
107
+ }, popup: RsOverlayPopupSize, viewport: RsOverlayViewport, rtl: boolean, gap?: number): RsContextMenuPointBox;
@@ -1,8 +1,173 @@
1
+ import { placeSidePopup, stepEnabledIndex } from "../../_shared/src/overlay-utils.js";
1
2
  //#region src/components/context-menu/src/context-menu-utils.ts
2
- /** 是否存在可操作项(排除纯分隔线),用于避免空菜单气泡 */
3
+ var closers = /* @__PURE__ */ new Set();
4
+ /** 同时只留一个右键菜单,避免多层监听叠在 document 上。 */
5
+ function claimContextMenu(close) {
6
+ for (const other of [...closers]) if (other !== close) other();
7
+ closers.add(close);
8
+ }
9
+ function releaseContextMenu(close) {
10
+ closers.delete(close);
11
+ }
12
+ function isContextMenuSeparator(item) {
13
+ return item.separator === true;
14
+ }
15
+ function hasContextMenuChildren(item) {
16
+ return Boolean(item.children?.length);
17
+ }
18
+ function isContextMenuCheck(item) {
19
+ return item.type === "checkbox" || item.type === "radio";
20
+ }
21
+ function contextMenuItemRole(item) {
22
+ if (item.type === "checkbox") return "menuitemcheckbox";
23
+ if (item.type === "radio") return "menuitemradio";
24
+ return "menuitem";
25
+ }
26
+ /** 是否存在可操作项(排除纯分隔线与分组标题),用于避免空菜单气泡 */
3
27
  function hasActionableContextMenuItems(items) {
4
28
  if (!items?.length) return false;
5
- return items.some((item) => !item.separator);
29
+ return items.some((item) => !isContextMenuSeparator(item));
30
+ }
31
+ /** 当前层可聚焦的项(不含分隔线与分组标题)。 */
32
+ function listContextMenuLayerItems(items) {
33
+ return items.filter((item) => !isContextMenuSeparator(item));
34
+ }
35
+ function firstEnabledContextMenuKey(items) {
36
+ return listContextMenuLayerItems(items).find((item) => !item.disabled)?.key ?? "";
37
+ }
38
+ function lastEnabledContextMenuKey(items) {
39
+ const list = listContextMenuLayerItems(items);
40
+ for (let index = list.length - 1; index >= 0; index -= 1) if (!list[index]?.disabled) return list[index].key;
41
+ return "";
42
+ }
43
+ function stepContextMenuKey(items, current, delta) {
44
+ const list = listContextMenuLayerItems(items);
45
+ if (!list.length) return "";
46
+ const index = list.findIndex((item) => item.key === current);
47
+ let start = index;
48
+ if (index < 0) start = delta === 1 ? -1 : 0;
49
+ return list[stepEnabledIndex(list, start, delta)]?.key ?? "";
50
+ }
51
+ function findContextMenuItem(items, key) {
52
+ for (const item of items) {
53
+ if (item.key === key) return item;
54
+ if (item.children?.length) {
55
+ const found = findContextMenuItem(item.children, key);
56
+ if (found) return found;
57
+ }
58
+ }
59
+ }
60
+ /** 根层 + 已展开路径上的子层。路径中断就停,不渲染未打开的分支。 */
61
+ function resolveContextMenuLayers(items, path) {
62
+ const layers = [{
63
+ id: "root",
64
+ items: [...items],
65
+ parentKey: null
66
+ }];
67
+ let current = items;
68
+ for (const key of path) {
69
+ const parent = current.find((item) => item.key === key && hasContextMenuChildren(item));
70
+ if (!parent?.children?.length) break;
71
+ layers.push({
72
+ id: key,
73
+ items: parent.children,
74
+ parentKey: key
75
+ });
76
+ current = parent.children;
77
+ }
78
+ return layers;
79
+ }
80
+ function shouldCloseContextMenuOnSelect(item, hideOnSelect) {
81
+ if (item.closeOnSelect != null) return item.closeOnSelect;
82
+ if (isContextMenuCheck(item)) return false;
83
+ return hideOnSelect;
84
+ }
85
+ function resolveContextMenuKeys(rtl) {
86
+ return {
87
+ next: "ArrowDown",
88
+ prev: "ArrowUp",
89
+ openSub: rtl ? "ArrowLeft" : "ArrowRight",
90
+ closeSub: rtl ? "ArrowRight" : "ArrowLeft"
91
+ };
92
+ }
93
+ function matchContextMenuTypeahead(items, query, fromIndex = -1) {
94
+ const needle = query.trim().toLowerCase();
95
+ if (!needle || !items.length) return -1;
96
+ const list = listContextMenuLayerItems(items);
97
+ const start = Math.max(-1, fromIndex);
98
+ for (let step = 1; step <= list.length; step += 1) {
99
+ const index = (start + step) % list.length;
100
+ const item = list[index];
101
+ if (!item || item.disabled) continue;
102
+ if (item.label.toLowerCase().startsWith(needle)) return index;
103
+ }
104
+ return -1;
105
+ }
106
+ function escapeContextMenuSelector(value) {
107
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
108
+ return value.replace(/["\\]/g, "\\$&");
109
+ }
110
+ function resolveContextMenuPortalTarget(getPopupContainer, trigger) {
111
+ if (typeof document === "undefined") return "body";
112
+ if (!getPopupContainer) return "body";
113
+ return getPopupContainer(trigger ?? void 0) ?? "body";
114
+ }
115
+ function resolveContextMenuRel(item) {
116
+ if (!item.href) return void 0;
117
+ if (item.rel) return item.rel;
118
+ if (item.target === "_blank") return "noopener noreferrer";
119
+ }
120
+ function resolveContextMenuElement(value) {
121
+ if (typeof HTMLElement !== "undefined" && value instanceof HTMLElement) return value;
122
+ if (value && typeof value === "object" && "$el" in value) {
123
+ const root = value.$el;
124
+ if (typeof HTMLElement !== "undefined" && root instanceof HTMLElement) return root;
125
+ }
126
+ return null;
127
+ }
128
+ /**
129
+ * 菜单从指针处展开:默认向右下,贴边翻到左或上,并给出可滚动的最大高度。
130
+ * RTL 优先向左。padding 把菜单夹进视口。
131
+ */
132
+ function placeContextMenuPoint(point, popup, viewport, padding = 8, rtl = false) {
133
+ const width = Math.min(Math.max(0, popup.width), Math.max(0, viewport.width - padding * 2));
134
+ const spaceBelow = Math.max(0, viewport.height - point.y - padding);
135
+ const spaceAbove = Math.max(0, point.y - padding);
136
+ const openUp = popup.height > spaceBelow && spaceAbove > spaceBelow;
137
+ const maxHeight = Math.max(0, openUp ? spaceAbove : spaceBelow);
138
+ const usedHeight = Math.min(Math.max(0, popup.height), maxHeight > 0 ? maxHeight : popup.height);
139
+ let top = openUp ? point.y - usedHeight : point.y;
140
+ const maxTop = Math.max(padding, viewport.height - padding - Math.max(0, usedHeight));
141
+ top = Math.min(Math.max(padding, top), maxTop);
142
+ const spaceRight = Math.max(0, viewport.width - point.x - padding);
143
+ const spaceLeft = Math.max(0, point.x - padding);
144
+ const openLeft = rtl ? spaceLeft >= width || spaceLeft >= spaceRight : spaceRight < width && spaceLeft > spaceRight;
145
+ let left = openLeft ? point.x - width : point.x;
146
+ const maxLeft = Math.max(padding, viewport.width - width - padding);
147
+ left = Math.min(Math.max(padding, left), maxLeft);
148
+ return {
149
+ top,
150
+ left,
151
+ maxHeight: maxHeight > 0 ? maxHeight : Math.max(0, viewport.height - padding * 2),
152
+ originX: openLeft ? "right" : "left",
153
+ originY: openUp ? "bottom" : "top"
154
+ };
155
+ }
156
+ /** 子菜单贴父项侧面。视口不够时翻到另一侧,并限制可滚动高度。 */
157
+ function placeContextMenuSubmenu(anchor, popup, viewport, rtl, gap = 4) {
158
+ const placed = placeSidePopup({
159
+ top: anchor.top,
160
+ left: anchor.left,
161
+ height: anchor.height,
162
+ width: anchor.width
163
+ }, popup, viewport, gap, rtl ? "left" : "right");
164
+ return {
165
+ top: placed.top,
166
+ left: placed.left,
167
+ maxHeight: Math.max(0, viewport.height - placed.top - gap),
168
+ originX: placed.placement === "left" ? "right" : "left",
169
+ originY: "top"
170
+ };
6
171
  }
7
172
  //#endregion
8
- export { hasActionableContextMenuItems };
173
+ export { claimContextMenu, contextMenuItemRole, escapeContextMenuSelector, findContextMenuItem, firstEnabledContextMenuKey, hasActionableContextMenuItems, hasContextMenuChildren, isContextMenuCheck, isContextMenuSeparator, lastEnabledContextMenuKey, listContextMenuLayerItems, matchContextMenuTypeahead, placeContextMenuPoint, placeContextMenuSubmenu, releaseContextMenu, resolveContextMenuElement, resolveContextMenuKeys, resolveContextMenuLayers, resolveContextMenuPortalTarget, resolveContextMenuRel, shouldCloseContextMenuOnSelect, stepContextMenuKey };
@@ -1,7 +1,9 @@
1
1
  export { default as RsDatePicker } from './src/RsDatePicker.js';
2
2
  export { default as RsDateTimePicker } from './src/RsDateTimePicker.js';
3
- export type { RsDatePickerModelValue, RsDatePickerShortcut, RsDatePickerTimestampRange, RsDatePickerValueConvertOptions, RsDatePickerValueFormat, RsDatePickerValueFormatPreset, RsDateRangeValue, RsParsedDate, RsParsedDateTime, } from './src/date-picker-utils';
4
- export { EMPTY_DATE_RANGE, formatDateDisplay, formatDateParts, formatDateRangeDisplay, formatDateTimeDisplay, formatDateTimeValue, formatDateValue, fromInternalPickerValue, isDateRangeEmpty, isDateRangeOrdered, isDateTimeRangeOrdered, parseDateTimeValue, parseDateValue, RS_DATE_PICKER_VALUE_FORMAT_PRESETS, toInternalPickerValue, toRangeEndpointString, } from './src/date-picker-utils';
3
+ export type { RsDatePickerExpose, RsDatePickerInstance, RsDatePickerLabelPosition, } from './src/RsDatePicker.js';
4
+ export type { RsDateTimePickerExpose, RsDateTimePickerInstance, RsDateTimePickerLabelPosition, RsDateTimeRangeValue, } from './src/RsDateTimePicker.js';
5
+ export type { RsDatePickerDisabledDate, RsDatePickerGetPopupContainer, RsDatePickerModelValue, RsDatePickerShortcut, RsDatePickerTimestampRange, RsDatePickerValueConvertOptions, RsDatePickerValueFormat, RsDatePickerValueFormatPreset, RsDateRangeValue, RsParsedDate, RsParsedDateTime, RsWeekStartsOn, } from './src/date-picker-utils';
6
+ export { EMPTY_DATE_RANGE, formatDateDisplay, formatDateParts, formatDateRangeDisplay, formatDateTimeDisplay, formatDateTimeValue, formatDateValue, formatPickerDisplay, fromInternalPickerValue, isDateRangeEmpty, isDateRangeOrdered, isDateTimeRangeOrdered, parseDateTimeValue, parseDateValue, resolveWeekStartsOn, RS_DATE_PICKER_VALUE_FORMAT_PRESETS, toInternalPickerValue, toRangeEndpointString, } from './src/date-picker-utils';
5
7
  export type { RsDateTimeValidationError, RsDateTimeValidationResult, RsDateTimeValidationRules, RsDateValidationError, RsDateValidationResult, RsDateValidationRules, } from './src/date-validation';
6
8
  export { validateDateTimeValue, validateDateValue } from './src/date-validation';
7
9
  export type { RsDateRangeValidationError, RsDateRangeValidationResult, RsDateRangeValidationRules, RsDateTimeRangeValidationError, RsDateTimeRangeValidationResult, RsDateTimeRangeValidationRules, } from './src/date-range-validation';
@@ -1,8 +1,21 @@
1
1
 
2
- .rs-date-picker[data-v-816760df] {
2
+ .rs-date-picker[data-v-e481c787] {
3
+ position: relative;
3
4
  width: 100%;
4
5
  }
5
- .rs-date-picker__trigger[data-v-816760df] {
6
+ .rs-date-picker-wrap--clearable .rs-date-picker__trigger[data-v-e481c787] {
7
+ padding-inline-end: calc(var(--rs-space-md) + 2.25rem);
8
+ }
9
+ .rs-date-picker-wrap--clearable .rs-date-picker--ssm .rs-date-picker__trigger[data-v-e481c787] {
10
+ padding-inline-end: calc(var(--rs-space-xs) + 2rem);
11
+ }
12
+ .rs-date-picker-wrap--clearable .rs-date-picker--sm .rs-date-picker__trigger[data-v-e481c787] {
13
+ padding-inline-end: calc(var(--rs-space-sm) + 2rem);
14
+ }
15
+ .rs-date-picker-wrap--clearable .rs-date-picker--lg .rs-date-picker__trigger[data-v-e481c787] {
16
+ padding-inline-end: calc(var(--rs-space-lg) + 2.25rem);
17
+ }
18
+ .rs-date-picker__trigger[data-v-e481c787] {
6
19
  display: inline-flex;
7
20
  align-items: center;
8
21
  justify-content: space-between;
@@ -13,7 +26,7 @@
13
26
  min-height: var(--rs-control-height-md);
14
27
  padding: 0 var(--rs-space-md);
15
28
  border: 1px solid var(--rs-input-border, var(--rs-border));
16
- border-radius: var(--rs-radius-sm);
29
+ border-radius: var(--rs-date-picker-radius, var(--rs-radius-sm));
17
30
  background: var(--rs-input-bg);
18
31
  color: var(--rs-text);
19
32
  font: inherit;
@@ -28,28 +41,28 @@
28
41
  box-shadow var(--rs-transition-fast),
29
42
  background var(--rs-transition-fast);
30
43
  }
31
- .rs-date-picker--ssm .rs-date-picker__trigger[data-v-816760df] {
44
+ .rs-date-picker--ssm .rs-date-picker__trigger[data-v-e481c787] {
32
45
  height: var(--rs-control-height-ssm);
33
46
  min-height: var(--rs-control-height-ssm);
34
47
  padding: 0 var(--rs-space-xs);
35
48
  font-size: var(--rs-font-size-xs);
36
49
  }
37
- .rs-date-picker--sm .rs-date-picker__trigger[data-v-816760df] {
50
+ .rs-date-picker--sm .rs-date-picker__trigger[data-v-e481c787] {
38
51
  height: var(--rs-control-height-sm);
39
52
  min-height: var(--rs-control-height-sm);
40
53
  padding: 0 var(--rs-space-sm);
41
54
  font-size: var(--rs-font-size-xs);
42
55
  }
43
- .rs-date-picker--lg .rs-date-picker__trigger[data-v-816760df] {
56
+ .rs-date-picker--lg .rs-date-picker__trigger[data-v-e481c787] {
44
57
  height: var(--rs-control-height-lg);
45
58
  min-height: var(--rs-control-height-lg);
46
59
  padding: 0 var(--rs-space-lg);
47
60
  font-size: var(--rs-font-size-base);
48
61
  }
49
- .rs-date-picker__trigger[data-v-816760df]:hover:not(:disabled) {
62
+ .rs-date-picker__trigger[data-v-e481c787]:hover:not(:disabled) {
50
63
  border-color: var(--rs-input-border-hover, var(--rs-border));
51
64
  }
52
- .rs-date-picker__trigger[data-v-816760df]:focus-visible {
65
+ .rs-date-picker__trigger[data-v-e481c787]:focus-visible {
53
66
  outline: none;
54
67
  border-color: var(--rs-focus-border, var(--rs-primary));
55
68
  background: var(--rs-input-bg);
@@ -57,42 +70,49 @@
57
70
  var(--rs-input-shadow, none),
58
71
  0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-ring);
59
72
  }
60
- .rs-date-picker__trigger[data-v-816760df]:disabled {
61
- opacity: 0.38;
73
+ .rs-date-picker__trigger[data-v-e481c787]:disabled {
74
+ opacity: var(--rs-date-picker-disabled-opacity, 0.38);
62
75
  cursor: not-allowed;
63
76
  }
64
- .rs-date-picker__trigger--placeholder .rs-date-picker__value[data-v-816760df] {
77
+ .rs-date-picker__trigger--placeholder .rs-date-picker__value[data-v-e481c787] {
65
78
  color: var(--rs-placeholder);
66
79
  }
67
- .rs-date-picker__trigger--invalid[data-v-816760df] {
68
- border-color: var(--rs-danger, var(--rs-color-danger, #dc2626));
80
+ .rs-date-picker__trigger--invalid[data-v-e481c787] {
81
+ border-color: var(--rs-danger, var(--rs-color-danger));
69
82
  }
70
- .rs-date-picker__trigger--invalid[data-v-816760df]:focus-visible {
71
- border-color: var(--rs-danger, var(--rs-color-danger, #dc2626));
83
+ .rs-date-picker__trigger--invalid[data-v-e481c787]:focus-visible {
84
+ border-color: var(--rs-danger, var(--rs-color-danger));
72
85
  box-shadow:
73
86
  var(--rs-input-shadow, none),
74
87
  0 0 0 var(--rs-focus-ring-width, 2px)
75
- color-mix(in srgb, var(--rs-danger, #dc2626) 14%, transparent);
88
+ color-mix(in srgb, var(--rs-danger) 14%, transparent);
89
+ }
90
+ .rs-date-picker__clear[data-v-e481c787] {
91
+ position: absolute;
92
+ inset-block-start: 50%;
93
+ inset-inline-end: var(--rs-space-xs);
94
+ z-index: 1;
95
+ transform: translateY(-50%);
76
96
  }
77
- .rs-date-picker-field__error[data-v-816760df] {
97
+ .rs-date-picker-field__error[data-v-e481c787] {
78
98
  margin: var(--rs-space-xs) 0 0;
79
- color: var(--rs-danger, var(--rs-color-danger, #dc2626));
99
+ color: var(--rs-danger, var(--rs-color-danger));
80
100
  font-size: var(--rs-font-size-xs);
81
101
  line-height: var(--rs-line-height-tight);
82
102
  }
83
- .rs-date-picker__leading[data-v-816760df] {
103
+ .rs-date-picker__leading[data-v-e481c787] {
84
104
  display: inline-flex;
85
105
  min-width: 0;
86
106
  flex: 1;
87
107
  align-items: center;
88
108
  gap: var(--rs-space-sm);
89
109
  }
90
- .rs-date-picker__icon[data-v-816760df],
91
- .rs-date-picker__chevron[data-v-816760df] {
110
+ .rs-date-picker__icon[data-v-e481c787],
111
+ .rs-date-picker__chevron[data-v-e481c787] {
92
112
  flex-shrink: 0;
93
113
  color: var(--rs-muted);
94
114
  }
95
- .rs-date-picker__value[data-v-816760df] {
115
+ .rs-date-picker__value[data-v-e481c787] {
96
116
  min-width: 0;
97
117
  overflow: hidden;
98
118
  text-overflow: ellipsis;