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:
authorNathan Walters <nwalters512@gmail.com>2022-07-06 08:15:50 +0300
committerGitHub <noreply@github.com>2022-07-06 08:15:50 +0300
commit3f324eed02f24f817e7d75bc7d37c210644a06ee (patch)
tree838293607d651236c90bbb1a33f2566e01321b23 /js
parent7d0b224df49f75f9860ea1c3a6b54022a359c56f (diff)
Handle non-empty whitespace `textContent` in Tooltip trigger (#36588)
Diffstat (limited to 'js')
-rw-r--r--js/src/tooltip.js2
-rw-r--r--js/tests/unit/tooltip.spec.js19
2 files changed, 20 insertions, 1 deletions
diff --git a/js/src/tooltip.js b/js/src/tooltip.js
index 650bf2b092..f8d97f2408 100644
--- a/js/src/tooltip.js
+++ b/js/src/tooltip.js
@@ -518,7 +518,7 @@ class Tooltip extends BaseComponent {
return
}
- if (!this._element.getAttribute('aria-label') && !this._element.textContent) {
+ if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
this._element.setAttribute('aria-label', title)
}
diff --git a/js/tests/unit/tooltip.spec.js b/js/tests/unit/tooltip.spec.js
index 1431d837dd..c8ab068187 100644
--- a/js/tests/unit/tooltip.spec.js
+++ b/js/tests/unit/tooltip.spec.js
@@ -1358,6 +1358,25 @@ describe('Tooltip', () => {
})
})
+ it('should add the aria-label attribute when element text content is a whitespace string', () => {
+ return new Promise(resolve => {
+ fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="A tooltip"><span> </span></a>'
+
+ const tooltipEl = fixtureEl.querySelector('a')
+ const tooltip = new Tooltip(tooltipEl)
+
+ tooltipEl.addEventListener('shown.bs.tooltip', () => {
+ const tooltipShown = document.querySelector('.tooltip')
+
+ expect(tooltipShown).not.toBeNull()
+ expect(tooltipEl.getAttribute('aria-label')).toEqual('A tooltip')
+ resolve()
+ })
+
+ tooltip.show()
+ })
+ })
+
it('should not add the aria-label attribute if the attribute already exists', () => {
return new Promise(resolve => {
fixtureEl.innerHTML = '<a href="#" rel="tooltip" aria-label="Different label" title="Another tooltip"></a>'