@entur/tooltip 2.5.23 → 2.6.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.
@@ -10,68 +10,77 @@ function _extends() {
10
10
  _extends = Object.assign || function (target) {
11
11
  for (var i = 1; i < arguments.length; i++) {
12
12
  var source = arguments[i];
13
+
13
14
  for (var key in source) {
14
15
  if (Object.prototype.hasOwnProperty.call(source, key)) {
15
16
  target[key] = source[key];
16
17
  }
17
18
  }
18
19
  }
20
+
19
21
  return target;
20
22
  };
23
+
21
24
  return _extends.apply(this, arguments);
22
25
  }
26
+
23
27
  function _objectWithoutPropertiesLoose(source, excluded) {
24
28
  if (source == null) return {};
25
29
  var target = {};
26
30
  var sourceKeys = Object.keys(source);
27
31
  var key, i;
32
+
28
33
  for (i = 0; i < sourceKeys.length; i++) {
29
34
  key = sourceKeys[i];
30
35
  if (excluded.indexOf(key) >= 0) continue;
31
36
  target[key] = source[key];
32
37
  }
38
+
33
39
  return target;
34
40
  }
35
41
 
36
42
  var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "disableHoverListener", "disableFocusListener", "showCloseButton", "variant", "popperModifiers"];
37
43
  var Tooltip = function Tooltip(_ref) {
38
44
  var placement = _ref.placement,
39
- content = _ref.content,
40
- children = _ref.children,
41
- className = _ref.className,
42
- _ref$isOpen = _ref.isOpen,
43
- isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
44
- _ref$disableHoverList = _ref.disableHoverListener,
45
- disableHoverListener = _ref$disableHoverList === void 0 ? false : _ref$disableHoverList,
46
- _ref$disableFocusList = _ref.disableFocusListener,
47
- disableFocusListener = _ref$disableFocusList === void 0 ? false : _ref$disableFocusList,
48
- _ref$showCloseButton = _ref.showCloseButton,
49
- showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
50
- variant = _ref.variant,
51
- _ref$popperModifiers = _ref.popperModifiers,
52
- popperModifiers = _ref$popperModifiers === void 0 ? [{
53
- name: 'offset',
54
- options: {
55
- offset: [0, 10]
56
- }
57
- }] : _ref$popperModifiers,
58
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
45
+ content = _ref.content,
46
+ children = _ref.children,
47
+ className = _ref.className,
48
+ _ref$isOpen = _ref.isOpen,
49
+ isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,
50
+ _ref$disableHoverList = _ref.disableHoverListener,
51
+ disableHoverListener = _ref$disableHoverList === void 0 ? false : _ref$disableHoverList,
52
+ _ref$disableFocusList = _ref.disableFocusListener,
53
+ disableFocusListener = _ref$disableFocusList === void 0 ? false : _ref$disableFocusList,
54
+ _ref$showCloseButton = _ref.showCloseButton,
55
+ showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
56
+ variant = _ref.variant,
57
+ _ref$popperModifiers = _ref.popperModifiers,
58
+ popperModifiers = _ref$popperModifiers === void 0 ? [{
59
+ name: 'offset',
60
+ options: {
61
+ offset: [0, 10]
62
+ }
63
+ }] : _ref$popperModifiers,
64
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
65
+
59
66
  var _useState = useState(isOpen || false),
60
- showTooltip = _useState[0],
61
- setShowTooltip = _useState[1];
67
+ showTooltip = _useState[0],
68
+ setShowTooltip = _useState[1];
69
+
62
70
  var hoverTimer;
71
+
63
72
  var handleOpen = function handleOpen(event) {
64
73
  event.persist();
65
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- Typescript interprets this differently depending on whether it's run in Jest or not
66
- // @ts-ignore -- for some reason, the type checker thinks that this setTimeout is run in node; it is not, because it is run in the browser
67
74
  hoverTimer = setTimeout(function () {
68
75
  setShowTooltip(true);
69
76
  }, 150);
70
77
  };
78
+
71
79
  var onMouseExit = function onMouseExit() {
72
80
  setShowTooltip(false);
73
81
  clearTimeout(hoverTimer);
74
82
  };
83
+
75
84
  React.useEffect(function () {
76
85
  return function () {
77
86
  clearTimeout(hoverTimer);
@@ -87,32 +96,40 @@ var Tooltip = function Tooltip(_ref) {
87
96
  }
88
97
  }, [content]);
89
98
  var popperPlacement = placement;
99
+
90
100
  if (placement.includes('-')) {
91
101
  if (placement.includes('right')) {
92
102
  popperPlacement = placement.replace('right', 'end');
93
103
  }
104
+
94
105
  if (placement.includes('left')) {
95
106
  popperPlacement = placement.replace('left', 'start');
96
107
  }
97
108
  }
109
+
98
110
  var childProps = {};
99
111
  childProps['aria-describedby'] = tooltipId;
112
+
100
113
  if (!disableFocusListener) {
101
114
  childProps.onFocus = function () {
102
115
  return setShowTooltip(true);
103
116
  };
117
+
104
118
  childProps.onBlur = function () {
105
119
  return setShowTooltip(false);
106
120
  };
107
121
  }
122
+
108
123
  if (!disableHoverListener) {
109
124
  childProps.onMouseEnter = function (e) {
110
125
  return handleOpen(e);
111
126
  };
127
+
112
128
  childProps.onMouseLeave = function () {
113
129
  return onMouseExit();
114
130
  };
115
131
  }
132
+
116
133
  return React.createElement(Manager, null, React.createElement(Reference, null, function (_ref2) {
117
134
  var ref = _ref2.ref;
118
135
  return cloneElement(children, _extends({
@@ -126,8 +143,8 @@ var Tooltip = function Tooltip(_ref) {
126
143
  placement: popperPlacement
127
144
  }, function (_ref3) {
128
145
  var ref = _ref3.ref,
129
- style = _ref3.style,
130
- popperPlacement = _ref3.placement;
146
+ style = _ref3.style,
147
+ popperPlacement = _ref3.placement;
131
148
  return React.createElement("div", _extends({
132
149
  className: classNames('eds-tooltip', className, "eds-tooltip--" + popperPlacement, {
133
150
  'eds-tooltip--error': variant === 'error'
@@ -148,37 +165,58 @@ var Tooltip = function Tooltip(_ref) {
148
165
 
149
166
  var _excluded = ["children"];
150
167
  var PopoverContext = /*#__PURE__*/createContext(undefined);
168
+
151
169
  var usePopoverContext = function usePopoverContext() {
152
170
  var context = useContext(PopoverContext);
171
+
153
172
  if (context == null) {
154
173
  throw Error('usePopoverContext must be used within <Popover/>');
155
174
  }
175
+
156
176
  return context;
157
177
  };
178
+
179
+ var useCustomState = function useCustomState(state, setState) {
180
+ var _React$useState = React.useState(false),
181
+ internalState = _React$useState[0],
182
+ setInternalState = _React$useState[1];
183
+
184
+ var controlled = state !== undefined && setState !== undefined;
185
+ if (controlled) return [state, setState, controlled];
186
+ return [internalState, setInternalState, controlled];
187
+ };
188
+
158
189
  var Popover = function Popover(_ref) {
159
190
  var children = _ref.children,
160
- _ref$placement = _ref.placement,
161
- placement = _ref$placement === void 0 ? 'bottom-start' : _ref$placement;
162
- var _React$useState = React.useState(false),
163
- showPopover = _React$useState[0],
164
- setShowPopover = _React$useState[1];
191
+ _ref$placement = _ref.placement,
192
+ placement = _ref$placement === void 0 ? 'bottom-start' : _ref$placement,
193
+ controlledState = _ref.showPopover,
194
+ setControlledState = _ref.setShowPopover;
195
+
196
+ var _useCustomState = useCustomState(controlledState, setControlledState),
197
+ showPopover = _useCustomState[0],
198
+ setShowPopover = _useCustomState[1],
199
+ controlled = _useCustomState[2];
200
+
165
201
  var triggerElement = React.useRef(null);
166
202
  var contentElement = React.useRef(null);
203
+
167
204
  var _usePopper = usePopper(triggerElement.current, contentElement.current, {
168
- modifiers: [{
169
- name: 'arrow',
170
- enabled: false
171
- }, {
172
- name: 'offset',
173
- options: {
174
- offset: [0, 8]
175
- }
176
- }],
177
- placement: placement
178
- }),
179
- styles = _usePopper.styles,
180
- attributes = _usePopper.attributes,
181
- forceUpdate = _usePopper.forceUpdate;
205
+ modifiers: [{
206
+ name: 'arrow',
207
+ enabled: false
208
+ }, {
209
+ name: 'offset',
210
+ options: {
211
+ offset: [0, 8]
212
+ }
213
+ }],
214
+ placement: placement
215
+ }),
216
+ styles = _usePopper.styles,
217
+ attributes = _usePopper.attributes,
218
+ forceUpdate = _usePopper.forceUpdate;
219
+
182
220
  React.useEffect(function () {
183
221
  if (forceUpdate) {
184
222
  forceUpdate();
@@ -186,18 +224,20 @@ var Popover = function Popover(_ref) {
186
224
  }, [showPopover, forceUpdate]);
187
225
  var triggerProps = React.useCallback(function () {
188
226
  var buttonProps = {
227
+ 'aria-haspopup': 'dialog',
228
+ 'aria-expanded': showPopover,
229
+ ref: triggerElement
230
+ };
231
+ var buttonOnClick = {
189
232
  onClick: function onClick(e) {
190
233
  e.preventDefault();
191
234
  setShowPopover(function (prev) {
192
235
  return !prev;
193
236
  });
194
- },
195
- 'aria-haspopup': 'dialog',
196
- 'aria-expanded': showPopover,
197
- ref: triggerElement
237
+ }
198
238
  };
199
- return buttonProps;
200
- }, [triggerElement, showPopover]);
239
+ return controlled ? buttonProps : _extends({}, buttonProps, buttonOnClick);
240
+ }, [triggerElement, showPopover, setShowPopover, controlled]);
201
241
  useOnClickOutside(contentElement, triggerElement, function () {
202
242
  return setShowPopover(false);
203
243
  });
@@ -218,8 +258,8 @@ var Popover = function Popover(_ref) {
218
258
  }
219
259
  },
220
260
  onBlur: function onBlur(event) {
221
- var elementReceivingFocus = event.relatedTarget;
222
- // The check for 'tabindex=-1' is a special case for focus handling in Docz
261
+ var elementReceivingFocus = event.relatedTarget; // The check for 'tabindex=-1' is a special case for focus handling in Docz
262
+
223
263
  if (!elementReceivingFocus || elementReceivingFocus.getAttribute('tabindex') === '-1') return;
224
264
  var focusElementIsPopover = elementContainsElement(contentElement.current, elementReceivingFocus);
225
265
  var focusElementIsTrigger = elementContainsElement(triggerElement.current, elementReceivingFocus);
@@ -228,7 +268,7 @@ var Popover = function Popover(_ref) {
228
268
  }
229
269
  };
230
270
  return contentProps;
231
- }, [contentElement, showPopover]);
271
+ }, [contentElement, showPopover, setShowPopover]);
232
272
  var contextValue = {
233
273
  showPopover: showPopover,
234
274
  triggerElement: triggerElement,
@@ -245,25 +285,31 @@ var Popover = function Popover(_ref) {
245
285
  };
246
286
  var PopoverTrigger = function PopoverTrigger(_ref2) {
247
287
  var children = _ref2.children;
288
+
248
289
  var _usePopoverContext = usePopoverContext(),
249
- triggerProps = _usePopoverContext.triggerProps;
290
+ triggerProps = _usePopoverContext.triggerProps;
291
+
250
292
  var child = React.Children.only(children);
251
293
  return cloneElement(child, triggerProps());
252
294
  };
253
295
  var PopoverCloseButton = function PopoverCloseButton(_ref3) {
254
296
  var children = _ref3.children,
255
- rest = _objectWithoutPropertiesLoose(_ref3, _excluded);
297
+ rest = _objectWithoutPropertiesLoose(_ref3, _excluded);
298
+
256
299
  var _usePopoverContext2 = usePopoverContext(),
257
- closeButtonProps = _usePopoverContext2.closeButtonProps;
300
+ closeButtonProps = _usePopoverContext2.closeButtonProps;
301
+
258
302
  return cloneElement(children, _extends({}, closeButtonProps, rest));
259
303
  };
260
304
  var PopoverContent = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
261
305
  var children = _ref4.children;
306
+
262
307
  var _usePopoverContext3 = usePopoverContext(),
263
- showPopover = _usePopoverContext3.showPopover,
264
- attributes = _usePopoverContext3.attributes,
265
- styles = _usePopoverContext3.styles,
266
- popoverContentProps = _usePopoverContext3.popoverContentProps;
308
+ showPopover = _usePopoverContext3.showPopover,
309
+ attributes = _usePopoverContext3.attributes,
310
+ styles = _usePopoverContext3.styles,
311
+ popoverContentProps = _usePopoverContext3.popoverContentProps;
312
+
267
313
  var props = popoverContentProps({
268
314
  ref: ref
269
315
  });
@@ -275,37 +321,46 @@ var PopoverContent = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
275
321
  "aria-hidden": !showPopover
276
322
  }, attributes.styles, props), children);
277
323
  });
324
+
278
325
  function elementContainsEventTarget(element, event) {
279
326
  if (!element) {
280
327
  return false;
281
328
  }
329
+
282
330
  if (element.contains(event.target)) {
283
331
  return true;
284
- }
285
- // For elements inside a Shadow DOM we need to check the composedPath
332
+ } // For elements inside a Shadow DOM we need to check the composedPath
333
+
334
+
286
335
  if (event.composed && event.composedPath) {
287
336
  var contains = event.composedPath().find(function (target) {
288
337
  if (target === window) {
289
338
  return false;
290
339
  }
340
+
291
341
  return element.contains(target);
292
342
  });
293
343
  return contains ? true : false;
294
344
  }
345
+
295
346
  return false;
296
347
  }
348
+
297
349
  function elementContainsElement(parent, child) {
298
350
  if (!parent) return false;
299
351
  return parent === child || parent.contains(child);
300
352
  }
353
+
301
354
  function useOnClickOutside(ref, buttonRef, handler) {
302
355
  React.useEffect(function () {
303
356
  var listener = function listener(event) {
304
357
  if (elementContainsEventTarget(ref.current, event) || elementContainsEventTarget(buttonRef.current, event)) {
305
358
  return;
306
359
  }
360
+
307
361
  handler();
308
362
  };
363
+
309
364
  document.addEventListener('mousedown', listener);
310
365
  document.addEventListener('touchstart', listener);
311
366
  return function () {
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.esm.js","sources":["../src/Tooltip.tsx","../src/Popover.tsx","../src/index.tsx"],"sourcesContent":["import React, { cloneElement, useState } from 'react';\nimport { Manager, Reference, Popper } from 'react-popper';\nimport classNames from 'classnames';\nimport { useRandomId } from '@entur/utils';\nimport { Placement as PopperPlacementProps } from '@popperjs/core';\nimport { CloseIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\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\nexport type TooltipProps = {\n /** Plassering av tooltip-en */\n placement:\n | 'top'\n | 'top-left'\n | 'top-right'\n | 'left'\n | 'right'\n | 'bottom-left' // bottom-start\n | 'bottom'\n | 'bottom-right'; // bottom-end\n /** Innholdet i tooltip-boksen */\n content: React.ReactNode;\n /** Elementet som skal ha tooltip-funksjonalitet */\n children: React.ReactElement;\n /** Om tooltipen 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 /** Viser en lukkeknapp om man kontrollerer åpningen av Tooltip vha `isOpen`\n * @default true\n */\n showCloseButton?: boolean;\n /** Valideringsvariant for Tooltip */\n variant?: 'error';\n /** En array av modifiers som sendes til Popper, rammeverket som brukes til plassering av Tooltip\n * @default [{ name: 'offset', options: { offset: [0, 10]} }]\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 showCloseButton = true,\n variant,\n popperModifiers = [\n {\n name: 'offset',\n options: { offset: [0, 10] },\n },\n ],\n ...rest\n}) => {\n const [showTooltip, setShowTooltip] = useState(isOpen || false);\n let hoverTimer: number;\n\n const handleOpen: (event: React.MouseEvent) => void = event => {\n event.persist();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- Typescript interprets this differently depending on whether it's run in Jest or not\n // @ts-ignore -- for some reason, the type checker thinks that this setTimeout is run in node; it is not, because it is run in the browser\n hoverTimer = setTimeout(() => {\n setShowTooltip(true);\n }, 150);\n };\n const onMouseExit: () => void = () => {\n setShowTooltip(false);\n clearTimeout(hoverTimer);\n };\n React.useEffect(() => {\n return () => {\n clearTimeout(hoverTimer);\n };\n });\n\n const tooltipId = useRandomId('eds-tooltip');\n React.useEffect(() => {\n setShowTooltip(isOpen);\n }, [isOpen]);\n\n React.useEffect(() => {\n if (!content) {\n setShowTooltip(false);\n }\n }, [content]);\n\n let popperPlacement = placement as PopperPlacementProps;\n if (placement.includes('-')) {\n if (placement.includes('right')) {\n popperPlacement = placement.replace(\n 'right',\n 'end',\n ) as PopperPlacementProps;\n }\n if (placement.includes('left')) {\n popperPlacement = placement.replace(\n 'left',\n 'start',\n ) as PopperPlacementProps;\n }\n }\n\n const childProps: {\n 'aria-describedby'?: string;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: () => void;\n } = {};\n childProps['aria-describedby'] = tooltipId;\n if (!disableFocusListener) {\n childProps.onFocus = () => setShowTooltip(true);\n childProps.onBlur = () => setShowTooltip(false);\n }\n if (!disableHoverListener) {\n childProps.onMouseEnter = e => handleOpen(e);\n childProps.onMouseLeave = () => onMouseExit();\n }\n\n return (\n <Manager>\n <Reference>\n {({ ref }) =>\n cloneElement(children, {\n ref: ref,\n ...childProps,\n })\n }\n </Reference>\n {showTooltip && (\n <Popper\n modifiers={[{ name: 'arrow', enabled: false }, ...popperModifiers]}\n placement={popperPlacement}\n >\n {({ ref, style, placement: popperPlacement }) => (\n <div\n className={classNames(\n 'eds-tooltip',\n className,\n `eds-tooltip--${popperPlacement}`,\n { 'eds-tooltip--error': variant === 'error' },\n )}\n ref={ref}\n style={style}\n role=\"tooltip\"\n id={tooltipId}\n data-placement={popperPlacement}\n {...rest}\n >\n {content}\n {isOpen && showCloseButton && (\n <IconButton\n className=\"eds-tooltip__close-button\"\n onClick={() => setShowTooltip(false)}\n >\n <CloseIcon />\n </IconButton>\n )}\n </div>\n )}\n </Popper>\n )}\n </Manager>\n );\n};\n","import React, { cloneElement, createContext, useContext } from 'react';\nimport { usePopper } from 'react-popper';\nimport { Placement } from '@popperjs/core';\nimport classNames from 'classnames';\nimport { Contrast } from '@entur/layout';\nimport './Popover.scss';\n\ntype PopoverContentCallbackProps = {\n ref: React.Ref<HTMLDivElement>;\n};\n\ntype PopoverContextProps = {\n showPopover: boolean;\n triggerElement?: React.RefObject<HTMLButtonElement>;\n contentElement: React.RefObject<HTMLDivElement>;\n styles: { [key: string]: React.CSSProperties };\n attributes: { [key: string]: { [key: string]: string } | undefined };\n closeButtonProps: Record<string, unknown>;\n popoverContentProps: (\n e: PopoverContentCallbackProps,\n ) => Record<string, unknown>;\n triggerProps: () => Record<string, unknown>;\n [key: string]: any;\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\nexport type PopoverProps = {\n /** Innholdet i Popover */\n children: React.ReactNode;\n /** Plasseringen av Popover\n * @default \"bottom-start\"\n */\n placement?: Placement;\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n placement = 'bottom-start',\n}) => {\n const [showPopover, setShowPopover] = React.useState(false);\n const triggerElement = React.useRef(null);\n const contentElement = React.useRef(null);\n\n const { styles, attributes, forceUpdate } = usePopper(\n triggerElement.current,\n contentElement.current,\n {\n modifiers: [\n { name: 'arrow', enabled: false },\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n ],\n placement: placement,\n },\n );\n\n React.useEffect(() => {\n if (forceUpdate) {\n forceUpdate();\n }\n }, [showPopover, forceUpdate]);\n\n const triggerProps = React.useCallback(() => {\n const buttonProps = {\n onClick: (e: React.MouseEvent) => {\n e.preventDefault();\n setShowPopover(prev => !prev);\n },\n 'aria-haspopup': 'dialog',\n 'aria-expanded': showPopover,\n ref: triggerElement,\n };\n return buttonProps;\n }, [triggerElement, showPopover]);\n\n useOnClickOutside(contentElement, triggerElement, () =>\n setShowPopover(false),\n );\n const closeButtonProps = {\n onClick: (e: React.MouseEvent) => {\n e.preventDefault();\n setShowPopover(false);\n },\n };\n const popoverContentProps = React.useCallback(() => {\n const contentProps = {\n role: 'dialog',\n 'aria-modal': 'false',\n ref: contentElement,\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') {\n showPopover && setShowPopover(false);\n }\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 focusElementIsPopover = elementContainsElement(\n contentElement.current,\n elementReceivingFocus,\n );\n const focusElementIsTrigger = elementContainsElement(\n triggerElement.current,\n elementReceivingFocus,\n );\n const isValidBlur = !focusElementIsPopover && !focusElementIsTrigger;\n if (showPopover && isValidBlur) setShowPopover(false);\n },\n };\n return contentProps;\n }, [contentElement, showPopover]);\n const contextValue: PopoverContextProps = {\n showPopover,\n triggerElement,\n contentElement,\n styles,\n attributes,\n popoverContentProps,\n closeButtonProps,\n triggerProps,\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 { triggerProps } = usePopoverContext();\n const child = React.Children.only(children) as React.ReactElement<any>;\n return cloneElement(child, triggerProps());\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};\n\nexport const PopoverContent = React.forwardRef<\n HTMLDivElement,\n PopoverContentProps\n>(({ children }, ref: React.Ref<HTMLDivElement>) => {\n const { showPopover, attributes, styles, popoverContentProps } =\n usePopoverContext();\n const props = popoverContentProps({ ref });\n return (\n <Contrast\n className={classNames(\n 'eds-popover',\n {\n 'eds-popover--hidden': !showPopover,\n },\n 'eds-contrast',\n )}\n style={styles.popper}\n aria-hidden={!showPopover}\n {...attributes.styles}\n {...props}\n >\n {children}\n </Contrast>\n );\n});\n\nfunction elementContainsEventTarget(element: HTMLElement | null, event: Event) {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\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\nfunction useOnClickOutside(\n ref: React.RefObject<HTMLDivElement>,\n buttonRef: React.RefObject<HTMLButtonElement>,\n handler: () => void,\n) {\n React.useEffect(() => {\n const listener = (event: Event) => {\n if (\n elementContainsEventTarget(ref.current, event) ||\n elementContainsEventTarget(buttonRef.current, event)\n ) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, buttonRef, handler]);\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('tooltip');\n\nexport * from './Tooltip';\nexport * from './Popover';\n"],"names":["Tooltip","placement","content","children","className","isOpen","disableHoverListener","disableFocusListener","showCloseButton","variant","popperModifiers","name","options","offset","rest","useState","showTooltip","setShowTooltip","hoverTimer","handleOpen","event","persist","setTimeout","onMouseExit","clearTimeout","React","useEffect","tooltipId","useRandomId","popperPlacement","includes","replace","childProps","onFocus","onBlur","onMouseEnter","e","onMouseLeave","Manager","Reference","ref","cloneElement","Popper","modifiers","enabled","style","classNames","role","id","IconButton","onClick","CloseIcon","PopoverContext","createContext","undefined","usePopoverContext","context","useContext","Error","Popover","showPopover","setShowPopover","triggerElement","useRef","contentElement","usePopper","current","styles","attributes","forceUpdate","triggerProps","useCallback","buttonProps","preventDefault","prev","useOnClickOutside","closeButtonProps","popoverContentProps","contentProps","onKeyDown","key","elementReceivingFocus","relatedTarget","getAttribute","focusElementIsPopover","elementContainsElement","focusElementIsTrigger","isValidBlur","contextValue","Provider","value","PopoverTrigger","child","Children","only","PopoverCloseButton","PopoverContent","forwardRef","props","Contrast","popper","elementContainsEventTarget","element","contains","target","composed","composedPath","find","window","parent","buttonRef","handler","listener","document","addEventListener","removeEventListener","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.esm.js","sources":["../src/Tooltip.tsx","../src/Popover.tsx","../src/index.tsx"],"sourcesContent":["import React, { cloneElement, useState } from 'react';\nimport { Manager, Reference, Popper } from 'react-popper';\nimport classNames from 'classnames';\nimport { useRandomId } from '@entur/utils';\nimport { Placement as PopperPlacementProps } from '@popperjs/core';\nimport { CloseIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\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\nexport type TooltipProps = {\n /** Plassering av tooltip-en */\n placement:\n | 'top'\n | 'top-left'\n | 'top-right'\n | 'left'\n | 'right'\n | 'bottom-left' // bottom-start\n | 'bottom'\n | 'bottom-right'; // bottom-end\n /** Innholdet i tooltip-boksen */\n content: React.ReactNode;\n /** Elementet som skal ha tooltip-funksjonalitet */\n children: React.ReactElement;\n /** Om tooltipen 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 /** Viser en lukkeknapp om man kontrollerer åpningen av Tooltip vha `isOpen`\n * @default true\n */\n showCloseButton?: boolean;\n /** Valideringsvariant for Tooltip */\n variant?: 'error';\n /** En array av modifiers som sendes til Popper, rammeverket som brukes til plassering av Tooltip\n * @default [{ name: 'offset', options: { offset: [0, 10]} }]\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 showCloseButton = true,\n variant,\n popperModifiers = [\n {\n name: 'offset',\n options: { offset: [0, 10] },\n },\n ],\n ...rest\n}) => {\n const [showTooltip, setShowTooltip] = useState(isOpen || false);\n let hoverTimer: ReturnType<typeof setTimeout>;\n\n const handleOpen: (event: React.MouseEvent) => void = event => {\n event.persist();\n hoverTimer = setTimeout(() => {\n setShowTooltip(true);\n }, 150);\n };\n const onMouseExit: () => void = () => {\n setShowTooltip(false);\n clearTimeout(hoverTimer);\n };\n React.useEffect(() => {\n return () => {\n clearTimeout(hoverTimer);\n };\n });\n\n const tooltipId = useRandomId('eds-tooltip');\n React.useEffect(() => {\n setShowTooltip(isOpen);\n }, [isOpen]);\n\n React.useEffect(() => {\n if (!content) {\n setShowTooltip(false);\n }\n }, [content]);\n\n let popperPlacement = placement as PopperPlacementProps;\n if (placement.includes('-')) {\n if (placement.includes('right')) {\n popperPlacement = placement.replace(\n 'right',\n 'end',\n ) as PopperPlacementProps;\n }\n if (placement.includes('left')) {\n popperPlacement = placement.replace(\n 'left',\n 'start',\n ) as PopperPlacementProps;\n }\n }\n\n const childProps: {\n 'aria-describedby'?: string;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: () => void;\n } = {};\n childProps['aria-describedby'] = tooltipId;\n if (!disableFocusListener) {\n childProps.onFocus = () => setShowTooltip(true);\n childProps.onBlur = () => setShowTooltip(false);\n }\n if (!disableHoverListener) {\n childProps.onMouseEnter = e => handleOpen(e);\n childProps.onMouseLeave = () => onMouseExit();\n }\n\n return (\n <Manager>\n <Reference>\n {({ ref }) =>\n cloneElement(children, {\n ref: ref,\n ...childProps,\n })\n }\n </Reference>\n {showTooltip && (\n <Popper\n modifiers={[{ name: 'arrow', enabled: false }, ...popperModifiers]}\n placement={popperPlacement}\n >\n {({ ref, style, placement: popperPlacement }) => (\n <div\n className={classNames(\n 'eds-tooltip',\n className,\n `eds-tooltip--${popperPlacement}`,\n { 'eds-tooltip--error': variant === 'error' },\n )}\n ref={ref}\n style={style}\n role=\"tooltip\"\n id={tooltipId}\n data-placement={popperPlacement}\n {...rest}\n >\n {content}\n {isOpen && showCloseButton && (\n <IconButton\n className=\"eds-tooltip__close-button\"\n onClick={() => setShowTooltip(false)}\n >\n <CloseIcon />\n </IconButton>\n )}\n </div>\n )}\n </Popper>\n )}\n </Manager>\n );\n};\n","import React, { cloneElement, createContext, useContext } from 'react';\nimport { usePopper } from 'react-popper';\nimport { Placement } from '@popperjs/core';\nimport classNames from 'classnames';\nimport { Contrast } from '@entur/layout';\nimport './Popover.scss';\n\ntype PopoverContentCallbackProps = {\n ref: React.Ref<HTMLDivElement>;\n};\n\ntype PopoverContextProps = {\n showPopover: boolean;\n triggerElement?: React.RefObject<HTMLButtonElement>;\n contentElement: React.RefObject<HTMLDivElement>;\n styles: { [key: string]: React.CSSProperties };\n attributes: { [key: string]: { [key: string]: string } | undefined };\n closeButtonProps: Record<string, unknown>;\n popoverContentProps: (\n e: PopoverContentCallbackProps,\n ) => Record<string, unknown>;\n triggerProps: () => Record<string, unknown>;\n [key: string]: any;\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\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 const triggerElement = React.useRef(null);\n const contentElement = React.useRef(null);\n\n const { styles, attributes, forceUpdate } = usePopper(\n triggerElement.current,\n contentElement.current,\n {\n modifiers: [\n { name: 'arrow', enabled: false },\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n ],\n placement: placement,\n },\n );\n\n React.useEffect(() => {\n if (forceUpdate) {\n forceUpdate();\n }\n }, [showPopover, forceUpdate]);\n\n const triggerProps = React.useCallback(() => {\n const buttonProps = {\n 'aria-haspopup': 'dialog',\n 'aria-expanded': showPopover,\n ref: triggerElement,\n };\n const buttonOnClick = {\n onClick: (e: React.MouseEvent) => {\n e.preventDefault();\n setShowPopover(prev => !prev);\n },\n };\n return controlled ? buttonProps : { ...buttonProps, ...buttonOnClick };\n }, [triggerElement, showPopover, setShowPopover, controlled]);\n\n useOnClickOutside(contentElement, triggerElement, () =>\n setShowPopover(false),\n );\n const closeButtonProps = {\n onClick: (e: React.MouseEvent) => {\n e.preventDefault();\n setShowPopover(false);\n },\n };\n const popoverContentProps = React.useCallback(() => {\n const contentProps = {\n role: 'dialog',\n 'aria-modal': 'false',\n ref: contentElement,\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') {\n showPopover && setShowPopover(false);\n }\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 focusElementIsPopover = elementContainsElement(\n contentElement.current,\n elementReceivingFocus,\n );\n const focusElementIsTrigger = elementContainsElement(\n triggerElement.current,\n elementReceivingFocus,\n );\n const isValidBlur = !focusElementIsPopover && !focusElementIsTrigger;\n if (showPopover && isValidBlur) setShowPopover(false);\n },\n };\n return contentProps;\n }, [contentElement, showPopover, setShowPopover]);\n const contextValue: PopoverContextProps = {\n showPopover,\n triggerElement,\n contentElement,\n styles,\n attributes,\n popoverContentProps,\n closeButtonProps,\n triggerProps,\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 { triggerProps } = usePopoverContext();\n const child = React.Children.only(children) as React.ReactElement<any>;\n return cloneElement(child, triggerProps());\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};\n\nexport const PopoverContent = React.forwardRef<\n HTMLDivElement,\n PopoverContentProps\n>(({ children }, ref: React.Ref<HTMLDivElement>) => {\n const { showPopover, attributes, styles, popoverContentProps } =\n usePopoverContext();\n const props = popoverContentProps({ ref });\n return (\n <Contrast\n className={classNames(\n 'eds-popover',\n {\n 'eds-popover--hidden': !showPopover,\n },\n 'eds-contrast',\n )}\n style={styles.popper}\n aria-hidden={!showPopover}\n {...attributes.styles}\n {...props}\n >\n {children}\n </Contrast>\n );\n});\n\nfunction elementContainsEventTarget(element: HTMLElement | null, event: Event) {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find(target => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return contains ? true : false;\n }\n\n return false;\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\nfunction useOnClickOutside(\n ref: React.RefObject<HTMLDivElement>,\n buttonRef: React.RefObject<HTMLButtonElement>,\n handler: () => void,\n) {\n React.useEffect(() => {\n const listener = (event: Event) => {\n if (\n elementContainsEventTarget(ref.current, event) ||\n elementContainsEventTarget(buttonRef.current, event)\n ) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, buttonRef, handler]);\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('tooltip');\n\nexport * from './Tooltip';\nexport * from './Popover';\n"],"names":["Tooltip","placement","content","children","className","isOpen","disableHoverListener","disableFocusListener","showCloseButton","variant","popperModifiers","name","options","offset","rest","useState","showTooltip","setShowTooltip","hoverTimer","handleOpen","event","persist","setTimeout","onMouseExit","clearTimeout","React","useEffect","tooltipId","useRandomId","popperPlacement","includes","replace","childProps","onFocus","onBlur","onMouseEnter","e","onMouseLeave","Manager","Reference","ref","cloneElement","Popper","modifiers","enabled","style","classNames","role","id","IconButton","onClick","CloseIcon","PopoverContext","createContext","undefined","usePopoverContext","context","useContext","Error","useCustomState","state","setState","internalState","setInternalState","controlled","Popover","controlledState","showPopover","setControlledState","setShowPopover","triggerElement","useRef","contentElement","usePopper","current","styles","attributes","forceUpdate","triggerProps","useCallback","buttonProps","buttonOnClick","preventDefault","prev","useOnClickOutside","closeButtonProps","popoverContentProps","contentProps","onKeyDown","key","elementReceivingFocus","relatedTarget","getAttribute","focusElementIsPopover","elementContainsElement","focusElementIsTrigger","isValidBlur","contextValue","Provider","value","PopoverTrigger","child","Children","only","PopoverCloseButton","PopoverContent","forwardRef","props","Contrast","popper","elementContainsEventTarget","element","contains","target","composed","composedPath","find","window","parent","buttonRef","handler","listener","document","addEventListener","removeEventListener","warnAboutMissingStyles"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entur/tooltip",
3
- "version": "2.5.23",
3
+ "version": "2.6.0",
4
4
  "license": "EUPL-1.2",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/tooltip.esm.js",
@@ -17,30 +17,23 @@
17
17
  "access": "public"
18
18
  },
19
19
  "scripts": {
20
- "start": "yarn run dts watch --noClean",
21
- "build": "yarn run dts build",
22
- "test": "yarn run dts test --env=jsdom",
23
- "lint": "yarn run dts lint"
20
+ "start": "dts watch --noClean",
21
+ "build": "dts build",
22
+ "test": "dts test",
23
+ "lint": "dts lint"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "react": ">=16.8.0",
27
27
  "react-dom": ">=16.8.0"
28
28
  },
29
- "devDependencies": {
30
- "@entur/tokens": "^3.4.2",
31
- "dts-cli": "^1.1.6",
32
- "jest": "^27.0.0",
33
- "jest-watch-typeahead": "^2.2.0",
34
- "ts-jest": "^27.0.0",
35
- "typescript": "^4.8.0"
36
- },
37
29
  "dependencies": {
38
- "@entur/button": "^2.10.6",
39
- "@entur/icons": "^5.3.0",
40
- "@entur/layout": "^2.1.13",
41
- "@entur/utils": "^0.4.7",
30
+ "@entur/button": "^2.10.8",
31
+ "@entur/icons": "^5.4.1",
32
+ "@entur/layout": "^2.1.15",
33
+ "@entur/tokens": "^3.4.4",
34
+ "@entur/utils": "^0.4.9",
42
35
  "@popperjs/core": "^2.10.1",
43
36
  "react-popper": "^2.2.5"
44
37
  },
45
- "gitHead": "8915b1630bd936740ba9a4a88883f3432948a80e"
38
+ "gitHead": "de71e205560a699e2dce301e133966dc9348c459"
46
39
  }