Skip to content

Commit

Permalink
More tooltip refactoring (#35546)
Browse files Browse the repository at this point in the history
* Tooltip.js: move `shown` check to method

* Tooltip.js: move Popper's creation to method

* Tooltip.js: merge checks before `hide`

* Tooltip.js: minor refactoring on `toggle` method
  • Loading branch information
GeoSot committed Jan 30, 2022
1 parent e1020a4 commit 74f24cd
Showing 1 changed file with 25 additions and 15 deletions.
40 changes: 25 additions & 15 deletions js/src/tooltip.js
Original file line number Diff line number Diff line change
Expand Up @@ -178,14 +178,16 @@ class Tooltip extends BaseComponent {
} else {
context._leave()
}
} else {
if (this._getTipElement().classList.contains(CLASS_NAME_SHOW)) {
this._leave()
return
}

this._enter()
return
}

if (this._isShown()) {
this._leave()
return
}

this._enter()
}

dispose() {
Expand Down Expand Up @@ -234,11 +236,7 @@ class Tooltip extends BaseComponent {
if (this._popper) {
this._popper.update()
} else {
const placement = typeof this._config.placement === 'function' ?
this._config.placement.call(this, tip, this._element) :
this._config.placement
const attachment = AttachmentMap[placement.toUpperCase()]
this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))
this._createPopper(tip)
}

tip.classList.add(CLASS_NAME_SHOW)
Expand Down Expand Up @@ -268,7 +266,7 @@ class Tooltip extends BaseComponent {
}

hide() {
if (!this._popper) {
if (!this._isShown()) {
return
}

Expand All @@ -291,6 +289,7 @@ class Tooltip extends BaseComponent {
this._activeTrigger[TRIGGER_CLICK] = false
this._activeTrigger[TRIGGER_FOCUS] = false
this._activeTrigger[TRIGGER_HOVER] = false
this._isHovered = false

const complete = () => {
if (this._isWithActiveTrigger()) {
Expand All @@ -308,7 +307,6 @@ class Tooltip extends BaseComponent {
}

this._queueCallback(complete, this.tip, this._isAnimated())
this._isHovered = false
}

update() {
Expand Down Expand Up @@ -356,7 +354,7 @@ class Tooltip extends BaseComponent {
setContent(content) {
let isShown = false
if (this.tip) {
isShown = this.tip.classList.contains(CLASS_NAME_SHOW)
isShown = this._isShown()
this.tip.remove()
this.tip = null
}
Expand Down Expand Up @@ -404,6 +402,18 @@ class Tooltip extends BaseComponent {
return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))
}

_isShown() {
return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)
}

_createPopper(tip) {
const placement = typeof this._config.placement === 'function' ?
this._config.placement.call(this, tip, this._element) :
this._config.placement
const attachment = AttachmentMap[placement.toUpperCase()]
this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))
}

_getOffset() {
const { offset } = this._config

Expand Down Expand Up @@ -532,7 +542,7 @@ class Tooltip extends BaseComponent {
}

_enter() {
if (this._getTipElement().classList.contains(CLASS_NAME_SHOW) || this._isHovered) {
if (this._isShown() || this._isHovered) {
this._isHovered = true
return
}
Expand Down

0 comments on commit 74f24cd

Please sign in to comment.