vft 0.0.430 → 0.0.431
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/dist/index.css +1 -1
- package/es/components/menu/sub-menu.vue2.js +33 -31
- package/es/components/side-menu/side-menu.vue.d.ts +3 -3
- package/es/components/side-menu/side-menu.vue2.js +48 -46
- package/es/components/side-menu/use-drag-line.d.ts +3 -1
- package/es/components/side-menu/use-drag-line.js +39 -28
- package/es/package.json.d.ts +1 -1
- package/es/package.json.js +1 -1
- package/lib/components/menu/sub-menu.vue2.cjs +1 -1
- package/lib/components/side-menu/side-menu.vue.d.ts +3 -3
- package/lib/components/side-menu/side-menu.vue2.cjs +1 -1
- package/lib/components/side-menu/use-drag-line.cjs +1 -1
- package/lib/components/side-menu/use-drag-line.d.ts +3 -1
- package/lib/package.json.cjs +1 -1
- package/lib/package.json.d.ts +1 -1
- package/package.json +5 -5
- package/theme-style/index.css +1 -1
- package/theme-style/src/header-layout.scss +1 -1
- package/theme-style/src/menu.scss +7 -2
- package/theme-style/src/side-menu.scss +0 -3
- package/theme-style/vft-header-layout.css +1 -1
- package/theme-style/vft-menu.css +1 -1
- package/theme-style/vft-side-menu.css +1 -1
- package/web-types.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as Z, getCurrentInstance as le, computed as l, inject as D, ref as C, reactive as ue, watch as ae, provide as se, onMounted as re, onBeforeUnmount as ie, useSlots as ce, h as
|
|
1
|
+
import { defineComponent as Z, getCurrentInstance as le, computed as l, inject as D, ref as C, reactive as ue, watch as ae, provide as se, onMounted as re, onBeforeUnmount as ie, useSlots as ce, h as u, Fragment as pe, withDirectives as me, vShow as de } from "vue";
|
|
2
2
|
import { singleAttrToObj as g, renderTNode as ve, isMobile as fe } from "@vft/utils";
|
|
3
3
|
import { VftTooltip as Me } from "../tooltip/index.js";
|
|
4
4
|
import { VftIcon as L } from "../icon/index.js";
|
|
@@ -56,7 +56,7 @@ const Ce = Z({
|
|
|
56
56
|
const y = G, I = w("sub-menu"), m = le(), {
|
|
57
57
|
indexPath: f,
|
|
58
58
|
parentMenu: k
|
|
59
|
-
} = he(m, l(() => o.index)), i = w("menu"),
|
|
59
|
+
} = he(m, l(() => o.index)), i = w("menu"), a = w("sub-menu"), e = D("rootMenu");
|
|
60
60
|
e || U(I.b(), "can not inject root menu");
|
|
61
61
|
const r = D(`subMenu:${k.value.uid}`);
|
|
62
62
|
r || U(I.b(), "can not inject sub menu");
|
|
@@ -64,8 +64,8 @@ const Ce = Z({
|
|
|
64
64
|
let M;
|
|
65
65
|
const z = C(!1), J = C(), E = C(null), A = l(() => p.value === "horizontal" && b.value ? "bottom-start" : "right-start"), b = l(() => r.level === 0), x = l(() => o.teleported === void 0 ? b.value : o.teleported), K = l(() => e.props.collapse ? `${i.namespace.value}-zoom-in-left` : `${i.namespace.value}-zoom-in-top`), Q = l(() => p.value === "horizontal" && b.value ? ["bottom-start", "bottom-end", "top-start", "top-end", "right-start", "left-start"] : ["right-start", "left-start", "bottom-start", "bottom-end", "top-start", "top-end"]), c = l(() => e.openedMenus.includes(o.index)), d = l(() => {
|
|
66
66
|
let t = !1;
|
|
67
|
-
return Object.values(S.value).forEach((
|
|
68
|
-
|
|
67
|
+
return Object.values(S.value).forEach((s) => {
|
|
68
|
+
s.active && (t = !0);
|
|
69
69
|
}), o.index === e.activeIndex && (t = !0), t;
|
|
70
70
|
}), B = l(() => e.props.backgroundColor || ""), P = l(() => e.props.activeTextColor || ""), F = l(() => e.props.textColor || ""), p = l(() => e.props.mode), W = l(() => e.props.persistent), h = ue({
|
|
71
71
|
index: o.index,
|
|
@@ -79,7 +79,7 @@ const Ce = Z({
|
|
|
79
79
|
}), X = () => E.value?.popperRef?.popperInstanceRef?.destroy(), Y = (t) => {
|
|
80
80
|
t || X();
|
|
81
81
|
}, O = (t) => {
|
|
82
|
-
const
|
|
82
|
+
const s = {
|
|
83
83
|
e: t,
|
|
84
84
|
index: o.index,
|
|
85
85
|
indexPath: f.value,
|
|
@@ -87,18 +87,18 @@ const Ce = Z({
|
|
|
87
87
|
};
|
|
88
88
|
if (e.props.menuTrigger === "hover" && e.props.mode === "horizontal" && !fe() || e.props.collapse && e.props.mode === "vertical" || o.disabled) {
|
|
89
89
|
e.handleSubMenuClick({
|
|
90
|
-
...
|
|
90
|
+
...s,
|
|
91
91
|
isFirstLevel: !0
|
|
92
92
|
});
|
|
93
93
|
return;
|
|
94
94
|
}
|
|
95
|
-
e.handleSubMenuClick(
|
|
96
|
-
}, v = (t,
|
|
95
|
+
e.handleSubMenuClick(s);
|
|
96
|
+
}, v = (t, s = o.showTimeout) => {
|
|
97
97
|
t.type !== "focus" && (e.props.menuTrigger === "click" && e.props.mode === "horizontal" || !e.props.collapse && e.props.mode === "vertical" || o.disabled || (r.mouseInChild.value = !0, M?.(), {
|
|
98
98
|
stop: M
|
|
99
99
|
} = H(() => {
|
|
100
100
|
e.openMenu(o.index, f.value);
|
|
101
|
-
},
|
|
101
|
+
}, s), x.value && k.value.vnode.el?.dispatchEvent(new MouseEvent("mouseenter")), y("mouseenter", t)));
|
|
102
102
|
}, _ = () => {
|
|
103
103
|
e.inSubMenuMouseEnterTimer && clearTimeout(e.inSubMenuMouseEnterTimer), e.inSubMenuMouseleaveTimer && clearTimeout(e.inSubMenuMouseleaveTimer), e.inSubMenuMouseEnterTimer = setTimeout(() => {
|
|
104
104
|
e.inSubMenu = !0;
|
|
@@ -107,23 +107,23 @@ const Ce = Z({
|
|
|
107
107
|
e.inSubMenuMouseEnterTimer && clearTimeout(e.inSubMenuMouseEnterTimer), e.inSubMenuMouseleaveTimer && clearTimeout(e.inSubMenuMouseleaveTimer), e.inSubMenuMouseleaveTimer = setTimeout(() => {
|
|
108
108
|
e.inSubMenu = !1;
|
|
109
109
|
}, o.hideTimeout - 10);
|
|
110
|
-
}, T = (t,
|
|
110
|
+
}, T = (t, s = !1) => {
|
|
111
111
|
e.props.menuTrigger === "click" && e.props.mode === "horizontal" || !e.props.collapse && e.props.mode === "vertical" || (M?.(), r.mouseInChild.value = !1, {
|
|
112
112
|
stop: M
|
|
113
113
|
} = H(() => {
|
|
114
114
|
!z.value && e.closeMenu(o.index, f.value);
|
|
115
|
-
}, o.hideTimeout), x.value &&
|
|
115
|
+
}, o.hideTimeout), x.value && s && m.parent?.type.name === "vft-sub-menu" && r.handleMouseleave?.(t, !0), y("mouseleave", t));
|
|
116
116
|
};
|
|
117
117
|
ae(() => e.props.collapse, (t) => Y(!!t));
|
|
118
118
|
{
|
|
119
119
|
const t = (n) => {
|
|
120
120
|
S.value[n.index] = n;
|
|
121
|
-
},
|
|
121
|
+
}, s = (n) => {
|
|
122
122
|
delete S.value[n.index];
|
|
123
123
|
};
|
|
124
124
|
se(`subMenu:${m.uid}`, {
|
|
125
125
|
addSubMenu: t,
|
|
126
|
-
removeSubMenu:
|
|
126
|
+
removeSubMenu: s,
|
|
127
127
|
handleMouseleave: T,
|
|
128
128
|
mouseInChild: z,
|
|
129
129
|
level: r.level + 1
|
|
@@ -146,18 +146,18 @@ const Ce = Z({
|
|
|
146
146
|
...te.value
|
|
147
147
|
}), R = l(() => ve(m, "title"));
|
|
148
148
|
return () => {
|
|
149
|
-
const t = [N.value?.icon ?
|
|
149
|
+
const t = [N.value?.icon ? u(L, {
|
|
150
150
|
...N.value
|
|
151
|
-
}) : null,
|
|
152
|
-
class: [
|
|
151
|
+
}) : null, u("span", {
|
|
152
|
+
class: [a.e("text"), a.is("arrow", o.showArrow)],
|
|
153
153
|
title: m.props.title
|
|
154
|
-
}, R.value), o.showArrow ?
|
|
155
|
-
class:
|
|
154
|
+
}, R.value), o.showArrow ? u(L, {
|
|
155
|
+
class: a.e("icon-arrow"),
|
|
156
156
|
...ne.value,
|
|
157
157
|
style: {
|
|
158
158
|
transform: c.value ? "rotateZ(180deg)" : "none"
|
|
159
159
|
}
|
|
160
|
-
}) : !1],
|
|
160
|
+
}) : !1], s = e.isMenuPopup ? u(Me, {
|
|
161
161
|
ref: E,
|
|
162
162
|
visible: c.value,
|
|
163
163
|
effect: "light",
|
|
@@ -173,17 +173,19 @@ const Ce = Z({
|
|
|
173
173
|
gpuAcceleration: !1,
|
|
174
174
|
...o.toolTipCfg
|
|
175
175
|
}, {
|
|
176
|
-
content: () =>
|
|
176
|
+
content: () => u("div", {
|
|
177
177
|
class: [i.m(p.value), i.m("popup-container"), o.popperClass],
|
|
178
178
|
onMouseenter: (n) => v(n, 100),
|
|
179
179
|
onMouseleave: (n) => T(n, !0),
|
|
180
180
|
onFocus: (n) => v(n, 100)
|
|
181
|
-
}, [
|
|
181
|
+
}, [u("div", {
|
|
182
182
|
class: [i.b(), i.m("popup"), i.m(`popup-${A.value}`)],
|
|
183
183
|
style: j.value
|
|
184
|
-
}, [
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
}, [u("ul", {
|
|
185
|
+
class: i.m("popup-ul-list")
|
|
186
|
+
}, V.default?.())])]),
|
|
187
|
+
default: () => u("div", {
|
|
188
|
+
class: a.e("title"),
|
|
187
189
|
style: [$.value, {
|
|
188
190
|
backgroundColor: B.value
|
|
189
191
|
}],
|
|
@@ -193,30 +195,30 @@ const Ce = Z({
|
|
|
193
195
|
}, t)
|
|
194
196
|
}) : (
|
|
195
197
|
// 以下是无需 tooltip 渲染的组件,通常是侧边栏没有折叠的时候
|
|
196
|
-
|
|
197
|
-
class:
|
|
198
|
+
u(pe, {}, [R.value ? u("div", {
|
|
199
|
+
class: a.e("title"),
|
|
198
200
|
style: [$.value, {
|
|
199
201
|
backgroundColor: B.value
|
|
200
202
|
}],
|
|
201
203
|
ref: J,
|
|
202
204
|
onClick: O
|
|
203
|
-
}, t) : null,
|
|
204
|
-
default: () => me(
|
|
205
|
+
}, t) : null, u(be, {}, {
|
|
206
|
+
default: () => me(u("ul", {
|
|
205
207
|
role: "menu",
|
|
206
208
|
class: [i.b(), i.m("inline")],
|
|
207
209
|
style: j.value
|
|
208
210
|
}, [V.default?.()]), [[de, c.value]])
|
|
209
211
|
})])
|
|
210
212
|
);
|
|
211
|
-
return
|
|
212
|
-
class: [
|
|
213
|
+
return u("li", {
|
|
214
|
+
class: [a.b(), a.is("active", d.value), a.e(String(r.level)), a.is("in-popup", r.level !== 0), a.is("opened", c.value), a.is("arrow", !0), a.is("disabled", o.disabled)],
|
|
213
215
|
role: "menuitem",
|
|
214
216
|
ariaHaspopup: !0,
|
|
215
217
|
ariaExpanded: c.value,
|
|
216
218
|
onMouseenter: [_, (n) => v(n)],
|
|
217
219
|
onMouseleave: [ee, (n) => T(n, !0)],
|
|
218
220
|
onFocus: v
|
|
219
|
-
}, [
|
|
221
|
+
}, [s]);
|
|
220
222
|
};
|
|
221
223
|
}
|
|
222
224
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { SortableEvent } from 'sortablejs';
|
|
2
2
|
import type { MenuSelectEventData, SideMenuProps } from './types';
|
|
3
3
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<SideMenuProps>, {
|
|
4
4
|
isFixedLeft: boolean;
|
|
@@ -27,7 +27,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
27
27
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
28
28
|
"update:collapse": (val: boolean) => void;
|
|
29
29
|
"update:width": (val: string | number) => void;
|
|
30
|
-
dragEnd: (oldIndex:
|
|
30
|
+
dragEnd: (oldIndex: SortableEvent, newIndex: SortableEvent) => void;
|
|
31
31
|
dragWidthEnd: () => void;
|
|
32
32
|
select: (val: MenuSelectEventData) => void;
|
|
33
33
|
subMenuClick: (val: any) => void;
|
|
@@ -54,7 +54,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
54
54
|
onSelect?: ((val: MenuSelectEventData) => any) | undefined;
|
|
55
55
|
"onUpdate:collapse"?: ((val: boolean) => any) | undefined;
|
|
56
56
|
"onUpdate:width"?: ((val: string | number) => any) | undefined;
|
|
57
|
-
onDragEnd?: ((oldIndex:
|
|
57
|
+
onDragEnd?: ((oldIndex: SortableEvent, newIndex: SortableEvent) => any) | undefined;
|
|
58
58
|
onDragWidthEnd?: (() => any) | undefined;
|
|
59
59
|
onSubMenuClick?: ((val: any) => any) | undefined;
|
|
60
60
|
onSubMenuOpenClick?: ((val: any) => any) | undefined;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { defineComponent as J, toRefs as
|
|
2
|
-
import { listenerRouteChange as
|
|
3
|
-
import { useSortable as
|
|
4
|
-
import { isNullOrUndefined as
|
|
1
|
+
import { defineComponent as J, toRefs as ie, useSlots as de, getCurrentInstance as re, ref as h, computed as b, watch as ce, onMounted as pe, nextTick as fe, createVNode as p, h as y, isVNode as me } from "vue";
|
|
2
|
+
import { listenerRouteChange as ve, useRouterHelper as he } from "@vft/router";
|
|
3
|
+
import { useSortable as ge } from "@vft/use/sortable";
|
|
4
|
+
import { isNullOrUndefined as W, isNumber as j, isUrl as be } from "@vft/utils";
|
|
5
5
|
import "@vueuse/core";
|
|
6
6
|
import { addUnit as q } from "../../utils/helper.js";
|
|
7
7
|
import "lodash-es";
|
|
8
8
|
import "../form/index.js";
|
|
9
|
-
import { VftIcon as
|
|
10
|
-
import { VftMenu as
|
|
11
|
-
import { useNamespace as
|
|
9
|
+
import { VftIcon as ye } from "../icon/index.js";
|
|
10
|
+
import { VftMenu as Me, VftSubMenu as Se, VftMenuItem as E } from "../menu/index.js";
|
|
11
|
+
import { useNamespace as Oe } from "../../hooks/use-namespace/index.js";
|
|
12
12
|
import "../../hooks/use-model-toggle/index.js";
|
|
13
13
|
import "@popperjs/core";
|
|
14
14
|
import "../../hooks/use-z-index/index.js";
|
|
15
15
|
import { useDragLine as Ce } from "./use-drag-line.js";
|
|
16
|
-
function
|
|
17
|
-
return typeof g == "function" || Object.prototype.toString.call(g) === "[object Object]" && !
|
|
16
|
+
function xe(g) {
|
|
17
|
+
return typeof g == "function" || Object.prototype.toString.call(g) === "[object Object]" && !me(g);
|
|
18
18
|
}
|
|
19
|
-
const
|
|
19
|
+
const _e = J({
|
|
20
20
|
name: "vft-side-menu"
|
|
21
|
-
}),
|
|
22
|
-
...
|
|
21
|
+
}), Le = /* @__PURE__ */ J({
|
|
22
|
+
..._e,
|
|
23
23
|
props: {
|
|
24
24
|
isFixedLeft: {
|
|
25
25
|
type: Boolean,
|
|
@@ -98,7 +98,7 @@ const xe = J({
|
|
|
98
98
|
defaultOpeneds: $,
|
|
99
99
|
openMenuCollapse: F,
|
|
100
100
|
defaultOpenedsLevel: M
|
|
101
|
-
} =
|
|
101
|
+
} = ie(t), u = Oe("side-menu"), r = de(), C = re(), x = h(), a = b(() => ({
|
|
102
102
|
path: "path",
|
|
103
103
|
children: "children",
|
|
104
104
|
title: "title",
|
|
@@ -114,7 +114,7 @@ const xe = J({
|
|
|
114
114
|
};
|
|
115
115
|
return n(e), l;
|
|
116
116
|
};
|
|
117
|
-
|
|
117
|
+
ve(({
|
|
118
118
|
route: e
|
|
119
119
|
}) => {
|
|
120
120
|
!e || e.meta?.hideSide && !t.useRouterJump || (x.value = e.path);
|
|
@@ -148,7 +148,7 @@ const xe = J({
|
|
|
148
148
|
const l = e[a.value.path], n = e[a.value.title], s = e?.[a.value.children], i = e?.[a.value.index], v = e?.[a.value.icon], T = !!e?.[a.value.disabled], R = t.disabledJudgeTurnOver ? !T : T, N = i || l || o + n;
|
|
149
149
|
return s?.length ? y(
|
|
150
150
|
// @ts-ignore
|
|
151
|
-
|
|
151
|
+
Se,
|
|
152
152
|
{
|
|
153
153
|
...e,
|
|
154
154
|
popperAppendToBody: !0,
|
|
@@ -160,18 +160,18 @@ const xe = J({
|
|
|
160
160
|
popperClass: u.e("popper")
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
|
-
default: () => s?.map((c,
|
|
164
|
-
const
|
|
165
|
-
return c?.[a.value.children]?.length ? B(c,
|
|
163
|
+
default: () => s?.map((c, oe) => {
|
|
164
|
+
const O = c[a.value.path], I = c[a.value.index], ae = c[a.value.icon], ue = c[a.value.title], V = !!c[a.value.disabled], se = t.disabledJudgeTurnOver ? !V : V;
|
|
165
|
+
return c?.[a.value.children]?.length ? B(c, oe) : (
|
|
166
166
|
// @ts-ignore
|
|
167
167
|
y(E, {
|
|
168
168
|
...c,
|
|
169
|
-
key: I ||
|
|
170
|
-
index: I ||
|
|
171
|
-
route:
|
|
172
|
-
icon:
|
|
173
|
-
title:
|
|
174
|
-
disabled: t.openDisabled &&
|
|
169
|
+
key: I || O,
|
|
170
|
+
index: I || O,
|
|
171
|
+
route: O,
|
|
172
|
+
icon: ae,
|
|
173
|
+
title: ue,
|
|
174
|
+
disabled: t.openDisabled && se
|
|
175
175
|
}, r.menuItem ? () => r.menuItem?.({
|
|
176
176
|
item: c
|
|
177
177
|
}) : "")
|
|
@@ -197,14 +197,14 @@ const xe = J({
|
|
|
197
197
|
width: 0
|
|
198
198
|
} : {},
|
|
199
199
|
height: `calc(100% - ${t.menuTopBottomHeight}px)`
|
|
200
|
-
})), w =
|
|
200
|
+
})), w = C.appContext.config.globalProperties.$router;
|
|
201
201
|
async function X(e) {
|
|
202
202
|
if (t.useRouterJump) {
|
|
203
203
|
const {
|
|
204
204
|
go: o
|
|
205
|
-
} =
|
|
205
|
+
} = he(w), l = e.route;
|
|
206
206
|
let n = e.route;
|
|
207
|
-
e.indexPath.some((i) =>
|
|
207
|
+
e.indexPath.some((i) => be(i)) && (n = e.indexPath.slice(-2).join("/"));
|
|
208
208
|
const s = w.getRoutes().filter((i) => i.path === n)?.[0]?.meta?.linkTarget;
|
|
209
209
|
o(s ? {
|
|
210
210
|
url: l,
|
|
@@ -215,32 +215,34 @@ const xe = J({
|
|
|
215
215
|
}
|
|
216
216
|
d("select", e);
|
|
217
217
|
}
|
|
218
|
-
const S = h(),
|
|
218
|
+
const S = h(), D = h(), k = h(), ee = b(() => ({
|
|
219
219
|
...t.collapseWidth === 0 && f.value ? {
|
|
220
220
|
borderRight: "none"
|
|
221
221
|
} : {},
|
|
222
222
|
width: q(t.width),
|
|
223
223
|
height: t.height
|
|
224
224
|
}));
|
|
225
|
-
|
|
226
|
-
e ? d("update:width", t.collapseWidth) : d("update:width",
|
|
227
|
-
})
|
|
228
|
-
const
|
|
225
|
+
ce(() => f.value, (e) => {
|
|
226
|
+
te.value || (e ? d("update:width", t.collapseWidth) : d("update:width", k.value || t.width), k.value = t.width);
|
|
227
|
+
});
|
|
228
|
+
const {
|
|
229
|
+
isDraging: te
|
|
230
|
+
} = Ce(S, D, C), le = b(() => ({
|
|
229
231
|
left: q(t.width)
|
|
230
|
-
})),
|
|
231
|
-
return
|
|
232
|
-
|
|
232
|
+
})), ne = b(() => [u.b(), t.isFixedLeft ? u.m("fixed") : ""]), A = h([]);
|
|
233
|
+
return pe(() => {
|
|
234
|
+
fe(() => {
|
|
233
235
|
if (t.dragOption?.dragClassName) {
|
|
234
236
|
const e = document.querySelectorAll(`.${u.e(t.dragOption?.dragClassName)}`)?.[0], {
|
|
235
237
|
initSortable: o
|
|
236
|
-
} =
|
|
238
|
+
} = ge(e, {
|
|
237
239
|
draggable: ".vft-menu-item",
|
|
238
240
|
onEnd: (l) => {
|
|
239
241
|
const {
|
|
240
242
|
oldIndex: n,
|
|
241
243
|
newIndex: s
|
|
242
244
|
} = l;
|
|
243
|
-
|
|
245
|
+
W(n) || W(s) || n === s || d("dragEnd", n, s);
|
|
244
246
|
},
|
|
245
247
|
...t.dragOption
|
|
246
248
|
});
|
|
@@ -253,46 +255,46 @@ const xe = J({
|
|
|
253
255
|
menuRef: m
|
|
254
256
|
}), () => {
|
|
255
257
|
let e;
|
|
256
|
-
return M.value && (
|
|
258
|
+
return M.value && (A.value = Z(t.menus, j(M.value) ? M.value : 1 / 0)), p("div", {
|
|
257
259
|
ref: S,
|
|
258
|
-
class:
|
|
260
|
+
class: ne.value,
|
|
259
261
|
style: ee.value
|
|
260
262
|
}, [r.top ? p("div", {
|
|
261
263
|
class: u.e("top")
|
|
262
|
-
}, [r.top()]) : null, y(p(
|
|
264
|
+
}, [r.top()]) : null, y(p(Me, {
|
|
263
265
|
ref: m,
|
|
264
266
|
onSelect: X,
|
|
265
267
|
onOpen: z,
|
|
266
268
|
onSubMenuClick: Y,
|
|
267
269
|
defaultActive: H?.value || x.value,
|
|
268
|
-
defaultOpeneds: $?.value ||
|
|
270
|
+
defaultOpeneds: $?.value || A.value,
|
|
269
271
|
disableSubMenuAction: t.disableSubMenuAction,
|
|
270
272
|
class: [u.e("con"), t.dragOption?.dragClassName ? u.e(t.dragOption?.dragClassName) : ""],
|
|
271
273
|
style: Q.value,
|
|
272
274
|
collapse: F.value ? f.value : !1,
|
|
273
275
|
uniqueOpened: U.value,
|
|
274
276
|
collapseTransition: !1
|
|
275
|
-
},
|
|
277
|
+
}, xe(e = t.menus.map((o, l) => B(o, l))) ? e : {
|
|
276
278
|
default: () => [e]
|
|
277
279
|
})), r.bottom ? p("div", {
|
|
278
280
|
class: u.e("bottom")
|
|
279
281
|
}, [r.bottom()]) : t.showCollapse ? p("div", {
|
|
280
282
|
onClick: () => d("update:collapse", !f.value),
|
|
281
283
|
class: [u.e("bottom"), u.e("collapse")]
|
|
282
|
-
}, [p(
|
|
284
|
+
}, [p(ye, {
|
|
283
285
|
style: {
|
|
284
286
|
transform: f.value ? "rotateY(180deg)" : ""
|
|
285
287
|
},
|
|
286
288
|
size: 20,
|
|
287
289
|
icon: "icon-sidebar-collapse"
|
|
288
290
|
}, null)]) : null, r.default?.(), t.dragWidthCfg ? p("div", {
|
|
289
|
-
ref:
|
|
290
|
-
style:
|
|
291
|
+
ref: D,
|
|
292
|
+
style: le.value,
|
|
291
293
|
class: u.e("drag-bar")
|
|
292
294
|
}, null) : null]);
|
|
293
295
|
};
|
|
294
296
|
}
|
|
295
297
|
});
|
|
296
298
|
export {
|
|
297
|
-
|
|
299
|
+
Le as default
|
|
298
300
|
};
|
|
@@ -1,42 +1,53 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import "@vueuse/core";
|
|
2
|
+
import "@vft/utils";
|
|
3
|
+
import "../config-provider/hooks/use-global-config.js";
|
|
4
|
+
import { ref as x, onMounted as v, nextTick as d, unref as r } from "vue";
|
|
5
|
+
import "lodash-es";
|
|
6
|
+
import "../form/index.js";
|
|
7
|
+
import { useDebounceFn as w, useThrottleFn as T } from "@vft/use";
|
|
8
|
+
function k(p, c, n) {
|
|
9
|
+
const i = x(!1), l = n.props?.dragWidthCfg?.minWidth || 200;
|
|
10
|
+
v(() => {
|
|
11
|
+
n.props?.dragWidthCfg && d(() => {
|
|
12
|
+
w(g, 100)();
|
|
8
13
|
});
|
|
9
14
|
});
|
|
10
|
-
function
|
|
11
|
-
const
|
|
12
|
-
return
|
|
15
|
+
function f(t) {
|
|
16
|
+
const o = r(t);
|
|
17
|
+
return o ? Reflect.has(o, "$el") ? r(t)?.$el : r(t) : null;
|
|
13
18
|
}
|
|
14
|
-
function
|
|
15
|
-
document.onmousemove = function(
|
|
16
|
-
let
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
return
|
|
20
|
-
|
|
19
|
+
function a(t, o, s) {
|
|
20
|
+
document.onmousemove = function(u) {
|
|
21
|
+
let e = t.left + (u.clientX - s);
|
|
22
|
+
u = u || window.event;
|
|
23
|
+
const m = n.props?.dragWidthCfg?.maxWidth || 800, W = r(l);
|
|
24
|
+
return e <= W ? void 0 : (e < 0 && (e = 0), e > m && (e = m), t.style.left = e + "px", T(() => {
|
|
25
|
+
n.emit("update:width", e + "px");
|
|
21
26
|
}, 150)(), !1);
|
|
22
27
|
};
|
|
23
28
|
}
|
|
24
|
-
function
|
|
29
|
+
function h(t) {
|
|
25
30
|
document.onmouseup = function() {
|
|
26
|
-
document.onmousemove = null, document.onmouseup = null,
|
|
31
|
+
document.onmousemove = null, document.onmouseup = null, i.value = !0, d(() => {
|
|
32
|
+
n.emit("dragWidthEnd"), setTimeout(() => {
|
|
33
|
+
i.value = !1;
|
|
34
|
+
}, 1e3);
|
|
35
|
+
}), t.releaseCapture?.();
|
|
27
36
|
};
|
|
28
37
|
}
|
|
29
|
-
function
|
|
30
|
-
const
|
|
31
|
-
if (!
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
return
|
|
38
|
+
function g() {
|
|
39
|
+
const t = f(c);
|
|
40
|
+
if (!t) return;
|
|
41
|
+
const o = f(p);
|
|
42
|
+
o && (t.onmousedown = (s) => {
|
|
43
|
+
const u = s?.clientX;
|
|
44
|
+
return t.left = t.offsetLeft, a(t, o, u), h(t), t.setCapture?.(), !1;
|
|
36
45
|
});
|
|
37
46
|
}
|
|
38
|
-
return {
|
|
47
|
+
return {
|
|
48
|
+
isDraging: i
|
|
49
|
+
};
|
|
39
50
|
}
|
|
40
51
|
export {
|
|
41
|
-
|
|
52
|
+
k as useDragLine
|
|
42
53
|
};
|
package/es/package.json.d.ts
CHANGED
package/es/package.json.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),m=require("@vft/utils"),ee=require("../tooltip/index.cjs"),V=require("../icon/index.cjs"),te=require("../collapse-transition/index.cjs"),N=require("@vueuse/core"),R=require("../../utils/error.cjs");require("../config-provider/hooks/use-global-config.cjs");require("lodash-es");require("../form/index.cjs");const x=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const oe=require("./use-menu.cjs"),ne=require("./use-menu-css-var.cjs"),ue=e.defineComponent({name:"vft-sub-menu",inheritAttrs:!1}),le=e.defineComponent({...ue,props:{index:{},showTimeout:{default:300},hideTimeout:{default:300},popperClass:{},disabled:{type:Boolean},popperOffset:{default:6},expandIcon:{},collapseIcon:{},title:{},icon:{},showArrow:{type:Boolean,default:!0},toolTipCfg:{},teleported:{type:Boolean,default:void 0}},emits:["mouseenter","mouseleave"],setup(o,{expose:D,emit:L}){const S=L,w=x.useNamespace("sub-menu"),d=e.getCurrentInstance(),{indexPath:f,parentMenu:q}=oe.default(d,e.computed(()=>o.index)),a=x.useNamespace("menu"),l=x.useNamespace("sub-menu"),t=e.inject("rootMenu");t||R.throwError(w.b(),"can not inject root menu");const r=e.inject(`subMenu:${q.value.uid}`);r||R.throwError(w.b(),"can not inject sub menu");const C=e.ref({});let M;const y=e.ref(!1),H=e.ref(),I=e.ref(null),k=e.computed(()=>c.value==="horizontal"&&b.value?"bottom-start":"right-start"),b=e.computed(()=>r.level===0),g=e.computed(()=>o.teleported===void 0?b.value:o.teleported),U=e.computed(()=>t.props.collapse?`${a.namespace.value}-zoom-in-left`:`${a.namespace.value}-zoom-in-top`),Z=e.computed(()=>c.value==="horizontal"&&b.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),i=e.computed(()=>t.openedMenus.includes(o.index)),p=e.computed(()=>{let n=!1;return Object.values(C.value).forEach(s=>{s.active&&(n=!0)}),o.index===t.activeIndex&&(n=!0),n}),z=e.computed(()=>t.props.backgroundColor||""),E=e.computed(()=>t.props.activeTextColor||""),A=e.computed(()=>t.props.textColor||""),c=e.computed(()=>t.props.mode),G=e.computed(()=>t.props.persistent),h=e.reactive({index:o.index,indexPath:f,active:p}),j=ne.useMenuCssVar(t.props,r.level+1),P=e.computed(()=>c.value!=="horizontal"?{color:A.value}:{borderBottomColor:p.value?t.props.activeTextColor?E.value:"":"transparent",color:p.value?E.value:A.value}),J=()=>I.value?.popperRef?.popperInstanceRef?.destroy(),K=n=>{n||J()},$=n=>{const s={e:n,index:o.index,indexPath:f.value,active:p.value};if(t.props.menuTrigger==="hover"&&t.props.mode==="horizontal"&&!m.isMobile()||t.props.collapse&&t.props.mode==="vertical"||o.disabled){t.handleSubMenuClick({...s,isFirstLevel:!0});return}t.handleSubMenuClick(s)},v=(n,s=o.showTimeout)=>{n.type!=="focus"&&(t.props.menuTrigger==="click"&&t.props.mode==="horizontal"||!t.props.collapse&&t.props.mode==="vertical"||o.disabled||(r.mouseInChild.value=!0,M?.(),{stop:M}=N.useTimeoutFn(()=>{t.openMenu(o.index,f.value)},s),g.value&&q.value.vnode.el?.dispatchEvent(new MouseEvent("mouseenter")),S("mouseenter",n)))},Q=()=>{t.inSubMenuMouseEnterTimer&&clearTimeout(t.inSubMenuMouseEnterTimer),t.inSubMenuMouseleaveTimer&&clearTimeout(t.inSubMenuMouseleaveTimer),t.inSubMenuMouseEnterTimer=setTimeout(()=>{t.inSubMenu=!0},o.showTimeout+10)},W=()=>{t.inSubMenuMouseEnterTimer&&clearTimeout(t.inSubMenuMouseEnterTimer),t.inSubMenuMouseleaveTimer&&clearTimeout(t.inSubMenuMouseleaveTimer),t.inSubMenuMouseleaveTimer=setTimeout(()=>{t.inSubMenu=!1},o.hideTimeout-10)},T=(n,s=!1)=>{t.props.menuTrigger==="click"&&t.props.mode==="horizontal"||!t.props.collapse&&t.props.mode==="vertical"||(M?.(),r.mouseInChild.value=!1,{stop:M}=N.useTimeoutFn(()=>{!y.value&&t.closeMenu(o.index,f.value)},o.hideTimeout),g.value&&s&&d.parent?.type.name==="vft-sub-menu"&&r.handleMouseleave?.(n,!0),S("mouseleave",n))};e.watch(()=>t.props.collapse,n=>K(!!n));{const n=u=>{C.value[u.index]=u},s=u=>{delete C.value[u.index]};e.provide(`subMenu:${d.uid}`,{addSubMenu:n,removeSubMenu:s,handleMouseleave:T,mouseInChild:y,level:r.level+1})}D({opened:i}),e.onMounted(()=>{t.addSubMenu(h),r.addSubMenu(h)}),e.onBeforeUnmount(()=>{r.removeSubMenu(h),t.removeSubMenu(h)});const B=e.useSlots(),F=e.computed(()=>m.singleAttrToObj(o.icon,"icon")),X=e.computed(()=>m.singleAttrToObj(o.expandIcon,"icon")),Y=e.computed(()=>m.singleAttrToObj(o.collapseIcon,"icon")),_=e.computed(()=>c.value==="horizontal"&&b.value||c.value==="vertical"&&!t.props.collapse?{icon:"icon-arrow-down",size:20,...X.value}:{icon:"icon-arrow-right",size:18,...Y.value}),O=e.computed(()=>m.renderTNode(d,"title"));return()=>{const n=[F.value?.icon?e.h(V.VftIcon,{...F.value}):null,e.h("span",{class:[l.e("text"),l.is("arrow",o.showArrow)],title:d.props.title},O.value),o.showArrow?e.h(V.VftIcon,{class:l.e("icon-arrow"),..._.value,style:{transform:i.value?"rotateZ(180deg)":"none"}}):!1],s=t.isMenuPopup?e.h(ee.VftTooltip,{ref:I,visible:i.value,effect:"light",pure:!0,offset:o.popperOffset,showArrow:!1,persistent:G.value,popperClass:o.popperClass,placement:k.value,teleported:g.value,fallbackPlacements:Z.value,transition:U.value,gpuAcceleration:!1,...o.toolTipCfg},{content:()=>e.h("div",{class:[a.m(c.value),a.m("popup-container"),o.popperClass],onMouseenter:u=>v(u,100),onMouseleave:u=>T(u,!0),onFocus:u=>v(u,100)},[e.h("
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),m=require("@vft/utils"),ee=require("../tooltip/index.cjs"),V=require("../icon/index.cjs"),te=require("../collapse-transition/index.cjs"),N=require("@vueuse/core"),R=require("../../utils/error.cjs");require("../config-provider/hooks/use-global-config.cjs");require("lodash-es");require("../form/index.cjs");const x=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const oe=require("./use-menu.cjs"),ne=require("./use-menu-css-var.cjs"),ue=e.defineComponent({name:"vft-sub-menu",inheritAttrs:!1}),le=e.defineComponent({...ue,props:{index:{},showTimeout:{default:300},hideTimeout:{default:300},popperClass:{},disabled:{type:Boolean},popperOffset:{default:6},expandIcon:{},collapseIcon:{},title:{},icon:{},showArrow:{type:Boolean,default:!0},toolTipCfg:{},teleported:{type:Boolean,default:void 0}},emits:["mouseenter","mouseleave"],setup(o,{expose:D,emit:L}){const S=L,w=x.useNamespace("sub-menu"),d=e.getCurrentInstance(),{indexPath:f,parentMenu:q}=oe.default(d,e.computed(()=>o.index)),a=x.useNamespace("menu"),l=x.useNamespace("sub-menu"),t=e.inject("rootMenu");t||R.throwError(w.b(),"can not inject root menu");const r=e.inject(`subMenu:${q.value.uid}`);r||R.throwError(w.b(),"can not inject sub menu");const C=e.ref({});let M;const y=e.ref(!1),H=e.ref(),I=e.ref(null),k=e.computed(()=>c.value==="horizontal"&&b.value?"bottom-start":"right-start"),b=e.computed(()=>r.level===0),g=e.computed(()=>o.teleported===void 0?b.value:o.teleported),U=e.computed(()=>t.props.collapse?`${a.namespace.value}-zoom-in-left`:`${a.namespace.value}-zoom-in-top`),Z=e.computed(()=>c.value==="horizontal"&&b.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),i=e.computed(()=>t.openedMenus.includes(o.index)),p=e.computed(()=>{let n=!1;return Object.values(C.value).forEach(s=>{s.active&&(n=!0)}),o.index===t.activeIndex&&(n=!0),n}),z=e.computed(()=>t.props.backgroundColor||""),E=e.computed(()=>t.props.activeTextColor||""),A=e.computed(()=>t.props.textColor||""),c=e.computed(()=>t.props.mode),G=e.computed(()=>t.props.persistent),h=e.reactive({index:o.index,indexPath:f,active:p}),j=ne.useMenuCssVar(t.props,r.level+1),P=e.computed(()=>c.value!=="horizontal"?{color:A.value}:{borderBottomColor:p.value?t.props.activeTextColor?E.value:"":"transparent",color:p.value?E.value:A.value}),J=()=>I.value?.popperRef?.popperInstanceRef?.destroy(),K=n=>{n||J()},$=n=>{const s={e:n,index:o.index,indexPath:f.value,active:p.value};if(t.props.menuTrigger==="hover"&&t.props.mode==="horizontal"&&!m.isMobile()||t.props.collapse&&t.props.mode==="vertical"||o.disabled){t.handleSubMenuClick({...s,isFirstLevel:!0});return}t.handleSubMenuClick(s)},v=(n,s=o.showTimeout)=>{n.type!=="focus"&&(t.props.menuTrigger==="click"&&t.props.mode==="horizontal"||!t.props.collapse&&t.props.mode==="vertical"||o.disabled||(r.mouseInChild.value=!0,M?.(),{stop:M}=N.useTimeoutFn(()=>{t.openMenu(o.index,f.value)},s),g.value&&q.value.vnode.el?.dispatchEvent(new MouseEvent("mouseenter")),S("mouseenter",n)))},Q=()=>{t.inSubMenuMouseEnterTimer&&clearTimeout(t.inSubMenuMouseEnterTimer),t.inSubMenuMouseleaveTimer&&clearTimeout(t.inSubMenuMouseleaveTimer),t.inSubMenuMouseEnterTimer=setTimeout(()=>{t.inSubMenu=!0},o.showTimeout+10)},W=()=>{t.inSubMenuMouseEnterTimer&&clearTimeout(t.inSubMenuMouseEnterTimer),t.inSubMenuMouseleaveTimer&&clearTimeout(t.inSubMenuMouseleaveTimer),t.inSubMenuMouseleaveTimer=setTimeout(()=>{t.inSubMenu=!1},o.hideTimeout-10)},T=(n,s=!1)=>{t.props.menuTrigger==="click"&&t.props.mode==="horizontal"||!t.props.collapse&&t.props.mode==="vertical"||(M?.(),r.mouseInChild.value=!1,{stop:M}=N.useTimeoutFn(()=>{!y.value&&t.closeMenu(o.index,f.value)},o.hideTimeout),g.value&&s&&d.parent?.type.name==="vft-sub-menu"&&r.handleMouseleave?.(n,!0),S("mouseleave",n))};e.watch(()=>t.props.collapse,n=>K(!!n));{const n=u=>{C.value[u.index]=u},s=u=>{delete C.value[u.index]};e.provide(`subMenu:${d.uid}`,{addSubMenu:n,removeSubMenu:s,handleMouseleave:T,mouseInChild:y,level:r.level+1})}D({opened:i}),e.onMounted(()=>{t.addSubMenu(h),r.addSubMenu(h)}),e.onBeforeUnmount(()=>{r.removeSubMenu(h),t.removeSubMenu(h)});const B=e.useSlots(),F=e.computed(()=>m.singleAttrToObj(o.icon,"icon")),X=e.computed(()=>m.singleAttrToObj(o.expandIcon,"icon")),Y=e.computed(()=>m.singleAttrToObj(o.collapseIcon,"icon")),_=e.computed(()=>c.value==="horizontal"&&b.value||c.value==="vertical"&&!t.props.collapse?{icon:"icon-arrow-down",size:20,...X.value}:{icon:"icon-arrow-right",size:18,...Y.value}),O=e.computed(()=>m.renderTNode(d,"title"));return()=>{const n=[F.value?.icon?e.h(V.VftIcon,{...F.value}):null,e.h("span",{class:[l.e("text"),l.is("arrow",o.showArrow)],title:d.props.title},O.value),o.showArrow?e.h(V.VftIcon,{class:l.e("icon-arrow"),..._.value,style:{transform:i.value?"rotateZ(180deg)":"none"}}):!1],s=t.isMenuPopup?e.h(ee.VftTooltip,{ref:I,visible:i.value,effect:"light",pure:!0,offset:o.popperOffset,showArrow:!1,persistent:G.value,popperClass:o.popperClass,placement:k.value,teleported:g.value,fallbackPlacements:Z.value,transition:U.value,gpuAcceleration:!1,...o.toolTipCfg},{content:()=>e.h("div",{class:[a.m(c.value),a.m("popup-container"),o.popperClass],onMouseenter:u=>v(u,100),onMouseleave:u=>T(u,!0),onFocus:u=>v(u,100)},[e.h("div",{class:[a.b(),a.m("popup"),a.m(`popup-${k.value}`)],style:j.value},[e.h("ul",{class:a.m("popup-ul-list")},B.default?.())])]),default:()=>e.h("div",{class:l.e("title"),style:[P.value,{backgroundColor:z.value}],onMouseenter:u=>v(u),onMouseleave:u=>T(u,!0),onClick:u=>$(u)},n)}):e.h(e.Fragment,{},[O.value?e.h("div",{class:l.e("title"),style:[P.value,{backgroundColor:z.value}],ref:H,onClick:$},n):null,e.h(te.VftCollapseTransition,{},{default:()=>e.withDirectives(e.h("ul",{role:"menu",class:[a.b(),a.m("inline")],style:j.value},[B.default?.()]),[[e.vShow,i.value]])})]);return e.h("li",{class:[l.b(),l.is("active",p.value),l.e(String(r.level)),l.is("in-popup",r.level!==0),l.is("opened",i.value),l.is("arrow",!0),l.is("disabled",o.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:i.value,onMouseenter:[Q,u=>v(u)],onMouseleave:[W,u=>T(u,!0)],onFocus:v},[s])}}});exports.default=le;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { SortableEvent } from 'sortablejs';
|
|
2
2
|
import type { MenuSelectEventData, SideMenuProps } from './types';
|
|
3
3
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<SideMenuProps>, {
|
|
4
4
|
isFixedLeft: boolean;
|
|
@@ -27,7 +27,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
27
27
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
28
28
|
"update:collapse": (val: boolean) => void;
|
|
29
29
|
"update:width": (val: string | number) => void;
|
|
30
|
-
dragEnd: (oldIndex:
|
|
30
|
+
dragEnd: (oldIndex: SortableEvent, newIndex: SortableEvent) => void;
|
|
31
31
|
dragWidthEnd: () => void;
|
|
32
32
|
select: (val: MenuSelectEventData) => void;
|
|
33
33
|
subMenuClick: (val: any) => void;
|
|
@@ -54,7 +54,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
54
54
|
onSelect?: ((val: MenuSelectEventData) => any) | undefined;
|
|
55
55
|
"onUpdate:collapse"?: ((val: boolean) => any) | undefined;
|
|
56
56
|
"onUpdate:width"?: ((val: string | number) => any) | undefined;
|
|
57
|
-
onDragEnd?: ((oldIndex:
|
|
57
|
+
onDragEnd?: ((oldIndex: SortableEvent, newIndex: SortableEvent) => any) | undefined;
|
|
58
58
|
onDragWidthEnd?: (() => any) | undefined;
|
|
59
59
|
onSubMenuClick?: ((val: any) => any) | undefined;
|
|
60
60
|
onSubMenuOpenClick?: ((val: any) => any) | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),R=require("@vft/router"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),R=require("@vft/router"),oe=require("@vft/use/sortable"),g=require("@vft/utils");require("@vueuse/core");const I=require("../../utils/helper.cjs");require("lodash-es");require("../form/index.cjs");const ue=require("../icon/index.cjs"),b=require("../menu/index.cjs"),ae=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const se=require("./use-drag-line.cjs");function ie(h){return typeof h=="function"||Object.prototype.toString.call(h)==="[object Object]"&&!n.isVNode(h)}const de=n.defineComponent({name:"vft-side-menu"}),re=n.defineComponent({...de,props:{isFixedLeft:{type:Boolean,default:!1},menus:{},width:{default:200},height:{default:"100%"},collapseWidth:{default:50},attrMapping:{},menuTopBottomHeight:{default:0},showCollapse:{type:Boolean,default:!1},dragOption:{},dragWidthCfg:{type:[Boolean,Object],default:!1},useRouterJump:{type:Boolean,default:!1},openDisabled:{type:Boolean},autoScrollActiveDom:{type:[Boolean,Number],default:!0},openMenuCollapse:{type:Boolean,default:!0},collapse:{type:Boolean,default:!1},uniqueOpened:{type:Boolean,default:!0},disabledJudgeTurnOver:{type:Boolean,default:!1},defaultActive:{},defaultOpeneds:{},defaultOpenedsLevel:{type:[Number,Boolean],default:!1},disableSubMenuAction:{type:Boolean,default:!1}},emits:["update:collapse","update:width","dragEnd","dragWidthEnd","select","subMenuClick","subMenuOpenClick","menuItemMouseenter","menuItemMouseleave"],setup(h,{expose:W,emit:j}){const t=h,r=j,{defaultActive:L,collapse:f,uniqueOpened:E,defaultOpeneds:J,openMenuCollapse:P,defaultOpenedsLevel:y}=n.toRefs(t),s=ae.useNamespace("side-menu"),c=n.useSlots(),O=n.getCurrentInstance(),C=n.ref(),a=n.computed(()=>({path:"path",children:"children",title:"title",index:"path",icon:"icon",disabled:"disabled",...t.attrMapping})),U=(e,u=1/0)=>{const l=[],o=(i,d=0)=>{d>=u||i.forEach(m=>{m[a.value.children]?.length&&(l.push(m[a.value.index]),o(m[a.value.children],d+1))})};return o(e),l};R.listenerRouteChange(({route:e})=>{!e||e.meta?.hideSide&&!t.useRouterJump||(C.value=e.path)});const $=e=>{const u=e.e;if(t.autoScrollActiveDom&&u){const l=g.isNumber(t.autoScrollActiveDom)?t.autoScrollActiveDom:0,o=u.target;x({activeDom:o,offset:l})}r("subMenuOpenClick",e)},H=e=>{r("subMenuClick",e)},x=({activeDom:e=null,offset:u=0,delay:l=300}={})=>{v.value?.menu&&setTimeout(()=>{const o=e||document.querySelector(".vft-menu-item.is-active")||document.querySelector(".vft-sub-menu.is-active");o&&(v.value.menu.scrollTop=v.value.menu.scrollTop+(o.getBoundingClientRect().top-v.value.menu.getBoundingClientRect().top)+u)},l)},F=e=>{r("menuItemMouseenter",e)},Z=e=>{r("menuItemMouseleave",e)},_=(e,u)=>{const l=e[a.value.path],o=e[a.value.title],i=e?.[a.value.children],d=e?.[a.value.index],m=e?.[a.value.icon],D=!!e?.[a.value.disabled],T=t.disabledJudgeTurnOver?!D:D,k=d||l||u+o;return i?.length?n.h(b.VftSubMenu,{...e,popperAppendToBody:!0,key:k,index:k,title:o,icon:m,disabled:t.openDisabled&&T,popperClass:s.e("popper")},{default:()=>i?.map((p,ee)=>{const S=p[a.value.path],A=p[a.value.index],te=p[a.value.icon],ne=p[a.value.title],V=!!p[a.value.disabled],le=t.disabledJudgeTurnOver?!V:V;return p?.[a.value.children]?.length?_(p,ee):n.h(b.VftMenuItem,{...p,key:A||S,index:A||S,route:S,icon:te,title:ne,disabled:t.openDisabled&&le},c.menuItem?()=>c.menuItem?.({item:p}):"")})}):n.h(b.VftMenuItem,{...e,key:d||l,index:d||l,title:o,route:l,icon:m,disabled:t.openDisabled&&T,onMouseenter:()=>F(e),onMouseleave:()=>Z(e)},c.menuItem?()=>c.menuItem?.({item:e,index:u}):"")},v=n.ref(),z=n.computed(()=>({...t.collapseWidth===0&&f.value?{width:0}:{},height:`calc(100% - ${t.menuTopBottomHeight}px)`})),q=O.appContext.config.globalProperties.$router;async function Y(e){if(t.useRouterJump){const{go:u}=R.useRouterHelper(q),l=e.route;let o=e.route;e.indexPath.some(d=>g.isUrl(d))&&(o=e.indexPath.slice(-2).join("/"));const i=q.getRoutes().filter(d=>d.path===o)?.[0]?.meta?.linkTarget;u(i?{url:l,winOpenOpt:{target:i}}:l)}r("select",e)}const M=n.ref(),N=n.ref(),B=n.ref(),G=n.computed(()=>({...t.collapseWidth===0&&f.value?{borderRight:"none"}:{},width:I.addUnit(t.width),height:t.height}));n.watch(()=>f.value,e=>{K.value||(e?r("update:width",t.collapseWidth):r("update:width",B.value||t.width),B.value=t.width)});const{isDraging:K}=se.useDragLine(M,N,O),Q=n.computed(()=>({left:I.addUnit(t.width)})),X=n.computed(()=>[s.b(),t.isFixedLeft?s.m("fixed"):""]),w=n.ref([]);return n.onMounted(()=>{n.nextTick(()=>{if(t.dragOption?.dragClassName){const e=document.querySelectorAll(`.${s.e(t.dragOption?.dragClassName)}`)?.[0],{initSortable:u}=oe.useSortable(e,{draggable:".vft-menu-item",onEnd:l=>{const{oldIndex:o,newIndex:i}=l;g.isNullOrUndefined(o)||g.isNullOrUndefined(i)||o===i||r("dragEnd",o,i)},...t.dragOption});u()}})}),W({sideRef:M,jumpActiveDom:x,menuRef:v}),()=>{let e;return y.value&&(w.value=U(t.menus,g.isNumber(y.value)?y.value:1/0)),n.createVNode("div",{ref:M,class:X.value,style:G.value},[c.top?n.createVNode("div",{class:s.e("top")},[c.top()]):null,n.h(n.createVNode(b.VftMenu,{ref:v,onSelect:Y,onOpen:$,onSubMenuClick:H,defaultActive:L?.value||C.value,defaultOpeneds:J?.value||w.value,disableSubMenuAction:t.disableSubMenuAction,class:[s.e("con"),t.dragOption?.dragClassName?s.e(t.dragOption?.dragClassName):""],style:z.value,collapse:P.value?f.value:!1,uniqueOpened:E.value,collapseTransition:!1},ie(e=t.menus.map((u,l)=>_(u,l)))?e:{default:()=>[e]})),c.bottom?n.createVNode("div",{class:s.e("bottom")},[c.bottom()]):t.showCollapse?n.createVNode("div",{onClick:()=>r("update:collapse",!f.value),class:[s.e("bottom"),s.e("collapse")]},[n.createVNode(ue.VftIcon,{style:{transform:f.value?"rotateY(180deg)":""},size:20,icon:"icon-sidebar-collapse"},null)]):null,c.default?.(),t.dragWidthCfg?n.createVNode("div",{ref:N,style:Q.value,class:s.e("drag-bar")},null):null])}}});exports.default=re;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("@vueuse/core");require("@vft/utils");require("../config-provider/hooks/use-global-config.cjs");const t=require("vue");require("lodash-es");require("../form/index.cjs");const d=require("@vft/use");function v(l,a,r){const i=t.ref(!1),m=r.props?.dragWidthCfg?.minWidth||200;t.onMounted(()=>{r.props?.dragWidthCfg&&t.nextTick(()=>{d.useDebounceFn(h,100)()})});function c(e){const n=t.unref(e);return n?Reflect.has(n,"$el")?t.unref(e)?.$el:t.unref(e):null}function p(e,n,s){document.onmousemove=function(o){let u=e.left+(o.clientX-s);o=o||window.event;const f=r.props?.dragWidthCfg?.maxWidth||800,W=t.unref(m);return u<=W?void 0:(u<0&&(u=0),u>f&&(u=f),e.style.left=u+"px",d.useThrottleFn(()=>{r.emit("update:width",u+"px")},150)(),!1)}}function g(e){document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,i.value=!0,t.nextTick(()=>{r.emit("dragWidthEnd"),setTimeout(()=>{i.value=!1},1e3)}),e.releaseCapture?.()}}function h(){const e=c(a);if(!e)return;const n=c(l);n&&(e.onmousedown=s=>{const o=s?.clientX;return e.left=e.offsetLeft,p(e,n,o),g(e),e.setCapture?.(),!1})}return{isDraging:i}}exports.useDragLine=v;
|
package/lib/package.json.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.431";exports.version=e;
|