@platforma-sdk/ui-vue 1.79.27 → 1.80.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.
- package/.turbo/turbo-build.log +19 -19
- package/.turbo/turbo-formatter$colon$check.log +2 -2
- package/.turbo/turbo-linter$colon$check.log +2 -2
- package/.turbo/turbo-types$colon$check.log +1 -1
- package/CHANGELOG.md +38 -0
- package/dist/components/PlAdvancedFilter/FilterEditor.js.map +1 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.style.js.map +1 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.vue.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +124 -113
- package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
- package/dist/components/PlAdvancedFilter/types.d.ts +1 -1
- package/dist/components/PlAdvancedFilter/types.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/utils.d.ts +1 -1
- package/dist/components/PlAdvancedFilter/utils.d.ts.map +1 -1
- package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +125 -121
- package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
- package/dist/components/PlAgDataTable/compositions/useFilterableColumns.d.ts +4 -4
- package/dist/components/PlAgDataTable/sources/row-number.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/row-number.js +1 -1
- package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts +40 -4
- package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-source-v2.js +91 -56
- package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/table-state-v2.js +65 -64
- package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
- package/dist/components/PlAgDataTable/sources/value-rendering.d.ts +3 -3
- package/dist/components/PlAgDataTable/sources/value-rendering.d.ts.map +1 -1
- package/dist/components/PlAgDataTable/sources/value-rendering.js +12 -12
- package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
- package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +42 -45
- package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
- package/dist/internal/service_factories.d.ts +4 -3
- package/dist/internal/service_factories.d.ts.map +1 -1
- package/dist/internal/service_factories.js +6 -4
- package/dist/internal/service_factories.js.map +1 -1
- package/package.json +7 -6
- package/src/components/PlAdvancedFilter/FilterEditor.vue +39 -10
- package/src/components/PlAdvancedFilter/types.ts +3 -2
- package/src/components/PlAdvancedFilter/utils.ts +1 -1
- package/src/components/PlAgDataTable/PlAgDataTableV2.vue +21 -5
- package/src/components/PlAgDataTable/sources/row-number.ts +1 -0
- package/src/components/PlAgDataTable/sources/table-source-v2.ts +132 -31
- package/src/components/PlAgDataTable/sources/table-state-v2.ts +6 -7
- package/src/components/PlAgDataTable/sources/value-rendering.ts +7 -7
- package/src/components/PlTableFilters/PlTableFiltersV2.vue +9 -13
- package/src/internal/service_factories.ts +2 -0
|
@@ -11,18 +11,18 @@ import c from "../PlTableFastSearch/PlTableFastSearch.js";
|
|
|
11
11
|
import "../PlTableFastSearch/index.js";
|
|
12
12
|
import ee from "./PlAgDataTableSheets.js";
|
|
13
13
|
import te from "./PlAgRowCount.js";
|
|
14
|
-
import { calculateGridOptions as ne } from "./sources/table-source-v2.js";
|
|
14
|
+
import { calculateGridOptions as ne, effectiveVisibility as re } from "./sources/table-source-v2.js";
|
|
15
15
|
import { useTableState as l } from "./sources/table-state-v2.js";
|
|
16
16
|
import { useFilterableColumns as u } from "./compositions/useFilterableColumns.js";
|
|
17
|
-
import { useGrid as
|
|
18
|
-
import { AgGridTheme as
|
|
19
|
-
import { computed as
|
|
20
|
-
import { canonicalizeJson as
|
|
21
|
-
import { AgGridVue as
|
|
17
|
+
import { useGrid as ie } from "./compositions/useGrid.js";
|
|
18
|
+
import { AgGridTheme as ae } from "../../AgGridVue/AgGridTheme.js";
|
|
19
|
+
import { computed as d, createBlock as f, createCommentVNode as p, createElementBlock as oe, createSlots as se, createVNode as m, defineComponent as h, effectScope as g, isRef as _, mergeModels as v, nextTick as ce, normalizeClass as y, openBlock as b, ref as x, renderSlot as S, toRefs as le, unref as C, useModel as w, watch as T, watchEffect as E, withCtx as D } from "vue";
|
|
20
|
+
import { canonicalizeJson as O, createPlSelectionModel as k, getAxisId as A, getRawPlatformaInstance as ue, isAbortError as de, matchAxisId as j } from "@platforma-sdk/model";
|
|
21
|
+
import { AgGridVue as fe } from "ag-grid-vue3";
|
|
22
22
|
//#region src/components/PlAgDataTable/PlAgDataTableV2.vue?vue&type=script&setup=true&lang.ts
|
|
23
|
-
var
|
|
23
|
+
var M = /* @__PURE__ */ h({
|
|
24
24
|
__name: "PlAgDataTableV2",
|
|
25
|
-
props: /* @__PURE__ */
|
|
25
|
+
props: /* @__PURE__ */ v({
|
|
26
26
|
settings: {},
|
|
27
27
|
disableColumnsPanel: { type: Boolean },
|
|
28
28
|
disableFiltersPanel: { type: Boolean },
|
|
@@ -40,63 +40,66 @@ var N = /* @__PURE__ */ g({
|
|
|
40
40
|
selection: {},
|
|
41
41
|
selectionModifiers: {}
|
|
42
42
|
}),
|
|
43
|
-
emits: /* @__PURE__ */
|
|
43
|
+
emits: /* @__PURE__ */ v([
|
|
44
44
|
"rowDoubleClicked",
|
|
45
45
|
"cellButtonClicked",
|
|
46
46
|
"newDataRendered"
|
|
47
47
|
], ["update:modelValue", "update:selection"]),
|
|
48
|
-
setup(
|
|
49
|
-
let
|
|
50
|
-
selection:
|
|
51
|
-
noRowsText:
|
|
52
|
-
runningText:
|
|
53
|
-
loadingText:
|
|
54
|
-
notReadyText:
|
|
55
|
-
cellRendererSelector:
|
|
56
|
-
}),
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
},
|
|
60
|
-
e.data && e.data.axesKey &&
|
|
61
|
-
},
|
|
62
|
-
let r =
|
|
63
|
-
|
|
48
|
+
setup(h, { expose: v, emit: M }) {
|
|
49
|
+
let pe = w(h, "modelValue"), N = w(h, "selection"), P = h, { settings: F } = le(P), I = M, L = new r(), { gridApi: R, gridOptions: z } = ie({
|
|
50
|
+
selection: N,
|
|
51
|
+
noRowsText: P.noRowsText,
|
|
52
|
+
runningText: P.runningText,
|
|
53
|
+
loadingText: P.loadingText,
|
|
54
|
+
notReadyText: P.notReadyText,
|
|
55
|
+
cellRendererSelector: P.cellRendererSelector
|
|
56
|
+
}), B = !1;
|
|
57
|
+
z.value.onGridPreDestroyed = (e) => {
|
|
58
|
+
B || (z.value.initialState = V.value = q(K(e.api.getState()), V.value, e.api, J())), R.value = null;
|
|
59
|
+
}, z.value.onRowDoubleClicked = (e) => {
|
|
60
|
+
e.data && e.data.axesKey && I("rowDoubleClicked", e.data.axesKey);
|
|
61
|
+
}, z.value.onStateUpdated = (t) => {
|
|
62
|
+
let r = q(K(t.state), V.value, t.api, J());
|
|
63
|
+
z.value.initialState = V.value = r, e(t.sources, ["columnSizing"]) || t.api.autoSizeColumns(t.api.getAllDisplayedColumns().filter((e) => e.getColId() !== n));
|
|
64
64
|
};
|
|
65
|
-
let [
|
|
66
|
-
let e = { ...
|
|
65
|
+
let [me, he] = u(() => F.value.sourceId, () => z.value.columnDefs ?? null), { gridState: V, sheetsState: H, searchString: U, filtersState: W, defaultFiltersState: G, resetDefaultFilters: ge } = l(pe, F, he, d(() => F.value.sourceId === null ? void 0 : F.value.model?.defaultFilters)), _e = d(() => {
|
|
66
|
+
let e = { ...F.value };
|
|
67
67
|
return e.sourceId === null ? {
|
|
68
68
|
sheets: [],
|
|
69
69
|
cachedState: []
|
|
70
70
|
} : {
|
|
71
71
|
sheets: e.sheets ?? [],
|
|
72
|
-
cachedState: [...
|
|
72
|
+
cachedState: [...H.value]
|
|
73
73
|
};
|
|
74
74
|
});
|
|
75
|
-
|
|
76
|
-
function
|
|
75
|
+
z.value.initialState = V.value;
|
|
76
|
+
function K(e) {
|
|
77
77
|
return {
|
|
78
78
|
columnOrder: e.columnOrder,
|
|
79
79
|
sort: e.sort,
|
|
80
80
|
columnVisibility: e.columnVisibility
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function q(e, t, n, r) {
|
|
84
84
|
if (e.columnVisibility !== void 0) return e;
|
|
85
85
|
if (t.columnVisibility !== void 0) return {
|
|
86
86
|
...e,
|
|
87
87
|
columnVisibility: { hiddenColIds: [] }
|
|
88
88
|
};
|
|
89
|
-
let
|
|
90
|
-
return
|
|
89
|
+
let i = ve(n, r);
|
|
90
|
+
return i.length > 0 ? {
|
|
91
91
|
...e,
|
|
92
|
-
columnVisibility: { hiddenColIds:
|
|
92
|
+
columnVisibility: { hiddenColIds: i }
|
|
93
93
|
} : e;
|
|
94
94
|
}
|
|
95
|
-
function
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
function J() {
|
|
96
|
+
return "model" in P.settings ? P.settings.model?.columnsMeta : void 0;
|
|
97
|
+
}
|
|
98
|
+
function ve(e, t) {
|
|
99
|
+
let n = e.getAllGridColumns();
|
|
100
|
+
return n ? n.filter((e) => {
|
|
101
|
+
let n = e.getColDef().context;
|
|
102
|
+
return n !== void 0 && n.type === "column" && re(n, t) === "optional";
|
|
100
103
|
}).map((e) => e.getColId()) : [];
|
|
101
104
|
}
|
|
102
105
|
function Y(e) {
|
|
@@ -106,43 +109,43 @@ var N = /* @__PURE__ */ g({
|
|
|
106
109
|
columnVisibility: n
|
|
107
110
|
};
|
|
108
111
|
}
|
|
109
|
-
let X =
|
|
110
|
-
|
|
112
|
+
let X = x(0);
|
|
113
|
+
T(() => [R.value, V.value], ([t, n]) => {
|
|
111
114
|
if (!t || t.isDestroyed()) return;
|
|
112
|
-
let r =
|
|
113
|
-
!e(n, {}) && !e(Y(n), Y(r)) && (
|
|
114
|
-
|
|
115
|
+
let r = K(t.getState());
|
|
116
|
+
!e(n, {}) && !e(Y(n), Y(r)) && (B = !0, z.value.initialState = n, ++X.value, ce(() => {
|
|
117
|
+
B = !1;
|
|
115
118
|
}));
|
|
116
119
|
});
|
|
117
|
-
let
|
|
118
|
-
|
|
120
|
+
let ye = d(() => P.cellRendererSelector ?? null);
|
|
121
|
+
T(() => [R.value, ye.value], ([e, t]) => {
|
|
119
122
|
!e || e.isDestroyed() || e.setGridOption("defaultColDef", {
|
|
120
|
-
...
|
|
123
|
+
...z.value.defaultColDef,
|
|
121
124
|
cellRendererSelector: t ?? void 0
|
|
122
125
|
});
|
|
123
|
-
}),
|
|
126
|
+
}), v({
|
|
124
127
|
focusRow: async (t) => {
|
|
125
|
-
let n = await
|
|
128
|
+
let n = await L.promise;
|
|
126
129
|
return n.isDestroyed() ? !1 : i(n, (n) => e(n.data?.axesKey, t));
|
|
127
130
|
},
|
|
128
131
|
updateSelection: async ({ axesSpec: n, selectedKeys: r }) => {
|
|
129
|
-
let i = await
|
|
132
|
+
let i = await L.promise;
|
|
130
133
|
if (i.isDestroyed()) return !1;
|
|
131
|
-
let a =
|
|
134
|
+
let a = N.value?.axesSpec;
|
|
132
135
|
if (!a || a.length !== n.length) return !1;
|
|
133
136
|
let o = n.map((e) => {
|
|
134
|
-
let t =
|
|
135
|
-
return a.findIndex((e) =>
|
|
137
|
+
let t = A(e);
|
|
138
|
+
return a.findIndex((e) => j(e, t));
|
|
136
139
|
}), s = new Set(o);
|
|
137
140
|
if (s.has(-1) || s.size !== n.length) return !1;
|
|
138
|
-
let c = r.map((e) =>
|
|
141
|
+
let c = r.map((e) => O(o.map((t) => e[t])));
|
|
139
142
|
if (!e(i.getServerSideSelectionState()?.toggledNodes ?? [], c)) {
|
|
140
143
|
i.setServerSideSelectionState({
|
|
141
144
|
selectAll: !1,
|
|
142
145
|
toggledNodes: c
|
|
143
146
|
});
|
|
144
|
-
let e =
|
|
145
|
-
e.run(() =>
|
|
147
|
+
let e = g(), { resolve: n, promise: r } = Promise.withResolvers();
|
|
148
|
+
e.run(() => T(N, n, { once: !0 }));
|
|
146
149
|
try {
|
|
147
150
|
await t(r, 500);
|
|
148
151
|
} catch {
|
|
@@ -154,21 +157,21 @@ var N = /* @__PURE__ */ g({
|
|
|
154
157
|
return !0;
|
|
155
158
|
}
|
|
156
159
|
});
|
|
157
|
-
let Z =
|
|
158
|
-
return
|
|
160
|
+
let Z = k(), Q = null, $ = x(0);
|
|
161
|
+
return T(() => [R.value, F.value], ([t, n]) => {
|
|
159
162
|
if (!(!t || t.isDestroyed()) && !e(n, Q)) {
|
|
160
163
|
++$.value;
|
|
161
164
|
try {
|
|
162
|
-
if (t.hideOverlay(),
|
|
165
|
+
if (t.hideOverlay(), L.reset(), n.sourceId === null) {
|
|
163
166
|
t.updateGridOptions({
|
|
164
167
|
loading: !0,
|
|
165
168
|
loadingOverlayComponentParams: {
|
|
166
|
-
...
|
|
169
|
+
...z.value.loadingOverlayComponentParams,
|
|
167
170
|
variant: n.pending ? "running" : "not-ready"
|
|
168
171
|
},
|
|
169
172
|
columnDefs: void 0,
|
|
170
173
|
serverSideDatasource: void 0
|
|
171
|
-
}),
|
|
174
|
+
}), N.value && (N.value && !e(N.value, Z) && (N.value = k()), t.setServerSideSelectionState({
|
|
172
175
|
selectAll: !1,
|
|
173
176
|
toggledNodes: []
|
|
174
177
|
}));
|
|
@@ -178,10 +181,10 @@ var N = /* @__PURE__ */ g({
|
|
|
178
181
|
n.sourceId !== Q?.sourceId && (t.updateGridOptions({
|
|
179
182
|
loading: !0,
|
|
180
183
|
loadingOverlayComponentParams: {
|
|
181
|
-
...
|
|
184
|
+
...z.value.loadingOverlayComponentParams,
|
|
182
185
|
variant: "loading"
|
|
183
186
|
}
|
|
184
|
-
}),
|
|
187
|
+
}), N.value && Q?.sourceId && (N.value && !e(N.value, Z) && (N.value = k()), t.setServerSideSelectionState({
|
|
185
188
|
selectAll: !1,
|
|
186
189
|
toggledNodes: []
|
|
187
190
|
})));
|
|
@@ -198,40 +201,41 @@ var N = /* @__PURE__ */ g({
|
|
|
198
201
|
let i = $.value;
|
|
199
202
|
ne({
|
|
200
203
|
generation: $,
|
|
201
|
-
pfDriver:
|
|
204
|
+
pfDriver: ue().pFrameDriver,
|
|
202
205
|
fullTableHandle: n.model?.fullTableHandle,
|
|
203
206
|
visibleTableHandle: n.model?.visibleTableHandle,
|
|
207
|
+
columnsMeta: n.model?.columnsMeta,
|
|
204
208
|
sheets: n.sheets ?? [],
|
|
205
|
-
dataRenderedTracker:
|
|
206
|
-
hiddenColIds:
|
|
209
|
+
dataRenderedTracker: L,
|
|
210
|
+
hiddenColIds: V.value.columnVisibility?.hiddenColIds,
|
|
207
211
|
cellButtonAxisParams: {
|
|
208
|
-
showCellButtonForAxisId:
|
|
209
|
-
cellButtonInvokeRowsOnDoubleClick:
|
|
210
|
-
trigger: (e) =>
|
|
212
|
+
showCellButtonForAxisId: P.showCellButtonForAxisId,
|
|
213
|
+
cellButtonInvokeRowsOnDoubleClick: P.cellButtonInvokeRowsOnDoubleClick,
|
|
214
|
+
trigger: (e) => I("cellButtonClicked", e)
|
|
211
215
|
}
|
|
212
216
|
}).then((n) => {
|
|
213
217
|
if (t.isDestroyed() || i !== $.value) return;
|
|
214
218
|
let { axesSpec: r, ...a } = n;
|
|
215
|
-
if (t.updateGridOptions({ ...a }),
|
|
216
|
-
let { axesSpec: n, selectedKeys: i } =
|
|
219
|
+
if (t.updateGridOptions({ ...a }), N.value) {
|
|
220
|
+
let { axesSpec: n, selectedKeys: i } = N.value;
|
|
217
221
|
if (!e(n, r)) {
|
|
218
222
|
if (!n || r.length !== n.length) {
|
|
219
223
|
let n = {
|
|
220
224
|
axesSpec: r,
|
|
221
225
|
selectedKeys: []
|
|
222
226
|
};
|
|
223
|
-
return e(
|
|
227
|
+
return e(N.value, n) || (N.value = n), t.setServerSideSelectionState({
|
|
224
228
|
selectAll: !1,
|
|
225
229
|
toggledNodes: []
|
|
226
230
|
});
|
|
227
231
|
}
|
|
228
|
-
let a = n.map(
|
|
232
|
+
let a = n.map(A).map((e) => r.findIndex((t) => j(t, e))), o = new Set(a);
|
|
229
233
|
if (o.has(-1) || o.size !== r.length) {
|
|
230
234
|
let n = {
|
|
231
235
|
axesSpec: r,
|
|
232
236
|
selectedKeys: []
|
|
233
237
|
};
|
|
234
|
-
return e(
|
|
238
|
+
return e(N.value, n) || (N.value = n), t.setServerSideSelectionState({
|
|
235
239
|
selectAll: !1,
|
|
236
240
|
toggledNodes: []
|
|
237
241
|
});
|
|
@@ -240,63 +244,63 @@ var N = /* @__PURE__ */ g({
|
|
|
240
244
|
axesSpec: r,
|
|
241
245
|
selectedKeys: s
|
|
242
246
|
};
|
|
243
|
-
return e(
|
|
247
|
+
return e(N.value, c) || (N.value = c), t.setServerSideSelectionState({
|
|
244
248
|
selectAll: !1,
|
|
245
|
-
toggledNodes: s.map((e) =>
|
|
249
|
+
toggledNodes: s.map((e) => O(e))
|
|
246
250
|
});
|
|
247
251
|
}
|
|
248
252
|
}
|
|
249
253
|
}).catch((e) => {
|
|
250
|
-
t.isDestroyed() || i !== $.value ||
|
|
254
|
+
t.isDestroyed() || i !== $.value || de(e) || console.trace(e);
|
|
251
255
|
}).finally(() => {
|
|
252
256
|
t.isDestroyed() || i !== $.value || t.updateGridOptions({ loading: !1 });
|
|
253
|
-
}),
|
|
257
|
+
}), L.promise.then(() => I("newDataRendered"));
|
|
254
258
|
} catch (e) {
|
|
255
259
|
console.trace(e);
|
|
256
260
|
} finally {
|
|
257
261
|
Q = n;
|
|
258
262
|
}
|
|
259
263
|
}
|
|
260
|
-
}),
|
|
261
|
-
gridApi:
|
|
262
|
-
loadingText:
|
|
263
|
-
runningText:
|
|
264
|
-
notReadyText:
|
|
265
|
-
noRowsText:
|
|
264
|
+
}), T(() => ({
|
|
265
|
+
gridApi: R.value,
|
|
266
|
+
loadingText: P.loadingText,
|
|
267
|
+
runningText: P.runningText,
|
|
268
|
+
notReadyText: P.notReadyText,
|
|
269
|
+
noRowsText: P.noRowsText
|
|
266
270
|
}), ({ gridApi: e, loadingText: t, runningText: n, notReadyText: r, noRowsText: i }) => {
|
|
267
271
|
!e || e.isDestroyed() || e.updateGridOptions({
|
|
268
272
|
loadingOverlayComponentParams: {
|
|
269
|
-
...
|
|
273
|
+
...z.value.loadingOverlayComponentParams,
|
|
270
274
|
loadingText: t,
|
|
271
275
|
runningText: n,
|
|
272
276
|
notReadyText: r
|
|
273
277
|
},
|
|
274
278
|
noRowsOverlayComponentParams: {
|
|
275
|
-
...
|
|
279
|
+
...z.value.noRowsOverlayComponentParams,
|
|
276
280
|
text: i
|
|
277
281
|
}
|
|
278
282
|
});
|
|
279
|
-
}),
|
|
280
|
-
!
|
|
283
|
+
}), E(() => {
|
|
284
|
+
!R.value || R.value?.isDestroyed() || R.value.updateGridOptions({ statusBar: z.value.loading ? void 0 : { statusPanels: [{
|
|
281
285
|
statusPanel: te,
|
|
282
286
|
align: "left"
|
|
283
287
|
}] } });
|
|
284
|
-
}), (e, t) => (
|
|
285
|
-
|
|
288
|
+
}), (e, t) => (b(), oe("div", { class: y(e.$style.container) }, [
|
|
289
|
+
C(R) && !h.disableColumnsPanel ? (b(), f(C(o), {
|
|
286
290
|
key: 0,
|
|
287
|
-
api:
|
|
288
|
-
}, null, 8, ["api"])) :
|
|
289
|
-
|
|
291
|
+
api: C(R)
|
|
292
|
+
}, null, 8, ["api"])) : p("", !0),
|
|
293
|
+
h.disableFiltersPanel ? p("", !0) : (b(), f(s, {
|
|
290
294
|
key: 1,
|
|
291
|
-
filters:
|
|
292
|
-
"default-filters":
|
|
293
|
-
"pframe-handle": "model" in
|
|
294
|
-
columns:
|
|
295
|
-
onUpdateFilters: t[0] ||= (e) =>
|
|
296
|
-
onResetDefaultFilters:
|
|
297
|
-
onUpdateDefaultFilters: t[1] ||= (e) =>
|
|
298
|
-
modelValue:
|
|
299
|
-
"onUpdate:modelValue": t[2] ||= (e) =>
|
|
295
|
+
filters: C(W),
|
|
296
|
+
"default-filters": C(G),
|
|
297
|
+
"pframe-handle": "model" in C(F) ? C(F)?.model?.fullPframeHandle : void 0,
|
|
298
|
+
columns: C(me),
|
|
299
|
+
onUpdateFilters: t[0] ||= (e) => W.value = e,
|
|
300
|
+
onResetDefaultFilters: C(ge),
|
|
301
|
+
onUpdateDefaultFilters: t[1] ||= (e) => G.value = e,
|
|
302
|
+
modelValue: C(W),
|
|
303
|
+
"onUpdate:modelValue": t[2] ||= (e) => _(W) ? W.value = e : null
|
|
300
304
|
}, null, 8, [
|
|
301
305
|
"filters",
|
|
302
306
|
"default-filters",
|
|
@@ -305,33 +309,33 @@ var N = /* @__PURE__ */ g({
|
|
|
305
309
|
"onResetDefaultFilters",
|
|
306
310
|
"modelValue"
|
|
307
311
|
])),
|
|
308
|
-
|
|
312
|
+
C(R) && h.showExportButton ? (b(), f(a, {
|
|
309
313
|
key: 2,
|
|
310
|
-
api:
|
|
311
|
-
"table-handle": "model" in
|
|
312
|
-
}, null, 8, ["api", "table-handle"])) :
|
|
313
|
-
|
|
314
|
-
modelValue:
|
|
315
|
-
"onUpdate:modelValue": t[3] ||= (e) =>
|
|
316
|
-
settings:
|
|
317
|
-
},
|
|
314
|
+
api: C(R),
|
|
315
|
+
"table-handle": "model" in C(F) ? C(F)?.model?.visibleTableHandle : void 0
|
|
316
|
+
}, null, 8, ["api", "table-handle"])) : p("", !0),
|
|
317
|
+
m(ee, {
|
|
318
|
+
modelValue: C(H),
|
|
319
|
+
"onUpdate:modelValue": t[3] ||= (e) => _(H) ? H.value = e : null,
|
|
320
|
+
settings: _e.value
|
|
321
|
+
}, se({ _: 2 }, [e.$slots["before-sheets"] ? {
|
|
318
322
|
name: "before",
|
|
319
|
-
fn:
|
|
323
|
+
fn: D(() => [S(e.$slots, "before-sheets")]),
|
|
320
324
|
key: "0"
|
|
321
325
|
} : void 0, e.$slots["after-sheets"] ? {
|
|
322
326
|
name: "after",
|
|
323
|
-
fn:
|
|
327
|
+
fn: D(() => [S(e.$slots, "after-sheets")]),
|
|
324
328
|
key: "1"
|
|
325
329
|
} : void 0]), 1032, ["modelValue", "settings"]),
|
|
326
|
-
|
|
327
|
-
modelValue:
|
|
328
|
-
"onUpdate:modelValue": t[4] ||= (e) =>
|
|
330
|
+
m(C(c), {
|
|
331
|
+
modelValue: C(U),
|
|
332
|
+
"onUpdate:modelValue": t[4] ||= (e) => _(U) ? U.value = e : null
|
|
329
333
|
}, null, 8, ["modelValue"]),
|
|
330
|
-
(
|
|
334
|
+
(b(), f(C(fe), {
|
|
331
335
|
key: X.value,
|
|
332
|
-
theme:
|
|
333
|
-
class:
|
|
334
|
-
"grid-options":
|
|
336
|
+
theme: C(ae),
|
|
337
|
+
class: y(e.$style.grid),
|
|
338
|
+
"grid-options": C(z)
|
|
335
339
|
}, null, 8, [
|
|
336
340
|
"theme",
|
|
337
341
|
"class",
|
|
@@ -341,6 +345,6 @@ var N = /* @__PURE__ */ g({
|
|
|
341
345
|
}
|
|
342
346
|
});
|
|
343
347
|
//#endregion
|
|
344
|
-
export {
|
|
348
|
+
export { M as default };
|
|
345
349
|
|
|
346
350
|
//# sourceMappingURL=PlAgDataTableV2.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlAgDataTableV2.vue_vue_type_script_setup_true_lang.js","names":["$style","$slots"],"sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n isColumnOptional,\n} from \"@platforma-sdk/model\";\nimport type { CellRendererSelectorFunc, GridApi, GridState } from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, nextTick, ref, toRefs, watch, watchEffect } from \"vue\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport { PlTableFastSearch } from \"../PlTableFastSearch\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n} from \"./types\";\nimport { useFilterableColumns } from \"./compositions/useFilterableColumns\";\nimport { useGrid } from \"./compositions/useGrid\";\nimport { AgGridTheme } from \"../../AgGridVue/AgGridTheme\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst { gridApi, gridOptions } = useGrid({\n selection,\n noRowsText: props.noRowsText,\n runningText: props.runningText,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n cellRendererSelector: props.cellRendererSelector,\n});\nlet isReloading = false;\ngridOptions.value.onGridPreDestroyed = (event) => {\n if (!isReloading) {\n gridOptions.value.initialState = gridState.value = normalizeColumnVisibility(\n makePartialState(event.api.getState()),\n gridState.value,\n event.api,\n );\n }\n gridApi.value = null;\n};\ngridOptions.value.onRowDoubleClicked = (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n};\ngridOptions.value.onStateUpdated = (event) => {\n const partialState = normalizeColumnVisibility(\n makePartialState(event.state),\n gridState.value,\n event.api,\n );\n // We have to keep initialState synchronized with gridState for gridState recovery after key updating.\n gridOptions.value.initialState = gridState.value = partialState;\n\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n};\n\nconst [filterableColumns, visibleFilterableColumns] = useFilterableColumns(\n () => settings.value.sourceId,\n () => gridOptions.value.columnDefs ?? null,\n);\nconst defaultFilters = computed(() =>\n settings.value.sourceId !== null ? settings.value.model?.defaultFilters : undefined,\n);\nconst {\n gridState,\n sheetsState,\n searchString,\n filtersState,\n defaultFiltersState,\n resetDefaultFilters,\n} = useTableState(tableState, settings, visibleFilterableColumns, defaultFilters);\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\ngridOptions.value.initialState = gridState.value;\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// AG Grid returns columnVisibility: undefined when all columns are visible.\n// We need to distinguish \"no state yet\" (use isColumnOptional defaults) from\n// \"user explicitly showed all columns\" (store []). This function normalizes\n// the undefined from AG Grid based on the previous state.\nfunction normalizeColumnVisibility(\n partialState: PlDataTableGridStateCore,\n prevState: PlDataTableGridStateCore,\n api: GridApi<PlAgDataTableV2Row>,\n): PlDataTableGridStateCore {\n if (partialState.columnVisibility !== undefined) return partialState;\n\n if (prevState.columnVisibility !== undefined) {\n // Had explicit visibility state before → user made all columns visible → store [].\n return { ...partialState, columnVisibility: { hiddenColIds: [] } };\n }\n\n // No previous explicit state → compute defaults from current columns\n // to replicate: hide: hiddenColIds?.includes(colId) ?? isColumnOptional(spec.spec)\n const defaultHidden = getDefaultHiddenColIds(api);\n if (defaultHidden.length > 0) {\n return { ...partialState, columnVisibility: { hiddenColIds: defaultHidden } };\n }\n\n return partialState;\n}\n\nfunction getDefaultHiddenColIds(api: GridApi<PlAgDataTableV2Row>): PlTableColumnIdJson[] {\n const cols = api.getAllGridColumns();\n if (!cols) return [];\n\n return cols\n .filter((col) => {\n const spec = col.getColDef().context as PTableColumnSpec | undefined;\n return spec !== undefined && spec.type === \"column\" && isColumnOptional(spec.spec);\n })\n .map((col) => col.getColId() as PlTableColumnIdJson);\n}\n\n// Normalize columnVisibility for comparison: undefined and { hiddenColIds: [] } are equivalent.\nfunction stateForReloadCompare(state: PlDataTableGridStateCore): PlDataTableGridStateCore {\n const cv = state.columnVisibility;\n const normalizedCv = !cv || cv.hiddenColIds.length === 0 ? undefined : state.columnVisibility;\n return { ...state, columnVisibility: normalizedCv };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (\n !isJsonEqual(gridState, {}) &&\n !isJsonEqual(stateForReloadCompare(gridState), stateForReloadCompare(selfState))\n ) {\n isReloading = true;\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n nextTick(() => {\n isReloading = false;\n });\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n if (\n settings.model?.fullTableHandle === undefined ||\n settings.model?.visibleTableHandle === undefined\n ) {\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n fullTableHandle: settings.model?.fullTableHandle,\n visibleTableHandle: settings.model?.visibleTableHandle,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n :filters=\"filtersState\"\n :default-filters=\"defaultFiltersState\"\n :pframe-handle=\"'model' in settings ? settings?.model?.fullPframeHandle : undefined\"\n :columns=\"filterableColumns\"\n @updateFilters=\"(v) => (filtersState = v)\"\n @resetDefaultFilters=\"resetDefaultFilters\"\n @updateDefaultFilters=\"(v) => (defaultFiltersState = v)\"\n v-model=\"filtersState\"\n />\n <PlAgCsvExporter\n v-if=\"gridApi && showExportButton\"\n :api=\"gridApi\"\n :table-handle=\"'model' in settings ? settings?.model?.visibleTableHandle : undefined\"\n />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <PlTableFastSearch v-model=\"searchString\" />\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlAgDataTableV2.vue_vue_type_script_setup_true_lang.js","names":["$style","$slots"],"sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableColumnsMeta,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableKey,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n} from \"@platforma-sdk/model\";\nimport type { CellRendererSelectorFunc, GridApi, GridState } from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, nextTick, ref, toRefs, watch, watchEffect } from \"vue\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport { PlTableFastSearch } from \"../PlTableFastSearch\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions, effectiveVisibility } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n} from \"./types\";\nimport { useFilterableColumns } from \"./compositions/useFilterableColumns\";\nimport { useGrid } from \"./compositions/useGrid\";\nimport { AgGridTheme } from \"../../AgGridVue/AgGridTheme\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst { gridApi, gridOptions } = useGrid({\n selection,\n noRowsText: props.noRowsText,\n runningText: props.runningText,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n cellRendererSelector: props.cellRendererSelector,\n});\nlet isReloading = false;\ngridOptions.value.onGridPreDestroyed = (event) => {\n if (!isReloading) {\n gridOptions.value.initialState = gridState.value = normalizeColumnVisibility(\n makePartialState(event.api.getState()),\n gridState.value,\n event.api,\n currentColumnsMeta(),\n );\n }\n gridApi.value = null;\n};\ngridOptions.value.onRowDoubleClicked = (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n};\ngridOptions.value.onStateUpdated = (event) => {\n const partialState = normalizeColumnVisibility(\n makePartialState(event.state),\n gridState.value,\n event.api,\n currentColumnsMeta(),\n );\n // We have to keep initialState synchronized with gridState for gridState recovery after key updating.\n gridOptions.value.initialState = gridState.value = partialState;\n\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n};\n\nconst [filterableColumns, visibleFilterableColumns] = useFilterableColumns(\n () => settings.value.sourceId,\n () => gridOptions.value.columnDefs ?? null,\n);\nconst defaultFilters = computed(() =>\n settings.value.sourceId !== null ? settings.value.model?.defaultFilters : undefined,\n);\nconst {\n gridState,\n sheetsState,\n searchString,\n filtersState,\n defaultFiltersState,\n resetDefaultFilters,\n} = useTableState(tableState, settings, visibleFilterableColumns, defaultFilters);\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\ngridOptions.value.initialState = gridState.value;\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// AG Grid returns columnVisibility: undefined when all columns are visible.\n// We need to distinguish \"no state yet\" (use isColumnOptional defaults) from\n// \"user explicitly showed all columns\" (store []). This function normalizes\n// the undefined from AG Grid based on the previous state.\nfunction normalizeColumnVisibility(\n partialState: PlDataTableGridStateCore,\n prevState: PlDataTableGridStateCore,\n api: GridApi<PlAgDataTableV2Row>,\n columnsMeta: PlDataTableColumnsMeta | undefined,\n): PlDataTableGridStateCore {\n if (partialState.columnVisibility !== undefined) return partialState;\n\n if (prevState.columnVisibility !== undefined) {\n // Had explicit visibility state before → user made all columns visible → store [].\n return { ...partialState, columnVisibility: { hiddenColIds: [] } };\n }\n\n // No previous explicit state → compute defaults from current columns\n // to replicate: hide: hiddenColIds?.includes(colId) ?? isColumnOptional(spec.spec)\n const defaultHidden = getDefaultHiddenColIds(api, columnsMeta);\n if (defaultHidden.length > 0) {\n return { ...partialState, columnVisibility: { hiddenColIds: defaultHidden } };\n }\n\n return partialState;\n}\n\n/** Sidecar display meta is only on the `model` branch of the settings union. */\nfunction currentColumnsMeta(): PlDataTableColumnsMeta | undefined {\n return \"model\" in props.settings ? props.settings.model?.columnsMeta : undefined;\n}\n\nfunction getDefaultHiddenColIds(\n api: GridApi<PlAgDataTableV2Row>,\n columnsMeta: PlDataTableColumnsMeta | undefined,\n): PlTableColumnIdJson[] {\n const cols = api.getAllGridColumns();\n if (!cols) return [];\n\n return cols\n .filter((col) => {\n const spec = col.getColDef().context as PTableColumnSpec | undefined;\n return (\n spec !== undefined &&\n spec.type === \"column\" &&\n effectiveVisibility(spec, columnsMeta) === \"optional\"\n );\n })\n .map((col) => col.getColId() as PlTableColumnIdJson);\n}\n\n// Normalize columnVisibility for comparison: undefined and { hiddenColIds: [] } are equivalent.\nfunction stateForReloadCompare(state: PlDataTableGridStateCore): PlDataTableGridStateCore {\n const cv = state.columnVisibility;\n const normalizedCv = !cv || cv.hiddenColIds.length === 0 ? undefined : state.columnVisibility;\n return { ...state, columnVisibility: normalizedCv };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (\n !isJsonEqual(gridState, {}) &&\n !isJsonEqual(stateForReloadCompare(gridState), stateForReloadCompare(selfState))\n ) {\n isReloading = true;\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n nextTick(() => {\n isReloading = false;\n });\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n if (\n settings.model?.fullTableHandle === undefined ||\n settings.model?.visibleTableHandle === undefined\n ) {\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n fullTableHandle: settings.model?.fullTableHandle,\n visibleTableHandle: settings.model?.visibleTableHandle,\n columnsMeta: settings.model?.columnsMeta,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n :filters=\"filtersState\"\n :default-filters=\"defaultFiltersState\"\n :pframe-handle=\"'model' in settings ? settings?.model?.fullPframeHandle : undefined\"\n :columns=\"filterableColumns\"\n @updateFilters=\"(v) => (filtersState = v)\"\n @resetDefaultFilters=\"resetDefaultFilters\"\n @updateDefaultFilters=\"(v) => (defaultFiltersState = v)\"\n v-model=\"filtersState\"\n />\n <PlAgCsvExporter\n v-if=\"gridApi && showExportButton\"\n :api=\"gridApi\"\n :table-handle=\"'model' in settings ? settings?.model?.visibleTableHandle : undefined\"\n />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <PlTableFastSearch v-model=\"searchString\" />\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export declare function useFilterableColumns(getSourceId: () => string | null, g
|
|
|
20
20
|
};
|
|
21
21
|
} | {
|
|
22
22
|
type: "column";
|
|
23
|
-
id: import('@platforma-sdk/model').
|
|
23
|
+
id: import('@platforma-sdk/model').ColumnUniversalId;
|
|
24
24
|
spec: {
|
|
25
25
|
readonly kind: "PColumn";
|
|
26
26
|
readonly name: string;
|
|
@@ -56,7 +56,7 @@ export declare function useFilterableColumns(getSourceId: () => string | null, g
|
|
|
56
56
|
};
|
|
57
57
|
} | {
|
|
58
58
|
type: "column";
|
|
59
|
-
id: import('@platforma-sdk/model').
|
|
59
|
+
id: import('@platforma-sdk/model').ColumnUniversalId;
|
|
60
60
|
spec: {
|
|
61
61
|
readonly kind: "PColumn";
|
|
62
62
|
readonly name: string;
|
|
@@ -92,7 +92,7 @@ export declare function useFilterableColumns(getSourceId: () => string | null, g
|
|
|
92
92
|
};
|
|
93
93
|
} | {
|
|
94
94
|
type: "column";
|
|
95
|
-
id: import('@platforma-sdk/model').
|
|
95
|
+
id: import('@platforma-sdk/model').ColumnUniversalId;
|
|
96
96
|
spec: {
|
|
97
97
|
readonly kind: "PColumn";
|
|
98
98
|
readonly name: string;
|
|
@@ -128,7 +128,7 @@ export declare function useFilterableColumns(getSourceId: () => string | null, g
|
|
|
128
128
|
};
|
|
129
129
|
} | {
|
|
130
130
|
type: "column";
|
|
131
|
-
id: import('@platforma-sdk/model').
|
|
131
|
+
id: import('@platforma-sdk/model').ColumnUniversalId;
|
|
132
132
|
spec: {
|
|
133
133
|
readonly kind: "PColumn";
|
|
134
134
|
readonly name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-number.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/row-number.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,OAAO,EAEb,MAAM,oBAAoB,CAAC;AAK5B,eAAO,MAAM,2BAA2B,8BAA4B,CAAC;AAIrE,wBAAgB,mBAAmB,CAAC,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CA+BhE;
|
|
1
|
+
{"version":3,"file":"row-number.d.ts","sourceRoot":"","sources":["../../../../src/components/PlAgDataTable/sources/row-number.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,OAAO,EAEb,MAAM,oBAAoB,CAAC;AAK5B,eAAO,MAAM,2BAA2B,8BAA4B,CAAC;AAIrE,wBAAgB,mBAAmB,CAAC,KAAK,GAAG,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CA+BhE;AAwED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA2CvD"}
|
|
@@ -50,7 +50,7 @@ function l(e, t, r) {
|
|
|
50
50
|
if (typeof s != "number") return;
|
|
51
51
|
let c = s.toString().length;
|
|
52
52
|
!r && t.innerHTML.length === c || (t.innerHTML = "5".repeat(c), n(() => {
|
|
53
|
-
e.applyColumnState({ state: [{
|
|
53
|
+
e.isDestroyed() || e.applyColumnState({ state: [{
|
|
54
54
|
colId: i,
|
|
55
55
|
pinned: "left",
|
|
56
56
|
width: Math.max(a, t.offsetWidth)
|