UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

92 lines 8.86 kB
import { BehaviorSubject, Subject } from 'rxjs'; import { TabLabelStream } from './tab-label-stream'; /** * Holds the information of tab opened in a tab view. * * See {@link TabView} for more information. */ export class OpenedTab { uniqueId; /** * See {@link TabContent#label}. */ label; /** * See [TabContent.canBeClosed]{@link TabContent#canBeClosed}. */ canBeClosed; /** * See [TabContent.tabContentComponent]{@link TabContent#tabContentComponent}. */ tabContentComponent; /** * See [TabContent.injectedObject]{@link TabContent#injectedObject}. */ injectedObject = {}; /** * See [TabContent.order]{@link TabContent#order}. */ order = 0; /** * See [TabContent.initial]{@link TabContent#initial}. */ initial = false; /** * See [TabContent.parentUniqueId]{@link TabContent#parentUniqueId}. */ parentUniqueId = undefined; /** * Reference to the component portal that is used to display the tab content */ portal; /** * Whether the tab was initialized after it's creation. * * See [TabGroup.initializeTab()]{@link TabView#initializeTab} for more information. */ isTabInitialized = false; /** * A stream that is injected into each tab and is used to inform that tab whenever it is selected or deselected */ tabSelected$; /** * A stream that is injected into each tab and is used to inform the tab about its termination */ tabClosed$; _label$; /** * @param tabContent - content of the tab * @param uniqueId - unique identifier for the tab */ constructor(tabContent, uniqueId) { this.uniqueId = uniqueId; Object.assign(this, tabContent); this.tabSelected$ = new BehaviorSubject(false); this.tabClosed$ = new Subject(); this._label$ = new TabLabelStream(this.label?.icon, this.label?.text); } setIcon(icon) { this._label$.icon$.next(icon); } setText(text) { this._label$.text$.next(text); } getIcon$() { return this._label$.icon$.asObservable(); } getIcon() { return this._label$.icon$.getValue(); } getText$() { return this._label$.text$.asObservable(); } /** * Closes the stream held in this object */ destroy() { this.tabSelected$.complete(); this.tabClosed$.complete(); this._label$.destroy(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmVkLXRhYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFicy9jbGFzc2VzL29wZW5lZC10YWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWxEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sU0FBUztJQXVEeUI7SUFyRDNDOztPQUVHO0lBQ0ksS0FBSyxDQUFXO0lBQ3ZCOztPQUVHO0lBQ0ksV0FBVyxDQUFVO0lBQzVCOztPQUVHO0lBQ0ksbUJBQW1CLENBQVk7SUFDdEM7O09BRUc7SUFDSSxjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQ25DOztPQUVHO0lBQ0ksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQjs7T0FFRztJQUNJLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkI7O09BRUc7SUFDSSxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQ2xDOztPQUVHO0lBQ0ksTUFBTSxDQUF1QjtJQUNwQzs7OztPQUlHO0lBQ0ksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDOztPQUVHO0lBQ0ksWUFBWSxDQUEyQjtJQUM5Qzs7T0FFRztJQUNJLFVBQVUsQ0FBZ0I7SUFFdkIsT0FBTyxDQUFpQjtJQUVsQzs7O09BR0c7SUFDSCxZQUFZLFVBQXNCLEVBQVMsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDekUsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFZO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sT0FBTyxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU0sT0FBTztRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RhYkNvbnRlbnQsIFRhYkxhYmVsfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7Q29tcG9uZW50UG9ydGFsfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1RhYkxhYmVsU3RyZWFtfSBmcm9tICcuL3RhYi1sYWJlbC1zdHJlYW0nO1xuXG4vKipcbiAqIEhvbGRzIHRoZSBpbmZvcm1hdGlvbiBvZiB0YWIgb3BlbmVkIGluIGEgdGFiIHZpZXcuXG4gKlxuICogU2VlIHtAbGluayBUYWJWaWV3fSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5lZFRhYiBpbXBsZW1lbnRzIFRhYkNvbnRlbnQge1xuXG4gICAgLyoqXG4gICAgICogU2VlIHtAbGluayBUYWJDb250ZW50I2xhYmVsfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWw6IFRhYkxhYmVsO1xuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiQ29udGVudC5jYW5CZUNsb3NlZF17QGxpbmsgVGFiQ29udGVudCNjYW5CZUNsb3NlZH0uXG4gICAgICovXG4gICAgcHVibGljIGNhbkJlQ2xvc2VkOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiQ29udGVudC50YWJDb250ZW50Q29tcG9uZW50XXtAbGluayBUYWJDb250ZW50I3RhYkNvbnRlbnRDb21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyB0YWJDb250ZW50Q29tcG9uZW50OiBUeXBlPGFueT47XG4gICAgLyoqXG4gICAgICogU2VlIFtUYWJDb250ZW50LmluamVjdGVkT2JqZWN0XXtAbGluayBUYWJDb250ZW50I2luamVjdGVkT2JqZWN0fS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5qZWN0ZWRPYmplY3Q6IG9iamVjdCA9IHt9O1xuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiQ29udGVudC5vcmRlcl17QGxpbmsgVGFiQ29udGVudCNvcmRlcn0uXG4gICAgICovXG4gICAgcHVibGljIG9yZGVyID0gMDtcbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYkNvbnRlbnQuaW5pdGlhbF17QGxpbmsgVGFiQ29udGVudCNpbml0aWFsfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5pdGlhbCA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiQ29udGVudC5wYXJlbnRVbmlxdWVJZF17QGxpbmsgVGFiQ29udGVudCNwYXJlbnRVbmlxdWVJZH0uXG4gICAgICovXG4gICAgcHVibGljIHBhcmVudFVuaXF1ZUlkID0gdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IHBvcnRhbCB0aGF0IGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgdGFiIGNvbnRlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9ydGFsOiBDb21wb25lbnRQb3J0YWw8YW55PjtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0YWIgd2FzIGluaXRpYWxpemVkIGFmdGVyIGl0J3MgY3JlYXRpb24uXG4gICAgICpcbiAgICAgKiBTZWUgW1RhYkdyb3VwLmluaXRpYWxpemVUYWIoKV17QGxpbmsgVGFiVmlldyNpbml0aWFsaXplVGFifSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNUYWJJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEEgc3RyZWFtIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBlYWNoIHRhYiBhbmQgaXMgdXNlZCB0byBpbmZvcm0gdGhhdCB0YWIgd2hlbmV2ZXIgaXQgaXMgc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZFxuICAgICAqL1xuICAgIHB1YmxpYyB0YWJTZWxlY3RlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgICAvKipcbiAgICAgKiBBIHN0cmVhbSB0aGF0IGlzIGluamVjdGVkIGludG8gZWFjaCB0YWIgYW5kIGlzIHVzZWQgdG8gaW5mb3JtIHRoZSB0YWIgYWJvdXQgaXRzIHRlcm1pbmF0aW9uXG4gICAgICovXG4gICAgcHVibGljIHRhYkNsb3NlZCQ6IFN1YmplY3Q8dm9pZD47XG5cbiAgICBwcm90ZWN0ZWQgX2xhYmVsJDogVGFiTGFiZWxTdHJlYW07XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gdGFiQ29udGVudCAtIGNvbnRlbnQgb2YgdGhlIHRhYlxuICAgICAqIEBwYXJhbSB1bmlxdWVJZCAtIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFiXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodGFiQ29udGVudDogVGFiQ29udGVudCwgcHVibGljIHVuaXF1ZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB0YWJDb250ZW50KTtcbiAgICAgICAgdGhpcy50YWJTZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAgICAgdGhpcy50YWJDbG9zZWQkID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5fbGFiZWwkID0gbmV3IFRhYkxhYmVsU3RyZWFtKHRoaXMubGFiZWw/Lmljb24sIHRoaXMubGFiZWw/LnRleHQpXG4gICAgfVxuXG4gICAgcHVibGljIHNldEljb24oaWNvbjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2xhYmVsJC5pY29uJC5uZXh0KGljb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUZXh0KHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbCQudGV4dCQubmV4dCh0ZXh0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWNvbiQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsJC5pY29uJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWNvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWwkLmljb24kLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRleHQkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYWJlbCQudGV4dCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBzdHJlYW0gaGVsZCBpbiB0aGlzIG9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYlNlbGVjdGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnRhYkNsb3NlZCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fbGFiZWwkLmRlc3Ryb3koKVxuICAgIH1cbn1cbiJdfQ==