@alaarab/ogrid-react 2.1.7 → 2.1.9
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/esm/index.js
CHANGED
|
@@ -74,6 +74,9 @@ function getCellValue(item, col) {
|
|
|
74
74
|
if (col.valueGetter) return col.valueGetter(item);
|
|
75
75
|
return item[col.columnId];
|
|
76
76
|
}
|
|
77
|
+
function isColumnEditable(col, item) {
|
|
78
|
+
return col.editable === true || typeof col.editable === "function" && col.editable(item);
|
|
79
|
+
}
|
|
77
80
|
function isColumnGroupDef(c) {
|
|
78
81
|
return "children" in c && Array.isArray(c.children);
|
|
79
82
|
}
|
|
@@ -735,9 +738,9 @@ function getHeaderFilterConfig(col, input) {
|
|
|
735
738
|
function getCellRenderDescriptor(item, col, rowIndex, colIdx, input) {
|
|
736
739
|
const rowId = input.getRowId(item);
|
|
737
740
|
const globalColIndex = colIdx + input.colOffset;
|
|
738
|
-
const colEditable = col
|
|
739
|
-
const canEditInline = input.editable !== false &&
|
|
740
|
-
const canEditPopup = input.editable !== false &&
|
|
741
|
+
const colEditable = isColumnEditable(col, item);
|
|
742
|
+
const canEditInline = input.editable !== false && colEditable && !!input.onCellValueChanged && typeof col.cellEditor !== "function";
|
|
743
|
+
const canEditPopup = input.editable !== false && colEditable && !!input.onCellValueChanged && typeof col.cellEditor === "function" && col.cellEditorPopup !== false;
|
|
741
744
|
const canEditAny = canEditInline || canEditPopup;
|
|
742
745
|
const isEditing = input.editingCell?.rowId === rowId && input.editingCell?.columnId === col.columnId;
|
|
743
746
|
const isActive = !input.isDragging && input.activeCell?.rowIndex === rowIndex && input.activeCell?.columnIndex === globalColIndex;
|
|
@@ -850,6 +853,18 @@ function measureRange(container, range, colOffset) {
|
|
|
850
853
|
height: brRect.bottom - tlRect.top
|
|
851
854
|
};
|
|
852
855
|
}
|
|
856
|
+
function buildCellIndex(container) {
|
|
857
|
+
const index = /* @__PURE__ */ new Map();
|
|
858
|
+
if (!container) return index;
|
|
859
|
+
const cells = container.querySelectorAll("[data-row-index][data-col-index]");
|
|
860
|
+
for (let i = 0; i < cells.length; i++) {
|
|
861
|
+
const el = cells[i];
|
|
862
|
+
const r = el.getAttribute("data-row-index") ?? "";
|
|
863
|
+
const c = el.getAttribute("data-col-index") ?? "";
|
|
864
|
+
index.set(`${r},${c}`, el);
|
|
865
|
+
}
|
|
866
|
+
return index;
|
|
867
|
+
}
|
|
853
868
|
function injectGlobalStyles(id, css) {
|
|
854
869
|
if (typeof document === "undefined") return;
|
|
855
870
|
if (document.getElementById(id)) return;
|
|
@@ -1003,8 +1018,7 @@ function applyCellDeletion(range, items, visibleCols) {
|
|
|
1003
1018
|
if (r >= items.length || c >= visibleCols.length) continue;
|
|
1004
1019
|
const item = items[r];
|
|
1005
1020
|
const col = visibleCols[c];
|
|
1006
|
-
|
|
1007
|
-
if (!colEditable) continue;
|
|
1021
|
+
if (!isColumnEditable(col, item)) continue;
|
|
1008
1022
|
const oldValue = getCellValue(item, col);
|
|
1009
1023
|
const result = parseValue("", oldValue, item, col);
|
|
1010
1024
|
if (!result.valid) continue;
|
|
@@ -1100,8 +1114,7 @@ function applyPastedValues(parsedRows, anchorRow, anchorCol, items, visibleCols)
|
|
|
1100
1114
|
if (targetRow >= items.length || targetCol >= visibleCols.length) continue;
|
|
1101
1115
|
const item = items[targetRow];
|
|
1102
1116
|
const col = visibleCols[targetCol];
|
|
1103
|
-
|
|
1104
|
-
if (!colEditable) continue;
|
|
1117
|
+
if (!isColumnEditable(col, item)) continue;
|
|
1105
1118
|
const rawValue = cells[c] ?? "";
|
|
1106
1119
|
const oldValue = getCellValue(item, col);
|
|
1107
1120
|
const result = parseValue(rawValue, oldValue, item, col);
|
|
@@ -1124,8 +1137,7 @@ function applyCutClear(cutRange, items, visibleCols) {
|
|
|
1124
1137
|
if (r >= items.length || c >= visibleCols.length) continue;
|
|
1125
1138
|
const item = items[r];
|
|
1126
1139
|
const col = visibleCols[c];
|
|
1127
|
-
|
|
1128
|
-
if (!colEditable) continue;
|
|
1140
|
+
if (!isColumnEditable(col, item)) continue;
|
|
1129
1141
|
const oldValue = getCellValue(item, col);
|
|
1130
1142
|
const result = parseValue("", oldValue, item, col);
|
|
1131
1143
|
if (!result.valid) continue;
|
|
@@ -1152,8 +1164,7 @@ function applyFillValues(range, sourceRow, sourceCol, items, visibleCols) {
|
|
|
1152
1164
|
if (row >= items.length || col >= visibleCols.length) continue;
|
|
1153
1165
|
const item = items[row];
|
|
1154
1166
|
const colDef = visibleCols[col];
|
|
1155
|
-
|
|
1156
|
-
if (!colEditable) continue;
|
|
1167
|
+
if (!isColumnEditable(colDef, item)) continue;
|
|
1157
1168
|
const oldValue = getCellValue(item, colDef);
|
|
1158
1169
|
const result = parseValue(startValue, oldValue, item, colDef);
|
|
1159
1170
|
if (!result.valid) continue;
|
|
@@ -2267,42 +2278,62 @@ function useCellSelection(params) {
|
|
|
2267
2278
|
useEffect(() => {
|
|
2268
2279
|
const markedCells = /* @__PURE__ */ new Set();
|
|
2269
2280
|
let cellIndex = null;
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
cellIndex = /* @__PURE__ */ new Map();
|
|
2274
|
-
const cells = wrapper.querySelectorAll("[data-row-index][data-col-index]");
|
|
2275
|
-
for (let i = 0; i < cells.length; i++) {
|
|
2276
|
-
const el = cells[i];
|
|
2277
|
-
const r = el.getAttribute("data-row-index") ?? "";
|
|
2278
|
-
const c = el.getAttribute("data-col-index") ?? "";
|
|
2279
|
-
cellIndex.set(`${r},${c}`, el);
|
|
2280
|
-
}
|
|
2281
|
-
};
|
|
2282
|
-
const styleCellInRange = (el, r, c, minR, maxR, minC, maxC, anchor) => {
|
|
2281
|
+
let overlayEl = null;
|
|
2282
|
+
let overlayContainer = null;
|
|
2283
|
+
const styleCellInRange = (el, r, _c, _minR, _maxR, _minC, _maxC, anchor) => {
|
|
2283
2284
|
if (!el.hasAttribute(DRAG_ATTR)) el.setAttribute(DRAG_ATTR, "");
|
|
2284
|
-
const isAnchor = anchor && r === anchor.row &&
|
|
2285
|
+
const isAnchor = anchor && r === anchor.row && _c === anchor.col;
|
|
2285
2286
|
if (isAnchor) {
|
|
2286
2287
|
if (!el.hasAttribute(DRAG_ANCHOR_ATTR)) el.setAttribute(DRAG_ANCHOR_ATTR, "");
|
|
2287
2288
|
} else {
|
|
2288
2289
|
if (el.hasAttribute(DRAG_ANCHOR_ATTR)) el.removeAttribute(DRAG_ANCHOR_ATTR);
|
|
2289
2290
|
}
|
|
2290
|
-
const shadows = [];
|
|
2291
|
-
if (r === minR) shadows.push("inset 0 2px 0 0 var(--ogrid-selection, #217346)");
|
|
2292
|
-
if (r === maxR) shadows.push("inset 0 -2px 0 0 var(--ogrid-selection, #217346)");
|
|
2293
|
-
if (c === minC) shadows.push("inset 2px 0 0 0 var(--ogrid-selection, #217346)");
|
|
2294
|
-
if (c === maxC) shadows.push("inset -2px 0 0 0 var(--ogrid-selection, #217346)");
|
|
2295
|
-
el.style.boxShadow = shadows.length > 0 ? shadows.join(", ") : "";
|
|
2296
2291
|
markedCells.add(el);
|
|
2297
2292
|
};
|
|
2298
2293
|
const unstyleCell = (el) => {
|
|
2299
2294
|
el.removeAttribute(DRAG_ATTR);
|
|
2300
2295
|
el.removeAttribute(DRAG_ANCHOR_ATTR);
|
|
2301
|
-
|
|
2296
|
+
};
|
|
2297
|
+
const positionOverlay = (minR, maxR, minC, maxC, colOff) => {
|
|
2298
|
+
const topLeftEl = cellIndex?.get(`${minR},${minC + colOff}`);
|
|
2299
|
+
const bottomRightEl = cellIndex?.get(`${maxR},${maxC + colOff}`);
|
|
2300
|
+
if (!topLeftEl || !bottomRightEl) return;
|
|
2301
|
+
const topLeftTd = topLeftEl.closest("td");
|
|
2302
|
+
const bottomRightTd = bottomRightEl.closest("td");
|
|
2303
|
+
if (!topLeftTd || !bottomRightTd) return;
|
|
2304
|
+
if (!overlayContainer) {
|
|
2305
|
+
overlayContainer = topLeftEl.closest("table")?.parentElement;
|
|
2306
|
+
if (!overlayContainer) return;
|
|
2307
|
+
}
|
|
2308
|
+
if (!overlayEl) {
|
|
2309
|
+
overlayEl = document.createElement("div");
|
|
2310
|
+
overlayEl.style.position = "absolute";
|
|
2311
|
+
overlayEl.style.border = "2px solid var(--ogrid-selection, #217346)";
|
|
2312
|
+
overlayEl.style.pointerEvents = "none";
|
|
2313
|
+
overlayEl.style.zIndex = "4";
|
|
2314
|
+
overlayEl.style.boxSizing = "border-box";
|
|
2315
|
+
overlayContainer.appendChild(overlayEl);
|
|
2316
|
+
}
|
|
2317
|
+
const cRect = overlayContainer.getBoundingClientRect();
|
|
2318
|
+
const tlRect = topLeftTd.getBoundingClientRect();
|
|
2319
|
+
const brRect = bottomRightTd.getBoundingClientRect();
|
|
2320
|
+
overlayEl.style.top = `${Math.round(tlRect.top - cRect.top)}px`;
|
|
2321
|
+
overlayEl.style.left = `${Math.round(tlRect.left - cRect.left)}px`;
|
|
2322
|
+
overlayEl.style.width = `${Math.round(brRect.right - tlRect.left)}px`;
|
|
2323
|
+
overlayEl.style.height = `${Math.round(brRect.bottom - tlRect.top)}px`;
|
|
2324
|
+
overlayEl.style.display = "block";
|
|
2325
|
+
};
|
|
2326
|
+
const hideOverlay = () => {
|
|
2327
|
+
if (overlayEl) overlayEl.style.display = "none";
|
|
2328
|
+
};
|
|
2329
|
+
const removeOverlay = () => {
|
|
2330
|
+
overlayEl?.remove();
|
|
2331
|
+
overlayEl = null;
|
|
2332
|
+
overlayContainer = null;
|
|
2302
2333
|
};
|
|
2303
2334
|
const applyDragAttrs = (range) => {
|
|
2304
2335
|
const wrapper = wrapperRef.current;
|
|
2305
|
-
if (!wrapper) return;
|
|
2336
|
+
if (!wrapper || !isDraggingRef.current) return;
|
|
2306
2337
|
const minR = Math.min(range.startRow, range.endRow);
|
|
2307
2338
|
const maxR = Math.max(range.startRow, range.endRow);
|
|
2308
2339
|
const minC = Math.min(range.startCol, range.endCol);
|
|
@@ -2318,13 +2349,13 @@ function useCellSelection(params) {
|
|
|
2318
2349
|
markedCells.delete(el);
|
|
2319
2350
|
}
|
|
2320
2351
|
}
|
|
2321
|
-
if (!cellIndex) buildCellIndex();
|
|
2352
|
+
if (!cellIndex) cellIndex = buildCellIndex(wrapperRef.current);
|
|
2322
2353
|
for (let r = minR; r <= maxR; r++) {
|
|
2323
2354
|
for (let c = minC; c <= maxC; c++) {
|
|
2324
2355
|
const key = `${r},${c + colOff}`;
|
|
2325
2356
|
let el = cellIndex?.get(key);
|
|
2326
2357
|
if (el && !el.isConnected) {
|
|
2327
|
-
buildCellIndex();
|
|
2358
|
+
cellIndex = buildCellIndex(wrapperRef.current);
|
|
2328
2359
|
el = cellIndex?.get(key);
|
|
2329
2360
|
}
|
|
2330
2361
|
if (el) {
|
|
@@ -2332,6 +2363,7 @@ function useCellSelection(params) {
|
|
|
2332
2363
|
}
|
|
2333
2364
|
}
|
|
2334
2365
|
}
|
|
2366
|
+
positionOverlay(minR, maxR, minC, maxC, colOff);
|
|
2335
2367
|
};
|
|
2336
2368
|
applyDragAttrsRef.current = applyDragAttrs;
|
|
2337
2369
|
const clearDragAttrs = () => {
|
|
@@ -2340,6 +2372,7 @@ function useCellSelection(params) {
|
|
|
2340
2372
|
}
|
|
2341
2373
|
markedCells.clear();
|
|
2342
2374
|
cellIndex = null;
|
|
2375
|
+
hideOverlay();
|
|
2343
2376
|
};
|
|
2344
2377
|
const resolveRange = (cx, cy) => {
|
|
2345
2378
|
if (!dragStartRef.current) return null;
|
|
@@ -2423,7 +2456,7 @@ function useCellSelection(params) {
|
|
|
2423
2456
|
if (!dragMovedRef.current) {
|
|
2424
2457
|
dragMovedRef.current = true;
|
|
2425
2458
|
setIsDragging(true);
|
|
2426
|
-
buildCellIndex();
|
|
2459
|
+
cellIndex = buildCellIndex(wrapperRef.current);
|
|
2427
2460
|
}
|
|
2428
2461
|
lastMousePosRef.current = { cx: e.clientX, cy: e.clientY };
|
|
2429
2462
|
updateAutoScroll();
|
|
@@ -2479,6 +2512,7 @@ function useCellSelection(params) {
|
|
|
2479
2512
|
window.removeEventListener("mouseup", onUp, true);
|
|
2480
2513
|
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
2481
2514
|
stopAutoScroll();
|
|
2515
|
+
removeOverlay();
|
|
2482
2516
|
};
|
|
2483
2517
|
}, [setActiveCell, colOffsetRef, setSelectionRange, wrapperRef]);
|
|
2484
2518
|
return {
|
|
@@ -3000,20 +3034,7 @@ function useFillHandle(params) {
|
|
|
3000
3034
|
fillDragEndRef.current = { endRow: fillDrag.startRow, endCol: fillDrag.startCol };
|
|
3001
3035
|
liveFillRangeRef.current = null;
|
|
3002
3036
|
const markedCells = /* @__PURE__ */ new Set();
|
|
3003
|
-
let cellIndex =
|
|
3004
|
-
const buildCellIndex = () => {
|
|
3005
|
-
const wrapper = wrapperRef.current;
|
|
3006
|
-
if (!wrapper) return;
|
|
3007
|
-
cellIndex = /* @__PURE__ */ new Map();
|
|
3008
|
-
const cells = wrapper.querySelectorAll("[data-row-index][data-col-index]");
|
|
3009
|
-
for (let i = 0; i < cells.length; i++) {
|
|
3010
|
-
const el = cells[i];
|
|
3011
|
-
const r = el.getAttribute("data-row-index") ?? "";
|
|
3012
|
-
const c = el.getAttribute("data-col-index") ?? "";
|
|
3013
|
-
cellIndex.set(`${r},${c}`, el);
|
|
3014
|
-
}
|
|
3015
|
-
};
|
|
3016
|
-
buildCellIndex();
|
|
3037
|
+
let cellIndex = buildCellIndex(wrapperRef.current);
|
|
3017
3038
|
const applyDragAttrs = (range) => {
|
|
3018
3039
|
const wrapper = wrapperRef.current;
|
|
3019
3040
|
if (!wrapper) return;
|
|
@@ -3035,8 +3056,8 @@ function useFillHandle(params) {
|
|
|
3035
3056
|
const key = `${r},${c + colOff}`;
|
|
3036
3057
|
let el = cellIndex?.get(key);
|
|
3037
3058
|
if (el && !el.isConnected) {
|
|
3038
|
-
buildCellIndex();
|
|
3039
|
-
el = cellIndex
|
|
3059
|
+
cellIndex = buildCellIndex(wrapperRef.current);
|
|
3060
|
+
el = cellIndex.get(key);
|
|
3040
3061
|
}
|
|
3041
3062
|
if (el) {
|
|
3042
3063
|
if (!el.hasAttribute(DRAG_ATTR2)) el.setAttribute(DRAG_ATTR2, "");
|
|
@@ -3050,7 +3071,6 @@ function useFillHandle(params) {
|
|
|
3050
3071
|
el.removeAttribute(DRAG_ATTR2);
|
|
3051
3072
|
}
|
|
3052
3073
|
markedCells.clear();
|
|
3053
|
-
cellIndex = null;
|
|
3054
3074
|
};
|
|
3055
3075
|
let lastFillMousePos = null;
|
|
3056
3076
|
const resolveRange = (cx, cy) => {
|
|
@@ -3492,7 +3512,7 @@ function useDataGridLayout(params) {
|
|
|
3492
3512
|
if (Object.keys(prev).length !== Object.keys(measured).length) return measured;
|
|
3493
3513
|
return prev;
|
|
3494
3514
|
});
|
|
3495
|
-
}, [visibleCols,
|
|
3515
|
+
}, [visibleCols, columnSizingOverrides, wrapperRef]);
|
|
3496
3516
|
const columnWidthMap = useMemo(() => {
|
|
3497
3517
|
const map = {};
|
|
3498
3518
|
for (const col of visibleCols) {
|
|
@@ -3605,7 +3625,9 @@ function useDataGridEditing(params) {
|
|
|
3605
3625
|
pendingEditorValue,
|
|
3606
3626
|
setPendingEditorValue,
|
|
3607
3627
|
onCellValueChanged,
|
|
3608
|
-
setActiveCell
|
|
3628
|
+
setActiveCell,
|
|
3629
|
+
setSelectionRange,
|
|
3630
|
+
colOffset
|
|
3609
3631
|
} = params;
|
|
3610
3632
|
const [popoverAnchorEl, setPopoverAnchorEl] = useState(null);
|
|
3611
3633
|
const visibleColsRef = useLatestRef(params.visibleCols);
|
|
@@ -3635,11 +3657,14 @@ function useDataGridEditing(params) {
|
|
|
3635
3657
|
setPopoverAnchorEl(null);
|
|
3636
3658
|
setPendingEditorValue(void 0);
|
|
3637
3659
|
if (rowIndex < itemsLengthRef.current - 1) {
|
|
3638
|
-
|
|
3660
|
+
const newRow = rowIndex + 1;
|
|
3661
|
+
const localCol = globalColIndex - colOffset;
|
|
3662
|
+
setActiveCell({ rowIndex: newRow, columnIndex: globalColIndex });
|
|
3663
|
+
setSelectionRange({ startRow: newRow, startCol: localCol, endRow: newRow, endCol: localCol });
|
|
3639
3664
|
}
|
|
3640
3665
|
},
|
|
3641
3666
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3642
|
-
[setEditingCell, setPendingEditorValue, setActiveCell, visibleColsRef, itemsLengthRef]
|
|
3667
|
+
[setEditingCell, setPendingEditorValue, setActiveCell, setSelectionRange, colOffset, visibleColsRef, itemsLengthRef]
|
|
3643
3668
|
);
|
|
3644
3669
|
const cancelPopoverEdit = useCallback(() => {
|
|
3645
3670
|
setEditingCell(null);
|
|
@@ -3915,6 +3940,7 @@ function useDataGridState(params) {
|
|
|
3915
3940
|
});
|
|
3916
3941
|
const {
|
|
3917
3942
|
selectionRange,
|
|
3943
|
+
setSelectionRange,
|
|
3918
3944
|
cutRange,
|
|
3919
3945
|
copyRange,
|
|
3920
3946
|
isDragging,
|
|
@@ -3928,7 +3954,9 @@ function useDataGridState(params) {
|
|
|
3928
3954
|
visibleCols,
|
|
3929
3955
|
itemsLength: items.length,
|
|
3930
3956
|
onCellValueChanged,
|
|
3931
|
-
setActiveCell
|
|
3957
|
+
setActiveCell,
|
|
3958
|
+
setSelectionRange,
|
|
3959
|
+
colOffset
|
|
3932
3960
|
});
|
|
3933
3961
|
const {
|
|
3934
3962
|
sortBy,
|
|
@@ -3939,6 +3967,7 @@ function useDataGridState(params) {
|
|
|
3939
3967
|
loadingFilterOptions,
|
|
3940
3968
|
peopleSearch
|
|
3941
3969
|
} = props;
|
|
3970
|
+
const hasPeopleSearch = !!peopleSearch;
|
|
3942
3971
|
const onFilterChangeRef = useLatestRef(onFilterChange);
|
|
3943
3972
|
const peopleSearchRef = useLatestRef(peopleSearch);
|
|
3944
3973
|
const stableOnFilterChange = useCallback(
|
|
@@ -3958,7 +3987,7 @@ function useDataGridState(params) {
|
|
|
3958
3987
|
onFilterChange: stableOnFilterChange,
|
|
3959
3988
|
filterOptions,
|
|
3960
3989
|
loadingFilterOptions,
|
|
3961
|
-
peopleSearch:
|
|
3990
|
+
peopleSearch: hasPeopleSearch ? stablePeopleSearch : void 0
|
|
3962
3991
|
}),
|
|
3963
3992
|
[
|
|
3964
3993
|
sortBy,
|
|
@@ -3968,7 +3997,7 @@ function useDataGridState(params) {
|
|
|
3968
3997
|
stableOnFilterChange,
|
|
3969
3998
|
filterOptions,
|
|
3970
3999
|
loadingFilterOptions,
|
|
3971
|
-
|
|
4000
|
+
hasPeopleSearch,
|
|
3972
4001
|
stablePeopleSearch
|
|
3973
4002
|
]
|
|
3974
4003
|
);
|
|
@@ -6820,7 +6849,8 @@ function MarchingAntsOverlay({
|
|
|
6820
6849
|
items,
|
|
6821
6850
|
visibleColumns,
|
|
6822
6851
|
columnSizingOverrides,
|
|
6823
|
-
columnOrder
|
|
6852
|
+
columnOrder,
|
|
6853
|
+
isDragging
|
|
6824
6854
|
}) {
|
|
6825
6855
|
const [selRect, setSelRect] = useState(null);
|
|
6826
6856
|
const [clipRect, setClipRect] = useState(null);
|
|
@@ -6868,7 +6898,7 @@ function MarchingAntsOverlay({
|
|
|
6868
6898
|
const selR = selRect ? roundRect(selRect) : null;
|
|
6869
6899
|
const clipR = clipRect ? roundRect(clipRect) : null;
|
|
6870
6900
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6871
|
-
selR && !clipRangeMatchesSel && /* @__PURE__ */ jsx(
|
|
6901
|
+
selR && !isDragging && !clipRangeMatchesSel && /* @__PURE__ */ jsx(
|
|
6872
6902
|
"svg",
|
|
6873
6903
|
{
|
|
6874
6904
|
style: {
|
|
@@ -21,5 +21,7 @@ export interface MarchingAntsOverlayProps {
|
|
|
21
21
|
}>;
|
|
22
22
|
/** Column order — triggers re-measurement when columns are reordered */
|
|
23
23
|
columnOrder: readonly string[] | undefined;
|
|
24
|
+
/** True while the user is drag-selecting — hides the selection SVG (drag overlay handles it) */
|
|
25
|
+
isDragging?: boolean;
|
|
24
26
|
}
|
|
25
|
-
export declare function MarchingAntsOverlay({ containerRef, selectionRange, copyRange, cutRange, colOffset, items, visibleColumns, columnSizingOverrides, columnOrder, }: MarchingAntsOverlayProps): React.ReactElement | null;
|
|
27
|
+
export declare function MarchingAntsOverlay({ containerRef, selectionRange, copyRange, cutRange, colOffset, items, visibleColumns, columnSizingOverrides, columnOrder, isDragging, }: MarchingAntsOverlayProps): React.ReactElement | null;
|
|
@@ -24,6 +24,13 @@ export interface UseDataGridEditingParams<T> {
|
|
|
24
24
|
rowIndex: number;
|
|
25
25
|
columnIndex: number;
|
|
26
26
|
} | null) => void;
|
|
27
|
+
setSelectionRange: (range: {
|
|
28
|
+
startRow: number;
|
|
29
|
+
startCol: number;
|
|
30
|
+
endRow: number;
|
|
31
|
+
endCol: number;
|
|
32
|
+
} | null) => void;
|
|
33
|
+
colOffset: number;
|
|
27
34
|
}
|
|
28
35
|
export interface UseDataGridEditingResult<T> {
|
|
29
36
|
editing: DataGridEditingState<T>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { escapeCsvValue, buildCsvHeader, buildCsvRows, exportToCsv, triggerCsvDownload, getCellValue, flattenColumns, buildHeaderRows, getFilterField, mergeFilter, deriveFilterOptionsFromData, getMultiSelectFilterFields, getStatusBarParts, getDataGridStatusBarConfig, getPaginationViewModel, PAGE_SIZE_OPTIONS, MAX_PAGE_BUTTONS, GRID_CONTEXT_MENU_ITEMS, COLUMN_HEADER_MENU_ITEMS, getContextMenuHandlers, getColumnHeaderMenuItems, formatShortcut, parseValue, numberParser, currencyParser, dateParser, emailParser, booleanParser, computeAggregations, processClientSideData, computeNextSortState, measureColumnContentWidth, AUTOSIZE_EXTRA_PX, AUTOSIZE_MAX_PX, findCtrlArrowTarget, computeTabNavigation, rangesEqual, clampSelectionToBounds, computeAutoScrollSpeed, formatCellValueForTsv, formatSelectionAsTsv, parseTsvClipboard, applyPastedValues, applyCutClear, applyFillValues, computeArrowNavigation, applyCellDeletion, applyRangeRowSelection, computeRowSelectionState, UndoRedoStack, } from '@alaarab/ogrid-core';
|
|
1
|
+
export { escapeCsvValue, buildCsvHeader, buildCsvRows, exportToCsv, triggerCsvDownload, getCellValue, flattenColumns, buildHeaderRows, getFilterField, mergeFilter, deriveFilterOptionsFromData, getMultiSelectFilterFields, getStatusBarParts, getDataGridStatusBarConfig, getPaginationViewModel, PAGE_SIZE_OPTIONS, MAX_PAGE_BUTTONS, GRID_CONTEXT_MENU_ITEMS, COLUMN_HEADER_MENU_ITEMS, getContextMenuHandlers, getColumnHeaderMenuItems, formatShortcut, parseValue, numberParser, currencyParser, dateParser, emailParser, booleanParser, computeAggregations, processClientSideData, computeNextSortState, measureColumnContentWidth, AUTOSIZE_EXTRA_PX, AUTOSIZE_MAX_PX, findCtrlArrowTarget, computeTabNavigation, rangesEqual, clampSelectionToBounds, computeAutoScrollSpeed, formatCellValueForTsv, formatSelectionAsTsv, parseTsvClipboard, applyPastedValues, applyCutClear, applyFillValues, computeArrowNavigation, applyCellDeletion, applyRangeRowSelection, computeRowSelectionState, UndoRedoStack, buildCellIndex, } from '@alaarab/ogrid-core';
|
|
2
2
|
export type { CsvColumn, StatusBarPart, StatusBarPartsInput, GridContextMenuItem, GridContextMenuHandlerProps, PaginationViewModel, ParseValueResult, AggregationResult, IColumnHeaderMenuItem, ColumnHeaderMenuInput, ColumnHeaderMenuHandlers, ArrowNavigationContext, ArrowNavigationResult, } from '@alaarab/ogrid-core';
|
|
3
3
|
export { getHeaderFilterConfig, getCellRenderDescriptor, resolveCellDisplayContent, resolveCellStyle, buildInlineEditorProps, buildPopoverEditorProps, getCellInteractionProps, } from './dataGridViewModel';
|
|
4
4
|
export type { HeaderFilterConfigInput, HeaderFilterConfig, CellRenderDescriptorInput, CellRenderDescriptor, CellRenderMode, CellInteractionHandlers, } from './dataGridViewModel';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alaarab/ogrid-react",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.9",
|
|
4
4
|
"description": "OGrid React – React hooks, headless components, and utilities for OGrid data grids.",
|
|
5
5
|
"main": "dist/esm/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"node": ">=18"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@alaarab/ogrid-core": "2.1.
|
|
42
|
+
"@alaarab/ogrid-core": "2.1.9",
|
|
43
43
|
"@tanstack/react-virtual": "^3.0.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|