niuma-ui 2.0.4 → 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 (279) hide show
  1. package/CHANGELOG.md +58 -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.js +2 -2
  6. package/dist/components/alert/index.d.ts +1 -0
  7. package/dist/components/alert/src/RsAlert.css +120 -65
  8. package/dist/components/alert/src/RsAlert.d.ts +24 -5
  9. package/dist/components/alert/src/RsAlert.impl.js +108 -36
  10. package/dist/components/alert/src/RsAlert.js +1 -1
  11. package/dist/components/alert/src/alert-utils.d.ts +37 -0
  12. package/dist/components/alert/src/alert-utils.js +71 -0
  13. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +1 -1
  14. package/dist/components/button/src/RsButton.impl.js +1 -1
  15. package/dist/components/card/src/RsCard.d.ts +1 -1
  16. package/dist/components/code-block/index.d.ts +1 -0
  17. package/dist/components/code-block/src/RsCodeBlock.css +93 -52
  18. package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
  19. package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
  20. package/dist/components/code-block/src/RsCodeBlock.js +1 -1
  21. package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
  22. package/dist/components/code-block/src/code-block-highlight.js +34 -0
  23. package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
  24. package/dist/components/code-block/src/code-block-utils.js +71 -0
  25. package/dist/components/code-editor/index.d.ts +1 -1
  26. package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
  27. package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
  28. package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
  29. package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
  30. package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
  31. package/dist/components/code-editor/src/code-editor-utils.js +36 -1
  32. package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
  33. package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
  34. package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
  35. package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
  36. package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
  37. package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
  38. package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
  39. package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
  40. package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
  41. package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
  42. package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
  43. package/dist/components/code-editor/src/code-mirror-session.js +30 -0
  44. package/dist/components/context-menu/index.d.ts +1 -1
  45. package/dist/components/context-menu/src/RsContextMenu.css +115 -89
  46. package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
  47. package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
  48. package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
  49. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
  50. package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
  51. package/dist/components/context-menu/src/context-menu-utils.js +168 -3
  52. package/dist/components/date-picker/src/RsDatePicker.d.ts +2 -2
  53. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +2 -2
  54. package/dist/components/descriptions/index.d.ts +1 -1
  55. package/dist/components/descriptions/src/RsDescriptions.css +38 -11
  56. package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
  57. package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
  58. package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
  59. package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
  60. package/dist/components/descriptions/src/descriptions-utils.js +39 -1
  61. package/dist/components/dialog/index.d.ts +1 -1
  62. package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
  63. package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
  64. package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
  65. package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
  66. package/dist/components/dialog/src/RsDialog.css +102 -109
  67. package/dist/components/dialog/src/RsDialog.d.ts +34 -24
  68. package/dist/components/dialog/src/RsDialog.impl.js +410 -177
  69. package/dist/components/dialog/src/RsDialog.js +2 -1
  70. package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
  71. package/dist/components/dialog/src/dialog-utils.js +152 -1
  72. package/dist/components/dialog/src/dialog-window.js +29 -8
  73. package/dist/components/drawer/index.d.ts +1 -1
  74. package/dist/components/drawer/src/RsDrawer.css +61 -29
  75. package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
  76. package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
  77. package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
  78. package/dist/components/drawer/src/drawer-utils.js +131 -1
  79. package/dist/components/dropdown/index.d.ts +1 -1
  80. package/dist/components/dropdown/src/RsDropdown.css +140 -61
  81. package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
  82. package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
  83. package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
  84. package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
  85. package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
  86. package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
  87. package/dist/components/dropdown/src/dropdown-utils.js +103 -3
  88. package/dist/components/empty/index.d.ts +1 -0
  89. package/dist/components/empty/src/RsEmpty.css +105 -23
  90. package/dist/components/empty/src/RsEmpty.d.ts +27 -4
  91. package/dist/components/empty/src/RsEmpty.impl.js +154 -11
  92. package/dist/components/empty/src/RsEmpty.js +2 -1
  93. package/dist/components/empty/src/empty-utils.d.ts +28 -0
  94. package/dist/components/empty/src/empty-utils.js +55 -0
  95. package/dist/components/form/src/RsForm.d.ts +1 -1
  96. package/dist/components/input-number/src/RsInputNumber.d.ts +1 -1
  97. package/dist/components/label/src/RsLabel.d.ts +1 -1
  98. package/dist/components/loading/index.d.ts +1 -0
  99. package/dist/components/loading/src/RsLoading.css +13 -97
  100. package/dist/components/loading/src/RsLoading.d.ts +52 -2
  101. package/dist/components/loading/src/RsLoading.impl.js +216 -33
  102. package/dist/components/loading/src/RsLoading.js +2 -1
  103. package/dist/components/loading/src/loading-status.css +210 -0
  104. package/dist/components/loading/src/loading-status.d.ts +34 -0
  105. package/dist/components/loading/src/loading-status.impl.js +84 -0
  106. package/dist/components/loading/src/loading-status.js +8 -0
  107. package/dist/components/loading/src/loading-utils.d.ts +51 -4
  108. package/dist/components/loading/src/loading-utils.js +122 -0
  109. package/dist/components/loading-bar/index.d.ts +1 -0
  110. package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
  111. package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
  112. package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
  113. package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
  114. package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
  115. package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
  116. package/dist/components/log/src/RsLog.css +52 -144
  117. package/dist/components/log/src/RsLog.d.ts +12 -11
  118. package/dist/components/log/src/RsLog.impl.js +181 -148
  119. package/dist/components/log/src/RsLog.js +1 -1
  120. package/dist/components/log/src/RsLogRow.css +152 -0
  121. package/dist/components/log/src/RsLogRow.d.ts +35 -0
  122. package/dist/components/log/src/RsLogRow.impl.js +91 -0
  123. package/dist/components/log/src/RsLogRow.js +8 -0
  124. package/dist/components/log/src/log-utils.d.ts +8 -0
  125. package/dist/components/log/src/log-utils.js +71 -10
  126. package/dist/components/markdown/index.d.ts +1 -1
  127. package/dist/components/markdown/src/RsMarkdown.css +75 -32
  128. package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
  129. package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
  130. package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
  131. package/dist/components/markdown/src/markdown-utils.js +114 -12
  132. package/dist/components/mentions/src/RsMentions.d.ts +2 -2
  133. package/dist/components/menu/index.d.ts +1 -1
  134. package/dist/components/menu/src/RsMenu.css +70 -29
  135. package/dist/components/menu/src/RsMenu.d.ts +58 -4
  136. package/dist/components/menu/src/RsMenu.impl.js +93 -46
  137. package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
  138. package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
  139. package/dist/components/menu/src/menu-utils.d.ts +56 -0
  140. package/dist/components/menu/src/menu-utils.js +139 -6
  141. package/dist/components/monaco-editor/index.d.ts +1 -1
  142. package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
  143. package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
  144. package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
  145. package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
  146. package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
  147. package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
  148. package/dist/components/pagination/index.d.ts +2 -2
  149. package/dist/components/pagination/src/RsPagination.css +93 -46
  150. package/dist/components/pagination/src/RsPagination.d.ts +68 -8
  151. package/dist/components/pagination/src/RsPagination.impl.js +229 -86
  152. package/dist/components/pagination/src/RsPagination.js +1 -1
  153. package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
  154. package/dist/components/pagination/src/pagination-utils.js +105 -1
  155. package/dist/components/popover/index.d.ts +1 -0
  156. package/dist/components/popover/src/RsPopover.css +124 -14
  157. package/dist/components/popover/src/RsPopover.d.ts +38 -7
  158. package/dist/components/popover/src/RsPopover.impl.js +546 -35
  159. package/dist/components/popover/src/RsPopover.js +2 -1
  160. package/dist/components/popover/src/popover-utils.d.ts +24 -2
  161. package/dist/components/popover/src/popover-utils.js +55 -0
  162. package/dist/components/sidebar/index.d.ts +1 -0
  163. package/dist/components/sidebar/src/RsSidebar.css +91 -33
  164. package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
  165. package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
  166. package/dist/components/sidebar/src/RsSidebar.js +1 -1
  167. package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
  168. package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
  169. package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
  170. package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
  171. package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
  172. package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
  173. package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
  174. package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
  175. package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
  176. package/dist/components/sidebar/src/sidebar-utils.js +72 -0
  177. package/dist/components/split-pane/index.d.ts +2 -2
  178. package/dist/components/split-pane/src/RsSplitPane.css +41 -30
  179. package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
  180. package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
  181. package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
  182. package/dist/components/split-pane/src/split-pane-utils.js +18 -1
  183. package/dist/components/stat-card/index.d.ts +1 -0
  184. package/dist/components/stat-card/src/RsStatCard.css +129 -25
  185. package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
  186. package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
  187. package/dist/components/stat-card/src/RsStatCard.js +1 -1
  188. package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
  189. package/dist/components/stat-card/src/stat-card-utils.js +113 -0
  190. package/dist/components/steps/index.d.ts +1 -1
  191. package/dist/components/steps/src/RsSteps.css +158 -37
  192. package/dist/components/steps/src/RsSteps.d.ts +69 -5
  193. package/dist/components/steps/src/RsSteps.impl.js +168 -28
  194. package/dist/components/steps/src/RsSteps.js +1 -1
  195. package/dist/components/steps/src/steps-utils.d.ts +51 -1
  196. package/dist/components/steps/src/steps-utils.js +67 -1
  197. package/dist/components/table/src/RsTable.impl.js +4 -2
  198. package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
  199. package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
  200. package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
  201. package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
  202. package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
  203. package/dist/components/table/src/rs-table-props.d.ts +1 -1
  204. package/dist/components/table/src/rs-table-props.js +0 -1
  205. package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
  206. package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
  207. package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
  208. package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
  209. package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
  210. package/dist/components/table/src/utils/table-utils.d.ts +10 -6
  211. package/dist/components/table/src/utils/table-utils.js +27 -25
  212. package/dist/components/table/style/rs-table.css +34 -20
  213. package/dist/components/tabs/index.d.ts +2 -2
  214. package/dist/components/tabs/src/RsTabs.css +225 -101
  215. package/dist/components/tabs/src/RsTabs.d.ts +37 -8
  216. package/dist/components/tabs/src/RsTabs.impl.js +400 -270
  217. package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
  218. package/dist/components/tabs/src/tabs-utils.js +55 -1
  219. package/dist/components/terminal/index.d.ts +1 -1
  220. package/dist/components/terminal/src/RsTerminal.css +60 -37
  221. package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
  222. package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
  223. package/dist/components/terminal/src/RsTerminal.js +1 -1
  224. package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
  225. package/dist/components/terminal/src/terminal-utils.js +113 -10
  226. package/dist/components/textarea/src/RsTextarea.d.ts +1 -1
  227. package/dist/components/time-picker/src/RsTimePicker.d.ts +2 -2
  228. package/dist/components/toaster/src/RsToaster.css +156 -203
  229. package/dist/components/toaster/src/RsToaster.d.ts +32 -2
  230. package/dist/components/toaster/src/RsToaster.impl.js +309 -34
  231. package/dist/components/toaster/src/toast-store.d.ts +95 -0
  232. package/dist/components/toaster/src/toast-store.js +177 -0
  233. package/dist/components/toaster/src/toast-utils.d.ts +60 -0
  234. package/dist/components/toaster/src/toast-utils.js +86 -0
  235. package/dist/components/toolbar/index.d.ts +1 -1
  236. package/dist/components/toolbar/src/RsToolbar.css +206 -32
  237. package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
  238. package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
  239. package/dist/components/toolbar/src/RsToolbar.js +2 -1
  240. package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
  241. package/dist/components/toolbar/src/toolbar-utils.js +105 -0
  242. package/dist/components/tooltip/index.d.ts +1 -0
  243. package/dist/components/tooltip/src/RsTooltip.css +104 -26
  244. package/dist/components/tooltip/src/RsTooltip.d.ts +38 -16
  245. package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
  246. package/dist/components/tooltip/src/RsTooltip.js +2 -1
  247. package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
  248. package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
  249. package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
  250. package/dist/components/tooltip/src/tooltip-utils.js +23 -0
  251. package/dist/components/tree/index.d.ts +2 -2
  252. package/dist/components/tree/src/RsTree.css +84 -75
  253. package/dist/components/tree/src/RsTree.d.ts +20 -20
  254. package/dist/components/tree/src/RsTree.impl.js +292 -66
  255. package/dist/components/tree/src/RsTree.js +1 -1
  256. package/dist/components/tree/src/tree-utils.d.ts +22 -0
  257. package/dist/components/tree/src/tree-utils.js +18 -4
  258. package/dist/components/tree-select/src/RsTreeSelect.d.ts +1 -1
  259. package/dist/components/virtual-list/index.d.ts +1 -1
  260. package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
  261. package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
  262. package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
  263. package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
  264. package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
  265. package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
  266. package/dist/composables/useRsLoadingBar.d.ts +2 -5
  267. package/dist/composables/useRsLoadingBar.js +21 -5
  268. package/dist/composables/useRsTabsNav.d.ts +3 -1
  269. package/dist/composables/useRsTabsNav.js +96 -28
  270. package/dist/composables/useRsToast.d.ts +11 -13
  271. package/dist/composables/useRsToast.js +66 -17
  272. package/dist/index.d.ts +30 -21
  273. package/dist/index.js +14 -0
  274. package/dist/locale/apply.js +6 -1
  275. package/dist/locale/messages.js +128 -2
  276. package/dist/styles.css +460 -797
  277. package/dist/theme/brand.example.css +2 -1
  278. package/dist/vite-plugins/niuma-ui-host.js +1 -1
  279. package/package.json +2 -3
@@ -1,24 +1,38 @@
1
- import { DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle } from "../../_shared/src/reka.js";
2
1
  import { useRsI18n } from "../../../composables/useRsI18n.js";
3
2
  import RsButton_default from "../../button/src/RsButton.js";
4
3
  import { dialogViewportSize } from "./dialog-viewport.js";
5
- import { isRsDialogWidthPreset, resolveDialogOverlayStyle, resolveRsDialogCssWidth, resolveRsDialogWidthPx, runRsDialogBeforeClose } from "./dialog-utils.js";
4
+ import { acquireDialogScrollLock, claimDialogInert, dialogLayerTick, dialogTargetOwnsTab, isRsDialogWidthPreset, isTopDialogLayer, pushDialogLayer, releaseDialogInert, removeDialogLayer, resolveDialogOverlayStyle, resolveDialogTabTarget, resolveRsDialogCssWidth, resolveRsDialogWidthPx, runRsDialogBeforeClose } from "./dialog-utils.js";
6
5
  import { useRsDialogWindow } from "./dialog-window.js";
7
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, toDisplayString, toRef, unref, useAttrs, useModel, useSlots, watch, withCtx, withModifiers } from "vue";
6
+ import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, getCurrentInstance, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, toDisplayString, toRef, unref, useAttrs, useId, useModel, useSlots, watch, withCtx, withModifiers } from "vue";
8
7
  //#region src/components/dialog/src/RsDialog.vue?vue&type=script&setup=true&lang.ts
9
- var _hoisted_1 = ["onPointerdown"];
10
- var _hoisted_2 = { class: "rs-dialog__heading" };
11
- var _hoisted_3 = { class: "rs-dialog__actions" };
12
- var _hoisted_4 = ["aria-busy"];
13
- var _hoisted_5 = {
8
+ var _hoisted_1 = [
9
+ "data-rs-theme",
10
+ "dir",
11
+ "lang"
12
+ ];
13
+ var _hoisted_2 = [
14
+ "id",
15
+ "aria-modal",
16
+ "aria-labelledby",
17
+ "aria-label",
18
+ "aria-describedby"
19
+ ];
20
+ var _hoisted_3 = ["onPointerdown"];
21
+ var _hoisted_4 = { class: "rs-dialog__heading" };
22
+ var _hoisted_5 = ["id"];
23
+ var _hoisted_6 = ["id"];
24
+ var _hoisted_7 = { class: "rs-dialog__actions" };
25
+ var _hoisted_8 = ["aria-busy"];
26
+ var _hoisted_9 = {
14
27
  key: 1,
15
28
  class: "rs-dialog__body-placeholder"
16
29
  };
17
- var _hoisted_6 = {
30
+ var _hoisted_10 = {
18
31
  key: 1,
19
32
  class: "rs-dialog__footer"
20
33
  };
21
34
  var RsDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
35
+ name: "RsDialog",
22
36
  inheritAttrs: false,
23
37
  __name: "RsDialog",
24
38
  props: /*@__PURE__*/ mergeModels({
@@ -91,7 +105,14 @@ var RsDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
91
105
  autoCloseOnConfirm: {
92
106
  type: Boolean,
93
107
  default: false
94
- }
108
+ },
109
+ lockScroll: {
110
+ type: Boolean,
111
+ default: true
112
+ },
113
+ zIndex: {},
114
+ id: {},
115
+ ariaLabel: {}
95
116
  }, {
96
117
  "open": {
97
118
  type: Boolean,
@@ -113,38 +134,83 @@ var RsDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
113
134
  const attrs = useAttrs();
114
135
  const slots = useSlots();
115
136
  const { t } = useRsI18n();
137
+ const uid = useId();
138
+ const layerId = uid;
139
+ const anchorRef = ref(null);
140
+ const shellRef = ref(null);
141
+ const contentRef = ref(null);
142
+ const panelTheme = ref();
143
+ const panelDir = ref();
144
+ const panelLang = ref();
116
145
  const isCompactLayout = computed(() => props.layout === "form" || props.layout === "confirm");
117
146
  const isWindowLayout = computed(() => !isCompactLayout.value);
118
147
  const enableDraggable = computed(() => props.draggable && isWindowLayout.value);
119
148
  const enableResizable = computed(() => props.resizable && isWindowLayout.value);
120
- const deferBodyMount = computed(() => props.deferBodyMount ?? isWindowLayout.value);
121
- const overlayStyle = computed(() => resolveDialogOverlayStyle({
122
- overlayOpacity: props.overlayOpacity,
123
- overlayBlur: props.overlayBlur
124
- }));
149
+ const passedProps = getCurrentInstance()?.vnode.props;
150
+ function propWasPassed(name) {
151
+ if (!passedProps) return false;
152
+ const kebab = name.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);
153
+ return Object.hasOwn(passedProps, name) || Object.hasOwn(passedProps, kebab);
154
+ }
155
+ const deferBodyMount = computed(() => propWasPassed("deferBodyMount") ? Boolean(props.deferBodyMount) : isWindowLayout.value);
156
+ const domId = computed(() => props.id?.trim() || `rs-dialog-${uid}`);
157
+ const titleDomId = computed(() => `${domId.value}-title`);
158
+ const descriptionDomId = computed(() => `${domId.value}-description`);
159
+ const hasVisibleTitle = computed(() => Boolean(props.title?.trim()) || Boolean(slots.title));
160
+ const hasDescription = computed(() => Boolean(props.description?.trim()) || Boolean(slots.description));
161
+ const labelledBy = computed(() => {
162
+ if (props.ariaLabel?.trim() || slots.header || !hasVisibleTitle.value) return void 0;
163
+ return titleDomId.value;
164
+ });
165
+ const accessibleName = computed(() => {
166
+ if (labelledBy.value) return void 0;
167
+ return props.ariaLabel?.trim() || t("dialog.label");
168
+ });
169
+ const describedBy = computed(() => hasDescription.value && !slots.header ? descriptionDomId.value : void 0);
170
+ const overlayStyle = computed(() => {
171
+ const visual = resolveDialogOverlayStyle({
172
+ overlayOpacity: props.overlayOpacity,
173
+ overlayBlur: props.overlayBlur
174
+ });
175
+ const z = zIndexStyle(0);
176
+ if (!visual) return z;
177
+ if (!z) return visual;
178
+ return {
179
+ ...visual,
180
+ ...z
181
+ };
182
+ });
125
183
  const widthPreset = computed(() => isRsDialogWidthPreset(props.width) ? props.width : "md");
126
184
  const initialWidthPx = computed(() => resolveRsDialogWidthPx(props.width));
127
185
  const initialHeightPx = computed(() => props.height == null || props.height === "" ? void 0 : resolveRsDialogWidthPx(props.height, dialogViewportSize().height));
128
186
  const customCssWidth = computed(() => resolveRsDialogCssWidth(props.width));
129
187
  const bodyReady = ref(false);
130
188
  const closing = ref(false);
131
- let pendingCloseReason = "programmatic";
189
+ let disposed = false;
190
+ let closeGeneration = 0;
132
191
  let bodyMountFrameOuter = 0;
133
192
  let bodyMountFrameInner = 0;
134
193
  let afterOpenTimer = 0;
194
+ let keyBound = false;
195
+ let outsideBound = false;
196
+ let releaseScroll = null;
197
+ let returnTo = null;
198
+ let inertGeneration = 0;
135
199
  function resetBodyMount() {
136
- if (bodyMountFrameOuter) {
137
- cancelAnimationFrame(bodyMountFrameOuter);
138
- bodyMountFrameOuter = 0;
139
- }
140
- if (bodyMountFrameInner) {
141
- cancelAnimationFrame(bodyMountFrameInner);
142
- bodyMountFrameInner = 0;
200
+ if (typeof cancelAnimationFrame === "function") {
201
+ if (bodyMountFrameOuter) cancelAnimationFrame(bodyMountFrameOuter);
202
+ if (bodyMountFrameInner) cancelAnimationFrame(bodyMountFrameInner);
143
203
  }
204
+ bodyMountFrameOuter = 0;
205
+ bodyMountFrameInner = 0;
144
206
  bodyReady.value = false;
145
207
  }
146
208
  function scheduleBodyMount() {
147
209
  resetBodyMount();
210
+ if (typeof requestAnimationFrame !== "function") {
211
+ if (open.value) bodyReady.value = true;
212
+ return;
213
+ }
148
214
  bodyMountFrameOuter = requestAnimationFrame(() => {
149
215
  bodyMountFrameOuter = 0;
150
216
  bodyMountFrameInner = requestAnimationFrame(() => {
@@ -162,32 +228,180 @@ var RsDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
162
228
  scheduleBodyMount();
163
229
  }, { immediate: true });
164
230
  function clearAfterOpenTimer() {
165
- if (!afterOpenTimer) return;
231
+ if (!afterOpenTimer || typeof window === "undefined") return;
166
232
  window.clearTimeout(afterOpenTimer);
167
233
  afterOpenTimer = 0;
168
234
  }
169
235
  function queueAfterOpen() {
170
236
  clearAfterOpenTimer();
237
+ if (typeof window === "undefined") return;
171
238
  afterOpenTimer = window.setTimeout(() => {
172
239
  afterOpenTimer = 0;
173
- if (open.value) emit("afterOpen");
240
+ if (open.value && !disposed) emit("afterOpen");
174
241
  }, 230);
175
242
  }
243
+ function zIndexStyle(offset) {
244
+ if (props.zIndex == null || !Number.isFinite(props.zIndex)) return void 0;
245
+ return { zIndex: String(Math.round(props.zIndex) + offset) };
246
+ }
247
+ function syncChrome() {
248
+ const el = anchorRef.value;
249
+ if (!el) {
250
+ panelTheme.value = void 0;
251
+ panelDir.value = void 0;
252
+ panelLang.value = void 0;
253
+ return;
254
+ }
255
+ const themed = el.closest("[data-rs-theme]");
256
+ const directed = el.closest("[dir]");
257
+ const langed = el.closest("[lang]");
258
+ panelTheme.value = themed instanceof HTMLElement ? themed.dataset.rsTheme : void 0;
259
+ const dir = directed?.getAttribute("dir");
260
+ panelDir.value = dir === "ltr" || dir === "rtl" ? dir : void 0;
261
+ panelLang.value = langed?.getAttribute("lang") || void 0;
262
+ }
263
+ function syncScrollLock() {
264
+ const should = open.value && props.modal && props.lockScroll;
265
+ if (should && !releaseScroll) {
266
+ releaseScroll = acquireDialogScrollLock();
267
+ return;
268
+ }
269
+ if (!should && releaseScroll) {
270
+ releaseScroll();
271
+ releaseScroll = null;
272
+ }
273
+ }
274
+ async function syncInert() {
275
+ const generation = ++inertGeneration;
276
+ await nextTick();
277
+ if (disposed || generation !== inertGeneration) return;
278
+ if (!(open.value && props.modal && isTopDialogLayer(layerId)) || !shellRef.value) {
279
+ releaseDialogInert(layerId);
280
+ return;
281
+ }
282
+ claimDialogInert(layerId, shellRef.value);
283
+ }
284
+ function bindKey() {
285
+ if (keyBound || typeof document === "undefined") return;
286
+ document.addEventListener("keydown", onDocumentKeydown, true);
287
+ keyBound = true;
288
+ }
289
+ function unbindKey() {
290
+ if (!keyBound || typeof document === "undefined") return;
291
+ document.removeEventListener("keydown", onDocumentKeydown, true);
292
+ keyBound = false;
293
+ }
294
+ function bindOutside() {
295
+ if (outsideBound || typeof document === "undefined") return;
296
+ document.addEventListener("pointerdown", onDocumentPointerDown, true);
297
+ outsideBound = true;
298
+ }
299
+ function unbindOutside() {
300
+ if (!outsideBound || typeof document === "undefined") return;
301
+ document.removeEventListener("pointerdown", onDocumentPointerDown, true);
302
+ outsideBound = false;
303
+ }
304
+ function syncOutside() {
305
+ if (open.value && props.closeOnOverlayClick) bindOutside();
306
+ else unbindOutside();
307
+ }
308
+ function rememberTrigger() {
309
+ if (typeof document === "undefined") return;
310
+ const active = document.activeElement;
311
+ if (active instanceof HTMLElement && active !== document.body && active !== document.documentElement) {
312
+ returnTo = active;
313
+ return;
314
+ }
315
+ returnTo = null;
316
+ }
317
+ function restoreTrigger() {
318
+ const el = returnTo;
319
+ returnTo = null;
320
+ if (!el?.isConnected) return;
321
+ if (contentRef.value?.contains(el)) return;
322
+ el.focus();
323
+ }
324
+ function focusDialog(force) {
325
+ const root = contentRef.value;
326
+ if (!root || disposed) return;
327
+ const active = document.activeElement;
328
+ if (!force && active instanceof HTMLElement && root.contains(active) && active !== root) return;
329
+ const preferred = root.querySelector("[autofocus]");
330
+ if (preferred && !preferred.hasAttribute("disabled")) {
331
+ preferred.focus();
332
+ return;
333
+ }
334
+ root.focus();
335
+ }
336
+ function queueFocus() {
337
+ nextTick(() => {
338
+ if (!open.value || disposed) return;
339
+ focusDialog(false);
340
+ });
341
+ }
342
+ function focus() {
343
+ focusDialog(true);
344
+ }
345
+ watch(bodyReady, (ready) => {
346
+ if (!ready || !open.value || disposed) return;
347
+ const root = contentRef.value;
348
+ const active = typeof document === "undefined" ? null : document.activeElement;
349
+ if (!root || active === root || !(active instanceof Node) || !root.contains(active)) queueFocus();
350
+ });
176
351
  watch(open, (isOpen, wasOpen) => {
177
- if (isOpen && !wasOpen) {
178
- emit("openChange", true);
179
- queueAfterOpen();
352
+ if (isOpen) {
353
+ if (wasOpen !== true) {
354
+ rememberTrigger();
355
+ syncChrome();
356
+ pushDialogLayer(layerId);
357
+ queueAfterOpen();
358
+ queueFocus();
359
+ if (wasOpen === false) emit("openChange", true);
360
+ }
361
+ bindKey();
362
+ syncScrollLock();
363
+ syncOutside();
364
+ syncInert();
180
365
  return;
181
366
  }
182
- if (!isOpen && wasOpen) {
367
+ clearAfterOpenTimer();
368
+ removeDialogLayer(layerId);
369
+ unbindKey();
370
+ unbindOutside();
371
+ syncScrollLock();
372
+ inertGeneration += 1;
373
+ releaseDialogInert(layerId);
374
+ if (wasOpen === true) {
375
+ restoreTrigger();
183
376
  emit("openChange", false);
184
377
  if (!closing.value) emit("afterClose", "programmatic");
185
378
  }
379
+ }, { immediate: true });
380
+ watch(() => [
381
+ props.modal,
382
+ props.lockScroll,
383
+ props.closeOnOverlayClick,
384
+ dialogLayerTick.value
385
+ ], () => {
386
+ if (!open.value || disposed) return;
387
+ syncScrollLock();
388
+ syncOutside();
389
+ syncInert();
390
+ });
391
+ onMounted(() => {
392
+ if (open.value) syncChrome();
186
393
  });
187
- onMounted(() => {});
188
394
  onBeforeUnmount(() => {
395
+ disposed = true;
396
+ inertGeneration += 1;
189
397
  resetBodyMount();
190
398
  clearAfterOpenTimer();
399
+ removeDialogLayer(layerId);
400
+ unbindKey();
401
+ unbindOutside();
402
+ releaseScroll?.();
403
+ releaseScroll = null;
404
+ releaseDialogInert(layerId);
191
405
  });
192
406
  const showBodyContent = computed(() => !deferBodyMount.value || bodyReady.value);
193
407
  const showBuiltinFooter = computed(() => props.showFooter && !slots.footer && (props.showCancel || props.showConfirm));
@@ -209,59 +423,66 @@ var RsDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
209
423
  ];
210
424
  });
211
425
  const contentStyle = computed(() => {
212
- const base = isWindowLayout.value ? dialogStyle.value : void 0;
213
- if (isWindowLayout.value) return base;
426
+ const z = zIndexStyle(1);
427
+ if (isWindowLayout.value) {
428
+ if (!z) return dialogStyle.value;
429
+ return {
430
+ ...dialogStyle.value,
431
+ ...z
432
+ };
433
+ }
214
434
  const cssW = customCssWidth.value;
215
- if (!cssW) return base;
216
- return {
217
- ...base ?? {},
218
- maxWidth: cssW
219
- };
435
+ if (!cssW && !z) return void 0;
436
+ const style = {};
437
+ if (cssW) style.maxWidth = cssW;
438
+ if (z) Object.assign(style, z);
439
+ return style;
220
440
  });
221
441
  async function requestClose(reason) {
222
- if (!open.value || closing.value) return false;
442
+ if (disposed || !open.value || closing.value) return false;
443
+ const generation = ++closeGeneration;
223
444
  closing.value = true;
224
- pendingCloseReason = reason;
225
445
  try {
226
- if (!await runRsDialogBeforeClose(props.beforeClose, reason)) return false;
446
+ if (!await runRsDialogBeforeClose(props.beforeClose, reason) || disposed || generation !== closeGeneration) return false;
227
447
  open.value = false;
228
448
  await nextTick();
229
- emit("afterClose", reason);
449
+ if (!disposed) emit("afterClose", reason);
230
450
  return true;
451
+ } catch {
452
+ return false;
231
453
  } finally {
232
- closing.value = false;
454
+ if (generation === closeGeneration) closing.value = false;
233
455
  }
234
456
  }
235
- /** DialogRoot 受控更新:打开直通;关闭统一走 beforeClose */
236
- async function onUpdateOpen(next) {
237
- if (next) {
238
- open.value = true;
239
- return;
240
- }
241
- await requestClose(pendingCloseReason);
242
- pendingCloseReason = "programmatic";
243
- }
244
- function onEscapeKeyDown(event) {
245
- if (!props.closeOnEsc || props.confirmLoading) {
457
+ function onDocumentKeydown(event) {
458
+ if (!open.value || !isTopDialogLayer(layerId)) return;
459
+ if (event.key === "Escape") {
460
+ if (event.isComposing) return;
461
+ if (!props.closeOnEsc || props.confirmLoading) {
462
+ event.preventDefault();
463
+ return;
464
+ }
246
465
  event.preventDefault();
466
+ requestClose("escape");
247
467
  return;
248
468
  }
249
- pendingCloseReason = "escape";
469
+ if (event.key !== "Tab" || !props.modal || dialogTargetOwnsTab(event.target)) return;
470
+ const root = contentRef.value;
471
+ if (!root) return;
472
+ const target = resolveDialogTabTarget(root, document.activeElement, event.shiftKey);
473
+ if (target === "stay") return;
474
+ event.preventDefault();
475
+ target.focus();
250
476
  }
251
- /** 是否因外部交互关闭:与 modal 无关;非模态仍允许背后操作,仅控制是否 dismiss。 */
252
- function onPointerDownOutside(event) {
253
- if (!props.closeOnOverlayClick || props.confirmLoading) {
254
- event.preventDefault();
255
- return;
256
- }
257
- pendingCloseReason = "overlay";
258
- }
259
- function onInteractOutside(event) {
260
- if (!props.closeOnOverlayClick || props.confirmLoading) {
261
- event.preventDefault();
262
- return;
263
- }
264
- pendingCloseReason = "overlay";
477
+ function onDocumentPointerDown(event) {
478
+ if (!open.value || !props.closeOnOverlayClick || props.confirmLoading) return;
479
+ if (!isTopDialogLayer(layerId)) return;
480
+ const root = contentRef.value;
481
+ const target = event.target;
482
+ if (!(target instanceof Node) || root?.contains(target)) return;
483
+ event.preventDefault();
484
+ event.stopPropagation();
485
+ requestClose("overlay");
265
486
  }
266
487
  async function onHeaderCloseClick() {
267
488
  await requestClose("close");
@@ -285,128 +506,140 @@ var RsDialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
285
506
  boundsTransition: toRef(props, "boundsTransition")
286
507
  });
287
508
  /**
288
- * 全屏时跳出业务挂载点,挂到默认 portal(通常 body),
509
+ * 全屏时跳出业务挂载点,挂到 body,
289
510
  * 还原后仍回到 props.teleportTo,以保留页签内浮层的生命周期绑定。
290
511
  */
291
512
  const resolvedTeleportTo = computed(() => {
292
- if (isFullscreen.value && props.teleportTo !== false) return;
513
+ if (isFullscreen.value && props.teleportTo !== false) return void 0;
293
514
  return props.teleportTo;
294
515
  });
295
- const contentRef = ref(null);
296
- watch(contentRef, (inst) => {
297
- if (!inst) {
298
- setPanelEl(null);
299
- return;
300
- }
301
- const el = inst instanceof HTMLElement ? inst : inst.$el ?? null;
302
- setPanelEl(el instanceof HTMLElement ? el : null);
516
+ const teleportDisabled = computed(() => resolvedTeleportTo.value === false);
517
+ const teleportTarget = computed(() => {
518
+ const target = resolvedTeleportTo.value;
519
+ if (target === false || target == null) return "body";
520
+ return target;
521
+ });
522
+ watch(resolvedTeleportTo, () => {
523
+ if (!open.value || disposed) return;
524
+ syncInert();
525
+ });
526
+ watch(contentRef, (el) => {
527
+ setPanelEl(el);
303
528
  }, { flush: "post" });
304
529
  __expose({
305
- /** 请求关闭(走 beforeClose) */
306
530
  close: (reason = "programmatic") => requestClose(reason),
307
- /** 打开对话框 */
308
531
  openDialog: () => {
309
532
  open.value = true;
310
- }
533
+ },
534
+ focus
311
535
  });
312
536
  return (_ctx, _cache) => {
313
- return openBlock(), createBlock(unref(DialogRoot), {
314
- open: open.value,
315
- modal: __props.modal,
316
- "onUpdate:open": onUpdateOpen
317
- }, {
318
- default: withCtx(() => [createVNode(unref(DialogPortal), {
319
- disabled: resolvedTeleportTo.value === false,
320
- to: resolvedTeleportTo.value === false ? void 0 : resolvedTeleportTo.value
537
+ return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", {
538
+ ref_key: "anchorRef",
539
+ ref: anchorRef,
540
+ hidden: "",
541
+ class: "rs-dialog__anchor",
542
+ "aria-hidden": "true"
543
+ }, null, 512), (openBlock(), createBlock(Teleport, {
544
+ defer: "",
545
+ to: teleportTarget.value,
546
+ disabled: teleportDisabled.value
547
+ }, [open.value ? (openBlock(), createElementBlock("div", {
548
+ key: 0,
549
+ ref_key: "shellRef",
550
+ ref: shellRef,
551
+ class: "rs-dialog",
552
+ "data-rs-theme": panelTheme.value,
553
+ dir: panelDir.value,
554
+ lang: panelLang.value
555
+ }, [__props.modal ? (openBlock(), createElementBlock("div", {
556
+ key: 0,
557
+ class: normalizeClass(["rs-dialog__backdrop rs-motion-reduce", { "rs-dialog__overlay": __props.showOverlay }]),
558
+ style: normalizeStyle(__props.showOverlay ? overlayStyle.value : zIndexStyle(0)),
559
+ "aria-hidden": "true"
560
+ }, null, 6)) : createCommentVNode("", true), createElementVNode("dialog", mergeProps({
561
+ id: domId.value,
562
+ ref_key: "contentRef",
563
+ ref: contentRef
564
+ }, unref(attrs), {
565
+ open: "",
566
+ class: ["rs-dialog__content rs-motion-reduce", contentClass.value],
567
+ style: contentStyle.value,
568
+ "aria-modal": __props.modal ? "true" : "false",
569
+ "aria-labelledby": labelledBy.value,
570
+ "aria-label": accessibleName.value,
571
+ "aria-describedby": describedBy.value,
572
+ tabindex: "-1",
573
+ "data-state": "open"
574
+ }), [
575
+ enableResizable.value && !unref(isFullscreen) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(resizeHandles), (handle) => {
576
+ return openBlock(), createElementBlock("div", {
577
+ key: handle,
578
+ class: normalizeClass(["rs-dialog__resize-handle", `rs-dialog__resize-handle--${handle}`]),
579
+ "aria-hidden": "true",
580
+ onPointerdown: withModifiers(($event) => unref(onResizePointerDown)(handle, $event), ["stop"])
581
+ }, null, 42, _hoisted_3);
582
+ }), 128)) : createCommentVNode("", true),
583
+ createElementVNode("header", {
584
+ class: "rs-dialog__header",
585
+ onPointerdown: _cache[0] || (_cache[0] = (...args) => unref(onHeaderPointerDown) && unref(onHeaderPointerDown)(...args))
586
+ }, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("div", _hoisted_4, [createElementVNode("h2", {
587
+ id: titleDomId.value,
588
+ class: "rs-dialog__title"
589
+ }, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(resolvedTitle.value), 1)], true)], 8, _hoisted_5), hasDescription.value ? (openBlock(), createElementBlock("p", {
590
+ key: 0,
591
+ id: descriptionDomId.value,
592
+ class: "rs-dialog__description"
593
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)], true)], 8, _hoisted_6)) : createCommentVNode("", true)])], true), createElementVNode("div", _hoisted_7, [__props.fullscreenable && isWindowLayout.value ? (openBlock(), createBlock(RsButton_default, {
594
+ key: 0,
595
+ variant: "ghost",
596
+ size: "sm",
597
+ "icon-only": "",
598
+ icon: unref(isFullscreen) ? "minimize-2" : "maximize-2",
599
+ tooltip: unref(isFullscreen) ? unref(t)("dialog.restore") : unref(t)("dialog.fullscreen"),
600
+ onClick: unref(toggleFullscreen)
601
+ }, null, 8, [
602
+ "icon",
603
+ "tooltip",
604
+ "onClick"
605
+ ])) : createCommentVNode("", true), __props.showClose ? (openBlock(), createBlock(RsButton_default, {
606
+ key: 1,
607
+ variant: "ghost",
608
+ size: "sm",
609
+ "icon-only": "",
610
+ icon: "x",
611
+ disabled: __props.confirmLoading,
612
+ tooltip: unref(t)("dialog.close"),
613
+ onClick: onHeaderCloseClick
614
+ }, null, 8, ["disabled", "tooltip"])) : createCommentVNode("", true)])], 32),
615
+ createElementVNode("div", {
616
+ class: "rs-dialog__body",
617
+ "aria-busy": deferBodyMount.value && !bodyReady.value ? "true" : void 0
618
+ }, [showBodyContent.value ? renderSlot(_ctx.$slots, "body", {}, () => [renderSlot(_ctx.$slots, "default", {}, void 0, true)], true, 0) : (openBlock(), createElementBlock("div", _hoisted_9, [renderSlot(_ctx.$slots, "body-placeholder", {}, void 0, true)]))], 8, _hoisted_8),
619
+ _ctx.$slots.footer || showBuiltinFooter.value ? (openBlock(), createElementBlock("footer", _hoisted_10, [renderSlot(_ctx.$slots, "footer", {
620
+ confirmLoading: __props.confirmLoading,
621
+ onConfirm: onBuiltinConfirm,
622
+ onCancel: onBuiltinCancel
623
+ }, () => [showBuiltinFooter.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [__props.showCancel ? (openBlock(), createBlock(RsButton_default, {
624
+ key: 0,
625
+ variant: "default",
626
+ size: "sm",
627
+ disabled: __props.confirmLoading,
628
+ onClick: onBuiltinCancel
629
+ }, {
630
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelText ?? unref(t)("common.cancel")), 1)]),
631
+ _: 1
632
+ }, 8, ["disabled"])) : createCommentVNode("", true), __props.showConfirm ? (openBlock(), createBlock(RsButton_default, {
633
+ key: 1,
634
+ variant: __props.confirmVariant,
635
+ size: "sm",
636
+ loading: __props.confirmLoading,
637
+ onClick: onBuiltinConfirm
321
638
  }, {
322
- default: withCtx(() => [__props.showOverlay ? (openBlock(), createBlock(unref(DialogOverlay), {
323
- key: 0,
324
- class: "rs-dialog__overlay rs-motion-reduce",
325
- style: normalizeStyle(overlayStyle.value)
326
- }, null, 8, ["style"])) : createCommentVNode("", true), createVNode(unref(DialogContent), mergeProps({
327
- ref_key: "contentRef",
328
- ref: contentRef
329
- }, unref(attrs), {
330
- class: ["rs-dialog__content rs-motion-reduce", contentClass.value],
331
- style: contentStyle.value,
332
- onPointerDownOutside,
333
- onInteractOutside,
334
- onEscapeKeyDown
335
- }), {
336
- default: withCtx(() => [
337
- enableResizable.value && !unref(isFullscreen) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(resizeHandles), (handle) => {
338
- return openBlock(), createElementBlock("div", {
339
- key: handle,
340
- class: normalizeClass(["rs-dialog__resize-handle", `rs-dialog__resize-handle--${handle}`]),
341
- "aria-hidden": true,
342
- onPointerdown: withModifiers(($event) => unref(onResizePointerDown)(handle, $event), ["stop"])
343
- }, null, 42, _hoisted_1);
344
- }), 128)) : createCommentVNode("", true),
345
- createElementVNode("header", {
346
- class: "rs-dialog__header",
347
- onPointerdown: _cache[0] || (_cache[0] = (...args) => unref(onHeaderPointerDown) && unref(onHeaderPointerDown)(...args))
348
- }, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("div", _hoisted_2, [createVNode(unref(DialogTitle), { class: "rs-dialog__title" }, {
349
- default: withCtx(() => [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(resolvedTitle.value), 1)])]),
350
- _: 3
351
- }), createVNode(unref(DialogDescription), { class: normalizeClass(["rs-dialog__description", { "rs-dialog__description--sr-only": !__props.description && !_ctx.$slots.description }]) }, {
352
- default: withCtx(() => [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description || resolvedTitle.value), 1)])]),
353
- _: 3
354
- }, 8, ["class"])])]), createElementVNode("div", _hoisted_3, [__props.fullscreenable && isWindowLayout.value ? (openBlock(), createBlock(RsButton_default, {
355
- key: 0,
356
- variant: "ghost",
357
- size: "sm",
358
- "icon-only": "",
359
- icon: unref(isFullscreen) ? "minimize-2" : "maximize-2",
360
- tooltip: unref(isFullscreen) ? unref(t)("dialog.restore") : unref(t)("dialog.fullscreen"),
361
- onClick: unref(toggleFullscreen)
362
- }, null, 8, [
363
- "icon",
364
- "tooltip",
365
- "onClick"
366
- ])) : createCommentVNode("", true), __props.showClose ? (openBlock(), createBlock(RsButton_default, {
367
- key: 1,
368
- variant: "ghost",
369
- size: "sm",
370
- "icon-only": "",
371
- icon: "x",
372
- disabled: __props.confirmLoading,
373
- tooltip: unref(t)("dialog.close"),
374
- onClick: onHeaderCloseClick
375
- }, null, 8, ["disabled", "tooltip"])) : createCommentVNode("", true)])], 32),
376
- createElementVNode("div", {
377
- class: "rs-dialog__body",
378
- "aria-busy": deferBodyMount.value && !bodyReady.value ? "true" : void 0
379
- }, [showBodyContent.value ? renderSlot(_ctx.$slots, "body", {}, void 0, void 0, 0) : (openBlock(), createElementBlock("div", _hoisted_5, [renderSlot(_ctx.$slots, "body-placeholder")]))], 8, _hoisted_4),
380
- _ctx.$slots.footer || showBuiltinFooter.value ? (openBlock(), createElementBlock("footer", _hoisted_6, [renderSlot(_ctx.$slots, "footer", {
381
- confirmLoading: __props.confirmLoading,
382
- onConfirm: onBuiltinConfirm,
383
- onCancel: onBuiltinCancel
384
- }, () => [showBuiltinFooter.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [__props.showCancel ? (openBlock(), createBlock(RsButton_default, {
385
- key: 0,
386
- variant: "default",
387
- size: "sm",
388
- disabled: __props.confirmLoading,
389
- onClick: onBuiltinCancel
390
- }, {
391
- default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelText ?? unref(t)("common.cancel")), 1)]),
392
- _: 1
393
- }, 8, ["disabled"])) : createCommentVNode("", true), __props.showConfirm ? (openBlock(), createBlock(RsButton_default, {
394
- key: 1,
395
- variant: __props.confirmVariant,
396
- size: "sm",
397
- loading: __props.confirmLoading,
398
- onClick: onBuiltinConfirm
399
- }, {
400
- default: withCtx(() => [createTextVNode(toDisplayString(__props.confirmText ?? unref(t)("common.confirm")), 1)]),
401
- _: 1
402
- }, 8, ["variant", "loading"])) : createCommentVNode("", true)], 64)) : createCommentVNode("", true)])])) : createCommentVNode("", true)
403
- ]),
404
- _: 3
405
- }, 16, ["class", "style"])]),
406
- _: 3
407
- }, 8, ["disabled", "to"])]),
408
- _: 3
409
- }, 8, ["open", "modal"]);
639
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.confirmText ?? unref(t)("common.confirm")), 1)]),
640
+ _: 1
641
+ }, 8, ["variant", "loading"])) : createCommentVNode("", true)], 64)) : createCommentVNode("", true)], true)])) : createCommentVNode("", true)
642
+ ], 16, _hoisted_2)], 8, _hoisted_1)) : createCommentVNode("", true)], 8, ["to", "disabled"]))], 64);
410
643
  };
411
644
  }
412
645
  });