{"version":3,"file":"ToolTip.js","names":["ToolTip","a","setters","Component","default","AOS","mix","on","off","debounce","deepMerge","Accessibility","AccessibilityService","LoaderMixin","isTouchDevice","isFiresTouchEvents","isChildOf","Event","execute","with","constructor","element","options","arguments","length","_resizable","classNames","modifier","position","text","preventOverflow","preventOverflowOffset","flip","scroll","resize","destroyOnHide","strategy","removeOnDestroy","triggerSelector","showOnClick","trackFocusedElements","width","closeLabel","hideTooltipOnMouseLeave","tooltipArrowOffset","tooltipOffset","afterClose","initCache","classes","tooltip","tooltipArrow","tooltipAriaLink","tooltipClose","tooltipContent","tooltipTitle","tooltipBody","activeModifier","selectors","target","querySelector","createTooltipLayout","popperInstance","cssClass","ariaLabel","hasAttribute","getAttribute","titleCssClass","titleClassNames","forEach","className","titleTemplate","title","id","innerHTML","closeTemplate","ariaLinkTemplate","template","document","createElement","initState","state","isActive","hasContent","areCustomEventsBound","isForceContentLoad","isFocusDisabled","bindEvents","onDocumentClick","bind","onMouseEnter","onMouseLeave","onKeyboardControl","onClick","onDocumentKeyDown","checkComponent","onTooltipTouchOpened","afterInit","bindCustomTooltipEvents","onContentMouseLeave","onTooltipKeyboardControl","onTooltipCloseClick","unbindCustomTooltipEvents","event","keyBoardActions","Enter","toggleContentFromKeyboard","\" \"","Tab","onTabKey","Escape","focus","hideContent","focusTrap","toggleContent","preventDefault","stopImmediatePropagation","showContent","relatedTarget","contains","addDialogMarkup","showAriaLink","showCloseButton","setAttribute","setDialogTitle","tooltipTitleElement","removeDialogMarkup","hideAriaLink","hideCloseButton","removeAttribute","classList","remove","add","hideContentFromMouse","emit","obj","key","isContentValid","saveLastFocusState","closest","initAccessibility","body","appendChild","createPopper","addNewState","setContent","updatePopper","indexOf","onResize","content","update","popperOptions","placement","eventsEnabled","modifiers","name","padding","offset","tether","rootBoundary","flipVariations","gpuAcceleration","onFirstUpdate","onPopperCreate","popper","SystemJS","import","then","forceUpdate","setWidth","refresh","initModalPattern","setFocusedOrder","style","destroyPopper","destroy","destroyModalPattern","resetFocusedOrder","restorePrevState","removeListener"],"sources":["components/global/ToolTip.js"],"sourcesContent":["/* eslint max-lines: off */\nimport Component from 'core/Component';\nimport AOS from 'aos';\nimport { mix } from 'core/mixwith';\nimport { on, off } from 'toolbox/event';\nimport { debounce } from 'toolbox/debounce';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport Accessibility from 'mixins/Accessibility';\nimport AccessibilityService from 'services/Accessibility';\nimport LoaderMixin from 'mixins/Loader';\nimport { isTouchDevice, isFiresTouchEvents } from 'toolbox/device';\nimport { isChildOf } from 'toolbox/html';\nimport { Event } from 'services/EventEmitter';\n\n/**\n * This is a description of the ToolTip constructor function.\n * See documentation for API: https://popper.js.org/docs/v2/\n * @class\n * @classdesc This is a description of the ToolTip class.\n * @extends Component\n */\nexport default class ToolTip extends mix(Component).with(Accessibility, LoaderMixin) {\n /**\n * Constructor of the class that mainly merge the options of the components\n *\n * @param {HTMLElement} element HTMLElement of the component\n * @param {Object} options options that belongs to the component\n * @typedef {Object} optionsObject\n * @property {String} classNames.modifier - Additional class modifier inserted on Tooltip\n * @property {enum} position - Popper placement (see API).\n * List of accepted placements: `auto`, `top`, `right`, `bottom`, `left`\n * Each placement can have a variation suffix: '-start`, `-end'\n * Some valid examples: `top-end`, `right-start`, `bottom`, `auto-end`\n * @property {String} text - text to show in a tooltip.\n * @property {Boolean} preventOverflow - Set to true to prevent the popper from being positioned outside the boundary\n * @property {Boolean} preventOverflowOffset - Padding on all four sides of view port.\n * Different padding on certain sides – unspecified sides are 0\n * padding: { top: 8, right: 16 },\n * @property {String} tooltipArrowOffset - You can pass a number, which will set an equal padding for all four sides,\n * or an object containing side properties each with their own padding value.\n * @property {Array} tooltipOffset - [0, 0], The first number, skidding, displaces the popper along the reference element.\n* The second number, distance, displaces the popper away from, or toward,\n* the reference element in the direction of its placement. A positive number displaces it\n further away, while a negative number lets it overlap the reference.\n * @property {Boolean} flip - Set to true to flip the popper’s placement when it starts to overlap its reference element\n * Requires the preventOverflow modifier before it in order to work\n * @property {Boolean} scroll - Determines if scroll listeners are added.\n * @property {Boolean} resize - Determines if resize listeners are added.\n * @property {Boolean} strategy - Set position of popper. By default, it is absolute\n * Accepted placements: `fixed`, `sticky`, `relative`\n * @property {Boolean} removeOnDestroy - Set to true if you want to automatically remove the popper when you call\n * the destroy method\n * @property {Number} width - width of a tooltip content in px. Set to 0 if the width is defined by the content inside\n * @property {Function} afterClose - Function which will be executed right after Tooltip is closed\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n _resizable: true,\n classNames: { modifier: null },\n position: 'bottom',\n text: null,\n preventOverflow: true,\n preventOverflowOffset: 10,\n flip: true,\n scroll: false,\n resize: true,\n destroyOnHide: true,\n strategy: 'absolute',\n removeOnDestroy: true,\n triggerSelector: null, // dom selector for the custom target\n showOnClick: false, // show content on click (disable mouse enter/leave events)\n trackFocusedElements: true,\n width: 0,\n closeLabel: 'Close',\n hideTooltipOnMouseLeave: true, // hide tooltip on mouse tooltip leave\n tooltipArrowOffset: 5, // 5px from the edges of the popper\n tooltipOffset: [], // 0px from the edges of the reference element\n /**\n * It will execute right after Tooltip is closed\n */\n afterClose() {\n // Callback methods\n },\n }, options));\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.classes = {\n tooltip: 'c-tooltip',\n tooltipArrow: 'c-tooltip__arrow',\n tooltipAriaLink: 'c-tooltip__arialink',\n tooltipClose: 'c-tooltip__close',\n tooltipContent: 'c-tooltip__content',\n tooltipTitle: 'c-tooltip__title',\n tooltipBody: 'c-tooltip__body',\n activeModifier: 'm-active',\n };\n\n this.selectors.target = (this.options.triggerSelector && this.element.querySelector(this.options.triggerSelector))\n || this.element;\n\n this.tooltip = this.createTooltipLayout();\n\n this.selectors.tooltipArrow = this.tooltip.querySelector(`.${this.classes.tooltipArrow}`);\n this.selectors.tooltipAriaLink = this.tooltip.querySelector(`.${this.classes.tooltipAriaLink}`);\n this.selectors.tooltipClose = this.tooltip.querySelector(`.${this.classes.tooltipClose}`);\n this.selectors.tooltipBody = this.tooltip.querySelector(`.${this.classes.tooltipBody}`);\n this.selectors.tooltipContent = this.tooltip.querySelector(`.${this.classes.tooltipContent}`);\n\n this.popperInstance = null;\n }\n\n /* eslint-disable complexity */\n /**\n * Create the tooltip HTML structure\n *\n * @returns { HTMLElement } tooltip container\n */\n createTooltipLayout() {\n const cssClass = this.options.classNames.modifier !== null ? `${this.classes.tooltip} ${this.options.classNames.modifier}` : this.classes.tooltip;\n const ariaLabel = this.selectors.target.hasAttribute('aria-label') ? `aria-label=\"${this.selectors.target.getAttribute('aria-label')}\"` : '';\n\n let titleCssClass = this.classes.tooltipTitle;\n if (this.options.titleClassNames) {\n this.options.titleClassNames.forEach((className) => {\n titleCssClass += ` ${className}`;\n });\n }\n const titleTemplate = `
${this.options.title || this.selectors.target.getAttribute('aria-label') || this.selectors.target.innerHTML}
`;\n\n const closeLabel = this.selectors.target.hasAttribute('data-js-aria-close-label') ? this.selectors.target.getAttribute('data-js-aria-close-label') : this.options.closeLabel;\n const closeTemplate = ``;\n\n const ariaLinkTemplate = this.selectors.target.getAttribute('data-href')\n ? `${this.selectors.target.innerHTML}` : '';\n\n const template = `
${ariaLinkTemplate}${titleTemplate}
${closeTemplate}
`;\n\n const tooltip = document.createElement('div');\n tooltip.innerHTML = template;\n\n return tooltip.querySelector(`.${this.classes.tooltip}`);\n }\n /* eslint-enable complexity */\n\n /**\n * Init the different state of the component\n * It helps to avoid heavy DOM manipulation\n */\n initState() {\n this.state.isActive = false;\n this.state.hasContent = false;\n this.state.areCustomEventsBound = false;\n this.state.isForceContentLoad = false;\n this.state.isFocusDisabled = false;\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonyous function\n */\n bindEvents() {\n if (!isTouchDevice() && !this.options.showOnClick) {\n on('mouseenter', this.selectors.target, this.onMouseEnter.bind(this));\n on('mouseleave', this.selectors.target, debounce(this.onMouseLeave.bind(this)));\n } else {\n on(`click.${this.id}`, document, this.onDocumentClick.bind(this));\n }\n on('keydown', this.selectors.target, this.onKeyboardControl.bind(this));\n on('click.tooltip', this.selectors.target, this.onClick.bind(this));\n on(`keydown.${this.id}`, document, this.onDocumentKeyDown.bind(this));\n on('tooltip.checkcomponent', this.element, this.checkComponent.bind(this));\n Event.on('tooltip.touch.opened', this.onTooltipTouchOpened, this);\n\n super.bindEvents();\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n this.state.isFocusDisabled = true;\n }\n\n /**\n * Bind events for custom select\n */\n bindCustomTooltipEvents() {\n if (!this.state.areCustomEventsBound) {\n if (!this.options.showOnClick && this.options.hideTooltipOnMouseLeave) {\n on('mouseleave', this.tooltip, debounce(this.onContentMouseLeave.bind(this)));\n }\n // Accessibility events\n on('keydown', this.tooltip, this.onTooltipKeyboardControl.bind(this));\n on('click', this.selectors.tooltipClose, this.onTooltipCloseClick.bind(this));\n this.state.areCustomEventsBound = true;\n }\n }\n\n /**\n * Unbind custom select event\n */\n unbindCustomTooltipEvents() {\n if (this.state.areCustomEventsBound) {\n off('mouseleave keydown', this.tooltip);\n off('click', this.selectors.tooltipClose);\n this.state.areCustomEventsBound = false;\n }\n }\n\n /**\n * Shows/hides on keypress\n * @param {Event} event - Event object\n */\n onKeyboardControl(event) {\n const keyBoardKeys = {\n Enter: () => { // 'Enter' key\n this.toggleContentFromKeyboard(event);\n },\n ' ': () => { // 'Space' key\n this.toggleContentFromKeyboard(event);\n },\n };\n this.keyBoardActions(event, keyBoardKeys);\n }\n\n /**\n * Hide and focus on keypress\n * @param {Event} event - Event object\n */\n onTooltipKeyboardControl(event) {\n this.state.isFocusDisabled = false;\n const keyBoardKeys = {\n Tab: () => { // 'TAB' key\n this.onTabKey(event);\n },\n Escape: () => { // 'Escape' key\n this.selectors.target.focus();\n this.hideContent();\n this.unbindCustomTooltipEvents();\n },\n };\n\n this.keyBoardActions(event, keyBoardKeys);\n }\n\n /**\n * Tab key event\n *\n * @param {Object} event Event object\n */\n onTabKey(event) {\n super.focusTrap(this.tooltip, event);\n }\n\n /**\n * Tooltip Close click event handler\n */\n onTooltipCloseClick() {\n if (!this.state.isFocusDisabled) {\n this.selectors.target.focus();\n }\n\n this.hideContent();\n this.unbindCustomTooltipEvents();\n }\n\n /**\n * Toggle content on key event\n * @param {Event} event - Event object\n */\n toggleContentFromKeyboard(event) {\n this.state.isFocusDisabled = false;\n this.toggleContent(event);\n }\n\n /**\n * Toggle content\n * @param {Event} event - Event object\n */\n toggleContent(event) {\n if (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n if (this.state.isActive) {\n this.hideContent();\n } else {\n this.showContent();\n }\n }\n\n /**\n * MouseDown/TouchStart event handler\n * @param { Object } event Event object\n */\n onDocumentClick(event) {\n const { target, relatedTarget } = event;\n\n if (this.tooltip.contains(target) || this.tooltip.contains(relatedTarget) || relatedTarget === this.tooltip) {\n return;\n }\n this.state.isFocusDisabled = true;\n if (this.state.isActive) {\n if (this.options.showOnClick) {\n if (!isChildOf(event.target, this.tooltip) && !isChildOf(event.target, this.selectors.target)) {\n this.hideContent();\n this.unbindCustomTooltipEvents();\n }\n } else {\n event.preventDefault();\n this.hideContent();\n this.unbindCustomTooltipEvents();\n }\n }\n }\n\n /**\n * Add modal dialog window markup for a tooltip\n */\n addDialogMarkup() {\n if (!this.state.isFocusDisabled || this.options.showOnClick) {\n this.showAriaLink();\n this.showCloseButton();\n }\n this.tooltip.setAttribute('role', 'dialog');\n this.tooltip.setAttribute('aria-modal', 'true');\n this.tooltip.setAttribute('aria-labelledby', this.setDialogTitle());\n }\n\n /**\n * Check if explicit tooltip title is defined. Otherwise the target element is used as a title\n * @returns {string} - title ID\n */\n setDialogTitle() {\n const tooltipTitle = `tooltip-title-${this.id}`;\n // Check if tooltip title was defined by merchandiser and if yes, make the ID unique\n const tooltipTitleElement = this.tooltip.querySelector('#tooltip-title');\n if (tooltipTitleElement) {\n tooltipTitleElement.setAttribute('id', `tooltip-title-${this.id}`);\n }\n\n return tooltipTitle;\n }\n\n /**\n * Remove modal dialog window markup for a tooltip\n */\n removeDialogMarkup() {\n if (!this.state.isFocusDisabled || this.options.showOnClick) {\n this.hideAriaLink();\n this.hideCloseButton();\n }\n this.tooltip.removeAttribute('role');\n this.tooltip.removeAttribute('aria-modal');\n this.tooltip.removeAttribute('aria-labelledby');\n }\n\n /**\n * Show aria link on keyboard navigation\n */\n showAriaLink() {\n if (this.selectors.tooltipAriaLink) {\n this.selectors.tooltipAriaLink.classList.remove('h-hidden');\n }\n }\n\n /**\n * Hide aria link on keyboard navigation\n */\n hideAriaLink() {\n if (this.selectors.tooltipAriaLink) {\n this.selectors.tooltipAriaLink.classList.add('h-hidden');\n }\n }\n\n /**\n * Show close button on keyboard navigation\n */\n showCloseButton() {\n this.selectors.tooltipClose.classList.remove('h-hidden');\n }\n\n /**\n * Hide close button on keyboard navigation\n */\n hideCloseButton() {\n this.selectors.tooltipClose.classList.add('h-hidden');\n }\n\n /**\n * Hide content on mouse iteraction\n */\n hideContentFromMouse() {\n this.hideContent();\n }\n\n /**\n * Show content on mouse enter\n */\n onMouseEnter() {\n this.state.isFocusDisabled = true;\n if (this.state.isForceContentLoad) {\n this.showContent(true);\n } else {\n this.showContent();\n }\n }\n\n /**\n * Hide content on mouse leave\n * @param {Event} event - Event object\n */\n onMouseLeave(event) {\n if (event) {\n const { target, relatedTarget } = event;\n\n if (this.tooltip.contains(target) || this.tooltip.contains(relatedTarget) || relatedTarget === this.tooltip) {\n return;\n }\n }\n this.hideContentFromMouse();\n }\n\n /**\n * Click event handler\n * @param {Event} event - Event object\n */\n onClick(event) {\n event.preventDefault();\n\n if ((event && isFiresTouchEvents(event)) || this.options.showOnClick) {\n if (!this.state.isActive) {\n Event.emit('tooltip.touch.opened', this.id);\n }\n this.state.isFocusDisabled = false;\n this.toggleContent(event);\n }\n }\n\n /**\n * Hide tooltip when another is open\n * @param {String} id parent component ID\n */\n onTooltipTouchOpened(id) {\n if (id !== this.id && this.state.isActive) {\n this.state.isFocusDisabled = true;\n this.hideContent();\n }\n }\n\n /**\n * Hide content on tooltip mouse leave\n */\n onContentMouseLeave() {\n this.hideContent();\n this.unbindCustomTooltipEvents();\n }\n\n /**\n * Shows/hides on keypress\n * @param {Event} event - Event object\n * @param {Object} obj - Code key object\n */\n keyBoardActions(event, obj) {\n if (obj[event.key]) {\n obj[event.key]();\n }\n }\n\n /**\n * Shows a tooltip\n */\n showContent() {\n if (this.state.isActive || !this.isContentValid()) {\n return;\n }\n if (!this.state.isFocusDisabled) {\n this.saveLastFocusState();\n }\n\n this.state.isActive = true;\n this.selectors.target.setAttribute('aria-expanded', 'true');\n this.tooltip.classList.add(this.classes.activeModifier);\n\n if (this.selectors.target.closest('[data-js-header]')) {\n Event.emit('header.focused');\n }\n\n if (!this.popperInstance) {\n document.body.appendChild(this.tooltip);\n this.createPopper();\n } else {\n this.initAccessibility();\n }\n\n if (!this.state.isFocusDisabled) {\n AccessibilityService.addNewState();\n }\n\n if (!this.state.hasContent) {\n this.setContent(this.options.text);\n }\n\n this.updatePopper();\n }\n\n /**\n * Check if tooltip contains component\n */\n checkComponent() {\n if (this.tooltip.querySelector('[data-component]')) {\n this.state.isForceContentLoad = true;\n } else {\n this.state.isForceContentLoad = false;\n }\n }\n\n /**\n * Document keydown handler\n * @param { Object } event Event object\n */\n onDocumentKeyDown(event) {\n if (this.state.isActive && event && ['Escape'].indexOf(event.key) !== -1) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.hideContent();\n }\n }\n\n /**\n * Update popper position when window is resized\n */\n onResize() {\n this.updatePopper();\n }\n\n /**\n * Content is valid only if at least a content is passed somewhere\n *\n * @returns {Boolean} - true or false\n */\n isContentValid() {\n return this.options.text && this.options.text !== '';\n }\n\n /**\n * Update the text of the tooltip\n *\n * @param {String} content - tooltip text\n */\n setContent(content) {\n if (content) {\n if (this.popperInstance) {\n this.popperInstance.update();\n }\n this.state.hasContent = true;\n this.selectors.tooltipBody.innerHTML = content;\n }\n }\n\n /**\n * Getter which defines options object for popper.js module\n *\n * @return {Object} - Options for popper.js module\n */\n get popperOptions() {\n return {\n placement: this.options.position,\n eventsEnabled: this.options.eventsEnabled,\n removeOnDestroy: this.options.removeOnDestroy,\n strategy: this.options.strategy,\n modifiers: [\n {\n name: 'arrow',\n options: {\n element: this.selectors.tooltipArrow,\n padding: this.options.tooltipArrowOffset,\n },\n },\n {\n name: 'offset',\n options: {\n offset: this.options.tooltipOffset,\n },\n },\n {\n name: 'preventOverflow',\n options: {\n tether: this.options.preventOverflow,\n rootBoundary: document.body,\n padding: this.options.preventOverflowOffset,\n },\n },\n {\n name: 'flip',\n options: {\n flipVariations: this.options.flip,\n padding: 0,\n },\n },\n {\n name: 'computeStyles',\n options: {\n gpuAcceleration: false,\n },\n },\n {\n name: 'eventListeners',\n options: {\n scroll: this.options.scroll,\n resize: this.options.resize,\n },\n },\n ],\n onFirstUpdate: this.onPopperCreate.bind(this),\n };\n }\n\n /**\n * Creates a popper.js instance, which sets initial position or updates position of the tooltip\n *\n * @returns {Object} popper\n */\n createPopper() {\n this.popper = SystemJS.import('@popperjs/core').then(({ createPopper }) => {\n if (this.state.isActive) {\n this.popperInstance = createPopper(this.selectors.target, this.tooltip, this.popperOptions);\n }\n });\n\n return this.popper;\n }\n\n /**\n * Re-calculate popper position\n */\n updatePopper() {\n if (this.popperInstance) {\n this.popperInstance.forceUpdate();\n }\n }\n\n /**\n * onCreate Popper callback\n */\n onPopperCreate() {\n if (this.options.width) {\n this.setWidth(this.options.width);\n }\n AOS.refresh();\n this.initAccessibility();\n }\n\n /**\n * Init accessibility actions for the opened tooltip\n * - mask page from a screen reader (only tooltip content must be visible)\n * - set up a keyboard trap\n */\n initAccessibility() {\n if (this.state.isActive) {\n this.addDialogMarkup();\n if (!this.state.isFocusDisabled) {\n this.initModalPattern(this.tooltip);\n this.setFocusedOrder(this.tooltip);\n }\n this.bindCustomTooltipEvents(); // bind events on keydown actions inside Tooltip\n }\n }\n\n /**\n * Set the popper width if defined in options\n * @param {number} width - tooltip width\n */\n setWidth(width) {\n if (this.popperInstance && this.tooltip) {\n this.tooltip.style.width = `${width}px`;\n this.popperInstance.forceUpdate();\n }\n }\n\n /**\n * Destroy the popper.js instance\n */\n destroyPopper() {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n\n /**\n * Hides a tooltip\n */\n hideContent() {\n if (this.state.isActive) {\n if (!this.state.isFocusDisabled) {\n this.destroyModalPattern();\n this.resetFocusedOrder(this.tooltip);\n }\n Event.emit('tooltip.hide.content', this.id);\n this.tooltip.classList.remove(this.classes.activeModifier);\n this.selectors.target.setAttribute('aria-expanded', 'false');\n this.state.isActive = false;\n\n this.removeDialogMarkup();\n\n if (this.options.destroyOnHide) {\n this.destroyPopper();\n }\n if (this.state.isFocusDisabled && this.selectors.target.closest('[data-js-header]')) {\n Event.emit('header.unfocused');\n }\n\n this.options.afterClose(this.element);\n\n if (!this.state.isFocusDisabled) {\n AccessibilityService.restorePrevState();\n }\n }\n }\n\n /**\n * Destroy is called automatically after the component is being removed from the DOM\n * You must always destroy the listeners attached to an element to avoid any memory leaks\n */\n destroy() {\n off(this.element);\n off(this.selectors.target);\n\n this.destroyPopper();\n this.unbindCustomTooltipEvents();\n off(`keydown.${this.id}`, document);\n\n Event.removeListener('tooltip.touch.opened', this.onTooltipTouchOpened, this);\n\n if (isTouchDevice() || this.options.showOnClick) {\n off(`click.${this.id}`, document);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}