primevue
Version:
PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc
1 lines • 45.9 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/tooltip/BaseTooltip.js","../../src/tooltip/Tooltip.js"],"sourcesContent":["import BaseDirective from '@primevue/core/basedirective';\nimport TooltipStyle from 'primevue/tooltip/style';\n\nconst BaseTooltip = BaseDirective.extend({\n style: TooltipStyle\n});\n\nexport default BaseTooltip;\n","import { addClass, createElement, fadeIn, findSingle, getAttribute, getOuterHeight, getOuterWidth, getViewport, getWindowScrollLeft, getWindowScrollTop, hasClass, isExist, isTouchDevice, removeClass } from '@primeuix/utils/dom';\nimport { isEmpty } from '@primeuix/utils/object';\nimport { uuid } from '@primeuix/utils/uuid';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\nimport BaseTooltip from './BaseTooltip';\n\nconst Tooltip = BaseTooltip.extend('tooltip', {\n beforeMount(el, options) {\n let target = this.getTarget(el);\n\n target.$_ptooltipModifiers = this.getModifiers(options);\n\n if (!options.value) return;\n else if (typeof options.value === 'string') {\n target.$_ptooltipValue = options.value;\n target.$_ptooltipDisabled = false;\n target.$_ptooltipEscape = true;\n target.$_ptooltipClass = null;\n target.$_ptooltipFitContent = true;\n target.$_ptooltipIdAttr = uuid('pv_id') + '_tooltip';\n target.$_ptooltipShowDelay = 0;\n target.$_ptooltipHideDelay = 0;\n target.$_ptooltipAutoHide = true;\n } else if (typeof options.value === 'object' && options.value) {\n if (isEmpty(options.value.value) || options.value.value.trim() === '') return;\n else {\n target.$_ptooltipValue = options.value.value;\n target.$_ptooltipDisabled = !!options.value.disabled === options.value.disabled ? options.value.disabled : false;\n target.$_ptooltipEscape = !!options.value.escape === options.value.escape ? options.value.escape : true;\n target.$_ptooltipClass = options.value.class || '';\n target.$_ptooltipFitContent = !!options.value.fitContent === options.value.fitContent ? options.value.fitContent : true;\n target.$_ptooltipIdAttr = options.value.id || uuid('pv_id') + '_tooltip';\n target.$_ptooltipShowDelay = options.value.showDelay || 0;\n target.$_ptooltipHideDelay = options.value.hideDelay || 0;\n target.$_ptooltipAutoHide = !!options.value.autoHide === options.value.autoHide ? options.value.autoHide : true;\n }\n }\n\n target.$_ptooltipZIndex = options.instance.$primevue?.config?.zIndex?.tooltip;\n\n this.bindEvents(target, options);\n\n el.setAttribute('data-pd-tooltip', true);\n },\n updated(el, options) {\n let target = this.getTarget(el);\n\n target.$_ptooltipModifiers = this.getModifiers(options);\n this.unbindEvents(target);\n\n if (!options.value) {\n return;\n }\n\n if (typeof options.value === 'string') {\n target.$_ptooltipValue = options.value;\n target.$_ptooltipDisabled = false;\n target.$_ptooltipEscape = true;\n target.$_ptooltipClass = null;\n target.$_ptooltipIdAttr = target.$_ptooltipIdAttr || uuid('pv_id') + '_tooltip';\n target.$_ptooltipShowDelay = 0;\n target.$_ptooltipHideDelay = 0;\n target.$_ptooltipAutoHide = true;\n\n this.bindEvents(target, options);\n } else if (typeof options.value === 'object' && options.value) {\n if (isEmpty(options.value.value) || options.value.value.trim() === '') {\n this.unbindEvents(target, options);\n\n return;\n } else {\n target.$_ptooltipValue = options.value.value;\n target.$_ptooltipDisabled = !!options.value.disabled === options.value.disabled ? options.value.disabled : false;\n target.$_ptooltipEscape = !!options.value.escape === options.value.escape ? options.value.escape : true;\n target.$_ptooltipClass = options.value.class || '';\n target.$_ptooltipFitContent = !!options.value.fitContent === options.value.fitContent ? options.value.fitContent : true;\n target.$_ptooltipIdAttr = options.value.id || target.$_ptooltipIdAttr || uuid('pv_id') + '_tooltip';\n target.$_ptooltipShowDelay = options.value.showDelay || 0;\n target.$_ptooltipHideDelay = options.value.hideDelay || 0;\n target.$_ptooltipAutoHide = !!options.value.autoHide === options.value.autoHide ? options.value.autoHide : true;\n\n this.bindEvents(target, options);\n }\n }\n },\n unmounted(el, options) {\n let target = this.getTarget(el);\n\n this.remove(target);\n this.unbindEvents(target, options);\n\n if (target.$_ptooltipScrollHandler) {\n target.$_ptooltipScrollHandler.destroy();\n target.$_ptooltipScrollHandler = null;\n }\n },\n timer: undefined,\n methods: {\n bindEvents(el, options) {\n const modifiers = el.$_ptooltipModifiers;\n\n if (modifiers.focus) {\n el.$_ptooltipFocusEvent = (event) => this.onFocus(event, options);\n el.$_ptooltipBlurEvent = this.onBlur.bind(this);\n\n el.addEventListener('focus', el.$_ptooltipFocusEvent);\n el.addEventListener('blur', el.$_ptooltipBlurEvent);\n } else {\n el.$_ptooltipMouseEnterEvent = (event) => this.onMouseEnter(event, options);\n el.$_ptooltipMouseLeaveEvent = this.onMouseLeave.bind(this);\n el.$_ptooltipClickEvent = this.onClick.bind(this);\n\n el.addEventListener('mouseenter', el.$_ptooltipMouseEnterEvent);\n el.addEventListener('mouseleave', el.$_ptooltipMouseLeaveEvent);\n el.addEventListener('click', el.$_ptooltipClickEvent);\n }\n\n el.addEventListener('keydown', this.onKeydown.bind(this));\n },\n unbindEvents(el) {\n const modifiers = el.$_ptooltipModifiers;\n\n if (modifiers.focus) {\n el.removeEventListener('focus', el.$_ptooltipFocusEvent);\n el.$_ptooltipFocusEvent = null;\n\n el.removeEventListener('blur', el.$_ptooltipBlurEvent);\n el.$_ptooltipBlurEvent = null;\n } else {\n el.removeEventListener('mouseenter', el.$_ptooltipMouseEnterEvent);\n el.$_ptooltipMouseEnterEvent = null;\n\n el.removeEventListener('mouseleave', el.$_ptooltipMouseLeaveEvent);\n el.$_ptooltipMouseLeaveEvent = null;\n\n el.removeEventListener('click', el.$_ptooltipClickEvent);\n el.$_ptooltipClickEvent = null;\n }\n\n el.removeEventListener('keydown', this.onKeydown.bind(this));\n },\n bindScrollListener(el) {\n if (!el.$_ptooltipScrollHandler) {\n el.$_ptooltipScrollHandler = new ConnectedOverlayScrollHandler(el, () => {\n this.hide(el);\n });\n }\n\n el.$_ptooltipScrollHandler.bindScrollListener();\n },\n unbindScrollListener(el) {\n if (el.$_ptooltipScrollHandler) {\n el.$_ptooltipScrollHandler.unbindScrollListener();\n }\n },\n onMouseEnter(event, options) {\n const el = event.currentTarget;\n const showDelay = el.$_ptooltipShowDelay;\n\n this.show(el, options, showDelay);\n },\n onMouseLeave(event) {\n const el = event.currentTarget;\n const hideDelay = el.$_ptooltipHideDelay;\n const autoHide = el.$_ptooltipAutoHide;\n\n if (!autoHide) {\n const valid =\n getAttribute(event.target, 'data-pc-name') === 'tooltip' ||\n getAttribute(event.target, 'data-pc-section') === 'arrow' ||\n getAttribute(event.target, 'data-pc-section') === 'text' ||\n getAttribute(event.relatedTarget, 'data-pc-name') === 'tooltip' ||\n getAttribute(event.relatedTarget, 'data-pc-section') === 'arrow' ||\n getAttribute(event.relatedTarget, 'data-pc-section') === 'text';\n\n !valid && this.hide(el, hideDelay);\n } else {\n this.hide(el, hideDelay);\n }\n },\n onFocus(event, options) {\n const el = event.currentTarget;\n const showDelay = el.$_ptooltipShowDelay;\n\n this.show(el, options, showDelay);\n },\n onBlur(event) {\n const el = event.currentTarget;\n const hideDelay = el.$_ptooltipHideDelay;\n\n this.hide(el, hideDelay);\n },\n onClick(event) {\n const el = event.currentTarget;\n const hideDelay = el.$_ptooltipHideDelay;\n\n this.hide(el, hideDelay);\n },\n onKeydown(event) {\n const el = event.currentTarget;\n const hideDelay = el.$_ptooltipHideDelay;\n\n event.code === 'Escape' && this.hide(event.currentTarget, hideDelay);\n },\n tooltipActions(el, options) {\n if (el.$_ptooltipDisabled || !isExist(el)) {\n return;\n }\n\n let tooltipElement = this.create(el, options);\n\n this.align(el);\n !this.isUnstyled() && fadeIn(tooltipElement, 250);\n\n const $this = this;\n\n window.addEventListener('resize', function onWindowResize() {\n if (!isTouchDevice()) {\n $this.hide(el);\n }\n\n window.removeEventListener('resize', onWindowResize);\n });\n\n tooltipElement.addEventListener('mouseleave', function onTooltipLeave() {\n $this.hide(el);\n\n tooltipElement.removeEventListener('mouseleave', onTooltipLeave);\n el.removeEventListener('mouseenter', el.$_ptooltipMouseEnterEvent);\n setTimeout(() => el.addEventListener('mouseenter', el.$_ptooltipMouseEnterEvent), 50);\n });\n\n this.bindScrollListener(el);\n ZIndex.set('tooltip', tooltipElement, el.$_ptooltipZIndex);\n },\n show(el, options, showDelay) {\n if (showDelay !== undefined) {\n this.timer = setTimeout(() => this.tooltipActions(el, options), showDelay);\n } else {\n this.tooltipActions(el, options);\n }\n },\n tooltipRemoval(el) {\n this.remove(el);\n this.unbindScrollListener(el);\n },\n hide(el, hideDelay) {\n clearTimeout(this.timer);\n\n if (hideDelay !== undefined) {\n setTimeout(() => this.tooltipRemoval(el), hideDelay);\n } else {\n this.tooltipRemoval(el);\n }\n },\n getTooltipElement(el) {\n return document.getElementById(el.$_ptooltipId);\n },\n getArrowElement(el) {\n let tooltipElement = this.getTooltipElement(el);\n\n return findSingle(tooltipElement, '[data-pc-section=\"arrow\"]');\n },\n create(el) {\n const modifiers = el.$_ptooltipModifiers;\n\n const tooltipArrow = createElement('div', {\n class: !this.isUnstyled() && this.cx('arrow'),\n 'p-bind': this.ptm('arrow', {\n context: modifiers\n })\n });\n\n const tooltipText = createElement('div', {\n class: !this.isUnstyled() && this.cx('text'),\n 'p-bind': this.ptm('text', {\n context: modifiers\n })\n });\n\n if (!el.$_ptooltipEscape) {\n tooltipText.innerHTML = el.$_ptooltipValue;\n } else {\n tooltipText.innerHTML = '';\n tooltipText.appendChild(document.createTextNode(el.$_ptooltipValue));\n }\n\n const container = createElement(\n 'div',\n {\n id: el.$_ptooltipIdAttr,\n role: 'tooltip',\n style: {\n display: 'inline-block',\n width: el.$_ptooltipFitContent ? 'fit-content' : undefined,\n pointerEvents: !this.isUnstyled() && el.$_ptooltipAutoHide && 'none'\n },\n class: [!this.isUnstyled() && this.cx('root'), el.$_ptooltipClass],\n [this.$attrSelector]: '',\n 'p-bind': this.ptm('root', {\n context: modifiers\n })\n },\n tooltipArrow,\n tooltipText\n );\n\n document.body.appendChild(container);\n\n el.$_ptooltipId = container.id;\n this.$el = container;\n\n return container;\n },\n remove(el) {\n if (el) {\n let tooltipElement = this.getTooltipElement(el);\n\n if (tooltipElement && tooltipElement.parentElement) {\n ZIndex.clear(tooltipElement);\n document.body.removeChild(tooltipElement);\n }\n\n el.$_ptooltipId = null;\n }\n },\n align(el) {\n const modifiers = el.$_ptooltipModifiers;\n\n if (modifiers.top) {\n this.alignTop(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignBottom(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignTop(el);\n }\n }\n } else if (modifiers.left) {\n this.alignLeft(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignRight(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignTop(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignBottom(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignLeft(el);\n }\n }\n }\n }\n } else if (modifiers.bottom) {\n this.alignBottom(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignTop(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignBottom(el);\n }\n }\n } else {\n this.alignRight(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignLeft(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignTop(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignBottom(el);\n\n if (this.isOutOfBounds(el)) {\n this.alignRight(el);\n }\n }\n }\n }\n }\n },\n getHostOffset(el) {\n let offset = el.getBoundingClientRect();\n let targetLeft = offset.left + getWindowScrollLeft();\n let targetTop = offset.top + getWindowScrollTop();\n\n return { left: targetLeft, top: targetTop };\n },\n alignRight(el) {\n this.preAlign(el, 'right');\n let tooltipElement = this.getTooltipElement(el);\n let arrowElement = this.getArrowElement(el);\n let hostOffset = this.getHostOffset(el);\n let left = hostOffset.left + getOuterWidth(el);\n let top = hostOffset.top + (getOuterHeight(el) - getOuterHeight(tooltipElement)) / 2;\n\n tooltipElement.style.left = left + 'px';\n tooltipElement.style.top = top + 'px';\n\n arrowElement.style.top = '50%';\n arrowElement.style.right = null;\n arrowElement.style.bottom = null;\n arrowElement.style.left = '0';\n },\n alignLeft(el) {\n this.preAlign(el, 'left');\n let tooltipElement = this.getTooltipElement(el);\n let arrowElement = this.getArrowElement(el);\n let hostOffset = this.getHostOffset(el);\n let left = hostOffset.left - getOuterWidth(tooltipElement);\n let top = hostOffset.top + (getOuterHeight(el) - getOuterHeight(tooltipElement)) / 2;\n\n tooltipElement.style.left = left + 'px';\n tooltipElement.style.top = top + 'px';\n\n arrowElement.style.top = '50%';\n arrowElement.style.right = '0';\n arrowElement.style.bottom = null;\n arrowElement.style.left = null;\n },\n alignTop(el) {\n this.preAlign(el, 'top');\n let tooltipElement = this.getTooltipElement(el);\n let arrowElement = this.getArrowElement(el);\n let tooltipWidth = getOuterWidth(tooltipElement);\n let elementWidth = getOuterWidth(el);\n let { width: viewportWidth } = getViewport();\n let hostOffset = this.getHostOffset(el);\n let left = hostOffset.left + (getOuterWidth(el) - getOuterWidth(tooltipElement)) / 2;\n let top = hostOffset.top - getOuterHeight(tooltipElement);\n\n if (hostOffset.left + tooltipWidth > viewportWidth) {\n // accounting for a scrollbar being present, getViewport() width includes scrollbars\n left = Math.floor(hostOffset.left + elementWidth - tooltipWidth);\n }\n\n tooltipElement.style.left = left + 'px';\n tooltipElement.style.top = top + 'px';\n\n // The center of the target relative to the tooltip\n let elementRelativeCenter = hostOffset.left - this.getHostOffset(tooltipElement).left + elementWidth / 2;\n\n arrowElement.style.top = null;\n arrowElement.style.right = null;\n arrowElement.style.bottom = '0';\n arrowElement.style.left = elementRelativeCenter + 'px';\n },\n alignBottom(el) {\n this.preAlign(el, 'bottom');\n let tooltipElement = this.getTooltipElement(el);\n let arrowElement = this.getArrowElement(el);\n let tooltipWidth = getOuterWidth(tooltipElement);\n let elementWidth = getOuterWidth(el);\n let { width: viewportWidth } = getViewport();\n let hostOffset = this.getHostOffset(el);\n\n let left = hostOffset.left + (getOuterWidth(el) - getOuterWidth(tooltipElement)) / 2;\n let top = hostOffset.top + getOuterHeight(el);\n\n if (hostOffset.left + tooltipWidth > viewportWidth) {\n // accounting for a scrollbar being present, getViewport() width includes scrollbars\n left = Math.floor(hostOffset.left + elementWidth - tooltipWidth);\n }\n\n tooltipElement.style.left = left + 'px';\n tooltipElement.style.top = top + 'px';\n\n // The center of the target relative to the tooltip\n let elementRelativeCenter = hostOffset.left - this.getHostOffset(tooltipElement).left + elementWidth / 2;\n\n arrowElement.style.top = '0';\n arrowElement.style.right = null;\n arrowElement.style.bottom = null;\n arrowElement.style.left = elementRelativeCenter + 'px';\n },\n preAlign(el, position) {\n let tooltipElement = this.getTooltipElement(el);\n\n tooltipElement.style.left = -999 + 'px';\n tooltipElement.style.top = -999 + 'px';\n removeClass(tooltipElement, `p-tooltip-${tooltipElement.$_ptooltipPosition}`);\n !this.isUnstyled() && addClass(tooltipElement, `p-tooltip-${position}`);\n tooltipElement.$_ptooltipPosition = position;\n tooltipElement.setAttribute('data-p-position', position);\n },\n isOutOfBounds(el) {\n let tooltipElement = this.getTooltipElement(el);\n let offset = tooltipElement.getBoundingClientRect();\n let targetTop = offset.top;\n let targetLeft = offset.left;\n let width = getOuterWidth(tooltipElement);\n let height = getOuterHeight(tooltipElement);\n let viewport = getViewport();\n\n return targetLeft + width > viewport.width || targetLeft < 0 || targetTop < 0 || targetTop + height > viewport.height;\n },\n getTarget(el) {\n return hasClass(el, 'p-inputwrapper') ? (findSingle(el, 'input') ?? el) : el;\n },\n getModifiers(options) {\n // modifiers\n if (options.modifiers && Object.keys(options.modifiers).length) {\n return options.modifiers;\n }\n\n // arg\n if (options.arg && typeof options.arg === 'object') {\n return Object.entries(options.arg).reduce((acc, [key, val]) => {\n if (key === 'event' || key === 'position') acc[val] = true;\n\n return acc;\n }, {});\n }\n\n return {};\n }\n }\n});\n\nexport default Tooltip;\n"],"names":["BaseTooltip","BaseDirective","extend","style","TooltipStyle","Tooltip","beforeMount","el","options","_options$instance$$pr","target","getTarget","$_ptooltipModifiers","getModifiers","value","$_ptooltipValue","$_ptooltipDisabled","$_ptooltipEscape","$_ptooltipClass","$_ptooltipFitContent","$_ptooltipIdAttr","uuid","$_ptooltipShowDelay","$_ptooltipHideDelay","$_ptooltipAutoHide","_typeof","isEmpty","trim","disabled","escape","fitContent","id","showDelay","hideDelay","autoHide","$_ptooltipZIndex","instance","$primevue","config","zIndex","tooltip","bindEvents","setAttribute","updated","unbindEvents","unmounted","remove","$_ptooltipScrollHandler","destroy","timer","undefined","methods","_this","modifiers","focus","$_ptooltipFocusEvent","event","onFocus","$_ptooltipBlurEvent","onBlur","bind","addEventListener","$_ptooltipMouseEnterEvent","onMouseEnter","$_ptooltipMouseLeaveEvent","onMouseLeave","$_ptooltipClickEvent","onClick","onKeydown","removeEventListener","bindScrollListener","_this2","ConnectedOverlayScrollHandler","hide","unbindScrollListener","currentTarget","show","valid","getAttribute","relatedTarget","code","tooltipActions","isExist","tooltipElement","create","align","isUnstyled","fadeIn","$this","window","onWindowResize","isTouchDevice","onTooltipLeave","setTimeout","ZIndex","set","_this3","tooltipRemoval","_this4","clearTimeout","getTooltipElement","document","getElementById","$_ptooltipId","getArrowElement","findSingle","tooltipArrow","createElement","cx","ptm","context","tooltipText","innerHTML","appendChild","createTextNode","container","_defineProperty","role","display","width","pointerEvents","$attrSelector","body","$el","parentElement","clear","removeChild","top","alignTop","isOutOfBounds","alignBottom","left","alignLeft","alignRight","bottom","getHostOffset","offset","getBoundingClientRect","targetLeft","getWindowScrollLeft","targetTop","getWindowScrollTop","preAlign","arrowElement","hostOffset","getOuterWidth","getOuterHeight","right","tooltipWidth","elementWidth","_getViewport","getViewport","viewportWidth","Math","floor","elementRelativeCenter","_getViewport2","position","removeClass","concat","$_ptooltipPosition","addClass","height","viewport","_findSingle","hasClass","Object","keys","length","arg","entries","reduce","acc","_ref","_ref2","_slicedToArray","key","val"],"mappings":"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"}