Skip to content

Commit b9f1207

Browse files
committed
refactor(aria/accordion): Extend public api with expansion methods
1 parent 1c6a285 commit b9f1207

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/aria/accordion/accordion.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,21 @@ export class AccordionPanel {
7676
this._deferredContentAware.contentVisible.set(!this._pattern.hidden());
7777
});
7878
}
79+
80+
/** Expands this item. */
81+
expand() {
82+
this.accordionTrigger()?.expansionControl.open();
83+
}
84+
85+
/** Collapses this item. */
86+
collapse() {
87+
this.accordionTrigger()?.expansionControl.close();
88+
}
89+
90+
/** Toggles the expansion state of this item. */
91+
toggle() {
92+
this.accordionTrigger()?.expansionControl.toggle();
93+
}
7994
}
8095

8196
/**
@@ -135,6 +150,21 @@ export class AccordionTrigger {
135150
accordionGroup: computed(() => this._accordionGroup._pattern),
136151
accordionPanel: this.accordionPanel,
137152
});
153+
154+
/** Expands this item. */
155+
expand() {
156+
this._pattern.expansionControl.open();
157+
}
158+
159+
/** Collapses this item. */
160+
collapse() {
161+
this._pattern.expansionControl.close();
162+
}
163+
164+
/** Toggles the expansion state of this item. */
165+
toggle() {
166+
this._pattern.expansionControl.toggle();
167+
}
138168
}
139169

140170
/**
@@ -204,6 +234,16 @@ export class AccordionGroup {
204234
}
205235
});
206236
}
237+
238+
/** Expands all accordion panels if multi-expandable. */
239+
expandAll() {
240+
this._pattern.expansionManager.openAll();
241+
}
242+
243+
/** Collapses all accordion panels. */
244+
collapseAll() {
245+
this._pattern.expansionManager.closeAll();
246+
}
207247
}
208248

209249
/**

0 commit comments

Comments
 (0)