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==