@kobalte/core
Version:
Unstyled components and primitives for building accessible web apps and design systems with SolidJS.
34 lines (31 loc) • 714 B
JSX
import {
createControllableBooleanSignal
} from "./FN6EICGO.jsx";
// src/primitives/create-disclosure-state/create-disclosure-state.ts
import { access } from "@kobalte/utils";
function createDisclosureState(props = {}) {
const [isOpen, setIsOpen] = createControllableBooleanSignal({
value: () => access(props.open),
defaultValue: () => !!access(props.defaultOpen),
onChange: (value) => props.onOpenChange?.(value)
});
const open = () => {
setIsOpen(true);
};
const close = () => {
setIsOpen(false);
};
const toggle = () => {
isOpen() ? close() : open();
};
return {
isOpen,
setIsOpen,
open,
close,
toggle
};
}
export {
createDisclosureState
};