UNPKG

@veracity/vui

Version:

Veracity UI is a React component library crafted for use within Veracity applications and pages. Based on Styled Components and @xstyled.

33 lines (31 loc) 1.04 kB
import { useBodyScrollLock } from "../core/vuiProvider/useBodyScrollLock.js"; import { useEffect } from "react"; //#region src/modal/modalManager.ts /** State management for nested modals. */ var ModalManager = class { modals = []; add = (modal) => this.modals.push(modal); remove = (modal) => this.modals = this.modals.filter((m) => m !== modal); isTopModal = (modal) => { return this.modals[this.modals.length - 1] === modal; }; }; const manager = new ModalManager(); /** Refs of new modals will be automatically added/removed from the state when rendering. */ function useModalManager(ref, isOpen, disableScrollLock) { const { setIsScrollLocked } = useBodyScrollLock(); useEffect(() => { if (isOpen) { manager.add(ref); if (!disableScrollLock) setIsScrollLocked(true); } return () => { manager.remove(ref); if (!disableScrollLock) setIsScrollLocked(false); }; }, [isOpen, ref]); } //#endregion export { manager, useModalManager }; globalThis.__vuiVersion__ = "5.3.1" //# sourceMappingURL=modalManager.js.map