UNPKG

gentics-ui-core

Version:

This is the common core framework for the Gentics CMS and Mesh UI, and other Angular applications.

67 lines 7.71 kB
import { Component, ContentChildren, QueryList, Input, TemplateRef, Output, EventEmitter } from '@angular/core'; import { TabPane } from './tab-pane.component'; import { GtxTabLabel } from './tab-label'; import { coerceToBoolean } from '../../common/coerce-to-boolean'; import * as i0 from "@angular/core"; // Counter for unique group ids. let uniqueTabGroupId = 0; /** * For documentation, see the GroupedTabs */ export class TabGroup { constructor() { /** Unique id for the tab group. */ this.uniqueId = `gtx-tag-group-${uniqueTabGroupId++}`; /** Expand state for the group */ this.expand = false; /** Plain text label for the tab, used when there is no template label. */ this.textLabel = ''; /** * Fires an event whenever the tab group is toggled. Argument is the id and state of the tab group. */ this.tabGroupToggle = new EventEmitter(); } get templateLabel() { return this.templateLabels.first || null; } set expanded(val) { this.expand = coerceToBoolean(val); } set id(val) { this.uniqueId = val; } get id() { return this.uniqueId; } get hasActiveChild() { return this.tabs.some(tab => tab.active); } toggle() { this.expand = !this.expand; this.tabGroupToggle.emit({ id: this.id, expand: this.expand }); } } /** @nocollapse */ TabGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TabGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ TabGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: TabGroup, selector: "gtx-tab-group", inputs: { textLabel: ["label", "textLabel"], expanded: "expanded", id: "id" }, outputs: { tabGroupToggle: "tabGroupToggle" }, queries: [{ propertyName: "templateLabels", predicate: GtxTabLabel, read: TemplateRef }, { propertyName: "tabs", predicate: TabPane }], exportAs: ["gtxTabGroup"], ngImport: i0, template: ``, isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TabGroup, decorators: [{ type: Component, args: [{ selector: 'gtx-tab-group', exportAs: 'gtxTabGroup', template: `` }] }], propDecorators: { templateLabels: [{ type: ContentChildren, args: [GtxTabLabel, { read: TemplateRef, descendants: false }] }], textLabel: [{ type: Input, args: ['label'] }], expanded: [{ type: Input }], id: [{ type: Input }], tabGroupToggle: [{ type: Output }], tabs: [{ type: ContentChildren, args: [TabPane, { descendants: false }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2dyb3VwZWQtdGFicy90YWItZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUVqRSxnQ0FBZ0M7QUFDaEMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFFekI7O0dBRUc7QUFNSCxNQUFNLE9BQU8sUUFBUTtJQUxyQjtRQU1FLG1DQUFtQztRQUNuQyxhQUFRLEdBQVcsaUJBQWlCLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztRQUV6RCxpQ0FBaUM7UUFDMUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQVMvQiwwRUFBMEU7UUFDMUQsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQVl2Qzs7V0FFRztRQUNPLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWlDLENBQUM7S0FhOUU7SUFqQ0MsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUtELElBQWEsUUFBUSxDQUFDLEdBQVE7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQWEsRUFBRSxDQUFDLEdBQVc7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksRUFBRSxLQUFhLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFVMUMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzt3SEExQ1UsUUFBUTs0R0FBUixRQUFRLGtOQVFGLFdBQVcsUUFBVSxXQUFXLHVDQXlCaEMsT0FBTyx3REFuQ2QsRUFBRTsyRkFFRCxRQUFRO2tCQUxwQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OEJBUzBFLGNBQWM7c0JBQXRGLGVBQWU7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO2dCQU92RCxTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBRUQsUUFBUTtzQkFBcEIsS0FBSztnQkFJTyxFQUFFO3NCQUFkLEtBQUs7Z0JBU0ksY0FBYztzQkFBdkIsTUFBTTtnQkFHMkMsSUFBSTtzQkFBckQsZUFBZTt1QkFBQyxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFiUGFuZSB9IGZyb20gJy4vdGFiLXBhbmUuY29tcG9uZW50JztcbmltcG9ydCB7IEd0eFRhYkxhYmVsIH0gZnJvbSAnLi90YWItbGFiZWwnO1xuaW1wb3J0IHsgY29lcmNlVG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS10by1ib29sZWFuJztcblxuLy8gQ291bnRlciBmb3IgdW5pcXVlIGdyb3VwIGlkcy5cbmxldCB1bmlxdWVUYWJHcm91cElkID0gMDtcblxuLyoqXG4gKiBGb3IgZG9jdW1lbnRhdGlvbiwgc2VlIHRoZSBHcm91cGVkVGFic1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdndHgtdGFiLWdyb3VwJyxcbiAgZXhwb3J0QXM6ICdndHhUYWJHcm91cCcsXG4gIHRlbXBsYXRlOiBgYFxufSlcbmV4cG9ydCBjbGFzcyBUYWJHcm91cCB7XG4gIC8qKiBVbmlxdWUgaWQgZm9yIHRoZSB0YWIgZ3JvdXAuICovXG4gIHVuaXF1ZUlkOiBzdHJpbmcgPSBgZ3R4LXRhZy1ncm91cC0ke3VuaXF1ZVRhYkdyb3VwSWQrK31gO1xuXG4gIC8qKiBFeHBhbmQgc3RhdGUgZm9yIHRoZSBncm91cCAqL1xuICBwdWJsaWMgZXhwYW5kOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIENvbnRlbnQgZm9yIHRoZSB0YWIgbGFiZWwgZ2l2ZW4gYnkgYDxuZy10ZW1wbGF0ZSBndHgtdGFiLWxhYmVsPmAuICovXG4gIEBDb250ZW50Q2hpbGRyZW4oR3R4VGFiTGFiZWwsIHsgcmVhZDogVGVtcGxhdGVSZWYsIGRlc2NlbmRhbnRzOiBmYWxzZSB9KSB0ZW1wbGF0ZUxhYmVsczogUXVlcnlMaXN0PEd0eFRhYkxhYmVsPjtcblxuICBnZXQgdGVtcGxhdGVMYWJlbCgpOiBHdHhUYWJMYWJlbCB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVMYWJlbHMuZmlyc3QgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKiBQbGFpbiB0ZXh0IGxhYmVsIGZvciB0aGUgdGFiLCB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gdGVtcGxhdGUgbGFiZWwuICovXG4gIEBJbnB1dCgnbGFiZWwnKSB0ZXh0TGFiZWw6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIHNldCBleHBhbmRlZCh2YWw6IGFueSkge1xuICAgIHRoaXMuZXhwYW5kID0gY29lcmNlVG9Cb29sZWFuKHZhbCk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaWQodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLnVuaXF1ZUlkID0gdmFsO1xuICB9XG5cbiAgZ2V0IGlkKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnVuaXF1ZUlkOyB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGFuIGV2ZW50IHdoZW5ldmVyIHRoZSB0YWIgZ3JvdXAgaXMgdG9nZ2xlZC4gQXJndW1lbnQgaXMgdGhlIGlkIGFuZCBzdGF0ZSBvZiB0aGUgdGFiIGdyb3VwLlxuICAgKi9cbiAgQE91dHB1dCgpIHRhYkdyb3VwVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7aWQ6IHN0cmluZywgZXhwYW5kOiBib29sZWFufT4oKTtcblxuICAvKiogQWxsIG9mIHRoZSBkZWZpbmVkIHRhYiBwYW5lcy4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSB0YWJzOiBRdWVyeUxpc3Q8VGFiUGFuZT47XG5cbiAgZ2V0IGhhc0FjdGl2ZUNoaWxkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYnMuc29tZSh0YWIgPT4gdGFiLmFjdGl2ZSlcbiAgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZCA9ICF0aGlzLmV4cGFuZDtcbiAgICB0aGlzLnRhYkdyb3VwVG9nZ2xlLmVtaXQoeyBpZDogdGhpcy5pZCwgZXhwYW5kOiB0aGlzLmV4cGFuZCB9KTtcbiAgfVxufVxuIl19