Skip to content

useOpen

Creates a small open/closed state controller for UI components. It works well for modals, drawers, dropdown menus, popovers, and any component where the template should read from one boolean ref and call named actions.

The returned functions are intentionally simple and synchronous, which makes them easy to pass to event handlers or expose from a component.

Importing

ts
import { useOpen } from '@almighty-shogun/common'

Usage

vue
<template>
    <button @click="open">Open settings</button>

    <dialog :open="isOpen">
        <h2>Settings</h2>
        <button @click="close">Close</button>
    </dialog>
</template>

<script setup lang="ts">
import { useOpen } from '@almighty-shogun/common'

const { isOpen, open, close } = useOpen();
</script>

Returns

isOpen: Ref<boolean>
Current open state. Starts as false.

open(): void
Sets isOpen to true.

close(): void
Sets isOpen to false.

toggle(): void
Flips the current open state.

Type signature

ts
declare function useOpen(): UseOpen;

type UseOpen = {
    readonly isOpen: Ref<boolean>;

    open(): void;
    close(): void;
    toggle(): void;
};

All packages are released under the MIT License.