Three Ways to Write It
Plain text escapes every tag and keeps your line breaks, html renders your own markup, and bbcode converts more than 50 tags, from bold and color to lists, quotes, tables and embeds, without ever handing raw HTML to the page.
NWD Tooltip Master (Rich Content) puts real content inside a tooltip instead of a single line of text. It takes HTML, BBCode, and embedded pages such as a video or a map. Tooltips can be interactive, so the person moves the pointer inside and clicks what is there, and the look is yours to set, from placement and animation to timing, colors, border and arrow.
Built for what Bubble does not cover.
Bubble's native tooltip is a plain text string on hover, with no styling, no HTML or BBCode processing, and no control over its placement, its animation, how it is triggered or any other refinement. Matching it to the look of your app, or to its color theme, is not possible natively.
Plain text escapes every tag and keeps your line breaks, html renders your own markup, and bbcode converts more than 50 tags, from bold and color to lists, quotes, tables and embeds, without ever handing raw HTML to the page.
A tooltip can hold an iframe: a YouTube or Vimeo video, a Google map, an external page. Four fit modes decide whether the iframe shrinks into the tooltip, the tooltip expands around it, or it scrolls.
Twelve fixed sides with start and end alignment, plus three auto modes that pick the side with the most room. Skidding and distance in pixels move it from there, and it can follow the cursor on one axis or both.
Light, light-border, material and translucent come ready. The custom theme opens background, border, radius, shadow, padding, font, text alignment, arrow size and arrow color, with a glass blur on top.
Fade, shift away, shift toward, scale and perspective, each with a subtle and an extreme variant. Show and hide have their own duration and delay in milliseconds, and a slingshot curve is one checkbox away.
Four triggers covering hover, click and keyboard focus, four touch modes including press and hold, and an interactive mode that lets the cursor enter the tooltip to click a link inside it without closing it.
In detail
In the Bubble editor, go to the tab "Settings > General > Advanced options" and check the box "Expose the option to add an ID attribute to HTML elements".
Set an ID to the target element. If the target element is disabled, it needs to be wrapped in another element as a group, and then the ID must be set to the group.
To prevent compatibility issues, avoid starting IDs with numbers or symbols. Start with letters and use hyphens or underscores if needed.
Insert the plugin element anywhere on the page and ensure it is always visible.
In Bubble, any element-type plugin must be visible to work properly.
In the plugin element, provide the ID assigned to the target element (in step 2), write the tooltip content, and set the other plugin properties according to your needs. The Content type property decides whether the content is rendered as plain text, HTML or BBCode, and inside a repeating group each cell needs its own unique ID.
Provide the ID that was assigned to the target element.
One plugin element serves one target at a time, and the field accepts a dynamic expression, so the same element can follow whichever target the page is dealing with: changing the ID moves the tooltip to the new target. Inside a repeating group, place Tooltip Master inside the cell and build the ID from the row, for example "tooltip-master-" plus the cell's index, so every cell gets its own tooltip instead of all of them pointing at the first cell. And a disabled element never triggers the tooltip, so point the plugin at a Group wrapping it.
Sets the tooltip content, static or dynamic, which can be plain text, HTML or BBCode according to the Content type property.
Sets how the content is processed. Plain text and BBCode are escaped, so they are safe for text typed by users. HTML is inserted as written: use it only with content you control, never with data typed by users.
Sets the position of the tooltip relative to the reference element. The options auto, auto-start and auto-end adapt to the space available around the reference element choosing the side with most space.
Enables the display of an indicative arrow in the tooltip, facing the reference element.
Sets the tooltip behavior, whether it should follow the mouse cursor and how it should follow.
Sets whether the tooltip should snap to the reference element when displayed. This is not generally necessary, but is useful if the reference element's position is animating or to automatically update the tooltip position.
This one costs performance. Turn it on only where the target really moves.
Enables a transition effect between movements or position updates to the tooltip when the position of the target element changes.
Worth turning on when the position jumps rather than drifts: the target moves, the page resizes, the target or the content changes size while the tooltip is open, or the cursor crosses the target quickly.
Avoid it together with Follow cursor on a hover trigger. The two update the position on every mouse move and the tooltip trembles instead of gliding.
Sets the animation type for showing/hiding the tooltip.
Enables a fill effect animation for the tooltip background color. This property only works with "shift-away" animations.
While the fill effect is on, the arrow is not drawn, whatever Display arrow? says. The effect also needs one of the shift-away animations to be visible.
Enables a slingshot effect as a transition for the defined animation type.
Sets the animation duration (in milliseconds) to show the tooltip.
Sets the animation duration (in milliseconds) to hide the tooltip.
Sets the animation delay (in milliseconds) to show the tooltip.
A show delay is what keeps the tooltip from flashing while the cursor only crosses the element on its way somewhere else.
Sets the animation delay (in milliseconds) to hide the tooltip.
Enables the possibility of interacting with the content within the tooltip, in cases where it is necessary to hover or click on the content without closing the tooltip.
Sets the size (in pixels) of the invisible border around the tooltip, increasing the interactive area and preventing the tooltip from closing while the mouse is still within this interactive area (spatial alternative to keeping the tooltip visible).
This is the spatial way to keep the tooltip open: a wider invisible area around it, so a cursor travelling toward the tooltip never leaves the active region. Interactive debounce is the temporal way, and the two work together.
Sets the delay (in milliseconds) to hide the tooltip when the cursor leaves the interactive region. This is therefore a temporal alternative to enabling interaction with the tooltip, as opposed to the spatial alternative provided by the Interactive border property, although both can be used together.
This is the temporal way to keep the tooltip open: the hiding waits, so the cursor has time to reach the tooltip. Interactive border is the spatial way, and the two work together.
Sets a maximum width (in pixels) for the tooltip to prevent it from becoming too wide. If the viewport width is smaller than the set maximum width, the tooltip's internal settings ensure that it remains smaller than the screen.
Any Iframe fit mode other than none can override this value, because in those modes fitting the iframe is what decides the width.
Sets the responsiveness of the iframe on different screen sizes. As expected, these modes only applies when the tooltip content contains an Iframe.
Sets the skidding (in pixels) of the tooltip relative to its reference element.
Sets the distance (in pixels) of the tooltip relative to its reference element.
Sets the type of the event that will show/hide the tooltip. The trigger action is related to the action performed on the reference element and should be defined according to usability and device compatibility. For example, mouse hover actions behave differently on mobile devices, as the primary action on these devices is touch. Therefore, use the trigger that best suits your needs.
Sets the tooltip behavior when clicking the reference element for triggers that use the click event. For other trigger types, the behavior may not be as expected.
Sets the tooltip display behavior on touch devices. If you are trying to test this on a desktop you probably won't be able to see the desired behavior since this property is targeted at mobile devices.
The hold modes cannot be tested with a mouse: they wait for a touch gesture, so use a phone or the device emulation of your browser.
Disables the display of the tooltip. Ideal for use in cases where the tooltip needs to be conditionally disabled.
The tooltip is disabled, not removed: the target element and the layout stay exactly as they are, and nothing shows on hover or click until it is enabled again.
Sets the tooltip theme, which can be one of four predefined themes or a custom theme. All properties below can be configured in the custom theme. Only the custom theme follows color changes made by conditionals, such as a dark mode; the predefined themes come with fixed colors.
The four ready themes ignore the properties below. Switch to custom to take control of background, border, radius, shadow, padding, font, text alignment and arrow.
Sets the background color of the tooltip box.
Sets the spacing (in pixels) between the tooltip box border and the content area inside it.
Sets the border thickness (in pixels) of the tooltip box.
Sets the border color of the tooltip box.
Sets the border roundness (in pixels) of the tooltip box.
Sets the color of the shadow displayed around the tooltip box.
Sets the spread (in pixels) of the shadow displayed around the tooltip box.
Applies a glass-like visual effect to the tooltip (the effect is only noticeable if the background color is transparent).
The glass effect blurs whatever shows through the tooltip, so it is only visible when the background color is transparent or semi-transparent.
How much larger than its base size the arrow is drawn, in percent. 0 keeps the base size, and 50 draws the arrow 50% larger.
Sets the color of the tooltip arrow.
Sets the spacing (in pixels) between the tooltip text and the inner edges of its content area.
Sets the tooltip text size (in pixels).
Sets the tooltip text color.
Sets the horizontal alignment of the tooltip text.
Any element that can carry an ID attribute: buttons, icons, inputs, images, text, shapes, groups, and elements inside repeating groups. The plugin attaches the tooltip to the element you name, so nothing about your existing layout has to change.
Yes. Each plugin element points at one Element ID at a time. Inside a repeating group, place the plugin element inside the cell and build the ID from the row, for example "tooltip-master-" plus the cell's index, to create a unique id per cell, so each cell carries its own tooltip instead of every one of them pointing at the first.
Yes. With Content type set to html you can put an iframe in the content, and Iframe fit mode decides whether the iframe shrinks into the tooltip, the tooltip expands around it, or it scrolls at its natural size. With bbcode, the youtube, vimeo, video and audio tags embed media without writing any HTML.
With plain text, yes: every tag is escaped and arrives as visible characters. With bbcode, yes: the HTML is escaped first and only the BBCode tags are turned into markup. With html the content is rendered as written, so sanitize it before it reaches the tooltip whenever it comes from a source you do not control.
More than 30, covering text formatting (b, i, u, s, sub, sup, size, color, background, font), structure (h1 to h6, p, pre, list, quote, spoiler, center, left, right), links and media (url, img, gif, icon, audio, video, youtube, vimeo).
Yes. Touch mode has four settings: the default tap, off, hold, and a longer press and hold. Because hover does not exist on a touch screen, pick the trigger action with the device in mind, and remember that a hold-based mode cannot be tested with a mouse on the desktop.
Yes. Interactive content? lets the cursor move into the tooltip without closing it. Interactive border widens the invisible area around it, which is the spatial way to keep it open, and Interactive debounce delays the hiding, which is the temporal way. Both can be used together.
Four things, in this order: the ID attribute option is enabled in Settings > General > Advanced options; the ID in Element ID matches the target exactly, including case; Tooltip content is not empty; and Disable tooltip? is unchecked. Also make sure only one element on the page carries that ID, because the plugin attaches to the first match.
No. Everything is set through visual properties in the editor, and every property starts with a working value. HTML and BBCode are optional: a plain text tooltip needs only an ID and a sentence.
Two options of the custom theme changed: the box shadow spread now takes any number, and the arrow size became a percentage increase over the base arrow. The tooltip keeps working after the update, but an arrow that was larger than the base size needs one pass.
This plugin is maintained by GCS Studios and is part of the NWD UI - Enhancer family, plugins that add behavior an element did not have, without replacing it. Each one attaches to something already on your page, such as a group, a popup, a repeating group, a button or an input, and changes how it responds, with no layout to redo, and is tested in real applications before release. See more plugins on the GCS Studios contributor page.