UNPKG

@navikt/ds-react

Version:

React components from the Norwegian Labour and Welfare Administration.

59 lines (58 loc) 1.64 kB
import React from "react"; import ModalBody from "./ModalBody"; import ModalFooter from "./ModalFooter"; import ModalHeader from "./ModalHeader"; import { ModalProps } from "./types"; interface ModalComponent extends React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<HTMLDialogElement>> { Header: typeof ModalHeader; Body: typeof ModalBody; Footer: typeof ModalFooter; } /** * A component that displays a modal dialog. * * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/modal) * @see 🏷️ {@link ModalProps} * * @example * State change with `useRef` * ```jsx * const ref = useRef<HTMLDialogElement>(null); * <Button onClick={() => ref.current?.showModal()}>Open modal</Button> * <Modal * ref={ref} * header={{ * label: "Optional label", * icon: <FileIcon aria-hidden />, * heading: "My heading", * }} * > * <Modal.Body> * <BodyLong>Hello world</BodyLong> * </Modal.Body> * <Modal.Footer> * <Button>Save</Button> * <Button type="button" variant="tertiary" onClick={() => ref.current?.close()}>Close</Button> * </Modal.Footer> * </Modal> * ``` * @example * State change with `useState` * ```jsx * const [open, setOpen] = useState(false); * <Modal * open={open} * onClose={() => setOpen(false)} * aria-labelledby="modal-heading" * > * <Modal.Header> * <Heading level="1" size="large" id="modal-heading">My heading</Heading> * </Modal.Header> * <Modal.Body> * <BodyLong>Hello world</BodyLong> * </Modal.Body> * </Modal> * ``` */ export declare const Modal: ModalComponent; export default Modal;