lkt-menu 1.0.8 → 1.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/dist/build.d.ts +4 -4
- package/dist/build.js +76 -77
- package/package.json +1 -1
- package/src/components/MenuItem.vue +5 -8
package/dist/build.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ declare class x {
|
|
|
17
17
|
setIcon(t: any): this;
|
|
18
18
|
doClose(): void;
|
|
19
19
|
}
|
|
20
|
-
declare function
|
|
20
|
+
declare function he(n: any, t: any, s: any): {
|
|
21
21
|
key: any;
|
|
22
22
|
href: any;
|
|
23
23
|
label: any;
|
|
@@ -35,8 +35,8 @@ declare function pe(n: any, t: any, s: any): {
|
|
|
35
35
|
setIcon: (t: any) => x;
|
|
36
36
|
doClose: () => void;
|
|
37
37
|
};
|
|
38
|
-
declare namespace
|
|
38
|
+
declare namespace ve {
|
|
39
39
|
function install(n: any): void;
|
|
40
40
|
}
|
|
41
|
-
declare function
|
|
42
|
-
export { x as MenuEntry,
|
|
41
|
+
declare function me(n: any): boolean;
|
|
42
|
+
export { x as MenuEntry, he as createMenuEntry, ve as default, me as setMenuToggleSlot };
|
package/dist/build.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent as K, ref as
|
|
2
|
-
import { __ as
|
|
3
|
-
import { useRouter as
|
|
1
|
+
import { defineComponent as K, ref as M, useSlots as N, computed as r, watch as C, onMounted as G, resolveComponent as B, openBlock as u, createElementBlock as a, normalizeClass as g, createElementVNode as V, createVNode as H, withCtx as $, unref as J, renderSlot as L, createCommentVNode as m, toDisplayString as P, createBlock as w, resolveDynamicComponent as Q, Fragment as T, renderList as b, createSlots as W, reactive as X } from "vue";
|
|
2
|
+
import { __ as Y } from "lkt-i18n";
|
|
3
|
+
import { useRouter as Z } from "vue-router";
|
|
4
4
|
class x {
|
|
5
5
|
constructor(t, s, d) {
|
|
6
6
|
this.key = "", this.href = "", this.label = "", this.icon = "", this.onClick = void 0, this.isActiveChecker = void 0, this.isOpened = !1, this.isActive = !1, this.parent = void 0, this.children = [], this.key = t, this.href = s, this.label = d;
|
|
@@ -27,142 +27,141 @@ class x {
|
|
|
27
27
|
this.isOpened = !1;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
const
|
|
31
|
-
n.includes(s.key) || n.push(s.key), s.children.length > 0 &&
|
|
30
|
+
const R = (n, t) => (t.forEach((s) => {
|
|
31
|
+
n.includes(s.key) || n.push(s.key), s.children.length > 0 && R(n, s.children);
|
|
32
32
|
}), n), A = class A {
|
|
33
33
|
};
|
|
34
34
|
A.toggleSlot = "", A.debugEnabled = !1;
|
|
35
35
|
let k = A;
|
|
36
|
-
const
|
|
36
|
+
const ee = { class: "lkt-menu-entry-main" }, te = { class: "lkt-entry-content" }, le = {
|
|
37
37
|
key: 0,
|
|
38
38
|
class: "lkt-menu-entry-icon"
|
|
39
|
-
},
|
|
39
|
+
}, ne = {
|
|
40
40
|
key: 1,
|
|
41
41
|
class: "lkt-menu-entry-text"
|
|
42
|
-
},
|
|
42
|
+
}, se = {
|
|
43
|
+
key: 0,
|
|
44
|
+
class: "lkt-menu-entry-children"
|
|
45
|
+
}, ue = /* @__PURE__ */ K({
|
|
43
46
|
__name: "MenuItem",
|
|
44
47
|
props: {
|
|
45
48
|
modelValue: { default: () => new x("", "", "") }
|
|
46
49
|
},
|
|
47
50
|
emits: ["update:modelValue"],
|
|
48
51
|
setup(n, { emit: t }) {
|
|
49
|
-
const s = t, d = n, e =
|
|
52
|
+
const s = t, d = n, e = M(d.modelValue), o = N(), O = Z(), p = M(!1), f = () => {
|
|
50
53
|
e.value.isOpened = !e.value.isOpened;
|
|
51
54
|
}, i = () => (e.value.children.length > 0 && f(), typeof e.value.onClick == "function" && e.value.onClick({
|
|
52
55
|
entry: e.value
|
|
53
|
-
}), 1), v =
|
|
56
|
+
}), 1), v = r(() => o["icon-" + e.value.key] || e.value.icon !== ""), S = r(() => {
|
|
54
57
|
let l = [];
|
|
55
58
|
return v.value && l.push("has-icon"), p.value && l.push("is-active"), l.join(" ");
|
|
56
|
-
}), y =
|
|
59
|
+
}), y = r(() => R([], e.value.children)), h = r(() => {
|
|
57
60
|
let l = [];
|
|
58
|
-
for (let
|
|
59
|
-
|
|
61
|
+
for (let c in o)
|
|
62
|
+
c.startsWith("icon-") && y.value.includes(c.substring(5)) && l.push(c);
|
|
60
63
|
return l;
|
|
61
|
-
}),
|
|
64
|
+
}), D = r(() => e.value.label.startsWith("__:") ? Y(e.value.label.substring(3)) : e.value.label), j = r(() => e.value.isActive ? !0 : typeof e.value.isActiveChecker == "function" ? !!e.value.isActiveChecker({
|
|
62
65
|
entry: e.value
|
|
63
|
-
}) : !1),
|
|
64
|
-
|
|
66
|
+
}) : !1), z = r(() => !!k.toggleSlot), F = r(() => k.toggleSlot);
|
|
67
|
+
return C(() => d.modelValue, (l) => {
|
|
65
68
|
e.value = l;
|
|
66
|
-
}, { deep: !0 }),
|
|
69
|
+
}, { deep: !0 }), C(e, (l) => {
|
|
67
70
|
s("update:modelValue", l);
|
|
68
|
-
}, { deep: !0 }),
|
|
69
|
-
let l =
|
|
71
|
+
}, { deep: !0 }), G(() => {
|
|
72
|
+
let l = O.currentRoute;
|
|
70
73
|
if (l.value.path === e.value.href)
|
|
71
74
|
e.value.isOpened = !0;
|
|
72
75
|
else if (e.value.children.length > 0) {
|
|
73
|
-
let
|
|
74
|
-
e.value.children.forEach((
|
|
75
|
-
l.value.path ===
|
|
76
|
-
}),
|
|
76
|
+
let c = !1;
|
|
77
|
+
e.value.children.forEach((E) => {
|
|
78
|
+
l.value.path === E.href && (c = !0);
|
|
79
|
+
}), c && (e.value.isOpened = !0);
|
|
77
80
|
}
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
return u(), c("div", {
|
|
83
|
-
class: _(["lkt-menu-entry", O.value])
|
|
81
|
+
}), (l, c) => {
|
|
82
|
+
const E = B("lkt-anchor"), q = B("menu-item", !0);
|
|
83
|
+
return u(), a("div", {
|
|
84
|
+
class: g(["lkt-menu-entry", S.value])
|
|
84
85
|
}, [
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
V("div", ee, [
|
|
87
|
+
H(E, {
|
|
87
88
|
to: e.value.href,
|
|
88
89
|
"on-click": i,
|
|
89
|
-
"is-active":
|
|
90
|
-
onActive:
|
|
90
|
+
"is-active": j.value,
|
|
91
|
+
onActive: c[0] || (c[0] = (U) => p.value = U)
|
|
91
92
|
}, {
|
|
92
93
|
default: $(() => [
|
|
93
|
-
|
|
94
|
-
v.value ? (u(),
|
|
95
|
-
|
|
94
|
+
V("div", te, [
|
|
95
|
+
v.value ? (u(), a("div", le, [
|
|
96
|
+
J(o)["icon-" + e.value.key] ? L(l.$slots, "icon-" + e.value.key, {
|
|
96
97
|
key: e.value.key,
|
|
97
98
|
entry: e.value
|
|
98
|
-
}) : e.value.icon !== "" ? (u(),
|
|
99
|
+
}) : e.value.icon !== "" ? (u(), a("i", {
|
|
99
100
|
key: 1,
|
|
100
|
-
class:
|
|
101
|
-
}, null, 2)) :
|
|
102
|
-
])) :
|
|
103
|
-
e.value.label !== "" ? (u(),
|
|
101
|
+
class: g(e.value.icon)
|
|
102
|
+
}, null, 2)) : m("", !0)
|
|
103
|
+
])) : m("", !0),
|
|
104
|
+
e.value.label !== "" ? (u(), a("div", ne, P(D.value), 1)) : m("", !0)
|
|
104
105
|
])
|
|
105
106
|
]),
|
|
106
107
|
_: 3
|
|
107
108
|
}, 8, ["to", "is-active"]),
|
|
108
|
-
e.value.children.length > 0 ? (u(),
|
|
109
|
+
e.value.children.length > 0 ? (u(), a("div", {
|
|
109
110
|
key: 0,
|
|
110
111
|
class: "lkt-menu-entry-toggle",
|
|
111
112
|
onClick: f
|
|
112
113
|
}, [
|
|
113
|
-
|
|
114
|
+
z.value ? (u(), w(Q(F.value), {
|
|
114
115
|
key: 0,
|
|
115
|
-
class:
|
|
116
|
-
}, null, 8, ["class"])) : (u(),
|
|
116
|
+
class: g(["lkt-menu-entry-toggle-inner", e.value.isOpened ? "is-opened" : ""])
|
|
117
|
+
}, null, 8, ["class"])) : (u(), a("div", {
|
|
117
118
|
key: 1,
|
|
118
|
-
class:
|
|
119
|
+
class: g(["lkt-menu-entry-toggle-inner lkt-menu-entry-toggle-triangle", e.value.isOpened ? "is-opened" : ""])
|
|
119
120
|
}, null, 2))
|
|
120
|
-
])) :
|
|
121
|
+
])) : m("", !0)
|
|
121
122
|
]),
|
|
122
|
-
|
|
123
|
-
(u(!0),
|
|
124
|
-
modelValue: e.value.children[
|
|
125
|
-
"onUpdate:modelValue": (
|
|
126
|
-
key: e.value.children[
|
|
123
|
+
e.value.isOpened ? (u(), a("div", se, [
|
|
124
|
+
(u(!0), a(T, null, b(e.value.children, (U, I) => (u(), w(q, {
|
|
125
|
+
modelValue: e.value.children[I],
|
|
126
|
+
"onUpdate:modelValue": (_) => e.value.children[I] = _,
|
|
127
|
+
key: e.value.children[I].key
|
|
127
128
|
}, W({ _: 2 }, [
|
|
128
|
-
b(h.value, (
|
|
129
|
-
name:
|
|
129
|
+
b(h.value, (_) => ({
|
|
130
|
+
name: _,
|
|
130
131
|
fn: $(() => [
|
|
131
|
-
L(l.$slots,
|
|
132
|
+
L(l.$slots, _)
|
|
132
133
|
])
|
|
133
134
|
}))
|
|
134
135
|
]), 1032, ["modelValue", "onUpdate:modelValue"]))), 128))
|
|
135
|
-
],
|
|
136
|
-
[Z, E.value]
|
|
137
|
-
])
|
|
136
|
+
])) : m("", !0)
|
|
138
137
|
], 2);
|
|
139
138
|
};
|
|
140
139
|
}
|
|
141
|
-
}),
|
|
140
|
+
}), ie = { class: "lkt-menu-container" }, oe = { class: "lkt-menu" }, re = /* @__PURE__ */ K({
|
|
142
141
|
__name: "LktMenu",
|
|
143
142
|
props: {
|
|
144
143
|
modelValue: { default: () => [] }
|
|
145
144
|
},
|
|
146
145
|
emits: ["update:modelValue", "click-outside"],
|
|
147
146
|
setup(n, { emit: t }) {
|
|
148
|
-
const s = n, d = t, e = N(),
|
|
147
|
+
const s = n, d = t, e = N(), o = M(s.modelValue), O = r(() => R([], o.value)), p = r(() => {
|
|
149
148
|
let i = [];
|
|
150
149
|
for (let v in e)
|
|
151
|
-
v.startsWith("icon-") &&
|
|
150
|
+
v.startsWith("icon-") && O.value.includes(v.substring(5)) && i.push(v);
|
|
152
151
|
return i;
|
|
153
152
|
}), f = () => {
|
|
154
153
|
d("click-outside");
|
|
155
154
|
};
|
|
156
|
-
return
|
|
157
|
-
|
|
158
|
-
}, { deep: !0 }),
|
|
155
|
+
return C(() => s.modelValue, (i) => {
|
|
156
|
+
o.value = i;
|
|
157
|
+
}, { deep: !0 }), C(o, (i) => {
|
|
159
158
|
d("update:modelValue", i);
|
|
160
|
-
}, { deep: !0 }), (i, v) => (u(),
|
|
161
|
-
|
|
162
|
-
(u(!0),
|
|
163
|
-
modelValue:
|
|
164
|
-
"onUpdate:modelValue": (h) =>
|
|
165
|
-
key:
|
|
159
|
+
}, { deep: !0 }), (i, v) => (u(), a("div", ie, [
|
|
160
|
+
V("div", oe, [
|
|
161
|
+
(u(!0), a(T, null, b(o.value, (S, y) => (u(), w(ue, {
|
|
162
|
+
modelValue: o.value[y],
|
|
163
|
+
"onUpdate:modelValue": (h) => o.value[y] = h,
|
|
164
|
+
key: S.key
|
|
166
165
|
}, W({ _: 2 }, [
|
|
167
166
|
b(p.value, (h) => ({
|
|
168
167
|
name: h,
|
|
@@ -172,20 +171,20 @@ const ne = { class: "lkt-menu-entry-main" }, se = { class: "lkt-entry-content" }
|
|
|
172
171
|
}))
|
|
173
172
|
]), 1032, ["modelValue", "onUpdate:modelValue"]))), 128))
|
|
174
173
|
]),
|
|
175
|
-
|
|
174
|
+
V("div", {
|
|
176
175
|
class: "lkt-menu-outside",
|
|
177
176
|
onClick: f
|
|
178
177
|
})
|
|
179
178
|
]));
|
|
180
179
|
}
|
|
181
|
-
}),
|
|
180
|
+
}), ve = {
|
|
182
181
|
install: (n) => {
|
|
183
|
-
n.component("lkt-menu") === void 0 && n.component("lkt-menu",
|
|
182
|
+
n.component("lkt-menu") === void 0 && n.component("lkt-menu", re);
|
|
184
183
|
}
|
|
185
|
-
},
|
|
184
|
+
}, he = (n, t, s) => X(new x(n, t, s)), me = (n) => (k.toggleSlot = n, !0);
|
|
186
185
|
export {
|
|
187
186
|
x as MenuEntry,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
187
|
+
he as createMenuEntry,
|
|
188
|
+
ve as default,
|
|
189
|
+
me as setMenuToggleSlot
|
|
191
190
|
};
|
package/package.json
CHANGED
|
@@ -90,6 +90,7 @@ const availableKeys = computed(() => {
|
|
|
90
90
|
watch(() => props.modelValue, (v) => {
|
|
91
91
|
entry.value = v
|
|
92
92
|
}, {deep: true});
|
|
93
|
+
|
|
93
94
|
watch(entry, (v) => {
|
|
94
95
|
emit('update:modelValue', v)
|
|
95
96
|
}, {deep: true});
|
|
@@ -108,10 +109,6 @@ onMounted(() => {
|
|
|
108
109
|
if (opened) entry.value.isOpened = true;
|
|
109
110
|
}
|
|
110
111
|
});
|
|
111
|
-
|
|
112
|
-
const isOpened = computed(() => {
|
|
113
|
-
return entry.value.isOpened;
|
|
114
|
-
})
|
|
115
112
|
</script>
|
|
116
113
|
|
|
117
114
|
<template>
|
|
@@ -142,13 +139,13 @@ const isOpened = computed(() => {
|
|
|
142
139
|
|
|
143
140
|
<div class="lkt-menu-entry-toggle" v-if="entry.children.length > 0" @click="onClickToggle">
|
|
144
141
|
<template v-if="hasToggleSlot">
|
|
145
|
-
<component :is="toggleSlot" class="lkt-menu-entry-toggle-inner" :class="isOpened ? 'is-opened' : '' "/>
|
|
142
|
+
<component :is="toggleSlot" class="lkt-menu-entry-toggle-inner" :class="entry.isOpened ? 'is-opened' : '' "/>
|
|
146
143
|
</template>
|
|
147
|
-
<div v-else class="lkt-menu-entry-toggle-inner lkt-menu-entry-toggle-triangle" :class="isOpened ? 'is-opened' : '' "/>
|
|
144
|
+
<div v-else class="lkt-menu-entry-toggle-inner lkt-menu-entry-toggle-triangle" :class="entry.isOpened ? 'is-opened' : '' "/>
|
|
148
145
|
</div>
|
|
149
146
|
</div>
|
|
150
|
-
<div class="lkt-menu-entry-children" v-
|
|
151
|
-
<menu-item v-for="(
|
|
147
|
+
<div class="lkt-menu-entry-children" v-if="entry.isOpened">
|
|
148
|
+
<menu-item v-for="(_, i) in entry.children" v-model="entry.children[i]" :key="entry.children[i].key">
|
|
152
149
|
<template v-for="slot in entryIconSlots" v-slot:[slot]>
|
|
153
150
|
<slot :name="slot"/>
|
|
154
151
|
</template>
|