UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

83 lines 11.5 kB
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, numberAttribute, Output } from '@angular/core'; import { TabPaneComponent } from '../tab-pane/tab-pane.component'; import * as i0 from "@angular/core"; import * as i1 from "../tab.service"; export class TabContentComponent { /** * Set active tabPane index * @type number */ set activeTabPaneIdx(value) { const newValue = value; if (this._activeTabPaneIdx != newValue) { this._activeTabPaneIdx = newValue; this.activeTabPaneIdxChange.emit(newValue); this.changeDetectorRef.markForCheck(); this.changeDetectorRef.detectChanges(); } } get activeTabPaneIdx() { return this._activeTabPaneIdx; } constructor(changeDetectorRef, tabService) { this.changeDetectorRef = changeDetectorRef; this.tabService = tabService; this._activeTabPaneIdx = -1; /** * Event emitted on the active tab pane index change. */ this.activeTabPaneIdxChange = new EventEmitter(); } ngAfterContentInit() { this.subscribeTabService(); } ngAfterContentChecked() { this.panes?.forEach((tabPane, index) => { tabPane.tabContent = this; tabPane.tabPaneIdx = index; }); this.refreshTabPaneActive(this.activeTabPaneIdx); this.tabService.setActiveTabIdx({ tabContent: this, activeIdx: this.activeTabPaneIdx }); } ngOnChanges(changes) { if (changes['activeTabPaneIdx']?.currentValue) { this.tabService.setActiveTabIdx({ tabContent: this, activeIdx: changes['activeTabPaneIdx'].currentValue }); } } ngOnDestroy() { this.subscribeTabService(false); } subscribeTabService(subscribe = true) { if (subscribe) { this.tabServiceSubscription = this.tabService.activeTabPaneIdx$.subscribe((tabContentState) => { if (this === tabContentState.tabContent) { this.activeTabPaneIdx = tabContentState.activeIdx; } }); } else { this.tabServiceSubscription?.unsubscribe(); } } refreshTabPaneActive(idx) { // hack for active state pane refresh todo? this.panes?.forEach((tabPane, index) => { tabPane.active = idx === index; }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TabContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TabService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.12", type: TabContentComponent, isStandalone: true, selector: "c-tab-content", inputs: { activeTabPaneIdx: ["activeTabPaneIdx", "activeTabPaneIdx", numberAttribute] }, outputs: { activeTabPaneIdxChange: "activeTabPaneIdxChange" }, host: { classAttribute: "tab-content" }, queries: [{ propertyName: "panes", predicate: TabPaneComponent }], exportAs: ["cTabContent"], usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TabContentComponent, decorators: [{ type: Component, args: [{ selector: 'c-tab-content', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cTabContent', standalone: true, host: { class: 'tab-content' }, styles: [":host{display:block}\n"] }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TabService }], propDecorators: { activeTabPaneIdx: [{ type: Input, args: [{ transform: numberAttribute }] }], activeTabPaneIdxChange: [{ type: Output }], panes: [{ type: ContentChildren, args: [TabPaneComponent] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90YWJzL3RhYi1jb250ZW50L3RhYi1jb250ZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEVBR2YsTUFBTSxFQUdQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFZbEUsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7O09BR0c7SUFDSCxJQUNJLGdCQUFnQixDQUFDLEtBQWE7UUFDaEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7WUFDbEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQVlELFlBQ1UsaUJBQW9DLEVBQ3BDLFVBQXNCO1FBRHRCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVp4QixzQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUvQjs7V0FFRztRQUNPLDJCQUFzQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0lBUWpGLENBQUM7SUFFSixrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNyQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUMxQixPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM3RyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLFlBQXFCLElBQUk7UUFDM0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUM1RixJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO2dCQUNwRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEdBQVc7UUFDOUIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEtBQUssQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBM0VVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHNIQUtWLGVBQWUsMkpBc0JsQixnQkFBZ0IsNkVBbEN2QixnQkFBZ0I7OzRGQU9mLG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxlQUFlLFlBQ2YsZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU0sWUFDckMsYUFBYSxjQUNYLElBQUksUUFDVixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7K0dBUTFCLGdCQUFnQjtzQkFEbkIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBb0IzQixzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRW1DLEtBQUs7c0JBQTlDLGVBQWU7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGFiUGFuZUNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1wYW5lL3RhYi1wYW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJTZXJ2aWNlIH0gZnJvbSAnLi4vdGFiLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLXRhYi1jb250ZW50JyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudCAvPicsXG4gIHN0eWxlVXJsczogWycuL3RhYi1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBleHBvcnRBczogJ2NUYWJDb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDogeyBjbGFzczogJ3RhYi1jb250ZW50JyB9XG59KVxuZXhwb3J0IGNsYXNzIFRhYkNvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTZXQgYWN0aXZlIHRhYlBhbmUgaW5kZXhcbiAgICogQHR5cGUgbnVtYmVyXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBzZXQgYWN0aXZlVGFiUGFuZUlkeCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fYWN0aXZlVGFiUGFuZUlkeCAhPSBuZXdWYWx1ZSkge1xuICAgICAgdGhpcy5fYWN0aXZlVGFiUGFuZUlkeCA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5hY3RpdmVUYWJQYW5lSWR4Q2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhY3RpdmVUYWJQYW5lSWR4KCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVUYWJQYW5lSWR4O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWN0aXZlVGFiUGFuZUlkeCA9IC0xO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIG9uIHRoZSBhY3RpdmUgdGFiIHBhbmUgaW5kZXggY2hhbmdlLlxuICAgKi9cbiAgQE91dHB1dCgpIGFjdGl2ZVRhYlBhbmVJZHhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lQ29tcG9uZW50KSBwdWJsaWMgcGFuZXMhOiBRdWVyeUxpc3Q8VGFiUGFuZUNvbXBvbmVudD47XG4gIHByaXZhdGUgdGFiU2VydmljZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRhYlNlcnZpY2U6IFRhYlNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZVRhYlNlcnZpY2UoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhbmVzPy5mb3JFYWNoKCh0YWJQYW5lLCBpbmRleCkgPT4ge1xuICAgICAgdGFiUGFuZS50YWJDb250ZW50ID0gdGhpcztcbiAgICAgIHRhYlBhbmUudGFiUGFuZUlkeCA9IGluZGV4O1xuICAgIH0pO1xuICAgIHRoaXMucmVmcmVzaFRhYlBhbmVBY3RpdmUodGhpcy5hY3RpdmVUYWJQYW5lSWR4KTtcbiAgICB0aGlzLnRhYlNlcnZpY2Uuc2V0QWN0aXZlVGFiSWR4KHsgdGFiQ29udGVudDogdGhpcywgYWN0aXZlSWR4OiB0aGlzLmFjdGl2ZVRhYlBhbmVJZHggfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGl2ZVRhYlBhbmVJZHgnXT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnRhYlNlcnZpY2Uuc2V0QWN0aXZlVGFiSWR4KHsgdGFiQ29udGVudDogdGhpcywgYWN0aXZlSWR4OiBjaGFuZ2VzWydhY3RpdmVUYWJQYW5lSWR4J10uY3VycmVudFZhbHVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaWJlVGFiU2VydmljZShmYWxzZSk7XG4gIH1cblxuICBzdWJzY3JpYmVUYWJTZXJ2aWNlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLnRhYlNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLnRhYlNlcnZpY2UuYWN0aXZlVGFiUGFuZUlkeCQuc3Vic2NyaWJlKCh0YWJDb250ZW50U3RhdGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMgPT09IHRhYkNvbnRlbnRTdGF0ZS50YWJDb250ZW50KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWJQYW5lSWR4ID0gdGFiQ29udGVudFN0YXRlLmFjdGl2ZUlkeDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFiU2VydmljZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoVGFiUGFuZUFjdGl2ZShpZHg6IG51bWJlcikge1xuICAgIC8vIGhhY2sgZm9yIGFjdGl2ZSBzdGF0ZSBwYW5lIHJlZnJlc2ggdG9kbz9cbiAgICB0aGlzLnBhbmVzPy5mb3JFYWNoKCh0YWJQYW5lLCBpbmRleCkgPT4ge1xuICAgICAgdGFiUGFuZS5hY3RpdmUgPSBpZHggPT09IGluZGV4O1xuICAgIH0pO1xuICB9XG59XG4iXX0=