import {Component} from '@angular/core';
import {CORE_DIRECTIVES} from '@angular/common';
import {BdAccordionGroup} from './accordionGroup';
@Component({
selector: BdAccordion.toString(),
directives: [CORE_DIRECTIVES],
styles: [require('./accordion.scss')],
template: `
`,
inputs: ['type']
})
export class BdAccordion {
public static ALLOWED_TYPES: Array = ['expandable', 'accordion'];
public type: string = 'expandable';
private groups: Array;
constructor() {
this.groups = [];
}
public addGroup(bdAccordionGroup: BdAccordionGroup) {
this.groups.push(bdAccordionGroup);
}
public toggle(bdAccordionGroup: BdAccordionGroup) {
bdAccordionGroup.isActive = !bdAccordionGroup.isActive;
if (this.type === 'accordion' && bdAccordionGroup.isActive) {
this.groups
.filter((group) => group !== bdAccordionGroup)
.forEach((group: BdAccordionGroup) => group.isActive = false);
}
}
public collapseAll() {
this.groups.forEach((group: BdAccordionGroup) => group.isActive = false);
}
public openAll() {
this.groups.forEach((group: BdAccordionGroup) => group.isActive = true);
}
public static toString(): string {
return 'bd-accordion';
}
}