Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorRohit Sharma <rohit2sharma95@gmail.com>2020-12-10 22:06:41 +0300
committerGitHub <noreply@github.com>2020-12-10 22:06:41 +0300
commit4535b09c46b0de464dc7bca435e18bd463791112 (patch)
tree221d60249b12a3c964a42b87f7a93b8c7c2480a6 /js
parent1edec546cb28baf68691f0eb9e43997901359ba5 (diff)
Tooltip - check if tip and its parent node exist in dispose method (#32420)
Diffstat (limited to 'js')
-rw-r--r--js/src/tooltip.js2
-rw-r--r--js/tests/unit/tooltip.spec.js18
2 files changed, 19 insertions, 1 deletions
diff --git a/js/src/tooltip.js b/js/src/tooltip.js
index 4eb4fde0bf..103524b8b4 100644
--- a/js/src/tooltip.js
+++ b/js/src/tooltip.js
@@ -222,7 +222,7 @@ class Tooltip extends BaseComponent {
EventHandler.off(this._element, this.constructor.EVENT_KEY)
EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)
- if (this.tip) {
+ if (this.tip && this.tip.parentNode) {
this.tip.parentNode.removeChild(this.tip)
}
diff --git a/js/tests/unit/tooltip.spec.js b/js/tests/unit/tooltip.spec.js
index 9fc306dfe1..2b20d7e117 100644
--- a/js/tests/unit/tooltip.spec.js
+++ b/js/tests/unit/tooltip.spec.js
@@ -286,6 +286,24 @@ describe('Tooltip', () => {
expect(Tooltip.getInstance(tooltipEl)).toEqual(null)
})
+ it('should destroy a tooltip after it is shown and hidden', () => {
+ fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
+
+ const tooltipEl = fixtureEl.querySelector('a')
+ const tooltip = new Tooltip(tooltipEl)
+
+ tooltipEl.addEventListener('shown.bs.tooltip', () => {
+ tooltip.hide()
+ })
+ tooltipEl.addEventListener('hidden.bs.tooltip', () => {
+ tooltip.dispose()
+ expect(tooltip.tip).toEqual(null)
+ expect(Tooltip.getInstance(tooltipEl)).toEqual(null)
+ })
+
+ tooltip.show()
+ })
+
it('should destroy a tooltip and remove it from the dom', done => {
fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'