@angular/aria 21.0.4 → 21.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"_list-navigation-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/list-focus/list-focus.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/list-navigation/list-navigation.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, signal, SignalLike, WritableSignalLike} from '../signal-like/signal-like';\n\n/** Represents an item in a collection, such as a listbox option, than may receive focus. */\nexport interface ListFocusItem {\n /** A unique identifier for the item. */\n id: SignalLike<string>;\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** Whether an item is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The index of the item in the list. */\n index: SignalLike<number>;\n}\n\n/** Represents the required inputs for a collection that contains focusable items. */\nexport interface ListFocusInputs<T extends ListFocusItem> {\n /** The focus strategy used by the list. */\n focusMode: SignalLike<'roving' | 'activedescendant'>;\n\n /** Whether the list is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The items in the list. */\n items: SignalLike<T[]>;\n\n /** The active item. */\n activeItem: WritableSignalLike<T | undefined>;\n\n /** Whether disabled items in the list should be focusable. */\n softDisabled: SignalLike<boolean>;\n\n element: SignalLike<HTMLElement | undefined>;\n}\n\n/** Controls focus for a list of items. */\nexport class ListFocus<T extends ListFocusItem> {\n /** The last item that was active. */\n prevActiveItem = signal<T | undefined>(undefined);\n\n /** The index of the last item that was active. */\n prevActiveIndex = computed(() => {\n return this.prevActiveItem() ? this.inputs.items().indexOf(this.prevActiveItem()!) : -1;\n });\n\n /** The current active index in the list. */\n activeIndex = computed(() => {\n return this.inputs.activeItem() ? this.inputs.items().indexOf(this.inputs.activeItem()!) : -1;\n });\n\n constructor(readonly inputs: ListFocusInputs<T>) {}\n\n /** Whether the list is in a disabled state. */\n isListDisabled(): boolean {\n return this.inputs.disabled() || this.inputs.items().every(i => i.disabled());\n }\n\n /** The id of the current active item. */\n getActiveDescendant(): string | undefined {\n if (this.isListDisabled()) {\n return undefined;\n }\n if (this.inputs.focusMode() === 'roving') {\n return undefined;\n }\n return this.inputs.activeItem()?.id() ?? undefined;\n }\n\n /** The tab index for the list. */\n getListTabIndex(): -1 | 0 {\n if (this.isListDisabled()) {\n return 0;\n }\n return this.inputs.focusMode() === 'activedescendant' ? 0 : -1;\n }\n\n /** Returns the tab index for the given item. */\n getItemTabIndex(item: T): -1 | 0 {\n if (this.isListDisabled()) {\n return -1;\n }\n if (this.inputs.focusMode() === 'activedescendant') {\n return -1;\n }\n return this.inputs.activeItem() === item ? 0 : -1;\n }\n\n /** Moves focus to the given item if it is focusable. */\n focus(item: T, opts?: {focusElement?: boolean}): boolean {\n if (this.isListDisabled() || !this.isFocusable(item)) {\n return false;\n }\n\n this.prevActiveItem.set(this.inputs.activeItem());\n this.inputs.activeItem.set(item);\n\n if (opts?.focusElement || opts?.focusElement === undefined) {\n this.inputs.focusMode() === 'roving'\n ? item.element()?.focus()\n : this.inputs.element()?.focus();\n }\n\n return true;\n }\n\n /** Returns true if the given item can be navigated to. */\n isFocusable(item: T): boolean {\n return !item.disabled() || this.inputs.softDisabled();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {SignalLike} from '../signal-like/signal-like';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../list-focus/list-focus';\n\n/** Represents an item in a collection, such as a listbox option, than can be navigated to. */\nexport interface ListNavigationItem extends ListFocusItem {}\n\n/** Represents the required inputs for a collection that has navigable items. */\nexport interface ListNavigationInputs<T extends ListNavigationItem> extends ListFocusInputs<T> {\n /** Whether focus should wrap when navigating. */\n wrap: SignalLike<boolean>;\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** The direction that text is read based on the users locale. */\n textDirection: SignalLike<'rtl' | 'ltr'>;\n}\n\n/** Controls navigation for a list of items. */\nexport class ListNavigation<T extends ListNavigationItem> {\n constructor(readonly inputs: ListNavigationInputs<T> & {focusManager: ListFocus<T>}) {}\n\n /** Navigates to the given item. */\n goto(item?: T, opts?: {focusElement?: boolean}): boolean {\n return item ? this.inputs.focusManager.focus(item, opts) : false;\n }\n\n /** Navigates to the next item in the list. */\n next(opts?: {focusElement?: boolean}): boolean {\n return this._advance(1, opts);\n }\n\n /** Peeks the next item in the list. */\n peekNext(): T | undefined {\n return this._peek(1);\n }\n\n /** Navigates to the previous item in the list. */\n prev(opts?: {focusElement?: boolean}): boolean {\n return this._advance(-1, opts);\n }\n\n /** Peeks the previous item in the list. */\n peekPrev(): T | undefined {\n return this._peek(-1);\n }\n\n /** Navigates to the first item in the list. */\n first(opts?: {focusElement?: boolean}): boolean {\n const item = this.peekFirst();\n return item ? this.goto(item, opts) : false;\n }\n\n /** Navigates to the last item in the list. */\n last(opts?: {focusElement?: boolean}): boolean {\n const item = this.peekLast();\n return item ? this.goto(item, opts) : false;\n }\n\n /** Gets the first focusable item from the given list of items. */\n peekFirst(items: T[] = this.inputs.items()): T | undefined {\n return items.find(i => this.inputs.focusManager.isFocusable(i));\n }\n\n /** Gets the last focusable item from the given list of items. */\n peekLast(items: T[] = this.inputs.items()): T | undefined {\n for (let i = items.length - 1; i >= 0; i--) {\n if (this.inputs.focusManager.isFocusable(items[i])) {\n return items[i];\n }\n }\n return;\n }\n\n /** Advances to the next or previous focusable item in the list based on the given delta. */\n private _advance(delta: 1 | -1, opts?: {focusElement?: boolean}): boolean {\n const item = this._peek(delta);\n return item ? this.goto(item, opts) : false;\n }\n\n /** Peeks the next or previous focusable item in the list based on the given delta. */\n private _peek(delta: 1 | -1): T | undefined {\n const items = this.inputs.items();\n const itemCount = items.length;\n const startIndex = this.inputs.focusManager.activeIndex();\n const step = (i: number) =>\n this.inputs.wrap() ? (i + delta + itemCount) % itemCount : i + delta;\n\n // If wrapping is enabled, this loop ultimately terminates when `i` gets back to `startIndex`\n // in the case that all options are disabled. If wrapping is disabled, the loop terminates\n // when the index goes out of bounds.\n for (let i = step(startIndex); i !== startIndex && i < itemCount && i >= 0; i = step(i)) {\n if (this.inputs.focusManager.isFocusable(items[i])) {\n return items[i];\n }\n }\n\n return;\n }\n}\n"],"names":["ListFocus","inputs","prevActiveItem","signal","undefined","prevActiveIndex","computed","items","indexOf","activeIndex","activeItem","constructor","isListDisabled","disabled","every","i","getActiveDescendant","focusMode","id","getListTabIndex","getItemTabIndex","item","focus","opts","isFocusable","set","focusElement","element","softDisabled","ListNavigation","goto","focusManager","next","_advance","peekNext","_peek","prev","peekPrev","first","peekFirst","last","peekLast","find","length","delta","itemCount","startIndex","step","wrap"],"mappings":"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"}
1
+ {"version":3,"file":"_list-navigation-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/list-focus/list-focus.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/list-navigation/list-navigation.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, signal, SignalLike, WritableSignalLike} from '../signal-like/signal-like';\n\n/** Represents an item in a collection, such as a listbox option, than may receive focus. */\nexport interface ListFocusItem {\n /** A unique identifier for the item. */\n id: SignalLike<string>;\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** Whether an item is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The index of the item in the list. */\n index: SignalLike<number>;\n}\n\n/** Represents the required inputs for a collection that contains focusable items. */\nexport interface ListFocusInputs<T extends ListFocusItem> {\n /** The focus strategy used by the list. */\n focusMode: SignalLike<'roving' | 'activedescendant'>;\n\n /** Whether the list is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The items in the list. */\n items: SignalLike<T[]>;\n\n /** The active item. */\n activeItem: WritableSignalLike<T | undefined>;\n\n /** Whether disabled items in the list should be focusable. */\n softDisabled: SignalLike<boolean>;\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement | undefined>;\n}\n\n/** Controls focus for a list of items. */\nexport class ListFocus<T extends ListFocusItem> {\n /** The last item that was active. */\n prevActiveItem = signal<T | undefined>(undefined);\n\n /** The index of the last item that was active. */\n prevActiveIndex = computed(() => {\n return this.prevActiveItem() ? this.inputs.items().indexOf(this.prevActiveItem()!) : -1;\n });\n\n /** The current active index in the list. */\n activeIndex = computed(() => {\n return this.inputs.activeItem() ? this.inputs.items().indexOf(this.inputs.activeItem()!) : -1;\n });\n\n constructor(readonly inputs: ListFocusInputs<T>) {}\n\n /** Whether the list is in a disabled state. */\n isListDisabled(): boolean {\n return this.inputs.disabled() || this.inputs.items().every(i => i.disabled());\n }\n\n /** The id of the current active item. */\n getActiveDescendant(): string | undefined {\n if (this.isListDisabled()) {\n return undefined;\n }\n if (this.inputs.focusMode() === 'roving') {\n return undefined;\n }\n return this.inputs.activeItem()?.id() ?? undefined;\n }\n\n /** The tab index for the list. */\n getListTabIndex(): -1 | 0 {\n if (this.isListDisabled()) {\n return 0;\n }\n return this.inputs.focusMode() === 'activedescendant' ? 0 : -1;\n }\n\n /** Returns the tab index for the given item. */\n getItemTabIndex(item: T): -1 | 0 {\n if (this.isListDisabled()) {\n return -1;\n }\n if (this.inputs.focusMode() === 'activedescendant') {\n return -1;\n }\n return this.inputs.activeItem() === item ? 0 : -1;\n }\n\n /** Moves focus to the given item if it is focusable. */\n focus(item: T, opts?: {focusElement?: boolean}): boolean {\n if (this.isListDisabled() || !this.isFocusable(item)) {\n return false;\n }\n\n this.prevActiveItem.set(this.inputs.activeItem());\n this.inputs.activeItem.set(item);\n\n if (opts?.focusElement || opts?.focusElement === undefined) {\n this.inputs.focusMode() === 'roving'\n ? item.element()?.focus()\n : this.inputs.element()?.focus();\n }\n\n return true;\n }\n\n /** Returns true if the given item can be navigated to. */\n isFocusable(item: T): boolean {\n return !item.disabled() || this.inputs.softDisabled();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {SignalLike} from '../signal-like/signal-like';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../list-focus/list-focus';\n\n/** Represents an item in a collection, such as a listbox option, than can be navigated to. */\nexport interface ListNavigationItem extends ListFocusItem {}\n\n/** Represents the required inputs for a collection that has navigable items. */\nexport interface ListNavigationInputs<T extends ListNavigationItem> extends ListFocusInputs<T> {\n /** Whether focus should wrap when navigating. */\n wrap: SignalLike<boolean>;\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** The direction that text is read based on the users locale. */\n textDirection: SignalLike<'rtl' | 'ltr'>;\n}\n\n/** Options for list navigation. */\nexport interface ListNavigationOpts<T> {\n /**\n * Whether to focus the item's element.\n * Defaults to true.\n */\n focusElement?: boolean;\n\n /**\n * The list of items to navigate through.\n * Defaults to the list of items from the inputs.\n */\n items?: T[];\n}\n\n/** Controls navigation for a list of items. */\nexport class ListNavigation<T extends ListNavigationItem> {\n constructor(readonly inputs: ListNavigationInputs<T> & {focusManager: ListFocus<T>}) {}\n\n /** Navigates to the given item. */\n goto(item?: T, opts?: ListNavigationOpts<T>): boolean {\n return item ? this.inputs.focusManager.focus(item, opts) : false;\n }\n\n /** Navigates to the next item in the list. */\n next(opts?: ListNavigationOpts<T>): boolean {\n return this._advance(1, opts);\n }\n\n /** Peeks the next item in the list. */\n peekNext(opts?: ListNavigationOpts<T>): T | undefined {\n return this._peek(1, opts);\n }\n\n /** Navigates to the previous item in the list. */\n prev(opts?: ListNavigationOpts<T>): boolean {\n return this._advance(-1, opts);\n }\n\n /** Peeks the previous item in the list. */\n peekPrev(opts?: ListNavigationOpts<T>): T | undefined {\n return this._peek(-1, opts);\n }\n\n /** Navigates to the first item in the list. */\n first(opts?: ListNavigationOpts<T>): boolean {\n const item = this.peekFirst(opts);\n return item ? this.goto(item, opts) : false;\n }\n\n /** Navigates to the last item in the list. */\n last(opts?: ListNavigationOpts<T>): boolean {\n const item = this.peekLast(opts);\n return item ? this.goto(item, opts) : false;\n }\n\n /** Gets the first focusable item from the given list of items. */\n peekFirst(opts?: ListNavigationOpts<T>): T | undefined {\n const items = opts?.items ?? this.inputs.items();\n return items.find(i => this.inputs.focusManager.isFocusable(i));\n }\n\n /** Gets the last focusable item from the given list of items. */\n peekLast(opts?: ListNavigationOpts<T>): T | undefined {\n const items = opts?.items ?? this.inputs.items();\n for (let i = items.length - 1; i >= 0; i--) {\n if (this.inputs.focusManager.isFocusable(items[i])) {\n return items[i];\n }\n }\n return;\n }\n\n /** Advances to the next or previous focusable item in the list based on the given delta. */\n private _advance(delta: 1 | -1, opts?: ListNavigationOpts<T>): boolean {\n const item = this._peek(delta, opts);\n return item ? this.goto(item, opts) : false;\n }\n\n /** Peeks the next or previous focusable item in the list based on the given delta. */\n private _peek(delta: 1 | -1, opts?: ListNavigationOpts<T>): T | undefined {\n const items = opts?.items ?? this.inputs.items();\n const itemCount = items.length;\n const activeItem = this.inputs.focusManager.inputs.activeItem();\n const startIndex =\n opts?.items && activeItem\n ? items.indexOf(activeItem)\n : this.inputs.focusManager.activeIndex();\n\n const step = (i: number) =>\n this.inputs.wrap() ? (i + delta + itemCount) % itemCount : i + delta;\n\n // If wrapping is enabled, this loop ultimately terminates when `i` gets back to `startIndex`\n // in the case that all options are disabled. If wrapping is disabled, the loop terminates\n // when the index goes out of bounds.\n for (let i = step(startIndex); i !== startIndex && i < itemCount && i >= 0; i = step(i)) {\n if (this.inputs.focusManager.isFocusable(items[i])) {\n return items[i];\n }\n }\n\n return;\n }\n}\n"],"names":["ListFocus","inputs","prevActiveItem","signal","undefined","prevActiveIndex","computed","items","indexOf","activeIndex","activeItem","constructor","isListDisabled","disabled","every","i","getActiveDescendant","focusMode","id","getListTabIndex","getItemTabIndex","item","focus","opts","isFocusable","set","focusElement","element","softDisabled","ListNavigation","goto","focusManager","next","_advance","peekNext","_peek","prev","peekPrev","first","peekFirst","last","peekLast","find","length","delta","itemCount","startIndex","step","wrap"],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ import { signal, computed } from './_signal-like-chunk.mjs';
2
+
3
+ class ListSelection {
4
+ inputs;
5
+ rangeStartIndex = signal(0);
6
+ rangeEndIndex = signal(0);
7
+ selectedItems = computed(() => this.inputs.items().filter(item => this.inputs.values().includes(item.value())));
8
+ constructor(inputs) {
9
+ this.inputs = inputs;
10
+ }
11
+ select(item, opts = {
12
+ anchor: true
13
+ }) {
14
+ item = item ?? this.inputs.focusManager.inputs.activeItem();
15
+ if (!item || item.disabled() || !item.selectable() || !this.inputs.focusManager.isFocusable(item) || this.inputs.values().includes(item.value())) {
16
+ return;
17
+ }
18
+ if (!this.inputs.multi()) {
19
+ this.deselectAll();
20
+ }
21
+ const index = this.inputs.items().findIndex(i => i === item);
22
+ if (opts.anchor) {
23
+ this.beginRangeSelection(index);
24
+ }
25
+ this.inputs.values.update(values => values.concat(item.value()));
26
+ }
27
+ deselect(item) {
28
+ item = item ?? this.inputs.focusManager.inputs.activeItem();
29
+ if (item && !item.disabled() && item.selectable()) {
30
+ this.inputs.values.update(values => values.filter(value => value !== item.value()));
31
+ }
32
+ }
33
+ toggle(item) {
34
+ item = item ?? this.inputs.focusManager.inputs.activeItem();
35
+ if (item) {
36
+ this.inputs.values().includes(item.value()) ? this.deselect(item) : this.select(item);
37
+ }
38
+ }
39
+ toggleOne() {
40
+ const item = this.inputs.focusManager.inputs.activeItem();
41
+ if (item) {
42
+ this.inputs.values().includes(item.value()) ? this.deselect() : this.selectOne();
43
+ }
44
+ }
45
+ selectAll() {
46
+ if (!this.inputs.multi()) {
47
+ return;
48
+ }
49
+ for (const item of this.inputs.items()) {
50
+ this.select(item, {
51
+ anchor: false
52
+ });
53
+ }
54
+ this.beginRangeSelection();
55
+ }
56
+ deselectAll() {
57
+ for (const value of this.inputs.values()) {
58
+ const item = this.inputs.items().find(i => i.value() === value);
59
+ item ? this.deselect(item) : this.inputs.values.update(values => values.filter(v => v !== value));
60
+ }
61
+ }
62
+ toggleAll() {
63
+ const selectableValues = this.inputs.items().filter(i => !i.disabled() && i.selectable() && this.inputs.focusManager.isFocusable(i)).map(i => i.value());
64
+ selectableValues.every(i => this.inputs.values().includes(i)) ? this.deselectAll() : this.selectAll();
65
+ }
66
+ selectOne() {
67
+ const item = this.inputs.focusManager.inputs.activeItem();
68
+ if (item && (item.disabled() || !item.selectable())) {
69
+ return;
70
+ }
71
+ this.deselectAll();
72
+ if (this.inputs.values().length > 0 && !this.inputs.multi()) {
73
+ return;
74
+ }
75
+ this.select();
76
+ }
77
+ selectRange(opts = {
78
+ anchor: true
79
+ }) {
80
+ const isStartOfRange = this.inputs.focusManager.prevActiveIndex() === this.rangeStartIndex();
81
+ if (isStartOfRange && opts.anchor) {
82
+ this.beginRangeSelection(this.inputs.focusManager.prevActiveIndex());
83
+ }
84
+ const itemsInRange = this._getItemsFromIndex(this.rangeStartIndex());
85
+ const itemsOutOfRange = this._getItemsFromIndex(this.rangeEndIndex()).filter(i => !itemsInRange.includes(i));
86
+ for (const item of itemsOutOfRange) {
87
+ this.deselect(item);
88
+ }
89
+ for (const item of itemsInRange) {
90
+ this.select(item, {
91
+ anchor: false
92
+ });
93
+ }
94
+ if (itemsInRange.length) {
95
+ const item = itemsInRange.pop();
96
+ const index = this.inputs.items().findIndex(i => i === item);
97
+ this.rangeEndIndex.set(index);
98
+ }
99
+ }
100
+ beginRangeSelection(index = this.inputs.focusManager.activeIndex()) {
101
+ this.rangeStartIndex.set(index);
102
+ this.rangeEndIndex.set(index);
103
+ }
104
+ _getItemsFromIndex(index) {
105
+ if (index === -1) {
106
+ return [];
107
+ }
108
+ const upper = Math.max(this.inputs.focusManager.activeIndex(), index);
109
+ const lower = Math.min(this.inputs.focusManager.activeIndex(), index);
110
+ const items = [];
111
+ for (let i = lower; i <= upper; i++) {
112
+ items.push(this.inputs.items()[i]);
113
+ }
114
+ if (this.inputs.focusManager.activeIndex() < index) {
115
+ return items.reverse();
116
+ }
117
+ return items;
118
+ }
119
+ }
120
+
121
+ class ListTypeahead {
122
+ inputs;
123
+ timeout;
124
+ focusManager;
125
+ isTyping = computed(() => this._query().length > 0);
126
+ _query = signal('');
127
+ _startIndex = signal(undefined);
128
+ constructor(inputs) {
129
+ this.inputs = inputs;
130
+ this.focusManager = inputs.focusManager;
131
+ }
132
+ search(char) {
133
+ if (char.length !== 1) {
134
+ return false;
135
+ }
136
+ if (!this.isTyping() && char === ' ') {
137
+ return false;
138
+ }
139
+ if (this._startIndex() === undefined) {
140
+ this._startIndex.set(this.focusManager.activeIndex());
141
+ }
142
+ clearTimeout(this.timeout);
143
+ this._query.update(q => q + char.toLowerCase());
144
+ const item = this._getItem();
145
+ if (item) {
146
+ this.focusManager.focus(item);
147
+ }
148
+ this.timeout = setTimeout(() => {
149
+ this._query.set('');
150
+ this._startIndex.set(undefined);
151
+ }, this.inputs.typeaheadDelay());
152
+ return true;
153
+ }
154
+ _getItem() {
155
+ const items = this.focusManager.inputs.items();
156
+ const itemCount = items.length;
157
+ const startIndex = this._startIndex();
158
+ for (let i = 0; i < itemCount; i++) {
159
+ const index = (startIndex + 1 + i) % itemCount;
160
+ const item = items[index];
161
+ if (this.focusManager.isFocusable(item) && item.searchTerm().toLowerCase().startsWith(this._query())) {
162
+ return item;
163
+ }
164
+ }
165
+ return undefined;
166
+ }
167
+ }
168
+
169
+ export { ListSelection, ListTypeahead };
170
+ //# sourceMappingURL=_list-typeahead-chunk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_list-typeahead-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/list-selection/list-selection.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/behaviors/list-typeahead/list-typeahead.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, signal, SignalLike, WritableSignalLike} from '../signal-like/signal-like';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../list-focus/list-focus';\n\n/** Represents an item in a collection, such as a listbox option, that can be selected. */\nexport interface ListSelectionItem<V> extends ListFocusItem {\n /** The value of the item. */\n value: SignalLike<V>;\n\n /** Whether the item is selectable. */\n selectable: SignalLike<boolean>;\n}\n\n/** Represents the required inputs for a collection that contains selectable items. */\nexport interface ListSelectionInputs<T extends ListSelectionItem<V>, V> extends ListFocusInputs<T> {\n /** Whether multiple items in the list can be selected at once. */\n multi: SignalLike<boolean>;\n\n /** The current value of the list selection. */\n values: WritableSignalLike<V[]>;\n\n /** The selection strategy used by the list. */\n selectionMode: SignalLike<'follow' | 'explicit'>;\n}\n\n/** Controls selection for a list of items. */\nexport class ListSelection<T extends ListSelectionItem<V>, V> {\n /** The start index to use for range selection. */\n rangeStartIndex = signal<number>(0);\n\n /** The end index to use for range selection. */\n rangeEndIndex = signal<number>(0);\n\n /** The currently selected items. */\n selectedItems = computed(() =>\n this.inputs.items().filter(item => this.inputs.values().includes(item.value())),\n );\n\n constructor(readonly inputs: ListSelectionInputs<T, V> & {focusManager: ListFocus<T>}) {}\n\n /** Selects the item at the current active index. */\n select(item?: ListSelectionItem<V>, opts = {anchor: true}) {\n item = item ?? (this.inputs.focusManager.inputs.activeItem() as ListSelectionItem<V>);\n\n if (\n !item ||\n item.disabled() ||\n !item.selectable() ||\n !this.inputs.focusManager.isFocusable(item as T) ||\n this.inputs.values().includes(item.value())\n ) {\n return;\n }\n\n if (!this.inputs.multi()) {\n this.deselectAll();\n }\n\n const index = this.inputs.items().findIndex(i => i === item);\n if (opts.anchor) {\n this.beginRangeSelection(index);\n }\n this.inputs.values.update(values => values.concat(item.value()));\n }\n\n /** Deselects the item at the current active index. */\n deselect(item?: ListSelectionItem<V>) {\n item = item ?? this.inputs.focusManager.inputs.activeItem();\n\n if (item && !item.disabled() && item.selectable()) {\n this.inputs.values.update(values => values.filter(value => value !== item.value()));\n }\n }\n\n /** Toggles the item at the current active index. */\n toggle(item?: ListSelectionItem<V>) {\n item = item ?? this.inputs.focusManager.inputs.activeItem();\n if (item) {\n this.inputs.values().includes(item.value()) ? this.deselect(item) : this.select(item);\n }\n }\n\n /** Toggles only the item at the current active index. */\n toggleOne() {\n const item = this.inputs.focusManager.inputs.activeItem();\n if (item) {\n this.inputs.values().includes(item.value()) ? this.deselect() : this.selectOne();\n }\n }\n\n /** Selects all items in the list. */\n selectAll() {\n if (!this.inputs.multi()) {\n return; // Should we log a warning?\n }\n\n for (const item of this.inputs.items()) {\n this.select(item, {anchor: false});\n }\n\n this.beginRangeSelection();\n }\n\n /** Deselects all items in the list. */\n deselectAll() {\n // If an item is not in the list, it forcefully gets deselected.\n // This actually creates a bug for the following edge case:\n //\n // Setup: An item is not in the list (maybe it's lazily loaded), and it is disabled & selected.\n // Expected: If deselectAll() is called, it should NOT get deselected (because it is disabled).\n // Actual: Calling deselectAll() will still deselect the item.\n //\n // Why? Because we can't check if the item is disabled if it's not in the list.\n //\n // Alternatively, we could NOT deselect items that are not in the list, but this has the\n // inverse (and more common) effect of keeping enabled items selected when they aren't in the\n // list.\n\n for (const value of this.inputs.values()) {\n const item = this.inputs.items().find(i => i.value() === value);\n\n item\n ? this.deselect(item)\n : this.inputs.values.update(values => values.filter(v => v !== value));\n }\n }\n\n /**\n * Selects all items in the list or deselects all\n * items in the list if all items are already selected.\n */\n toggleAll() {\n const selectableValues = this.inputs\n .items()\n .filter(i => !i.disabled() && i.selectable() && this.inputs.focusManager.isFocusable(i))\n .map(i => i.value());\n\n selectableValues.every(i => this.inputs.values().includes(i))\n ? this.deselectAll()\n : this.selectAll();\n }\n\n /** Sets the selection to only the current active item. */\n selectOne() {\n const item = this.inputs.focusManager.inputs.activeItem();\n if (item && (item.disabled() || !item.selectable())) {\n return;\n }\n\n this.deselectAll();\n\n if (this.inputs.values().length > 0 && !this.inputs.multi()) {\n return;\n }\n\n this.select();\n }\n\n /**\n * Selects all items in the list up to the anchor item.\n *\n * Deselects all items that were previously within the\n * selected range that are now outside of the selected range\n */\n selectRange(opts = {anchor: true}) {\n const isStartOfRange = this.inputs.focusManager.prevActiveIndex() === this.rangeStartIndex();\n\n if (isStartOfRange && opts.anchor) {\n this.beginRangeSelection(this.inputs.focusManager.prevActiveIndex());\n }\n\n const itemsInRange = this._getItemsFromIndex(this.rangeStartIndex());\n const itemsOutOfRange = this._getItemsFromIndex(this.rangeEndIndex()).filter(\n i => !itemsInRange.includes(i),\n );\n\n for (const item of itemsOutOfRange) {\n this.deselect(item);\n }\n\n for (const item of itemsInRange) {\n this.select(item, {anchor: false});\n }\n\n if (itemsInRange.length) {\n const item = itemsInRange.pop();\n const index = this.inputs.items().findIndex(i => i === item);\n this.rangeEndIndex.set(index);\n }\n }\n\n /** Marks the given index as the start of a range selection. */\n beginRangeSelection(index: number = this.inputs.focusManager.activeIndex()) {\n this.rangeStartIndex.set(index);\n this.rangeEndIndex.set(index);\n }\n\n /** Returns the items in the list starting from the given index. */\n private _getItemsFromIndex(index: number) {\n if (index === -1) {\n return [];\n }\n\n const upper = Math.max(this.inputs.focusManager.activeIndex(), index);\n const lower = Math.min(this.inputs.focusManager.activeIndex(), index);\n\n const items = [];\n for (let i = lower; i <= upper; i++) {\n items.push(this.inputs.items()[i]);\n }\n\n if (this.inputs.focusManager.activeIndex() < index) {\n return items.reverse();\n }\n\n return items;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, signal, SignalLike} from '../signal-like/signal-like';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../list-focus/list-focus';\n\n/**\n * Represents an item in a collection, such as a listbox option, than can be navigated to by\n * typeahead.\n */\nexport interface ListTypeaheadItem extends ListFocusItem {\n /** The text used by the typeahead search. */\n searchTerm: SignalLike<string>;\n}\n\n/**\n * Represents the required inputs for a collection that contains items that can be navigated to by\n * typeahead.\n */\nexport interface ListTypeaheadInputs<T extends ListTypeaheadItem> extends ListFocusInputs<T> {\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay: SignalLike<number>;\n}\n\n/** Controls typeahead for a list of items. */\nexport class ListTypeahead<T extends ListTypeaheadItem> {\n /** A reference to the timeout for resetting the typeahead search. */\n timeout?: ReturnType<typeof setTimeout> | undefined;\n\n /** The focus controller of the parent list. */\n focusManager: ListFocus<T>;\n\n /** Whether the user is actively typing a typeahead search query. */\n isTyping = computed(() => this._query().length > 0);\n\n /** Keeps track of the characters that typeahead search is being called with. */\n private _query = signal('');\n\n /** The index where that the typeahead search was initiated from. */\n private _startIndex = signal<number | undefined>(undefined);\n\n constructor(readonly inputs: ListTypeaheadInputs<T> & {focusManager: ListFocus<T>}) {\n this.focusManager = inputs.focusManager;\n }\n\n /** Performs a typeahead search, appending the given character to the search string. */\n search(char: string): boolean {\n if (char.length !== 1) {\n return false;\n }\n\n if (!this.isTyping() && char === ' ') {\n return false;\n }\n\n if (this._startIndex() === undefined) {\n this._startIndex.set(this.focusManager.activeIndex());\n }\n\n clearTimeout(this.timeout);\n this._query.update(q => q + char.toLowerCase());\n const item = this._getItem();\n\n if (item) {\n this.focusManager.focus(item);\n }\n\n this.timeout = setTimeout(() => {\n this._query.set('');\n this._startIndex.set(undefined);\n }, this.inputs.typeaheadDelay());\n\n return true;\n }\n\n /**\n * Returns the first item whose search term matches the\n * current query starting from the the current anchor index.\n */\n private _getItem() {\n const items = this.focusManager.inputs.items();\n const itemCount = items.length;\n const startIndex = this._startIndex()!;\n\n for (let i = 0; i < itemCount; i++) {\n const index = (startIndex + 1 + i) % itemCount;\n const item = items[index];\n\n if (\n this.focusManager.isFocusable(item) &&\n item.searchTerm().toLowerCase().startsWith(this._query())\n ) {\n return item;\n }\n }\n\n return undefined;\n }\n}\n"],"names":["ListSelection","inputs","rangeStartIndex","signal","rangeEndIndex","selectedItems","computed","items","filter","item","values","includes","value","constructor","select","opts","anchor","focusManager","activeItem","disabled","selectable","isFocusable","multi","deselectAll","index","findIndex","i","beginRangeSelection","update","concat","deselect","toggle","toggleOne","selectOne","selectAll","find","v","toggleAll","selectableValues","map","every","length","selectRange","isStartOfRange","prevActiveIndex","itemsInRange","_getItemsFromIndex","itemsOutOfRange","pop","set","activeIndex","upper","Math","max","lower","min","push","reverse","ListTypeahead","timeout","isTyping","_query","_startIndex","undefined","search","char","clearTimeout","q","toLowerCase","_getItem","focus","setTimeout","typeaheadDelay","itemCount","startIndex","searchTerm","startsWith"],"mappings":"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"}
@@ -45,7 +45,9 @@ class ToolbarPattern {
45
45
  return;
46
46
  }
47
47
  if (currGroup !== nextGroup) {
48
- this.listBehavior.goto(this.listBehavior.navigationBehavior.peekFirst(currGroup.inputs.items()));
48
+ this.listBehavior.goto(this.listBehavior.navigationBehavior.peekFirst({
49
+ items: currGroup.inputs.items()
50
+ }));
49
51
  return;
50
52
  }
51
53
  this.listBehavior.next();
@@ -57,7 +59,9 @@ class ToolbarPattern {
57
59
  return;
58
60
  }
59
61
  if (currGroup !== nextGroup) {
60
- this.listBehavior.goto(this.listBehavior.navigationBehavior.peekLast(currGroup.inputs.items()));
62
+ this.listBehavior.goto(this.listBehavior.navigationBehavior.peekLast({
63
+ items: currGroup.inputs.items()
64
+ }));
61
65
  return;
62
66
  }
63
67
  this.listBehavior.prev();
@@ -100,7 +104,9 @@ class ToolbarPattern {
100
104
  this._goto(event);
101
105
  }
102
106
  setDefaultState() {
103
- const firstItem = this.listBehavior.navigationBehavior.peekFirst(this.inputs.items());
107
+ const firstItem = this.listBehavior.navigationBehavior.peekFirst({
108
+ items: this.inputs.items()
109
+ });
104
110
  if (firstItem) {
105
111
  this.inputs.activeItem.set(firstItem);
106
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"_toolbar-widget-group-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {List, ListInputs} from '../behaviors/list/list';\nimport {ToolbarWidgetPattern} from './toolbar-widget';\n\n/** Represents the required inputs for a toolbar. */\nexport type ToolbarInputs<V> = Omit<\n ListInputs<ToolbarWidgetPattern<V>, V>,\n 'multi' | 'typeaheadDelay' | 'selectionMode' | 'focusMode'\n> & {\n /** A function that returns the toolbar item associated with a given element. */\n getItem: (e: Element) => ToolbarWidgetPattern<V> | undefined;\n};\n\n/** Controls the state of a toolbar. */\nexport class ToolbarPattern<V> {\n /** The list behavior for the toolbar. */\n readonly listBehavior: List<ToolbarWidgetPattern<V>, V>;\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether disabled items in the group should be focusable. */\n readonly softDisabled: SignalLike<boolean>;\n\n /** Whether the toolbar is disabled. */\n readonly disabled = computed(() => this.listBehavior.disabled());\n\n /** The tab index of the toolbar (if using activedescendant). */\n readonly tabIndex = computed(() => this.listBehavior.tabIndex());\n\n /** The id of the current active widget (if using activedescendant). */\n readonly activeDescendant = computed(() => this.listBehavior.activeDescendant());\n\n /** The currently active item in the toolbar. */\n readonly activeItem = () => this.listBehavior.inputs.activeItem();\n\n /** The key used to navigate to the previous widget. */\n private readonly _prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next widget. */\n private readonly _nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The alternate key used to navigate to the previous widget. */\n private readonly _altPrevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n }\n return 'ArrowUp';\n });\n\n /** The alternate key used to navigate to the next widget. */\n private readonly _altNextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n }\n return 'ArrowDown';\n });\n\n /** The keydown event manager for the toolbar. */\n private readonly _keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n return manager\n .on(this._nextKey, () => this.listBehavior.next())\n .on(this._prevKey, () => this.listBehavior.prev())\n .on(this._altNextKey, () => this._groupNext())\n .on(this._altPrevKey, () => this._groupPrev())\n .on(' ', () => this.select())\n .on('Enter', () => this.select())\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last());\n });\n\n /** Navigates to the next widget in a widget group. */\n private _groupNext() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekNext()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekFirst(currGroup.inputs.items())!,\n );\n\n return;\n }\n\n this.listBehavior.next();\n }\n\n /** Navigates to the previous widget in a widget group. */\n private _groupPrev() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekPrev()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekLast(currGroup.inputs.items())!,\n );\n\n return;\n }\n\n this.listBehavior.prev();\n }\n\n /** Navigates to the widget targeted by a pointer event. */\n private _goto(e: MouseEvent) {\n const item = this.inputs.getItem(e.target as Element);\n\n if (item) {\n this.listBehavior.goto(item);\n this.select();\n }\n }\n\n select() {\n const group = this.inputs.activeItem()?.group();\n\n if (!group?.multi()) {\n group?.inputs.items().forEach(i => this.listBehavior.deselect(i));\n }\n\n this.listBehavior.toggle();\n }\n\n constructor(readonly inputs: ToolbarInputs<V>) {\n this.orientation = inputs.orientation;\n this.softDisabled = inputs.softDisabled;\n\n this.listBehavior = new List({\n ...inputs,\n multi: () => true,\n focusMode: () => 'roving',\n selectionMode: () => 'explicit',\n typeaheadDelay: () => 0, // Toolbar widgets do not support typeahead.\n });\n }\n\n /** Handles keydown events for the toolbar. */\n onKeydown(event: KeyboardEvent) {\n if (this.disabled()) return;\n this._keydown().handle(event);\n }\n\n onPointerdown(event: PointerEvent) {\n event.preventDefault();\n }\n\n /** Handles click events for the toolbar. */\n onClick(event: MouseEvent) {\n if (this.disabled()) return;\n this._goto(event);\n }\n\n /**\n * Sets the toolbar to its default initial state.\n *\n * Sets the active index to the selected widget if one exists and is focusable.\n * Otherwise, sets the active index to the first focusable widget.\n */\n setDefaultState() {\n const firstItem = this.listBehavior.navigationBehavior.peekFirst(this.inputs.items());\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Validates the state of the toolbar and returns a list of accessibility violations. */\n validate(): string[] {\n const violations: string[] = [];\n return violations;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {SignalLike, computed} from '../behaviors/signal-like/signal-like';\nimport {ListItem} from '../behaviors/list/list';\nimport type {ToolbarPattern} from './toolbar';\nimport {ToolbarWidgetGroupPattern} from './toolbar-widget-group';\n\n/** Represents the required inputs for a toolbar widget in a toolbar. */\nexport interface ToolbarWidgetInputs<V> extends Omit<\n ListItem<V>,\n 'searchTerm' | 'index' | 'selectable'\n> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V>>;\n\n /** A reference to the parent widget group. */\n group: SignalLike<ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined>;\n}\n\nexport class ToolbarWidgetPattern<V> implements ListItem<V> {\n /** A unique identifier for the widget. */\n readonly id = () => this.inputs.id();\n\n /** The html element that should receive focus. */\n readonly element = () => this.inputs.element();\n\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled() || this.group()?.disabled() || false;\n\n /** A reference to the parent toolbar. */\n readonly group = () => this.inputs.group();\n\n /** A reference to the toolbar containing the widget. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** The tabindex of the widget. */\n readonly tabIndex = computed(() => this.toolbar().listBehavior.getItemTabindex(this));\n\n /** The text used by the typeahead search. */\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n\n /** The value associated with the widget. */\n readonly value = () => this.inputs.value();\n\n /** Whether the widget is selectable. */\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n\n /** The position of the widget within the toolbar. */\n readonly index = computed(() => this.toolbar().inputs.items().indexOf(this) ?? -1);\n\n /** Whether the widget is selected (only relevant in a selection group). */\n readonly selected = computed(() =>\n this.toolbar().listBehavior.inputs.values().includes(this.value()),\n );\n\n /** Whether the widget is currently the active one (focused). */\n readonly active: SignalLike<boolean> = computed(() => this.toolbar().activeItem() === this);\n\n constructor(readonly inputs: ToolbarWidgetInputs<V>) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ListItem} from '../behaviors/list/list';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\nimport type {ToolbarPattern} from './toolbar';\n\n/** Represents the required inputs for a toolbar widget group. */\nexport interface ToolbarWidgetGroupInputs<T extends ListItem<V>, V> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V> | undefined>;\n\n /** Whether the widget group is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The list of items within the widget group. */\n items: SignalLike<T[]>;\n\n /** Whether the group allows multiple widgets to be selected. */\n multi: SignalLike<boolean>;\n}\n\n/** A group of widgets within a toolbar that provides nested navigation. */\nexport class ToolbarWidgetGroupPattern<T extends ListItem<V>, V> {\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** A reference to the parent toolbar. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** Whether the group allows multiple widgets to be selected. */\n readonly multi = () => this.inputs.multi();\n\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n readonly value = () => '' as V; // Unused because toolbar does not support selection.\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n readonly element = () => undefined; // Unused because toolbar does not focus the group element.\n\n constructor(readonly inputs: ToolbarWidgetGroupInputs<T, V>) {}\n}\n"],"names":["ToolbarPattern","inputs","listBehavior","orientation","softDisabled","disabled","computed","tabIndex","activeDescendant","activeItem","_prevKey","textDirection","_nextKey","_altPrevKey","_altNextKey","_keydown","manager","KeyboardEventManager","on","next","prev","_groupNext","_groupPrev","select","first","last","currGroup","group","nextGroup","navigationBehavior","peekNext","goto","peekFirst","items","peekPrev","peekLast","_goto","e","item","getItem","target","multi","forEach","i","deselect","toggle","constructor","List","focusMode","selectionMode","typeaheadDelay","onKeydown","event","handle","onPointerdown","preventDefault","onClick","setDefaultState","firstItem","set","validate","violations","ToolbarWidgetPattern","id","element","toolbar","getItemTabindex","searchTerm","value","selectable","index","indexOf","selected","values","includes","active","ToolbarWidgetGroupPattern","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"_toolbar-widget-group-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/toolbar/toolbar-widget-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {List, ListInputs} from '../behaviors/list/list';\nimport {ToolbarWidgetPattern} from './toolbar-widget';\n\n/** Represents the required inputs for a toolbar. */\nexport type ToolbarInputs<V> = Omit<\n ListInputs<ToolbarWidgetPattern<V>, V>,\n 'multi' | 'typeaheadDelay' | 'selectionMode' | 'focusMode'\n> & {\n /** A function that returns the toolbar item associated with a given element. */\n getItem: (e: Element) => ToolbarWidgetPattern<V> | undefined;\n};\n\n/** Controls the state of a toolbar. */\nexport class ToolbarPattern<V> {\n /** The list behavior for the toolbar. */\n readonly listBehavior: List<ToolbarWidgetPattern<V>, V>;\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether disabled items in the group should be focusable. */\n readonly softDisabled: SignalLike<boolean>;\n\n /** Whether the toolbar is disabled. */\n readonly disabled = computed(() => this.listBehavior.disabled());\n\n /** The tab index of the toolbar (if using activedescendant). */\n readonly tabIndex = computed(() => this.listBehavior.tabIndex());\n\n /** The id of the current active widget (if using activedescendant). */\n readonly activeDescendant = computed(() => this.listBehavior.activeDescendant());\n\n /** The currently active item in the toolbar. */\n readonly activeItem = () => this.listBehavior.inputs.activeItem();\n\n /** The key used to navigate to the previous widget. */\n private readonly _prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next widget. */\n private readonly _nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The alternate key used to navigate to the previous widget. */\n private readonly _altPrevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n }\n return 'ArrowUp';\n });\n\n /** The alternate key used to navigate to the next widget. */\n private readonly _altNextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n }\n return 'ArrowDown';\n });\n\n /** The keydown event manager for the toolbar. */\n private readonly _keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n return manager\n .on(this._nextKey, () => this.listBehavior.next())\n .on(this._prevKey, () => this.listBehavior.prev())\n .on(this._altNextKey, () => this._groupNext())\n .on(this._altPrevKey, () => this._groupPrev())\n .on(' ', () => this.select())\n .on('Enter', () => this.select())\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last());\n });\n\n /** Navigates to the next widget in a widget group. */\n private _groupNext() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekNext()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekFirst({\n items: currGroup.inputs.items(),\n })!,\n );\n\n return;\n }\n\n this.listBehavior.next();\n }\n\n /** Navigates to the previous widget in a widget group. */\n private _groupPrev() {\n const currGroup = this.inputs.activeItem()?.group();\n const nextGroup = this.listBehavior.navigationBehavior.peekPrev()?.group();\n\n if (!currGroup) {\n return;\n }\n\n if (currGroup !== nextGroup) {\n this.listBehavior.goto(\n this.listBehavior.navigationBehavior.peekLast({\n items: currGroup.inputs.items(),\n })!,\n );\n\n return;\n }\n\n this.listBehavior.prev();\n }\n\n /** Navigates to the widget targeted by a pointer event. */\n private _goto(e: MouseEvent) {\n const item = this.inputs.getItem(e.target as Element);\n\n if (item) {\n this.listBehavior.goto(item);\n this.select();\n }\n }\n\n select() {\n const group = this.inputs.activeItem()?.group();\n\n if (!group?.multi()) {\n group?.inputs.items().forEach(i => this.listBehavior.deselect(i));\n }\n\n this.listBehavior.toggle();\n }\n\n constructor(readonly inputs: ToolbarInputs<V>) {\n this.orientation = inputs.orientation;\n this.softDisabled = inputs.softDisabled;\n\n this.listBehavior = new List({\n ...inputs,\n multi: () => true,\n focusMode: () => 'roving',\n selectionMode: () => 'explicit',\n typeaheadDelay: () => 0, // Toolbar widgets do not support typeahead.\n });\n }\n\n /** Handles keydown events for the toolbar. */\n onKeydown(event: KeyboardEvent) {\n if (this.disabled()) return;\n this._keydown().handle(event);\n }\n\n onPointerdown(event: PointerEvent) {\n event.preventDefault();\n }\n\n /** Handles click events for the toolbar. */\n onClick(event: MouseEvent) {\n if (this.disabled()) return;\n this._goto(event);\n }\n\n /**\n * Sets the toolbar to its default initial state.\n *\n * Sets the active index to the selected widget if one exists and is focusable.\n * Otherwise, sets the active index to the first focusable widget.\n */\n setDefaultState() {\n const firstItem = this.listBehavior.navigationBehavior.peekFirst({\n items: this.inputs.items(),\n });\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Validates the state of the toolbar and returns a list of accessibility violations. */\n validate(): string[] {\n const violations: string[] = [];\n return violations;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {SignalLike, computed} from '../behaviors/signal-like/signal-like';\nimport {ListItem} from '../behaviors/list/list';\nimport type {ToolbarPattern} from './toolbar';\nimport {ToolbarWidgetGroupPattern} from './toolbar-widget-group';\n\n/** Represents the required inputs for a toolbar widget in a toolbar. */\nexport interface ToolbarWidgetInputs<V> extends Omit<\n ListItem<V>,\n 'searchTerm' | 'index' | 'selectable'\n> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V>>;\n\n /** A reference to the parent widget group. */\n group: SignalLike<ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined>;\n}\n\nexport class ToolbarWidgetPattern<V> implements ListItem<V> {\n /** A unique identifier for the widget. */\n readonly id = () => this.inputs.id();\n\n /** The html element that should receive focus. */\n readonly element = () => this.inputs.element();\n\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled() || this.group()?.disabled() || false;\n\n /** A reference to the parent toolbar. */\n readonly group = () => this.inputs.group();\n\n /** A reference to the toolbar containing the widget. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** The tabindex of the widget. */\n readonly tabIndex = computed(() => this.toolbar().listBehavior.getItemTabindex(this));\n\n /** The text used by the typeahead search. */\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n\n /** The value associated with the widget. */\n readonly value = () => this.inputs.value();\n\n /** Whether the widget is selectable. */\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n\n /** The position of the widget within the toolbar. */\n readonly index = computed(() => this.toolbar().inputs.items().indexOf(this) ?? -1);\n\n /** Whether the widget is selected (only relevant in a selection group). */\n readonly selected = computed(() =>\n this.toolbar().listBehavior.inputs.values().includes(this.value()),\n );\n\n /** Whether the widget is currently the active one (focused). */\n readonly active: SignalLike<boolean> = computed(() => this.toolbar().activeItem() === this);\n\n constructor(readonly inputs: ToolbarWidgetInputs<V>) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ListItem} from '../behaviors/list/list';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\nimport type {ToolbarPattern} from './toolbar';\n\n/** Represents the required inputs for a toolbar widget group. */\nexport interface ToolbarWidgetGroupInputs<T extends ListItem<V>, V> {\n /** A reference to the parent toolbar. */\n toolbar: SignalLike<ToolbarPattern<V> | undefined>;\n\n /** Whether the widget group is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The list of items within the widget group. */\n items: SignalLike<T[]>;\n\n /** Whether the group allows multiple widgets to be selected. */\n multi: SignalLike<boolean>;\n}\n\n/** A group of widgets within a toolbar that provides nested navigation. */\nexport class ToolbarWidgetGroupPattern<T extends ListItem<V>, V> {\n /** Whether the widget is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** A reference to the parent toolbar. */\n readonly toolbar = () => this.inputs.toolbar();\n\n /** Whether the group allows multiple widgets to be selected. */\n readonly multi = () => this.inputs.multi();\n\n readonly searchTerm = () => ''; // Unused because toolbar does not support typeahead.\n readonly value = () => '' as V; // Unused because toolbar does not support selection.\n readonly selectable = () => true; // Unused because toolbar does not support selection.\n readonly element = () => undefined; // Unused because toolbar does not focus the group element.\n\n constructor(readonly inputs: ToolbarWidgetGroupInputs<T, V>) {}\n}\n"],"names":["ToolbarPattern","inputs","listBehavior","orientation","softDisabled","disabled","computed","tabIndex","activeDescendant","activeItem","_prevKey","textDirection","_nextKey","_altPrevKey","_altNextKey","_keydown","manager","KeyboardEventManager","on","next","prev","_groupNext","_groupPrev","select","first","last","currGroup","group","nextGroup","navigationBehavior","peekNext","goto","peekFirst","items","peekPrev","peekLast","_goto","e","item","getItem","target","multi","forEach","i","deselect","toggle","constructor","List","focusMode","selectionMode","typeaheadDelay","onKeydown","event","handle","onPointerdown","preventDefault","onClick","setDefaultState","firstItem","set","validate","violations","ToolbarWidgetPattern","id","element","toolbar","getItemTabindex","searchTerm","value","selectable","index","indexOf","selected","values","includes","active","ToolbarWidgetGroupPattern","undefined"],"mappings":"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"}
@@ -564,5 +564,5 @@ i0.ɵɵngDeclareClassMetadata({
564
564
  }]
565
565
  });
566
566
 
567
- export { AccordionContent, AccordionGroup, AccordionPanel, AccordionTrigger, DeferredContent as ɵɵDeferredContent };
567
+ export { AccordionContent, AccordionGroup, AccordionPanel, AccordionTrigger, DeferredContent as ɵɵDeferredContent, DeferredContentAware as ɵɵDeferredContentAware };
568
568
  //# sourceMappingURL=accordion.mjs.map
package/fesm2022/aria.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
 
3
- const VERSION = new Version('21.0.4');
3
+ const VERSION = new Version('21.0.6');
4
4
 
5
5
  export { VERSION };
6
6
  //# sourceMappingURL=aria.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('21.0.4');\n"],"names":["VERSION","Version"],"mappings":";;MAWaA,OAAO,GAAG,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
1
+ {"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('21.0.6');\n"],"names":["VERSION","Version"],"mappings":";;MAWaA,OAAO,GAAG,IAAIC,OAAO,CAAC,mBAAmB;;;;"}
@@ -9,6 +9,7 @@ import './_signal-like-chunk.mjs';
9
9
  import '@angular/core/primitives/signals';
10
10
  import './_list-chunk.mjs';
11
11
  import './_list-navigation-chunk.mjs';
12
+ import './_list-typeahead-chunk.mjs';
12
13
  import './_pointer-event-manager-chunk.mjs';
13
14
  import './_deferred-content-chunk.mjs';
14
15
  import './_combobox-chunk.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {booleanAttribute, computed, Directive, ElementRef, inject, input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n // TODO(wagnermaciel): See if we want to change how we handle this since textContent is not\n // reactive. See https://github.com/angular/components/pull/30495#discussion_r1961260216.\n /** The text used by the typeahead search. */\n protected searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n value = input.required<V>();\n\n /** Whether an item is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\n });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxListboxPattern, ListboxPattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n hostDirectives: [ComboboxPopup],\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** The Option UIPatterns of the child Options. */\n protected items = computed(() => this._options().map(option => option._pattern));\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly = input(false, {transform: booleanAttribute});\n\n /** The values of the currently selected items. */\n values = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** Whether the listbox has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n if (this._popup) {\n this._popup._controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n // Ensure that the values are always in sync with the available options.\n afterRenderEffect(() => {\n const items = inputs.items();\n const values = untracked(() => this.values());\n\n if (items && values.some(v => !items.some(i => i.value() === v))) {\n this.values.set(values.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n _onFocus() {\n this._hasFocused.set(true);\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n}\n"],"names":["LISTBOX","InjectionToken","Option","element","inject","ElementRef","nativeElement","active","computed","_pattern","_listbox","id","input","_IdGenerator","getId","searchTerm","label","textContent","_listboxPattern","ngDevMode","debugName","value","required","disabled","transform","booleanAttribute","undefined","selected","OptionPattern","listbox","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","properties","exportAs","ngImport","decorators","args","Listbox","_popup","ComboboxPopup","optional","_elementRef","_options","contentChildren","descendants","textDirection","Directionality","valueSignal","asReadonly","items","map","option","orientation","multi","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","readonly","values","model","_hasFocused","signal","constructor","activeItem","combobox","ComboboxListboxPattern","ListboxPattern","_controls","set","afterRenderEffect","violations","validate","violation","console","error","setDefaultState","untracked","some","i","listBehavior","unfocus","v","filter","_onFocus","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","outputs","listeners","providers","provide","useExisting","hostDirectives","directive","i1","ctorParameters","propDecorators","Input","alias","ContentChildren","forwardRef","Output"],"mappings":"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"}
1
+ {"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {booleanAttribute, computed, Directive, ElementRef, inject, input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n // TODO(wagnermaciel): See if we want to change how we handle this since textContent is not\n // reactive. See https://github.com/angular/components/pull/30495#discussion_r1961260216.\n /** The text used by the typeahead search. */\n protected searchTerm = computed(() => this.label() ?? this.element.textContent);\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n value = input.required<V>();\n\n /** Whether an item is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.searchTerm() ?? '',\n });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ComboboxListboxPattern, ListboxPattern} from '../private';\nimport {ComboboxPopup} from '../combobox';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': '_onFocus()',\n },\n hostDirectives: [ComboboxPopup],\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the parent combobox popup, if one exists. */\n private readonly _popup = inject<ComboboxPopup<V>>(ComboboxPopup, {\n optional: true,\n });\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The Options nested inside of the Listbox. */\n private readonly _options = contentChildren(Option, {descendants: true});\n\n /** A signal wrapper for directionality. */\n protected textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** The Option UIPatterns of the child Options. */\n protected items = computed(() => this._options().map(option => option._pattern));\n\n /** Whether the list is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly = input(false, {transform: booleanAttribute});\n\n /** The values of the currently selected items. */\n values = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** Whether the listbox has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this.items,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n combobox: () => this._popup?.combobox?._pattern,\n };\n\n this._pattern = this._popup?.combobox\n ? new ComboboxListboxPattern<V>(inputs)\n : new ListboxPattern<V>(inputs);\n\n if (this._popup) {\n this._popup._controls.set(this._pattern as ComboboxListboxPattern<V>);\n }\n\n afterRenderEffect(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\n }\n });\n\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect(() => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\n }\n });\n\n // Ensure that the values are always in sync with the available options.\n afterRenderEffect(() => {\n const items = inputs.items();\n const values = untracked(() => this.values());\n\n if (items && values.some(v => !items.some(i => i.value() === v))) {\n this.values.set(values.filter(v => items.some(i => i.value() === v)));\n }\n });\n }\n\n _onFocus() {\n this._hasFocused.set(true);\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n}\n"],"names":["LISTBOX","InjectionToken","Option","element","inject","ElementRef","nativeElement","active","computed","_pattern","_listbox","id","input","_IdGenerator","getId","searchTerm","label","textContent","_listboxPattern","ngDevMode","debugName","value","required","disabled","transform","booleanAttribute","undefined","selected","OptionPattern","listbox","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","properties","exportAs","ngImport","decorators","args","Listbox","_popup","ComboboxPopup","optional","_elementRef","_options","contentChildren","descendants","textDirection","Directionality","valueSignal","asReadonly","items","map","option","orientation","multi","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","readonly","values","model","_hasFocused","signal","constructor","activeItem","combobox","ComboboxListboxPattern","ListboxPattern","_controls","set","afterRenderEffect","violations","validate","violation","console","error","setDefaultState","untracked","some","i","listBehavior","unfocus","v","filter","_onFocus","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","outputs","listeners","providers","provide","useExisting","hostDirectives","directive","i1","ctorParameters","propDecorators","Input","alias","ContentChildren","forwardRef","Output"],"mappings":"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"}
package/fesm2022/menu.mjs CHANGED
@@ -8,6 +8,7 @@ import './_signal-like-chunk.mjs';
8
8
  import '@angular/core/primitives/signals';
9
9
  import './_list-chunk.mjs';
10
10
  import './_list-navigation-chunk.mjs';
11
+ import './_list-typeahead-chunk.mjs';
11
12
 
12
13
  class MenuTrigger {
13
14
  _elementRef = inject(ElementRef);
@@ -64,7 +65,7 @@ class MenuTrigger {
64
65
  version: "21.0.3",
65
66
  type: MenuTrigger,
66
67
  isStandalone: true,
67
- selector: "button[ngMenuTrigger]",
68
+ selector: "[ngMenuTrigger]",
68
69
  inputs: {
69
70
  menu: {
70
71
  classPropertyName: "menu",
@@ -116,7 +117,7 @@ i0.ɵɵngDeclareClassMetadata({
116
117
  decorators: [{
117
118
  type: Directive,
118
119
  args: [{
119
- selector: 'button[ngMenuTrigger]',
120
+ selector: '[ngMenuTrigger]',
120
121
  exportAs: 'ngMenuTrigger',
121
122
  host: {
122
123
  '[attr.tabindex]': '_pattern.tabIndex()',