@elliemae/ds-tooltip 2.3.0-alpha.7 → 2.3.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +23 -0
- package/cjs/v1/DSTooltip.js +115 -0
- package/cjs/v1/TooltipType.js +10 -0
- package/cjs/v2/DSTooltip.js +147 -0
- package/cjs/v2/DSTooltipArrow.js +39 -0
- package/cjs/v2/TooltipType.js +10 -0
- package/cjs/v2/index.d.js +2 -0
- package/cjs/v2/propTypes.js +27 -0
- package/cjs/v2/styles.js +62 -0
- package/cjs/v2/utils/setMultipleRefs.js +30 -0
- package/cjs/v2/utils/tooltipPositions.js +20 -0
- package/cjs/v3/TooltipV3DatatestId.js +10 -0
- package/cjs/v3/config/useWithDefaultProps.js +18 -0
- package/cjs/v3/index.d.js +2 -0
- package/cjs/v3/index.js +128 -0
- package/cjs/v3/propsTypes.js +96 -0
- package/cjs/v3/styleds.js +47 -0
- package/esm/index.js +5 -0
- package/esm/v1/DSTooltip.js +100 -0
- package/esm/v1/TooltipType.js +6 -0
- package/esm/v2/DSTooltip.js +136 -0
- package/esm/v2/DSTooltipArrow.js +31 -0
- package/esm/v2/TooltipType.js +6 -0
- package/esm/v2/index.d.js +1 -0
- package/esm/v2/propTypes.js +23 -0
- package/esm/v2/styles.js +49 -0
- package/esm/v2/utils/setMultipleRefs.js +26 -0
- package/esm/v2/utils/tooltipPositions.js +16 -0
- package/esm/v3/TooltipV3DatatestId.js +6 -0
- package/esm/v3/config/useWithDefaultProps.js +14 -0
- package/esm/v3/index.d.js +1 -0
- package/esm/v3/index.js +116 -0
- package/esm/v3/propsTypes.js +92 -0
- package/esm/v3/styleds.js +36 -0
- package/package.json +57 -59
- package/types/index.d.ts +6 -0
- package/types/v1/DSTooltip.d.ts +89 -0
- package/types/v1/TooltipType.d.ts +4 -0
- package/types/v2/DSTooltip.d.ts +70 -0
- package/types/v2/DSTooltipArrow.d.ts +4 -0
- package/types/v2/TooltipType.d.ts +5 -0
- package/types/v2/propTypes.d.ts +60 -0
- package/types/v2/styles.d.ts +7 -0
- package/types/v2/tests/DSTooltipV2.test.d.ts +1 -0
- package/types/v2/utils/setMultipleRefs.d.ts +1 -0
- package/types/v2/utils/tooltipPositions.d.ts +15 -0
- package/types/v3/TooltipV3DatatestId.d.ts +4 -0
- package/types/v3/config/useWithDefaultProps.d.ts +2 -0
- package/types/v3/index.d.ts +6 -0
- package/types/v3/propsTypes.d.ts +103 -0
- package/types/v3/styleds.d.ts +6 -0
- package/dist/cjs/index.js +0 -41
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/v1/DSTooltip.js +0 -118
- package/dist/cjs/v1/DSTooltip.js.map +0 -7
- package/dist/cjs/v1/TooltipType.js +0 -38
- package/dist/cjs/v1/TooltipType.js.map +0 -7
- package/dist/cjs/v2/DSTooltip.js +0 -143
- package/dist/cjs/v2/DSTooltip.js.map +0 -7
- package/dist/cjs/v2/DSTooltipArrow.js +0 -51
- package/dist/cjs/v2/DSTooltipArrow.js.map +0 -7
- package/dist/cjs/v2/TooltipType.js +0 -38
- package/dist/cjs/v2/TooltipType.js.map +0 -7
- package/dist/cjs/v2/index.d.js +0 -27
- package/dist/cjs/v2/index.d.js.map +0 -7
- package/dist/cjs/v2/propTypes.js +0 -56
- package/dist/cjs/v2/propTypes.js.map +0 -7
- package/dist/cjs/v2/styles.js +0 -131
- package/dist/cjs/v2/styles.js.map +0 -7
- package/dist/cjs/v2/utils/setMultipleRefs.js +0 -50
- package/dist/cjs/v2/utils/setMultipleRefs.js.map +0 -7
- package/dist/cjs/v2/utils/tooltipPositions.js +0 -48
- package/dist/cjs/v2/utils/tooltipPositions.js.map +0 -7
- package/dist/cjs/v3/TooltipV3DatatestId.js +0 -38
- package/dist/cjs/v3/TooltipV3DatatestId.js.map +0 -7
- package/dist/cjs/v3/config/useWithDefaultProps.js +0 -44
- package/dist/cjs/v3/config/useWithDefaultProps.js.map +0 -7
- package/dist/cjs/v3/index.d.js +0 -27
- package/dist/cjs/v3/index.d.js.map +0 -7
- package/dist/cjs/v3/index.js +0 -115
- package/dist/cjs/v3/index.js.map +0 -7
- package/dist/cjs/v3/propsTypes.js +0 -80
- package/dist/cjs/v3/propsTypes.js.map +0 -7
- package/dist/cjs/v3/styleds.js +0 -70
- package/dist/cjs/v3/styleds.js.map +0 -7
- package/dist/esm/index.js +0 -12
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/v1/DSTooltip.js +0 -101
- package/dist/esm/v1/DSTooltip.js.map +0 -7
- package/dist/esm/v1/TooltipType.js +0 -9
- package/dist/esm/v1/TooltipType.js.map +0 -7
- package/dist/esm/v2/DSTooltip.js +0 -119
- package/dist/esm/v2/DSTooltip.js.map +0 -7
- package/dist/esm/v2/DSTooltipArrow.js +0 -22
- package/dist/esm/v2/DSTooltipArrow.js.map +0 -7
- package/dist/esm/v2/TooltipType.js +0 -9
- package/dist/esm/v2/TooltipType.js.map +0 -7
- package/dist/esm/v2/index.d.js +0 -2
- package/dist/esm/v2/index.d.js.map +0 -7
- package/dist/esm/v2/propTypes.js +0 -27
- package/dist/esm/v2/propTypes.js.map +0 -7
- package/dist/esm/v2/styles.js +0 -102
- package/dist/esm/v2/styles.js.map +0 -7
- package/dist/esm/v2/utils/setMultipleRefs.js +0 -21
- package/dist/esm/v2/utils/setMultipleRefs.js.map +0 -7
- package/dist/esm/v2/utils/tooltipPositions.js +0 -19
- package/dist/esm/v2/utils/tooltipPositions.js.map +0 -7
- package/dist/esm/v3/TooltipV3DatatestId.js +0 -9
- package/dist/esm/v3/TooltipV3DatatestId.js.map +0 -7
- package/dist/esm/v3/config/useWithDefaultProps.js +0 -15
- package/dist/esm/v3/config/useWithDefaultProps.js.map +0 -7
- package/dist/esm/v3/index.d.js +0 -2
- package/dist/esm/v3/index.d.js.map +0 -7
- package/dist/esm/v3/index.js +0 -91
- package/dist/esm/v3/index.js.map +0 -7
- package/dist/esm/v3/propsTypes.js +0 -51
- package/dist/esm/v3/propsTypes.js.map +0 -7
- package/dist/esm/v3/styleds.js +0 -41
- package/dist/esm/v3/styleds.js.map +0 -7
package/cjs/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var DSTooltip = require('./v1/DSTooltip.js');
|
|
6
|
+
var DSTooltip$1 = require('./v2/DSTooltip.js');
|
|
7
|
+
var tooltipPositions = require('./v2/utils/tooltipPositions.js');
|
|
8
|
+
var TooltipType = require('./v2/TooltipType.js');
|
|
9
|
+
var index = require('./v3/index.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.DSTooltip = DSTooltip.DSTooltip;
|
|
14
|
+
exports.TooltipContainer = DSTooltip.TooltipContainer;
|
|
15
|
+
exports.TooltipText = DSTooltip.TooltipText;
|
|
16
|
+
exports.TooltipWithSchema = DSTooltip.TooltipWithSchema;
|
|
17
|
+
exports["default"] = DSTooltip.DSTooltip;
|
|
18
|
+
exports.DSTooltipV2 = DSTooltip$1.DSTooltipV2;
|
|
19
|
+
exports.TooltipV2WithSchema = DSTooltip$1.TooltipV2WithSchema;
|
|
20
|
+
exports.tooltipPositions = tooltipPositions.tooltipPositions;
|
|
21
|
+
exports.TooltipType = TooltipType.TooltipType;
|
|
22
|
+
exports.DSTooltipV3 = index.DSTooltipV3;
|
|
23
|
+
exports.DSTooltipV3WithSchema = index.DSTooltipV3WithSchema;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
12
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
13
|
+
require('react');
|
|
14
|
+
var reactDesc = require('react-desc');
|
|
15
|
+
var dsClassnames = require('@elliemae/ds-classnames');
|
|
16
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
17
|
+
var constants = require('@elliemae/ds-shared/constants');
|
|
18
|
+
var DSPopper = require('@elliemae/ds-popper');
|
|
19
|
+
var TooltipType = require('./TooltipType.js');
|
|
20
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
21
|
+
|
|
22
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
|
+
|
|
24
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
25
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
26
|
+
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
27
|
+
var DSPopper__default = /*#__PURE__*/_interopDefaultLegacy(DSPopper);
|
|
28
|
+
|
|
29
|
+
const _excluded = ["containerProps", "innerRef", "placement", "title", "delayClose", "delayOpen", "interactionType", "triggerComponent", "className", "isOpen", "onOpen", "springAnimationComponent", "tooltipType", "showArrow", "zIndex"];
|
|
30
|
+
|
|
31
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
32
|
+
|
|
33
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
34
|
+
const blockName = 'tooltip';
|
|
35
|
+
const TooltipContainer = dsClassnames.aggregatedClasses('div')(blockName, false, false, {
|
|
36
|
+
propsToRemoveFromFinalElement: ['isHovered', 'isDragged']
|
|
37
|
+
});
|
|
38
|
+
const TooltipText = dsClassnames.aggregatedClasses('span')(blockName, 'text', false, {
|
|
39
|
+
propsToRemoveFromFinalElement: ['isHovered', 'isDragged']
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const DSTooltip = _ref => {
|
|
43
|
+
let {
|
|
44
|
+
containerProps = {},
|
|
45
|
+
innerRef,
|
|
46
|
+
placement = DSPopper.PopperPositions.TOP,
|
|
47
|
+
title = '',
|
|
48
|
+
delayClose = constants.DEFAULT_DELAY_CLOSE,
|
|
49
|
+
delayOpen = constants.DEFAULT_DELAY_OPEN,
|
|
50
|
+
interactionType = DSPopper.PopperInteractions.HOVER,
|
|
51
|
+
triggerComponent = null,
|
|
52
|
+
className = '',
|
|
53
|
+
isOpen = undefined,
|
|
54
|
+
onOpen = () => null,
|
|
55
|
+
springAnimationComponent = undefined,
|
|
56
|
+
tooltipType = TooltipType.TooltipType.TOOLTIP,
|
|
57
|
+
showArrow = true,
|
|
58
|
+
zIndex
|
|
59
|
+
} = _ref,
|
|
60
|
+
otherTooltipProps = _objectWithoutProperties__default["default"](_ref, _excluded);
|
|
61
|
+
|
|
62
|
+
const {
|
|
63
|
+
cssClassName: tooltipBlockName
|
|
64
|
+
} = dsClassnames.convertPropToCssClassName(blockName);
|
|
65
|
+
let Content = title;
|
|
66
|
+
|
|
67
|
+
if (typeof title === 'string') {
|
|
68
|
+
Content = /*#__PURE__*/_jsx__default["default"](TooltipText, {}, void 0, title);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return /*#__PURE__*/_jsx__default["default"](DSPopper__default["default"], {
|
|
72
|
+
blockName: tooltipBlockName,
|
|
73
|
+
contentComponent: /*#__PURE__*/jsxRuntime.jsx(TooltipContainer, _objectSpread(_objectSpread(_objectSpread({}, containerProps), otherTooltipProps), {}, {
|
|
74
|
+
className: "tooltip-container--".concat(tooltipType, " ").concat(className),
|
|
75
|
+
innerRef: innerRef,
|
|
76
|
+
children: Content
|
|
77
|
+
})),
|
|
78
|
+
delayClose: delayClose,
|
|
79
|
+
delayOpen: delayOpen,
|
|
80
|
+
interactionType: interactionType,
|
|
81
|
+
isOpen: isOpen,
|
|
82
|
+
onOpen: onOpen,
|
|
83
|
+
placement: placement,
|
|
84
|
+
showArrow: tooltipType === TooltipType.TooltipType.TOOLTIP ? showArrow : false,
|
|
85
|
+
springAnimationComponent: springAnimationComponent,
|
|
86
|
+
triggerComponent: dsUtilities.getComponentFromProps(triggerComponent),
|
|
87
|
+
zIndex: zIndex
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const tooltipProps = {
|
|
92
|
+
containerProps: reactDesc.PropTypes.object.description('Set of Properties attached to the main container'),
|
|
93
|
+
placement: reactDesc.PropTypes.oneOf(DSPopper.positions).description('Tooltip position').defaultValue(DSPopper.PopperPositions.TOP),
|
|
94
|
+
title: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.element]).description('Tooltip content').isRequired,
|
|
95
|
+
delayClose: reactDesc.PropTypes.string.description('Delay to close the tooltip').defaultValue(constants.DEFAULT_DELAY_CLOSE),
|
|
96
|
+
delayOpen: reactDesc.PropTypes.string.description('Delay to open the tooltip ').defaultValue(constants.DEFAULT_DELAY_OPEN),
|
|
97
|
+
interactionType: reactDesc.PropTypes.oneOf(DSPopper.interactions).description('A type indicating how to open/close the tooltip').defaultValue(DSPopper.PopperInteractions.HOVER),
|
|
98
|
+
triggerComponent: reactDesc.PropTypes.element.description("The component that will open/close the tooltip. \n Cannot be used with disabled elements. \n https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled").isRequired,
|
|
99
|
+
isOpen: reactDesc.PropTypes.bool.description('Whether the tooltip is visible or not').defaultValue(undefined),
|
|
100
|
+
onOpen: reactDesc.PropTypes.func.description('Handler when the tooltip opens'),
|
|
101
|
+
springAnimationComponent: reactDesc.PropTypes.element.description('Spring animation component'),
|
|
102
|
+
showArrow: reactDesc.PropTypes.bool.description('Whether to show an arrow or not').defaultValue(true),
|
|
103
|
+
className: reactDesc.PropTypes.string.description('css class'),
|
|
104
|
+
tooltipType: reactDesc.PropTypes.oneOf(['tooltip', 'toolbar']).description('Type of tooltip').defaultValue(TooltipType.TooltipType.TOOLTIP),
|
|
105
|
+
zIndex: reactDesc.PropTypes.number.description('z-index value assigned to the tooltip').defaultValue(undefined),
|
|
106
|
+
innerRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.func, reactDesc.PropTypes.object]).description('Ref to the tooltip container element')
|
|
107
|
+
};
|
|
108
|
+
const TooltipWithSchema = reactDesc.describe(DSTooltip);
|
|
109
|
+
TooltipWithSchema.propTypes = tooltipProps;
|
|
110
|
+
|
|
111
|
+
exports.DSTooltip = DSTooltip;
|
|
112
|
+
exports.TooltipContainer = TooltipContainer;
|
|
113
|
+
exports.TooltipText = TooltipText;
|
|
114
|
+
exports.TooltipWithSchema = TooltipWithSchema;
|
|
115
|
+
exports["default"] = DSTooltip;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
7
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
11
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
12
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
13
|
+
var react = require('react');
|
|
14
|
+
var reactDesc = require('react-desc');
|
|
15
|
+
var DSPortal = require('@elliemae/ds-portal');
|
|
16
|
+
var constants = require('@elliemae/ds-shared/constants');
|
|
17
|
+
var reactPopper = require('react-popper');
|
|
18
|
+
var tooltipPositions = require('./utils/tooltipPositions.js');
|
|
19
|
+
var TooltipType = require('./TooltipType.js');
|
|
20
|
+
var styles = require('./styles.js');
|
|
21
|
+
var DSTooltipArrow = require('./DSTooltipArrow.js');
|
|
22
|
+
var propTypes = require('./propTypes.js');
|
|
23
|
+
var setMultipleRefs = require('./utils/setMultipleRefs.js');
|
|
24
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
25
|
+
|
|
26
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
27
|
+
|
|
28
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
29
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
30
|
+
var DSPortal__default = /*#__PURE__*/_interopDefaultLegacy(DSPortal);
|
|
31
|
+
|
|
32
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
33
|
+
|
|
34
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
35
|
+
|
|
36
|
+
const DSTooltipV2 = _ref => {
|
|
37
|
+
let {
|
|
38
|
+
containerProps = {},
|
|
39
|
+
innerRef,
|
|
40
|
+
placement = tooltipPositions.tooltipPositions.BOTTOM,
|
|
41
|
+
title = '',
|
|
42
|
+
delayClose = constants.DEFAULT_DELAY_CLOSE,
|
|
43
|
+
delayOpen = constants.DEFAULT_DELAY_OPEN,
|
|
44
|
+
triggerComponent = null,
|
|
45
|
+
className = '',
|
|
46
|
+
getIsOpen = () => null,
|
|
47
|
+
onOpen = () => null,
|
|
48
|
+
tooltipType = TooltipType.TooltipType.TOOLTIP,
|
|
49
|
+
showArrow = true,
|
|
50
|
+
offset = [0, 14],
|
|
51
|
+
zIndex = 10,
|
|
52
|
+
extraModifiers = {}
|
|
53
|
+
} = _ref;
|
|
54
|
+
const [showTooltip, setShowTooltip] = react.useState(false);
|
|
55
|
+
const [isAnimating, setIsAnimating] = react.useState(false);
|
|
56
|
+
const [referenceElement, setReferenceElement] = react.useState(triggerComponent);
|
|
57
|
+
const [popperElement, setPopperElement] = react.useState(null);
|
|
58
|
+
const [arrowElement, setArrowElement] = react.useState(null);
|
|
59
|
+
const timerOpen = react.useRef(null);
|
|
60
|
+
const timerClosed = react.useRef(null);
|
|
61
|
+
const {
|
|
62
|
+
styles: styles$1,
|
|
63
|
+
attributes
|
|
64
|
+
} = reactPopper.usePopper(referenceElement, popperElement, {
|
|
65
|
+
placement,
|
|
66
|
+
modifiers: [{
|
|
67
|
+
name: 'hide',
|
|
68
|
+
enabled: true
|
|
69
|
+
}, {
|
|
70
|
+
name: 'offset',
|
|
71
|
+
enabled: true,
|
|
72
|
+
options: {
|
|
73
|
+
offset: tooltipType === TooltipType.TooltipType.TOOLBAR ? [0, 0] : offset
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
name: 'arrow',
|
|
77
|
+
options: {
|
|
78
|
+
element: arrowElement
|
|
79
|
+
}
|
|
80
|
+
}, _objectSpread({}, extraModifiers)]
|
|
81
|
+
});
|
|
82
|
+
const handleShowTooltipOn = react.useCallback(() => {
|
|
83
|
+
timerOpen.current = setTimeout(() => {
|
|
84
|
+
setShowTooltip(true);
|
|
85
|
+
setIsAnimating(true);
|
|
86
|
+
getIsOpen(true);
|
|
87
|
+
onOpen();
|
|
88
|
+
}, delayOpen);
|
|
89
|
+
}, [delayOpen, getIsOpen, onOpen]);
|
|
90
|
+
const handleShowTooltipOff = react.useCallback(() => {
|
|
91
|
+
timerClosed.current = setTimeout(() => {
|
|
92
|
+
setShowTooltip(false);
|
|
93
|
+
setIsAnimating(true);
|
|
94
|
+
getIsOpen(false);
|
|
95
|
+
}, delayClose);
|
|
96
|
+
}, [delayClose, getIsOpen]);
|
|
97
|
+
const handleKeyDown = react.useCallback(e => {
|
|
98
|
+
if (e.key === 'Escape') {
|
|
99
|
+
e.target.blur();
|
|
100
|
+
}
|
|
101
|
+
}, []);
|
|
102
|
+
const checkAnimationStatus = react.useCallback(() => {
|
|
103
|
+
if (!showTooltip) {
|
|
104
|
+
setIsAnimating(false);
|
|
105
|
+
}
|
|
106
|
+
}, [showTooltip]);
|
|
107
|
+
react.useEffect(() => () => {
|
|
108
|
+
clearTimeout(timerClosed.current);
|
|
109
|
+
clearTimeout(timerOpen.current);
|
|
110
|
+
}, []);
|
|
111
|
+
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
112
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(styles.StyledTriggerComponentContainer, {
|
|
113
|
+
ref: setReferenceElement,
|
|
114
|
+
onMouseEnter: handleShowTooltipOn,
|
|
115
|
+
onMouseLeave: handleShowTooltipOff,
|
|
116
|
+
onFocus: handleShowTooltipOn,
|
|
117
|
+
onBlur: handleShowTooltipOff,
|
|
118
|
+
onKeyDown: handleKeyDown,
|
|
119
|
+
children: triggerComponent
|
|
120
|
+
}), isAnimating || showTooltip ? /*#__PURE__*/_jsx__default["default"](DSPortal__default["default"], {}, void 0, /*#__PURE__*/jsxRuntime.jsx(styles.StyledTooltipContainer, _objectSpread(_objectSpread(_objectSpread({
|
|
121
|
+
className: className,
|
|
122
|
+
showTooltip: showTooltip,
|
|
123
|
+
tooltipType: tooltipType,
|
|
124
|
+
"data-testid": "ds-tooltip-container",
|
|
125
|
+
ref: ref => setMultipleRefs.setMultipleRefs(setPopperElement, innerRef)(ref),
|
|
126
|
+
style: _objectSpread(_objectSpread({}, styles$1.popper), {}, {
|
|
127
|
+
zIndex
|
|
128
|
+
})
|
|
129
|
+
}, containerProps), attributes.popper), {}, {
|
|
130
|
+
children: /*#__PURE__*/_jsx__default["default"](styles.StyledAnimatedTooltip, {
|
|
131
|
+
showTooltip: showTooltip,
|
|
132
|
+
"data-testid": "ds-tooltip",
|
|
133
|
+
onAnimationEnd: checkAnimationStatus
|
|
134
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](styles.StyledTooltipText, {}, void 0, title), tooltipType === TooltipType.TooltipType.TOOLTIP && showArrow ? /*#__PURE__*/_jsx__default["default"](DSTooltipArrow.DSTooltipArrow, {
|
|
135
|
+
arrowElementRef: setArrowElement,
|
|
136
|
+
style: styles$1.arrow,
|
|
137
|
+
placement: attributes.popper ? attributes.popper['data-popper-placement'] : 'bottom'
|
|
138
|
+
}) : null)
|
|
139
|
+
}))) : null]
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const TooltipV2WithSchema = reactDesc.describe(DSTooltipV2);
|
|
144
|
+
TooltipV2WithSchema.propTypes = propTypes.tooltipV2Props;
|
|
145
|
+
|
|
146
|
+
exports.DSTooltipV2 = DSTooltipV2;
|
|
147
|
+
exports.TooltipV2WithSchema = TooltipV2WithSchema;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
require('react');
|
|
7
|
+
var styles = require('./styles.js');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
13
|
+
|
|
14
|
+
var _svg;
|
|
15
|
+
|
|
16
|
+
const DSTooltipArrow = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
placement,
|
|
19
|
+
style,
|
|
20
|
+
arrowElementRef
|
|
21
|
+
} = _ref;
|
|
22
|
+
return /*#__PURE__*/jsxRuntime.jsx(styles.StyledTooltipArrow, {
|
|
23
|
+
"data-placement": placement,
|
|
24
|
+
style: style,
|
|
25
|
+
ref: arrowElementRef,
|
|
26
|
+
"data-testid": "ds-tooltip-arrow",
|
|
27
|
+
children: _svg || (_svg = /*#__PURE__*/_jsx__default["default"]("svg", {
|
|
28
|
+
viewBox: "0 0 30 30"
|
|
29
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"]("path", {
|
|
30
|
+
className: "stroke",
|
|
31
|
+
d: "M23.7,27.1L17,19.9C16.5,19.3,15.8,19,15,19s-1.6,0.3-2.1,0.9l-6.6,7.2C5.3,28.1,3.4,29,2,29h26 C26.7,29,24.6,28.1,23.7,27.1z"
|
|
32
|
+
}), /*#__PURE__*/_jsx__default["default"]("path", {
|
|
33
|
+
className: "fill",
|
|
34
|
+
d: "M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z"
|
|
35
|
+
})))
|
|
36
|
+
}, "popper-arrow");
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
exports.DSTooltipArrow = DSTooltipArrow;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var reactDesc = require('react-desc');
|
|
6
|
+
var constants = require('@elliemae/ds-shared/constants');
|
|
7
|
+
var TooltipType = require('./TooltipType.js');
|
|
8
|
+
var tooltipPositions = require('./utils/tooltipPositions.js');
|
|
9
|
+
|
|
10
|
+
const tooltipV2Props = {
|
|
11
|
+
containerProps: reactDesc.PropTypes.object.description('Set of Properties attached to the main container'),
|
|
12
|
+
placement: reactDesc.PropTypes.oneOf(Object.values(tooltipPositions.tooltipPositions)).description('Tooltip position').defaultValue(tooltipPositions.tooltipPositions.TOP),
|
|
13
|
+
title: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.element]).description('Tooltip content').isRequired,
|
|
14
|
+
delayClose: reactDesc.PropTypes.number.description('Delay to close the tooltip').defaultValue(constants.DEFAULT_DELAY_CLOSE),
|
|
15
|
+
delayOpen: reactDesc.PropTypes.number.description('Delay to open the tooltip ').defaultValue(constants.DEFAULT_DELAY_OPEN),
|
|
16
|
+
triggerComponent: reactDesc.PropTypes.element.description("The component that will open/close the tooltip. \n Cannot be used with disabled elements. \n https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/disabled").isRequired,
|
|
17
|
+
getIsOpen: reactDesc.PropTypes.func.description('Whether the tooltip is visible or not'),
|
|
18
|
+
onOpen: reactDesc.PropTypes.func.description('Callback when the tooltip opens'),
|
|
19
|
+
showArrow: reactDesc.PropTypes.bool.description('Whether to show an arrow or not').defaultValue(true),
|
|
20
|
+
className: reactDesc.PropTypes.string.description('css class'),
|
|
21
|
+
tooltipType: reactDesc.PropTypes.oneOf(['tooltip', 'toolbar']).description('Type of tooltip').defaultValue(TooltipType.TooltipType.TOOLTIP),
|
|
22
|
+
zIndex: reactDesc.PropTypes.number.description('z-index value assigned to the tooltip').defaultValue(undefined),
|
|
23
|
+
innerRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.func, reactDesc.PropTypes.object]).description('Ref to the tooltip container element'),
|
|
24
|
+
offset: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.number).description('Custom Offset for the tooltip [x, y]')
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.tooltipV2Props = tooltipV2Props;
|
package/cjs/v2/styles.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
|
|
6
|
+
var styled = require('styled-components');
|
|
7
|
+
var dsSystem = require('@elliemae/ds-system');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
|
|
12
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
13
|
+
|
|
14
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
15
|
+
const showAnimation = dsSystem.kfrm(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n from {\n opacity: 0;\n transform: scale(0.8);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n visibility: visible;\n }\n"])));
|
|
16
|
+
const hideAnimation = dsSystem.kfrm(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n\n 100% {\n opacity: 0;\n transform: scale(0.8);\n }\n"])));
|
|
17
|
+
const StyledTooltipContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
18
|
+
componentId: "sc-1dtjf9j-0"
|
|
19
|
+
})(["&[data-popper-reference-hidden='true']{display:none;pointer-events:none;}"]);
|
|
20
|
+
const StyledAnimatedTooltip = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
21
|
+
componentId: "sc-1dtjf9j-1"
|
|
22
|
+
})(["text-align:center;min-width:", ";max-width:250px;min-height:24px;padding:", ";position:relative;background-color:white;border-radius:2px;font-size:13px;color:", ";box-shadow:0 1px 5px 0 rgb(0 0 0 / 13%),0 2px 4px 0 rgb(0 0 0 / 20%);filter:drop-shadow(0 4px 8px rgba(0,0,0,0.2));visibility:", ";", " transition:visibility 0.1s ease-in;"], _ref => {
|
|
23
|
+
let {
|
|
24
|
+
theme
|
|
25
|
+
} = _ref;
|
|
26
|
+
return theme.space.l;
|
|
27
|
+
}, _ref2 => {
|
|
28
|
+
let {
|
|
29
|
+
theme
|
|
30
|
+
} = _ref2;
|
|
31
|
+
return "".concat(theme.space.xxxs, " ").concat(theme.space.xs);
|
|
32
|
+
}, _ref3 => {
|
|
33
|
+
let {
|
|
34
|
+
theme
|
|
35
|
+
} = _ref3;
|
|
36
|
+
return theme.colors.neutral[600];
|
|
37
|
+
}, _ref4 => {
|
|
38
|
+
let {
|
|
39
|
+
showTooltip
|
|
40
|
+
} = _ref4;
|
|
41
|
+
return showTooltip ? 'visible' : 'hidden';
|
|
42
|
+
}, _ref5 => {
|
|
43
|
+
let {
|
|
44
|
+
showTooltip
|
|
45
|
+
} = _ref5;
|
|
46
|
+
return dsSystem.css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default["default"](["\n animation: ", " 0.1s ease-in;\n "])), showTooltip ? showAnimation : hideAnimation);
|
|
47
|
+
});
|
|
48
|
+
const StyledTriggerComponentContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
49
|
+
componentId: "sc-1dtjf9j-2"
|
|
50
|
+
})(["display:inline-block;"]);
|
|
51
|
+
const StyledTooltipText = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
52
|
+
componentId: "sc-1dtjf9j-3"
|
|
53
|
+
})(["white-space:normal;word-wrap:break-word;display:inline-block;"]);
|
|
54
|
+
const StyledTooltipArrow = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
55
|
+
componentId: "sc-1dtjf9j-4"
|
|
56
|
+
})(["position:absolute;width:18px;height:18px;pointer-events:none;background-color:transparent;& .stroke{fill:white;}& .fill{fill:white;}&[data-placement^='top']{svg{transform:rotateZ(180deg);}top:98%;}&[data-placement^='right']{svg{transform:rotateZ(-90deg);}right:99.5%;}&[data-placement^='bottom']{bottom:97%;}&[data-placement^='left']{svg{transform:rotateZ(90deg);}left:99.5%;}"]);
|
|
57
|
+
|
|
58
|
+
exports.StyledAnimatedTooltip = StyledAnimatedTooltip;
|
|
59
|
+
exports.StyledTooltipArrow = StyledTooltipArrow;
|
|
60
|
+
exports.StyledTooltipContainer = StyledTooltipContainer;
|
|
61
|
+
exports.StyledTooltipText = StyledTooltipText;
|
|
62
|
+
exports.StyledTriggerComponentContainer = StyledTriggerComponentContainer;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
|
|
11
|
+
const setMultipleRefs = function () {
|
|
12
|
+
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
13
|
+
refs[_key] = arguments[_key];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const filteredRefs = refs.filter(Boolean);
|
|
17
|
+
if (!filteredRefs.length) return null;
|
|
18
|
+
if (filteredRefs.length === 0) return filteredRefs[0];
|
|
19
|
+
return newRef => {
|
|
20
|
+
filteredRefs.forEach(refToBeUpdated => {
|
|
21
|
+
if (typeof refToBeUpdated === 'function') {
|
|
22
|
+
refToBeUpdated(newRef);
|
|
23
|
+
} else if (refToBeUpdated) {
|
|
24
|
+
refToBeUpdated.current = newRef;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.setMultipleRefs = setMultipleRefs;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const tooltipPositions = {
|
|
6
|
+
TOP: 'top',
|
|
7
|
+
BOTTOM: 'bottom',
|
|
8
|
+
RIGHT: 'right',
|
|
9
|
+
LEFT: 'left',
|
|
10
|
+
TOP_START: 'top-start',
|
|
11
|
+
TOP_END: 'top-end',
|
|
12
|
+
BOTTOM_START: 'bottom-start',
|
|
13
|
+
BOTTOM_END: 'bottom-end',
|
|
14
|
+
RIGHT_START: 'right-start',
|
|
15
|
+
RIGHT_END: 'right-end',
|
|
16
|
+
LEFT_START: 'left-start',
|
|
17
|
+
LEFT_END: 'left-end'
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
exports.tooltipPositions = tooltipPositions;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const TooltipV3DatatestId = {
|
|
6
|
+
TRIGGER_WRAPPER: 'ds-tooltip-v3-trigger-wrapper',
|
|
7
|
+
TOOLTIP_TEXT_WRAPPER: 'ds-tooltip-v3-tooltip-text-wrapper'
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
exports.TooltipV3DatatestId = TooltipV3DatatestId;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var dsPropsHelpers = require('@elliemae/ds-props-helpers');
|
|
6
|
+
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
8
|
+
const noop = () => {};
|
|
9
|
+
|
|
10
|
+
const defaultProps = {
|
|
11
|
+
onOpen: noop,
|
|
12
|
+
onClose: noop,
|
|
13
|
+
id: '',
|
|
14
|
+
textAlign: 'left'
|
|
15
|
+
};
|
|
16
|
+
const useWithDefaultProps = props => dsPropsHelpers.useMemoMergePropsWithDefault(props, defaultProps);
|
|
17
|
+
|
|
18
|
+
exports.useWithDefaultProps = useWithDefaultProps;
|
package/cjs/v3/index.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
8
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
9
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
12
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
13
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
14
|
+
var react = require('react');
|
|
15
|
+
var dsPopperjs = require('@elliemae/ds-popperjs');
|
|
16
|
+
var reactDesc = require('react-desc');
|
|
17
|
+
var propsTypes = require('./propsTypes.js');
|
|
18
|
+
var useWithDefaultProps = require('./config/useWithDefaultProps.js');
|
|
19
|
+
var TooltipV3DatatestId = require('./TooltipV3DatatestId.js');
|
|
20
|
+
var styleds = require('./styleds.js');
|
|
21
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
22
|
+
|
|
23
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
24
|
+
|
|
25
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
26
|
+
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
27
|
+
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
28
|
+
|
|
29
|
+
var _StyledMouseOverDetec;
|
|
30
|
+
|
|
31
|
+
const _excluded = ["text", "children", "onOpen", "onClose", "id", "textAlign"];
|
|
32
|
+
|
|
33
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
34
|
+
|
|
35
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
36
|
+
|
|
37
|
+
const useGlobalKeyboardListener = func => {
|
|
38
|
+
react.useEffect(() => {
|
|
39
|
+
document.addEventListener('keydown', func);
|
|
40
|
+
return () => document.removeEventListener('keydown', func);
|
|
41
|
+
}, [func]);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const DSTooltipV3 = props => {
|
|
45
|
+
const _useWithDefaultProps = useWithDefaultProps.useWithDefaultProps(props),
|
|
46
|
+
{
|
|
47
|
+
text,
|
|
48
|
+
children,
|
|
49
|
+
onOpen,
|
|
50
|
+
onClose,
|
|
51
|
+
id,
|
|
52
|
+
textAlign
|
|
53
|
+
} = _useWithDefaultProps,
|
|
54
|
+
extraPopperJsProps = _objectWithoutProperties__default["default"](_useWithDefaultProps, _excluded);
|
|
55
|
+
|
|
56
|
+
const [isFocused, setIsFocused] = react.useState(false);
|
|
57
|
+
const [isHover, setIsHover] = react.useState(false);
|
|
58
|
+
const [latestOpenInteraction, setLatestOpenInteraction] = react.useState('');
|
|
59
|
+
const [referenceElement, setReferenceElement] = react.useState();
|
|
60
|
+
const [showPopover, setShowPopover] = react.useState(false);
|
|
61
|
+
const showTooltip = react.useCallback(() => {
|
|
62
|
+
setShowPopover(true);
|
|
63
|
+
onOpen();
|
|
64
|
+
}, [onOpen]);
|
|
65
|
+
const hideTooltip = react.useCallback(() => {
|
|
66
|
+
setShowPopover(false);
|
|
67
|
+
onClose();
|
|
68
|
+
}, [onClose]);
|
|
69
|
+
const onFocus = react.useCallback(() => {
|
|
70
|
+
setIsFocused(true);
|
|
71
|
+
|
|
72
|
+
if (!showPopover) {
|
|
73
|
+
showTooltip();
|
|
74
|
+
setLatestOpenInteraction('onFocus');
|
|
75
|
+
}
|
|
76
|
+
}, [showPopover, showTooltip]);
|
|
77
|
+
const onBlur = react.useCallback(() => {
|
|
78
|
+
setIsFocused(false);
|
|
79
|
+
if (!isHover || latestOpenInteraction === 'onFocus') hideTooltip();
|
|
80
|
+
}, [hideTooltip, isHover, latestOpenInteraction]);
|
|
81
|
+
const onMouseEnter = react.useCallback(() => {
|
|
82
|
+
setIsHover(true);
|
|
83
|
+
|
|
84
|
+
if (!showPopover) {
|
|
85
|
+
showTooltip();
|
|
86
|
+
setLatestOpenInteraction('onMouseEnter');
|
|
87
|
+
}
|
|
88
|
+
}, [showPopover, showTooltip]);
|
|
89
|
+
const onMouseLeave = react.useCallback(() => {
|
|
90
|
+
setIsHover(false);
|
|
91
|
+
if (!isFocused || latestOpenInteraction === 'onMouseEnter') hideTooltip();
|
|
92
|
+
}, [hideTooltip, isFocused, latestOpenInteraction]);
|
|
93
|
+
const handleEscKey = react.useCallback(_ref => {
|
|
94
|
+
let {
|
|
95
|
+
key
|
|
96
|
+
} = _ref;
|
|
97
|
+
if (key === 'Escape') hideTooltip();
|
|
98
|
+
}, [hideTooltip]);
|
|
99
|
+
useGlobalKeyboardListener(handleEscKey);
|
|
100
|
+
return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
101
|
+
children: /*#__PURE__*/jsxRuntime.jsxs(styleds.StyledTriggerWrapper, {
|
|
102
|
+
onMouseEnter: onMouseEnter,
|
|
103
|
+
onMouseLeave: onMouseLeave,
|
|
104
|
+
onFocus: onFocus,
|
|
105
|
+
onBlur: onBlur,
|
|
106
|
+
ref: setReferenceElement,
|
|
107
|
+
"data-testid": "".concat(TooltipV3DatatestId.TooltipV3DatatestId.TRIGGER_WRAPPER).concat(id !== '' ? "_".concat(id) : ''),
|
|
108
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(dsPopperjs.DSPopperJS, _objectSpread(_objectSpread({
|
|
109
|
+
referenceElement: referenceElement,
|
|
110
|
+
showPopover: showPopover,
|
|
111
|
+
withoutPortal: true
|
|
112
|
+
}, extraPopperJsProps), {}, {
|
|
113
|
+
children: /*#__PURE__*/_jsx__default["default"]("div", {
|
|
114
|
+
"data-testid": "".concat(TooltipV3DatatestId.TooltipV3DatatestId.TOOLTIP_TEXT_WRAPPER).concat(id !== '' ? "_".concat(id) : '')
|
|
115
|
+
}, void 0, /*#__PURE__*/_jsx__default["default"](styleds.StyledTooltipContainer, {}, void 0, /*#__PURE__*/_jsx__default["default"](styleds.StyledTooltipText, {
|
|
116
|
+
textAlign: textAlign
|
|
117
|
+
}, void 0, text), _StyledMouseOverDetec || (_StyledMouseOverDetec = /*#__PURE__*/_jsx__default["default"](styleds.StyledMouseOverDetectionBox, {}))))
|
|
118
|
+
})), children]
|
|
119
|
+
})
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const DSTooltipV3WithSchema = reactDesc.describe(DSTooltipV3).description('A tooltip component');
|
|
124
|
+
DSTooltipV3WithSchema.propTypes = propsTypes.dsTooltipPropTypes;
|
|
125
|
+
|
|
126
|
+
exports.DSTooltipV3 = DSTooltipV3;
|
|
127
|
+
exports.DSTooltipV3WithSchema = DSTooltipV3WithSchema;
|
|
128
|
+
exports["default"] = DSTooltipV3;
|