@fewangsit/wangsvue-fats 1.0.1-alpha.41 → 1.0.1-alpha.42

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.
@@ -1,3 +1,5 @@
1
+ import type { Config } from '@lottiefiles/dotlottie-web';
2
+
1
3
  import { ClassComponent } from '../ts-helpers.d';
2
4
 
3
5
  export interface AnimationDefaultConfig {
@@ -5,7 +7,12 @@ export interface AnimationDefaultConfig {
5
7
  }
6
8
 
7
9
  export interface AnimationProps {
8
- animation: 'no-data' | 'loading-plane' | 'loading-page' | 'loading-table';
10
+ animation:
11
+ | 'no-data'
12
+ | 'loading-plane'
13
+ | 'loading-page'
14
+ | 'loading-table'
15
+ | 'scan-qr';
9
16
  /**
10
17
  * @default true
11
18
  */
@@ -14,6 +21,11 @@ export interface AnimationProps {
14
21
  * @default true
15
22
  */
16
23
  loop?: boolean;
24
+ /**
25
+ * Custom configurations for the animation
26
+ * Reference: https://developers.lottiefiles.com/docs/dotlottie-player/dotlottie-web/api/config/
27
+ */
28
+ customConfig?: Partial<Config>;
17
29
  }
18
30
 
19
31
  /**
@@ -1,7 +1,7 @@
1
- import { defineComponent as p, computed as m, ref as u, onMounted as c, createElementBlock as d, openBlock as f, mergeProps as g, createElementVNode as y } from "vue";
2
- import { u as h } from "../plugins/WangsVue.es.js";
3
- import { m as v } from "../utils/mergePropsWithDefaults.util.es.js";
4
- const w = (n, e, i) => {
1
+ import { defineComponent as p, computed as m, ref as u, onMounted as c, createElementBlock as d, openBlock as f, mergeProps as g, createElementVNode as w } from "vue";
2
+ import { u as y } from "../plugins/WangsVue.es.js";
3
+ import { m as h } from "../utils/mergePropsWithDefaults.util.es.js";
4
+ const v = (n, e, i) => {
5
5
  const o = n[e];
6
6
  return o ? typeof o == "function" ? o() : Promise.resolve(o) : new Promise((a, s) => {
7
7
  (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(
@@ -18,17 +18,19 @@ const w = (n, e, i) => {
18
18
  props: {
19
19
  animation: {},
20
20
  autoplay: { type: Boolean, default: !0 },
21
- loop: { type: Boolean, default: !0 }
21
+ loop: { type: Boolean, default: !0 },
22
+ customConfig: {}
22
23
  },
23
24
  setup(n) {
24
- const e = n, { defaultProps: i } = h("Animation"), o = m(() => v(e, i)), a = u(null);
25
+ const e = n, { defaultProps: i } = y("Animation"), o = m(() => h(e, i)), a = u(null);
25
26
  c(async () => {
26
- const l = await w(/* @__PURE__ */ Object.assign({ "../../assets/lottie/admin/loading-page.lottie": () => import("../assets/lottiejs/loading-page.es.js").then((t) => t.l), "../../assets/lottie/admin/loading-table.lottie": () => import("../assets/lottiejs/loading-table.es.js").then((t) => t.l), "../../assets/lottie/admin/no-data.lottie": () => import("../assets/lottiejs/no-data.es.js").then((t) => t.n), "../../assets/lottie/supplyasset/loading-page.lottie": () => import("../assets/lottiejs/loading-page.es.js").then((t) => t.a), "../../assets/lottie/supplyasset/loading-table.lottie": () => import("../assets/lottiejs/loading-table.es.js").then((t) => t.a), "../../assets/lottie/supplyasset/no-data.lottie": () => import("../assets/lottiejs/no-data.es.js").then((t) => t.a), "../../assets/lottie/workspace/loading-page.lottie": () => import("../assets/lottiejs/loading-page.es.js").then((t) => t.b), "../../assets/lottie/workspace/loading-plane.lottie": () => import("../assets/lottiejs/loading-plane.es.js"), "../../assets/lottie/workspace/loading-table.lottie": () => import("../assets/lottiejs/loading-table.es.js").then((t) => t.b), "../../assets/lottie/workspace/no-data.lottie": () => import("../assets/lottiejs/no-data.es.js").then((t) => t.b) }), `../../assets/lottie/${o.value.libPath}/${e.animation}.lottie`, 6), { DotLottie: r } = await s();
27
+ const l = await v(/* @__PURE__ */ Object.assign({ "../../assets/lottie/admin/loading-page.lottie": () => import("../assets/lottiejs/loading-page.es.js").then((t) => t.l), "../../assets/lottie/admin/loading-table.lottie": () => import("../assets/lottiejs/loading-table.es.js").then((t) => t.l), "../../assets/lottie/admin/no-data.lottie": () => import("../assets/lottiejs/no-data.es.js").then((t) => t.n), "../../assets/lottie/supplyasset/loading-page.lottie": () => import("../assets/lottiejs/loading-page.es.js").then((t) => t.a), "../../assets/lottie/supplyasset/loading-table.lottie": () => import("../assets/lottiejs/loading-table.es.js").then((t) => t.a), "../../assets/lottie/supplyasset/no-data.lottie": () => import("../assets/lottiejs/no-data.es.js").then((t) => t.a), "../../assets/lottie/workspace/loading-page.lottie": () => import("../assets/lottiejs/loading-page.es.js").then((t) => t.b), "../../assets/lottie/workspace/loading-plane.lottie": () => import("../assets/lottiejs/loading-plane.es.js"), "../../assets/lottie/workspace/loading-table.lottie": () => import("../assets/lottiejs/loading-table.es.js").then((t) => t.b), "../../assets/lottie/workspace/no-data.lottie": () => import("../assets/lottiejs/no-data.es.js").then((t) => t.b), "../../assets/lottie/workspace/scan-qr.lottie": () => import("../assets/lottiejs/scan-qr.es.js") }), `../../assets/lottie/${o.value.libPath}/${e.animation}.lottie`, 6), { DotLottie: r } = await s();
27
28
  a.value && new r({
28
29
  canvas: a.value,
29
30
  src: l.default,
30
31
  autoplay: e.autoplay,
31
- loop: e.loop
32
+ loop: e.loop,
33
+ ...e.customConfig
32
34
  });
33
35
  });
34
36
  const s = () => "System" in window ? new Function(
@@ -39,7 +41,7 @@ const w = (n, e, i) => {
39
41
  "https://cdn.jsdelivr.net/npm/@lottiefiles/dotlottie-web@0.38.2/+esm"
40
42
  );
41
43
  return (l, r) => (f(), d("div", g({ "data-wv-name": "animation" }, l.$attrs), [
42
- y("canvas", {
44
+ w("canvas", {
43
45
  ref_key: "canvasRef",
44
46
  ref: a,
45
47
  style: { width: "100%", height: "100%" }
@@ -0,0 +1,4 @@
1
+ const A = "data:application/octet-stream;base64,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";
2
+ export {
3
+ A as default
4
+ };
package/badge/index.d.ts CHANGED
@@ -22,6 +22,11 @@ export interface BadgeProps extends BadgeComponentConfigs {
22
22
  * Whether the badge text is editable.
23
23
  */
24
24
  editable?: boolean;
25
+ /**
26
+ * Prevent the badge text from being empty.
27
+ * When set to true, the badge text content will be set to the previous value if it left empty.
28
+ */
29
+ restoreOnEmpty?: boolean;
25
30
  /**
26
31
  * Sets the severity level for styling purposes. This prop might be omitted if getSeverity is provided.
27
32
  */
@@ -34,6 +39,11 @@ export interface BadgeProps extends BadgeComponentConfigs {
34
39
  * Whether to show the remove icon or not. Clicking the remove icon will emit 'remove' event.
35
40
  */
36
41
  removable?: boolean;
42
+ /**
43
+ * Wether to show remove button, but it must be disabled.
44
+ * It will affect nothing when `removable` is truthy
45
+ */
46
+ disableRemoveButton?: boolean;
37
47
  /**
38
48
  * Whether to set badge become disabled.
39
49
  */
@@ -56,7 +66,7 @@ export type BadgeEmits = {
56
66
  * Emits when the text is edited.
57
67
  * Only available when props.editable=true
58
68
  */
59
- 'update:label': [label: string | null];
69
+ 'update:label': [label: string | null, prevLabel: string | null];
60
70
  };
61
71
 
62
72
  /**
package/badge/index.es.js CHANGED
@@ -1,99 +1,101 @@
1
- import { defineComponent as C, computed as r, resolveDirective as w, withDirectives as D, createElementBlock as c, openBlock as i, mergeProps as d, createElementVNode as S, createBlock as T, createCommentVNode as V, toDisplayString as W } from "vue";
2
- import { u as _ } from "../plugins/WangsVue.es.js";
3
- import { m as N } from "../utils/mergePropsWithDefaults.util.es.js";
4
- import { f as P } from "../utils/textFormatter.util.es.js";
5
- import { _ as E } from "../button/index.es.js";
6
- const F = ["contenteditable"], H = {
1
+ import { defineComponent as C, computed as n, resolveDirective as w, withDirectives as D, createElementBlock as c, openBlock as d, mergeProps as p, createElementVNode as S, createBlock as T, createCommentVNode as E, toDisplayString as R } from "vue";
2
+ import { u as V } from "../plugins/WangsVue.es.js";
3
+ import { m as W } from "../utils/mergePropsWithDefaults.util.es.js";
4
+ import { f as _ } from "../utils/textFormatter.util.es.js";
5
+ import { _ as N } from "../button/index.es.js";
6
+ const O = ["contenteditable"], P = {
7
7
  key: 1,
8
8
  "aria-label": "invalid-label"
9
- }, z = /* @__PURE__ */ C({
9
+ }, j = /* @__PURE__ */ C({
10
10
  __name: "Badge",
11
11
  props: {
12
12
  label: {},
13
13
  editable: { type: Boolean },
14
+ restoreOnEmpty: { type: Boolean },
14
15
  severity: {},
15
16
  format: {},
16
17
  removable: { type: Boolean },
18
+ disableRemoveButton: { type: Boolean },
17
19
  disabled: { type: Boolean },
18
20
  tooltip: {},
19
21
  getSeverity: { type: Function }
20
22
  },
21
23
  emits: ["remove", "update:label"],
22
- setup(f, { emit: v }) {
23
- const t = f, n = v, { defaultProps: g } = _("Badge"), y = r(() => N(t, g)), p = r(() => {
24
- const e = typeof t.label;
25
- return e === "number" || e === "string" && t.label && t.label !== "-";
26
- }), s = r(() => {
27
- var e, o;
28
- return t.severity || ((o = (e = y.value).getSeverity) == null ? void 0 : o.call(e, t.label));
29
- }), $ = r(() => {
30
- if (!p.value) return "-";
31
- switch (t.format) {
24
+ setup(v, { emit: f }) {
25
+ const e = v, s = f, { defaultProps: y } = V("Badge"), g = n(() => W(e, y)), b = n(() => {
26
+ const t = typeof e.label;
27
+ return t === "number" || t === "string" && e.label && e.label !== "-";
28
+ }), i = n(() => {
29
+ var t, o;
30
+ return e.severity || ((o = (t = g.value).getSeverity) == null ? void 0 : o.call(t, e.label));
31
+ }), B = n(() => {
32
+ if (!b.value) return "-";
33
+ switch (e.format) {
32
34
  case "nowrap":
33
- return t.label;
35
+ return e.label;
34
36
  case "username":
35
- return P(t.label);
37
+ return _(e.label);
36
38
  default:
37
- if (t.label.length > 12) {
38
- const e = t.label.slice(0, 5), o = t.label.slice(-5);
39
- return `${e}..${o}`;
39
+ if (e.label.length > 12) {
40
+ const t = e.label.slice(0, 5), o = e.label.slice(-5);
41
+ return `${t}..${o}`;
40
42
  }
41
- return t.label;
43
+ return e.label;
42
44
  }
43
- }), u = r(() => t.tooltip || (t.format !== "nowrap" && t.label.length > 12 || t.format === "username" && t.label.length > 8 ? t.label : void 0)), B = (e) => {
44
- const o = e.target;
45
- (e.code === "Enter" || e.code === "Tab") && (e.preventDefault(), o.blur());
46
- }, k = (e, o) => {
47
- const a = e.textContent;
48
- if (a !== t.label) {
49
- const l = (a == null ? void 0 : a.trim()) ?? null;
50
- e.textContent = l, n("update:label", l), o && !a && (o.remove(), n("remove"));
45
+ }), m = n(() => e.tooltip || (e.format !== "nowrap" && e.label.length > 12 || e.format === "username" && e.label.length > 8 ? e.label : void 0)), $ = (t) => {
46
+ const o = t.target;
47
+ (t.code === "Enter" || t.code === "Tab") && (t.preventDefault(), o.blur());
48
+ }, k = (t, o) => {
49
+ const l = t.textContent;
50
+ if (l !== e.label) {
51
+ const r = (l == null ? void 0 : l.trim()) ?? null, a = e.restoreOnEmpty && !r ? e.label : r;
52
+ t.textContent = a, s("update:label", a, e.label), o && !a && e.removable != !1 && (o.remove(), s("remove"));
51
53
  }
52
54
  };
53
- return (e, o) => {
54
- var l, b, m;
55
- const a = w("tooltip");
56
- return p.value ? D((i(), c("span", d(
55
+ return (t, o) => {
56
+ var r, a, u;
57
+ const l = w("tooltip");
58
+ return b.value ? D((d(), c("span", p(
57
59
  {
58
60
  key: 0,
59
61
  ref: "badge"
60
62
  },
61
- (l = e.$preset.badge) == null ? void 0 : l.root({
62
- props: { severity: s.value, disabled: e.disabled }
63
+ (r = t.$preset.badge) == null ? void 0 : r.root({
64
+ props: { severity: i.value, disabled: t.disabled }
63
65
  })
64
66
  ), [
65
- S("span", d({ ref: "input" }, (b = e.$preset.badge) == null ? void 0 : b.input({ props: t, context: { badgeTooltip: u.value } }), {
66
- contenteditable: e.editable,
67
+ S("span", p({ ref: "input" }, (a = t.$preset.badge) == null ? void 0 : a.input({ props: e, context: { badgeTooltip: m.value } }), {
68
+ contenteditable: t.editable,
67
69
  onBlur: o[0] || (o[0] = (h) => k(
68
- e.$refs.input,
69
- e.$refs.badge
70
+ t.$refs.input,
71
+ t.$refs.badge
70
72
  )),
71
- onKeydown: B,
73
+ onKeydown: $,
72
74
  spellcheck: "false"
73
- }), W($.value), 17, F),
74
- t.removable ? (i(), T(E, d(
75
+ }), R(B.value), 17, O),
76
+ e.removable || e.disableRemoveButton ? (d(), T(N, p(
75
77
  { key: 0 },
76
- (m = e.$preset.badge) == null ? void 0 : m.removebutton({ props: { badgeSeverity: s.value, disabled: e.disabled } }),
78
+ (u = t.$preset.badge) == null ? void 0 : u.removebutton({ props: { badgeSeverity: i.value, disabled: t.disabled } }),
77
79
  {
78
- disabled: t.disabled,
79
- severity: s.value,
80
- onClick: o[1] || (o[1] = (h) => n("remove")),
80
+ disabled: e.disabled || !e.removable && e.disableRemoveButton,
81
+ severity: i.value,
82
+ onClick: o[1] || (o[1] = (h) => s("remove")),
81
83
  icon: "close",
82
84
  rounded: "",
83
85
  text: ""
84
86
  }
85
- ), null, 16, ["disabled", "severity"])) : V("", !0)
87
+ ), null, 16, ["disabled", "severity"])) : E("", !0)
86
88
  ], 16)), [
87
89
  [
88
- a,
89
- { value: u.value, autoHide: !1 },
90
+ l,
91
+ { value: m.value, autoHide: !1 },
90
92
  void 0,
91
93
  { top: !0 }
92
94
  ]
93
- ]) : (i(), c("span", H, "-"));
95
+ ]) : (d(), c("span", P, "-"));
94
96
  };
95
97
  }
96
98
  });
97
99
  export {
98
- z as _
100
+ j as _
99
101
  };
@@ -1,8 +1,8 @@
1
- import { defineComponent as k, shallowRef as c, computed as m, createElementBlock as s, openBlock as o, normalizeProps as h, mergeProps as u, createBlock as a, createCommentVNode as f, Fragment as d, renderList as y, unref as b, withCtx as $, renderSlot as w } from "vue";
2
- import { s as x } from "../vendor/primevue/dialog/dialog.esm.es.js";
1
+ import { defineComponent as k, shallowRef as b, computed as m, createElementBlock as s, openBlock as o, normalizeProps as c, mergeProps as u, createBlock as a, createCommentVNode as y, Fragment as d, renderList as f, unref as h, withCtx as $, renderSlot as B } from "vue";
2
+ import { s as w } from "../vendor/primevue/dialog/dialog.esm.es.js";
3
3
  import { _ as v } from "../badge/index.es.js";
4
- import { _ as B } from "../button/index.es.js";
5
- const L = { key: 0 }, j = /* @__PURE__ */ k({
4
+ import { _ as x } from "../button/index.es.js";
5
+ const L = { key: 0 }, R = /* @__PURE__ */ k({
6
6
  __name: "BadgeGroup",
7
7
  props: {
8
8
  labels: {},
@@ -11,32 +11,34 @@ const L = { key: 0 }, j = /* @__PURE__ */ k({
11
11
  limit: {},
12
12
  headerLabel: { default: "Header" },
13
13
  editable: { type: Boolean },
14
+ restoreOnEmpty: { type: Boolean },
14
15
  severity: {},
15
16
  format: {},
17
+ disableRemoveButton: { type: Boolean },
16
18
  tooltip: {},
17
19
  getSeverity: {}
18
20
  },
19
21
  setup(g) {
20
- const t = g, l = c(!1), n = m(() => t.labels.slice(0, t.limit)), p = m(
22
+ const t = g, l = b(!1), n = m(() => t.labels.slice(0, t.limit)), p = m(
21
23
  () => t.labels.length - n.value.length
22
24
  );
23
- return (r, i) => n.value.length ? (o(), s("div", h(u({ key: 1 }, r.$preset.badgegroup.root)), [
24
- (o(!0), s(d, null, y(n.value, (e) => (o(), a(v, {
25
+ return (r, i) => n.value.length ? (o(), s("div", c(u({ key: 1 }, r.$preset.badgegroup.root)), [
26
+ (o(!0), s(d, null, f(n.value, (e) => (o(), a(v, {
25
27
  key: typeof e == "string" ? e : e.text,
26
28
  format: t.format,
27
29
  label: typeof e == "string" ? e : e.text,
28
30
  severity: typeof e == "string" ? t.severity : e.severity,
29
31
  tooltip: typeof e == "object" && e.tooltip
30
32
  }, null, 8, ["format", "label", "severity", "tooltip"]))), 128)),
31
- p.value ? (o(), a(B, u({
33
+ p.value ? (o(), a(x, u({
32
34
  key: 0,
33
35
  label: `+${p.value} ${r.textMore}`
34
36
  }, r.$preset.badgegroup.showmorebutton, {
35
37
  severity: t.textMoreSeverity ?? "dark",
36
38
  onClick: i[0] || (i[0] = (e) => l.value = !0),
37
39
  text: ""
38
- }), null, 16, ["label", "severity"])) : f("", !0),
39
- r.limit ? (o(), a(b(x), {
40
+ }), null, 16, ["label", "severity"])) : y("", !0),
41
+ r.limit ? (o(), a(h(w), {
40
42
  key: 1,
41
43
  visible: l.value,
42
44
  "onUpdate:visible": i[1] || (i[1] = (e) => l.value = e),
@@ -46,10 +48,10 @@ const L = { key: 0 }, j = /* @__PURE__ */ k({
46
48
  modal: ""
47
49
  }, {
48
50
  default: $(() => [
49
- w(r.$slots, "dialogcontent", {
51
+ B(r.$slots, "dialogcontent", {
50
52
  labels: t.labels
51
53
  }, () => [
52
- (o(!0), s(d, null, y(t.labels, (e) => (o(), a(v, {
54
+ (o(!0), s(d, null, f(t.labels, (e) => (o(), a(v, {
53
55
  key: typeof e == "string" ? e : e.text,
54
56
  format: t.format,
55
57
  label: typeof e == "string" ? e : e.text,
@@ -59,10 +61,10 @@ const L = { key: 0 }, j = /* @__PURE__ */ k({
59
61
  ])
60
62
  ]),
61
63
  _: 3
62
- }, 8, ["visible", "header", "pt"])) : f("", !0)
64
+ }, 8, ["visible", "header", "pt"])) : y("", !0)
63
65
  ], 16)) : (o(), s("span", L, " - "));
64
66
  }
65
67
  });
66
68
  export {
67
- j as _
69
+ R as _
68
70
  };
@@ -1,10 +1,10 @@
1
- import { defineComponent as Y, onMounted as Z, onUnmounted as I, ref as R, shallowRef as k, computed as x, watch as F, withDirectives as y, createElementBlock as h, openBlock as r, mergeProps as f, createBlock as E, createCommentVNode as w, createVNode as v, unref as o, Fragment as T, renderSlot as ee, withCtx as V, normalizeClass as te, vShow as $, createElementVNode as le, normalizeProps as ae, guardReactiveProps as oe, toDisplayString as P, createTextVNode as H, nextTick as ne } from "vue";
1
+ import { defineComponent as Y, onMounted as Z, onUnmounted as I, ref as R, shallowRef as k, computed as x, watch as F, withDirectives as y, createElementBlock as h, openBlock as u, mergeProps as f, createBlock as E, createCommentVNode as w, createVNode as v, unref as o, Fragment as T, renderSlot as ee, withCtx as V, normalizeClass as te, vShow as $, createElementVNode as le, normalizeProps as ae, guardReactiveProps as oe, toDisplayString as P, createTextVNode as H, nextTick as ne } from "vue";
2
2
  import { e as c } from "../event-bus/index.es.js";
3
3
  import { u as se } from "../plugins/WangsVue.es.js";
4
4
  import { m as ie } from "../utils/mergePropsWithDefaults.util.es.js";
5
- import { s as re } from "../vendor/primevue/dropdown/dropdown.esm.es.js";
5
+ import { s as ue } from "../vendor/primevue/dropdown/dropdown.esm.es.js";
6
6
  import { _ as A } from "../button/index.es.js";
7
- import { _ as ue } from "../icon/index.es.js";
7
+ import { _ as re } from "../icon/index.es.js";
8
8
  import { _ as ce } from "../menu/index.es.js";
9
9
  import { _ as de } from "../menuitem/index.es.js";
10
10
  const pe = (D, N) => {
@@ -58,7 +58,7 @@ const pe = (D, N) => {
58
58
  var t, s;
59
59
  if (e.useAdditionSlot) {
60
60
  n.value = e, await ne();
61
- const u = (t = _.value) == null ? void 0 : t.children[1], a = u == null ? void 0 : u.querySelector(
61
+ const r = (t = _.value) == null ? void 0 : t.children[1], a = r == null ? void 0 : r.querySelector(
62
62
  "input"
63
63
  );
64
64
  a && (a == null || a.click(), a == null || a.focus());
@@ -84,22 +84,23 @@ const pe = (D, N) => {
84
84
  (e) => m.value = e ?? 0,
85
85
  { immediate: !0 }
86
86
  ), (e, t) => {
87
- var s, u, a, U, W, q;
88
- return y((r(), h("div", f(e.$preset.buttonbulkaction.root, {
87
+ var s, r, a, U, W, q;
88
+ return y((u(), h("div", f(e.$preset.buttonbulkaction.root, {
89
89
  ref_key: "wrapper",
90
90
  ref: _
91
91
  }), [
92
- o(p).selectMenuType === "overlay-panel" && ((s = i.value) != null && s.length) ? (r(), E(ce, {
92
+ o(p).selectMenuType === "overlay-panel" && ((s = i.value) != null && s.length) ? (u(), E(ce, {
93
93
  key: 0,
94
94
  ref_key: "menu",
95
95
  ref: S,
96
96
  model: e.options,
97
97
  popup: ""
98
98
  }, null, 8, ["model"])) : w("", !0),
99
- o(p).selectMenuType === "dropdown" ? (r(), h(T, { key: 1 }, [
100
- (u = e.selectedData) != null && u.length ? (r(), E(o(re), {
99
+ o(p).selectMenuType === "dropdown" ? (u(), h(T, { key: 1 }, [
100
+ (r = e.selectedData) != null && r.length ? (u(), E(o(ue), {
101
101
  key: 0,
102
102
  disabled: l.disabled || M.value || !((a = e.selectedData) != null && a.length),
103
+ "model-value": n.value,
103
104
  options: o(pe)(
104
105
  e.options,
105
106
  e.$wangsvue.config.locale.components.Menu.noOptionLabel
@@ -111,7 +112,7 @@ const pe = (D, N) => {
111
112
  placeholder: "Bulk Action"
112
113
  }, {
113
114
  dropdownicon: V(({ class: b }) => [
114
- v(ue, {
115
+ v(re, {
115
116
  class: te([b]),
116
117
  icon: "arrow-down"
117
118
  }, null, 8, ["class"])
@@ -127,7 +128,7 @@ const pe = (D, N) => {
127
128
  }, null, 8, ["item", "router-props"])
128
129
  ]),
129
130
  _: 1
130
- }, 8, ["disabled", "options", "pt"])) : w("", !0),
131
+ }, 8, ["disabled", "model-value", "options", "pt"])) : w("", !0),
131
132
  ee(e.$slots, "addition", { selectedOption: n.value }),
132
133
  y(v(A, f({ onClick: X }, e.$preset.buttonbulkaction.applybutton, { label: "Apply" }), null, 16), [
133
134
  [$, (U = n.value) == null ? void 0 : U.useAdditionSlot]
@@ -147,9 +148,9 @@ const pe = (D, N) => {
147
148
  { text: "" }
148
149
  ), {
149
150
  default: V(() => [
150
- C.value ? (r(), h(T, { key: 1 }, [
151
+ C.value ? (u(), h(T, { key: 1 }, [
151
152
  H(P(o(d).allRecordSelected.replace("{naming}", o(p).naming)), 1)
152
- ], 64)) : (r(), h(T, { key: 0 }, [
153
+ ], 64)) : (u(), h(T, { key: 0 }, [
153
154
  H(P(o(d).selectAllRecords.replace(
154
155
  "{totalRecords}",
155
156
  m.value.toString()
@@ -160,7 +161,7 @@ const pe = (D, N) => {
160
161
  }, 16), [
161
162
  [$, j.value]
162
163
  ]),
163
- o(p).selectMenuType === "overlay-panel" ? (r(), E(A, f({
164
+ o(p).selectMenuType === "overlay-panel" ? (u(), E(A, f({
164
165
  key: 2,
165
166
  onClick: K
166
167
  }, e.$preset.buttonbulkaction.bulkactiontoggle, {
@@ -245,8 +245,38 @@ export type ColumnPreset =
245
245
  | ColumnMultiRowPreset
246
246
  | ColumnCheckboxPreset;
247
247
 
248
+ export interface CombinedHeaders {
249
+ parent: TableParentHeaders[];
250
+ child: TreeTableColumns[];
251
+ }
252
+
253
+ export interface TableParentHeaders
254
+ extends Pick<
255
+ TableColumn,
256
+ 'header' | 'info' | 'infoSeverity' | 'headerClass'
257
+ > {
258
+ /**
259
+ * Field is used as the header's key
260
+ */
261
+ field: string;
262
+ /**
263
+ * Note: colspan is calculated automatically
264
+ * @ignore
265
+ */
266
+ colspan?: number;
267
+ /**
268
+ * Note: rowspan is calculated automatically
269
+ * @ignore
270
+ */
271
+ rowspan?: number;
272
+ }
273
+
248
274
  export interface TableColumn {
249
275
  header?: string;
276
+ /**
277
+ * The parent header (the header placed above this column)
278
+ */
279
+ parentHeader?: string;
250
280
  field: string;
251
281
  fieldType?: 'string' | 'number' | 'boolean' | 'array';
252
282
  info?: string;
@@ -500,6 +530,13 @@ export interface BaseDataTableProps {
500
530
  * @optional
501
531
  */
502
532
  tableTitle?: string;
533
+ /**
534
+ * The headers placed above certain child headers. If there are
535
+ * multiple child headers with the same parent header, the parent
536
+ * will have its colspan extended. The parent header will be shown
537
+ * when at least one of its child headers is visible.
538
+ */
539
+ parentHeaders?: TableParentHeaders[];
503
540
  /**
504
541
  * An array of table columns to display.
505
542
  */
@@ -666,6 +703,10 @@ export type BaseDataTableEmits = {
666
703
  * Emits when option menu button clicked.
667
704
  */
668
705
  'toggleOption': [data: Data];
706
+ /**
707
+ * Emits when an item is double clicked.
708
+ */
709
+ 'doubleClick': [data: Data];
669
710
  /**
670
711
  * @deprecated use 'v-model:selected-data' instead.
671
712
  */