savor-ui 0.15.4 → 0.15.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/es/components/src/dropdown/doption.vue_vue_type_script_setup_true_vapor_true_lang.mjs +2 -2
- package/dist/es/components/src/dropdown/dropdown.vue_vue_type_script_setup_true_vapor_true_lang.mjs +10 -8
- package/dist/es/components/src/dropdown/types.d.ts +1 -1
- package/dist/es/components/src/popover/index.d.ts +3 -2
- package/dist/es/components/src/popover/popover.d.ts +2 -1
- package/dist/es/components/src/popover/popover.vue_vue_type_script_setup_true_vapor_true_lang.mjs +54 -56
- package/dist/es/components/src/popover/types.d.ts +2 -0
- package/dist/json/web-types.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
## [0.15.6](https://gitee.com/mach552/savor-ui/compare/v0.15.5...v0.15.6) (2026-08-04)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **dropdown:** 修复选择选项切换页面后无法关闭问题 ([1b835ab](https://gitee.com/mach552/savor-ui/commits/1b835ab8ce95e3571f7e7bea55f7c2396bb0486b))
|
|
11
|
+
* **popover:** 修复右键模式时再次右键不刷新位置的问题 ([86c0842](https://gitee.com/mach552/savor-ui/commits/86c08422edc51806ae1ecd3741c96c195da41281))
|
|
12
|
+
|
|
13
|
+
## [0.15.5](https://gitee.com/mach552/savor-ui/compare/v0.15.4...v0.15.5) (2026-08-04)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **popover:** 修复切换页面无法关闭问题 ([8317b1f](https://gitee.com/mach552/savor-ui/commits/8317b1f28589c11219e9109339f259e055f5cb5e))
|
|
19
|
+
|
|
5
20
|
## [0.15.4](https://gitee.com/mach552/savor-ui/compare/v0.15.3...v0.15.4) (2026-08-04)
|
|
6
21
|
|
|
7
22
|
|
package/dist/es/components/src/dropdown/doption.vue_vue_type_script_setup_true_vapor_true_lang.mjs
CHANGED
|
@@ -11,8 +11,8 @@ var y = /*@__PURE__*/ o({
|
|
|
11
11
|
props: { title: {} },
|
|
12
12
|
emits: ["click"],
|
|
13
13
|
setup(o, { emit: s, slots: p }) {
|
|
14
|
-
let y = s, b = e("droption"), x = c(t, void 0), S = () => {
|
|
15
|
-
x?.itemClick?.(), y("click");
|
|
14
|
+
let y = s, b = e("droption"), x = c(t, void 0), S = async () => {
|
|
15
|
+
await x?.itemClick?.(), y("click");
|
|
16
16
|
}, C = v(), w = n(C, 1);
|
|
17
17
|
return l(() => u(C, [h(b).b()])), d(C, 0, 0), r(() => p.icon, () => {
|
|
18
18
|
let e = g();
|
package/dist/es/components/src/dropdown/dropdown.vue_vue_type_script_setup_true_vapor_true_lang.mjs
CHANGED
|
@@ -9,23 +9,25 @@ var m = d("<div>"), h = d("<div>", 1), g = /*@__PURE__*/ a({
|
|
|
9
9
|
__name: "dropdown",
|
|
10
10
|
props: { popoverProps: {} },
|
|
11
11
|
setup(a) {
|
|
12
|
-
let d = e("dropdown"), g = p("popoverRef")
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
let d = e("dropdown"), g = p("popoverRef"), _ = null, v = () => {
|
|
13
|
+
_ &&= (_(), null);
|
|
14
|
+
};
|
|
15
|
+
o(n, { itemClick: () => (g.value?.hide(), new Promise((e) => {
|
|
16
|
+
_ = e;
|
|
17
|
+
})) });
|
|
18
|
+
let y = h();
|
|
19
|
+
return s(() => c(y, [f(d).b()])), l(y, null, 0), u(r(f(t), { $: [() => ({
|
|
18
20
|
trigger: "click",
|
|
19
21
|
placement: a.popoverProps?.trigger === "contextmenu" ? "bottom-start" : "bottom",
|
|
20
22
|
alignPoint: a.popoverProps?.trigger === "contextmenu",
|
|
21
23
|
...a.popoverProps
|
|
22
|
-
})] }, {
|
|
24
|
+
}), { onAfterLeave: () => v }] }, {
|
|
23
25
|
content: () => {
|
|
24
26
|
let e = m();
|
|
25
27
|
return s(() => c(e, f(d).e("list"))), l(e, null, 0), i("content"), e;
|
|
26
28
|
},
|
|
27
29
|
default: () => i("default", null, null, 4)
|
|
28
|
-
}), g, null, "popoverRef"),
|
|
30
|
+
}), g, null, "popoverRef"), y;
|
|
29
31
|
}
|
|
30
32
|
});
|
|
31
33
|
//#endregion
|
|
@@ -3,7 +3,7 @@ import { PublicProps, ShallowUnwrapRef, VNode, Plugin } from 'vue';
|
|
|
3
3
|
export declare const SPopover: ((__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: {
|
|
4
4
|
attrs: any;
|
|
5
5
|
slots: PopoverSlots;
|
|
6
|
-
emit: ((evt: "change", visible: boolean) => void) & ((evt: "click-outside", evt: Event) => void);
|
|
6
|
+
emit: ((evt: "change", visible: boolean) => void) & ((evt: "click-outside", evt: Event) => void) & ((evt: "after-leave") => void);
|
|
7
7
|
}, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
8
8
|
props: PublicProps & {
|
|
9
9
|
content?: string | undefined;
|
|
@@ -22,13 +22,14 @@ export declare const SPopover: ((__VLS_props: NonNullable<Awaited<typeof __VLS_s
|
|
|
22
22
|
teleport?: string | undefined;
|
|
23
23
|
onChange?: ((visible: boolean) => any) | undefined;
|
|
24
24
|
"onClick-outside"?: ((evt: Event) => any) | undefined;
|
|
25
|
+
"onAfter-leave"?: (() => any) | undefined;
|
|
25
26
|
} & (typeof globalThis extends {
|
|
26
27
|
__VLS_PROPS_FALLBACK: infer P;
|
|
27
28
|
} ? P : {});
|
|
28
29
|
expose: (exposed: ShallowUnwrapRef<PopoverExpose>) => void;
|
|
29
30
|
attrs: any;
|
|
30
31
|
slots: PopoverSlots;
|
|
31
|
-
emit: ((evt: "change", visible: boolean) => void) & ((evt: "click-outside", evt: Event) => void);
|
|
32
|
+
emit: ((evt: "change", visible: boolean) => void) & ((evt: "click-outside", evt: Event) => void) & ((evt: "after-leave") => void);
|
|
32
33
|
}>) => VNode & {
|
|
33
34
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
34
35
|
}) & Plugin;
|
|
@@ -4,13 +4,14 @@ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup
|
|
|
4
4
|
props: PublicProps & __VLS_PrettifyLocal<PopoverProps & {
|
|
5
5
|
onChange?: ((visible: boolean) => any) | undefined;
|
|
6
6
|
"onClick-outside"?: ((evt: Event) => any) | undefined;
|
|
7
|
+
"onAfter-leave"?: (() => any) | undefined;
|
|
7
8
|
}> & (typeof globalThis extends {
|
|
8
9
|
__VLS_PROPS_FALLBACK: infer P;
|
|
9
10
|
} ? P : {});
|
|
10
11
|
expose: (exposed: ShallowUnwrapRef<PopoverExpose>) => void;
|
|
11
12
|
attrs: any;
|
|
12
13
|
slots: PopoverSlots;
|
|
13
|
-
emit: ((evt: "change", visible: boolean) => void) & ((evt: "click-outside", evt: Event) => void);
|
|
14
|
+
emit: ((evt: "change", visible: boolean) => void) & ((evt: "click-outside", evt: Event) => void) & ((evt: "after-leave") => void);
|
|
14
15
|
}>) => VNode & {
|
|
15
16
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
16
17
|
};
|
package/dist/es/components/src/popover/popover.vue_vue_type_script_setup_true_vapor_true_lang.mjs
CHANGED
|
@@ -4,10 +4,10 @@ import { useNamespace as t } from "../../../hooks/src/use-namespace.mjs";
|
|
|
4
4
|
import { useOutsideClick as n } from "../../../hooks/src/use-outside-click.mjs";
|
|
5
5
|
import { useZIndex as r } from "../../../hooks/src/use-zIndex.mjs";
|
|
6
6
|
import "../../../hooks/index.mjs";
|
|
7
|
-
import { VaporTeleport as i, VaporTransition as a, applyVShow as o, child as s, computed as c, createComponent as l, createDynamicComponent as ee, createIf as
|
|
8
|
-
import { arrow as
|
|
7
|
+
import { VaporTeleport as i, VaporTransition as a, applyVShow as o, child as s, computed as c, createComponent as l, createDynamicComponent as ee, createIf as u, createSlot as te, createTemplateRefSetter as ne, defineVaporComponent as d, nextTick as re, onMounted as ie, onUnmounted as ae, ref as f, renderEffect as p, setClass as m, setDynamicEvents as h, setInsertionState as g, setStyle as _, setText as oe, template as v, toDisplayString as se, unref as y, useSlots as ce, useTemplateRef as b, watch as x, watchEffect as le } from "vue";
|
|
8
|
+
import { arrow as ue, autoUpdate as de, computePosition as fe, flip as pe, offset as me, shift as he } from "@floating-ui/dom";
|
|
9
9
|
//#region ../components/src/popover/popover.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
10
|
-
var
|
|
10
|
+
var ge = v(" "), _e = v("<div data-popover-arrow>"), ve = v("<div>"), ye = v("<div><div>"), S = /*@__PURE__*/ d({
|
|
11
11
|
name: "SPopover",
|
|
12
12
|
__name: "popover",
|
|
13
13
|
props: {
|
|
@@ -32,11 +32,15 @@ var _e = v(" "), ve = v("<div data-popover-arrow>"), ye = v("<div>"), be = v("<d
|
|
|
32
32
|
},
|
|
33
33
|
teleport: { default: "body" }
|
|
34
34
|
},
|
|
35
|
-
emits: [
|
|
35
|
+
emits: [
|
|
36
|
+
"change",
|
|
37
|
+
"click-outside",
|
|
38
|
+
"after-leave"
|
|
39
|
+
],
|
|
36
40
|
__multiRoot: !0,
|
|
37
|
-
setup(
|
|
38
|
-
let C =
|
|
39
|
-
let e =
|
|
41
|
+
setup(d, { expose: v, emit: S }) {
|
|
42
|
+
let C = d, w = S, T = t("popover"), be = ce(), E = f(!1), D = f(!1), { nextZIndex: xe } = r(), O = f(), k = b("containerNode"), A = b("wrapperNode"), j = b("contentNode"), M = f(null), Se = () => {
|
|
43
|
+
let e = be.default?.();
|
|
40
44
|
return M.value = e, e;
|
|
41
45
|
}, N = f(null), P = f({}), F = f({}), I = f({}), L = f(null), R = () => {
|
|
42
46
|
N.value && Object.entries(F.value).forEach(([e, t]) => {
|
|
@@ -66,25 +70,25 @@ var _e = v(" "), ve = v("<div data-popover-arrow>"), ye = v("<div>"), be = v("<d
|
|
|
66
70
|
if (!e || N.value) return;
|
|
67
71
|
let t = null;
|
|
68
72
|
t = e instanceof HTMLElement ? e : B(e), t && t !== N.value && (R(), N.value = t);
|
|
69
|
-
}, { flush: "post" }),
|
|
73
|
+
}, { flush: "post" }), ie(() => {
|
|
70
74
|
if (N.value) return;
|
|
71
75
|
let e = M.value;
|
|
72
76
|
if (!e) return;
|
|
73
77
|
let t = e instanceof HTMLElement ? e : B(e);
|
|
74
78
|
t && t !== N.value && (R(), N.value = t);
|
|
75
79
|
}), x(N, (e) => {
|
|
76
|
-
e &&
|
|
80
|
+
e && re().then(() => {
|
|
77
81
|
Object.entries(F.value).forEach(([t, n]) => {
|
|
78
82
|
e.addEventListener(t, n);
|
|
79
83
|
});
|
|
80
84
|
});
|
|
81
85
|
}, { flush: "post" });
|
|
82
|
-
let
|
|
86
|
+
let Ce = () => {
|
|
83
87
|
if (!j.value || !N.value) return;
|
|
84
88
|
j.value.style.width = "";
|
|
85
89
|
let e = "";
|
|
86
90
|
typeof C.width == "number" ? (e = `${C.width}px`, j.value.style.width = e) : C.width === "sameWidth" ? (e = `${N.value.getBoundingClientRect().width}px`, j.value.style.width = e) : C.width === "auto" && (e = "", j.value.style.width = e);
|
|
87
|
-
},
|
|
91
|
+
}, we = c(() => C.offset ? C.offset : C.trigger === "contextmenu" && C.alignPoint ? [0, 0] : C.showArrow ? [0, 8] : [0, 0]), V = () => {
|
|
88
92
|
if (C.trigger === "contextmenu" && C.alignPoint && L.value) {
|
|
89
93
|
let e = L.value;
|
|
90
94
|
return { getBoundingClientRect() {
|
|
@@ -106,19 +110,19 @@ var _e = v(" "), ve = v("<div data-popover-arrow>"), ye = v("<div>"), be = v("<d
|
|
|
106
110
|
H &&= (H(), null);
|
|
107
111
|
}, W = async () => {
|
|
108
112
|
if (!A.value || !N.value) return;
|
|
109
|
-
let e = V(), t = j.value?.querySelector("[data-popover-arrow]"), [n, r] =
|
|
110
|
-
|
|
113
|
+
let e = V(), t = j.value?.querySelector("[data-popover-arrow]"), [n, r] = we.value, i = [
|
|
114
|
+
me({
|
|
111
115
|
mainAxis: r,
|
|
112
116
|
crossAxis: n
|
|
113
117
|
}),
|
|
114
|
-
|
|
115
|
-
|
|
118
|
+
pe(),
|
|
119
|
+
he()
|
|
116
120
|
];
|
|
117
|
-
t && i.push(
|
|
121
|
+
t && i.push(ue({
|
|
118
122
|
element: t,
|
|
119
123
|
padding: 8
|
|
120
124
|
}));
|
|
121
|
-
let { x: a, y: o, placement: s, middlewareData: c } = await
|
|
125
|
+
let { x: a, y: o, placement: s, middlewareData: c } = await fe(e, A.value, {
|
|
122
126
|
placement: C.placement,
|
|
123
127
|
strategy: "fixed",
|
|
124
128
|
middleware: i
|
|
@@ -140,18 +144,18 @@ var _e = v(" "), ve = v("<div data-popover-arrow>"), ye = v("<div>"), be = v("<d
|
|
|
140
144
|
} : {
|
|
141
145
|
openDelay: typeof C.delay == "number" ? C.delay : C.delay[0],
|
|
142
146
|
closeDelay: typeof C.delay == "number" ? 50 : C.delay[1]
|
|
143
|
-
}), K = null,
|
|
144
|
-
C.disabled || (K &&= (clearTimeout(K), null), D.value = !0,
|
|
147
|
+
}), K = null, Te = () => {
|
|
148
|
+
C.disabled || (K &&= (clearTimeout(K), null), D.value = !0, re(() => {
|
|
145
149
|
E.value = !0, w("change", !0);
|
|
146
150
|
}));
|
|
147
|
-
},
|
|
151
|
+
}, Ee = () => {
|
|
148
152
|
E.value = !1, L.value = null, w("change", !1), K && clearTimeout(K), K = setTimeout(() => {
|
|
149
153
|
C.destroyOnClose && (D.value = !1), K = null;
|
|
150
154
|
}, 300);
|
|
151
|
-
}, q = f(null), J = f(null),
|
|
152
|
-
q.value?.cancel(), J.value?.cancel(), q.value = e(
|
|
155
|
+
}, q = f(null), J = f(null), De = () => {
|
|
156
|
+
q.value?.cancel(), J.value?.cancel(), q.value = e(Te, G.value.openDelay), J.value = e(Ee, G.value.closeDelay);
|
|
153
157
|
};
|
|
154
|
-
|
|
158
|
+
De(), x(G, De);
|
|
155
159
|
let Y = () => {
|
|
156
160
|
J.value?.cancel(), q.value?.();
|
|
157
161
|
}, X = () => {
|
|
@@ -160,31 +164,31 @@ var _e = v(" "), ve = v("<div data-popover-arrow>"), ye = v("<div>"), be = v("<d
|
|
|
160
164
|
n(k, (e) => {
|
|
161
165
|
N.value && e.target && typeof N.value.contains == "function" && N.value.contains(e.target) || (E.value && w("click-outside", e), !C.manual && (C.trigger === "hover" || C.trigger === "contextmenu" || C.trigger === "click") && X());
|
|
162
166
|
});
|
|
163
|
-
let
|
|
164
|
-
F.value = {}, P.value = {}, I.value = {},
|
|
165
|
-
},
|
|
167
|
+
let Z = () => {
|
|
168
|
+
F.value = {}, P.value = {}, I.value = {}, Q();
|
|
169
|
+
}, Q = () => {
|
|
166
170
|
C.manual || (C.trigger === "hover" && (F.value.mouseenter = Y, F.value.mouseleave = X, P.value.mouseenter = Y, P.value.mouseleave = X), C.trigger === "click" && (F.value.click = () => {
|
|
167
171
|
let e = E.value ? J.value : q.value;
|
|
168
172
|
(E.value ? q.value : J.value)?.cancel(), e?.();
|
|
169
173
|
}), C.trigger === "contextmenu" && (F.value.click = () => {
|
|
170
174
|
X();
|
|
171
175
|
}, F.value.contextmenu = (e) => {
|
|
172
|
-
|
|
176
|
+
e.preventDefault();
|
|
173
177
|
let t = e;
|
|
174
178
|
L.value = {
|
|
175
179
|
x: t.clientX,
|
|
176
180
|
y: t.clientY
|
|
177
|
-
}, Y();
|
|
181
|
+
}, E.value ? W() : Y();
|
|
178
182
|
}));
|
|
179
183
|
};
|
|
180
|
-
|
|
181
|
-
C.manual ||
|
|
184
|
+
le(() => {
|
|
185
|
+
C.manual || Q();
|
|
182
186
|
});
|
|
183
|
-
let
|
|
184
|
-
E.value || U();
|
|
187
|
+
let Oe = () => {
|
|
188
|
+
E.value || (U(), w("after-leave"));
|
|
185
189
|
};
|
|
186
190
|
x(E, (e) => {
|
|
187
|
-
e && (!A.value || !N.value || (O.value =
|
|
191
|
+
e && (!A.value || !N.value || (O.value = xe(), Ce(), U(), H = de(V(), A.value, W)));
|
|
188
192
|
}, { flush: "post" }), x([
|
|
189
193
|
() => C.placement,
|
|
190
194
|
() => C.offset,
|
|
@@ -192,45 +196,39 @@ var _e = v(" "), ve = v("<div data-popover-arrow>"), ye = v("<div>"), be = v("<d
|
|
|
192
196
|
], () => {
|
|
193
197
|
E.value && W();
|
|
194
198
|
}), x(() => C.manual, (e) => {
|
|
195
|
-
e ?
|
|
199
|
+
e ? Z() : Q();
|
|
196
200
|
}), x(() => C.trigger, (e, t) => {
|
|
197
|
-
e !== t && (q.value?.cancel(), E.value = !1, w("change", !1),
|
|
198
|
-
})
|
|
199
|
-
|
|
200
|
-
q.value?.cancel(), J.value?.cancel(), K &&= (clearTimeout(K), null), E.value = !1, D.value = !1, U();
|
|
201
|
-
};
|
|
202
|
-
ie(() => {
|
|
203
|
-
Q();
|
|
204
|
-
}), oe(() => {
|
|
205
|
-
Q(), R();
|
|
201
|
+
e !== t && (q.value?.cancel(), E.value = !1, w("change", !1), Z());
|
|
202
|
+
}), ae(() => {
|
|
203
|
+
K &&= (clearTimeout(K), null), U(), R();
|
|
206
204
|
}), v({
|
|
207
205
|
show: Y,
|
|
208
206
|
hide: X
|
|
209
207
|
});
|
|
210
|
-
let $ =
|
|
211
|
-
return [ee(() =>
|
|
212
|
-
disabled: () => !
|
|
213
|
-
to: () =>
|
|
214
|
-
}, () =>
|
|
215
|
-
let e =
|
|
208
|
+
let $ = ne();
|
|
209
|
+
return [ee(() => Se()), l(i, {
|
|
210
|
+
disabled: () => !d.teleportBody,
|
|
211
|
+
to: () => d.teleport
|
|
212
|
+
}, () => u(() => D.value, () => {
|
|
213
|
+
let e = ye(), t = s(e);
|
|
216
214
|
return p(() => {
|
|
217
215
|
let n = y(T);
|
|
218
216
|
h(e, P.value), m(e, [n.b()]), m(t, [n.e("wrapper")]), _(t, { zIndex: O.value });
|
|
219
217
|
}), g(t, null, 0), l(a, {
|
|
220
218
|
name: "popover-fade",
|
|
221
|
-
onAfterLeave: () =>
|
|
219
|
+
onAfterLeave: () => Oe,
|
|
222
220
|
persisted: ""
|
|
223
221
|
}, () => {
|
|
224
|
-
let e =
|
|
222
|
+
let e = ve();
|
|
225
223
|
return p(() => {
|
|
226
224
|
h(e, I.value), m(e, [y(T).e("content")]);
|
|
227
|
-
}), g(e, null, 0),
|
|
225
|
+
}), g(e, null, 0), te("content", null, () => {
|
|
226
|
+
let e = ge();
|
|
227
|
+
return p(() => oe(e, se(d.content))), e;
|
|
228
|
+
}), g(e, null, 1), u(() => d.showArrow, () => {
|
|
228
229
|
let e = _e();
|
|
229
|
-
return p(() => se(e, ce(u.content))), e;
|
|
230
|
-
}), g(e, null, 1), te(() => u.showArrow, () => {
|
|
231
|
-
let e = ve();
|
|
232
230
|
return p(() => {
|
|
233
|
-
m(e, [y(T).e("arrow")]), _(e,
|
|
231
|
+
m(e, [y(T).e("arrow")]), _(e, d.arrowStyle);
|
|
234
232
|
}), e;
|
|
235
233
|
}), o(e, () => E.value), $(e, j, null, "contentNode"), e;
|
|
236
234
|
}), $(t, A, null, "wrapperNode"), $(e, k, null, "containerNode"), e;
|
package/dist/json/web-types.json
CHANGED