@sdata/web-vue 2.3.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/sd.css +117 -191
- package/dist/sd.min.css +1 -1
- package/es/_components/transition/expand-transition.vue.d.ts +2 -2
- package/es/_hooks/use-responsive.d.ts +2 -2
- package/es/_hooks/use-theme-mode.d.ts +3 -0
- package/es/{calendar/hooks/use-calendar-theme.js → _hooks/use-theme-mode.js} +14 -10
- package/es/_utils/responsive-observe.d.ts +5 -4
- package/es/_utils/responsive-observe.js +2 -1
- package/es/alert/index.d.ts +3 -3
- package/es/anchor/index.d.ts +3 -3
- package/es/avatar/index.d.ts +20 -20
- package/es/border-beam/border-beam.js +5 -0
- package/es/border-beam/border-beam.vue.d.ts +52 -0
- package/es/border-beam/border-beam.vue_vue_type_script_setup_true_lang.js +623 -0
- package/es/border-beam/index.d.ts +106 -0
- package/es/border-beam/index.js +10 -0
- package/es/border-beam/pulseDriver.d.ts +2 -0
- package/es/border-beam/pulseDriver.js +74 -0
- package/es/border-beam/style/css.js +2 -0
- package/es/border-beam/style/index.css +21 -0
- package/es/border-beam/style/index.d.ts +2 -0
- package/es/border-beam/style/index.js +2 -0
- package/es/border-beam/style/index.scss +12 -0
- package/es/border-beam/style/token.scss +12 -0
- package/es/border-beam/styles.d.ts +42 -0
- package/es/border-beam/styles.js +3545 -0
- package/es/border-beam/types.d.ts +27 -0
- package/es/button/index.d.ts +24 -24
- package/es/calendar/components/cell.vue.d.ts +26 -26
- package/es/calendar/components/index.vue.d.ts +1 -1
- package/es/calendar/components/index.vue_vue_type_script_setup_true_lang.js +3 -2
- package/es/calendar/index.d.ts +5 -5
- package/es/carousel/index.d.ts +3 -3
- package/es/cascader/cascader.vue.d.ts +8 -8
- package/es/checkbox/checkbox.d.ts +3 -3
- package/es/collapse/collapse-item.d.ts +5 -5
- package/es/collapse/index.d.ts +3 -3
- package/es/components.d.ts +1 -0
- package/es/config-provider/index.d.ts +21 -21
- package/es/date-picker/index.d.ts +14 -14
- package/es/date-picker/panels/date/index.vue.d.ts +2 -2
- package/es/date-picker/panels/month/index.vue.d.ts +2 -2
- package/es/date-picker/panels/quarter/index.vue.d.ts +2 -2
- package/es/date-picker/panels/week/index.vue.d.ts +2 -2
- package/es/date-picker/panels/year/index.vue.d.ts +2 -2
- package/es/date-picker/picker-panel.vue.d.ts +12 -12
- package/es/date-picker/picker.vue.d.ts +14 -14
- package/es/date-picker/range-picker.vue.d.ts +15 -15
- package/es/descriptions/index.d.ts +24 -24
- package/es/drawer/drawer.vue.d.ts +5 -5
- package/es/drawer/index.d.ts +15 -15
- package/es/dropdown/dropdown-button.vue.d.ts +4 -4
- package/es/dropdown/index.d.ts +15 -15
- package/es/ellipsis/ellipsis.vue.d.ts +7 -7
- package/es/ellipsis/performant-ellipsis.vue.d.ts +5 -5
- package/es/form/form-item.vue_vue_type_script_setup_true_lang.js +3 -3
- package/es/form/index.d.ts +3 -3
- package/es/grid/grid-col.vue_vue_type_script_setup_true_lang.js +2 -2
- package/es/grid/grid.vue_vue_type_script_setup_true_lang.js +10 -10
- package/es/icon/icon-menu/icon-menu.js +5 -0
- package/es/icon/icon-menu/icon-menu.vue_vue_type_script_setup_true_lang.js +52 -0
- package/es/icon/icon-menu/index.js +9 -0
- package/es/image/preview.vue.d.ts +2 -2
- package/es/index.css +117 -191
- package/es/index.d.ts +3 -1
- package/es/index.js +3 -2
- package/es/index.scss +1 -0
- package/es/input/index.d.ts +7 -7
- package/es/input/input-password.vue.d.ts +3 -3
- package/es/json-form/index.d.ts +9 -9
- package/es/json-form/json-form-item.vue_vue_type_script_setup_true_lang.js +1 -1
- package/es/json-form/json-form.vue.d.ts +3 -3
- package/es/layout/content.vue.d.ts +2 -2
- package/es/layout/content.vue_vue_type_script_setup_true_lang.js +8 -3
- package/es/layout/context.d.ts +12 -9
- package/es/layout/context.js +11 -3
- package/es/layout/footer.vue.d.ts +2 -2
- package/es/layout/footer.vue_vue_type_script_setup_true_lang.js +8 -3
- package/es/layout/header.vue.d.ts +3 -30
- package/es/layout/header.vue_vue_type_script_setup_true_lang.js +9 -339
- package/es/layout/hooks/use-has-sider.d.ts +2 -0
- package/es/layout/hooks/use-has-sider.js +38 -0
- package/es/layout/index.d.ts +91 -380
- package/es/layout/index.js +2 -2
- package/es/layout/interface.d.ts +12 -46
- package/es/layout/layout.vue.d.ts +4 -2
- package/es/layout/layout.vue_vue_type_script_setup_true_lang.js +38 -14
- package/es/layout/sider.vue.d.ts +47 -183
- package/es/layout/sider.vue_vue_type_script_setup_true_lang.js +191 -370
- package/es/layout/style/index.css +112 -190
- package/es/layout/style/index.scss +127 -239
- package/es/layout/style/token.scss +46 -26
- package/es/link/index.d.ts +6 -6
- package/es/list/index.d.ts +18 -18
- package/es/menu/base-menu.vue.d.ts +1 -1
- package/es/menu/base-menu.vue_vue_type_script_setup_true_lang.js +14 -14
- package/es/menu/item.d.ts +1 -1
- package/es/menu/menu.d.ts +12 -12
- package/es/menu/menu.js +3 -3
- package/es/modal/index.d.ts +15 -15
- package/es/modal/modal.vue.d.ts +4 -4
- package/es/popconfirm/index.d.ts +12 -12
- package/es/popover/index.d.ts +12 -12
- package/es/progress/index.d.ts +6 -6
- package/es/qr-code/index.d.ts +3 -3
- package/es/radio/radio.d.ts +3 -3
- package/es/resize-box/resize-box.vue.d.ts +4 -4
- package/es/resize-box/resize-box.vue_vue_type_script_setup_true_lang.js +7 -7
- package/es/result/index.d.ts +3 -3
- package/es/scrollbar/style/index.css +1 -1
- package/es/scrollbar/style/index.scss +4 -1
- package/es/sd-vue.js +3 -1
- package/es/select/select.d.ts +17 -17
- package/es/slider/index.d.ts +3 -3
- package/es/split/split.vue.d.ts +4 -4
- package/es/split/split.vue_vue_type_script_setup_true_lang.js +6 -6
- package/es/steps/index.d.ts +6 -6
- package/es/tabs/index.d.ts +6 -6
- package/es/tag/index.d.ts +6 -6
- package/es/tag/tag.vue.d.ts +2 -2
- package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +2 -2
- package/es/theme-provider/index.d.ts +9 -9
- package/es/time-picker/index.d.ts +6 -6
- package/es/time-picker/time-picker.vue.d.ts +2 -2
- package/es/timeline/index.d.ts +3 -3
- package/es/timeline/timeline.d.ts +1 -1
- package/es/tooltip/index.d.ts +3 -3
- package/es/tour/index.d.ts +3 -3
- package/es/tour/tour.vue_vue_type_script_setup_true_lang.js +6 -6
- package/es/tree/expand-transition.vue.d.ts +2 -2
- package/es/tree/node-switcher.vue.d.ts +1 -1
- package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +23 -23
- package/es/tree-select/tree-select.vue.d.ts +9 -9
- package/json/vetur-attributes.json +23 -156
- package/json/vetur-tags.json +12 -44
- package/json/web-types.json +38 -304
- package/package.json +5 -5
- package/es/calendar/hooks/use-calendar-theme.d.ts +0 -4
- package/es/layout/utils.d.ts +0 -1
- package/es/layout/utils.js +0 -11
|
@@ -1,447 +1,268 @@
|
|
|
1
|
+
import { configProviderInjectionKey } from "../config-provider/context.js";
|
|
1
2
|
import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/objectSpread2.js";
|
|
2
3
|
import { getPrefixCls } from "../_utils/global-config.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import useMergeState from "../_hooks/use-merge-state.js";
|
|
6
|
-
import { KEYBOARD_KEY } from "../_utils/keyboard.js";
|
|
7
|
-
import usePopupManager from "../_hooks/use-popup-manager.js";
|
|
4
|
+
import { useScrollbar } from "../_hooks/use-scrollbar.js";
|
|
5
|
+
import Scrollbar from "../scrollbar/index.js";
|
|
8
6
|
import IconRight from "../icon/icon-right/index.js";
|
|
7
|
+
import { useThemeMode } from "../_hooks/use-theme-mode.js";
|
|
9
8
|
import IconLeft from "../icon/icon-left/index.js";
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { SIDER_LOCATIONS } from "./utils.js";
|
|
14
|
-
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, inject, mergeProps, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, provide, reactive, renderSlot, resolveDynamicComponent, toRefs, unref, watch, withCtx } from "vue";
|
|
9
|
+
import { LayoutContextInjectionKey, SiderContextInjectionKey } from "./context.js";
|
|
10
|
+
import IconMenu from "../icon/icon-menu/index.js";
|
|
11
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, mergeProps, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, provide, reactive, ref, renderSlot, resolveDynamicComponent, toRef, unref, watch, withCtx } from "vue";
|
|
15
12
|
//#region components/layout/sider.vue?vue&type=script&setup=true&lang.ts
|
|
16
|
-
var _hoisted_1 = { key: 0 };
|
|
17
|
-
var _hoisted_2 = { key: 1 };
|
|
18
13
|
var sider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent(_objectSpread2(_objectSpread2({}, { name: "LayoutSider" }), {}, {
|
|
19
14
|
__name: "sider",
|
|
20
15
|
props: {
|
|
21
16
|
/**
|
|
22
|
-
* @zh
|
|
23
|
-
* @en
|
|
17
|
+
* @zh 是否可折叠
|
|
18
|
+
* @en Whether can be collapsed
|
|
24
19
|
*/
|
|
25
|
-
|
|
26
|
-
type: String,
|
|
27
|
-
default: "light"
|
|
28
|
-
},
|
|
29
|
-
/**
|
|
30
|
-
* @zh 抽屉是否可见
|
|
31
|
-
* @en Whether navigation drawer is visible
|
|
32
|
-
*/
|
|
33
|
-
modelValue: {
|
|
34
|
-
type: Boolean,
|
|
35
|
-
default: void 0
|
|
36
|
-
},
|
|
37
|
-
/**
|
|
38
|
-
* @zh 默认是否显示抽屉
|
|
39
|
-
* @en Whether navigation drawer is visible by default
|
|
40
|
-
*/
|
|
41
|
-
defaultVisible: {
|
|
20
|
+
collapsible: {
|
|
42
21
|
type: Boolean,
|
|
43
22
|
default: false
|
|
44
23
|
},
|
|
45
24
|
/**
|
|
46
|
-
* @zh
|
|
47
|
-
* @en Current collapsed state
|
|
25
|
+
* @zh 当前折叠状态(受控)
|
|
26
|
+
* @en Current collapsed state (controlled)
|
|
48
27
|
*/
|
|
49
28
|
collapsed: {
|
|
50
29
|
type: Boolean,
|
|
51
30
|
default: void 0
|
|
52
31
|
},
|
|
53
32
|
/**
|
|
54
|
-
* @zh
|
|
55
|
-
* @en
|
|
33
|
+
* @zh 默认折叠状态(非受控)
|
|
34
|
+
* @en Default collapsed state (uncontrolled)
|
|
56
35
|
*/
|
|
57
36
|
defaultCollapsed: {
|
|
58
37
|
type: Boolean,
|
|
59
38
|
default: false
|
|
60
39
|
},
|
|
61
40
|
/**
|
|
62
|
-
* @zh
|
|
63
|
-
* @en Whether
|
|
41
|
+
* @zh 折叠时是否反转箭头方向
|
|
42
|
+
* @en Whether to reverse the arrow direction when collapsed
|
|
64
43
|
*/
|
|
65
|
-
|
|
44
|
+
reverseArrow: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: false
|
|
47
|
+
},
|
|
66
48
|
/**
|
|
67
|
-
* @zh
|
|
68
|
-
* @en
|
|
49
|
+
* @zh collapsedWidth 为 0 时零宽触发器的自定义样式
|
|
50
|
+
* @en Custom style of zero-width trigger when collapsedWidth is 0
|
|
69
51
|
*/
|
|
70
|
-
|
|
71
|
-
type:
|
|
52
|
+
zeroWidthTriggerStyle: {
|
|
53
|
+
type: Object,
|
|
72
54
|
default: void 0
|
|
73
55
|
},
|
|
74
56
|
/**
|
|
75
|
-
* @zh
|
|
76
|
-
* @en Whether to
|
|
57
|
+
* @zh 是否隐藏内置折叠触发器,配合受控的 collapsed 自行控制折叠
|
|
58
|
+
* @en Whether to hide the built-in collapse trigger, control collapse via collapsed
|
|
77
59
|
*/
|
|
78
|
-
|
|
60
|
+
hideTrigger: {
|
|
79
61
|
type: Boolean,
|
|
80
62
|
default: false
|
|
81
63
|
},
|
|
82
64
|
/**
|
|
83
|
-
* @zh
|
|
84
|
-
* @en Width
|
|
85
|
-
*/
|
|
86
|
-
railWidth: {
|
|
87
|
-
type: [Number, String],
|
|
88
|
-
default: 56
|
|
89
|
-
},
|
|
90
|
-
/**
|
|
91
|
-
* @zh 是否在 hover 时临时展开 rail
|
|
92
|
-
* @en Whether to expand rail on hover
|
|
93
|
-
*/
|
|
94
|
-
expandOnHover: { type: Boolean },
|
|
95
|
-
/**
|
|
96
|
-
* @zh 是否禁用响应式宽度监听
|
|
97
|
-
* @en Whether to disable resize watcher
|
|
98
|
-
*/
|
|
99
|
-
disableResizeWatcher: { type: Boolean },
|
|
100
|
-
/**
|
|
101
|
-
* @zh 是否禁用路由切换时自动关闭临时抽屉
|
|
102
|
-
* @en Whether to disable route watcher
|
|
103
|
-
*/
|
|
104
|
-
disableRouteWatcher: { type: Boolean },
|
|
105
|
-
/**
|
|
106
|
-
* @zh 宽度
|
|
107
|
-
* @en Width
|
|
65
|
+
* @zh 展开时的宽度
|
|
66
|
+
* @en Width when expanded
|
|
108
67
|
*/
|
|
109
68
|
width: {
|
|
110
69
|
type: [Number, String],
|
|
111
70
|
default: 200
|
|
112
71
|
},
|
|
113
72
|
/**
|
|
114
|
-
* @zh
|
|
115
|
-
* @en
|
|
116
|
-
*/
|
|
117
|
-
height: {
|
|
118
|
-
type: [Number, String],
|
|
119
|
-
default: void 0
|
|
120
|
-
},
|
|
121
|
-
/**
|
|
122
|
-
* @zh 收缩宽度
|
|
123
|
-
* @en Collapsed width
|
|
73
|
+
* @zh 折叠时的宽度
|
|
74
|
+
* @en Width when collapsed
|
|
124
75
|
*/
|
|
125
76
|
collapsedWidth: {
|
|
126
|
-
type: Number,
|
|
77
|
+
type: [Number, String],
|
|
127
78
|
default: 48
|
|
128
79
|
},
|
|
129
80
|
/**
|
|
130
|
-
* @zh
|
|
131
|
-
* @en
|
|
132
|
-
*/
|
|
133
|
-
temporary: { type: Boolean },
|
|
134
|
-
/**
|
|
135
|
-
* @zh 是否始终显示抽屉
|
|
136
|
-
* @en Whether to always keep the drawer active
|
|
137
|
-
*/
|
|
138
|
-
permanent: { type: Boolean },
|
|
139
|
-
/**
|
|
140
|
-
* @zh 临时抽屉模式下点击遮罩后是否保持显示
|
|
141
|
-
* @en Whether temporary drawer should stay open after scrim click
|
|
142
|
-
*/
|
|
143
|
-
persistent: { type: Boolean },
|
|
144
|
-
/**
|
|
145
|
-
* @zh 是否显示遮罩层
|
|
146
|
-
* @en Whether to show the temporary drawer mask
|
|
147
|
-
*/
|
|
148
|
-
mask: {
|
|
149
|
-
type: Boolean,
|
|
150
|
-
default: true
|
|
151
|
-
},
|
|
152
|
-
/**
|
|
153
|
-
* @zh 点击遮罩层是否可以关闭抽屉
|
|
154
|
-
* @en Whether the drawer can be closed by clicking the mask
|
|
155
|
-
*/
|
|
156
|
-
maskClosable: {
|
|
157
|
-
type: Boolean,
|
|
158
|
-
default: true
|
|
159
|
-
},
|
|
160
|
-
/**
|
|
161
|
-
* @zh 是否支持通过 ESC 键关闭临时抽屉
|
|
162
|
-
* @en Whether temporary drawer can be closed with ESC
|
|
163
|
-
*/
|
|
164
|
-
escToClose: {
|
|
165
|
-
type: Boolean,
|
|
166
|
-
default: true
|
|
167
|
-
},
|
|
168
|
-
/**
|
|
169
|
-
* @zh 抽屉停靠位置
|
|
170
|
-
* @en Navigation drawer location
|
|
81
|
+
* @zh 响应式断点,命中断点时自动折叠
|
|
82
|
+
* @en Responsive breakpoint, auto collapse when matched
|
|
171
83
|
*/
|
|
172
|
-
|
|
84
|
+
breakpoint: {
|
|
173
85
|
type: String,
|
|
174
|
-
default:
|
|
175
|
-
validator: (value) => SIDER_LOCATIONS.includes(value)
|
|
86
|
+
default: void 0
|
|
176
87
|
},
|
|
177
88
|
/**
|
|
178
|
-
* @zh
|
|
179
|
-
* @en
|
|
180
|
-
*/
|
|
181
|
-
floating: { type: Boolean },
|
|
182
|
-
/**
|
|
183
|
-
* @zh 是否启用粘性定位
|
|
184
|
-
* @en Whether to enable sticky mode
|
|
185
|
-
*/
|
|
186
|
-
sticky: { type: Boolean },
|
|
187
|
-
/**
|
|
188
|
-
* @zh 翻转折叠提示箭头的方向,当 Sider 在右边时可以使用
|
|
189
|
-
* @en Flip and fold the direction of the hint arrow, which can be used when Sider is on the right
|
|
190
|
-
*/
|
|
191
|
-
reverseArrow: { type: Boolean },
|
|
192
|
-
/**
|
|
193
|
-
* @zh 触发响应式布局的断点, 详见[响应式栅格](/vue/component/grid)
|
|
194
|
-
* @en Trigger breakpoints for responsive layout, see [Responsive Grid](/vue/component/grid) for details
|
|
195
|
-
*/
|
|
196
|
-
breakpoint: { type: String },
|
|
197
|
-
/**
|
|
198
|
-
* @zh 可以用 ResizeBox 替换原生的 `aside` 标签,这个参数即 ResizeBox的 `directions` 参数。详情请看 [ResizeBox](/vue/component/resize-box)。
|
|
199
|
-
* @en Can replace the native `aside` tag with ResizeBox. This is the `directions` parameter of ResizeBox. For details, please see [ResizeBox](/vue/component/resize-box)
|
|
89
|
+
* @zh 主题颜色,未设置时跟随 ConfigProvider 的 themeMode
|
|
90
|
+
* @en Theme color, follows ConfigProvider's themeMode when not set
|
|
200
91
|
*/
|
|
201
|
-
|
|
202
|
-
type:
|
|
92
|
+
theme: {
|
|
93
|
+
type: String,
|
|
203
94
|
default: void 0
|
|
204
95
|
},
|
|
205
96
|
/**
|
|
206
|
-
* @zh
|
|
207
|
-
* @en
|
|
97
|
+
* @zh 滚动配置,默认使用组件库 Scrollbar;设为 false 使用原生 overflow:auto,传对象可配置 Scrollbar
|
|
98
|
+
* @en Scroll config, use the component Scrollbar by default; set to false for native overflow:auto, pass an object to configure Scrollbar
|
|
208
99
|
*/
|
|
209
|
-
|
|
100
|
+
scrollbar: {
|
|
101
|
+
type: [Object, Boolean],
|
|
102
|
+
default: void 0
|
|
103
|
+
}
|
|
210
104
|
},
|
|
211
|
-
emits: [
|
|
212
|
-
"update:modelValue",
|
|
213
|
-
"update:rail",
|
|
214
|
-
"collapse",
|
|
215
|
-
"update:collapsed",
|
|
216
|
-
"breakpoint"
|
|
217
|
-
],
|
|
105
|
+
emits: ["collapse", "breakpoint"],
|
|
218
106
|
setup(__props, { emit: __emit }) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
})();
|
|
107
|
+
var _props$collapsed;
|
|
108
|
+
let siderUuid = 0;
|
|
109
|
+
const generateId = (prefix = "") => {
|
|
110
|
+
siderUuid += 1;
|
|
111
|
+
return `${prefix}${siderUuid}`;
|
|
112
|
+
};
|
|
226
113
|
const props = __props;
|
|
227
114
|
const emit = __emit;
|
|
228
|
-
/**
|
|
229
|
-
* @zh 自定义底部折叠触发器
|
|
230
|
-
* @en Custom bottom folding trigger
|
|
231
|
-
* @slot trigger
|
|
232
|
-
* @binding {boolean} collapsed
|
|
233
|
-
*/
|
|
234
|
-
const { theme, modelValue, defaultVisible, collapsed, defaultCollapsed, collapsible, rail, defaultRail, expandOnHover, disableResizeWatcher, disableRouteWatcher, hideTrigger, breakpoint, height, collapsedWidth, mask, maskClosable, escToClose, location, floating, permanent, persistent, sticky, temporary, resizeDirections } = toRefs(props);
|
|
235
115
|
const prefixCls = getPrefixCls("layout-sider");
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const isHorizontal = computed(() => ["left", "right"].includes(physicalLocation.value));
|
|
245
|
-
const isTemporary = computed(() => !permanent.value && !!temporary.value);
|
|
246
|
-
const isDrawerActive = computed(() => !!permanent.value || drawerVisible.value);
|
|
247
|
-
const temporaryVisible = computed(() => isTemporary.value && isDrawerActive.value);
|
|
248
|
-
const railModeEnabled = computed(() => {
|
|
249
|
-
var _rail$value;
|
|
250
|
-
return ((_rail$value = rail === null || rail === void 0 ? void 0 : rail.value) !== null && _rail$value !== void 0 ? _rail$value : defaultRail.value) || railCollapsed.value;
|
|
251
|
-
});
|
|
252
|
-
const { zIndex } = usePopupManager("dialog", { visible: temporaryVisible });
|
|
253
|
-
const componentTag = computed(() => (resizeDirections === null || resizeDirections === void 0 ? void 0 : resizeDirections.value) && !isTemporary.value && isHorizontal.value ? ResizeBox : "div");
|
|
254
|
-
const resizeDirectionsProps = computed(() => componentTag.value === ResizeBox && (resizeDirections === null || resizeDirections === void 0 ? void 0 : resizeDirections.value) ? { directions: resizeDirections.value } : {});
|
|
255
|
-
const showTrigger = computed(() => collapsible.value && !hideTrigger.value && !isTemporary.value && isHorizontal.value);
|
|
256
|
-
const siderSize = computed(() => {
|
|
257
|
-
let rawSize = props.width;
|
|
258
|
-
if (localCollapsed.value) rawSize = props.collapsedWidth;
|
|
259
|
-
else if (railCollapsed.value) rawSize = props.railWidth;
|
|
260
|
-
return isNumber(rawSize) ? `${rawSize}px` : String(rawSize);
|
|
261
|
-
});
|
|
262
|
-
const crossAxisSize = computed(() => {
|
|
263
|
-
var _height$value;
|
|
264
|
-
const rawSize = (_height$value = height === null || height === void 0 ? void 0 : height.value) !== null && _height$value !== void 0 ? _height$value : props.width;
|
|
265
|
-
return isNumber(rawSize) ? `${rawSize}px` : String(rawSize);
|
|
266
|
-
});
|
|
267
|
-
const siderStyles = computed(() => {
|
|
268
|
-
const style = isHorizontal.value ? { width: siderSize.value } : { height: crossAxisSize.value };
|
|
269
|
-
if (!isTemporary.value) {
|
|
270
|
-
if (sticky.value && isHorizontal.value) return _objectSpread2(_objectSpread2({}, style), {}, {
|
|
271
|
-
position: "sticky",
|
|
272
|
-
top: "0",
|
|
273
|
-
alignSelf: "flex-start",
|
|
274
|
-
maxHeight: "100vh"
|
|
275
|
-
});
|
|
276
|
-
return style;
|
|
277
|
-
}
|
|
278
|
-
return _objectSpread2(_objectSpread2({}, style), {}, {
|
|
279
|
-
[physicalLocation.value]: 0,
|
|
280
|
-
zIndex: zIndex.value || void 0
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
const triggerStyles = computed(() => ({ width: siderSize.value }));
|
|
284
|
-
const showMask = computed(() => isTemporary.value && isDrawerActive.value && mask.value);
|
|
285
|
-
const maskStyles = computed(() => {
|
|
286
|
-
const baseStyle = { zIndex: zIndex.value ? zIndex.value - 1 : void 0 };
|
|
287
|
-
if (!showMask.value) return baseStyle;
|
|
288
|
-
if (physicalLocation.value === "left") return _objectSpread2(_objectSpread2({}, baseStyle), {}, {
|
|
289
|
-
top: 0,
|
|
290
|
-
right: 0,
|
|
291
|
-
bottom: 0,
|
|
292
|
-
left: siderSize.value
|
|
293
|
-
});
|
|
294
|
-
if (physicalLocation.value === "right") return _objectSpread2(_objectSpread2({}, baseStyle), {}, {
|
|
295
|
-
top: 0,
|
|
296
|
-
right: siderSize.value,
|
|
297
|
-
bottom: 0,
|
|
298
|
-
left: 0
|
|
299
|
-
});
|
|
300
|
-
if (physicalLocation.value === "top") return _objectSpread2(_objectSpread2({}, baseStyle), {}, {
|
|
301
|
-
top: crossAxisSize.value,
|
|
302
|
-
right: 0,
|
|
303
|
-
bottom: 0,
|
|
304
|
-
left: 0
|
|
305
|
-
});
|
|
306
|
-
return _objectSpread2(_objectSpread2({}, baseStyle), {}, {
|
|
307
|
-
top: 0,
|
|
308
|
-
right: 0,
|
|
309
|
-
bottom: crossAxisSize.value,
|
|
310
|
-
left: 0
|
|
311
|
-
});
|
|
312
|
-
});
|
|
313
|
-
const classNames = computed(() => [prefixCls, {
|
|
314
|
-
[`${prefixCls}-light`]: theme.value === "light",
|
|
315
|
-
[`${prefixCls}-has-trigger`]: showTrigger.value,
|
|
316
|
-
[`${prefixCls}-collapsed`]: localCollapsed.value,
|
|
317
|
-
[`${prefixCls}-temporary`]: isTemporary.value,
|
|
318
|
-
[`${prefixCls}-persistent`]: persistent.value,
|
|
319
|
-
[`${prefixCls}-active`]: isDrawerActive.value,
|
|
320
|
-
[`${prefixCls}-rail`]: railCollapsed.value,
|
|
321
|
-
[`${prefixCls}-expand-on-hover`]: expandOnHover.value,
|
|
322
|
-
[`${prefixCls}-floating`]: floating.value,
|
|
323
|
-
[`${prefixCls}-sticky`]: sticky.value,
|
|
324
|
-
[`${prefixCls}-${physicalLocation.value}`]: true
|
|
325
|
-
}]);
|
|
326
|
-
const triggerClassNames = computed(() => [`${prefixCls}-trigger`, { [`${prefixCls}-trigger-light`]: theme.value === "light" }]);
|
|
327
|
-
const setVisibleState = (nextVisible) => {
|
|
328
|
-
setDrawerVisible(nextVisible);
|
|
329
|
-
emit("update:modelValue", nextVisible);
|
|
330
|
-
};
|
|
331
|
-
const setRailState = (nextRail) => {
|
|
332
|
-
setRailCollapsed(nextRail);
|
|
333
|
-
emit("update:rail", nextRail);
|
|
334
|
-
};
|
|
335
|
-
const toggleTrigger = () => {
|
|
336
|
-
const nextCollapsed = !localCollapsed.value;
|
|
337
|
-
setLocalCollapsed(nextCollapsed);
|
|
338
|
-
emit("update:collapsed", nextCollapsed);
|
|
339
|
-
emit("collapse", nextCollapsed, "clickTrigger");
|
|
340
|
-
};
|
|
341
|
-
const handleMaskClick = () => {
|
|
342
|
-
if (!maskClosable.value || persistent.value) return;
|
|
343
|
-
setVisibleState(false);
|
|
116
|
+
const dimensionMaxMap = {
|
|
117
|
+
xs: "479.98px",
|
|
118
|
+
sm: "575.98px",
|
|
119
|
+
md: "767.98px",
|
|
120
|
+
lg: "991.98px",
|
|
121
|
+
xl: "1199.98px",
|
|
122
|
+
xxl: "1599.98px",
|
|
123
|
+
xxxl: "1839.98px"
|
|
344
124
|
};
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
const
|
|
349
|
-
|
|
125
|
+
const isNumeric = (val) => !Number.isNaN(Number.parseFloat(val)) && Number.isFinite(Number(val));
|
|
126
|
+
const toSiderWidth = (val) => isNumeric(val) ? `${val}px` : String(val);
|
|
127
|
+
const isControlled = computed(() => props.collapsed !== void 0);
|
|
128
|
+
const collapsedState = ref((_props$collapsed = props.collapsed) !== null && _props$collapsed !== void 0 ? _props$collapsed : props.defaultCollapsed);
|
|
129
|
+
watch(() => props.collapsed, (val) => {
|
|
130
|
+
if (val !== void 0) collapsedState.value = val;
|
|
131
|
+
});
|
|
132
|
+
const mergedCollapsed = computed(() => isControlled.value ? props.collapsed : collapsedState.value);
|
|
133
|
+
const handleSetCollapsed = (value, type) => {
|
|
134
|
+
if (!isControlled.value) collapsedState.value = value;
|
|
135
|
+
emit("collapse", value, type);
|
|
350
136
|
};
|
|
351
|
-
const
|
|
352
|
-
|
|
137
|
+
const toggle = () => {
|
|
138
|
+
handleSetCollapsed(!mergedCollapsed.value, "clickTrigger");
|
|
353
139
|
};
|
|
354
|
-
const
|
|
355
|
-
|
|
140
|
+
const below = ref(false);
|
|
141
|
+
const setupResponsive = () => {
|
|
142
|
+
const { breakpoint } = props;
|
|
143
|
+
if (typeof window === "undefined" || !window.matchMedia || !breakpoint) return;
|
|
144
|
+
const max = dimensionMaxMap[breakpoint];
|
|
145
|
+
if (!max) return;
|
|
146
|
+
const mql = window.matchMedia(`screen and (max-width: ${max})`);
|
|
147
|
+
const handler = (m) => {
|
|
148
|
+
below.value = m.matches;
|
|
149
|
+
emit("breakpoint", m.matches);
|
|
150
|
+
if (mergedCollapsed.value !== m.matches) handleSetCollapsed(m.matches, "responsive");
|
|
151
|
+
};
|
|
152
|
+
if (typeof mql.addEventListener === "function") mql.addEventListener("change", handler);
|
|
153
|
+
else if (typeof mql.addListener === "function") mql.addListener(handler);
|
|
154
|
+
handler(mql);
|
|
155
|
+
return () => {
|
|
156
|
+
if (typeof mql.removeEventListener === "function") mql.removeEventListener("change", handler);
|
|
157
|
+
else if (typeof mql.removeListener === "function") mql.removeListener(handler);
|
|
158
|
+
};
|
|
356
159
|
};
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
if (nextCollapsed !== localCollapsed.value) {
|
|
361
|
-
setLocalCollapsed(nextCollapsed);
|
|
362
|
-
emit("update:collapsed", nextCollapsed);
|
|
363
|
-
emit("collapse", nextCollapsed, "responsive");
|
|
364
|
-
emit("breakpoint", nextCollapsed);
|
|
365
|
-
}
|
|
160
|
+
let cleanupResponsive;
|
|
161
|
+
onMounted(() => {
|
|
162
|
+
cleanupResponsive = setupResponsive();
|
|
366
163
|
});
|
|
367
|
-
watch(() => props.
|
|
368
|
-
|
|
164
|
+
watch(() => props.breakpoint, () => {
|
|
165
|
+
cleanupResponsive === null || cleanupResponsive === void 0 || cleanupResponsive();
|
|
166
|
+
cleanupResponsive = setupResponsive();
|
|
369
167
|
});
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
watch([
|
|
379
|
-
isTemporary,
|
|
380
|
-
isDrawerActive,
|
|
381
|
-
disableRouteWatcher
|
|
382
|
-
], ([nextTemporary, nextActive, nextDisableRouteWatcher]) => {
|
|
383
|
-
off(window, "popstate", handleRouteChange);
|
|
384
|
-
off(window, "hashchange", handleRouteChange);
|
|
385
|
-
if (nextTemporary && nextActive && !nextDisableRouteWatcher) {
|
|
386
|
-
on(window, "popstate", handleRouteChange);
|
|
387
|
-
on(window, "hashchange", handleRouteChange);
|
|
388
|
-
}
|
|
389
|
-
}, { immediate: true });
|
|
390
|
-
const uniqueId = generateId("__arco_layout_sider");
|
|
391
|
-
const siderHook = inject(LayoutSiderInjectionKey, void 0);
|
|
168
|
+
onUnmounted(() => {
|
|
169
|
+
cleanupResponsive === null || cleanupResponsive === void 0 || cleanupResponsive();
|
|
170
|
+
});
|
|
171
|
+
const { siderHook } = inject(LayoutContextInjectionKey, { siderHook: {
|
|
172
|
+
addSider: () => {},
|
|
173
|
+
removeSider: () => {}
|
|
174
|
+
} });
|
|
175
|
+
let siderId = "";
|
|
392
176
|
onMounted(() => {
|
|
393
|
-
|
|
394
|
-
siderHook
|
|
177
|
+
siderId = generateId("sd-sider-");
|
|
178
|
+
siderHook.addSider(siderId);
|
|
395
179
|
});
|
|
396
180
|
onUnmounted(() => {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
181
|
+
siderHook.removeSider(siderId);
|
|
182
|
+
});
|
|
183
|
+
const configProvider = inject(configProviderInjectionKey, void 0);
|
|
184
|
+
const rtl = computed(() => {
|
|
185
|
+
var _configProvider$rtl;
|
|
186
|
+
return (_configProvider$rtl = configProvider === null || configProvider === void 0 ? void 0 : configProvider.rtl) !== null && _configProvider$rtl !== void 0 ? _configProvider$rtl : false;
|
|
187
|
+
});
|
|
188
|
+
const rootEl = ref(null);
|
|
189
|
+
const detectedThemeMode = useThemeMode(rootEl);
|
|
190
|
+
const mergedTheme = computed(() => {
|
|
191
|
+
var _props$theme;
|
|
192
|
+
return (_props$theme = props.theme) !== null && _props$theme !== void 0 ? _props$theme : detectedThemeMode.value;
|
|
402
193
|
});
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
194
|
+
const reverseIcon = computed(() => rtl.value === !props.reverseArrow);
|
|
195
|
+
const defaultTriggerComponent = computed(() => {
|
|
196
|
+
const expandedIcon = reverseIcon.value ? IconRight : IconLeft;
|
|
197
|
+
const collapsedIcon = reverseIcon.value ? IconLeft : IconRight;
|
|
198
|
+
return mergedCollapsed.value ? collapsedIcon : expandedIcon;
|
|
199
|
+
});
|
|
200
|
+
const rawWidth = computed(() => mergedCollapsed.value ? props.collapsedWidth : props.width);
|
|
201
|
+
const siderWidth = computed(() => toSiderWidth(rawWidth.value));
|
|
202
|
+
const hasZeroWidth = computed(() => Number.parseFloat(String(props.collapsedWidth || 0)) === 0);
|
|
203
|
+
const renderTrigger = computed(() => (props.collapsible || below.value && hasZeroWidth.value) && !props.hideTrigger);
|
|
204
|
+
const { scrollbarProps } = useScrollbar(toRef(props, "scrollbar"));
|
|
205
|
+
const useNativeScrollbar = computed(() => props.scrollbar === false);
|
|
206
|
+
const divStyle = computed(() => ({
|
|
207
|
+
flex: `0 0 ${siderWidth.value}`,
|
|
208
|
+
maxWidth: siderWidth.value,
|
|
209
|
+
minWidth: siderWidth.value,
|
|
210
|
+
width: siderWidth.value
|
|
407
211
|
}));
|
|
212
|
+
const siderCls = computed(() => [
|
|
213
|
+
prefixCls,
|
|
214
|
+
`${prefixCls}-${mergedTheme.value}`,
|
|
215
|
+
{
|
|
216
|
+
[`${prefixCls}-collapsed`]: mergedCollapsed.value,
|
|
217
|
+
[`${prefixCls}-has-trigger`]: props.collapsible && !props.hideTrigger && !hasZeroWidth.value,
|
|
218
|
+
[`${prefixCls}-below`]: below.value,
|
|
219
|
+
[`${prefixCls}-zero-width`]: Number.parseFloat(siderWidth.value) === 0
|
|
220
|
+
}
|
|
221
|
+
]);
|
|
222
|
+
const siderContext = reactive({
|
|
223
|
+
siderCollapsed: mergedCollapsed.value,
|
|
224
|
+
theme: mergedTheme.value
|
|
225
|
+
});
|
|
226
|
+
watch(mergedCollapsed, (val) => {
|
|
227
|
+
siderContext.siderCollapsed = val;
|
|
228
|
+
});
|
|
229
|
+
watch(mergedTheme, (val) => {
|
|
230
|
+
siderContext.theme = val;
|
|
231
|
+
});
|
|
232
|
+
provide(SiderContextInjectionKey, siderContext);
|
|
408
233
|
return (_ctx, _cache) => {
|
|
409
|
-
return openBlock(),
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
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
|
-
}, [renderSlot(_ctx.$slots, "trigger", { collapsed: unref(localCollapsed) }, () => [!__props.reverseArrow ? (openBlock(), createElementBlock("div", _hoisted_1, [!unref(localCollapsed) ? (openBlock(), createBlock(unref(IconLeft), { key: 0 })) : (openBlock(), createBlock(unref(IconRight), { key: 1 }))])) : (openBlock(), createElementBlock("div", _hoisted_2, [unref(localCollapsed) ? (openBlock(), createBlock(unref(IconLeft), { key: 0 })) : (openBlock(), createBlock(unref(IconRight), { key: 1 }))]))])], 6)) : createCommentVNode("", true)
|
|
442
|
-
]),
|
|
443
|
-
_: 3
|
|
444
|
-
}, 16, ["class", "style"]);
|
|
234
|
+
return openBlock(), createElementBlock("aside", {
|
|
235
|
+
ref_key: "rootEl",
|
|
236
|
+
ref: rootEl,
|
|
237
|
+
class: normalizeClass(siderCls.value),
|
|
238
|
+
style: normalizeStyle(divStyle.value)
|
|
239
|
+
}, [
|
|
240
|
+
_ctx.$slots.header ? (openBlock(), createElementBlock("div", {
|
|
241
|
+
key: 0,
|
|
242
|
+
class: normalizeClass(`${unref(prefixCls)}-header`)
|
|
243
|
+
}, [renderSlot(_ctx.$slots, "header")], 2)) : createCommentVNode("", true),
|
|
244
|
+
useNativeScrollbar.value ? (openBlock(), createElementBlock("div", {
|
|
245
|
+
key: 1,
|
|
246
|
+
class: normalizeClass([`${unref(prefixCls)}-children`, `${unref(prefixCls)}-children-scroll`])
|
|
247
|
+
}, [renderSlot(_ctx.$slots, "default")], 2)) : (openBlock(), createBlock(unref(Scrollbar), mergeProps({
|
|
248
|
+
key: 2,
|
|
249
|
+
"outer-class": `${unref(prefixCls)}-children`
|
|
250
|
+
}, unref(scrollbarProps)), {
|
|
251
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
|
|
252
|
+
_: 3
|
|
253
|
+
}, 16, ["outer-class"])),
|
|
254
|
+
renderTrigger.value ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [hasZeroWidth.value ? (openBlock(), createElementBlock("span", {
|
|
255
|
+
key: 0,
|
|
256
|
+
class: normalizeClass([`${unref(prefixCls)}-zero-width-trigger`, `${unref(prefixCls)}-zero-width-trigger-${__props.reverseArrow ? "right" : "left"}`]),
|
|
257
|
+
style: normalizeStyle(__props.zeroWidthTriggerStyle),
|
|
258
|
+
onClick: toggle
|
|
259
|
+
}, [renderSlot(_ctx.$slots, "trigger", {}, () => [createVNode(unref(IconMenu))])], 6)) : (openBlock(), createElementBlock("div", {
|
|
260
|
+
key: 1,
|
|
261
|
+
class: normalizeClass(`${unref(prefixCls)}-trigger`),
|
|
262
|
+
style: normalizeStyle({ width: siderWidth.value }),
|
|
263
|
+
onClick: toggle
|
|
264
|
+
}, [renderSlot(_ctx.$slots, "trigger", {}, () => [(openBlock(), createBlock(resolveDynamicComponent(defaultTriggerComponent.value)))])], 6))], 64)) : createCommentVNode("", true)
|
|
265
|
+
], 6);
|
|
445
266
|
};
|
|
446
267
|
}
|
|
447
268
|
}));
|