niuma-ui 2.0.4 → 2.1.0

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 (291) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/NOTICE +0 -1
  3. package/README.md +3 -3
  4. package/README.zh-CN.md +3 -3
  5. package/dist/components/_shared/index.d.ts +2 -2
  6. package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
  7. package/dist/components/_shared/src/overlay-utils.js +87 -2
  8. package/dist/components/alert/index.d.ts +1 -0
  9. package/dist/components/alert/src/RsAlert.css +120 -65
  10. package/dist/components/alert/src/RsAlert.d.ts +24 -5
  11. package/dist/components/alert/src/RsAlert.impl.js +108 -36
  12. package/dist/components/alert/src/RsAlert.js +1 -1
  13. package/dist/components/alert/src/alert-utils.d.ts +37 -0
  14. package/dist/components/alert/src/alert-utils.js +71 -0
  15. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +1 -1
  16. package/dist/components/button/src/RsButton.css +75 -72
  17. package/dist/components/button/src/RsButton.d.ts +1 -4
  18. package/dist/components/button/src/RsButton.impl.js +3 -7
  19. package/dist/components/button/src/RsButton.js +1 -1
  20. package/dist/components/card/src/RsCard.d.ts +1 -1
  21. package/dist/components/code-block/index.d.ts +1 -0
  22. package/dist/components/code-block/src/RsCodeBlock.css +93 -52
  23. package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
  24. package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
  25. package/dist/components/code-block/src/RsCodeBlock.js +1 -1
  26. package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
  27. package/dist/components/code-block/src/code-block-highlight.js +34 -0
  28. package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
  29. package/dist/components/code-block/src/code-block-utils.js +71 -0
  30. package/dist/components/code-editor/index.d.ts +1 -1
  31. package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
  32. package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
  33. package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
  34. package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
  35. package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
  36. package/dist/components/code-editor/src/code-editor-utils.js +36 -1
  37. package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
  38. package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
  39. package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
  40. package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
  41. package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
  42. package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
  43. package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
  44. package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
  45. package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
  46. package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
  47. package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
  48. package/dist/components/code-editor/src/code-mirror-session.js +30 -0
  49. package/dist/components/config-provider/src/RsConfigProvider.css +1 -1
  50. package/dist/components/config-provider/src/RsConfigProvider.d.ts +2 -2
  51. package/dist/components/config-provider/src/RsConfigProvider.impl.js +7 -16
  52. package/dist/components/config-provider/src/RsConfigProvider.js +1 -1
  53. package/dist/components/context-menu/index.d.ts +1 -1
  54. package/dist/components/context-menu/src/RsContextMenu.css +115 -89
  55. package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
  56. package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
  57. package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
  58. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
  59. package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
  60. package/dist/components/context-menu/src/context-menu-utils.js +168 -3
  61. package/dist/components/date-picker/src/RsDatePicker.d.ts +2 -2
  62. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +2 -2
  63. package/dist/components/descriptions/index.d.ts +1 -1
  64. package/dist/components/descriptions/src/RsDescriptions.css +38 -11
  65. package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
  66. package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
  67. package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
  68. package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
  69. package/dist/components/descriptions/src/descriptions-utils.js +39 -1
  70. package/dist/components/dialog/index.d.ts +1 -1
  71. package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
  72. package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
  73. package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
  74. package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
  75. package/dist/components/dialog/src/RsDialog.css +102 -109
  76. package/dist/components/dialog/src/RsDialog.d.ts +34 -24
  77. package/dist/components/dialog/src/RsDialog.impl.js +410 -177
  78. package/dist/components/dialog/src/RsDialog.js +2 -1
  79. package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
  80. package/dist/components/dialog/src/dialog-utils.js +152 -1
  81. package/dist/components/dialog/src/dialog-window.js +29 -8
  82. package/dist/components/drawer/index.d.ts +1 -1
  83. package/dist/components/drawer/src/RsDrawer.css +61 -29
  84. package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
  85. package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
  86. package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
  87. package/dist/components/drawer/src/drawer-utils.js +131 -1
  88. package/dist/components/dropdown/index.d.ts +1 -1
  89. package/dist/components/dropdown/src/RsDropdown.css +140 -61
  90. package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
  91. package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
  92. package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
  93. package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
  94. package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
  95. package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
  96. package/dist/components/dropdown/src/dropdown-utils.js +103 -3
  97. package/dist/components/empty/index.d.ts +1 -0
  98. package/dist/components/empty/src/RsEmpty.css +105 -23
  99. package/dist/components/empty/src/RsEmpty.d.ts +27 -4
  100. package/dist/components/empty/src/RsEmpty.impl.js +154 -11
  101. package/dist/components/empty/src/RsEmpty.js +2 -1
  102. package/dist/components/empty/src/empty-utils.d.ts +28 -0
  103. package/dist/components/empty/src/empty-utils.js +55 -0
  104. package/dist/components/form/src/RsForm.d.ts +1 -1
  105. package/dist/components/input-number/src/RsInputNumber.d.ts +1 -1
  106. package/dist/components/label/src/RsLabel.d.ts +1 -1
  107. package/dist/components/loading/index.d.ts +1 -0
  108. package/dist/components/loading/src/RsLoading.css +13 -97
  109. package/dist/components/loading/src/RsLoading.d.ts +52 -2
  110. package/dist/components/loading/src/RsLoading.impl.js +216 -33
  111. package/dist/components/loading/src/RsLoading.js +2 -1
  112. package/dist/components/loading/src/loading-status.css +210 -0
  113. package/dist/components/loading/src/loading-status.d.ts +34 -0
  114. package/dist/components/loading/src/loading-status.impl.js +84 -0
  115. package/dist/components/loading/src/loading-status.js +8 -0
  116. package/dist/components/loading/src/loading-utils.d.ts +51 -4
  117. package/dist/components/loading/src/loading-utils.js +122 -0
  118. package/dist/components/loading-bar/index.d.ts +1 -0
  119. package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
  120. package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
  121. package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
  122. package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
  123. package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
  124. package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
  125. package/dist/components/log/src/RsLog.css +52 -144
  126. package/dist/components/log/src/RsLog.d.ts +12 -11
  127. package/dist/components/log/src/RsLog.impl.js +181 -148
  128. package/dist/components/log/src/RsLog.js +1 -1
  129. package/dist/components/log/src/RsLogRow.css +152 -0
  130. package/dist/components/log/src/RsLogRow.d.ts +35 -0
  131. package/dist/components/log/src/RsLogRow.impl.js +91 -0
  132. package/dist/components/log/src/RsLogRow.js +8 -0
  133. package/dist/components/log/src/log-utils.d.ts +8 -0
  134. package/dist/components/log/src/log-utils.js +71 -10
  135. package/dist/components/markdown/index.d.ts +1 -1
  136. package/dist/components/markdown/src/RsMarkdown.css +75 -32
  137. package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
  138. package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
  139. package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
  140. package/dist/components/markdown/src/markdown-utils.js +114 -12
  141. package/dist/components/mentions/src/RsMentions.d.ts +2 -2
  142. package/dist/components/menu/index.d.ts +1 -1
  143. package/dist/components/menu/src/RsMenu.css +70 -29
  144. package/dist/components/menu/src/RsMenu.d.ts +58 -4
  145. package/dist/components/menu/src/RsMenu.impl.js +93 -46
  146. package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
  147. package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
  148. package/dist/components/menu/src/menu-utils.d.ts +56 -0
  149. package/dist/components/menu/src/menu-utils.js +139 -6
  150. package/dist/components/monaco-editor/index.d.ts +1 -1
  151. package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
  152. package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
  153. package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
  154. package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
  155. package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
  156. package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
  157. package/dist/components/pagination/index.d.ts +2 -2
  158. package/dist/components/pagination/src/RsPagination.css +93 -46
  159. package/dist/components/pagination/src/RsPagination.d.ts +68 -8
  160. package/dist/components/pagination/src/RsPagination.impl.js +229 -86
  161. package/dist/components/pagination/src/RsPagination.js +1 -1
  162. package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
  163. package/dist/components/pagination/src/pagination-utils.js +105 -1
  164. package/dist/components/popover/index.d.ts +1 -0
  165. package/dist/components/popover/src/RsPopover.css +124 -14
  166. package/dist/components/popover/src/RsPopover.d.ts +38 -7
  167. package/dist/components/popover/src/RsPopover.impl.js +546 -35
  168. package/dist/components/popover/src/RsPopover.js +2 -1
  169. package/dist/components/popover/src/popover-utils.d.ts +24 -2
  170. package/dist/components/popover/src/popover-utils.js +55 -0
  171. package/dist/components/sidebar/index.d.ts +1 -0
  172. package/dist/components/sidebar/src/RsSidebar.css +91 -33
  173. package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
  174. package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
  175. package/dist/components/sidebar/src/RsSidebar.js +1 -1
  176. package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
  177. package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
  178. package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
  179. package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
  180. package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
  181. package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
  182. package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
  183. package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
  184. package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
  185. package/dist/components/sidebar/src/sidebar-utils.js +72 -0
  186. package/dist/components/split-pane/index.d.ts +2 -2
  187. package/dist/components/split-pane/src/RsSplitPane.css +41 -30
  188. package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
  189. package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
  190. package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
  191. package/dist/components/split-pane/src/split-pane-utils.js +18 -1
  192. package/dist/components/stat-card/index.d.ts +1 -0
  193. package/dist/components/stat-card/src/RsStatCard.css +129 -25
  194. package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
  195. package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
  196. package/dist/components/stat-card/src/RsStatCard.js +1 -1
  197. package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
  198. package/dist/components/stat-card/src/stat-card-utils.js +113 -0
  199. package/dist/components/steps/index.d.ts +1 -1
  200. package/dist/components/steps/src/RsSteps.css +158 -37
  201. package/dist/components/steps/src/RsSteps.d.ts +69 -5
  202. package/dist/components/steps/src/RsSteps.impl.js +168 -28
  203. package/dist/components/steps/src/RsSteps.js +1 -1
  204. package/dist/components/steps/src/steps-utils.d.ts +51 -1
  205. package/dist/components/steps/src/steps-utils.js +67 -1
  206. package/dist/components/table/src/RsTable.impl.js +4 -2
  207. package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
  208. package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
  209. package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
  210. package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
  211. package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
  212. package/dist/components/table/src/rs-table-props.d.ts +1 -1
  213. package/dist/components/table/src/rs-table-props.js +0 -1
  214. package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
  215. package/dist/components/table/src/table-body/RsTableCell.impl.js +1 -1
  216. package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
  217. package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
  218. package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
  219. package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
  220. package/dist/components/table/src/utils/table-utils.d.ts +10 -6
  221. package/dist/components/table/src/utils/table-utils.js +27 -25
  222. package/dist/components/table/style/rs-table.css +86 -28
  223. package/dist/components/tabs/index.d.ts +2 -2
  224. package/dist/components/tabs/src/RsTabs.css +225 -101
  225. package/dist/components/tabs/src/RsTabs.d.ts +37 -8
  226. package/dist/components/tabs/src/RsTabs.impl.js +400 -270
  227. package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
  228. package/dist/components/tabs/src/tabs-utils.js +55 -1
  229. package/dist/components/terminal/index.d.ts +1 -1
  230. package/dist/components/terminal/src/RsTerminal.css +60 -37
  231. package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
  232. package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
  233. package/dist/components/terminal/src/RsTerminal.js +1 -1
  234. package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
  235. package/dist/components/terminal/src/terminal-utils.js +113 -10
  236. package/dist/components/textarea/src/RsTextarea.d.ts +1 -1
  237. package/dist/components/time-picker/src/RsTimePicker.d.ts +2 -2
  238. package/dist/components/toaster/src/RsToaster.css +156 -203
  239. package/dist/components/toaster/src/RsToaster.d.ts +32 -2
  240. package/dist/components/toaster/src/RsToaster.impl.js +309 -34
  241. package/dist/components/toaster/src/toast-store.d.ts +95 -0
  242. package/dist/components/toaster/src/toast-store.js +177 -0
  243. package/dist/components/toaster/src/toast-utils.d.ts +60 -0
  244. package/dist/components/toaster/src/toast-utils.js +86 -0
  245. package/dist/components/toolbar/index.d.ts +1 -1
  246. package/dist/components/toolbar/src/RsToolbar.css +206 -32
  247. package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
  248. package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
  249. package/dist/components/toolbar/src/RsToolbar.js +2 -1
  250. package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
  251. package/dist/components/toolbar/src/toolbar-utils.js +105 -0
  252. package/dist/components/tooltip/index.d.ts +1 -0
  253. package/dist/components/tooltip/src/RsTooltip.css +104 -26
  254. package/dist/components/tooltip/src/RsTooltip.d.ts +38 -16
  255. package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
  256. package/dist/components/tooltip/src/RsTooltip.js +2 -1
  257. package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
  258. package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
  259. package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
  260. package/dist/components/tooltip/src/tooltip-utils.js +23 -0
  261. package/dist/components/tree/index.d.ts +2 -2
  262. package/dist/components/tree/src/RsTree.css +84 -75
  263. package/dist/components/tree/src/RsTree.d.ts +20 -20
  264. package/dist/components/tree/src/RsTree.impl.js +292 -66
  265. package/dist/components/tree/src/RsTree.js +1 -1
  266. package/dist/components/tree/src/tree-utils.d.ts +22 -0
  267. package/dist/components/tree/src/tree-utils.js +18 -4
  268. package/dist/components/tree-select/src/RsTreeSelect.d.ts +1 -1
  269. package/dist/components/virtual-list/index.d.ts +1 -1
  270. package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
  271. package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
  272. package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
  273. package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
  274. package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
  275. package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
  276. package/dist/composables/useRsLoadingBar.d.ts +2 -5
  277. package/dist/composables/useRsLoadingBar.js +21 -5
  278. package/dist/composables/useRsTabsNav.d.ts +3 -1
  279. package/dist/composables/useRsTabsNav.js +96 -28
  280. package/dist/composables/useRsToast.d.ts +11 -13
  281. package/dist/composables/useRsToast.js +66 -17
  282. package/dist/index.d.ts +30 -21
  283. package/dist/index.js +14 -0
  284. package/dist/locale/apply.js +6 -1
  285. package/dist/locale/messages.js +128 -2
  286. package/dist/styles.css +465 -808
  287. package/dist/theme/brand.example.css +3 -2
  288. package/dist/vite-plugins/niuma-ui-host.js +1 -1
  289. package/package.json +2 -5
  290. package/dist/components/_shared/src/reka.d.ts +0 -2
  291. package/dist/components/_shared/src/reka.js +0 -2
@@ -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[];