From 5e3f437a28053718e44f244deabc54fa0381ffed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliz=C3=A9=20Debray?= <33580481+alizedebray@users.noreply.github.com> Date: Tue, 23 Jul 2024 09:40:55 +0200 Subject: [PATCH] feat(components, components-angular): update the post-collapsible collapsed property (#3326) Cherry-pick of https://github.com/swisspost/design-system/commit/733d4a7c042eb0c5c5e934ff75825bb0e4dd993a --------- Co-authored-by: Philipp Gfeller <1659006+gfellerph@users.noreply.github.com> --- .../src/app/routes/home/home.component.ts | 4 +++- packages/components/src/components.d.ts | 8 +++---- .../post-accordion-item.tsx | 15 ++++++------ .../components/post-accordion-item/readme.md | 2 +- .../post-collapsible/post-collapsible.tsx | 23 +++++++++---------- .../src/components/post-collapsible/readme.md | 6 ++--- .../collapsible/collapsible.stories.ts | 17 +++++++++++++- 7 files changed, 45 insertions(+), 30 deletions(-) diff --git a/packages/components-angular/projects/consumer-app/src/app/routes/home/home.component.ts b/packages/components-angular/projects/consumer-app/src/app/routes/home/home.component.ts index b795b9fdf8..f454e213db 100644 --- a/packages/components-angular/projects/consumer-app/src/app/routes/home/home.component.ts +++ b/packages/components-angular/projects/consumer-app/src/app/routes/home/home.component.ts @@ -4,4 +4,6 @@ import { Component } from '@angular/core'; selector: 'home-page', templateUrl: './home.component.html', }) -export class HomeComponent {} +export class HomeComponent { + isCollapsed = false; +} diff --git a/packages/components/src/components.d.ts b/packages/components/src/components.d.ts index 902617a88f..78cc568037 100644 --- a/packages/components/src/components.d.ts +++ b/packages/components/src/components.d.ts @@ -36,7 +36,7 @@ export namespace Components { } interface PostAccordionItem { /** - * If `true`, the element is initially collapsed otherwise it is displayed. + * If `true`, the element is collapsed otherwise it is displayed. */ "collapsed"?: boolean; /** @@ -126,7 +126,7 @@ export namespace Components { } interface PostCollapsible { /** - * If `true`, the element is initially collapsed otherwise it is displayed. + * If `true`, the element is collapsed otherwise it is displayed. */ "collapsed"?: boolean; /** @@ -535,7 +535,7 @@ declare namespace LocalJSX { } interface PostAccordionItem { /** - * If `true`, the element is initially collapsed otherwise it is displayed. + * If `true`, the element is collapsed otherwise it is displayed. */ "collapsed"?: boolean; /** @@ -621,7 +621,7 @@ declare namespace LocalJSX { } interface PostCollapsible { /** - * If `true`, the element is initially collapsed otherwise it is displayed. + * If `true`, the element is collapsed otherwise it is displayed. */ "collapsed"?: boolean; /** diff --git a/packages/components/src/components/post-accordion-item/post-accordion-item.tsx b/packages/components/src/components/post-accordion-item/post-accordion-item.tsx index 7f6c2c1e73..9a8d20558d 100644 --- a/packages/components/src/components/post-accordion-item/post-accordion-item.tsx +++ b/packages/components/src/components/post-accordion-item/post-accordion-item.tsx @@ -19,12 +19,11 @@ export class PostAccordionItem { @Element() host: HTMLPostAccordionItemElement; @State() id: string; - @State() isOpen: boolean; /** - * If `true`, the element is initially collapsed otherwise it is displayed. + * If `true`, the element is collapsed otherwise it is displayed. */ - @Prop() readonly collapsed?: boolean = false; + @Prop({ mutable: true }) collapsed?: boolean = false; /** * Defines the hierarchical level of the accordion item header within the headings structure. @@ -46,14 +45,14 @@ export class PostAccordionItem { } componentWillLoad() { - this.isOpen = !this.collapsed; this.id = this.host.id || `a${crypto.randomUUID()}`; } - @Listen('postToggle') + // capture to make sure the "collapsed" property is updated before the event is consumed + @Listen('postToggle', { capture: true }) onCollapseToggle(event: CustomEvent): void { if ((event.target as HTMLElement).localName === 'post-accordion-item') { - this.isOpen = event.detail; + this.collapsed = !event.detail; } } @@ -74,8 +73,8 @@ export class PostAccordionItem { - + ${unsafeHTML(innerHTML)} `;