@@ -41,6 +41,14 @@ export class Accordion implements ComponentInterface {
4141  private  accordionGroupEl ?: HTMLIonAccordionGroupElement  |  null ; 
4242  private  updateListener  =  ( ev : CustomEvent < AccordionGroupChangeEventDetail > )  =>  { 
4343    const  initialUpdate  =  ev . detail ?. initial  ??  false ; 
44+     /** 
45+      * If this is not an initial update (meaning it's from a user interaction 
46+      * or programmatic call after load), mark that we've had an interaction. 
47+      * This enables animations for this and future updates. 
48+      */ 
49+     if  ( ! initialUpdate )  { 
50+       this . hasInteracted  =  true ; 
51+     } 
4452    this . updateState ( initialUpdate ) ; 
4553  } ; 
4654  private  contentEl : HTMLDivElement  |  undefined ; 
@@ -55,12 +63,12 @@ export class Accordion implements ComponentInterface {
5563  @State ( )  isNext  =  false ; 
5664  @State ( )  isPrevious  =  false ; 
5765  /** 
58-    * Tracks whether the component  has completed its initial render . 
59-    * Animations are disabled until after  the first render completes . 
60-    * This prevents the accordion from animating when it starts  
61-    * expanded or collapsed on initial load. 
66+    * Tracks whether a user-initiated interaction  has occurred . 
67+    * Animations are disabled until the first interaction happens . 
68+    * This prevents the accordion from animating when it's programmatically  
69+    * set to an  expanded or collapsed state  on initial load. 
6270   */ 
63-   @State ( )  hasRendered  =  false ; 
71+   @State ( )  hasInteracted  =  false ; 
6472
6573  /** 
6674   * The value of the accordion. Defaults to an autogenerated 
@@ -130,17 +138,6 @@ export class Accordion implements ComponentInterface {
130138    } ) ; 
131139  } 
132140
133-   componentDidRender ( )  { 
134-     /** 
135-      * After the first render completes, mark that we've rendered. 
136-      * Setting this state property triggers a re-render, at which point 
137-      * animations will be enabled. This ensures animations are disabled 
138-      * only for the initial render, avoiding unwanted animations on load. 
139-      */ 
140-     if  ( ! this . hasRendered )  { 
141-       this . hasRendered  =  true ; 
142-     } 
143-   } 
144141
145142  private  setItemDefaults  =  ( )  =>  { 
146143    const  ionItem  =  this . getSlottedHeaderIonItem ( ) ; 
@@ -315,11 +312,11 @@ export class Accordion implements ComponentInterface {
315312   */ 
316313  private  shouldAnimate  =  ( )  =>  { 
317314    /** 
318-      * Don't animate until after the first render cycle completes . 
315+      * Don't animate until after the first user interaction . 
319316     * This prevents animations on initial load when accordions 
320-      * start in an expanded or collapsed state. 
317+      * start in an expanded or collapsed state programmatically . 
321318     */ 
322-     if  ( ! this . hasRendered )  { 
319+     if  ( ! this . hasInteracted )  { 
323320      return  false ; 
324321    } 
325322
@@ -418,6 +415,12 @@ export class Accordion implements ComponentInterface {
418415
419416    if  ( disabled  ||  readonly )  return ; 
420417
418+     /** 
419+      * Mark that the user has interacted with the accordion. 
420+      * This enables animations for all future state changes. 
421+      */ 
422+     this . hasInteracted  =  true ; 
423+ 
421424    if  ( accordionGroupEl )  { 
422425      /** 
423426       * Because the accordion group may or may 
0 commit comments