fix(dashboard): Resize-Griff war unsichtbar - children-Injection landete in falscher Ebene
react-grid-layout/react-resizable hängt den Resize-Griff per children-Injection an (cloneElement(child, {}, ...child.props.children, handle)) - erwartet einen DIREKTEN Kindknoten der Grid-Item-Wurzel (CSS ".react-grid-item > .react-resizable-handle"). TileFrame rendere "children" bisher nur verschachtelt in CardContent, die CSS-Regel griff dort nicht - Griff blieb unsichtbar/nicht greifbar. Fix: eigener Kachel-Inhalt läuft jetzt über eine separate "inhalt"-Prop, "children" (das react-grid-layout für den Griff nutzt) wird direkt unter Card gerendert.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -6644,3 +6644,17 @@ Keine Commits in dieser Session.
|
|||||||
- frontend/src/styles/global.css | 7 +++++++
|
- frontend/src/styles/global.css | 7 +++++++
|
||||||
|
|
||||||
---
|
---
|
||||||
|
## 2026-09-07 13:55 – 13:58 (2m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** asb-material
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
- 5293624 fix(dashboard): Grid kollabierte auf Content-Breite, Kachel-Titel liefen ab
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- DEVLOG.md | 42 ++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- frontend/src/components/ui/card.tsx | 8 ++++++--
|
||||||
|
- frontend/src/pages/dashboard/tiles/EinsatzbereitschaftTile.tsx | 2 +-
|
||||||
|
- frontend/src/styles/global.css | 2 ++
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
@@ -613,3 +613,17 @@ Keine Commits in dieser Session.
|
|||||||
- frontend/src/settings/startseite.ts | 30 -
|
- frontend/src/settings/startseite.ts | 30 -
|
||||||
|
|
||||||
---
|
---
|
||||||
|
## 2026-09-07 13:59 – 14:02 (3m)
|
||||||
|
**Beschreibung:** Claude Code Session
|
||||||
|
**Projekt:** asb-material
|
||||||
|
|
||||||
|
### Commits
|
||||||
|
Keine Commits in dieser Session.
|
||||||
|
|
||||||
|
### Geänderte Dateien
|
||||||
|
- DEVLOG.md | 42 ++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
- frontend/src/components/ui/card.tsx | 8 ++++++--
|
||||||
|
- frontend/src/pages/dashboard/tiles/EinsatzbereitschaftTile.tsx | 2 +-
|
||||||
|
- frontend/src/styles/global.css | 2 ++
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
@@ -297,9 +297,8 @@ export function DashboardPage() {
|
|||||||
bearbeitenAktiv={bearbeitenModus}
|
bearbeitenAktiv={bearbeitenModus}
|
||||||
ausgeblendet={ausgeblendet}
|
ausgeblendet={ausgeblendet}
|
||||||
onAusblendenUmschalten={() => ausblendenUmschalten(id)}
|
onAusblendenUmschalten={() => ausblendenUmschalten(id)}
|
||||||
>
|
inhalt={inhalt}
|
||||||
{inhalt}
|
/>
|
||||||
</TileFrame>
|
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</GridLayout>
|
</GridLayout>
|
||||||
|
|||||||
@@ -18,14 +18,20 @@ interface Props extends HTMLAttributes<HTMLDivElement> {
|
|||||||
bearbeitenAktiv: boolean;
|
bearbeitenAktiv: boolean;
|
||||||
ausgeblendet: boolean;
|
ausgeblendet: boolean;
|
||||||
onAusblendenUmschalten: () => void;
|
onAusblendenUmschalten: () => void;
|
||||||
children: ReactNode;
|
/** Eigentlicher Kachel-Inhalt. Bewusst NICHT "children" - react-grid-layout
|
||||||
|
* hängt seinen Resize-Griff über eine children-Injection an (siehe
|
||||||
|
* react-resizable), das erwartet einen DIREKTEN Kindknoten der Grid-Item-
|
||||||
|
* Wurzel (CSS-Regel ".react-grid-item > .react-resizable-handle"). Würde
|
||||||
|
* "children" hier in CardContent verschachtelt landen, träfe die Regel
|
||||||
|
* nicht und der Griff wäre unsichtbar/nicht greifbar. */
|
||||||
|
inhalt: ReactNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
// forwardRef + generische DOM-Props nötig, react-grid-layout reicht Style/Events
|
// forwardRef + generische DOM-Props nötig, react-grid-layout reicht Style/Events
|
||||||
// (Drag/Resize-Handler) direkt an die Kachel-Wurzel durch.
|
// (Drag/Resize-Handler) direkt an die Kachel-Wurzel durch.
|
||||||
export const TileFrame = memo(
|
export const TileFrame = memo(
|
||||||
forwardRef<HTMLDivElement, Props>(function TileFrame(
|
forwardRef<HTMLDivElement, Props>(function TileFrame(
|
||||||
{ title, akzent = "neutral", bearbeitenAktiv, ausgeblendet, onAusblendenUmschalten, children, className, ...rest },
|
{ title, akzent = "neutral", bearbeitenAktiv, ausgeblendet, onAusblendenUmschalten, inhalt, children, className, ...rest },
|
||||||
ref
|
ref
|
||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
@@ -54,7 +60,8 @@ export const TileFrame = memo(
|
|||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
{!ausgeblendet && <CardContent className="min-h-0 flex-1 overflow-auto">{children}</CardContent>}
|
{!ausgeblendet && <CardContent className="min-h-0 flex-1 overflow-auto">{inhalt}</CardContent>}
|
||||||
|
{children}
|
||||||
</Card>
|
</Card>
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user