From ede1f0725d44ea207f117adb02266a110796b3e4 Mon Sep 17 00:00:00 2001 From: Steve Matney Date: Tue, 30 Dec 2025 10:13:28 -0700 Subject: [PATCH] Ensuring styles apply for input labels when using 'slot="label"' (#1757) * Ensuring styles apply for input labels when using 'slot="label"' * Using 'has-slotted' class for codebase consistency * Fleshing out 'has-slotted' label class to relevant form elements * Ensuring label line height uses the correct token; removing unrelated PR changes * Using 'has-label' class instead of 'has-slotted' for labels; applying it with all label content --- .../components/color-picker/color-picker.ts | 9 +++++++- .../src/components/input/input.test.ts | 21 +++++++++++++++++++ .../webawesome/src/components/input/input.ts | 10 ++++++++- .../src/components/radio-group/radio-group.ts | 5 ++++- .../src/components/select/select.ts | 5 ++++- .../src/components/slider/slider.ts | 2 +- .../src/components/textarea/textarea.ts | 10 ++++++++- .../styles/component/form-control.styles.ts | 4 ++-- 8 files changed, 58 insertions(+), 8 deletions(-) diff --git a/packages/webawesome/src/components/color-picker/color-picker.ts b/packages/webawesome/src/components/color-picker/color-picker.ts index ce897d69e..2d1032fd7 100644 --- a/packages/webawesome/src/components/color-picker/color-picker.ts +++ b/packages/webawesome/src/components/color-picker/color-picker.ts @@ -1277,7 +1277,14 @@ export default class WaColorPicker extends WebAwesomeFormAssociatedElement { })} part="trigger-container form-control" > -
+
${this.label}
diff --git a/packages/webawesome/src/components/input/input.test.ts b/packages/webawesome/src/components/input/input.test.ts index e39f05b09..f8bb94cfd 100644 --- a/packages/webawesome/src/components/input/input.test.ts +++ b/packages/webawesome/src/components/input/input.test.ts @@ -48,6 +48,27 @@ describe('', () => { expect(input.title).to.equal('Test'); }); + it('should have label with "has-label" class if label has a slotted element', async () => { + const el = await fixture(html` Name `); + await el.updateComplete; + const label = el.shadowRoot!.querySelector('[part~="form-control-label"]')!; + expect(label.classList.contains('has-label')).to.equal(true); + }); + + it('should have label with "has-label" class if label is provided as an attribute', async () => { + const el = await fixture(html` `); + await el.updateComplete; + const label = el.shadowRoot!.querySelector('[part~="form-control-label"]')!; + expect(label.classList.contains('has-label')).to.equal(true); + }); + + it('should not have "has-label" class on label if no label content is provided', async () => { + const el = await fixture(html` `); + await el.updateComplete; + const label = el.shadowRoot!.querySelector('[part~="form-control-label"]')!; + expect(label.classList.contains('has-label')).to.equal(false); + }); + it('should be disabled with the disabled attribute', async () => { const el = await fixture(html` `); await el.updateComplete; diff --git a/packages/webawesome/src/components/input/input.ts b/packages/webawesome/src/components/input/input.ts index 930b85ee7..a7f9a11da 100644 --- a/packages/webawesome/src/components/input/input.ts +++ b/packages/webawesome/src/components/input/input.ts @@ -342,7 +342,15 @@ export default class WaInput extends WebAwesomeFormAssociatedElement { (typeof this.value === 'number' || (this.value && this.value.length > 0)); return html` -