A singleton Tooltip Manager class responsible for rendering and positioning a dynamic tooltip element which is accessible as game.tooltip.

See

Game.tooltip

Example: API Usage

game.tooltip.activate(htmlElement, {text: "Some tooltip text", direction: "UP"});
game.tooltip.deactivate();

Example: HTML Usage

<span data-tooltip="Some Tooltip" data-tooltip-direction="LEFT">I have a tooltip</span>
<ol data-tooltip-direction="RIGHT">
<li data-tooltip="The First One">One</li>
<li data-tooltip="The Second One">Two</li>
<li data-tooltip="The Third One">Three</li>
</ol>

Properties

tooltip: HTMLElement = ...

A cached reference to the global tooltip element

element: HTMLElement = null

A reference to the HTML element which is currently tool-tipped, if any.

#active: boolean = false

Is the tooltip currently active?

#activationTimeout: any

A reference to a window timeout function when an element is activated.

#deactivationTimeout: any

A reference to a window timeout function when an element is deactivated.

#pending: HTMLElement

An element which is pending tooltip activation if hover is sustained

#locked: {
    elements: Set<HTMLElement>;
    boundingBox: Rectangle;
} = ...

Maintain state about active locked tooltips in order to perform appropriate automatic dismissal.

Type declaration

  • elements: Set<HTMLElement>
  • boundingBox: Rectangle
TOOLTIP_MARGIN_PX: number = 5

An amount of margin which is used to offset tooltips from their anchored element.

TOOLTIP_ACTIVATION_MS: number = 500

The number of milliseconds delay which activates a tooltip on a "long hover".

TOOLTIP_DIRECTIONS: {
    UP: string;
    DOWN: string;
    LEFT: string;
    RIGHT: string;
    CENTER: string;
} = ...

The directions in which a tooltip can extend, relative to its tool-tipped element.

Type declaration

  • UP: string
  • DOWN: string
  • LEFT: string
  • RIGHT: string
  • CENTER: string
LOCKED_TOOLTIP_BUFFER_PX: number = 50

The number of pixels buffer around a locked tooltip zone before they should be dismissed.

Methods

  • Activate interactivity by listening for hover events on HTML elements which have a data-tooltip defined.

    Returns void

  • Activate the tooltip for a hovered HTML element which defines a tooltip localization key.

    Parameters

    • element: HTMLElement

      The HTML element being hovered.

    • Optional options: {
          text: string;
          direction: {
              UP: string;
              DOWN: string;
              LEFT: string;
              RIGHT: string;
              CENTER: string;
          };
          cssClass: string;
          locked: boolean;
          content: HTMLElement;
      } = {}

      Additional options which can override tooltip behavior.

      • text: string

        Explicit tooltip text to display. If this is not provided the tooltip text is acquired from the elements data-tooltip attribute. This text will be automatically localized

      • direction: {
            UP: string;
            DOWN: string;
            LEFT: string;
            RIGHT: string;
            CENTER: string;
        }

        An explicit tooltip expansion direction. If this is not provided the direction is acquired from the data-tooltip-direction attribute of the element or one of its parents.

        • UP: string
        • DOWN: string
        • LEFT: string
        • RIGHT: string
        • CENTER: string
      • cssClass: string

        An optional, space-separated list of CSS classes to apply to the activated tooltip. If this is not provided, the CSS classes are acquired from the data-tooltip-class attribute of the element or one of its parents.

      • locked: boolean

        An optional boolean to lock the tooltip after creation. Defaults to false.

      • content: HTMLElement

        Explicit HTML content to inject into the tooltip rather than using tooltip text.

    Returns void

  • Deactivate the tooltip from a previously hovered HTML element.

    Returns void

  • Internal

    Clear any pending activation workflow.

    Returns void

  • Lock the current tooltip.

    Returns HTMLElement

  • Dismiss a given locked tooltip.

    Parameters

    • element: HTMLElement

      The locked tooltip to dismiss.

    Returns void

  • Dismiss the set of active locked tooltips.

    Returns void

  • Create a locked tooltip at the given position.

    Parameters

    • position: {
          top: string;
          right: string;
          bottom: string;
          left: string;
      }

      A position object with coordinates for where the tooltip should be placed

      • top: string

        Explicit top position for the tooltip

      • right: string

        Explicit right position for the tooltip

      • bottom: string

        Explicit bottom position for the tooltip

      • left: string

        Explicit left position for the tooltip

    • text: string

      Explicit tooltip text or HTML to display.

    • Optional options: {
          cssClass: array;
      } = {}

      Additional options which can override tooltip behavior.

      • cssClass: array

        An optional, space-separated list of CSS classes to apply to the activated tooltip.

    Returns HTMLElement

  • Protected

    Handle a request to lock the current tooltip.

    Parameters

    • event: MouseEvent

      The click event.

    Returns void

  • Protected

    Handle dismissing a locked tooltip.

    Parameters

    • event: MouseEvent

      The click event.

    Returns void

  • Protected

    If an explicit tooltip expansion direction was not specified, figure out a valid direction based on the bounds of the target element and the screen.

    Returns any

  • Protected

    Set tooltip position relative to an HTML element using an explicitly provided data-tooltip-direction.

    Parameters

    • direction: {
          UP: string;
          DOWN: string;
          LEFT: string;
          RIGHT: string;
          CENTER: string;
      }

      The tooltip expansion direction specified by the element or a parent element.

      • UP: string
      • DOWN: string
      • LEFT: string
      • RIGHT: string
      • CENTER: string

    Returns void

  • Protected

    Apply inline styling rules to the tooltip for positioning and text alignment.

    Parameters

    • Optional position: object = {}

      An object of positioning data, supporting top, right, bottom, left, and textAlign

    Returns void

  • Handle hover events which activate a tooltipped element.

    Parameters

    • event: PointerEvent

      The initiating pointerenter event

    Returns void

  • Handle hover events which deactivate a tooltipped element.

    Parameters

    • event: PointerEvent

      The initiating pointerleave event

    Returns void

  • Start the deactivation process.

    Returns void

  • Clear any existing deactivation workflow.

    Returns void

  • Compute the unified bounding box from the set of locked tooltip elements.

    Returns void

  • Check whether the user is moving away from the locked tooltips and dismiss them if so.

    Parameters

    • event: MouseEvent

      The mouse move event.

    Returns void