Skip to content

Commit 1560318

Browse files
committed
fixup! refactor(cdk-experimental/ui-patterns): iterate on expansion behavior
1 parent c388dc6 commit 1560318

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

src/cdk-experimental/ui-patterns/behaviors/expansion/expansion.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ function getExpansion(inputs: TestInputs = {}): {
6868
skipDisabled: focusManager.inputs.skipDisabled,
6969
focusMode: focusManager.inputs.focusMode,
7070
multiExpandable: inputs.multiExpandable ?? signal(false),
71+
expandedIds: signal([]),
7172
focusManager,
7273
});
7374

src/cdk-experimental/ui-patterns/behaviors/expansion/expansion.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,22 @@ export interface ExpansionItem extends ListFocusItem {
2222
export interface ExpansionInputs<T extends ExpansionItem> extends ListFocusInputs<T> {
2323
/** Whether multiple items can be expanded at once. */
2424
multiExpandable: SignalLike<boolean>;
25+
26+
/** An array of ids of the currently expanded items. */
27+
expandedIds: WritableSignalLike<string[]>;
2528
}
2629

2730
/** Manages the expansion state of a list of items. */
2831
export class Expansion<T extends ExpansionItem> {
2932
/** A signal holding an array of ids of the currently expanded items. */
30-
expandedIds: WritableSignalLike<string[]> = signal([]);
33+
expandedIds: WritableSignalLike<string[]>;
3134

3235
/** The currently active (focused) item in the list. */
3336
activeItem = computed(() => this.inputs.focusManager.activeItem());
3437

35-
constructor(readonly inputs: ExpansionInputs<T> & {focusManager: ListFocus<T>}) {}
38+
constructor(readonly inputs: ExpansionInputs<T> & {focusManager: ListFocus<T>}) {
39+
this.expandedIds = inputs.expandedIds ?? signal([]);
40+
}
3641

3742
/** Opens the specified item, or the currently active item if none is specified. */
3843
open(item: T = this.activeItem()) {

src/cdk-experimental/ui-patterns/tabs/tabs.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export class TabPattern {
7878
this.value = inputs.value;
7979
this.disabled = inputs.disabled;
8080
this.element = inputs.element;
81-
this.expansionId = inputs.id;
81+
this.expansionId = inputs.value;
8282
}
8383
}
8484

@@ -115,7 +115,7 @@ interface SelectOptions {
115115
export type TabListInputs = ListNavigationInputs<TabPattern> &
116116
Omit<ListSelectionInputs<TabPattern, string>, 'multi'> &
117117
ListFocusInputs<TabPattern> &
118-
Omit<ExpansionInputs<TabPattern>, 'multiExpandable'> & {
118+
Omit<ExpansionInputs<TabPattern>, 'multiExpandable' | 'expandedIds'> & {
119119
disabled: SignalLike<boolean>;
120120
};
121121

@@ -196,6 +196,7 @@ export class TabListPattern {
196196
this.expansionBehavior = new Expansion({
197197
...inputs,
198198
multiExpandable: () => false,
199+
expandedIds: this.inputs.value,
199200
focusManager: this.focusManager,
200201
});
201202
}

0 commit comments

Comments
 (0)