@kong-ui-public/table-data-grid 0.6.1-pr.3892.2ccd05c45.0 → 0.7.0

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,40 +1,40 @@
1
- import { computed as y, watch as A, ref as x, shallowRef as T, readonly as M, shallowReadonly as X, defineComponent as P, onMounted as Y, onUnmounted as Z, nextTick as ee, resolveComponent as Q, openBlock as O, createBlock as J, resolveDynamicComponent as te, createElementBlock as B, createVNode as W, withCtx as oe, createElementVNode as ae, toDisplayString as le, useSlots as ne, toRef as E, renderSlot as j, unref as h } from "vue";
2
- import { AgGridVue as re } from "ag-grid-vue3";
3
- import { ModuleRegistry as se, AllCommunityModule as ie, ClientSideRowModelModule as ce, InfiniteRowModelModule as ue, themeQuartz as de } from "ag-grid-community";
4
- import { createI18n as ve, i18nTComponent as me } from "@kong-ui-public/i18n";
5
- var F = /* @__PURE__ */ ((e) => (e.PENDING = "PENDING", e.LOADING = "LOADING", e.SUCCESS = "SUCCESS", e.ERROR = "ERROR", e))(F || {});
6
- const fe = (e) => !!e?.length;
7
- function Ce(e, n, t, l = fe) {
8
- const r = y(() => l(e.value)), i = y(() => {
9
- const p = e.value !== void 0, a = n.value !== void 0 && n.value !== null;
10
- return t.value ? "LOADING" : r.value ? "SUCCESS" : a ? "ERROR" : p ? "SUCCESS" : "PENDING";
1
+ import { computed as d, watch as A, ref as M, shallowRef as N, readonly as P, shallowReadonly as ge, defineComponent as re, onMounted as se, onUnmounted as Ce, nextTick as pe, resolveComponent as ie, openBlock as E, createElementBlock as K, normalizeClass as ue, createElementVNode as V, createBlock as q, resolveDynamicComponent as te, withCtx as ae, createVNode as Q, toDisplayString as le, createCommentVNode as L, normalizeStyle as he, h as be, renderSlot as U, useSlots as ye, useTemplateRef as Se, onBeforeUnmount as ke, toRef as z, unref as S } from "vue";
2
+ import { AgGridVue as we } from "ag-grid-vue3";
3
+ import { ModuleRegistry as De, AllCommunityModule as Re, ClientSideRowModelModule as Te, InfiniteRowModelModule as Ee, themeQuartz as xe } from "ag-grid-community";
4
+ import { createI18n as Oe, i18nTComponent as Ie } from "@kong-ui-public/i18n";
5
+ var $ = /* @__PURE__ */ ((e) => (e.PENDING = "PENDING", e.LOADING = "LOADING", e.SUCCESS = "SUCCESS", e.ERROR = "ERROR", e))($ || {});
6
+ const Fe = (e) => !!e?.length;
7
+ function Ke(e, a, t, l = Fe) {
8
+ const n = d(() => l(e.value)), o = d(() => {
9
+ const h = e.value !== void 0, r = a.value !== void 0 && a.value !== null;
10
+ return t.value ? "LOADING" : n.value ? "SUCCESS" : r ? "ERROR" : h ? "SUCCESS" : "PENDING";
11
11
  });
12
12
  return {
13
- fetchState: F,
14
- hasData: r,
15
- state: i
13
+ fetchState: $,
14
+ hasData: n,
15
+ state: o
16
16
  };
17
17
  }
18
- const pe = ({
18
+ const ze = ({
19
19
  emitState: e,
20
- fetchLifecycleState: n,
20
+ fetchLifecycleState: a,
21
21
  hasData: t
22
22
  }) => {
23
23
  A(
24
24
  () => ({
25
25
  hasData: t.value,
26
- state: n.value
26
+ state: a.value
27
27
  }),
28
- ({ hasData: l, state: r }) => {
29
- if (r !== F.PENDING) {
30
- if (r === F.LOADING) {
28
+ ({ hasData: l, state: n }) => {
29
+ if (n !== $.PENDING) {
30
+ if (n === $.LOADING) {
31
31
  e({
32
32
  hasData: l,
33
33
  state: "loading"
34
34
  });
35
35
  return;
36
36
  }
37
- if (r === F.ERROR) {
37
+ if (n === $.ERROR) {
38
38
  e({
39
39
  hasData: l,
40
40
  state: "error"
@@ -48,370 +48,518 @@ const pe = ({
48
48
  }
49
49
  }
50
50
  );
51
- }, ge = ({ startRow: e, endRow: n }) => {
52
- const t = n - e;
51
+ }, Ge = ({ startRow: e, endRow: a }) => {
52
+ const t = a - e;
53
53
  return {
54
54
  blockIndex: t > 0 ? Math.floor(e / t) : 0,
55
55
  pageSize: t
56
56
  };
57
- }, he = ({
57
+ }, Me = ({
58
58
  startRow: e,
59
- rowsLength: n,
59
+ rowsLength: a,
60
60
  pageSize: t,
61
61
  total: l,
62
- hasMore: r
62
+ hasMore: n
63
63
  }) => {
64
64
  if (typeof l == "number")
65
65
  return l;
66
- if (r !== !0 && (r === !1 || n < t))
67
- return e + n;
68
- }, ye = ({
66
+ if (n !== !0 && (n === !1 || a < t))
67
+ return e + a;
68
+ }, Ne = ({
69
69
  fetcher: e,
70
- resetKey: n,
70
+ resetKey: a,
71
71
  sort: t
72
72
  }) => {
73
- const l = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = x(0), o = T(), p = T(), a = T(), s = x(0), f = x(!1);
74
- let b, K;
75
- const S = (c) => c === i.value && b === e.value && K === n?.value, w = () => {
76
- f.value = s.value > 0;
77
- }, C = () => {
78
- a.value = void 0, s.value += 1, w();
79
- }, I = () => {
80
- s.value = Math.max(0, s.value - 1), w();
81
- }, G = (c) => {
82
- const u = r.get(c);
83
- if (u)
84
- return u;
85
- let v;
86
- const d = {
87
- promise: new Promise((g) => {
88
- v = g;
73
+ const l = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), o = M(0), u = N(), h = N(), r = N(), v = M(0), p = M(!1);
74
+ let y, R;
75
+ const k = (g) => g === o.value && y === e.value && R === a?.value, F = () => {
76
+ p.value = v.value > 0;
77
+ }, i = () => {
78
+ r.value = void 0, v.value += 1, F();
79
+ }, m = () => {
80
+ v.value = Math.max(0, v.value - 1), F();
81
+ }, w = (g) => {
82
+ const c = n.get(g);
83
+ if (c)
84
+ return c;
85
+ let s;
86
+ const f = {
87
+ promise: new Promise((C) => {
88
+ s = C;
89
89
  }),
90
- resolve: (g) => v(g)
90
+ resolve: (C) => s(C)
91
91
  };
92
- return r.set(c, d), d;
93
- }, k = (c, u) => {
94
- u.resolve(!1), r.get(c) === u && r.delete(c);
95
- }, D = async ({
96
- blockIndex: c,
97
- currentBlockCompletion: u,
98
- datasourceId: v
92
+ return n.set(g, f), f;
93
+ }, D = (g, c) => {
94
+ c.resolve(!1), n.get(g) === c && n.delete(g);
95
+ }, O = async ({
96
+ blockIndex: g,
97
+ currentBlockCompletion: c,
98
+ datasourceId: s
99
99
  }) => {
100
- if (c === 0)
100
+ if (g === 0)
101
101
  return "ready";
102
- const d = r.get(c - 1);
103
- if (!d)
104
- return k(c, u), "failed";
105
- const g = await d.promise;
106
- return S(v) ? g ? "ready" : (k(c, u), "failed") : (k(c, u), "stale");
107
- }, U = ({
108
- blockIndex: c,
109
- currentBlockCompletion: u,
110
- getRowsParams: v,
111
- pageSize: d,
112
- result: g
102
+ const f = n.get(g - 1);
103
+ if (!f)
104
+ return D(g, c), "failed";
105
+ const C = await f.promise;
106
+ return k(s) ? C ? "ready" : (D(g, c), "failed") : (D(g, c), "stale");
107
+ }, I = ({
108
+ blockIndex: g,
109
+ currentBlockCompletion: c,
110
+ getRowsParams: s,
111
+ pageSize: f,
112
+ result: C
113
113
  }) => {
114
- g.cursor !== void 0 && l.set(c, g.cursor), v.successCallback(g.data, he({
115
- startRow: v.startRow,
116
- rowsLength: g.data.length,
117
- pageSize: d,
118
- total: g.total,
119
- hasMore: g.hasMore
120
- })), v.startRow === 0 && (p.value = g.data), u.resolve(!0);
121
- }, _ = ({
122
- blockIndex: c,
123
- currentBlockCompletion: u,
124
- fetchError: v,
125
- getRowsParams: d
114
+ C.cursor !== void 0 && l.set(g, C.cursor), s.successCallback(C.data, Me({
115
+ startRow: s.startRow,
116
+ rowsLength: C.data.length,
117
+ pageSize: f,
118
+ total: C.total,
119
+ hasMore: C.hasMore
120
+ })), s.startRow === 0 && (h.value = C.data), c.resolve(!0);
121
+ }, x = ({
122
+ blockIndex: g,
123
+ currentBlockCompletion: c,
124
+ fetchError: s,
125
+ getRowsParams: f
126
126
  }) => {
127
- a.value = v, d.failCallback(), k(c, u);
128
- }, z = () => {
129
- const c = e.value;
130
- if (!c)
127
+ r.value = s, f.failCallback(), D(g, c);
128
+ }, G = () => {
129
+ const g = e.value;
130
+ if (!g)
131
131
  throw new Error("TableDataGrid requires a fetcher in infinite mode");
132
- b = c, K = n?.value;
133
- const u = i.value + 1;
134
- return i.value = u, l.clear(), r.clear(), p.value = void 0, a.value = void 0, s.value = 0, w(), {
135
- async getRows(v) {
136
- if (!S(u)) {
137
- v.failCallback();
132
+ y = g, R = a?.value;
133
+ const c = o.value + 1;
134
+ return o.value = c, l.clear(), n.clear(), h.value = void 0, r.value = void 0, v.value = 0, F(), {
135
+ async getRows(s) {
136
+ if (!k(c)) {
137
+ s.failCallback();
138
138
  return;
139
139
  }
140
140
  const {
141
- blockIndex: d,
142
- pageSize: g
143
- } = ge({
144
- startRow: v.startRow,
145
- endRow: v.endRow
146
- }), R = G(d);
147
- if (await D({
148
- blockIndex: d,
149
- currentBlockCompletion: R,
150
- datasourceId: u
151
- }) !== "ready" || !S(u)) {
152
- v.failCallback(), k(d, R);
141
+ blockIndex: f,
142
+ pageSize: C
143
+ } = Ge({
144
+ startRow: s.startRow,
145
+ endRow: s.endRow
146
+ }), T = w(f);
147
+ if (await O({
148
+ blockIndex: f,
149
+ currentBlockCompletion: T,
150
+ datasourceId: c
151
+ }) !== "ready" || !k(c)) {
152
+ s.failCallback(), D(f, T);
153
153
  return;
154
154
  }
155
- C();
155
+ i();
156
156
  try {
157
- const m = d > 0 ? l.get(d - 1) : void 0, N = await c({
157
+ const B = f > 0 ? l.get(f - 1) : void 0, H = await g({
158
158
  mode: "infinite",
159
- pageSize: g,
160
- cursor: m,
159
+ pageSize: C,
160
+ cursor: B,
161
161
  // Always read the latest sort, not a stale one.
162
162
  sort: t?.value
163
163
  });
164
- if (!S(u)) {
165
- v.failCallback(), k(d, R);
164
+ if (!k(c)) {
165
+ s.failCallback(), D(f, T);
166
166
  return;
167
167
  }
168
- U({
169
- blockIndex: d,
170
- currentBlockCompletion: R,
171
- getRowsParams: v,
172
- pageSize: g,
173
- result: N
168
+ I({
169
+ blockIndex: f,
170
+ currentBlockCompletion: T,
171
+ getRowsParams: s,
172
+ pageSize: C,
173
+ result: H
174
174
  });
175
- } catch (m) {
176
- if (!S(u)) {
177
- v.failCallback(), k(d, R);
175
+ } catch (B) {
176
+ if (!k(c)) {
177
+ s.failCallback(), D(f, T);
178
178
  return;
179
179
  }
180
- _({
181
- blockIndex: d,
182
- currentBlockCompletion: R,
183
- fetchError: m,
184
- getRowsParams: v
180
+ x({
181
+ blockIndex: f,
182
+ currentBlockCompletion: T,
183
+ fetchError: B,
184
+ getRowsParams: s
185
185
  });
186
186
  } finally {
187
- S(u) && I();
187
+ k(c) && m();
188
188
  }
189
189
  }
190
190
  };
191
- }, L = () => {
192
- o.value = z();
191
+ }, _ = () => {
192
+ u.value = G();
193
193
  };
194
194
  return A(
195
- [e, () => n?.value],
195
+ [e, () => a?.value],
196
196
  () => {
197
- L();
197
+ _();
198
198
  },
199
199
  { immediate: !0 }
200
200
  ), {
201
- datasource: M(o),
202
- data: X(p),
203
- error: M(a),
204
- isFetching: M(f)
201
+ datasource: P(u),
202
+ data: ge(h),
203
+ error: P(r),
204
+ isFetching: P(p)
205
205
  };
206
- }, Se = {
207
- key: 1,
208
- class: "table-data-grid-cell-renderer"
209
- }, be = /* @__PURE__ */ P({
206
+ }, _e = { title: "No Data", message: "There is no data to display." }, Be = { title: "An error occurred", message: "Data cannot be displayed due to an error." }, Ve = {
207
+ emptyState: _e,
208
+ errorState: Be
209
+ };
210
+ function ce() {
211
+ const e = Oe("en-us", Ve);
212
+ return {
213
+ i18n: e,
214
+ i18nT: Ie(e)
215
+ // Translation component <i18n-t>
216
+ };
217
+ }
218
+ const { i18n: $e } = ce(), de = (e, a) => {
219
+ const t = Reflect.get(a, e.key);
220
+ return e.valueFormatter ? e.valueFormatter(t, a) : String(t ?? "");
221
+ }, W = (e) => typeof e != "number" ? null : Number.isFinite(e) ? e : null, Ae = (e, a) => e.reduce(
222
+ (t, l) => {
223
+ const n = W(Reflect.get(l, a.key));
224
+ return n === null ? t : {
225
+ sum: t.sum + n,
226
+ max: Math.max(t.max, n)
227
+ };
228
+ },
229
+ { sum: 0, max: 0 }
230
+ ), Le = (e, a) => {
231
+ const t = (a ?? []).filter((o) => Number.isFinite(o.value) && e >= o.value);
232
+ if (!t.length)
233
+ return;
234
+ const l = Math.max(...t.map((o) => o.value));
235
+ return t.filter((o) => o.value === l).some((o) => o.type === "error") ? "error" : "warning";
236
+ }, Pe = (e, a, t) => {
237
+ if (e === null)
238
+ return 0;
239
+ const l = t === "relative" ? a.sum : a.max;
240
+ return l > 0 ? Math.min(Math.max(e / l, 0), 1) : 0;
241
+ }, Ue = (e) => {
242
+ const a = (t) => $e.formatNumber(t, { maximumFractionDigits: 2 });
243
+ return e > 0 && e < 0.01 ? `< ${a(0.01)} %` : `${a(e)} %`;
244
+ }, ve = ({
245
+ value: e,
246
+ stats: a,
247
+ header: t
248
+ }) => {
249
+ if (e === null || a.sum <= 0)
250
+ return;
251
+ const l = e / a.sum * 100;
252
+ return t.percentageFormatter?.(l) ?? Ue(l);
253
+ }, oe = (e, a) => a !== void 0 && a.length > (e?.length ?? -1) ? a : e, We = ({
254
+ rows: e,
255
+ header: a,
256
+ stats: t
257
+ }) => e.reduce(
258
+ (l, n) => ({
259
+ value: oe(l.value, de(a, n)) ?? "",
260
+ relative: a.showPercentage ? oe(l.relative, ve({
261
+ value: W(Reflect.get(n, a.key)),
262
+ stats: t,
263
+ header: a
264
+ })) : void 0
265
+ }),
266
+ { value: "" }
267
+ ), He = ["data-threshold"], je = { class: "table-data-grid-cell-label-track" }, qe = { class: "table-data-grid-cell-label" }, Qe = {
268
+ key: 0,
269
+ class: "table-data-grid-cell-relative",
270
+ "data-testid": "table-data-grid-cell-relative"
271
+ }, Je = {
272
+ key: 0,
273
+ "aria-hidden": "true",
274
+ class: "table-data-grid-cell-label table-data-grid-cell-label-sizer"
275
+ }, Xe = ["data-text"], Ye = ["data-text"], Ze = ["data-threshold"], et = /* @__PURE__ */ re({
210
276
  name: "TableDataGridCellRenderer",
211
277
  __name: "TableDataGridCellRenderer",
212
278
  props: {
213
279
  params: {}
214
280
  },
215
- setup(e, { expose: n }) {
216
- const t = T(e.params), l = x(null), r = x(!1), i = y(() => t.value.valueFormatted ?? String(t.value.value ?? "")), o = y(() => {
217
- const C = t.value.colDef?.colId;
218
- return C ? t.value.context?.cells?.slots?.[C] : void 0;
219
- }), p = y(() => ({
220
- column: t.value.headerDef,
281
+ setup(e, { expose: a }) {
282
+ const t = N(e.params), l = M(null), n = M(!1), o = d(() => t.value.headerDef ?? {
283
+ key: "",
284
+ label: ""
285
+ }), u = d(() => t.value.context?.presentation), h = d(() => t.value.context?.cells?.tooltipTarget?.value ?? "body"), r = d(() => t.value.valueFormatted ?? String(t.value.value ?? "")), v = d(() => t.value.value), p = d(() => W(v.value)), y = d(() => u.value?.stats[o.value.key]), R = d(() => o.value.showPercentage && y.value ? ve({
286
+ value: p.value,
287
+ stats: y.value,
288
+ header: o.value
289
+ }) : void 0), k = d(() => !!o.value.bar && !!y.value && (p.value !== null || v.value === null || v.value === void 0)), F = d(() => k.value && y.value ? Pe(p.value, y.value, o.value.bar) * 100 : 0), i = d(() => k.value ? u.value?.labelSizers[o.value.key] : void 0), m = d(() => o.value.thresholds?.length && p.value !== null ? Le(p.value, o.value.thresholds) : void 0), w = d(() => ({
290
+ column: o.value,
221
291
  refreshCell: () => {
222
- const C = t.value.node;
223
- C && t.value.api.refreshCells({ force: !0, rowNodes: [C] });
292
+ const s = t.value.node;
293
+ s && t.value.api.refreshCells({ force: !0, rowNodes: [s] });
224
294
  },
225
295
  row: t.value.data ?? {},
226
296
  rowIndex: t.value.node?.rowIndex ?? 0,
227
297
  rowValue: t.value.value,
228
298
  selected: t.value.node?.isSelected() ?? !1
229
- })), a = () => o.value?.(p.value);
230
- let s, f, b = !1;
231
- const K = () => {
232
- const C = l.value;
233
- r.value = !!C && C.scrollWidth > C.clientWidth;
234
- }, S = () => {
235
- b || (f !== void 0 && cancelAnimationFrame(f), f = requestAnimationFrame(() => {
236
- f = void 0, K();
299
+ })), D = (s, { slots: f }) => {
300
+ const C = t.value.colDef?.colId, T = t.value.context?.cells?.slots;
301
+ return !C || C === "cell-icon" || !T?.[C] ? f.default?.() : be(
302
+ "span",
303
+ { class: "table-data-grid-cell-slot-content" },
304
+ U(T, C, w.value, () => f.default?.() ?? [])
305
+ );
306
+ }, O = () => {
307
+ const s = t.value.context?.cells?.slots;
308
+ return s?.["cell-icon"] ? U(s, "cell-icon", w.value) : null;
309
+ };
310
+ let I, x, G = !1;
311
+ const _ = () => {
312
+ const s = l.value;
313
+ n.value = !!s && s.scrollWidth > s.clientWidth;
314
+ }, g = () => {
315
+ G || (x !== void 0 && cancelAnimationFrame(x), x = requestAnimationFrame(() => {
316
+ x = void 0, _();
237
317
  }));
238
- }, w = (C) => {
239
- if (s?.disconnect(), C) {
240
- s?.observe(C);
241
- const I = C.closest(".ag-cell");
242
- I && s?.observe(I);
318
+ }, c = (s) => {
319
+ if (I?.disconnect(), s) {
320
+ I?.observe(s);
321
+ const f = s.closest(".ag-cell");
322
+ f && I?.observe(f);
243
323
  }
244
- S();
324
+ g();
245
325
  };
246
- return Y(() => {
247
- s = new ResizeObserver(S), w(l.value);
248
- }), A(l, w, { flush: "post" }), Z(() => {
249
- b = !0, s?.disconnect(), f !== void 0 && cancelAnimationFrame(f);
250
- }), n({
251
- refresh(C) {
252
- return t.value = C, ee(S), !0;
326
+ return se(() => {
327
+ I = new ResizeObserver(g), c(l.value);
328
+ }), A(l, c), Ce(() => {
329
+ G = !0, I?.disconnect(), x !== void 0 && cancelAnimationFrame(x);
330
+ }), a({
331
+ refresh(s) {
332
+ return t.value = s, pe(g), !0;
253
333
  }
254
- }), (C, I) => {
255
- const G = Q("KTooltip");
256
- return o.value ? (O(), J(te(a), { key: 0 })) : (O(), B("span", Se, [
257
- W(G, {
258
- class: "table-data-grid-cell-tooltip",
259
- disabled: !r.value,
260
- "kpop-attributes": { popoverDelay: 400 },
261
- "max-width": "300",
262
- placement: "bottom-start",
263
- target: "body",
264
- text: i.value
265
- }, {
266
- default: oe(() => [
267
- ae("span", {
268
- ref_key: "contentElement",
269
- ref: l,
270
- class: "table-data-grid-cell-content"
271
- }, le(i.value), 513)
334
+ }), (s, f) => {
335
+ const C = ie("KTooltip");
336
+ return E(), K("span", {
337
+ class: ue(["table-data-grid-cell-renderer", {
338
+ "table-data-grid-cell-renderer--bar": k.value,
339
+ "table-data-grid-cell-renderer--percentage": !!R.value,
340
+ [`table-data-grid-cell-renderer--text-${m.value}`]: !k.value && !!m.value
341
+ }]),
342
+ "data-threshold": m.value
343
+ }, [
344
+ V("span", je, [
345
+ V("span", qe, [
346
+ (E(), q(te(O))),
347
+ (E(), q(te(D), null, {
348
+ default: ae(() => [
349
+ Q(C, {
350
+ class: "table-data-grid-cell-tooltip",
351
+ disabled: !n.value,
352
+ "kpop-attributes": { popoverDelay: 400 },
353
+ "max-width": "300",
354
+ placement: "bottom-start",
355
+ target: h.value,
356
+ text: r.value
357
+ }, {
358
+ default: ae(() => [
359
+ V("span", {
360
+ ref_key: "contentElement",
361
+ ref: l,
362
+ class: "table-data-grid-cell-content"
363
+ }, le(r.value), 513)
364
+ ]),
365
+ _: 1
366
+ }, 8, ["disabled", "target", "text"])
367
+ ]),
368
+ _: 1
369
+ })),
370
+ R.value ? (E(), K("span", Qe, "(" + le(R.value) + ")", 1)) : L("", !0)
272
371
  ]),
273
- _: 1
274
- }, 8, ["disabled", "text"])
275
- ]));
372
+ i.value ? (E(), K("span", Je, [
373
+ V("span", {
374
+ class: "table-data-grid-cell-sizer-value",
375
+ "data-text": i.value.value
376
+ }, null, 8, Xe),
377
+ i.value.relative ? (E(), K("span", {
378
+ key: 0,
379
+ class: "table-data-grid-cell-sizer-relative",
380
+ "data-text": `(${i.value.relative})`
381
+ }, null, 8, Ye)) : L("", !0)
382
+ ])) : L("", !0)
383
+ ]),
384
+ k.value ? (E(), K("span", {
385
+ key: 0,
386
+ class: "table-data-grid-cell-bar",
387
+ "data-testid": "table-data-grid-cell-bar",
388
+ "data-threshold": m.value
389
+ }, [
390
+ V("span", {
391
+ class: "table-data-grid-cell-bar-fill",
392
+ "data-testid": "table-data-grid-cell-bar-fill",
393
+ style: he({ width: `${F.value}%` })
394
+ }, null, 4)
395
+ ], 8, Ze)) : L("", !0)
396
+ ], 10, He);
276
397
  };
277
398
  }
278
- }), ke = ({
399
+ }), tt = ({
279
400
  headers: e,
280
- slots: n,
281
- initialSort: t
401
+ slots: a,
402
+ initialSort: t,
403
+ mode: l,
404
+ rows: n,
405
+ tooltipTarget: o
282
406
  }) => {
283
- const l = y(() => ({
284
- cells: { slots: n }
285
- })), r = (o) => {
286
- const p = t?.sortColumnKey === o.key;
407
+ const u = l ?? "infinite", h = /* @__PURE__ */ new Set(), r = (i) => !!(i.showPercentage || i.bar || i.thresholds?.length);
408
+ A([e, () => n?.value], () => {
409
+ e.value.forEach((i) => {
410
+ if (!r(i))
411
+ return;
412
+ let m;
413
+ if (u === "infinite" && (i.showPercentage || i.bar) ? m = "percentage and bar presentation is only supported in unpaginated mode" : u === "unpaginated" && n?.value?.some((D) => {
414
+ const O = Reflect.get(D, i.key);
415
+ return O != null && W(O) === null;
416
+ }) && (m = "contains non-finite or nonnumeric values; numeric presentation skips those values"), !m)
417
+ return;
418
+ const w = `${i.key}:${m}`;
419
+ h.has(w) || (h.add(w), console.warn(`[TableDataGrid] Column "${i.key}" ${m}.`));
420
+ });
421
+ }, { immediate: !0 });
422
+ const p = d(() => {
423
+ if (u !== "unpaginated")
424
+ return {};
425
+ const i = n?.value ?? [];
426
+ return Object.fromEntries(
427
+ e.value.filter((m) => m.showPercentage || m.bar).map((m) => [m.key, Ae(i, m)])
428
+ );
429
+ }), y = d(() => {
430
+ if (u !== "unpaginated")
431
+ return {};
432
+ const i = n?.value ?? [];
433
+ return Object.fromEntries(
434
+ e.value.filter((m) => m.bar).map((m) => [m.key, We({
435
+ rows: i,
436
+ header: m,
437
+ stats: p.value[m.key]
438
+ })])
439
+ );
440
+ }), R = d(() => ({
441
+ cells: { slots: a, tooltipTarget: o },
442
+ presentation: {
443
+ stats: p.value,
444
+ labelSizers: y.value
445
+ }
446
+ })), k = (i) => {
447
+ const m = t?.sortColumnKey === i.key;
287
448
  return {
288
- colId: o.key,
449
+ colId: i.key,
289
450
  // Columns with no explicit width constraint share remaining space equally.
290
- flex: !o.width && !o.maxWidth ? 1 : void 0,
291
- headerName: o.label,
292
- maxWidth: o.maxWidth,
293
- minWidth: o.minWidth,
294
- sortable: o.sortable ?? !1,
295
- unSortIcon: o.showSortIcon,
296
- ...p ? { initialSort: t?.sortColumnOrder, initialSortIndex: 0 } : {},
297
- valueGetter: (a) => a.data?.[o.key],
298
- width: o.width,
299
- cellRenderer: be,
451
+ flex: !i.width && !i.maxWidth ? 1 : void 0,
452
+ headerName: i.label,
453
+ maxWidth: i.maxWidth,
454
+ minWidth: i.minWidth,
455
+ sortable: i.sortable ?? !1,
456
+ unSortIcon: i.showSortIcon,
457
+ ...m ? { initialSort: t?.sortColumnOrder, initialSortIndex: 0 } : {},
458
+ valueGetter: (w) => w.data?.[i.key],
459
+ valueFormatter: (w) => w.data ? de(i, w.data) : String(w.value ?? ""),
460
+ width: i.width,
461
+ cellRenderer: et,
300
462
  // custom params passed to the cell renderer.
301
- cellRendererParams: { headerDef: o }
463
+ cellRendererParams: { headerDef: i }
302
464
  };
303
465
  };
304
466
  return {
305
- columnDefs: y(() => e.value.map(r)),
306
- gridContext: l
467
+ columnDefs: d(() => e.value.map(k)),
468
+ gridContext: R
307
469
  };
308
- }, V = ({
470
+ }, j = ({
309
471
  config: e,
310
- headers: n,
472
+ headers: a,
311
473
  pageSize: t
312
474
  }) => {
313
- const l = new Set(n.filter((i) => i.sortable).map((i) => i.key)), r = e?.sortColumnKey && l.has(e.sortColumnKey) ? e.sortColumnKey : void 0;
475
+ const l = new Set(a.filter((o) => o.sortable).map((o) => o.key)), n = e?.sortColumnKey && l.has(e.sortColumnKey) ? e.sortColumnKey : void 0;
314
476
  return {
315
- sortColumnKey: r,
316
- sortColumnOrder: r ? e?.sortColumnOrder : void 0,
317
- pageSize: e?.pageSize ?? t
477
+ sortColumnKey: n,
478
+ sortColumnOrder: n ? e?.sortColumnOrder : void 0,
479
+ pageSize: e?.pageSize ?? t,
480
+ ...e?.fitToContent !== void 0 ? { fitToContent: e.fitToContent } : {}
318
481
  };
319
- }, H = (e, n) => e.sortColumnKey === n.sortColumnKey && e.sortColumnOrder === n.sortColumnOrder && e.pageSize === n.pageSize, we = ({
482
+ }, ne = (e, a) => e.sortColumnKey === a.sortColumnKey && e.sortColumnOrder === a.sortColumnOrder && e.pageSize === a.pageSize && e.fitToContent === a.fitToContent, at = ({
320
483
  headers: e,
321
- pageSize: n,
484
+ pageSize: a,
322
485
  tableConfig: t,
323
486
  emitTableConfigUpdate: l,
324
- onExternalConfigChange: r
487
+ onExternalConfigChange: n
325
488
  }) => {
326
- const i = y(() => t.value ? V({ config: t.value, headers: e.value, pageSize: n.value }) : void 0), o = x(
327
- i.value ?? V({ config: void 0, headers: e.value, pageSize: n.value })
489
+ const o = d(() => t.value ? j({ config: t.value, headers: e.value, pageSize: a.value }) : void 0), u = M(
490
+ o.value ?? j({ config: void 0, headers: e.value, pageSize: a.value })
328
491
  );
329
- A(i, (f) => {
330
- f && !H(f, o.value) && (o.value = f, r?.(f));
492
+ A(o, (p) => {
493
+ p && !ne(p, u.value) && (u.value = p, n?.(p));
331
494
  });
332
- const p = (f) => {
333
- const b = V({
334
- config: { ...o.value, ...f },
495
+ const h = (p) => {
496
+ const y = j({
497
+ config: { ...u.value, ...p },
335
498
  headers: e.value,
336
- pageSize: n.value
499
+ pageSize: a.value
337
500
  });
338
- H(b, o.value) || (o.value = b, l(b));
339
- }, a = y(() => ({
340
- sortColumnKey: o.value.sortColumnKey,
341
- sortColumnOrder: o.value.sortColumnOrder
342
- })), s = y(() => t.value?.pageSize ?? n.value);
501
+ ne(y, u.value) || (u.value = y, l(y));
502
+ }, r = d(() => ({
503
+ sortColumnKey: u.value.sortColumnKey,
504
+ sortColumnOrder: u.value.sortColumnOrder
505
+ })), v = d(() => t.value?.pageSize ?? a.value);
343
506
  return {
344
- activeTableConfig: M(o),
345
- activeSort: a,
346
- activePageSize: s,
347
- patchTableConfig: p
507
+ activeTableConfig: P(u),
508
+ activeSort: r,
509
+ activePageSize: v,
510
+ patchTableConfig: h
348
511
  };
349
- }, De = ({
512
+ }, lt = ({
350
513
  cellClick: e,
351
- headers: n,
514
+ headers: a,
352
515
  rowClick: t
353
516
  }) => {
354
- const l = y(() => new Set(
355
- n.value.filter((a) => a.disableRowClick).map((a) => a.key)
356
- )), r = (a) => {
357
- const s = a.event?.target;
358
- return s instanceof Element ? s.closest(".ag-cell")?.getAttribute("col-id") ?? void 0 : void 0;
359
- }, i = (a) => {
360
- const s = r(a);
361
- return !!(s && l.value.has(s));
517
+ const l = d(() => new Set(
518
+ a.value.filter((r) => r.disableRowClick).map((r) => r.key)
519
+ )), n = (r) => {
520
+ const v = r.event?.target;
521
+ return v instanceof Element ? v.closest(".ag-cell")?.getAttribute("col-id") ?? void 0 : void 0;
522
+ }, o = (r) => {
523
+ const v = n(r);
524
+ return !!(v && l.value.has(v));
362
525
  };
363
526
  return {
364
- onCellClick: (a) => {
365
- const s = a.colDef.colId;
366
- !a.data || !s || e({
367
- columnKey: s,
368
- row: a.data,
369
- value: a.value
527
+ onCellClick: (r) => {
528
+ const v = r.colDef.colId;
529
+ !r.data || !v || e({
530
+ columnKey: v,
531
+ row: r.data,
532
+ value: r.value
370
533
  });
371
534
  },
372
- onRowClick: (a) => {
373
- a.data && !i(a) && t(a.data, a);
535
+ onRowClick: (r) => {
536
+ r.data && !o(r) && t(r.data, r);
374
537
  }
375
538
  };
376
- }, Re = ({
539
+ }, ot = ({
377
540
  activeSort: e,
378
- emitSort: n,
541
+ emitSort: a,
379
542
  patchTableConfig: t
380
543
  }) => {
381
- const l = (i, o) => {
382
- i.applyColumnState({
383
- state: o.sortColumnKey ? [{ colId: o.sortColumnKey, sort: o.sortColumnOrder ?? null, sortIndex: 0 }] : [],
544
+ const l = (o, u) => {
545
+ o.applyColumnState({
546
+ state: u.sortColumnKey ? [{ colId: u.sortColumnKey, sort: u.sortColumnOrder ?? null, sortIndex: 0 }] : [],
384
547
  defaultState: { sort: null, sortIndex: null }
385
548
  });
386
549
  };
387
- return { onSortChanged: (i) => {
388
- const o = i.api.getColumnState().filter((s) => s.sort).sort((s, f) => (s.sortIndex ?? 0) - (f.sortIndex ?? 0)), p = o[o.length - 1], a = p ? { sortColumnKey: p.colId, sortColumnOrder: p.sort } : { sortColumnKey: void 0, sortColumnOrder: void 0 };
389
- a.sortColumnKey === e.value.sortColumnKey && a.sortColumnOrder === e.value.sortColumnOrder || (n(a), t(a), o.length > 1 && l(i.api, a));
550
+ return { onSortChanged: (o) => {
551
+ const u = o.api.getColumnState().filter((v) => v.sort).sort((v, p) => (v.sortIndex ?? 0) - (p.sortIndex ?? 0)), h = u[u.length - 1], r = h ? { sortColumnKey: h.colId, sortColumnOrder: h.sort } : { sortColumnKey: void 0, sortColumnOrder: void 0 };
552
+ r.sortColumnKey === e.value.sortColumnKey && r.sortColumnOrder === e.value.sortColumnOrder || (a(r), t(r), u.length > 1 && l(o.api, r));
390
553
  }, applySortToGrid: l };
391
- }, Ie = { title: "No Data", message: "There is no data to display." }, Ee = { title: "An error occurred", message: "Data cannot be displayed due to an error." }, Ke = {
392
- emptyState: Ie,
393
- errorState: Ee
394
- };
395
- function Oe() {
396
- const e = ve("en-us", Ke);
397
- return {
398
- i18n: e,
399
- i18nT: me(e)
400
- // Translation component <i18n-t>
401
- };
402
- }
403
- const xe = {
404
- class: "kong-ui-public-table-data-grid",
405
- "data-testid": "table-data-grid"
406
- }, Ge = {
554
+ }, nt = {
407
555
  key: 0,
408
556
  class: "table-error-state",
409
557
  "data-testid": "table-error-state"
410
- }, Te = {
558
+ }, rt = {
411
559
  key: 1,
412
560
  class: "table-empty-state",
413
561
  "data-testid": "table-empty-state"
414
- }, Fe = /* @__PURE__ */ P({
562
+ }, st = /* @__PURE__ */ re({
415
563
  __name: "TableDataGrid",
416
564
  props: {
417
565
  headers: {},
@@ -424,105 +572,123 @@ const xe = {
424
572
  rows: {}
425
573
  },
426
574
  emits: ["grid:ready", "state", "row:click", "cell:click", "sort", "update:tableConfig"],
427
- setup(e, { emit: n }) {
428
- se.registerModules([ie, ce, ue]);
429
- const t = e.mode ?? "infinite", l = n, { i18n: { t: r } } = Oe(), i = ne(), o = T(), { activeTableConfig: p, activeSort: a, activePageSize: s, patchTableConfig: f } = we({
430
- headers: E(() => e.headers),
431
- pageSize: E(() => e.pageSize),
432
- tableConfig: E(() => e.tableConfig),
433
- emitTableConfigUpdate: (m) => l("update:tableConfig", m),
434
- onExternalConfigChange: (m) => {
435
- o.value && K(o.value, m);
575
+ setup(e, { emit: a }) {
576
+ De.registerModules([Re, Te, Ee]);
577
+ const t = e.mode ?? "infinite", l = a, { i18n: n } = ce(), { t: o } = n, u = ye(), h = N(), r = Se("rootElement"), v = N("body"), p = () => {
578
+ const b = document.fullscreenElement;
579
+ v.value = b instanceof HTMLElement && b.contains(r.value ?? null) ? b : "body";
580
+ };
581
+ se(() => {
582
+ p(), document.addEventListener("fullscreenchange", p);
583
+ }), ke(() => {
584
+ document.removeEventListener("fullscreenchange", p);
585
+ });
586
+ const { activeTableConfig: y, activeSort: R, activePageSize: k, patchTableConfig: F } = at({
587
+ headers: z(() => e.headers),
588
+ pageSize: z(() => e.pageSize),
589
+ tableConfig: z(() => e.tableConfig),
590
+ emitTableConfigUpdate: (b) => l("update:tableConfig", b),
591
+ onExternalConfigChange: (b) => {
592
+ h.value && m(h.value, b);
436
593
  }
437
- }), { onSortChanged: b, applySortToGrid: K } = Re({
438
- activeSort: a,
439
- emitSort: (m) => l("sort", m),
440
- patchTableConfig: f
441
- }), { onCellClick: S, onRowClick: w } = De({
442
- cellClick: (m) => l("cell:click", m),
443
- headers: E(() => e.headers),
444
- rowClick: (m, N) => l("row:click", m, N)
445
- }), C = {
594
+ }), { onSortChanged: i, applySortToGrid: m } = ot({
595
+ activeSort: R,
596
+ emitSort: (b) => l("sort", b),
597
+ patchTableConfig: F
598
+ }), w = d(() => t === "unpaginated" && !!y.value.fitToContent), D = xe.withParams({ autoHeightMinBodyHeight: 0 }), { onCellClick: O, onRowClick: I } = lt({
599
+ cellClick: (b) => l("cell:click", b),
600
+ headers: z(() => e.headers),
601
+ rowClick: (b, Z) => l("row:click", b, Z)
602
+ }), x = {
446
603
  resizable: !1,
447
604
  sortable: !1,
448
605
  suppressMovable: !0
449
- }, I = y(() => p.value.sortColumnKey), G = y(() => p.value.sortColumnOrder), k = y(() => [
450
- s.value,
606
+ }, G = d(() => y.value.sortColumnKey), _ = d(() => y.value.sortColumnOrder), g = d(() => [
607
+ k.value,
451
608
  e.refreshKey,
452
- I.value,
453
- G.value
454
- ]), D = t === "infinite" ? ye({
455
- fetcher: E(() => e.fetcher),
456
- resetKey: k,
457
- sort: a
458
- }) : void 0, U = D?.datasource, _ = y(() => D ? D.data.value : e.rows), z = y(() => D?.isFetching.value ?? !1), L = y(() => e.rows ? Array.from(e.rows) : void 0), { columnDefs: c, gridContext: u } = ke({
459
- headers: E(() => e.headers),
460
- slots: i,
461
- initialSort: a.value
609
+ G.value,
610
+ _.value
611
+ ]), c = t === "infinite" ? Ne({
612
+ fetcher: z(() => e.fetcher),
613
+ resetKey: g,
614
+ sort: R
615
+ }) : void 0, s = c?.datasource, f = d(() => c ? c.data.value : e.rows), C = d(() => c?.isFetching.value ?? !1), T = d(() => e.rows ? Array.from(e.rows) : void 0), { columnDefs: J, gridContext: B } = tt({
616
+ headers: z(() => e.headers),
617
+ mode: t,
618
+ rows: T,
619
+ slots: u,
620
+ tooltipTarget: v,
621
+ initialSort: R.value
462
622
  }), {
463
- fetchState: v,
464
- hasData: d,
465
- state: g
466
- } = Ce(
467
- _,
468
- E(() => D?.error.value),
469
- z
470
- ), R = y(() => g.value === v.SUCCESS && !d.value);
471
- D && pe({
472
- emitState: (m) => l("state", m),
473
- fetchLifecycleState: g,
474
- hasData: d
623
+ fetchState: H,
624
+ hasData: X,
625
+ state: Y
626
+ } = Ke(
627
+ f,
628
+ z(() => c?.error.value),
629
+ C
630
+ ), me = d(() => Y.value === H.SUCCESS && !X.value);
631
+ c && ze({
632
+ emitState: (b) => l("state", b),
633
+ fetchLifecycleState: Y,
634
+ hasData: X
475
635
  });
476
- const $ = (m) => {
477
- o.value = m.api, l("grid:ready", m.api);
636
+ const fe = (b) => {
637
+ h.value = b.api, l("grid:ready", b.api);
478
638
  };
479
- return (m, N) => {
480
- const q = Q("KEmptyState");
481
- return O(), B("div", xe, [
482
- e.error ? (O(), B("div", Ge, [
483
- j(m.$slots, "error-state", {}, () => [
484
- W(q, {
639
+ return (b, Z) => {
640
+ const ee = ie("KEmptyState");
641
+ return E(), K("div", {
642
+ ref_key: "rootElement",
643
+ ref: r,
644
+ class: ue(["kong-ui-public-table-data-grid", { "fit-to-content": w.value }]),
645
+ "data-testid": "table-data-grid"
646
+ }, [
647
+ e.error ? (E(), K("div", nt, [
648
+ U(b.$slots, "error-state", {}, () => [
649
+ Q(ee, {
485
650
  "icon-variant": "error",
486
- message: h(r)("errorState.message"),
487
- title: h(r)("errorState.title")
651
+ message: S(o)("errorState.message"),
652
+ title: S(o)("errorState.title")
488
653
  }, null, 8, ["message", "title"])
489
654
  ], !0)
490
- ])) : R.value ? (O(), B("div", Te, [
491
- j(m.$slots, "empty-state", {}, () => [
492
- W(q, {
493
- message: h(r)("emptyState.message"),
494
- title: h(r)("emptyState.title")
655
+ ])) : me.value ? (E(), K("div", rt, [
656
+ U(b.$slots, "empty-state", {}, () => [
657
+ Q(ee, {
658
+ message: S(o)("emptyState.message"),
659
+ title: S(o)("emptyState.title")
495
660
  }, null, 8, ["message", "title"])
496
661
  ], !0)
497
- ])) : (O(), J(h(re), {
662
+ ])) : (E(), q(S(we), {
498
663
  key: 2,
499
- "cache-block-size": h(t) === "infinite" ? h(s) : void 0,
664
+ "cache-block-size": S(t) === "infinite" ? S(k) : void 0,
500
665
  class: "table-data-grid-grid",
501
- "column-defs": h(c),
502
- context: h(u),
503
- datasource: h(t) === "infinite" ? h(U) : void 0,
504
- "default-col-def": C,
505
- "infinite-initial-row-count": h(t) === "infinite" ? 1 : void 0,
506
- loading: z.value,
507
- "row-data": h(t) === "unpaginated" ? L.value : void 0,
508
- "row-model-type": h(t) === "unpaginated" ? "clientSide" : "infinite",
666
+ "column-defs": S(J),
667
+ context: S(B),
668
+ datasource: S(t) === "infinite" ? S(s) : void 0,
669
+ "default-col-def": x,
670
+ "dom-layout": w.value ? "autoHeight" : "normal",
671
+ "infinite-initial-row-count": S(t) === "infinite" ? 1 : void 0,
672
+ loading: C.value,
673
+ "row-data": S(t) === "unpaginated" ? T.value : void 0,
674
+ "row-model-type": S(t) === "unpaginated" ? "clientSide" : "infinite",
509
675
  "suppress-cell-focus": !0,
510
676
  "suppress-multi-sort": !0,
511
- theme: h(de),
512
- onCellClicked: h(S),
513
- onGridReady: $,
514
- onRowClicked: h(w),
515
- onSortChanged: h(b)
516
- }, null, 8, ["cache-block-size", "column-defs", "context", "datasource", "infinite-initial-row-count", "loading", "row-data", "row-model-type", "theme", "onCellClicked", "onRowClicked", "onSortChanged"]))
517
- ]);
677
+ theme: S(D),
678
+ onCellClicked: S(O),
679
+ onGridReady: fe,
680
+ onRowClicked: S(I),
681
+ onSortChanged: S(i)
682
+ }, null, 8, ["cache-block-size", "column-defs", "context", "datasource", "dom-layout", "infinite-initial-row-count", "loading", "row-data", "row-model-type", "theme", "onCellClicked", "onRowClicked", "onSortChanged"]))
683
+ ], 2);
518
684
  };
519
685
  }
520
- }), ze = (e, n) => {
686
+ }), it = (e, a) => {
521
687
  const t = e.__vccOpts || e;
522
- for (const [l, r] of n)
523
- t[l] = r;
688
+ for (const [l, n] of a)
689
+ t[l] = n;
524
690
  return t;
525
- }, Ue = /* @__PURE__ */ ze(Fe, [["__scopeId", "data-v-17889e6a"]]);
691
+ }, mt = /* @__PURE__ */ it(st, [["__scopeId", "data-v-85f88484"]]);
526
692
  export {
527
- Ue as TableDataGrid
693
+ mt as TableDataGrid
528
694
  };