Skip to content

Commit 0f66a24

Browse files
committed
tweak
1 parent 113e1cd commit 0f66a24

File tree

6 files changed

+32
-17
lines changed

6 files changed

+32
-17
lines changed

goldens/aria/private/index.api.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -683,8 +683,8 @@ export type SignalLike<T> = () => T;
683683

684684
// @public
685685
export interface TabInputs extends Omit<ListNavigationItem, 'index'>, Omit<ExpansionItem, 'expandable' | 'expanded'> {
686-
tablist: SignalLike<TabListPattern>;
687-
tabpanel: SignalLike<TabPanelPattern | undefined>;
686+
tabList: SignalLike<TabListPattern>;
687+
tabPanel: SignalLike<TabPanelPattern | undefined>;
688688
}
689689

690690
// @public
@@ -721,6 +721,7 @@ export class TabListPattern {
721721
// @public
722722
export interface TabPanelInputs extends LabelControlOptionalInputs {
723723
id: SignalLike<string>;
724+
readonly tab: SignalLike<TabPattern | undefined>;
724725
}
725726

726727
// @public
@@ -732,7 +733,6 @@ export class TabPanelPattern {
732733
readonly inputs: TabPanelInputs;
733734
readonly labelledBy: SignalLike<string | undefined>;
734735
readonly labelManager: LabelControl;
735-
readonly tab: WritableSignalLike<TabPattern | undefined>;
736736
readonly tabIndex: SignalLike<-1 | 0>;
737737
}
738738

@@ -747,7 +747,6 @@ export class TabPattern {
747747
// (undocumented)
748748
readonly expanded: WritableSignalLike<boolean>;
749749
readonly id: SignalLike<string>;
750-
readonly index: SignalLike<number>;
751750
// (undocumented)
752751
readonly inputs: TabInputs;
753752
open(): boolean;

goldens/aria/tabs/index.api.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { AfterViewInit } from '@angular/core';
88
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
99
import * as _angular_core from '@angular/core';
1010
import { OnDestroy } from '@angular/core';
11+
import { WritableSignal } from '@angular/core';
1112

1213
// @public
1314
export class Tab implements AfterViewInit {
@@ -45,7 +46,6 @@ export class TabList implements AfterViewInit {
4546
ngAfterViewInit(): void;
4647
readonly orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
4748
readonly _pattern: TabListPattern;
48-
readonly selectedTab: _angular_core.WritableSignal<TabPattern | undefined>;
4949
readonly selectedTabIndex: _angular_core.ModelSignal<number>;
5050
readonly selectionMode: _angular_core.InputSignal<"follow" | "explicit">;
5151
readonly softDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -64,6 +64,8 @@ export class TabPanel {
6464
readonly element: HTMLElement;
6565
readonly id: _angular_core.InputSignal<string>;
6666
readonly _pattern: TabPanelPattern;
67+
// (undocumented)
68+
readonly _tabPattern: WritableSignal<TabPattern | undefined>;
6769
readonly visible: _angular_core.Signal<boolean>;
6870
// (undocumented)
6971
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TabPanel, "[ngTabPanel]", ["ngTabPanel"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof DeferredContentAware; inputs: { "preserveContent": "preserveContent"; }; outputs: {}; }]>;

src/aria/private/tabs/tabs.spec.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,15 @@ describe('Tabs Pattern', () => {
103103
tabPanelInputs = [
104104
{
105105
id: signal('tabpanel-1-id'),
106+
tab: signal(undefined),
106107
},
107108
{
108109
id: signal('tabpanel-2-id'),
110+
tab: signal(undefined),
109111
},
110112
{
111113
id: signal('tabpanel-3-id'),
114+
tab: signal(undefined),
112115
},
113116
];
114117
tabPanelPatterns = [
@@ -121,9 +124,9 @@ describe('Tabs Pattern', () => {
121124
tabInputs[0].tabPanel.set(tabPanelPatterns[0]);
122125
tabInputs[1].tabPanel.set(tabPanelPatterns[1]);
123126
tabInputs[2].tabPanel.set(tabPanelPatterns[2]);
124-
tabPanelPatterns[0].tab.set(tabPatterns[0]);
125-
tabPanelPatterns[1].tab.set(tabPatterns[1]);
126-
tabPanelPatterns[2].tab.set(tabPatterns[2]);
127+
tabPanelInputs[0].tab.set(tabPatterns[0]);
128+
tabPanelInputs[1].tab.set(tabPatterns[1]);
129+
tabPanelInputs[2].tab.set(tabPatterns[2]);
127130
tabListInputs.items.set(tabPatterns);
128131
tabListInputs.activeItem.set(tabPatterns[0]);
129132
});

src/aria/private/tabs/tabs.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
WritableSignalLike,
1414
computed,
1515
linkedSignal,
16-
signal,
1716
} from '../behaviors/signal-like/signal-like';
1817
import {LabelControl, LabelControlOptionalInputs} from '../behaviors/label/label';
1918
import {ListFocus} from '../behaviors/list-focus/list-focus';
@@ -84,6 +83,9 @@ export class TabPattern {
8483
export interface TabPanelInputs extends LabelControlOptionalInputs {
8584
/** A global unique identifier for the tabpanel. */
8685
id: SignalLike<string>;
86+
87+
/** The tab that controls this tabpanel. */
88+
readonly tab: SignalLike<TabPattern | undefined>;
8789
}
8890

8991
/** A tabpanel associated with a tab. */
@@ -94,11 +96,8 @@ export class TabPanelPattern {
9496
/** Controls label for this tabpanel. */
9597
readonly labelManager: LabelControl;
9698

97-
/** The tab that controls this tabpanel. */
98-
readonly tab: WritableSignalLike<TabPattern | undefined> = signal(undefined);
99-
10099
/** Whether the tabpanel is hidden. */
101-
readonly hidden = computed(() => this.tab()?.expanded() === false);
100+
readonly hidden = computed(() => this.inputs.tab()?.expanded() === false);
102101

103102
/** The tab index of this tabpanel. */
104103
readonly tabIndex = computed(() => (this.hidden() ? -1 : 0));
@@ -115,7 +114,7 @@ export class TabPanelPattern {
115114

116115
this.labelManager = new LabelControl({
117116
...inputs,
118-
defaultLabelledBy: computed(() => (this.tab() ? [this.tab()!.id()] : [])),
117+
defaultLabelledBy: computed(() => (this.inputs.tab() ? [this.inputs.tab()!.id()] : [])),
119118
});
120119
}
121120
}

src/aria/tabs/tab-panel.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,17 @@
77
*/
88

99
import {_IdGenerator} from '@angular/cdk/a11y';
10-
import {Directive, ElementRef, afterRenderEffect, computed, inject, input} from '@angular/core';
11-
import {DeferredContentAware, TabPanelPattern} from '../private';
10+
import {
11+
Directive,
12+
ElementRef,
13+
WritableSignal,
14+
afterRenderEffect,
15+
computed,
16+
inject,
17+
input,
18+
signal,
19+
} from '@angular/core';
20+
import {DeferredContentAware, TabPanelPattern, TabPattern} from '../private';
1221

1322
/**
1423
* A TabPanel container for the resources of layered content associated with a tab.
@@ -62,9 +71,12 @@ export class TabPanel {
6271
/** Whether the tab panel is visible. */
6372
readonly visible = computed(() => !this._pattern.hidden());
6473

74+
readonly _tabPattern: WritableSignal<TabPattern | undefined> = signal(undefined);
75+
6576
/** The TabPanel UIPattern. */
6677
readonly _pattern: TabPanelPattern = new TabPanelPattern({
6778
...this,
79+
tab: this._tabPattern,
6880
});
6981

7082
constructor() {

src/aria/tabs/tab.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export class Tab implements AfterViewInit {
8383
});
8484

8585
ngAfterViewInit() {
86-
this.panel()._pattern.tab.set(this._pattern);
86+
this.panel()._tabPattern.set(this._pattern);
8787
}
8888

8989
/** Opens this tab panel. */

0 commit comments

Comments
 (0)