diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/app/app.css b/adev/src/content/examples/aria/autocomplete/src/basic/app/app.css index 5ba77d21265..ac7e15c187c 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/basic/app/app.css @@ -33,7 +33,7 @@ width: 13rem; font-size: 1rem; border-radius: 0.25rem; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: var(--primary-contrast); outline: none; border: 1px solid var(--quinary-contrast); @@ -111,3 +111,35 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + border: none; + background-color: transparent; + border-radius: 0.25rem; + cursor: pointer; + color: var(--quaternary-contrast); + padding: 0; + margin: 0; + outline: none; + transition: background-color 0.15s ease; +} + +.clear-button:hover { + background-color: color-mix(in srgb, var(--primary-contrast) 5%, transparent); +} + +.clear-button:focus-visible { + outline: 2px solid var(--hot-pink); + outline-offset: -2px; +} + +.clear-icon { + font-size: 1.25rem; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/app/app.html b/adev/src/content/examples/aria/autocomplete/src/basic/app/app.html index 70f87e13574..ae3deab84c0 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/basic/app/app.html @@ -13,6 +13,17 @@ (click)="popupExpanded.set(true)" (focusout)="onBlur()" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/basic/app/app.ts index f94c55b1c01..490d41e29fa 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/basic/app/app.ts @@ -11,6 +11,12 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -37,6 +43,7 @@ export class App { onCommit() { this.commitSelection(); this.popupExpanded.set(false); + this.combobox()?.element.focus(); } private commitSelection() { diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.css b/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.css index 00237755e97..8dba0dcfc9f 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.css @@ -34,7 +34,7 @@ width: 13rem; font-size: 1rem; border-radius: 3rem; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: var(--primary-contrast); outline: none; border: 1px solid var(--quinary-contrast); @@ -112,3 +112,40 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + border: none; + background-color: transparent; + border-radius: 50%; + cursor: pointer; + color: var(--quaternary-contrast); + padding: 0; + margin: 0; + outline: none; + transition: + background-color 0.15s ease, + color 0.15s ease; +} + +.clear-button:hover { + color: var(--primary); + background-color: color-mix(in srgb, var(--primary) 10%, transparent); +} + +.clear-button:focus-visible { + color: var(--primary); + background-color: color-mix(in srgb, var(--primary) 15%, transparent); + outline: 2px solid var(--primary); + outline-offset: -2px; +} + +.clear-icon { + font-size: 1.25rem; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.html b/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.html index e2bce42676a..092a6d1ac34 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.html @@ -13,6 +13,17 @@ (click)="popupExpanded.set(true)" (focusout)="onBlur()" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.ts index fc5c29a32a6..99d47cee520 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/basic/material/app/app.ts @@ -11,6 +11,12 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -37,6 +43,7 @@ export class App { onCommit() { this.commitSelection(); this.popupExpanded.set(false); + this.combobox()?.element.focus(); } private commitSelection() { diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.css b/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.css index 42909193677..dd08034bf89 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.css @@ -35,6 +35,12 @@ display: flex; position: relative; align-items: center; + box-shadow: var(--retro-flat-shadow); + background-color: var(--retro-button-color); +} + +.retro-autocomplete:focus-within { + box-shadow: var(--retro-pressed-shadow); } .material-symbols-outlined { @@ -55,20 +61,14 @@ border-radius: 0; font-family: 'Press Start 2P'; word-spacing: -5px; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: #000; border: none; - box-shadow: var(--retro-flat-shadow); - background-color: var(--retro-button-color); + background-color: transparent; + box-shadow: none; outline: none; } -.autocomplete-input:focus-visible { - outline: none; - transform: translate(1px, 1px); - box-shadow: var(--retro-pressed-shadow); -} - .autocomplete-input::placeholder { color: #000; opacity: 0.7; @@ -133,3 +133,48 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 30px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; + background: var(--win95-gray); + color: var(--win95-shadow); + border-style: solid; + border-width: 1px; + border-color: var(--win95-light) var(--win95-dark-gray) var(--win95-dark-gray) var(--win95-light); + box-shadow: 1px 1px 0 var(--win95-shadow); + cursor: pointer; + padding: 0; + margin: 0; + outline: none; + font-family: 'Press Start 2P'; + font-size: 0.6rem; + user-select: none; +} + +.clear-button:hover { + background: #e0e0e0; + outline: 1px dashed var(--win95-dark-gray); + outline-offset: 1px; +} + +.clear-button:active { + border-color: var(--win95-dark-gray) var(--win95-light) var(--win95-light) var(--win95-dark-gray); + box-shadow: 1px 1px 0 var(--win95-shadow) inset; +} + +.clear-button:focus-visible { + outline: 2px dashed var(--hot-pink); + outline-offset: 4px; +} + +.clear-icon { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.html b/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.html index 09305a17d81..cf0b1ded784 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.html @@ -13,6 +13,15 @@ (click)="popupExpanded.set(true)" (focusout)="onBlur()" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.ts index 928ef15cebc..d582bd67318 100644 --- a/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/basic/retro/app/app.ts @@ -11,6 +11,12 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -37,6 +43,7 @@ export class App { onCommit() { this.commitSelection(); this.popupExpanded.set(false); + this.combobox()?.element.focus(); } private commitSelection() { diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.css b/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.css index 5ba77d21265..ac7e15c187c 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.css @@ -33,7 +33,7 @@ width: 13rem; font-size: 1rem; border-radius: 0.25rem; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: var(--primary-contrast); outline: none; border: 1px solid var(--quinary-contrast); @@ -111,3 +111,35 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + border: none; + background-color: transparent; + border-radius: 0.25rem; + cursor: pointer; + color: var(--quaternary-contrast); + padding: 0; + margin: 0; + outline: none; + transition: background-color 0.15s ease; +} + +.clear-button:hover { + background-color: color-mix(in srgb, var(--primary-contrast) 5%, transparent); +} + +.clear-button:focus-visible { + outline: 2px solid var(--hot-pink); + outline-offset: -2px; +} + +.clear-icon { + font-size: 1.25rem; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.html b/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.html index d7d68d56f7e..0f8b42c5615 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.html @@ -15,6 +15,17 @@ (keydown.arrowup)="navigated.set(true)" [inlineSuggestion]="query() || navigated() ? selectedOption()[0] : undefined" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.ts index 5c9eb0dcf3a..a967c404bb4 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/app/app.ts @@ -11,6 +11,13 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + this.navigated.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -45,6 +52,7 @@ export class App { this.query.set(''); } this.popupExpanded.set(false); + this.combobox()?.element.focus(); } } diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.css b/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.css index 00237755e97..8dba0dcfc9f 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.css @@ -34,7 +34,7 @@ width: 13rem; font-size: 1rem; border-radius: 3rem; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: var(--primary-contrast); outline: none; border: 1px solid var(--quinary-contrast); @@ -112,3 +112,40 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + border: none; + background-color: transparent; + border-radius: 50%; + cursor: pointer; + color: var(--quaternary-contrast); + padding: 0; + margin: 0; + outline: none; + transition: + background-color 0.15s ease, + color 0.15s ease; +} + +.clear-button:hover { + color: var(--primary); + background-color: color-mix(in srgb, var(--primary) 10%, transparent); +} + +.clear-button:focus-visible { + color: var(--primary); + background-color: color-mix(in srgb, var(--primary) 15%, transparent); + outline: 2px solid var(--primary); + outline-offset: -2px; +} + +.clear-icon { + font-size: 1.25rem; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.html b/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.html index f307c227b01..2015b4bd9d6 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.html @@ -15,6 +15,17 @@ (keydown.arrowup)="navigated.set(true)" [inlineSuggestion]="query() || navigated() ? selectedOption()[0] : undefined" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.ts index 20d93170f8e..e3108c8678b 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/material/app/app.ts @@ -11,6 +11,13 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + this.navigated.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -45,6 +52,7 @@ export class App { this.query.set(''); } this.popupExpanded.set(false); + this.combobox()?.element.focus(); } } diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.css b/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.css index 42909193677..dd08034bf89 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.css @@ -35,6 +35,12 @@ display: flex; position: relative; align-items: center; + box-shadow: var(--retro-flat-shadow); + background-color: var(--retro-button-color); +} + +.retro-autocomplete:focus-within { + box-shadow: var(--retro-pressed-shadow); } .material-symbols-outlined { @@ -55,20 +61,14 @@ border-radius: 0; font-family: 'Press Start 2P'; word-spacing: -5px; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: #000; border: none; - box-shadow: var(--retro-flat-shadow); - background-color: var(--retro-button-color); + background-color: transparent; + box-shadow: none; outline: none; } -.autocomplete-input:focus-visible { - outline: none; - transform: translate(1px, 1px); - box-shadow: var(--retro-pressed-shadow); -} - .autocomplete-input::placeholder { color: #000; opacity: 0.7; @@ -133,3 +133,48 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 30px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; + background: var(--win95-gray); + color: var(--win95-shadow); + border-style: solid; + border-width: 1px; + border-color: var(--win95-light) var(--win95-dark-gray) var(--win95-dark-gray) var(--win95-light); + box-shadow: 1px 1px 0 var(--win95-shadow); + cursor: pointer; + padding: 0; + margin: 0; + outline: none; + font-family: 'Press Start 2P'; + font-size: 0.6rem; + user-select: none; +} + +.clear-button:hover { + background: #e0e0e0; + outline: 1px dashed var(--win95-dark-gray); + outline-offset: 1px; +} + +.clear-button:active { + border-color: var(--win95-dark-gray) var(--win95-light) var(--win95-light) var(--win95-dark-gray); + box-shadow: 1px 1px 0 var(--win95-shadow) inset; +} + +.clear-button:focus-visible { + outline: 2px dashed var(--hot-pink); + outline-offset: 4px; +} + +.clear-icon { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.html b/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.html index 2ff04f86414..812d907a5b4 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.html @@ -15,6 +15,15 @@ (keydown.arrowup)="navigated.set(true)" [inlineSuggestion]="query() || navigated() ? selectedOption()[0] : undefined" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.ts index 4915fc80e11..96b044253cb 100644 --- a/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/highlight/retro/app/app.ts @@ -11,6 +11,13 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + this.navigated.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -45,6 +52,7 @@ export class App { this.query.set(''); } this.popupExpanded.set(false); + this.combobox()?.element.focus(); } } diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/app/app.css b/adev/src/content/examples/aria/autocomplete/src/manual/app/app.css index 5ba77d21265..ac7e15c187c 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/manual/app/app.css @@ -33,7 +33,7 @@ width: 13rem; font-size: 1rem; border-radius: 0.25rem; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: var(--primary-contrast); outline: none; border: 1px solid var(--quinary-contrast); @@ -111,3 +111,35 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + border: none; + background-color: transparent; + border-radius: 0.25rem; + cursor: pointer; + color: var(--quaternary-contrast); + padding: 0; + margin: 0; + outline: none; + transition: background-color 0.15s ease; +} + +.clear-button:hover { + background-color: color-mix(in srgb, var(--primary-contrast) 5%, transparent); +} + +.clear-button:focus-visible { + outline: 2px solid var(--hot-pink); + outline-offset: -2px; +} + +.clear-icon { + font-size: 1.25rem; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/app/app.html b/adev/src/content/examples/aria/autocomplete/src/manual/app/app.html index 8bbf29ff983..8532f8f911a 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/manual/app/app.html @@ -12,6 +12,17 @@ [(expanded)]="popupExpanded" (click)="popupExpanded.set(true)" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/manual/app/app.ts index cc4e7f72f2c..a72d13697ca 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/manual/app/app.ts @@ -11,6 +11,12 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -36,6 +42,7 @@ export class App { this.query.set(selected[0]); } this.popupExpanded.set(false); + this.combobox()?.element.focus(); } } diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.css b/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.css index 00237755e97..8dba0dcfc9f 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.css @@ -34,7 +34,7 @@ width: 13rem; font-size: 1rem; border-radius: 3rem; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: var(--primary-contrast); outline: none; border: 1px solid var(--quinary-contrast); @@ -112,3 +112,40 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 2rem; + height: 2rem; + display: flex; + align-items: center; + justify-content: center; + border: none; + background-color: transparent; + border-radius: 50%; + cursor: pointer; + color: var(--quaternary-contrast); + padding: 0; + margin: 0; + outline: none; + transition: + background-color 0.15s ease, + color 0.15s ease; +} + +.clear-button:hover { + color: var(--primary); + background-color: color-mix(in srgb, var(--primary) 10%, transparent); +} + +.clear-button:focus-visible { + color: var(--primary); + background-color: color-mix(in srgb, var(--primary) 15%, transparent); + outline: 2px solid var(--primary); + outline-offset: -2px; +} + +.clear-icon { + font-size: 1.25rem; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.html b/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.html index bebc39187fc..1988ea40178 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.html @@ -12,6 +12,17 @@ [(expanded)]="popupExpanded" (click)="popupExpanded.set(true)" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.ts index 79d043ae3a8..13f62a9e791 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/manual/material/app/app.ts @@ -11,6 +11,12 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -36,6 +42,7 @@ export class App { this.query.set(selected[0]); } this.popupExpanded.set(false); + this.combobox()?.element.focus(); } } diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.css b/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.css index 42909193677..43c68f4fee8 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.css +++ b/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.css @@ -35,6 +35,12 @@ display: flex; position: relative; align-items: center; + box-shadow: var(--retro-flat-shadow); + background-color: var(--retro-button-color); +} + +.retro-autocomplete:focus-within { + box-shadow: var(--retro-pressed-shadow); } .material-symbols-outlined { @@ -55,20 +61,14 @@ border-radius: 0; font-family: 'Press Start 2P'; word-spacing: -5px; - padding: 0.75rem 0.5rem 0.75rem 2.5rem; + padding: 0.75rem 2.5rem 0.75rem 2.5rem; color: #000; border: none; - box-shadow: var(--retro-flat-shadow); - background-color: var(--retro-button-color); + background-color: transparent; + box-shadow: none; outline: none; } -.autocomplete-input:focus-visible { - outline: none; - transform: translate(1px, 1px); - box-shadow: var(--retro-pressed-shadow); -} - .autocomplete-input::placeholder { color: #000; opacity: 0.7; @@ -133,3 +133,48 @@ .check-icon { font-size: 0.9rem; } + +.clear-button { + position: absolute; + right: 0.75rem; + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + background: var(--win95-gray); + color: var(--win95-shadow); + border-style: solid; + border-width: 1px; + border-color: var(--win95-light) var(--win95-dark-gray) var(--win95-dark-gray) var(--win95-light); + box-shadow: 1px 1px 0 var(--win95-shadow); + cursor: pointer; + padding: 0; + margin: 0; + outline: none; + font-family: 'Press Start 2P'; + font-size: 0.6rem; + user-select: none; +} + +.clear-button:hover { + background: #e0e0e0; + outline: 1px dashed var(--win95-dark-gray); + outline-offset: 1px; +} + +.clear-button:active { + border-color: var(--win95-dark-gray) var(--win95-light) var(--win95-light) var(--win95-dark-gray); + box-shadow: 1px 1px 0 var(--win95-shadow) inset; +} + +.clear-button:focus-visible { + outline: 2px dashed var(--hot-pink); + outline-offset: 4px; +} + +.clear-icon { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.html b/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.html index 2db970ae645..d0cdb745074 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.html +++ b/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.html @@ -12,6 +12,15 @@ [(expanded)]="popupExpanded" (click)="popupExpanded.set(true)" /> +
diff --git a/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.ts b/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.ts index d766b47203b..09b6e553fe4 100644 --- a/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.ts +++ b/adev/src/content/examples/aria/autocomplete/src/manual/retro/app/app.ts @@ -11,6 +11,12 @@ import {FormsModule} from '@angular/forms'; imports: [Combobox, ComboboxPopup, ComboboxWidget, Listbox, Option, OverlayModule, FormsModule], }) export class App { + clear() { + this.query.set(''); + this.selectedOption.set([]); + this.popupExpanded.set(false); + } + readonly listbox = viewChild(Listbox); readonly combobox = viewChild(Combobox); @@ -36,6 +42,7 @@ export class App { this.query.set(selected[0]); } this.popupExpanded.set(false); + this.combobox()?.element.focus(); } }