import { ChangeDetectionStrategy, Component, ContentChildren, DestroyRef, Input, inject, } from '@angular/core'; import { IconComponent } from '../../atoms/icon/icon.component'; import { AccordionItemComponent } from '../../atoms/accordion-item/accordion-item.component'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { debounceTime, skip, withLatestFrom } from 'rxjs'; import { AsyncPipe } from '@angular/common'; import { AccordionRegistryService } from '../../../services/accordion-registry.service'; import * as i0 from "@angular/core"; export class AccordionComponent { constructor() { this.destroyRef = inject(DestroyRef); this.accordionRegistryService = inject(AccordionRegistryService); this.label = ''; this.policy = 'collapse'; this.gap = 0; this.parentAccordion = ''; this.parentTrigger = ''; } ngAfterViewInit() { this.accordionItems.forEach(accordionItem => { accordionItem.toggle .pipe(takeUntilDestroyed(this.destroyRef), withLatestFrom(accordionItem.isOpen), debounceTime(10)) .subscribe(([_, isOpen]) => { accordionItem.isOpen.next(!isOpen); }); accordionItem.isOpen.pipe(takeUntilDestroyed(this.destroyRef), skip(1), debounceTime(10)).subscribe(isOpen => { if (isOpen) { if (this.parentTrigger) { this.accordionRegistryService.getItem(this.parentAccordion, this.parentTrigger)?.isOpen.next(true); } if (this.policy === 'collapse') { this.accordionItems.forEach(otherAccordionItem => { if (accordionItem.id !== otherAccordionItem.id && otherAccordionItem.isOpen) { otherAccordionItem.isOpen.next(false); } }); } } }); }); this.accordionRegistryService.register(this.id, this); } ngOnDestroy() { this.accordionRegistryService.unregister(this.id); } closePanes() { this.accordionItems.forEach(accordionItem => accordionItem.isOpen.next(false)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: AccordionComponent, isStandalone: true, selector: "ct-accordion", inputs: { label: "label", id: "id", policy: "policy", gap: "gap", parentAccordion: "parentAccordion", parentTrigger: "parentTrigger" }, queries: [{ propertyName: "accordionItems", predicate: AccordionItemComponent }], ngImport: i0, template: "
\n \n
\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AccordionComponent, decorators: [{ type: Component, args: [{ selector: 'ct-accordion', standalone: true, imports: [AsyncPipe, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "
\n \n
\n" }] }], propDecorators: { label: [{ type: Input }], id: [{ type: Input, args: [{ required: true }] }], policy: [{ type: Input }], gap: [{ type: Input }], parentAccordion: [{ type: Input }], parentTrigger: [{ type: Input }], accordionItems: [{ type: ContentChildren, args: [AccordionItemComponent] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NpcmNsZXRvbmUvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NpcmNsZXRvbmUvc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFTeEYsTUFBTSxPQUFPLGtCQUFrQjtJQVAvQjtRQVFtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3BFLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxXQUFNLEdBQWlDLFVBQVUsQ0FBQztRQUNsRCxRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO0tBcUM3QjtJQWpDQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUMsYUFBYSxDQUFDLE1BQU07aUJBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2pHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pCLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFFTCxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDM0csSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNyRyxDQUFDO29CQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRTs0QkFDL0MsSUFBSSxhQUFhLENBQUMsRUFBRSxLQUFLLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQ0FDNUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDeEMsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQzs4R0E1Q1Usa0JBQWtCO2tHQUFsQixrQkFBa0IsK09BVVosc0JBQXNCLDZCQ25DekMsb0ZBR0E7OzJGRHNCYSxrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU07OEJBS3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDcUIsRUFBRTtzQkFBNUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVtQyxjQUFjO3NCQUF0RCxlQUFlO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGVzdHJveVJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2FjY29yZGlvbi1pdGVtL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHNraXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWNjb3JkaW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWNjb3JkaW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjdC1hY2NvcmRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWNjb3JkaW9uUmVnaXN0cnlTZXJ2aWNlID0gaW5qZWN0KEFjY29yZGlvblJlZ2lzdHJ5U2VydmljZSk7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGlkITogc3RyaW5nO1xuICBASW5wdXQoKSBwb2xpY3k6IHN0cmluZyB8ICdjb2xsYXBzZScgfCAnb3BlbicgPSAnY29sbGFwc2UnO1xuICBASW5wdXQoKSBnYXA6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHBhcmVudEFjY29yZGlvbiA9ICcnO1xuICBASW5wdXQoKSBwYXJlbnRUcmlnZ2VyID0gJyc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBY2NvcmRpb25JdGVtQ29tcG9uZW50KSBhY2NvcmRpb25JdGVtcyE6IFF1ZXJ5TGlzdDxBY2NvcmRpb25JdGVtQ29tcG9uZW50PjtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5hY2NvcmRpb25JdGVtcy5mb3JFYWNoKGFjY29yZGlvbkl0ZW0gPT4ge1xuICAgICAgYWNjb3JkaW9uSXRlbS50b2dnbGVcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksIHdpdGhMYXRlc3RGcm9tKGFjY29yZGlvbkl0ZW0uaXNPcGVuKSwgZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoW18sIGlzT3Blbl0pID0+IHtcbiAgICAgICAgICBhY2NvcmRpb25JdGVtLmlzT3Blbi5uZXh0KCFpc09wZW4pO1xuICAgICAgICB9KTtcblxuICAgICAgYWNjb3JkaW9uSXRlbS5pc09wZW4ucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSwgc2tpcCgxKSwgZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKGlzT3BlbiA9PiB7XG4gICAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgICBpZiAodGhpcy5wYXJlbnRUcmlnZ2VyKSB7XG4gICAgICAgICAgICB0aGlzLmFjY29yZGlvblJlZ2lzdHJ5U2VydmljZS5nZXRJdGVtKHRoaXMucGFyZW50QWNjb3JkaW9uLCB0aGlzLnBhcmVudFRyaWdnZXIpPy5pc09wZW4ubmV4dCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMucG9saWN5ID09PSAnY29sbGFwc2UnKSB7XG4gICAgICAgICAgICB0aGlzLmFjY29yZGlvbkl0ZW1zLmZvckVhY2gob3RoZXJBY2NvcmRpb25JdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGFjY29yZGlvbkl0ZW0uaWQgIT09IG90aGVyQWNjb3JkaW9uSXRlbS5pZCAmJiBvdGhlckFjY29yZGlvbkl0ZW0uaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgb3RoZXJBY2NvcmRpb25JdGVtLmlzT3Blbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmFjY29yZGlvblJlZ2lzdHJ5U2VydmljZS5yZWdpc3Rlcih0aGlzLmlkLCB0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYWNjb3JkaW9uUmVnaXN0cnlTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcy5pZCk7XG4gIH1cblxuICBjbG9zZVBhbmVzKCkge1xuICAgIHRoaXMuYWNjb3JkaW9uSXRlbXMuZm9yRWFjaChhY2NvcmRpb25JdGVtID0+IGFjY29yZGlvbkl0ZW0uaXNPcGVuLm5leHQoZmFsc2UpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLXt7IGdhcCB9fVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==