savor-ui 0.20.0 → 0.20.1

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 CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
 
4
4
 
5
+ ## [0.20.1](https://gitee.com/mach552/savor-ui/compare/v0.20.0...v0.20.1) (2026-08-11)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **button:** 修复悬浮样式无效问题 ([7195db3](https://gitee.com/mach552/savor-ui/commits/7195db3e36eb62737ff6a973e28aa230b07b1968))
11
+ * **split:** 修复面板无法固定尺寸的问题 ([25bda3b](https://gitee.com/mach552/savor-ui/commits/25bda3b26a9b284afd09b39a3eea654eb812e6f6))
12
+
5
13
  # [0.20.0](https://gitee.com/mach552/savor-ui/compare/v0.19.0...v0.20.0) (2026-08-10)
6
14
 
7
15
 
@@ -8,22 +8,25 @@ s("click");
8
8
  var y = /*@__PURE__*/ o({
9
9
  name: "SDoption",
10
10
  __name: "doption",
11
- props: { title: {} },
11
+ props: {
12
+ title: {},
13
+ delayClose: { type: Boolean }
14
+ },
12
15
  emits: ["click"],
13
16
  setup(o, { emit: s, slots: p }) {
14
- let y = s, b = e("droption"), x = c(t, void 0), S = async () => {
15
- await x?.itemClick?.(), y("click");
16
- }, C = v(), w = n(C, 1);
17
- return l(() => u(C, [h(b).b()])), d(C, 0, 0), r(() => p.icon, () => {
17
+ let y = o, b = s, x = e("droption"), S = c(t, void 0), C = async () => {
18
+ y.delayClose ? (await S?.itemClick?.(), b("click")) : (S?.itemClick?.(), b("click"));
19
+ }, w = v(), T = n(w, 1);
20
+ return l(() => u(w, [h(x).b()])), d(w, 0, 0), r(() => p.icon, () => {
18
21
  let e = g();
19
- return l(() => u(e, [h(b).e("icon")])), d(e, null, 0), a("icon"), e;
20
- }), l(() => u(w, [h(b).e("title")])), d(w, null, 0), a("default", null, () => {
22
+ return l(() => u(e, [h(x).e("icon")])), d(e, null, 0), a("icon"), e;
23
+ }), l(() => u(T, [h(x).e("title")])), d(T, null, 0), a("default", null, () => {
21
24
  let e = _();
22
25
  return l(() => f(e, m(o.title))), e;
23
- }), d(C, null, 2), r(() => p.extra, () => {
26
+ }), d(w, null, 2), r(() => p.extra, () => {
24
27
  let e = g();
25
- return l(() => u(e, [h(b).e("extra")])), d(e, null, 0), a("extra"), e;
26
- }), C.$evtclick = i(S), C;
28
+ return l(() => u(e, [h(x).e("extra")])), d(e, null, 0), a("extra"), e;
29
+ }), w.$evtclick = i(C), w;
27
30
  }
28
31
  });
29
32
  //#endregion
@@ -7,30 +7,27 @@ import { createComponent as r, createSlot as i, defineVaporComponent as a, provi
7
7
  var m = d("<div>"), h = d("<div>", 1), g = /*@__PURE__*/ a({
8
8
  name: "SDropdown",
9
9
  __name: "dropdown",
10
- props: {
11
- delayClose: { type: Boolean },
12
- popoverProps: {}
13
- },
10
+ props: { popoverProps: {} },
14
11
  setup(a) {
15
- let d = a, g = e("dropdown"), _ = p("popoverRef"), v = null, y = () => {
16
- v &&= (v(), null);
12
+ let d = e("dropdown"), g = p("popoverRef"), _ = null, v = () => {
13
+ _ &&= (_(), null);
17
14
  };
18
- o(n, { itemClick: () => (_.value?.hide(), new Promise((e) => {
19
- d.delayClose ? v = e : e();
15
+ o(n, { itemClick: () => (g.value?.hide(), new Promise((e) => {
16
+ _ = e;
20
17
  })) });
21
- let b = h();
22
- return s(() => c(b, [f(g).b()])), l(b, null, 0), u(r(f(t), { $: [() => ({
18
+ let y = h();
19
+ return s(() => c(y, [f(d).b()])), l(y, null, 0), u(r(f(t), { $: [() => ({
23
20
  trigger: "click",
24
21
  placement: a.popoverProps?.trigger === "contextmenu" ? "bottom-start" : "bottom",
25
22
  alignPoint: a.popoverProps?.trigger === "contextmenu",
26
23
  ...a.popoverProps
27
- }), { onAfterLeave: () => y }] }, {
24
+ }), { onAfterLeave: () => v }] }, {
28
25
  content: () => {
29
26
  let e = m();
30
- return s(() => c(e, f(g).e("list"))), l(e, null, 0), i("content"), e;
27
+ return s(() => c(e, f(d).e("list"))), l(e, null, 0), i("content"), e;
31
28
  },
32
29
  default: () => i("default", null, null, 4)
33
- }), _, null, "popoverRef"), b;
30
+ }), g, null, "popoverRef"), y;
34
31
  }
35
32
  });
36
33
  //#endregion
@@ -7,7 +7,6 @@ export declare const SDropdown: ((__VLS_props: NonNullable<Awaited<typeof __VLS_
7
7
  emit: {};
8
8
  }, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
9
9
  props: PublicProps & {
10
- delayClose?: boolean | undefined;
11
10
  popoverProps?: PopoverProps | undefined;
12
11
  } & (typeof globalThis extends {
13
12
  __VLS_PROPS_FALLBACK: infer P;
@@ -26,6 +25,7 @@ export declare const SDoption: ((__VLS_props: NonNullable<Awaited<typeof __VLS_s
26
25
  }, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
27
26
  props: PublicProps & {
28
27
  title?: string | undefined;
28
+ delayClose?: boolean | undefined;
29
29
  onClick?: (() => any) | undefined;
30
30
  } & (typeof globalThis extends {
31
31
  __VLS_PROPS_FALLBACK: infer P;
@@ -1,8 +1,6 @@
1
1
  import { InjectionKey } from 'vue';
2
2
  import { PopoverProps } from '../popover';
3
3
  export interface DropdownProps {
4
- /** 延迟关闭(用于卸载组件时延迟关闭) */
5
- delayClose?: boolean;
6
4
  /** 弹出层属性 [PopoverProps](/components/other/popover#popover-props)*/
7
5
  popoverProps?: PopoverProps;
8
6
  }
@@ -15,6 +13,8 @@ export interface DropdownSlots {
15
13
  export interface DroptionProps {
16
14
  /** 标题 */
17
15
  title?: string;
16
+ /** 延迟关闭(用于卸载组件时延迟关闭) */
17
+ delayClose?: boolean;
18
18
  }
19
19
  export interface DroptionSlots {
20
20
  /** 默认 */
@@ -51,10 +51,11 @@ var O = /*@__PURE__*/ u({
51
51
  E(() => M.value, () => {
52
52
  N.value?.collapsed || k?.requestUpdate({
53
53
  id: j,
54
- size: V.value
54
+ size: V.value,
55
+ sizeUnit: R.value ? L(M.value) : "%"
55
56
  });
56
57
  }), E(() => N.value?.size, (e) => {
57
- if (e == null || z.value <= 0) return;
58
+ if (e == null || z.value <= 0 || !R.value) return;
58
59
  let t = H(e);
59
60
  String(t) !== String(M.value) && (M.value = t);
60
61
  }), E(() => x.minSize, () => k?.requestUpdate({
@@ -70,12 +71,17 @@ var O = /*@__PURE__*/ u({
70
71
  e !== void 0 && p("collapsed", e);
71
72
  }), t(i(() => A.value?.parentElement), () => {
72
73
  let e = z.value;
73
- B(), !(e > 0 || z.value <= 0) && N.value && (k?.requestUpdate({
74
+ B(), k?.requestUpdate({
75
+ id: j,
76
+ min: I(x.minSize, z.value),
77
+ max: I(x.maxSize, z.value)
78
+ }), !(e > 0 || z.value <= 0) && N.value && (k?.requestUpdate({
74
79
  id: j,
75
80
  min: I(x.minSize, z.value),
76
81
  max: I(x.maxSize, z.value),
77
82
  givenSize: R.value ? V.value : null,
78
- size: V.value
83
+ size: V.value,
84
+ sizeUnit: R.value ? L(M.value) : "%"
79
85
  }), k?.requestReset());
80
86
  }), h(() => {
81
87
  B(), k?.paneAdd({
@@ -85,6 +91,7 @@ var O = /*@__PURE__*/ u({
85
91
  max: I(x.maxSize, z.value),
86
92
  givenSize: R.value ? V.value : null,
87
93
  size: V.value,
94
+ sizeUnit: R.value ? L(M.value) : "%",
88
95
  collapsible: x.collapsible
89
96
  });
90
97
  }), m(() => k?.paneRemove(j));
@@ -1,10 +1,11 @@
1
1
  import { useNamespace as e } from "../../../hooks/src/use-namespace.mjs";
2
+ import { useResizeObserver as t } from "../../../hooks/src/use-resize-observer.mjs";
2
3
  import "../../../hooks/index.mjs";
3
- import { splitContextKey as t } from "./types.mjs";
4
- import n from "./split-bar.vue.mjs";
5
- import { computed as r, createComponent as i, createIf as a, createSlot as o, defineVaporComponent as s, nextTick as c, onBeforeUnmount as l, onMounted as u, provide as d, ref as f, renderEffect as p, setClass as m, setInsertionState as h, setStaticTemplateRef as g, template as _, toRefs as ee, unref as te, useTemplateRef as ne } from "vue";
4
+ import { splitContextKey as n } from "./types.mjs";
5
+ import r from "./split-bar.vue.mjs";
6
+ import { computed as i, createComponent as a, createIf as o, createSlot as s, defineVaporComponent as c, nextTick as l, onBeforeUnmount as u, onMounted as ee, provide as te, ref as d, renderEffect as f, setClass as p, setInsertionState as m, setStaticTemplateRef as h, template as g, toRefs as _, unref as v, useTemplateRef as y } from "vue";
6
7
  //#region ../components/src/split/split.vue?vue&type=script&setup=true&vapor=true&lang.ts
7
- var re = _("<div>", 1), v = /*@__PURE__*/ s({
8
+ var ne = g("<div>", 1), b = /*@__PURE__*/ c({
8
9
  name: "SSplit",
9
10
  __name: "split",
10
11
  props: {
@@ -27,166 +28,185 @@ var re = _("<div>", 1), v = /*@__PURE__*/ s({
27
28
  "bar-click",
28
29
  "bar-dblclick"
29
30
  ],
30
- setup(s, { emit: _ }) {
31
- let v = s, y = _, b = e("split"), x = ne("containerRef"), S = f([]), C = r(() => S.value.reduce((e, t) => (e[t.id] = t) && e, {})), w = r(() => S.value.length), T = f(!1), E = f({
31
+ setup(c, { emit: g }) {
32
+ let b = c, re = g, x = e("split"), S = y("containerRef"), C = d([]), w = i(() => C.value.reduce((e, t) => (e[t.id] = t) && e, {})), T = i(() => C.value.length), E = d(!1), D = d(0);
33
+ t(S, () => {
34
+ if (!S.value) return;
35
+ let e = b.vertical ? S.value.clientHeight : S.value.clientWidth, t = D.value;
36
+ if (D.value = e, t <= 0 || e <= 0 || t === e) return;
37
+ let n = t / e, r = 0;
38
+ for (let e of C.value) if (e.sizeUnit === "px" && e.size != null) {
39
+ let t = e.size * n;
40
+ r += t - e.size;
41
+ }
42
+ if (Math.abs(r) < .01) return;
43
+ let i = C.value.filter((e) => e.sizeUnit !== "px"), a = i.reduce((e, t) => e + (t.size || 0), 0);
44
+ for (let e of C.value) if (e.sizeUnit === "px" && e.size != null) e.size *= n;
45
+ else if (i.length > 0 && a > 0) {
46
+ let t = (e.size || 0) / a, n = (e.size || 0) - r * t;
47
+ e.size = Math.max(Math.min(n, e.max ?? 100), e.min ?? 0);
48
+ }
49
+ E.value && Z("resized");
50
+ });
51
+ let O = d({
32
52
  mouseDown: !1,
33
53
  dragging: !1,
34
54
  activeBar: null,
35
55
  cursorOffset: 0
36
- }), D = f({
56
+ }), k = d({
37
57
  bar: null,
38
58
  timeoutId: null
39
- }), ie = () => {
40
- document.addEventListener("mousemove", k, { passive: !1 }), document.addEventListener("mouseup", A), "ontouchstart" in window && (document.addEventListener("touchmove", k, { passive: !1 }), document.addEventListener("touchend", A));
41
- }, ae = () => {
42
- document.removeEventListener("mousemove", k), document.removeEventListener("mouseup", A), "ontouchstart" in window && (document.removeEventListener("touchmove", k), document.removeEventListener("touchend", A));
43
- }, O = (e, t) => {
44
- let n = e.target?.closest(`.${b.e("bar")}`);
59
+ }), A = () => {
60
+ document.addEventListener("mousemove", M, { passive: !1 }), document.addEventListener("mouseup", N), "ontouchstart" in window && (document.addEventListener("touchmove", M, { passive: !1 }), document.addEventListener("touchend", N));
61
+ }, ie = () => {
62
+ document.removeEventListener("mousemove", M), document.removeEventListener("mouseup", N), "ontouchstart" in window && (document.removeEventListener("touchmove", M), document.removeEventListener("touchend", N));
63
+ }, j = (e, t) => {
64
+ let n = e.target?.closest(`.${x.e("bar")}`);
45
65
  if (n) {
46
66
  let { left: t, top: r } = n.getBoundingClientRect(), { clientX: i, clientY: a } = "ontouchstart" in window && "touches" in e ? e.touches[0] : e;
47
- E.value.cursorOffset = v.vertical ? a - r : i - t;
67
+ O.value.cursorOffset = b.vertical ? a - r : i - t;
48
68
  }
49
- ie(), E.value.mouseDown = !0, E.value.activeBar = t, document.documentElement.style.cursor = v.vertical ? "row-resize" : "col-resize";
50
- }, k = (e) => {
51
- E.value.mouseDown && (e.preventDefault(), E.value.dragging || (window.getSelection()?.removeAllRanges(), E.value.dragging = !0), requestAnimationFrame(() => {
52
- I(P(e)), X("resize", { event: e }, !0);
69
+ A(), O.value.mouseDown = !0, O.value.activeBar = t, document.documentElement.style.cursor = b.vertical ? "row-resize" : "col-resize";
70
+ }, M = (e) => {
71
+ O.value.mouseDown && (e.preventDefault(), O.value.dragging || (window.getSelection()?.removeAllRanges(), O.value.dragging = !0), requestAnimationFrame(() => {
72
+ z(L(e)), Z("resize", { event: e }, !0);
53
73
  }));
54
- }, A = (e) => {
55
- E.value.dragging && (window.getSelection()?.removeAllRanges(), X("resized", { event: e }, !0)), E.value.mouseDown = !1, E.value.activeBar = null, setTimeout(() => {
56
- E.value.dragging = !1, ae(), document.documentElement.style.cursor = "";
74
+ }, N = (e) => {
75
+ O.value.dragging && (window.getSelection()?.removeAllRanges(), Z("resized", { event: e }, !0)), O.value.mouseDown = !1, O.value.activeBar = null, setTimeout(() => {
76
+ O.value.dragging = !1, ie(), document.documentElement.style.cursor = "";
57
77
  }, 100);
58
- }, j = (e, t) => {
59
- "ontouchstart" in window && (e.preventDefault(), D.value.bar === t ? (clearTimeout(D.value.timeoutId), D.value.timeoutId = null, M(e, t), D.value.bar = null) : (D.value.bar = t, D.value.timeoutId = setTimeout(() => D.value.bar = null, 500))), E.value.dragging || X("bar-click", {
78
+ }, P = (e, t) => {
79
+ "ontouchstart" in window && (e.preventDefault(), k.value.bar === t ? (clearTimeout(k.value.timeoutId), k.value.timeoutId = null, F(e, t), k.value.bar = null) : (k.value.bar = t, k.value.timeoutId = setTimeout(() => k.value.bar = null, 500))), O.value.dragging || Z("bar-click", {
60
80
  event: e,
61
81
  index: t
62
82
  }, !0);
63
- }, M = (e, t) => {
64
- if (X("bar-dblclick", {
83
+ }, F = (e, t) => {
84
+ if (Z("bar-dblclick", {
65
85
  event: e,
66
86
  index: t
67
- }, !0), v.maximizePane) {
87
+ }, !0), b.maximizePane) {
68
88
  let n = 0;
69
- S.value = S.value.map((e, r) => (e.size = r === t ? e.max : e.min, r !== t && (n += e.min), e)), S.value[t].size = S.value[t].size - n, X("pane-maximize", {
89
+ C.value = C.value.map((e, r) => (e.size = r === t ? e.max : e.min, r !== t && (n += e.min), e)), C.value[t].size = C.value[t].size - n, Z("pane-maximize", {
70
90
  event: e,
71
91
  index: t,
72
- pane: S.value[t]
73
- }), X("resized", {
92
+ pane: C.value[t]
93
+ }), Z("resized", {
74
94
  event: e,
75
95
  index: t
76
96
  }, !0);
77
97
  }
78
- }, N = (e, t) => {
79
- let n = C.value[t];
80
- n && X("pane-click", {
98
+ }, I = (e, t) => {
99
+ let n = w.value[t];
100
+ n && Z("pane-click", {
81
101
  event: e,
82
102
  index: n.index,
83
103
  pane: n
84
104
  });
85
- }, P = (e) => {
86
- let t = x.value.getBoundingClientRect(), { clientX: n, clientY: r } = "ontouchstart" in window && "touches" in e ? e.touches[0] : e;
105
+ }, L = (e) => {
106
+ let t = S.value.getBoundingClientRect(), { clientX: n, clientY: r } = "ontouchstart" in window && "touches" in e ? e.touches[0] : e;
87
107
  return {
88
- x: n - (v.vertical ? 0 : E.value.cursorOffset) - t.left,
89
- y: r - (v.vertical ? E.value.cursorOffset : 0) - t.top
108
+ x: n - (b.vertical ? 0 : O.value.cursorOffset) - t.left,
109
+ y: r - (b.vertical ? O.value.cursorOffset : 0) - t.top
90
110
  };
91
- }, F = (e) => {
92
- let t = e[v.vertical ? "y" : "x"], n = x.value[v.vertical ? "clientHeight" : "clientWidth"];
111
+ }, R = (e) => {
112
+ let t = e[b.vertical ? "y" : "x"], n = S.value[b.vertical ? "clientHeight" : "clientWidth"];
93
113
  return t * 100 / n;
94
- }, I = (e) => {
95
- L(F(e));
96
- }, L = (e) => {
97
- let t = E.value.activeBar;
98
- if (t === null || t >= S.value.length - 1) return;
114
+ }, z = (e) => {
115
+ B(R(e));
116
+ }, B = (e) => {
117
+ let t = O.value.activeBar;
118
+ if (t === null || t >= C.value.length - 1) return;
99
119
  let n = {
100
- prevPanesSize: z(t),
101
- nextPanesSize: B(t),
120
+ prevPanesSize: H(t),
121
+ nextPanesSize: U(t),
102
122
  prevReachedMinPanes: 0,
103
123
  nextReachedMinPanes: 0
104
- }, r = 0 + (v.pushOtherPanes ? 0 : n.prevPanesSize), i = 100 - (v.pushOtherPanes ? 0 : n.nextPanesSize);
124
+ }, r = 0 + (b.pushOtherPanes ? 0 : n.prevPanesSize), i = 100 - (b.pushOtherPanes ? 0 : n.nextPanesSize);
105
125
  e = Math.max(Math.min(e, i), r);
106
- let a = [t, t + 1], o = S.value[a[0]] || null, s = S.value[a[1]] || null, c = o !== null && o.max < 100 && e >= o.max + n.prevPanesSize, l = s !== null && s.max < 100 && e <= 100 - (s.max + B(t + 1));
126
+ let a = [t, t + 1], o = C.value[a[0]] || null, s = C.value[a[1]] || null, c = o !== null && o.max < 100 && e >= o.max + n.prevPanesSize, l = s !== null && s.max < 100 && e <= 100 - (s.max + U(t + 1));
107
127
  if (c || l) {
108
- c ? (o.size = o.max, s.size = Math.min(Math.max(100 - o.max - n.prevPanesSize - n.nextPanesSize, s.min), s.max)) : (o.size = Math.min(Math.max(100 - s.max - n.prevPanesSize - B(t + 1), o.min), o.max), s.size = s.max);
128
+ c ? (o.size = o.max, s.size = Math.min(Math.max(100 - o.max - n.prevPanesSize - n.nextPanesSize, s.min), s.max)) : (o.size = Math.min(Math.max(100 - s.max - n.prevPanesSize - U(t + 1), o.min), o.max), s.size = s.max);
109
129
  return;
110
130
  }
111
- if (v.pushOtherPanes) {
112
- let t = R(n, e);
131
+ if (b.pushOtherPanes) {
132
+ let t = V(n, e);
113
133
  if (!t) return;
114
- ({sums: n, panesToResize: a} = t), o = S.value[a[0]] || null, s = S.value[a[1]] || null;
134
+ ({sums: n, panesToResize: a} = t), o = C.value[a[0]] || null, s = C.value[a[1]] || null;
115
135
  }
116
136
  o !== null && (o.size = Math.min(Math.max(e - n.prevPanesSize - n.prevReachedMinPanes, o.min), o.max)), s !== null && (s.size = Math.min(Math.max(100 - e - n.nextPanesSize - n.nextReachedMinPanes, s.min), s.max));
117
- }, R = (e, t) => {
118
- let n = E.value.activeBar, r = [n, n + 1];
119
- if (t < e.prevPanesSize + S.value[r[0]].min) {
120
- if (r[0] = V(n).index, e.prevReachedMinPanes = 0, r[0] < n && S.value.forEach((t, i) => {
137
+ }, V = (e, t) => {
138
+ let n = O.value.activeBar, r = [n, n + 1];
139
+ if (t < e.prevPanesSize + C.value[r[0]].min) {
140
+ if (r[0] = W(n).index, e.prevReachedMinPanes = 0, r[0] < n && C.value.forEach((t, i) => {
121
141
  i > r[0] && i <= n && (t.size = t.min, e.prevReachedMinPanes += t.min);
122
- }), r[0] === void 0) return e.prevReachedMinPanes = 0, S.value[0].size = S.value[0].min, S.value.forEach((t, r) => {
142
+ }), r[0] === void 0) return e.prevReachedMinPanes = 0, C.value[0].size = C.value[0].min, C.value.forEach((t, r) => {
123
143
  r > 0 && r <= n && (t.size = t.min, e.prevReachedMinPanes += t.min);
124
- }), S.value[r[1]].size = 100 - e.prevReachedMinPanes - S.value[0].min - e.prevPanesSize - e.nextPanesSize, null;
125
- e.prevPanesSize = z(r[0]);
144
+ }), C.value[r[1]].size = 100 - e.prevReachedMinPanes - C.value[0].min - e.prevPanesSize - e.nextPanesSize, null;
145
+ e.prevPanesSize = H(r[0]);
126
146
  }
127
- return t > 100 - e.nextPanesSize - S.value[r[1]].min && (r[1] = H(n).index, e.nextReachedMinPanes = 0, r[1] > n + 1 && S.value.forEach((t, i) => {
147
+ return t > 100 - e.nextPanesSize - C.value[r[1]].min && (r[1] = G(n).index, e.nextReachedMinPanes = 0, r[1] > n + 1 && C.value.forEach((t, i) => {
128
148
  i > n && i < r[1] && (t.size = t.min, e.nextReachedMinPanes += t.min);
129
- }), e.nextPanesSize = r[1] === void 0 ? 0 : B(r[1] - 1), r[1] === void 0) ? (e.nextReachedMinPanes = 0, S.value.forEach((t, r) => {
149
+ }), e.nextPanesSize = r[1] === void 0 ? 0 : U(r[1] - 1), r[1] === void 0) ? (e.nextReachedMinPanes = 0, C.value.forEach((t, r) => {
130
150
  r >= n + 1 && (t.size = t.min, e.nextReachedMinPanes += t.min);
131
- }), r[0] !== void 0 && (S.value[r[0]].size = 100 - e.prevPanesSize - B(r[0] - 1)), null) : {
151
+ }), r[0] !== void 0 && (C.value[r[0]].size = 100 - e.prevPanesSize - U(r[0] - 1)), null) : {
132
152
  sums: e,
133
153
  panesToResize: r
134
154
  };
135
- }, z = (e) => S.value.reduce((t, n, r) => t + (r < e ? n.size : 0), 0), B = (e) => S.value.reduce((t, n, r) => t + (r > e + 1 ? n.size : 0), 0), V = (e) => [...S.value].reverse().find((t) => t.index < e && t.size > t.min) || {}, H = (e) => S.value.find((t) => t.index > e + 1 && t.size > t.min) || {}, U = () => {
136
- let e = Array.from(x.value?.children || []);
155
+ }, H = (e) => C.value.reduce((t, n, r) => t + (r < e ? n.size : 0), 0), U = (e) => C.value.reduce((t, n, r) => t + (r > e + 1 ? n.size : 0), 0), W = (e) => [...C.value].reverse().find((t) => t.index < e && t.size > t.min) || {}, G = (e) => C.value.find((t) => t.index > e + 1 && t.size > t.min) || {}, K = () => {
156
+ let e = Array.from(S.value?.children || []);
137
157
  for (let t of e) {
138
- let e = t.classList.contains(b.e("pane")), n = t.classList.contains(b.e("bar"));
158
+ let e = t.classList.contains(x.e("pane")), n = t.classList.contains(x.e("bar"));
139
159
  !e && !n && (t.remove(), console.warn("Split: Only <s-split-pane> elements are allowed at the root of <s-split>. One of your DOM nodes was removed."));
140
160
  }
141
- }, W = ({ id: e, ...t }) => {
142
- let n = C.value[e];
161
+ }, q = ({ id: e, ...t }) => {
162
+ let n = w.value[e];
143
163
  if (n) for (let [e, r] of Object.entries(t)) n[e] = r;
144
- }, G = !1, K = (e) => {
164
+ }, J = !1, ae = (e) => {
145
165
  let t = -1;
146
- Array.from(x.value?.children || []).some((n) => {
166
+ Array.from(S.value?.children || []).some((n) => {
147
167
  let r = n;
148
- return r.className.includes(b.e("pane")) && t++, r.isSameNode(e.el ?? null);
149
- }), S.value.splice(t, 0, {
168
+ return r.className.includes(x.e("pane")) && t++, r.isSameNode(e.el ?? null);
169
+ }), C.value.splice(t, 0, {
150
170
  ...e,
151
171
  index: t
152
- }), S.value.forEach((e, t) => e.index = t), T.value && !G && (G = !0, c(() => {
153
- J({ addedPane: S.value[t] }), G = !1;
172
+ }), C.value.forEach((e, t) => e.index = t), E.value && !J && (J = !0, l(() => {
173
+ Y({ addedPane: C.value[t] }), J = !1;
154
174
  }));
155
- }, q = (e) => {
156
- let t = S.value.findIndex((t) => t.id === e);
157
- S.value[t].el = null;
158
- let n = S.value.splice(t, 1)[0];
159
- S.value.forEach((e, t) => e.index = t), c(() => {
160
- J({ removedPane: {
175
+ }, oe = (e) => {
176
+ let t = C.value.findIndex((t) => t.id === e);
177
+ C.value[t].el = null;
178
+ let n = C.value.splice(t, 1)[0];
179
+ C.value.forEach((e, t) => e.index = t), l(() => {
180
+ Y({ removedPane: {
161
181
  ...n,
162
182
  index: t
163
183
  } });
164
184
  });
165
- }, J = (e = {}) => {
166
- !e.addedPane && !e.removedPane ? se() : S.value.some((e) => e.givenSize !== null || e.min || e.max < 100) ? ce() : oe(), T.value && X("resized");
167
- }, oe = () => {
168
- let e = 100 / w.value, t = 100, n = [], r = [];
169
- for (let i of S.value) i.size = Math.max(Math.min(e, i.max), i.min), t -= i.size, i.size >= i.max && n.push(i.id), i.size <= i.min && r.push(i.id);
170
- Math.abs(t) > .1 && Y(t, n, r);
185
+ }, Y = (e = {}) => {
186
+ !e.addedPane && !e.removedPane ? ce() : C.value.some((e) => e.givenSize !== null || e.min || e.max < 100) ? le() : se(), E.value && Z("resized");
171
187
  }, se = () => {
188
+ let e = 100 / T.value, t = 100, n = [], r = [];
189
+ for (let i of C.value) i.size = Math.max(Math.min(e, i.max), i.min), t -= i.size, i.size >= i.max && n.push(i.id), i.size <= i.min && r.push(i.id);
190
+ Math.abs(t) > .1 && X(t, n, r);
191
+ }, ce = () => {
172
192
  let e = 100, t = [], n = [], r = 0;
173
- for (let i of S.value) e -= i.size, i.givenSize !== null && r++, i.size >= i.max && t.push(i.id), i.size <= i.min && n.push(i.id);
193
+ for (let i of C.value) e -= i.size, i.givenSize !== null && r++, i.size >= i.max && t.push(i.id), i.size <= i.min && n.push(i.id);
174
194
  let i = 100;
175
195
  if (e > .1) {
176
- for (let t of S.value) t.givenSize === null && (t.size = Math.max(Math.min(e / (w.value - r), t.max), t.min)), i -= t.size;
177
- i > .1 && Y(i, t, n);
196
+ for (let t of C.value) t.givenSize === null && (t.size = Math.max(Math.min(e / (T.value - r), t.max), t.min)), i -= t.size;
197
+ i > .1 && X(i, t, n);
178
198
  }
179
- }, ce = () => {
180
- let e = S.value.reduce((e, t) => e + (t.givenSize === null ? 0 : t.givenSize), 0), t = S.value.filter((e) => e.givenSize === null).length, n = t > 0 ? (100 - e) / t : 0, r = 0, i = [], a = [];
181
- for (let e of S.value) r -= e.size, e.size >= e.max && i.push(e.id), e.size <= e.min && a.push(e.id);
199
+ }, le = () => {
200
+ let e = C.value.reduce((e, t) => e + (t.givenSize === null ? 0 : t.givenSize), 0), t = C.value.filter((e) => e.givenSize === null).length, n = t > 0 ? (100 - e) / t : 0, r = 0, i = [], a = [];
201
+ for (let e of C.value) r -= e.size, e.size >= e.max && i.push(e.id), e.size <= e.min && a.push(e.id);
182
202
  if (!(Math.abs(r) < .1)) {
183
203
  r = 100;
184
- for (let e of S.value) e.givenSize === null && (e.size = Math.max(Math.min(n, e.max), e.min)), r -= e.size, e.size >= e.max && i.push(e.id), e.size <= e.min && a.push(e.id);
185
- Math.abs(r) > .1 && Y(r, i, a);
204
+ for (let e of C.value) e.givenSize === null && (e.size = Math.max(Math.min(n, e.max), e.min)), r -= e.size, e.size >= e.max && i.push(e.id), e.size <= e.min && a.push(e.id);
205
+ Math.abs(r) > .1 && X(r, i, a);
186
206
  }
187
- }, Y = (e, t, n) => {
207
+ }, X = (e, t, n) => {
188
208
  let r;
189
- r = e > 0 ? e / (w.value - t.length) : e / (w.value - n.length), S.value.forEach((i) => {
209
+ r = e > 0 ? e / (T.value - t.length) : e / (T.value - n.length), C.value.forEach((i) => {
190
210
  if (e > 0 && !t.includes(i.id)) {
191
211
  let t = Math.max(Math.min(i.size + r, i.max), i.min), n = t - i.size;
192
212
  e -= n, i.size = t;
@@ -194,76 +214,76 @@ var re = _("<div>", 1), v = /*@__PURE__*/ s({
194
214
  let t = Math.max(Math.min(i.size + r, i.max), i.min), n = t - i.size;
195
215
  e -= n, i.size = t;
196
216
  }
197
- }), Math.abs(e) > .1 && T.value && console.warn("Split: 由于窗格的约束,无法正确调整其大小。");
198
- }, X = (e, t, n = !1) => {
199
- let r = t?.index ?? E.value.activeBar ?? null;
200
- y(e, {
217
+ }), Math.abs(e) > .1 && E.value && console.warn("Split: 由于窗格的约束,无法正确调整其大小。");
218
+ }, Z = (e, t, n = !1) => {
219
+ let r = t?.index ?? O.value.activeBar ?? null;
220
+ re(e, {
201
221
  ...t,
202
222
  ...r !== null && { index: r },
203
223
  ...n && r !== null && {
204
- prevPane: S.value[r - +!!v.firstBar],
205
- nextPane: S.value[r + +!v.firstBar]
224
+ prevPane: C.value[r - +!!b.firstBar],
225
+ nextPane: C.value[r + +!b.firstBar]
206
226
  },
207
- panes: S.value.map((e) => ({
227
+ panes: C.value.map((e) => ({
208
228
  min: e.min,
209
229
  max: e.max,
210
230
  size: e.size
211
231
  }))
212
232
  });
213
- }, Z = !1, le = () => {
214
- !T.value || Z || (Z = !0, c(() => {
215
- S.value.forEach((e) => {
233
+ }, Q = !1, ue = () => {
234
+ !E.value || Q || (Q = !0, l(() => {
235
+ C.value.forEach((e) => {
216
236
  e.size = e.givenSize ?? 0;
217
- }), J(), Z = !1;
237
+ }), Y(), Q = !1;
218
238
  }));
219
239
  };
220
- u(() => {
221
- U(), J(), T.value = !0;
222
- }), l(() => T.value = !1);
223
- let ue = (e, t) => {
224
- let n = e > 0 ? S.value[e - 1] : null, r = S.value[e];
240
+ ee(() => {
241
+ K(), S.value && (D.value = b.vertical ? S.value.clientHeight : S.value.clientWidth), Y(), E.value = !0;
242
+ }), u(() => E.value = !1);
243
+ let de = (e, t) => {
244
+ let n = e > 0 ? C.value[e - 1] : null, r = C.value[e];
225
245
  if (t === "left") {
226
246
  if (!n) return;
227
247
  if (n.collapsed) {
228
- let e = S.value.find((e) => e.id === n.absorberId);
248
+ let e = C.value.find((e) => e.id === n.absorberId);
229
249
  e && (e.size = (e.size || 0) - (n.originalSize || 0)), n.size = n.originalSize, n.collapsed = !1, n.absorberId = null;
230
250
  } else n.originalSize = n.size || 0, n.size = 0, n.collapsed = !0, n.absorberId = r?.id || null, r && (r.size = (r.size || 0) + (n.originalSize || 0));
231
251
  } else {
232
252
  if (!r) return;
233
253
  if (r.collapsed) {
234
- let e = S.value.find((e) => e.id === r.absorberId);
254
+ let e = C.value.find((e) => e.id === r.absorberId);
235
255
  e && (e.size = (e.size || 0) - (r.originalSize || 0)), r.size = r.originalSize, r.collapsed = !1, r.absorberId = null;
236
256
  } else r.originalSize = r.size || 0, r.size = 0, r.collapsed = !0, r.absorberId = n?.id || null, n && (n.size = (n.size || 0) + (r.originalSize || 0));
237
257
  }
238
- }, { vertical: Q } = ee(v);
239
- d(t, {
240
- panes: S,
241
- indexedPanes: C,
242
- vertical: Q,
243
- requestUpdate: W,
244
- requestReset: le,
245
- paneAdd: K,
246
- paneRemove: q,
247
- paneClick: N,
248
- barMouseDown: O,
249
- barClick: j,
250
- barDblClick: M,
251
- collapsePane: ue
258
+ }, { vertical: fe } = _(b);
259
+ te(n, {
260
+ panes: C,
261
+ indexedPanes: w,
262
+ vertical: fe,
263
+ requestUpdate: q,
264
+ requestReset: ue,
265
+ paneAdd: ae,
266
+ paneRemove: oe,
267
+ paneClick: I,
268
+ barMouseDown: j,
269
+ barClick: P,
270
+ barDblClick: F,
271
+ collapsePane: de
252
272
  });
253
- let $ = re();
254
- return p(() => {
255
- let e = te(b);
256
- m($, [
273
+ let $ = ne();
274
+ return f(() => {
275
+ let e = v(x);
276
+ p($, [
257
277
  e.b(),
258
- e.m(v.vertical ? "vertical" : "horizontal"),
259
- e.is("dragging", E.value.dragging),
260
- e.is("ready", T.value)
278
+ e.m(b.vertical ? "vertical" : "horizontal"),
279
+ e.is("dragging", O.value.dragging),
280
+ e.is("ready", E.value)
261
281
  ]);
262
- }), h($, null, 0), a(() => v.firstBar, () => i(n, {
282
+ }), m($, null, 0), o(() => b.firstBar, () => a(r, {
263
283
  index: 0,
264
284
  first: ""
265
- })), h($, null, 1), o(), g($, x, null, "containerRef"), $;
285
+ })), m($, null, 1), s(), h($, S, null, "containerRef"), $;
266
286
  }
267
287
  });
268
288
  //#endregion
269
- export { v as default };
289
+ export { b as default };
@@ -84,6 +84,7 @@ export interface SplitPaneInfo {
84
84
  max?: number;
85
85
  givenSize?: number | null;
86
86
  size?: number;
87
+ sizeUnit?: "px" | "%";
87
88
  index?: number;
88
89
  collapsible?: boolean;
89
90
  collapsed?: boolean;
@@ -127,6 +127,17 @@
127
127
  &:active {
128
128
  color: getCssVar("color", "primary-7");
129
129
  }
130
+ @include when(disabled, loading) {
131
+ cursor: not-allowed;
132
+ color: getCssVar("color", "text-3");
133
+ background-color: transparent;
134
+ border: 1px solid transparent;
135
+ &:hover {
136
+ color: getCssVar("color", "text-3");
137
+ background-color: transparent;
138
+ border: 1px solid transparent;
139
+ }
140
+ }
130
141
  }
131
142
  }
132
143
 
@@ -176,6 +187,13 @@
176
187
  &:active {
177
188
  color: getCssVar("color", #{$type}-7);
178
189
  }
190
+ @include when(disabled, loading) {
191
+ cursor: not-allowed;
192
+ color: getCssVar("color", #{$type}-3);
193
+ &:hover {
194
+ color: getCssVar("color", #{$type}-3);
195
+ }
196
+ }
179
197
  }
180
198
  @include this-is(outline) {
181
199
  background-color: transparent;
@@ -737,10 +737,6 @@
737
737
  "s-drawer/maskStyle": {
738
738
  "description": "抽屉遮罩自定义样式"
739
739
  },
740
- "s-dropdown/delayClose": {
741
- "description": "延迟关闭(用于卸载组件时延迟关闭)",
742
- "type": "boolean"
743
- },
744
740
  "s-dropdown/popoverProps": {
745
741
  "description": "弹出层属性 [PopoverProps](/components/other/popover#popover-props)"
746
742
  },
@@ -748,6 +744,10 @@
748
744
  "description": "标题",
749
745
  "type": "string"
750
746
  },
747
+ "s-droption/delayClose": {
748
+ "description": "延迟关闭(用于卸载组件时延迟关闭)",
749
+ "type": "boolean"
750
+ },
751
751
  "s-dsubmenu/title": {
752
752
  "description": "标题",
753
753
  "type": "string"
@@ -315,13 +315,13 @@
315
315
  },
316
316
  "s-dropdown": {
317
317
  "attributes": [
318
- "delayClose",
319
318
  "popoverProps"
320
319
  ]
321
320
  },
322
321
  "s-droption": {
323
322
  "attributes": [
324
- "title"
323
+ "title",
324
+ "delayClose"
325
325
  ]
326
326
  },
327
327
  "s-dsubmenu": {
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
4
  "name": "savor-ui",
5
- "version": "0.19.0",
5
+ "version": "0.20.0",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -1926,14 +1926,6 @@
1926
1926
  {
1927
1927
  "name": "s-dropdown",
1928
1928
  "attributes": [
1929
- {
1930
- "name": "delayClose",
1931
- "description": "延迟关闭(用于卸载组件时延迟关闭)",
1932
- "value": {
1933
- "type": "boolean",
1934
- "kind": "expression"
1935
- }
1936
- },
1937
1929
  {
1938
1930
  "name": "popoverProps",
1939
1931
  "description": "弹出层属性 [PopoverProps](/components/other/popover#popover-props)",
@@ -1965,6 +1957,14 @@
1965
1957
  "type": "string",
1966
1958
  "kind": "expression"
1967
1959
  }
1960
+ },
1961
+ {
1962
+ "name": "delayClose",
1963
+ "description": "延迟关闭(用于卸载组件时延迟关闭)",
1964
+ "value": {
1965
+ "type": "boolean",
1966
+ "kind": "expression"
1967
+ }
1968
1968
  }
1969
1969
  ],
1970
1970
  "events": [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "savor-ui",
3
- "version": "0.20.0",
3
+ "version": "0.20.1",
4
4
  "description": "A Vue3 Components Library",
5
5
  "keywords": [
6
6
  "component library",