@edm-sdui/sdui 1.0.25 → 1.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/uicomponent/profile-button/profile-button.component.mjs +59 -3
- package/fesm2022/edm-sdui-sdui.mjs +58 -2
- package/fesm2022/edm-sdui-sdui.mjs.map +1 -1
- package/lib/components/uicomponent/profile-button/profile-button.component.d.ts +1 -0
- package/lib/components/uicomponent/profile-button/profile-button.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -19,6 +19,8 @@ export class ProfileButtonComponent {
|
|
|
19
19
|
ngAfterViewInit() {
|
|
20
20
|
if (this.uiComponent.element) {
|
|
21
21
|
this.applyElement(this.uiComponent.element);
|
|
22
|
+
// esperar o layout para medir o texto já com estilos aplicados
|
|
23
|
+
setTimeout(() => this.fitLabelToTwoLines(), 0);
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
applyElement(element) {
|
|
@@ -34,15 +36,69 @@ export class ProfileButtonComponent {
|
|
|
34
36
|
this.renderer.setStyle(this.profileButtonLabelElementRef.nativeElement, 'font-size', this.fontSizeMappingService.getMapping()[UITextStyle.CAPTION_2]);
|
|
35
37
|
this.renderer.setStyle(this.profileButtonLabelElementRef.nativeElement, 'color', colorMapping[UIColor.MAIN1]);
|
|
36
38
|
}
|
|
39
|
+
fitLabelToTwoLines(maxLines = 2, minFontSizePx = 10) {
|
|
40
|
+
if (typeof window === 'undefined') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const labelElement = this.profileButtonLabelElementRef?.nativeElement;
|
|
44
|
+
if (!labelElement) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const computedStyles = window.getComputedStyle(labelElement);
|
|
48
|
+
let fontSize = parseFloat(computedStyles.fontSize);
|
|
49
|
+
if (!Number.isFinite(fontSize)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const lineHeight = computedStyles.lineHeight === 'normal'
|
|
53
|
+
? fontSize * 1.2
|
|
54
|
+
: parseFloat(computedStyles.lineHeight);
|
|
55
|
+
if (!Number.isFinite(lineHeight) || lineHeight <= 0) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const lineHeightRatio = lineHeight / fontSize;
|
|
59
|
+
const applyMetrics = () => {
|
|
60
|
+
const currentLineHeight = lineHeightRatio * fontSize;
|
|
61
|
+
const allowedHeight = currentLineHeight * maxLines;
|
|
62
|
+
this.renderer.setStyle(labelElement, 'line-height', `${currentLineHeight}px`);
|
|
63
|
+
this.renderer.setStyle(labelElement, 'max-height', `${allowedHeight}px`);
|
|
64
|
+
return allowedHeight;
|
|
65
|
+
};
|
|
66
|
+
const fits = (allowedHeight) => {
|
|
67
|
+
const EPSILON = 0.5;
|
|
68
|
+
const availableWidth = labelElement.clientWidth;
|
|
69
|
+
if (availableWidth <= 0) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return (labelElement.scrollHeight <= allowedHeight + EPSILON &&
|
|
73
|
+
labelElement.scrollWidth <= availableWidth + EPSILON);
|
|
74
|
+
};
|
|
75
|
+
this.renderer.removeClass(labelElement, 'truncate');
|
|
76
|
+
this.renderer.removeStyle(labelElement, 'height');
|
|
77
|
+
let allowedHeight = applyMetrics();
|
|
78
|
+
let contentFits = fits(allowedHeight);
|
|
79
|
+
while (!contentFits && fontSize > minFontSizePx) {
|
|
80
|
+
fontSize -= 1;
|
|
81
|
+
this.renderer.setStyle(labelElement, 'font-size', `${fontSize}px`);
|
|
82
|
+
allowedHeight = applyMetrics();
|
|
83
|
+
contentFits = fits(allowedHeight);
|
|
84
|
+
}
|
|
85
|
+
if (!contentFits) {
|
|
86
|
+
this.renderer.addClass(labelElement, 'truncate');
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.renderer.removeClass(labelElement, 'truncate');
|
|
90
|
+
this.renderer.removeStyle(labelElement, 'max-height');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
37
93
|
getAssetPath(asset) {
|
|
38
94
|
return assetMapping[asset];
|
|
39
95
|
}
|
|
40
96
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProfileButtonComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i1.FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ProfileButtonComponent, isStandalone: false, selector: "edm-sdui-profile-button", viewQueries: [{ propertyName: "profileButtonElementRef", first: true, predicate: ["profileButtonElement"], descendants: true }, { propertyName: "profileButtonLabelElementRef", first: true, predicate: ["profileButtonLabelElement"], descendants: true }, { propertyName: "profileButtonImageElementRef", first: true, predicate: ["profileButtonImageElement"], descendants: true }], ngImport: i0, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{white-space:normal;word-break:
|
|
97
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ProfileButtonComponent, isStandalone: false, selector: "edm-sdui-profile-button", viewQueries: [{ propertyName: "profileButtonElementRef", first: true, predicate: ["profileButtonElement"], descendants: true }, { propertyName: "profileButtonLabelElementRef", first: true, predicate: ["profileButtonLabelElement"], descendants: true }, { propertyName: "profileButtonImageElementRef", first: true, predicate: ["profileButtonImageElement"], descendants: true }], ngImport: i0, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{max-width:100%;white-space:normal;word-break:keep-all;overflow-wrap:normal;text-align:left;overflow:hidden;display:block}.profile-button .profile-label.truncate{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
|
|
42
98
|
}
|
|
43
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProfileButtonComponent, decorators: [{
|
|
44
100
|
type: Component,
|
|
45
|
-
args: [{ selector: 'edm-sdui-profile-button', standalone: false, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{white-space:normal;word-break:
|
|
101
|
+
args: [{ selector: 'edm-sdui-profile-button', standalone: false, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{max-width:100%;white-space:normal;word-break:keep-all;overflow-wrap:normal;text-align:left;overflow:hidden;display:block}.profile-button .profile-label.truncate{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;text-overflow:ellipsis}\n"] }]
|
|
46
102
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
47
103
|
type: Inject,
|
|
48
104
|
args: ['uiComponent']
|
|
@@ -56,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
56
112
|
type: ViewChild,
|
|
57
113
|
args: ['profileButtonImageElement']
|
|
58
114
|
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9wcm9maWxlLWJ1dHRvbi9wcm9maWxlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3Byb2ZpbGUtYnV0dG9uL3Byb2ZpbGUtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7QUFROUQsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixzQkFBOEM7UUFGeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO0lBQ3JELENBQUM7SUFFSixRQUFRO0lBQ1IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQWtCO1FBQ3JDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQzFDLE9BQU8sRUFDUCxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxRSxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQzFDLFdBQVcsRUFDWCxRQUFRLENBQ1QsQ0FBQztRQUNKLENBQUM7UUFHRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsRUFDL0MsV0FBVyxFQUNYLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUNsRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsRUFDL0MsT0FBTyxFQUNQLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUVoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWM7UUFDekIsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0F0RFUsc0JBQXNCLGtCQU12QixhQUFhO21HQU5aLHNCQUFzQiw2Y0N4Qm5DLHVZQUlBOzs0RkRvQmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLHlCQUF5QixjQUd2QixLQUFLOzswQkFRZCxNQUFNOzJCQUFDLGFBQWE7c0dBTFksdUJBQXVCO3NCQUF6RCxTQUFTO3VCQUFDLHNCQUFzQjtnQkFDTyw0QkFBNEI7c0JBQW5FLFNBQVM7dUJBQUMsMkJBQTJCO2dCQUNFLDRCQUE0QjtzQkFBbkUsU0FBUzt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWljb21wb25lbnQnO1xuaW1wb3J0IHsgVUlFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWVsZW1lbnQnO1xuaW1wb3J0IHsgY29sb3JNYXBwaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvY29sb3ItbWFwcGluZyc7XG5pbXBvcnQgeyBGb250U2l6ZU1hcHBpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9mb250LXNpemUtbWFwcGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IGFzc2V0TWFwcGluZyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2Fzc2V0LW1hcHBpbmcnO1xuaW1wb3J0IHsgVUlBc3NldCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWFzc2V0JztcbmltcG9ydCB7IFVJVGV4dFN0eWxlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL2VudW1zL3VpdGV4dC1zdHlsZSc7XG5pbXBvcnQgeyBVSUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL2VudW1zL3VpY29sb3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlZG0tc2R1aS1wcm9maWxlLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9maWxlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9maWxlLWJ1dHRvbi5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgncHJvZmlsZUJ1dHRvbkVsZW1lbnQnKSBwcm9maWxlQnV0dG9uRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdwcm9maWxlQnV0dG9uTGFiZWxFbGVtZW50JykgcHJvZmlsZUJ1dHRvbkxhYmVsRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdwcm9maWxlQnV0dG9uSW1hZ2VFbGVtZW50JykgcHJvZmlsZUJ1dHRvbkltYWdlRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ3VpQ29tcG9uZW50JykgcHVibGljIHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBmb250U2l6ZU1hcHBpbmdTZXJ2aWNlOiBGb250U2l6ZU1hcHBpbmdTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KSB7XG4gICAgICB0aGlzLmFwcGx5RWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LnRleHRDb2xvcikge1xuICAgICAgY29uc3QgY29sb3IgPSBjb2xvck1hcHBpbmdbZWxlbWVudC50ZXh0Q29sb3JdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5wcm9maWxlQnV0dG9uRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnY29sb3InLFxuICAgICAgICBjb2xvclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC50ZXh0U3R5bGUpIHtcbiAgICAgIGNvbnN0IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZSA9IHRoaXMuZm9udFNpemVNYXBwaW5nU2VydmljZS5nZXRNYXBwaW5nKCk7XG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZVtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnByb2ZpbGVCdXR0b25FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdmb250LXNpemUnLFxuICAgICAgICBmb250U2l6ZVxuICAgICAgKTtcbiAgICB9XG5cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLnByb2ZpbGVCdXR0b25MYWJlbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdmb250LXNpemUnLFxuICAgICAgdGhpcy5mb250U2l6ZU1hcHBpbmdTZXJ2aWNlLmdldE1hcHBpbmcoKVtVSVRleHRTdHlsZS5DQVBUSU9OXzJdKVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLnByb2ZpbGVCdXR0b25MYWJlbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdjb2xvcicsXG4gICAgICBjb2xvck1hcHBpbmdbVUlDb2xvci5NQUlOMV0pXG5cbiAgfVxuXG4gIGdldEFzc2V0UGF0aChhc3NldDogVUlBc3NldCkge1xuICAgIHJldHVybiBhc3NldE1hcHBpbmdbYXNzZXRdO1xuICB9XG59XG4iLCI8YnV0dG9uICNwcm9maWxlQnV0dG9uRWxlbWVudCBbZWRtU2R1aVZpZXddPVwidWlDb21wb25lbnQuZWxlbWVudFwiIGNsYXNzPVwicHJvZmlsZS1idXR0b25cIiAqbmdJZj1cInVpQ29tcG9uZW50XCI+XG4gIDxpbWcgI3Byb2ZpbGVCdXR0b25JbWFnZUVsZW1lbnQgKm5nSWY9XCJ1aUNvbXBvbmVudC5lbGVtZW50LmFzc2V0XCIgW3NyY109XCJnZXRBc3NldFBhdGgodWlDb21wb25lbnQuZWxlbWVudC5hc3NldClcIiBhbHQ9XCJQcm9maWxlXCIgY2xhc3M9XCJwcm9maWxlLWltYWdlXCI+XG4gIDxzcGFuICNwcm9maWxlQnV0dG9uTGFiZWxFbGVtZW50IGNsYXNzPVwicHJvZmlsZS1sYWJlbFwiPnt7IHVpQ29tcG9uZW50LmVsZW1lbnQubGFiZWwgfX08L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9wcm9maWxlLWJ1dHRvbi9wcm9maWxlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3Byb2ZpbGUtYnV0dG9uL3Byb2ZpbGUtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7QUFROUQsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixzQkFBOEM7UUFGeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO0lBQ3JELENBQUM7SUFFSixRQUFRO0lBQ1IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FB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Q0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYztRQUN6QixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQS9IVSxzQkFBc0Isa0JBTXZCLGFBQWE7bUdBTlosc0JBQXNCLDZjQ3hCbkMsdVlBSUE7OzRGRG9CYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UseUJBQXlCLGNBR3ZCLEtBQUs7OzBCQVFkLE1BQU07MkJBQUMsYUFBYTtzR0FMWSx1QkFBdUI7c0JBQXpELFNBQVM7dUJBQUMsc0JBQXNCO2dCQUNPLDRCQUE0QjtzQkFBbkUsU0FBUzt1QkFBQywyQkFBMkI7Z0JBQ0UsNEJBQTRCO3NCQUFuRSxTQUFTO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVSUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3VpZWxlbWVudCc7XG5pbXBvcnQgeyBjb2xvck1hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9jb2xvci1tYXBwaW5nJztcbmltcG9ydCB7IEZvbnRTaXplTWFwcGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2ZvbnQtc2l6ZS1tYXBwaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgYXNzZXRNYXBwaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvYXNzZXQtbWFwcGluZyc7XG5pbXBvcnQgeyBVSUFzc2V0IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL2VudW1zL3VpYXNzZXQnO1xuaW1wb3J0IHsgVUlUZXh0U3R5bGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvZW51bXMvdWl0ZXh0LXN0eWxlJztcbmltcG9ydCB7IFVJQ29sb3IgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvZW51bXMvdWljb2xvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VkbS1zZHVpLXByb2ZpbGUtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGUtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2ZpbGUtYnV0dG9uLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdwcm9maWxlQnV0dG9uRWxlbWVudCcpIHByb2ZpbGVCdXR0b25FbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3Byb2ZpbGVCdXR0b25MYWJlbEVsZW1lbnQnKSBwcm9maWxlQnV0dG9uTGFiZWxFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3Byb2ZpbGVCdXR0b25JbWFnZUVsZW1lbnQnKSBwcm9maWxlQnV0dG9uSW1hZ2VFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgndWlDb21wb25lbnQnKSBwdWJsaWMgdWlDb21wb25lbnQ6IFVJQ29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGZvbnRTaXplTWFwcGluZ1NlcnZpY2U6IEZvbnRTaXplTWFwcGluZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50KHRoaXMudWlDb21wb25lbnQuZWxlbWVudCk7XG4gICAgICAvLyBlc3BlcmFyIG8gbGF5b3V0IHBhcmEgbWVkaXIgbyB0ZXh0byBqw6EgY29tIGVzdGlsb3MgYXBsaWNhZG9zXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZml0TGFiZWxUb1R3b0xpbmVzKCksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LnRleHRDb2xvcikge1xuICAgICAgY29uc3QgY29sb3IgPSBjb2xvck1hcHBpbmdbZWxlbWVudC50ZXh0Q29sb3JdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5wcm9maWxlQnV0dG9uRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnY29sb3InLFxuICAgICAgICBjb2xvclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC50ZXh0U3R5bGUpIHtcbiAgICAgIGNvbnN0IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZSA9IHRoaXMuZm9udFNpemVNYXBwaW5nU2VydmljZS5nZXRNYXBwaW5nKCk7XG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZVtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnByb2ZpbGVCdXR0b25FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdmb250LXNpemUnLFxuICAgICAgICBmb250U2l6ZVxuICAgICAgKTtcbiAgICB9XG5cblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLnByb2ZpbGVCdXR0b25MYWJlbEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICdmb250LXNpemUnLFxuICAgICAgdGhpcy5mb250U2l6ZU1hcHBpbmdTZXJ2aWNlLmdldE1hcHBpbmcoKVtVSVRleHRTdHlsZS5DQVBUSU9OXzJdXG4gICAgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5wcm9maWxlQnV0dG9uTGFiZWxFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnY29sb3InLFxuICAgICAgY29sb3JNYXBwaW5nW1VJQ29sb3IuTUFJTjFdXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZml0TGFiZWxUb1R3b0xpbmVzKG1heExpbmVzID0gMiwgbWluRm9udFNpemVQeCA9IDEwKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGFiZWxFbGVtZW50ID0gdGhpcy5wcm9maWxlQnV0dG9uTGFiZWxFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghbGFiZWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShsYWJlbEVsZW1lbnQpO1xuICAgIGxldCBmb250U2l6ZSA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZXMuZm9udFNpemUpO1xuXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZm9udFNpemUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGluZUhlaWdodCA9IGNvbXB1dGVkU3R5bGVzLmxpbmVIZWlnaHQgPT09ICdub3JtYWwnXG4gICAgICA/IGZvbnRTaXplICogMS4yXG4gICAgICA6IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZXMubGluZUhlaWdodCk7XG5cbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShsaW5lSGVpZ2h0KSB8fCBsaW5lSGVpZ2h0IDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lSGVpZ2h0UmF0aW8gPSBsaW5lSGVpZ2h0IC8gZm9udFNpemU7XG5cbiAgICBjb25zdCBhcHBseU1ldHJpY3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50TGluZUhlaWdodCA9IGxpbmVIZWlnaHRSYXRpbyAqIGZvbnRTaXplO1xuICAgICAgY29uc3QgYWxsb3dlZEhlaWdodCA9IGN1cnJlbnRMaW5lSGVpZ2h0ICogbWF4TGluZXM7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGxhYmVsRWxlbWVudCwgJ2xpbmUtaGVpZ2h0JywgYCR7Y3VycmVudExpbmVIZWlnaHR9cHhgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobGFiZWxFbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke2FsbG93ZWRIZWlnaHR9cHhgKTtcbiAgICAgIHJldHVybiBhbGxvd2VkSGVpZ2h0O1xuICAgIH07XG5cbiAgICBjb25zdCBmaXRzID0gKGFsbG93ZWRIZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgRVBTSUxPTiA9IDAuNTtcbiAgICAgIGNvbnN0IGF2YWlsYWJsZVdpZHRoID0gbGFiZWxFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICBpZiAoYXZhaWxhYmxlV2lkdGggPD0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgbGFiZWxFbGVtZW50LnNjcm9sbEhlaWdodCA8PSBhbGxvd2VkSGVpZ2h0ICsgRVBTSUxPTiAmJlxuICAgICAgICBsYWJlbEVsZW1lbnQuc2Nyb2xsV2lkdGggPD0gYXZhaWxhYmxlV2lkdGggKyBFUFNJTE9OXG4gICAgICApO1xuICAgIH07XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGxhYmVsRWxlbWVudCwgJ3RydW5jYXRlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShsYWJlbEVsZW1lbnQsICdoZWlnaHQnKTtcblxuICAgIGxldCBhbGxvd2VkSGVpZ2h0ID0gYXBwbHlNZXRyaWNzKCk7XG4gICAgbGV0IGNvbnRlbnRGaXRzID0gZml0cyhhbGxvd2VkSGVpZ2h0KTtcblxuICAgIHdoaWxlICghY29udGVudEZpdHMgJiYgZm9udFNpemUgPiBtaW5Gb250U2l6ZVB4KSB7XG4gICAgICBmb250U2l6ZSAtPSAxO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShsYWJlbEVsZW1lbnQsICdmb250LXNpemUnLCBgJHtmb250U2l6ZX1weGApO1xuICAgICAgYWxsb3dlZEhlaWdodCA9IGFwcGx5TWV0cmljcygpO1xuICAgICAgY29udGVudEZpdHMgPSBmaXRzKGFsbG93ZWRIZWlnaHQpO1xuICAgIH1cblxuICAgIGlmICghY29udGVudEZpdHMpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobGFiZWxFbGVtZW50LCAndHJ1bmNhdGUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhsYWJlbEVsZW1lbnQsICd0cnVuY2F0ZScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShsYWJlbEVsZW1lbnQsICdtYXgtaGVpZ2h0Jyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXNzZXRQYXRoKGFzc2V0OiBVSUFzc2V0KSB7XG4gICAgcmV0dXJuIGFzc2V0TWFwcGluZ1thc3NldF07XG4gIH1cbn1cbiIsIjxidXR0b24gI3Byb2ZpbGVCdXR0b25FbGVtZW50IFtlZG1TZHVpVmlld109XCJ1aUNvbXBvbmVudC5lbGVtZW50XCIgY2xhc3M9XCJwcm9maWxlLWJ1dHRvblwiICpuZ0lmPVwidWlDb21wb25lbnRcIj5cbiAgPGltZyAjcHJvZmlsZUJ1dHRvbkltYWdlRWxlbWVudCAqbmdJZj1cInVpQ29tcG9uZW50LmVsZW1lbnQuYXNzZXRcIiBbc3JjXT1cImdldEFzc2V0UGF0aCh1aUNvbXBvbmVudC5lbGVtZW50LmFzc2V0KVwiIGFsdD1cIlByb2ZpbGVcIiBjbGFzcz1cInByb2ZpbGUtaW1hZ2VcIj5cbiAgPHNwYW4gI3Byb2ZpbGVCdXR0b25MYWJlbEVsZW1lbnQgY2xhc3M9XCJwcm9maWxlLWxhYmVsXCI+e3sgdWlDb21wb25lbnQuZWxlbWVudC5sYWJlbCB9fTwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
|
|
@@ -3147,6 +3147,8 @@ class ProfileButtonComponent {
|
|
|
3147
3147
|
ngAfterViewInit() {
|
|
3148
3148
|
if (this.uiComponent.element) {
|
|
3149
3149
|
this.applyElement(this.uiComponent.element);
|
|
3150
|
+
// esperar o layout para medir o texto já com estilos aplicados
|
|
3151
|
+
setTimeout(() => this.fitLabelToTwoLines(), 0);
|
|
3150
3152
|
}
|
|
3151
3153
|
}
|
|
3152
3154
|
applyElement(element) {
|
|
@@ -3162,15 +3164,69 @@ class ProfileButtonComponent {
|
|
|
3162
3164
|
this.renderer.setStyle(this.profileButtonLabelElementRef.nativeElement, 'font-size', this.fontSizeMappingService.getMapping()[UITextStyle.CAPTION_2]);
|
|
3163
3165
|
this.renderer.setStyle(this.profileButtonLabelElementRef.nativeElement, 'color', colorMapping[UIColor.MAIN1]);
|
|
3164
3166
|
}
|
|
3167
|
+
fitLabelToTwoLines(maxLines = 2, minFontSizePx = 10) {
|
|
3168
|
+
if (typeof window === 'undefined') {
|
|
3169
|
+
return;
|
|
3170
|
+
}
|
|
3171
|
+
const labelElement = this.profileButtonLabelElementRef?.nativeElement;
|
|
3172
|
+
if (!labelElement) {
|
|
3173
|
+
return;
|
|
3174
|
+
}
|
|
3175
|
+
const computedStyles = window.getComputedStyle(labelElement);
|
|
3176
|
+
let fontSize = parseFloat(computedStyles.fontSize);
|
|
3177
|
+
if (!Number.isFinite(fontSize)) {
|
|
3178
|
+
return;
|
|
3179
|
+
}
|
|
3180
|
+
const lineHeight = computedStyles.lineHeight === 'normal'
|
|
3181
|
+
? fontSize * 1.2
|
|
3182
|
+
: parseFloat(computedStyles.lineHeight);
|
|
3183
|
+
if (!Number.isFinite(lineHeight) || lineHeight <= 0) {
|
|
3184
|
+
return;
|
|
3185
|
+
}
|
|
3186
|
+
const lineHeightRatio = lineHeight / fontSize;
|
|
3187
|
+
const applyMetrics = () => {
|
|
3188
|
+
const currentLineHeight = lineHeightRatio * fontSize;
|
|
3189
|
+
const allowedHeight = currentLineHeight * maxLines;
|
|
3190
|
+
this.renderer.setStyle(labelElement, 'line-height', `${currentLineHeight}px`);
|
|
3191
|
+
this.renderer.setStyle(labelElement, 'max-height', `${allowedHeight}px`);
|
|
3192
|
+
return allowedHeight;
|
|
3193
|
+
};
|
|
3194
|
+
const fits = (allowedHeight) => {
|
|
3195
|
+
const EPSILON = 0.5;
|
|
3196
|
+
const availableWidth = labelElement.clientWidth;
|
|
3197
|
+
if (availableWidth <= 0) {
|
|
3198
|
+
return true;
|
|
3199
|
+
}
|
|
3200
|
+
return (labelElement.scrollHeight <= allowedHeight + EPSILON &&
|
|
3201
|
+
labelElement.scrollWidth <= availableWidth + EPSILON);
|
|
3202
|
+
};
|
|
3203
|
+
this.renderer.removeClass(labelElement, 'truncate');
|
|
3204
|
+
this.renderer.removeStyle(labelElement, 'height');
|
|
3205
|
+
let allowedHeight = applyMetrics();
|
|
3206
|
+
let contentFits = fits(allowedHeight);
|
|
3207
|
+
while (!contentFits && fontSize > minFontSizePx) {
|
|
3208
|
+
fontSize -= 1;
|
|
3209
|
+
this.renderer.setStyle(labelElement, 'font-size', `${fontSize}px`);
|
|
3210
|
+
allowedHeight = applyMetrics();
|
|
3211
|
+
contentFits = fits(allowedHeight);
|
|
3212
|
+
}
|
|
3213
|
+
if (!contentFits) {
|
|
3214
|
+
this.renderer.addClass(labelElement, 'truncate');
|
|
3215
|
+
}
|
|
3216
|
+
else {
|
|
3217
|
+
this.renderer.removeClass(labelElement, 'truncate');
|
|
3218
|
+
this.renderer.removeStyle(labelElement, 'max-height');
|
|
3219
|
+
}
|
|
3220
|
+
}
|
|
3165
3221
|
getAssetPath(asset) {
|
|
3166
3222
|
return assetMapping[asset];
|
|
3167
3223
|
}
|
|
3168
3224
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProfileButtonComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3169
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ProfileButtonComponent, isStandalone: false, selector: "edm-sdui-profile-button", viewQueries: [{ propertyName: "profileButtonElementRef", first: true, predicate: ["profileButtonElement"], descendants: true }, { propertyName: "profileButtonLabelElementRef", first: true, predicate: ["profileButtonLabelElement"], descendants: true }, { propertyName: "profileButtonImageElementRef", first: true, predicate: ["profileButtonImageElement"], descendants: true }], ngImport: i0, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{white-space:normal;word-break:
|
|
3225
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ProfileButtonComponent, isStandalone: false, selector: "edm-sdui-profile-button", viewQueries: [{ propertyName: "profileButtonElementRef", first: true, predicate: ["profileButtonElement"], descendants: true }, { propertyName: "profileButtonLabelElementRef", first: true, predicate: ["profileButtonLabelElement"], descendants: true }, { propertyName: "profileButtonImageElementRef", first: true, predicate: ["profileButtonImageElement"], descendants: true }], ngImport: i0, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{max-width:100%;white-space:normal;word-break:keep-all;overflow-wrap:normal;text-align:left;overflow:hidden;display:block}.profile-button .profile-label.truncate{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
|
|
3170
3226
|
}
|
|
3171
3227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProfileButtonComponent, decorators: [{
|
|
3172
3228
|
type: Component,
|
|
3173
|
-
args: [{ selector: 'edm-sdui-profile-button', standalone: false, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{white-space:normal;word-break:
|
|
3229
|
+
args: [{ selector: 'edm-sdui-profile-button', standalone: false, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{max-width:100%;white-space:normal;word-break:keep-all;overflow-wrap:normal;text-align:left;overflow:hidden;display:block}.profile-button .profile-label.truncate{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;text-overflow:ellipsis}\n"] }]
|
|
3174
3230
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
3175
3231
|
type: Inject,
|
|
3176
3232
|
args: ['uiComponent']
|