UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 2.24 kB
{"version":3,"file":"use-modal.cjs","names":["useLockScroll"],"sources":["../../../src/components/ModalBase/use-modal.ts"],"sourcesContent":["import { useState } from 'react';\nimport { useFocusReturn, useId, useWindowEvent } from '@mantine/hooks';\nimport { TransitionOverride } from '../Transition';\nimport { useLockScroll } from './use-lock-scroll';\n\ninterface UseModalInput {\n opened: boolean;\n onClose: () => void;\n id: string | undefined;\n transitionProps: TransitionOverride | undefined;\n trapFocus: boolean | undefined;\n closeOnEscape: boolean | undefined;\n returnFocus: boolean | undefined;\n}\n\nexport function useModal({\n id,\n transitionProps,\n opened,\n trapFocus,\n closeOnEscape,\n onClose,\n returnFocus,\n}: UseModalInput) {\n const _id = useId(id);\n const [titleMounted, setTitleMounted] = useState(false);\n const [bodyMounted, setBodyMounted] = useState(false);\n\n const transitionDuration =\n typeof transitionProps?.duration === 'number' ? transitionProps?.duration : 200;\n\n const shouldLockScroll = useLockScroll({ opened, transitionDuration });\n\n useWindowEvent(\n 'keydown',\n (event) => {\n if (event.key === 'Escape' && closeOnEscape && !event.isComposing && opened) {\n const shouldTrigger =\n (event.target as HTMLElement)?.getAttribute('data-mantine-stop-propagation') !== 'true';\n shouldTrigger && onClose();\n }\n },\n { capture: true }\n );\n\n useFocusReturn({ opened, shouldReturnFocus: trapFocus && returnFocus });\n\n return {\n _id,\n titleMounted,\n bodyMounted,\n shouldLockScroll,\n setTitleMounted,\n setBodyMounted,\n };\n}\n"],"mappings":";;;;;;AAeA,SAAgB,SAAS,EACvB,IACA,iBACA,QACA,WACA,eACA,SACA,eACgB;CAChB,MAAM,OAAA,GAAA,eAAA,OAAY,GAAG;CACrB,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CAKrD,MAAM,mBAAmBA,wBAAAA,cAAc;EAAE;EAAQ,oBAF/C,OAAO,iBAAiB,aAAa,WAAW,iBAAiB,WAAW;EAET,CAAC;AAEtE,EAAA,GAAA,eAAA,gBACE,YACC,UAAU;AACT,MAAI,MAAM,QAAQ,YAAY,iBAAiB,CAAC,MAAM,eAAe,OAEhE,OAAM,QAAwB,aAAa,gCAAgC,KAAK,UAClE,SAAS;IAG9B,EAAE,SAAS,MAAM,CAClB;AAED,EAAA,GAAA,eAAA,gBAAe;EAAE;EAAQ,mBAAmB,aAAa;EAAa,CAAC;AAEvE,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACD"}