@@ -3,10 +3,12 @@ import {
3
3
Component ,
4
4
computed ,
5
5
contentChildren ,
6
+ effect ,
6
7
inject ,
7
- Input ,
8
+ input ,
8
9
OnDestroy ,
9
10
OnInit ,
11
+ signal ,
10
12
TemplateRef
11
13
} from '@angular/core' ;
12
14
import { NgTemplateOutlet } from '@angular/common' ;
@@ -19,12 +21,12 @@ import { AccordionService } from '../accordion.service';
19
21
let nextId = 0 ;
20
22
21
23
@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' }
28
30
} )
29
31
export class AccordionItemComponent implements OnInit , OnDestroy {
30
32
readonly #accordionService = inject ( AccordionService ) ;
@@ -34,22 +36,29 @@ export class AccordionItemComponent implements OnInit, OnDestroy {
34
36
* @type boolean
35
37
* @default false
36
38
*/
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' } ) ;
38
41
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 ) ;
43
52
}
44
53
45
- get open ( ) {
46
- return < boolean > this . visible ;
54
+ get visible ( ) {
55
+ return < boolean > this . itemVisible ( ) ;
47
56
}
48
57
49
58
contentId = `accordion-item-${ nextId ++ } ` ;
50
59
51
60
get itemContext ( ) {
52
- return { $implicit : < boolean > this . visible } ;
61
+ return { $implicit : < boolean > this . itemVisible ( ) } ;
53
62
}
54
63
55
64
readonly contentTemplates = contentChildren ( TemplateIdDirective , { descendants : true } ) ;
0 commit comments