Skip to content

useDisclosure

A minimal composable for open/close state used by Dialog, Drawer, Dropdown, Accordion, and Tooltip. Avoids repetitive ref(false), open(), close(), toggle().

Basic Usage

vue
<template>
  <BvButton @click="open">Open Dialog</BvButton>
  <BvDialog v-model:open="isOpen" caption="Dialog Title">
    <p>Content goes here.</p>
    <template #footer>
      <BvButton @click="close">Close</BvButton>
    </template>
  </BvDialog>
</template>

<script setup>
import { BvButton, BvDialog } from "@baklavue/ui";
import { useDisclosure } from "@baklavue/composables";

const { isOpen, open, close, toggle } = useDisclosure(false);
</script>

With Toggle

vue
<template>
  <BvButton @click="toggle">Toggle Drawer</BvButton>
  <BvDrawer v-model:open="isOpen" caption="Drawer">
    <p>Drawer content.</p>
  </BvDrawer>
</template>

<script setup>
import { BvButton, BvDrawer } from "@baklavue/ui";
import { useDisclosure } from "@baklavue/composables";

const { isOpen, toggle } = useDisclosure(false);
</script>

API

Return Value

PropertyTypeDescription
isOpenRef<boolean>Reactive open state
open() => voidSets isOpen to true
close() => voidSets isOpen to false
toggle() => voidFlips isOpen

Parameters

typescript
useDisclosure(initialState?: boolean)
  • initialState — Initial open state. Default: false

TypeScript Support

typescript
import { useDisclosure } from "@baklavue/composables";

const { isOpen, open, close, toggle } = useDisclosure(true);