@angular/aria 21.0.0-rc.0 → 21.0.0-rc.2
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.
- package/_adev_assets/aria-accordion.json +443 -59
- package/_adev_assets/aria-combobox.json +345 -37
- package/_adev_assets/aria-grid.json +408 -71
- package/_adev_assets/aria-listbox.json +115 -35
- package/_adev_assets/aria-menu.json +492 -167
- package/_adev_assets/aria-tabs.json +272 -88
- package/_adev_assets/aria-toolbar.json +151 -133
- package/_adev_assets/aria-tree.json +182 -35
- package/fesm2022/_widget-chunk.mjs +643 -190
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion.mjs +129 -77
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +140 -27
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid.mjs +254 -68
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox.mjs +54 -44
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu.mjs +270 -108
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +752 -785
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/tabs.mjs +101 -71
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +87 -64
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree.mjs +105 -60
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +2 -10
- package/types/_grid-chunk.d.ts +326 -83
- package/types/accordion.d.ts +134 -35
- package/types/combobox.d.ts +146 -13
- package/types/grid.d.ts +159 -32
- package/types/listbox.d.ts +59 -28
- package/types/menu.d.ts +151 -55
- package/types/private.d.ts +449 -567
- package/types/tabs.d.ts +121 -41
- package/types/toolbar.d.ts +74 -51
- package/types/tree.d.ts +116 -45
- package/_adev_assets/aria-radio-group.json +0 -389
- package/fesm2022/deferred-content.mjs +0 -99
- package/fesm2022/deferred-content.mjs.map +0 -1
- package/fesm2022/radio-group.mjs +0 -338
- package/fesm2022/radio-group.mjs.map +0 -1
- package/types/deferred-content.d.ts +0 -38
- package/types/radio-group.d.ts +0 -84
package/fesm2022/toolbar.mjs
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, signal, computed, input, booleanAttribute, afterRenderEffect, Directive } from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, signal, computed, input, booleanAttribute, afterRenderEffect, Directive, contentChildren } from '@angular/core';
|
|
3
3
|
import { ToolbarPattern, ToolbarWidgetPattern, ToolbarWidgetGroupPattern } from '@angular/aria/private';
|
|
4
4
|
import { Directionality } from '@angular/cdk/bidi';
|
|
5
5
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
6
6
|
|
|
7
7
|
function sortDirectives(a, b) {
|
|
8
|
-
return (a.element
|
|
8
|
+
return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0 ? 1 : -1;
|
|
9
9
|
}
|
|
10
10
|
class Toolbar {
|
|
11
11
|
_elementRef = inject(ElementRef);
|
|
12
|
+
element = this._elementRef.nativeElement;
|
|
12
13
|
_widgets = signal(new Set(), ...(ngDevMode ? [{
|
|
13
14
|
debugName: "_widgets"
|
|
14
15
|
}] : []));
|
|
@@ -19,8 +20,8 @@ class Toolbar {
|
|
|
19
20
|
orientation = input('horizontal', ...(ngDevMode ? [{
|
|
20
21
|
debugName: "orientation"
|
|
21
22
|
}] : []));
|
|
22
|
-
|
|
23
|
-
debugName: "
|
|
23
|
+
softDisabled = input(true, ...(ngDevMode ? [{
|
|
24
|
+
debugName: "softDisabled",
|
|
24
25
|
transform: booleanAttribute
|
|
25
26
|
}] : [{
|
|
26
27
|
transform: booleanAttribute
|
|
@@ -44,8 +45,8 @@ class Toolbar {
|
|
|
44
45
|
element: () => this._elementRef.nativeElement,
|
|
45
46
|
getItem: e => this._getItem(e)
|
|
46
47
|
});
|
|
47
|
-
|
|
48
|
-
debugName: "
|
|
48
|
+
_hasBeenFocused = signal(false, ...(ngDevMode ? [{
|
|
49
|
+
debugName: "_hasBeenFocused"
|
|
49
50
|
}] : []));
|
|
50
51
|
constructor() {
|
|
51
52
|
afterRenderEffect(() => {
|
|
@@ -57,13 +58,13 @@ class Toolbar {
|
|
|
57
58
|
}
|
|
58
59
|
});
|
|
59
60
|
afterRenderEffect(() => {
|
|
60
|
-
if (!this.
|
|
61
|
+
if (!this._hasBeenFocused()) {
|
|
61
62
|
this._pattern.setDefaultState();
|
|
62
63
|
}
|
|
63
64
|
});
|
|
64
65
|
}
|
|
65
66
|
onFocus() {
|
|
66
|
-
this.
|
|
67
|
+
this._hasBeenFocused.set(true);
|
|
67
68
|
}
|
|
68
69
|
register(widget) {
|
|
69
70
|
const widgets = this._widgets();
|
|
@@ -79,9 +80,8 @@ class Toolbar {
|
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
_getItem(element) {
|
|
82
|
-
const widgetTarget = element.closest('
|
|
83
|
-
|
|
84
|
-
return this.items().find(widget => widget.element() === widgetTarget || widget.element() === groupTarget);
|
|
83
|
+
const widgetTarget = element.closest('[ngToolbarWidget]');
|
|
84
|
+
return this.items().find(widget => widget.element() === widgetTarget);
|
|
85
85
|
}
|
|
86
86
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
87
87
|
minVersion: "12.0.0",
|
|
@@ -105,9 +105,9 @@ class Toolbar {
|
|
|
105
105
|
isRequired: false,
|
|
106
106
|
transformFunction: null
|
|
107
107
|
},
|
|
108
|
-
|
|
109
|
-
classPropertyName: "
|
|
110
|
-
publicName: "
|
|
108
|
+
softDisabled: {
|
|
109
|
+
classPropertyName: "softDisabled",
|
|
110
|
+
publicName: "softDisabled",
|
|
111
111
|
isSignal: true,
|
|
112
112
|
isRequired: false,
|
|
113
113
|
transformFunction: null
|
|
@@ -133,15 +133,15 @@ class Toolbar {
|
|
|
133
133
|
},
|
|
134
134
|
listeners: {
|
|
135
135
|
"keydown": "_pattern.onKeydown($event)",
|
|
136
|
+
"click": "_pattern.onClick($event)",
|
|
136
137
|
"pointerdown": "_pattern.onPointerdown($event)",
|
|
137
138
|
"focusin": "onFocus()"
|
|
138
139
|
},
|
|
139
140
|
properties: {
|
|
140
|
-
"attr.tabindex": "_pattern.
|
|
141
|
+
"attr.tabindex": "_pattern.tabIndex()",
|
|
141
142
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
142
143
|
"attr.aria-orientation": "_pattern.orientation()"
|
|
143
|
-
}
|
|
144
|
-
classAttribute: "ng-toolbar"
|
|
144
|
+
}
|
|
145
145
|
},
|
|
146
146
|
exportAs: ["ngToolbar"],
|
|
147
147
|
ngImport: i0
|
|
@@ -159,11 +159,11 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
159
159
|
exportAs: 'ngToolbar',
|
|
160
160
|
host: {
|
|
161
161
|
'role': 'toolbar',
|
|
162
|
-
'
|
|
163
|
-
'[attr.tabindex]': '_pattern.tabindex()',
|
|
162
|
+
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
164
163
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
165
164
|
'[attr.aria-orientation]': '_pattern.orientation()',
|
|
166
165
|
'(keydown)': '_pattern.onKeydown($event)',
|
|
166
|
+
'(click)': '_pattern.onClick($event)',
|
|
167
167
|
'(pointerdown)': '_pattern.onPointerdown($event)',
|
|
168
168
|
'(focusin)': 'onFocus()'
|
|
169
169
|
}
|
|
@@ -173,31 +173,39 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
173
173
|
});
|
|
174
174
|
class ToolbarWidget {
|
|
175
175
|
_elementRef = inject(ElementRef);
|
|
176
|
+
element = this._elementRef.nativeElement;
|
|
176
177
|
_toolbar = inject(Toolbar);
|
|
177
|
-
|
|
178
|
-
id = computed(() => this._generatedId, ...(ngDevMode ? [{
|
|
178
|
+
id = input(inject(_IdGenerator).getId('ng-toolbar-widget-', true), ...(ngDevMode ? [{
|
|
179
179
|
debugName: "id"
|
|
180
180
|
}] : []));
|
|
181
181
|
toolbar = computed(() => this._toolbar._pattern, ...(ngDevMode ? [{
|
|
182
182
|
debugName: "toolbar"
|
|
183
183
|
}] : []));
|
|
184
|
-
element = computed(() => this._elementRef.nativeElement, ...(ngDevMode ? [{
|
|
185
|
-
debugName: "element"
|
|
186
|
-
}] : []));
|
|
187
184
|
disabled = input(false, ...(ngDevMode ? [{
|
|
188
185
|
debugName: "disabled",
|
|
189
186
|
transform: booleanAttribute
|
|
190
187
|
}] : [{
|
|
191
188
|
transform: booleanAttribute
|
|
192
189
|
}]));
|
|
193
|
-
hardDisabled = computed(() => this._pattern.disabled() && this._toolbar.
|
|
190
|
+
hardDisabled = computed(() => this._pattern.disabled() && !this._toolbar.softDisabled(), ...(ngDevMode ? [{
|
|
194
191
|
debugName: "hardDisabled"
|
|
195
192
|
}] : []));
|
|
193
|
+
_group = inject(ToolbarWidgetGroup, {
|
|
194
|
+
optional: true
|
|
195
|
+
});
|
|
196
|
+
value = input.required(...(ngDevMode ? [{
|
|
197
|
+
debugName: "value"
|
|
198
|
+
}] : []));
|
|
199
|
+
active = computed(() => this._pattern.active(), ...(ngDevMode ? [{
|
|
200
|
+
debugName: "active"
|
|
201
|
+
}] : []));
|
|
202
|
+
selected = () => this._pattern.selected();
|
|
203
|
+
group = () => this._group?._pattern;
|
|
196
204
|
_pattern = new ToolbarWidgetPattern({
|
|
197
205
|
...this,
|
|
198
206
|
id: this.id,
|
|
199
|
-
|
|
200
|
-
|
|
207
|
+
value: this.value,
|
|
208
|
+
element: () => this.element
|
|
201
209
|
});
|
|
202
210
|
ngOnInit() {
|
|
203
211
|
this._toolbar.register(this);
|
|
@@ -220,24 +228,37 @@ class ToolbarWidget {
|
|
|
220
228
|
isStandalone: true,
|
|
221
229
|
selector: "[ngToolbarWidget]",
|
|
222
230
|
inputs: {
|
|
231
|
+
id: {
|
|
232
|
+
classPropertyName: "id",
|
|
233
|
+
publicName: "id",
|
|
234
|
+
isSignal: true,
|
|
235
|
+
isRequired: false,
|
|
236
|
+
transformFunction: null
|
|
237
|
+
},
|
|
223
238
|
disabled: {
|
|
224
239
|
classPropertyName: "disabled",
|
|
225
240
|
publicName: "disabled",
|
|
226
241
|
isSignal: true,
|
|
227
242
|
isRequired: false,
|
|
228
243
|
transformFunction: null
|
|
244
|
+
},
|
|
245
|
+
value: {
|
|
246
|
+
classPropertyName: "value",
|
|
247
|
+
publicName: "value",
|
|
248
|
+
isSignal: true,
|
|
249
|
+
isRequired: true,
|
|
250
|
+
transformFunction: null
|
|
229
251
|
}
|
|
230
252
|
},
|
|
231
253
|
host: {
|
|
232
254
|
properties: {
|
|
233
|
-
"attr.data-active": "
|
|
234
|
-
"attr.tabindex": "_pattern.
|
|
255
|
+
"attr.data-active": "active()",
|
|
256
|
+
"attr.tabindex": "_pattern.tabIndex()",
|
|
235
257
|
"attr.inert": "hardDisabled() ? true : null",
|
|
236
258
|
"attr.disabled": "hardDisabled() ? true : null",
|
|
237
259
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
238
260
|
"id": "_pattern.id()"
|
|
239
|
-
}
|
|
240
|
-
classAttribute: "ng-toolbar-widget"
|
|
261
|
+
}
|
|
241
262
|
},
|
|
242
263
|
exportAs: ["ngToolbarWidget"],
|
|
243
264
|
ngImport: i0
|
|
@@ -254,9 +275,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
254
275
|
selector: '[ngToolbarWidget]',
|
|
255
276
|
exportAs: 'ngToolbarWidget',
|
|
256
277
|
host: {
|
|
257
|
-
'
|
|
258
|
-
'[attr.
|
|
259
|
-
'[attr.tabindex]': '_pattern.tabindex()',
|
|
278
|
+
'[attr.data-active]': 'active()',
|
|
279
|
+
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
260
280
|
'[attr.inert]': 'hardDisabled() ? true : null',
|
|
261
281
|
'[attr.disabled]': 'hardDisabled() ? true : null',
|
|
262
282
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
@@ -267,39 +287,33 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
267
287
|
});
|
|
268
288
|
class ToolbarWidgetGroup {
|
|
269
289
|
_elementRef = inject(ElementRef);
|
|
290
|
+
element = this._elementRef.nativeElement;
|
|
270
291
|
_toolbar = inject(Toolbar, {
|
|
271
292
|
optional: true
|
|
272
293
|
});
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}] : [
|
|
294
|
+
_widgets = contentChildren(ToolbarWidget, ...(ngDevMode ? [{
|
|
295
|
+
debugName: "_widgets",
|
|
296
|
+
descendants: true
|
|
297
|
+
}] : [{
|
|
298
|
+
descendants: true
|
|
299
|
+
}]));
|
|
277
300
|
toolbar = computed(() => this._toolbar?._pattern, ...(ngDevMode ? [{
|
|
278
301
|
debugName: "toolbar"
|
|
279
302
|
}] : []));
|
|
280
|
-
element = computed(() => this._elementRef.nativeElement, ...(ngDevMode ? [{
|
|
281
|
-
debugName: "element"
|
|
282
|
-
}] : []));
|
|
283
303
|
disabled = input(false, ...(ngDevMode ? [{
|
|
284
304
|
debugName: "disabled",
|
|
285
305
|
transform: booleanAttribute
|
|
286
306
|
}] : [{
|
|
287
307
|
transform: booleanAttribute
|
|
288
308
|
}]));
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
ngOnInit() {
|
|
298
|
-
this._toolbar?.register(this);
|
|
299
|
-
}
|
|
300
|
-
ngOnDestroy() {
|
|
301
|
-
this._toolbar?.unregister(this);
|
|
302
|
-
}
|
|
309
|
+
items = () => this._widgets().map(w => w._pattern);
|
|
310
|
+
multi = input(false, ...(ngDevMode ? [{
|
|
311
|
+
debugName: "multi",
|
|
312
|
+
transform: booleanAttribute
|
|
313
|
+
}] : [{
|
|
314
|
+
transform: booleanAttribute
|
|
315
|
+
}]));
|
|
316
|
+
_pattern = new ToolbarWidgetGroupPattern(this);
|
|
303
317
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
304
318
|
minVersion: "12.0.0",
|
|
305
319
|
version: "20.2.0-next.2",
|
|
@@ -309,10 +323,11 @@ class ToolbarWidgetGroup {
|
|
|
309
323
|
target: i0.ɵɵFactoryTarget.Directive
|
|
310
324
|
});
|
|
311
325
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
312
|
-
minVersion: "17.
|
|
326
|
+
minVersion: "17.2.0",
|
|
313
327
|
version: "20.2.0-next.2",
|
|
314
328
|
type: ToolbarWidgetGroup,
|
|
315
329
|
isStandalone: true,
|
|
330
|
+
selector: "[ngToolbarWidgetGroup]",
|
|
316
331
|
inputs: {
|
|
317
332
|
disabled: {
|
|
318
333
|
classPropertyName: "disabled",
|
|
@@ -320,13 +335,22 @@ class ToolbarWidgetGroup {
|
|
|
320
335
|
isSignal: true,
|
|
321
336
|
isRequired: false,
|
|
322
337
|
transformFunction: null
|
|
338
|
+
},
|
|
339
|
+
multi: {
|
|
340
|
+
classPropertyName: "multi",
|
|
341
|
+
publicName: "multi",
|
|
342
|
+
isSignal: true,
|
|
343
|
+
isRequired: false,
|
|
344
|
+
transformFunction: null
|
|
323
345
|
}
|
|
324
346
|
},
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
347
|
+
queries: [{
|
|
348
|
+
propertyName: "_widgets",
|
|
349
|
+
predicate: ToolbarWidget,
|
|
350
|
+
descendants: true,
|
|
351
|
+
isSignal: true
|
|
352
|
+
}],
|
|
353
|
+
exportAs: ["ngToolbarWidgetGroup"],
|
|
330
354
|
ngImport: i0
|
|
331
355
|
});
|
|
332
356
|
}
|
|
@@ -338,9 +362,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
338
362
|
decorators: [{
|
|
339
363
|
type: Directive,
|
|
340
364
|
args: [{
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
}
|
|
365
|
+
selector: '[ngToolbarWidgetGroup]',
|
|
366
|
+
exportAs: 'ngToolbarWidgetGroup'
|
|
344
367
|
}]
|
|
345
368
|
}]
|
|
346
369
|
});
|
package/fesm2022/toolbar.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/toolbar/toolbar.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 {\n afterRenderEffect,\n Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n signal,\n Signal,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {\n ToolbarPattern,\n ToolbarWidgetPattern,\n ToolbarWidgetGroupPattern,\n ToolbarWidgetGroupControls,\n} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\n\ninterface HasElement {\n element: Signal<HTMLElement>;\n}\n\n/**\n * Sort directives by their document order.\n */\nfunction sortDirectives(a: HasElement, b: HasElement) {\n return (a.element().compareDocumentPosition(b.element()) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\n}\n\n/**\n * A toolbar widget container.\n *\n * Widgets such as radio groups or buttons are nested within a toolbar to allow for a single\n * place of reference for focus and navigation. The Toolbar is meant to be used in conjunction\n * with ToolbarWidget and RadioGroup as follows:\n *\n * ```html\n * <div ngToolbar>\n * <button ngToolbarWidget>Button</button>\n * <div ngRadioGroup>\n * <label ngRadioButton value=\"1\">Option 1</label>\n * <label ngRadioButton value=\"2\">Option 2</label>\n * <label ngRadioButton value=\"3\">Option 3</label>\n * </div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[ngToolbar]',\n exportAs: 'ngToolbar',\n host: {\n 'role': 'toolbar',\n 'class': 'ng-toolbar',\n '[attr.tabindex]': '_pattern.tabindex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': 'onFocus()',\n },\n})\nexport class Toolbar<V> {\n /** A reference to the toolbar element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The TabList nested inside of the container. */\n private readonly _widgets = signal(new Set<ToolbarWidget<V> | ToolbarWidgetGroup<V>>());\n\n /** A signal wrapper for directionality. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Sorted UIPatterns of the child widgets */\n readonly items = computed(() =>\n [...this._widgets()].sort(sortDirectives).map(widget => widget._pattern),\n );\n\n /** Whether the toolbar is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether disabled items in the group should be skipped when navigating. */\n readonly skipDisabled = input(false, {transform: booleanAttribute});\n\n /** Whether the toolbar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The toolbar UIPattern. */\n readonly _pattern: ToolbarPattern<V> = new ToolbarPattern<V>({\n ...this,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n getItem: e => this._getItem(e),\n });\n\n /** Whether the toolbar has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\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\n onFocus() {\n this._hasFocused.set(true);\n }\n\n register(widget: ToolbarWidget<V> | ToolbarWidgetGroup<V>) {\n const widgets = this._widgets();\n if (!widgets.has(widget)) {\n widgets.add(widget);\n this._widgets.set(new Set(widgets));\n }\n }\n\n unregister(widget: ToolbarWidget<V> | ToolbarWidgetGroup<V>) {\n const widgets = this._widgets();\n if (widgets.delete(widget)) {\n this._widgets.set(new Set(widgets));\n }\n }\n\n /** Finds the toolbar item associated with a given element. */\n private _getItem(element: Element) {\n const widgetTarget = element.closest('.ng-toolbar-widget');\n const groupTarget = element.closest('.ng-toolbar-widget-group');\n return this.items().find(\n widget => widget.element() === widgetTarget || widget.element() === groupTarget,\n );\n }\n}\n\n/**\n * A widget within a toolbar.\n *\n * A widget is anything that is within a toolbar. It should be applied to any native HTML element\n * that has the purpose of acting as a widget navigatable within a toolbar.\n */\n@Directive({\n selector: '[ngToolbarWidget]',\n exportAs: 'ngToolbarWidget',\n host: {\n 'class': 'ng-toolbar-widget',\n '[attr.data-active]': '_pattern.active()',\n '[attr.tabindex]': '_pattern.tabindex()',\n '[attr.inert]': 'hardDisabled() ? true : null',\n '[attr.disabled]': 'hardDisabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[id]': '_pattern.id()',\n },\n})\nexport class ToolbarWidget<V> implements OnInit, OnDestroy {\n /** A reference to the widget element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent Toolbar. */\n private readonly _toolbar = inject(Toolbar);\n\n /** A unique identifier for the widget. */\n private readonly _generatedId = inject(_IdGenerator).getId('ng-toolbar-widget-');\n\n /** A unique identifier for the widget. */\n readonly id = computed(() => this._generatedId);\n\n /** The parent Toolbar UIPattern. */\n readonly toolbar = computed(() => this._toolbar._pattern);\n\n /** A reference to the widget element to be focused on navigation. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the widget is 'hard' disabled, which is different from `aria-disabled`. A hard disabled widget cannot receive focus. */\n readonly hardDisabled = computed(() => this._pattern.disabled() && this._toolbar.skipDisabled());\n\n /** The ToolbarWidget UIPattern. */\n readonly _pattern = new ToolbarWidgetPattern<V>({\n ...this,\n id: this.id,\n element: this.element,\n disabled: computed(() => this._toolbar.disabled() || this.disabled()),\n });\n\n ngOnInit() {\n this._toolbar.register(this);\n }\n\n ngOnDestroy() {\n this._toolbar.unregister(this);\n }\n}\n\n/**\n * A directive that groups toolbar widgets, used for more complex widgets like radio groups that\n * have their own internal navigation.\n */\n@Directive({\n host: {\n '[class.ng-toolbar-widget-group]': '!!toolbar()',\n },\n})\nexport class ToolbarWidgetGroup<V> implements OnInit, OnDestroy {\n /** A reference to the widget element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent Toolbar. */\n private readonly _toolbar = inject(Toolbar, {optional: true});\n\n /** A unique identifier for the widget. */\n private readonly _generatedId = inject(_IdGenerator).getId('ng-toolbar-widget-group-');\n\n /** A unique identifier for the widget. */\n readonly id = computed(() => this._generatedId);\n\n /** The parent Toolbar UIPattern. */\n readonly toolbar = computed(() => this._toolbar?._pattern);\n\n /** A reference to the widget element to be focused on navigation. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** Whether the widget group is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The controls that can be performed on the widget group. */\n readonly controls = signal<ToolbarWidgetGroupControls | undefined>(undefined);\n\n /** The ToolbarWidgetGroup UIPattern. */\n readonly _pattern = new ToolbarWidgetGroupPattern<V>({\n ...this,\n id: this.id,\n element: this.element,\n });\n\n ngOnInit() {\n this._toolbar?.register(this);\n }\n\n ngOnDestroy() {\n this._toolbar?.unregister(this);\n }\n}\n"],"names":["textDirection","inject","Directionality","valueSignal","items","computed","_widgets","sort","sortDirectives","map","widget","_pattern","ngDevMode","debugName","orientation","input","transform","booleanAttribute","disabled","wrap","getItem","e","_getItem","signal","constructor","afterRenderEffect","violations","validate","violation","console","error","onFocus","_hasFocused","set","widgets","has","Set","unregister","delete","element","widgetTarget","closest","groupTarget","find","version","type","Toolbar","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","skipDisabled","host","attributes","listeners","properties","classAttribute","exportAs","ngImport","i0","ctorParameters","_generatedId","_IdGenerator","getId","_toolbar","_elementRef","nativeElement","id","ɵfac","ɵɵngDeclareFactory","minVersion","ToolbarWidget","deps","target","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolbar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/toolbar/toolbar.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 {\n afterRenderEffect,\n Directive,\n ElementRef,\n inject,\n computed,\n input,\n booleanAttribute,\n signal,\n OnInit,\n OnDestroy,\n contentChildren,\n} from '@angular/core';\nimport {\n ToolbarPattern,\n ToolbarWidgetPattern,\n ToolbarWidgetGroupPattern,\n SignalLike,\n} from '@angular/aria/private';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\n\ninterface HasElement {\n element: HTMLElement;\n}\n\n/**\n * Sort directives by their document order.\n */\nfunction sortDirectives(a: HasElement, b: HasElement) {\n return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0\n ? 1\n : -1;\n}\n\n/**\n * A toolbar widget container for a group of interactive widgets, such as\n * buttons or radio groups. It provides a single point of reference for keyboard navigation\n * and focus management. It supports various orientations and disabled states.\n *\n * ```html\n * <div ngToolbar orientation=\"horizontal\" [wrap]=\"true\">\n * <button ngToolbarWidget value=\"save\">Save</button>\n * <button ngToolbarWidget value=\"print\">Print</button>\n *\n * <div ngToolbarWidgetGroup [(value)]=\"selectedAlignment\">\n * <button ngToolbarWidget value=\"left\">Left</button>\n * <button ngToolbarWidget value=\"center\">Center</button>\n * <button ngToolbarWidget value=\"right\">Right</button>\n * </div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngToolbar]',\n exportAs: 'ngToolbar',\n host: {\n 'role': 'toolbar',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': 'onFocus()',\n },\n})\nexport class Toolbar<V> {\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 TabList nested inside of the container. */\n private readonly _widgets = signal(new Set<ToolbarWidget<V>>());\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Sorted UIPatterns of the child widgets */\n readonly items = computed(() =>\n [...this._widgets()].sort(sortDirectives).map(widget => widget._pattern),\n );\n\n /** Whether the toolbar is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\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 /** Whether the toolbar is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** The toolbar UIPattern. */\n readonly _pattern: ToolbarPattern<V> = new ToolbarPattern<V>({\n ...this,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n getItem: e => this._getItem(e),\n });\n\n /** Whether the toolbar has received focus yet. */\n private _hasBeenFocused = signal(false);\n\n constructor() {\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._hasBeenFocused()) {\n this._pattern.setDefaultState();\n }\n });\n }\n\n onFocus() {\n this._hasBeenFocused.set(true);\n }\n\n register(widget: ToolbarWidget<V>) {\n const widgets = this._widgets();\n if (!widgets.has(widget)) {\n widgets.add(widget);\n this._widgets.set(new Set(widgets));\n }\n }\n\n unregister(widget: ToolbarWidget<V>) {\n const widgets = this._widgets();\n if (widgets.delete(widget)) {\n this._widgets.set(new Set(widgets));\n }\n }\n\n /** Finds the toolbar item associated with a given element. */\n private _getItem(element: Element) {\n const widgetTarget = element.closest('[ngToolbarWidget]');\n return this.items().find(widget => widget.element() === widgetTarget);\n }\n}\n\n/**\n * A widget within a toolbar.\n *\n * The `ngToolbarWidget` directive should be applied to any native HTML element that acts\n * as an interactive widget within an `ngToolbar` or `ngToolbarWidgetGroup`. It enables\n * keyboard navigation and selection within the toolbar.\n *\n * ```html\n * <button ngToolbarWidget value=\"action-id\" [disabled]=\"isDisabled\">\n * Perform Action\n * </button>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngToolbarWidget]',\n exportAs: 'ngToolbarWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.inert]': 'hardDisabled() ? true : null',\n '[attr.disabled]': 'hardDisabled() ? true : null',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[id]': '_pattern.id()',\n },\n})\nexport class ToolbarWidget<V> implements OnInit, OnDestroy {\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 parent Toolbar. */\n private readonly _toolbar = inject(Toolbar);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-toolbar-widget-', true));\n\n /** The parent Toolbar UIPattern. */\n readonly toolbar = computed(() => this._toolbar._pattern);\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the widget is 'hard' disabled, which is different from `aria-disabled`. A hard disabled widget cannot receive focus. */\n readonly hardDisabled = computed(() => this._pattern.disabled() && !this._toolbar.softDisabled());\n\n /** The optional ToolbarWidgetGroup this widget belongs to. */\n readonly _group = inject(ToolbarWidgetGroup, {optional: true});\n\n /** The value associated with the widget. */\n readonly value = input.required<V>();\n\n /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the widget is selected (only relevant in a selection group). */\n readonly selected = () => this._pattern.selected();\n\n readonly group: SignalLike<ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V> | undefined> =\n () => this._group?._pattern;\n\n /** The ToolbarWidget UIPattern. */\n readonly _pattern = new ToolbarWidgetPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n element: () => this.element,\n });\n\n ngOnInit() {\n this._toolbar.register(this);\n }\n\n ngOnDestroy() {\n this._toolbar.unregister(this);\n }\n}\n\n/**\n * A directive that groups toolbar widgets, used for more complex widgets like radio groups\n * that have their own internal navigation.\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngToolbarWidgetGroup]',\n exportAs: 'ngToolbarWidgetGroup',\n})\nexport class ToolbarWidgetGroup<V> {\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 parent Toolbar. */\n private readonly _toolbar = inject(Toolbar, {optional: true});\n\n /** The list of child widgets within the group. */\n private readonly _widgets = contentChildren(ToolbarWidget<V>, {descendants: true});\n\n /** The parent Toolbar UIPattern. */\n readonly toolbar = computed(() => this._toolbar?._pattern);\n\n /** Whether the widget group is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The list of toolbar items within the group. */\n readonly items = () => this._widgets().map(w => w._pattern);\n\n /** Whether the group allows multiple widgets to be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** The ToolbarWidgetGroup UIPattern. */\n readonly _pattern = new ToolbarWidgetGroupPattern<ToolbarWidgetPattern<V>, V>(this);\n}\n"],"names":["sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Toolbar","_elementRef","inject","ElementRef","nativeElement","_widgets","signal","Set","textDirection","Directionality","valueSignal","items","computed","sort","map","widget","_pattern","orientation","input","softDisabled","transform","booleanAttribute","disabled","wrap","ToolbarPattern","activeItem","undefined","getItem","e","_getItem","_hasBeenFocused","constructor","afterRenderEffect","ngDevMode","violations","validate","violation","console","error","setDefaultState","onFocus","set","register","widgets","has","add","unregister","delete","widgetTarget","closest","find","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","listeners","properties","exportAs","ngImport","decorators","args","ToolbarWidget","_toolbar","id","_IdGenerator","getId","toolbar","debugName","hardDisabled","_group","ToolbarWidgetGroup","optional","value","required","active","selected","group","ToolbarWidgetPattern","ngOnInit","ngOnDestroy","contentChildren","descendants","w","multi","ToolbarWidgetGroupPattern","queries","propertyName","predicate"],"mappings":"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"}
|