myrta-ui 17.1.72 → 17.1.73
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 +1 -2
- package/esm2022/lib/directives/autosize/autosize.directive.mjs +34 -76
- package/fesm2022/myrta-ui.mjs +32 -75
- package/fesm2022/myrta-ui.mjs.map +1 -1
- package/lib/directives/autosize/autosize.directive.d.ts +6 -15
- package/package.json +1 -1
|
@@ -17,7 +17,6 @@ export class AlertComponent {
|
|
|
17
17
|
return `${AlertIconClasses[this.color]}`;
|
|
18
18
|
}
|
|
19
19
|
onCloseClick() {
|
|
20
|
-
console.log(1);
|
|
21
20
|
this.close.emit(null);
|
|
22
21
|
}
|
|
23
22
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -43,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
43
42
|
}], close: [{
|
|
44
43
|
type: Output
|
|
45
44
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBZSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFRaEYsTUFBTSxPQUFPLGNBQWM7SUFDaEIsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixLQUFLLEdBQWdCLFNBQVMsQ0FBQztJQUMvQixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWhCLEtBQUssR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUU1RCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7d0dBckJVLGNBQWM7NEZBQWQsY0FBYyxzUENUM0IsNHJCQW1CQTs7NEZEVmEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFsZXJ0Q29sb3JDbGFzc2VzLCBBbGVydENvbG9ycywgQWxlcnRJY29uQ2xhc3NlcyB9IGZyb20gJy4vYWxlcnQuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1hbGVydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICdhbGVydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzc2VzOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBjb2xvcjogQWxlcnRDb2xvcnMgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgY3VzdG9tQ29sb3I6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2UgPSAnJztcclxuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGNsb3NhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0ljb24gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpIHtcclxuICAgIHJldHVybiBgJHtBbGVydENvbG9yQ2xhc3Nlc1t0aGlzLmNvbG9yXSA/PyAnJ30gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0SWNvbkNsYXNzKCkge1xyXG4gICAgcmV0dXJuIGAke0FsZXJ0SWNvbkNsYXNzZXNbdGhpcy5jb2xvcl19YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsb3NlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlLmVtaXQobnVsbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtcngtYWxlcnRcIiBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiIFtzdHlsZV09XCJ7YmFja2dyb3VuZENvbG9yOiBjdXN0b21Db2xvcn1cIj5cclxuICBAaWYgKGNsb3NhYmxlKSB7XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTE2XCIgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCI+PC9zcGFuPlxyXG4gIH1cclxuXHJcbiAgQGlmICh0aXRsZSB8fCBtZXNzYWdlIHx8IHNob3dJY29uKSB7XHJcbiAgICA8c3BhbiBbY2xhc3NdPVwiZ2V0SWNvbkNsYXNzXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxcHhcIiBjbGFzcz1cIm1yeC1pY29uIGljb24tYWxlcnQgaWNvbi1mb250LTE2IG1yLTJcIj48L3NwYW4+XHJcbiAgfVxyXG5cclxuICBAaWYgKHRpdGxlKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LWFsZXJ0LXRpdGxlIG1iLTFcIiBbY2xhc3MubWwtNF09XCJnZXRJY29uQ2xhc3NcIiBbaW5uZXJIVE1MXT1cInRpdGxlXCI+PC9kaXY+XHJcbiAgfVxyXG5cclxuICBAaWYgKG1lc3NhZ2UpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtcngtYWxlcnQtbWVzc2FnZVwiIFtjbGFzcy5tbC00XT1cImdldEljb25DbGFzc1wiIFtpbm5lckhUTUxdPVwibWVzc2FnZVwiPjwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,111 +1,72 @@
|
|
|
1
|
-
import { Directive, HostBinding,
|
|
1
|
+
import { Directive, HostBinding, Input } from "@angular/core";
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class AutosizeDirective {
|
|
4
4
|
elem;
|
|
5
5
|
renderer;
|
|
6
|
-
ngZone;
|
|
7
6
|
overflow = 'hidden';
|
|
8
7
|
rows = 1;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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) {
|
|
8
|
+
autosize = true;
|
|
9
|
+
isInitialized = false;
|
|
10
|
+
constructor(elem, renderer) {
|
|
24
11
|
this.elem = elem;
|
|
25
12
|
this.renderer = renderer;
|
|
26
|
-
this.ngZone = ngZone;
|
|
27
13
|
}
|
|
28
14
|
ngAfterViewInit() {
|
|
29
|
-
this.
|
|
30
|
-
//
|
|
31
|
-
setTimeout(() => this.resize(), 0);
|
|
32
|
-
}
|
|
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мс
|
|
15
|
+
this.isInitialized = true;
|
|
16
|
+
setTimeout(() => this.resize(), 0); // Инициализация после рендера
|
|
62
17
|
}
|
|
63
18
|
onInput() {
|
|
64
|
-
this.
|
|
19
|
+
if (this.autosize && this.isInitialized) {
|
|
20
|
+
this.resize();
|
|
21
|
+
}
|
|
65
22
|
}
|
|
66
23
|
resize() {
|
|
67
24
|
if (!this.autosize) {
|
|
68
25
|
this.overflow = 'auto';
|
|
26
|
+
this.setHeight('auto');
|
|
69
27
|
return;
|
|
70
28
|
}
|
|
71
29
|
const textarea = this.elem.nativeElement;
|
|
72
|
-
//
|
|
30
|
+
// Сохраняем текущее значение и стили
|
|
31
|
+
const originalValue = textarea.value;
|
|
73
32
|
const originalTransition = textarea.style.transition;
|
|
33
|
+
const originalOverflow = textarea.style.overflow;
|
|
34
|
+
// Временно убираем transition для мгновенного расчета
|
|
74
35
|
this.renderer.setStyle(textarea, 'transition', 'none');
|
|
36
|
+
this.renderer.setStyle(textarea, 'overflow', 'hidden');
|
|
37
|
+
// Сбрасываем высоту для корректного расчета
|
|
38
|
+
this.renderer.setStyle(textarea, 'height', 'auto');
|
|
75
39
|
// Рассчитываем новую высоту
|
|
76
40
|
const borderHeight = textarea.offsetHeight - textarea.clientHeight;
|
|
77
|
-
this.setHeight('auto');
|
|
78
41
|
const scrollHeight = textarea.scrollHeight;
|
|
79
|
-
const newHeight =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
// Восстанавливаем transition
|
|
42
|
+
const newHeight = Math.max(textarea.clientHeight, // минимальная высота
|
|
43
|
+
scrollHeight + borderHeight);
|
|
44
|
+
// Устанавливаем новую высоту
|
|
45
|
+
this.renderer.setStyle(textarea, 'height', `${newHeight}px`);
|
|
46
|
+
// Восстанавливаем стили
|
|
86
47
|
setTimeout(() => {
|
|
87
48
|
this.renderer.setStyle(textarea, 'transition', originalTransition);
|
|
49
|
+
this.renderer.setStyle(textarea, 'overflow', originalOverflow);
|
|
88
50
|
}, 0);
|
|
89
51
|
}
|
|
90
52
|
setHeight(value) {
|
|
91
53
|
this.renderer.setStyle(this.elem.nativeElement, 'height', value);
|
|
92
54
|
}
|
|
93
|
-
|
|
94
|
-
|
|
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 });
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
56
|
+
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()", "paste": "onInput()", "cut": "onInput()", "change": "onInput()" }, properties: { "style.overflow": "this.overflow", "rows": "this.rows" } }, ngImport: i0 });
|
|
102
57
|
}
|
|
103
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, decorators: [{
|
|
104
59
|
type: Directive,
|
|
105
60
|
args: [{
|
|
106
|
-
selector: '[mrxAutosize]'
|
|
61
|
+
selector: '[mrxAutosize]',
|
|
62
|
+
host: {
|
|
63
|
+
'(input)': 'onInput()',
|
|
64
|
+
'(paste)': 'onInput()',
|
|
65
|
+
'(cut)': 'onInput()',
|
|
66
|
+
'(change)': 'onInput()'
|
|
67
|
+
}
|
|
107
68
|
}]
|
|
108
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }
|
|
69
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { overflow: [{
|
|
109
70
|
type: HostBinding,
|
|
110
71
|
args: ['style.overflow']
|
|
111
72
|
}], rows: [{
|
|
@@ -115,8 +76,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
115
76
|
args: ['rows']
|
|
116
77
|
}], autosize: [{
|
|
117
78
|
type: Input
|
|
118
|
-
}], onInput: [{
|
|
119
|
-
type: HostListener,
|
|
120
|
-
args: ['input']
|
|
121
79
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9zaXplL2F1dG9zaXplLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQVdwRyxNQUFNLE9BQU8saUJBQWlCO0lBYVI7SUFBMEI7SUFYdkMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUlwQixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBR1QsUUFBUSxHQUFHLElBQUksQ0FBQztJQUVmLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFOUIsWUFBb0IsSUFBZ0IsRUFBVSxRQUFtQjtRQUE3QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUFHLENBQUM7SUFFOUQsZUFBZTtRQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQThCO0lBQ3BFLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFvQyxDQUFDO1FBRWhFLHFDQUFxQztRQUNyQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUVqRCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXZELDRDQUE0QztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELDRCQUE0QjtRQUM1QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDbkUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUN4QixRQUFRLENBQUMsWUFBWSxFQUFFLHFCQUFxQjtRQUM1QyxZQUFZLEdBQUcsWUFBWSxDQUM1QixDQUFDO1FBRUYsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDO1FBRTdELHdCQUF3QjtRQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7d0dBbkVVLGlCQUFpQjs0RkFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQVQ3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLFdBQVc7d0JBQ3RCLFNBQVMsRUFBRSxXQUFXO3dCQUN0QixPQUFPLEVBQUUsV0FBVzt3QkFDcEIsVUFBVSxFQUFFLFdBQVc7cUJBQ3hCO2lCQUNGO3VHQUdRLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBS3RCLElBQUk7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxNQUFNO2dCQUlaLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBSZW5kZXJlcjIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbXJ4QXV0b3NpemVdJyxcclxuICBob3N0OiB7XHJcbiAgICAnKGlucHV0KSc6ICdvbklucHV0KCknLFxyXG4gICAgJyhwYXN0ZSknOiAnb25JbnB1dCgpJyxcclxuICAgICcoY3V0KSc6ICdvbklucHV0KCknLFxyXG4gICAgJyhjaGFuZ2UpJzogJ29uSW5wdXQoKSdcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvc2l6ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBIb3N0QmluZGluZygnc3R5bGUub3ZlcmZsb3cnKVxyXG4gIHB1YmxpYyBvdmVyZmxvdyA9ICdoaWRkZW4nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBIb3N0QmluZGluZygncm93cycpXHJcbiAgcHVibGljIHJvd3MgPSAxO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhdXRvc2l6ZSA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzaXplKCksIDApOyAvLyDQmNC90LjRhtC40LDQu9C40LfQsNGG0LjRjyDQv9C+0YHQu9C1INGA0LXQvdC00LXRgNCwXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JbnB1dCgpIHtcclxuICAgIGlmICh0aGlzLmF1dG9zaXplICYmIHRoaXMuaXNJbml0aWFsaXplZCkge1xyXG4gICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICBpZiAoIXRoaXMuYXV0b3NpemUpIHtcclxuICAgICAgdGhpcy5vdmVyZmxvdyA9ICdhdXRvJztcclxuICAgICAgdGhpcy5zZXRIZWlnaHQoJ2F1dG8nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcclxuICAgIFxyXG4gICAgLy8g0KHQvtGF0YDQsNC90Y/QtdC8INGC0LXQutGD0YnQtdC1INC30L3QsNGH0LXQvdC40LUg0Lgg0YHRgtC40LvQuFxyXG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHRleHRhcmVhLnZhbHVlO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxUcmFuc2l0aW9uID0gdGV4dGFyZWEuc3R5bGUudHJhbnNpdGlvbjtcclxuICAgIGNvbnN0IG9yaWdpbmFsT3ZlcmZsb3cgPSB0ZXh0YXJlYS5zdHlsZS5vdmVyZmxvdztcclxuICAgIFxyXG4gICAgLy8g0JLRgNC10LzQtdC90L3QviDRg9Cx0LjRgNCw0LXQvCB0cmFuc2l0aW9uINC00LvRjyDQvNCz0L3QvtCy0LXQvdC90L7Qs9C+INGA0LDRgdGH0LXRgtCwXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRleHRhcmVhLCAndHJhbnNpdGlvbicsICdub25lJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRleHRhcmVhLCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICBcclxuICAgIC8vINCh0LHRgNCw0YHRi9Cy0LDQtdC8INCy0YvRgdC+0YLRgyDQtNC70Y8g0LrQvtGA0YDQtdC60YLQvdC+0LPQviDRgNCw0YHRh9C10YLQsFxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0ZXh0YXJlYSwgJ2hlaWdodCcsICdhdXRvJyk7XHJcbiAgICBcclxuICAgIC8vINCg0LDRgdGB0YfQuNGC0YvQstCw0LXQvCDQvdC+0LLRg9GOINCy0YvRgdC+0YLRg1xyXG4gICAgY29uc3QgYm9yZGVySGVpZ2h0ID0gdGV4dGFyZWEub2Zmc2V0SGVpZ2h0IC0gdGV4dGFyZWEuY2xpZW50SGVpZ2h0O1xyXG4gICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5tYXgoXHJcbiAgICAgIHRleHRhcmVhLmNsaWVudEhlaWdodCwgLy8g0LzQuNC90LjQvNCw0LvRjNC90LDRjyDQstGL0YHQvtGC0LBcclxuICAgICAgc2Nyb2xsSGVpZ2h0ICsgYm9yZGVySGVpZ2h0XHJcbiAgICApO1xyXG4gICAgXHJcbiAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQvdC+0LLRg9GOINCy0YvRgdC+0YLRg1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0ZXh0YXJlYSwgJ2hlaWdodCcsIGAke25ld0hlaWdodH1weGApO1xyXG4gICAgXHJcbiAgICAvLyDQktC+0YHRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0YHRgtC40LvQuFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGV4dGFyZWEsICd0cmFuc2l0aW9uJywgb3JpZ2luYWxUcmFuc2l0aW9uKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0ZXh0YXJlYSwgJ292ZXJmbG93Jywgb3JpZ2luYWxPdmVyZmxvdyk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SGVpZ2h0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtLm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnLCB2YWx1ZSk7XHJcbiAgfVxyXG59Il19
|
package/fesm2022/myrta-ui.mjs
CHANGED
|
@@ -340,7 +340,6 @@ class AlertComponent {
|
|
|
340
340
|
return `${AlertIconClasses[this.color]}`;
|
|
341
341
|
}
|
|
342
342
|
onCloseClick() {
|
|
343
|
-
console.log(1);
|
|
344
343
|
this.close.emit(null);
|
|
345
344
|
}
|
|
346
345
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -5949,109 +5948,70 @@ var InputTextareaSizesEnum;
|
|
|
5949
5948
|
class AutosizeDirective {
|
|
5950
5949
|
elem;
|
|
5951
5950
|
renderer;
|
|
5952
|
-
ngZone;
|
|
5953
5951
|
overflow = 'hidden';
|
|
5954
5952
|
rows = 1;
|
|
5955
|
-
|
|
5956
|
-
|
|
5957
|
-
|
|
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) {
|
|
5953
|
+
autosize = true;
|
|
5954
|
+
isInitialized = false;
|
|
5955
|
+
constructor(elem, renderer) {
|
|
5970
5956
|
this.elem = elem;
|
|
5971
5957
|
this.renderer = renderer;
|
|
5972
|
-
this.ngZone = ngZone;
|
|
5973
5958
|
}
|
|
5974
5959
|
ngAfterViewInit() {
|
|
5975
|
-
this.
|
|
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
|
+
this.isInitialized = true;
|
|
5961
|
+
setTimeout(() => this.resize(), 0); // Инициализация после рендера
|
|
6008
5962
|
}
|
|
6009
5963
|
onInput() {
|
|
6010
|
-
this.
|
|
5964
|
+
if (this.autosize && this.isInitialized) {
|
|
5965
|
+
this.resize();
|
|
5966
|
+
}
|
|
6011
5967
|
}
|
|
6012
5968
|
resize() {
|
|
6013
5969
|
if (!this.autosize) {
|
|
6014
5970
|
this.overflow = 'auto';
|
|
5971
|
+
this.setHeight('auto');
|
|
6015
5972
|
return;
|
|
6016
5973
|
}
|
|
6017
5974
|
const textarea = this.elem.nativeElement;
|
|
6018
|
-
//
|
|
5975
|
+
// Сохраняем текущее значение и стили
|
|
5976
|
+
const originalValue = textarea.value;
|
|
6019
5977
|
const originalTransition = textarea.style.transition;
|
|
5978
|
+
const originalOverflow = textarea.style.overflow;
|
|
5979
|
+
// Временно убираем transition для мгновенного расчета
|
|
6020
5980
|
this.renderer.setStyle(textarea, 'transition', 'none');
|
|
5981
|
+
this.renderer.setStyle(textarea, 'overflow', 'hidden');
|
|
5982
|
+
// Сбрасываем высоту для корректного расчета
|
|
5983
|
+
this.renderer.setStyle(textarea, 'height', 'auto');
|
|
6021
5984
|
// Рассчитываем новую высоту
|
|
6022
5985
|
const borderHeight = textarea.offsetHeight - textarea.clientHeight;
|
|
6023
|
-
this.setHeight('auto');
|
|
6024
5986
|
const scrollHeight = textarea.scrollHeight;
|
|
6025
|
-
const newHeight =
|
|
6026
|
-
|
|
6027
|
-
|
|
6028
|
-
|
|
6029
|
-
|
|
6030
|
-
}
|
|
6031
|
-
// Восстанавливаем transition
|
|
5987
|
+
const newHeight = Math.max(textarea.clientHeight, // минимальная высота
|
|
5988
|
+
scrollHeight + borderHeight);
|
|
5989
|
+
// Устанавливаем новую высоту
|
|
5990
|
+
this.renderer.setStyle(textarea, 'height', `${newHeight}px`);
|
|
5991
|
+
// Восстанавливаем стили
|
|
6032
5992
|
setTimeout(() => {
|
|
6033
5993
|
this.renderer.setStyle(textarea, 'transition', originalTransition);
|
|
5994
|
+
this.renderer.setStyle(textarea, 'overflow', originalOverflow);
|
|
6034
5995
|
}, 0);
|
|
6035
5996
|
}
|
|
6036
5997
|
setHeight(value) {
|
|
6037
5998
|
this.renderer.setStyle(this.elem.nativeElement, 'height', value);
|
|
6038
5999
|
}
|
|
6039
|
-
|
|
6040
|
-
|
|
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 });
|
|
6000
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
6001
|
+
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()", "paste": "onInput()", "cut": "onInput()", "change": "onInput()" }, properties: { "style.overflow": "this.overflow", "rows": "this.rows" } }, ngImport: i0 });
|
|
6048
6002
|
}
|
|
6049
6003
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutosizeDirective, decorators: [{
|
|
6050
6004
|
type: Directive,
|
|
6051
6005
|
args: [{
|
|
6052
|
-
selector: '[mrxAutosize]'
|
|
6006
|
+
selector: '[mrxAutosize]',
|
|
6007
|
+
host: {
|
|
6008
|
+
'(input)': 'onInput()',
|
|
6009
|
+
'(paste)': 'onInput()',
|
|
6010
|
+
'(cut)': 'onInput()',
|
|
6011
|
+
'(change)': 'onInput()'
|
|
6012
|
+
}
|
|
6053
6013
|
}]
|
|
6054
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }
|
|
6014
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { overflow: [{
|
|
6055
6015
|
type: HostBinding,
|
|
6056
6016
|
args: ['style.overflow']
|
|
6057
6017
|
}], rows: [{
|
|
@@ -6061,9 +6021,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
6061
6021
|
args: ['rows']
|
|
6062
6022
|
}], autosize: [{
|
|
6063
6023
|
type: Input
|
|
6064
|
-
}], onInput: [{
|
|
6065
|
-
type: HostListener,
|
|
6066
|
-
args: ['input']
|
|
6067
6024
|
}] } });
|
|
6068
6025
|
|
|
6069
6026
|
class InputTextareaComponent {
|