Skip to content

Commit 4cb47af

Browse files
feature(web-components):[TreeItem] support callback for expand change (#34234)
Co-authored-by: Chris Holt <13071055+chrisdholt@users.noreply.github.com>
1 parent 08e7cbd commit 4cb47af

3 files changed

Lines changed: 28 additions & 0 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "prerelease",
3+
"comment": "support callback for expand change",
4+
"packageName": "@fluentui/web-components",
5+
"email": "HangWhy@outlook.com",
6+
"dependentChangeType": "patch"
7+
}

packages/web-components/src/tree-item/tree-item.base.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ export class BaseTreeItem extends FASTElement {
3131
* @public
3232
*/
3333
public expandedChanged(prev: boolean, next: boolean): void {
34+
this.$emit('toggle', {
35+
oldState: prev ? 'open' : 'closed',
36+
newState: next ? 'open' : 'closed',
37+
});
3438
toggleState(this.elementInternals, 'expanded', next);
3539
if (this.childTreeItems && this.childTreeItems.length > 0) {
3640
this.elementInternals.ariaExpanded = next ? 'true' : 'false';

packages/web-components/src/tree-item/tree-item.stories.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,3 +189,20 @@ export const AsideSlot: Story = {
189189
asideSlottedContent: () => html`<span slot="aside">${FilterIcon}</span>`,
190190
},
191191
};
192+
193+
export const ToggleEvent: Story = {
194+
render: renderComponent(html<StoryArgs<FluentTreeItem>>`
195+
<fluent-tree-item
196+
@click=${(story, context) => {
197+
const target = context.eventTarget() as FluentTreeItem;
198+
target.toggleExpansion();
199+
}}
200+
@toggle=${(c, e) => {
201+
console.log('toggle', (e.event as any)?.detail);
202+
}}
203+
>
204+
Item 1
205+
<fluent-tree-item>Item 1-1</fluent-tree-item>
206+
</fluent-tree-item>
207+
`),
208+
};

0 commit comments

Comments
 (0)