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,12 +1,46 @@
1
- import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "../../_shared/src/reka.js";
2
- import { computed, createBlock, createCommentVNode, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, unref, useModel, withCtx } from "vue";
1
+ import { useRsConfigOptional } from "../../../composables/useRsConfig.js";
2
+ import { resolveDirMode } from "../../../locale/apply.js";
3
+ import { useRsI18n } from "../../../composables/useRsI18n.js";
4
+ import RsIcon_default from "../../icon/src/RsIcon.js";
5
+ import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
6
+ import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
7
+ import { placeAlignedPopup } from "../../_shared/src/overlay-utils.js";
8
+ import { clampPopoverDelay, listPopoverFocusable, nextPopoverFocusIndex, normalizePopoverTriggers, resolvePopoverElement, resolvePopoverPortalTarget } from "./popover-utils.js";
9
+ import { Comment, Fragment, Teleport, Text, cloneVNode, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isVNode, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onUnmounted, openBlock, ref, renderSlot, toDisplayString, unref, useAttrs, useId, useModel, useSlots, useTemplateRef, watch, withModifiers } from "vue";
3
10
  //#region src/components/popover/src/RsPopover.vue?vue&type=script&setup=true&lang.ts
11
+ var _hoisted_1 = ["id", "data-disabled"];
12
+ var _hoisted_2 = [
13
+ "open",
14
+ "hidden",
15
+ "tabindex",
16
+ "aria-modal",
17
+ "aria-labelledby",
18
+ "aria-label",
19
+ "data-side",
20
+ "data-align",
21
+ "data-rs-theme",
22
+ "data-rs-popover-trigger"
23
+ ];
24
+ var _hoisted_3 = {
25
+ key: 0,
26
+ class: "rs-popover__arrow",
27
+ "aria-hidden": "true"
28
+ };
29
+ var _hoisted_4 = {
30
+ key: 1,
31
+ class: "rs-popover__head"
32
+ };
33
+ var _hoisted_5 = ["aria-label"];
34
+ var _hoisted_6 = { class: "rs-popover__body" };
4
35
  var RsPopover_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
36
+ name: "RsPopover",
37
+ inheritAttrs: false,
5
38
  __name: "RsPopover",
6
39
  props: /*@__PURE__*/ mergeModels({
7
40
  side: { default: "bottom" },
8
41
  align: { default: "start" },
9
42
  sideOffset: { default: 6 },
43
+ alignOffset: { default: 0 },
10
44
  modal: {
11
45
  type: Boolean,
12
46
  default: false
@@ -20,7 +54,36 @@ var RsPopover_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
20
54
  type: Boolean,
21
55
  default: false
22
56
  },
23
- popupClassName: {}
57
+ popupClassName: {},
58
+ trigger: { default: "click" },
59
+ disabled: {
60
+ type: Boolean,
61
+ default: false
62
+ },
63
+ title: {},
64
+ arrow: {
65
+ type: Boolean,
66
+ default: false
67
+ },
68
+ showClose: {
69
+ type: Boolean,
70
+ default: false
71
+ },
72
+ closeOnEsc: {
73
+ type: Boolean,
74
+ default: true
75
+ },
76
+ closeOnOutside: {
77
+ type: Boolean,
78
+ default: true
79
+ },
80
+ mouseEnterDelay: { default: 100 },
81
+ mouseLeaveDelay: { default: 150 },
82
+ getPopupContainer: {},
83
+ size: {},
84
+ radius: {},
85
+ ariaLabel: {},
86
+ id: {}
24
87
  }, {
25
88
  "open": {
26
89
  type: Boolean,
@@ -28,42 +91,490 @@ var RsPopover_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
28
91
  },
29
92
  "openModifiers": {}
30
93
  }),
31
- emits: ["update:open"],
32
- setup(__props) {
94
+ emits: /*@__PURE__*/ mergeModels(["openChange"], ["update:open"]),
95
+ setup(__props, { expose: __expose, emit: __emit }) {
33
96
  const open = useModel(__props, "open");
34
97
  const props = __props;
35
- const contentForceMount = computed(() => props.forceMount || !props.lazyMount);
36
- const portalMounted = computed(() => props.forceMount || !props.lazyMount || open.value);
98
+ const emit = __emit;
99
+ const attrs = useAttrs();
100
+ const slots = useSlots();
101
+ const { t, locale } = useRsI18n();
102
+ const config = useRsConfigOptional();
103
+ const autoId = useId();
104
+ const contentId = `${autoId}-content`;
105
+ const titleId = `${autoId}-title`;
106
+ const fallbackTriggerId = `${autoId}-trigger`;
107
+ const rootRef = useTemplateRef("rootRef");
108
+ const contentRef = useTemplateRef("contentRef");
109
+ const triggerEl = ref(null);
110
+ const activeTriggerId = ref(fallbackTriggerId);
111
+ const panelTheme = ref();
112
+ const layeredInDialog = ref(false);
113
+ const positionMode = ref("fixed");
114
+ const box = ref({
115
+ top: 0,
116
+ left: 0,
117
+ side: props.side,
118
+ align: props.align
119
+ });
120
+ const resolvedSize = useResolvedRsComponentSize(() => props.size);
121
+ const resolvedRadius = useResolvedRsRadius(() => props.radius, "sm");
122
+ const triggers = computed(() => normalizePopoverTriggers(props.trigger));
123
+ const hasClick = computed(() => triggers.value.includes("click"));
124
+ const hasHover = computed(() => triggers.value.includes("hover"));
125
+ const hasFocusTrigger = computed(() => triggers.value.includes("focus"));
126
+ const enterDelay = computed(() => clampPopoverDelay(props.mouseEnterDelay, 100));
127
+ const leaveDelay = computed(() => clampPopoverDelay(props.mouseLeaveDelay, 150));
128
+ const isRtl = computed(() => resolveDirMode(config?.dir.value ?? "auto", config?.locale.value ?? locale.value) === "rtl");
129
+ const hasTitle = computed(() => Boolean(props.title) || Boolean(slots.title));
130
+ const showChrome = computed(() => hasTitle.value || props.showClose);
131
+ const closeLabel = computed(() => t("popover.close"));
132
+ const dialogLabel = computed(() => props.ariaLabel?.trim() || t("popover.label"));
133
+ const keepMounted = computed(() => props.forceMount || !props.lazyMount);
134
+ const portalMounted = computed(() => keepMounted.value || open.value);
135
+ const portalTarget = computed(() => resolvePopoverPortalTarget(props.getPopupContainer, triggerEl.value));
136
+ const contentClass = computed(() => [
137
+ `rs-popover__content--${props.width}`,
138
+ `rs-popover__content--size-${resolvedSize.value}`,
139
+ props.popupClassName,
140
+ { "rs-popover__content--in-dialog": layeredInDialog.value }
141
+ ]);
142
+ const panelStyle = computed(() => ({
143
+ position: positionMode.value,
144
+ top: `${box.value.top}px`,
145
+ left: `${box.value.left}px`,
146
+ "--rs-popover-radius": rsRadiusCss(resolvedRadius.value),
147
+ "--rs-popover-arrow-cross": arrowCross(props.align)
148
+ }));
149
+ let enterTimer;
150
+ let leaveTimer;
151
+ let blurTimer;
152
+ let frame = 0;
153
+ let overlayBound = false;
154
+ let movedFocus = false;
155
+ let restoreOnClose = false;
156
+ let pendingReason = null;
157
+ let openWatchReady = false;
158
+ let panelResize;
159
+ function arrowCross(align) {
160
+ if (align === "center") return "calc(50% - 0.25rem)";
161
+ if (align === "end") return "calc(100% - 1.25rem)";
162
+ return "0.75rem";
163
+ }
164
+ function clearTimer(kind) {
165
+ if (kind === "enter" && enterTimer) {
166
+ clearTimeout(enterTimer);
167
+ enterTimer = void 0;
168
+ }
169
+ if (kind === "leave" && leaveTimer) {
170
+ clearTimeout(leaveTimer);
171
+ leaveTimer = void 0;
172
+ }
173
+ if (kind === "blur" && blurTimer) {
174
+ clearTimeout(blurTimer);
175
+ blurTimer = void 0;
176
+ }
177
+ }
178
+ function clearHoverTimers() {
179
+ clearTimer("enter");
180
+ clearTimer("leave");
181
+ }
182
+ function setOpen(next, reason) {
183
+ if (props.disabled && next) return;
184
+ pendingReason = reason;
185
+ if (open.value === next) {
186
+ pendingReason = null;
187
+ return;
188
+ }
189
+ open.value = next;
190
+ }
191
+ function close() {
192
+ restoreOnClose = movedFocus;
193
+ setOpen(false, "script");
194
+ }
195
+ function focusTrigger() {
196
+ triggerEl.value?.focus();
197
+ }
198
+ function focusContent() {
199
+ const root = contentRef.value;
200
+ if (!root) return;
201
+ const target = listPopoverFocusable(root)[0] ?? root;
202
+ target.focus();
203
+ movedFocus = document.activeElement === target || root.contains(document.activeElement);
204
+ }
205
+ function assignTrigger(value) {
206
+ const node = resolvePopoverElement(value);
207
+ triggerEl.value = node;
208
+ if (node?.id) activeTriggerId.value = node.id;
209
+ }
210
+ function flattenPopoverNodes(nodes, out = []) {
211
+ if (nodes == null || typeof nodes === "boolean") return out;
212
+ if (Array.isArray(nodes)) {
213
+ for (const node of nodes) flattenPopoverNodes(node, out);
214
+ return out;
215
+ }
216
+ if (!isVNode(nodes)) return out;
217
+ if (nodes.type === Comment || nodes.type === Text) return out;
218
+ if (nodes.type === Fragment && Array.isArray(nodes.children)) {
219
+ flattenPopoverNodes(nodes.children, out);
220
+ return out;
221
+ }
222
+ out.push(nodes);
223
+ return out;
224
+ }
225
+ function isOwnedTarget(target) {
226
+ if (!(target instanceof Node)) return false;
227
+ const trigger = triggerEl.value;
228
+ if (trigger && (trigger === target || trigger.contains(target))) return true;
229
+ const content = contentRef.value;
230
+ if (content?.contains(target)) return true;
231
+ let node = target;
232
+ while (node) {
233
+ if (node instanceof HTMLElement && node.classList.contains("rs-popover__content")) {
234
+ const owner = node.dataset.rsPopoverTrigger;
235
+ const ownerTrigger = owner ? document.getElementById(owner) : null;
236
+ if (ownerTrigger && content?.contains(ownerTrigger)) return true;
237
+ }
238
+ node = node.parentNode;
239
+ }
240
+ return false;
241
+ }
242
+ function portalHost() {
243
+ const target = portalTarget.value;
244
+ if (typeof document === "undefined") return null;
245
+ if (typeof target !== "string") return target;
246
+ if (target === "body") return document.body;
247
+ return document.querySelector(target);
248
+ }
249
+ function syncPanelTheme() {
250
+ const el = triggerEl.value ?? rootRef.value;
251
+ const themed = el?.closest("[data-rs-theme]");
252
+ panelTheme.value = themed instanceof HTMLElement ? themed.dataset.rsTheme : void 0;
253
+ layeredInDialog.value = Boolean(el?.closest("dialog, [role=\"dialog\"], .rs-dialog"));
254
+ }
255
+ function placePopup() {
256
+ const trigger = triggerEl.value;
257
+ const content = contentRef.value;
258
+ if (!trigger || !content || !open.value || typeof window === "undefined") return;
259
+ const host = portalHost();
260
+ const viewportHost = !host || host === document.body || host === document.documentElement;
261
+ const triggerRect = trigger.getBoundingClientRect();
262
+ const popupRect = content.getBoundingClientRect();
263
+ const hostRect = viewportHost || !host ? null : host.getBoundingClientRect();
264
+ box.value = placeAlignedPopup({
265
+ top: host && hostRect ? triggerRect.top - hostRect.top + host.scrollTop : triggerRect.top,
266
+ left: host && hostRect ? triggerRect.left - hostRect.left + host.scrollLeft : triggerRect.left,
267
+ width: triggerRect.width,
268
+ height: triggerRect.height
269
+ }, {
270
+ width: popupRect.width || content.offsetWidth,
271
+ height: popupRect.height || content.offsetHeight
272
+ }, viewportHost ? {
273
+ width: window.innerWidth,
274
+ height: window.innerHeight
275
+ } : {
276
+ width: host?.clientWidth ?? window.innerWidth,
277
+ height: host?.clientHeight ?? window.innerHeight
278
+ }, {
279
+ side: props.side,
280
+ align: props.align,
281
+ sideOffset: props.sideOffset + (props.arrow ? 4 : 0),
282
+ alignOffset: props.alignOffset,
283
+ padding: 8,
284
+ rtl: isRtl.value
285
+ });
286
+ positionMode.value = viewportHost ? "fixed" : "absolute";
287
+ }
288
+ function requestPlace() {
289
+ if (typeof window === "undefined" || frame) return;
290
+ frame = window.requestAnimationFrame(() => {
291
+ frame = 0;
292
+ placePopup();
293
+ });
294
+ }
295
+ function onWindowChange() {
296
+ if (!open.value) return;
297
+ requestPlace();
298
+ }
299
+ function attachPanelObserver() {
300
+ if (typeof ResizeObserver === "undefined") return;
301
+ panelResize?.disconnect();
302
+ panelResize = void 0;
303
+ if (!contentRef.value || !open.value) return;
304
+ panelResize = new ResizeObserver(() => requestPlace());
305
+ panelResize.observe(contentRef.value);
306
+ if (triggerEl.value) panelResize.observe(triggerEl.value);
307
+ }
308
+ function onDocPointerDown(event) {
309
+ if (!props.closeOnOutside || !open.value) return;
310
+ if (isOwnedTarget(event.target)) return;
311
+ restoreOnClose = false;
312
+ setOpen(false, "script");
313
+ }
314
+ function onDocKeydown(event) {
315
+ if (!open.value || event.isComposing) return;
316
+ if (event.key === "Escape") {
317
+ if (!props.closeOnEsc) return;
318
+ event.preventDefault();
319
+ restoreOnClose = true;
320
+ setOpen(false, "script");
321
+ return;
322
+ }
323
+ if (!props.modal || event.key !== "Tab") return;
324
+ const root = contentRef.value;
325
+ if (!root) return;
326
+ const items = listPopoverFocusable(root);
327
+ event.preventDefault();
328
+ if (!items.length) {
329
+ root.focus();
330
+ return;
331
+ }
332
+ const active = document.activeElement;
333
+ const index = active instanceof HTMLElement ? items.indexOf(active) : -1;
334
+ items[nextPopoverFocusIndex(items.length, index, event.shiftKey)]?.focus();
335
+ }
336
+ function attachOverlay() {
337
+ if (overlayBound || typeof window === "undefined" || typeof document === "undefined") return;
338
+ overlayBound = true;
339
+ document.addEventListener("pointerdown", onDocPointerDown, true);
340
+ document.addEventListener("keydown", onDocKeydown, true);
341
+ window.addEventListener("resize", onWindowChange);
342
+ window.addEventListener("scroll", onWindowChange, true);
343
+ }
344
+ function detachOverlay() {
345
+ panelResize?.disconnect();
346
+ panelResize = void 0;
347
+ if (frame && typeof window !== "undefined") {
348
+ window.cancelAnimationFrame(frame);
349
+ frame = 0;
350
+ }
351
+ if (!overlayBound) return;
352
+ overlayBound = false;
353
+ if (typeof document !== "undefined") {
354
+ document.removeEventListener("pointerdown", onDocPointerDown, true);
355
+ document.removeEventListener("keydown", onDocKeydown, true);
356
+ }
357
+ if (typeof window !== "undefined") {
358
+ window.removeEventListener("resize", onWindowChange);
359
+ window.removeEventListener("scroll", onWindowChange, true);
360
+ }
361
+ }
362
+ function scheduleOpenLayout(moveFocus) {
363
+ nextTick(() => {
364
+ if (!open.value) return;
365
+ placePopup();
366
+ attachPanelObserver();
367
+ if (moveFocus) focusContent();
368
+ });
369
+ }
370
+ function onTriggerClick(event) {
371
+ if (!hasClick.value || props.disabled) return;
372
+ if (event && event.button !== 0) return;
373
+ if (open.value) {
374
+ restoreOnClose = false;
375
+ setOpen(false, "click");
376
+ return;
377
+ }
378
+ setOpen(true, "click");
379
+ }
380
+ function onTriggerKeydown(event) {
381
+ if (!hasClick.value || props.disabled || event.isComposing) return;
382
+ if (event.key !== "Enter" && event.key !== " ") return;
383
+ const tag = triggerEl.value?.tagName;
384
+ if (tag === "BUTTON" || tag === "A" || tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT") return;
385
+ event.preventDefault();
386
+ onTriggerClick(new MouseEvent("click", { button: 0 }));
387
+ }
388
+ function onTriggerEnter() {
389
+ if (!hasHover.value || props.disabled) return;
390
+ clearHoverTimers();
391
+ enterTimer = setTimeout(() => {
392
+ enterTimer = void 0;
393
+ setOpen(true, "hover");
394
+ }, enterDelay.value);
395
+ }
396
+ function onTriggerLeave() {
397
+ if (!hasHover.value) return;
398
+ clearTimer("enter");
399
+ clearTimer("leave");
400
+ leaveTimer = setTimeout(() => {
401
+ leaveTimer = void 0;
402
+ restoreOnClose = false;
403
+ setOpen(false, "hover");
404
+ }, leaveDelay.value);
405
+ }
406
+ function onContentEnter() {
407
+ if (hasHover.value) clearTimer("leave");
408
+ }
409
+ function onContentLeave() {
410
+ if (!hasHover.value) return;
411
+ clearTimer("leave");
412
+ leaveTimer = setTimeout(() => {
413
+ leaveTimer = void 0;
414
+ restoreOnClose = false;
415
+ setOpen(false, "hover");
416
+ }, leaveDelay.value);
417
+ }
418
+ function onTriggerFocus() {
419
+ if (!hasFocusTrigger.value || props.disabled) return;
420
+ clearTimer("blur");
421
+ setOpen(true, "focus");
422
+ }
423
+ function onTriggerBlur() {
424
+ if (!hasFocusTrigger.value) return;
425
+ clearTimer("blur");
426
+ blurTimer = setTimeout(() => {
427
+ blurTimer = void 0;
428
+ const active = document.activeElement;
429
+ if (active && isOwnedTarget(active)) return;
430
+ restoreOnClose = false;
431
+ setOpen(false, "focus");
432
+ }, 0);
433
+ }
434
+ function onContentFocusOut() {
435
+ if (!hasFocusTrigger.value || !open.value) return;
436
+ onTriggerBlur();
437
+ }
438
+ const TriggerHost = defineComponent({
439
+ name: "RsPopoverTrigger",
440
+ setup() {
441
+ return () => {
442
+ const nodes = flattenPopoverNodes(slots.default?.({
443
+ open: open.value,
444
+ close
445
+ }));
446
+ const target = nodes[0];
447
+ if (!target) return null;
448
+ const cloned = cloneVNode(target, {
449
+ id: typeof target.props?.id === "string" ? target.props.id : fallbackTriggerId,
450
+ ref: assignTrigger,
451
+ "aria-expanded": open.value ? "true" : "false",
452
+ "aria-controls": portalMounted.value ? contentId : void 0,
453
+ "aria-haspopup": "dialog",
454
+ onClick: onTriggerClick,
455
+ onKeydown: onTriggerKeydown,
456
+ onMouseenter: onTriggerEnter,
457
+ onMouseleave: onTriggerLeave,
458
+ onFocus: onTriggerFocus,
459
+ onBlur: onTriggerBlur
460
+ }, true);
461
+ return nodes.length === 1 ? cloned : [cloned, ...nodes.slice(1)];
462
+ };
463
+ }
464
+ });
465
+ watch(open, (isOpen) => {
466
+ const skipEvent = !openWatchReady;
467
+ openWatchReady = true;
468
+ const reason = pendingReason ?? "script";
469
+ pendingReason = null;
470
+ if (isOpen) {
471
+ if (props.disabled) {
472
+ open.value = false;
473
+ return;
474
+ }
475
+ const moveFocus = reason === "click" || reason === "script";
476
+ if (typeof document !== "undefined") {
477
+ syncPanelTheme();
478
+ attachOverlay();
479
+ scheduleOpenLayout(moveFocus);
480
+ }
481
+ if (!skipEvent) emit("openChange", true);
482
+ return;
483
+ }
484
+ detachOverlay();
485
+ clearHoverTimers();
486
+ clearTimer("blur");
487
+ const shouldRestore = restoreOnClose && movedFocus;
488
+ movedFocus = false;
489
+ restoreOnClose = false;
490
+ if (shouldRestore) focusTrigger();
491
+ if (!skipEvent) emit("openChange", false);
492
+ }, { immediate: true });
493
+ watch(() => [
494
+ props.side,
495
+ props.align,
496
+ props.sideOffset,
497
+ props.alignOffset,
498
+ props.arrow,
499
+ props.width,
500
+ isRtl.value
501
+ ], () => {
502
+ if (open.value) requestPlace();
503
+ });
504
+ watch(() => props.disabled, (disabled) => {
505
+ if (disabled && open.value) {
506
+ restoreOnClose = false;
507
+ setOpen(false, "script");
508
+ }
509
+ });
510
+ watch(contentRef, (el) => {
511
+ if (!el || !open.value) return;
512
+ placePopup();
513
+ attachPanelObserver();
514
+ });
515
+ onUnmounted(() => {
516
+ detachOverlay();
517
+ clearHoverTimers();
518
+ clearTimer("blur");
519
+ });
520
+ __expose({
521
+ open: () => setOpen(true, "script"),
522
+ close,
523
+ toggle: () => {
524
+ if (open.value) close();
525
+ else setOpen(true, "script");
526
+ },
527
+ focus: () => focusTrigger()
528
+ });
37
529
  return (_ctx, _cache) => {
38
- return openBlock(), createBlock(unref(PopoverRoot), {
530
+ return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", mergeProps({
531
+ ref_key: "rootRef",
532
+ ref: rootRef,
533
+ class: "rs-popover"
534
+ }, unref(attrs), {
535
+ id: __props.id,
536
+ "data-disabled": __props.disabled ? "" : void 0
537
+ }), [createVNode(unref(TriggerHost))], 16, _hoisted_1), portalMounted.value ? (openBlock(), createBlock(Teleport, {
538
+ key: 0,
539
+ to: portalTarget.value
540
+ }, [createElementVNode("dialog", {
541
+ id: contentId,
542
+ ref_key: "contentRef",
543
+ ref: contentRef,
544
+ class: normalizeClass(["rs-popover__content rs-motion-reduce", contentClass.value]),
545
+ style: normalizeStyle(panelStyle.value),
39
546
  open: open.value,
40
- "onUpdate:open": _cache[0] || (_cache[0] = ($event) => open.value = $event),
41
- modal: __props.modal
42
- }, {
43
- default: withCtx(() => [createVNode(unref(PopoverTrigger), { "as-child": "" }, {
44
- default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
45
- _: 3
46
- }), portalMounted.value ? (openBlock(), createBlock(unref(PopoverPortal), { key: 0 }, {
47
- default: withCtx(() => [createVNode(unref(PopoverContent), {
48
- class: normalizeClass(["rs-popover__content", [`rs-popover__content--${__props.width}`, __props.popupClassName]]),
49
- side: __props.side,
50
- align: __props.align,
51
- "side-offset": __props.sideOffset,
52
- "force-mount": contentForceMount.value
53
- }, {
54
- default: withCtx(() => [renderSlot(_ctx.$slots, "content")]),
55
- _: 3
56
- }, 8, [
57
- "class",
58
- "side",
59
- "align",
60
- "side-offset",
61
- "force-mount"
62
- ])]),
63
- _: 3
64
- })) : createCommentVNode("", true)]),
65
- _: 3
66
- }, 8, ["open", "modal"]);
547
+ hidden: !open.value ? true : void 0,
548
+ tabindex: open.value ? -1 : void 0,
549
+ "aria-modal": __props.modal && open.value ? "true" : void 0,
550
+ "aria-labelledby": hasTitle.value && open.value ? titleId : void 0,
551
+ "aria-label": hasTitle.value ? void 0 : dialogLabel.value,
552
+ "data-side": box.value.side,
553
+ "data-align": __props.align,
554
+ "data-rs-theme": panelTheme.value,
555
+ "data-rs-popover-trigger": activeTriggerId.value,
556
+ onCancel: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent"])),
557
+ onMouseenter: onContentEnter,
558
+ onMouseleave: onContentLeave,
559
+ onFocusout: onContentFocusOut
560
+ }, [
561
+ __props.arrow ? (openBlock(), createElementBlock("span", _hoisted_3)) : createCommentVNode("", true),
562
+ showChrome.value ? (openBlock(), createElementBlock("div", _hoisted_4, [hasTitle.value ? (openBlock(), createElementBlock("div", {
563
+ key: 0,
564
+ id: titleId,
565
+ class: "rs-popover__title"
566
+ }, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)], true)])) : createCommentVNode("", true), __props.showClose ? (openBlock(), createElementBlock("button", {
567
+ key: 1,
568
+ type: "button",
569
+ class: "rs-popover__close",
570
+ "aria-label": closeLabel.value,
571
+ onClick: close
572
+ }, [createVNode(RsIcon_default, {
573
+ name: "x",
574
+ size: 14
575
+ })], 8, _hoisted_5)) : createCommentVNode("", true)])) : createCommentVNode("", true),
576
+ createElementVNode("div", _hoisted_6, [renderSlot(_ctx.$slots, "content", { close }, void 0, true)])
577
+ ], 46, _hoisted_2)], 8, ["to"])) : createCommentVNode("", true)], 64);
67
578
  };
68
579
  }
69
580
  });
@@ -1,7 +1,8 @@
1
1
  import './RsPopover.css'
2
+ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
2
3
  import RsPopover_vue_vue_type_script_setup_true_lang_default from "./RsPopover.impl.js";
3
4
 
4
5
  //#region src/components/popover/src/RsPopover.vue
5
- var RsPopover_default = RsPopover_vue_vue_type_script_setup_true_lang_default;
6
+ var RsPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsPopover_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4709e2b1"]]);
6
7
  //#endregion
7
8
  export { RsPopover_default as default };
@@ -1,6 +1,28 @@
1
- /** Popover 弹出方位 */
1
+ /** Popover 弹出方位。left / right 是物理方向,不跟 RTL 对调。 */
2
2
  export type RsPopoverSide = 'top' | 'right' | 'bottom' | 'left';
3
- /** Popover 对齐方式 */
3
+ /** Popover 交叉轴对齐。横向 start / end 在 RTL 对调。 */
4
4
  export type RsPopoverAlign = 'start' | 'center' | 'end';
5
5
  /** Popover 内容宽度档位 */
6
6
  export type RsPopoverWidth = 'sm' | 'md' | 'lg' | 'auto';
7
+ /** 打开方式。可组合,默认只有 click,和原来点一下开关一致。 */
8
+ export type RsPopoverTrigger = 'click' | 'hover' | 'focus';
9
+ /** 浮层挂载点。返回空时回到 document.body。 */
10
+ export type RsPopoverGetPopupContainer = (trigger?: HTMLElement) => HTMLElement | string | null | undefined;
11
+ /** 宿主可调用的命令。 */
12
+ export interface RsPopoverExpose {
13
+ open: () => void;
14
+ close: () => void;
15
+ toggle: () => void;
16
+ focus: () => void;
17
+ }
18
+ export type RsPopoverInstance = RsPopoverExpose;
19
+ /** hover 延迟上限,避免一个超大定时器一直挂着。 */
20
+ export declare const RS_POPOVER_DELAY_MAX = 60000;
21
+ export declare function normalizePopoverTriggers(trigger: RsPopoverTrigger | readonly RsPopoverTrigger[] | undefined): RsPopoverTrigger[];
22
+ export declare function clampPopoverDelay(value: number | undefined, fallback: number): number;
23
+ /** Tab 在浮层内循环。current < 0 时落到第一项或最后一项。 */
24
+ export declare function nextPopoverFocusIndex(count: number, current: number, shift: boolean): number;
25
+ export declare function resolvePopoverPortalTarget(getPopupContainer: RsPopoverGetPopupContainer | undefined, trigger?: HTMLElement | null): string | HTMLElement;
26
+ /** 组件 ref 可能是元素,也可能是带 $el 的实例。无 DOM 时返回空。 */
27
+ export declare function resolvePopoverElement(value: unknown): HTMLElement | null;
28
+ export declare function listPopoverFocusable(root: ParentNode | null | undefined): HTMLElement[];