diff --git a/bigbluebutton-html5/imports/ui/components/common/button/component.jsx b/bigbluebutton-html5/imports/ui/components/common/button/component.jsx
index 12e559814e..c5327a48fd 100755
--- a/bigbluebutton-html5/imports/ui/components/common/button/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/common/button/component.jsx
@@ -123,6 +123,8 @@ export default class Button extends BaseButton {
'aria-label': ariaLabel,
'aria-expanded': ariaExpanded,
tooltipLabel,
+ tooltipdelay,
+ tooltipplacement,
} = this.props;
const renderFuncName = circle ? 'renderCircle' : 'renderDefault';
@@ -132,6 +134,8 @@ export default class Button extends BaseButton {
return (
{this[renderFuncName]()}
diff --git a/bigbluebutton-html5/imports/ui/components/common/tooltip/component.jsx b/bigbluebutton-html5/imports/ui/components/common/tooltip/component.jsx
index 41e6981fb8..c07d3905f3 100755
--- a/bigbluebutton-html5/imports/ui/components/common/tooltip/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/common/tooltip/component.jsx
@@ -57,9 +57,19 @@ class Tooltip extends Component {
const {
position,
title,
+ delay,
+ placement,
} = this.props;
const { animations } = Settings.application;
+
+ const overridePlacement = placement ? placement : position;
+ let overrideDelay;
+ if (animations) {
+ overrideDelay = delay ? [delay, ANIMATION_DELAY[1]] : ANIMATION_DELAY;
+ } else {
+ overrideDelay = delay ? [delay, 0] : [ANIMATION_DELAY[0], 0];
+ }
const options = {
aria: null,
@@ -69,14 +79,14 @@ class Tooltip extends Component {
arrow: roundArrow,
boundary: 'window',
content: title,
- delay: animations ? ANIMATION_DELAY : [ANIMATION_DELAY[0], 0],
+ delay: overrideDelay,
duration: animations ? ANIMATION_DURATION : 0,
interactive: true,
interactiveBorder: 10,
onShow: this.onShow,
onHide: this.onHide,
offset: TIP_OFFSET,
- placement: position,
+ placement: overridePlacement,
touch: 'hold',
theme: 'bbbtip',
multiple: false,
@@ -101,12 +111,15 @@ class Tooltip extends Component {
return true;
}).forEach((e) => {
const instance = e._tippy;
- instance.setProps({
+ const newProps = {
animation: animations
? DEFAULT_ANIMATION : ANIMATION_NONE,
- delay: animations ? ANIMATION_DELAY : [ANIMATION_DELAY[0], 0],
duration: animations ? ANIMATION_DURATION : 0,
- });
+ };
+ if (!e.getAttribute("delay")) {
+ newProps["delay"] = animations ? ANIMATION_DELAY : [ANIMATION_DELAY[0], 0];
+ }
+ instance.setProps(newProps);
});
const elem = document.getElementById(this.tippySelectorId);
diff --git a/bigbluebutton-html5/imports/ui/components/whiteboard/pan-tool-injector/component.jsx b/bigbluebutton-html5/imports/ui/components/whiteboard/pan-tool-injector/component.jsx
index f2aac23c94..1fcb4c3daa 100644
--- a/bigbluebutton-html5/imports/ui/components/whiteboard/pan-tool-injector/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/whiteboard/pan-tool-injector/component.jsx
@@ -89,6 +89,8 @@ class PanToolInjector extends React.Component {
size="md"
label={label}
aria-label={label}
+ tooltipdelay={700}
+ tooltipplacement="top"
onClick={() => {
setPanSelected(true);
setIsPanning(true);