diff --git a/.eslintrc.ts.json b/.eslintrc.ts.json
index 24a3f7c4db..2b3df50056 100644
--- a/.eslintrc.ts.json
+++ b/.eslintrc.ts.json
@@ -113,9 +113,7 @@
"@typescript-eslint/camelcase": "off",
// PropTypes
"react/prop-types": 0,
- "react/jsx-props-no-spreading": [2, {
- "exceptions": ["input", "select"]
- }],
+ "react/jsx-props-no-spreading": 0,
// Hooks
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
diff --git a/assets/css/src/components/_tooltips.scss b/assets/css/src/components/_tooltips.scss
new file mode 100644
index 0000000000..aa32010604
--- /dev/null
+++ b/assets/css/src/components/_tooltips.scss
@@ -0,0 +1,4 @@
+.mailpoet-tooltip {
+ border-radius: 4px;
+ box-shadow: 0 2px 4px 0 rgba(229, 233, 248, .4), 0 5px 30px 0 $color-tertiary-light;
+}
diff --git a/assets/css/src/mailpoet-plugin.scss b/assets/css/src/mailpoet-plugin.scss
index ed70d1bb1d..f2472304b1 100644
--- a/assets/css/src/mailpoet-plugin.scss
+++ b/assets/css/src/mailpoet-plugin.scss
@@ -46,6 +46,7 @@
@import 'components/parsley';
@import 'components/tabs';
@import 'components/steps';
+@import 'components/tooltips';
@import 'components-plugin/automatic-emails';
@import 'components-plugin/browser-preview';
@import 'components-plugin/dynamic-segments';
diff --git a/assets/js/src/common/tooltip/_stories/tooltip.tsx b/assets/js/src/common/tooltip/_stories/tooltip.tsx
new file mode 100644
index 0000000000..31d8f0fc20
--- /dev/null
+++ b/assets/js/src/common/tooltip/_stories/tooltip.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import Heading from 'common/typography/heading/heading';
+import Tooltip from '../tooltip';
+
+export default {
+ title: 'Tooltips',
+};
+
+export const Tooltips = () => (
+ <>
+ Placements
+
+
Bottom Tooltip
+
+ The tooltip content
+
+
+
Top Tooltip
+
+ The tooltip content
+
+
+
Right Tooltip
+
+ The tooltip content
+
+
+
Left Tooltip
+
+ The tooltip content
+
+
+ >
+);
diff --git a/assets/js/src/common/tooltip/tooltip.tsx b/assets/js/src/common/tooltip/tooltip.tsx
new file mode 100644
index 0000000000..b20d5661c3
--- /dev/null
+++ b/assets/js/src/common/tooltip/tooltip.tsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import classNames from 'classnames';
+import ReactTooltip, { TooltipProps } from 'react-tooltip';
+
+const Tooltip = ({
+ effect, textColor, backgroundColor, border, borderColor, className, children, ...props
+}: TooltipProps) => (
+
+ {children}
+
+);
+
+export default Tooltip;
diff --git a/package-lock.json b/package-lock.json
index 2ce5b3af6e..94ca398ab5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21225,11 +21225,19 @@
}
},
"react-tooltip": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-4.0.3.tgz",
- "integrity": "sha512-xEM+fr8tr/KJP5PZEOg/fc5bZ7ZkC658iMDgCq5DfTqHVyuIOOd5loyxQD0eAJiZ6jWdEd18owbRqd3stHtEDg==",
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-4.2.6.tgz",
+ "integrity": "sha512-KX/zCsPFCI8RuulzBX86U+Ur7FvgGNRBdb7dUu0ndo8Urinn48nANq9wfq4ABlehweQjPzLl7XdNAtLKza+I3w==",
"requires": {
- "prop-types": "^15.6.0"
+ "prop-types": "^15.7.2",
+ "uuid": "^7.0.3"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
+ "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="
+ }
}
},
"react-transition-group": {
diff --git a/package.json b/package.json
index fac5ad8f0c..cd8c7553d6 100644
--- a/package.json
+++ b/package.json
@@ -77,7 +77,7 @@
"react-router-dom": "^5.2.0",
"react-select": "^3.1.0",
"react-string-replace": "^0.3.2",
- "react-tooltip": "^4.0.3",
+ "react-tooltip": "^4.2.6",
"satismeter-loader": "^1.1.0",
"select2": "^4.0.13",
"setimmediate": "^1.0.5",