Salta ai contenuti

Finestra di dialogo

I componenti Dialog vengono utilizzati per presentare contenuti in un livello sopra il contenuto principale dell’app, e spesso richiedono una risposta dall’utente. Sono un componente critico per dialoghi modali, lightbox, pop-up di notifica e popup di contenuto personalizzato.

Per usare il Dialog, importalo dai tuoi componenti e passa le prop necessarie tra cui open, onOpenChange e il contenuto del dialogo come figli. Opzionalmente, puoi personalizzarne l’aspetto con le prop className, fullWidth, fullHeight, fullScreen, scrollable, maxWidth, modal e onOpenAutoFocus.

Un esempio base di utilizzo del componente dialog per mostrare un semplice pop-up.

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>
</>
);
}

Un esempio di un dialogo che copre l’intero schermo.

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>
</>
);
}

Illustra come rendere il contenuto di un dialogo scorrevole.

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>
</>
);
}

Dimostra l’uso della prop maxWidth per personalizzare la larghezza del dialogo.

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>
</>
);
}