@trudb/tru-common-lib 0.0.522 → 0.0.524
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/esm2020/lib/directives/select-panel/tru-mat-select-panel.mjs +15 -1
- package/fesm2015/trudb-tru-common-lib.mjs +14 -0
- package/fesm2015/trudb-tru-common-lib.mjs.map +1 -1
- package/fesm2020/trudb-tru-common-lib.mjs +14 -0
- package/fesm2020/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/directives/select-panel/tru-mat-select-panel.d.ts +1 -0
- package/package.json +1 -1
|
@@ -12,6 +12,12 @@ export class TruMatSelectPanel {
|
|
|
12
12
|
if (this.documentMouseUpEventFn)
|
|
13
13
|
this.documentMouseUpEventFn();
|
|
14
14
|
};
|
|
15
|
+
this.getTextWidth = (element, text) => {
|
|
16
|
+
const canvas = document.createElement('canvas');
|
|
17
|
+
const context = canvas.getContext('2d');
|
|
18
|
+
context.font = getComputedStyle(element).font;
|
|
19
|
+
return context.measureText(text).width;
|
|
20
|
+
};
|
|
15
21
|
}
|
|
16
22
|
ngOnInit() {
|
|
17
23
|
this.select.openedChange.subscribe(isOpen => {
|
|
@@ -23,6 +29,14 @@ export class TruMatSelectPanel {
|
|
|
23
29
|
panelParentElement.style.width = 'auto';
|
|
24
30
|
panelOverlayContainerElement.style.position = 'static';
|
|
25
31
|
panelOverlayBackdropElement.style.display = 'none';
|
|
32
|
+
let optionSpans = panelElement.querySelectorAll('span');
|
|
33
|
+
let maxWidth = 0;
|
|
34
|
+
optionSpans.forEach((optionSpan) => {
|
|
35
|
+
let currentWidth = this.getTextWidth(optionSpan, optionSpan.innerText);
|
|
36
|
+
if (currentWidth > maxWidth)
|
|
37
|
+
maxWidth = currentWidth;
|
|
38
|
+
});
|
|
39
|
+
panelParentElement.style.minWidth = (maxWidth + 60) + 'px';
|
|
26
40
|
this.documentMouseUpEventFn = this.renderer.listen(document, 'mouseup', (event) => {
|
|
27
41
|
if (event.target !== this.select.panel.nativeElement && event.button !== 2) {
|
|
28
42
|
this.removeListeners();
|
|
@@ -49,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
49
63
|
selector: '[tru-mat-select-panel]'
|
|
50
64
|
}]
|
|
51
65
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.MatSelect }, { type: i2.TruUtil }]; } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LW1hdC1zZWxlY3QtcGFuZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2RpcmVjdGl2ZXMvc2VsZWN0LXBhbmVsL3RydS1tYXQtc2VsZWN0LXBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7O0FBUTdELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFDVSxRQUFtQixFQUNuQixNQUFpQixFQUNqQixJQUFhO1FBRmIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQVM7UUFFdkIsMkJBQXNCLEdBQWUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZDLG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLHNCQUFzQjtnQkFDN0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFBO1FBRU8saUJBQVksR0FBRyxDQUFDLE9BQW9CLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDNUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBNkIsQ0FBQztZQUVwRSxPQUFPLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztZQUU5QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pDLENBQUMsQ0FBQTtJQWhCMEIsQ0FBQztJQWtCNUIsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBQ25ELElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztnQkFDcEUsSUFBSSw0QkFBNEIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO2dCQUNoSCxJQUFJLDJCQUEyQixHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0Usa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ3hDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUN2RCwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFFbkQsSUFBSSxXQUFXLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUF1QixFQUFFLEVBQUU7b0JBQzlDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDdkUsSUFBSSxZQUFZLEdBQUcsUUFBUTt3QkFDekIsUUFBUSxHQUFHLFlBQVksQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBRTNELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO29CQUM1RixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUMxRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7NEJBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDdEIsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFDSTtnQkFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7OzhHQTdEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHsgZm9yRWFjaCwgbWF4IH0gZnJvbSBcInVuZGVyc2NvcmVcIjtcclxuaW1wb3J0IHsgVHJ1VXRpbCB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cnUtdXRpbFwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbdHJ1LW1hdC1zZWxlY3QtcGFuZWxdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1TWF0U2VsZWN0UGFuZWwgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgc2VsZWN0OiBNYXRTZWxlY3QsXHJcbiAgICBwcml2YXRlIHV0aWw6IFRydVV0aWwpIHsgfVxyXG5cclxuICBkb2N1bWVudE1vdXNlVXBFdmVudEZuOiAoKSA9PiB2b2lkID0gKCkgPT4geyB9O1xyXG5cclxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycyA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmRvY3VtZW50TW91c2VVcEV2ZW50Rm4pXHJcbiAgICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwRXZlbnRGbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUZXh0V2lkdGggPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIHRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykgYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xyXG5cclxuICAgIGNvbnRleHQuZm9udCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZm9udDtcclxuXHJcbiAgICByZXR1cm4gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWxlY3Qub3BlbmVkQ2hhbmdlLnN1YnNjcmliZShpc09wZW4gPT4ge1xyXG4gICAgICBpZiAoaXNPcGVuKSB7XHJcbiAgICAgICAgbGV0IHBhbmVsRWxlbWVudCA9IHRoaXMuc2VsZWN0LnBhbmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgbGV0IHBhbmVsUGFyZW50RWxlbWVudCA9IHRoaXMuc2VsZWN0LnBhbmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZTtcclxuICAgICAgICBsZXQgcGFuZWxPdmVybGF5Q29udGFpbmVyRWxlbWVudCA9IHRoaXMudXRpbC5maW5kQ2xvc2VzdEFuY2VzdG9yQnlDbGFzcyhwYW5lbEVsZW1lbnQsICcuY2RrLW92ZXJsYXktY29udGFpbmVyJyk7XHJcbiAgICAgICAgbGV0IHBhbmVsT3ZlcmxheUJhY2tkcm9wRWxlbWVudCA9IHBhbmVsT3ZlcmxheUNvbnRhaW5lckVsZW1lbnQuY2hpbGROb2Rlc1swXTtcclxuICAgICAgICBwYW5lbFBhcmVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAnYXV0byc7XHJcbiAgICAgICAgcGFuZWxPdmVybGF5Q29udGFpbmVyRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdzdGF0aWMnO1xyXG4gICAgICAgIHBhbmVsT3ZlcmxheUJhY2tkcm9wRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cclxuICAgICAgICBsZXQgb3B0aW9uU3BhbnMgPSBwYW5lbEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpO1xyXG4gICAgICAgIGxldCBtYXhXaWR0aCA9IDA7XHJcbiAgICAgICAgb3B0aW9uU3BhbnMuZm9yRWFjaCgob3B0aW9uU3BhbjogSFRNTEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgIGxldCBjdXJyZW50V2lkdGggPSB0aGlzLmdldFRleHRXaWR0aChvcHRpb25TcGFuLCBvcHRpb25TcGFuLmlubmVyVGV4dCk7XHJcbiAgICAgICAgICBpZiAoY3VycmVudFdpZHRoID4gbWF4V2lkdGgpXHJcbiAgICAgICAgICAgIG1heFdpZHRoID0gY3VycmVudFdpZHRoO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBwYW5lbFBhcmVudEVsZW1lbnQuc3R5bGUubWluV2lkdGggPSAobWF4V2lkdGggKyA2MCkgKyAncHgnO1xyXG5cclxuICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VVcEV2ZW50Rm4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbihkb2N1bWVudCwgJ21vdXNldXAnLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuc2VsZWN0LnBhbmVsLm5hdGl2ZUVsZW1lbnQgJiYgZXZlbnQuYnV0dG9uICE9PSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0LmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -2546,6 +2546,12 @@ class TruMatSelectPanel {
|
|
|
2546
2546
|
if (this.documentMouseUpEventFn)
|
|
2547
2547
|
this.documentMouseUpEventFn();
|
|
2548
2548
|
};
|
|
2549
|
+
this.getTextWidth = (element, text) => {
|
|
2550
|
+
const canvas = document.createElement('canvas');
|
|
2551
|
+
const context = canvas.getContext('2d');
|
|
2552
|
+
context.font = getComputedStyle(element).font;
|
|
2553
|
+
return context.measureText(text).width;
|
|
2554
|
+
};
|
|
2549
2555
|
}
|
|
2550
2556
|
ngOnInit() {
|
|
2551
2557
|
this.select.openedChange.subscribe(isOpen => {
|
|
@@ -2557,6 +2563,14 @@ class TruMatSelectPanel {
|
|
|
2557
2563
|
panelParentElement.style.width = 'auto';
|
|
2558
2564
|
panelOverlayContainerElement.style.position = 'static';
|
|
2559
2565
|
panelOverlayBackdropElement.style.display = 'none';
|
|
2566
|
+
let optionSpans = panelElement.querySelectorAll('span');
|
|
2567
|
+
let maxWidth = 0;
|
|
2568
|
+
optionSpans.forEach((optionSpan) => {
|
|
2569
|
+
let currentWidth = this.getTextWidth(optionSpan, optionSpan.innerText);
|
|
2570
|
+
if (currentWidth > maxWidth)
|
|
2571
|
+
maxWidth = currentWidth;
|
|
2572
|
+
});
|
|
2573
|
+
panelParentElement.style.minWidth = (maxWidth + 60) + 'px';
|
|
2560
2574
|
this.documentMouseUpEventFn = this.renderer.listen(document, 'mouseup', (event) => {
|
|
2561
2575
|
if (event.target !== this.select.panel.nativeElement && event.button !== 2) {
|
|
2562
2576
|
this.removeListeners();
|