@me-framework/me-ui-antdv-next 0.0.24 → 0.0.26
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 +41 -0
- package/dist/base/index.js +0 -0
- package/dist/base.css +1 -0
- package/dist/base.d.ts +1 -0
- package/dist/body/index.js +153 -0
- package/dist/{components/body → body}/index.vue.d.ts +3 -3
- package/dist/body.css +1 -0
- package/dist/box/index.js +170 -0
- package/dist/box.css +1 -0
- package/dist/breadcrumb/index.js +99 -0
- package/dist/breadcrumb.css +1 -0
- package/dist/card/index.js +154 -0
- package/dist/card.css +1 -0
- package/dist/chunks/icon-DdoH0MfT.js +156 -0
- package/dist/chunks/input-icon-selector-D5c45QL8.js +227 -0
- package/dist/chunks/message-CPHX2tAR.js +290 -0
- package/dist/chunks/modal-Dke8ng3P.js +178 -0
- package/dist/chunks/rolldown-runtime-DtPi1Y-2.js +13 -0
- package/dist/icon/index.js +27 -0
- package/dist/icon.css +1 -0
- package/dist/index.d.ts +34 -34
- package/dist/input-gps/index.js +451 -0
- package/dist/input-gps.css +1 -0
- package/dist/input-icon-selector/index.js +2 -0
- package/dist/input-icon-selector.css +1 -0
- package/dist/input-radio/index.js +96 -0
- package/dist/{components/input-radio → input-radio}/index.vue.d.ts +3 -3
- package/dist/input-radio.css +1 -0
- package/dist/load-json/index.js +24405 -0
- package/dist/load-json.css +1 -0
- package/dist/login-page/index.js +272 -0
- package/dist/login-page.css +1 -0
- package/dist/me-ui-antdv-next.js +2 -2
- package/dist/me-ui-antdv-next.umd.cjs +2 -2
- package/dist/menu/index.js +465 -0
- package/dist/menu.css +1 -0
- package/dist/message/index.js +2 -0
- package/dist/message.css +1 -0
- package/dist/modal/index.js +2 -0
- package/dist/modal.css +1 -0
- package/dist/nav/index.js +560 -0
- package/dist/nav.css +1 -0
- package/dist/resolver/index.d.ts +7 -0
- package/dist/resolver/index.js +36 -0
- package/dist/resolver/resolver-map.d.ts +6 -0
- package/dist/resolver/resolver-type.d.ts +19 -0
- package/dist/resolver.d.ts +2 -0
- package/dist/shims-vue.d.ts +3 -0
- package/dist/skeleton/index.js +141 -0
- package/dist/skeleton.css +1 -0
- package/dist/{me-ui-antdv-next.css → style.css} +1 -1
- package/dist/styles/base.d.ts +0 -0
- package/dist/tree-menu/index.js +890 -0
- package/dist/tree-menu.css +1 -0
- package/package.json +15 -6
- package/dist/{components/body → body}/index.d.ts +0 -0
- package/dist/{components/body → body}/types.d.ts +0 -0
- package/dist/{components/box → box}/index.d.ts +0 -0
- package/dist/{components/box → box}/index.vue.d.ts +2 -2
- package/dist/{components/box → box}/types.d.ts +0 -0
- package/dist/{components/breadcrumb → breadcrumb}/index.d.ts +0 -0
- package/dist/{components/breadcrumb → breadcrumb}/index.vue.d.ts +0 -0
- package/dist/{components/breadcrumb → breadcrumb}/types.d.ts +0 -0
- package/dist/{components/card → card}/index.d.ts +0 -0
- package/dist/{components/card → card}/index.vue.d.ts +4 -4
- package/dist/{components/card → card}/types.d.ts +0 -0
- package/dist/{components/icon → icon}/index.d.ts +0 -0
- package/dist/{components/icon → icon}/index.vue.d.ts +2 -2
- package/dist/{components/icon → icon}/types.d.ts +0 -0
- package/dist/{components/input-gps → input-gps}/index.d.ts +0 -0
- package/dist/{components/input-gps → input-gps}/index.vue.d.ts +0 -0
- package/dist/{components/input-gps → input-gps}/map.vue.d.ts +0 -0
- package/dist/{components/input-gps → input-gps}/types.d.ts +0 -0
- package/dist/{components/input-icon-selector → input-icon-selector}/index.d.ts +0 -0
- package/dist/{components/input-icon-selector → input-icon-selector}/index.vue.d.ts +5 -5
- package/dist/{components/input-icon-selector → input-icon-selector}/types.d.ts +0 -0
- package/dist/{components/input-radio → input-radio}/index.d.ts +0 -0
- package/dist/{components/input-radio → input-radio}/types.d.ts +0 -0
- package/dist/{components/load-json → load-json}/index.d.ts +0 -0
- package/dist/{components/load-json → load-json}/index.vue.d.ts +1 -1
- package/dist/{components/load-json → load-json}/types.d.ts +0 -0
- package/dist/{components/login-page → login-page}/index.d.ts +0 -0
- package/dist/{components/login-page → login-page}/index.vue.d.ts +0 -0
- package/dist/{components/login-page → login-page}/types.d.ts +0 -0
- package/dist/{components/menu → menu}/MenuTreeItem.vue.d.ts +0 -0
- package/dist/{components/menu → menu}/index.d.ts +0 -0
- package/dist/{components/menu → menu}/index.vue.d.ts +2 -2
- package/dist/{components/menu → menu}/types.d.ts +0 -0
- package/dist/{components/message → message}/index.d.ts +0 -0
- package/dist/{components/message → message}/index.vue.d.ts +4 -4
- package/dist/{components/message → message}/types.d.ts +0 -0
- package/dist/{components/modal → modal}/index.d.ts +0 -0
- package/dist/{components/modal → modal}/index.vue.d.ts +5 -5
- package/dist/{components/modal → modal}/types.d.ts +0 -0
- package/dist/{components/nav → nav}/composables/useNavDrag.d.ts +0 -0
- package/dist/{components/nav → nav}/composables/useNavScroll.d.ts +0 -0
- package/dist/{components/nav → nav}/index.d.ts +0 -0
- package/dist/{components/nav → nav}/index.vue.d.ts +5 -5
- package/dist/{components/nav → nav}/types.d.ts +0 -0
- package/dist/{components/skeleton → skeleton}/index.d.ts +0 -0
- package/dist/{components/skeleton → skeleton}/index.vue.d.ts +0 -0
- package/dist/{components/skeleton → skeleton}/types.d.ts +0 -0
- package/dist/{components/tree-menu → tree-menu}/TreeMenuActions.vue.d.ts +0 -0
- package/dist/{components/tree-menu → tree-menu}/TreeMenuCard.vue.d.ts +1 -1
- package/dist/{components/tree-menu → tree-menu}/TreeMenuEdit.vue.d.ts +2 -2
- package/dist/{components/tree-menu → tree-menu}/TreeMenuNode.vue.d.ts +0 -0
- package/dist/{components/tree-menu → tree-menu}/index.d.ts +0 -0
- package/dist/{components/tree-menu → tree-menu}/index.vue.d.ts +3 -3
- /package/dist/{components/tree-menu → tree-menu}/types.d.ts +0 -0
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
import { t as e } from "../chunks/icon-DdoH0MfT.js";
|
|
2
|
+
import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createVNode as s, defineComponent as c, h as l, nextTick as u, normalizeClass as d, normalizeStyle as f, onBeforeUnmount as p, onMounted as m, openBlock as h, ref as g, renderList as _, renderSlot as v, resolveComponent as y, resolveDynamicComponent as b, toDisplayString as x, unref as S, watch as C, withCtx as w, withModifiers as T } from "vue";
|
|
3
|
+
import * as E from "@lucide/vue";
|
|
4
|
+
//#region src/components/nav/composables/useNavScroll.ts
|
|
5
|
+
function ee(e, t) {
|
|
6
|
+
let n = g(0), r = g(!1), i = g(!1), a = g(!1), o = g(!1), s = /* @__PURE__ */ new Set(), c = (e) => {
|
|
7
|
+
o.value = !0, e();
|
|
8
|
+
let t = window.setTimeout(() => {
|
|
9
|
+
o.value = !1, s.delete(t);
|
|
10
|
+
}, 300);
|
|
11
|
+
s.add(t);
|
|
12
|
+
}, l = () => {
|
|
13
|
+
if (!e.value || !t.value) {
|
|
14
|
+
r.value = !1, i.value = !1;
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
let o = e.value.clientWidth, s = t.value.scrollWidth;
|
|
18
|
+
if (s <= o) {
|
|
19
|
+
r.value = !1, i.value = !1, a.value = !1;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
a.value = !0, r.value = n.value < 0, i.value = s + n.value > o;
|
|
23
|
+
}, u = () => {
|
|
24
|
+
if (!e.value || !t.value) return;
|
|
25
|
+
let r = e.value.clientWidth, i = t.value.scrollWidth;
|
|
26
|
+
if (i <= r) {
|
|
27
|
+
n.value = 0;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
let a = r - i;
|
|
31
|
+
n.value < a && (n.value = a), n.value > 0 && (n.value = 0);
|
|
32
|
+
};
|
|
33
|
+
return p(() => {
|
|
34
|
+
s.forEach((e) => clearTimeout(e)), s.clear();
|
|
35
|
+
}), {
|
|
36
|
+
translateX: n,
|
|
37
|
+
showLeftArrow: r,
|
|
38
|
+
showRightArrow: i,
|
|
39
|
+
isSmooth: o,
|
|
40
|
+
isScrollable: a,
|
|
41
|
+
withSmooth: c,
|
|
42
|
+
updateArrowVisibility: l,
|
|
43
|
+
clampTranslateX: u,
|
|
44
|
+
scrollLeft: () => {
|
|
45
|
+
c(() => {
|
|
46
|
+
n.value += 200, u(), l();
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
scrollRight: () => {
|
|
50
|
+
c(() => {
|
|
51
|
+
n.value -= 200, u(), l();
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
canScroll: () => !e.value || !t.value ? !1 : t.value.scrollWidth > e.value.clientWidth
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src/components/nav/composables/useNavDrag.ts
|
|
59
|
+
function te(e) {
|
|
60
|
+
let { canScroll: t, translateX: n, clampTranslateX: r, updateArrowVisibility: i } = e, a = g(!1), o = 0, s = 0, c = !1, l = 0, u = 0, d = 0, f = null, m = .05, h = () => {
|
|
61
|
+
f !== null && (cancelAnimationFrame(f), f = null);
|
|
62
|
+
}, _ = (e, t) => {
|
|
63
|
+
if (h(), Math.abs(d) < m) return;
|
|
64
|
+
let a = () => {
|
|
65
|
+
if (d *= .95, Math.abs(d) < m) {
|
|
66
|
+
f = null;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
n.value += d * 16, r(), i();
|
|
70
|
+
let o = e?.clientWidth ?? 0, s = t?.scrollWidth ?? 0;
|
|
71
|
+
if (n.value >= 0 || n.value <= o - s) {
|
|
72
|
+
f = null;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
f = requestAnimationFrame(a);
|
|
76
|
+
};
|
|
77
|
+
f = requestAnimationFrame(a);
|
|
78
|
+
}, v = (e) => {
|
|
79
|
+
let t = Date.now(), n = t - u;
|
|
80
|
+
n > 0 && (d = (e - l) / n), l = e, u = t;
|
|
81
|
+
}, y = (e) => {
|
|
82
|
+
t() && e.button === 0 && (h(), a.value = !0, c = !1, o = e.clientX, s = n.value, l = e.clientX, u = Date.now(), d = 0, document.addEventListener("mousemove", b), document.addEventListener("mouseup", C));
|
|
83
|
+
}, b = (e) => {
|
|
84
|
+
if (!a.value) return;
|
|
85
|
+
let t = e.clientX - o;
|
|
86
|
+
!c && Math.abs(t) > 5 && (c = !0), v(e.clientX), n.value = s + t, r(), i();
|
|
87
|
+
}, x = null, S = null, C = () => {
|
|
88
|
+
a.value = !1, document.removeEventListener("mousemove", b), document.removeEventListener("mouseup", C), c && _(x, S);
|
|
89
|
+
}, w = (e) => {
|
|
90
|
+
if (!t() || e.touches.length !== 1) return;
|
|
91
|
+
let r = e.touches[0];
|
|
92
|
+
h(), a.value = !0, c = !1, o = r.clientX, s = n.value, l = r.clientX, u = Date.now(), d = 0, document.addEventListener("touchmove", T, { passive: !1 }), document.addEventListener("touchend", E);
|
|
93
|
+
}, T = (e) => {
|
|
94
|
+
if (!a.value || e.touches.length !== 1) return;
|
|
95
|
+
let t = e.touches[0], l = t.clientX - o;
|
|
96
|
+
!c && Math.abs(l) > 5 && (c = !0), c && e.preventDefault(), v(t.clientX), n.value = s + l, r(), i();
|
|
97
|
+
}, E = () => {
|
|
98
|
+
a.value = !1, document.removeEventListener("touchmove", T), document.removeEventListener("touchend", E), c && _(x, S);
|
|
99
|
+
};
|
|
100
|
+
return p(() => {
|
|
101
|
+
h(), document.removeEventListener("mousemove", b), document.removeEventListener("mouseup", C), document.removeEventListener("touchmove", T), document.removeEventListener("touchend", E);
|
|
102
|
+
}), {
|
|
103
|
+
isDragging: a,
|
|
104
|
+
handleDragStart: y,
|
|
105
|
+
handleTouchStart: w,
|
|
106
|
+
setDragRefs: (e, t) => {
|
|
107
|
+
x = e, S = t;
|
|
108
|
+
},
|
|
109
|
+
getHasDragged: () => c,
|
|
110
|
+
resetHasDragged: () => {
|
|
111
|
+
c = !1;
|
|
112
|
+
},
|
|
113
|
+
stopMomentum: h
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
//#region src/components/nav/index.vue?vue&type=script&setup=true&lang.ts
|
|
118
|
+
var ne = {
|
|
119
|
+
key: 0,
|
|
120
|
+
class: "me-nav__slot me-nav__slot--left"
|
|
121
|
+
}, re = {
|
|
122
|
+
key: 0,
|
|
123
|
+
class: "me-nav__fade me-nav__fade--left"
|
|
124
|
+
}, ie = {
|
|
125
|
+
key: 0,
|
|
126
|
+
class: "me-nav__empty"
|
|
127
|
+
}, ae = [
|
|
128
|
+
"aria-selected",
|
|
129
|
+
"tabindex",
|
|
130
|
+
"onClick"
|
|
131
|
+
], oe = {
|
|
132
|
+
key: 1,
|
|
133
|
+
class: "me-nav__tab-label"
|
|
134
|
+
}, se = {
|
|
135
|
+
key: 1,
|
|
136
|
+
class: "me-nav__tab-title"
|
|
137
|
+
}, ce = ["onClick"], le = {
|
|
138
|
+
key: 1,
|
|
139
|
+
class: "me-nav__fade me-nav__fade--right"
|
|
140
|
+
}, ue = {
|
|
141
|
+
key: 1,
|
|
142
|
+
class: "me-nav__slot me-nav__slot--right"
|
|
143
|
+
}, D = /* @__PURE__ */ c({
|
|
144
|
+
name: "MeNav",
|
|
145
|
+
__name: "index",
|
|
146
|
+
props: {
|
|
147
|
+
tabList: { default: () => [] },
|
|
148
|
+
contextMenu: {
|
|
149
|
+
type: [Array, Function],
|
|
150
|
+
default: void 0
|
|
151
|
+
},
|
|
152
|
+
tabProps: { default: () => ({}) },
|
|
153
|
+
modelValue: { default: "" },
|
|
154
|
+
width: { default: "" },
|
|
155
|
+
scrollTargetOffset: { default: .1 },
|
|
156
|
+
showLockMenu: {
|
|
157
|
+
type: Boolean,
|
|
158
|
+
default: !1
|
|
159
|
+
},
|
|
160
|
+
titleMaxWidth: { default: void 0 },
|
|
161
|
+
keyboard: {
|
|
162
|
+
type: Boolean,
|
|
163
|
+
default: !0
|
|
164
|
+
},
|
|
165
|
+
closable: {
|
|
166
|
+
type: Boolean,
|
|
167
|
+
default: !0
|
|
168
|
+
},
|
|
169
|
+
activeAfterRemove: { default: "prev" },
|
|
170
|
+
builtinMenu: { default: () => [] },
|
|
171
|
+
beforeClose: {
|
|
172
|
+
type: Function,
|
|
173
|
+
default: void 0
|
|
174
|
+
},
|
|
175
|
+
edgeFade: {
|
|
176
|
+
type: Boolean,
|
|
177
|
+
default: !0
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
emits: [
|
|
181
|
+
"update:modelValue",
|
|
182
|
+
"tab-change",
|
|
183
|
+
"tab-remove",
|
|
184
|
+
"toggle-lock",
|
|
185
|
+
"scroll",
|
|
186
|
+
"contextmenu",
|
|
187
|
+
"refresh",
|
|
188
|
+
"close-current",
|
|
189
|
+
"close-others",
|
|
190
|
+
"close-left",
|
|
191
|
+
"close-right",
|
|
192
|
+
"close-all"
|
|
193
|
+
],
|
|
194
|
+
setup(c, { expose: D, emit: O }) {
|
|
195
|
+
let k = c, A = O, j = n(() => k.tabProps.key ?? "path"), M = n(() => k.tabProps.label ?? "title"), N = n(() => k.tabProps.isHome ?? "isHome"), P = n(() => k.tabProps.lock ?? "lock"), F = n(() => k.tabProps.icon ?? "icon"), de = n(() => k.width ? typeof k.width == "number" ? `${k.width}px` : k.width : ""), fe = n(() => k.titleMaxWidth === void 0 ? {} : { maxWidth: typeof k.titleMaxWidth == "number" ? `${k.titleMaxWidth}px` : k.titleMaxWidth }), pe = n(() => k.titleMaxWidth !== void 0), I = (e) => e ? (typeof e == "object" || typeof e == "function") && typeof e != "string" : !1, me = g(null), L = g(null), R = g(null), z = g(k.modelValue), { translateX: B, showLeftArrow: V, showRightArrow: H, isSmooth: U, isScrollable: he, withSmooth: ge, updateArrowVisibility: W, clampTranslateX: G, scrollLeft: _e, scrollRight: ve, canScroll: ye } = ee(L, R), K = null;
|
|
196
|
+
C(B, (e) => {
|
|
197
|
+
K === null && (K = requestAnimationFrame(() => {
|
|
198
|
+
K = null, A("scroll", e);
|
|
199
|
+
}));
|
|
200
|
+
}), p(() => {
|
|
201
|
+
K !== null && cancelAnimationFrame(K);
|
|
202
|
+
});
|
|
203
|
+
let { isDragging: be, handleDragStart: xe, handleTouchStart: Se, setDragRefs: Ce, getHasDragged: we, resetHasDragged: Te } = te({
|
|
204
|
+
canScroll: ye,
|
|
205
|
+
translateX: B,
|
|
206
|
+
clampTranslateX: G,
|
|
207
|
+
updateArrowVisibility: W
|
|
208
|
+
}), q = 0, J = null, Ee = (e) => {
|
|
209
|
+
if (!ye()) return;
|
|
210
|
+
let t = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? e.deltaX : e.deltaY;
|
|
211
|
+
t !== 0 && (e.preventDefault(), q += t, J === null && (J = requestAnimationFrame(() => {
|
|
212
|
+
J = null, B.value -= q, q = 0, G(), W();
|
|
213
|
+
})));
|
|
214
|
+
};
|
|
215
|
+
p(() => {
|
|
216
|
+
J !== null && cancelAnimationFrame(J);
|
|
217
|
+
});
|
|
218
|
+
let Y = /* @__PURE__ */ new Map(), De = (e, t) => {
|
|
219
|
+
t && t instanceof HTMLElement && Y.set(e, t);
|
|
220
|
+
};
|
|
221
|
+
C(() => k.tabList, (e) => {
|
|
222
|
+
let t = new Set(e.map((e) => e[j.value]));
|
|
223
|
+
for (let e of Y.keys()) t.has(e) || Y.delete(e);
|
|
224
|
+
}, { flush: "post" });
|
|
225
|
+
let Oe = (e) => {
|
|
226
|
+
u(() => {
|
|
227
|
+
let t = Y.get(e);
|
|
228
|
+
if (!t || !L.value || !R.value) return;
|
|
229
|
+
let n = L.value.getBoundingClientRect(), r = t.getBoundingClientRect();
|
|
230
|
+
if (r.left >= n.left && r.right <= n.right) return;
|
|
231
|
+
let i = k.scrollTargetOffset, a = i <= 1 ? n.width * i : i, o;
|
|
232
|
+
o = r.left < n.left ? r.left - n.left - a : r.right - n.right + a, !(Math.abs(o) < 1) && (U.value = !0, requestAnimationFrame(() => {
|
|
233
|
+
requestAnimationFrame(() => {
|
|
234
|
+
B.value -= o, G(), W(), setTimeout(() => {
|
|
235
|
+
U.value = !1;
|
|
236
|
+
}, 300);
|
|
237
|
+
});
|
|
238
|
+
}));
|
|
239
|
+
});
|
|
240
|
+
}, X = (e) => {
|
|
241
|
+
let t = e ?? z.value;
|
|
242
|
+
t && Oe(t);
|
|
243
|
+
}, ke = () => {
|
|
244
|
+
ge(() => {
|
|
245
|
+
B.value = 0, G(), W();
|
|
246
|
+
});
|
|
247
|
+
}, Ae = () => {
|
|
248
|
+
ge(() => {
|
|
249
|
+
!L.value || !R.value || (B.value = L.value.clientWidth - R.value.scrollWidth, G(), W());
|
|
250
|
+
});
|
|
251
|
+
}, Z = (e) => k.closable ? !e[N.value] && !e[P.value] : !1, je = {
|
|
252
|
+
refresh: "RefreshCw",
|
|
253
|
+
"close-current": "X",
|
|
254
|
+
"close-others": "Layers",
|
|
255
|
+
"close-left": "PanelLeftClose",
|
|
256
|
+
"close-right": "PanelRightClose",
|
|
257
|
+
"close-all": "SquareX"
|
|
258
|
+
}, Me = {
|
|
259
|
+
refresh: "刷新当前",
|
|
260
|
+
"close-current": "关闭当前",
|
|
261
|
+
"close-others": "关闭其他",
|
|
262
|
+
"close-left": "关闭左侧",
|
|
263
|
+
"close-right": "关闭右侧",
|
|
264
|
+
"close-all": "关闭全部"
|
|
265
|
+
}, Ne = {
|
|
266
|
+
"toggle-lock": !0,
|
|
267
|
+
refresh: !1,
|
|
268
|
+
"close-current": !1,
|
|
269
|
+
"close-others": !0,
|
|
270
|
+
"close-left": !1,
|
|
271
|
+
"close-right": !0,
|
|
272
|
+
"close-all": !1
|
|
273
|
+
}, Pe = (e, t) => k.contextMenu === void 0 ? [] : typeof k.contextMenu == "function" ? k.contextMenu(e, t) ?? [] : k.contextMenu, Fe = (e, t) => {
|
|
274
|
+
if (e[N.value]) return { items: [] };
|
|
275
|
+
let n = [], r = e[j.value];
|
|
276
|
+
if (k.showLockMenu) {
|
|
277
|
+
let i = e[P.value];
|
|
278
|
+
n.push({
|
|
279
|
+
key: "toggle-lock",
|
|
280
|
+
label: i ? "解锁" : "锁定",
|
|
281
|
+
icon: () => l(E[i ? "LockKeyholeOpen" : "LockKeyhole"], { size: 14 }),
|
|
282
|
+
onClick: () => {
|
|
283
|
+
A("toggle-lock", {
|
|
284
|
+
name: r,
|
|
285
|
+
item: e,
|
|
286
|
+
index: t,
|
|
287
|
+
locked: !i
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
k.builtinMenu.length > 0 && (n.length > 0 && n.push({ type: "divider" }), n.length, k.builtinMenu.forEach((i, a) => {
|
|
293
|
+
if (i === "toggle-lock") {
|
|
294
|
+
let o = e[P.value];
|
|
295
|
+
n.push({
|
|
296
|
+
key: "toggle-lock",
|
|
297
|
+
label: o ? "解锁" : "锁定",
|
|
298
|
+
icon: () => l(E[o ? "LockKeyholeOpen" : "LockKeyhole"], { size: 14 }),
|
|
299
|
+
onClick: () => {
|
|
300
|
+
A("toggle-lock", {
|
|
301
|
+
name: r,
|
|
302
|
+
item: e,
|
|
303
|
+
index: t,
|
|
304
|
+
locked: !o
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}), Ne[i] && a < k.builtinMenu.length - 1 && n.push({ type: "divider" });
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
if (i === "close-current" && !Z(e)) return;
|
|
311
|
+
let o = !1;
|
|
312
|
+
i === "close-others" || i === "close-left" || i === "close-right" ? o = k.tabList.filter((e) => !e[N.value] && !e[P.value]).length <= 1 : i === "close-all" && (o = k.tabList.filter((e) => !e[N.value] && !e[P.value]).length === 0), n.push({
|
|
313
|
+
key: i,
|
|
314
|
+
label: Me[i],
|
|
315
|
+
icon: () => l(E[je[i]], { size: 14 }),
|
|
316
|
+
disabled: o,
|
|
317
|
+
onClick: () => {
|
|
318
|
+
A(i, {
|
|
319
|
+
name: r,
|
|
320
|
+
item: e,
|
|
321
|
+
index: t
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}), Ne[i] && a < k.builtinMenu.length - 1 && n.push({ type: "divider" });
|
|
325
|
+
}));
|
|
326
|
+
let i = Pe(e, t);
|
|
327
|
+
return i.length > 0 && (n.length > 0 && n.push({ type: "divider" }), i.forEach((e, t) => {
|
|
328
|
+
e.divided && n.length > 0 && n[n.length - 1].type !== "divider" && n.push({ type: "divider" });
|
|
329
|
+
let r = {
|
|
330
|
+
key: `custom-${t}`,
|
|
331
|
+
label: e.label,
|
|
332
|
+
disabled: e.disabled,
|
|
333
|
+
onClick: () => e.onClick?.()
|
|
334
|
+
};
|
|
335
|
+
e.icon && (r.icon = I(e.icon) ? () => l(e.icon, { size: 14 }) : () => l(E[e.icon], { size: 14 })), n.push(r);
|
|
336
|
+
})), { items: n };
|
|
337
|
+
}, Ie = (e, t, n) => {
|
|
338
|
+
e && A("contextmenu", {
|
|
339
|
+
name: t[j.value],
|
|
340
|
+
item: t,
|
|
341
|
+
index: n,
|
|
342
|
+
event: {}
|
|
343
|
+
});
|
|
344
|
+
}, Le = (e, t) => {
|
|
345
|
+
if (we()) {
|
|
346
|
+
Te();
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
let n = e[j.value];
|
|
350
|
+
if (z.value === n) {
|
|
351
|
+
X(n);
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
z.value = n, A("update:modelValue", n), A("tab-change", {
|
|
355
|
+
name: n,
|
|
356
|
+
item: e,
|
|
357
|
+
index: t
|
|
358
|
+
}), X(n);
|
|
359
|
+
}, Q = async (e, t) => {
|
|
360
|
+
let n = t ?? k.tabList.findIndex((t) => t[j.value] === e), r = k.tabList[n];
|
|
361
|
+
if (r && Z(r)) {
|
|
362
|
+
if (k.beforeClose) try {
|
|
363
|
+
if (await k.beforeClose(r, n) === !1) return;
|
|
364
|
+
} catch {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (A("tab-remove", {
|
|
368
|
+
name: e,
|
|
369
|
+
item: r,
|
|
370
|
+
index: n
|
|
371
|
+
}), z.value === e && k.activeAfterRemove !== "none") {
|
|
372
|
+
let t = k.tabList.filter((t) => t[j.value] !== e);
|
|
373
|
+
if (t.length === 0) return;
|
|
374
|
+
let r;
|
|
375
|
+
if (r = k.activeAfterRemove === "next" ? t[n] ?? t[t.length - 1] : t[Math.max(0, n - 1)] ?? t[0], r) {
|
|
376
|
+
let e = r[j.value], t = k.tabList.findIndex((t) => t[j.value] === e);
|
|
377
|
+
z.value = e, A("update:modelValue", e), A("tab-change", {
|
|
378
|
+
name: e,
|
|
379
|
+
item: r,
|
|
380
|
+
index: t
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}, Re = (e) => {
|
|
386
|
+
if (!k.keyboard || k.tabList.length === 0) return;
|
|
387
|
+
let t = k.tabList.findIndex((e) => e[j.value] === z.value);
|
|
388
|
+
if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
|
|
389
|
+
e.preventDefault();
|
|
390
|
+
let n = t + (e.key === "ArrowRight" ? 1 : -1);
|
|
391
|
+
n < 0 && (n = k.tabList.length - 1), n >= k.tabList.length && (n = 0);
|
|
392
|
+
let r = k.tabList[n];
|
|
393
|
+
if (r) {
|
|
394
|
+
let e = r[j.value];
|
|
395
|
+
z.value = e, A("update:modelValue", e), A("tab-change", {
|
|
396
|
+
name: e,
|
|
397
|
+
item: r,
|
|
398
|
+
index: n
|
|
399
|
+
}), X(e);
|
|
400
|
+
}
|
|
401
|
+
} else if ((e.key === "Delete" || e.key === "Backspace") && t > -1) {
|
|
402
|
+
let e = k.tabList[t];
|
|
403
|
+
e && Z(e) && Q(e[j.value], t);
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
C(() => k.modelValue, (e) => {
|
|
407
|
+
z.value = e, X(e);
|
|
408
|
+
}), C(() => k.tabList, () => {
|
|
409
|
+
u(() => {
|
|
410
|
+
X(z.value), W();
|
|
411
|
+
});
|
|
412
|
+
}, {
|
|
413
|
+
flush: "post",
|
|
414
|
+
deep: !0
|
|
415
|
+
}), C(() => k.width, () => {
|
|
416
|
+
u(() => {
|
|
417
|
+
G(), W(), X(z.value);
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
let $ = null, ze = () => {
|
|
421
|
+
G(), W(), X(z.value);
|
|
422
|
+
};
|
|
423
|
+
return m(() => {
|
|
424
|
+
Ce(L.value, R.value), u(() => {
|
|
425
|
+
W(), z.value && X(z.value);
|
|
426
|
+
}), typeof ResizeObserver < "u" && L.value && ($ = new ResizeObserver(() => {
|
|
427
|
+
ze();
|
|
428
|
+
}), $.observe(L.value));
|
|
429
|
+
}), p(() => {
|
|
430
|
+
$ &&= ($.disconnect(), null), Y.clear();
|
|
431
|
+
}), D({
|
|
432
|
+
scrollTo: X,
|
|
433
|
+
scrollToStart: ke,
|
|
434
|
+
scrollToEnd: Ae,
|
|
435
|
+
activeItem: n(() => k.tabList.find((e) => e[j.value] === z.value))
|
|
436
|
+
}), (n, l) => {
|
|
437
|
+
let u = y("a-tooltip"), p = y("a-dropdown");
|
|
438
|
+
return h(), a("div", {
|
|
439
|
+
class: "me-nav",
|
|
440
|
+
ref_key: "rootRef",
|
|
441
|
+
ref: me,
|
|
442
|
+
style: f({ width: de.value }),
|
|
443
|
+
role: "tablist",
|
|
444
|
+
onKeydown: Re,
|
|
445
|
+
onContextmenu: l[5] ||= T(() => {}, ["prevent"])
|
|
446
|
+
}, [
|
|
447
|
+
n.$slots.left ? (h(), a("div", ne, [v(n.$slots, "left")])) : i("", !0),
|
|
448
|
+
o("div", {
|
|
449
|
+
class: d(["me-nav__arrow me-nav__arrow--left", { "is-hidden": !S(V) }]),
|
|
450
|
+
role: "button",
|
|
451
|
+
"aria-label": "向左滚动",
|
|
452
|
+
onClick: l[0] ||= (...e) => S(_e) && S(_e)(...e)
|
|
453
|
+
}, [s(e, {
|
|
454
|
+
name: "ChevronLeft",
|
|
455
|
+
size: 14
|
|
456
|
+
})], 2),
|
|
457
|
+
o("div", {
|
|
458
|
+
class: d(["me-nav__scroll", {
|
|
459
|
+
"is-dragging": S(be),
|
|
460
|
+
"is-scrollable": S(he)
|
|
461
|
+
}]),
|
|
462
|
+
ref_key: "scrollRef",
|
|
463
|
+
ref: L,
|
|
464
|
+
onWheel: Ee,
|
|
465
|
+
onMousedown: l[1] ||= (...e) => S(xe) && S(xe)(...e),
|
|
466
|
+
onTouchstartPassive: l[2] ||= (...e) => S(Se) && S(Se)(...e),
|
|
467
|
+
onContextmenu: l[3] ||= T(() => {}, ["prevent"])
|
|
468
|
+
}, [
|
|
469
|
+
c.edgeFade && S(V) ? (h(), a("div", re)) : i("", !0),
|
|
470
|
+
o("div", {
|
|
471
|
+
class: d(["me-nav__list", { "is-smooth": S(U) }]),
|
|
472
|
+
ref_key: "listRef",
|
|
473
|
+
ref: R,
|
|
474
|
+
style: f({ transform: `translateX(${S(B)}px)` })
|
|
475
|
+
}, [c.tabList.length === 0 && n.$slots.empty ? (h(), a("div", ie, [v(n.$slots, "empty")])) : i("", !0), (h(!0), a(t, null, _(c.tabList, (t, c) => (h(), a("div", {
|
|
476
|
+
key: t[j.value],
|
|
477
|
+
class: "me-nav__tab-wrapper"
|
|
478
|
+
}, [s(p, {
|
|
479
|
+
trigger: ["contextmenu"],
|
|
480
|
+
menu: Fe(t, c),
|
|
481
|
+
"prefix-cls": "me-nav-dropdown",
|
|
482
|
+
onOpenChange: (e) => Ie(e, t, c)
|
|
483
|
+
}, {
|
|
484
|
+
default: w(() => [o("div", {
|
|
485
|
+
class: d(["me-nav__tab", { "is-active": z.value === t[j.value] }]),
|
|
486
|
+
ref_for: !0,
|
|
487
|
+
ref: (e) => De(t[j.value], e),
|
|
488
|
+
role: "tab",
|
|
489
|
+
"aria-selected": z.value === t[j.value],
|
|
490
|
+
tabindex: z.value === t[j.value] ? 0 : -1,
|
|
491
|
+
onClick: (e) => Le(t, c)
|
|
492
|
+
}, [n.$slots.tab ? v(n.$slots, "tab", {
|
|
493
|
+
item: t,
|
|
494
|
+
index: c,
|
|
495
|
+
active: z.value === t[j.value],
|
|
496
|
+
close: () => Q(t[j.value])
|
|
497
|
+
}, void 0, void 0, 0) : (h(), a("div", oe, [
|
|
498
|
+
v(n.$slots, "icon", { item: t }, () => [I(t[F.value]) ? (h(), r(b(t[F.value]), {
|
|
499
|
+
key: 0,
|
|
500
|
+
class: "me-nav__tab-icon"
|
|
501
|
+
})) : t[F.value] ? (h(), r(e, {
|
|
502
|
+
key: 1,
|
|
503
|
+
name: t[F.value],
|
|
504
|
+
size: 14,
|
|
505
|
+
class: "me-nav__tab-icon"
|
|
506
|
+
}, null, 8, ["name"])) : i("", !0)]),
|
|
507
|
+
pe.value ? (h(), r(u, {
|
|
508
|
+
key: 0,
|
|
509
|
+
title: t[M.value],
|
|
510
|
+
placement: "top"
|
|
511
|
+
}, {
|
|
512
|
+
default: w(() => [o("span", {
|
|
513
|
+
class: "me-nav__tab-title",
|
|
514
|
+
style: f(fe.value)
|
|
515
|
+
}, x(t[M.value]), 5)]),
|
|
516
|
+
_: 2
|
|
517
|
+
}, 1032, ["title"])) : (h(), a("span", se, x(t[M.value]), 1)),
|
|
518
|
+
t[P.value] ? (h(), r(e, {
|
|
519
|
+
key: 2,
|
|
520
|
+
name: "LockKeyhole",
|
|
521
|
+
size: 12,
|
|
522
|
+
class: "me-nav__tab-lock"
|
|
523
|
+
})) : i("", !0),
|
|
524
|
+
Z(t) ? (h(), a("span", {
|
|
525
|
+
key: 3,
|
|
526
|
+
class: "me-nav__tab-close",
|
|
527
|
+
role: "button",
|
|
528
|
+
"aria-label": "关闭标签",
|
|
529
|
+
onClick: T((e) => Q(t[j.value], c), ["stop"])
|
|
530
|
+
}, [v(n.$slots, "close-icon", { item: t }, () => [s(e, {
|
|
531
|
+
name: "X",
|
|
532
|
+
size: 12
|
|
533
|
+
})])], 8, ce)) : i("", !0)
|
|
534
|
+
]))], 10, ae)]),
|
|
535
|
+
_: 2
|
|
536
|
+
}, 1032, ["menu", "onOpenChange"])]))), 128))], 6),
|
|
537
|
+
c.edgeFade && S(H) ? (h(), a("div", le)) : i("", !0)
|
|
538
|
+
], 34),
|
|
539
|
+
o("div", {
|
|
540
|
+
class: d(["me-nav__arrow me-nav__arrow--right", { "is-hidden": !S(H) }]),
|
|
541
|
+
role: "button",
|
|
542
|
+
"aria-label": "向右滚动",
|
|
543
|
+
onClick: l[4] ||= (...e) => S(ve) && S(ve)(...e)
|
|
544
|
+
}, [s(e, {
|
|
545
|
+
name: "ChevronRight",
|
|
546
|
+
size: 14
|
|
547
|
+
})], 2),
|
|
548
|
+
n.$slots.right ? (h(), a("div", ue, [v(n.$slots, "right")])) : i("", !0)
|
|
549
|
+
], 36);
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
//#endregion
|
|
554
|
+
//#region src/components/nav/index.ts
|
|
555
|
+
D.install = (e) => {
|
|
556
|
+
e.component("MeNav", D);
|
|
557
|
+
};
|
|
558
|
+
var O = D;
|
|
559
|
+
//#endregion
|
|
560
|
+
export { D as MeNav, O as default };
|
package/dist/nav.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.me-nav{--me-nav-height:35px;--me-nav-arrow-width:24px;--me-nav-tab-mask:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANoAAAAkCAYAAADvhSSyAAAACXBIWXMAAAsTAAALEwEAmpwYAAABbUlEQVR4nO3d4U3CUBSG4beJA9QNcAJhAtnAOoGOwCaOoBvoCDgBOIHdQDbAH7cJMaHtxcJB6/skJ6Thptw/H+cSktOCn5kCc+AWKJtraaxqYA28A8/N9cktgE9ga1n/tBYcqDhw/QtQHfoh0gitgdkpbrzg/N8klvWbKruz5Xa0CbAi/R6TtDMjdbdOF5k3qzBk0j4VRwzazbC9SKN1nbMo9+j4QTo+SvpuA1z2LcoN2nbYXqRR681R7tFR0gAGTQpg0KQABk0KYNCkAAZNCmDQpAAGTQpg0KQABk0KYNCkAAZNCmDQpAAGTQpg0KQABk0KYNCkAAZNGq4kjTRolRM0x31L3Sb0TMLKCZqTiaVu9/QErW+oyAQHp0p9NqRBqnXbgq6glcATdjQpRw1ctb3ZFrQSeAQejr8fabRegbvcxXPScfHcDxCwrL9YK/Y0qILdgwSnpNHfHhWl4ZbAW/O6LEgplHRC/mEtBfgClkhxraFbr7gAAAAASUVORK5CYII=);--me-nav-bg-color:#fff;--me-nav-tab-bg-color:transparent;--me-nav-text-color:#303133;--me-nav-text-color-secondary:#909399;--me-nav-text-color-placeholder:#606266;--me-nav-border-color:#e4e7ed;--me-nav-hover-bg-color:#e4e4e4;--me-nav-hover-text-color:#000;--me-nav-active-text-color:var(--me-color-primary);--me-nav-active-bg-color:var(--me-color-primary-light-9);--me-nav-close-color:#909399;--me-nav-close-active-color:#909399;--me-nav-close-hover-bg:#0000001a;--me-nav-close-hover-color:#303133;height:var(--me-nav-height);background-color:var(--me-nav-bg-color);-webkit-user-select:none;user-select:none;align-items:center;display:flex;overflow:hidden}.me-nav__scroll{flex:1;min-width:0;height:100%;position:relative;overflow:hidden}.me-nav__scroll.is-dragging{-webkit-user-select:none;user-select:none}@media (hover:hover) and (pointer:fine){.me-nav__scroll.is-scrollable .me-nav__list{cursor:grab}.me-nav__scroll.is-dragging .me-nav__list{cursor:grabbing}}.me-nav__fade{pointer-events:none;z-index:2;width:30px;position:absolute;top:0;bottom:0}.me-nav__fade--left{background:linear-gradient(to right, var(--me-nav-bg-color), transparent);left:0}.me-nav__fade--right{background:linear-gradient(to left, var(--me-nav-bg-color), transparent);right:0}.me-nav__empty{width:100%;height:100%;color:var(--me-nav-text-color-secondary);justify-content:center;align-items:center;font-size:13px;display:flex}.me-nav__list{white-space:nowrap;will-change:transform;align-items:center;height:100%;padding-left:15px;display:flex}.me-nav__list.is-smooth{transition:transform .3s}.me-nav__tab-wrapper{flex-shrink:0;align-items:center;height:100%;display:flex}.me-nav__tab-wrapper:not(:first-child){margin-left:-15px}.me-nav__tab-wrapper .ant-dropdown-trigger{align-items:center;height:100%;display:flex}.me-nav__tab{height:var(--me-nav-height);cursor:pointer;isolation:isolate;background-color:var(--me-nav-tab-bg-color);color:var(--me-nav-text-color);flex-shrink:0;justify-content:center;align-items:center;padding:0 20px;font-weight:500;line-height:1;display:flex;position:relative;-webkit-mask:var(--me-nav-tab-mask) no-repeat 0 0/100% 100%!important;-webkit-mask:var(--me-nav-tab-mask) no-repeat 0 0/100% 100%!important;mask:var(--me-nav-tab-mask) no-repeat 0 0/100% 100%!important}.me-nav__tab:before{content:"";z-index:-1;background-color:var(--me-nav-active-bg-color);opacity:0;position:absolute;inset:0}.me-nav__tab:after{content:"";z-index:-1;background-color:var(--me-nav-hover-bg-color);opacity:0;transition:opacity .15s;position:absolute;inset:0}.me-nav__tab.is-active{color:var(--me-nav-active-text-color)}.me-nav__tab.is-active:before{opacity:1}.me-nav__tab.is-active .me-nav__tab-close{opacity:1;width:16px;color:var(--me-nav-close-active-color);margin-left:4px;transform:scale(1)}@media (hover:hover) and (pointer:fine){.me-nav__tab:hover{color:var(--me-nav-hover-text-color);transition:color .15s}.me-nav__tab:hover:after{opacity:1}.me-nav__tab:hover .me-nav__tab-close{opacity:1;width:16px;margin-left:4px;transform:scale(1)}.me-nav__tab.is-active:hover{color:var(--me-nav-active-text-color)}.me-nav__tab.is-active:hover:after{opacity:0}}.me-nav__tab-label{white-space:nowrap;justify-content:center;align-items:center;gap:4px;height:100%;line-height:1;display:flex}.me-nav__tab-icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.me-nav__tab-title{text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;line-height:1;display:inline-block;overflow:hidden}.me-nav__tab-lock{color:var(--me-nav-text-color-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.me-nav__tab-close{cursor:pointer;width:0;height:16px;color:var(--me-nav-close-color);opacity:0;transform-origin:50%;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:0;transition:opacity .15s,transform .15s,width .15s,margin-left .15s;display:inline-flex;overflow:hidden;transform:scale(0)}@media (hover:hover) and (pointer:fine){.me-nav__tab-close:hover{background-color:var(--me-nav-close-hover-bg);color:var(--me-nav-close-hover-color)}}.me-nav__arrow{width:var(--me-nav-arrow-width);cursor:pointer;background-color:var(--me-nav-bg-color);height:100%;color:var(--me-nav-text-color-placeholder);flex-shrink:0;justify-content:center;align-items:center;transition:color .2s,background-color .2s;display:flex}@media (hover:hover) and (pointer:fine){.me-nav__arrow:hover{color:var(--me-color-primary)}}.me-nav__arrow--left{border-right:1px solid var(--me-nav-border-color)}.me-nav__arrow--right{border-left:1px solid var(--me-nav-border-color)}.me-nav__arrow.is-hidden{display:none}.me-nav__slot{background-color:var(--me-nav-bg-color);flex-shrink:0;align-items:center;height:100%;padding:0 10px;display:flex}.me-nav__slot--left{border-right:1px solid var(--me-nav-border-color)}.me-nav__slot--right{border-left:1px solid var(--me-nav-border-color)}html.dark .me-nav{--me-nav-bg-color:#171717;--me-nav-tab-bg-color:transparent;--me-nav-text-color:#b2b2b2;--me-nav-text-color-secondary:#ffffff73;--me-nav-text-color-placeholder:#ffffffa6;--me-nav-border-color:#ffffff1f;--me-nav-hover-bg-color:#323335;--me-nav-hover-text-color:#fff;--me-nav-active-text-color:var(--me-color-primary);--me-nav-active-bg-color:#232935;--me-nav-close-color:#fff;--me-nav-close-active-color:var(--me-color-primary);--me-nav-close-hover-bg:#ffffff1f;--me-nav-close-hover-color:var(--me-color-primary)}html.dark .me-nav-dropdown .me-nav-dropdown-menu{background-color:#171717}html.dark .me-nav-dropdown .me-nav-dropdown-menu-item{color:#ffffffa6}html.dark .me-nav-dropdown .me-nav-dropdown-menu-item:hover,html.dark .me-nav-dropdown .me-nav-dropdown-menu-item.me-nav-dropdown-menu-item-active{color:var(--me-color-primary);background-color:#1a1e29}html.dark .me-nav-dropdown .me-nav-dropdown-menu-item.me-nav-dropdown-menu-item-disabled{color:#ffffff40}html.dark .me-nav-dropdown .me-nav-dropdown-menu-item.me-nav-dropdown-menu-item-disabled:hover,html.dark .me-nav-dropdown .me-nav-dropdown-menu-item.me-nav-dropdown-menu-item-disabled.me-nav-dropdown-menu-item-active{color:#ffffff40;background-color:#0000}html.dark .me-nav-dropdown .me-nav-dropdown-menu-item-divider{background-color:#ffffff1f}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MeUiAntdvResolverOptions, MeUiAntdvResolverReturn } from './resolver-type';
|
|
2
|
+
/**
|
|
3
|
+
* 生成 unplugin-vue-components 风格的 Resolver 对象。
|
|
4
|
+
* @param options 配置项(预留)
|
|
5
|
+
*/
|
|
6
|
+
export declare function MeUiAntdvResolver(_options?: MeUiAntdvResolverOptions): MeUiAntdvResolverReturn;
|
|
7
|
+
export type { MeUiAntdvResolverOptions, MeUiAntdvResolverReturn } from './resolver-type';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/resolver/resolver-map.ts
|
|
2
|
+
var e = {
|
|
3
|
+
MeMessage: "message",
|
|
4
|
+
MeIcon: "icon",
|
|
5
|
+
MeBox: "box",
|
|
6
|
+
MeBreadcrumb: "breadcrumb",
|
|
7
|
+
MeBody: "body",
|
|
8
|
+
MeMenu: "menu",
|
|
9
|
+
MeNav: "nav",
|
|
10
|
+
MeModal: "modal",
|
|
11
|
+
MeTreeMenu: "tree-menu",
|
|
12
|
+
MeInputGps: "input-gps",
|
|
13
|
+
MeInputIconSelector: "input-icon-selector",
|
|
14
|
+
MeInputRadio: "input-radio",
|
|
15
|
+
MeLoadJson: "load-json",
|
|
16
|
+
MeLoginPage: "login-page",
|
|
17
|
+
MeCard: "card",
|
|
18
|
+
MeSkeleton: "skeleton"
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/resolver/index.ts
|
|
22
|
+
function t(t = {}) {
|
|
23
|
+
return {
|
|
24
|
+
type: "component",
|
|
25
|
+
getResolve: () => (t) => {
|
|
26
|
+
let n = e[t];
|
|
27
|
+
if (n) return {
|
|
28
|
+
name: t.replace(/^Me/, ""),
|
|
29
|
+
from: `@me-framework/me-ui-antdv-next/${n}`,
|
|
30
|
+
sideEffects: ["@me-framework/me-ui-antdv-next/base.css", `@me-framework/me-ui-antdv-next/${n}/style.css`]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { t as MeUiAntdvResolver };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** MeUiAntdvResolver 配置项(当前预留,便于后续扩展) */
|
|
2
|
+
export interface MeUiAntdvResolverOptions {
|
|
3
|
+
/** 是否默认注入 base.css(设计 token 基线,按需必选)。默认 true */
|
|
4
|
+
importBase?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Resolver.resolve 返回的单一解析结果 */
|
|
7
|
+
export interface MeUiAntdvResolvedComponent {
|
|
8
|
+
/** 组件注册名(去掉 Me 前缀后的驼峰名),例 MeInputGps → InputGps */
|
|
9
|
+
name: string;
|
|
10
|
+
/** 组件来源子路径(default export 即组件) */
|
|
11
|
+
from: string;
|
|
12
|
+
/** 需一并引入的样式副作用 */
|
|
13
|
+
sideEffects: string[];
|
|
14
|
+
}
|
|
15
|
+
/** unplugin-vue-components 兼容的 Resolver 对象形状 */
|
|
16
|
+
export interface MeUiAntdvResolverReturn {
|
|
17
|
+
type: 'component';
|
|
18
|
+
getResolve: () => (name: string) => MeUiAntdvResolvedComponent | undefined;
|
|
19
|
+
}
|