UNPKG

flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

1 lines 7.09 kB
{"version":3,"file":"Floating.mjs","sources":["../../../../src/components/Floating/Floating.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Placement } from \"@floating-ui/core\";\nimport { autoUpdate, useFocus } from \"@floating-ui/react\";\nimport type { ComponentProps, FC, ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useBaseFLoating, useFloatingInteractions } from \"../../hooks/use-floating\";\nimport { getArrowPlacement } from \"./helpers\";\n\nexport interface FlowbiteFloatingTheme {\n arrow: FlowbiteFloatingArrowTheme;\n animation: string;\n base: string;\n content: string;\n hidden: string;\n style: {\n auto: string;\n dark: string;\n light: string;\n };\n target: string;\n}\n\nexport interface FlowbiteFloatingArrowTheme {\n base: string;\n placement: string;\n style: {\n dark: string;\n light: string;\n auto: string;\n };\n}\n\nexport type FloatingStyle = \"dark\" | \"light\" | \"auto\";\n\nexport interface FloatingProps extends Omit<ComponentProps<\"div\">, \"content\" | \"style\"> {\n animation?: false | `duration-${number}`;\n arrow?: boolean;\n content: ReactNode;\n placement?: \"auto\" | Placement;\n style?: FloatingStyle;\n theme: FlowbiteFloatingTheme;\n trigger?: \"hover\" | \"click\";\n minWidth?: number;\n}\n\n/**\n * @see https://floating-ui.com/docs/react-dom-interactions\n */\nexport const Floating: FC<FloatingProps> = ({\n animation = \"duration-300\",\n arrow = true,\n children,\n className,\n content,\n placement = \"top\",\n style = \"dark\",\n theme,\n trigger = \"hover\",\n minWidth,\n ...props\n}) => {\n const arrowRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n\n const floatingProperties = useBaseFLoating({\n open,\n placement,\n arrowRef,\n setOpen,\n });\n\n const {\n context,\n middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n refs,\n strategy,\n update,\n x,\n y,\n } = floatingProperties;\n\n const focus = useFocus(context);\n const { getFloatingProps, getReferenceProps } = useFloatingInteractions({\n context,\n role: \"tooltip\",\n trigger,\n interactions: [focus],\n });\n\n useEffect(() => {\n if (refs.reference.current && refs.floating.current && open) {\n return autoUpdate(refs.reference.current, refs.floating.current, update);\n }\n }, [open, refs.floating, refs.reference, update]);\n\n return (\n <>\n <div\n ref={refs.setReference}\n className={theme.target}\n data-testid=\"flowbite-tooltip-target\"\n {...getReferenceProps()}\n >\n {children}\n </div>\n <div\n ref={refs.setFloating}\n data-testid=\"flowbite-tooltip\"\n {...getFloatingProps({\n className: twMerge(\n theme.base,\n animation && `${theme.animation} ${animation}`,\n !open && theme.hidden,\n theme.style[style],\n className,\n ),\n style: {\n position: strategy,\n top: y ?? \" \",\n left: x ?? \" \",\n minWidth,\n },\n ...props,\n })}\n >\n <div className={theme.content}>{content}</div>\n {arrow && (\n <div\n className={twMerge(\n theme.arrow.base,\n style === \"dark\" && theme.arrow.style.dark,\n style === \"light\" && theme.arrow.style.light,\n style === \"auto\" && theme.arrow.style.auto,\n )}\n data-testid=\"flowbite-tooltip-arrow\"\n ref={arrowRef}\n style={{\n top: arrowY ?? \" \",\n left: arrowX ?? \" \",\n right: \" \",\n bottom: \" \",\n [getArrowPlacement({ placement: floatingProperties.placement })]: theme.arrow.placement,\n }}\n >\n &nbsp;\n </div>\n )}\n </div>\n </>\n );\n};\n"],"names":[],"mappings":"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"}