@affino/datagrid-vue 0.3.10 → 0.3.12
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/dist/app/dataGridRowHeightMetrics.d.ts +9 -0
- package/dist/app/dataGridRowHeightMetrics.d.ts.map +1 -1
- package/dist/app/dataGridRowHeightMetrics.js +193 -0
- package/dist/app/index.d.ts +1 -1
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/useDataGridAppActiveCellViewport.d.ts +1 -0
- package/dist/app/useDataGridAppActiveCellViewport.d.ts.map +1 -1
- package/dist/app/useDataGridAppActiveCellViewport.js +68 -9
- package/dist/app/useDataGridAppAdvancedFilterBuilder.d.ts +1 -0
- package/dist/app/useDataGridAppAdvancedFilterBuilder.d.ts.map +1 -1
- package/dist/app/useDataGridAppAdvancedFilterBuilder.js +13 -0
- package/dist/app/useDataGridAppClipboard.d.ts +1 -0
- package/dist/app/useDataGridAppClipboard.d.ts.map +1 -1
- package/dist/app/useDataGridAppClipboard.js +27 -2
- package/dist/app/useDataGridAppInlineEditing.d.ts +3 -0
- package/dist/app/useDataGridAppInlineEditing.d.ts.map +1 -1
- package/dist/app/useDataGridAppInlineEditing.js +71 -2
- package/dist/app/useDataGridAppIntentHistory.d.ts +3 -1
- package/dist/app/useDataGridAppIntentHistory.d.ts.map +1 -1
- package/dist/app/useDataGridAppIntentHistory.js +53 -2
- package/dist/app/useDataGridAppInteractionController.d.ts +3 -0
- package/dist/app/useDataGridAppInteractionController.d.ts.map +1 -1
- package/dist/app/useDataGridAppInteractionController.js +55 -3
- package/dist/app/useDataGridAppViewport.d.ts +7 -1
- package/dist/app/useDataGridAppViewport.d.ts.map +1 -1
- package/dist/app/useDataGridAppViewport.js +588 -98
- package/dist/composables/useDataGridIntentHistory.d.ts +1 -1
- package/dist/composables/useDataGridIntentHistory.d.ts.map +1 -1
- package/dist/composables/useDataGridRuntime.d.ts +5 -0
- package/dist/composables/useDataGridRuntime.d.ts.map +1 -1
- package/dist/composables/useDataGridRuntime.js +33 -21
- package/package.json +3 -4
|
@@ -4,6 +4,8 @@ export interface DataGridAppRowHeightMetricsOptions {
|
|
|
4
4
|
resolveRowHeightOverride: (rowIndex: number) => number | null;
|
|
5
5
|
resolveRowHeightVersion?: () => number;
|
|
6
6
|
hasRowHeightOverrides?: () => boolean;
|
|
7
|
+
resolveRowHeightOverridesSnapshot?: () => ReadonlyMap<number, number> | null;
|
|
8
|
+
resolveLastRowHeightMutation?: () => DataGridAppRowHeightMutation | null;
|
|
7
9
|
}
|
|
8
10
|
export interface DataGridAppRowHeightMetrics {
|
|
9
11
|
resolveRowHeight: (rowIndex: number) => number;
|
|
@@ -15,5 +17,12 @@ export interface DataGridAppRowHeightMetrics {
|
|
|
15
17
|
};
|
|
16
18
|
resolveTotalHeight: () => number;
|
|
17
19
|
}
|
|
20
|
+
export interface DataGridAppRowHeightMutation {
|
|
21
|
+
version: number;
|
|
22
|
+
kind: "set" | "clear" | "clear-all";
|
|
23
|
+
rowIndex: number | null;
|
|
24
|
+
previousHeight: number | null;
|
|
25
|
+
nextHeight: number | null;
|
|
26
|
+
}
|
|
18
27
|
export declare function createDataGridAppRowHeightMetrics(options: DataGridAppRowHeightMetricsOptions): DataGridAppRowHeightMetrics;
|
|
19
28
|
//# sourceMappingURL=dataGridRowHeightMetrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataGridRowHeightMetrics.d.ts","sourceRoot":"","sources":["../../src/app/dataGridRowHeightMetrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,MAAM,MAAM,CAAA;IACvB,oBAAoB,EAAE,MAAM,MAAM,CAAA;IAClC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAC7D,uBAAuB,CAAC,EAAE,MAAM,MAAM,CAAA;IACtC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"dataGridRowHeightMetrics.d.ts","sourceRoot":"","sources":["../../src/app/dataGridRowHeightMetrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,MAAM,MAAM,CAAA;IACvB,oBAAoB,EAAE,MAAM,MAAM,CAAA;IAClC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAC7D,uBAAuB,CAAC,EAAE,MAAM,MAAM,CAAA;IACtC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAA;IACrC,iCAAiC,CAAC,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IAC5E,4BAA4B,CAAC,EAAE,MAAM,4BAA4B,GAAG,IAAI,CAAA;CACzE;AAED,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACnD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK;QACnF,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,kBAAkB,EAAE,MAAM,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,WAAW,CAAA;IACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAuBD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,2BAA2B,CAuW7B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const ROW_HEIGHT_CHUNK_SIZE = 256;
|
|
1
2
|
function normalizeRowHeight(value) {
|
|
2
3
|
if (!Number.isFinite(value)) {
|
|
3
4
|
return 1;
|
|
@@ -6,17 +7,136 @@ function normalizeRowHeight(value) {
|
|
|
6
7
|
}
|
|
7
8
|
export function createDataGridAppRowHeightMetrics(options) {
|
|
8
9
|
let cachedMetrics = null;
|
|
10
|
+
const createConstantMetrics = (totalRows, baseRowHeight, version) => ({
|
|
11
|
+
totalRows,
|
|
12
|
+
baseRowHeight,
|
|
13
|
+
version,
|
|
14
|
+
prefixOffsets: null,
|
|
15
|
+
chunkSize: ROW_HEIGHT_CHUNK_SIZE,
|
|
16
|
+
chunkDeltas: null,
|
|
17
|
+
chunkPrefixDeltas: null,
|
|
18
|
+
chunkRowDeltas: null,
|
|
19
|
+
totalHeight: totalRows * baseRowHeight,
|
|
20
|
+
});
|
|
21
|
+
const buildSparseMetrics = (totalRows, baseRowHeight, version, overridesSnapshot) => {
|
|
22
|
+
const chunkSize = ROW_HEIGHT_CHUNK_SIZE;
|
|
23
|
+
const chunkCount = Math.ceil(totalRows / chunkSize);
|
|
24
|
+
const chunkDeltas = new Array(chunkCount).fill(0);
|
|
25
|
+
const chunkPrefixDeltas = new Array(chunkCount + 1).fill(0);
|
|
26
|
+
const chunkRowDeltas = new Array(chunkCount);
|
|
27
|
+
let totalHeight = totalRows * baseRowHeight;
|
|
28
|
+
for (const [rowIndexRaw, overrideRaw] of overridesSnapshot.entries()) {
|
|
29
|
+
const rowIndex = Math.trunc(rowIndexRaw);
|
|
30
|
+
if (!Number.isFinite(rowIndex) || rowIndex < 0 || rowIndex >= totalRows) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const override = normalizeRowHeight(overrideRaw);
|
|
34
|
+
const delta = override - baseRowHeight;
|
|
35
|
+
if (delta === 0) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const chunkIndex = Math.floor(rowIndex / chunkSize);
|
|
39
|
+
const withinChunkIndex = rowIndex - (chunkIndex * chunkSize);
|
|
40
|
+
chunkDeltas[chunkIndex] = (chunkDeltas[chunkIndex] ?? 0) + delta;
|
|
41
|
+
const rowDeltas = chunkRowDeltas[chunkIndex] ?? new Map();
|
|
42
|
+
rowDeltas.set(withinChunkIndex, delta);
|
|
43
|
+
chunkRowDeltas[chunkIndex] = rowDeltas;
|
|
44
|
+
totalHeight += delta;
|
|
45
|
+
}
|
|
46
|
+
for (let chunkIndex = 0; chunkIndex < chunkCount; chunkIndex += 1) {
|
|
47
|
+
chunkPrefixDeltas[chunkIndex + 1] = (chunkPrefixDeltas[chunkIndex] ?? 0) + (chunkDeltas[chunkIndex] ?? 0);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
totalRows,
|
|
51
|
+
baseRowHeight,
|
|
52
|
+
version,
|
|
53
|
+
prefixOffsets: null,
|
|
54
|
+
chunkSize,
|
|
55
|
+
chunkDeltas,
|
|
56
|
+
chunkPrefixDeltas,
|
|
57
|
+
chunkRowDeltas,
|
|
58
|
+
totalHeight,
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
const applySparseMutation = (metrics, version, mutation) => {
|
|
62
|
+
if (metrics.chunkDeltas == null
|
|
63
|
+
|| metrics.chunkPrefixDeltas == null
|
|
64
|
+
|| metrics.chunkRowDeltas == null
|
|
65
|
+
|| mutation.kind === "clear-all"
|
|
66
|
+
|| mutation.rowIndex == null
|
|
67
|
+
|| mutation.rowIndex < 0
|
|
68
|
+
|| mutation.rowIndex >= metrics.totalRows) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const rowIndex = Math.trunc(mutation.rowIndex);
|
|
72
|
+
const previousHeight = mutation.previousHeight == null
|
|
73
|
+
? metrics.baseRowHeight
|
|
74
|
+
: normalizeRowHeight(mutation.previousHeight);
|
|
75
|
+
const nextHeight = mutation.nextHeight == null
|
|
76
|
+
? metrics.baseRowHeight
|
|
77
|
+
: normalizeRowHeight(mutation.nextHeight);
|
|
78
|
+
const previousDelta = previousHeight - metrics.baseRowHeight;
|
|
79
|
+
const nextDelta = nextHeight - metrics.baseRowHeight;
|
|
80
|
+
const deltaDiff = nextDelta - previousDelta;
|
|
81
|
+
const chunkIndex = Math.floor(rowIndex / metrics.chunkSize);
|
|
82
|
+
const withinChunkIndex = rowIndex - (chunkIndex * metrics.chunkSize);
|
|
83
|
+
const rowDeltas = metrics.chunkRowDeltas[chunkIndex] ?? new Map();
|
|
84
|
+
if (nextDelta === 0) {
|
|
85
|
+
rowDeltas.delete(withinChunkIndex);
|
|
86
|
+
metrics.chunkRowDeltas[chunkIndex] = rowDeltas.size > 0 ? rowDeltas : undefined;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
rowDeltas.set(withinChunkIndex, nextDelta);
|
|
90
|
+
metrics.chunkRowDeltas[chunkIndex] = rowDeltas;
|
|
91
|
+
}
|
|
92
|
+
if (deltaDiff !== 0) {
|
|
93
|
+
metrics.chunkDeltas[chunkIndex] = (metrics.chunkDeltas[chunkIndex] ?? 0) + deltaDiff;
|
|
94
|
+
for (let index = chunkIndex + 1; index < metrics.chunkPrefixDeltas.length; index += 1) {
|
|
95
|
+
metrics.chunkPrefixDeltas[index] = (metrics.chunkPrefixDeltas[index] ?? 0) + deltaDiff;
|
|
96
|
+
}
|
|
97
|
+
metrics.totalHeight += deltaDiff;
|
|
98
|
+
}
|
|
99
|
+
metrics.version = version;
|
|
100
|
+
return metrics;
|
|
101
|
+
};
|
|
9
102
|
const resolveCachedMetrics = () => {
|
|
10
103
|
const totalRows = Math.max(0, Math.trunc(options.totalRows()));
|
|
11
104
|
const baseRowHeight = normalizeRowHeight(options.resolveBaseRowHeight());
|
|
12
105
|
const version = options.resolveRowHeightVersion?.() ?? 0;
|
|
13
106
|
const hasRowHeightOverrides = options.hasRowHeightOverrides?.() ?? true;
|
|
107
|
+
const overridesSnapshot = options.resolveRowHeightOverridesSnapshot?.() ?? null;
|
|
108
|
+
const lastRowHeightMutation = options.resolveLastRowHeightMutation?.() ?? null;
|
|
14
109
|
if (cachedMetrics
|
|
15
110
|
&& cachedMetrics.totalRows === totalRows
|
|
16
111
|
&& cachedMetrics.baseRowHeight === baseRowHeight
|
|
17
112
|
&& cachedMetrics.version === version) {
|
|
18
113
|
return cachedMetrics;
|
|
19
114
|
}
|
|
115
|
+
if (cachedMetrics
|
|
116
|
+
&& cachedMetrics.totalRows === totalRows
|
|
117
|
+
&& cachedMetrics.baseRowHeight === baseRowHeight
|
|
118
|
+
&& overridesSnapshot != null
|
|
119
|
+
&& version === cachedMetrics.version + 1
|
|
120
|
+
&& lastRowHeightMutation != null
|
|
121
|
+
&& lastRowHeightMutation.version === version) {
|
|
122
|
+
const updatedMetrics = applySparseMutation(cachedMetrics, version, lastRowHeightMutation);
|
|
123
|
+
if (updatedMetrics) {
|
|
124
|
+
cachedMetrics = updatedMetrics;
|
|
125
|
+
return updatedMetrics;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (!hasRowHeightOverrides) {
|
|
129
|
+
cachedMetrics = createConstantMetrics(totalRows, baseRowHeight, version);
|
|
130
|
+
return cachedMetrics;
|
|
131
|
+
}
|
|
132
|
+
if (overridesSnapshot != null) {
|
|
133
|
+
if (overridesSnapshot.size === 0) {
|
|
134
|
+
cachedMetrics = createConstantMetrics(totalRows, baseRowHeight, version);
|
|
135
|
+
return cachedMetrics;
|
|
136
|
+
}
|
|
137
|
+
cachedMetrics = buildSparseMetrics(totalRows, baseRowHeight, version, overridesSnapshot);
|
|
138
|
+
return cachedMetrics;
|
|
139
|
+
}
|
|
20
140
|
let prefixOffsets = null;
|
|
21
141
|
if (hasRowHeightOverrides) {
|
|
22
142
|
prefixOffsets = new Array(totalRows + 1);
|
|
@@ -32,6 +152,13 @@ export function createDataGridAppRowHeightMetrics(options) {
|
|
|
32
152
|
baseRowHeight,
|
|
33
153
|
version,
|
|
34
154
|
prefixOffsets,
|
|
155
|
+
chunkSize: ROW_HEIGHT_CHUNK_SIZE,
|
|
156
|
+
chunkDeltas: null,
|
|
157
|
+
chunkPrefixDeltas: null,
|
|
158
|
+
chunkRowDeltas: null,
|
|
159
|
+
totalHeight: prefixOffsets == null
|
|
160
|
+
? totalRows * baseRowHeight
|
|
161
|
+
: (prefixOffsets[totalRows] ?? (totalRows * baseRowHeight)),
|
|
35
162
|
};
|
|
36
163
|
return cachedMetrics;
|
|
37
164
|
};
|
|
@@ -40,6 +167,13 @@ export function createDataGridAppRowHeightMetrics(options) {
|
|
|
40
167
|
if (metrics.totalRows <= 0) {
|
|
41
168
|
return metrics.baseRowHeight;
|
|
42
169
|
}
|
|
170
|
+
if (metrics.chunkRowDeltas != null) {
|
|
171
|
+
const normalizedIndex = Math.max(0, Math.min(metrics.totalRows - 1, Math.trunc(rowIndex)));
|
|
172
|
+
const chunkIndex = Math.floor(normalizedIndex / metrics.chunkSize);
|
|
173
|
+
const withinChunkIndex = normalizedIndex - (chunkIndex * metrics.chunkSize);
|
|
174
|
+
const delta = metrics.chunkRowDeltas[chunkIndex]?.get(withinChunkIndex) ?? 0;
|
|
175
|
+
return metrics.baseRowHeight + delta;
|
|
176
|
+
}
|
|
43
177
|
if (metrics.prefixOffsets == null) {
|
|
44
178
|
return metrics.baseRowHeight;
|
|
45
179
|
}
|
|
@@ -54,6 +188,22 @@ export function createDataGridAppRowHeightMetrics(options) {
|
|
|
54
188
|
return 0;
|
|
55
189
|
}
|
|
56
190
|
const normalizedIndex = Math.max(0, Math.min(metrics.totalRows, Math.trunc(rowIndex)));
|
|
191
|
+
if (metrics.chunkDeltas != null
|
|
192
|
+
&& metrics.chunkPrefixDeltas != null
|
|
193
|
+
&& metrics.chunkRowDeltas != null) {
|
|
194
|
+
const chunkIndex = Math.floor(normalizedIndex / metrics.chunkSize);
|
|
195
|
+
let offset = normalizedIndex * metrics.baseRowHeight + (metrics.chunkPrefixDeltas[chunkIndex] ?? 0);
|
|
196
|
+
const withinChunkIndex = normalizedIndex - (chunkIndex * metrics.chunkSize);
|
|
197
|
+
if (withinChunkIndex > 0) {
|
|
198
|
+
const rowDeltas = metrics.chunkRowDeltas[chunkIndex];
|
|
199
|
+
if (rowDeltas) {
|
|
200
|
+
for (let row = 0; row < withinChunkIndex; row += 1) {
|
|
201
|
+
offset += rowDeltas.get(row) ?? 0;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return offset;
|
|
206
|
+
}
|
|
57
207
|
if (metrics.prefixOffsets == null) {
|
|
58
208
|
return normalizedIndex * metrics.baseRowHeight;
|
|
59
209
|
}
|
|
@@ -64,6 +214,46 @@ export function createDataGridAppRowHeightMetrics(options) {
|
|
|
64
214
|
if (metrics.totalRows <= 0) {
|
|
65
215
|
return 0;
|
|
66
216
|
}
|
|
217
|
+
if (metrics.chunkDeltas != null
|
|
218
|
+
&& metrics.chunkPrefixDeltas != null
|
|
219
|
+
&& metrics.chunkRowDeltas != null) {
|
|
220
|
+
if (metrics.totalHeight <= 0) {
|
|
221
|
+
return 0;
|
|
222
|
+
}
|
|
223
|
+
const clampedOffset = Math.max(0, Math.min(metrics.totalHeight - 1, offset));
|
|
224
|
+
let low = 0;
|
|
225
|
+
let high = metrics.chunkDeltas.length - 1;
|
|
226
|
+
while (low <= high) {
|
|
227
|
+
const middle = Math.floor((low + high) / 2);
|
|
228
|
+
const chunkStartOffset = (middle * metrics.chunkSize * metrics.baseRowHeight)
|
|
229
|
+
+ (metrics.chunkPrefixDeltas[middle] ?? 0);
|
|
230
|
+
const chunkRowEnd = Math.min(metrics.totalRows, (middle + 1) * metrics.chunkSize);
|
|
231
|
+
const chunkEndOffset = (chunkRowEnd * metrics.baseRowHeight)
|
|
232
|
+
+ (metrics.chunkPrefixDeltas[middle + 1] ?? 0);
|
|
233
|
+
if (clampedOffset < chunkStartOffset) {
|
|
234
|
+
high = middle - 1;
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
if (clampedOffset >= chunkEndOffset) {
|
|
238
|
+
low = middle + 1;
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
const chunkStartRow = middle * metrics.chunkSize;
|
|
242
|
+
const rowDeltas = metrics.chunkRowDeltas[middle];
|
|
243
|
+
let rowStartOffset = chunkStartOffset;
|
|
244
|
+
const rowsInChunk = chunkRowEnd - chunkStartRow;
|
|
245
|
+
for (let rowOffset = 0; rowOffset < rowsInChunk; rowOffset += 1) {
|
|
246
|
+
const rowHeight = metrics.baseRowHeight + (rowDeltas?.get(rowOffset) ?? 0);
|
|
247
|
+
const rowEndOffset = rowStartOffset + rowHeight;
|
|
248
|
+
if (clampedOffset < rowEndOffset) {
|
|
249
|
+
return chunkStartRow + rowOffset;
|
|
250
|
+
}
|
|
251
|
+
rowStartOffset = rowEndOffset;
|
|
252
|
+
}
|
|
253
|
+
return Math.max(0, chunkRowEnd - 1);
|
|
254
|
+
}
|
|
255
|
+
return Math.max(0, Math.min(metrics.totalRows - 1, low * metrics.chunkSize));
|
|
256
|
+
}
|
|
67
257
|
if (metrics.prefixOffsets == null) {
|
|
68
258
|
const normalizedHeight = Math.max(1, metrics.baseRowHeight);
|
|
69
259
|
return Math.max(0, Math.min(metrics.totalRows - 1, Math.floor(Math.max(0, offset) / normalizedHeight)));
|
|
@@ -104,6 +294,9 @@ export function createDataGridAppRowHeightMetrics(options) {
|
|
|
104
294
|
};
|
|
105
295
|
const resolveTotalHeight = () => {
|
|
106
296
|
const metrics = resolveCachedMetrics();
|
|
297
|
+
if (metrics.chunkDeltas != null) {
|
|
298
|
+
return metrics.totalHeight;
|
|
299
|
+
}
|
|
107
300
|
if (metrics.prefixOffsets == null) {
|
|
108
301
|
return metrics.totalRows * metrics.baseRowHeight;
|
|
109
302
|
}
|
package/dist/app/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type { DataGridAppAdvancedFilterClauseDraft, DataGridAppAdvancedFilterClauseJoin, DataGridAppAdvancedFilterClausePatch, DataGridAppAdvancedFilterColumnOption, } from "./advancedFilterPanel.types";
|
|
2
2
|
export type { DataGridAppApplyColumnLayoutPayload, DataGridAppColumnLayoutDraftColumn, DataGridAppColumnLayoutPanelItem, DataGridAppColumnLayoutVisibilityPatch, } from "./columnLayoutPanel.types";
|
|
3
3
|
export { useDataGridAppModeMeta, type UseDataGridAppModeMetaOptions, type UseDataGridAppModeMetaResult, } from "./useDataGridAppModeMeta";
|
|
4
|
-
export { createDataGridAppRowHeightMetrics, type DataGridAppRowHeightMetrics, type DataGridAppRowHeightMetricsOptions, } from "./dataGridRowHeightMetrics";
|
|
4
|
+
export { createDataGridAppRowHeightMetrics, type DataGridAppRowHeightMutation, type DataGridAppRowHeightMetrics, type DataGridAppRowHeightMetricsOptions, } from "./dataGridRowHeightMetrics";
|
|
5
5
|
export { useDataGridAppClipboard, type DataGridAppPendingClipboardEdge, type DataGridAppPendingClipboardOperation, type UseDataGridAppClipboardOptions, type UseDataGridAppClipboardResult, } from "./useDataGridAppClipboard";
|
|
6
6
|
export { useDataGridAppFill, type UseDataGridAppFillOptions, type UseDataGridAppFillResult, } from "./useDataGridAppFill";
|
|
7
7
|
export { useDataGridAppInteractionController, type UseDataGridAppInteractionControllerOptions, type UseDataGridAppInteractionControllerResult, } from "./useDataGridAppInteractionController";
|
package/dist/app/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,YAAY,EACV,mCAAmC,EACnC,kCAAkC,EAClC,gCAAgC,EAChC,sCAAsC,GACvC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,iCAAiC,EACjC,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,GACxC,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,uBAAuB,EACvB,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,mCAAmC,EACnC,KAAK,0CAA0C,EAC/C,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,GACzC,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,mCAAmC,EACnC,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,qCAAqC,GAC3C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,8BAA8B,EAC9B,KAAK,oCAAoC,GAC1C,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EACL,gCAAgC,EAChC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,GAC5C,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,YAAY,EACV,mCAAmC,EACnC,kCAAkC,EAClC,gCAAgC,EAChC,sCAAsC,GACvC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,iCAAiC,EACjC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,GACxC,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,uBAAuB,EACvB,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,mCAAmC,EACnC,KAAK,0CAA0C,EAC/C,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,GACzC,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,mCAAmC,EACnC,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,qCAAqC,GAC3C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,8BAA8B,EAC9B,KAAK,oCAAoC,GAC1C,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EACL,gCAAgC,EAChC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,GAC5C,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA"}
|
|
@@ -14,6 +14,7 @@ export interface UseDataGridAppActiveCellViewportOptions {
|
|
|
14
14
|
}
|
|
15
15
|
export interface UseDataGridAppActiveCellViewportResult {
|
|
16
16
|
ensureKeyboardActiveCellVisible: (rowIndex: number, columnIndex: number) => void;
|
|
17
|
+
revealCellInComfortZone: (rowIndex: number, columnIndex: number) => Promise<void>;
|
|
17
18
|
}
|
|
18
19
|
export declare function useDataGridAppActiveCellViewport(options: UseDataGridAppActiveCellViewportOptions): UseDataGridAppActiveCellViewportResult;
|
|
19
20
|
//# sourceMappingURL=useDataGridAppActiveCellViewport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppActiveCellViewport.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppActiveCellViewport.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"useDataGridAppActiveCellViewport.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppActiveCellViewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AACxC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAEnE,MAAM,WAAW,uCAAuC;IACtD,eAAe,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACxC,cAAc,EAAE,GAAG,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAAA;IACtD,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,MAAM,CAAA;IAC/D,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACpC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,sCAAsC;IACrD,+BAA+B,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAChF,uBAAuB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClF;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,sCAAsC,CA8PxC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {} from "vue";
|
|
1
|
+
import { nextTick } from "vue";
|
|
2
2
|
export function useDataGridAppActiveCellViewport(options) {
|
|
3
3
|
const defaultColumnWidth = options.defaultColumnWidth ?? 140;
|
|
4
4
|
const visibilityMarginPx = 2;
|
|
5
|
+
const resolveComfortMarginPx = (size) => {
|
|
6
|
+
return Math.max(18, Math.min(96, Math.floor(size * 0.18)));
|
|
7
|
+
};
|
|
5
8
|
const resolveCellElement = (rowIndex, columnIndex) => {
|
|
6
9
|
const viewport = options.bodyViewportRef.value;
|
|
7
10
|
if (!viewport) {
|
|
@@ -19,7 +22,7 @@ export function useDataGridAppActiveCellViewport(options) {
|
|
|
19
22
|
}
|
|
20
23
|
return options.columnWidths?.value[column.key] ?? column.width ?? defaultColumnWidth;
|
|
21
24
|
};
|
|
22
|
-
const ensureEstimatedRowVisible = (viewport, rowIndex) => {
|
|
25
|
+
const ensureEstimatedRowVisible = (viewport, rowIndex, comfortMarginPx = visibilityMarginPx) => {
|
|
23
26
|
const estimatedTop = typeof options.resolveRowOffset === "function"
|
|
24
27
|
? Math.max(0, options.resolveRowOffset(rowIndex))
|
|
25
28
|
: Math.max(0, rowIndex * options.normalizedBaseRowHeight.value);
|
|
@@ -28,12 +31,12 @@ export function useDataGridAppActiveCellViewport(options) {
|
|
|
28
31
|
: options.normalizedBaseRowHeight.value);
|
|
29
32
|
const visibleTop = viewport.scrollTop;
|
|
30
33
|
const visibleBottom = visibleTop + viewport.clientHeight;
|
|
31
|
-
if (estimatedTop < visibleTop) {
|
|
32
|
-
viewport.scrollTop = estimatedTop;
|
|
34
|
+
if (estimatedTop < visibleTop + comfortMarginPx) {
|
|
35
|
+
viewport.scrollTop = Math.max(0, estimatedTop - comfortMarginPx);
|
|
33
36
|
options.syncViewport();
|
|
34
37
|
}
|
|
35
|
-
else if (estimatedBottom > visibleBottom) {
|
|
36
|
-
viewport.scrollTop = Math.max(0, estimatedBottom - viewport.clientHeight);
|
|
38
|
+
else if (estimatedBottom > visibleBottom - comfortMarginPx) {
|
|
39
|
+
viewport.scrollTop = Math.max(0, estimatedBottom - viewport.clientHeight + comfortMarginPx);
|
|
37
40
|
options.syncViewport();
|
|
38
41
|
}
|
|
39
42
|
};
|
|
@@ -75,15 +78,15 @@ export function useDataGridAppActiveCellViewport(options) {
|
|
|
75
78
|
}
|
|
76
79
|
viewport.focus({ preventScroll: true });
|
|
77
80
|
};
|
|
78
|
-
const ensureCenterCellVisibleByDomRect = (viewport, rowIndex, columnIndex) => {
|
|
81
|
+
const ensureCenterCellVisibleByDomRect = (viewport, rowIndex, columnIndex, comfortMarginPx = visibilityMarginPx) => {
|
|
79
82
|
const targetCell = resolveCellElement(rowIndex, columnIndex);
|
|
80
83
|
if (!targetCell) {
|
|
81
84
|
return false;
|
|
82
85
|
}
|
|
83
86
|
const viewportRect = viewport.getBoundingClientRect();
|
|
84
87
|
const targetRect = targetCell.getBoundingClientRect();
|
|
85
|
-
const visibleLeft = viewportRect.left +
|
|
86
|
-
const visibleRight = viewportRect.right -
|
|
88
|
+
const visibleLeft = viewportRect.left + comfortMarginPx;
|
|
89
|
+
const visibleRight = viewportRect.right - comfortMarginPx;
|
|
87
90
|
let nextScrollLeft = viewport.scrollLeft;
|
|
88
91
|
if (targetRect.left < visibleLeft) {
|
|
89
92
|
nextScrollLeft += targetRect.left - visibleLeft;
|
|
@@ -99,6 +102,42 @@ export function useDataGridAppActiveCellViewport(options) {
|
|
|
99
102
|
options.syncViewport();
|
|
100
103
|
return true;
|
|
101
104
|
};
|
|
105
|
+
const ensureEstimatedCenterColumnVisible = (viewport, columnIndex, comfortMarginPx) => {
|
|
106
|
+
const centerMetrics = resolveCenterColumnMetrics(columnIndex);
|
|
107
|
+
if (!centerMetrics) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const visibleLeft = viewport.scrollLeft;
|
|
111
|
+
const visibleRight = visibleLeft + viewport.clientWidth;
|
|
112
|
+
const maxScrollLeft = Math.max(0, centerMetrics.totalWidth - viewport.clientWidth);
|
|
113
|
+
let nextScrollLeft = visibleLeft;
|
|
114
|
+
if (centerMetrics.start < visibleLeft + comfortMarginPx) {
|
|
115
|
+
nextScrollLeft = centerMetrics.start - comfortMarginPx;
|
|
116
|
+
}
|
|
117
|
+
else if (centerMetrics.end > visibleRight - comfortMarginPx) {
|
|
118
|
+
nextScrollLeft = centerMetrics.end - viewport.clientWidth + comfortMarginPx;
|
|
119
|
+
}
|
|
120
|
+
nextScrollLeft = Math.max(0, Math.min(maxScrollLeft, nextScrollLeft));
|
|
121
|
+
if (Math.abs(nextScrollLeft - viewport.scrollLeft) >= 1) {
|
|
122
|
+
viewport.scrollLeft = nextScrollLeft;
|
|
123
|
+
options.syncViewport();
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
const waitForNextAnimationFrame = async () => {
|
|
127
|
+
if (typeof window === "undefined" || typeof window.requestAnimationFrame !== "function") {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
await new Promise(resolve => {
|
|
131
|
+
window.requestAnimationFrame(() => resolve());
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
const focusResolvedCellWithRetry = async (viewport, rowIndex, columnIndex) => {
|
|
135
|
+
focusResolvedCellOrViewport(viewport, rowIndex, columnIndex);
|
|
136
|
+
await nextTick();
|
|
137
|
+
focusResolvedCellOrViewport(viewport, rowIndex, columnIndex);
|
|
138
|
+
await waitForNextAnimationFrame();
|
|
139
|
+
focusResolvedCellOrViewport(viewport, rowIndex, columnIndex);
|
|
140
|
+
};
|
|
102
141
|
const ensureKeyboardActiveCellVisible = (rowIndex, columnIndex) => {
|
|
103
142
|
const viewport = options.bodyViewportRef.value;
|
|
104
143
|
if (!viewport) {
|
|
@@ -133,7 +172,27 @@ export function useDataGridAppActiveCellViewport(options) {
|
|
|
133
172
|
}
|
|
134
173
|
focusResolvedCellOrViewport(viewport, rowIndex, columnIndex);
|
|
135
174
|
};
|
|
175
|
+
const revealCellInComfortZone = async (rowIndex, columnIndex) => {
|
|
176
|
+
const viewport = options.bodyViewportRef.value;
|
|
177
|
+
if (!viewport) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const targetColumn = options.visibleColumns.value[columnIndex];
|
|
181
|
+
const verticalComfortMarginPx = resolveComfortMarginPx(viewport.clientHeight);
|
|
182
|
+
ensureEstimatedRowVisible(viewport, rowIndex, verticalComfortMarginPx);
|
|
183
|
+
if (targetColumn?.pin === "left" || targetColumn?.pin === "right") {
|
|
184
|
+
await focusResolvedCellWithRetry(viewport, rowIndex, columnIndex);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const horizontalComfortMarginPx = resolveComfortMarginPx(viewport.clientWidth);
|
|
188
|
+
const usedDomScrollAlignment = ensureCenterCellVisibleByDomRect(viewport, rowIndex, columnIndex, horizontalComfortMarginPx);
|
|
189
|
+
if (!usedDomScrollAlignment) {
|
|
190
|
+
ensureEstimatedCenterColumnVisible(viewport, columnIndex, horizontalComfortMarginPx);
|
|
191
|
+
}
|
|
192
|
+
await focusResolvedCellWithRetry(viewport, rowIndex, columnIndex);
|
|
193
|
+
};
|
|
136
194
|
return {
|
|
137
195
|
ensureKeyboardActiveCellVisible,
|
|
196
|
+
revealCellInComfortZone,
|
|
138
197
|
};
|
|
139
198
|
}
|
|
@@ -11,6 +11,7 @@ export interface UseDataGridAppAdvancedFilterBuilderResult {
|
|
|
11
11
|
advancedFilterDraftClauses: ComputedRef<readonly DataGridAppAdvancedFilterClauseDraft[]>;
|
|
12
12
|
advancedFilterColumns: ComputedRef<readonly DataGridAppAdvancedFilterColumnOption[]>;
|
|
13
13
|
appliedAdvancedFilterExpression: ComputedRef<DataGridAdvancedFilterExpression | null>;
|
|
14
|
+
hydrateAdvancedFilterClauses: (clauses: readonly DataGridAppAdvancedFilterClauseDraft[]) => void;
|
|
14
15
|
openAdvancedFilterPanel: () => void;
|
|
15
16
|
addAdvancedFilterClause: () => void;
|
|
16
17
|
removeAdvancedFilterClause: (clauseId: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppAdvancedFilterBuilder.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppAdvancedFilterBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AACrD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,KAAK,EACV,oCAAoC,EAEpC,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,6BAA6B,CAAA;AAEpC,UAAU,0CAA0C;IAClD,cAAc,EAAE,MAAM,SAAS,qCAAqC,EAAE,CAAA;IACtE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3C;AAKD,MAAM,WAAW,yCAAyC;IACxD,yBAAyB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/C,0BAA0B,EAAE,WAAW,CAAC,SAAS,oCAAoC,EAAE,CAAC,CAAA;IACxF,qBAAqB,EAAE,WAAW,CAAC,SAAS,qCAAqC,EAAE,CAAC,CAAA;IACpF,+BAA+B,EAAE,WAAW,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAA;IACrF,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,0BAA0B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,0BAA0B,EAAE,CAAC,KAAK,EAAE,oCAAoC,KAAK,IAAI,CAAA;IACjF,yBAAyB,EAAE,MAAM,IAAI,CAAA;IACrC,wBAAwB,EAAE,MAAM,IAAI,CAAA;IACpC,wBAAwB,EAAE,MAAM,IAAI,CAAA;CACrC;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,0CAA0C,GAClD,yCAAyC,
|
|
1
|
+
{"version":3,"file":"useDataGridAppAdvancedFilterBuilder.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppAdvancedFilterBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AACrD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,KAAK,EACV,oCAAoC,EAEpC,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,6BAA6B,CAAA;AAEpC,UAAU,0CAA0C;IAClD,cAAc,EAAE,MAAM,SAAS,qCAAqC,EAAE,CAAA;IACtE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3C;AAKD,MAAM,WAAW,yCAAyC;IACxD,yBAAyB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/C,0BAA0B,EAAE,WAAW,CAAC,SAAS,oCAAoC,EAAE,CAAC,CAAA;IACxF,qBAAqB,EAAE,WAAW,CAAC,SAAS,qCAAqC,EAAE,CAAC,CAAA;IACpF,+BAA+B,EAAE,WAAW,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAA;IACrF,4BAA4B,EAAE,CAAC,OAAO,EAAE,SAAS,oCAAoC,EAAE,KAAK,IAAI,CAAA;IAChG,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,0BAA0B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,0BAA0B,EAAE,CAAC,KAAK,EAAE,oCAAoC,KAAK,IAAI,CAAA;IACjF,yBAAyB,EAAE,MAAM,IAAI,CAAA;IACrC,wBAAwB,EAAE,MAAM,IAAI,CAAA;IACpC,wBAAwB,EAAE,MAAM,IAAI,CAAA;CACrC;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,0CAA0C,GAClD,yCAAyC,CA+K3C"}
|
|
@@ -36,6 +36,14 @@ export function useDataGridAppAdvancedFilterBuilder(options) {
|
|
|
36
36
|
value: clause.value,
|
|
37
37
|
}));
|
|
38
38
|
};
|
|
39
|
+
const cloneAppliedClauses = (clauses) => {
|
|
40
|
+
return clauses.map(clause => createClause({
|
|
41
|
+
join: clause.join,
|
|
42
|
+
columnKey: clause.columnKey,
|
|
43
|
+
operator: clause.operator,
|
|
44
|
+
value: clause.value,
|
|
45
|
+
}));
|
|
46
|
+
};
|
|
39
47
|
const buildAdvancedFilterExpressionFromClauses = (clauses) => {
|
|
40
48
|
const normalizedClauses = clauses
|
|
41
49
|
.map(clause => ({
|
|
@@ -81,6 +89,10 @@ export function useDataGridAppAdvancedFilterBuilder(options) {
|
|
|
81
89
|
const appliedAdvancedFilterExpression = computed(() => {
|
|
82
90
|
return buildAdvancedFilterExpressionFromClauses(appliedClauses.value);
|
|
83
91
|
});
|
|
92
|
+
const hydrateAdvancedFilterClauses = (clauses) => {
|
|
93
|
+
appliedClauses.value = cloneAppliedClauses(clauses);
|
|
94
|
+
draftClauses.value = cloneClauses(appliedClauses.value);
|
|
95
|
+
};
|
|
84
96
|
const openAdvancedFilterPanel = () => {
|
|
85
97
|
draftClauses.value = cloneClauses(appliedClauses.value);
|
|
86
98
|
isPanelOpen.value = true;
|
|
@@ -128,6 +140,7 @@ export function useDataGridAppAdvancedFilterBuilder(options) {
|
|
|
128
140
|
advancedFilterDraftClauses: computed(() => draftClauses.value),
|
|
129
141
|
advancedFilterColumns,
|
|
130
142
|
appliedAdvancedFilterExpression,
|
|
143
|
+
hydrateAdvancedFilterClauses,
|
|
131
144
|
openAdvancedFilterPanel,
|
|
132
145
|
addAdvancedFilterClause,
|
|
133
146
|
removeAdvancedFilterClause,
|
|
@@ -19,6 +19,7 @@ export interface UseDataGridAppClipboardOptions<TRow, TSnapshot> {
|
|
|
19
19
|
applySelectionRange: (range: DataGridCopyRange) => void;
|
|
20
20
|
clearCellSelection: () => void;
|
|
21
21
|
captureRowsSnapshot: () => TSnapshot;
|
|
22
|
+
captureRowsSnapshotForRowIds?: (rowIds: readonly (string | number)[]) => TSnapshot;
|
|
22
23
|
recordEditTransaction: (beforeSnapshot: TSnapshot) => void;
|
|
23
24
|
readCell: (row: DataGridRowNode<TRow>, columnKey: string) => string;
|
|
24
25
|
readClipboardCell?: (row: DataGridRowNode<TRow>, columnKey: string) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppClipboard.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppClipboard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useDataGridAppClipboard.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppClipboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@ export function useDataGridAppClipboard(options) {
|
|
|
9
9
|
const lastCopiedPayload = ref("");
|
|
10
10
|
const pendingClipboardOperation = ref("none");
|
|
11
11
|
const pendingClipboardRange = ref(null);
|
|
12
|
+
const captureRowsSnapshotForRowIds = (rowIds) => {
|
|
13
|
+
return options.captureRowsSnapshotForRowIds?.(rowIds) ?? options.captureRowsSnapshot();
|
|
14
|
+
};
|
|
12
15
|
const normalizeClipboardRange = (range) => {
|
|
13
16
|
const rowCount = options.totalRows.value;
|
|
14
17
|
const columnCount = options.visibleColumns.value.length;
|
|
@@ -33,6 +36,23 @@ export function useDataGridAppClipboard(options) {
|
|
|
33
36
|
resolveSelectionRange: options.resolveSelectionRange,
|
|
34
37
|
resolveCurrentCellCoord: options.resolveCurrentCellCoord,
|
|
35
38
|
});
|
|
39
|
+
const collectBodyRowIdsInRange = (range) => {
|
|
40
|
+
const normalized = range ? normalizeClipboardRange(range) : null;
|
|
41
|
+
if (!normalized) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const rowIds = [];
|
|
45
|
+
const seen = new Set();
|
|
46
|
+
for (let rowIndex = normalized.startRow; rowIndex <= normalized.endRow; rowIndex += 1) {
|
|
47
|
+
const row = getBodyRowAtIndex(rowIndex);
|
|
48
|
+
if (!row || row.rowId == null || row.kind === "group" || seen.has(row.rowId)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
seen.add(row.rowId);
|
|
52
|
+
rowIds.push(row.rowId);
|
|
53
|
+
}
|
|
54
|
+
return rowIds;
|
|
55
|
+
};
|
|
36
56
|
const clipboardBridge = useDataGridClipboardBridge({
|
|
37
57
|
copiedSelectionRange,
|
|
38
58
|
lastCopiedPayload,
|
|
@@ -77,7 +97,9 @@ export function useDataGridAppClipboard(options) {
|
|
|
77
97
|
if (editsByRowId.size === 0) {
|
|
78
98
|
return 0;
|
|
79
99
|
}
|
|
80
|
-
const beforeSnapshot = applyOptions.recordHistory === false
|
|
100
|
+
const beforeSnapshot = applyOptions.recordHistory === false
|
|
101
|
+
? null
|
|
102
|
+
: captureRowsSnapshotForRowIds(Array.from(editsByRowId.keys()));
|
|
81
103
|
const updates = Array.from(editsByRowId.entries(), ([rowId, data]) => ({
|
|
82
104
|
rowId,
|
|
83
105
|
data: data,
|
|
@@ -187,7 +209,10 @@ export function useDataGridAppClipboard(options) {
|
|
|
187
209
|
void trigger;
|
|
188
210
|
return true;
|
|
189
211
|
}
|
|
190
|
-
const beforeSnapshot =
|
|
212
|
+
const beforeSnapshot = captureRowsSnapshotForRowIds([
|
|
213
|
+
...collectBodyRowIdsInRange(pendingSourceRange),
|
|
214
|
+
...collectBodyRowIdsInRange(normalizedTargetRange),
|
|
215
|
+
]);
|
|
191
216
|
if (pendingOperation === "cut" && pendingSourceRange) {
|
|
192
217
|
applyClipboardEdits(pendingSourceRange, [[""]], { recordHistory: false });
|
|
193
218
|
}
|
|
@@ -29,6 +29,7 @@ export interface UseDataGridAppInlineEditingOptions<TRow, TSnapshot> {
|
|
|
29
29
|
ensureActiveCellVisible: (rowIndex: number, columnIndex: number) => void;
|
|
30
30
|
isCellEditable: (row: DataGridRowNode<TRow>, rowIndex: number, columnKey: string, columnIndex: number) => boolean;
|
|
31
31
|
captureRowsSnapshot: () => TSnapshot;
|
|
32
|
+
captureRowsSnapshotForRowIds?: (rowIds: readonly (string | number)[]) => TSnapshot;
|
|
32
33
|
recordEditTransaction: (beforeSnapshot: TSnapshot) => void;
|
|
33
34
|
}
|
|
34
35
|
export interface UseDataGridAppInlineEditingResult<TRow> {
|
|
@@ -38,6 +39,8 @@ export interface UseDataGridAppInlineEditingResult<TRow> {
|
|
|
38
39
|
editingCellOpenOnMount: Ref<boolean>;
|
|
39
40
|
isEditingCell: (row: DataGridRowNode<TRow>, columnKey: string) => boolean;
|
|
40
41
|
startInlineEdit: (row: DataGridRowNode<TRow>, columnKey: string, options?: DataGridAppInlineEditStartOptions) => void;
|
|
42
|
+
appendInlineEditTextInput: (value: string) => boolean;
|
|
43
|
+
handleEditorBlur: () => void;
|
|
41
44
|
commitInlineEdit: (targetOrEvent?: DataGridAppInlineEditCommitTarget | boolean | FocusEvent) => void;
|
|
42
45
|
cancelInlineEdit: () => void;
|
|
43
46
|
handleEditorKeydown: (event: KeyboardEvent) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppInlineEditing.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppInlineEditing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useDataGridAppInlineEditing.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppInlineEditing.ts"],"names":[],"mappings":"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"}
|