@angular/cdk-experimental 21.0.0-next.0 → 21.0.0-next.10
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/fesm2022/{polyfill.mjs → _polyfill-chunk.mjs} +1 -1
- package/fesm2022/_polyfill-chunk.mjs.map +1 -0
- package/fesm2022/cdk-experimental.mjs +1 -1
- package/fesm2022/cdk-experimental.mjs.map +1 -1
- package/fesm2022/column-resize.mjs +54 -54
- package/fesm2022/column-resize.mjs.map +1 -1
- package/fesm2022/popover-edit.mjs +44 -44
- package/fesm2022/popover-edit.mjs.map +1 -1
- package/fesm2022/scrolling.mjs +7 -7
- package/fesm2022/scrolling.mjs.map +1 -1
- package/fesm2022/selection.mjs +19 -19
- package/fesm2022/selection.mjs.map +1 -1
- package/fesm2022/table-scroll-container.mjs +7 -7
- package/fesm2022/table-scroll-container.mjs.map +1 -1
- package/package.json +10 -45
- package/{column-resize/index.d.ts → types/column-resize.d.ts} +37 -37
- package/{popover-edit/index.d.ts → types/popover-edit.d.ts} +30 -30
- package/{scrolling/index.d.ts → types/scrolling.d.ts} +6 -6
- package/{selection/index.d.ts → types/selection.d.ts} +14 -14
- package/{table-scroll-container/index.d.ts → types/table-scroll-container.d.ts} +6 -6
- package/accordion/index.d.ts +0 -92
- package/accordion.d.d.ts +0 -89
- package/combobox/index.d.ts +0 -94
- package/deferred-content/index.d.ts +0 -37
- package/expansion.d.d.ts +0 -71
- package/fesm2022/accordion.mjs +0 -192
- package/fesm2022/accordion.mjs.map +0 -1
- package/fesm2022/accordion2.mjs +0 -152
- package/fesm2022/accordion2.mjs.map +0 -1
- package/fesm2022/combobox.mjs +0 -340
- package/fesm2022/combobox.mjs.map +0 -1
- package/fesm2022/deferred-content.mjs +0 -60
- package/fesm2022/deferred-content.mjs.map +0 -1
- package/fesm2022/expansion.mjs +0 -87
- package/fesm2022/expansion.mjs.map +0 -1
- package/fesm2022/list-navigation.mjs +0 -263
- package/fesm2022/list-navigation.mjs.map +0 -1
- package/fesm2022/list.mjs +0 -355
- package/fesm2022/list.mjs.map +0 -1
- package/fesm2022/listbox.mjs +0 -160
- package/fesm2022/listbox.mjs.map +0 -1
- package/fesm2022/option.mjs +0 -231
- package/fesm2022/option.mjs.map +0 -1
- package/fesm2022/polyfill.mjs.map +0 -1
- package/fesm2022/radio-group.mjs +0 -202
- package/fesm2022/radio-group.mjs.map +0 -1
- package/fesm2022/radio-group2.mjs +0 -143
- package/fesm2022/radio-group2.mjs.map +0 -1
- package/fesm2022/tabs.mjs +0 -299
- package/fesm2022/tabs.mjs.map +0 -1
- package/fesm2022/tabs2.mjs +0 -211
- package/fesm2022/tabs2.mjs.map +0 -1
- package/fesm2022/toolbar.mjs +0 -168
- package/fesm2022/toolbar.mjs.map +0 -1
- package/fesm2022/toolbar2.mjs +0 -224
- package/fesm2022/toolbar2.mjs.map +0 -1
- package/fesm2022/tree.mjs +0 -631
- package/fesm2022/tree.mjs.map +0 -1
- package/fesm2022/ui-patterns.mjs +0 -21
- package/fesm2022/ui-patterns.mjs.map +0 -1
- package/list.d.d.ts +0 -207
- package/listbox/index.d.ts +0 -87
- package/listbox.d.d.ts +0 -101
- package/pointer-event-manager.d.d.ts +0 -189
- package/radio-group/index.d.ts +0 -85
- package/radio-group.d.d.ts +0 -80
- package/tabs/index.d.ts +0 -157
- package/tabs.d.d.ts +0 -137
- package/toolbar/index.d.ts +0 -89
- package/toolbar.d.d.ts +0 -136
- package/tree/index.d.ts +0 -273
- package/ui-patterns/index.d.ts +0 -9
- /package/{index.d.ts → types/cdk-experimental.d.ts} +0 -0
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { computed } from '@angular/core';
|
|
2
|
-
import { List } from './list.mjs';
|
|
3
|
-
import { KeyboardEventManager, PointerEventManager } from './list-navigation.mjs';
|
|
4
|
-
|
|
5
|
-
/** Controls the state of a radio group. */
|
|
6
|
-
class RadioGroupPattern {
|
|
7
|
-
inputs;
|
|
8
|
-
/** The list behavior for the radio group. */
|
|
9
|
-
listBehavior;
|
|
10
|
-
/** Whether the radio group is vertically or horizontally oriented. */
|
|
11
|
-
orientation;
|
|
12
|
-
/** Whether the radio group is disabled. */
|
|
13
|
-
disabled = computed(() => this.inputs.disabled() || this.listBehavior.disabled());
|
|
14
|
-
/** The currently selected radio button. */
|
|
15
|
-
selectedItem = computed(() => this.listBehavior.selectionBehavior.selectedItems()[0]);
|
|
16
|
-
/** Whether the radio group is readonly. */
|
|
17
|
-
readonly = computed(() => this.selectedItem()?.disabled() || this.inputs.readonly());
|
|
18
|
-
/** The tabindex of the radio group. */
|
|
19
|
-
tabindex = computed(() => (this.inputs.toolbar() ? -1 : this.listBehavior.tabindex()));
|
|
20
|
-
/** The id of the current active radio button (if using activedescendant). */
|
|
21
|
-
activedescendant = computed(() => this.listBehavior.activedescendant());
|
|
22
|
-
/** The key used to navigate to the previous radio button. */
|
|
23
|
-
prevKey = computed(() => {
|
|
24
|
-
if (this.inputs.orientation() === 'vertical') {
|
|
25
|
-
return 'ArrowUp';
|
|
26
|
-
}
|
|
27
|
-
return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
|
|
28
|
-
});
|
|
29
|
-
/** The key used to navigate to the next radio button. */
|
|
30
|
-
nextKey = computed(() => {
|
|
31
|
-
if (this.inputs.orientation() === 'vertical') {
|
|
32
|
-
return 'ArrowDown';
|
|
33
|
-
}
|
|
34
|
-
return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
|
|
35
|
-
});
|
|
36
|
-
/** The keydown event manager for the radio group. */
|
|
37
|
-
keydown = computed(() => {
|
|
38
|
-
const manager = new KeyboardEventManager();
|
|
39
|
-
// When within a toolbar relinquish keyboard control
|
|
40
|
-
if (this.inputs.toolbar()) {
|
|
41
|
-
return manager;
|
|
42
|
-
}
|
|
43
|
-
// Readonly mode allows navigation but not selection changes.
|
|
44
|
-
if (this.readonly()) {
|
|
45
|
-
return manager
|
|
46
|
-
.on(this.prevKey, () => this.listBehavior.prev())
|
|
47
|
-
.on(this.nextKey, () => this.listBehavior.next())
|
|
48
|
-
.on('Home', () => this.listBehavior.first())
|
|
49
|
-
.on('End', () => this.listBehavior.last());
|
|
50
|
-
}
|
|
51
|
-
// Default behavior: navigate and select on arrow keys, home, end.
|
|
52
|
-
// Space/Enter also select the focused item.
|
|
53
|
-
return manager
|
|
54
|
-
.on(this.prevKey, () => this.listBehavior.prev({ selectOne: true }))
|
|
55
|
-
.on(this.nextKey, () => this.listBehavior.next({ selectOne: true }))
|
|
56
|
-
.on('Home', () => this.listBehavior.first({ selectOne: true }))
|
|
57
|
-
.on('End', () => this.listBehavior.last({ selectOne: true }))
|
|
58
|
-
.on(' ', () => this.listBehavior.selectOne())
|
|
59
|
-
.on('Enter', () => this.listBehavior.selectOne());
|
|
60
|
-
});
|
|
61
|
-
/** The pointerdown event manager for the radio group. */
|
|
62
|
-
pointerdown = computed(() => {
|
|
63
|
-
const manager = new PointerEventManager();
|
|
64
|
-
// When within a toolbar relinquish pointer control
|
|
65
|
-
if (this.inputs.toolbar()) {
|
|
66
|
-
return manager;
|
|
67
|
-
}
|
|
68
|
-
if (this.readonly()) {
|
|
69
|
-
// Navigate focus only in readonly mode.
|
|
70
|
-
return manager.on(e => this.listBehavior.goto(this._getItem(e)));
|
|
71
|
-
}
|
|
72
|
-
// Default behavior: navigate and select on click.
|
|
73
|
-
return manager.on(e => this.listBehavior.goto(this._getItem(e), { selectOne: true }));
|
|
74
|
-
});
|
|
75
|
-
constructor(inputs) {
|
|
76
|
-
this.inputs = inputs;
|
|
77
|
-
this.orientation =
|
|
78
|
-
inputs.toolbar() !== undefined ? inputs.toolbar().orientation : inputs.orientation;
|
|
79
|
-
this.listBehavior = new List({
|
|
80
|
-
...inputs,
|
|
81
|
-
activeItem: inputs.toolbar()?.listBehavior.inputs.activeItem ?? inputs.activeItem,
|
|
82
|
-
wrap: () => !!inputs.toolbar(),
|
|
83
|
-
multi: () => false,
|
|
84
|
-
selectionMode: () => (inputs.toolbar() ? 'explicit' : 'follow'),
|
|
85
|
-
typeaheadDelay: () => 0, // Radio groups do not support typeahead.
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
/** Handles keydown events for the radio group. */
|
|
89
|
-
onKeydown(event) {
|
|
90
|
-
if (!this.disabled()) {
|
|
91
|
-
this.keydown().handle(event);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/** Handles pointerdown events for the radio group. */
|
|
95
|
-
onPointerdown(event) {
|
|
96
|
-
if (!this.disabled()) {
|
|
97
|
-
this.pointerdown().handle(event);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Sets the radio group to its default initial state.
|
|
102
|
-
*
|
|
103
|
-
* Sets the active index to the selected radio button if one exists and is focusable.
|
|
104
|
-
* Otherwise, sets the active index to the first focusable radio button.
|
|
105
|
-
*/
|
|
106
|
-
setDefaultState() {
|
|
107
|
-
let firstItem = null;
|
|
108
|
-
for (const item of this.inputs.items()) {
|
|
109
|
-
if (this.listBehavior.isFocusable(item)) {
|
|
110
|
-
if (!firstItem) {
|
|
111
|
-
firstItem = item;
|
|
112
|
-
}
|
|
113
|
-
if (item.selected()) {
|
|
114
|
-
this.inputs.activeItem.set(item);
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
if (firstItem) {
|
|
120
|
-
this.inputs.activeItem.set(firstItem);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/** Validates the state of the radio group and returns a list of accessibility violations. */
|
|
124
|
-
validate() {
|
|
125
|
-
const violations = [];
|
|
126
|
-
if (this.selectedItem()?.disabled() && this.inputs.skipDisabled()) {
|
|
127
|
-
violations.push("Accessibility Violation: The selected radio button is disabled while 'skipDisabled' is true, making the selection unreachable via keyboard.");
|
|
128
|
-
}
|
|
129
|
-
return violations;
|
|
130
|
-
}
|
|
131
|
-
/** Finds the RadioButtonPattern associated with a pointer event target. */
|
|
132
|
-
_getItem(e) {
|
|
133
|
-
if (!(e.target instanceof HTMLElement)) {
|
|
134
|
-
return undefined;
|
|
135
|
-
}
|
|
136
|
-
// Assumes the target or its ancestor has role="radio"
|
|
137
|
-
const element = e.target.closest('[role="radio"]');
|
|
138
|
-
return this.inputs.items().find(i => i.element() === element);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export { RadioGroupPattern };
|
|
143
|
-
//# sourceMappingURL=radio-group2.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group2.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/ui-patterns/radio-group/radio-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed} from '@angular/core';\nimport {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {List, ListInputs} from '../behaviors/list/list';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\nimport {RadioButtonPattern} from './radio-button';\n\n/** Represents the required inputs for a radio group. */\nexport type RadioGroupInputs<V> = Omit<\n ListInputs<RadioButtonPattern<V>, V>,\n 'multi' | 'selectionMode' | 'wrap' | 'typeaheadDelay'\n> & {\n /** Whether the radio group is disabled. */\n disabled: SignalLike<boolean>;\n\n /** Whether the radio group is readonly. */\n readonly: SignalLike<boolean>;\n /** Parent toolbar of radio group */\n toolbar: SignalLike<ToolbarLike<V> | undefined>;\n};\n\n/**\n * Represents the properties exposed by a toolbar widget that need to be accessed by a radio group.\n * This exists to avoid circular dependency errors between the toolbar and radio button.\n */\ntype ToolbarWidgetLike = {\n id: SignalLike<string>;\n index: SignalLike<number>;\n element: SignalLike<HTMLElement>;\n disabled: SignalLike<boolean>;\n searchTerm: SignalLike<any>;\n value: SignalLike<any>;\n};\n\n/**\n * Represents the properties exposed by a toolbar that need to be accessed by a radio group.\n * This exists to avoid circular dependency errors between the toolbar and radio button.\n */\nexport interface ToolbarLike<V> {\n listBehavior: List<RadioButtonPattern<V> | ToolbarWidgetLike, V>;\n orientation: SignalLike<'vertical' | 'horizontal'>;\n disabled: SignalLike<boolean>;\n}\n\n/** Controls the state of a radio group. */\nexport class RadioGroupPattern<V> {\n /** The list behavior for the radio group. */\n readonly listBehavior: List<RadioButtonPattern<V> | ToolbarWidgetLike, V>;\n\n /** Whether the radio group is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the radio group is disabled. */\n disabled = computed(() => this.inputs.disabled() || this.listBehavior.disabled());\n\n /** The currently selected radio button. */\n selectedItem = computed(() => this.listBehavior.selectionBehavior.selectedItems()[0]);\n\n /** Whether the radio group is readonly. */\n readonly = computed(() => this.selectedItem()?.disabled() || this.inputs.readonly());\n\n /** The tabindex of the radio group. */\n tabindex = computed(() => (this.inputs.toolbar() ? -1 : this.listBehavior.tabindex()));\n\n /** The id of the current active radio button (if using activedescendant). */\n activedescendant = computed(() => this.listBehavior.activedescendant());\n\n /** The key used to navigate to the previous radio button. */\n prevKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next radio button. */\n nextKey = computed(() => {\n if (this.inputs.orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The keydown event manager for the radio group. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager();\n\n // When within a toolbar relinquish keyboard control\n if (this.inputs.toolbar()) {\n return manager;\n }\n\n // Readonly mode allows navigation but not selection changes.\n if (this.readonly()) {\n return manager\n .on(this.prevKey, () => this.listBehavior.prev())\n .on(this.nextKey, () => this.listBehavior.next())\n .on('Home', () => this.listBehavior.first())\n .on('End', () => this.listBehavior.last());\n }\n\n // Default behavior: navigate and select on arrow keys, home, end.\n // Space/Enter also select the focused item.\n return manager\n .on(this.prevKey, () => this.listBehavior.prev({selectOne: true}))\n .on(this.nextKey, () => this.listBehavior.next({selectOne: true}))\n .on('Home', () => this.listBehavior.first({selectOne: true}))\n .on('End', () => this.listBehavior.last({selectOne: true}))\n .on(' ', () => this.listBehavior.selectOne())\n .on('Enter', () => this.listBehavior.selectOne());\n });\n\n /** The pointerdown event manager for the radio group. */\n pointerdown = computed(() => {\n const manager = new PointerEventManager();\n\n // When within a toolbar relinquish pointer control\n if (this.inputs.toolbar()) {\n return manager;\n }\n\n if (this.readonly()) {\n // Navigate focus only in readonly mode.\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!));\n }\n\n // Default behavior: navigate and select on click.\n return manager.on(e => this.listBehavior.goto(this._getItem(e)!, {selectOne: true}));\n });\n\n constructor(readonly inputs: RadioGroupInputs<V>) {\n this.orientation =\n inputs.toolbar() !== undefined ? inputs.toolbar()!.orientation : inputs.orientation;\n\n this.listBehavior = new List({\n ...inputs,\n activeItem: inputs.toolbar()?.listBehavior.inputs.activeItem ?? inputs.activeItem,\n wrap: () => !!inputs.toolbar(),\n multi: () => false,\n selectionMode: () => (inputs.toolbar() ? 'explicit' : 'follow'),\n typeaheadDelay: () => 0, // Radio groups do not support typeahead.\n });\n }\n\n /** Handles keydown events for the radio group. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** Handles pointerdown events for the radio group. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /**\n * Sets the radio group to its default initial state.\n *\n * Sets the active index to the selected radio button if one exists and is focusable.\n * Otherwise, sets the active index to the first focusable radio button.\n */\n setDefaultState() {\n let firstItem: RadioButtonPattern<V> | null = null;\n\n for (const item of this.inputs.items()) {\n if (this.listBehavior.isFocusable(item)) {\n if (!firstItem) {\n firstItem = item;\n }\n if (item.selected()) {\n this.inputs.activeItem.set(item);\n return;\n }\n }\n }\n\n if (firstItem) {\n this.inputs.activeItem.set(firstItem);\n }\n }\n\n /** Validates the state of the radio group and returns a list of accessibility violations. */\n validate(): string[] {\n const violations: string[] = [];\n\n if (this.selectedItem()?.disabled() && this.inputs.skipDisabled()) {\n violations.push(\n \"Accessibility Violation: The selected radio button is disabled while 'skipDisabled' is true, making the selection unreachable via keyboard.\",\n );\n }\n\n return violations;\n }\n\n /** Finds the RadioButtonPattern associated with a pointer event target. */\n private _getItem(e: PointerEvent): RadioButtonPattern<V> | undefined {\n if (!(e.target instanceof HTMLElement)) {\n return undefined;\n }\n\n // Assumes the target or its ancestor has role=\"radio\"\n const element = e.target.closest('[role=\"radio\"]');\n return this.inputs.items().find(i => i.element() === element);\n }\n}\n"],"names":[],"mappings":"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"}
|
package/fesm2022/tabs.mjs
DELETED
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
import * as i1 from '@angular/cdk-experimental/deferred-content';
|
|
2
|
-
import { DeferredContentAware, DeferredContent } from '@angular/cdk-experimental/deferred-content';
|
|
3
|
-
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
4
|
-
import { Directionality } from '@angular/cdk/bidi';
|
|
5
|
-
import * as i0 from '@angular/core';
|
|
6
|
-
import { signal, computed, Directive, inject, linkedSignal, input, booleanAttribute, model, afterRenderEffect, ElementRef } from '@angular/core';
|
|
7
|
-
import { TabListPattern, TabPattern, TabPanelPattern } from './tabs2.mjs';
|
|
8
|
-
import './expansion.mjs';
|
|
9
|
-
import './list.mjs';
|
|
10
|
-
import './list-navigation.mjs';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Sort directives by their document order.
|
|
14
|
-
*/
|
|
15
|
-
function sortDirectives(a, b) {
|
|
16
|
-
return (a.element().compareDocumentPosition(b.element()) & Node.DOCUMENT_POSITION_PRECEDING) > 0
|
|
17
|
-
? 1
|
|
18
|
-
: -1;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* A Tabs container.
|
|
22
|
-
*
|
|
23
|
-
* Represents a set of layered sections of content. The CdkTabs is a container meant to be used with
|
|
24
|
-
* CdkTabList, CdkTab, and CdkTabPanel as follows:
|
|
25
|
-
*
|
|
26
|
-
* ```html
|
|
27
|
-
* <div cdkTabs>
|
|
28
|
-
* <ul cdkTabList>
|
|
29
|
-
* <li cdkTab value="tab1">Tab 1</li>
|
|
30
|
-
* <li cdkTab value="tab2">Tab 2</li>
|
|
31
|
-
* <li cdkTab value="tab3">Tab 3</li>
|
|
32
|
-
* </ul>
|
|
33
|
-
*
|
|
34
|
-
* <div cdkTabPanel value="tab1">
|
|
35
|
-
* <ng-template cdkTabContent>Tab content 1</ng-template>
|
|
36
|
-
* </div>
|
|
37
|
-
* <div cdkTabPanel value="tab2">
|
|
38
|
-
* <ng-template cdkTabContent>Tab content 2</ng-template>
|
|
39
|
-
* </div>
|
|
40
|
-
* <div cdkTabPanel value="tab3">
|
|
41
|
-
* <ng-template cdkTabContent>Tab content 3</ng-template>
|
|
42
|
-
* </div>
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
class CdkTabs {
|
|
46
|
-
/** The CdkTabList nested inside of the container. */
|
|
47
|
-
_tablist = signal(undefined, ...(ngDevMode ? [{ debugName: "_tablist" }] : []));
|
|
48
|
-
/** The CdkTabPanels nested inside of the container. */
|
|
49
|
-
_unorderedPanels = signal(new Set(), ...(ngDevMode ? [{ debugName: "_unorderedPanels" }] : []));
|
|
50
|
-
/** The Tab UIPattern of the child Tabs. */
|
|
51
|
-
tabs = computed(() => this._tablist()?.tabs(), ...(ngDevMode ? [{ debugName: "tabs" }] : []));
|
|
52
|
-
/** The TabPanel UIPattern of the child TabPanels. */
|
|
53
|
-
unorderedTabpanels = computed(() => [...this._unorderedPanels()].map(tabpanel => tabpanel.pattern), ...(ngDevMode ? [{ debugName: "unorderedTabpanels" }] : []));
|
|
54
|
-
register(child) {
|
|
55
|
-
if (child instanceof CdkTabList) {
|
|
56
|
-
this._tablist.set(child);
|
|
57
|
-
}
|
|
58
|
-
if (child instanceof CdkTabPanel) {
|
|
59
|
-
this._unorderedPanels().add(child);
|
|
60
|
-
this._unorderedPanels.set(new Set(this._unorderedPanels()));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
deregister(child) {
|
|
64
|
-
if (child instanceof CdkTabList) {
|
|
65
|
-
this._tablist.set(undefined);
|
|
66
|
-
}
|
|
67
|
-
if (child instanceof CdkTabPanel) {
|
|
68
|
-
this._unorderedPanels().delete(child);
|
|
69
|
-
this._unorderedPanels.set(new Set(this._unorderedPanels()));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabs, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
73
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkTabs, isStandalone: true, selector: "[cdkTabs]", host: { classAttribute: "cdk-tabs" }, exportAs: ["cdkTabs"], ngImport: i0 });
|
|
74
|
-
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabs, decorators: [{
|
|
76
|
-
type: Directive,
|
|
77
|
-
args: [{
|
|
78
|
-
selector: '[cdkTabs]',
|
|
79
|
-
exportAs: 'cdkTabs',
|
|
80
|
-
host: {
|
|
81
|
-
'class': 'cdk-tabs',
|
|
82
|
-
},
|
|
83
|
-
}]
|
|
84
|
-
}] });
|
|
85
|
-
/**
|
|
86
|
-
* A TabList container.
|
|
87
|
-
*
|
|
88
|
-
* Controls a list of CdkTab(s).
|
|
89
|
-
*/
|
|
90
|
-
class CdkTabList {
|
|
91
|
-
/** The parent CdkTabs. */
|
|
92
|
-
_cdkTabs = inject(CdkTabs);
|
|
93
|
-
/** The CdkTabs nested inside of the CdkTabList. */
|
|
94
|
-
_unorderedTabs = signal(new Set(), ...(ngDevMode ? [{ debugName: "_unorderedTabs" }] : []));
|
|
95
|
-
/** The internal tab selection state. */
|
|
96
|
-
_selection = linkedSignal(() => (this.tab() ? [this.tab()] : []));
|
|
97
|
-
/** Text direction. */
|
|
98
|
-
textDirection = inject(Directionality).valueSignal;
|
|
99
|
-
/** The Tab UIPatterns of the child Tabs. */
|
|
100
|
-
tabs = computed(() => [...this._unorderedTabs()].sort(sortDirectives).map(tab => tab.pattern), ...(ngDevMode ? [{ debugName: "tabs" }] : []));
|
|
101
|
-
/** Whether the tablist is vertically or horizontally oriented. */
|
|
102
|
-
orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : []));
|
|
103
|
-
/** Whether focus should wrap when navigating. */
|
|
104
|
-
wrap = input(true, ...(ngDevMode ? [{ debugName: "wrap", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
105
|
-
/** Whether disabled items in the list should be skipped when navigating. */
|
|
106
|
-
skipDisabled = input(true, ...(ngDevMode ? [{ debugName: "skipDisabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
107
|
-
/** The focus strategy used by the tablist. */
|
|
108
|
-
focusMode = input('roving', ...(ngDevMode ? [{ debugName: "focusMode" }] : []));
|
|
109
|
-
/** The selection strategy used by the tablist. */
|
|
110
|
-
selectionMode = input('follow', ...(ngDevMode ? [{ debugName: "selectionMode" }] : []));
|
|
111
|
-
/** Whether the tablist is disabled. */
|
|
112
|
-
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
113
|
-
/** The current selected tab. */
|
|
114
|
-
tab = model(...(ngDevMode ? [undefined, { debugName: "tab" }] : []));
|
|
115
|
-
/** The TabList UIPattern. */
|
|
116
|
-
pattern = new TabListPattern({
|
|
117
|
-
...this,
|
|
118
|
-
items: this.tabs,
|
|
119
|
-
value: this._selection,
|
|
120
|
-
activeItem: signal(undefined),
|
|
121
|
-
});
|
|
122
|
-
/** Whether the tree has received focus yet. */
|
|
123
|
-
_hasFocused = signal(false, ...(ngDevMode ? [{ debugName: "_hasFocused" }] : []));
|
|
124
|
-
constructor() {
|
|
125
|
-
afterRenderEffect(() => this.tab.set(this._selection()[0]));
|
|
126
|
-
afterRenderEffect(() => {
|
|
127
|
-
if (!this._hasFocused()) {
|
|
128
|
-
this.pattern.setDefaultState();
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
onFocus() {
|
|
133
|
-
this._hasFocused.set(true);
|
|
134
|
-
}
|
|
135
|
-
ngOnInit() {
|
|
136
|
-
this._cdkTabs.register(this);
|
|
137
|
-
}
|
|
138
|
-
ngOnDestroy() {
|
|
139
|
-
this._cdkTabs.deregister(this);
|
|
140
|
-
}
|
|
141
|
-
register(child) {
|
|
142
|
-
this._unorderedTabs().add(child);
|
|
143
|
-
this._unorderedTabs.set(new Set(this._unorderedTabs()));
|
|
144
|
-
}
|
|
145
|
-
deregister(child) {
|
|
146
|
-
this._unorderedTabs().delete(child);
|
|
147
|
-
this._unorderedTabs.set(new Set(this._unorderedTabs()));
|
|
148
|
-
}
|
|
149
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
150
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0-rc.1", type: CdkTabList, isStandalone: true, selector: "[cdkTabList]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, skipDisabled: { classPropertyName: "skipDisabled", publicName: "skipDisabled", isSignal: true, isRequired: false, transformFunction: null }, focusMode: { classPropertyName: "focusMode", publicName: "focusMode", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, tab: { classPropertyName: "tab", publicName: "tab", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tab: "tabChange" }, host: { attributes: { "role": "tablist" }, listeners: { "keydown": "pattern.onKeydown($event)", "pointerdown": "pattern.onPointerdown($event)", "focusin": "onFocus()" }, properties: { "attr.tabindex": "pattern.tabindex()", "attr.aria-disabled": "pattern.disabled()", "attr.aria-orientation": "pattern.orientation()", "attr.aria-activedescendant": "pattern.activedescendant()" }, classAttribute: "cdk-tablist" }, exportAs: ["cdkTabList"], ngImport: i0 });
|
|
151
|
-
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabList, decorators: [{
|
|
153
|
-
type: Directive,
|
|
154
|
-
args: [{
|
|
155
|
-
selector: '[cdkTabList]',
|
|
156
|
-
exportAs: 'cdkTabList',
|
|
157
|
-
host: {
|
|
158
|
-
'role': 'tablist',
|
|
159
|
-
'class': 'cdk-tablist',
|
|
160
|
-
'[attr.tabindex]': 'pattern.tabindex()',
|
|
161
|
-
'[attr.aria-disabled]': 'pattern.disabled()',
|
|
162
|
-
'[attr.aria-orientation]': 'pattern.orientation()',
|
|
163
|
-
'[attr.aria-activedescendant]': 'pattern.activedescendant()',
|
|
164
|
-
'(keydown)': 'pattern.onKeydown($event)',
|
|
165
|
-
'(pointerdown)': 'pattern.onPointerdown($event)',
|
|
166
|
-
'(focusin)': 'onFocus()',
|
|
167
|
-
},
|
|
168
|
-
}]
|
|
169
|
-
}], ctorParameters: () => [] });
|
|
170
|
-
/** A selectable tab in a TabList. */
|
|
171
|
-
class CdkTab {
|
|
172
|
-
/** A reference to the tab element. */
|
|
173
|
-
_elementRef = inject(ElementRef);
|
|
174
|
-
/** The parent CdkTabs. */
|
|
175
|
-
_cdkTabs = inject(CdkTabs);
|
|
176
|
-
/** The parent CdkTabList. */
|
|
177
|
-
_cdkTabList = inject(CdkTabList);
|
|
178
|
-
/** A global unique identifier for the tab. */
|
|
179
|
-
_id = inject(_IdGenerator).getId('cdk-tab-');
|
|
180
|
-
/** The host native element. */
|
|
181
|
-
element = computed(() => this._elementRef.nativeElement, ...(ngDevMode ? [{ debugName: "element" }] : []));
|
|
182
|
-
/** The parent TabList UIPattern. */
|
|
183
|
-
tablist = computed(() => this._cdkTabList.pattern, ...(ngDevMode ? [{ debugName: "tablist" }] : []));
|
|
184
|
-
/** The TabPanel UIPattern associated with the tab */
|
|
185
|
-
tabpanel = computed(() => this._cdkTabs.unorderedTabpanels().find(tabpanel => tabpanel.value() === this.value()), ...(ngDevMode ? [{ debugName: "tabpanel" }] : []));
|
|
186
|
-
/** Whether a tab is disabled. */
|
|
187
|
-
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
188
|
-
/** A local unique identifier for the tab. */
|
|
189
|
-
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
190
|
-
/** The Tab UIPattern. */
|
|
191
|
-
pattern = new TabPattern({
|
|
192
|
-
...this,
|
|
193
|
-
id: () => this._id,
|
|
194
|
-
tablist: this.tablist,
|
|
195
|
-
tabpanel: this.tabpanel,
|
|
196
|
-
value: this.value,
|
|
197
|
-
});
|
|
198
|
-
ngOnInit() {
|
|
199
|
-
this._cdkTabList.register(this);
|
|
200
|
-
}
|
|
201
|
-
ngOnDestroy() {
|
|
202
|
-
this._cdkTabList.deregister(this);
|
|
203
|
-
}
|
|
204
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTab, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
205
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0-rc.1", type: CdkTab, isStandalone: true, selector: "[cdkTab]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "tab" }, properties: { "class.cdk-active": "pattern.active()", "attr.id": "pattern.id()", "attr.tabindex": "pattern.tabindex()", "attr.aria-selected": "pattern.selected()", "attr.aria-disabled": "pattern.disabled()", "attr.aria-controls": "pattern.controls()" }, classAttribute: "cdk-tab" }, exportAs: ["cdkTab"], ngImport: i0 });
|
|
206
|
-
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTab, decorators: [{
|
|
208
|
-
type: Directive,
|
|
209
|
-
args: [{
|
|
210
|
-
selector: '[cdkTab]',
|
|
211
|
-
exportAs: 'cdkTab',
|
|
212
|
-
host: {
|
|
213
|
-
'role': 'tab',
|
|
214
|
-
'class': 'cdk-tab',
|
|
215
|
-
'[class.cdk-active]': 'pattern.active()',
|
|
216
|
-
'[attr.id]': 'pattern.id()',
|
|
217
|
-
'[attr.tabindex]': 'pattern.tabindex()',
|
|
218
|
-
'[attr.aria-selected]': 'pattern.selected()',
|
|
219
|
-
'[attr.aria-disabled]': 'pattern.disabled()',
|
|
220
|
-
'[attr.aria-controls]': 'pattern.controls()',
|
|
221
|
-
},
|
|
222
|
-
}]
|
|
223
|
-
}] });
|
|
224
|
-
/**
|
|
225
|
-
* A TabPanel container for the resources of layered content associated with a tab.
|
|
226
|
-
*
|
|
227
|
-
* If a tabpanel is hidden due to its corresponding tab is not activated, the `inert` attribute
|
|
228
|
-
* will be applied to the tabpanel element to remove it from the accessibility tree and stop
|
|
229
|
-
* all the keyboard and pointer interactions. Note that this does not visually hide the tabpenl
|
|
230
|
-
* and a proper styling is required.
|
|
231
|
-
*/
|
|
232
|
-
class CdkTabPanel {
|
|
233
|
-
/** The DeferredContentAware host directive. */
|
|
234
|
-
_deferredContentAware = inject(DeferredContentAware);
|
|
235
|
-
/** The parent CdkTabs. */
|
|
236
|
-
_cdkTabs = inject(CdkTabs);
|
|
237
|
-
/** A global unique identifier for the tab. */
|
|
238
|
-
_id = inject(_IdGenerator).getId('cdk-tabpanel-');
|
|
239
|
-
/** The Tab UIPattern associated with the tabpanel */
|
|
240
|
-
tab = computed(() => this._cdkTabs.tabs()?.find(tab => tab.value() === this.value()), ...(ngDevMode ? [{ debugName: "tab" }] : []));
|
|
241
|
-
/** A local unique identifier for the tabpanel. */
|
|
242
|
-
value = input.required(...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
243
|
-
/** The TabPanel UIPattern. */
|
|
244
|
-
pattern = new TabPanelPattern({
|
|
245
|
-
...this,
|
|
246
|
-
id: () => this._id,
|
|
247
|
-
tab: this.tab,
|
|
248
|
-
});
|
|
249
|
-
constructor() {
|
|
250
|
-
afterRenderEffect(() => this._deferredContentAware.contentVisible.set(!this.pattern.hidden()));
|
|
251
|
-
}
|
|
252
|
-
ngOnInit() {
|
|
253
|
-
this._cdkTabs.register(this);
|
|
254
|
-
}
|
|
255
|
-
ngOnDestroy() {
|
|
256
|
-
this._cdkTabs.deregister(this);
|
|
257
|
-
}
|
|
258
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
259
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0-rc.1", type: CdkTabPanel, isStandalone: true, selector: "[cdkTabPanel]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "tabpanel" }, properties: { "attr.id": "pattern.id()", "attr.tabindex": "pattern.tabindex()", "attr.inert": "pattern.hidden() ? true : null", "attr.aria-labelledby": "pattern.labelledBy()" }, classAttribute: "cdk-tabpanel" }, exportAs: ["cdkTabPanel"], hostDirectives: [{ directive: i1.DeferredContentAware, inputs: ["preserveContent", "preserveContent"] }], ngImport: i0 });
|
|
260
|
-
}
|
|
261
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabPanel, decorators: [{
|
|
262
|
-
type: Directive,
|
|
263
|
-
args: [{
|
|
264
|
-
selector: '[cdkTabPanel]',
|
|
265
|
-
exportAs: 'cdkTabPanel',
|
|
266
|
-
host: {
|
|
267
|
-
'role': 'tabpanel',
|
|
268
|
-
'class': 'cdk-tabpanel',
|
|
269
|
-
'[attr.id]': 'pattern.id()',
|
|
270
|
-
'[attr.tabindex]': 'pattern.tabindex()',
|
|
271
|
-
'[attr.inert]': 'pattern.hidden() ? true : null',
|
|
272
|
-
'[attr.aria-labelledby]': 'pattern.labelledBy()',
|
|
273
|
-
},
|
|
274
|
-
hostDirectives: [
|
|
275
|
-
{
|
|
276
|
-
directive: DeferredContentAware,
|
|
277
|
-
inputs: ['preserveContent'],
|
|
278
|
-
},
|
|
279
|
-
],
|
|
280
|
-
}]
|
|
281
|
-
}], ctorParameters: () => [] });
|
|
282
|
-
/**
|
|
283
|
-
* A TabContent container for the lazy-loaded content.
|
|
284
|
-
*/
|
|
285
|
-
class CdkTabContent {
|
|
286
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
287
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-rc.1", type: CdkTabContent, isStandalone: true, selector: "ng-template[cdkTabContent]", exportAs: ["cdTabContent"], hostDirectives: [{ directive: i1.DeferredContent }], ngImport: i0 });
|
|
288
|
-
}
|
|
289
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-rc.1", ngImport: i0, type: CdkTabContent, decorators: [{
|
|
290
|
-
type: Directive,
|
|
291
|
-
args: [{
|
|
292
|
-
selector: 'ng-template[cdkTabContent]',
|
|
293
|
-
exportAs: 'cdTabContent',
|
|
294
|
-
hostDirectives: [DeferredContent],
|
|
295
|
-
}]
|
|
296
|
-
}] });
|
|
297
|
-
|
|
298
|
-
export { CdkTab, CdkTabContent, CdkTabList, CdkTabPanel, CdkTabs };
|
|
299
|
-
//# sourceMappingURL=tabs.mjs.map
|
package/fesm2022/tabs.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.mjs","sources":["../../../../../k8-fastbuild-ST-c646aa77115d/bin/src/cdk-experimental/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/cdk-experimental/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 '../ui-patterns';\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 CdkTabs is a container meant to be used with\n * CdkTabList, CdkTab, and CdkTabPanel as follows:\n *\n * ```html\n * <div cdkTabs>\n * <ul cdkTabList>\n * <li cdkTab value=\"tab1\">Tab 1</li>\n * <li cdkTab value=\"tab2\">Tab 2</li>\n * <li cdkTab value=\"tab3\">Tab 3</li>\n * </ul>\n *\n * <div cdkTabPanel value=\"tab1\">\n * <ng-template cdkTabContent>Tab content 1</ng-template>\n * </div>\n * <div cdkTabPanel value=\"tab2\">\n * <ng-template cdkTabContent>Tab content 2</ng-template>\n * </div>\n * <div cdkTabPanel value=\"tab3\">\n * <ng-template cdkTabContent>Tab content 3</ng-template>\n * </div>\n * ```\n */\n@Directive({\n selector: '[cdkTabs]',\n exportAs: 'cdkTabs',\n host: {\n 'class': 'cdk-tabs',\n },\n})\nexport class CdkTabs {\n /** The CdkTabList nested inside of the container. */\n private readonly _tablist = signal<CdkTabList | undefined>(undefined);\n\n /** The CdkTabPanels nested inside of the container. */\n private readonly _unorderedPanels = signal(new Set<CdkTabPanel>());\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: CdkTabList | CdkTabPanel) {\n if (child instanceof CdkTabList) {\n this._tablist.set(child);\n }\n\n if (child instanceof CdkTabPanel) {\n this._unorderedPanels().add(child);\n this._unorderedPanels.set(new Set(this._unorderedPanels()));\n }\n }\n\n deregister(child: CdkTabList | CdkTabPanel) {\n if (child instanceof CdkTabList) {\n this._tablist.set(undefined);\n }\n\n if (child instanceof CdkTabPanel) {\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 CdkTab(s).\n */\n@Directive({\n selector: '[cdkTabList]',\n exportAs: 'cdkTabList',\n host: {\n 'role': 'tablist',\n 'class': 'cdk-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 CdkTabList implements OnInit, OnDestroy {\n /** The parent CdkTabs. */\n private readonly _cdkTabs = inject(CdkTabs);\n\n /** The CdkTabs nested inside of the CdkTabList. */\n private readonly _unorderedTabs = signal(new Set<CdkTab>());\n\n /** The internal tab selection state. */\n private readonly _selection = linkedSignal(() => (this.tab() ? [this.tab()!] : []));\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 tab = 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 });\n\n /** Whether the tree has received focus yet. */\n private _hasFocused = signal(false);\n\n constructor() {\n afterRenderEffect(() => this.tab.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._cdkTabs.register(this);\n }\n\n ngOnDestroy() {\n this._cdkTabs.deregister(this);\n }\n\n register(child: CdkTab) {\n this._unorderedTabs().add(child);\n this._unorderedTabs.set(new Set(this._unorderedTabs()));\n }\n\n deregister(child: CdkTab) {\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: '[cdkTab]',\n exportAs: 'cdkTab',\n host: {\n 'role': 'tab',\n 'class': 'cdk-tab',\n '[class.cdk-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 CdkTab implements HasElement, OnInit, OnDestroy {\n /** A reference to the tab element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent CdkTabs. */\n private readonly _cdkTabs = inject(CdkTabs);\n\n /** The parent CdkTabList. */\n private readonly _cdkTabList = inject(CdkTabList);\n\n /** A global unique identifier for the tab. */\n private readonly _id = inject(_IdGenerator).getId('cdk-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._cdkTabList.pattern);\n\n /** The TabPanel UIPattern associated with the tab */\n readonly tabpanel = computed(() =>\n this._cdkTabs.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._cdkTabList.register(this);\n }\n\n ngOnDestroy() {\n this._cdkTabList.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: '[cdkTabPanel]',\n exportAs: 'cdkTabPanel',\n host: {\n 'role': 'tabpanel',\n 'class': 'cdk-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 CdkTabPanel implements OnInit, OnDestroy {\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware);\n\n /** The parent CdkTabs. */\n private readonly _cdkTabs = inject(CdkTabs);\n\n /** A global unique identifier for the tab. */\n private readonly _id = inject(_IdGenerator).getId('cdk-tabpanel-');\n\n /** The Tab UIPattern associated with the tabpanel */\n readonly tab = computed(() => this._cdkTabs.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._cdkTabs.register(this);\n }\n\n ngOnDestroy() {\n this._cdkTabs.deregister(this);\n }\n}\n\n/**\n * A TabContent container for the lazy-loaded content.\n */\n@Directive({\n selector: 'ng-template[cdkTabContent]',\n exportAs: 'cdTabContent',\n hostDirectives: [DeferredContent],\n})\nexport class CdkTabContent {}\n"],"names":[],"mappings":"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"}
|