UNPKG

@engie-group/fluid-design-system-angular

Version:

Fluid Design System Angular

78 lines 10.3 kB
import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChildren, Input, ViewEncapsulation } from '@angular/core'; import { EngieTemplateDirective } from '../../directives/engie-template.directive'; import { AccordionActionsComponent } from '../accordion-actions/accordion-actions.component'; import { AccordionActionDirective } from '../accordion-actions/directive/accordion-action.directive'; import { AccordionItemComponent } from '../accordion-item/accordion-item.component'; import { ButtonComponent } from '../button/button.component'; import { IconComponent } from '../icon/icon.component'; import * as i0 from "@angular/core"; export class AccordionComponent { get classes() { const classes = ['nj-accordion']; if (this.noBorder) { classes.push('nj-accordion--no-border'); } if (this.separated) { classes.push('nj-accordion--separated'); } return classes; } /** * Expand all children items programmatically */ expandAllItems() { const openedGroup = new Set(); this.accordions.forEach((accordion) => { // Firefox doesn't currently support grouping accordion items with `name` property. // So we replicate the behavior here to have it on all browsers. // // As explained in the MDN documentation, when the `name` property is set, only the first details // element with the `open` property should be opened. if (!accordion.name || !openedGroup.has(accordion.name)) { accordion.expand(); } else { accordion.collapse(); } if (accordion.name) { openedGroup.add(accordion.name); } }); } /** * Collapse all children items programmatically */ collapseAllItems(name) { this.accordions.forEach((accordion) => { if (name && accordion.name !== name) { return; } accordion.collapse(); }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: AccordionComponent, isStandalone: true, selector: "nj-accordion", inputs: { noBorder: ["noBorder", "noBorder", booleanAttribute], separated: ["separated", "separated", booleanAttribute] }, host: { properties: { "class": "classes" } }, queries: [{ propertyName: "accordions", predicate: AccordionItemComponent }], ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionComponent, decorators: [{ type: Component, args: [{ selector: 'nj-accordion', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [ AccordionItemComponent, IconComponent, EngieTemplateDirective, AccordionActionsComponent, ButtonComponent, AccordionActionDirective ], host: { '[class]': 'classes' }, template: "<ng-content></ng-content>\n" }] }], propDecorators: { noBorder: [{ type: Input, args: [{ transform: booleanAttribute }] }], separated: [{ type: Input, args: [{ transform: booleanAttribute }] }], accordions: [{ type: ContentChildren, args: [AccordionItemComponent] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFFTCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDckcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFvQnZELE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsSUFBYyxPQUFPO1FBQ25CLE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUN6QztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BDLG1GQUFtRjtZQUNuRixnRUFBZ0U7WUFDaEUsRUFBRTtZQUNGLGlHQUFpRztZQUNqRyxxREFBcUQ7WUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkQsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3BCO2lCQUFNO2dCQUNMLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN0QjtZQUNELElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtnQkFDbEIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLElBQWE7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQyxJQUFJLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDbkMsT0FBTzthQUNSO1lBQ0QsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FwRFUsa0JBQWtCO21HQUFsQixrQkFBa0IsNkZBQ1QsZ0JBQWdCLHlDQUNoQixnQkFBZ0Isc0dBRW5CLHNCQUFzQiw2QkN0Q3pDLDZCQUNBOzs0RkRpQ2Esa0JBQWtCO2tCQWxCOUIsU0FBUzsrQkFDRSxjQUFjLGNBRVosSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixzQkFBc0I7d0JBQ3RCLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZix3QkFBd0I7cUJBQ3pCLFFBQ0s7d0JBQ0osU0FBUyxFQUFFLFNBQVM7cUJBQ3JCOzhCQUd1QyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRVcsVUFBVTtzQkFBMUQsZUFBZTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIElucHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW5naWVUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZW5naWUtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFjY29yZGlvbkFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24tYWN0aW9ucy9hY2NvcmRpb24tYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWNjb3JkaW9uQWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYWNjb3JkaW9uLWFjdGlvbnMvZGlyZWN0aXZlL2FjY29yZGlvbi1hY3Rpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEFjY29yZGlvbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduai1hY2NvcmRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBBY2NvcmRpb25JdGVtQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgRW5naWVUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBBY2NvcmRpb25BY3Rpb25zQ29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBY2NvcmRpb25BY3Rpb25EaXJlY3RpdmVcbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2NsYXNzZXMnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ29tcG9uZW50IHtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG5vQm9yZGVyOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2VwYXJhdGVkOiBib29sZWFuO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQWNjb3JkaW9uSXRlbUNvbXBvbmVudCkgcHJpdmF0ZSBhY2NvcmRpb25zPzogUXVlcnlMaXN0PEFjY29yZGlvbkl0ZW1Db21wb25lbnQ+O1xuXG4gIHByb3RlY3RlZCBnZXQgY2xhc3NlcygpIHtcbiAgICBjb25zdCBjbGFzc2VzID0gWyduai1hY2NvcmRpb24nXTtcblxuICAgIGlmICh0aGlzLm5vQm9yZGVyKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ25qLWFjY29yZGlvbi0tbm8tYm9yZGVyJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VwYXJhdGVkKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ25qLWFjY29yZGlvbi0tc2VwYXJhdGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kIGFsbCBjaGlsZHJlbiBpdGVtcyBwcm9ncmFtbWF0aWNhbGx5XG4gICAqL1xuICBleHBhbmRBbGxJdGVtcygpIHtcbiAgICBjb25zdCBvcGVuZWRHcm91cCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHRoaXMuYWNjb3JkaW9ucy5mb3JFYWNoKChhY2NvcmRpb24pID0+IHtcbiAgICAgIC8vIEZpcmVmb3ggZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCBncm91cGluZyBhY2NvcmRpb24gaXRlbXMgd2l0aCBgbmFtZWAgcHJvcGVydHkuXG4gICAgICAvLyBTbyB3ZSByZXBsaWNhdGUgdGhlIGJlaGF2aW9yIGhlcmUgdG8gaGF2ZSBpdCBvbiBhbGwgYnJvd3NlcnMuXG4gICAgICAvL1xuICAgICAgLy8gQXMgZXhwbGFpbmVkIGluIHRoZSBNRE4gZG9jdW1lbnRhdGlvbiwgd2hlbiB0aGUgYG5hbWVgIHByb3BlcnR5IGlzIHNldCwgb25seSB0aGUgZmlyc3QgZGV0YWlsc1xuICAgICAgLy8gZWxlbWVudCB3aXRoIHRoZSBgb3BlbmAgcHJvcGVydHkgc2hvdWxkIGJlIG9wZW5lZC5cbiAgICAgIGlmICghYWNjb3JkaW9uLm5hbWUgfHwgIW9wZW5lZEdyb3VwLmhhcyhhY2NvcmRpb24ubmFtZSkpIHtcbiAgICAgICAgYWNjb3JkaW9uLmV4cGFuZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjb3JkaW9uLmNvbGxhcHNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoYWNjb3JkaW9uLm5hbWUpIHtcbiAgICAgICAgb3BlbmVkR3JvdXAuYWRkKGFjY29yZGlvbi5uYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsYXBzZSBhbGwgY2hpbGRyZW4gaXRlbXMgcHJvZ3JhbW1hdGljYWxseVxuICAgKi9cbiAgY29sbGFwc2VBbGxJdGVtcyhuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5hY2NvcmRpb25zLmZvckVhY2goKGFjY29yZGlvbikgPT4ge1xuICAgICAgaWYgKG5hbWUgJiYgYWNjb3JkaW9uLm5hbWUgIT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYWNjb3JkaW9uLmNvbGxhcHNlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==