@gravity-ui/uikit
Version:
Gravity UI base styling and components
22 lines (21 loc) • 791 B
JavaScript
import * as React from 'react';
import { useControlledState } from "../useControlledState/useControlledState.js";
export const useOpenState = (props) => {
const { onOpenChange, onClose } = props;
const handleOpenChange = React.useCallback((newOpen) => {
onOpenChange?.(newOpen);
if (newOpen === false && onClose) {
onClose();
}
}, [onOpenChange, onClose]);
const [open, setOpenState] = useControlledState(props.open, props.defaultOpen ?? false, handleOpenChange);
const toggleOpen = React.useCallback((val) => {
const newOpen = typeof val === 'boolean' ? val : !open;
setOpenState(newOpen);
}, [open, setOpenState]);
return {
open,
toggleOpen,
};
};
//# sourceMappingURL=useOpenState.js.map