myrta-ui 17.1.71 → 17.1.72
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/alert/alert.component.mjs +2 -1
- package/esm2022/lib/directives/autosize/autosize.directive.mjs +79 -14
- package/fesm2022/myrta-ui.mjs +79 -13
- package/fesm2022/myrta-ui.mjs.map +1 -1
- package/lib/directives/autosize/autosize.directive.d.ts +15 -5
- package/package.json +1 -1
|
@@ -17,6 +17,7 @@ export class AlertComponent {
|
|
|
17
17
|
return `${AlertIconClasses[this.color]}`;
|
|
18
18
|
}
|
|
19
19
|
onCloseClick() {
|
|
20
|
+
console.log(1);
|
|
20
21
|
this.close.emit(null);
|
|
21
22
|
}
|
|
22
23
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -42,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
42
43
|
}], close: [{
|
|
43
44
|
type: Output
|
|
44
45
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFRaEYsTUFBTSxPQUFPLGNBQWM7SUFDaEIsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixLQUFLLEdBQWdCLFNBQVMsQ0FBQztJQUMvQixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWhCLEtBQUssR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUU1RCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO3dHQXRCVSxjQUFjOzRGQUFkLGNBQWMsc1BDVDNCLDRyQkFtQkE7OzRGRFZhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbGVydENvbG9yQ2xhc3NlcywgQWxlcnRDb2xvcnMsIEFsZXJ0SWNvbkNsYXNzZXMgfSBmcm9tICcuL2FsZXJ0LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtYWxlcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3Nlczogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgY29sb3I6IEFsZXJ0Q29sb3JzID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNvbG9yOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBtZXNzYWdlID0gJyc7XHJcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcclxuICBASW5wdXQoKSBjbG9zYWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJY29uID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPHVua25vd24+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKSB7XHJcbiAgICByZXR1cm4gYCR7QWxlcnRDb2xvckNsYXNzZXNbdGhpcy5jb2xvcl0gPz8gJyd9ICR7dGhpcy5jdXN0b21DbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEljb25DbGFzcygpIHtcclxuICAgIHJldHVybiBgJHtBbGVydEljb25DbGFzc2VzW3RoaXMuY29sb3JdfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coMSlcclxuICAgIHRoaXMuY2xvc2UuZW1pdChudWxsKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1hbGVydFwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCIgW3N0eWxlXT1cIntiYWNrZ3JvdW5kQ29sb3I6IGN1c3RvbUNvbG9yfVwiPlxyXG4gIEBpZiAoY2xvc2FibGUpIHtcclxuICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMTZcIiAoY2xpY2spPVwib25DbG9zZUNsaWNrKClcIj48L3NwYW4+XHJcbiAgfVxyXG5cclxuICBAaWYgKHRpdGxlIHx8IG1lc3NhZ2UgfHwgc2hvd0ljb24pIHtcclxuICAgIDxzcGFuIFtjbGFzc109XCJnZXRJY29uQ2xhc3NcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDFweFwiIGNsYXNzPVwibXJ4LWljb24gaWNvbi1hbGVydCBpY29uLWZvbnQtMTYgbXItMlwiPjwvc3Bhbj5cclxuICB9XHJcblxyXG4gIEBpZiAodGl0bGUpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtcngtYWxlcnQtdGl0bGUgbWItMVwiIFtjbGFzcy5tbC00XT1cImdldEljb25DbGFzc1wiIFtpbm5lckhUTUxdPVwidGl0bGVcIj48L2Rpdj5cclxuICB9XHJcblxyXG4gIEBpZiAobWVzc2FnZSkge1xyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1hbGVydC1tZXNzYWdlXCIgW2NsYXNzLm1sLTRdPVwiZ2V0SWNvbkNsYXNzXCIgW2lubmVySFRNTF09XCJtZXNzYWdlXCI+PC9kaXY+XHJcbiAgfVxyXG5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -3,18 +3,65 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class AutosizeDirective {
|
|
4
4
|
elem;
|
|
5
5
|
renderer;
|
|
6
|
+
ngZone;
|
|
6
7
|
overflow = 'hidden';
|
|
7
8
|
rows = 1;
|
|
8
|
-
autosize
|
|
9
|
-
|
|
9
|
+
set autosize(value) {
|
|
10
|
+
this._autosize = value;
|
|
11
|
+
if (!value) {
|
|
12
|
+
this.overflow = 'auto';
|
|
13
|
+
this.setHeight('auto');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
get autosize() {
|
|
17
|
+
return this._autosize;
|
|
18
|
+
}
|
|
19
|
+
_autosize = true;
|
|
20
|
+
observer = null;
|
|
21
|
+
resizeTimeout;
|
|
22
|
+
lastHeight = 0;
|
|
23
|
+
constructor(elem, renderer, ngZone) {
|
|
10
24
|
this.elem = elem;
|
|
11
25
|
this.renderer = renderer;
|
|
26
|
+
this.ngZone = ngZone;
|
|
12
27
|
}
|
|
13
28
|
ngAfterViewInit() {
|
|
14
|
-
this.
|
|
29
|
+
this.setupAutoResize();
|
|
30
|
+
// Первоначальный расчет
|
|
31
|
+
setTimeout(() => this.resize(), 0);
|
|
15
32
|
}
|
|
16
|
-
|
|
17
|
-
this.
|
|
33
|
+
ngOnDestroy() {
|
|
34
|
+
this.cleanup();
|
|
35
|
+
}
|
|
36
|
+
setupAutoResize() {
|
|
37
|
+
if (!this.autosize)
|
|
38
|
+
return;
|
|
39
|
+
const textarea = this.elem.nativeElement;
|
|
40
|
+
// Используем MutationObserver вместо ngDoCheck
|
|
41
|
+
this.ngZone.runOutsideAngular(() => {
|
|
42
|
+
this.observer = new MutationObserver(() => {
|
|
43
|
+
this.scheduleResize();
|
|
44
|
+
});
|
|
45
|
+
this.observer.observe(textarea, {
|
|
46
|
+
characterData: true,
|
|
47
|
+
childList: true,
|
|
48
|
+
subtree: true
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
// Также следим за resize окна
|
|
52
|
+
this.renderer.listen('window', 'resize', () => this.scheduleResize());
|
|
53
|
+
}
|
|
54
|
+
scheduleResize() {
|
|
55
|
+
if (!this.autosize)
|
|
56
|
+
return;
|
|
57
|
+
// Debounce для оптимизации
|
|
58
|
+
clearTimeout(this.resizeTimeout);
|
|
59
|
+
this.resizeTimeout = setTimeout(() => {
|
|
60
|
+
this.ngZone.run(() => this.resize());
|
|
61
|
+
}, 50); // Задержка 50мс
|
|
62
|
+
}
|
|
63
|
+
onInput() {
|
|
64
|
+
this.scheduleResize();
|
|
18
65
|
}
|
|
19
66
|
resize() {
|
|
20
67
|
if (!this.autosize) {
|
|
@@ -22,25 +69,43 @@ export class AutosizeDirective {
|
|
|
22
69
|
return;
|
|
23
70
|
}
|
|
24
71
|
const textarea = this.elem.nativeElement;
|
|
25
|
-
//
|
|
72
|
+
// Временно отключаем transition для предотвращения скачков
|
|
73
|
+
const originalTransition = textarea.style.transition;
|
|
74
|
+
this.renderer.setStyle(textarea, 'transition', 'none');
|
|
75
|
+
// Рассчитываем новую высоту
|
|
26
76
|
const borderHeight = textarea.offsetHeight - textarea.clientHeight;
|
|
27
|
-
// Reset textarea height to auto that correctly calculate the new height
|
|
28
77
|
this.setHeight('auto');
|
|
29
|
-
|
|
30
|
-
|
|
78
|
+
const scrollHeight = textarea.scrollHeight;
|
|
79
|
+
const newHeight = scrollHeight + borderHeight;
|
|
80
|
+
// Изменяем высоту только если она действительно изменилась
|
|
81
|
+
if (Math.abs(newHeight - this.lastHeight) > 2) { // Порог 2px
|
|
82
|
+
this.setHeight(`${newHeight}px`);
|
|
83
|
+
this.lastHeight = newHeight;
|
|
84
|
+
}
|
|
85
|
+
// Восстанавливаем transition
|
|
86
|
+
setTimeout(() => {
|
|
87
|
+
this.renderer.setStyle(textarea, 'transition', originalTransition);
|
|
88
|
+
}, 0);
|
|
31
89
|
}
|
|
32
90
|
setHeight(value) {
|
|
33
91
|
this.renderer.setStyle(this.elem.nativeElement, 'height', value);
|
|
34
92
|
}
|
|
35
|
-
|
|
36
|
-
|
|
93
|
+
cleanup() {
|
|
94
|
+
if (this.observer) {
|
|
95
|
+
this.observer.disconnect();
|
|
96
|
+
this.observer = null;
|
|
97
|
+
}
|
|
98
|
+
clearTimeout(this.resizeTimeout);
|
|
99
|
+
}
|
|
100
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
101
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AutosizeDirective, selector: "[mrxAutosize]", inputs: { rows: "rows", autosize: "autosize" }, host: { listeners: { "input": "onInput()" }, properties: { "style.overflow": "this.overflow", "rows": "this.rows" } }, ngImport: i0 });
|
|
37
102
|
}
|
|
38
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, decorators: [{
|
|
39
104
|
type: Directive,
|
|
40
105
|
args: [{
|
|
41
106
|
selector: '[mrxAutosize]'
|
|
42
107
|
}]
|
|
43
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { overflow: [{
|
|
108
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { overflow: [{
|
|
44
109
|
type: HostBinding,
|
|
45
110
|
args: ['style.overflow']
|
|
46
111
|
}], rows: [{
|
|
@@ -50,8 +115,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
50
115
|
args: ['rows']
|
|
51
116
|
}], autosize: [{
|
|
52
117
|
type: Input
|
|
53
|
-
}],
|
|
118
|
+
}], onInput: [{
|
|
54
119
|
type: HostListener,
|
|
55
120
|
args: ['input']
|
|
56
121
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9zaXplL2F1dG9zaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUlOLE1BQU0sZUFBZSxDQUFDOztBQUt2QixNQUFNLE9BQU8saUJBQWlCO0lBMEJsQjtJQUNBO0lBQ0E7SUExQkgsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUlwQixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLElBQ1csUUFBUSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNPLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFFakIsUUFBUSxHQUE0QixJQUFJLENBQUM7SUFDekMsYUFBYSxDQUFNO0lBQ25CLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFdkIsWUFDVSxJQUFnQixFQUNoQixRQUFtQixFQUNuQixNQUFjO1FBRmQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVHLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLHdCQUF3QjtRQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBb0MsQ0FBQztRQUVoRSwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUM5QixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILDhCQUE4QjtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFM0IsMkJBQTJCO1FBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtJQUMxQixDQUFDO0lBR08sT0FBTztRQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQW9DLENBQUM7UUFFaEUsMkRBQTJEO1FBQzNELE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV2RCw0QkFBNEI7UUFDNUIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRTlDLDJEQUEyRDtRQUMzRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVk7WUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7d0dBdEhVLGlCQUFpQjs0RkFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjs0SEFHUSxRQUFRO3NCQURkLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUt0QixJQUFJO3NCQUZWLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsTUFBTTtnQkFJUixRQUFRO3NCQURsQixLQUFLO2dCQWtFRSxPQUFPO3NCQURkLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFJlbmRlcmVyMixcclxuICBOZ1pvbmVcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW21yeEF1dG9zaXplXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9zaXplRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm92ZXJmbG93JylcclxuICBwdWJsaWMgb3ZlcmZsb3cgPSAnaGlkZGVuJztcclxuXHJcbiAgQElucHV0KClcclxuICBASG9zdEJpbmRpbmcoJ3Jvd3MnKVxyXG4gIHB1YmxpYyByb3dzID0gMTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGF1dG9zaXplKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9hdXRvc2l6ZSA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICB0aGlzLm92ZXJmbG93ID0gJ2F1dG8nO1xyXG4gICAgICB0aGlzLnNldEhlaWdodCgnYXV0bycpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGF1dG9zaXplKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1dG9zaXplO1xyXG4gIH1cclxuICBwcml2YXRlIF9hdXRvc2l6ZSA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHJlc2l6ZVRpbWVvdXQ6IGFueTtcclxuICBwcml2YXRlIGxhc3RIZWlnaHQgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxlbTogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnNldHVwQXV0b1Jlc2l6ZSgpO1xyXG4gICAgLy8g0J/QtdGA0LLQvtC90LDRh9Cw0LvRjNC90YvQuSDRgNCw0YHRh9C10YJcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNpemUoKSwgMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNsZWFudXAoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBBdXRvUmVzaXplKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dG9zaXplKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmVsZW0ubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgXHJcbiAgICAvLyDQmNGB0L/QvtC70YzQt9GD0LXQvCBNdXRhdGlvbk9ic2VydmVyINCy0LzQtdGB0YLQviBuZ0RvQ2hlY2tcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlUmVzaXplKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRleHRhcmVhLCB7XHJcbiAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcclxuICAgICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgICAgc3VidHJlZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vINCi0LDQutC20LUg0YHQu9C10LTQuNC8INC30LAgcmVzaXplINC+0LrQvdCwXHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHRoaXMuc2NoZWR1bGVSZXNpemUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjaGVkdWxlUmVzaXplKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dG9zaXplKSByZXR1cm47XHJcblxyXG4gICAgLy8gRGVib3VuY2Ug0LTQu9GPINC+0L/RgtC40LzQuNC30LDRhtC40LhcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xyXG4gICAgdGhpcy5yZXNpemVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnJlc2l6ZSgpKTtcclxuICAgIH0sIDUwKTsgLy8g0JfQsNC00LXRgNC20LrQsCA1MNC80YFcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JylcclxuICBwcml2YXRlIG9uSW5wdXQoKSB7XHJcbiAgICB0aGlzLnNjaGVkdWxlUmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIGlmICghdGhpcy5hdXRvc2l6ZSkge1xyXG4gICAgICB0aGlzLm92ZXJmbG93ID0gJ2F1dG8nO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmVsZW0ubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgXHJcbiAgICAvLyDQktGA0LXQvNC10L3QvdC+INC+0YLQutC70Y7Rh9Cw0LXQvCB0cmFuc2l0aW9uINC00LvRjyDQv9GA0LXQtNC+0YLQstGA0LDRidC10L3QuNGPINGB0LrQsNGH0LrQvtCyXHJcbiAgICBjb25zdCBvcmlnaW5hbFRyYW5zaXRpb24gPSB0ZXh0YXJlYS5zdHlsZS50cmFuc2l0aW9uO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0ZXh0YXJlYSwgJ3RyYW5zaXRpb24nLCAnbm9uZScpO1xyXG4gICAgXHJcbiAgICAvLyDQoNCw0YHRgdGH0LjRgtGL0LLQsNC10Lwg0L3QvtCy0YPRjiDQstGL0YHQvtGC0YNcclxuICAgIGNvbnN0IGJvcmRlckhlaWdodCA9IHRleHRhcmVhLm9mZnNldEhlaWdodCAtIHRleHRhcmVhLmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMuc2V0SGVpZ2h0KCdhdXRvJyk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSB0ZXh0YXJlYS5zY3JvbGxIZWlnaHQ7XHJcbiAgICBjb25zdCBuZXdIZWlnaHQgPSBzY3JvbGxIZWlnaHQgKyBib3JkZXJIZWlnaHQ7XHJcbiAgICBcclxuICAgIC8vINCY0LfQvNC10L3Rj9C10Lwg0LLRi9GB0L7RgtGDINGC0L7Qu9GM0LrQviDQtdGB0LvQuCDQvtC90LAg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0LjQt9C80LXQvdC40LvQsNGB0YxcclxuICAgIGlmIChNYXRoLmFicyhuZXdIZWlnaHQgLSB0aGlzLmxhc3RIZWlnaHQpID4gMikgeyAvLyDQn9C+0YDQvtCzIDJweFxyXG4gICAgICB0aGlzLnNldEhlaWdodChgJHtuZXdIZWlnaHR9cHhgKTtcclxuICAgICAgdGhpcy5sYXN0SGVpZ2h0ID0gbmV3SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyDQktC+0YHRgdGC0LDQvdCw0LLQu9C40LLQsNC10LwgdHJhbnNpdGlvblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGV4dGFyZWEsICd0cmFuc2l0aW9uJywgb3JpZ2luYWxUcmFuc2l0aW9uKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRIZWlnaHQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW0ubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYW51cCgpIHtcclxuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XHJcbiAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICB0aGlzLm9ic2VydmVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xyXG4gIH1cclxufSJdfQ==
|
package/fesm2022/myrta-ui.mjs
CHANGED
|
@@ -340,6 +340,7 @@ class AlertComponent {
|
|
|
340
340
|
return `${AlertIconClasses[this.color]}`;
|
|
341
341
|
}
|
|
342
342
|
onCloseClick() {
|
|
343
|
+
console.log(1);
|
|
343
344
|
this.close.emit(null);
|
|
344
345
|
}
|
|
345
346
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -5948,18 +5949,65 @@ var InputTextareaSizesEnum;
|
|
|
5948
5949
|
class AutosizeDirective {
|
|
5949
5950
|
elem;
|
|
5950
5951
|
renderer;
|
|
5952
|
+
ngZone;
|
|
5951
5953
|
overflow = 'hidden';
|
|
5952
5954
|
rows = 1;
|
|
5953
|
-
autosize
|
|
5954
|
-
|
|
5955
|
+
set autosize(value) {
|
|
5956
|
+
this._autosize = value;
|
|
5957
|
+
if (!value) {
|
|
5958
|
+
this.overflow = 'auto';
|
|
5959
|
+
this.setHeight('auto');
|
|
5960
|
+
}
|
|
5961
|
+
}
|
|
5962
|
+
get autosize() {
|
|
5963
|
+
return this._autosize;
|
|
5964
|
+
}
|
|
5965
|
+
_autosize = true;
|
|
5966
|
+
observer = null;
|
|
5967
|
+
resizeTimeout;
|
|
5968
|
+
lastHeight = 0;
|
|
5969
|
+
constructor(elem, renderer, ngZone) {
|
|
5955
5970
|
this.elem = elem;
|
|
5956
5971
|
this.renderer = renderer;
|
|
5972
|
+
this.ngZone = ngZone;
|
|
5957
5973
|
}
|
|
5958
5974
|
ngAfterViewInit() {
|
|
5959
|
-
this.
|
|
5975
|
+
this.setupAutoResize();
|
|
5976
|
+
// Первоначальный расчет
|
|
5977
|
+
setTimeout(() => this.resize(), 0);
|
|
5978
|
+
}
|
|
5979
|
+
ngOnDestroy() {
|
|
5980
|
+
this.cleanup();
|
|
5981
|
+
}
|
|
5982
|
+
setupAutoResize() {
|
|
5983
|
+
if (!this.autosize)
|
|
5984
|
+
return;
|
|
5985
|
+
const textarea = this.elem.nativeElement;
|
|
5986
|
+
// Используем MutationObserver вместо ngDoCheck
|
|
5987
|
+
this.ngZone.runOutsideAngular(() => {
|
|
5988
|
+
this.observer = new MutationObserver(() => {
|
|
5989
|
+
this.scheduleResize();
|
|
5990
|
+
});
|
|
5991
|
+
this.observer.observe(textarea, {
|
|
5992
|
+
characterData: true,
|
|
5993
|
+
childList: true,
|
|
5994
|
+
subtree: true
|
|
5995
|
+
});
|
|
5996
|
+
});
|
|
5997
|
+
// Также следим за resize окна
|
|
5998
|
+
this.renderer.listen('window', 'resize', () => this.scheduleResize());
|
|
5999
|
+
}
|
|
6000
|
+
scheduleResize() {
|
|
6001
|
+
if (!this.autosize)
|
|
6002
|
+
return;
|
|
6003
|
+
// Debounce для оптимизации
|
|
6004
|
+
clearTimeout(this.resizeTimeout);
|
|
6005
|
+
this.resizeTimeout = setTimeout(() => {
|
|
6006
|
+
this.ngZone.run(() => this.resize());
|
|
6007
|
+
}, 50); // Задержка 50мс
|
|
5960
6008
|
}
|
|
5961
|
-
|
|
5962
|
-
this.
|
|
6009
|
+
onInput() {
|
|
6010
|
+
this.scheduleResize();
|
|
5963
6011
|
}
|
|
5964
6012
|
resize() {
|
|
5965
6013
|
if (!this.autosize) {
|
|
@@ -5967,25 +6015,43 @@ class AutosizeDirective {
|
|
|
5967
6015
|
return;
|
|
5968
6016
|
}
|
|
5969
6017
|
const textarea = this.elem.nativeElement;
|
|
5970
|
-
//
|
|
6018
|
+
// Временно отключаем transition для предотвращения скачков
|
|
6019
|
+
const originalTransition = textarea.style.transition;
|
|
6020
|
+
this.renderer.setStyle(textarea, 'transition', 'none');
|
|
6021
|
+
// Рассчитываем новую высоту
|
|
5971
6022
|
const borderHeight = textarea.offsetHeight - textarea.clientHeight;
|
|
5972
|
-
// Reset textarea height to auto that correctly calculate the new height
|
|
5973
6023
|
this.setHeight('auto');
|
|
5974
|
-
|
|
5975
|
-
|
|
6024
|
+
const scrollHeight = textarea.scrollHeight;
|
|
6025
|
+
const newHeight = scrollHeight + borderHeight;
|
|
6026
|
+
// Изменяем высоту только если она действительно изменилась
|
|
6027
|
+
if (Math.abs(newHeight - this.lastHeight) > 2) { // Порог 2px
|
|
6028
|
+
this.setHeight(`${newHeight}px`);
|
|
6029
|
+
this.lastHeight = newHeight;
|
|
6030
|
+
}
|
|
6031
|
+
// Восстанавливаем transition
|
|
6032
|
+
setTimeout(() => {
|
|
6033
|
+
this.renderer.setStyle(textarea, 'transition', originalTransition);
|
|
6034
|
+
}, 0);
|
|
5976
6035
|
}
|
|
5977
6036
|
setHeight(value) {
|
|
5978
6037
|
this.renderer.setStyle(this.elem.nativeElement, 'height', value);
|
|
5979
6038
|
}
|
|
5980
|
-
|
|
5981
|
-
|
|
6039
|
+
cleanup() {
|
|
6040
|
+
if (this.observer) {
|
|
6041
|
+
this.observer.disconnect();
|
|
6042
|
+
this.observer = null;
|
|
6043
|
+
}
|
|
6044
|
+
clearTimeout(this.resizeTimeout);
|
|
6045
|
+
}
|
|
6046
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
6047
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: AutosizeDirective, selector: "[mrxAutosize]", inputs: { rows: "rows", autosize: "autosize" }, host: { listeners: { "input": "onInput()" }, properties: { "style.overflow": "this.overflow", "rows": "this.rows" } }, ngImport: i0 });
|
|
5982
6048
|
}
|
|
5983
6049
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, decorators: [{
|
|
5984
6050
|
type: Directive,
|
|
5985
6051
|
args: [{
|
|
5986
6052
|
selector: '[mrxAutosize]'
|
|
5987
6053
|
}]
|
|
5988
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { overflow: [{
|
|
6054
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { overflow: [{
|
|
5989
6055
|
type: HostBinding,
|
|
5990
6056
|
args: ['style.overflow']
|
|
5991
6057
|
}], rows: [{
|
|
@@ -5995,7 +6061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
5995
6061
|
args: ['rows']
|
|
5996
6062
|
}], autosize: [{
|
|
5997
6063
|
type: Input
|
|
5998
|
-
}],
|
|
6064
|
+
}], onInput: [{
|
|
5999
6065
|
type: HostListener,
|
|
6000
6066
|
args: ['input']
|
|
6001
6067
|
}] } });
|