@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
92 lines • 8.86 kB
JavaScript
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==