@taiga-ui/kit
Version:
Taiga UI Angular main components kit
53 lines • 8.42 kB
JavaScript
import { __decorate, __param } from "tslib";
import { ChangeDetectionStrategy, Component, ContentChildren, Inject, Input, } from '@angular/core';
import { EMPTY_QUERY, identity, isPresent, itemsQueryListObservable, tuiDefaultProp, TuiDestroyService, } from '@taiga-ui/cdk';
import { merge } from 'rxjs';
import { filter, map, mapTo, pairwise, switchMap, takeUntil } from 'rxjs/operators';
import { TuiAccordionItemComponent } from './accordion-item/accordion-item.component';
let TuiAccordionComponent = class TuiAccordionComponent {
constructor(destroy$) {
this.destroy$ = destroy$;
this.closeOthers = true;
this.rounded = true;
this.accordionItems = EMPTY_QUERY;
}
ngAfterContentInit() {
const { accordionItems } = this;
const rows$ = itemsQueryListObservable(accordionItems);
const newOpenRow$ = rows$.pipe(pairwise(), map(([previous, current]) => current.find(item => previous.indexOf(item) === -1 && item.open)), filter(isPresent));
const rowsOpen$ = merge(rows$.pipe(switchMap(rows => merge(...rows.map(row => row.openChange.pipe(filter(identity), mapTo(row)))))), newOpenRow$).pipe(filter(() => this.closeOthers), takeUntil(this.destroy$));
rowsOpen$.subscribe(currentRow => {
accordionItems.forEach(row => {
if (currentRow !== row) {
row.close();
}
});
});
}
};
TuiAccordionComponent.ctorParameters = () => [
{ type: TuiDestroyService, decorators: [{ type: Inject, args: [TuiDestroyService,] }] }
];
__decorate([
Input(),
tuiDefaultProp()
], TuiAccordionComponent.prototype, "closeOthers", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiAccordionComponent.prototype, "rounded", void 0);
__decorate([
ContentChildren(TuiAccordionItemComponent)
], TuiAccordionComponent.prototype, "accordionItems", void 0);
TuiAccordionComponent = __decorate([
Component({
selector: 'tui-accordion',
template: "<!--TODO: Unnecessary nesting, probably accordion can be a directive-->\n<div\n tuiGroup\n automation-id=\"tui-accordion__group\"\n class=\"group\"\n orientation=\"vertical\"\n size=\"l\"\n [collapsed]=\"true\"\n [rounded]=\"rounded\"\n>\n <ng-content select=\"tui-accordion-item\"></ng-content>\n</div>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [TuiDestroyService],
styles: [":host{display:block}.group{display:flex}"]
}),
__param(0, Inject(TuiDestroyService))
], TuiAccordionComponent);
export { TuiAccordionComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9hY2NvcmRpb24vIiwic291cmNlcyI6WyJhY2NvcmRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssR0FFUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUNYLFFBQVEsRUFDUixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQVNwRixJQUFhLHFCQUFxQixHQUFsQyxNQUFhLHFCQUFxQjtJQVk5QixZQUVxQixRQUEyQjtRQUEzQixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQVhoRCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUluQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBR04sbUJBQWMsR0FBeUMsV0FBVyxDQUFDO0lBS3pFLENBQUM7SUFFSixrQkFBa0I7UUFDZCxNQUFNLEVBQUMsY0FBYyxFQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQzFCLFFBQVEsRUFBRSxFQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNuRSxFQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FDcEIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FDbkIsS0FBSyxDQUFDLElBQUksQ0FDTixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDYixLQUFLLENBQ0QsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ2QsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNwRCxDQUNKLENBQ0osQ0FDSixFQUNELFdBQVcsQ0FDZCxDQUFDLElBQUksQ0FDRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUM5QixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMzQixDQUFDO1FBRUYsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLFVBQVUsS0FBSyxHQUFHLEVBQUU7b0JBQ3BCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDZjtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0osQ0FBQTs7WUFyQ2tDLGlCQUFpQix1QkFEM0MsTUFBTSxTQUFDLGlCQUFpQjs7QUFWN0I7SUFGQyxLQUFLLEVBQUU7SUFDUCxjQUFjLEVBQUU7MERBQ0U7QUFJbkI7SUFGQyxLQUFLLEVBQUU7SUFDUCxjQUFjLEVBQUU7c0RBQ0Y7QUFHZjtJQURDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQzs2REFDaUM7QUFWbkUscUJBQXFCO0lBUGpDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxlQUFlO1FBRXpCLHFWQUFzQztRQUN0QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtRQUMvQyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzs7S0FDakMsQ0FBQztJQWNPLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7R0FickIscUJBQXFCLENBbURqQztTQW5EWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRU1QVFlfUVVFUlksXG4gICAgaWRlbnRpdHksXG4gICAgaXNQcmVzZW50LFxuICAgIGl0ZW1zUXVlcnlMaXN0T2JzZXJ2YWJsZSxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIG1hcFRvLCBwYWlyd2lzZSwgc3dpdGNoTWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VHVpQWNjb3JkaW9uSXRlbUNvbXBvbmVudH0gZnJvbSAnLi9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1hY2NvcmRpb24nLFxuICAgIHN0eWxlVXJsczogWycuL2FjY29yZGlvbi5zdHlsZS5sZXNzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICdhY2NvcmRpb24udGVtcGxhdGUuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVHVpRGVzdHJveVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgY2xvc2VPdGhlcnMgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHJvdW5kZWQgPSB0cnVlO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlBY2NvcmRpb25JdGVtQ29tcG9uZW50KVxuICAgIHJlYWRvbmx5IGFjY29yZGlvbkl0ZW1zOiBRdWVyeUxpc3Q8VHVpQWNjb3JkaW9uSXRlbUNvbXBvbmVudD4gPSBFTVBUWV9RVUVSWTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkOiBUdWlEZXN0cm95U2VydmljZSxcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIGNvbnN0IHthY2NvcmRpb25JdGVtc30gPSB0aGlzO1xuICAgICAgICBjb25zdCByb3dzJCA9IGl0ZW1zUXVlcnlMaXN0T2JzZXJ2YWJsZShhY2NvcmRpb25JdGVtcyk7XG4gICAgICAgIGNvbnN0IG5ld09wZW5Sb3ckID0gcm93cyQucGlwZShcbiAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICBtYXAoKFtwcmV2aW91cywgY3VycmVudF0pID0+XG4gICAgICAgICAgICAgICAgY3VycmVudC5maW5kKGl0ZW0gPT4gcHJldmlvdXMuaW5kZXhPZihpdGVtKSA9PT0gLTEgJiYgaXRlbS5vcGVuKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmaWx0ZXIoaXNQcmVzZW50KSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgcm93c09wZW4kID0gbWVyZ2UoXG4gICAgICAgICAgICByb3dzJC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyb3dzID0+XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucm93cy5tYXAocm93ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Lm9wZW5DaGFuZ2UucGlwZShmaWx0ZXIoaWRlbnRpdHkpLCBtYXBUbyhyb3cpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBuZXdPcGVuUm93JCxcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuY2xvc2VPdGhlcnMpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICApO1xuXG4gICAgICAgIHJvd3NPcGVuJC5zdWJzY3JpYmUoY3VycmVudFJvdyA9PiB7XG4gICAgICAgICAgICBhY2NvcmRpb25JdGVtcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3cgIT09IHJvdykge1xuICAgICAgICAgICAgICAgICAgICByb3cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19