From 6db4781212aa29b7abba22f4d252dfb01faf96c1 Mon Sep 17 00:00:00 2001 From: tjshiu <35056071+tjshiu@users.noreply.github.com> Date: Fri, 1 May 2026 15:56:09 -0700 Subject: [PATCH] refactor(aria/combobox): make input readonly when disabled --- src/aria/simple-combobox/simple-combobox.spec.ts | 7 +++++++ src/aria/simple-combobox/simple-combobox.ts | 1 + .../simple-combobox-autocomplete-disabled-example.ts | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/aria/simple-combobox/simple-combobox.spec.ts b/src/aria/simple-combobox/simple-combobox.spec.ts index 6cd3792efcde..828bcde40831 100644 --- a/src/aria/simple-combobox/simple-combobox.spec.ts +++ b/src/aria/simple-combobox/simple-combobox.spec.ts @@ -547,6 +547,13 @@ describe('Combobox', () => { expect(inputElement.getAttribute('aria-disabled')).toBe('true'); }); + it('should make the input read-only when disabled and softDisabled is true', () => { + fixture.componentInstance.disabled.set(true); + fixture.detectChanges(); + + expect(inputElement.getAttribute('readonly')).toBe(''); + }); + it('should block interactions when disabled', () => { fixture.componentInstance.disabled.set(true); fixture.detectChanges(); diff --git a/src/aria/simple-combobox/simple-combobox.ts b/src/aria/simple-combobox/simple-combobox.ts index a8410b394b24..0aa6f628bfa2 100644 --- a/src/aria/simple-combobox/simple-combobox.ts +++ b/src/aria/simple-combobox/simple-combobox.ts @@ -53,6 +53,7 @@ import type {ComboboxPopup} from './simple-combobox-popup'; '[attr.aria-haspopup]': '_pattern.popupType()', '[attr.tabindex]': 'disabled() && !softDisabled() ? -1 : null', '[attr.disabled]': 'disabled() && !softDisabled() ? "" : null', + '[attr.readonly]': 'disabled() && _pattern.isEditable() ? "" : null', '(keydown)': '_pattern.onKeydown($event)', '(focusin)': '_pattern.onFocusin()', '(focusout)': '_pattern.onFocusout($event)', diff --git a/src/components-examples/aria/simple-combobox/simple-combobox-autocomplete-disabled/simple-combobox-autocomplete-disabled-example.ts b/src/components-examples/aria/simple-combobox/simple-combobox-autocomplete-disabled/simple-combobox-autocomplete-disabled-example.ts index 9eb2955709ad..3742a03b1bac 100644 --- a/src/components-examples/aria/simple-combobox/simple-combobox-autocomplete-disabled/simple-combobox-autocomplete-disabled-example.ts +++ b/src/components-examples/aria/simple-combobox/simple-combobox-autocomplete-disabled/simple-combobox-autocomplete-disabled-example.ts @@ -34,7 +34,7 @@ export class SimpleComboboxAutocompleteDisabledExample { readonly combobox = viewChild(Combobox); popupExpanded = signal(false); - searchString = signal('United States of America'); + searchString = signal('Select a country'); selectedOption = signal([]); /** The query string used to filter the list of countries. */