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
JavaScript
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