Skip to content

Commit 4046712

Browse files
committed
refactor(aria/combobox): unify combobox and simple-combobox implementations
1 parent bb4f8ec commit 4046712

140 files changed

Lines changed: 2111 additions & 9362 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

goldens/aria/combobox/index.api.md

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -4,76 +4,72 @@
44
55
```ts
66

7-
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
87
import * as _angular_core from '@angular/core';
8+
import { ComboboxPattern } from '@angular/aria/private';
9+
import { ComboboxPopupPattern } from '@angular/aria/private';
10+
import { DeferredContentAware } from '@angular/aria/private';
11+
import * as i1 from '@angular/aria/private';
912
import { OnDestroy } from '@angular/core';
13+
import { OnInit } from '@angular/core';
1014

1115
// @public
12-
export class Combobox<V> {
16+
export class Combobox extends DeferredContentAware implements OnInit {
1317
constructor();
1418
readonly alwaysExpanded: _angular_core.InputSignalWithTransform<boolean, unknown>;
15-
close(): void;
1619
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1720
readonly element: HTMLElement;
18-
readonly expanded: _angular_core.Signal<boolean>;
19-
readonly filterMode: _angular_core.InputSignal<"manual" | "auto-select" | "highlight">;
20-
readonly firstMatch: _angular_core.InputSignal<V | undefined>;
21-
readonly inputElement: _angular_core.Signal<HTMLInputElement | undefined>;
22-
open(): void;
23-
readonly _pattern: ComboboxPattern<any, V>;
24-
readonly popup: _angular_core.Signal<ComboboxPopup<V> | undefined>;
25-
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
26-
protected readonly textDirection: _angular_core.Signal<_angular_cdk_bidi.Direction>;
21+
readonly expanded: _angular_core.ModelSignal<boolean>;
22+
readonly inlineSuggestion: _angular_core.InputSignal<string | undefined>;
2723
// (undocumented)
28-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Combobox<any>, "[ngCombobox]", ["ngCombobox"], { "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "firstMatch": { "alias": "firstMatch"; "required": false; "isSignal": true; }; "alwaysExpanded": { "alias": "alwaysExpanded"; "required": false; "isSignal": true; }; }, {}, ["popup"], never, true, [{ directive: typeof DeferredContentAware; inputs: { "preserveContent": "preserveContent"; }; outputs: {}; }]>;
24+
ngOnInit(): void;
25+
readonly _pattern: ComboboxPattern;
26+
readonly _popup: _angular_core.WritableSignal<ComboboxPopup | undefined>;
27+
_registerPopup(popup: ComboboxPopup): void;
28+
_unregisterPopup(): void;
29+
readonly value: _angular_core.ModelSignal<string>;
30+
// (undocumented)
31+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Combobox, "[ngCombobox]", ["ngCombobox"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "alwaysExpanded": { "alias": "alwaysExpanded"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "inlineSuggestion": { "alias": "inlineSuggestion"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "value": "valueChange"; }, never, never, true, never>;
2932
// (undocumented)
30-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Combobox<any>, never>;
33+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Combobox, never>;
3134
}
3235

3336
// @public
34-
export class ComboboxDialog {
35-
constructor();
37+
export class ComboboxPopup implements OnInit, OnDestroy {
38+
readonly activeDescendant: _angular_core.Signal<string | undefined>;
39+
readonly combobox: _angular_core.InputSignal<Combobox>;
40+
readonly controlTarget: _angular_core.Signal<HTMLElement | undefined>;
3641
// (undocumented)
37-
close(): void;
38-
readonly combobox: Combobox<any>;
39-
readonly element: HTMLDialogElement;
40-
readonly id: _angular_core.InputSignal<string>;
42+
ngOnDestroy(): void;
4143
// (undocumented)
42-
readonly _pattern: ComboboxDialogPattern;
44+
ngOnInit(): void;
45+
readonly _pattern: ComboboxPopupPattern;
46+
readonly popupId: _angular_core.Signal<string | undefined>;
47+
readonly popupType: _angular_core.InputSignal<"listbox" | "tree" | "grid" | "dialog">;
48+
_registerWidget(widget: ComboboxWidget): void;
49+
_unregisterWidget(): void;
50+
readonly _widget: _angular_core.WritableSignal<ComboboxWidget | undefined>;
4351
// (undocumented)
44-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ComboboxDialog, "dialog[ngComboboxDialog]", ["ngComboboxDialog"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof ComboboxPopup; inputs: {}; outputs: {}; }]>;
52+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ComboboxPopup, "ng-template[ngComboboxPopup]", ["ngComboboxPopup"], { "combobox": { "alias": "combobox"; "required": true; "isSignal": true; }; "popupType": { "alias": "popupType"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.DeferredContent; inputs: {}; outputs: {}; }]>;
4553
// (undocumented)
46-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComboboxDialog, never>;
54+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComboboxPopup, never>;
4755
}
4856

4957
// @public
50-
export class ComboboxInput {
58+
export class ComboboxWidget implements OnInit, OnDestroy {
5159
constructor();
52-
readonly combobox: Combobox<any>;
60+
readonly activeDescendant: _angular_core.InputSignal<string | undefined>;
5361
readonly element: HTMLElement;
54-
readonly value: _angular_core.ModelSignal<string>;
55-
// (undocumented)
56-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ComboboxInput, "input[ngComboboxInput]", ["ngComboboxInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
57-
// (undocumented)
58-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComboboxInput, never>;
59-
}
60-
61-
// @public
62-
export class ComboboxPopup<V> {
63-
readonly combobox: Combobox<V> | null;
64-
readonly _controls: _angular_core.WritableSignal<ComboboxListboxControls<any, V> | ComboboxTreeControls<any, V> | ComboboxDialogPattern | undefined>;
6562
// (undocumented)
66-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ComboboxPopup<any>, "[ngComboboxPopup]", ["ngComboboxPopup"], {}, {}, never, never, true, never>;
63+
ngOnDestroy(): void;
6764
// (undocumented)
68-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComboboxPopup<any>, never>;
69-
}
70-
71-
// @public
72-
export class ComboboxPopupContainer {
65+
ngOnInit(): void;
66+
onFocusin(): void;
67+
onFocusout(event: FocusEvent): void;
68+
readonly popupId: _angular_core.WritableSignal<string | undefined>;
7369
// (undocumented)
74-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ComboboxPopupContainer, "ng-template[ngComboboxPopupContainer]", ["ngComboboxPopupContainer"], {}, {}, never, never, true, [{ directive: typeof DeferredContent; inputs: {}; outputs: {}; }]>;
70+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ComboboxWidget, "[ngComboboxWidget]", ["ngComboboxWidget"], { "activeDescendant": { "alias": "activeDescendant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7571
// (undocumented)
76-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComboboxPopupContainer, never>;
72+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComboboxWidget, never>;
7773
}
7874

7975
// (No @packageDocumentation comment for this package)

goldens/aria/listbox/index.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class Listbox<V> implements OnDestroy {
3636
readonly value: _angular_core.ModelSignal<V[]>;
3737
readonly wrap: _angular_core.InputSignalWithTransform<boolean, unknown>;
3838
// (undocumented)
39-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Listbox<any>, "[ngListbox]", ["ngListbox"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "softDisabled": { "alias": "softDisabled"; "required": false; "isSignal": true; }; "focusMode": { "alias": "focusMode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "typeaheadDelay": { "alias": "typeaheadDelay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, [{ directive: typeof ComboboxPopup; inputs: {}; outputs: {}; }]>;
39+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Listbox<any>, "[ngListbox]", ["ngListbox"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "softDisabled": { "alias": "softDisabled"; "required": false; "isSignal": true; }; "focusMode": { "alias": "focusMode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "typeaheadDelay": { "alias": "typeaheadDelay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
4040
// (undocumented)
4141
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Listbox<any>, never>;
4242
}

0 commit comments

Comments
 (0)