@angular/aria 21.0.0-rc.0 → 21.0.0-rc.1
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 +14 -14
- package/_adev_assets/aria-combobox.json +10 -10
- package/_adev_assets/aria-grid.json +81 -12
- package/_adev_assets/aria-listbox.json +3 -3
- package/_adev_assets/aria-menu.json +174 -74
- package/_adev_assets/aria-tabs.json +22 -22
- package/_adev_assets/aria-toolbar.json +99 -120
- package/_adev_assets/aria-tree.json +20 -16
- package/fesm2022/_widget-chunk.mjs +266 -144
- package/fesm2022/_widget-chunk.mjs.map +1 -1
- package/fesm2022/accordion.mjs +12 -13
- package/fesm2022/accordion.mjs.map +1 -1
- package/fesm2022/aria.mjs +1 -1
- package/fesm2022/aria.mjs.map +1 -1
- package/fesm2022/combobox.mjs +9 -7
- package/fesm2022/combobox.mjs.map +1 -1
- package/fesm2022/grid.mjs +61 -12
- package/fesm2022/grid.mjs.map +1 -1
- package/fesm2022/listbox.mjs +14 -15
- package/fesm2022/listbox.mjs.map +1 -1
- package/fesm2022/menu.mjs +117 -61
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/private.mjs +390 -399
- package/fesm2022/private.mjs.map +1 -1
- package/fesm2022/tabs.mjs +16 -17
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +79 -44
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tree.mjs +22 -19
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +2 -10
- package/types/_grid-chunk.d.ts +115 -53
- package/types/accordion.d.ts +4 -4
- package/types/combobox.d.ts +2 -2
- package/types/grid.d.ts +12 -3
- package/types/listbox.d.ts +3 -4
- package/types/menu.d.ts +33 -21
- package/types/private.d.ts +263 -341
- package/types/tabs.d.ts +4 -4
- package/types/toolbar.d.ts +29 -26
- package/types/tree.d.ts +5 -6
- 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/tabs.mjs
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import * as i1 from '@angular/aria/deferred-content';
|
|
2
|
-
import { DeferredContentAware, DeferredContent } from '@angular/aria/deferred-content';
|
|
3
1
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
4
2
|
import { Directionality } from '@angular/cdk/bidi';
|
|
5
3
|
import * as i0 from '@angular/core';
|
|
6
4
|
import { signal, computed, Directive, inject, ElementRef, linkedSignal, input, booleanAttribute, model, afterRenderEffect } from '@angular/core';
|
|
7
|
-
import
|
|
5
|
+
import * as i1 from '@angular/aria/private';
|
|
6
|
+
import { TabListPattern, TabPattern, DeferredContentAware, TabPanelPattern, DeferredContent } from '@angular/aria/private';
|
|
8
7
|
|
|
9
8
|
function sortDirectives(a, b) {
|
|
10
9
|
return (a.element().compareDocumentPosition(b.element()) & Node.DOCUMENT_POSITION_PRECEDING) > 0 ? 1 : -1;
|
|
@@ -97,8 +96,8 @@ class TabList {
|
|
|
97
96
|
}] : [{
|
|
98
97
|
transform: booleanAttribute
|
|
99
98
|
}]));
|
|
100
|
-
|
|
101
|
-
debugName: "
|
|
99
|
+
softDisabled = input(true, ...(ngDevMode ? [{
|
|
100
|
+
debugName: "softDisabled",
|
|
102
101
|
transform: booleanAttribute
|
|
103
102
|
}] : [{
|
|
104
103
|
transform: booleanAttribute
|
|
@@ -182,9 +181,9 @@ class TabList {
|
|
|
182
181
|
isRequired: false,
|
|
183
182
|
transformFunction: null
|
|
184
183
|
},
|
|
185
|
-
|
|
186
|
-
classPropertyName: "
|
|
187
|
-
publicName: "
|
|
184
|
+
softDisabled: {
|
|
185
|
+
classPropertyName: "softDisabled",
|
|
186
|
+
publicName: "softDisabled",
|
|
188
187
|
isSignal: true,
|
|
189
188
|
isRequired: false,
|
|
190
189
|
transformFunction: null
|
|
@@ -231,10 +230,10 @@ class TabList {
|
|
|
231
230
|
"focusin": "onFocus()"
|
|
232
231
|
},
|
|
233
232
|
properties: {
|
|
234
|
-
"attr.tabindex": "_pattern.
|
|
233
|
+
"attr.tabindex": "_pattern.tabIndex()",
|
|
235
234
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
236
235
|
"attr.aria-orientation": "_pattern.orientation()",
|
|
237
|
-
"attr.aria-activedescendant": "_pattern.
|
|
236
|
+
"attr.aria-activedescendant": "_pattern.activeDescendant()"
|
|
238
237
|
},
|
|
239
238
|
classAttribute: "ng-tablist"
|
|
240
239
|
},
|
|
@@ -255,10 +254,10 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
255
254
|
host: {
|
|
256
255
|
'role': 'tablist',
|
|
257
256
|
'class': 'ng-tablist',
|
|
258
|
-
'[attr.tabindex]': '_pattern.
|
|
257
|
+
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
259
258
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
260
259
|
'[attr.aria-orientation]': '_pattern.orientation()',
|
|
261
|
-
'[attr.aria-activedescendant]': '_pattern.
|
|
260
|
+
'[attr.aria-activedescendant]': '_pattern.activeDescendant()',
|
|
262
261
|
'(keydown)': '_pattern.onKeydown($event)',
|
|
263
262
|
'(pointerdown)': '_pattern.onPointerdown($event)',
|
|
264
263
|
'(focusin)': 'onFocus()'
|
|
@@ -340,7 +339,7 @@ class Tab {
|
|
|
340
339
|
properties: {
|
|
341
340
|
"attr.data-active": "_pattern.active()",
|
|
342
341
|
"attr.id": "_pattern.id()",
|
|
343
|
-
"attr.tabindex": "_pattern.
|
|
342
|
+
"attr.tabindex": "_pattern.tabIndex()",
|
|
344
343
|
"attr.aria-selected": "_pattern.selected()",
|
|
345
344
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
346
345
|
"attr.aria-controls": "_pattern.controls()"
|
|
@@ -366,7 +365,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
366
365
|
'class': 'ng-tab',
|
|
367
366
|
'[attr.data-active]': '_pattern.active()',
|
|
368
367
|
'[attr.id]': '_pattern.id()',
|
|
369
|
-
'[attr.tabindex]': '_pattern.
|
|
368
|
+
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
370
369
|
'[attr.aria-selected]': '_pattern.selected()',
|
|
371
370
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
372
371
|
'[attr.aria-controls]': '_pattern.controls()'
|
|
@@ -377,7 +376,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
377
376
|
class TabPanel {
|
|
378
377
|
_deferredContentAware = inject(DeferredContentAware);
|
|
379
378
|
_Tabs = inject(Tabs);
|
|
380
|
-
_id = inject(_IdGenerator).getId('ng-tabpanel-');
|
|
379
|
+
_id = inject(_IdGenerator).getId('ng-tabpanel-', true);
|
|
381
380
|
tab = computed(() => this._Tabs.tabs()?.find(tab => tab.value() === this.value()), ...(ngDevMode ? [{
|
|
382
381
|
debugName: "tab"
|
|
383
382
|
}] : []));
|
|
@@ -427,7 +426,7 @@ class TabPanel {
|
|
|
427
426
|
},
|
|
428
427
|
properties: {
|
|
429
428
|
"attr.id": "_pattern.id()",
|
|
430
|
-
"attr.tabindex": "_pattern.
|
|
429
|
+
"attr.tabindex": "_pattern.tabIndex()",
|
|
431
430
|
"attr.inert": "_pattern.hidden() ? true : null",
|
|
432
431
|
"attr.aria-labelledby": "_pattern.labelledBy()"
|
|
433
432
|
},
|
|
@@ -455,7 +454,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
455
454
|
'role': 'tabpanel',
|
|
456
455
|
'class': 'ng-tabpanel',
|
|
457
456
|
'[attr.id]': '_pattern.id()',
|
|
458
|
-
'[attr.tabindex]': '_pattern.
|
|
457
|
+
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
459
458
|
'[attr.inert]': '_pattern.hidden() ? true : null',
|
|
460
459
|
'[attr.aria-labelledby]': '_pattern.labelledBy()'
|
|
461
460
|
},
|
package/fesm2022/tabs.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 {DeferredContent, DeferredContentAware} from '@angular/aria/deferred-content';\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 {TabListPattern, TabPanelPattern, TabPattern} 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 disabled items in the list should be skipped when navigating. */\n readonly skipDisabled = 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-');\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","unorderedTabpanels","computed","_unorderedPanels","map","tabpanel","_pattern","ngDevMode","debugName","register","child","TabList","_tablist","set","Set","deregister","undefined","TabPanel","delete","i0","ɵɵngDeclareFactory","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","Tabs","isStandalone","selector","host","classAttribute","exportAs","ngImport","Directive","args","selectedTab","Directionality","valueSignal","sort","tab","orientation","input","transform","booleanAttribute","focusMode","selectionMode","disabled","model","TabListPattern","items","tabs","value","_selection","element","_elementRef","nativeElement","signal","constructor","afterRenderEffect","_hasFocused","setDefaultState","onFocus","ngOnDestroy","_tabs","_unorderedTabs","add","ɵfac","deps","target","ɵɵFactoryTarget","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","wrap","skipDisabled","outputs","attributes","listeners","properties","decorators","ElementRef","_tabList","inject","find","required","TabPattern","tablist","ngOnInit","Tab","_id","_IdGenerator","getId"],"mappings":"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"}
|
|
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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"}
|
package/fesm2022/toolbar.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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';
|
|
@@ -19,8 +19,8 @@ class Toolbar {
|
|
|
19
19
|
orientation = input('horizontal', ...(ngDevMode ? [{
|
|
20
20
|
debugName: "orientation"
|
|
21
21
|
}] : []));
|
|
22
|
-
|
|
23
|
-
debugName: "
|
|
22
|
+
softDisabled = input(true, ...(ngDevMode ? [{
|
|
23
|
+
debugName: "softDisabled",
|
|
24
24
|
transform: booleanAttribute
|
|
25
25
|
}] : [{
|
|
26
26
|
transform: booleanAttribute
|
|
@@ -44,8 +44,8 @@ class Toolbar {
|
|
|
44
44
|
element: () => this._elementRef.nativeElement,
|
|
45
45
|
getItem: e => this._getItem(e)
|
|
46
46
|
});
|
|
47
|
-
|
|
48
|
-
debugName: "
|
|
47
|
+
_hasBeenFocused = signal(false, ...(ngDevMode ? [{
|
|
48
|
+
debugName: "_hasBeenFocused"
|
|
49
49
|
}] : []));
|
|
50
50
|
constructor() {
|
|
51
51
|
afterRenderEffect(() => {
|
|
@@ -57,13 +57,13 @@ class Toolbar {
|
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
59
|
afterRenderEffect(() => {
|
|
60
|
-
if (!this.
|
|
60
|
+
if (!this._hasBeenFocused()) {
|
|
61
61
|
this._pattern.setDefaultState();
|
|
62
62
|
}
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
onFocus() {
|
|
66
|
-
this.
|
|
66
|
+
this._hasBeenFocused.set(true);
|
|
67
67
|
}
|
|
68
68
|
register(widget) {
|
|
69
69
|
const widgets = this._widgets();
|
|
@@ -80,8 +80,7 @@ class Toolbar {
|
|
|
80
80
|
}
|
|
81
81
|
_getItem(element) {
|
|
82
82
|
const widgetTarget = element.closest('.ng-toolbar-widget');
|
|
83
|
-
|
|
84
|
-
return this.items().find(widget => widget.element() === widgetTarget || widget.element() === groupTarget);
|
|
83
|
+
return this.items().find(widget => widget.element() === widgetTarget);
|
|
85
84
|
}
|
|
86
85
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
87
86
|
minVersion: "12.0.0",
|
|
@@ -105,9 +104,9 @@ class Toolbar {
|
|
|
105
104
|
isRequired: false,
|
|
106
105
|
transformFunction: null
|
|
107
106
|
},
|
|
108
|
-
|
|
109
|
-
classPropertyName: "
|
|
110
|
-
publicName: "
|
|
107
|
+
softDisabled: {
|
|
108
|
+
classPropertyName: "softDisabled",
|
|
109
|
+
publicName: "softDisabled",
|
|
111
110
|
isSignal: true,
|
|
112
111
|
isRequired: false,
|
|
113
112
|
transformFunction: null
|
|
@@ -133,11 +132,12 @@ class Toolbar {
|
|
|
133
132
|
},
|
|
134
133
|
listeners: {
|
|
135
134
|
"keydown": "_pattern.onKeydown($event)",
|
|
135
|
+
"click": "_pattern.onClick($event)",
|
|
136
136
|
"pointerdown": "_pattern.onPointerdown($event)",
|
|
137
137
|
"focusin": "onFocus()"
|
|
138
138
|
},
|
|
139
139
|
properties: {
|
|
140
|
-
"attr.tabindex": "_pattern.
|
|
140
|
+
"attr.tabindex": "_pattern.tabIndex()",
|
|
141
141
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
142
142
|
"attr.aria-orientation": "_pattern.orientation()"
|
|
143
143
|
},
|
|
@@ -160,10 +160,11 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
160
160
|
host: {
|
|
161
161
|
'role': 'toolbar',
|
|
162
162
|
'class': 'ng-toolbar',
|
|
163
|
-
'[attr.tabindex]': '_pattern.
|
|
163
|
+
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
164
164
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
165
165
|
'[attr.aria-orientation]': '_pattern.orientation()',
|
|
166
166
|
'(keydown)': '_pattern.onKeydown($event)',
|
|
167
|
+
'(click)': '_pattern.onClick($event)',
|
|
167
168
|
'(pointerdown)': '_pattern.onPointerdown($event)',
|
|
168
169
|
'(focusin)': 'onFocus()'
|
|
169
170
|
}
|
|
@@ -174,8 +175,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
174
175
|
class ToolbarWidget {
|
|
175
176
|
_elementRef = inject(ElementRef);
|
|
176
177
|
_toolbar = inject(Toolbar);
|
|
177
|
-
_generatedId = inject(_IdGenerator).getId('ng-toolbar-widget-');
|
|
178
|
-
id =
|
|
178
|
+
_generatedId = inject(_IdGenerator).getId('ng-toolbar-widget-', true);
|
|
179
|
+
id = input(this._generatedId, ...(ngDevMode ? [{
|
|
179
180
|
debugName: "id"
|
|
180
181
|
}] : []));
|
|
181
182
|
toolbar = computed(() => this._toolbar._pattern, ...(ngDevMode ? [{
|
|
@@ -190,14 +191,25 @@ class ToolbarWidget {
|
|
|
190
191
|
}] : [{
|
|
191
192
|
transform: booleanAttribute
|
|
192
193
|
}]));
|
|
193
|
-
hardDisabled = computed(() => this._pattern.disabled() && this._toolbar.
|
|
194
|
+
hardDisabled = computed(() => this._pattern.disabled() && !this._toolbar.softDisabled(), ...(ngDevMode ? [{
|
|
194
195
|
debugName: "hardDisabled"
|
|
195
196
|
}] : []));
|
|
197
|
+
_group = inject(ToolbarWidgetGroup, {
|
|
198
|
+
optional: true
|
|
199
|
+
});
|
|
200
|
+
value = input.required(...(ngDevMode ? [{
|
|
201
|
+
debugName: "value"
|
|
202
|
+
}] : []));
|
|
203
|
+
active = computed(() => this._pattern.active(), ...(ngDevMode ? [{
|
|
204
|
+
debugName: "active"
|
|
205
|
+
}] : []));
|
|
206
|
+
selected = () => this._pattern.selected();
|
|
207
|
+
group = () => this._group?._pattern;
|
|
196
208
|
_pattern = new ToolbarWidgetPattern({
|
|
197
209
|
...this,
|
|
198
210
|
id: this.id,
|
|
199
|
-
|
|
200
|
-
|
|
211
|
+
value: this.value,
|
|
212
|
+
element: this.element
|
|
201
213
|
});
|
|
202
214
|
ngOnInit() {
|
|
203
215
|
this._toolbar.register(this);
|
|
@@ -220,18 +232,32 @@ class ToolbarWidget {
|
|
|
220
232
|
isStandalone: true,
|
|
221
233
|
selector: "[ngToolbarWidget]",
|
|
222
234
|
inputs: {
|
|
235
|
+
id: {
|
|
236
|
+
classPropertyName: "id",
|
|
237
|
+
publicName: "id",
|
|
238
|
+
isSignal: true,
|
|
239
|
+
isRequired: false,
|
|
240
|
+
transformFunction: null
|
|
241
|
+
},
|
|
223
242
|
disabled: {
|
|
224
243
|
classPropertyName: "disabled",
|
|
225
244
|
publicName: "disabled",
|
|
226
245
|
isSignal: true,
|
|
227
246
|
isRequired: false,
|
|
228
247
|
transformFunction: null
|
|
248
|
+
},
|
|
249
|
+
value: {
|
|
250
|
+
classPropertyName: "value",
|
|
251
|
+
publicName: "value",
|
|
252
|
+
isSignal: true,
|
|
253
|
+
isRequired: true,
|
|
254
|
+
transformFunction: null
|
|
229
255
|
}
|
|
230
256
|
},
|
|
231
257
|
host: {
|
|
232
258
|
properties: {
|
|
233
259
|
"attr.data-active": "_pattern.active()",
|
|
234
|
-
"attr.tabindex": "_pattern.
|
|
260
|
+
"attr.tabindex": "_pattern.tabIndex()",
|
|
235
261
|
"attr.inert": "hardDisabled() ? true : null",
|
|
236
262
|
"attr.disabled": "hardDisabled() ? true : null",
|
|
237
263
|
"attr.aria-disabled": "_pattern.disabled()",
|
|
@@ -256,7 +282,7 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
256
282
|
host: {
|
|
257
283
|
'class': 'ng-toolbar-widget',
|
|
258
284
|
'[attr.data-active]': '_pattern.active()',
|
|
259
|
-
'[attr.tabindex]': '_pattern.
|
|
285
|
+
'[attr.tabindex]': '_pattern.tabIndex()',
|
|
260
286
|
'[attr.inert]': 'hardDisabled() ? true : null',
|
|
261
287
|
'[attr.disabled]': 'hardDisabled() ? true : null',
|
|
262
288
|
'[attr.aria-disabled]': '_pattern.disabled()',
|
|
@@ -266,40 +292,32 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
266
292
|
}]
|
|
267
293
|
});
|
|
268
294
|
class ToolbarWidgetGroup {
|
|
269
|
-
_elementRef = inject(ElementRef);
|
|
270
295
|
_toolbar = inject(Toolbar, {
|
|
271
296
|
optional: true
|
|
272
297
|
});
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}] : [
|
|
298
|
+
_widgets = contentChildren(ToolbarWidget, ...(ngDevMode ? [{
|
|
299
|
+
debugName: "_widgets",
|
|
300
|
+
descendants: true
|
|
301
|
+
}] : [{
|
|
302
|
+
descendants: true
|
|
303
|
+
}]));
|
|
277
304
|
toolbar = computed(() => this._toolbar?._pattern, ...(ngDevMode ? [{
|
|
278
305
|
debugName: "toolbar"
|
|
279
306
|
}] : []));
|
|
280
|
-
element = computed(() => this._elementRef.nativeElement, ...(ngDevMode ? [{
|
|
281
|
-
debugName: "element"
|
|
282
|
-
}] : []));
|
|
283
307
|
disabled = input(false, ...(ngDevMode ? [{
|
|
284
308
|
debugName: "disabled",
|
|
285
309
|
transform: booleanAttribute
|
|
286
310
|
}] : [{
|
|
287
311
|
transform: booleanAttribute
|
|
288
312
|
}]));
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
ngOnInit() {
|
|
298
|
-
this._toolbar?.register(this);
|
|
299
|
-
}
|
|
300
|
-
ngOnDestroy() {
|
|
301
|
-
this._toolbar?.unregister(this);
|
|
302
|
-
}
|
|
313
|
+
items = () => this._widgets().map(w => w._pattern);
|
|
314
|
+
multi = input(false, ...(ngDevMode ? [{
|
|
315
|
+
debugName: "multi",
|
|
316
|
+
transform: booleanAttribute
|
|
317
|
+
}] : [{
|
|
318
|
+
transform: booleanAttribute
|
|
319
|
+
}]));
|
|
320
|
+
_pattern = new ToolbarWidgetGroupPattern(this);
|
|
303
321
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
304
322
|
minVersion: "12.0.0",
|
|
305
323
|
version: "20.2.0-next.2",
|
|
@@ -309,10 +327,11 @@ class ToolbarWidgetGroup {
|
|
|
309
327
|
target: i0.ɵɵFactoryTarget.Directive
|
|
310
328
|
});
|
|
311
329
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
312
|
-
minVersion: "17.
|
|
330
|
+
minVersion: "17.2.0",
|
|
313
331
|
version: "20.2.0-next.2",
|
|
314
332
|
type: ToolbarWidgetGroup,
|
|
315
333
|
isStandalone: true,
|
|
334
|
+
selector: "[ngToolbarWidgetGroup]",
|
|
316
335
|
inputs: {
|
|
317
336
|
disabled: {
|
|
318
337
|
classPropertyName: "disabled",
|
|
@@ -320,6 +339,13 @@ class ToolbarWidgetGroup {
|
|
|
320
339
|
isSignal: true,
|
|
321
340
|
isRequired: false,
|
|
322
341
|
transformFunction: null
|
|
342
|
+
},
|
|
343
|
+
multi: {
|
|
344
|
+
classPropertyName: "multi",
|
|
345
|
+
publicName: "multi",
|
|
346
|
+
isSignal: true,
|
|
347
|
+
isRequired: false,
|
|
348
|
+
transformFunction: null
|
|
323
349
|
}
|
|
324
350
|
},
|
|
325
351
|
host: {
|
|
@@ -327,6 +353,13 @@ class ToolbarWidgetGroup {
|
|
|
327
353
|
"class.ng-toolbar-widget-group": "!!toolbar()"
|
|
328
354
|
}
|
|
329
355
|
},
|
|
356
|
+
queries: [{
|
|
357
|
+
propertyName: "_widgets",
|
|
358
|
+
predicate: ToolbarWidget,
|
|
359
|
+
descendants: true,
|
|
360
|
+
isSignal: true
|
|
361
|
+
}],
|
|
362
|
+
exportAs: ["ngToolbarWidgetGroup"],
|
|
330
363
|
ngImport: i0
|
|
331
364
|
});
|
|
332
365
|
}
|
|
@@ -338,6 +371,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
338
371
|
decorators: [{
|
|
339
372
|
type: Directive,
|
|
340
373
|
args: [{
|
|
374
|
+
selector: '[ngToolbarWidgetGroup]',
|
|
375
|
+
exportAs: 'ngToolbarWidgetGroup',
|
|
341
376
|
host: {
|
|
342
377
|
'[class.ng-toolbar-widget-group]': '!!toolbar()'
|
|
343
378
|
}
|
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":["../../../../../k8-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 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: 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 '(click)': '_pattern.onClick($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>>());\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 /** Whether to allow disabled items to receive focus. */\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('.ng-toolbar-widget');\n return this.items().find(widget => widget.element() === widgetTarget);\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-', true);\n\n /** A unique identifier for the widget. */\n readonly id = input<string>(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.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 that\n * have their own internal navigation.\n */\n@Directive({\n selector: '[ngToolbarWidgetGroup]',\n exportAs: 'ngToolbarWidgetGroup',\n host: {\n '[class.ng-toolbar-widget-group]': '!!toolbar()',\n },\n})\nexport class ToolbarWidgetGroup<V> {\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","_widgets","signal","Set","textDirection","Directionality","valueSignal","items","computed","sort","map","widget","_pattern","orientation","input","softDisabled","transform","booleanAttribute","disabled","wrap","ToolbarPattern","activeItem","undefined","nativeElement","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","classAttribute","exportAs","ngImport","decorators","args","ToolbarWidget","_toolbar","_generatedId","_IdGenerator","getId","id","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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"}
|