Zum Inhalt springen

Dialog

Dialogkomponenten werden verwendet, um Inhalte in einer Ebene über dem Hauptinhalt der App darzustellen, und sie erfordern häufig eine Benutzerreaktion. Sie sind eine entscheidende Komponente für modale Dialoge, Lightboxes, Benachrichtigungs-Popups und benutzerdefinierte Inhalts-Popups.

Um den Dialog zu verwenden, importieren Sie ihn aus Ihren Komponenten und übergeben Sie die erforderlichen Props einschließlich open, onOpenChange und den Inhalt des Dialogs als untergeordnete Elemente (children). Optional können Sie das Erscheinungsbild mit den Props className, fullWidth, fullHeight, fullScreen, scrollable, maxWidth, modal und onOpenAutoFocus anpassen.

Ein einfaches Beispiel für die Verwendung der Dialogkomponente, um ein einfaches Popup anzuzeigen.

import React, { useState } from "react";
import {
Button,
Dialog,
DialogActions,
DialogContent,
DialogTitle,
SearchIcon,
TextField,
Typography
} from "@firecms/ui";
export default function DialogBasicDemo() {
const [open, setOpen] = useState(false);
return (
<>
<Button onClick={() => setOpen(true)}>Open Dialog</Button>
<Dialog
open={open}
onOpenChange={setOpen}>
<DialogTitle variant={"h6"} className={"flex flex-row gap-4 items-center"}>
<SearchIcon size={"small"}/>
Search
</DialogTitle>
<DialogContent>
<Typography variant={"body2"}>
Search in your documents
</Typography>
<TextField size={"small"}/>
</DialogContent>
<DialogActions>
<Button
color={"primary"}
onClick={() => setOpen(false)} variant={"text"}>
Close
</Button>
<Button
color={"primary"}
onClick={() => setOpen(false)}
variant={"filled"}>
Got it!
</Button>
</DialogActions>
</Dialog>
</>
);
}

Ein Beispiel für einen Dialog, der den gesamten Bildschirm abdeckt.

import React, { useState } from "react";
import { Button, CenteredView, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@firecms/ui";
export default function DialogFullScreenDemo() {
const [open, setOpen] = useState(false);
return (
<>
<Button onClick={() => setOpen(true)}>Open Full-Screen Dialog</Button>
<Dialog
open={open}
onOpenChange={setOpen}
fullScreen={true}
>
<DialogContent
includeMargin={false}>
<CenteredView>
<DialogTitle variant={"h3"} includeMargin={false}>
Your dialog
</DialogTitle>
<Typography gutterBottom>
Full-Screen Dialog Content
</Typography>
<Button variant={"outlined"}>
Click me
</Button>
</CenteredView>
</DialogContent>
<DialogActions>
<Button
color={"primary"}
onClick={() => setOpen(false)}
variant={"filled"}>
Done
</Button>
</DialogActions>
</Dialog>
</>
);
}

Veranschaulicht, wie der Inhalt eines Dialogs scrollbar gemacht wird.

import React, { useState } from "react";
import { Button, Dialog, DialogActions } from "@firecms/ui";
export default function DialogScrollableDemo() {
const [open, setOpen] = useState(false);
return (
<>
<Button onClick={() => setOpen(true)}>Open Scrollable Dialog</Button>
<Dialog
open={open}
onOpenChange={setOpen}
scrollable={true}
>
<div className={"p-8 bg-red-100 text-red-800"} style={{ height: "200vh" }}>Scrollable Dialog Content
</div>
<DialogActions>
<Button
color={"primary"}
onClick={() => setOpen(false)}
variant={"filled"}>
Got it!
</Button>
</DialogActions>
</Dialog>
</>
);
}

Demonstriert die Verwendung der Eigenschaft maxWidth zur Anpassung der Breite des Dialogs.

import React, { useState } from "react";
import { Button, Dialog, DialogActions, DialogContent, DialogTitle } from "@firecms/ui";
export default function DialogCustomWidthDemo() {
const [open, setOpen] = useState(false);
return (
<>
<Button onClick={() => setOpen(true)}>Open Custom Width Dialog</Button>
<Dialog
open={open}
onOpenChange={setOpen}
maxWidth="5xl"
>
<DialogTitle variant={"h5"} gutterBottom>
Your dialog
</DialogTitle>
<DialogContent>
Dialog with Custom Width
</DialogContent>
<DialogActions>
<Button
color={"primary"}
onClick={() => setOpen(false)}
variant={"filled"}>
Close
</Button>
</DialogActions>
</Dialog>
</>
);
}