@kobalte/core
Version:
Unstyled components and primitives for building accessible web apps and design systems with SolidJS.
29 lines (26 loc) • 640 B
JavaScript
import { createControllableBooleanSignal } from './BLN63FDC.js';
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 };