@entur/tooltip 5.2.13-beta.3 → 5.2.13-beta.5
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/Popover.d.ts +33 -0
- package/dist/Tooltip.d.ts +62 -0
- package/dist/index.d.ts +4 -108
- package/dist/index.js +8 -0
- package/dist/styles.css +743 -677
- package/dist/tooltip.cjs.development.js +347 -0
- package/dist/tooltip.cjs.development.js.map +1 -0
- package/dist/tooltip.cjs.production.min.js +2 -0
- package/dist/tooltip.cjs.production.min.js.map +1 -0
- package/dist/tooltip.esm.js +278 -248
- package/dist/tooltip.esm.js.map +1 -1
- package/dist/utils.d.ts +3 -0
- package/package.json +16 -26
- package/dist/tooltip.cjs.js +0 -308
- package/dist/tooltip.cjs.js.map +0 -1
package/dist/tooltip.esm.js
CHANGED
|
@@ -1,294 +1,329 @@
|
|
|
1
|
-
import { useRandomId,
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
1
|
+
import { useRandomId, useOnClickOutside, mergeRefs, warnAboutMissingStyles } from '@entur/utils';
|
|
2
|
+
import React, { useState, useRef, useEffect, cloneElement, createContext, useContext } from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { useFloating, offset, flip, shift, limitShift, arrow, autoUpdate } from '@floating-ui/react';
|
|
5
|
+
import { CloseIcon } from '@entur/icons';
|
|
6
|
+
import { IconButton } from '@entur/button';
|
|
7
|
+
import { space, borderRadiuses } from '@entur/tokens';
|
|
8
|
+
import { useFloating as useFloating$1, offset as offset$1, flip as flip$1, shift as shift$1, limitShift as limitShift$1, autoUpdate as autoUpdate$1 } from '@floating-ui/react-dom';
|
|
9
|
+
import { Contrast } from '@entur/layout';
|
|
10
|
+
|
|
11
|
+
function _extends() {
|
|
12
|
+
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
13
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
14
|
+
var t = arguments[e];
|
|
15
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
16
|
+
}
|
|
17
|
+
return n;
|
|
18
|
+
}, _extends.apply(null, arguments);
|
|
19
|
+
}
|
|
20
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
|
21
|
+
if (null == r) return {};
|
|
22
|
+
var t = {};
|
|
23
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
24
|
+
if (-1 !== e.indexOf(n)) continue;
|
|
25
|
+
t[n] = r[n];
|
|
26
|
+
}
|
|
27
|
+
return t;
|
|
28
|
+
}
|
|
29
|
+
|
|
11
30
|
function standardisePlacement(placement) {
|
|
12
31
|
switch (placement) {
|
|
13
|
-
case
|
|
14
|
-
return
|
|
15
|
-
case
|
|
16
|
-
return
|
|
17
|
-
case
|
|
18
|
-
return
|
|
19
|
-
case
|
|
20
|
-
return
|
|
32
|
+
case 'top-left':
|
|
33
|
+
return 'top-start';
|
|
34
|
+
case 'top-right':
|
|
35
|
+
return 'top-end';
|
|
36
|
+
case 'bottom-left':
|
|
37
|
+
return 'bottom-start';
|
|
38
|
+
case 'bottom-right':
|
|
39
|
+
return 'bottom-end';
|
|
21
40
|
default:
|
|
22
41
|
return placement;
|
|
23
42
|
}
|
|
24
43
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
44
|
+
|
|
45
|
+
var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "onClickCloseButton", "disableHoverListener", "disableFocusListener", "disableKeyboardListener", "disableClickListner", "showCloseButton", "variant", "hoverDelay", "style"];
|
|
46
|
+
/** @deprecated use variant="negative" instead */
|
|
47
|
+
var error = 'error';
|
|
48
|
+
var Tooltip = function Tooltip(_ref) {
|
|
49
|
+
var _actualPlacement$spli, _middlewareData$arrow, _middlewareData$arrow2;
|
|
50
|
+
var placement = _ref.placement,
|
|
51
|
+
content = _ref.content,
|
|
52
|
+
children = _ref.children,
|
|
53
|
+
className = _ref.className,
|
|
54
|
+
isOpen = _ref.isOpen,
|
|
55
|
+
_ref$onClickCloseButt = _ref.onClickCloseButton,
|
|
56
|
+
onClickCloseButton = _ref$onClickCloseButt === void 0 ? function () {
|
|
57
|
+
return undefined;
|
|
58
|
+
} : _ref$onClickCloseButt,
|
|
59
|
+
_ref$disableHoverList = _ref.disableHoverListener,
|
|
60
|
+
disableHoverListener = _ref$disableHoverList === void 0 ? false : _ref$disableHoverList,
|
|
61
|
+
_ref$disableFocusList = _ref.disableFocusListener,
|
|
62
|
+
disableFocusListener = _ref$disableFocusList === void 0 ? false : _ref$disableFocusList,
|
|
63
|
+
_ref$disableKeyboardL = _ref.disableKeyboardListener,
|
|
64
|
+
disableKeyboardListener = _ref$disableKeyboardL === void 0 ? true : _ref$disableKeyboardL,
|
|
65
|
+
_ref$disableClickList = _ref.disableClickListner,
|
|
66
|
+
disableClickListner = _ref$disableClickList === void 0 ? true : _ref$disableClickList,
|
|
67
|
+
_ref$showCloseButton = _ref.showCloseButton,
|
|
68
|
+
showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
|
|
69
|
+
variant = _ref.variant,
|
|
70
|
+
hoverDelay = _ref.hoverDelay,
|
|
71
|
+
style = _ref.style,
|
|
72
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
73
|
+
var _useState = useState(isOpen != null ? isOpen : false),
|
|
74
|
+
showTooltip = _useState[0],
|
|
75
|
+
setShowTooltip = _useState[1];
|
|
76
|
+
var tooltipArrowRef = useRef(null);
|
|
77
|
+
var tooltipId = useRandomId('eds-tooltip');
|
|
78
|
+
var hoverOpenTimer = useRef();
|
|
79
|
+
var hoverCloseTimer = useRef();
|
|
80
|
+
var isControlled = isOpen !== undefined;
|
|
81
|
+
// calculations for floating-UI tooltip position
|
|
82
|
+
var _useFloating = useFloating({
|
|
83
|
+
placement: standardisePlacement(placement),
|
|
84
|
+
open: showTooltip,
|
|
85
|
+
middleware: [offset(space.extraSmall), flip(), shift({
|
|
86
|
+
padding: space.extraSmall,
|
|
87
|
+
limiter: limitShift({
|
|
88
|
+
offset: 8
|
|
89
|
+
})
|
|
90
|
+
}), arrow({
|
|
65
91
|
element: tooltipArrowRef,
|
|
66
92
|
padding: borderRadiuses.medium
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
93
|
+
})]
|
|
94
|
+
}),
|
|
95
|
+
refs = _useFloating.refs,
|
|
96
|
+
floatingStyles = _useFloating.floatingStyles,
|
|
97
|
+
middlewareData = _useFloating.middlewareData,
|
|
98
|
+
actualPlacement = _useFloating.placement,
|
|
99
|
+
isPositioned = _useFloating.isPositioned,
|
|
100
|
+
update = _useFloating.update,
|
|
101
|
+
elements = _useFloating.elements;
|
|
102
|
+
// Since we use CSS instead of conditional rendering when hiding tooltip
|
|
103
|
+
// we can't use the whileElementsMounted option and need to handle
|
|
104
|
+
// cleanup ourselves. See https://floating-ui.com/docs/autoupdate
|
|
105
|
+
useEffect(function () {
|
|
71
106
|
if (showTooltip && elements.reference && elements.floating) {
|
|
72
|
-
|
|
107
|
+
var cleanup = autoUpdate(elements.reference, elements.floating, update);
|
|
73
108
|
return cleanup;
|
|
74
109
|
}
|
|
75
110
|
}, [showTooltip, elements, update]);
|
|
76
|
-
|
|
111
|
+
var onMouseEnter = function onMouseEnter() {
|
|
112
|
+
var _hoverDelay$enter;
|
|
77
113
|
if (isControlled) return;
|
|
78
114
|
clearTimeout(hoverCloseTimer.current);
|
|
79
|
-
hoverOpenTimer.current = setTimeout(()
|
|
115
|
+
hoverOpenTimer.current = setTimeout(function () {
|
|
80
116
|
setShowTooltip(true);
|
|
81
|
-
}, hoverDelay
|
|
117
|
+
}, (_hoverDelay$enter = hoverDelay == null ? void 0 : hoverDelay.enter) != null ? _hoverDelay$enter : 150);
|
|
82
118
|
};
|
|
83
|
-
|
|
119
|
+
var onMouseLeave = function onMouseLeave() {
|
|
120
|
+
var _hoverDelay$leave;
|
|
84
121
|
if (isControlled) return;
|
|
85
122
|
clearTimeout(hoverOpenTimer.current);
|
|
86
|
-
hoverCloseTimer.current = setTimeout(()
|
|
123
|
+
hoverCloseTimer.current = setTimeout(function () {
|
|
87
124
|
setShowTooltip(false);
|
|
88
|
-
}, hoverDelay
|
|
125
|
+
}, (_hoverDelay$leave = hoverDelay == null ? void 0 : hoverDelay.leave) != null ? _hoverDelay$leave : 300);
|
|
89
126
|
};
|
|
90
|
-
React.useEffect(()
|
|
91
|
-
return ()
|
|
127
|
+
React.useEffect(function () {
|
|
128
|
+
return function () {
|
|
92
129
|
clearTimeout(hoverOpenTimer.current);
|
|
93
130
|
clearTimeout(hoverCloseTimer.current);
|
|
94
131
|
};
|
|
95
132
|
}, []);
|
|
96
|
-
React.useEffect(()
|
|
97
|
-
if (isOpen !==
|
|
133
|
+
React.useEffect(function () {
|
|
134
|
+
if (isOpen !== undefined) setShowTooltip(isOpen);
|
|
98
135
|
}, [isOpen]);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
136
|
+
var referenceListenerProps = _extends({
|
|
137
|
+
'aria-describedby': showTooltip ? tooltipId : undefined
|
|
138
|
+
}, !disableFocusListener && !isControlled && {
|
|
139
|
+
onFocus: function onFocus() {
|
|
140
|
+
return setShowTooltip(true);
|
|
141
|
+
}
|
|
142
|
+
}, !disableFocusListener && !isControlled && {
|
|
143
|
+
onBlur: function onBlur() {
|
|
144
|
+
return setShowTooltip(false);
|
|
145
|
+
}
|
|
146
|
+
}, !disableHoverListener && !isControlled && {
|
|
147
|
+
onMouseEnter: onMouseEnter
|
|
148
|
+
}, !disableHoverListener && !isControlled && {
|
|
149
|
+
onMouseLeave: onMouseLeave
|
|
150
|
+
}, !disableKeyboardListener && !isControlled && {
|
|
151
|
+
onKeyDown: function onKeyDown(e) {
|
|
152
|
+
if (e.key === 'Escape') setShowTooltip(false);
|
|
153
|
+
if (e.key === ' ' || e.key === 'Enter') {
|
|
154
|
+
e.preventDefault();
|
|
155
|
+
setShowTooltip(!showTooltip);
|
|
115
156
|
}
|
|
116
|
-
},
|
|
117
|
-
// clickListner
|
|
118
|
-
...!disableClickListner && !isControlled && {
|
|
119
|
-
onClick: () => setShowTooltip(!showTooltip)
|
|
120
157
|
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
158
|
+
}, !disableClickListner && !isControlled && {
|
|
159
|
+
onClick: function onClick() {
|
|
160
|
+
return setShowTooltip(!showTooltip);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
var displayTooltipStyle = (!isControlled || isPositioned) && showTooltip && content ? undefined : 'none';
|
|
164
|
+
return React.createElement(React.Fragment, null, cloneElement(children, _extends({
|
|
165
|
+
ref: refs.setReference
|
|
166
|
+
}, referenceListenerProps)), React.createElement("div", _extends({
|
|
167
|
+
className: classNames(className, 'eds-tooltip', {
|
|
168
|
+
'eds-tooltip--negative': variant === error || variant === 'negative'
|
|
127
169
|
}),
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
},
|
|
155
|
-
type: "button",
|
|
156
|
-
"aria-label": "Lukk tooltip",
|
|
157
|
-
children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": "true" })
|
|
158
|
-
}
|
|
159
|
-
),
|
|
160
|
-
/* @__PURE__ */ jsx(
|
|
161
|
-
"div",
|
|
162
|
-
{
|
|
163
|
-
className: `eds-tooltip__arrow--${actualPlacement?.split("-")?.[0]}`,
|
|
164
|
-
ref: tooltipArrowRef,
|
|
165
|
-
style: {
|
|
166
|
-
left: middlewareData.arrow?.x,
|
|
167
|
-
top: middlewareData.arrow?.y
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
)
|
|
171
|
-
]
|
|
172
|
-
}
|
|
173
|
-
)
|
|
174
|
-
] });
|
|
170
|
+
ref: refs.setFloating,
|
|
171
|
+
style: _extends({}, floatingStyles, {
|
|
172
|
+
display: displayTooltipStyle
|
|
173
|
+
}, style),
|
|
174
|
+
role: "tooltip",
|
|
175
|
+
id: tooltipId,
|
|
176
|
+
onMouseEnter: !disableHoverListener ? onMouseEnter : undefined,
|
|
177
|
+
onMouseLeave: !disableHoverListener ? onMouseLeave : undefined
|
|
178
|
+
}, rest), content, isOpen && showCloseButton && React.createElement(IconButton, {
|
|
179
|
+
className: "eds-tooltip__close-button",
|
|
180
|
+
onClick: function onClick() {
|
|
181
|
+
setShowTooltip(false);
|
|
182
|
+
onClickCloseButton();
|
|
183
|
+
},
|
|
184
|
+
type: "button",
|
|
185
|
+
"aria-label": "Lukk tooltip"
|
|
186
|
+
}, React.createElement(CloseIcon, {
|
|
187
|
+
"aria-hidden": "true"
|
|
188
|
+
})), React.createElement("div", {
|
|
189
|
+
className: "eds-tooltip__arrow--" + (actualPlacement == null || (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
|
|
190
|
+
ref: tooltipArrowRef,
|
|
191
|
+
style: {
|
|
192
|
+
left: (_middlewareData$arrow = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow.x,
|
|
193
|
+
top: (_middlewareData$arrow2 = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow2.y
|
|
194
|
+
}
|
|
195
|
+
})));
|
|
175
196
|
};
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
shift$1({
|
|
197
|
+
|
|
198
|
+
var _excluded = ["children"];
|
|
199
|
+
var Popover = function Popover(_ref) {
|
|
200
|
+
var children = _ref.children,
|
|
201
|
+
_ref$placement = _ref.placement,
|
|
202
|
+
placement = _ref$placement === void 0 ? 'bottom-start' : _ref$placement,
|
|
203
|
+
controlledState = _ref.showPopover,
|
|
204
|
+
setControlledState = _ref.setShowPopover;
|
|
205
|
+
var _useCustomState = useCustomState(controlledState, setControlledState),
|
|
206
|
+
showPopover = _useCustomState[0],
|
|
207
|
+
setShowPopover = _useCustomState[1],
|
|
208
|
+
controlled = _useCustomState[2];
|
|
209
|
+
// calculations for floating-UI popover position
|
|
210
|
+
var _useFloating = useFloating$1({
|
|
211
|
+
placement: standardisePlacement(placement),
|
|
212
|
+
middleware: [offset$1(space.extraSmall), flip$1(), shift$1({
|
|
192
213
|
padding: space.extraSmall,
|
|
193
|
-
limiter: limitShift$1({
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
214
|
+
limiter: limitShift$1({
|
|
215
|
+
offset: 8
|
|
216
|
+
})
|
|
217
|
+
})]
|
|
218
|
+
}),
|
|
219
|
+
refs = _useFloating.refs,
|
|
220
|
+
floatingStyles = _useFloating.floatingStyles,
|
|
221
|
+
elements = _useFloating.elements,
|
|
222
|
+
update = _useFloating.update;
|
|
223
|
+
// Since we use CSS instead of conditional rendering when hiding dropdownlist
|
|
224
|
+
// we can't use the whileElementsMounted option and need to handle
|
|
225
|
+
// cleanup ourselves. See https://floating-ui.com/docs/autoupdate
|
|
226
|
+
useEffect(function () {
|
|
198
227
|
if (showPopover && elements.reference && elements.floating) {
|
|
199
|
-
|
|
228
|
+
var cleanup = autoUpdate$1(elements.reference, elements.floating, update);
|
|
200
229
|
return cleanup;
|
|
201
230
|
}
|
|
202
231
|
}, [showPopover, elements, update]);
|
|
203
|
-
useOnClickOutside(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
"aria-expanded": showPopover,
|
|
232
|
+
useOnClickOutside([refs.floating, refs.reference], function () {
|
|
233
|
+
return setShowPopover(false);
|
|
234
|
+
});
|
|
235
|
+
var popoverTriggerProps = _extends({
|
|
236
|
+
'aria-haspopup': 'dialog',
|
|
237
|
+
'aria-expanded': showPopover,
|
|
210
238
|
ref: refs.setReference,
|
|
211
|
-
type:
|
|
212
|
-
|
|
213
|
-
|
|
239
|
+
type: 'button'
|
|
240
|
+
}, !controlled && {
|
|
241
|
+
onClick: function onClick() {
|
|
242
|
+
return setShowPopover(function (prev) {
|
|
243
|
+
return !prev;
|
|
244
|
+
});
|
|
214
245
|
}
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
role:
|
|
218
|
-
|
|
219
|
-
|
|
246
|
+
});
|
|
247
|
+
var popoverContentProps = {
|
|
248
|
+
role: 'dialog',
|
|
249
|
+
'aria-modal': false,
|
|
250
|
+
'aria-hidden': !showPopover,
|
|
220
251
|
ref: refs.setFloating,
|
|
221
|
-
style: {
|
|
222
|
-
|
|
223
|
-
|
|
252
|
+
style: _extends({}, !showPopover && {
|
|
253
|
+
display: 'none'
|
|
254
|
+
}),
|
|
255
|
+
onKeyDown: function onKeyDown(event) {
|
|
256
|
+
if (event.key === 'Escape') setShowPopover(false);
|
|
224
257
|
},
|
|
225
|
-
onBlur: (event)
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
);
|
|
233
|
-
const focusedElementIsTrigger = elementContainsElement(
|
|
234
|
-
refs.reference.current,
|
|
235
|
-
elementReceivingFocus
|
|
236
|
-
);
|
|
237
|
-
const popoverShouldClose = !focusedElementIsPopover && !focusedElementIsTrigger;
|
|
258
|
+
onBlur: function onBlur(event) {
|
|
259
|
+
var elementReceivingFocus = event.relatedTarget;
|
|
260
|
+
// The check for 'tabindex=-1' is a special case for focus handling in Docz
|
|
261
|
+
if (!elementReceivingFocus || elementReceivingFocus.getAttribute('tabindex') === '-1') return;
|
|
262
|
+
var focusedElementIsPopover = elementContainsElement(refs.floating.current, elementReceivingFocus);
|
|
263
|
+
var focusedElementIsTrigger = elementContainsElement(refs.reference.current, elementReceivingFocus);
|
|
264
|
+
var popoverShouldClose = !focusedElementIsPopover && !focusedElementIsTrigger;
|
|
238
265
|
if (showPopover && popoverShouldClose) setShowPopover(false);
|
|
239
266
|
}
|
|
240
267
|
};
|
|
241
|
-
|
|
242
|
-
onClick: ()
|
|
243
|
-
|
|
268
|
+
var closeButtonProps = {
|
|
269
|
+
onClick: function onClick() {
|
|
270
|
+
return setShowPopover(false);
|
|
271
|
+
},
|
|
272
|
+
type: 'button'
|
|
244
273
|
};
|
|
245
|
-
|
|
246
|
-
showPopover,
|
|
247
|
-
floatingStyles,
|
|
248
|
-
popoverTriggerProps,
|
|
249
|
-
popoverContentProps,
|
|
250
|
-
closeButtonProps
|
|
274
|
+
var contextValue = {
|
|
275
|
+
showPopover: showPopover,
|
|
276
|
+
floatingStyles: floatingStyles,
|
|
277
|
+
popoverTriggerProps: popoverTriggerProps,
|
|
278
|
+
popoverContentProps: popoverContentProps,
|
|
279
|
+
closeButtonProps: closeButtonProps
|
|
251
280
|
};
|
|
252
|
-
return
|
|
281
|
+
return React.createElement(PopoverContext.Provider, {
|
|
282
|
+
value: contextValue
|
|
283
|
+
}, children);
|
|
253
284
|
};
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
285
|
+
var PopoverTrigger = function PopoverTrigger(_ref2) {
|
|
286
|
+
var children = _ref2.children;
|
|
287
|
+
var _usePopoverContext = usePopoverContext(),
|
|
288
|
+
popoverTriggerProps = _usePopoverContext.popoverTriggerProps;
|
|
289
|
+
var child = React.Children.only(children);
|
|
257
290
|
return cloneElement(child, popoverTriggerProps);
|
|
258
291
|
};
|
|
259
|
-
|
|
260
|
-
children,
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
return cloneElement(children, {
|
|
292
|
+
var PopoverCloseButton = function PopoverCloseButton(_ref3) {
|
|
293
|
+
var children = _ref3.children,
|
|
294
|
+
rest = _objectWithoutPropertiesLoose(_ref3, _excluded);
|
|
295
|
+
var _usePopoverContext2 = usePopoverContext(),
|
|
296
|
+
closeButtonProps = _usePopoverContext2.closeButtonProps;
|
|
297
|
+
return cloneElement(children, _extends({}, closeButtonProps, rest));
|
|
265
298
|
};
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
|
|
299
|
+
var PopoverContent = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
|
|
300
|
+
var children = _ref4.children,
|
|
301
|
+
className = _ref4.className,
|
|
302
|
+
style = _ref4.style;
|
|
303
|
+
var _usePopoverContext3 = usePopoverContext(),
|
|
304
|
+
floatingStyles = _usePopoverContext3.floatingStyles,
|
|
305
|
+
popoverContentProps = _usePopoverContext3.popoverContentProps;
|
|
306
|
+
return React.createElement(Contrast, _extends({
|
|
307
|
+
className: classNames(className, 'eds-popover')
|
|
308
|
+
}, popoverContentProps, {
|
|
309
|
+
style: _extends({}, floatingStyles, popoverContentProps.style, style),
|
|
310
|
+
// @ts-expect-error correct type for floating cannot be set via useFloating
|
|
311
|
+
ref: mergeRefs(popoverContentProps.ref, ref)
|
|
312
|
+
}), children);
|
|
278
313
|
});
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
);
|
|
282
|
-
const usePopoverContext = () => {
|
|
283
|
-
const context = useContext(PopoverContext);
|
|
314
|
+
var PopoverContext = /*#__PURE__*/createContext(undefined);
|
|
315
|
+
var usePopoverContext = function usePopoverContext() {
|
|
316
|
+
var context = useContext(PopoverContext);
|
|
284
317
|
if (context == null) {
|
|
285
|
-
throw Error(
|
|
318
|
+
throw Error('usePopoverContext must be used within <Popover/>');
|
|
286
319
|
}
|
|
287
320
|
return context;
|
|
288
321
|
};
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
322
|
+
var useCustomState = function useCustomState(state, setState) {
|
|
323
|
+
var _React$useState = React.useState(false),
|
|
324
|
+
internalState = _React$useState[0],
|
|
325
|
+
setInternalState = _React$useState[1];
|
|
326
|
+
var controlled = state !== undefined && setState !== undefined;
|
|
292
327
|
if (controlled) return [state, setState, controlled];
|
|
293
328
|
return [internalState, setInternalState, controlled];
|
|
294
329
|
};
|
|
@@ -296,13 +331,8 @@ function elementContainsElement(parent, child) {
|
|
|
296
331
|
if (!parent) return false;
|
|
297
332
|
return parent === child || parent.contains(child);
|
|
298
333
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
PopoverContent,
|
|
304
|
-
PopoverTrigger,
|
|
305
|
-
Tooltip,
|
|
306
|
-
standardisePlacement
|
|
307
|
-
};
|
|
334
|
+
|
|
335
|
+
warnAboutMissingStyles('tooltip');
|
|
336
|
+
|
|
337
|
+
export { Popover, PopoverCloseButton, PopoverContent, PopoverTrigger, Tooltip, standardisePlacement };
|
|
308
338
|
//# sourceMappingURL=tooltip.esm.js.map
|