TooltipManager
A tooltip manager class for the UI of the editor.
Note: Most likely you do not have to use the TooltipManager API listed below in order to display tooltips. Popular UI components support tooltips out-of-the-box via observable properties (see tooltip and tooltipPosition).
Displaying tooltips
To display a tooltip, set data-cke-tooltip-text attribute on any DOM element:
domElement.dataset.ckeTooltipText = 'My tooltip';
The tooltip will show up whenever the user moves the mouse over the element or the element gets focus in DOM.
Positioning tooltips
To change the position of the tooltip, use the data-cke-tooltip-position attribute (s, se, sw, n, e, or w):
domElement.dataset.ckeTooltipText = 'Tooltip to the north';
domElement.dataset.ckeTooltipPosition = 'n';
Disabling tooltips
In order to disable the tooltip temporarily, use the data-cke-tooltip-disabled attribute:
domElement.dataset.ckeTooltipText = 'Disabled. For now.';
domElement.dataset.ckeTooltipDisabled = 'true';
Instant tooltips
To remove the delay before showing or hiding the tooltip, use the data-cke-tooltip-instant attribute:
domElement.dataset.ckeTooltipInstant = 'true';
Styling tooltips
By default, the tooltip has .ck-tooltip class and its text inner .ck-tooltip__text.
If your tooltip requires custom styling, using data-cke-tooltip-class attribute will add additional class to the balloon displaying the tooltip:
domElement.dataset.ckeTooltipText = 'Tooltip with a red text';
domElement.dataset.ckeTooltipClass = 'my-class';
.ck.ck-tooltip.my-class { color: red }
Note: This class is a singleton. All editor instances re-use the same instance loaded by EditorUI of the first editor.
Properties
balloonPanelView : BalloonPanelViewreadonlymodule:ui/tooltipmanager~TooltipManager#balloonPanelViewThe instance of the balloon panel that renders and positions the tooltip.
tooltipTextView : objectreadonlymodule:ui/tooltipmanager~TooltipManager#tooltipTextViewThe view rendering text of the tooltip.
_currentElementWithTooltip : null | HTMLElementprivatemodule:ui/tooltipmanager~TooltipManager#_currentElementWithTooltipStores the reference to the DOM element the tooltip is attached to.
nullwhen there's no tooltip in the UI._currentTooltipPosition : null | TooltipPositionprivatemodule:ui/tooltipmanager~TooltipManager#_currentTooltipPositionStores the current tooltip position.
nullwhen there's no tooltip in the UI._mutationObserver : null | MutationObserverWrapperprivatemodule:ui/tooltipmanager~TooltipManager#_mutationObserverAn instance of the mutation observer that keeps track on target element attributes changes.
_pinTooltipDebounced : DebouncedFunc<( targetDomElement: HTMLElement, data: TooltipData ) => void>privatemodule:ui/tooltipmanager~TooltipManager#_pinTooltipDebouncedA debounced version of
_pinTooltip. Tooltips show with a delay to avoid flashing and to improve the UX._unpinTooltipDebounced : DebouncedFunc<VoidFunction>privatemodule:ui/tooltipmanager~TooltipManager#_unpinTooltipDebouncedA debounced version of
_unpinTooltip. Tooltips hide with a delay to allow hovering of their titles._watchdogExcluded : trueprivatereadonlymodule:ui/tooltipmanager~TooltipManager#_watchdogExcluded
Static properties
defaultBalloonPositions : Record<string, PositioningFunction>staticmodule:ui/tooltipmanager~TooltipManager.defaultBalloonPositionsA set of default positioning functions used by the
TooltipManagerto pin tooltips in different positions.module:ui/tooltipmanager~TooltipManager._editorsA set of editors the single tooltip manager instance must listen to. This is mostly to handle
EditorUI#updatelisteners from individual editors._instance : null | TooltipManagerprivatestaticmodule:ui/tooltipmanager~TooltipManager._instanceA reference to the
TooltipManagerinstance. The class is a singleton and as such, successive attempts at creating instances should return this instance.
Methods
constructor( editor )module:ui/tooltipmanager~TooltipManager#constructordelegate( events ) → EmitterMixinDelegateChaininheritedmodule:ui/tooltipmanager~TooltipManager#delegateDelegates selected events to another
Emitter. For instance:emitterA.delegate( 'eventX' ).to( emitterB ); emitterA.delegate( 'eventX', 'eventY' ).to( emitterC );Copy codethen
eventXis delegated (fired by)emitterBandemitterCalong withdata:emitterA.fire( 'eventX', data );Copy codeand
eventYis delegated (fired by)emitterCalong withdata:emitterA.fire( 'eventY', data );Copy codeParameters
events : Array<string>Event names that will be delegated to another emitter.
Returns
destroy( editor ) → voidmodule:ui/tooltipmanager~TooltipManager#destroyDestroys the tooltip manager.
Note: The manager singleton cannot be destroyed until all editors that use it are destroyed.
Parameters
editor : EditorThe editor the manager was created for.
Returns
void
fire( eventOrInfo, args ) → GetEventInfo<TEvent>[ 'return' ]inheritedmodule:ui/tooltipmanager~TooltipManager#fireFires an event, executing all callbacks registered for it.
The first parameter passed to callbacks is an
EventInfoobject, followed by the optionalargsprovided in thefire()method call.Type parameters
Parameters
eventOrInfo : GetNameOrEventInfo<TEvent>The name of the event or
EventInfoobject if event is delegated.args : TEvent[ 'args' ]Additional arguments to be passed to the callbacks.
Returns
GetEventInfo<TEvent>[ 'return' ]By default the method returns
undefined. However, the return value can be changed by listeners through modification of theevt.return's property (the event info is the first param of every callback).
listenTo( emitter, event, callback, [ options ] ) → voidinheritedmodule:ui/tooltipmanager~TooltipManager#listenTo:DOM_EMITTERRegisters a callback function to be executed when an event is fired in a specific (emitter) object.
Events can be grouped in namespaces using
:. When namespaced event is fired, it additionally fires all callbacks for that namespace.// myEmitter.on( ... ) is a shorthand for myEmitter.listenTo( myEmitter, ... ). myEmitter.on( 'myGroup', genericCallback ); myEmitter.on( 'myGroup:myEvent', specificCallback ); // genericCallback is fired. myEmitter.fire( 'myGroup' ); // both genericCallback and specificCallback are fired. myEmitter.fire( 'myGroup:myEvent' ); // genericCallback is fired even though there are no callbacks for "foo". myEmitter.fire( 'myGroup:foo' );Copy codeAn event callback can stop the event and set the return value of the
firemethod.Type parameters
Parameters
emitter : EmitterThe object that fires the event.
event : TEvent[ 'name' ]The name of the event.
callback : GetCallback<TEvent>The function to be called on event.
[ options ] : CallbackOptionsAdditional options.
Returns
void
listenTo( emitter, event, callback, [ options ] ) → voidinheritedmodule:ui/tooltipmanager~TooltipManager#listenTo:HTML_EMITTERRegisters a callback function to be executed when an event is fired in a specific Emitter or DOM Node. It is backwards compatible with
listenTo.Type parameters
K : extends keyof DomEventMap
Parameters
emitter : Window | EventTarget | NodeThe object that fires the event.
event : KThe name of the event.
callback : ( this: this, ev: EventInfo, event: DomEventMap[ K ] ) => voidThe function to be called on event.
[ options ] : objectAdditional options.
Returns
void
off( event, callback ) → voidinheritedmodule:ui/tooltipmanager~TooltipManager#offStops executing the callback on the given event. Shorthand for
this.stopListening( this, event, callback ).Parameters
event : stringThe name of the event.
callback : FunctionThe function to stop being called.
Returns
void
on( event, callback, [ options ] ) → voidinheritedmodule:ui/tooltipmanager~TooltipManager#onRegisters a callback function to be executed when an event is fired.
Shorthand for
this.listenTo( this, event, callback, options )(it makes the emitter listen on itself).Type parameters
Parameters
event : TEvent[ 'name' ]The name of the event.
callback : GetCallback<TEvent>The function to be called on event.
[ options ] : GetCallbackOptions<TEvent>Additional options.
Returns
void
once( event, callback, [ options ] ) → voidinheritedmodule:ui/tooltipmanager~TooltipManager#onceRegisters a callback function to be executed on the next time the event is fired only. This is similar to calling
onfollowed byoffin the callback.Type parameters
Parameters
event : TEvent[ 'name' ]The name of the event.
callback : GetCallback<TEvent>The function to be called on event.
[ options ] : GetCallbackOptions<TEvent>Additional options.
Returns
void
stopDelegating( [ event ], [ emitter ] ) → voidinheritedmodule:ui/tooltipmanager~TooltipManager#stopDelegatingStops delegating events. It can be used at different levels:
- To stop delegating all events.
- To stop delegating a specific event to all emitters.
- To stop delegating a specific event to a specific emitter.
Parameters
[ event ] : stringThe name of the event to stop delegating. If omitted, stops it all delegations.
[ emitter ] : Emitter(requires
event) The object to stop delegating a particular event to. If omitted, stops delegation ofeventto all emitters.
Returns
void
stopListening( [ emitter ], [ event ], [ callback ] ) → voidinheritedmodule:ui/tooltipmanager~TooltipManager#stopListening:DOM_STOPStops listening for events. It can be used at different levels: It is backwards compatible with
listenTo.- To stop listening to a specific callback.
- To stop listening to a specific event.
- To stop listening to all events fired by a specific object.
- To stop listening to all events fired by all objects.
Parameters
[ emitter ] : Window | EventTarget | Node | EmitterThe object to stop listening to. If omitted, stops it for all objects.
[ event ] : string(Requires the
emitter) The name of the event to stop listening to. If omitted, stops it for all events fromemitter.[ callback ] : Function(Requires the
event) The function to be removed from the call list for the givenevent.
Returns
void
_onEnterOrFocus( evt, domEvent ) → voidprivatemodule:ui/tooltipmanager~TooltipManager#_onEnterOrFocusHandles displaying tooltips on
mouseenterandfocusin DOM.Parameters
evt : EventInfoAn object containing information about the fired event.
domEvent : anyThe DOM event.
Returns
void
_onKeyDown( evt, domEvent ) → voidprivatemodule:ui/tooltipmanager~TooltipManager#_onKeyDownHandles hiding tooltips on
keydownin DOM.Parameters
evt : EventInfoAn object containing information about the fired event.
domEvent : KeyboardEventThe DOM event.
Returns
void
_onLeaveOrBlur( evt, domEvent ) → voidprivatemodule:ui/tooltipmanager~TooltipManager#_onLeaveOrBlurHandles hiding tooltips on
mouseleaveandblurin DOM.Parameters
evt : EventInfoAn object containing information about the fired event.
domEvent : anyThe DOM event.
Returns
void
_onScroll( evt, domEvent ) → voidprivatemodule:ui/tooltipmanager~TooltipManager#_onScrollHandles hiding tooltips on
scrollin DOM.Parameters
evt : unknownAn object containing information about the fired event.
domEvent : anyThe DOM event.
Returns
void
_pinTooltip( targetDomElement, options ) → voidprivatemodule:ui/tooltipmanager~TooltipManager#_pinTooltipPins the tooltip to a specific DOM element.
Parameters
targetDomElement : HTMLElementElement to be pinned to.
options : TooltipDataOptions for the tooltip.
Returns
void
_unpinTooltip() → voidprivatemodule:ui/tooltipmanager~TooltipManager#_unpinTooltip_updateTooltipPosition() → voidprivatemodule:ui/tooltipmanager~TooltipManager#_updateTooltipPositionUpdates the position of the tooltip so it stays in sync with the element it is pinned to.
Hides the tooltip when the element is no longer visible in DOM or the tooltip text was removed.
Returns
void
Static methods
getPositioningFunctions( position ) → Array<PositioningFunction>staticmodule:ui/tooltipmanager~TooltipManager.getPositioningFunctionsReturns
balloonPanelViewpositioning functions for a given position name.Parameters
position : TooltipPositionName of the position (
s,se,sw,n,e, orw).
Returns
Array<PositioningFunction>Positioning functions to be used by the
balloonPanelView.