--- title: useOverlay description: "A composable to programmatically control overlays." --- ## Usage Use the auto-imported `useOverlay` composable to programmatically control [Modal](/components/modal) and [Slideover](/components/slideover) components. ```vue ``` - The `useOverlay` composable is created using `createSharedComposable`, ensuring that the same overlay state is shared across your entire application. ::note In order to return a value from the overlay, the `overlay.open().instance.result` can be awaited. In order for this to work, however, the **overlay component must emit a `close` event**. See example below for details. :: ## API ### `create(component: T, options: OverlayOptions): OverlayInstance` Creates an overlay, and returns a factory instance - Parameters: - `component`: The overlay component - `options` The overlay options - `defaultOpen?: boolean` Opens the overlay immediately after being created `default: false` - `props?: ComponentProps`: An optional object of props to pass to the rendered component. - `destroyOnClose?: boolean` Removes the overlay from memory when closed `default: false` ### `open(id: symbol, props?: ComponentProps): OpenedOverlay` Opens the overlay using its `id` - Parameters: - `id`: The identifier of the overlay - `props`: An optional object of props to pass to the rendered component. ### `close(id: symbol, value?: any): void` Close an overlay using its `id` - Parameters: - `id`: The identifier of the overlay - `value`: A value to resolve the overlay promise with ### `patch(id: symbol, props: ComponentProps): void` Update an overlay using its `id` - Parameters: - `id`: The identifier of the overlay - `props`: An object of props to update on the rendered component. ### `unmount(id: symbol): void` Removes the overlay from the DOM using its `id` - Parameters: - `id`: The identifier of the overlay ### `isOpen(id: symbol): boolean` Checks if an overlay its open using its `id` - Parameters: - `id`: The identifier of the overlay ### `overlays: Overlay[]` In-memory list of overlays that were created ## Overlay Instance API ### `open(props?: ComponentProps): Promise>` Opens the overlay - Parameters: - `props`: An optional object of props to pass to the rendered component. ```vue ``` ### `close(value?: any): void` Close the overlay - Parameters: - `value`: A value to resolve the overlay promise with ### `patch(props: ComponentProps)` Updates the props of the overlay. - Parameters: - `props`: An object of props to update on the rendered component. ```vue ``` ## Example Here's a complete example of how to use the `useOverlay` composable: ```vue ``` In this example, we're using the `useOverlay` composable to control multiple modals and slideovers.