Web: Filter-Dropdown und Spalten-Resize gefixt
1) Die Checkboxen im Filter-Dropdown erbten die globale input-Regel (width:100%, Rahmen, margin) und sprengten die Zeile - jetzt zurueckgesetzt, Label fuellt die Breite links. 2) Beim Breiterziehen einer Spalte schrumpfte die flexible (grow-)Spalte, wodurch die Nachbarspalte schmaler wurde und alles nach links wanderte. Die grow-Spalte wird beim Start des Ziehens auf ihre Pixelbreite eingefroren; danach verhalten sich die Spalten unabhaengig wie in Excel. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -170,7 +170,17 @@ export default function DataTable({
|
||||
const resizing = useRef(null);
|
||||
function startResize(e, c) {
|
||||
e.preventDefault(); e.stopPropagation();
|
||||
resizing.current = { key: c.key, startX: e.clientX, startW: widthOf(c) };
|
||||
const startW = widthOf(c);
|
||||
// Die flexible (grow-)Spalte auf ihre aktuelle Pixelbreite einfrieren. Sonst
|
||||
// "klaut" das Breiterziehen einer Spalte der grow-Spalte den Platz – dann
|
||||
// schrumpft die Nachbarspalte und alles wandert nach links. Danach verhalten
|
||||
// sich die Spalten wie in Excel (unabhängig, notfalls scrollt die Tabelle).
|
||||
setWidths((old) => {
|
||||
const next = { ...old };
|
||||
for (const gc of growCols) if (next[gc.key] == null) next[gc.key] = Math.round(widthOf(gc));
|
||||
return next;
|
||||
});
|
||||
resizing.current = { key: c.key, startX: e.clientX, startW };
|
||||
window.addEventListener("pointermove", onResizeMove);
|
||||
window.addEventListener("pointerup", endResize);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user