UNPKG

@vismaux/ngx-nordic-cool

Version:
68 lines 11.8 kB
import { ChangeDetectionStrategy, Component, ContentChildren, Input, TemplateRef, ViewChild, } from '@angular/core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { animations } from '../../common'; import { NcISidebarItem, NcSidebarItemComponent, } from '../sidebar-item/sidebar-item.component'; import * as i0 from "@angular/core"; import * as i1 from "../sidebar.component"; import * as i2 from "@angular/common"; export class NcSidebarGroupComponent extends NcISidebarItem { constructor(sidebar, cdRef) { super(); this.sidebar = sidebar; this.cdRef = cdRef; this.destroyed$ = new Subject(); } set isOpen(value) { this._isOpen = value; if (value && this.sidebar.accordion) { this.closeOtherGroups(); } } get isOpen() { return this._isOpen; } ngAfterContentChecked() { this.sidebarItems.changes .pipe(takeUntil(this.destroyed$)) .subscribe(() => this.cdRef.detectChanges()); const hasActiveDirtyItem = this.sidebarItems?.some((i) => i.activeDirty); if (hasActiveDirtyItem && !this.isOpen) { this.toggle(); } } ngOnDestroy() { this.destroyed$.next(); this.destroyed$.complete(); } toggle() { this.isOpen = !this.isOpen; this.cdRef.detectChanges(); } closeOtherGroups() { this.sidebar.sidebarItems ?.filter((item) => item instanceof NcSidebarGroupComponent && item !== this) .forEach((item) => (item.isOpen = false)); } } NcSidebarGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NcSidebarGroupComponent, deps: [{ token: i1.NcSidebarComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); NcSidebarGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: NcSidebarGroupComponent, selector: "nc-sidebar-group", inputs: { disabled: "disabled", isOpen: "isOpen" }, providers: [ { provide: NcISidebarItem, useExisting: NcSidebarGroupComponent }, ], queries: [{ propertyName: "sidebarItems", predicate: NcSidebarItemComponent }], viewQueries: [{ propertyName: "contentTpl", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <li [class.active]=\"isOpen\" [class.disabled]=\"disabled\">\n <a (click)=\"toggle(); $event.preventDefault()\" href=\"\" draggable=\"false\">\n <ng-content></ng-content>\n </a>\n\n <ul [@accordion]=\"isOpen ? 'expanded' : 'collapsed'\">\n <ng-container *ngFor=\"let item of sidebarItems\">\n <ng-container\n *ngIf=\"item !== $any(this)\"\n [ngTemplateOutlet]=\"item.contentTpl\"\n ></ng-container>\n </ng-container>\n </ul>\n </li>\n</ng-template>\n", styles: ["ul{overflow:hidden;display:block!important}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [animations.accordion], changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NcSidebarGroupComponent, decorators: [{ type: Component, args: [{ selector: 'nc-sidebar-group', providers: [ { provide: NcISidebarItem, useExisting: NcSidebarGroupComponent }, ], changeDetection: ChangeDetectionStrategy.OnPush, animations: [animations.accordion], template: "<ng-template>\n <li [class.active]=\"isOpen\" [class.disabled]=\"disabled\">\n <a (click)=\"toggle(); $event.preventDefault()\" href=\"\" draggable=\"false\">\n <ng-content></ng-content>\n </a>\n\n <ul [@accordion]=\"isOpen ? 'expanded' : 'collapsed'\">\n <ng-container *ngFor=\"let item of sidebarItems\">\n <ng-container\n *ngIf=\"item !== $any(this)\"\n [ngTemplateOutlet]=\"item.contentTpl\"\n ></ng-container>\n </ng-container>\n </ul>\n </li>\n</ng-template>\n", styles: ["ul{overflow:hidden;display:block!important}\n"] }] }], ctorParameters: function () { return [{ type: i1.NcSidebarComponent }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{ type: Input }], isOpen: [{ type: Input }], contentTpl: [{ type: ViewChild, args: [TemplateRef] }], sidebarItems: [{ type: ContentChildren, args: [NcSidebarItemComponent] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9yZGljLWNvb2wvc3JjL2xpYi9zaWRlYmFyL3NpZGViYXItZ3JvdXAvc2lkZWJhci1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9yZGljLWNvb2wvc3JjL2xpYi9zaWRlYmFyL3NpZGViYXItZ3JvdXAvc2lkZWJhci1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUdMLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLHNCQUFzQixHQUN2QixNQUFNLHdDQUF3QyxDQUFDOzs7O0FBY2hELE1BQU0sT0FBTyx1QkFDWCxTQUFRLGNBQWM7SUEwQnRCLFlBQ1UsT0FBMkIsRUFDM0IsS0FBd0I7UUFFaEMsS0FBSyxFQUFFLENBQUM7UUFIQSxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQXpCMUIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUE0Qm5DLENBQUM7SUF2QkQsSUFDSSxNQUFNLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQWVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUUvQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekUsSUFBSSxrQkFBa0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7WUFDdkIsRUFBRSxNQUFNLENBQ04sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSx1QkFBdUIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUNuRTthQUNBLE9BQU8sQ0FBQyxDQUFDLElBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7O29IQTdEVSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwrRkFOdkI7UUFDVCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFO0tBQ2xFLHVEQTRCZ0Isc0JBQXNCLHlFQUg1QixXQUFXLHVFQ3JEeEIsaWhCQWdCQSwwWURjYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7MkZBRXZCLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxrQkFBa0IsYUFHakI7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcseUJBQXlCLEVBQUU7cUJBQ2xFLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQzt5SUFTekIsUUFBUTtzQkFBaEIsS0FBSztnQkFHRixNQUFNO3NCQURULEtBQUs7Z0JBYUcsVUFBVTtzQkFEbEIsU0FBUzt1QkFBQyxXQUFXO2dCQUliLFlBQVk7c0JBRHBCLGVBQWU7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFuaW1hdGlvbnMgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgTmNJU2lkZWJhckl0ZW0sXG4gIE5jU2lkZWJhckl0ZW1Db21wb25lbnQsXG59IGZyb20gJy4uL3NpZGViYXItaXRlbS9zaWRlYmFyLWl0ZW0uY29tcG9uZW50JztcblxuaW1wb3J0IHsgTmNTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2lkZWJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYy1zaWRlYmFyLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlYmFyLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTmNJU2lkZWJhckl0ZW0sIHVzZUV4aXN0aW5nOiBOY1NpZGViYXJHcm91cENvbXBvbmVudCB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW2FuaW1hdGlvbnMuYWNjb3JkaW9uXSxcbn0pXG5leHBvcnQgY2xhc3MgTmNTaWRlYmFyR3JvdXBDb21wb25lbnRcbiAgZXh0ZW5kcyBOY0lTaWRlYmFySXRlbVxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50Q2hlY2tlZFxue1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9pc09wZW46IGJvb2xlYW47XG5cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICYmIHRoaXMuc2lkZWJhci5hY2NvcmRpb24pIHtcbiAgICAgIHRoaXMuY2xvc2VPdGhlckdyb3VwcygpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKVxuICByZWFkb25seSBjb250ZW50VHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTmNTaWRlYmFySXRlbUNvbXBvbmVudClcbiAgcmVhZG9ubHkgc2lkZWJhckl0ZW1zOiBRdWVyeUxpc3Q8TmNTaWRlYmFySXRlbUNvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzaWRlYmFyOiBOY1NpZGViYXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNpZGViYXJJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCkpO1xuXG4gICAgY29uc3QgaGFzQWN0aXZlRGlydHlJdGVtID0gdGhpcy5zaWRlYmFySXRlbXM/LnNvbWUoKGkpID0+IGkuYWN0aXZlRGlydHkpO1xuICAgIGlmIChoYXNBY3RpdmVEaXJ0eUl0ZW0gJiYgIXRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT3RoZXJHcm91cHMoKSB7XG4gICAgdGhpcy5zaWRlYmFyLnNpZGViYXJJdGVtc1xuICAgICAgPy5maWx0ZXIoXG4gICAgICAgIChpdGVtKSA9PiBpdGVtIGluc3RhbmNlb2YgTmNTaWRlYmFyR3JvdXBDb21wb25lbnQgJiYgaXRlbSAhPT0gdGhpc1xuICAgICAgKVxuICAgICAgLmZvckVhY2goKGl0ZW06IE5jU2lkZWJhckdyb3VwQ29tcG9uZW50KSA9PiAoaXRlbS5pc09wZW4gPSBmYWxzZSkpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGU+XG4gIDxsaSBbY2xhc3MuYWN0aXZlXT1cImlzT3BlblwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxhIChjbGljayk9XCJ0b2dnbGUoKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBocmVmPVwiXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2E+XG5cbiAgICA8dWwgW0BhY2NvcmRpb25dPVwiaXNPcGVuID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNpZGViYXJJdGVtc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJpdGVtICE9PSAkYW55KHRoaXMpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmNvbnRlbnRUcGxcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2xpPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==