1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /* global $, APP, AJS */
-
- /**
- * Associates tooltip element position (in the terms of
- * {@link UIUtil#setTooltip} which do not look like CSS <tt>position</tt>) with
- * AUI tooltip <tt>gravity</tt>.
- */
- const TOOLTIP_POSITIONS = {
- 'bottom': 'n',
- 'bottom-left': 'ne',
- 'bottom-right': 'nw',
- 'left': 'e',
- 'right': 'w',
- 'top': 's',
- 'top-left': 'se',
- 'top-right': 'sw'
- };
-
- /**
- * Sets a global handler for all tooltips. Once invoked, create a new
- * tooltip by merely updating a DOM node with the appropriate class (e.g.
- * <tt>tooltip-n</tt>) and the attribute <tt>content</tt>.
- */
- export function activateTooltips() {
- AJS.$('[data-tooltip]').tooltip({
- gravity() {
- return this.getAttribute('data-tooltip');
- },
-
- title() {
- return this.getAttribute('content');
- },
-
- html: true, // Handle multiline tooltips.
-
- // The following two prevent tooltips from being stuck:
- hoverable: false, // Make custom tooltips behave like native ones.
- live: true // Attach listener to document element.
- });
- }
-
- /**
- * Sets the tooltip to the given element.
- *
- * @param element the element to set the tooltip to
- * @param key the tooltip data-i18n key
- * @param position the position of the tooltip in relation to the element
- */
- export function setTooltip(element, key, position) {
- if (element) {
- const selector = element.jquery ? element : $(element);
-
- selector.attr('data-tooltip', TOOLTIP_POSITIONS[position]);
- selector.attr('data-i18n', `[content]${key}`);
-
- APP.translation.translateElement(selector);
- }
- }
-
- /**
- * Sets the tooltip to the given element, but instead of using translation
- * key uses text value.
- *
- * @param element the element to set the tooltip to
- * @param text the tooltip text
- * @param position the position of the tooltip in relation to the element
- */
- export function setTooltipText(element, text, position) {
- if (element) {
- removeTooltip(element);
-
- element.setAttribute('data-tooltip', TOOLTIP_POSITIONS[position]);
- element.setAttribute('content', text);
- }
- }
-
- /**
- * Removes the tooltip to the given element.
- *
- * @param element the element to remove the tooltip from
- */
- export function removeTooltip(element) {
- element.removeAttribute('data-tooltip', '');
- element.removeAttribute('data-i18n','');
- element.removeAttribute('content','');
- }
|