From 3fff429ffa5ed5791d3760309793af0cbaaf2c12 Mon Sep 17 00:00:00 2001 From: ChrisLabattD2L Date: Mon, 14 Aug 2023 14:29:40 -0400 Subject: [PATCH] Add tooltip --- attribute-picker.js | 7 ++++++- test/attribute-picker.test.js | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/attribute-picker.js b/attribute-picker.js index ff40736..352c47b 100644 --- a/attribute-picker.js +++ b/attribute-picker.js @@ -1,4 +1,5 @@ import '@brightspace-ui/core/components/colors/colors.js'; +import '@brightspace-ui/core/components/tooltip/tooltip.js'; import './multi-select-list.js'; import './multi-select-list-item.js'; import { css, html, LitElement } from 'lit'; @@ -202,7 +203,7 @@ class AttributePicker extends RtlMixin(Localizer(LitElement)) { const ariaRequired = this.required ? true : undefined; return html` -
+
${this.attributeList.map((item, index) => html`
+ + ${!isValid ? html` + ${this.localize('oneAttributeRequired')} + ` : null} `; } diff --git a/test/attribute-picker.test.js b/test/attribute-picker.test.js index 346d83d..2d09659 100644 --- a/test/attribute-picker.test.js +++ b/test/attribute-picker.test.js @@ -391,6 +391,12 @@ describe('attribute-picker', () => { expect(el._inputFocused).to.be.false; expect(el._initialFocus).to.be.true; + let invalidIcon = el.shadowRoot.querySelector('.d2l-input-text-invalid-icon'); + expect(invalidIcon).to.not.exist; + + let tooltip = el.shadowRoot.querySelector('d2l-tooltip'); + expect(tooltip).to.not.exist; + const pageNumberInput = el.shadowRoot.querySelector('input'); pageNumberInput.focus(); await el.updateComplete; @@ -407,15 +413,23 @@ describe('attribute-picker', () => { expect(attributeContainer.hasAttribute('aria-required')).to.be.true; expect(attributeContainer.hasAttribute('aria-invalid')).to.be.true; - let invalidIcon = el.shadowRoot.querySelector('.d2l-input-text-invalid-icon'); + invalidIcon = el.shadowRoot.querySelector('.d2l-input-text-invalid-icon'); expect(invalidIcon).to.exist; + tooltip = el.shadowRoot.querySelector('d2l-tooltip'); + expect(tooltip).to.exist; + expect(tooltip.innerHTML).to.contain('At least one attribute must be selected'); + el.addAttribute(attributeList[0]); await el.updateComplete; expect(attributeContainer.hasAttribute('aria-invalid')).to.be.false; + invalidIcon = el.shadowRoot.querySelector('.d2l-input-text-invalid-icon'); expect(invalidIcon).to.not.exist; + + tooltip = el.shadowRoot.querySelector('d2l-tooltip'); + expect(tooltip).to.not.exist; }); });