@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
106 lines • 13.3 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, ContentChild, Inject, Input, TemplateRef } from '@angular/core';
import { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';
import { PivotTabType } from './pivot-tab-type';
import { SME_PIVOT_TAB_CONTAINER_PROVIDER } from './pivot-tab.container';
import * as i0 from "@angular/core";
/**
* Defines a tab for @see PivotComponent
*/
export class PivotTabComponent {
constructor(pivotContainer) {
this.pivotContainer = pivotContainer;
/**
* Use the same input options as angular @see RouterLinkActive Directive
*/
this.routerLinkActiveOptions = { exact: false };
/**
* Indicates if we should show the error status icon
*/
this.showErrorStatusIcon = false;
/**
* Indicates whether a tab is visible or in the tab tray.
*/
this.isVisible = true;
}
/**
* Indicates the type of this tab
*/
get type() {
return this.contentTemplate ? PivotTabType.Static : PivotTabType.Routed;
}
ngOnChanges(changes) {
if (changes.label) {
this.yieldMeasureTab();
}
}
/**
* Measures the length of the pivot tab and assigns this value to the width attribute
*/
yieldMeasureTab() {
const host = this.pivotContainer.hostElement.nativeElement;
const measureElement = document.createElement('button');
// position element off screen
measureElement.style.display = 'inline';
// measureElement.style.width = 'auto';
measureElement.style.visibility = 'hidden';
measureElement.style.position = 'absolute';
measureElement.style.right = '-10000px';
measureElement.style.bottom = '-10000px';
measureElement.innerHTML = this.label;
const hostStyle = getComputedStyle(host);
measureElement.style.fontFamily = hostStyle.fontFamily;
measureElement.style.fontVariant = hostStyle.fontVariant;
measureElement.style.fontSize = hostStyle.fontSize;
measureElement.style.fontStyle = hostStyle.fontStyle;
measureElement.style.fontWeight = hostStyle.fontWeight;
measureElement.style.lineHeight = hostStyle.lineHeight;
measureElement.style.letterSpacing = hostStyle.letterSpacing;
measureElement.style.padding = hostStyle.padding;
// append the measureElement to the dom
document.body.append(measureElement);
const measureWidth = measureElement.getBoundingClientRect().width;
this.width = measureWidth;
// Remember to remove element from the DOM
document.body.removeChild(measureElement);
}
}
/** @nocollapse */ PivotTabComponent.ɵfac = function PivotTabComponent_Factory(t) { return new (t || PivotTabComponent)(i0.ɵɵdirectiveInject(SME_PIVOT_TAB_CONTAINER_PROVIDER)); };
/** @nocollapse */ PivotTabComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: PivotTabComponent, selectors: [["sme-pivot-tab"]], contentQueries: function PivotTabComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
i0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);
} }, inputs: { route: "route", routerLinkActiveOptions: "routerLinkActiveOptions", label: "label", iconClass: "iconClass", disabled: "disabled", showErrorStatusIcon: "showErrorStatusIcon" }, features: [i0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function PivotTabComponent_Template(rf, ctx) { }, encapsulation: 2 });
__decorate([
Yield(),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], PivotTabComponent.prototype, "yieldMeasureTab", null);
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PivotTabComponent, [{
type: Component,
args: [{
selector: 'sme-pivot-tab',
template: ''
}]
}], function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [SME_PIVOT_TAB_CONTAINER_PROVIDER]
}] }]; }, { route: [{
type: Input
}], routerLinkActiveOptions: [{
type: Input
}], label: [{
type: Input
}], iconClass: [{
type: Input
}], disabled: [{
type: Input
}], showErrorStatusIcon: [{
type: Input
}], contentTemplate: [{
type: ContentChild,
args: [TemplateRef]
}], yieldMeasureTab: [] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3Bpdm90L3Bpdm90LXRhYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQTRCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDakcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUV6RTs7R0FFRztBQU9ILE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsWUFBOEQsY0FBYztRQUFkLG1CQUFjLEdBQWQsY0FBYyxDQUFBO1FBZTVFOztXQUVHO1FBRUksNEJBQXVCLEdBQXVCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBb0J0RTs7V0FFRztRQUVJLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQWFuQzs7V0FFRztRQUNJLGNBQVMsR0FBRyxJQUFJLENBQUM7SUEzRHdELENBQUM7SUFFakY7O09BRUc7SUFDSCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQztJQXNETSxXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBRUssZUFBZTtRQUNuQixNQUFNLElBQUksR0FBZ0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQ3hFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsOEJBQThCO1FBQzlCLGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4Qyx1Q0FBdUM7UUFDdkMsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzNDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7UUFDeEMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQ3ZELGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUM7UUFDekQsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNuRCxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3JELGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDdkQsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUN2RCxjQUFjLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQzdELGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFFakQsdUNBQXVDO1FBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNsRSxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUUxQiwwQ0FBMEM7UUFDMUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7cUdBdEdRLGlCQUFpQix1QkFFTixnQ0FBZ0M7bUdBRjNDLGlCQUFpQjtvQ0FrRFosV0FBVzs7Ozs7QUFzQnpCO0lBQUMsS0FBSyxFQUFFOzs7O3dEQThCUDt1RkF0R1EsaUJBQWlCO2NBTDdCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFLEVBQUU7YUFDZjs7c0JBSWdCLE1BQU07dUJBQUMsZ0NBQWdDO3dCQWE3QyxLQUFLO2tCQURYLEtBQUs7WUFPQyx1QkFBdUI7a0JBRDdCLEtBQUs7WUFPQyxLQUFLO2tCQURYLEtBQUs7WUFPQyxTQUFTO2tCQURmLEtBQUs7WUFPQyxRQUFRO2tCQURkLEtBQUs7WUFPQyxtQkFBbUI7a0JBRHpCLEtBQUs7WUFPQyxlQUFlO2tCQURyQixZQUFZO21CQUFDLFdBQVc7WUF1QmpCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBZaWVsZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL3lpZWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IFBpdm90VGFiVHlwZSB9IGZyb20gJy4vcGl2b3QtdGFiLXR5cGUnO1xyXG5pbXBvcnQgeyBTTUVfUElWT1RfVEFCX0NPTlRBSU5FUl9QUk9WSURFUiB9IGZyb20gJy4vcGl2b3QtdGFiLmNvbnRhaW5lcic7XHJcblxyXG4vKipcclxuICogRGVmaW5lcyBhIHRhYiBmb3IgQHNlZSBQaXZvdENvbXBvbmVudFxyXG4gKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcGl2b3QtdGFiJyxcclxuICAgIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFBpdm90VGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFNNRV9QSVZPVF9UQUJfQ09OVEFJTkVSX1BST1ZJREVSKSBwcml2YXRlIHBpdm90Q29udGFpbmVyKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGUgdHlwZSBvZiB0aGlzIHRhYlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHR5cGUoKTogUGl2b3RUYWJUeXBlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50VGVtcGxhdGUgPyBQaXZvdFRhYlR5cGUuU3RhdGljIDogUGl2b3RUYWJUeXBlLlJvdXRlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSByb3V0ZSBvZiB0aGlzIHRhYlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHJvdXRlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2UgdGhlIHNhbWUgaW5wdXQgb3B0aW9ucyBhcyBhbmd1bGFyIEBzZWUgUm91dGVyTGlua0FjdGl2ZSBEaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByb3V0ZXJMaW5rQWN0aXZlT3B0aW9uczogeyBleGFjdDogYm9vbGVhbiB9ID0geyBleGFjdDogZmFsc2UgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsYWJlbCBvZiB0aGlzIHRhYi5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNsYXNzIGZvciB0aGUgaWNvbiB0byBzaG93IGZvciB0aGlzIHRhYlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGljb25DbGFzczogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoaXMgdGFiIGlzIGRpc2FibGVkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgd2Ugc2hvdWxkIHNob3cgdGhlIGVycm9yIHN0YXR1cyBpY29uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd0Vycm9yU3RhdHVzSWNvbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNvbnRlbnQgdGVtcGxhdGUgcmVmIG9mIHRoZSB0YWIuXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXHJcbiAgICBwdWJsaWMgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogIFRoaXMgaXMgYSBwcm9wZXJ0eSB0aGF0IHN0b3JlcyB0aGUgbWVhc3VyZWQgd2lkdGggb2YgYSBwaXZvdCB0YWIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3aWR0aDogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgYSB0YWIgaXMgdmlzaWJsZSBvciBpbiB0aGUgdGFiIHRyYXkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMubGFiZWwpIHtcclxuICAgICAgICAgICAgdGhpcy55aWVsZE1lYXN1cmVUYWIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZWFzdXJlcyB0aGUgbGVuZ3RoIG9mIHRoZSBwaXZvdCB0YWIgYW5kIGFzc2lnbnMgdGhpcyB2YWx1ZSB0byB0aGUgd2lkdGggYXR0cmlidXRlXHJcbiAgICAgKi9cclxuICAgIEBZaWVsZCgpXHJcbiAgICBwcml2YXRlIHlpZWxkTWVhc3VyZVRhYigpIHtcclxuICAgICAgICBjb25zdCBob3N0ID0gPEhUTUxFbGVtZW50PnRoaXMucGl2b3RDb250YWluZXIuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBtZWFzdXJlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgICAgIC8vIHBvc2l0aW9uIGVsZW1lbnQgb2ZmIHNjcmVlblxyXG4gICAgICAgIG1lYXN1cmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJztcclxuICAgICAgICAvLyBtZWFzdXJlRWxlbWVudC5zdHlsZS53aWR0aCA9ICdhdXRvJztcclxuICAgICAgICBtZWFzdXJlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgbWVhc3VyZUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgICAgIG1lYXN1cmVFbGVtZW50LnN0eWxlLnJpZ2h0ID0gJy0xMDAwMHB4JztcclxuICAgICAgICBtZWFzdXJlRWxlbWVudC5zdHlsZS5ib3R0b20gPSAnLTEwMDAwcHgnO1xyXG4gICAgICAgIG1lYXN1cmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMubGFiZWw7XHJcbiAgICAgICAgY29uc3QgaG9zdFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShob3N0KTtcclxuXHJcbiAgICAgICAgbWVhc3VyZUVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9IGhvc3RTdHlsZS5mb250RmFtaWx5O1xyXG4gICAgICAgIG1lYXN1cmVFbGVtZW50LnN0eWxlLmZvbnRWYXJpYW50ID0gaG9zdFN0eWxlLmZvbnRWYXJpYW50O1xyXG4gICAgICAgIG1lYXN1cmVFbGVtZW50LnN0eWxlLmZvbnRTaXplID0gaG9zdFN0eWxlLmZvbnRTaXplO1xyXG4gICAgICAgIG1lYXN1cmVFbGVtZW50LnN0eWxlLmZvbnRTdHlsZSA9IGhvc3RTdHlsZS5mb250U3R5bGU7XHJcbiAgICAgICAgbWVhc3VyZUVsZW1lbnQuc3R5bGUuZm9udFdlaWdodCA9IGhvc3RTdHlsZS5mb250V2VpZ2h0O1xyXG4gICAgICAgIG1lYXN1cmVFbGVtZW50LnN0eWxlLmxpbmVIZWlnaHQgPSBob3N0U3R5bGUubGluZUhlaWdodDtcclxuICAgICAgICBtZWFzdXJlRWxlbWVudC5zdHlsZS5sZXR0ZXJTcGFjaW5nID0gaG9zdFN0eWxlLmxldHRlclNwYWNpbmc7XHJcbiAgICAgICAgbWVhc3VyZUVsZW1lbnQuc3R5bGUucGFkZGluZyA9IGhvc3RTdHlsZS5wYWRkaW5nO1xyXG5cclxuICAgICAgICAvLyBhcHBlbmQgdGhlIG1lYXN1cmVFbGVtZW50IHRvIHRoZSBkb21cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChtZWFzdXJlRWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgbWVhc3VyZVdpZHRoID0gbWVhc3VyZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IG1lYXN1cmVXaWR0aDtcclxuXHJcbiAgICAgICAgLy8gUmVtZW1iZXIgdG8gcmVtb3ZlIGVsZW1lbnQgZnJvbSB0aGUgRE9NXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChtZWFzdXJlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==