@angular/aria 21.0.0-rc.1 → 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 +439 -55
- package/_adev_assets/aria-combobox.json +343 -35
- package/_adev_assets/aria-grid.json +345 -77
- package/_adev_assets/aria-listbox.json +113 -33
- package/_adev_assets/aria-menu.json +366 -141
- package/_adev_assets/aria-tabs.json +261 -77
- package/_adev_assets/aria-toolbar.json +72 -33
- package/_adev_assets/aria-tree.json +169 -26
- package/fesm2022/_widget-chunk.mjs +388 -57
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion.mjs +121 -68
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +132 -21
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid.mjs +198 -61
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox.mjs +42 -31
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu.mjs +173 -67
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +415 -439
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/tabs.mjs +86 -55
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +13 -25
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree.mjs +86 -44
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +2 -2
- package/types/_grid-chunk.d.ts +216 -35
- package/types/accordion.d.ts +133 -34
- package/types/combobox.d.ts +145 -12
- package/types/grid.d.ts +149 -31
- package/types/listbox.d.ts +58 -26
- package/types/menu.d.ts +130 -46
- package/types/private.d.ts +210 -250
- package/types/tabs.d.ts +119 -39
- package/types/toolbar.d.ts +49 -29
- package/types/tree.d.ts +113 -41
package/fesm2022/tabs.mjs
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
2
2
|
import { Directionality } from '@angular/cdk/bidi';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import {
|
|
4
|
+
import { inject, ElementRef, signal, computed, Directive, input, booleanAttribute, model, afterRenderEffect } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/aria/private';
|
|
6
6
|
import { TabListPattern, TabPattern, DeferredContentAware, TabPanelPattern, DeferredContent } from '@angular/aria/private';
|
|
7
7
|
|
|
8
8
|
function sortDirectives(a, b) {
|
|
9
|
-
return (a.element
|
|
9
|
+
return (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_PRECEDING) > 0 ? 1 : -1;
|
|
10
10
|
}
|
|
11
11
|
class Tabs {
|
|
12
|
+
_elementRef = inject(ElementRef);
|
|
13
|
+
element = this._elementRef.nativeElement;
|
|
12
14
|
_tablist = signal(undefined, ...(ngDevMode ? [{
|
|
13
15
|
debugName: "_tablist"
|
|
14
16
|
}] : []));
|
|
15
17
|
_unorderedPanels = signal(new Set(), ...(ngDevMode ? [{
|
|
16
18
|
debugName: "_unorderedPanels"
|
|
17
19
|
}] : []));
|
|
18
|
-
|
|
19
|
-
debugName: "
|
|
20
|
+
_tabPatterns = computed(() => this._tablist()?._tabPatterns(), ...(ngDevMode ? [{
|
|
21
|
+
debugName: "_tabPatterns"
|
|
20
22
|
}] : []));
|
|
21
|
-
|
|
22
|
-
debugName: "
|
|
23
|
+
_unorderedTabpanelPatterns = computed(() => [...this._unorderedPanels()].map(tabpanel => tabpanel._pattern), ...(ngDevMode ? [{
|
|
24
|
+
debugName: "_unorderedTabpanelPatterns"
|
|
23
25
|
}] : []));
|
|
24
26
|
register(child) {
|
|
25
27
|
if (child instanceof TabList) {
|
|
@@ -53,9 +55,6 @@ class Tabs {
|
|
|
53
55
|
type: Tabs,
|
|
54
56
|
isStandalone: true,
|
|
55
57
|
selector: "[ngTabs]",
|
|
56
|
-
host: {
|
|
57
|
-
classAttribute: "ng-tabs"
|
|
58
|
-
},
|
|
59
58
|
exportAs: ["ngTabs"],
|
|
60
59
|
ngImport: i0
|
|
61
60
|
});
|
|
@@ -69,23 +68,20 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
69
68
|
type: Directive,
|
|
70
69
|
args: [{
|
|
71
70
|
selector: '[ngTabs]',
|
|
72
|
-
exportAs: 'ngTabs'
|
|
73
|
-
host: {
|
|
74
|
-
'class': 'ng-tabs'
|
|
75
|
-
}
|
|
71
|
+
exportAs: 'ngTabs'
|
|
76
72
|
}]
|
|
77
73
|
}]
|
|
78
74
|
});
|
|
79
75
|
class TabList {
|
|
80
76
|
_elementRef = inject(ElementRef);
|
|
77
|
+
element = this._elementRef.nativeElement;
|
|
81
78
|
_tabs = inject(Tabs);
|
|
82
79
|
_unorderedTabs = signal(new Set(), ...(ngDevMode ? [{
|
|
83
80
|
debugName: "_unorderedTabs"
|
|
84
81
|
}] : []));
|
|
85
|
-
_selection = linkedSignal(() => this.selectedTab() ? [this.selectedTab()] : []);
|
|
86
82
|
textDirection = inject(Directionality).valueSignal;
|
|
87
|
-
|
|
88
|
-
debugName: "
|
|
83
|
+
_tabPatterns = computed(() => [...this._unorderedTabs()].sort(sortDirectives).map(tab => tab._pattern), ...(ngDevMode ? [{
|
|
84
|
+
debugName: "_tabPatterns"
|
|
89
85
|
}] : []));
|
|
90
86
|
orientation = input('horizontal', ...(ngDevMode ? [{
|
|
91
87
|
debugName: "orientation"
|
|
@@ -108,19 +104,18 @@ class TabList {
|
|
|
108
104
|
selectionMode = input('follow', ...(ngDevMode ? [{
|
|
109
105
|
debugName: "selectionMode"
|
|
110
106
|
}] : []));
|
|
107
|
+
selectedTab = model(...(ngDevMode ? [undefined, {
|
|
108
|
+
debugName: "selectedTab"
|
|
109
|
+
}] : []));
|
|
111
110
|
disabled = input(false, ...(ngDevMode ? [{
|
|
112
111
|
debugName: "disabled",
|
|
113
112
|
transform: booleanAttribute
|
|
114
113
|
}] : [{
|
|
115
114
|
transform: booleanAttribute
|
|
116
115
|
}]));
|
|
117
|
-
selectedTab = model(...(ngDevMode ? [undefined, {
|
|
118
|
-
debugName: "selectedTab"
|
|
119
|
-
}] : []));
|
|
120
116
|
_pattern = new TabListPattern({
|
|
121
117
|
...this,
|
|
122
|
-
items: this.
|
|
123
|
-
value: this._selection,
|
|
118
|
+
items: this._tabPatterns,
|
|
124
119
|
activeItem: signal(undefined),
|
|
125
120
|
element: () => this._elementRef.nativeElement
|
|
126
121
|
});
|
|
@@ -128,12 +123,23 @@ class TabList {
|
|
|
128
123
|
debugName: "_hasFocused"
|
|
129
124
|
}] : []));
|
|
130
125
|
constructor() {
|
|
131
|
-
afterRenderEffect(() => this.selectedTab.set(this._selection()[0]));
|
|
132
126
|
afterRenderEffect(() => {
|
|
133
127
|
if (!this._hasFocused()) {
|
|
134
128
|
this._pattern.setDefaultState();
|
|
135
129
|
}
|
|
136
130
|
});
|
|
131
|
+
afterRenderEffect(() => {
|
|
132
|
+
const tab = this._pattern.selectedTab();
|
|
133
|
+
if (tab) {
|
|
134
|
+
this.selectedTab.set(tab.value());
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
afterRenderEffect(() => {
|
|
138
|
+
const value = this.selectedTab();
|
|
139
|
+
if (value) {
|
|
140
|
+
this._pattern.open(value);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
137
143
|
}
|
|
138
144
|
onFocus() {
|
|
139
145
|
this._hasFocused.set(true);
|
|
@@ -152,6 +158,9 @@ class TabList {
|
|
|
152
158
|
this._unorderedTabs().delete(child);
|
|
153
159
|
this._unorderedTabs.set(new Set(this._unorderedTabs()));
|
|
154
160
|
}
|
|
161
|
+
open(value) {
|
|
162
|
+
return this._pattern.open(value);
|
|
163
|
+
}
|
|
155
164
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
156
165
|
minVersion: "12.0.0",
|
|
157
166
|
version: "20.2.0-next.2",
|
|
@@ -202,16 +211,16 @@ class TabList {
|
|
|
202
211
|
isRequired: false,
|
|
203
212
|
transformFunction: null
|
|
204
213
|
},
|
|
205
|
-
|
|
206
|
-
classPropertyName: "
|
|
207
|
-
publicName: "
|
|
214
|
+
selectedTab: {
|
|
215
|
+
classPropertyName: "selectedTab",
|
|
216
|
+
publicName: "selectedTab",
|
|
208
217
|
isSignal: true,
|
|
209
218
|
isRequired: false,
|
|
210
219
|
transformFunction: null
|
|
211
220
|
},
|
|
212
|
-
|
|
213
|
-
classPropertyName: "
|
|
214
|
-
publicName: "
|
|
221
|
+
disabled: {
|
|
222
|
+
classPropertyName: "disabled",
|
|
223
|
+
publicName: "disabled",
|
|
215
224
|
isSignal: true,
|
|
216
225
|
isRequired: false,
|
|
217
226
|
transformFunction: null
|
|
@@ -234,8 +243,7 @@ class TabList {
|
|
|
234
243
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
235
244
|
"attr.aria-orientation": "_pattern.orientation()",
|
|
236
245
|
"attr.aria-activedescendant": "_pattern.activeDescendant()"
|
|
237
|
-
}
|
|
238
|
-
classAttribute: "ng-tablist"
|
|
246
|
+
}
|
|
239
247
|
},
|
|
240
248
|
exportAs: ["ngTabList"],
|
|
241
249
|
ngImport: i0
|
|
@@ -253,7 +261,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
253
261
|
exportAs: 'ngTabList',
|
|
254
262
|
host: {
|
|
255
263
|
'role': 'tablist',
|
|
256
|
-
'class': 'ng-tablist',
|
|
257
264
|
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
258
265
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
259
266
|
'[attr.aria-orientation]': '_pattern.orientation()',
|
|
@@ -268,16 +275,16 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
268
275
|
});
|
|
269
276
|
class Tab {
|
|
270
277
|
_elementRef = inject(ElementRef);
|
|
278
|
+
element = this._elementRef.nativeElement;
|
|
271
279
|
_tabs = inject(Tabs);
|
|
272
280
|
_tabList = inject(TabList);
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
debugName: "element"
|
|
281
|
+
id = input(inject(_IdGenerator).getId('ng-tab-', true), ...(ngDevMode ? [{
|
|
282
|
+
debugName: "id"
|
|
276
283
|
}] : []));
|
|
277
284
|
tablist = computed(() => this._tabList._pattern, ...(ngDevMode ? [{
|
|
278
285
|
debugName: "tablist"
|
|
279
286
|
}] : []));
|
|
280
|
-
tabpanel = computed(() => this._tabs.
|
|
287
|
+
tabpanel = computed(() => this._tabs._unorderedTabpanelPatterns().find(tabpanel => tabpanel.value() === this.value()), ...(ngDevMode ? [{
|
|
281
288
|
debugName: "tabpanel"
|
|
282
289
|
}] : []));
|
|
283
290
|
disabled = input(false, ...(ngDevMode ? [{
|
|
@@ -289,13 +296,22 @@ class Tab {
|
|
|
289
296
|
value = input.required(...(ngDevMode ? [{
|
|
290
297
|
debugName: "value"
|
|
291
298
|
}] : []));
|
|
299
|
+
active = computed(() => this._pattern.active(), ...(ngDevMode ? [{
|
|
300
|
+
debugName: "active"
|
|
301
|
+
}] : []));
|
|
302
|
+
selected = computed(() => this._pattern.selected(), ...(ngDevMode ? [{
|
|
303
|
+
debugName: "selected"
|
|
304
|
+
}] : []));
|
|
292
305
|
_pattern = new TabPattern({
|
|
293
306
|
...this,
|
|
294
|
-
id: () => this._id,
|
|
295
307
|
tablist: this.tablist,
|
|
296
308
|
tabpanel: this.tabpanel,
|
|
297
|
-
|
|
309
|
+
expanded: signal(false),
|
|
310
|
+
element: () => this.element
|
|
298
311
|
});
|
|
312
|
+
open() {
|
|
313
|
+
this._pattern.open();
|
|
314
|
+
}
|
|
299
315
|
ngOnInit() {
|
|
300
316
|
this._tabList.register(this);
|
|
301
317
|
}
|
|
@@ -317,6 +333,13 @@ class Tab {
|
|
|
317
333
|
isStandalone: true,
|
|
318
334
|
selector: "[ngTab]",
|
|
319
335
|
inputs: {
|
|
336
|
+
id: {
|
|
337
|
+
classPropertyName: "id",
|
|
338
|
+
publicName: "id",
|
|
339
|
+
isSignal: true,
|
|
340
|
+
isRequired: false,
|
|
341
|
+
transformFunction: null
|
|
342
|
+
},
|
|
320
343
|
disabled: {
|
|
321
344
|
classPropertyName: "disabled",
|
|
322
345
|
publicName: "disabled",
|
|
@@ -337,14 +360,13 @@ class Tab {
|
|
|
337
360
|
"role": "tab"
|
|
338
361
|
},
|
|
339
362
|
properties: {
|
|
340
|
-
"attr.data-active": "
|
|
363
|
+
"attr.data-active": "active()",
|
|
341
364
|
"attr.id": "_pattern.id()",
|
|
342
365
|
"attr.tabindex": "_pattern.tabIndex()",
|
|
343
|
-
"attr.aria-selected": "
|
|
366
|
+
"attr.aria-selected": "selected()",
|
|
344
367
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
345
368
|
"attr.aria-controls": "_pattern.controls()"
|
|
346
|
-
}
|
|
347
|
-
classAttribute: "ng-tab"
|
|
369
|
+
}
|
|
348
370
|
},
|
|
349
371
|
exportAs: ["ngTab"],
|
|
350
372
|
ngImport: i0
|
|
@@ -362,11 +384,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
362
384
|
exportAs: 'ngTab',
|
|
363
385
|
host: {
|
|
364
386
|
'role': 'tab',
|
|
365
|
-
'
|
|
366
|
-
'[attr.data-active]': '_pattern.active()',
|
|
387
|
+
'[attr.data-active]': 'active()',
|
|
367
388
|
'[attr.id]': '_pattern.id()',
|
|
368
389
|
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
369
|
-
'[attr.aria-selected]': '
|
|
390
|
+
'[attr.aria-selected]': 'selected()',
|
|
370
391
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
371
392
|
'[attr.aria-controls]': '_pattern.controls()'
|
|
372
393
|
}
|
|
@@ -374,22 +395,27 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
374
395
|
}]
|
|
375
396
|
});
|
|
376
397
|
class TabPanel {
|
|
398
|
+
_elementRef = inject(ElementRef);
|
|
399
|
+
element = this._elementRef.nativeElement;
|
|
377
400
|
_deferredContentAware = inject(DeferredContentAware);
|
|
378
401
|
_Tabs = inject(Tabs);
|
|
379
|
-
|
|
380
|
-
|
|
402
|
+
id = input(inject(_IdGenerator).getId('ng-tabpanel-', true), ...(ngDevMode ? [{
|
|
403
|
+
debugName: "id"
|
|
404
|
+
}] : []));
|
|
405
|
+
tab = computed(() => this._Tabs._tabPatterns()?.find(tab => tab.value() === this.value()), ...(ngDevMode ? [{
|
|
381
406
|
debugName: "tab"
|
|
382
407
|
}] : []));
|
|
383
408
|
value = input.required(...(ngDevMode ? [{
|
|
384
409
|
debugName: "value"
|
|
385
410
|
}] : []));
|
|
411
|
+
visible = computed(() => !this._pattern.hidden(), ...(ngDevMode ? [{
|
|
412
|
+
debugName: "visible"
|
|
413
|
+
}] : []));
|
|
386
414
|
_pattern = new TabPanelPattern({
|
|
387
|
-
...this
|
|
388
|
-
id: () => this._id,
|
|
389
|
-
tab: this.tab
|
|
415
|
+
...this
|
|
390
416
|
});
|
|
391
417
|
constructor() {
|
|
392
|
-
afterRenderEffect(() => this._deferredContentAware.contentVisible.set(
|
|
418
|
+
afterRenderEffect(() => this._deferredContentAware.contentVisible.set(this.visible()));
|
|
393
419
|
}
|
|
394
420
|
ngOnInit() {
|
|
395
421
|
this._Tabs.register(this);
|
|
@@ -412,6 +438,13 @@ class TabPanel {
|
|
|
412
438
|
isStandalone: true,
|
|
413
439
|
selector: "[ngTabPanel]",
|
|
414
440
|
inputs: {
|
|
441
|
+
id: {
|
|
442
|
+
classPropertyName: "id",
|
|
443
|
+
publicName: "id",
|
|
444
|
+
isSignal: true,
|
|
445
|
+
isRequired: false,
|
|
446
|
+
transformFunction: null
|
|
447
|
+
},
|
|
415
448
|
value: {
|
|
416
449
|
classPropertyName: "value",
|
|
417
450
|
publicName: "value",
|
|
@@ -427,10 +460,9 @@ class TabPanel {
|
|
|
427
460
|
properties: {
|
|
428
461
|
"attr.id": "_pattern.id()",
|
|
429
462
|
"attr.tabindex": "_pattern.tabIndex()",
|
|
430
|
-
"attr.inert": "
|
|
463
|
+
"attr.inert": "!visible() ? true : null",
|
|
431
464
|
"attr.aria-labelledby": "_pattern.labelledBy()"
|
|
432
|
-
}
|
|
433
|
-
classAttribute: "ng-tabpanel"
|
|
465
|
+
}
|
|
434
466
|
},
|
|
435
467
|
exportAs: ["ngTabPanel"],
|
|
436
468
|
hostDirectives: [{
|
|
@@ -452,10 +484,9 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
452
484
|
exportAs: 'ngTabPanel',
|
|
453
485
|
host: {
|
|
454
486
|
'role': 'tabpanel',
|
|
455
|
-
'class': 'ng-tabpanel',
|
|
456
487
|
'[attr.id]': '_pattern.id()',
|
|
457
488
|
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
458
|
-
'[attr.inert]': '
|
|
489
|
+
'[attr.inert]': '!visible() ? true : null',
|
|
459
490
|
'[attr.aria-labelledby]': '_pattern.labelledBy()'
|
|
460
491
|
},
|
|
461
492
|
hostDirectives: [{
|
package/fesm2022/tabs.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/aria/tabs/tabs.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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n linkedSignal,\n signal,\n Signal,\n afterRenderEffect,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {\n TabListPattern,\n TabPanelPattern,\n TabPattern,\n DeferredContent,\n DeferredContentAware,\n} from '@angular/aria/private';\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 Tabs container.\n *\n * Represents a set of layered sections of content. The Tabs is a container meant to be used with\n * TabList, Tab, and TabPanel as follows:\n *\n * ```html\n * <div ngTabs>\n * <ul ngTabList>\n * <li ngTab value=\"tab1\">Tab 1</li>\n * <li ngTab value=\"tab2\">Tab 2</li>\n * <li ngTab value=\"tab3\">Tab 3</li>\n * </ul>\n *\n * <div ngTabPanel value=\"tab1\">\n * <ng-template ngTabContent>Tab content 1</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab2\">\n * <ng-template ngTabContent>Tab content 2</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab3\">\n * <ng-template ngTabContent>Tab content 3</ng-template>\n * </div>\n * ```\n */\n@Directive({\n selector: '[ngTabs]',\n exportAs: 'ngTabs',\n host: {\n 'class': 'ng-tabs',\n },\n})\nexport class Tabs {\n /** The TabList nested inside of the container. */\n private readonly _tablist = signal<TabList | undefined>(undefined);\n\n /** The TabPanels nested inside of the container. */\n private readonly _unorderedPanels = signal(new Set<TabPanel>());\n\n /** The Tab UIPattern of the child Tabs. */\n tabs = computed(() => this._tablist()?.tabs());\n\n /** The TabPanel UIPattern of the child TabPanels. */\n unorderedTabpanels = computed(() =>\n [...this._unorderedPanels()].map(tabpanel => tabpanel._pattern),\n );\n\n register(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(child);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().add(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n\n deregister(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(undefined);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().delete(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n}\n\n/**\n * A TabList container.\n *\n * Controls a list of Tab(s).\n */\n@Directive({\n selector: '[ngTabList]',\n exportAs: 'ngTabList',\n host: {\n 'role': 'tablist',\n 'class': 'ng-tablist',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': 'onFocus()',\n },\n})\nexport class TabList implements OnInit, OnDestroy {\n /** A reference to the tab list element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent Tabs. */\n private readonly _tabs = inject(Tabs);\n\n /** The Tabs nested inside of the TabList. */\n private readonly _unorderedTabs = signal(new Set<Tab>());\n\n /** The internal tab selection state. */\n private readonly _selection = linkedSignal(() =>\n this.selectedTab() ? [this.selectedTab()!] : [],\n );\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The Tab UIPatterns of the child Tabs. */\n readonly tabs = computed(() =>\n [...this._unorderedTabs()].sort(sortDirectives).map(tab => tab._pattern),\n );\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /** Whether to allow disabled items to receive focus. */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** The focus strategy used by the tablist. */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** The selection strategy used by the tablist. */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** Whether the tablist is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The current selected tab. */\n readonly selectedTab = model<string | undefined>();\n\n /** The TabList UIPattern. */\n readonly _pattern: TabListPattern = new TabListPattern({\n ...this,\n items: this.tabs,\n value: this._selection,\n activeItem: signal(undefined),\n element: () => this._elementRef.nativeElement,\n });\n\n /** Whether the tree has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n afterRenderEffect(() => this.selectedTab.set(this._selection()[0]));\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 ngOnInit() {\n this._tabs.register(this);\n }\n\n ngOnDestroy() {\n this._tabs.deregister(this);\n }\n\n register(child: Tab) {\n this._unorderedTabs().add(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n deregister(child: Tab) {\n this._unorderedTabs().delete(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n}\n\n/** A selectable tab in a TabList. */\n@Directive({\n selector: '[ngTab]',\n exportAs: 'ngTab',\n host: {\n 'role': 'tab',\n 'class': 'ng-tab',\n '[attr.data-active]': '_pattern.active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.controls()',\n },\n})\nexport class Tab implements HasElement, OnInit, OnDestroy {\n /** A reference to the tab element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent Tabs. */\n private readonly _tabs = inject(Tabs);\n\n /** The parent TabList. */\n private readonly _tabList = inject(TabList);\n\n /** A global unique identifier for the tab. */\n private readonly _id = inject(_IdGenerator).getId('ng-tab-');\n\n /** The host native element. */\n readonly element = computed(() => this._elementRef.nativeElement);\n\n /** The parent TabList UIPattern. */\n readonly tablist = computed(() => this._tabList._pattern);\n\n /** The TabPanel UIPattern associated with the tab */\n readonly tabpanel = computed(() =>\n this._tabs.unorderedTabpanels().find(tabpanel => tabpanel.value() === this.value()),\n );\n\n /** Whether a tab is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** A local unique identifier for the tab. */\n readonly value = input.required<string>();\n\n /** The Tab UIPattern. */\n readonly _pattern: TabPattern = new TabPattern({\n ...this,\n id: () => this._id,\n tablist: this.tablist,\n tabpanel: this.tabpanel,\n value: this.value,\n });\n\n ngOnInit() {\n this._tabList.register(this);\n }\n\n ngOnDestroy() {\n this._tabList.deregister(this);\n }\n}\n\n/**\n * A TabPanel container for the resources of layered content associated with a tab.\n *\n * If a tabpanel is hidden due to its corresponding tab is not activated, the `inert` attribute\n * will be applied to the tabpanel element to remove it from the accessibility tree and stop\n * all the keyboard and pointer interactions. Note that this does not visually hide the tabpenl\n * and a proper styling is required.\n */\n@Directive({\n selector: '[ngTabPanel]',\n exportAs: 'ngTabPanel',\n host: {\n 'role': 'tabpanel',\n 'class': 'ng-tabpanel',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.inert]': '_pattern.hidden() ? true : null',\n '[attr.aria-labelledby]': '_pattern.labelledBy()',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class TabPanel implements OnInit, OnDestroy {\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware);\n\n /** The parent Tabs. */\n private readonly _Tabs = inject(Tabs);\n\n /** A global unique identifier for the tab. */\n private readonly _id = inject(_IdGenerator).getId('ng-tabpanel-', true);\n\n /** The Tab UIPattern associated with the tabpanel */\n readonly tab = computed(() => this._Tabs.tabs()?.find(tab => tab.value() === this.value()));\n\n /** A local unique identifier for the tabpanel. */\n readonly value = input.required<string>();\n\n /** The TabPanel UIPattern. */\n readonly _pattern: TabPanelPattern = new TabPanelPattern({\n ...this,\n id: () => this._id,\n tab: this.tab,\n });\n\n constructor() {\n afterRenderEffect(() => this._deferredContentAware.contentVisible.set(!this._pattern.hidden()));\n }\n\n ngOnInit() {\n this._Tabs.register(this);\n }\n\n ngOnDestroy() {\n this._Tabs.deregister(this);\n }\n}\n\n/**\n * A TabContent container for the lazy-loaded content.\n */\n@Directive({\n selector: 'ng-template[ngTabContent]',\n exportAs: 'ngTabContent',\n hostDirectives: [DeferredContent],\n})\nexport class TabContent {}\n"],"names":["sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Tabs","_tablist","signal","undefined","_unorderedPanels","Set","tabs","computed","unorderedTabpanels","map","tabpanel","_pattern","ngDevMode","debugName","register","child","TabList","set","TabPanel","add","deregister","delete","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","exportAs","ngImport","decorators","args","_elementRef","inject","ElementRef","_tabs","_unorderedTabs","_selection","linkedSignal","selectedTab","textDirection","Directionality","valueSignal","sort","tab","orientation","input","wrap","transform","booleanAttribute","softDisabled","focusMode","selectionMode","disabled","model","TabListPattern","items","value","activeItem","nativeElement","_hasFocused","constructor","afterRenderEffect","setDefaultState","onFocus","ngOnInit","ngOnDestroy","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","attributes","listeners","properties","Tab","_tabList","_id","_IdGenerator","getId","tablist","find","required","TabPattern","id","_deferredContentAware","DeferredContentAware","_Tabs","TabPanelPattern","contentVisible","hidden","hostDirectives","directive","i1","TabContent","DeferredContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/aria/tabs/tabs.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 {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n signal,\n afterRenderEffect,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {\n TabListPattern,\n TabPanelPattern,\n TabPattern,\n DeferredContent,\n DeferredContentAware,\n} from '@angular/aria/private';\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 Tabs container.\n *\n * The `ngTabs` directive represents a set of layered sections of content. It acts as the\n * overarching container for a tabbed interface, coordinating the behavior of `ngTabList`,\n * `ngTab`, and `ngTabPanel` directives.\n *\n * ```html\n * <div ngTabs>\n * <ul ngTabList [(selectedTab)]=\"selectedTabValue\">\n * <li ngTab value=\"tab1\">Tab 1</li>\n * <li ngTab value=\"tab2\">Tab 2</li>\n * <li ngTab value=\"tab3\">Tab 3</li>\n * </ul>\n *\n * <div ngTabPanel value=\"tab1\">\n * <ng-template ngTabContent>Content for Tab 1</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab2\">\n * <ng-template ngTabContent>Content for Tab 2</ng-template>\n * </div>\n * <div ngTabPanel value=\"tab3\">\n * <ng-template ngTabContent>Content for Tab 3</ng-template>\n * </div>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngTabs]',\n exportAs: 'ngTabs',\n})\nexport class Tabs {\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 _tablist = signal<TabList | undefined>(undefined);\n\n /** The TabPanels nested inside of the container. */\n private readonly _unorderedPanels = signal(new Set<TabPanel>());\n\n /** The Tab UIPattern of the child Tabs. */\n readonly _tabPatterns = computed(() => this._tablist()?._tabPatterns());\n\n /** The TabPanel UIPattern of the child TabPanels. */\n readonly _unorderedTabpanelPatterns = computed(() =>\n [...this._unorderedPanels()].map(tabpanel => tabpanel._pattern),\n );\n\n register(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(child);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().add(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n\n deregister(child: TabList | TabPanel) {\n if (child instanceof TabList) {\n this._tablist.set(undefined);\n }\n\n if (child instanceof TabPanel) {\n this._unorderedPanels().delete(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n}\n\n/**\n * A TabList container.\n *\n * The `ngTabList` directive controls a list of `ngTab` elements. It manages keyboard\n * navigation, selection, and the overall orientation of the tabs. It should be placed\n * within an `ngTabs` container.\n *\n * ```html\n * <ul ngTabList [(selectedTab)]=\"mySelectedTab\" orientation=\"horizontal\" selectionMode=\"explicit\">\n * <li ngTab value=\"first\">First Tab</li>\n * <li ngTab value=\"second\">Second Tab</li>\n * </ul>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngTabList]',\n exportAs: 'ngTabList',\n host: {\n 'role': 'tablist',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(pointerdown)': '_pattern.onPointerdown($event)',\n '(focusin)': 'onFocus()',\n },\n})\nexport class TabList 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 Tabs. */\n private readonly _tabs = inject(Tabs);\n\n /** The Tabs nested inside of the TabList. */\n private readonly _unorderedTabs = signal(new Set<Tab>());\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** The Tab UIPatterns of the child Tabs. */\n readonly _tabPatterns = computed(() =>\n [...this._unorderedTabs()].sort(sortDirectives).map(tab => tab._pattern),\n );\n\n /** Whether the tablist is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether focus should wrap when navigating. */\n readonly 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 readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the tablist.\n * - `roving`: Focus is moved to the active tab using `tabindex`.\n * - `activedescendant`: Focus remains on the tablist container, and `aria-activedescendant` is used to indicate the active tab.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the tablist.\n * - `follow`: The focused tab is automatically selected.\n * - `explicit`: Tabs are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The current selected tab. */\n readonly selectedTab = model<string | undefined>();\n\n /** Whether the tablist is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The TabList UIPattern. */\n readonly _pattern: TabListPattern = new TabListPattern({\n ...this,\n items: this._tabPatterns,\n activeItem: signal(undefined),\n element: () => this._elementRef.nativeElement,\n });\n\n /** Whether the tree has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n afterRenderEffect(() => {\n if (!this._hasFocused()) {\n this._pattern.setDefaultState();\n }\n });\n\n afterRenderEffect(() => {\n const tab = this._pattern.selectedTab();\n if (tab) {\n this.selectedTab.set(tab.value());\n }\n });\n\n afterRenderEffect(() => {\n const value = this.selectedTab();\n if (value) {\n this._pattern.open(value);\n }\n });\n }\n\n onFocus() {\n this._hasFocused.set(true);\n }\n\n ngOnInit() {\n this._tabs.register(this);\n }\n\n ngOnDestroy() {\n this._tabs.deregister(this);\n }\n\n register(child: Tab) {\n this._unorderedTabs().add(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n deregister(child: Tab) {\n this._unorderedTabs().delete(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n /** Opens the tab panel with the specified value. */\n open(value: string): boolean {\n return this._pattern.open(value);\n }\n}\n\n/**\n * A selectable tab in a TabList.\n *\n * The `ngTab` directive represents an individual tab control within an `ngTabList`. It\n * requires a `value` that uniquely identifies it and links it to a corresponding `ngTabPanel`.\n *\n * ```html\n * <li ngTab value=\"myTabId\" [disabled]=\"isTabDisabled\">\n * My Tab Label\n * </li>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngTab]',\n exportAs: 'ngTab',\n host: {\n 'role': 'tab',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-controls]': '_pattern.controls()',\n },\n})\nexport class Tab implements HasElement, 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 Tabs. */\n private readonly _tabs = inject(Tabs);\n\n /** The parent TabList. */\n private readonly _tabList = inject(TabList);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-tab-', true));\n\n /** The parent TabList UIPattern. */\n readonly tablist = computed(() => this._tabList._pattern);\n\n /** The TabPanel UIPattern associated with the tab */\n readonly tabpanel = computed(() =>\n this._tabs._unorderedTabpanelPatterns().find(tabpanel => tabpanel.value() === this.value()),\n );\n\n /** Whether a tab is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The remote tabpanel unique identifier. */\n readonly value = input.required<string>();\n\n /** Whether the tab is active. */\n readonly active = computed(() => this._pattern.active());\n\n /** Whether the tab is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Tab UIPattern. */\n readonly _pattern: TabPattern = new TabPattern({\n ...this,\n tablist: this.tablist,\n tabpanel: this.tabpanel,\n expanded: signal(false),\n element: () => this.element,\n });\n\n /** Opens this tab panel. */\n open() {\n this._pattern.open();\n }\n\n ngOnInit() {\n this._tabList.register(this);\n }\n\n ngOnDestroy() {\n this._tabList.deregister(this);\n }\n}\n\n/**\n * A TabPanel container for the resources of layered content associated with a tab.\n *\n * The `ngTabPanel` directive holds the content for a specific tab. It is linked to an\n * `ngTab` by a matching `value`. If a tab panel is hidden, the `inert` attribute will be\n * applied to remove it from the accessibility tree. Proper styling is required for visual hiding.\n *\n * ```html\n * <div ngTabPanel value=\"myTabId\">\n * <ng-template ngTabContent>\n * <!-- Content for the tab panel -->\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: '[ngTabPanel]',\n exportAs: 'ngTabPanel',\n host: {\n 'role': 'tabpanel',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.inert]': '!visible() ? true : null',\n '[attr.aria-labelledby]': '_pattern.labelledBy()',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class TabPanel 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 DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware);\n\n /** The parent Tabs. */\n private readonly _Tabs = inject(Tabs);\n\n /** A global unique identifier for the tab. */\n readonly id = input(inject(_IdGenerator).getId('ng-tabpanel-', true));\n\n /** The Tab UIPattern associated with the tabpanel */\n readonly tab = computed(() =>\n this._Tabs._tabPatterns()?.find(tab => tab.value() === this.value()),\n );\n\n /** A local unique identifier for the tabpanel. */\n readonly value = input.required<string>();\n\n /** Whether the tab panel is visible. */\n readonly visible = computed(() => !this._pattern.hidden());\n\n /** The TabPanel UIPattern. */\n readonly _pattern: TabPanelPattern = new TabPanelPattern({\n ...this,\n });\n\n constructor() {\n afterRenderEffect(() => this._deferredContentAware.contentVisible.set(this.visible()));\n }\n\n ngOnInit() {\n this._Tabs.register(this);\n }\n\n ngOnDestroy() {\n this._Tabs.deregister(this);\n }\n}\n\n/**\n * A TabContent container for the lazy-loaded content.\n *\n * This structural directive should be applied to an `ng-template` within an `ngTabPanel`.\n * It enables lazy loading of the tab's content, meaning the content is only rendered\n * when the tab is activated for the first time.\n *\n * ```html\n * <div ngTabPanel value=\"myTabId\">\n * <ng-template ngTabContent>\n * <p>This content will be loaded when 'myTabId' is selected.</p>\n * </ng-template>\n * </div>\n * ```\n *\n * @developerPreview 21.0\n */\n@Directive({\n selector: 'ng-template[ngTabContent]',\n exportAs: 'ngTabContent',\n hostDirectives: [DeferredContent],\n})\nexport class TabContent {}\n"],"names":["sortDirectives","a","b","element","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","Tabs","_elementRef","inject","ElementRef","nativeElement","_tablist","signal","undefined","_unorderedPanels","Set","_tabPatterns","computed","_unorderedTabpanelPatterns","map","tabpanel","_pattern","ngDevMode","debugName","register","child","TabList","set","TabPanel","add","deregister","delete","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","exportAs","ngImport","decorators","args","_tabs","_unorderedTabs","textDirection","Directionality","valueSignal","sort","tab","orientation","input","wrap","transform","booleanAttribute","softDisabled","focusMode","selectionMode","selectedTab","model","disabled","TabListPattern","items","activeItem","_hasFocused","constructor","afterRenderEffect","setDefaultState","value","open","onFocus","ngOnInit","ngOnDestroy","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","Tab","_tabList","id","_IdGenerator","getId","tablist","find","required","active","selected","TabPattern","expanded","_deferredContentAware","DeferredContentAware","_Tabs","visible","hidden","TabPanelPattern","contentVisible","hostDirectives","directive","i1","TabContent","DeferredContent"],"mappings":"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"}
|
package/fesm2022/toolbar.mjs
CHANGED
|
@@ -5,10 +5,11 @@ 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
|
}] : []));
|
|
@@ -79,7 +80,7 @@ class Toolbar {
|
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
_getItem(element) {
|
|
82
|
-
const widgetTarget = element.closest('
|
|
83
|
+
const widgetTarget = element.closest('[ngToolbarWidget]');
|
|
83
84
|
return this.items().find(widget => widget.element() === widgetTarget);
|
|
84
85
|
}
|
|
85
86
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
@@ -140,8 +141,7 @@ class Toolbar {
|
|
|
140
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,7 +159,6 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
159
159
|
exportAs: 'ngToolbar',
|
|
160
160
|
host: {
|
|
161
161
|
'role': 'toolbar',
|
|
162
|
-
'class': 'ng-toolbar',
|
|
163
162
|
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
164
163
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
165
164
|
'[attr.aria-orientation]': '_pattern.orientation()',
|
|
@@ -174,17 +173,14 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
174
173
|
});
|
|
175
174
|
class ToolbarWidget {
|
|
176
175
|
_elementRef = inject(ElementRef);
|
|
176
|
+
element = this._elementRef.nativeElement;
|
|
177
177
|
_toolbar = inject(Toolbar);
|
|
178
|
-
|
|
179
|
-
id = input(this._generatedId, ...(ngDevMode ? [{
|
|
178
|
+
id = input(inject(_IdGenerator).getId('ng-toolbar-widget-', true), ...(ngDevMode ? [{
|
|
180
179
|
debugName: "id"
|
|
181
180
|
}] : []));
|
|
182
181
|
toolbar = computed(() => this._toolbar._pattern, ...(ngDevMode ? [{
|
|
183
182
|
debugName: "toolbar"
|
|
184
183
|
}] : []));
|
|
185
|
-
element = computed(() => this._elementRef.nativeElement, ...(ngDevMode ? [{
|
|
186
|
-
debugName: "element"
|
|
187
|
-
}] : []));
|
|
188
184
|
disabled = input(false, ...(ngDevMode ? [{
|
|
189
185
|
debugName: "disabled",
|
|
190
186
|
transform: booleanAttribute
|
|
@@ -209,7 +205,7 @@ class ToolbarWidget {
|
|
|
209
205
|
...this,
|
|
210
206
|
id: this.id,
|
|
211
207
|
value: this.value,
|
|
212
|
-
element: this.element
|
|
208
|
+
element: () => this.element
|
|
213
209
|
});
|
|
214
210
|
ngOnInit() {
|
|
215
211
|
this._toolbar.register(this);
|
|
@@ -256,14 +252,13 @@ class ToolbarWidget {
|
|
|
256
252
|
},
|
|
257
253
|
host: {
|
|
258
254
|
properties: {
|
|
259
|
-
"attr.data-active": "
|
|
255
|
+
"attr.data-active": "active()",
|
|
260
256
|
"attr.tabindex": "_pattern.tabIndex()",
|
|
261
257
|
"attr.inert": "hardDisabled() ? true : null",
|
|
262
258
|
"attr.disabled": "hardDisabled() ? true : null",
|
|
263
259
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
264
260
|
"id": "_pattern.id()"
|
|
265
|
-
}
|
|
266
|
-
classAttribute: "ng-toolbar-widget"
|
|
261
|
+
}
|
|
267
262
|
},
|
|
268
263
|
exportAs: ["ngToolbarWidget"],
|
|
269
264
|
ngImport: i0
|
|
@@ -280,8 +275,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
280
275
|
selector: '[ngToolbarWidget]',
|
|
281
276
|
exportAs: 'ngToolbarWidget',
|
|
282
277
|
host: {
|
|
283
|
-
'
|
|
284
|
-
'[attr.data-active]': '_pattern.active()',
|
|
278
|
+
'[attr.data-active]': 'active()',
|
|
285
279
|
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
286
280
|
'[attr.inert]': 'hardDisabled() ? true : null',
|
|
287
281
|
'[attr.disabled]': 'hardDisabled() ? true : null',
|
|
@@ -292,6 +286,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
292
286
|
}]
|
|
293
287
|
});
|
|
294
288
|
class ToolbarWidgetGroup {
|
|
289
|
+
_elementRef = inject(ElementRef);
|
|
290
|
+
element = this._elementRef.nativeElement;
|
|
295
291
|
_toolbar = inject(Toolbar, {
|
|
296
292
|
optional: true
|
|
297
293
|
});
|
|
@@ -348,11 +344,6 @@ class ToolbarWidgetGroup {
|
|
|
348
344
|
transformFunction: null
|
|
349
345
|
}
|
|
350
346
|
},
|
|
351
|
-
host: {
|
|
352
|
-
properties: {
|
|
353
|
-
"class.ng-toolbar-widget-group": "!!toolbar()"
|
|
354
|
-
}
|
|
355
|
-
},
|
|
356
347
|
queries: [{
|
|
357
348
|
propertyName: "_widgets",
|
|
358
349
|
predicate: ToolbarWidget,
|
|
@@ -372,10 +363,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
372
363
|
type: Directive,
|
|
373
364
|
args: [{
|
|
374
365
|
selector: '[ngToolbarWidgetGroup]',
|
|
375
|
-
exportAs: 'ngToolbarWidgetGroup'
|
|
376
|
-
host: {
|
|
377
|
-
'[class.ng-toolbar-widget-group]': '!!toolbar()'
|
|
378
|
-
}
|
|
366
|
+
exportAs: 'ngToolbarWidgetGroup'
|
|
379
367
|
}]
|
|
380
368
|
}]
|
|
381
369
|
});
|