@transkripid/flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS - Transkrip.id fork
1 lines • 9.64 kB
Source Map (JSON)
{"version":3,"file":"Modal.mjs","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["'use client';\n\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useMergeRefs,\n useRole,\n} from '@floating-ui/react';\nimport type { MutableRefObject } from 'react';\nimport { forwardRef, useState, type ComponentPropsWithoutRef } from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { mergeDeep } from '../../helpers/merge-deep';\nimport { getTheme } from '../../theme-store';\nimport type { DeepPartial } from '../../types';\nimport type { FlowbiteBoolean, FlowbitePositions, FlowbiteSizes } from '../Flowbite';\nimport type { FlowbiteModalBodyTheme } from './ModalBody';\nimport { ModalBody } from './ModalBody';\nimport { ModalContext } from './ModalContext';\nimport type { FlowbiteModalFooterTheme } from './ModalFooter';\nimport { ModalFooter } from './ModalFooter';\nimport type { FlowbiteModalHeaderTheme } from './ModalHeader';\nimport { ModalHeader } from './ModalHeader';\n\nexport interface FlowbiteModalTheme {\n root: FlowbiteModalRootTheme;\n content: FlowbiteModalContentTheme;\n body: FlowbiteModalBodyTheme;\n header: FlowbiteModalHeaderTheme;\n footer: FlowbiteModalFooterTheme;\n}\n\nexport interface FlowbiteModalRootTheme {\n base: string;\n show: FlowbiteBoolean;\n sizes: ModalSizes;\n positions: ModalPositions;\n}\n\nexport interface FlowbiteModalContentTheme {\n base: string;\n inner: string;\n}\n\nexport interface ModalPositions extends FlowbitePositions {\n [key: string]: string;\n}\n\nexport interface ModalSizes extends Omit<FlowbiteSizes, 'xs'> {\n [key: string]: string;\n}\n\nexport interface ModalProps extends ComponentPropsWithoutRef<'div'> {\n onClose?: () => void;\n position?: keyof ModalPositions;\n popup?: boolean;\n root?: HTMLElement;\n show?: boolean;\n size?: keyof ModalSizes;\n dismissible?: boolean;\n theme?: DeepPartial<FlowbiteModalTheme>;\n initialFocus?: number | MutableRefObject<HTMLElement | null>;\n}\n\nconst ModalComponent = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n children,\n className,\n dismissible = false,\n onClose,\n popup,\n position = 'center',\n root,\n show,\n size = '2xl',\n theme: customTheme = {},\n initialFocus,\n ...props\n },\n theirRef,\n ) => {\n const [headerId, setHeaderId] = useState<string | undefined>(undefined);\n const theme = mergeDeep(getTheme().modal, customTheme);\n\n const { context } = useFloating({\n open: show,\n onOpenChange: () => onClose && onClose(),\n });\n\n const ref = useMergeRefs([context.refs.setFloating, theirRef]);\n\n const click = useClick(context);\n const dismiss = useDismiss(context, { outsidePressEvent: 'mousedown', enabled: dismissible });\n const role = useRole(context);\n\n const { getFloatingProps } = useInteractions([click, dismiss, role]);\n\n if (!show) {\n return null;\n }\n\n return (\n <ModalContext.Provider value={{ theme, popup, onClose, setHeaderId }}>\n <FloatingPortal root={root}>\n <FloatingOverlay\n lockScroll\n data-testid=\"modal-overlay\"\n className={twMerge(\n theme.root.base,\n theme.root.positions[position],\n show ? theme.root.show.on : theme.root.show.off,\n className,\n )}\n {...props}\n >\n <FloatingFocusManager context={context} initialFocus={initialFocus}>\n <div\n ref={ref}\n {...getFloatingProps(props)}\n aria-labelledby={headerId}\n className={twMerge(theme.content.base, theme.root.sizes[size])}\n >\n <div className={theme.content.inner}>{children}</div>\n </div>\n </FloatingFocusManager>\n </FloatingOverlay>\n </FloatingPortal>\n </ModalContext.Provider>\n );\n },\n);\n\nModalComponent.displayName = 'Modal';\nModalHeader.displayName = 'Modal.Header';\nModalBody.displayName = 'Modal.Body';\nModalFooter.displayName = 'Modal.Footer';\n\nexport const Modal = Object.assign(ModalComponent, {\n Header: ModalHeader,\n Body: ModalBody,\n Footer: ModalFooter,\n});\n"],"names":["ModalComponent","forwardRef","t0","theirRef","$","_c","children","className","initialFocus","onClose","popup","props","root","show","t1","t2","t3","t4","dismissible","position","size","theme","undefined","t5","customTheme","headerId","setHeaderId","useState","mergeDeep","getTheme","modal","t6","t7","open","onOpenChange","context","useFloating","t8","refs","setFloating","ref","useMergeRefs","click","useClick","t9","outsidePressEvent","enabled","dismiss","useDismiss","role","useRole","t10","getFloatingProps","useInteractions","T0","FloatingPortal","T1","FloatingOverlay","t11","t12","t13","twMerge","base","positions","on","off","T2","FloatingFocusManager","t14","t15","content","sizes","t16","inner","t17","jsx","t18","t19","t20","ModalContext","displayName","ModalHeader","ModalBody","ModalFooter","Modal","Object","assign","Header","Body","Footer"],"mappings":"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"}