@entur/tooltip 5.1.4-alpha.0 → 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 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/tooltips)?
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/tooltips) for usage information.
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: #ced4ee;
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 {
@@ -541,74 +541,6 @@ a.eds-button--size-large {
541
541
  border-width: 0.0625rem;
542
542
  }
543
543
 
544
- /* DO NOT CHANGE!*/
545
- /* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
546
- .eds-icon-button {
547
- border: 0.125rem solid transparent;
548
- border-radius: 0.25rem;
549
- background: none;
550
- color: var(--components-button-iconbutton-standard-text);
551
- cursor: pointer;
552
- display: flex;
553
- justify-content: center;
554
- align-items: center;
555
- font-size: 1rem;
556
- padding: 0.5rem;
557
- }
558
-
559
- .eds-contrast .eds-icon-button {
560
- color: var(--components-button-iconbutton-contrast-text);
561
- }
562
-
563
- .eds-contrast .eds-icon-button > .eds-loading-dots .eds-loading-dots__dot {
564
- background-color: var(--components-button-iconbutton-contrast-icon);
565
- }
566
-
567
- .eds-icon-button--size-small {
568
- height: 1.5rem;
569
- width: 1.5rem;
570
- padding: 0;
571
- }
572
-
573
- .eds-icon-button:hover {
574
- background-color: var(--components-button-iconbutton-standard-hover);
575
- }
576
-
577
- .eds-contrast .eds-icon-button:hover {
578
- background-color: var(--components-button-iconbutton-contrast-hover);
579
- }
580
-
581
- .eds-icon-button:active {
582
- background: var(--components-button-iconbutton-standard-active);
583
- color: var(--components-button-iconbutton-standard-text-active);
584
- }
585
-
586
- .eds-contrast .eds-icon-button:active {
587
- background: var(--components-button-iconbutton-contrast-active);
588
- color: var(--components-button-iconbutton-contrast-text-active);
589
- }
590
-
591
- .eds-icon-button:focus {
592
- outline: 2px solid #181c56;
593
- outline-color: var(--basecolors-stroke-focus-standard);
594
- outline-offset: 0.125rem;
595
- }
596
-
597
- .eds-contrast .eds-icon-button:focus {
598
- outline-color: var(--basecolors-stroke-focus-contrast);
599
- }
600
-
601
- .eds-icon-button--disabled {
602
- opacity: 0.5;
603
- pointer-events: none;
604
- }
605
-
606
- .eds-icon-button--disabled__wrapper {
607
- cursor: not-allowed;
608
- width: -moz-fit-content;
609
- width: fit-content;
610
- }
611
-
612
544
  /* DO NOT CHANGE!*/
613
545
  /* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
614
546
  /* DO NOT CHANGE!*/
@@ -991,6 +923,74 @@ a.eds-button--size-large {
991
923
  --eds-button: 1;
992
924
  }
993
925
 
926
+ /* DO NOT CHANGE!*/
927
+ /* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
928
+ .eds-icon-button {
929
+ border: 0.125rem solid transparent;
930
+ border-radius: 0.25rem;
931
+ background: none;
932
+ color: var(--components-button-iconbutton-standard-text);
933
+ cursor: pointer;
934
+ display: flex;
935
+ justify-content: center;
936
+ align-items: center;
937
+ font-size: 1rem;
938
+ padding: 0.5rem;
939
+ }
940
+
941
+ .eds-contrast .eds-icon-button {
942
+ color: var(--components-button-iconbutton-contrast-text);
943
+ }
944
+
945
+ .eds-contrast .eds-icon-button > .eds-loading-dots .eds-loading-dots__dot {
946
+ background-color: var(--components-button-iconbutton-contrast-icon);
947
+ }
948
+
949
+ .eds-icon-button--size-small {
950
+ height: 1.5rem;
951
+ width: 1.5rem;
952
+ padding: 0;
953
+ }
954
+
955
+ .eds-icon-button:hover {
956
+ background-color: var(--components-button-iconbutton-standard-hover);
957
+ }
958
+
959
+ .eds-contrast .eds-icon-button:hover {
960
+ background-color: var(--components-button-iconbutton-contrast-hover);
961
+ }
962
+
963
+ .eds-icon-button:active {
964
+ background: var(--components-button-iconbutton-standard-active);
965
+ color: var(--components-button-iconbutton-standard-text-active);
966
+ }
967
+
968
+ .eds-contrast .eds-icon-button:active {
969
+ background: var(--components-button-iconbutton-contrast-active);
970
+ color: var(--components-button-iconbutton-contrast-text-active);
971
+ }
972
+
973
+ .eds-icon-button:focus {
974
+ outline: 2px solid #181c56;
975
+ outline-color: var(--basecolors-stroke-focus-standard);
976
+ outline-offset: 0.125rem;
977
+ }
978
+
979
+ .eds-contrast .eds-icon-button:focus {
980
+ outline-color: var(--basecolors-stroke-focus-contrast);
981
+ }
982
+
983
+ .eds-icon-button--disabled {
984
+ opacity: 0.5;
985
+ pointer-events: none;
986
+ }
987
+
988
+ .eds-icon-button--disabled__wrapper {
989
+ cursor: not-allowed;
990
+ width: -moz-fit-content;
991
+ width: fit-content;
992
+ }
993
+
994
994
  .eds-tooltip-wrapper {
995
995
  display: inline-block;
996
996
  position: relative;
@@ -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 (target) {
17
- for (var i = 1; i < arguments.length; i++) {
18
- var source = arguments[i];
19
- for (var key in source) {
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 target;
26
- };
27
- return _extends.apply(this, arguments);
21
+ return n;
22
+ }, _extends.apply(null, arguments);
28
23
  }
29
- function _objectWithoutPropertiesLoose(source, excluded) {
30
- if (source == null) return {};
31
- var target = {};
32
- var sourceKeys = Object.keys(source);
33
- var key, i;
34
- for (i = 0; i < sourceKeys.length; i++) {
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 target;
31
+ return t;
40
32
  }
41
33
 
42
34
  function standardisePlacement(placement) {
@@ -92,9 +84,6 @@ var Tooltip = function Tooltip(_ref) {
92
84
  var isControlled = isOpen !== undefined;
93
85
  // calculations for floating-UI tooltip position
94
86
  var _useFloating = react.useFloating({
95
- whileElementsMounted: function whileElementsMounted(ref, _float, update) {
96
- return react.autoUpdate(ref, _float, update);
97
- },
98
87
  placement: standardisePlacement(placement),
99
88
  open: showTooltip,
100
89
  middleware: [react.offset(tokens.space.extraSmall), react.flip(), react.shift({
@@ -111,7 +100,18 @@ var Tooltip = function Tooltip(_ref) {
111
100
  floatingStyles = _useFloating.floatingStyles,
112
101
  middlewareData = _useFloating.middlewareData,
113
102
  actualPlacement = _useFloating.placement,
114
- isPositioned = _useFloating.isPositioned;
103
+ isPositioned = _useFloating.isPositioned,
104
+ update = _useFloating.update,
105
+ elements = _useFloating.elements;
106
+ // Since we use CSS instead of conditional rendering when hiding tooltip
107
+ // we can't use the whileElementsMounted option and need to handle
108
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
109
+ React.useEffect(function () {
110
+ if (showTooltip && elements.reference && elements.floating) {
111
+ var cleanup = react.autoUpdate(elements.reference, elements.floating, update);
112
+ return cleanup;
113
+ }
114
+ }, [showTooltip, elements, update]);
115
115
  var onMouseEnter = function onMouseEnter() {
116
116
  var _hoverDelay$enter;
117
117
  if (isControlled) return;
@@ -190,7 +190,7 @@ var Tooltip = function Tooltip(_ref) {
190
190
  }, React.createElement(icons.CloseIcon, {
191
191
  "aria-hidden": "true"
192
192
  })), React.createElement("div", {
193
- className: "eds-tooltip__arrow--" + (actualPlacement == null ? void 0 : (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
193
+ className: "eds-tooltip__arrow--" + (actualPlacement == null || (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
194
194
  ref: tooltipArrowRef,
195
195
  style: {
196
196
  left: (_middlewareData$arrow = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow.x,
@@ -212,9 +212,6 @@ var Popover = function Popover(_ref) {
212
212
  controlled = _useCustomState[2];
213
213
  // calculations for floating-UI popover position
214
214
  var _useFloating = reactDom.useFloating({
215
- whileElementsMounted: function whileElementsMounted(ref, _float, update) {
216
- return reactDom.autoUpdate(ref, _float, update);
217
- },
218
215
  placement: standardisePlacement(placement),
219
216
  middleware: [reactDom.offset(tokens.space.extraSmall), reactDom.flip(), reactDom.shift({
220
217
  padding: tokens.space.extraSmall,
@@ -224,7 +221,18 @@ var Popover = function Popover(_ref) {
224
221
  })]
225
222
  }),
226
223
  refs = _useFloating.refs,
227
- floatingStyles = _useFloating.floatingStyles;
224
+ floatingStyles = _useFloating.floatingStyles,
225
+ elements = _useFloating.elements,
226
+ update = _useFloating.update;
227
+ // Since we use CSS instead of conditional rendering when hiding dropdownlist
228
+ // we can't use the whileElementsMounted option and need to handle
229
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
230
+ React.useEffect(function () {
231
+ if (showPopover && elements.reference && elements.floating) {
232
+ var cleanup = reactDom.autoUpdate(elements.reference, elements.floating, update);
233
+ return cleanup;
234
+ }
235
+ }, [showPopover, elements, update]);
228
236
  utils.useOnClickOutside([refs.floating, refs.reference], function () {
229
237
  return setShowPopover(false);
230
238
  });
@@ -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, 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 } = useFloating({\n whileElementsMounted: (ref, float, update) =>\n autoUpdate(ref, float, update),\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 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} 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 } = useFloating<HTMLButtonElement>({\n whileElementsMounted: (ref, float, update) =>\n autoUpdate(ref, float, update),\n placement: standardisePlacement(placement),\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall, limiter: limitShift({ offset: 8 }) }),\n ],\n });\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","whileElementsMounted","ref","float","update","autoUpdate","open","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","arrow","element","borderRadiuses","medium","refs","floatingStyles","middlewareData","actualPlacement","isPositioned","onMouseEnter","clearTimeout","current","setTimeout","enter","onMouseLeave","leave","React","useEffect","referenceListenerProps","onFocus","onBlur","onKeyDown","e","key","preventDefault","onClick","displayTooltipStyle","createElement","Fragment","cloneElement","setReference","classNames","setFloating","display","role","id","IconButton","type","CloseIcon","split","left","x","top","y","Popover","controlledState","showPopover","setControlledState","setShowPopover","useCustomState","controlled","useOnClickOutside","floating","reference","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"),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)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(this,arguments)}function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(o[n]=e[n]);return o}function d(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 f=["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=y(),d=c.floatingStyles,f=c.popoverContentProps;return t.createElement(s.Contrast,u({className:n(l,"eds-popover")},f,{style:u({},d,f.style,a),ref:e.mergeRefs(f.ref,o)}),i)})),m=t.createContext(void 0),y=function(){var e=t.useContext(m);if(null==e)throw Error("usePopoverContext must be used within <Popover/>");return e};function g(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],f=s[1],p=s[2],v=a.useFloating({whileElementsMounted:function(e,t,n){return a.autoUpdate(e,t,n)},placement:d(i),middleware:[a.offset(l.space.extraSmall),a.flip(),a.shift({padding:l.space.extraSmall,limiter:a.limitShift({offset:8})})]}),y=v.refs,b=v.floatingStyles;e.useOnClickOutside([y.floating,y.reference],(function(){return f(!1)}));var h=u({"aria-haspopup":"dialog","aria-expanded":c,ref:y.setReference,type:"button"},!p&&{onClick:function(){return f((function(e){return!e}))}}),C={role:"dialog","aria-modal":!1,"aria-hidden":!c,ref:y.setFloating,style:u({},!c&&{display:"none"}),onKeyDown:function(e){"Escape"===e.key&&f(!1)},onBlur:function(e){var t=e.relatedTarget;if(t&&"-1"!==t.getAttribute("tabindex")){var n=g(y.floating.current,t),r=g(y.reference.current,t);c&&!n&&!r&&f(!1)}}};return t.createElement(m.Provider,{value:{showPopover:c,floatingStyles:b,popoverTriggerProps:h,popoverContentProps:C,closeButtonProps:{onClick:function(){return f(!1)},type:"button"}}},r)},exports.PopoverCloseButton=function(e){var n=e.children,r=c(e,p),o=y();return t.cloneElement(n,u({},o.closeButtonProps,r))},exports.PopoverContent=v,exports.PopoverTrigger=function(e){var n=e.children,r=y().popoverTriggerProps,o=t.Children.only(n);return t.cloneElement(o,r)},exports.Tooltip=function(a){var s,p,v,m=a.placement,y=a.content,g=a.children,b=a.className,h=a.isOpen,C=a.onClickCloseButton,w=void 0===C?function(){}:C,E=a.disableHoverListener,P=void 0!==E&&E,x=a.disableFocusListener,k=void 0!==x&&x,S=a.disableKeyboardListener,L=void 0===S||S,O=a.disableClickListner,T=void 0===O||O,B=a.showCloseButton,q=void 0===B||B,R=a.variant,F=a.hoverDelay,M=a.style,N=c(a,f),D=t.useState(null!=h&&h),_=D[0],j=D[1],K=t.useRef(null),I=e.useRandomId("eds-tooltip"),A=t.useRef(),H=t.useRef(),U=void 0!==h,z=r.useFloating({whileElementsMounted:function(e,t,n){return r.autoUpdate(e,t,n)},placement:d(m),open:_,middleware:[r.offset(l.space.extraSmall),r.flip(),r.shift({padding:l.space.extraSmall,limiter:r.limitShift({offset:8})}),r.arrow({element:K,padding:l.borderRadiuses.medium})]}),G=z.refs,J=z.floatingStyles,Q=z.middlewareData,V=z.placement,W=z.isPositioned,X=function(){var e;U||(clearTimeout(H.current),A.current=setTimeout((function(){j(!0)}),null!=(e=null==F?void 0:F.enter)?e:150))},Y=function(){var e;U||(clearTimeout(A.current),H.current=setTimeout((function(){j(!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&&j(h)}),[h]);var Z=u({"aria-describedby":_?I:void 0},!k&&!U&&{onFocus:function(){return j(!0)}},!k&&!U&&{onBlur:function(){return j(!1)}},!P&&!U&&{onMouseEnter:X},!P&&!U&&{onMouseLeave:Y},!L&&!U&&{onKeyDown:function(e){"Escape"===e.key&&j(!1)," "!==e.key&&"Enter"!==e.key||(e.preventDefault(),j(!_))}},!T&&!U&&{onClick:function(){return j(!_)}}),$=(!U||W)&&_&&y?void 0:"none";return t.createElement(t.Fragment,null,t.cloneElement(g,u({ref:G.setReference},Z)),t.createElement("div",u({className:n(b,"eds-tooltip",{"eds-tooltip--negative":"error"===R||"negative"===R}),ref:G.setFloating,style:u({},J,{display:$},M),role:"tooltip",id:I,onMouseEnter:P?void 0:X,onMouseLeave:P?void 0:Y},N),y,h&&q&&t.createElement(i.IconButton,{className:"eds-tooltip__close-button",onClick:function(){j(!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:K,style:{left:null==(p=Q.arrow)?void 0:p.x,top:null==(v=Q.arrow)?void 0:v.y}})))},exports.standardisePlacement=d;
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} 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 } = useFloating<HTMLButtonElement>({\n whileElementsMounted: (ref, float, update) =>\n autoUpdate(ref, float, update),\n placement: standardisePlacement(placement),\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall, limiter: limitShift({ offset: 8 }) }),\n ],\n });\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, 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 } = useFloating({\n whileElementsMounted: (ref, float, update) =>\n autoUpdate(ref, float, update),\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 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","whileElementsMounted","float","update","autoUpdate","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","refs","useOnClickOutside","floating","reference","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","useEffect","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":"6pBAgBM,SAAUA,EAAqBC,GACnC,OAAQA,GACN,IAAK,WACH,MAAO,YACT,IAAK,YACH,MAAO,UACT,IAAK,cACH,MAAO,eACT,IAAK,eACH,MAAO,aACT,QACE,OAAOA,EAEb,kPC6IaC,EAAiBC,EAAMC,YAGlC,SAAAC,EAAiCC,GAAkC,IAAhEC,EAAQF,EAARE,SAAUC,EAASH,EAATG,UAAWC,EAAKJ,EAALI,MACxBC,EAAgDC,IAAxCC,EAAcF,EAAdE,eAAgBC,EAAmBH,EAAnBG,oBACxB,OACEV,EAAAW,cAACC,EAAQA,SAAAC,EAAA,CACPR,UAAWS,EAAWT,EAAW,gBAC7BK,EAAmB,CACvBJ,MAAKO,EAAA,CAAA,EAAOJ,EAAmBC,EAAoBJ,MAAUA,GAE7DH,IAAKY,EAASA,UAACL,EAAoBP,IAAKA,KAEvCC,EAGP,IAkBMY,EAAiBC,EAAAA,mBACrBC,GAEIV,EAAoB,WACxB,IAAMW,EAAUC,aAAWJ,GAC3B,GAAe,MAAXG,EACF,MAAME,MAAM,oDAEd,OAAOF,CACT,EAYA,SAASG,EACPC,EACAC,GAEA,QAAKD,IACEA,IAAWC,GAASD,EAAOE,SAASD,GAC7C,CCpOAE,EAAsBA,uBAAC,2BDoCwB,SAA3BC,GAKf,IAJHvB,EAAQuB,EAARvB,SAAQwB,EAAAD,EACR7B,UAAAA,OAAY,IAAH8B,EAAG,eAAcA,EAI1BC,EA0KqB,SACrBC,EACAC,GAEA,IAAAC,EAA0ChC,EAAMiC,UAAkB,GAC5DC,OAAuBhB,IAAVY,QAAoCZ,IAAba,EAC1C,OAAIG,EAAmB,CAACJ,EAAOC,EAAUG,GAClC,CAHaF,EAAA,GAAkBA,EAAA,GAGGE,EAC3C,CAlLoDC,CAHtBR,EAA5BS,YACkCT,EAAlCU,gBAEOD,EAAWP,EAAA,GAAEQ,EAAcR,EAAA,GAAEK,EAAUL,EAAA,GAM9CS,EACEC,EAAAA,YAA+B,CAC7BzC,UAAWD,EAAqBC,GAChC0C,WAAY,CACVC,EAAAA,OAAOC,EAAKA,MAACC,YACbC,EAAAA,OACAC,QAAM,CACJC,QAASJ,EAAKA,MAACC,WACfI,QAASC,EAAAA,WAAW,CAAEP,OAAQ,SAR9BQ,EAAIX,EAAJW,KAAMxC,EAAc6B,EAAd7B,eAAgByC,EAAQZ,EAARY,SAAUC,EAAMb,EAANa,OAgBxCC,EAAAA,WAAU,WACR,GAAIhB,GAAec,EAASG,WAAaH,EAASI,SAEhD,OADgBC,EAAAA,WAAWL,EAASG,UAAWH,EAASI,SAAUH,EAGrE,GAAE,CAACf,EAAac,EAAUC,IAE3BK,EAAiBA,kBAAC,CAACP,EAAKK,SAAUL,EAAKI,YAAY,WAAA,OACjDhB,GAAe,MAGjB,IAAMoB,EAAmB5C,EAAA,CACvB,gBAAiB,SACjB,gBAAiBuB,EACjBjC,IAAK8C,EAAKS,aACVC,KAAM,WACDzB,GAAc,CACjB0B,QAAS,WAAF,OAAQvB,GAAe,SAAAwB,GAAI,OAAKA,IAAK,IAI1CnD,EAAsB,CAC1BoD,KAAM,SACN,cAAc,EACd,eAAgB1B,EAChBjC,IAAK8C,EAAKc,YACVzD,MAAKO,EAAQ,IAACuB,GAAe,CAAE4B,QAAS,SACxCC,UAAW,SAACC,GACQ,WAAdA,EAAMC,KAAkB9B,GAAe,EAC5C,EACD+B,OAAQ,SAACF,GACP,IAAMG,EAAwBH,EAAMI,cAEpC,GACGD,GACkD,OAAnDA,EAAsBE,aAAa,YAFrC,CAKA,IAAMC,EAA0BlD,EAC9B2B,EAAKK,SAASmB,QACdJ,GAEIK,EAA0BpD,EAC9B2B,EAAKI,UAAUoB,QACfJ,GAIEjC,IADDoC,IAA4BE,GACQrC,GAAe,EAXpD,CAYJ,GAgBF,OACErC,EAAAW,cAACK,EAAe2D,SAAQ,CAACC,MATe,CACxCxC,YAAAA,EACA3B,eAAAA,EACAgD,oBAAAA,EACA/C,oBAAAA,EACAmE,iBAVuB,CACvBjB,QAAS,WAAF,OAAQvB,GAAe,EAAM,EACpCsB,KAAM,YAaHvD,EAGP,6BAkBqE,SAAtC0E,GAG1B,IAFH1E,EAAQ0E,EAAR1E,SACG2E,EAAIC,EAAAF,EAAAG,GAEPC,EAA6B1E,IAC7B,OAAO2E,EAAAA,aAAa/E,EAAQS,KADJqE,EAAhBL,iBACgDE,GAC1D,kDAjB6D,SAAlCK,GAAmD,IAAdhF,EAAQgF,EAARhF,SACtDqD,EAAwBjD,IAAxBiD,oBACFjC,EAAQxB,EAAMqF,SAASC,KAAKlF,GAClC,OAAO+E,EAAYA,aAAC3D,EAAOiC,EAC7B,kBEvD+C,SAA3B9B,GAgBf,IAAA4D,EAAAC,EAAAC,EAfH3F,EAAS6B,EAAT7B,UACA4F,EAAO/D,EAAP+D,QACAtF,EAAQuB,EAARvB,SACAC,EAASsB,EAATtB,UACAsF,EAAMhE,EAANgE,OAAMC,EAAAjE,EACNkE,mBAAAA,OAAqB,IAAHD,EAAG,WAAe,EAAAA,EAAAE,EAAAnE,EACpCoE,qBAAAA,OAAuB,IAAHD,GAAQA,EAAAE,EAAArE,EAC5BsE,qBAAAA,OAAuB,IAAHD,GAAQA,EAAAE,EAAAvE,EAC5BwE,wBAAAA,OAA0B,IAAHD,GAAOA,EAAAE,EAAAzE,EAC9B0E,oBAAAA,OAAsB,IAAHD,GAAOA,EAAAE,EAAA3E,EAC1B4E,gBAAAA,OAAkB,IAAHD,GAAOA,EACtBE,EAAO7E,EAAP6E,QACAC,EAAU9E,EAAV8E,WACAnG,EAAKqB,EAALrB,MACGyE,EAAIC,EAAArD,EAAAsD,GAEPyB,EAAsCzE,EAAAA,SAAS0D,MAAAA,GAAAA,GAAxCgB,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAC5BG,EAAkBC,SAAO,MACzBC,EAAYC,cAAY,eACxBC,EAAiBH,EAAAA,SACjBI,EAAkBJ,EAAAA,SAElBK,OAA0BjG,IAAXyE,EAGrBrD,EAQIC,EAAAA,YAAY,CACdzC,UAAWD,EAAqBC,GAChCsH,KAAMT,EACNnE,WAAY,CACVC,EAAAA,OAAOC,EAAKA,MAACC,YACbC,EAAAA,OACAC,QAAM,CAAEC,QAASJ,EAAKA,MAACC,WAAYI,QAASC,EAAAA,WAAW,CAAEP,OAAQ,MACjE4E,EAAAA,MAAM,CACJC,QAAST,EACT/D,QAASyE,EAAcA,eAACC,YAhB5BvE,EAAIX,EAAJW,KACAxC,EAAc6B,EAAd7B,eACAgH,EAAcnF,EAAdmF,eACWC,EAAepF,EAA1BxC,UACA6H,EAAYrF,EAAZqF,aACAxE,EAAMb,EAANa,OACAD,EAAQZ,EAARY,SAkBFE,EAAAA,WAAU,WACR,GAAIuD,GAAezD,EAASG,WAAaH,EAASI,SAEhD,OADgBC,EAAAA,WAAWL,EAASG,UAAWH,EAASI,SAAUH,EAGrE,GAAE,CAACwD,EAAazD,EAAUC,IAE3B,IAAMyE,EAAe,WAAK,IAAAC,EACpBV,IACJW,aAAaZ,EAAgBzC,SAC7BwC,EAAexC,QAAUsD,YAAW,WAClCnB,GAAe,EAChB,GAAmBiB,OAAnBA,EAAEpB,MAAAA,OAAAA,EAAAA,EAAYuB,OAAKH,EAAI,OAGpBI,EAAe,WAAK,IAAAC,EACpBf,IACJW,aAAab,EAAexC,SAC5ByC,EAAgBzC,QAAUsD,YAAW,WACnCnB,GAAe,EAChB,GAAmBsB,OAAnBA,EAAEzB,MAAAA,OAAAA,EAAAA,EAAY0B,OAAKD,EAAI,OAG1BlI,EAAMoD,WAAU,WACd,OAAO,WACL0E,aAAab,EAAexC,SAC5BqD,aAAaZ,EAAgBzC,SAEhC,GAAE,IAEHzE,EAAMoD,WAAU,gBACClC,IAAXyE,GAAsBiB,EAAejB,EAC3C,GAAG,CAACA,IAEJ,IAAMyC,GAAsBvH,EAAA,CAC1B,mBAAoB8F,EAAcI,OAAY7F,IAEzC+E,IACFkB,GAAgB,CAAEkB,QAAS,WAAF,OAAQzB,GAAe,EAAK,IACnDX,IACFkB,GAAgB,CAAE/C,OAAQ,WAAF,OAAQwC,GAAe,EAAM,IAEnDb,IAAyBoB,GAAgB,CAAES,aAAAA,IAC3C7B,IAAyBoB,GAAgB,CAAEc,aAAAA,IAE3C9B,IACFgB,GAAgB,CACflD,UAAW,SAAAqE,GACK,WAAVA,EAAEnE,KAAkByC,GAAe,GACzB,MAAV0B,EAAEnE,KAAyB,UAAVmE,EAAEnE,MACrBmE,EAAEC,iBACF3B,GAAgBD,GAEpB,IAGCN,IACFc,GAAgB,CACfvD,QAAS,WAAF,OAAQgD,GAAgBD,EAAY,IAI3C6B,KACFrB,GAAgBQ,IAAiBhB,GAAejB,OAC9CxE,EACA,OAEN,OACElB,EAAAW,cAAAX,EAAAyI,SAAA,KACGtD,EAAYA,aAAC/E,EAAQS,EAAA,CACpBV,IAAK8C,EAAKS,cACP0E,KAELpI,EAAAW,cAAA,MAAAE,EAAA,CACER,UAAWS,EAAWT,EAAW,cAAe,CAC9C,wBA/KI,UA+KqBmG,GAAiC,aAAZA,IAEhDrG,IAAK8C,EAAKc,YACVzD,MAAKO,EAAA,CAAA,EACAJ,EAAc,CACjBuD,QAASwE,IACNlI,GAELwD,KAAK,UACL4E,GAAI3B,EACJa,aAAe7B,OAAsC7E,EAAf0G,EACtCK,aAAelC,OAAsC7E,EAAf+G,GAClClD,GAEHW,EACAC,GAAUY,GACTvG,gBAAC2I,aAAU,CACTtI,UAAU,4BACVuD,QAAS,WACPgD,GAAe,GACff,GACD,EACDlC,KAAK,sBACM,gBAEX3D,EAAAW,cAACiI,YAAS,CAAA,cAAa,UAG3B5I,EACEW,cAAA,MAAA,CAAAN,kCAAiD,MAAfqH,GAAAnC,OAAeA,EAAfmC,EAAiBmB,MAAM,WAAvBtD,EAAAA,EAA8B,IAChEpF,IAAK0G,EACLvG,MAAO,CACLwI,KAA0B,OAAtBtD,EAAEiC,EAAeJ,YAAK,EAApB7B,EAAsBuD,EAC5BC,IAAyB,OAAtBvD,EAAEgC,EAAeJ,YAAK,EAApB5B,EAAsBwD,MAMvC"}
@@ -1,38 +1,30 @@
1
1
  import { useRandomId, useOnClickOutside, mergeRefs, warnAboutMissingStyles } from '@entur/utils';
2
- import React, { useState, useRef, cloneElement, createContext, useContext } from 'react';
2
+ import React, { useState, useRef, useEffect, cloneElement, createContext, useContext } from 'react';
3
3
  import classNames from 'classnames';
4
- import { useFloating, autoUpdate, offset, flip, shift, limitShift, arrow } from '@floating-ui/react';
4
+ import { useFloating, offset, flip, shift, limitShift, arrow, autoUpdate } from '@floating-ui/react';
5
5
  import { CloseIcon } from '@entur/icons';
6
6
  import { IconButton } from '@entur/button';
7
7
  import { space, borderRadiuses } from '@entur/tokens';
8
- import { useFloating as useFloating$1, autoUpdate as autoUpdate$1, offset as offset$1, flip as flip$1, shift as shift$1, limitShift as limitShift$1 } from '@floating-ui/react-dom';
8
+ import { useFloating as useFloating$1, offset as offset$1, flip as flip$1, shift as shift$1, limitShift as limitShift$1, autoUpdate as autoUpdate$1 } from '@floating-ui/react-dom';
9
9
  import { Contrast } from '@entur/layout';
10
10
 
11
11
  function _extends() {
12
- _extends = Object.assign ? Object.assign.bind() : function (target) {
13
- for (var i = 1; i < arguments.length; i++) {
14
- var source = arguments[i];
15
- for (var key in source) {
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 target;
22
- };
23
- return _extends.apply(this, arguments);
17
+ return n;
18
+ }, _extends.apply(null, arguments);
24
19
  }
25
- function _objectWithoutPropertiesLoose(source, excluded) {
26
- if (source == null) return {};
27
- var target = {};
28
- var sourceKeys = Object.keys(source);
29
- var key, i;
30
- for (i = 0; i < sourceKeys.length; i++) {
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 target;
27
+ return t;
36
28
  }
37
29
 
38
30
  function standardisePlacement(placement) {
@@ -88,9 +80,6 @@ var Tooltip = function Tooltip(_ref) {
88
80
  var isControlled = isOpen !== undefined;
89
81
  // calculations for floating-UI tooltip position
90
82
  var _useFloating = useFloating({
91
- whileElementsMounted: function whileElementsMounted(ref, _float, update) {
92
- return autoUpdate(ref, _float, update);
93
- },
94
83
  placement: standardisePlacement(placement),
95
84
  open: showTooltip,
96
85
  middleware: [offset(space.extraSmall), flip(), shift({
@@ -107,7 +96,18 @@ var Tooltip = function Tooltip(_ref) {
107
96
  floatingStyles = _useFloating.floatingStyles,
108
97
  middlewareData = _useFloating.middlewareData,
109
98
  actualPlacement = _useFloating.placement,
110
- isPositioned = _useFloating.isPositioned;
99
+ isPositioned = _useFloating.isPositioned,
100
+ update = _useFloating.update,
101
+ elements = _useFloating.elements;
102
+ // Since we use CSS instead of conditional rendering when hiding tooltip
103
+ // we can't use the whileElementsMounted option and need to handle
104
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
105
+ useEffect(function () {
106
+ if (showTooltip && elements.reference && elements.floating) {
107
+ var cleanup = autoUpdate(elements.reference, elements.floating, update);
108
+ return cleanup;
109
+ }
110
+ }, [showTooltip, elements, update]);
111
111
  var onMouseEnter = function onMouseEnter() {
112
112
  var _hoverDelay$enter;
113
113
  if (isControlled) return;
@@ -186,7 +186,7 @@ var Tooltip = function Tooltip(_ref) {
186
186
  }, React.createElement(CloseIcon, {
187
187
  "aria-hidden": "true"
188
188
  })), React.createElement("div", {
189
- className: "eds-tooltip__arrow--" + (actualPlacement == null ? void 0 : (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
189
+ className: "eds-tooltip__arrow--" + (actualPlacement == null || (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
190
190
  ref: tooltipArrowRef,
191
191
  style: {
192
192
  left: (_middlewareData$arrow = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow.x,
@@ -208,9 +208,6 @@ var Popover = function Popover(_ref) {
208
208
  controlled = _useCustomState[2];
209
209
  // calculations for floating-UI popover position
210
210
  var _useFloating = useFloating$1({
211
- whileElementsMounted: function whileElementsMounted(ref, _float, update) {
212
- return autoUpdate$1(ref, _float, update);
213
- },
214
211
  placement: standardisePlacement(placement),
215
212
  middleware: [offset$1(space.extraSmall), flip$1(), shift$1({
216
213
  padding: space.extraSmall,
@@ -220,7 +217,18 @@ var Popover = function Popover(_ref) {
220
217
  })]
221
218
  }),
222
219
  refs = _useFloating.refs,
223
- floatingStyles = _useFloating.floatingStyles;
220
+ floatingStyles = _useFloating.floatingStyles,
221
+ elements = _useFloating.elements,
222
+ update = _useFloating.update;
223
+ // Since we use CSS instead of conditional rendering when hiding dropdownlist
224
+ // we can't use the whileElementsMounted option and need to handle
225
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
226
+ useEffect(function () {
227
+ if (showPopover && elements.reference && elements.floating) {
228
+ var cleanup = autoUpdate$1(elements.reference, elements.floating, update);
229
+ return cleanup;
230
+ }
231
+ }, [showPopover, elements, update]);
224
232
  useOnClickOutside([refs.floating, refs.reference], function () {
225
233
  return setShowPopover(false);
226
234
  });
@@ -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, 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 } = useFloating({\n whileElementsMounted: (ref, float, update) =>\n autoUpdate(ref, float, update),\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 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} 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 } = useFloating<HTMLButtonElement>({\n whileElementsMounted: (ref, float, update) =>\n autoUpdate(ref, float, update),\n placement: standardisePlacement(placement),\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall, limiter: limitShift({ offset: 8 }) }),\n ],\n });\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","whileElementsMounted","ref","float","update","autoUpdate","open","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","arrow","element","borderRadiuses","medium","refs","floatingStyles","middlewareData","actualPlacement","isPositioned","onMouseEnter","clearTimeout","current","setTimeout","enter","onMouseLeave","leave","React","useEffect","referenceListenerProps","onFocus","onBlur","onKeyDown","e","key","preventDefault","onClick","displayTooltipStyle","createElement","Fragment","cloneElement","setReference","classNames","setFloating","display","role","id","IconButton","type","CloseIcon","split","left","x","top","y","Popover","controlledState","showPopover","setControlledState","setShowPopover","useCustomState","controlled","useOnClickOutside","floating","reference","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.4-alpha.0",
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.37-alpha.0",
31
- "@entur/icons": "^7.5.0",
32
- "@entur/layout": "^2.3.21-alpha.0",
33
- "@entur/tokens": "^3.17.3",
34
- "@entur/utils": "^1.0.0-alpha.0",
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
- "gitHead": "b653c119e54372ec210ed20aa99ded642f114c69"
39
+ "devDependencies": {
40
+ "dts-cli": "2.0.5"
41
+ },
42
+ "gitHead": "d7913682a41ade219cbd4dfc6e45060152c7fa0a"
40
43
  }