@angular/cdk-experimental 20.0.0-next.9 → 20.0.0-rc.0
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/cdk-experimental.mjs +1 -1
- package/fesm2022/cdk-experimental.mjs.map +1 -1
- package/fesm2022/{tabs-BunANY1M.mjs → tabs-DFP3Xs4J.mjs} +67 -22
- package/fesm2022/tabs-DFP3Xs4J.mjs.map +1 -0
- package/fesm2022/tabs.mjs +25 -12
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/ui-patterns.mjs +1 -1
- package/package.json +2 -2
- package/tabs/index.d.ts +19 -9
- package/{tabs.d-BAo141mw.d.ts → tabs.d-DooGD7Uk.d.ts} +74 -25
- package/ui-patterns/index.d.ts +1 -1
- package/fesm2022/tabs-BunANY1M.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Version } from '@angular/core';
|
|
2
2
|
|
|
3
3
|
/** Current version of the CDK Experimental package. */
|
|
4
|
-
const VERSION = new Version('20.0.0-
|
|
4
|
+
const VERSION = new Version('20.0.0-rc.0');
|
|
5
5
|
|
|
6
6
|
export { VERSION };
|
|
7
7
|
//# sourceMappingURL=cdk-experimental.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdk-experimental.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the CDK Experimental package. */\nexport const VERSION = new Version('20.0.0-
|
|
1
|
+
{"version":3,"file":"cdk-experimental.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of the CDK Experimental package. */\nexport const VERSION = new Version('20.0.0-rc.0');\n"],"names":[],"mappings":";;AAUA;MACa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;;;"}
|
|
@@ -1,35 +1,77 @@
|
|
|
1
|
-
import { computed
|
|
1
|
+
import { computed } from '@angular/core';
|
|
2
2
|
import { K as KeyboardEventManager, P as PointerEventManager, L as ListFocus, b as ListNavigation, a as ListSelection } from './list-focus-Di7m_z_6.mjs';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* An Expansion control.
|
|
6
|
+
*
|
|
7
|
+
* Use Expansion behavior if a pattern has a collapsible view that has two elements rely on the
|
|
8
|
+
* states from each other. For example
|
|
9
|
+
*
|
|
10
|
+
* ```html
|
|
11
|
+
* <button aria-controls="remote-content" aria-expanded="false">Toggle Content</button>
|
|
12
|
+
*
|
|
13
|
+
* ...
|
|
14
|
+
*
|
|
15
|
+
* <div id="remote-content" aria-hidden="true">
|
|
16
|
+
* Collapsible content
|
|
17
|
+
* </div>
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
class ExpansionControl {
|
|
21
|
+
inputs;
|
|
22
|
+
/** Whether an Expansion is visible. */
|
|
23
|
+
visible;
|
|
24
|
+
/** The controllerd Expansion panel Id. */
|
|
25
|
+
controls = computed(() => this.inputs.expansionPanel()?.id());
|
|
26
|
+
constructor(inputs) {
|
|
27
|
+
this.inputs = inputs;
|
|
28
|
+
this.visible = inputs.visible;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** A Expansion panel. */
|
|
32
|
+
class ExpansionPanel {
|
|
33
|
+
inputs;
|
|
34
|
+
/** A unique identifier for the panel. */
|
|
35
|
+
id;
|
|
36
|
+
/** Whether the panel is hidden. */
|
|
37
|
+
hidden = computed(() => !this.inputs.expansionControl()?.visible());
|
|
38
|
+
constructor(inputs) {
|
|
39
|
+
this.inputs = inputs;
|
|
40
|
+
this.id = inputs.id;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
4
44
|
/** A tab in a tablist. */
|
|
5
45
|
class TabPattern {
|
|
46
|
+
inputs;
|
|
6
47
|
/** A global unique identifier for the tab. */
|
|
7
48
|
id;
|
|
8
49
|
/** A local unique identifier for the tab. */
|
|
9
50
|
value;
|
|
10
|
-
/** Whether the tab is active. */
|
|
11
|
-
active = computed(() => this.tablist()?.focusManager.activeItem() === this);
|
|
12
|
-
/** Whether the tab is selected. */
|
|
13
|
-
selected = computed(() => this.tablist().selection.inputs.value().includes(this.value()));
|
|
14
|
-
/** A Tabpanel Id controlled by the tab. */
|
|
15
|
-
controls = computed(() => this.tabpanel()?.id());
|
|
16
51
|
/** Whether the tab is disabled. */
|
|
17
52
|
disabled;
|
|
18
|
-
/** A reference to the parent tablist. */
|
|
19
|
-
tablist;
|
|
20
|
-
/** A reference to the corresponding tabpanel. */
|
|
21
|
-
tabpanel;
|
|
22
|
-
/** The tabindex of the tab. */
|
|
23
|
-
tabindex = computed(() => this.tablist().focusManager.getItemTabindex(this));
|
|
24
53
|
/** The html element that should receive focus. */
|
|
25
54
|
element;
|
|
55
|
+
/** Controls the expansion state for the tab. */
|
|
56
|
+
expansionControl;
|
|
57
|
+
/** Whether the tab is active. */
|
|
58
|
+
active = computed(() => this.inputs.tablist().focusManager.activeItem() === this);
|
|
59
|
+
/** Whether the tab is selected. */
|
|
60
|
+
selected = computed(() => !!this.inputs.tablist().selection.inputs.value().includes(this.value()));
|
|
61
|
+
/** A tabpanel Id controlled by the tab. */
|
|
62
|
+
controls = computed(() => this.expansionControl.controls());
|
|
63
|
+
/** The tabindex of the tab. */
|
|
64
|
+
tabindex = computed(() => this.inputs.tablist().focusManager.getItemTabindex(this));
|
|
26
65
|
constructor(inputs) {
|
|
66
|
+
this.inputs = inputs;
|
|
27
67
|
this.id = inputs.id;
|
|
28
68
|
this.value = inputs.value;
|
|
29
|
-
this.tablist = inputs.tablist;
|
|
30
|
-
this.tabpanel = inputs.tabpanel;
|
|
31
|
-
this.element = inputs.element;
|
|
32
69
|
this.disabled = inputs.disabled;
|
|
70
|
+
this.element = inputs.element;
|
|
71
|
+
this.expansionControl = new ExpansionControl({
|
|
72
|
+
visible: this.selected,
|
|
73
|
+
expansionPanel: computed(() => inputs.tabpanel()?.expansionPanel),
|
|
74
|
+
});
|
|
33
75
|
}
|
|
34
76
|
}
|
|
35
77
|
/** A tabpanel associated with a tab. */
|
|
@@ -38,14 +80,17 @@ class TabPanelPattern {
|
|
|
38
80
|
id;
|
|
39
81
|
/** A local unique identifier for the tabpanel. */
|
|
40
82
|
value;
|
|
41
|
-
/**
|
|
42
|
-
|
|
83
|
+
/** Represents the expansion state for the tabpanel. */
|
|
84
|
+
expansionPanel;
|
|
43
85
|
/** Whether the tabpanel is hidden. */
|
|
44
|
-
hidden = computed(() =>
|
|
86
|
+
hidden = computed(() => this.expansionPanel.hidden());
|
|
45
87
|
constructor(inputs) {
|
|
46
88
|
this.id = inputs.id;
|
|
47
89
|
this.value = inputs.value;
|
|
48
|
-
this.
|
|
90
|
+
this.expansionPanel = new ExpansionPanel({
|
|
91
|
+
id: inputs.id,
|
|
92
|
+
expansionControl: computed(() => inputs.tab()?.expansionControl),
|
|
93
|
+
});
|
|
49
94
|
}
|
|
50
95
|
}
|
|
51
96
|
/** Controls the state of a tablist. */
|
|
@@ -104,7 +149,7 @@ class TabListPattern {
|
|
|
104
149
|
this.navigation = new ListNavigation({ ...inputs, focusManager: this.focusManager });
|
|
105
150
|
this.selection = new ListSelection({
|
|
106
151
|
...inputs,
|
|
107
|
-
multi:
|
|
152
|
+
multi: () => false,
|
|
108
153
|
focusManager: this.focusManager,
|
|
109
154
|
});
|
|
110
155
|
}
|
|
@@ -173,4 +218,4 @@ class TabListPattern {
|
|
|
173
218
|
}
|
|
174
219
|
|
|
175
220
|
export { TabListPattern as T, TabPattern as a, TabPanelPattern as b };
|
|
176
|
-
//# sourceMappingURL=tabs-
|
|
221
|
+
//# sourceMappingURL=tabs-DFP3Xs4J.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-DFP3Xs4J.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/ui-patterns/behaviors/expansion/expansion.ts","../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/ui-patterns/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 */\nimport {computed} from '@angular/core';\nimport {SignalLike} from '../signal-like/signal-like';\n\n/** Inputs for an Expansion control. */\nexport interface ExpansionControlInputs {\n /** Whether an Expansion is visible. */\n visible: SignalLike<boolean>;\n\n /** The controlled Expansion panel. */\n expansionPanel: SignalLike<ExpansionPanel | undefined>;\n}\n\n/** Inputs for an Expansion panel. */\nexport interface ExpansionPanelInputs {\n /** A unique identifier for the panel. */\n id: SignalLike<string>;\n\n /** The Expansion control. */\n expansionControl: SignalLike<ExpansionControl | undefined>;\n}\n\n/**\n * An Expansion control.\n *\n * Use Expansion behavior if a pattern has a collapsible view that has two elements rely on the\n * states from each other. For example\n *\n * ```html\n * <button aria-controls=\"remote-content\" aria-expanded=\"false\">Toggle Content</button>\n *\n * ...\n *\n * <div id=\"remote-content\" aria-hidden=\"true\">\n * Collapsible content\n * </div>\n * ```\n */\nexport class ExpansionControl {\n /** Whether an Expansion is visible. */\n visible: SignalLike<boolean>;\n\n /** The controllerd Expansion panel Id. */\n controls = computed(() => this.inputs.expansionPanel()?.id());\n\n constructor(readonly inputs: ExpansionControlInputs) {\n this.visible = inputs.visible;\n }\n}\n\n/** A Expansion panel. */\nexport class ExpansionPanel {\n /** A unique identifier for the panel. */\n id: SignalLike<string>;\n\n /** Whether the panel is hidden. */\n hidden = computed(() => !this.inputs.expansionControl()?.visible());\n\n constructor(readonly inputs: ExpansionPanelInputs) {\n this.id = inputs.id;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed} from '@angular/core';\nimport {KeyboardEventManager} from '../behaviors/event-manager/keyboard-event-manager';\nimport {PointerEventManager} from '../behaviors/event-manager/pointer-event-manager';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../behaviors/list-focus/list-focus';\nimport {\n ListNavigation,\n ListNavigationInputs,\n ListNavigationItem,\n} from '../behaviors/list-navigation/list-navigation';\nimport {\n ListSelection,\n ListSelectionInputs,\n ListSelectionItem,\n} from '../behaviors/list-selection/list-selection';\nimport {ExpansionControl, ExpansionPanel} from '../behaviors/expansion/expansion';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\n\n/** The required inputs to tabs. */\nexport interface TabInputs extends ListNavigationItem, ListSelectionItem<string>, ListFocusItem {\n /** The parent tablist that controls the tab. */\n tablist: SignalLike<TabListPattern>;\n\n /** The remote tabpanel controlled by the tab. */\n tabpanel: SignalLike<TabPanelPattern | undefined>;\n}\n\n/** A tab in a tablist. */\nexport class TabPattern {\n /** A global unique identifier for the tab. */\n id: SignalLike<string>;\n\n /** A local unique identifier for the tab. */\n value: SignalLike<string>;\n\n /** Whether the tab is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement>;\n\n /** Controls the expansion state for the tab. */\n expansionControl: ExpansionControl;\n\n /** Whether the tab is active. */\n active = computed(() => this.inputs.tablist().focusManager.activeItem() === this);\n\n /** Whether the tab is selected. */\n selected = computed(\n () => !!this.inputs.tablist().selection.inputs.value().includes(this.value()),\n );\n\n /** A tabpanel Id controlled by the tab. */\n controls = computed(() => this.expansionControl.controls());\n\n /** The tabindex of the tab. */\n tabindex = computed(() => this.inputs.tablist().focusManager.getItemTabindex(this));\n\n constructor(readonly inputs: TabInputs) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.disabled = inputs.disabled;\n this.element = inputs.element;\n this.expansionControl = new ExpansionControl({\n visible: this.selected,\n expansionPanel: computed(() => inputs.tabpanel()?.expansionPanel),\n });\n }\n}\n\n/** The required inputs for the tabpanel. */\nexport interface TabPanelInputs {\n id: SignalLike<string>;\n tab: SignalLike<TabPattern | undefined>;\n value: SignalLike<string>;\n}\n\n/** A tabpanel associated with a tab. */\nexport class TabPanelPattern {\n /** A global unique identifier for the tabpanel. */\n id: SignalLike<string>;\n\n /** A local unique identifier for the tabpanel. */\n value: SignalLike<string>;\n\n /** Represents the expansion state for the tabpanel. */\n expansionPanel: ExpansionPanel;\n\n /** Whether the tabpanel is hidden. */\n hidden = computed(() => this.expansionPanel.hidden());\n\n constructor(inputs: TabPanelInputs) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.expansionPanel = new ExpansionPanel({\n id: inputs.id,\n expansionControl: computed(() => inputs.tab()?.expansionControl),\n });\n }\n}\n\n/** The selection operations that the tablist can perform. */\ninterface SelectOptions {\n select?: boolean;\n toggle?: boolean;\n toggleOne?: boolean;\n selectOne?: boolean;\n}\n\n/** The required inputs for the tablist. */\nexport type TabListInputs = ListNavigationInputs<TabPattern> &\n Omit<ListSelectionInputs<TabPattern, string>, 'multi'> &\n ListFocusInputs<TabPattern> & {\n disabled: SignalLike<boolean>;\n };\n\n/** Controls the state of a tablist. */\nexport class TabListPattern {\n /** Controls navigation for the tablist. */\n navigation: ListNavigation<TabPattern>;\n\n /** Controls selection for the tablist. */\n selection: ListSelection<TabPattern, string>;\n\n /** Controls focus for the tablist. */\n focusManager: ListFocus<TabPattern>;\n\n /** Whether the tablist is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the tablist is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The tabindex of the tablist. */\n tabindex = computed(() => this.focusManager.getListTabindex());\n\n /** The id of the current active tab. */\n activedescendant = computed(() => this.focusManager.getActiveDescendant());\n\n /** Whether selection should follow focus. */\n followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** The key used to navigate to the previous tab in the tablist. */\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 item in the list. */\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 tablist. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager()\n .on(this.prevKey, () => this.prev({selectOne: this.followFocus()}))\n .on(this.nextKey, () => this.next({selectOne: this.followFocus()}))\n .on('Home', () => this.first({selectOne: this.followFocus()}))\n .on('End', () => this.last({selectOne: this.followFocus()}))\n .on(' ', () => this.selection.selectOne())\n .on('Enter', () => this.selection.selectOne());\n\n return manager;\n });\n\n /** The pointerdown event manager for the tablist. */\n pointerdown = computed(() => {\n return new PointerEventManager().on(e => this.goto(e, {selectOne: true}));\n });\n\n constructor(readonly inputs: TabListInputs) {\n this.disabled = inputs.disabled;\n this.orientation = inputs.orientation;\n\n this.focusManager = new ListFocus(inputs);\n this.navigation = new ListNavigation({...inputs, focusManager: this.focusManager});\n this.selection = new ListSelection({\n ...inputs,\n multi: () => false,\n focusManager: this.focusManager,\n });\n }\n\n /** Handles keydown events for the tablist. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** The pointerdown event manager for the tablist. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /** Navigates to the first option in the tablist. */\n first(opts?: SelectOptions) {\n this.navigation.first();\n this._updateSelection(opts);\n }\n\n /** Navigates to the last option in the tablist. */\n last(opts?: SelectOptions) {\n this.navigation.last();\n this._updateSelection(opts);\n }\n\n /** Navigates to the next option in the tablist. */\n next(opts?: SelectOptions) {\n this.navigation.next();\n this._updateSelection(opts);\n }\n\n /** Navigates to the previous option in the tablist. */\n prev(opts?: SelectOptions) {\n this.navigation.prev();\n this._updateSelection(opts);\n }\n\n /** Navigates to the given item in the tablist. */\n goto(event: PointerEvent, opts?: SelectOptions) {\n const item = this._getItem(event);\n\n if (item) {\n this.navigation.goto(item);\n this._updateSelection(opts);\n }\n }\n\n /** Handles updating selection for the tablist. */\n private _updateSelection(opts?: SelectOptions) {\n if (opts?.select) {\n this.selection.select();\n }\n if (opts?.toggle) {\n this.selection.toggle();\n }\n if (opts?.toggleOne) {\n this.selection.toggleOne();\n }\n if (opts?.selectOne) {\n this.selection.selectOne();\n }\n }\n\n private _getItem(e: PointerEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"tab\"]');\n return this.inputs.items().find(i => i.element() === element);\n }\n}\n"],"names":[],"mappings":"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"}
|
package/fesm2022/tabs.mjs
CHANGED
|
@@ -3,9 +3,9 @@ import { DeferredContentAware, DeferredContent } from '@angular/cdk-experimental
|
|
|
3
3
|
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
4
4
|
import { Directionality } from '@angular/cdk/bidi';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { contentChild, contentChildren, computed, Directive, inject, input, booleanAttribute, model,
|
|
6
|
+
import { contentChild, contentChildren, computed, Directive, inject, linkedSignal, input, booleanAttribute, model, effect, ElementRef } from '@angular/core';
|
|
7
7
|
import { toSignal } from '@angular/core/rxjs-interop';
|
|
8
|
-
import { T as TabListPattern, a as TabPattern, b as TabPanelPattern } from './tabs-
|
|
8
|
+
import { T as TabListPattern, a as TabPattern, b as TabPanelPattern } from './tabs-DFP3Xs4J.mjs';
|
|
9
9
|
import './list-focus-Di7m_z_6.mjs';
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -17,15 +17,20 @@ import './list-focus-Di7m_z_6.mjs';
|
|
|
17
17
|
* ```html
|
|
18
18
|
* <div cdkTabs>
|
|
19
19
|
* <ul cdkTabList>
|
|
20
|
-
* <li cdkTab>Tab 1</li>
|
|
21
|
-
* <li cdkTab>Tab 2</li>
|
|
22
|
-
* <li cdkTab>Tab 3</li>
|
|
20
|
+
* <li cdkTab value="tab1">Tab 1</li>
|
|
21
|
+
* <li cdkTab value="tab2">Tab 2</li>
|
|
22
|
+
* <li cdkTab value="tab3">Tab 3</li>
|
|
23
23
|
* </ul>
|
|
24
24
|
*
|
|
25
|
-
* <div cdkTabPanel
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* <div cdkTabPanel value="tab1">
|
|
26
|
+
* <ng-template cdkTabContent>Tab content 1</ng-template>
|
|
27
|
+
* </div>
|
|
28
|
+
* <div cdkTabPanel value="tab2">
|
|
29
|
+
* <ng-template cdkTabContent>Tab content 2</ng-template>
|
|
30
|
+
* </div>
|
|
31
|
+
* <div cdkTabPanel value="tab3">
|
|
32
|
+
* <ng-template cdkTabContent>Tab content 3</ng-template>
|
|
33
|
+
* </div>
|
|
29
34
|
* ```
|
|
30
35
|
*/
|
|
31
36
|
class CdkTabs {
|
|
@@ -60,6 +65,8 @@ class CdkTabList {
|
|
|
60
65
|
_directionality = inject(Directionality);
|
|
61
66
|
/** The CdkTabs nested inside of the CdkTabList. */
|
|
62
67
|
_cdkTabs = contentChildren(CdkTab);
|
|
68
|
+
/** The internal tab selection state. */
|
|
69
|
+
_selection = linkedSignal(() => (this.tab() ? [this.tab()] : []));
|
|
63
70
|
/** A signal wrapper for directionality. */
|
|
64
71
|
textDirection = toSignal(this._directionality.change, {
|
|
65
72
|
initialValue: this._directionality.value,
|
|
@@ -80,15 +87,21 @@ class CdkTabList {
|
|
|
80
87
|
disabled = input(false, { transform: booleanAttribute });
|
|
81
88
|
/** The current index that has been navigated to. */
|
|
82
89
|
activeIndex = model(0);
|
|
90
|
+
// TODO(ok7sai): Provides a default state when there is no pre-select tab.
|
|
91
|
+
/** The current selected tab. */
|
|
92
|
+
tab = model();
|
|
83
93
|
/** The TabList UIPattern. */
|
|
84
94
|
pattern = new TabListPattern({
|
|
85
95
|
...this,
|
|
86
96
|
items: this.tabs,
|
|
87
97
|
textDirection: this.textDirection,
|
|
88
|
-
value:
|
|
98
|
+
value: this._selection,
|
|
89
99
|
});
|
|
100
|
+
constructor() {
|
|
101
|
+
effect(() => this.tab.set(this._selection()[0]));
|
|
102
|
+
}
|
|
90
103
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkTabList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
91
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.0.0-next.5", 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 }, activeIndex: { classPropertyName: "activeIndex", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeIndex: "activeIndexChange" }, host: { attributes: { "role": "tablist" }, listeners: { "keydown": "pattern.onKeydown($event)", "pointerdown": "pattern.onPointerdown($event)" }, properties: { "attr.tabindex": "pattern.tabindex()", "attr.aria-disabled": "pattern.disabled()", "attr.aria-orientation": "pattern.orientation()", "attr.aria-activedescendant": "pattern.activedescendant()" }, classAttribute: "cdk-tablist" }, queries: [{ propertyName: "_cdkTabs", predicate: CdkTab, isSignal: true }], exportAs: ["cdkTabList"], ngImport: i0 });
|
|
104
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.0.0-next.5", 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 }, activeIndex: { classPropertyName: "activeIndex", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null }, tab: { classPropertyName: "tab", publicName: "tab", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeIndex: "activeIndexChange", tab: "tabChange" }, host: { attributes: { "role": "tablist" }, listeners: { "keydown": "pattern.onKeydown($event)", "pointerdown": "pattern.onPointerdown($event)" }, properties: { "attr.tabindex": "pattern.tabindex()", "attr.aria-disabled": "pattern.disabled()", "attr.aria-orientation": "pattern.orientation()", "attr.aria-activedescendant": "pattern.activedescendant()" }, classAttribute: "cdk-tablist" }, queries: [{ propertyName: "_cdkTabs", predicate: CdkTab, isSignal: true }], exportAs: ["cdkTabList"], ngImport: i0 });
|
|
92
105
|
}
|
|
93
106
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5", ngImport: i0, type: CdkTabList, decorators: [{
|
|
94
107
|
type: Directive,
|
|
@@ -106,7 +119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0-next.5",
|
|
|
106
119
|
'(pointerdown)': 'pattern.onPointerdown($event)',
|
|
107
120
|
},
|
|
108
121
|
}]
|
|
109
|
-
}] });
|
|
122
|
+
}], ctorParameters: () => [] });
|
|
110
123
|
/** A selectable tab in a TabList. */
|
|
111
124
|
class CdkTab {
|
|
112
125
|
/** A reference to the tab element. */
|
package/fesm2022/tabs.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/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 contentChild,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TabListPattern, TabPanelPattern, TabPattern} from '../ui-patterns';\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>Tab 1</li>\n * <li cdkTab>Tab 2</li>\n * <li cdkTab>Tab 3</li>\n * </ul>\n *\n * <div cdkTabPanel>Tab content 1</div>\n * <div cdkTabPanel>Tab content 2</div>\n * <div cdkTabPanel>Tab content 3</div>\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 _cdkTabList = contentChild(CdkTabList);\n\n /** The CdkTabPanels nested inside of the container. */\n private readonly _cdkTabPanels = contentChildren(CdkTabPanel);\n\n /** The Tab UIPattern of the child Tabs. */\n tabs = computed(() => this._cdkTabList()?.tabs());\n\n /** The TabPanel UIPattern of the child TabPanels. */\n tabpanels = computed(() => this._cdkTabPanels().map(tabpanel => tabpanel.pattern));\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 },\n})\nexport class CdkTabList {\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** The CdkTabs nested inside of the CdkTabList. */\n private readonly _cdkTabs = contentChildren(CdkTab);\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The Tab UIPatterns of the child Tabs. */\n tabs = computed(() => this._cdkTabs().map(tab => tab.pattern));\n\n /** Whether the tablist is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /** Whether disabled items in the list should be skipped when navigating. */\n skipDisabled = input(true, {transform: booleanAttribute});\n\n /** The focus strategy used by the tablist. */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** The selection strategy used by the tablist. */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** Whether the tablist is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The current index that has been navigated to. */\n activeIndex = model<number>(0);\n\n /** The TabList UIPattern. */\n pattern: TabListPattern = new TabListPattern({\n ...this,\n items: this.tabs,\n textDirection: this.textDirection,\n value: signal<string[]>([]),\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 {\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 parent TabList UIPattern. */\n protected tablist = computed(() => this._cdkTabList.pattern);\n\n /** The TabPanel UIPattern associated with the tab */\n protected tabpanel = computed(() =>\n this._cdkTabs.tabpanels().find(tabpanel => tabpanel.value() === this.value()),\n );\n\n /** Whether a tab is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** A local unique identifier for the tab. */\n value = input.required<string>();\n\n /** The Tab UIPattern. */\n pattern: TabPattern = new TabPattern({\n ...this,\n id: () => this._id,\n element: () => this._elementRef.nativeElement,\n tablist: this.tablist,\n tabpanel: this.tabpanel,\n value: this.value,\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 'tabindex': '0',\n 'class': 'cdk-tabpanel',\n '[attr.id]': 'pattern.id()',\n '[attr.inert]': 'pattern.hidden() ? true : null',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class CdkTabPanel {\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 protected tab = computed(() => this._cdkTabs.tabs()?.find(tab => tab.value() === this.value()));\n\n /** A local unique identifier for the tabpanel. */\n value = input.required<string>();\n\n /** The TabPanel UIPattern. */\n pattern: TabPanelPattern = new TabPanelPattern({\n ...this,\n id: () => this._id,\n tab: this.tab,\n });\n\n constructor() {\n effect(() => this._deferredContentAware.contentVisible.set(!this.pattern.hidden()));\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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"}
|
|
1
|
+
{"version":3,"file":"tabs.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/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 contentChild,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n linkedSignal,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TabListPattern, TabPanelPattern, TabPattern} from '../ui-patterns';\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 _cdkTabList = contentChild(CdkTabList);\n\n /** The CdkTabPanels nested inside of the container. */\n private readonly _cdkTabPanels = contentChildren(CdkTabPanel);\n\n /** The Tab UIPattern of the child Tabs. */\n tabs = computed(() => this._cdkTabList()?.tabs());\n\n /** The TabPanel UIPattern of the child TabPanels. */\n tabpanels = computed(() => this._cdkTabPanels().map(tabpanel => tabpanel.pattern));\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 },\n})\nexport class CdkTabList {\n /** The directionality (LTR / RTL) context for the application (or a subtree of it). */\n private readonly _directionality = inject(Directionality);\n\n /** The CdkTabs nested inside of the CdkTabList. */\n private readonly _cdkTabs = contentChildren(CdkTab);\n\n /** The internal tab selection state. */\n private readonly _selection = linkedSignal(() => (this.tab() ? [this.tab()!] : []));\n\n /** A signal wrapper for directionality. */\n protected textDirection = toSignal(this._directionality.change, {\n initialValue: this._directionality.value,\n });\n\n /** The Tab UIPatterns of the child Tabs. */\n tabs = computed(() => this._cdkTabs().map(tab => tab.pattern));\n\n /** Whether the tablist is vertically or horizontally oriented. */\n orientation = input<'vertical' | 'horizontal'>('horizontal');\n\n /** Whether focus should wrap when navigating. */\n wrap = input(true, {transform: booleanAttribute});\n\n /** Whether disabled items in the list should be skipped when navigating. */\n skipDisabled = input(true, {transform: booleanAttribute});\n\n /** The focus strategy used by the tablist. */\n focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /** The selection strategy used by the tablist. */\n selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** Whether the tablist is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** The current index that has been navigated to. */\n activeIndex = model<number>(0);\n\n // TODO(ok7sai): Provides a default state when there is no pre-select tab.\n /** The current selected tab. */\n tab = model<string | undefined>();\n\n /** The TabList UIPattern. */\n pattern: TabListPattern = new TabListPattern({\n ...this,\n items: this.tabs,\n textDirection: this.textDirection,\n value: this._selection,\n });\n\n constructor() {\n effect(() => this.tab.set(this._selection()[0]));\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 {\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 parent TabList UIPattern. */\n protected tablist = computed(() => this._cdkTabList.pattern);\n\n /** The TabPanel UIPattern associated with the tab */\n protected tabpanel = computed(() =>\n this._cdkTabs.tabpanels().find(tabpanel => tabpanel.value() === this.value()),\n );\n\n /** Whether a tab is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** A local unique identifier for the tab. */\n value = input.required<string>();\n\n /** The Tab UIPattern. */\n pattern: TabPattern = new TabPattern({\n ...this,\n id: () => this._id,\n element: () => this._elementRef.nativeElement,\n tablist: this.tablist,\n tabpanel: this.tabpanel,\n value: this.value,\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 'tabindex': '0',\n 'class': 'cdk-tabpanel',\n '[attr.id]': 'pattern.id()',\n '[attr.inert]': 'pattern.hidden() ? true : null',\n },\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n})\nexport class CdkTabPanel {\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 protected tab = computed(() => this._cdkTabs.tabs()?.find(tab => tab.value() === this.value()));\n\n /** A local unique identifier for the tabpanel. */\n value = input.required<string>();\n\n /** The TabPanel UIPattern. */\n pattern: TabPanelPattern = new TabPanelPattern({\n ...this,\n id: () => this._id,\n tab: this.tab,\n });\n\n constructor() {\n effect(() => this._deferredContentAware.contentVisible.set(!this.pattern.hidden()));\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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"}
|
package/fesm2022/ui-patterns.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { L as ListboxPattern, O as OptionPattern } from './option-f_gNslw8.mjs';
|
|
2
|
-
export { T as TabListPattern, b as TabPanelPattern, a as TabPattern } from './tabs-
|
|
2
|
+
export { T as TabListPattern, b as TabPanelPattern, a as TabPattern } from './tabs-DFP3Xs4J.mjs';
|
|
3
3
|
import './list-focus-Di7m_z_6.mjs';
|
|
4
4
|
import '@angular/core';
|
|
5
5
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/cdk-experimental",
|
|
3
|
-
"version": "20.0.0-
|
|
3
|
+
"version": "20.0.0-rc.0",
|
|
4
4
|
"description": "Experimental components for Angular CDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"homepage": "https://github.com/angular/components#readme",
|
|
14
14
|
"peerDependencies": {
|
|
15
|
-
"@angular/cdk": "20.0.0-
|
|
15
|
+
"@angular/cdk": "20.0.0-rc.0",
|
|
16
16
|
"@angular/core": "^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
package/tabs/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { a as TabPattern,
|
|
3
|
+
import { a as TabPattern, c as TabPanelPattern, e as TabListPattern } from '../tabs.d-DooGD7Uk.js';
|
|
4
4
|
import * as i1 from '@angular/cdk-experimental/deferred-content';
|
|
5
5
|
import '../list-navigation.d-DfOSxsSp.js';
|
|
6
6
|
|
|
@@ -13,15 +13,20 @@ import '../list-navigation.d-DfOSxsSp.js';
|
|
|
13
13
|
* ```html
|
|
14
14
|
* <div cdkTabs>
|
|
15
15
|
* <ul cdkTabList>
|
|
16
|
-
* <li cdkTab>Tab 1</li>
|
|
17
|
-
* <li cdkTab>Tab 2</li>
|
|
18
|
-
* <li cdkTab>Tab 3</li>
|
|
16
|
+
* <li cdkTab value="tab1">Tab 1</li>
|
|
17
|
+
* <li cdkTab value="tab2">Tab 2</li>
|
|
18
|
+
* <li cdkTab value="tab3">Tab 3</li>
|
|
19
19
|
* </ul>
|
|
20
20
|
*
|
|
21
|
-
* <div cdkTabPanel
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* <div cdkTabPanel value="tab1">
|
|
22
|
+
* <ng-template cdkTabContent>Tab content 1</ng-template>
|
|
23
|
+
* </div>
|
|
24
|
+
* <div cdkTabPanel value="tab2">
|
|
25
|
+
* <ng-template cdkTabContent>Tab content 2</ng-template>
|
|
26
|
+
* </div>
|
|
27
|
+
* <div cdkTabPanel value="tab3">
|
|
28
|
+
* <ng-template cdkTabContent>Tab content 3</ng-template>
|
|
29
|
+
* </div>
|
|
25
30
|
* ```
|
|
26
31
|
*/
|
|
27
32
|
declare class CdkTabs {
|
|
@@ -46,6 +51,8 @@ declare class CdkTabList {
|
|
|
46
51
|
private readonly _directionality;
|
|
47
52
|
/** The CdkTabs nested inside of the CdkTabList. */
|
|
48
53
|
private readonly _cdkTabs;
|
|
54
|
+
/** The internal tab selection state. */
|
|
55
|
+
private readonly _selection;
|
|
49
56
|
/** A signal wrapper for directionality. */
|
|
50
57
|
protected textDirection: i0.Signal<_angular_cdk_bidi.Direction>;
|
|
51
58
|
/** The Tab UIPatterns of the child Tabs. */
|
|
@@ -64,10 +71,13 @@ declare class CdkTabList {
|
|
|
64
71
|
disabled: i0.InputSignalWithTransform<boolean, unknown>;
|
|
65
72
|
/** The current index that has been navigated to. */
|
|
66
73
|
activeIndex: i0.ModelSignal<number>;
|
|
74
|
+
/** The current selected tab. */
|
|
75
|
+
tab: i0.ModelSignal<string | undefined>;
|
|
67
76
|
/** The TabList UIPattern. */
|
|
68
77
|
pattern: TabListPattern;
|
|
78
|
+
constructor();
|
|
69
79
|
static ɵfac: i0.ɵɵFactoryDeclaration<CdkTabList, never>;
|
|
70
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<CdkTabList, "[cdkTabList]", ["cdkTabList"], { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "skipDisabled": { "alias": "skipDisabled"; "required": false; "isSignal": true; }; "focusMode": { "alias": "focusMode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, ["_cdkTabs"], never, true, never>;
|
|
80
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CdkTabList, "[cdkTabList]", ["cdkTabList"], { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "skipDisabled": { "alias": "skipDisabled"; "required": false; "isSignal": true; }; "focusMode": { "alias": "focusMode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "tab": { "alias": "tab"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; "tab": "tabChange"; }, ["_cdkTabs"], never, true, never>;
|
|
71
81
|
}
|
|
72
82
|
/** A selectable tab in a TabList. */
|
|
73
83
|
declare class CdkTab {
|
|
@@ -1,46 +1,84 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { L as ListNavigationItem, a as ListSelectionItem, b as ListFocusItem,
|
|
2
|
+
import { S as SignalLike, L as ListNavigationItem, a as ListSelectionItem, b as ListFocusItem, d as ListNavigationInputs, e as ListSelectionInputs, f as ListFocusInputs, g as ListNavigation, h as ListSelection, i as ListFocus, K as KeyboardEventManager, P as PointerEventManager } from './list-navigation.d-DfOSxsSp.js';
|
|
3
|
+
|
|
4
|
+
/** Inputs for an Expansion control. */
|
|
5
|
+
interface ExpansionControlInputs {
|
|
6
|
+
/** Whether an Expansion is visible. */
|
|
7
|
+
visible: SignalLike<boolean>;
|
|
8
|
+
/** The controlled Expansion panel. */
|
|
9
|
+
expansionPanel: SignalLike<ExpansionPanel | undefined>;
|
|
10
|
+
}
|
|
11
|
+
/** Inputs for an Expansion panel. */
|
|
12
|
+
interface ExpansionPanelInputs {
|
|
13
|
+
/** A unique identifier for the panel. */
|
|
14
|
+
id: SignalLike<string>;
|
|
15
|
+
/** The Expansion control. */
|
|
16
|
+
expansionControl: SignalLike<ExpansionControl | undefined>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* An Expansion control.
|
|
20
|
+
*
|
|
21
|
+
* Use Expansion behavior if a pattern has a collapsible view that has two elements rely on the
|
|
22
|
+
* states from each other. For example
|
|
23
|
+
*
|
|
24
|
+
* ```html
|
|
25
|
+
* <button aria-controls="remote-content" aria-expanded="false">Toggle Content</button>
|
|
26
|
+
*
|
|
27
|
+
* ...
|
|
28
|
+
*
|
|
29
|
+
* <div id="remote-content" aria-hidden="true">
|
|
30
|
+
* Collapsible content
|
|
31
|
+
* </div>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare class ExpansionControl {
|
|
35
|
+
readonly inputs: ExpansionControlInputs;
|
|
36
|
+
/** Whether an Expansion is visible. */
|
|
37
|
+
visible: SignalLike<boolean>;
|
|
38
|
+
/** The controllerd Expansion panel Id. */
|
|
39
|
+
controls: i0.Signal<string | undefined>;
|
|
40
|
+
constructor(inputs: ExpansionControlInputs);
|
|
41
|
+
}
|
|
42
|
+
/** A Expansion panel. */
|
|
43
|
+
declare class ExpansionPanel {
|
|
44
|
+
readonly inputs: ExpansionPanelInputs;
|
|
45
|
+
/** A unique identifier for the panel. */
|
|
46
|
+
id: SignalLike<string>;
|
|
47
|
+
/** Whether the panel is hidden. */
|
|
48
|
+
hidden: i0.Signal<boolean>;
|
|
49
|
+
constructor(inputs: ExpansionPanelInputs);
|
|
50
|
+
}
|
|
3
51
|
|
|
4
52
|
/** The required inputs to tabs. */
|
|
5
53
|
interface TabInputs extends ListNavigationItem, ListSelectionItem<string>, ListFocusItem {
|
|
54
|
+
/** The parent tablist that controls the tab. */
|
|
6
55
|
tablist: SignalLike<TabListPattern>;
|
|
56
|
+
/** The remote tabpanel controlled by the tab. */
|
|
7
57
|
tabpanel: SignalLike<TabPanelPattern | undefined>;
|
|
8
58
|
}
|
|
9
59
|
/** A tab in a tablist. */
|
|
10
60
|
declare class TabPattern {
|
|
61
|
+
readonly inputs: TabInputs;
|
|
11
62
|
/** A global unique identifier for the tab. */
|
|
12
63
|
id: SignalLike<string>;
|
|
13
64
|
/** A local unique identifier for the tab. */
|
|
14
65
|
value: SignalLike<string>;
|
|
66
|
+
/** Whether the tab is disabled. */
|
|
67
|
+
disabled: SignalLike<boolean>;
|
|
68
|
+
/** The html element that should receive focus. */
|
|
69
|
+
element: SignalLike<HTMLElement>;
|
|
70
|
+
/** Controls the expansion state for the tab. */
|
|
71
|
+
expansionControl: ExpansionControl;
|
|
15
72
|
/** Whether the tab is active. */
|
|
16
73
|
active: i0.Signal<boolean>;
|
|
17
74
|
/** Whether the tab is selected. */
|
|
18
75
|
selected: i0.Signal<boolean>;
|
|
19
|
-
/** A
|
|
76
|
+
/** A tabpanel Id controlled by the tab. */
|
|
20
77
|
controls: i0.Signal<string | undefined>;
|
|
21
|
-
/** Whether the tab is disabled. */
|
|
22
|
-
disabled: SignalLike<boolean>;
|
|
23
|
-
/** A reference to the parent tablist. */
|
|
24
|
-
tablist: SignalLike<TabListPattern>;
|
|
25
|
-
/** A reference to the corresponding tabpanel. */
|
|
26
|
-
tabpanel: SignalLike<TabPanelPattern | undefined>;
|
|
27
78
|
/** The tabindex of the tab. */
|
|
28
79
|
tabindex: i0.Signal<0 | -1>;
|
|
29
|
-
/** The html element that should receive focus. */
|
|
30
|
-
element: SignalLike<HTMLElement>;
|
|
31
80
|
constructor(inputs: TabInputs);
|
|
32
81
|
}
|
|
33
|
-
/** The selection operations that the tablist can perform. */
|
|
34
|
-
interface SelectOptions {
|
|
35
|
-
select?: boolean;
|
|
36
|
-
toggle?: boolean;
|
|
37
|
-
toggleOne?: boolean;
|
|
38
|
-
selectOne?: boolean;
|
|
39
|
-
}
|
|
40
|
-
/** The required inputs for the tablist. */
|
|
41
|
-
type TabListInputs = ListNavigationInputs<TabPattern> & Omit<ListSelectionInputs<TabPattern, string>, 'multi'> & ListFocusInputs<TabPattern> & {
|
|
42
|
-
disabled: SignalLike<boolean>;
|
|
43
|
-
};
|
|
44
82
|
/** The required inputs for the tabpanel. */
|
|
45
83
|
interface TabPanelInputs {
|
|
46
84
|
id: SignalLike<string>;
|
|
@@ -53,12 +91,23 @@ declare class TabPanelPattern {
|
|
|
53
91
|
id: SignalLike<string>;
|
|
54
92
|
/** A local unique identifier for the tabpanel. */
|
|
55
93
|
value: SignalLike<string>;
|
|
56
|
-
/**
|
|
57
|
-
|
|
94
|
+
/** Represents the expansion state for the tabpanel. */
|
|
95
|
+
expansionPanel: ExpansionPanel;
|
|
58
96
|
/** Whether the tabpanel is hidden. */
|
|
59
97
|
hidden: i0.Signal<boolean>;
|
|
60
98
|
constructor(inputs: TabPanelInputs);
|
|
61
99
|
}
|
|
100
|
+
/** The selection operations that the tablist can perform. */
|
|
101
|
+
interface SelectOptions {
|
|
102
|
+
select?: boolean;
|
|
103
|
+
toggle?: boolean;
|
|
104
|
+
toggleOne?: boolean;
|
|
105
|
+
selectOne?: boolean;
|
|
106
|
+
}
|
|
107
|
+
/** The required inputs for the tablist. */
|
|
108
|
+
type TabListInputs = ListNavigationInputs<TabPattern> & Omit<ListSelectionInputs<TabPattern, string>, 'multi'> & ListFocusInputs<TabPattern> & {
|
|
109
|
+
disabled: SignalLike<boolean>;
|
|
110
|
+
};
|
|
62
111
|
/** Controls the state of a tablist. */
|
|
63
112
|
declare class TabListPattern {
|
|
64
113
|
readonly inputs: TabListInputs;
|
|
@@ -106,5 +155,5 @@ declare class TabListPattern {
|
|
|
106
155
|
private _getItem;
|
|
107
156
|
}
|
|
108
157
|
|
|
109
|
-
export { TabPattern as a, TabPanelPattern as
|
|
110
|
-
export type { TabInputs as T,
|
|
158
|
+
export { TabPattern as a, TabPanelPattern as c, TabListPattern as e };
|
|
159
|
+
export type { TabInputs as T, TabPanelInputs as b, TabListInputs as d };
|
package/ui-patterns/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { L as ListboxInputs, a as ListboxPattern, O as OptionInputs, b as OptionPattern } from '../listbox.d-QWPLmxRe.js';
|
|
2
2
|
export { S as SignalLike, W as WritableSignalLike, c as convertGetterSetterToWritableSignalLike } from '../list-navigation.d-DfOSxsSp.js';
|
|
3
|
-
export { T as TabInputs,
|
|
3
|
+
export { T as TabInputs, d as TabListInputs, e as TabListPattern, b as TabPanelInputs, c as TabPanelPattern, a as TabPattern } from '../tabs.d-DooGD7Uk.js';
|
|
4
4
|
import '@angular/core';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-BunANY1M.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-46c76129e412/bin/src/cdk-experimental/ui-patterns/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 {computed, signal} from '@angular/core';\n\nimport {KeyboardEventManager} from '../behaviors/event-manager/keyboard-event-manager';\nimport {PointerEventManager} from '../behaviors/event-manager/pointer-event-manager';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../behaviors/list-focus/list-focus';\nimport {\n ListNavigation,\n ListNavigationInputs,\n ListNavigationItem,\n} from '../behaviors/list-navigation/list-navigation';\nimport {\n ListSelection,\n ListSelectionInputs,\n ListSelectionItem,\n} from '../behaviors/list-selection/list-selection';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\n\n/** The required inputs to tabs. */\nexport interface TabInputs extends ListNavigationItem, ListSelectionItem<string>, ListFocusItem {\n tablist: SignalLike<TabListPattern>;\n tabpanel: SignalLike<TabPanelPattern | undefined>;\n}\n\n/** A tab in a tablist. */\nexport class TabPattern {\n /** A global unique identifier for the tab. */\n id: SignalLike<string>;\n\n /** A local unique identifier for the tab. */\n value: SignalLike<string>;\n\n /** Whether the tab is active. */\n active = computed(() => this.tablist()?.focusManager.activeItem() === this);\n\n /** Whether the tab is selected. */\n selected = computed(() => this.tablist().selection.inputs.value().includes(this.value()));\n\n /** A Tabpanel Id controlled by the tab. */\n controls = computed(() => this.tabpanel()?.id());\n\n /** Whether the tab is disabled. */\n disabled: SignalLike<boolean>;\n\n /** A reference to the parent tablist. */\n tablist: SignalLike<TabListPattern>;\n\n /** A reference to the corresponding tabpanel. */\n tabpanel: SignalLike<TabPanelPattern | undefined>;\n\n /** The tabindex of the tab. */\n tabindex = computed(() => this.tablist().focusManager.getItemTabindex(this));\n\n /** The html element that should receive focus. */\n element: SignalLike<HTMLElement>;\n\n constructor(inputs: TabInputs) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.tablist = inputs.tablist;\n this.tabpanel = inputs.tabpanel;\n this.element = inputs.element;\n this.disabled = inputs.disabled;\n }\n}\n\n/** The selection operations that the tablist can perform. */\ninterface SelectOptions {\n select?: boolean;\n toggle?: boolean;\n toggleOne?: boolean;\n selectOne?: boolean;\n}\n\n/** The required inputs for the tablist. */\nexport type TabListInputs = ListNavigationInputs<TabPattern> &\n Omit<ListSelectionInputs<TabPattern, string>, 'multi'> &\n ListFocusInputs<TabPattern> & {\n disabled: SignalLike<boolean>;\n };\n\n/** The required inputs for the tabpanel. */\nexport interface TabPanelInputs {\n id: SignalLike<string>;\n tab: SignalLike<TabPattern | undefined>;\n value: SignalLike<string>;\n}\n\n/** A tabpanel associated with a tab. */\nexport class TabPanelPattern {\n /** A global unique identifier for the tabpanel. */\n id: SignalLike<string>;\n\n /** A local unique identifier for the tabpanel. */\n value: SignalLike<string>;\n\n /** A reference to the corresponding tab. */\n tab: SignalLike<TabPattern | undefined>;\n\n /** Whether the tabpanel is hidden. */\n hidden = computed(() => !this.tab()?.selected());\n\n constructor(inputs: TabPanelInputs) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.tab = inputs.tab;\n }\n}\n\n/** Controls the state of a tablist. */\nexport class TabListPattern {\n /** Controls navigation for the tablist. */\n navigation: ListNavigation<TabPattern>;\n\n /** Controls selection for the tablist. */\n selection: ListSelection<TabPattern, string>;\n\n /** Controls focus for the tablist. */\n focusManager: ListFocus<TabPattern>;\n\n /** Whether the tablist is vertically or horizontally oriented. */\n orientation: SignalLike<'vertical' | 'horizontal'>;\n\n /** Whether the tablist is disabled. */\n disabled: SignalLike<boolean>;\n\n /** The tabindex of the tablist. */\n tabindex = computed(() => this.focusManager.getListTabindex());\n\n /** The id of the current active tab. */\n activedescendant = computed(() => this.focusManager.getActiveDescendant());\n\n /** Whether selection should follow focus. */\n followFocus = computed(() => this.inputs.selectionMode() === 'follow');\n\n /** The key used to navigate to the previous tab in the tablist. */\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 item in the list. */\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 tablist. */\n keydown = computed(() => {\n const manager = new KeyboardEventManager()\n .on(this.prevKey, () => this.prev({selectOne: this.followFocus()}))\n .on(this.nextKey, () => this.next({selectOne: this.followFocus()}))\n .on('Home', () => this.first({selectOne: this.followFocus()}))\n .on('End', () => this.last({selectOne: this.followFocus()}))\n .on(' ', () => this.selection.selectOne())\n .on('Enter', () => this.selection.selectOne());\n\n return manager;\n });\n\n /** The pointerdown event manager for the tablist. */\n pointerdown = computed(() => {\n return new PointerEventManager().on(e => this.goto(e, {selectOne: true}));\n });\n\n constructor(readonly inputs: TabListInputs) {\n this.disabled = inputs.disabled;\n this.orientation = inputs.orientation;\n\n this.focusManager = new ListFocus(inputs);\n this.navigation = new ListNavigation({...inputs, focusManager: this.focusManager});\n this.selection = new ListSelection({\n ...inputs,\n multi: signal(false),\n focusManager: this.focusManager,\n });\n }\n\n /** Handles keydown events for the tablist. */\n onKeydown(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.keydown().handle(event);\n }\n }\n\n /** The pointerdown event manager for the tablist. */\n onPointerdown(event: PointerEvent) {\n if (!this.disabled()) {\n this.pointerdown().handle(event);\n }\n }\n\n /** Navigates to the first option in the tablist. */\n first(opts?: SelectOptions) {\n this.navigation.first();\n this._updateSelection(opts);\n }\n\n /** Navigates to the last option in the tablist. */\n last(opts?: SelectOptions) {\n this.navigation.last();\n this._updateSelection(opts);\n }\n\n /** Navigates to the next option in the tablist. */\n next(opts?: SelectOptions) {\n this.navigation.next();\n this._updateSelection(opts);\n }\n\n /** Navigates to the previous option in the tablist. */\n prev(opts?: SelectOptions) {\n this.navigation.prev();\n this._updateSelection(opts);\n }\n\n /** Navigates to the given item in the tablist. */\n goto(event: PointerEvent, opts?: SelectOptions) {\n const item = this._getItem(event);\n\n if (item) {\n this.navigation.goto(item);\n this._updateSelection(opts);\n }\n }\n\n /** Handles updating selection for the tablist. */\n private _updateSelection(opts?: SelectOptions) {\n if (opts?.select) {\n this.selection.select();\n }\n if (opts?.toggle) {\n this.selection.toggle();\n }\n if (opts?.toggleOne) {\n this.selection.toggleOne();\n }\n if (opts?.selectOne) {\n this.selection.selectOne();\n }\n }\n\n private _getItem(e: PointerEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"tab\"]');\n return this.inputs.items().find(i => i.element() === element);\n }\n}\n"],"names":[],"mappings":"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"}
|