@entur/tooltip 4.0.1 → 5.1.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/dist/Tooltip.d.ts +13 -0
- package/dist/index.d.ts +1 -1
- package/dist/styles.css +90 -90
- package/dist/tooltip.cjs.development.js +39 -21
- package/dist/tooltip.cjs.development.js.map +1 -1
- package/dist/tooltip.cjs.production.min.js +1 -1
- package/dist/tooltip.cjs.production.min.js.map +1 -1
- package/dist/tooltip.esm.js +38 -21
- package/dist/tooltip.esm.js.map +1 -1
- package/package.json +8 -7
package/dist/Tooltip.d.ts
CHANGED
|
@@ -21,6 +21,10 @@ export type TooltipProps = {
|
|
|
21
21
|
children: React.ReactElement;
|
|
22
22
|
/** Om tooltip-en skal vises */
|
|
23
23
|
isOpen?: boolean;
|
|
24
|
+
/** Callback-funksjon for når brukeren trykker på lukk-tooltip-knappen
|
|
25
|
+
* @default () => undefined;
|
|
26
|
+
*/
|
|
27
|
+
onClickCloseButton?: () => void;
|
|
24
28
|
/** Ekstra klassenavn for tooltip */
|
|
25
29
|
className?: string;
|
|
26
30
|
/** Åpner ikke tooltip ved hover-events
|
|
@@ -39,6 +43,15 @@ export type TooltipProps = {
|
|
|
39
43
|
showCloseButton?: boolean;
|
|
40
44
|
/** Valideringsvariant for Tooltip */
|
|
41
45
|
variant?: 'negative' | typeof error;
|
|
46
|
+
/** For å kontrollere tiden i millisekunder det tar før tooltip-en
|
|
47
|
+
* vises etter hover, og hvor lang tid det tar før den lukkes etter
|
|
48
|
+
* hover-slutt.
|
|
49
|
+
* @default { enter: 150, leave: 300 }
|
|
50
|
+
*/
|
|
51
|
+
hoverDelay?: {
|
|
52
|
+
enter?: number;
|
|
53
|
+
leave?: number;
|
|
54
|
+
};
|
|
42
55
|
/** @deprecated Ikke lenger støttet. Meld fra på #talk-designsystem hvis du trenger støtte for
|
|
43
56
|
* overskrivinger av plasseringen til Tooltip!
|
|
44
57
|
*/
|
package/dist/index.d.ts
CHANGED
package/dist/styles.css
CHANGED
|
@@ -1,27 +1,5 @@
|
|
|
1
1
|
/* DO NOT CHANGE!*/
|
|
2
2
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
3
|
-
.eds-popover {
|
|
4
|
-
background: var(--components-tooltip-popover-standard-fill);
|
|
5
|
-
box-shadow: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.25);
|
|
6
|
-
border-radius: 0.25rem;
|
|
7
|
-
border: 0.0625rem solid var(--components-tooltip-popover-standard-border);
|
|
8
|
-
font-family: inherit;
|
|
9
|
-
z-index: 20;
|
|
10
|
-
}
|
|
11
|
-
.eds-contrast .eds-popover {
|
|
12
|
-
background: var(--components-tooltip-popover-contrast-fill);
|
|
13
|
-
box-shadow: 0 0.0625rem 0.1875rem rgb(57, 61, 121);
|
|
14
|
-
}
|
|
15
|
-
.eds-popover:focus {
|
|
16
|
-
outline: 2px solid #181c56;
|
|
17
|
-
outline-color: var(--basecolors-stroke-focus-standard);
|
|
18
|
-
outline-offset: 0.125rem;
|
|
19
|
-
}
|
|
20
|
-
.eds-contrast .eds-popover:focus {
|
|
21
|
-
outline-color: var(--basecolors-stroke-focus-contrast);
|
|
22
|
-
}
|
|
23
|
-
/* DO NOT CHANGE!*/
|
|
24
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
25
3
|
/* DO NOT CHANGE!*/
|
|
26
4
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
27
5
|
a.eds-button {
|
|
@@ -366,6 +344,74 @@ a.eds-button--size-large {
|
|
|
366
344
|
margin-right: 0;
|
|
367
345
|
}
|
|
368
346
|
|
|
347
|
+
/* DO NOT CHANGE!*/
|
|
348
|
+
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
349
|
+
.eds-icon-button {
|
|
350
|
+
border: 0.125rem solid transparent;
|
|
351
|
+
border-radius: 0.25rem;
|
|
352
|
+
background: none;
|
|
353
|
+
color: var(--components-button-iconbutton-standard-text);
|
|
354
|
+
cursor: pointer;
|
|
355
|
+
display: flex;
|
|
356
|
+
justify-content: center;
|
|
357
|
+
align-items: center;
|
|
358
|
+
font-size: 1rem;
|
|
359
|
+
padding: 0.5rem;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.eds-contrast .eds-icon-button {
|
|
363
|
+
color: var(--components-button-iconbutton-contrast-text);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.eds-contrast .eds-icon-button > .eds-loading-dots .eds-loading-dots__dot {
|
|
367
|
+
background-color: var(--components-button-iconbutton-contrast-icon);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.eds-icon-button--size-small {
|
|
371
|
+
height: 1.5rem;
|
|
372
|
+
width: 1.5rem;
|
|
373
|
+
padding: 0;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.eds-icon-button:hover {
|
|
377
|
+
background-color: var(--components-button-iconbutton-standard-hover);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.eds-contrast .eds-icon-button:hover {
|
|
381
|
+
background-color: var(--components-button-iconbutton-contrast-hover);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.eds-icon-button:active {
|
|
385
|
+
background: var(--components-button-iconbutton-standard-active);
|
|
386
|
+
color: var(--components-button-iconbutton-standard-text-active);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.eds-contrast .eds-icon-button:active {
|
|
390
|
+
background: var(--components-button-iconbutton-contrast-active);
|
|
391
|
+
color: var(--components-button-iconbutton-contrast-text-active);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.eds-icon-button:focus {
|
|
395
|
+
outline: 2px solid #181c56;
|
|
396
|
+
outline-color: var(--basecolors-stroke-focus-standard);
|
|
397
|
+
outline-offset: 0.125rem;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.eds-contrast .eds-icon-button:focus {
|
|
401
|
+
outline-color: var(--basecolors-stroke-focus-contrast);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
.eds-icon-button--disabled {
|
|
405
|
+
opacity: 0.5;
|
|
406
|
+
pointer-events: none;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
.eds-icon-button--disabled__wrapper {
|
|
410
|
+
cursor: not-allowed;
|
|
411
|
+
width: -moz-fit-content;
|
|
412
|
+
width: fit-content;
|
|
413
|
+
}
|
|
414
|
+
|
|
369
415
|
/* DO NOT CHANGE!*/
|
|
370
416
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
371
417
|
.eds-square-button {
|
|
@@ -563,74 +609,6 @@ a.eds-button--size-large {
|
|
|
563
609
|
border-width: 0.0625rem;
|
|
564
610
|
}
|
|
565
611
|
|
|
566
|
-
/* DO NOT CHANGE!*/
|
|
567
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
568
|
-
.eds-icon-button {
|
|
569
|
-
border: 0.125rem solid transparent;
|
|
570
|
-
border-radius: 0.25rem;
|
|
571
|
-
background: none;
|
|
572
|
-
color: var(--components-button-iconbutton-standard-text);
|
|
573
|
-
cursor: pointer;
|
|
574
|
-
display: flex;
|
|
575
|
-
justify-content: center;
|
|
576
|
-
align-items: center;
|
|
577
|
-
font-size: 1rem;
|
|
578
|
-
padding: 0.5rem;
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
.eds-contrast .eds-icon-button {
|
|
582
|
-
color: var(--components-button-iconbutton-contrast-text);
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
.eds-contrast .eds-icon-button > .eds-loading-dots .eds-loading-dots__dot {
|
|
586
|
-
background-color: var(--components-button-iconbutton-contrast-icon);
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
.eds-icon-button--size-small {
|
|
590
|
-
height: 1.5rem;
|
|
591
|
-
width: 1.5rem;
|
|
592
|
-
padding: 0;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
.eds-icon-button:hover {
|
|
596
|
-
background-color: var(--components-button-iconbutton-standard-hover);
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
.eds-contrast .eds-icon-button:hover {
|
|
600
|
-
background-color: var(--components-button-iconbutton-contrast-hover);
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
.eds-icon-button:active {
|
|
604
|
-
background: var(--components-button-iconbutton-standard-active);
|
|
605
|
-
color: var(--components-button-iconbutton-standard-text-active);
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
.eds-contrast .eds-icon-button:active {
|
|
609
|
-
background: var(--components-button-iconbutton-contrast-active);
|
|
610
|
-
color: var(--components-button-iconbutton-contrast-text-active);
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
.eds-icon-button:focus {
|
|
614
|
-
outline: 2px solid #181c56;
|
|
615
|
-
outline-color: var(--basecolors-stroke-focus-standard);
|
|
616
|
-
outline-offset: 0.125rem;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
.eds-contrast .eds-icon-button:focus {
|
|
620
|
-
outline-color: var(--basecolors-stroke-focus-contrast);
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
.eds-icon-button--disabled {
|
|
624
|
-
opacity: 0.5;
|
|
625
|
-
pointer-events: none;
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
.eds-icon-button--disabled__wrapper {
|
|
629
|
-
cursor: not-allowed;
|
|
630
|
-
width: -moz-fit-content;
|
|
631
|
-
width: fit-content;
|
|
632
|
-
}
|
|
633
|
-
|
|
634
612
|
/* DO NOT CHANGE!*/
|
|
635
613
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
636
614
|
/* DO NOT CHANGE!*/
|
|
@@ -1104,6 +1082,28 @@ a.eds-button--size-large {
|
|
|
1104
1082
|
}
|
|
1105
1083
|
/* DO NOT CHANGE!*/
|
|
1106
1084
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
1085
|
+
.eds-popover {
|
|
1086
|
+
background: var(--components-tooltip-popover-standard-fill);
|
|
1087
|
+
box-shadow: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.25);
|
|
1088
|
+
border-radius: 0.25rem;
|
|
1089
|
+
border: 0.0625rem solid var(--components-tooltip-popover-standard-border);
|
|
1090
|
+
font-family: inherit;
|
|
1091
|
+
z-index: 20;
|
|
1092
|
+
}
|
|
1093
|
+
.eds-contrast .eds-popover {
|
|
1094
|
+
background: var(--components-tooltip-popover-contrast-fill);
|
|
1095
|
+
box-shadow: 0 0.0625rem 0.1875rem rgb(57, 61, 121);
|
|
1096
|
+
}
|
|
1097
|
+
.eds-popover:focus {
|
|
1098
|
+
outline: 2px solid #181c56;
|
|
1099
|
+
outline-color: var(--basecolors-stroke-focus-standard);
|
|
1100
|
+
outline-offset: 0.125rem;
|
|
1101
|
+
}
|
|
1102
|
+
.eds-contrast .eds-popover:focus {
|
|
1103
|
+
outline-color: var(--basecolors-stroke-focus-contrast);
|
|
1104
|
+
}
|
|
1105
|
+
/* DO NOT CHANGE!*/
|
|
1106
|
+
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
1107
1107
|
/* DO NOT CHANGE!*/
|
|
1108
1108
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
1109
1109
|
/* DO NOT CHANGE!*/
|
|
@@ -5,10 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var utils = require('@entur/utils');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var classNames = require('classnames');
|
|
8
|
-
var
|
|
8
|
+
var react = require('@floating-ui/react');
|
|
9
9
|
var icons = require('@entur/icons');
|
|
10
10
|
var button = require('@entur/button');
|
|
11
11
|
var tokens = require('@entur/tokens');
|
|
12
|
+
var reactDom = require('@floating-ui/react-dom');
|
|
12
13
|
var layout = require('@entur/layout');
|
|
13
14
|
|
|
14
15
|
function _extends() {
|
|
@@ -53,7 +54,7 @@ function standardisePlacement(placement) {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "disableHoverListener", "disableFocusListener", "disableKeyboardListener", "disableClickListner", "showCloseButton", "variant", "style"];
|
|
57
|
+
var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "onClickCloseButton", "disableHoverListener", "disableFocusListener", "disableKeyboardListener", "disableClickListner", "showCloseButton", "variant", "hoverDelay", "style"];
|
|
57
58
|
/** @deprecated use variant="negative" instead */
|
|
58
59
|
var error = 'error';
|
|
59
60
|
var Tooltip = function Tooltip(_ref) {
|
|
@@ -62,8 +63,11 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
62
63
|
content = _ref.content,
|
|
63
64
|
children = _ref.children,
|
|
64
65
|
className = _ref.className,
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
isOpen = _ref.isOpen,
|
|
67
|
+
_ref$onClickCloseButt = _ref.onClickCloseButton,
|
|
68
|
+
onClickCloseButton = _ref$onClickCloseButt === void 0 ? function () {
|
|
69
|
+
return undefined;
|
|
70
|
+
} : _ref$onClickCloseButt,
|
|
67
71
|
_ref$disableHoverList = _ref.disableHoverListener,
|
|
68
72
|
disableHoverListener = _ref$disableHoverList === void 0 ? false : _ref$disableHoverList,
|
|
69
73
|
_ref$disableFocusList = _ref.disableFocusListener,
|
|
@@ -75,27 +79,30 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
75
79
|
_ref$showCloseButton = _ref.showCloseButton,
|
|
76
80
|
showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
|
|
77
81
|
variant = _ref.variant,
|
|
82
|
+
hoverDelay = _ref.hoverDelay,
|
|
78
83
|
style = _ref.style,
|
|
79
84
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
80
|
-
var _useState = React.useState(isOpen),
|
|
85
|
+
var _useState = React.useState(isOpen != null ? isOpen : false),
|
|
81
86
|
showTooltip = _useState[0],
|
|
82
87
|
setShowTooltip = _useState[1];
|
|
83
88
|
var tooltipArrowRef = React.useRef(null);
|
|
84
89
|
var tooltipId = utils.useRandomId('eds-tooltip');
|
|
85
90
|
var hoverOpenTimer = React.useRef();
|
|
86
91
|
var hoverCloseTimer = React.useRef();
|
|
92
|
+
var isControlled = isOpen !== undefined;
|
|
87
93
|
// calculations for floating-UI tooltip position
|
|
88
|
-
var _useFloating =
|
|
94
|
+
var _useFloating = react.useFloating({
|
|
89
95
|
whileElementsMounted: function whileElementsMounted(ref, _float, update) {
|
|
90
|
-
return
|
|
96
|
+
return react.autoUpdate(ref, _float, update);
|
|
91
97
|
},
|
|
92
98
|
placement: standardisePlacement(placement),
|
|
93
|
-
|
|
99
|
+
open: showTooltip,
|
|
100
|
+
middleware: [react.offset(tokens.space.extraSmall), react.flip(), react.shift({
|
|
94
101
|
padding: tokens.space.extraSmall,
|
|
95
|
-
limiter:
|
|
102
|
+
limiter: react.limitShift({
|
|
96
103
|
offset: 8
|
|
97
104
|
})
|
|
98
|
-
}),
|
|
105
|
+
}), react.arrow({
|
|
99
106
|
element: tooltipArrowRef,
|
|
100
107
|
padding: tokens.borderRadiuses.medium
|
|
101
108
|
})]
|
|
@@ -103,18 +110,23 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
103
110
|
refs = _useFloating.refs,
|
|
104
111
|
floatingStyles = _useFloating.floatingStyles,
|
|
105
112
|
middlewareData = _useFloating.middlewareData,
|
|
106
|
-
actualPlacement = _useFloating.placement
|
|
113
|
+
actualPlacement = _useFloating.placement,
|
|
114
|
+
isPositioned = _useFloating.isPositioned;
|
|
107
115
|
var onMouseEnter = function onMouseEnter() {
|
|
116
|
+
var _hoverDelay$enter;
|
|
117
|
+
if (isControlled) return;
|
|
108
118
|
clearTimeout(hoverCloseTimer.current);
|
|
109
119
|
hoverOpenTimer.current = setTimeout(function () {
|
|
110
120
|
setShowTooltip(true);
|
|
111
|
-
}, 150);
|
|
121
|
+
}, (_hoverDelay$enter = hoverDelay == null ? void 0 : hoverDelay.enter) != null ? _hoverDelay$enter : 150);
|
|
112
122
|
};
|
|
113
123
|
var onMouseLeave = function onMouseLeave() {
|
|
124
|
+
var _hoverDelay$leave;
|
|
125
|
+
if (isControlled) return;
|
|
114
126
|
clearTimeout(hoverOpenTimer.current);
|
|
115
127
|
hoverCloseTimer.current = setTimeout(function () {
|
|
116
128
|
setShowTooltip(false);
|
|
117
|
-
}, 300);
|
|
129
|
+
}, (_hoverDelay$leave = hoverDelay == null ? void 0 : hoverDelay.leave) != null ? _hoverDelay$leave : 300);
|
|
118
130
|
};
|
|
119
131
|
React.useEffect(function () {
|
|
120
132
|
return function () {
|
|
@@ -122,21 +134,24 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
122
134
|
clearTimeout(hoverCloseTimer.current);
|
|
123
135
|
};
|
|
124
136
|
}, []);
|
|
137
|
+
React.useEffect(function () {
|
|
138
|
+
if (isOpen !== undefined) setShowTooltip(isOpen);
|
|
139
|
+
}, [isOpen]);
|
|
125
140
|
var referenceListenerProps = _extends({
|
|
126
141
|
'aria-describedby': showTooltip ? tooltipId : undefined
|
|
127
|
-
}, !disableFocusListener && {
|
|
142
|
+
}, !disableFocusListener && !isControlled && {
|
|
128
143
|
onFocus: function onFocus() {
|
|
129
144
|
return setShowTooltip(true);
|
|
130
145
|
}
|
|
131
|
-
}, !disableFocusListener && {
|
|
146
|
+
}, !disableFocusListener && !isControlled && {
|
|
132
147
|
onBlur: function onBlur() {
|
|
133
148
|
return setShowTooltip(false);
|
|
134
149
|
}
|
|
135
|
-
}, !disableHoverListener && {
|
|
150
|
+
}, !disableHoverListener && !isControlled && {
|
|
136
151
|
onMouseEnter: onMouseEnter
|
|
137
|
-
}, !disableHoverListener && {
|
|
152
|
+
}, !disableHoverListener && !isControlled && {
|
|
138
153
|
onMouseLeave: onMouseLeave
|
|
139
|
-
}, !disableKeyboardListener && {
|
|
154
|
+
}, !disableKeyboardListener && !isControlled && {
|
|
140
155
|
onKeyDown: function onKeyDown(e) {
|
|
141
156
|
if (e.key === 'Escape') setShowTooltip(false);
|
|
142
157
|
if (e.key === ' ' || e.key === 'Enter') {
|
|
@@ -144,11 +159,12 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
144
159
|
setShowTooltip(!showTooltip);
|
|
145
160
|
}
|
|
146
161
|
}
|
|
147
|
-
}, !disableClickListner && {
|
|
162
|
+
}, !disableClickListner && !isControlled && {
|
|
148
163
|
onClick: function onClick() {
|
|
149
164
|
return setShowTooltip(!showTooltip);
|
|
150
165
|
}
|
|
151
166
|
});
|
|
167
|
+
var displayTooltipStyle = (!isControlled || isPositioned) && showTooltip && content ? undefined : 'none';
|
|
152
168
|
return React.createElement(React.Fragment, null, React.cloneElement(children, _extends({
|
|
153
169
|
ref: refs.setReference
|
|
154
170
|
}, referenceListenerProps)), React.createElement("div", _extends({
|
|
@@ -157,7 +173,7 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
157
173
|
}),
|
|
158
174
|
ref: refs.setFloating,
|
|
159
175
|
style: _extends({}, floatingStyles, {
|
|
160
|
-
display:
|
|
176
|
+
display: displayTooltipStyle
|
|
161
177
|
}, style),
|
|
162
178
|
role: "tooltip",
|
|
163
179
|
id: tooltipId,
|
|
@@ -166,7 +182,8 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
166
182
|
}, rest), content, isOpen && showCloseButton && React.createElement(button.IconButton, {
|
|
167
183
|
className: "eds-tooltip__close-button",
|
|
168
184
|
onClick: function onClick() {
|
|
169
|
-
|
|
185
|
+
setShowTooltip(false);
|
|
186
|
+
onClickCloseButton();
|
|
170
187
|
},
|
|
171
188
|
type: "button",
|
|
172
189
|
"aria-label": "Lukk tooltip"
|
|
@@ -318,4 +335,5 @@ exports.PopoverCloseButton = PopoverCloseButton;
|
|
|
318
335
|
exports.PopoverContent = PopoverContent;
|
|
319
336
|
exports.PopoverTrigger = PopoverTrigger;
|
|
320
337
|
exports.Tooltip = Tooltip;
|
|
338
|
+
exports.standardisePlacement = standardisePlacement;
|
|
321
339
|
//# sourceMappingURL=tooltip.cjs.development.js.map
|
|
@@ -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-dom';\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 /** 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 /** @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 = false,\n disableHoverListener = false,\n disableFocusListener = false,\n disableKeyboardListener = true,\n disableClickListner = true,\n showCloseButton = true,\n variant,\n style,\n ...rest\n}) => {\n const [showTooltip, setShowTooltip] = useState(isOpen);\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 // calculations for floating-UI tooltip position\n const {\n refs,\n floatingStyles,\n middlewareData,\n placement: actualPlacement,\n } = useFloating({\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 arrow({\n element: tooltipArrowRef,\n padding: borderRadiuses.medium,\n }),\n ],\n });\n\n const onMouseEnter = () => {\n clearTimeout(hoverCloseTimer.current);\n hoverOpenTimer.current = setTimeout(() => {\n setShowTooltip(true);\n }, 150);\n };\n\n const onMouseLeave = () => {\n clearTimeout(hoverOpenTimer.current);\n hoverCloseTimer.current = setTimeout(() => {\n setShowTooltip(false);\n }, 300);\n };\n\n React.useEffect(() => {\n return () => {\n clearTimeout(hoverOpenTimer.current);\n clearTimeout(hoverCloseTimer.current);\n };\n }, []);\n\n const referenceListenerProps: ChildEventListner = {\n 'aria-describedby': showTooltip ? tooltipId : undefined,\n // focusListner\n ...(!disableFocusListener && { onFocus: () => setShowTooltip(true) }),\n ...(!disableFocusListener && { onBlur: () => setShowTooltip(false) }),\n // hoverListner\n ...(!disableHoverListener && { onMouseEnter }),\n ...(!disableHoverListener && { onMouseLeave }),\n // keyboardListner\n ...(!disableKeyboardListener && {\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 onClick: () => setShowTooltip(!showTooltip),\n }),\n };\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: showTooltip && content ? undefined : 'none',\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={() => setShowTooltip(false)}\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 } from './utils';\n"],"names":["standardisePlacement","placement","error","Tooltip","content","children","className","isOpen","disableHoverListener","disableFocusListener","disableKeyboardListener","disableClickListner","showCloseButton","variant","style","rest","_excluded","useState","showTooltip","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","useFloating","whileElementsMounted","ref","float","update","autoUpdate","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","arrow","element","borderRadiuses","medium","refs","floatingStyles","middlewareData","actualPlacement","onMouseEnter","clearTimeout","current","setTimeout","onMouseLeave","React","useEffect","referenceListenerProps","undefined","onFocus","onBlur","onKeyDown","e","key","preventDefault","onClick","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, 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,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("classnames"),r=require("@floating-ui/react"),o=require("@entur/icons"),i=require("@entur/button"),l=require("@entur/tokens"),a=require("@floating-ui/react-dom"),s=require("@entur/layout");function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)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;
|
|
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 } 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-dom';\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 /** 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 /** @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 = false,\n disableHoverListener = false,\n disableFocusListener = false,\n disableKeyboardListener = true,\n disableClickListner = true,\n showCloseButton = true,\n variant,\n style,\n ...rest\n}) => {\n const [showTooltip, setShowTooltip] = useState(isOpen);\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 // calculations for floating-UI tooltip position\n const {\n refs,\n floatingStyles,\n middlewareData,\n placement: actualPlacement,\n } = useFloating({\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 arrow({\n element: tooltipArrowRef,\n padding: borderRadiuses.medium,\n }),\n ],\n });\n\n const onMouseEnter = () => {\n clearTimeout(hoverCloseTimer.current);\n hoverOpenTimer.current = setTimeout(() => {\n setShowTooltip(true);\n }, 150);\n };\n\n const onMouseLeave = () => {\n clearTimeout(hoverOpenTimer.current);\n hoverCloseTimer.current = setTimeout(() => {\n setShowTooltip(false);\n }, 300);\n };\n\n React.useEffect(() => {\n return () => {\n clearTimeout(hoverOpenTimer.current);\n clearTimeout(hoverCloseTimer.current);\n };\n }, []);\n\n const referenceListenerProps: ChildEventListner = {\n 'aria-describedby': showTooltip ? tooltipId : undefined,\n // focusListner\n ...(!disableFocusListener && { onFocus: () => setShowTooltip(true) }),\n ...(!disableFocusListener && { onBlur: () => setShowTooltip(false) }),\n // hoverListner\n ...(!disableHoverListener && { onMouseEnter }),\n ...(!disableHoverListener && { onMouseLeave }),\n // keyboardListner\n ...(!disableKeyboardListener && {\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 onClick: () => setShowTooltip(!showTooltip),\n }),\n };\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: showTooltip && content ? undefined : 'none',\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={() => setShowTooltip(false)}\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","_ref$isOpen","isOpen","_ref$disableHoverList","disableHoverListener","_ref$disableFocusList","disableFocusListener","_ref$disableKeyboardL","disableKeyboardListener","_ref$disableClickList","disableClickListner","_ref$showCloseButton","showCloseButton","variant","showTooltip","_useState","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","arrow","element","borderRadiuses","medium","middlewareData","actualPlacement","onMouseEnter","clearTimeout","setTimeout","onMouseLeave","useEffect","referenceListenerProps","onFocus","e","preventDefault","Fragment","id","IconButton","CloseIcon","split","left","x","top","y"],"mappings":"ooBAgBM,SAAUA,EAAqBC,GACnC,OAAQA,GACN,IAAK,WACH,MAAO,YACT,IAAK,YACH,MAAO,UACT,IAAK,cACH,MAAO,eACT,IAAK,eACH,MAAO,aACT,QACE,OAAOA,EAEb,gNCgIaC,EAAiBC,EAAMC,YAGlC,SAAiCC,EAAAA,GAAkC,IAAhEC,IAAAA,SAAUC,IAAAA,UAAWC,IAAAA,MACxBC,EAAgDC,IAAxCC,IAAAA,eAAgBC,IAAAA,oBACxB,OACET,EAAAU,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,CCvNAE,EAAsBA,uBAAC,2BDmCwB,SAK1CC,GAAA,IAJHvB,IAAAA,SAAQwB,EAAAD,EACR5B,UAAAA,aAAY,eAAc6B,EAI1BC,EA8JqB,SACrBC,EACAC,GAEA,IAAAC,EAA0C/B,EAAMgC,UAAkB,GAC5DC,OAAuBhB,IAAVY,QAAoCZ,IAAba,EAC1C,OAAIG,EAAmB,CAACJ,EAAOC,EAAUG,GAClC,CAHaF,EAAA,GAAkBA,EAAA,GAGGE,EAC3C,CAtKoDC,GAHlDC,cACAC,gBAEOD,EAAWP,EAAA,GAAEQ,EAAcR,EAAA,GAAEK,EAAUL,EAAA,GAM9CS,EAAiCC,EAAAA,YAA+B,CAC9DC,qBAAsB,SAACrC,EAAKsC,EAAOC,GAAM,OACvCC,aAAWxC,EAAKsC,EAAOC,EAAO,EAChC3C,UAAWD,EAAqBC,GAChC6C,WAAY,CACVC,EAAAA,OAAOC,EAAKA,MAACC,YACbC,EAAAA,OACAC,QAAM,CAAEC,QAASJ,EAAKA,MAACC,WAAYI,QAASC,EAAAA,WAAW,CAAEP,OAAQ,SAP7DQ,IAAAA,KAAM5C,IAAAA,eAWd6C,EAAiBA,kBAAC,CAACD,EAAKE,SAAUF,EAAKG,YAAY,WAAA,OACjDnB,GAAe,MAGjB,IAAMoB,EAAmB5C,EAAA,CACvB,gBAAiB,SACjB,gBAAiBuB,EACjBjC,IAAKkD,EAAKK,aACVC,KAAM,WACDzB,GAAc,CACjB0B,QAAS,WAAA,OAAMvB,GAAe,SAAAwB,GAAI,OAAKA,IAAK,IAI1CnD,EAAsB,CAC1BoD,KAAM,SACN,cAAc,EACd,eAAgB1B,EAChBjC,IAAKkD,EAAKU,YACVzD,MAAKO,EAAA,IAASuB,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,EAC9B+B,EAAKE,SAASkB,QACdJ,GAEIK,EAA0BpD,EAC9B+B,EAAKG,UAAUiB,QACfJ,GAIEjC,IADDoC,IAA4BE,GACQrC,GAAe,EAXpD,CAYJ,GAgBF,OACEpC,EAAAU,cAACK,EAAe2D,SAAQ,CAACC,MATe,CACxCxC,YAAAA,EACA3B,eAAAA,EACAgD,oBAAAA,EACA/C,oBAAAA,EACAmE,iBAVuB,CACvBjB,QAAS,WAAA,OAAMvB,GAAe,EAAM,EACpCsB,KAAM,YAaHvD,EAGP,6BAkBqE,SAGhE0E,GAAA,IAFH1E,IAAAA,SACG2E,EAAIC,EAAAF,EAAAG,GAEPC,EAA6B1E,IAC7B,OAAO2E,EAAAA,aAAa/E,SADZyE,iBACgDE,GAC1D,kDAjB6D,SAAiBK,GAAA,IAAdhF,IAAAA,SACtDqD,EAAwBjD,IAAxBiD,oBACFjC,EAAQvB,EAAMoF,SAASC,KAAKlF,GAClC,OAAO+E,EAAYA,aAAC3D,EAAOiC,EAC7B,kBEvD+C,SAc1C9B,GAAA,IAAA4D,EAAAC,EAAAC,EAbH1F,IAAAA,UACA2F,IAAAA,QACAtF,IAAAA,SACAC,IAAAA,UAASsF,EAAAhE,EACTiE,OAAAA,cAAcD,EAAAE,EAAAlE,EACdmE,qBAAAA,cAA4BD,EAAAE,EAAApE,EAC5BqE,qBAAAA,cAA4BD,EAAAE,EAAAtE,EAC5BuE,wBAAAA,cAA8BD,EAAAE,EAAAxE,EAC9ByE,oBAAAA,cAA0BD,EAAAE,EAAA1E,EAC1B2E,gBAAAA,cAAsBD,EACtBE,IAAAA,QACAjG,IAAAA,MACGyE,EAAIC,EAAArD,EAAAsD,GAE+BhD,EAAAA,EAAQA,SAAC2D,GAAxCY,EAAWC,EAAA,GAAEC,EAAcD,EAAA,GAC5BE,EAAkBC,SAAO,MACzBC,EAAYC,cAAY,eACxBC,EAAiBH,EAAAA,SACjBI,EAAkBJ,EAAAA,SAGxBtE,EAKIC,EAAAA,YAAY,CACdC,qBAAsB,SAACrC,EAAKsC,EAAOC,GAAM,OACvCC,aAAWxC,EAAKsC,EAAOC,EAAO,EAChC3C,UAAWD,EAAqBC,GAChC6C,WAAY,CACVC,EAAAA,OAAOC,EAAKA,MAACC,YACbC,EAAAA,OACAC,QAAM,CAAEC,QAASJ,EAAKA,MAACC,WAAYI,QAASC,EAAAA,WAAW,CAAEP,OAAQ,MACjEoE,EAAAA,MAAM,CACJC,QAASP,EACTzD,QAASiE,EAAcA,eAACC,YAd5B/D,IAAAA,KACA5C,IAAAA,eACA4G,IAAAA,eACWC,IAAXvH,UAgBIwH,EAAe,WACnBC,aAAaR,EAAgBvC,SAC7BsC,EAAetC,QAAUgD,YAAW,WAClCf,GAAe,EAChB,GAAE,MAGCgB,EAAe,WACnBF,aAAaT,EAAetC,SAC5BuC,EAAgBvC,QAAUgD,YAAW,WACnCf,GAAe,EAChB,GAAE,MAGLzG,EAAM0H,WAAU,WACd,OAAO,WACLH,aAAaT,EAAetC,SAC5B+C,aAAaR,EAAgBvC,SAEhC,GAAE,IAEH,IAAMmD,EAAsB/G,EAAA,CAC1B,mBAAoB2F,EAAcK,OAAY3F,IAEzC8E,GAAwB,CAAE6B,QAAS,WAAA,OAAMnB,GAAe,EAAK,IAC7DV,GAAwB,CAAE5B,OAAQ,WAAA,OAAMsC,GAAe,EAAM,IAE7DZ,GAAwB,CAAEyB,aAAAA,IAC1BzB,GAAwB,CAAE4B,aAAAA,IAE1BxB,GAA2B,CAC9BjC,UAAW,SAAA6D,GACK,WAAVA,EAAE3D,KAAkBuC,GAAe,GACzB,MAAVoB,EAAE3D,KAAyB,UAAV2D,EAAE3D,MACrB2D,EAAEC,iBACFrB,GAAgBF,GAEpB,IAGGJ,GAAuB,CAC1BxC,QAAS,WAAA,OAAM8C,GAAgBF,EAAY,IAI/C,OACEvG,EAAAU,cAAAV,EAAA+H,SAAA,KACG7C,EAAYA,aAAC/E,EAAQS,EAAA,CACpBV,IAAKkD,EAAKK,cACPkE,IAEL3H,EAAAU,cAAA,MAAAE,EAAA,CACER,UAAWS,EAAWT,EAAW,cAAe,CAC9C,wBAnII,UAmIqBkG,GAAiC,aAAZA,IAEhDpG,IAAKkD,EAAKU,YACVzD,WACKG,EAAc,CACjBuD,QAASwC,GAAed,OAAUxE,EAAY,QAC3CZ,GAELwD,KAAK,UACLmE,GAAIpB,EACJU,aAAezB,OAAsC5E,EAAfqG,EACtCG,aAAe5B,OAAsC5E,EAAfwG,GAClC3C,GAEHW,EACAE,GAAUU,GACTrG,EAAAU,cAACuH,aACC,CAAA7H,UAAU,4BACVuD,QAAS,WAAA,OAAM8C,GAAe,EAAM,EACpC/C,KAAK,SAAQ,aACF,gBAEX1D,EAAAU,cAACwH,YAAS,CAAA,cAAa,UAG3BlI,EACEU,cAAA,MAAA,CAAAN,UAAkCiH,wBAAAA,MAAAA,GAA2B,OAA3BA,EAAAA,EAAiBc,MAAM,WAAvBd,EAAA/B,EAA8B,IAChEpF,IAAKwG,EACLrG,MAAO,CACL+H,KAA0B,SAApBhB,EAAeJ,YAAK,EAApBzB,EAAsB8C,EAC5BC,WAAKlB,EAAAA,EAAeJ,cAAfxB,EAAsB+C,MAMvC"}
|
|
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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"}
|
package/dist/tooltip.esm.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { useRandomId, useOnClickOutside, mergeRefs, warnAboutMissingStyles } from '@entur/utils';
|
|
2
2
|
import React, { useState, useRef, 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, autoUpdate, offset, flip, shift, limitShift, arrow } 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
9
|
import { Contrast } from '@entur/layout';
|
|
9
10
|
|
|
10
11
|
function _extends() {
|
|
@@ -49,7 +50,7 @@ function standardisePlacement(placement) {
|
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "disableHoverListener", "disableFocusListener", "disableKeyboardListener", "disableClickListner", "showCloseButton", "variant", "style"];
|
|
53
|
+
var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "onClickCloseButton", "disableHoverListener", "disableFocusListener", "disableKeyboardListener", "disableClickListner", "showCloseButton", "variant", "hoverDelay", "style"];
|
|
53
54
|
/** @deprecated use variant="negative" instead */
|
|
54
55
|
var error = 'error';
|
|
55
56
|
var Tooltip = function Tooltip(_ref) {
|
|
@@ -58,8 +59,11 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
58
59
|
content = _ref.content,
|
|
59
60
|
children = _ref.children,
|
|
60
61
|
className = _ref.className,
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
isOpen = _ref.isOpen,
|
|
63
|
+
_ref$onClickCloseButt = _ref.onClickCloseButton,
|
|
64
|
+
onClickCloseButton = _ref$onClickCloseButt === void 0 ? function () {
|
|
65
|
+
return undefined;
|
|
66
|
+
} : _ref$onClickCloseButt,
|
|
63
67
|
_ref$disableHoverList = _ref.disableHoverListener,
|
|
64
68
|
disableHoverListener = _ref$disableHoverList === void 0 ? false : _ref$disableHoverList,
|
|
65
69
|
_ref$disableFocusList = _ref.disableFocusListener,
|
|
@@ -71,21 +75,24 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
71
75
|
_ref$showCloseButton = _ref.showCloseButton,
|
|
72
76
|
showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
|
|
73
77
|
variant = _ref.variant,
|
|
78
|
+
hoverDelay = _ref.hoverDelay,
|
|
74
79
|
style = _ref.style,
|
|
75
80
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
76
|
-
var _useState = useState(isOpen),
|
|
81
|
+
var _useState = useState(isOpen != null ? isOpen : false),
|
|
77
82
|
showTooltip = _useState[0],
|
|
78
83
|
setShowTooltip = _useState[1];
|
|
79
84
|
var tooltipArrowRef = useRef(null);
|
|
80
85
|
var tooltipId = useRandomId('eds-tooltip');
|
|
81
86
|
var hoverOpenTimer = useRef();
|
|
82
87
|
var hoverCloseTimer = useRef();
|
|
88
|
+
var isControlled = isOpen !== undefined;
|
|
83
89
|
// calculations for floating-UI tooltip position
|
|
84
90
|
var _useFloating = useFloating({
|
|
85
91
|
whileElementsMounted: function whileElementsMounted(ref, _float, update) {
|
|
86
92
|
return autoUpdate(ref, _float, update);
|
|
87
93
|
},
|
|
88
94
|
placement: standardisePlacement(placement),
|
|
95
|
+
open: showTooltip,
|
|
89
96
|
middleware: [offset(space.extraSmall), flip(), shift({
|
|
90
97
|
padding: space.extraSmall,
|
|
91
98
|
limiter: limitShift({
|
|
@@ -99,18 +106,23 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
99
106
|
refs = _useFloating.refs,
|
|
100
107
|
floatingStyles = _useFloating.floatingStyles,
|
|
101
108
|
middlewareData = _useFloating.middlewareData,
|
|
102
|
-
actualPlacement = _useFloating.placement
|
|
109
|
+
actualPlacement = _useFloating.placement,
|
|
110
|
+
isPositioned = _useFloating.isPositioned;
|
|
103
111
|
var onMouseEnter = function onMouseEnter() {
|
|
112
|
+
var _hoverDelay$enter;
|
|
113
|
+
if (isControlled) return;
|
|
104
114
|
clearTimeout(hoverCloseTimer.current);
|
|
105
115
|
hoverOpenTimer.current = setTimeout(function () {
|
|
106
116
|
setShowTooltip(true);
|
|
107
|
-
}, 150);
|
|
117
|
+
}, (_hoverDelay$enter = hoverDelay == null ? void 0 : hoverDelay.enter) != null ? _hoverDelay$enter : 150);
|
|
108
118
|
};
|
|
109
119
|
var onMouseLeave = function onMouseLeave() {
|
|
120
|
+
var _hoverDelay$leave;
|
|
121
|
+
if (isControlled) return;
|
|
110
122
|
clearTimeout(hoverOpenTimer.current);
|
|
111
123
|
hoverCloseTimer.current = setTimeout(function () {
|
|
112
124
|
setShowTooltip(false);
|
|
113
|
-
}, 300);
|
|
125
|
+
}, (_hoverDelay$leave = hoverDelay == null ? void 0 : hoverDelay.leave) != null ? _hoverDelay$leave : 300);
|
|
114
126
|
};
|
|
115
127
|
React.useEffect(function () {
|
|
116
128
|
return function () {
|
|
@@ -118,21 +130,24 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
118
130
|
clearTimeout(hoverCloseTimer.current);
|
|
119
131
|
};
|
|
120
132
|
}, []);
|
|
133
|
+
React.useEffect(function () {
|
|
134
|
+
if (isOpen !== undefined) setShowTooltip(isOpen);
|
|
135
|
+
}, [isOpen]);
|
|
121
136
|
var referenceListenerProps = _extends({
|
|
122
137
|
'aria-describedby': showTooltip ? tooltipId : undefined
|
|
123
|
-
}, !disableFocusListener && {
|
|
138
|
+
}, !disableFocusListener && !isControlled && {
|
|
124
139
|
onFocus: function onFocus() {
|
|
125
140
|
return setShowTooltip(true);
|
|
126
141
|
}
|
|
127
|
-
}, !disableFocusListener && {
|
|
142
|
+
}, !disableFocusListener && !isControlled && {
|
|
128
143
|
onBlur: function onBlur() {
|
|
129
144
|
return setShowTooltip(false);
|
|
130
145
|
}
|
|
131
|
-
}, !disableHoverListener && {
|
|
146
|
+
}, !disableHoverListener && !isControlled && {
|
|
132
147
|
onMouseEnter: onMouseEnter
|
|
133
|
-
}, !disableHoverListener && {
|
|
148
|
+
}, !disableHoverListener && !isControlled && {
|
|
134
149
|
onMouseLeave: onMouseLeave
|
|
135
|
-
}, !disableKeyboardListener && {
|
|
150
|
+
}, !disableKeyboardListener && !isControlled && {
|
|
136
151
|
onKeyDown: function onKeyDown(e) {
|
|
137
152
|
if (e.key === 'Escape') setShowTooltip(false);
|
|
138
153
|
if (e.key === ' ' || e.key === 'Enter') {
|
|
@@ -140,11 +155,12 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
140
155
|
setShowTooltip(!showTooltip);
|
|
141
156
|
}
|
|
142
157
|
}
|
|
143
|
-
}, !disableClickListner && {
|
|
158
|
+
}, !disableClickListner && !isControlled && {
|
|
144
159
|
onClick: function onClick() {
|
|
145
160
|
return setShowTooltip(!showTooltip);
|
|
146
161
|
}
|
|
147
162
|
});
|
|
163
|
+
var displayTooltipStyle = (!isControlled || isPositioned) && showTooltip && content ? undefined : 'none';
|
|
148
164
|
return React.createElement(React.Fragment, null, cloneElement(children, _extends({
|
|
149
165
|
ref: refs.setReference
|
|
150
166
|
}, referenceListenerProps)), React.createElement("div", _extends({
|
|
@@ -153,7 +169,7 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
153
169
|
}),
|
|
154
170
|
ref: refs.setFloating,
|
|
155
171
|
style: _extends({}, floatingStyles, {
|
|
156
|
-
display:
|
|
172
|
+
display: displayTooltipStyle
|
|
157
173
|
}, style),
|
|
158
174
|
role: "tooltip",
|
|
159
175
|
id: tooltipId,
|
|
@@ -162,7 +178,8 @@ var Tooltip = function Tooltip(_ref) {
|
|
|
162
178
|
}, rest), content, isOpen && showCloseButton && React.createElement(IconButton, {
|
|
163
179
|
className: "eds-tooltip__close-button",
|
|
164
180
|
onClick: function onClick() {
|
|
165
|
-
|
|
181
|
+
setShowTooltip(false);
|
|
182
|
+
onClickCloseButton();
|
|
166
183
|
},
|
|
167
184
|
type: "button",
|
|
168
185
|
"aria-label": "Lukk tooltip"
|
|
@@ -190,14 +207,14 @@ var Popover = function Popover(_ref) {
|
|
|
190
207
|
setShowPopover = _useCustomState[1],
|
|
191
208
|
controlled = _useCustomState[2];
|
|
192
209
|
// calculations for floating-UI popover position
|
|
193
|
-
var _useFloating = useFloating({
|
|
210
|
+
var _useFloating = useFloating$1({
|
|
194
211
|
whileElementsMounted: function whileElementsMounted(ref, _float, update) {
|
|
195
|
-
return autoUpdate(ref, _float, update);
|
|
212
|
+
return autoUpdate$1(ref, _float, update);
|
|
196
213
|
},
|
|
197
214
|
placement: standardisePlacement(placement),
|
|
198
|
-
middleware: [offset(space.extraSmall), flip(), shift({
|
|
215
|
+
middleware: [offset$1(space.extraSmall), flip$1(), shift$1({
|
|
199
216
|
padding: space.extraSmall,
|
|
200
|
-
limiter: limitShift({
|
|
217
|
+
limiter: limitShift$1({
|
|
201
218
|
offset: 8
|
|
202
219
|
})
|
|
203
220
|
})]
|
|
@@ -309,5 +326,5 @@ function elementContainsElement(parent, child) {
|
|
|
309
326
|
|
|
310
327
|
warnAboutMissingStyles('tooltip');
|
|
311
328
|
|
|
312
|
-
export { Popover, PopoverCloseButton, PopoverContent, PopoverTrigger, Tooltip };
|
|
329
|
+
export { Popover, PopoverCloseButton, PopoverContent, PopoverTrigger, Tooltip, standardisePlacement };
|
|
313
330
|
//# sourceMappingURL=tooltip.esm.js.map
|
package/dist/tooltip.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.esm.js","sources":["../src/utils.ts","../src/Tooltip.tsx","../src/Popover.tsx","../src/index.tsx"],"sourcesContent":["import { Placement as FloatingUIPlacement } from '@floating-ui/react-dom';\n\nexport type Placement =\n | 'top'\n | 'top-left'\n | 'top-start'\n | 'top-right'\n | 'top-end'\n | 'left'\n | 'right'\n | 'bottom-left'\n | 'bottom-start'\n | 'bottom'\n | 'bottom-right'\n | 'bottom-end';\n\nexport function standardisePlacement(placement: string): FloatingUIPlacement {\n switch (placement) {\n case 'top-left':\n return 'top-start';\n case 'top-right':\n return 'top-end';\n case 'bottom-left':\n return 'bottom-start';\n case 'bottom-right':\n return 'bottom-end';\n default:\n return placement as FloatingUIPlacement;\n }\n}\n","import React, { cloneElement, 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-dom';\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 /** 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 /** @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 = false,\n disableHoverListener = false,\n disableFocusListener = false,\n disableKeyboardListener = true,\n disableClickListner = true,\n showCloseButton = true,\n variant,\n style,\n ...rest\n}) => {\n const [showTooltip, setShowTooltip] = useState(isOpen);\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 // calculations for floating-UI tooltip position\n const {\n refs,\n floatingStyles,\n middlewareData,\n placement: actualPlacement,\n } = useFloating({\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 arrow({\n element: tooltipArrowRef,\n padding: borderRadiuses.medium,\n }),\n ],\n });\n\n const onMouseEnter = () => {\n clearTimeout(hoverCloseTimer.current);\n hoverOpenTimer.current = setTimeout(() => {\n setShowTooltip(true);\n }, 150);\n };\n\n const onMouseLeave = () => {\n clearTimeout(hoverOpenTimer.current);\n hoverCloseTimer.current = setTimeout(() => {\n setShowTooltip(false);\n }, 300);\n };\n\n React.useEffect(() => {\n return () => {\n clearTimeout(hoverOpenTimer.current);\n clearTimeout(hoverCloseTimer.current);\n };\n }, []);\n\n const referenceListenerProps: ChildEventListner = {\n 'aria-describedby': showTooltip ? tooltipId : undefined,\n // focusListner\n ...(!disableFocusListener && { onFocus: () => setShowTooltip(true) }),\n ...(!disableFocusListener && { onBlur: () => setShowTooltip(false) }),\n // hoverListner\n ...(!disableHoverListener && { onMouseEnter }),\n ...(!disableHoverListener && { onMouseLeave }),\n // keyboardListner\n ...(!disableKeyboardListener && {\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 onClick: () => setShowTooltip(!showTooltip),\n }),\n };\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: showTooltip && content ? undefined : 'none',\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={() => setShowTooltip(false)}\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 } from './utils';\n"],"names":["standardisePlacement","placement","error","Tooltip","content","children","className","isOpen","disableHoverListener","disableFocusListener","disableKeyboardListener","disableClickListner","showCloseButton","variant","style","rest","_excluded","useState","showTooltip","setShowTooltip","tooltipArrowRef","useRef","tooltipId","useRandomId","hoverOpenTimer","hoverCloseTimer","useFloating","whileElementsMounted","ref","float","update","autoUpdate","middleware","offset","space","extraSmall","flip","shift","padding","limiter","limitShift","arrow","element","borderRadiuses","medium","refs","floatingStyles","middlewareData","actualPlacement","onMouseEnter","clearTimeout","current","setTimeout","onMouseLeave","React","useEffect","referenceListenerProps","undefined","onFocus","onBlur","onKeyDown","e","key","preventDefault","onClick","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, 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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur/tooltip",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/tooltip.esm.js",
|
|
@@ -27,13 +27,14 @@
|
|
|
27
27
|
"react-dom": ">=16.8.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@entur/button": "^3.2.
|
|
31
|
-
"@entur/icons": "^7.4.
|
|
32
|
-
"@entur/layout": "^2.3.
|
|
33
|
-
"@entur/tokens": "^3.17.
|
|
34
|
-
"@entur/utils": "^0.
|
|
30
|
+
"@entur/button": "^3.2.33",
|
|
31
|
+
"@entur/icons": "^7.4.1",
|
|
32
|
+
"@entur/layout": "^2.3.17",
|
|
33
|
+
"@entur/tokens": "^3.17.1",
|
|
34
|
+
"@entur/utils": "^0.12.0",
|
|
35
|
+
"@floating-ui/react": "^0.26.24",
|
|
35
36
|
"@floating-ui/react-dom": "^2.1.0",
|
|
36
37
|
"classnames": "^2.3.1"
|
|
37
38
|
},
|
|
38
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "7df4cea445e3dac77f80619ea0c298dc0b5c31e0"
|
|
39
40
|
}
|