@amboss/design-system 1.17.7 → 1.18.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.
@@ -27,6 +27,7 @@ function Toggletip(_ref2) {
27
27
  externalTriggerRef,
28
28
  portalContainer,
29
29
  isVisible: isToggletipVisible,
30
+ dismissOnOutsideClick = true,
30
31
  "data-e2e-test-id": dataE2eTestId,
31
32
  onVisibilityChange
32
33
  } = _ref2;
@@ -101,8 +102,9 @@ function Toggletip(_ref2) {
101
102
  }) : null;
102
103
  const contentElm = /*#__PURE__*/React__default.default.createElement(FocusTrap__default.default, {
103
104
  focusTrapOptions: {
104
- clickOutsideDeactivates: handleClickOutsideDeactivates,
105
+ clickOutsideDeactivates: dismissOnOutsideClick && handleClickOutsideDeactivates,
105
106
  // de-active focus trap on outside click
107
+ allowOutsideClick: true,
106
108
  escapeDeactivates: true,
107
109
  // de-activate focus trap on escape key
108
110
  fallbackFocus: `#${tooltipId}`,
@@ -122,7 +124,6 @@ function Toggletip(_ref2) {
122
124
  dataE2eTestId: dataE2eTestId,
123
125
  isVisible: isVisible,
124
126
  tooltipId: tooltipId,
125
- tabIndex: -1,
126
127
  triggerRef: triggerRef
127
128
  });
128
129
  return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, triggerElm, tooltipElm);
@@ -0,0 +1,163 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var TooltipContent = require('./TooltipContent.js');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var React__default = /*#__PURE__*/_interopDefault(React);
9
+
10
+ const SHOW_HIDE_DELAY = 200;
11
+ function BaseTooltip(_ref) {
12
+ let {
13
+ placement = "auto",
14
+ content,
15
+ children,
16
+ externalTriggerRef,
17
+ portalContainer,
18
+ contentPadding = "m",
19
+ maxWidth,
20
+ "data-e2e-test-id": dataE2eTestId,
21
+ onVisibilityChange
22
+ } = _ref;
23
+ const tooltipId = React.useMemo(() => `DSTooltip_${Math.floor(Date.now() * Math.random())}`, []);
24
+ const [isVisible, setVisible] = React.useState(false);
25
+ const triggeredByEvent = React.useRef(null); // indicates if triggered by hover or focus
26
+ const isTooltipHovered = React.useRef(false);
27
+ const isTriggerHovered = React.useRef(false);
28
+ const hideTooltipTimeoutId = React.useRef(null);
29
+ const showTooltipTimeoutId = React.useRef(null);
30
+ const internalTriggerRef = React.useRef(null);
31
+ const triggerRef = externalTriggerRef || internalTriggerRef;
32
+ const toggleVisibility = React.useCallback(status => {
33
+ setVisible(status);
34
+ if (onVisibilityChange) {
35
+ onVisibilityChange(status);
36
+ }
37
+ }, [onVisibilityChange]);
38
+ const handleTriggerPointerEnter = React.useCallback(() => {
39
+ isTriggerHovered.current = true;
40
+ if (!isTooltipHovered.current) {
41
+ clearTimeout(showTooltipTimeoutId.current);
42
+ // Delay show tooltip to prevent flickering when mouse moves quickly over trigger
43
+ showTooltipTimeoutId.current = setTimeout(() => {
44
+ if (isTriggerHovered.current) {
45
+ triggeredByEvent.current = "hover";
46
+ toggleVisibility(true);
47
+ }
48
+ }, SHOW_HIDE_DELAY);
49
+ }
50
+ }, [toggleVisibility]);
51
+ const handleTriggerPointerLeave = React.useCallback(() => {
52
+ isTriggerHovered.current = false;
53
+ clearTimeout(hideTooltipTimeoutId.current);
54
+ // Delay removing tooltip from DOM to allow hover over tooltip element
55
+ hideTooltipTimeoutId.current = setTimeout(() => {
56
+ if (!isTooltipHovered.current && triggeredByEvent.current === "hover" && !isTriggerHovered.current) {
57
+ toggleVisibility(false);
58
+ }
59
+ }, SHOW_HIDE_DELAY);
60
+ }, [toggleVisibility]);
61
+ const handleTriggerFocus = React.useCallback(() => {
62
+ triggeredByEvent.current = "focus";
63
+ toggleVisibility(true);
64
+ }, [toggleVisibility]);
65
+ const handleTriggerBlur = React.useCallback(() => {
66
+ if (triggeredByEvent.current === "focus") {
67
+ toggleVisibility(false);
68
+ }
69
+ }, [toggleVisibility]);
70
+ const handleTriggerKeyDown = React.useCallback(evt => {
71
+ if (evt.key === "Escape") {
72
+ toggleVisibility(false);
73
+ }
74
+ }, [toggleVisibility]);
75
+ const handleTooltipPointerEnter = () => {
76
+ isTooltipHovered.current = true;
77
+ };
78
+ const handleTooltipPointerLeave = () => {
79
+ isTooltipHovered.current = false;
80
+ if (triggeredByEvent.current === "hover") {
81
+ toggleVisibility(false);
82
+ }
83
+ };
84
+ React.useEffect(() => () => {
85
+ // clear timers
86
+ clearTimeout(showTooltipTimeoutId.current);
87
+ clearTimeout(hideTooltipTimeoutId.current);
88
+ }, []);
89
+ React.useEffect(() => {
90
+ let trigger;
91
+ if (externalTriggerRef?.current && !children) {
92
+ trigger = externalTriggerRef.current;
93
+ trigger.setAttribute("tabindex", "0");
94
+ trigger.addEventListener("pointerenter", handleTriggerPointerEnter);
95
+ trigger.addEventListener("pointerleave", handleTriggerPointerLeave);
96
+ trigger.addEventListener("focus", handleTriggerFocus);
97
+ trigger.addEventListener("blur", handleTriggerBlur);
98
+ trigger.addEventListener("keydown", handleTriggerKeyDown);
99
+ }
100
+ return () => {
101
+ if (trigger) {
102
+ trigger.removeEventListener("pointerenter", handleTriggerPointerEnter);
103
+ trigger.removeEventListener("pointerleave", handleTriggerPointerLeave);
104
+ trigger.removeEventListener("focus", handleTriggerFocus);
105
+ trigger.removeEventListener("blur", handleTriggerBlur);
106
+ trigger.removeEventListener("keydown", handleTriggerKeyDown);
107
+ }
108
+ };
109
+ }, [externalTriggerRef, children, handleTriggerPointerEnter, handleTriggerPointerLeave, handleTriggerFocus, handleTriggerBlur, handleTriggerKeyDown]);
110
+ React.useEffect(() => {
111
+ if (externalTriggerRef?.current && !children) {
112
+ const trigger = externalTriggerRef.current;
113
+ if (isVisible) {
114
+ trigger.setAttribute("aria-describedby", tooltipId);
115
+ } else {
116
+ trigger.removeAttribute("aria-describedby");
117
+ }
118
+ }
119
+ }, [externalTriggerRef, children, tooltipId, isVisible]);
120
+ const triggerElm = children ? /*#__PURE__*/React__default.default.cloneElement(children, {
121
+ ref: triggerRef,
122
+ ...(isVisible && {
123
+ "aria-describedby": tooltipId
124
+ }),
125
+ tabIndex: 0,
126
+ onPointerEnter: handleTriggerPointerEnter,
127
+ onPointerLeave: handleTriggerPointerLeave,
128
+ onFocus: evt => {
129
+ handleTriggerFocus();
130
+ if (children.props.onFocus) {
131
+ children.props.onFocus(evt);
132
+ }
133
+ },
134
+ onBlur: evt => {
135
+ handleTriggerBlur();
136
+ if (children.props.onBlur) {
137
+ if (children.props.onBlur) {
138
+ children.props.onBlur(evt);
139
+ }
140
+ }
141
+ },
142
+ onKeyDown: handleTriggerKeyDown
143
+ }) : null;
144
+ const tooltipElm = /*#__PURE__*/React__default.default.createElement(TooltipContent.TooltipContent, {
145
+ dataDSId: "Tooltip",
146
+ content: content,
147
+ placement: placement,
148
+ portalContainer: portalContainer,
149
+ dataE2eTestId: dataE2eTestId,
150
+ isVisible: isVisible,
151
+ tooltipId: tooltipId,
152
+ triggerRef: triggerRef,
153
+ "aria-hidden": true,
154
+ role: "tooltip",
155
+ contentPadding: contentPadding,
156
+ maxWidth: maxWidth,
157
+ onTooltipPointerEnter: handleTooltipPointerEnter,
158
+ onTooltipPointerLeave: handleTooltipPointerLeave
159
+ });
160
+ return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, triggerElm, tooltipElm);
161
+ }
162
+
163
+ exports.BaseTooltip = BaseTooltip;
@@ -1,163 +1,27 @@
1
1
  'use strict';
2
2
 
3
+ var _extends = require('@babel/runtime/helpers/extends');
3
4
  var React = require('react');
4
5
  var Text = require('../Typography/Text/Text.js');
5
- var TooltipContent = require('./TooltipContent.js');
6
+ var BaseTooltip = require('./BaseTooltip.js');
6
7
 
7
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
9
 
10
+ var _extends__default = /*#__PURE__*/_interopDefault(_extends);
9
11
  var React__default = /*#__PURE__*/_interopDefault(React);
10
12
 
11
- const SHOW_HIDE_DELAY = 200;
12
13
  function Tooltip(_ref) {
13
14
  let {
14
- placement = "auto",
15
15
  content,
16
- children,
17
- externalTriggerRef,
18
- portalContainer,
19
- "data-e2e-test-id": dataE2eTestId,
20
- onVisibilityChange
16
+ ...rest
21
17
  } = _ref;
22
- const tooltipId = React.useMemo(() => `DSTooltip_${Math.floor(Date.now() * Math.random())}`, []);
23
- const [isVisible, setVisible] = React.useState(false);
24
- const triggeredByEvent = React.useRef(null); // indicates if triggered by hover or focus
25
- const isTooltipHovered = React.useRef(false);
26
- const isTriggerHovered = React.useRef(false);
27
- const hideTooltipTimeoutId = React.useRef(null);
28
- const showTooltipTimeoutId = React.useRef(null);
29
- const internalTriggerRef = React.useRef(null);
30
- const triggerRef = externalTriggerRef || internalTriggerRef;
31
- const toggleVisibility = React.useCallback(status => {
32
- setVisible(status);
33
- if (onVisibilityChange) {
34
- onVisibilityChange(status);
35
- }
36
- }, [onVisibilityChange]);
37
- const handleTriggerPointerEnter = React.useCallback(() => {
38
- isTriggerHovered.current = true;
39
- if (!isTooltipHovered.current) {
40
- clearTimeout(showTooltipTimeoutId.current);
41
- // Delay show tooltip to prevent flickering when mouse moves quickly over trigger
42
- showTooltipTimeoutId.current = setTimeout(() => {
43
- if (isTriggerHovered.current) {
44
- triggeredByEvent.current = "hover";
45
- toggleVisibility(true);
46
- }
47
- }, SHOW_HIDE_DELAY);
48
- }
49
- }, [toggleVisibility]);
50
- const handleTriggerPointerLeave = React.useCallback(() => {
51
- isTriggerHovered.current = false;
52
- clearTimeout(hideTooltipTimeoutId.current);
53
- // Delay removing tooltip from DOM to allow hover over tooltip element
54
- hideTooltipTimeoutId.current = setTimeout(() => {
55
- if (!isTooltipHovered.current && triggeredByEvent.current === "hover" && !isTriggerHovered.current) {
56
- toggleVisibility(false);
57
- }
58
- }, SHOW_HIDE_DELAY);
59
- }, [toggleVisibility]);
60
- const handleTriggerFocus = React.useCallback(() => {
61
- triggeredByEvent.current = "focus";
62
- toggleVisibility(true);
63
- }, [toggleVisibility]);
64
- const handleTriggerBlur = React.useCallback(() => {
65
- if (triggeredByEvent.current === "focus") {
66
- toggleVisibility(false);
67
- }
68
- }, [toggleVisibility]);
69
- const handleTriggerKeyDown = React.useCallback(evt => {
70
- if (evt.key === "Escape") {
71
- toggleVisibility(false);
72
- }
73
- }, [toggleVisibility]);
74
- const handleTooltipPointerEnter = () => {
75
- isTooltipHovered.current = true;
76
- };
77
- const handleTooltipPointerLeave = () => {
78
- isTooltipHovered.current = false;
79
- if (triggeredByEvent.current === "hover") {
80
- toggleVisibility(false);
81
- }
82
- };
83
- React.useEffect(() => () => {
84
- // clear timers
85
- clearTimeout(showTooltipTimeoutId.current);
86
- clearTimeout(hideTooltipTimeoutId.current);
87
- }, []);
88
- React.useEffect(() => {
89
- let trigger;
90
- if (externalTriggerRef?.current && !children) {
91
- trigger = externalTriggerRef.current;
92
- trigger.setAttribute("tabindex", "0");
93
- trigger.addEventListener("pointerenter", handleTriggerPointerEnter);
94
- trigger.addEventListener("pointerleave", handleTriggerPointerLeave);
95
- trigger.addEventListener("focus", handleTriggerFocus);
96
- trigger.addEventListener("blur", handleTriggerBlur);
97
- trigger.addEventListener("keydown", handleTriggerKeyDown);
98
- }
99
- return () => {
100
- if (trigger) {
101
- trigger.removeEventListener("pointerenter", handleTriggerPointerEnter);
102
- trigger.removeEventListener("pointerleave", handleTriggerPointerLeave);
103
- trigger.removeEventListener("focus", handleTriggerFocus);
104
- trigger.removeEventListener("blur", handleTriggerBlur);
105
- trigger.removeEventListener("keydown", handleTriggerKeyDown);
106
- }
107
- };
108
- }, [externalTriggerRef, children, handleTriggerPointerEnter, handleTriggerPointerLeave, handleTriggerFocus, handleTriggerBlur, handleTriggerKeyDown]);
109
- React.useEffect(() => {
110
- if (externalTriggerRef?.current && !children) {
111
- const trigger = externalTriggerRef.current;
112
- if (isVisible) {
113
- trigger.setAttribute("aria-describedby", tooltipId);
114
- } else {
115
- trigger.removeAttribute("aria-describedby");
116
- }
117
- }
118
- }, [externalTriggerRef, children, tooltipId, isVisible]);
119
- const triggerElm = children ? /*#__PURE__*/React__default.default.cloneElement(children, {
120
- ref: triggerRef,
121
- ...(isVisible && {
122
- "aria-describedby": tooltipId
123
- }),
124
- tabIndex: 0,
125
- onPointerEnter: handleTriggerPointerEnter,
126
- onPointerLeave: handleTriggerPointerLeave,
127
- onFocus: evt => {
128
- handleTriggerFocus();
129
- if (children.props.onFocus) {
130
- children.props.onFocus(evt);
131
- }
132
- },
133
- onBlur: evt => {
134
- handleTriggerBlur();
135
- if (children.props.onBlur) {
136
- if (children.props.onBlur) {
137
- children.props.onBlur(evt);
138
- }
139
- }
140
- },
141
- onKeyDown: handleTriggerKeyDown
142
- }) : null;
143
18
  const contentElm = /*#__PURE__*/React__default.default.createElement(Text.Text, {
144
19
  size: "s"
145
20
  }, content);
146
- const tooltipElm = /*#__PURE__*/React__default.default.createElement(TooltipContent.TooltipContent, {
147
- dataDSId: "Tooltip",
148
- content: contentElm,
149
- placement: placement,
150
- portalContainer: portalContainer,
151
- dataE2eTestId: dataE2eTestId,
152
- isVisible: isVisible,
153
- tooltipId: tooltipId,
154
- triggerRef: triggerRef,
155
- "aria-hidden": true,
156
- role: "tooltip",
157
- onTooltipPointerEnter: handleTooltipPointerEnter,
158
- onTooltipPointerLeave: handleTooltipPointerLeave
159
- });
160
- return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, triggerElm, tooltipElm);
21
+ /* eslint-disable-next-line react/jsx-props-no-spreading */
22
+ return /*#__PURE__*/React__default.default.createElement(BaseTooltip.BaseTooltip, _extends__default.default({
23
+ content: contentElm
24
+ }, rest));
161
25
  }
162
26
 
163
27
  exports.Tooltip = Tooltip;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var BaseTooltip = require('../Tooltip/BaseTooltip.js');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var React__default = /*#__PURE__*/_interopDefault(React);
9
+
10
+ function UserHighlightTooltip(props) {
11
+ /* eslint-disable-next-line react/jsx-props-no-spreading */
12
+ return /*#__PURE__*/React__default.default.createElement(BaseTooltip.BaseTooltip, props);
13
+ }
14
+
15
+ exports.UserHighlightTooltip = UserHighlightTooltip;
@@ -50,6 +50,7 @@ var Tooltip = require('./components/Tooltip/Tooltip.js');
50
50
  var Tag = require('./components/Tag/Tag.js');
51
51
  var TagGroup = require('./components/TagGroup/TagGroup.js');
52
52
  var Toggletip = require('./components/Toggletip/Toggletip.js');
53
+ var UserHighlightTooltip = require('./components/UserHighlightTooltip/UserHighlightTooltip.js');
53
54
  var Input = require('./components/Form/Input/Input.js');
54
55
  var PasswordInput = require('./components/Form/PasswordInput/PasswordInput.js');
55
56
  var DataTable = require('./components/DataTable/DataTable.js');
@@ -132,6 +133,7 @@ exports.MAX_TAG_WIDTH = Tag.MAX_TAG_WIDTH;
132
133
  exports.Tag = Tag.Tag;
133
134
  exports.TagGroup = TagGroup.TagGroup;
134
135
  exports.Toggletip = Toggletip.Toggletip;
136
+ exports.UserHighlightTooltip = UserHighlightTooltip.UserHighlightTooltip;
135
137
  exports.Input = Input.Input;
136
138
  exports.PasswordInput = PasswordInput.PasswordInput;
137
139
  exports.BaseDataTable = DataTable.BaseDataTable;
@@ -1,18 +1,13 @@
1
- import React, { ReactElement, MutableRefObject } from "react";
1
+ import React, { ReactElement } from "react";
2
2
  import type { TooltipContentProps } from "../Tooltip/TooltipContent";
3
+ import type { TooltipConditionalProps } from "../Tooltip/types";
3
4
  type BaseProps = Pick<TooltipContentProps, "placement" | "portalContainer" | "contentPadding" | "maxWidth"> & {
4
5
  content: ReactElement;
5
6
  "data-e2e-test-id"?: string;
6
7
  isVisible?: boolean;
7
8
  onVisibilityChange?: (isVisible: boolean) => void;
9
+ dismissOnOutsideClick?: boolean;
8
10
  };
9
- type ConditionalProps = {
10
- externalTriggerRef?: never;
11
- children: React.ReactElement;
12
- } | {
13
- children?: never;
14
- externalTriggerRef: MutableRefObject<any>;
15
- };
16
- export type ToggletipProps = BaseProps & ConditionalProps;
17
- export declare function Toggletip({ placement, content, children, contentPadding, maxWidth, externalTriggerRef, portalContainer, isVisible: isToggletipVisible, "data-e2e-test-id": dataE2eTestId, onVisibilityChange, }: ToggletipProps): React.ReactElement;
11
+ export type ToggletipProps = BaseProps & TooltipConditionalProps;
12
+ export declare function Toggletip({ placement, content, children, contentPadding, maxWidth, externalTriggerRef, portalContainer, isVisible: isToggletipVisible, dismissOnOutsideClick, "data-e2e-test-id": dataE2eTestId, onVisibilityChange, }: ToggletipProps): React.ReactElement;
18
13
  export {};
@@ -20,6 +20,7 @@ function Toggletip(_ref2) {
20
20
  externalTriggerRef,
21
21
  portalContainer,
22
22
  isVisible: isToggletipVisible,
23
+ dismissOnOutsideClick = true,
23
24
  "data-e2e-test-id": dataE2eTestId,
24
25
  onVisibilityChange
25
26
  } = _ref2;
@@ -94,8 +95,9 @@ function Toggletip(_ref2) {
94
95
  }) : null;
95
96
  const contentElm = /*#__PURE__*/React.createElement(FocusTrap, {
96
97
  focusTrapOptions: {
97
- clickOutsideDeactivates: handleClickOutsideDeactivates,
98
+ clickOutsideDeactivates: dismissOnOutsideClick && handleClickOutsideDeactivates,
98
99
  // de-active focus trap on outside click
100
+ allowOutsideClick: true,
99
101
  escapeDeactivates: true,
100
102
  // de-activate focus trap on escape key
101
103
  fallbackFocus: `#${tooltipId}`,
@@ -115,7 +117,6 @@ function Toggletip(_ref2) {
115
117
  dataE2eTestId: dataE2eTestId,
116
118
  isVisible: isVisible,
117
119
  tooltipId: tooltipId,
118
- tabIndex: -1,
119
120
  triggerRef: triggerRef
120
121
  });
121
122
  return /*#__PURE__*/React.createElement(React.Fragment, null, triggerElm, tooltipElm);
@@ -1 +1 @@
1
- {"version":3,"file":"Toggletip.js","sources":["../../../../../src/components/Toggletip/Toggletip.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useEffect,\n useCallback,\n useMemo,\n ReactElement,\n MutableRefObject,\n PropsWithChildren,\n} from \"react\";\nimport FocusTrap from \"focus-trap-react\";\nimport type { TooltipContentProps } from \"../Tooltip/TooltipContent\";\nimport { TooltipContent } from \"../Tooltip/TooltipContent\";\n\ntype BaseProps = Pick<\n TooltipContentProps,\n \"placement\" | \"portalContainer\" | \"contentPadding\" | \"maxWidth\"\n> & {\n // Toggletip content\n content: ReactElement;\n \"data-e2e-test-id\"?: string;\n // Programmatically toggle Toggletip visibility with this prop\n isVisible?: boolean;\n /* Called when tooltip appears and disappears */\n onVisibilityChange?: (isVisible: boolean) => void;\n};\n\ntype ConditionalProps =\n | {\n externalTriggerRef?: never;\n /* Trigger element - wrap trigger element within Toggletip - takes precedence over external trigger prop */\n children: React.ReactElement;\n }\n | {\n children?: never;\n /* Trigger element ref - pass in an external trigger element */\n externalTriggerRef: MutableRefObject<any>;\n };\n\nexport type ToggletipProps = BaseProps & ConditionalProps;\n\nconst FocusTrapContent = React.forwardRef<\n HTMLDivElement,\n PropsWithChildren<unknown>\n>(({ children }, ref) => <div ref={ref}>{children}</div>);\n\nexport function Toggletip({\n placement = \"auto\",\n content,\n children,\n contentPadding = \"m\",\n maxWidth,\n externalTriggerRef,\n portalContainer,\n isVisible: isToggletipVisible,\n \"data-e2e-test-id\": dataE2eTestId,\n onVisibilityChange,\n}: ToggletipProps): React.ReactElement {\n const tooltipId = useMemo(\n () => `DSToggletip_${Math.floor(Date.now() * Math.random())}`,\n []\n );\n const [isVisible, setVisible] = useState(isToggletipVisible);\n const internalTriggerRef = useRef(null);\n const triggerRef = externalTriggerRef || internalTriggerRef;\n const isOutsideClickOnTrigger = useRef(false);\n\n const toggleVisibility = useCallback(\n (status: boolean) => {\n setVisible(status);\n\n if (onVisibilityChange) {\n onVisibilityChange(status);\n }\n },\n [onVisibilityChange]\n );\n\n // Outside click is also fired when the Toggletip is open and trigger is clicked. `isOutsideClickOnTrigger` saves this condition and we check for it so as to not toggle the Toggletip twice.\n const handleTriggerClick = useCallback(() => {\n if (!isOutsideClickOnTrigger.current) {\n toggleVisibility(!isVisible);\n } else {\n // reset this value so that Toggletip can open in next click\n isOutsideClickOnTrigger.current = false;\n }\n }, [toggleVisibility, isVisible]);\n\n const handleClickOutsideDeactivates = useCallback(\n (evt) => {\n if (triggerRef.current.contains(evt.target)) {\n isOutsideClickOnTrigger.current = true;\n }\n return true;\n },\n [triggerRef, isOutsideClickOnTrigger]\n );\n\n useEffect(() => {\n toggleVisibility(isToggletipVisible);\n }, [isToggletipVisible, toggleVisibility]);\n\n useEffect(() => {\n let trigger: HTMLElement;\n\n if (externalTriggerRef?.current && !children) {\n trigger = externalTriggerRef.current;\n\n trigger.setAttribute(\"tabindex\", \"0\");\n trigger.addEventListener(\"click\", handleTriggerClick);\n }\n\n return () => {\n if (trigger) {\n trigger.removeEventListener(\"click\", handleTriggerClick);\n }\n };\n }, [externalTriggerRef, children, handleTriggerClick]);\n\n useEffect(() => {\n if (externalTriggerRef?.current && !children) {\n const trigger = externalTriggerRef.current;\n\n if (isVisible) {\n trigger.setAttribute(\"aria-expanded\", true);\n trigger.setAttribute(\"aria-controls\", tooltipId);\n } else {\n trigger.removeAttribute(\"aria-expanded\");\n trigger.removeAttribute(\"aria-controls\");\n }\n }\n }, [externalTriggerRef, children, tooltipId, isVisible]);\n\n const triggerElm = children\n ? React.cloneElement(children, {\n ref: triggerRef,\n ...(isVisible && {\n \"aria-expanded\": true,\n \"aria-controls\": tooltipId,\n }),\n tabIndex: 0,\n onClick: (evt: React.MouseEvent) => {\n handleTriggerClick();\n if (children.props.onClick) {\n children.props.onClick(evt);\n }\n },\n })\n : null;\n\n const contentElm = (\n <FocusTrap\n focusTrapOptions={{\n clickOutsideDeactivates: handleClickOutsideDeactivates, // de-active focus trap on outside click\n escapeDeactivates: true, // de-activate focus trap on escape key\n fallbackFocus: `#${tooltipId}`, // set focus to tooltip content container if it has no focusable element\n onDeactivate: () => {\n toggleVisibility(false);\n },\n }}\n >\n <FocusTrapContent>{content}</FocusTrapContent>\n </FocusTrap>\n );\n const tooltipElm = (\n <TooltipContent\n dataDSId=\"Toggletip\"\n content={contentElm}\n contentPadding={contentPadding}\n maxWidth={maxWidth}\n placement={placement}\n portalContainer={portalContainer}\n dataE2eTestId={dataE2eTestId}\n isVisible={isVisible}\n tooltipId={tooltipId}\n tabIndex={-1}\n triggerRef={triggerRef}\n />\n );\n return (\n <>\n {triggerElm}\n {tooltipElm}\n </>\n );\n}\n"],"names":["FocusTrapContent","React","forwardRef","_ref","ref","children","createElement","Toggletip","_ref2","placement","content","contentPadding","maxWidth","externalTriggerRef","portalContainer","isVisible","isToggletipVisible","dataE2eTestId","onVisibilityChange","tooltipId","useMemo","Math","floor","Date","now","random","setVisible","useState","internalTriggerRef","useRef","triggerRef","isOutsideClickOnTrigger","toggleVisibility","useCallback","status","handleTriggerClick","current","handleClickOutsideDeactivates","evt","contains","target","useEffect","trigger","setAttribute","addEventListener","removeEventListener","removeAttribute","triggerElm","cloneElement","tabIndex","onClick","props","contentElm","FocusTrap","focusTrapOptions","clickOutsideDeactivates","escapeDeactivates","fallbackFocus","onDeactivate","tooltipElm","TooltipContent","dataDSId","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Toggletip.js","sources":["../../../../../src/components/Toggletip/Toggletip.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useEffect,\n useCallback,\n useMemo,\n ReactElement,\n PropsWithChildren,\n} from \"react\";\nimport FocusTrap from \"focus-trap-react\";\nimport type { TooltipContentProps } from \"../Tooltip/TooltipContent\";\nimport { TooltipContent } from \"../Tooltip/TooltipContent\";\nimport type { TooltipConditionalProps } from \"../Tooltip/types\";\n\ntype BaseProps = Pick<\n TooltipContentProps,\n \"placement\" | \"portalContainer\" | \"contentPadding\" | \"maxWidth\"\n> & {\n // Toggletip content\n content: ReactElement;\n \"data-e2e-test-id\"?: string;\n // Programmatically toggle Toggletip visibility with this prop\n isVisible?: boolean;\n /* Called when Toggletip appears and disappears */\n onVisibilityChange?: (isVisible: boolean) => void;\n /* Controls whether Toggletip closes on outside click */\n dismissOnOutsideClick?: boolean;\n};\n\nexport type ToggletipProps = BaseProps & TooltipConditionalProps;\n\nconst FocusTrapContent = React.forwardRef<\n HTMLDivElement,\n PropsWithChildren<unknown>\n>(({ children }, ref) => <div ref={ref}>{children}</div>);\n\nexport function Toggletip({\n placement = \"auto\",\n content,\n children,\n contentPadding = \"m\",\n maxWidth,\n externalTriggerRef,\n portalContainer,\n isVisible: isToggletipVisible,\n dismissOnOutsideClick = true,\n \"data-e2e-test-id\": dataE2eTestId,\n onVisibilityChange,\n}: ToggletipProps): React.ReactElement {\n const tooltipId = useMemo(\n () => `DSToggletip_${Math.floor(Date.now() * Math.random())}`,\n []\n );\n const [isVisible, setVisible] = useState(isToggletipVisible);\n const internalTriggerRef = useRef(null);\n const triggerRef = externalTriggerRef || internalTriggerRef;\n const isOutsideClickOnTrigger = useRef(false);\n\n const toggleVisibility = useCallback(\n (status: boolean) => {\n setVisible(status);\n\n if (onVisibilityChange) {\n onVisibilityChange(status);\n }\n },\n [onVisibilityChange]\n );\n\n // Outside click is also fired when the Toggletip is open and trigger is clicked. `isOutsideClickOnTrigger` saves this condition and we check for it so as to not toggle the Toggletip twice.\n const handleTriggerClick = useCallback(() => {\n if (!isOutsideClickOnTrigger.current) {\n toggleVisibility(!isVisible);\n } else {\n // reset this value so that Toggletip can open in next click\n isOutsideClickOnTrigger.current = false;\n }\n }, [toggleVisibility, isVisible]);\n\n const handleClickOutsideDeactivates = useCallback(\n (evt) => {\n if (triggerRef.current.contains(evt.target)) {\n isOutsideClickOnTrigger.current = true;\n }\n return true;\n },\n [triggerRef, isOutsideClickOnTrigger]\n );\n\n useEffect(() => {\n toggleVisibility(isToggletipVisible);\n }, [isToggletipVisible, toggleVisibility]);\n\n useEffect(() => {\n let trigger: HTMLElement;\n\n if (externalTriggerRef?.current && !children) {\n trigger = externalTriggerRef.current;\n\n trigger.setAttribute(\"tabindex\", \"0\");\n trigger.addEventListener(\"click\", handleTriggerClick);\n }\n\n return () => {\n if (trigger) {\n trigger.removeEventListener(\"click\", handleTriggerClick);\n }\n };\n }, [externalTriggerRef, children, handleTriggerClick]);\n\n useEffect(() => {\n if (externalTriggerRef?.current && !children) {\n const trigger = externalTriggerRef.current;\n\n if (isVisible) {\n trigger.setAttribute(\"aria-expanded\", true);\n trigger.setAttribute(\"aria-controls\", tooltipId);\n } else {\n trigger.removeAttribute(\"aria-expanded\");\n trigger.removeAttribute(\"aria-controls\");\n }\n }\n }, [externalTriggerRef, children, tooltipId, isVisible]);\n\n const triggerElm = children\n ? React.cloneElement(children, {\n ref: triggerRef,\n ...(isVisible && {\n \"aria-expanded\": true,\n \"aria-controls\": tooltipId,\n }),\n tabIndex: 0,\n onClick: (evt: React.MouseEvent) => {\n handleTriggerClick();\n if (children.props.onClick) {\n children.props.onClick(evt);\n }\n },\n })\n : null;\n\n const contentElm = (\n <FocusTrap\n focusTrapOptions={{\n clickOutsideDeactivates:\n dismissOnOutsideClick && handleClickOutsideDeactivates, // de-active focus trap on outside click\n allowOutsideClick: true,\n escapeDeactivates: true, // de-activate focus trap on escape key\n fallbackFocus: `#${tooltipId}`, // set focus to tooltip content container if it has no focusable element\n onDeactivate: () => {\n toggleVisibility(false);\n },\n }}\n >\n <FocusTrapContent>{content}</FocusTrapContent>\n </FocusTrap>\n );\n const tooltipElm = (\n <TooltipContent\n dataDSId=\"Toggletip\"\n content={contentElm}\n contentPadding={contentPadding}\n maxWidth={maxWidth}\n placement={placement}\n portalContainer={portalContainer}\n dataE2eTestId={dataE2eTestId}\n isVisible={isVisible}\n tooltipId={tooltipId}\n triggerRef={triggerRef}\n />\n );\n\n return (\n <>\n {triggerElm}\n {tooltipElm}\n </>\n );\n}\n"],"names":["FocusTrapContent","React","forwardRef","_ref","ref","children","createElement","Toggletip","_ref2","placement","content","contentPadding","maxWidth","externalTriggerRef","portalContainer","isVisible","isToggletipVisible","dismissOnOutsideClick","dataE2eTestId","onVisibilityChange","tooltipId","useMemo","Math","floor","Date","now","random","setVisible","useState","internalTriggerRef","useRef","triggerRef","isOutsideClickOnTrigger","toggleVisibility","useCallback","status","handleTriggerClick","current","handleClickOutsideDeactivates","evt","contains","target","useEffect","trigger","setAttribute","addEventListener","removeEventListener","removeAttribute","triggerElm","cloneElement","tabIndex","onClick","props","contentElm","FocusTrap","focusTrapOptions","clickOutsideDeactivates","allowOutsideClick","escapeDeactivates","fallbackFocus","onDeactivate","tooltipElm","TooltipContent","dataDSId","Fragment"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import type { TooltipContentProps } from "./TooltipContent";
3
+ import { TooltipConditionalProps } from "./types";
4
+ type BaseProps = Pick<TooltipContentProps, "placement" | "portalContainer" | "contentPadding" | "maxWidth"> & {
5
+ content: React.ReactElement;
6
+ "data-e2e-test-id"?: string;
7
+ onVisibilityChange?: (isVisible: boolean) => void;
8
+ };
9
+ export type BaseTooltipProps = BaseProps & TooltipConditionalProps;
10
+ export declare function BaseTooltip({ placement, content, children, externalTriggerRef, portalContainer, contentPadding, maxWidth, "data-e2e-test-id": dataE2eTestId, onVisibilityChange, }: BaseTooltipProps): React.ReactElement;
11
+ export {};
@@ -0,0 +1,158 @@
1
+ import React, { useMemo, useState, useRef, useCallback, useEffect } from 'react';
2
+ import { TooltipContent } from './TooltipContent.js';
3
+
4
+ const SHOW_HIDE_DELAY = 200;
5
+ function BaseTooltip(_ref) {
6
+ let {
7
+ placement = "auto",
8
+ content,
9
+ children,
10
+ externalTriggerRef,
11
+ portalContainer,
12
+ contentPadding = "m",
13
+ maxWidth,
14
+ "data-e2e-test-id": dataE2eTestId,
15
+ onVisibilityChange
16
+ } = _ref;
17
+ const tooltipId = useMemo(() => `DSTooltip_${Math.floor(Date.now() * Math.random())}`, []);
18
+ const [isVisible, setVisible] = useState(false);
19
+ const triggeredByEvent = useRef(null); // indicates if triggered by hover or focus
20
+ const isTooltipHovered = useRef(false);
21
+ const isTriggerHovered = useRef(false);
22
+ const hideTooltipTimeoutId = useRef(null);
23
+ const showTooltipTimeoutId = useRef(null);
24
+ const internalTriggerRef = useRef(null);
25
+ const triggerRef = externalTriggerRef || internalTriggerRef;
26
+ const toggleVisibility = useCallback(status => {
27
+ setVisible(status);
28
+ if (onVisibilityChange) {
29
+ onVisibilityChange(status);
30
+ }
31
+ }, [onVisibilityChange]);
32
+ const handleTriggerPointerEnter = useCallback(() => {
33
+ isTriggerHovered.current = true;
34
+ if (!isTooltipHovered.current) {
35
+ clearTimeout(showTooltipTimeoutId.current);
36
+ // Delay show tooltip to prevent flickering when mouse moves quickly over trigger
37
+ showTooltipTimeoutId.current = setTimeout(() => {
38
+ if (isTriggerHovered.current) {
39
+ triggeredByEvent.current = "hover";
40
+ toggleVisibility(true);
41
+ }
42
+ }, SHOW_HIDE_DELAY);
43
+ }
44
+ }, [toggleVisibility]);
45
+ const handleTriggerPointerLeave = useCallback(() => {
46
+ isTriggerHovered.current = false;
47
+ clearTimeout(hideTooltipTimeoutId.current);
48
+ // Delay removing tooltip from DOM to allow hover over tooltip element
49
+ hideTooltipTimeoutId.current = setTimeout(() => {
50
+ if (!isTooltipHovered.current && triggeredByEvent.current === "hover" && !isTriggerHovered.current) {
51
+ toggleVisibility(false);
52
+ }
53
+ }, SHOW_HIDE_DELAY);
54
+ }, [toggleVisibility]);
55
+ const handleTriggerFocus = useCallback(() => {
56
+ triggeredByEvent.current = "focus";
57
+ toggleVisibility(true);
58
+ }, [toggleVisibility]);
59
+ const handleTriggerBlur = useCallback(() => {
60
+ if (triggeredByEvent.current === "focus") {
61
+ toggleVisibility(false);
62
+ }
63
+ }, [toggleVisibility]);
64
+ const handleTriggerKeyDown = useCallback(evt => {
65
+ if (evt.key === "Escape") {
66
+ toggleVisibility(false);
67
+ }
68
+ }, [toggleVisibility]);
69
+ const handleTooltipPointerEnter = () => {
70
+ isTooltipHovered.current = true;
71
+ };
72
+ const handleTooltipPointerLeave = () => {
73
+ isTooltipHovered.current = false;
74
+ if (triggeredByEvent.current === "hover") {
75
+ toggleVisibility(false);
76
+ }
77
+ };
78
+ useEffect(() => () => {
79
+ // clear timers
80
+ clearTimeout(showTooltipTimeoutId.current);
81
+ clearTimeout(hideTooltipTimeoutId.current);
82
+ }, []);
83
+ useEffect(() => {
84
+ let trigger;
85
+ if (externalTriggerRef?.current && !children) {
86
+ trigger = externalTriggerRef.current;
87
+ trigger.setAttribute("tabindex", "0");
88
+ trigger.addEventListener("pointerenter", handleTriggerPointerEnter);
89
+ trigger.addEventListener("pointerleave", handleTriggerPointerLeave);
90
+ trigger.addEventListener("focus", handleTriggerFocus);
91
+ trigger.addEventListener("blur", handleTriggerBlur);
92
+ trigger.addEventListener("keydown", handleTriggerKeyDown);
93
+ }
94
+ return () => {
95
+ if (trigger) {
96
+ trigger.removeEventListener("pointerenter", handleTriggerPointerEnter);
97
+ trigger.removeEventListener("pointerleave", handleTriggerPointerLeave);
98
+ trigger.removeEventListener("focus", handleTriggerFocus);
99
+ trigger.removeEventListener("blur", handleTriggerBlur);
100
+ trigger.removeEventListener("keydown", handleTriggerKeyDown);
101
+ }
102
+ };
103
+ }, [externalTriggerRef, children, handleTriggerPointerEnter, handleTriggerPointerLeave, handleTriggerFocus, handleTriggerBlur, handleTriggerKeyDown]);
104
+ useEffect(() => {
105
+ if (externalTriggerRef?.current && !children) {
106
+ const trigger = externalTriggerRef.current;
107
+ if (isVisible) {
108
+ trigger.setAttribute("aria-describedby", tooltipId);
109
+ } else {
110
+ trigger.removeAttribute("aria-describedby");
111
+ }
112
+ }
113
+ }, [externalTriggerRef, children, tooltipId, isVisible]);
114
+ const triggerElm = children ? /*#__PURE__*/React.cloneElement(children, {
115
+ ref: triggerRef,
116
+ ...(isVisible && {
117
+ "aria-describedby": tooltipId
118
+ }),
119
+ tabIndex: 0,
120
+ onPointerEnter: handleTriggerPointerEnter,
121
+ onPointerLeave: handleTriggerPointerLeave,
122
+ onFocus: evt => {
123
+ handleTriggerFocus();
124
+ if (children.props.onFocus) {
125
+ children.props.onFocus(evt);
126
+ }
127
+ },
128
+ onBlur: evt => {
129
+ handleTriggerBlur();
130
+ if (children.props.onBlur) {
131
+ if (children.props.onBlur) {
132
+ children.props.onBlur(evt);
133
+ }
134
+ }
135
+ },
136
+ onKeyDown: handleTriggerKeyDown
137
+ }) : null;
138
+ const tooltipElm = /*#__PURE__*/React.createElement(TooltipContent, {
139
+ dataDSId: "Tooltip",
140
+ content: content,
141
+ placement: placement,
142
+ portalContainer: portalContainer,
143
+ dataE2eTestId: dataE2eTestId,
144
+ isVisible: isVisible,
145
+ tooltipId: tooltipId,
146
+ triggerRef: triggerRef,
147
+ "aria-hidden": true,
148
+ role: "tooltip",
149
+ contentPadding: contentPadding,
150
+ maxWidth: maxWidth,
151
+ onTooltipPointerEnter: handleTooltipPointerEnter,
152
+ onTooltipPointerLeave: handleTooltipPointerLeave
153
+ });
154
+ return /*#__PURE__*/React.createElement(React.Fragment, null, triggerElm, tooltipElm);
155
+ }
156
+
157
+ export { BaseTooltip };
158
+ //# sourceMappingURL=BaseTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTooltip.js","sources":["../../../../../src/components/Tooltip/BaseTooltip.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useEffect,\n useCallback,\n useMemo,\n} from \"react\";\nimport type { TooltipContentProps } from \"./TooltipContent\";\nimport { TooltipContent } from \"./TooltipContent\";\nimport { TooltipConditionalProps } from \"./types\";\n\ntype BaseProps = Pick<\n TooltipContentProps,\n \"placement\" | \"portalContainer\" | \"contentPadding\" | \"maxWidth\"\n> & {\n /* Tooltip content */\n content: React.ReactElement;\n \"data-e2e-test-id\"?: string;\n /* Called when tooltip appears and disappears */\n onVisibilityChange?: (isVisible: boolean) => void;\n};\n\nexport type BaseTooltipProps = BaseProps & TooltipConditionalProps;\n\nconst SHOW_HIDE_DELAY = 200;\n\nexport function BaseTooltip({\n placement = \"auto\",\n content,\n children,\n externalTriggerRef,\n portalContainer,\n contentPadding = \"m\",\n maxWidth,\n \"data-e2e-test-id\": dataE2eTestId,\n onVisibilityChange,\n}: BaseTooltipProps): React.ReactElement {\n const tooltipId = useMemo(\n () => `DSTooltip_${Math.floor(Date.now() * Math.random())}`,\n []\n );\n const [isVisible, setVisible] = useState(false);\n const triggeredByEvent = useRef(null); // indicates if triggered by hover or focus\n const isTooltipHovered = useRef(false);\n const isTriggerHovered = useRef(false);\n const hideTooltipTimeoutId = useRef(null);\n const showTooltipTimeoutId = useRef(null);\n const internalTriggerRef = useRef(null);\n const triggerRef = externalTriggerRef || internalTriggerRef;\n\n const toggleVisibility = useCallback(\n (status: boolean) => {\n setVisible(status);\n\n if (onVisibilityChange) {\n onVisibilityChange(status);\n }\n },\n [onVisibilityChange]\n );\n\n const handleTriggerPointerEnter = useCallback(() => {\n isTriggerHovered.current = true;\n if (!isTooltipHovered.current) {\n clearTimeout(showTooltipTimeoutId.current);\n // Delay show tooltip to prevent flickering when mouse moves quickly over trigger\n showTooltipTimeoutId.current = setTimeout(() => {\n if (isTriggerHovered.current) {\n triggeredByEvent.current = \"hover\";\n toggleVisibility(true);\n }\n }, SHOW_HIDE_DELAY);\n }\n }, [toggleVisibility]);\n\n const handleTriggerPointerLeave = useCallback(() => {\n isTriggerHovered.current = false;\n clearTimeout(hideTooltipTimeoutId.current);\n // Delay removing tooltip from DOM to allow hover over tooltip element\n hideTooltipTimeoutId.current = setTimeout(() => {\n if (\n !isTooltipHovered.current &&\n triggeredByEvent.current === \"hover\" &&\n !isTriggerHovered.current\n ) {\n toggleVisibility(false);\n }\n }, SHOW_HIDE_DELAY);\n }, [toggleVisibility]);\n\n const handleTriggerFocus = useCallback(() => {\n triggeredByEvent.current = \"focus\";\n toggleVisibility(true);\n }, [toggleVisibility]);\n\n const handleTriggerBlur = useCallback(() => {\n if (triggeredByEvent.current === \"focus\") {\n toggleVisibility(false);\n }\n }, [toggleVisibility]);\n\n const handleTriggerKeyDown = useCallback(\n (evt) => {\n if (evt.key === \"Escape\") {\n toggleVisibility(false);\n }\n },\n [toggleVisibility]\n );\n\n const handleTooltipPointerEnter = () => {\n isTooltipHovered.current = true;\n };\n\n const handleTooltipPointerLeave = () => {\n isTooltipHovered.current = false;\n if (triggeredByEvent.current === \"hover\") {\n toggleVisibility(false);\n }\n };\n\n useEffect(\n () => () => {\n // clear timers\n clearTimeout(showTooltipTimeoutId.current);\n clearTimeout(hideTooltipTimeoutId.current);\n },\n []\n );\n\n useEffect(() => {\n let trigger: HTMLElement;\n\n if (externalTriggerRef?.current && !children) {\n trigger = externalTriggerRef.current;\n\n trigger.setAttribute(\"tabindex\", \"0\");\n trigger.addEventListener(\"pointerenter\", handleTriggerPointerEnter);\n trigger.addEventListener(\"pointerleave\", handleTriggerPointerLeave);\n trigger.addEventListener(\"focus\", handleTriggerFocus);\n trigger.addEventListener(\"blur\", handleTriggerBlur);\n trigger.addEventListener(\"keydown\", handleTriggerKeyDown);\n }\n\n return () => {\n if (trigger) {\n trigger.removeEventListener(\"pointerenter\", handleTriggerPointerEnter);\n trigger.removeEventListener(\"pointerleave\", handleTriggerPointerLeave);\n trigger.removeEventListener(\"focus\", handleTriggerFocus);\n trigger.removeEventListener(\"blur\", handleTriggerBlur);\n trigger.removeEventListener(\"keydown\", handleTriggerKeyDown);\n }\n };\n }, [\n externalTriggerRef,\n children,\n handleTriggerPointerEnter,\n handleTriggerPointerLeave,\n handleTriggerFocus,\n handleTriggerBlur,\n handleTriggerKeyDown,\n ]);\n\n useEffect(() => {\n if (externalTriggerRef?.current && !children) {\n const trigger = externalTriggerRef.current;\n\n if (isVisible) {\n trigger.setAttribute(\"aria-describedby\", tooltipId);\n } else {\n trigger.removeAttribute(\"aria-describedby\");\n }\n }\n }, [externalTriggerRef, children, tooltipId, isVisible]);\n\n const triggerElm = children\n ? React.cloneElement(children, {\n ref: triggerRef,\n ...(isVisible && {\n \"aria-describedby\": tooltipId,\n }),\n tabIndex: 0,\n onPointerEnter: handleTriggerPointerEnter,\n onPointerLeave: handleTriggerPointerLeave,\n onFocus: (evt: FocusEvent) => {\n handleTriggerFocus();\n if (children.props.onFocus) {\n children.props.onFocus(evt);\n }\n },\n onBlur: (evt: FocusEvent) => {\n handleTriggerBlur();\n if (children.props.onBlur) {\n if (children.props.onBlur) {\n children.props.onBlur(evt);\n }\n }\n },\n onKeyDown: handleTriggerKeyDown,\n })\n : null;\n\n const tooltipElm = (\n <TooltipContent\n dataDSId=\"Tooltip\"\n content={content}\n placement={placement}\n portalContainer={portalContainer}\n dataE2eTestId={dataE2eTestId}\n isVisible={isVisible}\n tooltipId={tooltipId}\n triggerRef={triggerRef}\n aria-hidden\n role=\"tooltip\"\n contentPadding={contentPadding}\n maxWidth={maxWidth}\n onTooltipPointerEnter={handleTooltipPointerEnter}\n onTooltipPointerLeave={handleTooltipPointerLeave}\n />\n );\n return (\n <>\n {triggerElm}\n {tooltipElm}\n </>\n );\n}\n"],"names":["SHOW_HIDE_DELAY","BaseTooltip","_ref","placement","content","children","externalTriggerRef","portalContainer","contentPadding","maxWidth","dataE2eTestId","onVisibilityChange","tooltipId","useMemo","Math","floor","Date","now","random","isVisible","setVisible","useState","triggeredByEvent","useRef","isTooltipHovered","isTriggerHovered","hideTooltipTimeoutId","showTooltipTimeoutId","internalTriggerRef","triggerRef","toggleVisibility","useCallback","status","handleTriggerPointerEnter","current","clearTimeout","setTimeout","handleTriggerPointerLeave","handleTriggerFocus","handleTriggerBlur","handleTriggerKeyDown","evt","key","handleTooltipPointerEnter","handleTooltipPointerLeave","useEffect","trigger","setAttribute","addEventListener","removeEventListener","removeAttribute","triggerElm","React","cloneElement","ref","tabIndex","onPointerEnter","onPointerLeave","onFocus","props","onBlur","onKeyDown","tooltipElm","createElement","TooltipContent","dataDSId","role","onTooltipPointerEnter","onTooltipPointerLeave","Fragment"],"mappings":"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"}
@@ -1,17 +1,7 @@
1
- import React, { MutableRefObject } from "react";
2
- import type { TooltipContentProps } from "./TooltipContent";
3
- type BaseProps = Pick<TooltipContentProps, "placement" | "portalContainer"> & {
1
+ import React from "react";
2
+ import type { BaseTooltipProps } from "./BaseTooltip";
3
+ import { TooltipConditionalProps } from "./types";
4
+ export type TooltipProps = Omit<BaseTooltipProps, "content" | "contentPadding" | "maxWidth"> & {
4
5
  content: string;
5
- "data-e2e-test-id"?: string;
6
- onVisibilityChange?: (isVisible: boolean) => void;
7
- };
8
- type ConditionalProps = {
9
- externalTriggerRef?: never;
10
- children: React.ReactElement;
11
- } | {
12
- children?: never;
13
- externalTriggerRef: MutableRefObject<any>;
14
- };
15
- export type TooltipProps = BaseProps & ConditionalProps;
16
- export declare function Tooltip({ placement, content, children, externalTriggerRef, portalContainer, "data-e2e-test-id": dataE2eTestId, onVisibilityChange, }: TooltipProps): React.ReactElement;
17
- export {};
6
+ } & TooltipConditionalProps;
7
+ export declare function Tooltip({ content, ...rest }: TooltipProps): React.ReactElement;
@@ -1,157 +1,20 @@
1
- import React, { useMemo, useState, useRef, useCallback, useEffect } from 'react';
1
+ import _extends from '@babel/runtime/helpers/extends';
2
+ import React from 'react';
2
3
  import { Text } from '../Typography/Text/Text.js';
3
- import { TooltipContent } from './TooltipContent.js';
4
+ import { BaseTooltip } from './BaseTooltip.js';
4
5
 
5
- const SHOW_HIDE_DELAY = 200;
6
6
  function Tooltip(_ref) {
7
7
  let {
8
- placement = "auto",
9
8
  content,
10
- children,
11
- externalTriggerRef,
12
- portalContainer,
13
- "data-e2e-test-id": dataE2eTestId,
14
- onVisibilityChange
9
+ ...rest
15
10
  } = _ref;
16
- const tooltipId = useMemo(() => `DSTooltip_${Math.floor(Date.now() * Math.random())}`, []);
17
- const [isVisible, setVisible] = useState(false);
18
- const triggeredByEvent = useRef(null); // indicates if triggered by hover or focus
19
- const isTooltipHovered = useRef(false);
20
- const isTriggerHovered = useRef(false);
21
- const hideTooltipTimeoutId = useRef(null);
22
- const showTooltipTimeoutId = useRef(null);
23
- const internalTriggerRef = useRef(null);
24
- const triggerRef = externalTriggerRef || internalTriggerRef;
25
- const toggleVisibility = useCallback(status => {
26
- setVisible(status);
27
- if (onVisibilityChange) {
28
- onVisibilityChange(status);
29
- }
30
- }, [onVisibilityChange]);
31
- const handleTriggerPointerEnter = useCallback(() => {
32
- isTriggerHovered.current = true;
33
- if (!isTooltipHovered.current) {
34
- clearTimeout(showTooltipTimeoutId.current);
35
- // Delay show tooltip to prevent flickering when mouse moves quickly over trigger
36
- showTooltipTimeoutId.current = setTimeout(() => {
37
- if (isTriggerHovered.current) {
38
- triggeredByEvent.current = "hover";
39
- toggleVisibility(true);
40
- }
41
- }, SHOW_HIDE_DELAY);
42
- }
43
- }, [toggleVisibility]);
44
- const handleTriggerPointerLeave = useCallback(() => {
45
- isTriggerHovered.current = false;
46
- clearTimeout(hideTooltipTimeoutId.current);
47
- // Delay removing tooltip from DOM to allow hover over tooltip element
48
- hideTooltipTimeoutId.current = setTimeout(() => {
49
- if (!isTooltipHovered.current && triggeredByEvent.current === "hover" && !isTriggerHovered.current) {
50
- toggleVisibility(false);
51
- }
52
- }, SHOW_HIDE_DELAY);
53
- }, [toggleVisibility]);
54
- const handleTriggerFocus = useCallback(() => {
55
- triggeredByEvent.current = "focus";
56
- toggleVisibility(true);
57
- }, [toggleVisibility]);
58
- const handleTriggerBlur = useCallback(() => {
59
- if (triggeredByEvent.current === "focus") {
60
- toggleVisibility(false);
61
- }
62
- }, [toggleVisibility]);
63
- const handleTriggerKeyDown = useCallback(evt => {
64
- if (evt.key === "Escape") {
65
- toggleVisibility(false);
66
- }
67
- }, [toggleVisibility]);
68
- const handleTooltipPointerEnter = () => {
69
- isTooltipHovered.current = true;
70
- };
71
- const handleTooltipPointerLeave = () => {
72
- isTooltipHovered.current = false;
73
- if (triggeredByEvent.current === "hover") {
74
- toggleVisibility(false);
75
- }
76
- };
77
- useEffect(() => () => {
78
- // clear timers
79
- clearTimeout(showTooltipTimeoutId.current);
80
- clearTimeout(hideTooltipTimeoutId.current);
81
- }, []);
82
- useEffect(() => {
83
- let trigger;
84
- if (externalTriggerRef?.current && !children) {
85
- trigger = externalTriggerRef.current;
86
- trigger.setAttribute("tabindex", "0");
87
- trigger.addEventListener("pointerenter", handleTriggerPointerEnter);
88
- trigger.addEventListener("pointerleave", handleTriggerPointerLeave);
89
- trigger.addEventListener("focus", handleTriggerFocus);
90
- trigger.addEventListener("blur", handleTriggerBlur);
91
- trigger.addEventListener("keydown", handleTriggerKeyDown);
92
- }
93
- return () => {
94
- if (trigger) {
95
- trigger.removeEventListener("pointerenter", handleTriggerPointerEnter);
96
- trigger.removeEventListener("pointerleave", handleTriggerPointerLeave);
97
- trigger.removeEventListener("focus", handleTriggerFocus);
98
- trigger.removeEventListener("blur", handleTriggerBlur);
99
- trigger.removeEventListener("keydown", handleTriggerKeyDown);
100
- }
101
- };
102
- }, [externalTriggerRef, children, handleTriggerPointerEnter, handleTriggerPointerLeave, handleTriggerFocus, handleTriggerBlur, handleTriggerKeyDown]);
103
- useEffect(() => {
104
- if (externalTriggerRef?.current && !children) {
105
- const trigger = externalTriggerRef.current;
106
- if (isVisible) {
107
- trigger.setAttribute("aria-describedby", tooltipId);
108
- } else {
109
- trigger.removeAttribute("aria-describedby");
110
- }
111
- }
112
- }, [externalTriggerRef, children, tooltipId, isVisible]);
113
- const triggerElm = children ? /*#__PURE__*/React.cloneElement(children, {
114
- ref: triggerRef,
115
- ...(isVisible && {
116
- "aria-describedby": tooltipId
117
- }),
118
- tabIndex: 0,
119
- onPointerEnter: handleTriggerPointerEnter,
120
- onPointerLeave: handleTriggerPointerLeave,
121
- onFocus: evt => {
122
- handleTriggerFocus();
123
- if (children.props.onFocus) {
124
- children.props.onFocus(evt);
125
- }
126
- },
127
- onBlur: evt => {
128
- handleTriggerBlur();
129
- if (children.props.onBlur) {
130
- if (children.props.onBlur) {
131
- children.props.onBlur(evt);
132
- }
133
- }
134
- },
135
- onKeyDown: handleTriggerKeyDown
136
- }) : null;
137
11
  const contentElm = /*#__PURE__*/React.createElement(Text, {
138
12
  size: "s"
139
13
  }, content);
140
- const tooltipElm = /*#__PURE__*/React.createElement(TooltipContent, {
141
- dataDSId: "Tooltip",
142
- content: contentElm,
143
- placement: placement,
144
- portalContainer: portalContainer,
145
- dataE2eTestId: dataE2eTestId,
146
- isVisible: isVisible,
147
- tooltipId: tooltipId,
148
- triggerRef: triggerRef,
149
- "aria-hidden": true,
150
- role: "tooltip",
151
- onTooltipPointerEnter: handleTooltipPointerEnter,
152
- onTooltipPointerLeave: handleTooltipPointerLeave
153
- });
154
- return /*#__PURE__*/React.createElement(React.Fragment, null, triggerElm, tooltipElm);
14
+ /* eslint-disable-next-line react/jsx-props-no-spreading */
15
+ return /*#__PURE__*/React.createElement(BaseTooltip, _extends({
16
+ content: contentElm
17
+ }, rest));
155
18
  }
156
19
 
157
20
  export { Tooltip };
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, {\n useState,\n useRef,\n useEffect,\n useCallback,\n useMemo,\n MutableRefObject,\n} from \"react\";\nimport { Text } from \"../Typography/Text/Text\";\nimport type { TooltipContentProps } from \"./TooltipContent\";\nimport { TooltipContent } from \"./TooltipContent\";\n\ntype BaseProps = Pick<TooltipContentProps, \"placement\" | \"portalContainer\"> & {\n /* Tooltip content */\n content: string;\n \"data-e2e-test-id\"?: string;\n /* Called when tooltip appears and disappears */\n onVisibilityChange?: (isVisible: boolean) => void;\n};\n\ntype ConditionalProps =\n | {\n externalTriggerRef?: never;\n /* Trigger element - wrap trigger element within Tooltip - takes precedence over trigger prop */\n children: React.ReactElement;\n }\n | {\n children?: never;\n /* Trigger element ref - pass in an external trigger element */\n externalTriggerRef: MutableRefObject<any>;\n };\n\nexport type TooltipProps = BaseProps & ConditionalProps;\n\nconst SHOW_HIDE_DELAY = 200;\n\nexport function Tooltip({\n placement = \"auto\",\n content,\n children,\n externalTriggerRef,\n portalContainer,\n \"data-e2e-test-id\": dataE2eTestId,\n onVisibilityChange,\n}: TooltipProps): React.ReactElement {\n const tooltipId = useMemo(\n () => `DSTooltip_${Math.floor(Date.now() * Math.random())}`,\n []\n );\n const [isVisible, setVisible] = useState(false);\n const triggeredByEvent = useRef(null); // indicates if triggered by hover or focus\n const isTooltipHovered = useRef(false);\n const isTriggerHovered = useRef(false);\n const hideTooltipTimeoutId = useRef(null);\n const showTooltipTimeoutId = useRef(null);\n const internalTriggerRef = useRef(null);\n const triggerRef = externalTriggerRef || internalTriggerRef;\n\n const toggleVisibility = useCallback(\n (status: boolean) => {\n setVisible(status);\n\n if (onVisibilityChange) {\n onVisibilityChange(status);\n }\n },\n [onVisibilityChange]\n );\n\n const handleTriggerPointerEnter = useCallback(() => {\n isTriggerHovered.current = true;\n if (!isTooltipHovered.current) {\n clearTimeout(showTooltipTimeoutId.current);\n // Delay show tooltip to prevent flickering when mouse moves quickly over trigger\n showTooltipTimeoutId.current = setTimeout(() => {\n if (isTriggerHovered.current) {\n triggeredByEvent.current = \"hover\";\n toggleVisibility(true);\n }\n }, SHOW_HIDE_DELAY);\n }\n }, [toggleVisibility]);\n\n const handleTriggerPointerLeave = useCallback(() => {\n isTriggerHovered.current = false;\n clearTimeout(hideTooltipTimeoutId.current);\n // Delay removing tooltip from DOM to allow hover over tooltip element\n hideTooltipTimeoutId.current = setTimeout(() => {\n if (\n !isTooltipHovered.current &&\n triggeredByEvent.current === \"hover\" &&\n !isTriggerHovered.current\n ) {\n toggleVisibility(false);\n }\n }, SHOW_HIDE_DELAY);\n }, [toggleVisibility]);\n\n const handleTriggerFocus = useCallback(() => {\n triggeredByEvent.current = \"focus\";\n toggleVisibility(true);\n }, [toggleVisibility]);\n\n const handleTriggerBlur = useCallback(() => {\n if (triggeredByEvent.current === \"focus\") {\n toggleVisibility(false);\n }\n }, [toggleVisibility]);\n\n const handleTriggerKeyDown = useCallback(\n (evt) => {\n if (evt.key === \"Escape\") {\n toggleVisibility(false);\n }\n },\n [toggleVisibility]\n );\n\n const handleTooltipPointerEnter = () => {\n isTooltipHovered.current = true;\n };\n\n const handleTooltipPointerLeave = () => {\n isTooltipHovered.current = false;\n if (triggeredByEvent.current === \"hover\") {\n toggleVisibility(false);\n }\n };\n\n useEffect(\n () => () => {\n // clear timers\n clearTimeout(showTooltipTimeoutId.current);\n clearTimeout(hideTooltipTimeoutId.current);\n },\n []\n );\n\n useEffect(() => {\n let trigger: HTMLElement;\n\n if (externalTriggerRef?.current && !children) {\n trigger = externalTriggerRef.current;\n\n trigger.setAttribute(\"tabindex\", \"0\");\n trigger.addEventListener(\"pointerenter\", handleTriggerPointerEnter);\n trigger.addEventListener(\"pointerleave\", handleTriggerPointerLeave);\n trigger.addEventListener(\"focus\", handleTriggerFocus);\n trigger.addEventListener(\"blur\", handleTriggerBlur);\n trigger.addEventListener(\"keydown\", handleTriggerKeyDown);\n }\n\n return () => {\n if (trigger) {\n trigger.removeEventListener(\"pointerenter\", handleTriggerPointerEnter);\n trigger.removeEventListener(\"pointerleave\", handleTriggerPointerLeave);\n trigger.removeEventListener(\"focus\", handleTriggerFocus);\n trigger.removeEventListener(\"blur\", handleTriggerBlur);\n trigger.removeEventListener(\"keydown\", handleTriggerKeyDown);\n }\n };\n }, [\n externalTriggerRef,\n children,\n handleTriggerPointerEnter,\n handleTriggerPointerLeave,\n handleTriggerFocus,\n handleTriggerBlur,\n handleTriggerKeyDown,\n ]);\n\n useEffect(() => {\n if (externalTriggerRef?.current && !children) {\n const trigger = externalTriggerRef.current;\n\n if (isVisible) {\n trigger.setAttribute(\"aria-describedby\", tooltipId);\n } else {\n trigger.removeAttribute(\"aria-describedby\");\n }\n }\n }, [externalTriggerRef, children, tooltipId, isVisible]);\n\n const triggerElm = children\n ? React.cloneElement(children, {\n ref: triggerRef,\n ...(isVisible && {\n \"aria-describedby\": tooltipId,\n }),\n tabIndex: 0,\n onPointerEnter: handleTriggerPointerEnter,\n onPointerLeave: handleTriggerPointerLeave,\n onFocus: (evt: FocusEvent) => {\n handleTriggerFocus();\n if (children.props.onFocus) {\n children.props.onFocus(evt);\n }\n },\n onBlur: (evt: FocusEvent) => {\n handleTriggerBlur();\n if (children.props.onBlur) {\n if (children.props.onBlur) {\n children.props.onBlur(evt);\n }\n }\n },\n onKeyDown: handleTriggerKeyDown,\n })\n : null;\n const contentElm = <Text size=\"s\">{content}</Text>;\n const tooltipElm = (\n <TooltipContent\n dataDSId=\"Tooltip\"\n content={contentElm}\n placement={placement}\n portalContainer={portalContainer}\n dataE2eTestId={dataE2eTestId}\n isVisible={isVisible}\n tooltipId={tooltipId}\n triggerRef={triggerRef}\n aria-hidden\n role=\"tooltip\"\n onTooltipPointerEnter={handleTooltipPointerEnter}\n onTooltipPointerLeave={handleTooltipPointerLeave}\n />\n );\n return (\n <>\n {triggerElm}\n {tooltipElm}\n </>\n );\n}\n"],"names":["SHOW_HIDE_DELAY","Tooltip","_ref","placement","content","children","externalTriggerRef","portalContainer","dataE2eTestId","onVisibilityChange","tooltipId","useMemo","Math","floor","Date","now","random","isVisible","setVisible","useState","triggeredByEvent","useRef","isTooltipHovered","isTriggerHovered","hideTooltipTimeoutId","showTooltipTimeoutId","internalTriggerRef","triggerRef","toggleVisibility","useCallback","status","handleTriggerPointerEnter","current","clearTimeout","setTimeout","handleTriggerPointerLeave","handleTriggerFocus","handleTriggerBlur","handleTriggerKeyDown","evt","key","handleTooltipPointerEnter","handleTooltipPointerLeave","useEffect","trigger","setAttribute","addEventListener","removeEventListener","removeAttribute","triggerElm","React","cloneElement","ref","tabIndex","onPointerEnter","onPointerLeave","onFocus","props","onBlur","onKeyDown","contentElm","createElement","Text","size","tooltipElm","TooltipContent","dataDSId","role","onTooltipPointerEnter","onTooltipPointerLeave","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from \"react\";\nimport type { BaseTooltipProps } from \"./BaseTooltip\";\nimport { Text } from \"../Typography/Text/Text\";\nimport { BaseTooltip } from \"./BaseTooltip\";\nimport { TooltipConditionalProps } from \"./types\";\n\nexport type TooltipProps = Omit<\n BaseTooltipProps,\n \"content\" | \"contentPadding\" | \"maxWidth\"\n> & {\n /* Tooltip content */\n content: string;\n} & TooltipConditionalProps;\n\nexport function Tooltip({\n content,\n ...rest\n}: TooltipProps): React.ReactElement {\n const contentElm = <Text size=\"s\">{content}</Text>;\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n return <BaseTooltip content={contentElm} {...rest} />;\n}\n"],"names":["Tooltip","_ref","content","rest","contentElm","React","createElement","Text","size","BaseTooltip","_extends"],"mappings":";;;;;AAcO,SAASA,OAAOA,CAAAC,IAAA,EAGc;EAAA,IAHb;IACtBC,OAAO;IACP,GAAGC,IAAAA;AACS,GAAC,GAAAF,IAAA,CAAA;AACb,EAAA,MAAMG,UAAU,gBAAGC,KAAA,CAAAC,aAAA,CAACC,IAAI,EAAA;AAACC,IAAAA,IAAI,EAAC,GAAA;AAAG,GAAA,EAAEN,OAAc,CAAC,CAAA;AAClD;AACA,EAAA,oBAAOG,KAAA,CAAAC,aAAA,CAACG,WAAW,EAAAC,QAAA,CAAA;AAACR,IAAAA,OAAO,EAAEE,UAAAA;GAAgBD,EAAAA,IAAI,CAAG,CAAC,CAAA;AACvD;;;;"}
@@ -0,0 +1,8 @@
1
+ import { MutableRefObject } from "react";
2
+ export type TooltipConditionalProps = {
3
+ externalTriggerRef?: never;
4
+ children: React.ReactElement;
5
+ } | {
6
+ children?: never;
7
+ externalTriggerRef: MutableRefObject<any>;
8
+ };
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import type { BaseTooltipProps } from "../Tooltip/BaseTooltip";
3
+ export type UserHighlightTooltipProps = BaseTooltipProps;
4
+ export declare function UserHighlightTooltip(props: UserHighlightTooltipProps): React.ReactElement;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { BaseTooltip } from '../Tooltip/BaseTooltip.js';
3
+
4
+ function UserHighlightTooltip(props) {
5
+ /* eslint-disable-next-line react/jsx-props-no-spreading */
6
+ return /*#__PURE__*/React.createElement(BaseTooltip, props);
7
+ }
8
+
9
+ export { UserHighlightTooltip };
10
+ //# sourceMappingURL=UserHighlightTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserHighlightTooltip.js","sources":["../../../../../src/components/UserHighlightTooltip/UserHighlightTooltip.tsx"],"sourcesContent":["import React from \"react\";\nimport type { BaseTooltipProps } from \"../Tooltip/BaseTooltip\";\nimport { BaseTooltip } from \"../Tooltip/BaseTooltip\";\n\nexport type UserHighlightTooltipProps = BaseTooltipProps;\n\nexport function UserHighlightTooltip(\n props: UserHighlightTooltipProps\n): React.ReactElement {\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n return <BaseTooltip {...props} />;\n}\n"],"names":["UserHighlightTooltip","props","React","createElement","BaseTooltip"],"mappings":";;;AAMO,SAASA,oBAAoBA,CAClCC,KAAgC,EACZ;AACpB;AACA,EAAA,oBAAOC,KAAA,CAAAC,aAAA,CAACC,WAAW,EAAKH,KAAQ,CAAC,CAAA;AACnC;;;;"}
@@ -53,3 +53,4 @@ export * from "./components/Tooltip/Tooltip";
53
53
  export * from "./components/Tag/Tag";
54
54
  export * from "./components/TagGroup/TagGroup";
55
55
  export * from "./components/Toggletip/Toggletip";
56
+ export * from "./components/UserHighlightTooltip/UserHighlightTooltip";
@@ -48,6 +48,7 @@ export { Tooltip } from './components/Tooltip/Tooltip.js';
48
48
  export { MAX_TAG_WIDTH, Tag } from './components/Tag/Tag.js';
49
49
  export { TagGroup } from './components/TagGroup/TagGroup.js';
50
50
  export { Toggletip } from './components/Toggletip/Toggletip.js';
51
+ export { UserHighlightTooltip } from './components/UserHighlightTooltip/UserHighlightTooltip.js';
51
52
  export { Input } from './components/Form/Input/Input.js';
52
53
  export { PasswordInput } from './components/Form/PasswordInput/PasswordInput.js';
53
54
  export { BaseDataTable, DataTable } from './components/DataTable/DataTable.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":["import {\n ambossVisualConfiguration,\n VisualConfig,\n} from \"../build-tokens/visualConfig\";\n\nexport type { VisualConfig };\nexport const { dark, light } = ambossVisualConfiguration;\nexport { ThemeProvider, CacheProvider } from \"@emotion/react\";\nexport { default as createCache } from \"@emotion/cache\";\nexport * from \"./components/Card/Card\";\nexport * from \"./components/Card/CardBox\";\nexport * from \"./components/Box/Box\";\nexport * from \"./components/Inline/Inline\";\nexport * from \"./components/Stack/Stack\";\nexport * from \"./components/Typography/Header/Header\";\nexport * from \"./components/Typography/Text/Text\";\nexport * from \"./components/Typography/TextClamped/TextClamped\";\nexport * from \"./components/Typography/StyledText/StyledText\";\nexport * from \"./components/Link/Link\";\nexport * from \"./components/Icon/Icon\";\nexport * from \"./components/Button/Button\";\nexport * from \"./components/Divider/Divider\";\nexport * from \"./components/Column/Columns\";\nexport * from \"./components/Tabs/Tabs\";\nexport * from \"./components/Badge/Badge\";\nexport * from \"./components/SearchResult/SearchResult\";\nexport * from \"./components/Form/ToggleButton/ToggleButton\";\nexport * from \"./components/DropdownMenu/DropdownMenu\";\nexport * from \"./components/Form/FormFieldGroup/FormFieldGroup\";\nexport * from \"./components/Form/Input\";\nexport * from \"./components/Form/Checkbox/Checkbox\";\nexport * from \"./components/Form/Toggle/Toggle\";\nexport * from \"./components/Form/Radio/Radio\";\nexport * from \"./components/Form/RadioButton/RadioButton\";\nexport * from \"./components/Form/Textarea/Textarea\";\nexport * from \"./components/Form/Select/Select\";\nexport * from \"./components/SubThemeProvider/SubThemeProvider\";\nexport * from \"./components/PictogramButton/PictogramButton\";\nexport * from \"./components/MediaViewerBar/MediaViewerBar\";\nexport * from \"./components/SegmentedProgressBar/SegmentedProgressBar\";\nexport * from \"./components/ProgressBar/ProgressBar\";\nexport * from \"./components/Container/Container\";\nexport * from \"./components/Form/PasswordInput\";\nexport * from \"./components/RoundButton/RoundButton\";\nexport * from \"./components/Notification/Notification\";\nexport * from \"./components/Logo/Logo\";\nexport * from \"./components/MediaItem/MediaItem\";\nexport * from \"./components/Callout/Callout\";\nexport * from \"./components/Patterns/Modal/Modal\";\nexport * from \"./components/Patterns/ButtonGroup/ButtonGroup\";\nexport * from \"./components/Collapsible/Collapsible\";\nexport * from \"./components/LoadingSpinner/LoadingSpinner\";\nexport * from \"./components/Pagination/Pagination\";\nexport * from \"./components/DataTable\";\nexport * from \"./components/Form/SegmentedControl/SegmentedControl\";\nexport * from \"./components/Tooltip/Tooltip\";\nexport * from \"./components/Tag/Tag\";\nexport * from \"./components/TagGroup/TagGroup\";\nexport * from \"./components/Toggletip/Toggletip\";\n"],"names":["dark","light","ambossVisualConfiguration"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMa,MAAA;EAAEA,IAAI;AAAEC,EAAAA,KAAAA;AAAM,CAAC,GAAGC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":["import {\n ambossVisualConfiguration,\n VisualConfig,\n} from \"../build-tokens/visualConfig\";\n\nexport type { VisualConfig };\nexport const { dark, light } = ambossVisualConfiguration;\nexport { ThemeProvider, CacheProvider } from \"@emotion/react\";\nexport { default as createCache } from \"@emotion/cache\";\nexport * from \"./components/Card/Card\";\nexport * from \"./components/Card/CardBox\";\nexport * from \"./components/Box/Box\";\nexport * from \"./components/Inline/Inline\";\nexport * from \"./components/Stack/Stack\";\nexport * from \"./components/Typography/Header/Header\";\nexport * from \"./components/Typography/Text/Text\";\nexport * from \"./components/Typography/TextClamped/TextClamped\";\nexport * from \"./components/Typography/StyledText/StyledText\";\nexport * from \"./components/Link/Link\";\nexport * from \"./components/Icon/Icon\";\nexport * from \"./components/Button/Button\";\nexport * from \"./components/Divider/Divider\";\nexport * from \"./components/Column/Columns\";\nexport * from \"./components/Tabs/Tabs\";\nexport * from \"./components/Badge/Badge\";\nexport * from \"./components/SearchResult/SearchResult\";\nexport * from \"./components/Form/ToggleButton/ToggleButton\";\nexport * from \"./components/DropdownMenu/DropdownMenu\";\nexport * from \"./components/Form/FormFieldGroup/FormFieldGroup\";\nexport * from \"./components/Form/Input\";\nexport * from \"./components/Form/Checkbox/Checkbox\";\nexport * from \"./components/Form/Toggle/Toggle\";\nexport * from \"./components/Form/Radio/Radio\";\nexport * from \"./components/Form/RadioButton/RadioButton\";\nexport * from \"./components/Form/Textarea/Textarea\";\nexport * from \"./components/Form/Select/Select\";\nexport * from \"./components/SubThemeProvider/SubThemeProvider\";\nexport * from \"./components/PictogramButton/PictogramButton\";\nexport * from \"./components/MediaViewerBar/MediaViewerBar\";\nexport * from \"./components/SegmentedProgressBar/SegmentedProgressBar\";\nexport * from \"./components/ProgressBar/ProgressBar\";\nexport * from \"./components/Container/Container\";\nexport * from \"./components/Form/PasswordInput\";\nexport * from \"./components/RoundButton/RoundButton\";\nexport * from \"./components/Notification/Notification\";\nexport * from \"./components/Logo/Logo\";\nexport * from \"./components/MediaItem/MediaItem\";\nexport * from \"./components/Callout/Callout\";\nexport * from \"./components/Patterns/Modal/Modal\";\nexport * from \"./components/Patterns/ButtonGroup/ButtonGroup\";\nexport * from \"./components/Collapsible/Collapsible\";\nexport * from \"./components/LoadingSpinner/LoadingSpinner\";\nexport * from \"./components/Pagination/Pagination\";\nexport * from \"./components/DataTable\";\nexport * from \"./components/Form/SegmentedControl/SegmentedControl\";\nexport * from \"./components/Tooltip/Tooltip\";\nexport * from \"./components/Tag/Tag\";\nexport * from \"./components/TagGroup/TagGroup\";\nexport * from \"./components/Toggletip/Toggletip\";\nexport * from \"./components/UserHighlightTooltip/UserHighlightTooltip\";\n"],"names":["dark","light","ambossVisualConfiguration"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMa,MAAA;EAAEA,IAAI;AAAEC,EAAAA,KAAAA;AAAM,CAAC,GAAGC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amboss/design-system",
3
- "version": "1.17.7",
3
+ "version": "1.18.0",
4
4
  "description": "the design system for AMBOSS products",
5
5
  "author": "Bagrat Gobedashvili",
6
6
  "license": "ISC",