@affino/datagrid-vue 0.3.11 → 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/useDataGridAppActiveCellViewport.d.ts +1 -0
- package/dist/app/useDataGridAppActiveCellViewport.d.ts.map +1 -1
- package/dist/app/useDataGridAppActiveCellViewport.js +68 -9
- 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/composables/useDataGridIntentHistory.d.ts +1 -1
- package/dist/composables/useDataGridIntentHistory.d.ts.map +1 -1
- package/package.json +4 -5
|
@@ -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
|
}
|
|
@@ -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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"}
|
|
@@ -5,6 +5,8 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
5
5
|
const editingCellValue = ref("");
|
|
6
6
|
const editingCellInitialFilter = ref("");
|
|
7
7
|
const editingCellOpenOnMount = ref(false);
|
|
8
|
+
const editingCellEditorMode = ref("none");
|
|
9
|
+
const suppressNextBlurCommit = ref(false);
|
|
8
10
|
const resolveBodyRowIndexById = options.resolveBodyRowIndexById ?? options.resolveRowIndexById ?? (() => -1);
|
|
9
11
|
const getBodyRowAtIndex = (rowIndex) => {
|
|
10
12
|
const runtime = options.runtime;
|
|
@@ -72,10 +74,38 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
72
74
|
// Browsers can require a direct user gesture for showPicker; focus should still succeed.
|
|
73
75
|
}
|
|
74
76
|
};
|
|
77
|
+
const resolveEditorSearchRoot = () => {
|
|
78
|
+
const viewport = options.bodyViewportRef.value;
|
|
79
|
+
if (!viewport) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const stageRoot = viewport.closest(".grid-stage");
|
|
83
|
+
return stageRoot ?? viewport;
|
|
84
|
+
};
|
|
85
|
+
const resolveActiveInlineEditor = () => {
|
|
86
|
+
const root = resolveEditorSearchRoot();
|
|
87
|
+
if (!root) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const currentEditingCell = editingCell.value;
|
|
91
|
+
if (!currentEditingCell) {
|
|
92
|
+
return root.querySelector(".cell-editor-control");
|
|
93
|
+
}
|
|
94
|
+
const editors = root.querySelectorAll(".cell-editor-control");
|
|
95
|
+
const editingRowId = String(currentEditingCell.rowId);
|
|
96
|
+
for (const editor of editors) {
|
|
97
|
+
const hostCell = editor.closest(".grid-cell");
|
|
98
|
+
if (hostCell?.dataset.rowId === editingRowId
|
|
99
|
+
&& hostCell.dataset.columnKey === currentEditingCell.columnKey) {
|
|
100
|
+
return editor;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return root.querySelector(".cell-editor-control");
|
|
104
|
+
};
|
|
75
105
|
const focusInlineEditor = () => {
|
|
76
106
|
void nextTick(() => {
|
|
77
107
|
const applyFocus = () => {
|
|
78
|
-
const editor =
|
|
108
|
+
const editor = resolveActiveInlineEditor();
|
|
79
109
|
if (!editor) {
|
|
80
110
|
return;
|
|
81
111
|
}
|
|
@@ -97,7 +127,13 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
97
127
|
if (typeof window !== "undefined") {
|
|
98
128
|
window.requestAnimationFrame(() => {
|
|
99
129
|
applyFocus();
|
|
130
|
+
window.requestAnimationFrame(() => {
|
|
131
|
+
applyFocus();
|
|
132
|
+
});
|
|
100
133
|
});
|
|
134
|
+
window.setTimeout(() => {
|
|
135
|
+
applyFocus();
|
|
136
|
+
}, 0);
|
|
101
137
|
}
|
|
102
138
|
});
|
|
103
139
|
};
|
|
@@ -106,6 +142,7 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
106
142
|
editingCellValue.value = "";
|
|
107
143
|
editingCellInitialFilter.value = "";
|
|
108
144
|
editingCellOpenOnMount.value = false;
|
|
145
|
+
editingCellEditorMode.value = "none";
|
|
109
146
|
};
|
|
110
147
|
const focusAfterInlineEdit = (rowId, columnKey, target) => {
|
|
111
148
|
const columnIndex = options.visibleColumns.value.findIndex(column => column.key === columnKey);
|
|
@@ -225,7 +262,27 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
225
262
|
? ""
|
|
226
263
|
: (startOptions.draftValue ?? "");
|
|
227
264
|
editingCellOpenOnMount.value = startOptions.openOnMount === true;
|
|
265
|
+
editingCellEditorMode.value = editorMode;
|
|
266
|
+
suppressNextBlurCommit.value = false;
|
|
267
|
+
focusInlineEditor();
|
|
268
|
+
};
|
|
269
|
+
const appendInlineEditTextInput = (value) => {
|
|
270
|
+
if (!editingCell.value || value.length === 0) {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
if (editingCellEditorMode.value === "none"
|
|
274
|
+
|| editingCellEditorMode.value === "date"
|
|
275
|
+
|| editingCellEditorMode.value === "datetime") {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
if (editingCellEditorMode.value === "select") {
|
|
279
|
+
editingCellInitialFilter.value += value;
|
|
280
|
+
focusInlineEditor();
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
editingCellValue.value += value;
|
|
228
284
|
focusInlineEditor();
|
|
285
|
+
return true;
|
|
229
286
|
};
|
|
230
287
|
const commitInlineEdit = (targetOrEvent = "stay") => {
|
|
231
288
|
const currentEditingCell = editingCell.value;
|
|
@@ -237,7 +294,8 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
237
294
|
: typeof targetOrEvent === "boolean"
|
|
238
295
|
? (targetOrEvent ? "next" : "stay")
|
|
239
296
|
: "stay";
|
|
240
|
-
const beforeSnapshot = options.
|
|
297
|
+
const beforeSnapshot = options.captureRowsSnapshotForRowIds?.([currentEditingCell.rowId])
|
|
298
|
+
?? options.captureRowsSnapshot();
|
|
241
299
|
const rowIndex = resolveBodyRowIndexById(currentEditingCell.rowId);
|
|
242
300
|
const rowNode = rowIndex >= 0 ? getBodyRowAtIndex(rowIndex) : null;
|
|
243
301
|
const columnSnapshot = options.visibleColumns.value.find(column => column.key === currentEditingCell.columnKey);
|
|
@@ -258,16 +316,25 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
258
316
|
]);
|
|
259
317
|
options.recordEditTransaction(beforeSnapshot);
|
|
260
318
|
clearInlineEdit();
|
|
319
|
+
suppressNextBlurCommit.value = false;
|
|
261
320
|
focusAfterInlineEdit(currentEditingCell.rowId, currentEditingCell.columnKey, target);
|
|
262
321
|
};
|
|
263
322
|
const cancelInlineEdit = () => {
|
|
264
323
|
const currentEditingCell = editingCell.value;
|
|
324
|
+
suppressNextBlurCommit.value = true;
|
|
265
325
|
clearInlineEdit();
|
|
266
326
|
if (!currentEditingCell) {
|
|
267
327
|
return;
|
|
268
328
|
}
|
|
269
329
|
focusAfterInlineEdit(currentEditingCell.rowId, currentEditingCell.columnKey, "stay");
|
|
270
330
|
};
|
|
331
|
+
const handleEditorBlur = () => {
|
|
332
|
+
if (suppressNextBlurCommit.value) {
|
|
333
|
+
suppressNextBlurCommit.value = false;
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
commitInlineEdit();
|
|
337
|
+
};
|
|
271
338
|
const handleEditorKeydown = (event) => {
|
|
272
339
|
if (event.key === "Tab") {
|
|
273
340
|
event.preventDefault();
|
|
@@ -294,8 +361,10 @@ export function useDataGridAppInlineEditing(options) {
|
|
|
294
361
|
editingCellOpenOnMount,
|
|
295
362
|
isEditingCell,
|
|
296
363
|
startInlineEdit,
|
|
364
|
+
appendInlineEditTextInput,
|
|
297
365
|
commitInlineEdit,
|
|
298
366
|
cancelInlineEdit,
|
|
299
367
|
handleEditorKeydown,
|
|
368
|
+
handleEditorBlur,
|
|
300
369
|
};
|
|
301
370
|
}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { useDataGridIntentHistory } from "../advanced";
|
|
2
2
|
import type { UseDataGridRuntimeResult } from "../composables/useDataGridRuntime";
|
|
3
3
|
export interface DataGridAppRowSnapshot<TRow> {
|
|
4
|
+
kind: "full" | "partial";
|
|
4
5
|
rows: Array<{
|
|
5
6
|
rowId: string | number;
|
|
6
7
|
row: TRow;
|
|
7
8
|
}>;
|
|
8
9
|
}
|
|
9
10
|
export interface UseDataGridAppIntentHistoryOptions<TRow> {
|
|
10
|
-
runtime: Pick<UseDataGridRuntimeResult<TRow>, "api">;
|
|
11
|
+
runtime: Pick<UseDataGridRuntimeResult<TRow>, "api" | "getBodyRowAtIndex" | "resolveBodyRowIndexById">;
|
|
11
12
|
cloneRowData: (row: TRow) => TRow;
|
|
12
13
|
syncViewport: () => void;
|
|
13
14
|
}
|
|
14
15
|
export interface UseDataGridAppIntentHistoryResult<TRow> {
|
|
15
16
|
captureRowsSnapshot: () => DataGridAppRowSnapshot<TRow>;
|
|
17
|
+
captureRowsSnapshotByIds: (rowIds: readonly (string | number)[]) => DataGridAppRowSnapshot<TRow>;
|
|
16
18
|
canUndo: ReturnType<typeof useDataGridIntentHistory<DataGridAppRowSnapshot<TRow>>>["canUndo"];
|
|
17
19
|
canRedo: ReturnType<typeof useDataGridIntentHistory<DataGridAppRowSnapshot<TRow>>>["canRedo"];
|
|
18
20
|
runHistoryAction: ReturnType<typeof useDataGridIntentHistory<DataGridAppRowSnapshot<TRow>>>["runHistoryAction"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppIntentHistory.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppIntentHistory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDataGridAppIntentHistory.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppIntentHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAEjF,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,kCAAkC,CAAC,IAAI;IACtD,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,mBAAmB,GAAG,yBAAyB,CAAC,CAAA;IACtG,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAA;IACjC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,iCAAiC,CAAC,IAAI;IACrD,mBAAmB,EAAE,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACvD,wBAAwB,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAChG,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7F,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7F,gBAAgB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;IAC/G,uBAAuB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAA;IAC7H,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;CAC9F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAC9C,OAAO,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAChD,iCAAiC,CAAC,IAAI,CAAC,CAiGzC"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { useDataGridIntentHistory } from "../advanced";
|
|
2
2
|
export function useDataGridAppIntentHistory(options) {
|
|
3
|
+
const resolveRuntimeRowById = (rowId) => {
|
|
4
|
+
const rowIndex = options.runtime.resolveBodyRowIndexById(rowId);
|
|
5
|
+
if (rowIndex >= 0) {
|
|
6
|
+
return options.runtime.getBodyRowAtIndex(rowIndex) ?? options.runtime.api.rows.get(rowIndex);
|
|
7
|
+
}
|
|
8
|
+
const count = options.runtime.api.rows.getCount();
|
|
9
|
+
for (let candidateIndex = 0; candidateIndex < count; candidateIndex += 1) {
|
|
10
|
+
const candidate = options.runtime.api.rows.get(candidateIndex);
|
|
11
|
+
if (candidate?.rowId === rowId) {
|
|
12
|
+
return candidate;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
3
17
|
const captureRowsSnapshot = () => {
|
|
4
18
|
const count = options.runtime.api.rows.getCount();
|
|
5
19
|
const snapshotRows = [];
|
|
@@ -13,11 +27,40 @@ export function useDataGridAppIntentHistory(options) {
|
|
|
13
27
|
row: options.cloneRowData(node.data),
|
|
14
28
|
});
|
|
15
29
|
}
|
|
16
|
-
return { rows: snapshotRows };
|
|
30
|
+
return { kind: "full", rows: snapshotRows };
|
|
31
|
+
};
|
|
32
|
+
const captureRowsSnapshotByIds = (rowIds) => {
|
|
33
|
+
const snapshotRows = [];
|
|
34
|
+
const seen = new Set();
|
|
35
|
+
for (const rowId of rowIds) {
|
|
36
|
+
if (seen.has(rowId)) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
seen.add(rowId);
|
|
40
|
+
const node = resolveRuntimeRowById(rowId);
|
|
41
|
+
if (!node || node.rowId == null || node.kind === "group") {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
snapshotRows.push({
|
|
45
|
+
rowId: node.rowId,
|
|
46
|
+
row: options.cloneRowData(node.data),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return { kind: "partial", rows: snapshotRows };
|
|
17
50
|
};
|
|
18
51
|
const intentHistory = useDataGridIntentHistory({
|
|
19
52
|
captureSnapshot: captureRowsSnapshot,
|
|
20
53
|
applySnapshot: snapshot => {
|
|
54
|
+
if (snapshot.kind === "partial") {
|
|
55
|
+
if (snapshot.rows.length > 0) {
|
|
56
|
+
options.runtime.api.rows.applyEdits(snapshot.rows.map(entry => ({
|
|
57
|
+
rowId: entry.rowId,
|
|
58
|
+
data: options.cloneRowData(entry.row),
|
|
59
|
+
})));
|
|
60
|
+
}
|
|
61
|
+
options.syncViewport();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
21
64
|
options.runtime.api.rows.setData(snapshot.rows.map((entry, index) => ({
|
|
22
65
|
rowId: entry.rowId,
|
|
23
66
|
originalIndex: index,
|
|
@@ -26,12 +69,20 @@ export function useDataGridAppIntentHistory(options) {
|
|
|
26
69
|
options.syncViewport();
|
|
27
70
|
},
|
|
28
71
|
});
|
|
72
|
+
const recordIntentTransaction = (descriptor, beforeSnapshot, afterSnapshotOverride) => {
|
|
73
|
+
const afterSnapshot = afterSnapshotOverride
|
|
74
|
+
?? (beforeSnapshot.kind === "partial"
|
|
75
|
+
? captureRowsSnapshotByIds(beforeSnapshot.rows.map(entry => entry.rowId))
|
|
76
|
+
: captureRowsSnapshot());
|
|
77
|
+
return intentHistory.recordIntentTransaction(descriptor, beforeSnapshot, afterSnapshot);
|
|
78
|
+
};
|
|
29
79
|
return {
|
|
30
80
|
captureRowsSnapshot,
|
|
81
|
+
captureRowsSnapshotByIds,
|
|
31
82
|
canUndo: intentHistory.canUndo,
|
|
32
83
|
canRedo: intentHistory.canRedo,
|
|
33
84
|
runHistoryAction: intentHistory.runHistoryAction,
|
|
34
|
-
recordIntentTransaction
|
|
85
|
+
recordIntentTransaction,
|
|
35
86
|
dispose: intentHistory.dispose,
|
|
36
87
|
};
|
|
37
88
|
}
|
|
@@ -33,6 +33,7 @@ export interface UseDataGridAppInteractionControllerOptions<TRow extends Record<
|
|
|
33
33
|
cloneRowData: (row: TRow) => TRow;
|
|
34
34
|
resolveRowIndexById?: (rowId: string | number) => number;
|
|
35
35
|
captureRowsSnapshot: () => TSnapshot;
|
|
36
|
+
captureRowsSnapshotForRowIds?: (rowIds: readonly (string | number)[]) => TSnapshot;
|
|
36
37
|
recordIntentTransaction: (descriptor: {
|
|
37
38
|
intent: string;
|
|
38
39
|
label: string;
|
|
@@ -59,6 +60,8 @@ export interface UseDataGridAppInteractionControllerOptions<TRow extends Record<
|
|
|
59
60
|
draftValue?: string;
|
|
60
61
|
openOnMount?: boolean;
|
|
61
62
|
}) => void;
|
|
63
|
+
appendInlineEditTextInput?: (value: string) => boolean;
|
|
64
|
+
cancelInlineEdit: () => void;
|
|
62
65
|
commitInlineEdit: (target?: "stay" | "next" | "previous") => void;
|
|
63
66
|
canUndo: () => boolean;
|
|
64
67
|
canRedo: () => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppInteractionController.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppInteractionController.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useDataGridAppInteractionController.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppInteractionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,7 +97,7 @@ export function useDataGridAppInteractionController(options) {
|
|
|
97
97
|
if (row.kind === "group" || row.rowId == null) {
|
|
98
98
|
return false;
|
|
99
99
|
}
|
|
100
|
-
const beforeSnapshot = options.captureRowsSnapshot();
|
|
100
|
+
const beforeSnapshot = options.captureRowsSnapshotForRowIds?.([row.rowId]) ?? options.captureRowsSnapshot();
|
|
101
101
|
options.runtime.api.rows.applyEdits([
|
|
102
102
|
{
|
|
103
103
|
rowId: row.rowId,
|
|
@@ -236,6 +236,30 @@ export function useDataGridAppInteractionController(options) {
|
|
|
236
236
|
}
|
|
237
237
|
return result;
|
|
238
238
|
};
|
|
239
|
+
const collectRowIdsInRange = (range) => {
|
|
240
|
+
const normalizedRange = range ? options.normalizeClipboardRange(range) : null;
|
|
241
|
+
if (!normalizedRange) {
|
|
242
|
+
return [];
|
|
243
|
+
}
|
|
244
|
+
const rowIds = [];
|
|
245
|
+
const seen = new Set();
|
|
246
|
+
for (let rowIndex = normalizedRange.startRow; rowIndex <= normalizedRange.endRow; rowIndex += 1) {
|
|
247
|
+
const row = getBodyRowAtIndex(rowIndex);
|
|
248
|
+
if (!row || row.rowId == null || row.kind === "group" || seen.has(row.rowId)) {
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
seen.add(row.rowId);
|
|
252
|
+
rowIds.push(row.rowId);
|
|
253
|
+
}
|
|
254
|
+
return rowIds;
|
|
255
|
+
};
|
|
256
|
+
const captureRowsSnapshotForRanges = (ranges) => {
|
|
257
|
+
const rowIds = [];
|
|
258
|
+
for (const range of ranges) {
|
|
259
|
+
rowIds.push(...collectRowIdsInRange(range));
|
|
260
|
+
}
|
|
261
|
+
return options.captureRowsSnapshotForRowIds?.(rowIds) ?? options.captureRowsSnapshot();
|
|
262
|
+
};
|
|
239
263
|
const rangeMutationEngine = useDataGridRangeMutationEngine({
|
|
240
264
|
resolveRangeMoveBaseRange: () => rangeMoveBaseRange.value,
|
|
241
265
|
resolveRangeMovePreviewRange: () => rangeMovePreviewRange.value,
|
|
@@ -378,7 +402,7 @@ export function useDataGridAppInteractionController(options) {
|
|
|
378
402
|
if (restartSession && options.rangesEqual(restartSession.baseRange, baseRange)) {
|
|
379
403
|
const removedRange = resolveRemovedFillRange(restartSession.previewRange, previewRange);
|
|
380
404
|
if (removedRange) {
|
|
381
|
-
const beforeSnapshot =
|
|
405
|
+
const beforeSnapshot = captureRowsSnapshotForRanges([removedRange, previewRange]);
|
|
382
406
|
const sourceMatrix = options.buildFillMatrixFromRange(baseRange);
|
|
383
407
|
const resolvedBehavior = behavior
|
|
384
408
|
?? activeFillBehavior.value
|
|
@@ -950,7 +974,7 @@ export function useDataGridAppInteractionController(options) {
|
|
|
950
974
|
if (!range) {
|
|
951
975
|
return false;
|
|
952
976
|
}
|
|
953
|
-
const beforeSnapshot =
|
|
977
|
+
const beforeSnapshot = captureRowsSnapshotForRanges([range]);
|
|
954
978
|
options.clearPendingClipboardOperation(false);
|
|
955
979
|
const applied = options.applyClipboardEdits(range, [[""]], { recordHistory: false });
|
|
956
980
|
if (applied <= 0) {
|
|
@@ -1303,6 +1327,15 @@ export function useDataGridAppInteractionController(options) {
|
|
|
1303
1327
|
}
|
|
1304
1328
|
const columnSnapshot = options.visibleColumns.value[columnIndex];
|
|
1305
1329
|
const columnKey = columnSnapshot?.key;
|
|
1330
|
+
const currentEditingCell = options.editingCell.value;
|
|
1331
|
+
if (event.key === "Escape"
|
|
1332
|
+
&& columnKey
|
|
1333
|
+
&& currentEditingCell?.rowId === row.rowId
|
|
1334
|
+
&& currentEditingCell.columnKey === columnKey) {
|
|
1335
|
+
event.preventDefault();
|
|
1336
|
+
options.cancelInlineEdit();
|
|
1337
|
+
return;
|
|
1338
|
+
}
|
|
1306
1339
|
const editable = Boolean(columnKey) && options.isCellEditable(row, rowIndex, columnKey, columnIndex);
|
|
1307
1340
|
const printable = isPrintableEditingKey(event);
|
|
1308
1341
|
const keyboardAction = columnSnapshot && columnKey
|
|
@@ -1315,6 +1348,19 @@ export function useDataGridAppInteractionController(options) {
|
|
|
1315
1348
|
printable,
|
|
1316
1349
|
})
|
|
1317
1350
|
: "none";
|
|
1351
|
+
// Mirror Excel: Enter navigates vertically for editable cells; typing/F2/double-click opens edit mode.
|
|
1352
|
+
if (event.key === "Enter"
|
|
1353
|
+
&& !event.ctrlKey
|
|
1354
|
+
&& !event.metaKey
|
|
1355
|
+
&& !event.altKey
|
|
1356
|
+
&& (keyboardAction !== "invoke" || editable)) {
|
|
1357
|
+
keyboardNavigationExtendsSelection.value = event.shiftKey;
|
|
1358
|
+
const navigationHandled = cellNavigation.dispatchNavigation(event);
|
|
1359
|
+
keyboardNavigationExtendsSelection.value = false;
|
|
1360
|
+
if (navigationHandled) {
|
|
1361
|
+
return;
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1318
1364
|
if (keyboardAction === "toggle" && columnSnapshot && columnKey) {
|
|
1319
1365
|
event.preventDefault();
|
|
1320
1366
|
options.setCellSelection(row, rowOffset, columnIndex, event.shiftKey);
|
|
@@ -1344,6 +1390,12 @@ export function useDataGridAppInteractionController(options) {
|
|
|
1344
1390
|
if ((keyboardAction === "startEdit" || keyboardAction === "openSelect") && columnKey) {
|
|
1345
1391
|
event.preventDefault();
|
|
1346
1392
|
if (editable) {
|
|
1393
|
+
if (printable
|
|
1394
|
+
&& currentEditingCell?.rowId === row.rowId
|
|
1395
|
+
&& currentEditingCell.columnKey === columnKey) {
|
|
1396
|
+
options.appendInlineEditTextInput?.(event.key);
|
|
1397
|
+
return;
|
|
1398
|
+
}
|
|
1347
1399
|
options.startInlineEdit(row, columnKey, printable || keyboardAction === "openSelect"
|
|
1348
1400
|
? {
|
|
1349
1401
|
draftValue: printable ? event.key : undefined,
|
|
@@ -8,7 +8,7 @@ export interface UseDataGridIntentHistoryResult<TSnapshot> {
|
|
|
8
8
|
transactionSnapshot: Ref<DataGridTransactionSnapshot>;
|
|
9
9
|
canUndo: Ref<boolean>;
|
|
10
10
|
canRedo: Ref<boolean>;
|
|
11
|
-
recordIntentTransaction: (descriptor: DataGridIntentTransactionDescriptor, beforeSnapshot: TSnapshot) => Promise<string | null>;
|
|
11
|
+
recordIntentTransaction: (descriptor: DataGridIntentTransactionDescriptor, beforeSnapshot: TSnapshot, afterSnapshotOverride?: TSnapshot) => Promise<string | null>;
|
|
12
12
|
runHistoryAction: (direction: "undo" | "redo") => Promise<string | null>;
|
|
13
13
|
dispose: () => void;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridIntentHistory.d.ts","sourceRoot":"","sources":["../../src/composables/useDataGridIntentHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAEL,KAAK,mCAAmC,EACxC,KAAK,+BAA+B,EACrC,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAEjF,YAAY,EACV,mCAAmC,EACnC,+BAA+B,GAChC,CAAA;AAED,MAAM,WAAW,8BAA8B,CAAC,SAAS;IACvD,kBAAkB,EAAE,8BAA8B,CAAA;IAClD,mBAAmB,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAA;IACrD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,uBAAuB,EAAE,CACvB,UAAU,EAAE,mCAAmC,EAC/C,cAAc,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"useDataGridIntentHistory.d.ts","sourceRoot":"","sources":["../../src/composables/useDataGridIntentHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAEL,KAAK,mCAAmC,EACxC,KAAK,+BAA+B,EACrC,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAEjF,YAAY,EACV,mCAAmC,EACnC,+BAA+B,GAChC,CAAA;AAED,MAAM,WAAW,8BAA8B,CAAC,SAAS;IACvD,kBAAkB,EAAE,8BAA8B,CAAA;IAClD,mBAAmB,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAA;IACrD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,uBAAuB,EAAE,CACvB,UAAU,EAAE,mCAAmC,EAC/C,cAAc,EAAE,SAAS,EACzB,qBAAqB,CAAC,EAAE,SAAS,KAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC3B,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxE,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAChD,OAAO,EAAE,+BAA+B,CAAC,SAAS,CAAC,GAClD,8BAA8B,CAAC,SAAS,CAAC,CA4B3C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@affino/datagrid-vue",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.12",
|
|
4
4
|
"author": "Anton Pavlov <a.pavlov@affino.dev>",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Vue adapter and headless foundation for Affino DataGrid",
|
|
@@ -75,11 +75,10 @@
|
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@affino/
|
|
79
|
-
"@affino/datagrid-orchestration": "0.3.5",
|
|
78
|
+
"@affino/datagrid-core": "0.3.8",
|
|
80
79
|
"@affino/datagrid-pivot": "0.1.1",
|
|
81
|
-
"@affino/datagrid-
|
|
82
|
-
"@affino/datagrid-
|
|
80
|
+
"@affino/datagrid-orchestration": "0.3.6",
|
|
81
|
+
"@affino/datagrid-worker": "0.1.1"
|
|
83
82
|
},
|
|
84
83
|
"devDependencies": {
|
|
85
84
|
"@affino/datagrid-theme": "^0.2.2"
|