@entur/tooltip 5.1.4 → 5.1.5-RC.0
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.
- package/README.md +2 -2
- package/dist/styles.css +12 -12
- package/dist/tooltip.cjs.development.js +14 -22
- package/dist/tooltip.cjs.development.js.map +1 -1
- package/dist/tooltip.cjs.production.min.js +1 -1
- package/dist/tooltip.cjs.production.min.js.map +1 -1
- package/dist/tooltip.esm.js +14 -22
- package/dist/tooltip.esm.js.map +1 -1
- package/package.json +10 -7
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This package contains the tooltip component.
|
|
4
4
|
|
|
5
|
-
> 💡 Looking for the [documentation](https://design.entur.no/komponenter/feedback/
|
|
5
|
+
> 💡 Looking for the [documentation](https://design.entur.no/komponenter/feedback/tooltip)?
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
@@ -14,4 +14,4 @@ yarn add @entur/tooltip
|
|
|
14
14
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
|
-
Please refer to the [documentation](https://design.entur.no/komponenter/feedback/
|
|
17
|
+
Please refer to the [documentation](https://design.entur.no/komponenter/feedback/tooltip) for usage information.
|
package/dist/styles.css
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
/* DO NOT CHANGE!*/
|
|
2
2
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
3
|
+
/* DO NOT CHANGE!*/
|
|
4
|
+
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
5
|
+
.eds-button-group .eds-button {
|
|
6
|
+
margin-right: 0.75rem;
|
|
7
|
+
margin-bottom: 0.75rem;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.eds-button-group .eds-button:only-child {
|
|
11
|
+
margin: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
3
14
|
/* DO NOT CHANGE!*/
|
|
4
15
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
5
16
|
a.eds-button {
|
|
@@ -191,7 +202,7 @@ a.eds-button--size-large {
|
|
|
191
202
|
}
|
|
192
203
|
|
|
193
204
|
.eds-button--variant-tertiary:hover {
|
|
194
|
-
background-color:
|
|
205
|
+
background-color: rgb(206.4, 211.8, 237.6);
|
|
195
206
|
}
|
|
196
207
|
|
|
197
208
|
.eds-button--variant-tertiary:active {
|
|
@@ -246,17 +257,6 @@ a.eds-button--size-large {
|
|
|
246
257
|
border-color: transparent;
|
|
247
258
|
}
|
|
248
259
|
|
|
249
|
-
/* DO NOT CHANGE!*/
|
|
250
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
251
|
-
.eds-button-group .eds-button {
|
|
252
|
-
margin-right: 0.75rem;
|
|
253
|
-
margin-bottom: 0.75rem;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.eds-button-group .eds-button:only-child {
|
|
257
|
-
margin: 0;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
260
|
/* DO NOT CHANGE!*/
|
|
261
261
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
262
262
|
.eds-floating-button {
|
|
@@ -13,30 +13,22 @@ var reactDom = require('@floating-ui/react-dom');
|
|
|
13
13
|
var layout = require('@entur/layout');
|
|
14
14
|
|
|
15
15
|
function _extends() {
|
|
16
|
-
_extends = Object.assign ? Object.assign.bind() : function (
|
|
17
|
-
for (var
|
|
18
|
-
var
|
|
19
|
-
for (var
|
|
20
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
21
|
-
target[key] = source[key];
|
|
22
|
-
}
|
|
23
|
-
}
|
|
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]);
|
|
24
20
|
}
|
|
25
|
-
return
|
|
26
|
-
};
|
|
27
|
-
return _extends.apply(this, arguments);
|
|
21
|
+
return n;
|
|
22
|
+
}, _extends.apply(null, arguments);
|
|
28
23
|
}
|
|
29
|
-
function _objectWithoutPropertiesLoose(
|
|
30
|
-
if (
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
key = sourceKeys[i];
|
|
36
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
37
|
-
target[key] = source[key];
|
|
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 (e.includes(n)) continue;
|
|
29
|
+
t[n] = r[n];
|
|
38
30
|
}
|
|
39
|
-
return
|
|
31
|
+
return t;
|
|
40
32
|
}
|
|
41
33
|
|
|
42
34
|
function standardisePlacement(placement) {
|
|
@@ -198,7 +190,7 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
198
190
|
}, React.createElement(icons.CloseIcon, {
|
|
199
191
|
"aria-hidden": "true"
|
|
200
192
|
})), React.createElement("div", {
|
|
201
|
-
className: "eds-tooltip__arrow--" + (actualPlacement == null
|
|
193
|
+
className: "eds-tooltip__arrow--" + (actualPlacement == null || (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
|
|
202
194
|
ref: tooltipArrowRef,
|
|
203
195
|
style: {
|
|
204
196
|
left: (_middlewareData$arrow = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow.x,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.cjs.development.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","content","children","className","isOpen","onClickCloseButton","undefined","disableHoverListener","disableFocusListener","disableKeyboardListener","disableClickListner","showCloseButton","variant","hoverDelay","style","rest","_excluded","useState","showTooltip","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","isControlled","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","clearTimeout","current","setTimeout","enter","onMouseLeave","leave","React","referenceListenerProps","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","controlledState","showPopover","setControlledState","setShowPopover","useCustomState","controlled","useOnClickOutside","popoverTriggerProps","prev","popoverContentProps","event","elementReceivingFocus","relatedTarget","getAttribute","focusedElementIsPopover","elementContainsElement","focusedElementIsTrigger","popoverShouldClose","closeButtonProps","contextValue","PopoverContext","Provider","value","PopoverTrigger","usePopoverContext","child","Children","only","PopoverCloseButton","PopoverContent","forwardRef","Contrast","mergeRefs","createContext","context","useContext","Error","state","setState","internalState","setInternalState","parent","contains","warnAboutMissingStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip.cjs.development.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,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("classnames"),r=require("@floating-ui/react"),o=require("@entur/icons"),i=require("@entur/button"),l=require("@entur/tokens"),a=require("@floating-ui/react-dom"),s=require("@entur/layout");function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(null,arguments)}function c(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}function f(e){switch(e){case"top-left":return"top-start";case"top-right":return"top-end";case"bottom-left":return"bottom-start";case"bottom-right":return"bottom-end";default:return e}}var d=["placement","content","children","className","isOpen","onClickCloseButton","disableHoverListener","disableFocusListener","disableKeyboardListener","disableClickListner","showCloseButton","variant","hoverDelay","style"],p=["children"],v=t.forwardRef((function(r,o){var i=r.children,l=r.className,a=r.style,c=g(),f=c.floatingStyles,d=c.popoverContentProps;return t.createElement(s.Contrast,u({className:n(l,"eds-popover")},d,{style:u({},f,d.style,a),ref:e.mergeRefs(d.ref,o)}),i)})),m=t.createContext(void 0),g=function(){var e=t.useContext(m);if(null==e)throw Error("usePopoverContext must be used within <Popover/>");return e};function y(e,t){return!!e&&(e===t||e.contains(t))}e.warnAboutMissingStyles("tooltip"),exports.Popover=function(n){var r=n.children,o=n.placement,i=void 0===o?"bottom-start":o,s=function(e,n){var r=t.useState(!1),o=void 0!==e&&void 0!==n;return o?[e,n,o]:[r[0],r[1],o]}(n.showPopover,n.setShowPopover),c=s[0],d=s[1],p=s[2],v=a.useFloating({placement:f(i),middleware:[a.offset(l.space.extraSmall),a.flip(),a.shift({padding:l.space.extraSmall,limiter:a.limitShift({offset:8})})]}),g=v.refs,b=v.floatingStyles,h=v.elements,C=v.update;t.useEffect((function(){if(c&&h.reference&&h.floating)return a.autoUpdate(h.reference,h.floating,C)}),[c,h,C]),e.useOnClickOutside([g.floating,g.reference],(function(){return d(!1)}));var w=u({"aria-haspopup":"dialog","aria-expanded":c,ref:g.setReference,type:"button"},!p&&{onClick:function(){return d((function(e){return!e}))}}),P={role:"dialog","aria-modal":!1,"aria-hidden":!c,ref:g.setFloating,style:u({},!c&&{display:"none"}),onKeyDown:function(e){"Escape"===e.key&&d(!1)},onBlur:function(e){var t=e.relatedTarget;if(t&&"-1"!==t.getAttribute("tabindex")){var n=y(g.floating.current,t),r=y(g.reference.current,t);c&&!n&&!r&&d(!1)}}};return t.createElement(m.Provider,{value:{showPopover:c,floatingStyles:b,popoverTriggerProps:w,popoverContentProps:P,closeButtonProps:{onClick:function(){return d(!1)},type:"button"}}},r)},exports.PopoverCloseButton=function(e){var n=e.children,r=c(e,p),o=g();return t.cloneElement(n,u({},o.closeButtonProps,r))},exports.PopoverContent=v,exports.PopoverTrigger=function(e){var n=e.children,r=g().popoverTriggerProps,o=t.Children.only(n);return t.cloneElement(o,r)},exports.Tooltip=function(a){var s,p,v,m=a.placement,g=a.content,y=a.children,b=a.className,h=a.isOpen,C=a.onClickCloseButton,w=void 0===C?function(){}:C,P=a.disableHoverListener,E=void 0!==P&&P,x=a.disableFocusListener,k=void 0!==x&&x,S=a.disableKeyboardListener,L=void 0===S||S,T=a.disableClickListner,B=void 0===T||T,q=a.showCloseButton,O=void 0===q||q,R=a.variant,F=a.hoverDelay,N=a.style,D=c(a,d),M=t.useState(null!=h&&h),_=M[0],K=M[1],j=t.useRef(null),I=e.useRandomId("eds-tooltip"),A=t.useRef(),H=t.useRef(),U=void 0!==h,z=r.useFloating({placement:f(m),open:_,middleware:[r.offset(l.space.extraSmall),r.flip(),r.shift({padding:l.space.extraSmall,limiter:r.limitShift({offset:8})}),r.arrow({element:j,padding:l.borderRadiuses.medium})]}),G=z.refs,J=z.floatingStyles,Q=z.middlewareData,V=z.placement,W=z.isPositioned,X=z.update,Y=z.elements;t.useEffect((function(){if(_&&Y.reference&&Y.floating)return r.autoUpdate(Y.reference,Y.floating,X)}),[_,Y,X]);var Z=function(){var e;U||(clearTimeout(H.current),A.current=setTimeout((function(){K(!0)}),null!=(e=null==F?void 0:F.enter)?e:150))},$=function(){var e;U||(clearTimeout(A.current),H.current=setTimeout((function(){K(!1)}),null!=(e=null==F?void 0:F.leave)?e:300))};t.useEffect((function(){return function(){clearTimeout(A.current),clearTimeout(H.current)}}),[]),t.useEffect((function(){void 0!==h&&K(h)}),[h]);var ee=u({"aria-describedby":_?I:void 0},!k&&!U&&{onFocus:function(){return K(!0)}},!k&&!U&&{onBlur:function(){return K(!1)}},!E&&!U&&{onMouseEnter:Z},!E&&!U&&{onMouseLeave:$},!L&&!U&&{onKeyDown:function(e){"Escape"===e.key&&K(!1)," "!==e.key&&"Enter"!==e.key||(e.preventDefault(),K(!_))}},!B&&!U&&{onClick:function(){return K(!_)}}),te=(!U||W)&&_&&g?void 0:"none";return t.createElement(t.Fragment,null,t.cloneElement(y,u({ref:G.setReference},ee)),t.createElement("div",u({className:n(b,"eds-tooltip",{"eds-tooltip--negative":"error"===R||"negative"===R}),ref:G.setFloating,style:u({},J,{display:te},N),role:"tooltip",id:I,onMouseEnter:E?void 0:Z,onMouseLeave:E?void 0:$},D),g,h&&O&&t.createElement(i.IconButton,{className:"eds-tooltip__close-button",onClick:function(){K(!1),w()},type:"button","aria-label":"Lukk tooltip"},t.createElement(o.CloseIcon,{"aria-hidden":"true"})),t.createElement("div",{className:"eds-tooltip__arrow--"+(null==V||null==(s=V.split("-"))?void 0:s[0]),ref:j,style:{left:null==(p=Q.arrow)?void 0:p.x,top:null==(v=Q.arrow)?void 0:v.y}})))},exports.standardisePlacement=f;
|
|
2
2
|
//# sourceMappingURL=tooltip.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.cjs.production.min.js","sources":["../src/utils.ts","../src/Popover.tsx","../src/index.tsx","../src/Tooltip.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, {\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","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"],"names":["standardisePlacement","placement","PopoverContent","React","forwardRef","ref","children","className","style","_usePopoverContext3","usePopoverContext","floatingStyles","popoverContentProps","createElement","Contrast","_extends","classNames","mergeRefs","PopoverContext","createContext","undefined","context","useContext","Error","elementContainsElement","parent","child","contains","warnAboutMissingStyles","_ref","_ref$placement","_useCustomState","state","setState","_React$useState","useState","controlled","useCustomState","showPopover","setShowPopover","_useFloating","useFloating","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","refs","elements","update","useEffect","reference","floating","autoUpdate","useOnClickOutside","popoverTriggerProps","setReference","type","onClick","prev","role","setFloating","display","onKeyDown","event","key","onBlur","elementReceivingFocus","relatedTarget","getAttribute","focusedElementIsPopover","current","focusedElementIsTrigger","Provider","value","closeButtonProps","_ref3","rest","_objectWithoutPropertiesLoose","_excluded","_usePopoverContext2","cloneElement","_ref2","Children","only","_actualPlacement$spli","_middlewareData$arrow","_middlewareData$arrow2","content","isOpen","_ref$onClickCloseButt","onClickCloseButton","_ref$disableHoverList","disableHoverListener","_ref$disableFocusList","disableFocusListener","_ref$disableKeyboardL","disableKeyboardListener","_ref$disableClickList","disableClickListner","_ref$showCloseButton","showCloseButton","variant","hoverDelay","_useState","showTooltip","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","isControlled","open","arrow","element","borderRadiuses","medium","middlewareData","actualPlacement","isPositioned","onMouseEnter","_hoverDelay$enter","clearTimeout","setTimeout","enter","onMouseLeave","_hoverDelay$leave","leave","referenceListenerProps","onFocus","e","preventDefault","displayTooltipStyle","Fragment","id","IconButton","CloseIcon","split","left","x","top","y"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip.cjs.production.min.js","sources":["../src/utils.ts","../src/Popover.tsx","../src/index.tsx","../src/Tooltip.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, {\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","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"],"names":["standardisePlacement","placement","PopoverContent","React","forwardRef","_ref4","ref","children","className","style","_usePopoverContext3","usePopoverContext","floatingStyles","popoverContentProps","createElement","Contrast","_extends","classNames","mergeRefs","PopoverContext","createContext","undefined","context","useContext","Error","elementContainsElement","parent","child","contains","warnAboutMissingStyles","_ref","_ref$placement","_useCustomState","state","setState","_React$useState","useState","controlled","useCustomState","showPopover","setShowPopover","_useFloating","useFloating","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","refs","elements","update","useEffect","reference","floating","autoUpdate","useOnClickOutside","popoverTriggerProps","setReference","type","onClick","prev","role","setFloating","display","onKeyDown","event","key","onBlur","elementReceivingFocus","relatedTarget","getAttribute","focusedElementIsPopover","current","focusedElementIsTrigger","Provider","value","closeButtonProps","_ref3","rest","_objectWithoutPropertiesLoose","_excluded","_usePopoverContext2","cloneElement","_ref2","Children","only","_actualPlacement$spli","_middlewareData$arrow","_middlewareData$arrow2","content","isOpen","_ref$onClickCloseButt","onClickCloseButton","_ref$disableHoverList","disableHoverListener","_ref$disableFocusList","disableFocusListener","_ref$disableKeyboardL","disableKeyboardListener","_ref$disableClickList","disableClickListner","_ref$showCloseButton","showCloseButton","variant","hoverDelay","_useState","showTooltip","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","isControlled","open","arrow","element","borderRadiuses","medium","middlewareData","actualPlacement","isPositioned","onMouseEnter","_hoverDelay$enter","clearTimeout","setTimeout","enter","onMouseLeave","_hoverDelay$leave","leave","referenceListenerProps","onFocus","e","preventDefault","displayTooltipStyle","Fragment","id","IconButton","CloseIcon","split","left","x","top","y"],"mappings":"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"}
|
package/dist/tooltip.esm.js
CHANGED
|
@@ -9,30 +9,22 @@ import { useFloating as useFloating$1, offset as offset$1, flip as flip$1, shift
|
|
|
9
9
|
import { Contrast } from '@entur/layout';
|
|
10
10
|
|
|
11
11
|
function _extends() {
|
|
12
|
-
_extends = Object.assign ? Object.assign.bind() : function (
|
|
13
|
-
for (var
|
|
14
|
-
var
|
|
15
|
-
for (var
|
|
16
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
17
|
-
target[key] = source[key];
|
|
18
|
-
}
|
|
19
|
-
}
|
|
12
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
13
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
14
|
+
var t = arguments[e];
|
|
15
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
20
16
|
}
|
|
21
|
-
return
|
|
22
|
-
};
|
|
23
|
-
return _extends.apply(this, arguments);
|
|
17
|
+
return n;
|
|
18
|
+
}, _extends.apply(null, arguments);
|
|
24
19
|
}
|
|
25
|
-
function _objectWithoutPropertiesLoose(
|
|
26
|
-
if (
|
|
27
|
-
var
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
key = sourceKeys[i];
|
|
32
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
33
|
-
target[key] = source[key];
|
|
20
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
|
21
|
+
if (null == r) return {};
|
|
22
|
+
var t = {};
|
|
23
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
24
|
+
if (e.includes(n)) continue;
|
|
25
|
+
t[n] = r[n];
|
|
34
26
|
}
|
|
35
|
-
return
|
|
27
|
+
return t;
|
|
36
28
|
}
|
|
37
29
|
|
|
38
30
|
function standardisePlacement(placement) {
|
|
@@ -194,7 +186,7 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
194
186
|
}, React.createElement(CloseIcon, {
|
|
195
187
|
"aria-hidden": "true"
|
|
196
188
|
})), React.createElement("div", {
|
|
197
|
-
className: "eds-tooltip__arrow--" + (actualPlacement == null
|
|
189
|
+
className: "eds-tooltip__arrow--" + (actualPlacement == null || (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
|
|
198
190
|
ref: tooltipArrowRef,
|
|
199
191
|
style: {
|
|
200
192
|
left: (_middlewareData$arrow = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow.x,
|
package/dist/tooltip.esm.js.map
CHANGED
|
@@ -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","content","children","className","isOpen","onClickCloseButton","undefined","disableHoverListener","disableFocusListener","disableKeyboardListener","disableClickListner","showCloseButton","variant","hoverDelay","style","rest","_excluded","useState","showTooltip","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","isControlled","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","clearTimeout","current","setTimeout","enter","onMouseLeave","leave","React","referenceListenerProps","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","controlledState","showPopover","setControlledState","setShowPopover","useCustomState","controlled","useOnClickOutside","popoverTriggerProps","prev","popoverContentProps","event","elementReceivingFocus","relatedTarget","getAttribute","focusedElementIsPopover","elementContainsElement","focusedElementIsTrigger","popoverShouldClose","closeButtonProps","contextValue","PopoverContext","Provider","value","PopoverTrigger","usePopoverContext","child","Children","only","PopoverCloseButton","PopoverContent","forwardRef","Contrast","mergeRefs","createContext","context","useContext","Error","state","setState","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 { 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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur/tooltip",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.5-RC.0",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/tooltip.esm.js",
|
|
@@ -27,14 +27,17 @@
|
|
|
27
27
|
"react-dom": ">=16.8.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@entur/button": "^3.2.
|
|
31
|
-
"@entur/icons": "^7.5.0",
|
|
32
|
-
"@entur/layout": "^2.3.
|
|
33
|
-
"@entur/tokens": "^3.17.
|
|
34
|
-
"@entur/utils": "^0.12.
|
|
30
|
+
"@entur/button": "^3.2.37-RC.0",
|
|
31
|
+
"@entur/icons": "^7.5.1-RC.0",
|
|
32
|
+
"@entur/layout": "^2.3.21-RC.0",
|
|
33
|
+
"@entur/tokens": "^3.17.4-RC.0",
|
|
34
|
+
"@entur/utils": "^0.12.2-RC.0",
|
|
35
35
|
"@floating-ui/react": "^0.26.24",
|
|
36
36
|
"@floating-ui/react-dom": "^2.1.0",
|
|
37
37
|
"classnames": "^2.3.1"
|
|
38
38
|
},
|
|
39
|
-
"
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"dts-cli": "2.0.5"
|
|
41
|
+
},
|
|
42
|
+
"gitHead": "d7913682a41ade219cbd4dfc6e45060152c7fa0a"
|
|
40
43
|
}
|