@entur/tooltip 5.2.13-beta.8 → 5.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.esm.js","sources":["../src/utils.ts","../src/Tooltip.tsx","../src/Popover.tsx","../src/index.tsx"],"sourcesContent":["import { Placement as FloatingUIPlacement } from '@floating-ui/react-dom';\n\nexport type Placement =\n | 'top'\n | 'top-left'\n | 'top-start'\n | 'top-right'\n | 'top-end'\n | 'left'\n | 'right'\n | 'bottom-left'\n | 'bottom-start'\n | 'bottom'\n | 'bottom-right'\n | 'bottom-end';\n\nexport function standardisePlacement(placement: string): FloatingUIPlacement {\n switch (placement) {\n case 'top-left':\n return 'top-start';\n case 'top-right':\n return 'top-end';\n case 'bottom-left':\n return 'bottom-start';\n case 'bottom-right':\n return 'bottom-end';\n default:\n return placement as FloatingUIPlacement;\n }\n}\n","import React, { cloneElement, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n arrow,\n limitShift,\n} from '@floating-ui/react';\n\nimport { useRandomId } from '@entur/utils';\nimport { CloseIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\nimport { space, borderRadiuses } from '@entur/tokens';\n\nimport { Placement, standardisePlacement } from './utils';\n\nimport './Tooltip.scss';\n\ntype Modifier = {\n name: string;\n enabled?: boolean;\n requires?: Array<string>;\n requiresIfExists?: Array<string>;\n options?: Record<string, unknown>;\n data?: Record<string, unknown>;\n [key: string]: any;\n};\n\ntype ChildEventListner = {\n 'aria-describedby'?: string;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: () => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n onClick?: (e: React.MouseEvent) => void;\n};\n\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TooltipProps = {\n /** Plassering av tooltip-en */\n placement: Placement;\n /** Innholdet i tooltip-boksen */\n content: React.ReactNode;\n /** Elementet som skal ha tooltip-funksjonalitet */\n children: React.ReactElement;\n /** Om tooltip-en skal vises */\n isOpen?: boolean;\n /** Callback-funksjon for når brukeren trykker på lukk-tooltip-knappen\n * @default () => undefined;\n */\n onClickCloseButton?: () => void;\n /** Ekstra klassenavn for tooltip */\n className?: string;\n /** Åpner ikke tooltip ved hover-events\n * @default false\n */\n disableHoverListener?: boolean;\n /** Åpner ikke tooltip ved focus-events\n * @default false\n */\n disableFocusListener?: boolean;\n disableKeyboardListener?: boolean;\n disableClickListner?: boolean;\n /** Viser en lukkeknapp om man kontrollerer åpningen av Tooltip vha `isOpen`\n * @default true\n */\n showCloseButton?: boolean;\n /** Valideringsvariant for Tooltip */\n variant?: 'negative' | typeof error;\n /** For å kontrollere tiden i millisekunder det tar før tooltip-en\n * vises etter hover, og hvor lang tid det tar før den lukkes etter\n * hover-slutt.\n * @default { enter: 150, leave: 300 }\n */\n hoverDelay?: {\n enter?: number;\n leave?: number;\n };\n /** @deprecated Ikke lenger støttet. Meld fra på #talk-designsystem hvis du trenger støtte for\n * overskrivinger av plasseringen til Tooltip!\n */\n popperModifiers?: Modifier[];\n [key: string]: any;\n};\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n placement,\n content,\n children,\n className,\n isOpen,\n onClickCloseButton = () => undefined,\n disableHoverListener = false,\n disableFocusListener = false,\n disableKeyboardListener = true,\n disableClickListner = true,\n showCloseButton = true,\n variant,\n hoverDelay,\n style,\n ...rest\n}) => {\n const [showTooltip, setShowTooltip] = useState(isOpen ?? false);\n const tooltipArrowRef = useRef(null);\n const tooltipId = useRandomId('eds-tooltip');\n const hoverOpenTimer = useRef<ReturnType<typeof setTimeout>>();\n const hoverCloseTimer = useRef<ReturnType<typeof setTimeout>>();\n\n const isControlled = isOpen !== undefined;\n\n // calculations for floating-UI tooltip position\n const {\n refs,\n floatingStyles,\n middlewareData,\n placement: actualPlacement,\n isPositioned,\n update,\n elements,\n } = useFloating({\n placement: standardisePlacement(placement),\n open: showTooltip,\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall, limiter: limitShift({ offset: 8 }) }),\n arrow({\n element: tooltipArrowRef,\n padding: borderRadiuses.medium,\n }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding tooltip\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (showTooltip && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [showTooltip, elements, update]);\n\n const onMouseEnter = () => {\n if (isControlled) return;\n clearTimeout(hoverCloseTimer.current);\n hoverOpenTimer.current = setTimeout(() => {\n setShowTooltip(true);\n }, hoverDelay?.enter ?? 150);\n };\n\n const onMouseLeave = () => {\n if (isControlled) return;\n clearTimeout(hoverOpenTimer.current);\n hoverCloseTimer.current = setTimeout(() => {\n setShowTooltip(false);\n }, hoverDelay?.leave ?? 300);\n };\n\n React.useEffect(() => {\n return () => {\n clearTimeout(hoverOpenTimer.current);\n clearTimeout(hoverCloseTimer.current);\n };\n }, []);\n\n React.useEffect(() => {\n if (isOpen !== undefined) setShowTooltip(isOpen);\n }, [isOpen]);\n\n const referenceListenerProps: ChildEventListner = {\n 'aria-describedby': showTooltip ? tooltipId : undefined,\n // focusListner\n ...(!disableFocusListener &&\n !isControlled && { onFocus: () => setShowTooltip(true) }),\n ...(!disableFocusListener &&\n !isControlled && { onBlur: () => setShowTooltip(false) }),\n // hoverListner\n ...(!disableHoverListener && !isControlled && { onMouseEnter }),\n ...(!disableHoverListener && !isControlled && { onMouseLeave }),\n // keyboardListner\n ...(!disableKeyboardListener &&\n !isControlled && {\n onKeyDown: e => {\n if (e.key === 'Escape') setShowTooltip(false);\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n setShowTooltip(!showTooltip);\n }\n },\n }),\n // clickListner\n ...(!disableClickListner &&\n !isControlled && {\n onClick: () => setShowTooltip(!showTooltip),\n }),\n };\n\n const displayTooltipStyle =\n (!isControlled || isPositioned) && showTooltip && content\n ? undefined\n : 'none';\n\n return (\n <>\n {cloneElement(children, {\n ref: refs.setReference,\n ...referenceListenerProps,\n })}\n <div\n className={classNames(className, 'eds-tooltip', {\n 'eds-tooltip--negative': variant === error || variant === 'negative',\n })}\n ref={refs.setFloating}\n style={{\n ...floatingStyles,\n display: displayTooltipStyle,\n ...style,\n }}\n role=\"tooltip\"\n id={tooltipId}\n onMouseEnter={!disableHoverListener ? onMouseEnter : undefined}\n onMouseLeave={!disableHoverListener ? onMouseLeave : undefined}\n {...rest}\n >\n {content}\n {isOpen && showCloseButton && (\n <IconButton\n className=\"eds-tooltip__close-button\"\n onClick={() => {\n setShowTooltip(false);\n onClickCloseButton();\n }}\n type=\"button\"\n aria-label=\"Lukk tooltip\"\n >\n <CloseIcon aria-hidden=\"true\" />\n </IconButton>\n )}\n <div\n className={`eds-tooltip__arrow--${actualPlacement?.split('-')?.[0]}`}\n ref={tooltipArrowRef}\n style={{\n left: middlewareData.arrow?.x,\n top: middlewareData.arrow?.y,\n }}\n />\n </div>\n </>\n );\n};\n","import React, {\n cloneElement,\n createContext,\n MutableRefObject,\n useContext,\n useEffect,\n} from 'react';\n\nimport classNames from 'classnames';\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n limitShift,\n} from '@floating-ui/react-dom';\n\nimport { Contrast } from '@entur/layout';\nimport { mergeRefs, useOnClickOutside } from '@entur/utils';\nimport { space } from '@entur/tokens';\n\nimport { Placement, standardisePlacement } from './utils';\n\nimport './Popover.scss';\n\nexport type PopoverProps = {\n /** Innholdet i Popover */\n children: React.ReactNode;\n /** Plasseringen av Popover\n * @default \"bottom-start\"\n */\n placement?: Placement;\n /** Hvis du ønsker å styre state selv kan du sende inn state her */\n showPopover?: boolean;\n /** Hvis du ønsker å styre state selv kan du sende inn setState her */\n setShowPopover?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n placement = 'bottom-start',\n showPopover: controlledState,\n setShowPopover: setControlledState,\n}) => {\n const [showPopover, setShowPopover, controlled] = useCustomState(\n controlledState,\n setControlledState,\n );\n\n // calculations for floating-UI popover position\n const { refs, floatingStyles, elements, update } =\n useFloating<HTMLButtonElement>({\n placement: standardisePlacement(placement),\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({\n padding: space.extraSmall,\n limiter: limitShift({ offset: 8 }),\n }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding dropdownlist\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (showPopover && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [showPopover, elements, update]);\n\n useOnClickOutside([refs.floating, refs.reference], () =>\n setShowPopover(false),\n );\n\n const popoverTriggerProps = {\n 'aria-haspopup': 'dialog',\n 'aria-expanded': showPopover,\n ref: refs.setReference,\n type: 'button',\n ...(!controlled && {\n onClick: () => setShowPopover(prev => !prev),\n }),\n };\n\n const popoverContentProps = {\n role: 'dialog',\n 'aria-modal': false,\n 'aria-hidden': !showPopover,\n ref: refs.setFloating,\n style: { ...(!showPopover && { display: 'none' }) },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') setShowPopover(false);\n },\n onBlur: (event: React.FocusEvent) => {\n const elementReceivingFocus = event.relatedTarget as HTMLElement;\n // The check for 'tabindex=-1' is a special case for focus handling in Docz\n if (\n !elementReceivingFocus ||\n elementReceivingFocus.getAttribute('tabindex') === '-1'\n )\n return;\n const focusedElementIsPopover = elementContainsElement(\n refs.floating.current,\n elementReceivingFocus,\n );\n const focusedElementIsTrigger = elementContainsElement(\n refs.reference.current,\n elementReceivingFocus,\n );\n const popoverShouldClose =\n !focusedElementIsPopover && !focusedElementIsTrigger;\n if (showPopover && popoverShouldClose) setShowPopover(false);\n },\n };\n\n const closeButtonProps = {\n onClick: () => setShowPopover(false),\n type: 'button',\n };\n\n const contextValue: PopoverContextProps = {\n showPopover,\n floatingStyles,\n popoverTriggerProps,\n popoverContentProps,\n closeButtonProps,\n };\n\n return (\n <PopoverContext.Provider value={contextValue}>\n {children}\n </PopoverContext.Provider>\n );\n};\n\nexport type PopoverTriggerProps = {\n /** Knapp som skal brukes for å åpne Popover */\n children: React.ReactElement;\n};\n\nexport const PopoverTrigger: React.FC<PopoverTriggerProps> = ({ children }) => {\n const { popoverTriggerProps } = usePopoverContext();\n const child = React.Children.only(children) as React.ReactElement<any>;\n return cloneElement(child, popoverTriggerProps);\n};\n\nexport type PopoverCloseButtonProps = {\n /** En valgfri knapp som kan legges inn for å lukke Popover */\n children: React.ReactElement;\n};\n\nexport const PopoverCloseButton: React.FC<PopoverCloseButtonProps> = ({\n children,\n ...rest\n}) => {\n const { closeButtonProps } = usePopoverContext();\n return cloneElement(children, { ...closeButtonProps, ...rest });\n};\n\nexport type PopoverContentProps = {\n /**Innholdet til Popover */\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const PopoverContent = React.forwardRef<\n HTMLDivElement,\n PopoverContentProps\n>(({ children, className, style }, ref: React.Ref<HTMLDivElement>) => {\n const { floatingStyles, popoverContentProps } = usePopoverContext();\n return (\n <Contrast\n className={classNames(className, 'eds-popover')}\n {...popoverContentProps}\n style={{ ...floatingStyles, ...popoverContentProps.style, ...style }}\n // @ts-expect-error correct type for floating cannot be set via useFloating\n ref={mergeRefs(popoverContentProps.ref, ref)}\n >\n {children}\n </Contrast>\n );\n});\n\ntype PopoverContextProps = {\n showPopover: boolean;\n floatingStyles: React.CSSProperties;\n closeButtonProps: Record<string, unknown>;\n popoverContentProps: {\n role: string;\n 'aria-modal': boolean;\n 'aria-hidden': boolean;\n ref: MutableRefObject<HTMLElement> | ((node: HTMLElement | null) => void);\n style: React.CSSProperties;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onBlur: (event: React.FocusEvent) => void;\n };\n popoverTriggerProps: Record<string, unknown>;\n};\n\nconst PopoverContext = createContext<PopoverContextProps | undefined>(\n undefined,\n);\nconst usePopoverContext = () => {\n const context = useContext(PopoverContext);\n if (context == null) {\n throw Error('usePopoverContext must be used within <Popover/>');\n }\n return context;\n};\n\nconst useCustomState = (\n state?: boolean,\n setState?: React.Dispatch<React.SetStateAction<boolean>>,\n): [boolean, React.Dispatch<React.SetStateAction<boolean>>, boolean] => {\n const [internalState, setInternalState] = React.useState<boolean>(false);\n const controlled = state !== undefined && setState !== undefined;\n if (controlled) return [state, setState, controlled];\n return [internalState, setInternalState, controlled];\n};\n\nfunction elementContainsElement(\n parent: HTMLElement | null,\n child: HTMLElement,\n) {\n if (!parent) return false;\n return parent === child || parent.contains(child);\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('tooltip');\n\nexport * from './Tooltip';\nexport * from './Popover';\nexport { Placement, standardisePlacement } from './utils';\n"],"names":["standardisePlacement","placement","error","Tooltip","_ref","_actualPlacement$spli","_middlewareData$arrow","_middlewareData$arrow2","content","children","className","isOpen","_ref$onClickCloseButt","onClickCloseButton","undefined","_ref$disableHoverList","disableHoverListener","_ref$disableFocusList","disableFocusListener","_ref$disableKeyboardL","disableKeyboardListener","_ref$disableClickList","disableClickListner","_ref$showCloseButton","showCloseButton","variant","hoverDelay","style","rest","_objectWithoutPropertiesLoose","_excluded","_useState","useState","showTooltip","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","isControlled","_useFloating","useFloating","open","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","arrow","element","borderRadiuses","medium","refs","floatingStyles","middlewareData","actualPlacement","isPositioned","update","elements","useEffect","reference","floating","cleanup","autoUpdate","onMouseEnter","_hoverDelay$enter","clearTimeout","current","setTimeout","enter","onMouseLeave","_hoverDelay$leave","leave","React","referenceListenerProps","_extends","onFocus","onBlur","onKeyDown","e","key","preventDefault","onClick","displayTooltipStyle","createElement","Fragment","cloneElement","ref","setReference","classNames","setFloating","display","role","id","IconButton","type","CloseIcon","split","left","x","top","y","Popover","_ref$placement","controlledState","showPopover","setControlledState","setShowPopover","_useCustomState","useCustomState","controlled","useOnClickOutside","popoverTriggerProps","prev","popoverContentProps","event","elementReceivingFocus","relatedTarget","getAttribute","focusedElementIsPopover","elementContainsElement","focusedElementIsTrigger","popoverShouldClose","closeButtonProps","contextValue","PopoverContext","Provider","value","PopoverTrigger","_ref2","_usePopoverContext","usePopoverContext","child","Children","only","PopoverCloseButton","_ref3","_usePopoverContext2","PopoverContent","forwardRef","_ref4","_usePopoverContext3","Contrast","mergeRefs","createContext","context","useContext","Error","state","setState","_React$useState","internalState","setInternalState","parent","contains","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.esm.js","sources":["../src/utils.ts","../src/Tooltip.tsx","../src/Popover.tsx","../src/index.tsx"],"sourcesContent":["import { Placement as FloatingUIPlacement } from '@floating-ui/react-dom';\n\nexport type Placement =\n | 'top'\n | 'top-left'\n | 'top-start'\n | 'top-right'\n | 'top-end'\n | 'left'\n | 'right'\n | 'bottom-left'\n | 'bottom-start'\n | 'bottom'\n | 'bottom-right'\n | 'bottom-end';\n\nexport function standardisePlacement(placement: string): FloatingUIPlacement {\n switch (placement) {\n case 'top-left':\n return 'top-start';\n case 'top-right':\n return 'top-end';\n case 'bottom-left':\n return 'bottom-start';\n case 'bottom-right':\n return 'bottom-end';\n default:\n return placement as FloatingUIPlacement;\n }\n}\n","import React, { cloneElement, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n arrow,\n limitShift,\n} from '@floating-ui/react';\n\nimport { useRandomId } from '@entur/utils';\nimport { CloseIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\nimport { space, borderRadiuses } from '@entur/tokens';\n\nimport { Placement, standardisePlacement } from './utils';\n\nimport './Tooltip.scss';\n\ntype Modifier = {\n name: string;\n enabled?: boolean;\n requires?: Array<string>;\n requiresIfExists?: Array<string>;\n options?: Record<string, unknown>;\n data?: Record<string, unknown>;\n [key: string]: any;\n};\n\ntype ChildEventListner = {\n 'aria-describedby'?: string;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: () => void;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n onKeyUp?: (e: React.KeyboardEvent) => void;\n onClick?: (e: React.MouseEvent) => void;\n};\n\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TooltipProps = {\n /** Plassering av tooltip-en */\n placement: Placement;\n /** Innholdet i tooltip-boksen */\n content: React.ReactNode;\n /** Elementet som skal ha tooltip-funksjonalitet */\n children: React.ReactElement;\n /** Om tooltip-en skal vises */\n isOpen?: boolean;\n /** Callback-funksjon for når brukeren trykker på lukk-tooltip-knappen\n * @default () => undefined;\n */\n onClickCloseButton?: () => void;\n /** Ekstra klassenavn for tooltip */\n className?: string;\n /** Åpner ikke tooltip ved hover-events\n * @default false\n */\n disableHoverListener?: boolean;\n /** Åpner ikke tooltip ved focus-events\n * @default false\n */\n disableFocusListener?: boolean;\n disableKeyboardListener?: boolean;\n disableClickListner?: boolean;\n /** Viser en lukkeknapp om man kontrollerer åpningen av Tooltip vha `isOpen`\n * @default true\n */\n showCloseButton?: boolean;\n /** Valideringsvariant for Tooltip */\n variant?: 'negative' | typeof error;\n /** For å kontrollere tiden i millisekunder det tar før tooltip-en\n * vises etter hover, og hvor lang tid det tar før den lukkes etter\n * hover-slutt.\n * @default { enter: 150, leave: 300 }\n */\n hoverDelay?: {\n enter?: number;\n leave?: number;\n };\n /** @deprecated Ikke lenger støttet. Meld fra på #talk-designsystem hvis du trenger støtte for\n * overskrivinger av plasseringen til Tooltip!\n */\n popperModifiers?: Modifier[];\n [key: string]: any;\n};\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n placement,\n content,\n children,\n className,\n isOpen,\n onClickCloseButton = () => undefined,\n disableHoverListener = false,\n disableFocusListener = false,\n disableKeyboardListener = true,\n disableClickListner = true,\n showCloseButton = true,\n variant,\n hoverDelay,\n style,\n ...rest\n}) => {\n const [showTooltip, setShowTooltip] = useState(isOpen ?? false);\n const tooltipArrowRef = useRef(null);\n const tooltipId = useRandomId('eds-tooltip');\n const hoverOpenTimer = useRef<ReturnType<typeof setTimeout>>();\n const hoverCloseTimer = useRef<ReturnType<typeof setTimeout>>();\n\n const isControlled = isOpen !== undefined;\n\n // calculations for floating-UI tooltip position\n const {\n refs,\n floatingStyles,\n middlewareData,\n placement: actualPlacement,\n isPositioned,\n update,\n elements,\n } = useFloating({\n placement: standardisePlacement(placement),\n open: showTooltip,\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall, limiter: limitShift({ offset: 8 }) }),\n arrow({\n element: tooltipArrowRef,\n padding: borderRadiuses.medium,\n }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding tooltip\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (showTooltip && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [showTooltip, elements, update]);\n\n const onMouseEnter = () => {\n if (isControlled) return;\n clearTimeout(hoverCloseTimer.current);\n hoverOpenTimer.current = setTimeout(() => {\n setShowTooltip(true);\n }, hoverDelay?.enter ?? 150);\n };\n\n const onMouseLeave = () => {\n if (isControlled) return;\n clearTimeout(hoverOpenTimer.current);\n hoverCloseTimer.current = setTimeout(() => {\n setShowTooltip(false);\n }, hoverDelay?.leave ?? 300);\n };\n\n React.useEffect(() => {\n return () => {\n clearTimeout(hoverOpenTimer.current);\n clearTimeout(hoverCloseTimer.current);\n };\n }, []);\n\n React.useEffect(() => {\n if (isOpen !== undefined) setShowTooltip(isOpen);\n }, [isOpen]);\n\n const referenceListenerProps: ChildEventListner = {\n 'aria-describedby': showTooltip ? tooltipId : undefined,\n // focusListner\n ...(!disableFocusListener &&\n !isControlled && { onFocus: () => setShowTooltip(true) }),\n ...(!disableFocusListener &&\n !isControlled && { onBlur: () => setShowTooltip(false) }),\n // hoverListner\n ...(!disableHoverListener && !isControlled && { onMouseEnter }),\n ...(!disableHoverListener && !isControlled && { onMouseLeave }),\n // keyboardListner\n ...(!disableKeyboardListener &&\n !isControlled && {\n onKeyDown: e => {\n if (e.key === 'Escape') setShowTooltip(false);\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n setShowTooltip(!showTooltip);\n }\n },\n }),\n // clickListner\n ...(!disableClickListner &&\n !isControlled && {\n onClick: () => setShowTooltip(!showTooltip),\n }),\n };\n\n const displayTooltipStyle =\n (!isControlled || isPositioned) && showTooltip && content\n ? undefined\n : 'none';\n\n return (\n <>\n {cloneElement(children, {\n ref: refs.setReference,\n ...referenceListenerProps,\n })}\n <div\n className={classNames(className, 'eds-tooltip', {\n 'eds-tooltip--negative': variant === error || variant === 'negative',\n })}\n ref={refs.setFloating}\n style={{\n ...floatingStyles,\n display: displayTooltipStyle,\n ...style,\n }}\n role=\"tooltip\"\n id={tooltipId}\n onMouseEnter={!disableHoverListener ? onMouseEnter : undefined}\n onMouseLeave={!disableHoverListener ? onMouseLeave : undefined}\n {...rest}\n >\n {content}\n {isOpen && showCloseButton && (\n <IconButton\n className=\"eds-tooltip__close-button\"\n onClick={() => {\n setShowTooltip(false);\n onClickCloseButton();\n }}\n type=\"button\"\n aria-label=\"Lukk tooltip\"\n >\n <CloseIcon aria-hidden=\"true\" />\n </IconButton>\n )}\n <div\n className={`eds-tooltip__arrow--${actualPlacement?.split('-')?.[0]}`}\n ref={tooltipArrowRef}\n style={{\n left: middlewareData.arrow?.x,\n top: middlewareData.arrow?.y,\n }}\n />\n </div>\n </>\n );\n};\n","import React, {\n cloneElement,\n createContext,\n MutableRefObject,\n useContext,\n useEffect,\n} from 'react';\n\nimport classNames from 'classnames';\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n limitShift,\n} from '@floating-ui/react-dom';\n\nimport { Contrast } from '@entur/layout';\nimport { mergeRefs, useOnClickOutside } from '@entur/utils';\nimport { space } from '@entur/tokens';\n\nimport { Placement, standardisePlacement } from './utils';\n\nimport './Popover.scss';\n\nexport type PopoverProps = {\n /** Innholdet i Popover */\n children: React.ReactNode;\n /** Plasseringen av Popover\n * @default \"bottom-start\"\n */\n placement?: Placement;\n /** Hvis du ønsker å styre state selv kan du sende inn state her */\n showPopover?: boolean;\n /** Hvis du ønsker å styre state selv kan du sende inn setState her */\n setShowPopover?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n placement = 'bottom-start',\n showPopover: controlledState,\n setShowPopover: setControlledState,\n}) => {\n const [showPopover, setShowPopover, controlled] = useCustomState(\n controlledState,\n setControlledState,\n );\n\n // calculations for floating-UI popover position\n const { refs, floatingStyles, elements, update } =\n useFloating<HTMLButtonElement>({\n placement: standardisePlacement(placement),\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({\n padding: space.extraSmall,\n limiter: limitShift({ offset: 8 }),\n }),\n ],\n });\n\n // Since we use CSS instead of conditional rendering when hiding dropdownlist\n // we can't use the whileElementsMounted option and need to handle\n // cleanup ourselves. See https://floating-ui.com/docs/autoupdate\n useEffect(() => {\n if (showPopover && elements.reference && elements.floating) {\n const cleanup = autoUpdate(elements.reference, elements.floating, update);\n return cleanup;\n }\n }, [showPopover, elements, update]);\n\n useOnClickOutside([refs.floating, refs.reference], () =>\n setShowPopover(false),\n );\n\n const popoverTriggerProps = {\n 'aria-haspopup': 'dialog',\n 'aria-expanded': showPopover,\n ref: refs.setReference,\n type: 'button',\n ...(!controlled && {\n onClick: () => setShowPopover(prev => !prev),\n }),\n };\n\n const popoverContentProps = {\n role: 'dialog',\n 'aria-modal': false,\n 'aria-hidden': !showPopover,\n ref: refs.setFloating,\n style: { ...(!showPopover && { display: 'none' }) },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') setShowPopover(false);\n },\n onBlur: (event: React.FocusEvent) => {\n const elementReceivingFocus = event.relatedTarget as HTMLElement;\n // The check for 'tabindex=-1' is a special case for focus handling in Docz\n if (\n !elementReceivingFocus ||\n elementReceivingFocus.getAttribute('tabindex') === '-1'\n )\n return;\n const focusedElementIsPopover = elementContainsElement(\n refs.floating.current,\n elementReceivingFocus,\n );\n const focusedElementIsTrigger = elementContainsElement(\n refs.reference.current,\n elementReceivingFocus,\n );\n const popoverShouldClose =\n !focusedElementIsPopover && !focusedElementIsTrigger;\n if (showPopover && popoverShouldClose) setShowPopover(false);\n },\n };\n\n const closeButtonProps = {\n onClick: () => setShowPopover(false),\n type: 'button',\n };\n\n const contextValue: PopoverContextProps = {\n showPopover,\n floatingStyles,\n popoverTriggerProps,\n popoverContentProps,\n closeButtonProps,\n };\n\n return (\n <PopoverContext.Provider value={contextValue}>\n {children}\n </PopoverContext.Provider>\n );\n};\n\nexport type PopoverTriggerProps = {\n /** Knapp som skal brukes for å åpne Popover */\n children: React.ReactElement;\n};\n\nexport const PopoverTrigger: React.FC<PopoverTriggerProps> = ({ children }) => {\n const { popoverTriggerProps } = usePopoverContext();\n const child = React.Children.only(children) as React.ReactElement<any>;\n return cloneElement(child, popoverTriggerProps);\n};\n\nexport type PopoverCloseButtonProps = {\n /** En valgfri knapp som kan legges inn for å lukke Popover */\n children: React.ReactElement;\n};\n\nexport const PopoverCloseButton: React.FC<PopoverCloseButtonProps> = ({\n children,\n ...rest\n}) => {\n const { closeButtonProps } = usePopoverContext();\n return cloneElement(children, { ...closeButtonProps, ...rest });\n};\n\nexport type PopoverContentProps = {\n /**Innholdet til Popover */\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport const PopoverContent = React.forwardRef<\n HTMLDivElement,\n PopoverContentProps\n>(({ children, className, style }, ref: React.Ref<HTMLDivElement>) => {\n const { floatingStyles, popoverContentProps } = usePopoverContext();\n return (\n <Contrast\n className={classNames(className, 'eds-popover')}\n {...popoverContentProps}\n style={{ ...floatingStyles, ...popoverContentProps.style, ...style }}\n // @ts-expect-error correct type for floating cannot be set via useFloating\n ref={mergeRefs(popoverContentProps.ref, ref)}\n >\n {children}\n </Contrast>\n );\n});\n\ntype PopoverContextProps = {\n showPopover: boolean;\n floatingStyles: React.CSSProperties;\n closeButtonProps: Record<string, unknown>;\n popoverContentProps: {\n role: string;\n 'aria-modal': boolean;\n 'aria-hidden': boolean;\n ref: MutableRefObject<HTMLElement> | ((node: HTMLElement | null) => void);\n style: React.CSSProperties;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onBlur: (event: React.FocusEvent) => void;\n };\n popoverTriggerProps: Record<string, unknown>;\n};\n\nconst PopoverContext = createContext<PopoverContextProps | undefined>(\n undefined,\n);\nconst usePopoverContext = () => {\n const context = useContext(PopoverContext);\n if (context == null) {\n throw Error('usePopoverContext must be used within <Popover/>');\n }\n return context;\n};\n\nconst useCustomState = (\n state?: boolean,\n setState?: React.Dispatch<React.SetStateAction<boolean>>,\n): [boolean, React.Dispatch<React.SetStateAction<boolean>>, boolean] => {\n const [internalState, setInternalState] = React.useState<boolean>(false);\n const controlled = state !== undefined && setState !== undefined;\n if (controlled) return [state, setState, controlled];\n return [internalState, setInternalState, controlled];\n};\n\nfunction elementContainsElement(\n parent: HTMLElement | null,\n child: HTMLElement,\n) {\n if (!parent) return false;\n return parent === child || parent.contains(child);\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('tooltip');\n\nexport * from './Tooltip';\nexport * from './Popover';\nexport * from './utils';\n"],"names":["useFloating","offset","flip","shift","limitShift","autoUpdate"],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@entur/tooltip",
3
- "version": "5.2.13-beta.8",
3
+ "version": "5.2.13",
4
4
  "license": "EUPL-1.2",
5
- "main": "dist/index.js",
5
+ "main": "dist/tooltip.cjs.js",
6
6
  "module": "dist/tooltip.esm.js",
7
7
  "typings": "dist/index.d.ts",
8
8
  "files": [
@@ -17,27 +17,37 @@
17
17
  "access": "public"
18
18
  },
19
19
  "scripts": {
20
- "start": "dts watch --noClean",
21
- "build": "dts build",
22
- "test": "dts test",
23
- "lint": "dts lint src"
20
+ "start": "vite build --watch",
21
+ "build": "vite build",
22
+ "test": "jest",
23
+ "lint": "eslint src"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "react": ">=16.8.0",
27
27
  "react-dom": ">=16.8.0"
28
28
  },
29
29
  "dependencies": {
30
- "@entur/button": "^3.3.13-beta.8",
31
- "@entur/icons": "^8.0.0",
32
- "@entur/layout": "^3.1.9-beta.8",
33
- "@entur/tokens": "^3.19.1",
34
- "@entur/utils": "^0.12.3",
35
- "@floating-ui/react": "^0.26.24",
36
- "@floating-ui/react-dom": "^2.1.0",
37
- "classnames": "^2.3.1"
30
+ "@entur/button": "^3.3.13",
31
+ "@entur/icons": "^8.0.1",
32
+ "@entur/layout": "^3.1.9",
33
+ "@entur/tokens": "^3.19.2",
34
+ "@entur/utils": "^0.12.4",
35
+ "@floating-ui/react": "^0.26.28",
36
+ "@floating-ui/react-dom": "^2.1.6",
37
+ "classnames": "^2.5.1"
38
38
  },
39
39
  "devDependencies": {
40
- "dts-cli": "2.0.5"
40
+ "@testing-library/jest-dom": "^5.17.0",
41
+ "@testing-library/react": "^10.4.9",
42
+ "@testing-library/user-event": "14.6.1",
43
+ "@vitejs/plugin-react": "^5.0.1",
44
+ "eslint": "^7.32.0",
45
+ "jest": "^29.0.0",
46
+ "jest-environment-jsdom": "^29.0.0",
47
+ "ts-jest": "^29.0.0",
48
+ "typescript": "^5.9.2",
49
+ "vite": "^7.1.3",
50
+ "vite-plugin-dts": "^4.5.4"
41
51
  },
42
- "gitHead": "75f853e86839313d80d1ea5aa89fb133f42102de"
52
+ "gitHead": "268fb2f3387485206586a7c4c6f2a058f824f5d6"
43
53
  }
package/dist/Popover.d.ts DELETED
@@ -1,33 +0,0 @@
1
- import React from 'react';
2
- import { Placement } from './utils';
3
- import './Popover.scss';
4
- export type PopoverProps = {
5
- /** Innholdet i Popover */
6
- children: React.ReactNode;
7
- /** Plasseringen av Popover
8
- * @default "bottom-start"
9
- */
10
- placement?: Placement;
11
- /** Hvis du ønsker å styre state selv kan du sende inn state her */
12
- showPopover?: boolean;
13
- /** Hvis du ønsker å styre state selv kan du sende inn setState her */
14
- setShowPopover?: React.Dispatch<React.SetStateAction<boolean>>;
15
- };
16
- export declare const Popover: React.FC<PopoverProps>;
17
- export type PopoverTriggerProps = {
18
- /** Knapp som skal brukes for å åpne Popover */
19
- children: React.ReactElement;
20
- };
21
- export declare const PopoverTrigger: React.FC<PopoverTriggerProps>;
22
- export type PopoverCloseButtonProps = {
23
- /** En valgfri knapp som kan legges inn for å lukke Popover */
24
- children: React.ReactElement;
25
- };
26
- export declare const PopoverCloseButton: React.FC<PopoverCloseButtonProps>;
27
- export type PopoverContentProps = {
28
- /**Innholdet til Popover */
29
- children: React.ReactNode;
30
- className?: string;
31
- style?: React.CSSProperties;
32
- };
33
- export declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
package/dist/Tooltip.d.ts DELETED
@@ -1,62 +0,0 @@
1
- import React from 'react';
2
- import { Placement } from './utils';
3
- import './Tooltip.scss';
4
- type Modifier = {
5
- name: string;
6
- enabled?: boolean;
7
- requires?: Array<string>;
8
- requiresIfExists?: Array<string>;
9
- options?: Record<string, unknown>;
10
- data?: Record<string, unknown>;
11
- [key: string]: any;
12
- };
13
- /** @deprecated use variant="negative" instead */
14
- declare const error = "error";
15
- export type TooltipProps = {
16
- /** Plassering av tooltip-en */
17
- placement: Placement;
18
- /** Innholdet i tooltip-boksen */
19
- content: React.ReactNode;
20
- /** Elementet som skal ha tooltip-funksjonalitet */
21
- children: React.ReactElement;
22
- /** Om tooltip-en skal vises */
23
- isOpen?: boolean;
24
- /** Callback-funksjon for når brukeren trykker på lukk-tooltip-knappen
25
- * @default () => undefined;
26
- */
27
- onClickCloseButton?: () => void;
28
- /** Ekstra klassenavn for tooltip */
29
- className?: string;
30
- /** Åpner ikke tooltip ved hover-events
31
- * @default false
32
- */
33
- disableHoverListener?: boolean;
34
- /** Åpner ikke tooltip ved focus-events
35
- * @default false
36
- */
37
- disableFocusListener?: boolean;
38
- disableKeyboardListener?: boolean;
39
- disableClickListner?: boolean;
40
- /** Viser en lukkeknapp om man kontrollerer åpningen av Tooltip vha `isOpen`
41
- * @default true
42
- */
43
- showCloseButton?: boolean;
44
- /** Valideringsvariant for Tooltip */
45
- variant?: 'negative' | typeof error;
46
- /** For å kontrollere tiden i millisekunder det tar før tooltip-en
47
- * vises etter hover, og hvor lang tid det tar før den lukkes etter
48
- * hover-slutt.
49
- * @default { enter: 150, leave: 300 }
50
- */
51
- hoverDelay?: {
52
- enter?: number;
53
- leave?: number;
54
- };
55
- /** @deprecated Ikke lenger støttet. Meld fra på #talk-designsystem hvis du trenger støtte for
56
- * overskrivinger av plasseringen til Tooltip!
57
- */
58
- popperModifiers?: Modifier[];
59
- [key: string]: any;
60
- };
61
- export declare const Tooltip: React.FC<TooltipProps>;
62
- export {};
package/dist/index.js DELETED
@@ -1,8 +0,0 @@
1
-
2
- 'use strict'
3
-
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./tooltip.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./tooltip.cjs.development.js')
8
- }
@@ -1,347 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var utils = require('@entur/utils');
6
- var React = require('react');
7
- var classNames = require('classnames');
8
- var react = require('@floating-ui/react');
9
- var icons = require('@entur/icons');
10
- var button = require('@entur/button');
11
- var tokens = require('@entur/tokens');
12
- var reactDom = require('@floating-ui/react-dom');
13
- var layout = require('@entur/layout');
14
-
15
- function _extends() {
16
- return _extends = Object.assign ? Object.assign.bind() : function (n) {
17
- for (var e = 1; e < arguments.length; e++) {
18
- var t = arguments[e];
19
- for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
20
- }
21
- return n;
22
- }, _extends.apply(null, arguments);
23
- }
24
- function _objectWithoutPropertiesLoose(r, e) {
25
- if (null == r) return {};
26
- var t = {};
27
- for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
28
- if (-1 !== e.indexOf(n)) continue;
29
- t[n] = r[n];
30
- }
31
- return t;
32
- }
33
-
34
- function standardisePlacement(placement) {
35
- switch (placement) {
36
- case 'top-left':
37
- return 'top-start';
38
- case 'top-right':
39
- return 'top-end';
40
- case 'bottom-left':
41
- return 'bottom-start';
42
- case 'bottom-right':
43
- return 'bottom-end';
44
- default:
45
- return placement;
46
- }
47
- }
48
-
49
- var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "onClickCloseButton", "disableHoverListener", "disableFocusListener", "disableKeyboardListener", "disableClickListner", "showCloseButton", "variant", "hoverDelay", "style"];
50
- /** @deprecated use variant="negative" instead */
51
- var error = 'error';
52
- var Tooltip = function Tooltip(_ref) {
53
- var _actualPlacement$spli, _middlewareData$arrow, _middlewareData$arrow2;
54
- var placement = _ref.placement,
55
- content = _ref.content,
56
- children = _ref.children,
57
- className = _ref.className,
58
- isOpen = _ref.isOpen,
59
- _ref$onClickCloseButt = _ref.onClickCloseButton,
60
- onClickCloseButton = _ref$onClickCloseButt === void 0 ? function () {
61
- return undefined;
62
- } : _ref$onClickCloseButt,
63
- _ref$disableHoverList = _ref.disableHoverListener,
64
- disableHoverListener = _ref$disableHoverList === void 0 ? false : _ref$disableHoverList,
65
- _ref$disableFocusList = _ref.disableFocusListener,
66
- disableFocusListener = _ref$disableFocusList === void 0 ? false : _ref$disableFocusList,
67
- _ref$disableKeyboardL = _ref.disableKeyboardListener,
68
- disableKeyboardListener = _ref$disableKeyboardL === void 0 ? true : _ref$disableKeyboardL,
69
- _ref$disableClickList = _ref.disableClickListner,
70
- disableClickListner = _ref$disableClickList === void 0 ? true : _ref$disableClickList,
71
- _ref$showCloseButton = _ref.showCloseButton,
72
- showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
73
- variant = _ref.variant,
74
- hoverDelay = _ref.hoverDelay,
75
- style = _ref.style,
76
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
77
- var _useState = React.useState(isOpen != null ? isOpen : false),
78
- showTooltip = _useState[0],
79
- setShowTooltip = _useState[1];
80
- var tooltipArrowRef = React.useRef(null);
81
- var tooltipId = utils.useRandomId('eds-tooltip');
82
- var hoverOpenTimer = React.useRef();
83
- var hoverCloseTimer = React.useRef();
84
- var isControlled = isOpen !== undefined;
85
- // calculations for floating-UI tooltip position
86
- var _useFloating = react.useFloating({
87
- placement: standardisePlacement(placement),
88
- open: showTooltip,
89
- middleware: [react.offset(tokens.space.extraSmall), react.flip(), react.shift({
90
- padding: tokens.space.extraSmall,
91
- limiter: react.limitShift({
92
- offset: 8
93
- })
94
- }), react.arrow({
95
- element: tooltipArrowRef,
96
- padding: tokens.borderRadiuses.medium
97
- })]
98
- }),
99
- refs = _useFloating.refs,
100
- floatingStyles = _useFloating.floatingStyles,
101
- middlewareData = _useFloating.middlewareData,
102
- actualPlacement = _useFloating.placement,
103
- isPositioned = _useFloating.isPositioned,
104
- update = _useFloating.update,
105
- elements = _useFloating.elements;
106
- // Since we use CSS instead of conditional rendering when hiding tooltip
107
- // we can't use the whileElementsMounted option and need to handle
108
- // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
109
- React.useEffect(function () {
110
- if (showTooltip && elements.reference && elements.floating) {
111
- var cleanup = react.autoUpdate(elements.reference, elements.floating, update);
112
- return cleanup;
113
- }
114
- }, [showTooltip, elements, update]);
115
- var onMouseEnter = function onMouseEnter() {
116
- var _hoverDelay$enter;
117
- if (isControlled) return;
118
- clearTimeout(hoverCloseTimer.current);
119
- hoverOpenTimer.current = setTimeout(function () {
120
- setShowTooltip(true);
121
- }, (_hoverDelay$enter = hoverDelay == null ? void 0 : hoverDelay.enter) != null ? _hoverDelay$enter : 150);
122
- };
123
- var onMouseLeave = function onMouseLeave() {
124
- var _hoverDelay$leave;
125
- if (isControlled) return;
126
- clearTimeout(hoverOpenTimer.current);
127
- hoverCloseTimer.current = setTimeout(function () {
128
- setShowTooltip(false);
129
- }, (_hoverDelay$leave = hoverDelay == null ? void 0 : hoverDelay.leave) != null ? _hoverDelay$leave : 300);
130
- };
131
- React.useEffect(function () {
132
- return function () {
133
- clearTimeout(hoverOpenTimer.current);
134
- clearTimeout(hoverCloseTimer.current);
135
- };
136
- }, []);
137
- React.useEffect(function () {
138
- if (isOpen !== undefined) setShowTooltip(isOpen);
139
- }, [isOpen]);
140
- var referenceListenerProps = _extends({
141
- 'aria-describedby': showTooltip ? tooltipId : undefined
142
- }, !disableFocusListener && !isControlled && {
143
- onFocus: function onFocus() {
144
- return setShowTooltip(true);
145
- }
146
- }, !disableFocusListener && !isControlled && {
147
- onBlur: function onBlur() {
148
- return setShowTooltip(false);
149
- }
150
- }, !disableHoverListener && !isControlled && {
151
- onMouseEnter: onMouseEnter
152
- }, !disableHoverListener && !isControlled && {
153
- onMouseLeave: onMouseLeave
154
- }, !disableKeyboardListener && !isControlled && {
155
- onKeyDown: function onKeyDown(e) {
156
- if (e.key === 'Escape') setShowTooltip(false);
157
- if (e.key === ' ' || e.key === 'Enter') {
158
- e.preventDefault();
159
- setShowTooltip(!showTooltip);
160
- }
161
- }
162
- }, !disableClickListner && !isControlled && {
163
- onClick: function onClick() {
164
- return setShowTooltip(!showTooltip);
165
- }
166
- });
167
- var displayTooltipStyle = (!isControlled || isPositioned) && showTooltip && content ? undefined : 'none';
168
- return React.createElement(React.Fragment, null, React.cloneElement(children, _extends({
169
- ref: refs.setReference
170
- }, referenceListenerProps)), React.createElement("div", _extends({
171
- className: classNames(className, 'eds-tooltip', {
172
- 'eds-tooltip--negative': variant === error || variant === 'negative'
173
- }),
174
- ref: refs.setFloating,
175
- style: _extends({}, floatingStyles, {
176
- display: displayTooltipStyle
177
- }, style),
178
- role: "tooltip",
179
- id: tooltipId,
180
- onMouseEnter: !disableHoverListener ? onMouseEnter : undefined,
181
- onMouseLeave: !disableHoverListener ? onMouseLeave : undefined
182
- }, rest), content, isOpen && showCloseButton && React.createElement(button.IconButton, {
183
- className: "eds-tooltip__close-button",
184
- onClick: function onClick() {
185
- setShowTooltip(false);
186
- onClickCloseButton();
187
- },
188
- type: "button",
189
- "aria-label": "Lukk tooltip"
190
- }, React.createElement(icons.CloseIcon, {
191
- "aria-hidden": "true"
192
- })), React.createElement("div", {
193
- className: "eds-tooltip__arrow--" + (actualPlacement == null || (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
194
- ref: tooltipArrowRef,
195
- style: {
196
- left: (_middlewareData$arrow = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow.x,
197
- top: (_middlewareData$arrow2 = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow2.y
198
- }
199
- })));
200
- };
201
-
202
- var _excluded = ["children"];
203
- var Popover = function Popover(_ref) {
204
- var children = _ref.children,
205
- _ref$placement = _ref.placement,
206
- placement = _ref$placement === void 0 ? 'bottom-start' : _ref$placement,
207
- controlledState = _ref.showPopover,
208
- setControlledState = _ref.setShowPopover;
209
- var _useCustomState = useCustomState(controlledState, setControlledState),
210
- showPopover = _useCustomState[0],
211
- setShowPopover = _useCustomState[1],
212
- controlled = _useCustomState[2];
213
- // calculations for floating-UI popover position
214
- var _useFloating = reactDom.useFloating({
215
- placement: standardisePlacement(placement),
216
- middleware: [reactDom.offset(tokens.space.extraSmall), reactDom.flip(), reactDom.shift({
217
- padding: tokens.space.extraSmall,
218
- limiter: reactDom.limitShift({
219
- offset: 8
220
- })
221
- })]
222
- }),
223
- refs = _useFloating.refs,
224
- floatingStyles = _useFloating.floatingStyles,
225
- elements = _useFloating.elements,
226
- update = _useFloating.update;
227
- // Since we use CSS instead of conditional rendering when hiding dropdownlist
228
- // we can't use the whileElementsMounted option and need to handle
229
- // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
230
- React.useEffect(function () {
231
- if (showPopover && elements.reference && elements.floating) {
232
- var cleanup = reactDom.autoUpdate(elements.reference, elements.floating, update);
233
- return cleanup;
234
- }
235
- }, [showPopover, elements, update]);
236
- utils.useOnClickOutside([refs.floating, refs.reference], function () {
237
- return setShowPopover(false);
238
- });
239
- var popoverTriggerProps = _extends({
240
- 'aria-haspopup': 'dialog',
241
- 'aria-expanded': showPopover,
242
- ref: refs.setReference,
243
- type: 'button'
244
- }, !controlled && {
245
- onClick: function onClick() {
246
- return setShowPopover(function (prev) {
247
- return !prev;
248
- });
249
- }
250
- });
251
- var popoverContentProps = {
252
- role: 'dialog',
253
- 'aria-modal': false,
254
- 'aria-hidden': !showPopover,
255
- ref: refs.setFloating,
256
- style: _extends({}, !showPopover && {
257
- display: 'none'
258
- }),
259
- onKeyDown: function onKeyDown(event) {
260
- if (event.key === 'Escape') setShowPopover(false);
261
- },
262
- onBlur: function onBlur(event) {
263
- var elementReceivingFocus = event.relatedTarget;
264
- // The check for 'tabindex=-1' is a special case for focus handling in Docz
265
- if (!elementReceivingFocus || elementReceivingFocus.getAttribute('tabindex') === '-1') return;
266
- var focusedElementIsPopover = elementContainsElement(refs.floating.current, elementReceivingFocus);
267
- var focusedElementIsTrigger = elementContainsElement(refs.reference.current, elementReceivingFocus);
268
- var popoverShouldClose = !focusedElementIsPopover && !focusedElementIsTrigger;
269
- if (showPopover && popoverShouldClose) setShowPopover(false);
270
- }
271
- };
272
- var closeButtonProps = {
273
- onClick: function onClick() {
274
- return setShowPopover(false);
275
- },
276
- type: 'button'
277
- };
278
- var contextValue = {
279
- showPopover: showPopover,
280
- floatingStyles: floatingStyles,
281
- popoverTriggerProps: popoverTriggerProps,
282
- popoverContentProps: popoverContentProps,
283
- closeButtonProps: closeButtonProps
284
- };
285
- return React.createElement(PopoverContext.Provider, {
286
- value: contextValue
287
- }, children);
288
- };
289
- var PopoverTrigger = function PopoverTrigger(_ref2) {
290
- var children = _ref2.children;
291
- var _usePopoverContext = usePopoverContext(),
292
- popoverTriggerProps = _usePopoverContext.popoverTriggerProps;
293
- var child = React.Children.only(children);
294
- return React.cloneElement(child, popoverTriggerProps);
295
- };
296
- var PopoverCloseButton = function PopoverCloseButton(_ref3) {
297
- var children = _ref3.children,
298
- rest = _objectWithoutPropertiesLoose(_ref3, _excluded);
299
- var _usePopoverContext2 = usePopoverContext(),
300
- closeButtonProps = _usePopoverContext2.closeButtonProps;
301
- return React.cloneElement(children, _extends({}, closeButtonProps, rest));
302
- };
303
- var PopoverContent = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
304
- var children = _ref4.children,
305
- className = _ref4.className,
306
- style = _ref4.style;
307
- var _usePopoverContext3 = usePopoverContext(),
308
- floatingStyles = _usePopoverContext3.floatingStyles,
309
- popoverContentProps = _usePopoverContext3.popoverContentProps;
310
- return React.createElement(layout.Contrast, _extends({
311
- className: classNames(className, 'eds-popover')
312
- }, popoverContentProps, {
313
- style: _extends({}, floatingStyles, popoverContentProps.style, style),
314
- // @ts-expect-error correct type for floating cannot be set via useFloating
315
- ref: utils.mergeRefs(popoverContentProps.ref, ref)
316
- }), children);
317
- });
318
- var PopoverContext = /*#__PURE__*/React.createContext(undefined);
319
- var usePopoverContext = function usePopoverContext() {
320
- var context = React.useContext(PopoverContext);
321
- if (context == null) {
322
- throw Error('usePopoverContext must be used within <Popover/>');
323
- }
324
- return context;
325
- };
326
- var useCustomState = function useCustomState(state, setState) {
327
- var _React$useState = React.useState(false),
328
- internalState = _React$useState[0],
329
- setInternalState = _React$useState[1];
330
- var controlled = state !== undefined && setState !== undefined;
331
- if (controlled) return [state, setState, controlled];
332
- return [internalState, setInternalState, controlled];
333
- };
334
- function elementContainsElement(parent, child) {
335
- if (!parent) return false;
336
- return parent === child || parent.contains(child);
337
- }
338
-
339
- utils.warnAboutMissingStyles('tooltip');
340
-
341
- exports.Popover = Popover;
342
- exports.PopoverCloseButton = PopoverCloseButton;
343
- exports.PopoverContent = PopoverContent;
344
- exports.PopoverTrigger = PopoverTrigger;
345
- exports.Tooltip = Tooltip;
346
- exports.standardisePlacement = standardisePlacement;
347
- //# sourceMappingURL=tooltip.cjs.development.js.map