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.
- package/CHANGELOG.md +58 -0
- package/dist/components/_shared/index.d.ts +2 -2
- package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
- package/dist/components/_shared/src/overlay-utils.js +87 -2
- package/dist/components/_shared/src/reka.js +2 -2
- package/dist/components/alert/index.d.ts +1 -0
- package/dist/components/alert/src/RsAlert.css +120 -65
- package/dist/components/alert/src/RsAlert.d.ts +24 -5
- package/dist/components/alert/src/RsAlert.impl.js +108 -36
- package/dist/components/alert/src/RsAlert.js +1 -1
- package/dist/components/alert/src/alert-utils.d.ts +37 -0
- package/dist/components/alert/src/alert-utils.js +71 -0
- package/dist/components/auto-complete/src/RsAutoComplete.d.ts +1 -1
- package/dist/components/button/src/RsButton.impl.js +1 -1
- package/dist/components/card/src/RsCard.d.ts +1 -1
- package/dist/components/code-block/index.d.ts +1 -0
- package/dist/components/code-block/src/RsCodeBlock.css +93 -52
- package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
- package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
- package/dist/components/code-block/src/RsCodeBlock.js +1 -1
- package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
- package/dist/components/code-block/src/code-block-highlight.js +34 -0
- package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
- package/dist/components/code-block/src/code-block-utils.js +71 -0
- package/dist/components/code-editor/index.d.ts +1 -1
- package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
- package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
- package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
- package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
- package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
- package/dist/components/code-editor/src/code-editor-utils.js +36 -1
- package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
- package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
- package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
- package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
- package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
- package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
- package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
- package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
- package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
- package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
- package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
- package/dist/components/code-editor/src/code-mirror-session.js +30 -0
- package/dist/components/context-menu/index.d.ts +1 -1
- package/dist/components/context-menu/src/RsContextMenu.css +115 -89
- package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
- package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
- package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
- package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
- package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
- package/dist/components/context-menu/src/context-menu-utils.js +168 -3
- package/dist/components/date-picker/src/RsDatePicker.d.ts +2 -2
- package/dist/components/date-picker/src/RsDateTimePicker.d.ts +2 -2
- package/dist/components/descriptions/index.d.ts +1 -1
- package/dist/components/descriptions/src/RsDescriptions.css +38 -11
- package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
- package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
- package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
- package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
- package/dist/components/descriptions/src/descriptions-utils.js +39 -1
- package/dist/components/dialog/index.d.ts +1 -1
- package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
- package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
- package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
- package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
- package/dist/components/dialog/src/RsDialog.css +102 -109
- package/dist/components/dialog/src/RsDialog.d.ts +34 -24
- package/dist/components/dialog/src/RsDialog.impl.js +410 -177
- package/dist/components/dialog/src/RsDialog.js +2 -1
- package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
- package/dist/components/dialog/src/dialog-utils.js +152 -1
- package/dist/components/dialog/src/dialog-window.js +29 -8
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer/src/RsDrawer.css +61 -29
- package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
- package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
- package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
- package/dist/components/drawer/src/drawer-utils.js +131 -1
- package/dist/components/dropdown/index.d.ts +1 -1
- package/dist/components/dropdown/src/RsDropdown.css +140 -61
- package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
- package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
- package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
- package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
- package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
- package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
- package/dist/components/dropdown/src/dropdown-utils.js +103 -3
- package/dist/components/empty/index.d.ts +1 -0
- package/dist/components/empty/src/RsEmpty.css +105 -23
- package/dist/components/empty/src/RsEmpty.d.ts +27 -4
- package/dist/components/empty/src/RsEmpty.impl.js +154 -11
- package/dist/components/empty/src/RsEmpty.js +2 -1
- package/dist/components/empty/src/empty-utils.d.ts +28 -0
- package/dist/components/empty/src/empty-utils.js +55 -0
- package/dist/components/form/src/RsForm.d.ts +1 -1
- package/dist/components/input-number/src/RsInputNumber.d.ts +1 -1
- package/dist/components/label/src/RsLabel.d.ts +1 -1
- package/dist/components/loading/index.d.ts +1 -0
- package/dist/components/loading/src/RsLoading.css +13 -97
- package/dist/components/loading/src/RsLoading.d.ts +52 -2
- package/dist/components/loading/src/RsLoading.impl.js +216 -33
- package/dist/components/loading/src/RsLoading.js +2 -1
- package/dist/components/loading/src/loading-status.css +210 -0
- package/dist/components/loading/src/loading-status.d.ts +34 -0
- package/dist/components/loading/src/loading-status.impl.js +84 -0
- package/dist/components/loading/src/loading-status.js +8 -0
- package/dist/components/loading/src/loading-utils.d.ts +51 -4
- package/dist/components/loading/src/loading-utils.js +122 -0
- package/dist/components/loading-bar/index.d.ts +1 -0
- package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
- package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
- package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
- package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
- package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
- package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
- package/dist/components/log/src/RsLog.css +52 -144
- package/dist/components/log/src/RsLog.d.ts +12 -11
- package/dist/components/log/src/RsLog.impl.js +181 -148
- package/dist/components/log/src/RsLog.js +1 -1
- package/dist/components/log/src/RsLogRow.css +152 -0
- package/dist/components/log/src/RsLogRow.d.ts +35 -0
- package/dist/components/log/src/RsLogRow.impl.js +91 -0
- package/dist/components/log/src/RsLogRow.js +8 -0
- package/dist/components/log/src/log-utils.d.ts +8 -0
- package/dist/components/log/src/log-utils.js +71 -10
- package/dist/components/markdown/index.d.ts +1 -1
- package/dist/components/markdown/src/RsMarkdown.css +75 -32
- package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
- package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
- package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
- package/dist/components/markdown/src/markdown-utils.js +114 -12
- package/dist/components/mentions/src/RsMentions.d.ts +2 -2
- package/dist/components/menu/index.d.ts +1 -1
- package/dist/components/menu/src/RsMenu.css +70 -29
- package/dist/components/menu/src/RsMenu.d.ts +58 -4
- package/dist/components/menu/src/RsMenu.impl.js +93 -46
- package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
- package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
- package/dist/components/menu/src/menu-utils.d.ts +56 -0
- package/dist/components/menu/src/menu-utils.js +139 -6
- package/dist/components/monaco-editor/index.d.ts +1 -1
- package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
- package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
- package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
- package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
- package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
- package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
- package/dist/components/pagination/index.d.ts +2 -2
- package/dist/components/pagination/src/RsPagination.css +93 -46
- package/dist/components/pagination/src/RsPagination.d.ts +68 -8
- package/dist/components/pagination/src/RsPagination.impl.js +229 -86
- package/dist/components/pagination/src/RsPagination.js +1 -1
- package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
- package/dist/components/pagination/src/pagination-utils.js +105 -1
- package/dist/components/popover/index.d.ts +1 -0
- package/dist/components/popover/src/RsPopover.css +124 -14
- package/dist/components/popover/src/RsPopover.d.ts +38 -7
- package/dist/components/popover/src/RsPopover.impl.js +546 -35
- package/dist/components/popover/src/RsPopover.js +2 -1
- package/dist/components/popover/src/popover-utils.d.ts +24 -2
- package/dist/components/popover/src/popover-utils.js +55 -0
- package/dist/components/sidebar/index.d.ts +1 -0
- package/dist/components/sidebar/src/RsSidebar.css +91 -33
- package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
- package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
- package/dist/components/sidebar/src/RsSidebar.js +1 -1
- package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
- package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
- package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
- package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
- package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
- package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
- package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
- package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
- package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
- package/dist/components/sidebar/src/sidebar-utils.js +72 -0
- package/dist/components/split-pane/index.d.ts +2 -2
- package/dist/components/split-pane/src/RsSplitPane.css +41 -30
- package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
- package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
- package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
- package/dist/components/split-pane/src/split-pane-utils.js +18 -1
- package/dist/components/stat-card/index.d.ts +1 -0
- package/dist/components/stat-card/src/RsStatCard.css +129 -25
- package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
- package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
- package/dist/components/stat-card/src/RsStatCard.js +1 -1
- package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
- package/dist/components/stat-card/src/stat-card-utils.js +113 -0
- package/dist/components/steps/index.d.ts +1 -1
- package/dist/components/steps/src/RsSteps.css +158 -37
- package/dist/components/steps/src/RsSteps.d.ts +69 -5
- package/dist/components/steps/src/RsSteps.impl.js +168 -28
- package/dist/components/steps/src/RsSteps.js +1 -1
- package/dist/components/steps/src/steps-utils.d.ts +51 -1
- package/dist/components/steps/src/steps-utils.js +67 -1
- package/dist/components/table/src/RsTable.impl.js +4 -2
- package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
- package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
- package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
- package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
- package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
- package/dist/components/table/src/rs-table-props.d.ts +1 -1
- package/dist/components/table/src/rs-table-props.js +0 -1
- package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
- package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
- package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
- package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
- package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
- package/dist/components/table/src/utils/table-utils.d.ts +10 -6
- package/dist/components/table/src/utils/table-utils.js +27 -25
- package/dist/components/table/style/rs-table.css +34 -20
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/src/RsTabs.css +225 -101
- package/dist/components/tabs/src/RsTabs.d.ts +37 -8
- package/dist/components/tabs/src/RsTabs.impl.js +400 -270
- package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
- package/dist/components/tabs/src/tabs-utils.js +55 -1
- package/dist/components/terminal/index.d.ts +1 -1
- package/dist/components/terminal/src/RsTerminal.css +60 -37
- package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
- package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
- package/dist/components/terminal/src/RsTerminal.js +1 -1
- package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
- package/dist/components/terminal/src/terminal-utils.js +113 -10
- package/dist/components/textarea/src/RsTextarea.d.ts +1 -1
- package/dist/components/time-picker/src/RsTimePicker.d.ts +2 -2
- package/dist/components/toaster/src/RsToaster.css +156 -203
- package/dist/components/toaster/src/RsToaster.d.ts +32 -2
- package/dist/components/toaster/src/RsToaster.impl.js +309 -34
- package/dist/components/toaster/src/toast-store.d.ts +95 -0
- package/dist/components/toaster/src/toast-store.js +177 -0
- package/dist/components/toaster/src/toast-utils.d.ts +60 -0
- package/dist/components/toaster/src/toast-utils.js +86 -0
- package/dist/components/toolbar/index.d.ts +1 -1
- package/dist/components/toolbar/src/RsToolbar.css +206 -32
- package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
- package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
- package/dist/components/toolbar/src/RsToolbar.js +2 -1
- package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
- package/dist/components/toolbar/src/toolbar-utils.js +105 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/src/RsTooltip.css +104 -26
- package/dist/components/tooltip/src/RsTooltip.d.ts +38 -16
- package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
- package/dist/components/tooltip/src/RsTooltip.js +2 -1
- package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
- package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
- package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
- package/dist/components/tooltip/src/tooltip-utils.js +23 -0
- package/dist/components/tree/index.d.ts +2 -2
- package/dist/components/tree/src/RsTree.css +84 -75
- package/dist/components/tree/src/RsTree.d.ts +20 -20
- package/dist/components/tree/src/RsTree.impl.js +292 -66
- package/dist/components/tree/src/RsTree.js +1 -1
- package/dist/components/tree/src/tree-utils.d.ts +22 -0
- package/dist/components/tree/src/tree-utils.js +18 -4
- package/dist/components/tree-select/src/RsTreeSelect.d.ts +1 -1
- package/dist/components/virtual-list/index.d.ts +1 -1
- package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
- package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
- package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
- package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
- package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
- package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
- package/dist/composables/useRsLoadingBar.d.ts +2 -5
- package/dist/composables/useRsLoadingBar.js +21 -5
- package/dist/composables/useRsTabsNav.d.ts +3 -1
- package/dist/composables/useRsTabsNav.js +96 -28
- package/dist/composables/useRsToast.d.ts +11 -13
- package/dist/composables/useRsToast.js +66 -17
- package/dist/index.d.ts +30 -21
- package/dist/index.js +14 -0
- package/dist/locale/apply.js +6 -1
- package/dist/locale/messages.js +128 -2
- package/dist/styles.css +460 -797
- package/dist/theme/brand.example.css +2 -1
- package/dist/vite-plugins/niuma-ui-host.js +1 -1
- package/package.json +2 -3
|
@@ -1,25 +1,58 @@
|
|
|
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
|
-
import { RS_DRAWER_MAX_VIEWPORT_RATIO, clampRsDrawerSize, resolveDrawerOverlayStyle, resolveRsDrawerDimensionCss, resolveRsDrawerSizeCss, resolveRsDrawerSizePx, runRsDrawerBeforeClose } from "./drawer-utils.js";
|
|
5
|
-
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode,
|
|
3
|
+
import { RS_DRAWER_MAX_VIEWPORT_RATIO, acquireRsDrawerPointerTracking, acquireRsDrawerScrollLock, clampRsDrawerSize, isRsDrawerDismissExempt, isTopRsDrawer, listRsDrawerFocusables, pushRsDrawerLayer, resolveDrawerOverlayStyle, resolveRsDrawerDimensionCss, resolveRsDrawerSizeCss, resolveRsDrawerSizePx, rsDrawerMotionOutMs, rsDrawerPointersDown, runRsDrawerBeforeClose } from "./drawer-utils.js";
|
|
4
|
+
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, toDisplayString, unref, useId, useModel, watch } from "vue";
|
|
6
5
|
//#region src/components/drawer/src/RsDrawer.vue?vue&type=script&setup=true&lang.ts
|
|
7
6
|
var _hoisted_1 = [
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
7
|
+
"data-state",
|
|
8
|
+
"data-rs-theme",
|
|
9
|
+
"dir",
|
|
10
|
+
"lang"
|
|
11
11
|
];
|
|
12
|
-
var _hoisted_2 =
|
|
13
|
-
|
|
12
|
+
var _hoisted_2 = [
|
|
13
|
+
"id",
|
|
14
|
+
"aria-modal",
|
|
15
|
+
"aria-labelledby",
|
|
16
|
+
"aria-describedby",
|
|
17
|
+
"aria-hidden",
|
|
18
|
+
"inert",
|
|
19
|
+
"data-state",
|
|
20
|
+
"data-rs-theme",
|
|
21
|
+
"dir",
|
|
22
|
+
"lang"
|
|
23
|
+
];
|
|
24
|
+
var _hoisted_3 = {
|
|
25
|
+
key: 0,
|
|
14
26
|
class: "rs-drawer__header"
|
|
15
27
|
};
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
|
|
28
|
+
var _hoisted_4 = { class: "rs-drawer__heading" };
|
|
29
|
+
var _hoisted_5 = ["id"];
|
|
30
|
+
var _hoisted_6 = ["id"];
|
|
31
|
+
var _hoisted_7 = {
|
|
32
|
+
key: 0,
|
|
33
|
+
class: "rs-drawer__tools"
|
|
34
|
+
};
|
|
35
|
+
var _hoisted_8 = {
|
|
36
|
+
key: 0,
|
|
37
|
+
class: "rs-drawer__extra"
|
|
38
|
+
};
|
|
39
|
+
var _hoisted_9 = ["id"];
|
|
40
|
+
var _hoisted_10 = ["id"];
|
|
41
|
+
var _hoisted_11 = { class: "rs-drawer__body" };
|
|
42
|
+
var _hoisted_12 = {
|
|
43
|
+
key: 3,
|
|
20
44
|
class: "rs-drawer__footer"
|
|
21
45
|
};
|
|
46
|
+
var _hoisted_13 = [
|
|
47
|
+
"aria-label",
|
|
48
|
+
"aria-orientation",
|
|
49
|
+
"aria-valuemin",
|
|
50
|
+
"aria-valuemax",
|
|
51
|
+
"aria-valuenow",
|
|
52
|
+
"aria-controls"
|
|
53
|
+
];
|
|
22
54
|
var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
55
|
+
name: "RsDrawer",
|
|
23
56
|
inheritAttrs: false,
|
|
24
57
|
__name: "RsDrawer",
|
|
25
58
|
props: /*@__PURE__*/ mergeModels({
|
|
@@ -55,7 +88,19 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
55
88
|
default: true
|
|
56
89
|
},
|
|
57
90
|
teleportTo: { type: [String, Boolean] },
|
|
58
|
-
beforeClose: {}
|
|
91
|
+
beforeClose: {},
|
|
92
|
+
destroyOnClose: {
|
|
93
|
+
type: Boolean,
|
|
94
|
+
default: true
|
|
95
|
+
},
|
|
96
|
+
forceRender: {
|
|
97
|
+
type: Boolean,
|
|
98
|
+
default: false
|
|
99
|
+
},
|
|
100
|
+
lockScroll: { type: Boolean },
|
|
101
|
+
zIndex: {},
|
|
102
|
+
ariaLabel: {},
|
|
103
|
+
id: {}
|
|
59
104
|
}, {
|
|
60
105
|
"open": {
|
|
61
106
|
type: Boolean,
|
|
@@ -76,24 +121,64 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
76
121
|
const props = __props;
|
|
77
122
|
const emit = __emit;
|
|
78
123
|
const { t } = useRsI18n();
|
|
124
|
+
const instance = getCurrentInstance();
|
|
125
|
+
const autoId = useId();
|
|
126
|
+
const layerId = autoId;
|
|
127
|
+
const titleId = computed(() => `${props.id || autoId}-title`);
|
|
128
|
+
const descId = computed(() => `${props.id || autoId}-desc`);
|
|
129
|
+
/** 可选布尔未传时会被收成 false。看这次 vnode 上有没有该字段,才能区分「没传」。 */
|
|
130
|
+
function propWasPassed(name) {
|
|
131
|
+
const raw = instance?.vnode.props;
|
|
132
|
+
if (!raw) return false;
|
|
133
|
+
const kebab = name.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);
|
|
134
|
+
return Object.hasOwn(raw, name) || Object.hasOwn(raw, kebab);
|
|
135
|
+
}
|
|
79
136
|
/** 挂到自定义容器或就地渲染时按 contained 模式定位,避免盖住布局顶栏 */
|
|
80
|
-
const contained = computed(() =>
|
|
137
|
+
const contained = computed(() => propWasPassed("teleportTo"));
|
|
81
138
|
/** 未显式传 modal 时:有遮罩=模态,无遮罩=可点背后 */
|
|
82
|
-
const isModal = computed(() => props.modal
|
|
139
|
+
const isModal = computed(() => propWasPassed("modal") ? Boolean(props.modal) : props.showOverlay);
|
|
140
|
+
const teleportDisabled = computed(() => propWasPassed("teleportTo") && props.teleportTo === false);
|
|
141
|
+
const teleportTarget = computed(() => {
|
|
142
|
+
if (typeof props.teleportTo === "string") return props.teleportTo;
|
|
143
|
+
if (typeof HTMLElement !== "undefined" && props.teleportTo instanceof HTMLElement) return props.teleportTo;
|
|
144
|
+
return "body";
|
|
145
|
+
});
|
|
146
|
+
const shouldLockScroll = computed(() => {
|
|
147
|
+
if (propWasPassed("lockScroll")) return Boolean(props.lockScroll);
|
|
148
|
+
return isModal.value && !contained.value;
|
|
149
|
+
});
|
|
83
150
|
const overlayStyle = computed(() => resolveDrawerOverlayStyle({
|
|
84
151
|
overlayOpacity: props.overlayOpacity,
|
|
85
152
|
overlayBlur: props.overlayBlur
|
|
86
153
|
}));
|
|
154
|
+
const zStyle = computed(() => {
|
|
155
|
+
if (props.zIndex == null || !Number.isFinite(props.zIndex)) return void 0;
|
|
156
|
+
return { "--rs-drawer-z": String(Math.round(props.zIndex)) };
|
|
157
|
+
});
|
|
87
158
|
const isHorizontal = computed(() => props.side === "left" || props.side === "right");
|
|
88
159
|
const enableResizable = computed(() => props.resizable && props.size !== "full");
|
|
89
160
|
/** 本次打开后拖拽得到的像素尺寸;关闭时清空,回到 size/width/height */
|
|
90
161
|
const liveSizePx = ref(void 0);
|
|
91
162
|
const resizing = ref(false);
|
|
163
|
+
const anchorRef = ref(null);
|
|
92
164
|
const contentRef = ref(null);
|
|
93
|
-
const
|
|
165
|
+
const panelTheme = ref();
|
|
166
|
+
const panelDir = ref();
|
|
167
|
+
const panelLang = ref();
|
|
168
|
+
const present = ref(open.value || props.forceRender);
|
|
169
|
+
const motion = ref(open.value ? "open" : "closed");
|
|
170
|
+
const dormant = ref(!open.value);
|
|
171
|
+
const animating = ref(false);
|
|
172
|
+
const boundMin = ref(256);
|
|
173
|
+
const boundMax = ref(Math.round(960 * RS_DRAWER_MAX_VIEWPORT_RATIO));
|
|
174
|
+
/** 仅 width / height 或拖拽结果算自定义尺寸;sm / md / lg 预设不算。 */
|
|
175
|
+
const customDimensionCss = computed(() => {
|
|
94
176
|
if (liveSizePx.value != null) return `${liveSizePx.value}px`;
|
|
95
|
-
|
|
96
|
-
|
|
177
|
+
return isHorizontal.value ? resolveRsDrawerDimensionCss(props.width) : resolveRsDrawerDimensionCss(props.height);
|
|
178
|
+
});
|
|
179
|
+
const panelSizeCss = computed(() => {
|
|
180
|
+
if (props.size === "full") return void 0;
|
|
181
|
+
return customDimensionCss.value ?? resolveRsDrawerSizeCss(props.size);
|
|
97
182
|
});
|
|
98
183
|
const contentStyle = computed(() => {
|
|
99
184
|
const style = {};
|
|
@@ -101,39 +186,6 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
101
186
|
if (size && props.size !== "full") style["--rs-drawer-panel-size"] = size;
|
|
102
187
|
if (liveSizePx.value != null && props.size !== "full") if (isHorizontal.value) style.width = `${liveSizePx.value}px`;
|
|
103
188
|
else style.height = `${liveSizePx.value}px`;
|
|
104
|
-
if (props.side === "right") {
|
|
105
|
-
style.left = "auto";
|
|
106
|
-
style.right = "0";
|
|
107
|
-
style.top = "0";
|
|
108
|
-
style.bottom = "0";
|
|
109
|
-
style.height = "100%";
|
|
110
|
-
style.maxHeight = "none";
|
|
111
|
-
style.transform = "none";
|
|
112
|
-
} else if (props.side === "left") {
|
|
113
|
-
style.left = "0";
|
|
114
|
-
style.right = "auto";
|
|
115
|
-
style.top = "0";
|
|
116
|
-
style.bottom = "0";
|
|
117
|
-
style.height = "100%";
|
|
118
|
-
style.maxHeight = "none";
|
|
119
|
-
style.transform = "none";
|
|
120
|
-
} else if (props.side === "top") {
|
|
121
|
-
style.left = "0";
|
|
122
|
-
style.right = "0";
|
|
123
|
-
style.top = "0";
|
|
124
|
-
style.bottom = "auto";
|
|
125
|
-
style.width = "100%";
|
|
126
|
-
style.maxWidth = "none";
|
|
127
|
-
style.transform = "none";
|
|
128
|
-
} else if (props.side === "bottom") {
|
|
129
|
-
style.left = "0";
|
|
130
|
-
style.right = "0";
|
|
131
|
-
style.top = "auto";
|
|
132
|
-
style.bottom = "0";
|
|
133
|
-
style.width = "100%";
|
|
134
|
-
style.maxWidth = "none";
|
|
135
|
-
style.transform = "none";
|
|
136
|
-
}
|
|
137
189
|
return Object.keys(style).length ? style : void 0;
|
|
138
190
|
});
|
|
139
191
|
const contentClass = computed(() => [
|
|
@@ -141,109 +193,281 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
141
193
|
`rs-drawer__content--${props.size}`,
|
|
142
194
|
{
|
|
143
195
|
"rs-drawer__content--contained": contained.value,
|
|
144
|
-
"rs-drawer__content--custom-size":
|
|
196
|
+
"rs-drawer__content--custom-size": props.size !== "full" && customDimensionCss.value != null,
|
|
145
197
|
"rs-drawer__content--resizable": enableResizable.value,
|
|
146
|
-
"rs-drawer__content--resizing": resizing.value
|
|
198
|
+
"rs-drawer__content--resizing": resizing.value,
|
|
199
|
+
"rs-drawer__content--animate": animating.value,
|
|
200
|
+
"rs-drawer__content--dormant": dormant.value
|
|
147
201
|
}
|
|
148
202
|
]);
|
|
203
|
+
const labelledBy = computed(() => titleId.value);
|
|
204
|
+
const describedBy = computed(() => props.description ? descId.value : void 0);
|
|
149
205
|
const closing = ref(false);
|
|
150
|
-
let pendingCloseReason = "programmatic";
|
|
151
206
|
let afterOpenTimer = 0;
|
|
152
|
-
|
|
153
|
-
let
|
|
154
|
-
let
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}, true);
|
|
161
|
-
window.addEventListener("pointerup", () => {
|
|
162
|
-
pointersDown = Math.max(0, pointersDown - 1);
|
|
163
|
-
}, true);
|
|
164
|
-
window.addEventListener("pointercancel", () => {
|
|
165
|
-
pointersDown = Math.max(0, pointersDown - 1);
|
|
166
|
-
}, true);
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* 打开若发生在 pointer 按下期间(或同轮事件冒泡中),抑制 outside dismiss,
|
|
170
|
-
* 直到指针抬起,并再刷一次 macrotask(吞掉打开点击残留的 outside)。
|
|
171
|
-
* 不使用固定毫秒锁,避免拖慢正常点遮罩关闭。
|
|
172
|
-
*/
|
|
207
|
+
let exitTimer = 0;
|
|
208
|
+
let animTimer = 0;
|
|
209
|
+
let releasePointer = null;
|
|
210
|
+
let releaseLayer = null;
|
|
211
|
+
let releaseLock = null;
|
|
212
|
+
let layerBound = false;
|
|
213
|
+
let restoreEl = null;
|
|
214
|
+
/** 打开若发生在 pointer 按下期间,抑制外部关闭,直到指针抬起再过一个宏任务。 */
|
|
173
215
|
const suppressOutsideUntilGestureEnd = ref(false);
|
|
174
216
|
let gestureReleaseBound = false;
|
|
175
|
-
let gestureMacrotaskTimer = 0;
|
|
176
217
|
function releaseOutsideSuppress() {
|
|
177
218
|
suppressOutsideUntilGestureEnd.value = false;
|
|
178
|
-
if (
|
|
179
|
-
|
|
180
|
-
|
|
219
|
+
if (!gestureReleaseBound || typeof window === "undefined") {
|
|
220
|
+
gestureReleaseBound = false;
|
|
221
|
+
return;
|
|
181
222
|
}
|
|
182
|
-
if (!gestureReleaseBound) return;
|
|
183
223
|
gestureReleaseBound = false;
|
|
184
224
|
window.removeEventListener("pointerup", onGesturePointerRelease, true);
|
|
185
225
|
window.removeEventListener("pointercancel", onGesturePointerRelease, true);
|
|
186
226
|
}
|
|
187
227
|
function onGesturePointerRelease() {
|
|
188
|
-
if (
|
|
189
|
-
if (
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
228
|
+
if (rsDrawerPointersDown() > 0) return;
|
|
229
|
+
if (gestureReleaseBound && typeof window !== "undefined") {
|
|
230
|
+
gestureReleaseBound = false;
|
|
231
|
+
window.removeEventListener("pointerup", onGesturePointerRelease, true);
|
|
232
|
+
window.removeEventListener("pointercancel", onGesturePointerRelease, true);
|
|
233
|
+
}
|
|
234
|
+
queueMicrotask(() => {
|
|
235
|
+
suppressOutsideUntilGestureEnd.value = false;
|
|
236
|
+
});
|
|
194
237
|
}
|
|
195
238
|
function armOutsideSuppressForOpenGesture() {
|
|
196
|
-
|
|
239
|
+
if (typeof window === "undefined") return;
|
|
197
240
|
releaseOutsideSuppress();
|
|
198
241
|
suppressOutsideUntilGestureEnd.value = true;
|
|
199
|
-
if (
|
|
242
|
+
if (rsDrawerPointersDown() > 0) {
|
|
200
243
|
gestureReleaseBound = true;
|
|
201
244
|
window.addEventListener("pointerup", onGesturePointerRelease, true);
|
|
202
245
|
window.addEventListener("pointercancel", onGesturePointerRelease, true);
|
|
203
246
|
return;
|
|
204
247
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}, 0);
|
|
248
|
+
queueMicrotask(() => {
|
|
249
|
+
suppressOutsideUntilGestureEnd.value = false;
|
|
250
|
+
});
|
|
209
251
|
}
|
|
210
252
|
function clearAfterOpenTimer() {
|
|
211
|
-
if (!afterOpenTimer)
|
|
253
|
+
if (!afterOpenTimer || typeof window === "undefined") {
|
|
254
|
+
afterOpenTimer = 0;
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
212
257
|
window.clearTimeout(afterOpenTimer);
|
|
213
258
|
afterOpenTimer = 0;
|
|
214
259
|
}
|
|
260
|
+
function clearExitTimer() {
|
|
261
|
+
if (!exitTimer || typeof window === "undefined") {
|
|
262
|
+
exitTimer = 0;
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
window.clearTimeout(exitTimer);
|
|
266
|
+
exitTimer = 0;
|
|
267
|
+
}
|
|
268
|
+
function clearAnimTimer() {
|
|
269
|
+
if (!animTimer || typeof window === "undefined") {
|
|
270
|
+
animTimer = 0;
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
window.clearTimeout(animTimer);
|
|
274
|
+
animTimer = 0;
|
|
275
|
+
}
|
|
215
276
|
function queueAfterOpen() {
|
|
216
277
|
clearAfterOpenTimer();
|
|
278
|
+
if (typeof window === "undefined") return;
|
|
217
279
|
afterOpenTimer = window.setTimeout(() => {
|
|
218
280
|
afterOpenTimer = 0;
|
|
219
281
|
if (open.value) emit("afterOpen");
|
|
220
282
|
}, 280);
|
|
221
283
|
}
|
|
284
|
+
function markAnimating() {
|
|
285
|
+
clearAnimTimer();
|
|
286
|
+
if (rsDrawerMotionOutMs() === 0) {
|
|
287
|
+
animating.value = false;
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
animating.value = true;
|
|
291
|
+
if (typeof window === "undefined") return;
|
|
292
|
+
const ms = motion.value === "closed" ? rsDrawerMotionOutMs() : 240;
|
|
293
|
+
animTimer = window.setTimeout(() => {
|
|
294
|
+
animTimer = 0;
|
|
295
|
+
animating.value = false;
|
|
296
|
+
}, ms + 40);
|
|
297
|
+
}
|
|
298
|
+
function finishExit() {
|
|
299
|
+
clearExitTimer();
|
|
300
|
+
animating.value = false;
|
|
301
|
+
if (open.value) return;
|
|
302
|
+
liveSizePx.value = void 0;
|
|
303
|
+
if (props.destroyOnClose && !props.forceRender) {
|
|
304
|
+
present.value = false;
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
dormant.value = true;
|
|
308
|
+
}
|
|
309
|
+
function scheduleExit() {
|
|
310
|
+
clearExitTimer();
|
|
311
|
+
if (typeof window === "undefined") return;
|
|
312
|
+
const ms = rsDrawerMotionOutMs();
|
|
313
|
+
if (ms === 0) {
|
|
314
|
+
finishExit();
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
exitTimer = window.setTimeout(() => {
|
|
318
|
+
exitTimer = 0;
|
|
319
|
+
finishExit();
|
|
320
|
+
}, ms);
|
|
321
|
+
}
|
|
322
|
+
function syncChrome() {
|
|
323
|
+
const el = anchorRef.value;
|
|
324
|
+
if (!el) {
|
|
325
|
+
panelTheme.value = void 0;
|
|
326
|
+
panelDir.value = void 0;
|
|
327
|
+
panelLang.value = void 0;
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const themed = el.closest("[data-rs-theme]");
|
|
331
|
+
const directed = el.closest("[dir]");
|
|
332
|
+
const langed = el.closest("[lang]");
|
|
333
|
+
panelTheme.value = themed instanceof HTMLElement ? themed.dataset.rsTheme : void 0;
|
|
334
|
+
panelDir.value = directed?.getAttribute("dir") || void 0;
|
|
335
|
+
panelLang.value = langed?.getAttribute("lang") || void 0;
|
|
336
|
+
}
|
|
337
|
+
function resolveContentEl() {
|
|
338
|
+
const el = contentRef.value;
|
|
339
|
+
return el instanceof HTMLElement ? el : null;
|
|
340
|
+
}
|
|
341
|
+
function focusPanel(force) {
|
|
342
|
+
const content = resolveContentEl();
|
|
343
|
+
if (!content || typeof document === "undefined") return;
|
|
344
|
+
if (!force && !isModal.value) return;
|
|
345
|
+
const active = document.activeElement;
|
|
346
|
+
if (active instanceof HTMLElement && active !== document.body && active !== document.documentElement && !content.contains(active)) restoreEl = active;
|
|
347
|
+
if (!force && active instanceof HTMLElement && content.contains(active)) return;
|
|
348
|
+
content.focus({ preventScroll: true });
|
|
349
|
+
}
|
|
350
|
+
function restoreFocus() {
|
|
351
|
+
const el = restoreEl;
|
|
352
|
+
restoreEl = null;
|
|
353
|
+
if (!el?.isConnected) return;
|
|
354
|
+
const content = resolveContentEl();
|
|
355
|
+
if (content && (el === content || content.contains(el))) return;
|
|
356
|
+
el.focus({ preventScroll: true });
|
|
357
|
+
}
|
|
358
|
+
function bindLayer() {
|
|
359
|
+
if (layerBound || typeof window === "undefined") return;
|
|
360
|
+
layerBound = true;
|
|
361
|
+
releaseLayer = pushRsDrawerLayer(layerId);
|
|
362
|
+
if (shouldLockScroll.value) releaseLock = acquireRsDrawerScrollLock();
|
|
363
|
+
window.addEventListener("pointerdown", onWindowPointerDown);
|
|
364
|
+
window.addEventListener("keydown", onWindowKeydown);
|
|
365
|
+
refreshBounds();
|
|
366
|
+
}
|
|
367
|
+
function unbindLayer() {
|
|
368
|
+
if (!layerBound) return;
|
|
369
|
+
layerBound = false;
|
|
370
|
+
if (typeof window !== "undefined") {
|
|
371
|
+
window.removeEventListener("pointerdown", onWindowPointerDown);
|
|
372
|
+
window.removeEventListener("keydown", onWindowKeydown);
|
|
373
|
+
}
|
|
374
|
+
releaseLayer?.();
|
|
375
|
+
releaseLayer = null;
|
|
376
|
+
releaseLock?.();
|
|
377
|
+
releaseLock = null;
|
|
378
|
+
}
|
|
379
|
+
function shouldBlockOutsideDismiss() {
|
|
380
|
+
return !props.closeOnOverlayClick || suppressOutsideUntilGestureEnd.value || resizing.value;
|
|
381
|
+
}
|
|
382
|
+
function onWindowPointerDown(event) {
|
|
383
|
+
if (!open.value || !isTopRsDrawer(layerId)) return;
|
|
384
|
+
if (shouldBlockOutsideDismiss()) return;
|
|
385
|
+
if (isRsDrawerDismissExempt(event.target, resolveContentEl())) return;
|
|
386
|
+
requestClose("overlay");
|
|
387
|
+
}
|
|
388
|
+
function onWindowKeydown(event) {
|
|
389
|
+
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
390
|
+
if (!open.value || !isTopRsDrawer(layerId)) return;
|
|
391
|
+
if (!props.closeOnEsc) {
|
|
392
|
+
event.preventDefault();
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
event.preventDefault();
|
|
396
|
+
requestClose("escape");
|
|
397
|
+
}
|
|
398
|
+
function onContentKeydown(event) {
|
|
399
|
+
if (event.key !== "Tab" || !isModal.value || !open.value || !isTopRsDrawer(layerId)) return;
|
|
400
|
+
const content = resolveContentEl();
|
|
401
|
+
if (!content) return;
|
|
402
|
+
const items = listRsDrawerFocusables(content);
|
|
403
|
+
if (!items.length) {
|
|
404
|
+
event.preventDefault();
|
|
405
|
+
content.focus({ preventScroll: true });
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
const first = items[0];
|
|
409
|
+
const last = items[items.length - 1];
|
|
410
|
+
const active = document.activeElement;
|
|
411
|
+
if (event.shiftKey && (active === first || active === content)) {
|
|
412
|
+
event.preventDefault();
|
|
413
|
+
last?.focus();
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
if (!event.shiftKey && active === last) {
|
|
417
|
+
event.preventDefault();
|
|
418
|
+
first?.focus();
|
|
419
|
+
}
|
|
420
|
+
}
|
|
222
421
|
watch(open, (isOpen, wasOpen) => {
|
|
223
422
|
if (isOpen && !wasOpen) {
|
|
423
|
+
clearExitTimer();
|
|
424
|
+
syncChrome();
|
|
425
|
+
present.value = true;
|
|
426
|
+
dormant.value = false;
|
|
427
|
+
motion.value = "open";
|
|
428
|
+
markAnimating();
|
|
224
429
|
armOutsideSuppressForOpenGesture();
|
|
430
|
+
bindLayer();
|
|
225
431
|
emit("openChange", true);
|
|
226
432
|
queueAfterOpen();
|
|
433
|
+
nextTick(() => focusPanel(false));
|
|
227
434
|
return;
|
|
228
435
|
}
|
|
229
436
|
if (!isOpen && wasOpen) {
|
|
230
|
-
|
|
437
|
+
motion.value = "closed";
|
|
438
|
+
markAnimating();
|
|
231
439
|
stopResize();
|
|
232
440
|
releaseOutsideSuppress();
|
|
233
441
|
clearAfterOpenTimer();
|
|
442
|
+
unbindLayer();
|
|
443
|
+
restoreFocus();
|
|
444
|
+
scheduleExit();
|
|
234
445
|
emit("openChange", false);
|
|
235
446
|
if (!closing.value) emit("afterClose", "programmatic");
|
|
236
447
|
}
|
|
237
448
|
});
|
|
449
|
+
onMounted(() => {
|
|
450
|
+
releasePointer = acquireRsDrawerPointerTracking();
|
|
451
|
+
syncChrome();
|
|
452
|
+
if (!open.value) return;
|
|
453
|
+
armOutsideSuppressForOpenGesture();
|
|
454
|
+
bindLayer();
|
|
455
|
+
nextTick(() => focusPanel(false));
|
|
456
|
+
});
|
|
238
457
|
onBeforeUnmount(() => {
|
|
239
458
|
stopResize();
|
|
240
459
|
releaseOutsideSuppress();
|
|
241
460
|
clearAfterOpenTimer();
|
|
461
|
+
clearExitTimer();
|
|
462
|
+
clearAnimTimer();
|
|
463
|
+
if (open.value) restoreFocus();
|
|
464
|
+
unbindLayer();
|
|
465
|
+
releasePointer?.();
|
|
466
|
+
releasePointer = null;
|
|
242
467
|
});
|
|
243
468
|
async function requestClose(reason) {
|
|
244
469
|
if (!open.value || closing.value) return false;
|
|
245
470
|
closing.value = true;
|
|
246
|
-
pendingCloseReason = reason;
|
|
247
471
|
try {
|
|
248
472
|
if (!await runRsDrawerBeforeClose(props.beforeClose, reason)) return false;
|
|
249
473
|
open.value = false;
|
|
@@ -254,58 +478,17 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
254
478
|
closing.value = false;
|
|
255
479
|
}
|
|
256
480
|
}
|
|
257
|
-
/** DialogRoot 受控更新:打开直通;关闭统一走 beforeClose */
|
|
258
|
-
async function onUpdateOpen(next) {
|
|
259
|
-
if (next) {
|
|
260
|
-
open.value = true;
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
await requestClose(pendingCloseReason);
|
|
264
|
-
pendingCloseReason = "programmatic";
|
|
265
|
-
}
|
|
266
|
-
function onEscapeKeyDown(event) {
|
|
267
|
-
if (!props.closeOnEsc) {
|
|
268
|
-
event.preventDefault();
|
|
269
|
-
return;
|
|
270
|
-
}
|
|
271
|
-
pendingCloseReason = "escape";
|
|
272
|
-
}
|
|
273
|
-
function shouldBlockOutsideDismiss() {
|
|
274
|
-
return !props.closeOnOverlayClick || suppressOutsideUntilGestureEnd.value || resizing.value;
|
|
275
|
-
}
|
|
276
|
-
function onPointerDownOutside(event) {
|
|
277
|
-
if (shouldBlockOutsideDismiss()) {
|
|
278
|
-
event.preventDefault();
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
pendingCloseReason = "overlay";
|
|
282
|
-
}
|
|
283
|
-
function onInteractOutside(event) {
|
|
284
|
-
if (shouldBlockOutsideDismiss()) {
|
|
285
|
-
event.preventDefault();
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
pendingCloseReason = "overlay";
|
|
289
|
-
}
|
|
290
|
-
function onFocusOutside(event) {
|
|
291
|
-
event.preventDefault();
|
|
292
|
-
}
|
|
293
481
|
async function onHeaderCloseClick() {
|
|
294
482
|
await requestClose("close");
|
|
295
483
|
}
|
|
296
|
-
function resolveContentEl() {
|
|
297
|
-
const inst = contentRef.value;
|
|
298
|
-
if (!inst) return null;
|
|
299
|
-
if (inst instanceof HTMLElement) return inst;
|
|
300
|
-
const el = inst.$el;
|
|
301
|
-
return el instanceof HTMLElement ? el : null;
|
|
302
|
-
}
|
|
303
484
|
function rootFontPx() {
|
|
485
|
+
if (typeof document === "undefined") return 16;
|
|
304
486
|
const raw = getComputedStyle(document.documentElement).fontSize;
|
|
305
487
|
const n = Number.parseFloat(raw);
|
|
306
488
|
return Number.isFinite(n) && n > 0 ? n : 16;
|
|
307
489
|
}
|
|
308
490
|
function viewportPx() {
|
|
491
|
+
if (typeof window === "undefined") return 0;
|
|
309
492
|
return isHorizontal.value ? window.innerWidth : window.innerHeight;
|
|
310
493
|
}
|
|
311
494
|
function sizeBounds() {
|
|
@@ -316,6 +499,11 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
316
499
|
max: resolveRsDrawerSizePx(props.maxSize, Math.round(vp * RS_DRAWER_MAX_VIEWPORT_RATIO), root, vp)
|
|
317
500
|
};
|
|
318
501
|
}
|
|
502
|
+
function refreshBounds() {
|
|
503
|
+
const next = sizeBounds();
|
|
504
|
+
boundMin.value = next.min;
|
|
505
|
+
boundMax.value = next.max;
|
|
506
|
+
}
|
|
319
507
|
function applyLiveSize(px) {
|
|
320
508
|
const { min, max } = sizeBounds();
|
|
321
509
|
const next = clampRsDrawerSize(px, min, max);
|
|
@@ -331,15 +519,17 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
331
519
|
let resizeStartClient = 0;
|
|
332
520
|
let resizeStartSize = 0;
|
|
333
521
|
function stopResize() {
|
|
334
|
-
if (resizePointerId != null) {
|
|
522
|
+
if (resizePointerId != null && typeof window !== "undefined") {
|
|
335
523
|
window.removeEventListener("pointermove", onResizePointerMove);
|
|
336
524
|
window.removeEventListener("pointerup", onResizePointerUp);
|
|
337
525
|
window.removeEventListener("pointercancel", onResizePointerUp);
|
|
338
526
|
resizePointerId = null;
|
|
339
527
|
}
|
|
340
528
|
resizing.value = false;
|
|
341
|
-
document.body
|
|
342
|
-
|
|
529
|
+
if (typeof document !== "undefined" && document.body) {
|
|
530
|
+
document.body.style.removeProperty("cursor");
|
|
531
|
+
document.body.style.removeProperty("user-select");
|
|
532
|
+
}
|
|
343
533
|
}
|
|
344
534
|
function currentPanelPx() {
|
|
345
535
|
const el = resolveContentEl();
|
|
@@ -355,8 +545,11 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
355
545
|
resizeStartSize = currentPanelPx();
|
|
356
546
|
resizePointerId = event.pointerId;
|
|
357
547
|
resizing.value = true;
|
|
358
|
-
|
|
359
|
-
document
|
|
548
|
+
refreshBounds();
|
|
549
|
+
if (typeof document !== "undefined") {
|
|
550
|
+
document.body.style.cursor = isHorizontal.value ? "ew-resize" : "ns-resize";
|
|
551
|
+
document.body.style.userSelect = "none";
|
|
552
|
+
}
|
|
360
553
|
window.addEventListener("pointermove", onResizePointerMove);
|
|
361
554
|
window.addEventListener("pointerup", onResizePointerUp);
|
|
362
555
|
window.addEventListener("pointercancel", onResizePointerUp);
|
|
@@ -385,6 +578,17 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
385
578
|
}
|
|
386
579
|
function onResizeKeydown(event) {
|
|
387
580
|
if (!enableResizable.value) return;
|
|
581
|
+
refreshBounds();
|
|
582
|
+
if (event.key === "Home") {
|
|
583
|
+
event.preventDefault();
|
|
584
|
+
commitResize(applyLiveSize(sizeBounds().min));
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
587
|
+
if (event.key === "End") {
|
|
588
|
+
event.preventDefault();
|
|
589
|
+
commitResize(applyLiveSize(sizeBounds().max));
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
388
592
|
const step = event.shiftKey ? 48 : 16;
|
|
389
593
|
let delta = 0;
|
|
390
594
|
if (props.side === "right") {
|
|
@@ -404,92 +608,106 @@ var RsDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
404
608
|
event.preventDefault();
|
|
405
609
|
commitResize(applyLiveSize(currentPanelPx() + delta));
|
|
406
610
|
}
|
|
611
|
+
function onContentAnimationEnd(event) {
|
|
612
|
+
if (event.target !== resolveContentEl()) return;
|
|
613
|
+
animating.value = false;
|
|
614
|
+
if (!open.value && motion.value === "closed") finishExit();
|
|
615
|
+
}
|
|
407
616
|
__expose({
|
|
408
|
-
/** 请求关闭(走 beforeClose) */
|
|
409
617
|
close: (reason = "programmatic") => requestClose(reason),
|
|
410
|
-
/** 打开抽屉 */
|
|
411
618
|
openDrawer: () => {
|
|
412
619
|
open.value = true;
|
|
413
|
-
}
|
|
620
|
+
},
|
|
621
|
+
focus: () => focusPanel(true)
|
|
414
622
|
});
|
|
415
623
|
return (_ctx, _cache) => {
|
|
416
|
-
return openBlock(),
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
624
|
+
return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", {
|
|
625
|
+
ref_key: "anchorRef",
|
|
626
|
+
ref: anchorRef,
|
|
627
|
+
class: "rs-drawer__anchor",
|
|
628
|
+
hidden: "",
|
|
629
|
+
"aria-hidden": "true"
|
|
630
|
+
}, null, 512), (openBlock(), createBlock(Teleport, {
|
|
631
|
+
disabled: teleportDisabled.value,
|
|
632
|
+
to: teleportTarget.value
|
|
633
|
+
}, [__props.showOverlay && present.value ? (openBlock(), createElementBlock("div", {
|
|
634
|
+
key: 0,
|
|
635
|
+
class: normalizeClass(["rs-drawer__overlay rs-motion-reduce", {
|
|
636
|
+
"rs-drawer__overlay--contained": contained.value,
|
|
637
|
+
"rs-drawer__overlay--dormant": dormant.value
|
|
638
|
+
}]),
|
|
639
|
+
style: normalizeStyle([overlayStyle.value, zStyle.value]),
|
|
640
|
+
"data-state": motion.value,
|
|
641
|
+
"data-rs-theme": panelTheme.value,
|
|
642
|
+
dir: panelDir.value,
|
|
643
|
+
lang: panelLang.value,
|
|
644
|
+
"aria-hidden": "true"
|
|
645
|
+
}, null, 14, _hoisted_1)) : createCommentVNode("", true), present.value ? (openBlock(), createElementBlock("div", mergeProps({
|
|
646
|
+
key: 1,
|
|
647
|
+
id: __props.id,
|
|
648
|
+
ref_key: "contentRef",
|
|
649
|
+
ref: contentRef
|
|
650
|
+
}, _ctx.$attrs, {
|
|
651
|
+
class: ["rs-drawer rs-drawer__content rs-motion-reduce", contentClass.value],
|
|
652
|
+
style: [contentStyle.value, zStyle.value],
|
|
653
|
+
role: "dialog",
|
|
654
|
+
"aria-modal": isModal.value && motion.value === "open" ? "true" : "false",
|
|
655
|
+
"aria-labelledby": labelledBy.value,
|
|
656
|
+
"aria-describedby": describedBy.value,
|
|
657
|
+
"aria-hidden": motion.value === "open" ? void 0 : "true",
|
|
658
|
+
inert: motion.value === "open" ? void 0 : true,
|
|
659
|
+
"data-state": motion.value,
|
|
660
|
+
"data-rs-theme": panelTheme.value,
|
|
661
|
+
dir: panelDir.value,
|
|
662
|
+
lang: panelLang.value,
|
|
663
|
+
tabindex: "-1",
|
|
664
|
+
onKeydown: onContentKeydown,
|
|
665
|
+
onAnimationend: onContentAnimationEnd
|
|
666
|
+
}), [
|
|
667
|
+
__props.title || __props.description || __props.showClose || _ctx.$slots.header || _ctx.$slots.extra ? (openBlock(), createElementBlock("header", _hoisted_3, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("div", _hoisted_4, [__props.title ? (openBlock(), createElementBlock("h2", {
|
|
668
|
+
key: 0,
|
|
669
|
+
id: titleId.value,
|
|
670
|
+
class: "rs-drawer__title"
|
|
671
|
+
}, toDisplayString(__props.title), 9, _hoisted_5)) : createCommentVNode("", true), __props.description ? (openBlock(), createElementBlock("p", {
|
|
672
|
+
key: 1,
|
|
673
|
+
id: descId.value,
|
|
674
|
+
class: "rs-drawer__description"
|
|
675
|
+
}, toDisplayString(__props.description), 9, _hoisted_6)) : createCommentVNode("", true)])]), _ctx.$slots.extra || __props.showClose ? (openBlock(), createElementBlock("div", _hoisted_7, [_ctx.$slots.extra ? (openBlock(), createElementBlock("div", _hoisted_8, [renderSlot(_ctx.$slots, "extra")])) : createCommentVNode("", true), __props.showClose ? (openBlock(), createBlock(RsButton_default, {
|
|
676
|
+
key: 1,
|
|
677
|
+
class: "rs-drawer__close",
|
|
678
|
+
variant: "ghost",
|
|
679
|
+
size: "sm",
|
|
680
|
+
icon: "x",
|
|
681
|
+
tooltip: unref(t)("drawer.close"),
|
|
682
|
+
onClick: onHeaderCloseClick
|
|
683
|
+
}, null, 8, ["tooltip"])) : createCommentVNode("", true)])) : createCommentVNode("", true)])) : createCommentVNode("", true),
|
|
684
|
+
_ctx.$slots.header || !__props.title ? (openBlock(), createElementBlock("h2", {
|
|
685
|
+
key: 1,
|
|
686
|
+
id: titleId.value,
|
|
687
|
+
class: "rs-drawer__title rs-drawer__title--sr-only"
|
|
688
|
+
}, toDisplayString(__props.title || __props.ariaLabel || unref(t)("drawer.label")), 9, _hoisted_9)) : createCommentVNode("", true),
|
|
689
|
+
__props.description && _ctx.$slots.header ? (openBlock(), createElementBlock("p", {
|
|
690
|
+
key: 2,
|
|
691
|
+
id: descId.value,
|
|
692
|
+
class: "rs-drawer__description rs-drawer__description--sr-only"
|
|
693
|
+
}, toDisplayString(__props.description), 9, _hoisted_10)) : createCommentVNode("", true),
|
|
694
|
+
createElementVNode("div", _hoisted_11, [renderSlot(_ctx.$slots, "default")]),
|
|
695
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_12, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true),
|
|
696
|
+
enableResizable.value ? (openBlock(), createElementBlock("div", {
|
|
697
|
+
key: 4,
|
|
698
|
+
class: "rs-drawer__resize",
|
|
699
|
+
role: "separator",
|
|
700
|
+
tabindex: "0",
|
|
701
|
+
"aria-label": unref(t)("drawer.resize"),
|
|
702
|
+
"aria-orientation": isHorizontal.value ? "vertical" : "horizontal",
|
|
703
|
+
"aria-valuemin": boundMin.value,
|
|
704
|
+
"aria-valuemax": boundMax.value,
|
|
705
|
+
"aria-valuenow": liveSizePx.value != null ? Math.round(liveSizePx.value) : void 0,
|
|
706
|
+
"aria-controls": __props.id || void 0,
|
|
707
|
+
onPointerdown: onResizePointerDown,
|
|
708
|
+
onKeydown: onResizeKeydown
|
|
709
|
+
}, null, 40, _hoisted_13)) : createCommentVNode("", true)
|
|
710
|
+
], 16, _hoisted_2)) : createCommentVNode("", true)], 8, ["disabled", "to"]))], 64);
|
|
493
711
|
};
|
|
494
712
|
}
|
|
495
713
|
});
|