import {useOverlayState} from "@heroui/react";const state = useOverlayState({ defaultOpen: false, onOpenChange: (isOpen) => console.log(isOpen),});state.isOpen; // Current statestate.open(); // Open modalstate.close(); // Close modalstate.toggle(); // Toggle statestate.setOpen(); // Set state directly
Controls whether the modal can be dismissed by clicking the overlay backdrop. Defaults to true. Set to false to require explicit close action.
isKeyboardDismissDisabled
Controls whether the ESC key can dismiss the modal. When set to true, the ESC key will be disabled and users must use explicit close actions.
Using slot="close"
The simplest way to close a modal. Add slot="close" to any Button component within the modal. When clicked, it will automatically close the modal.
Using Dialog render props
Access the close method from the Dialog's render props. This gives you full control over when and how to close the modal, allowing you to add custom logic before closing.
With React.useState()
Control the modal using React's useState hook for simple state management. Perfect for basic use cases.
Status: closed
With useOverlayState()
Use the useOverlayState hook for a cleaner API with convenient methods like open(), close(), and toggle().
Status: closed
Settings
Manage your preferences
Render modals inside a custom container instead of document.body
Apply transform: translateZ(0) to the container to create a new stacking context.
"use client";import {Rocket} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";
"use client";import {CircleInfo} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";
"use client";import {CircleCheck, CircleInfo} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";
"use client";import {Button, Modal, Radio, RadioGroup} from "@heroui/react";import {useState} from "react";
"use client";import {CircleCheck} from "@gravity-ui/icons";import {Button, Modal, useOverlayState} from "@heroui/react";import React from "react";
"use client";import {Envelope} from "@gravity-ui/icons";import {Button, Input, Label, Modal, Surface, TextField} from "@heroui/react";
"use client";import {Gear} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";
"use client";import {ArrowUpFromLine, Sparkles} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";import React from "react";
"use client";import {Button, Modal} from "@heroui/react";import {useCallback, useRef, useState} from "react";
"use client";import {Rocket} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";
"use client";import {Rocket} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";
"use client";import {Rocket} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";
"use client";import {Sparkles} from "@gravity-ui/icons";import {Button, Modal} from "@heroui/react";