@@ -3,10 +3,12 @@ import {
33 Component ,
44 computed ,
55 contentChildren ,
6+ effect ,
67 inject ,
7- Input ,
8+ input ,
89 OnDestroy ,
910 OnInit ,
11+ signal ,
1012 TemplateRef
1113} from '@angular/core' ;
1214import { NgTemplateOutlet } from '@angular/common' ;
@@ -19,12 +21,12 @@ import { AccordionService } from '../accordion.service';
1921let nextId = 0 ;
2022
2123@Component ( {
22- selector : 'c-accordion-item' ,
23- templateUrl : './accordion-item.component.html' ,
24- styleUrls : [ './accordion-item.component.scss' ] ,
25- exportAs : 'cAccordionItem' ,
26- imports : [ AccordionButtonDirective , NgTemplateOutlet , CollapseDirective ] ,
27- host : { class : 'accordion-item' }
24+ selector : 'c-accordion-item' ,
25+ templateUrl : './accordion-item.component.html' ,
26+ styleUrls : [ './accordion-item.component.scss' ] ,
27+ exportAs : 'cAccordionItem' ,
28+ imports : [ AccordionButtonDirective , NgTemplateOutlet , CollapseDirective ] ,
29+ host : { class : 'accordion-item' }
2830} )
2931export class AccordionItemComponent implements OnInit , OnDestroy {
3032 readonly #accordionService = inject ( AccordionService ) ;
@@ -34,22 +36,29 @@ export class AccordionItemComponent implements OnInit, OnDestroy {
3436 * @type boolean
3537 * @default false
3638 */
37- @Input ( { transform : booleanAttribute } ) visible : boolean = false ;
39+ // eslint-disable-next-line @angular-eslint/no-input-rename
40+ readonly visibleInput = input ( false , { transform : booleanAttribute , alias : 'visible' } ) ;
3841
39- @Input ( )
40- set open ( value : boolean ) {
41- console . warn ( 'c-accordion-item "open" prop is deprecated, use "visible" prop instead.' ) ;
42- this . visible = value || this . visible ;
42+ readonly itemVisible = signal ( false ) ;
43+
44+ visibleInputChange = effect ( ( ) => {
45+ setTimeout ( ( ) => {
46+ this . itemVisible . set ( this . visibleInput ( ) ) ;
47+ } ) ;
48+ } ) ;
49+
50+ set visible ( value : boolean ) {
51+ this . itemVisible . set ( value ) ;
4352 }
4453
45- get open ( ) {
46- return < boolean > this . visible ;
54+ get visible ( ) {
55+ return < boolean > this . itemVisible ( ) ;
4756 }
4857
4958 contentId = `accordion-item-${ nextId ++ } ` ;
5059
5160 get itemContext ( ) {
52- return { $implicit : < boolean > this . visible } ;
61+ return { $implicit : < boolean > this . itemVisible ( ) } ;
5362 }
5463
5564 readonly contentTemplates = contentChildren ( TemplateIdDirective , { descendants : true } ) ;
0 commit comments