@eui/components 19.0.3 → 19.0.4-snapshot-1738753092246

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.
Files changed (143) hide show
  1. package/directives/eui-has-permission.directive.d.ts +70 -2
  2. package/directives/eui-has-permission.directive.d.ts.map +1 -1
  3. package/directives/eui-maxlength.directive.d.ts +94 -10
  4. package/directives/eui-maxlength.directive.d.ts.map +1 -1
  5. package/docs/components/EuiInputCheckboxComponent.html +169 -10
  6. package/docs/components/EuiInputGroupAddOnComponent.html +22 -0
  7. package/docs/components/EuiInputGroupAddOnItemComponent.html +30 -0
  8. package/docs/components/EuiInputGroupComponent.html +35 -0
  9. package/docs/components/EuiInputNumberComponent.html +83 -4
  10. package/docs/components/EuiInputRadioComponent.html +228 -0
  11. package/docs/components/EuiInputTextComponent.html +50 -0
  12. package/docs/components/EuiTextareaComponent.html +207 -1
  13. package/docs/dependencies.html +2 -2
  14. package/docs/directives/AutoResizeDirective.html +49 -1
  15. package/docs/directives/EuiHasPermissionDirective.html +34 -0
  16. package/docs/directives/EuiInputNumberDirective.html +17 -0
  17. package/docs/directives/EuiMaxLengthDirective.html +35 -7
  18. package/docs/js/menu-wc.js +53 -107
  19. package/docs/js/menu-wc_es5.js +1 -1
  20. package/docs/js/search/search_index.js +2 -2
  21. package/docs/miscellaneous/functions.html +14 -0
  22. package/docs/modules/EuiHasPermissionDirectiveModule.html +17 -3
  23. package/docs/modules/EuiInputCheckboxModule.html +25 -4
  24. package/docs/modules/EuiInputGroupModule.html +20 -5
  25. package/docs/modules/EuiInputNumberModule.html +26 -5
  26. package/docs/modules/EuiInputRadioModule.html +27 -4
  27. package/docs/modules/EuiInputTextModule.html +25 -4
  28. package/docs/modules/EuiMaxLengthDirectiveModule.html +25 -4
  29. package/docs/modules/EuiTextAreaModule.html +20 -4
  30. package/eui-input-checkbox/eui-input-checkbox.component.d.ts +88 -11
  31. package/eui-input-checkbox/eui-input-checkbox.component.d.ts.map +1 -1
  32. package/eui-input-checkbox/eui-input-checkbox.module.d.ts +17 -3
  33. package/eui-input-checkbox/eui-input-checkbox.module.d.ts.map +1 -1
  34. package/eui-input-group/eui-input-group-addon-item.component.d.ts +33 -1
  35. package/eui-input-group/eui-input-group-addon-item.component.d.ts.map +1 -1
  36. package/eui-input-group/eui-input-group-addon.component.d.ts +40 -2
  37. package/eui-input-group/eui-input-group-addon.component.d.ts.map +1 -1
  38. package/eui-input-group/eui-input-group.component.d.ts +44 -1
  39. package/eui-input-group/eui-input-group.component.d.ts.map +1 -1
  40. package/eui-input-group/eui-input-group.module.d.ts +21 -5
  41. package/eui-input-group/eui-input-group.module.d.ts.map +1 -1
  42. package/eui-input-number/eui-input-number.component.d.ts +73 -9
  43. package/eui-input-number/eui-input-number.component.d.ts.map +1 -1
  44. package/eui-input-number/eui-input-number.module.d.ts +19 -4
  45. package/eui-input-number/eui-input-number.module.d.ts.map +1 -1
  46. package/eui-input-number/eui-number-control.directive.d.ts +27 -2
  47. package/eui-input-number/eui-number-control.directive.d.ts.map +1 -1
  48. package/eui-input-radio/eui-input-radio.component.d.ts +96 -1
  49. package/eui-input-radio/eui-input-radio.component.d.ts.map +1 -1
  50. package/eui-input-radio/eui-input-radio.module.d.ts +20 -3
  51. package/eui-input-radio/eui-input-radio.module.d.ts.map +1 -1
  52. package/eui-input-text/eui-input-text.component.d.ts +54 -1
  53. package/eui-input-text/eui-input-text.component.d.ts.map +1 -1
  54. package/eui-input-text/eui-input-text.module.d.ts +19 -3
  55. package/eui-input-text/eui-input-text.module.d.ts.map +1 -1
  56. package/eui-textarea/auto-resize.directive.d.ts +90 -3
  57. package/eui-textarea/auto-resize.directive.d.ts.map +1 -1
  58. package/eui-textarea/eui-textarea.component.d.ts +111 -5
  59. package/eui-textarea/eui-textarea.component.d.ts.map +1 -1
  60. package/eui-textarea/eui-textarea.module.d.ts +23 -4
  61. package/eui-textarea/eui-textarea.module.d.ts.map +1 -1
  62. package/fesm2022/eui-components-directives.mjs +180 -34
  63. package/fesm2022/eui-components-directives.mjs.map +1 -1
  64. package/fesm2022/eui-components-eui-accordion.mjs +1 -1
  65. package/fesm2022/eui-components-eui-alert.mjs +1 -1
  66. package/fesm2022/eui-components-eui-autocomplete.mjs +2 -2
  67. package/fesm2022/eui-components-eui-avatar.mjs +1 -1
  68. package/fesm2022/eui-components-eui-badge.mjs +1 -1
  69. package/fesm2022/eui-components-eui-block-content.mjs +1 -1
  70. package/fesm2022/eui-components-eui-block-document.mjs +1 -1
  71. package/fesm2022/eui-components-eui-breadcrumb.mjs +1 -1
  72. package/fesm2022/eui-components-eui-button-group.mjs +1 -1
  73. package/fesm2022/eui-components-eui-button-v2.mjs +1 -1
  74. package/fesm2022/eui-components-eui-button.mjs +1 -1
  75. package/fesm2022/eui-components-eui-card.mjs +3 -3
  76. package/fesm2022/eui-components-eui-card.mjs.map +1 -1
  77. package/fesm2022/eui-components-eui-chip-group.mjs +1 -1
  78. package/fesm2022/eui-components-eui-chip-list.mjs +1 -1
  79. package/fesm2022/eui-components-eui-chip.mjs +1 -1
  80. package/fesm2022/eui-components-eui-dashboard-button.mjs +1 -1
  81. package/fesm2022/eui-components-eui-dashboard-card.mjs +1 -1
  82. package/fesm2022/eui-components-eui-date-range-selector.mjs +1 -1
  83. package/fesm2022/eui-components-eui-datepicker.mjs +1 -1
  84. package/fesm2022/eui-components-eui-dialog.mjs +1 -1
  85. package/fesm2022/eui-components-eui-dimmer.mjs +1 -1
  86. package/fesm2022/eui-components-eui-disable-content.mjs +1 -1
  87. package/fesm2022/eui-components-eui-discussion-thread.mjs +1 -1
  88. package/fesm2022/eui-components-eui-dropdown.mjs +2 -2
  89. package/fesm2022/eui-components-eui-feedback-message.mjs +1 -1
  90. package/fesm2022/eui-components-eui-fieldset.mjs +1 -1
  91. package/fesm2022/eui-components-eui-file-upload.mjs +1 -1
  92. package/fesm2022/eui-components-eui-growl.mjs +1 -1
  93. package/fesm2022/eui-components-eui-icon-button-expander.mjs +1 -1
  94. package/fesm2022/eui-components-eui-icon-button.mjs +1 -1
  95. package/fesm2022/eui-components-eui-icon-color.mjs +1 -1
  96. package/fesm2022/eui-components-eui-icon-input.mjs +1 -1
  97. package/fesm2022/eui-components-eui-icon-state.mjs +1 -1
  98. package/fesm2022/eui-components-eui-icon-toggle.mjs +1 -1
  99. package/fesm2022/eui-components-eui-icon.mjs +1 -1
  100. package/fesm2022/eui-components-eui-input-checkbox.mjs +104 -14
  101. package/fesm2022/eui-components-eui-input-checkbox.mjs.map +1 -1
  102. package/fesm2022/eui-components-eui-input-group.mjs +142 -12
  103. package/fesm2022/eui-components-eui-input-group.mjs.map +1 -1
  104. package/fesm2022/eui-components-eui-input-number.mjs +109 -13
  105. package/fesm2022/eui-components-eui-input-number.mjs.map +1 -1
  106. package/fesm2022/eui-components-eui-input-radio.mjs +117 -6
  107. package/fesm2022/eui-components-eui-input-radio.mjs.map +1 -1
  108. package/fesm2022/eui-components-eui-input-text.mjs +73 -6
  109. package/fesm2022/eui-components-eui-input-text.mjs.map +1 -1
  110. package/fesm2022/eui-components-eui-label.mjs +1 -1
  111. package/fesm2022/eui-components-eui-language-selector.mjs +1 -1
  112. package/fesm2022/eui-components-eui-list.mjs +1 -1
  113. package/fesm2022/eui-components-eui-menu.mjs +1 -1
  114. package/fesm2022/eui-components-eui-message-box.mjs +1 -1
  115. package/fesm2022/eui-components-eui-navbar.mjs +1 -1
  116. package/fesm2022/eui-components-eui-overlay.mjs +1 -1
  117. package/fesm2022/eui-components-eui-page.mjs +1 -1
  118. package/fesm2022/eui-components-eui-paginator.mjs +1 -1
  119. package/fesm2022/eui-components-eui-popover.mjs +1 -1
  120. package/fesm2022/eui-components-eui-progress-bar.mjs +1 -1
  121. package/fesm2022/eui-components-eui-progress-circle.mjs +1 -1
  122. package/fesm2022/eui-components-eui-select.mjs +1 -1
  123. package/fesm2022/eui-components-eui-sidebar-menu.mjs +1 -1
  124. package/fesm2022/eui-components-eui-skeleton.mjs +1 -1
  125. package/fesm2022/eui-components-eui-slide-toggle.mjs +2 -2
  126. package/fesm2022/eui-components-eui-split-button.mjs +1 -1
  127. package/fesm2022/eui-components-eui-table-v2.mjs +1 -1
  128. package/fesm2022/eui-components-eui-table.mjs +1 -1
  129. package/fesm2022/eui-components-eui-tabs.mjs +1 -1
  130. package/fesm2022/eui-components-eui-textarea.mjs +221 -15
  131. package/fesm2022/eui-components-eui-textarea.mjs.map +1 -1
  132. package/fesm2022/eui-components-eui-timebar.mjs +1 -1
  133. package/fesm2022/eui-components-eui-timeline.mjs +1 -1
  134. package/fesm2022/eui-components-eui-timepicker.mjs +1 -1
  135. package/fesm2022/eui-components-eui-tree-list.mjs +1 -1
  136. package/fesm2022/eui-components-eui-tree.mjs +1 -1
  137. package/fesm2022/eui-components-eui-user-profile.mjs +1 -1
  138. package/fesm2022/eui-components-eui-wizard.mjs +1 -1
  139. package/fesm2022/eui-components-externals-eui-editor.mjs +1 -1
  140. package/fesm2022/eui-components-externals-quill.mjs +1 -1
  141. package/fesm2022/eui-components-layout.mjs +2 -2
  142. package/fesm2022/eui-components-shared.mjs +2 -2
  143. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, signal, effect, booleanAttribute, forwardRef, Component, ViewEncapsulation, Output, HostBinding, Input, HostListener, numberAttribute, Directive, Optional, NgModule } from '@angular/core';
2
+ import { EventEmitter, signal, effect, forwardRef, booleanAttribute, HostListener, HostBinding, Input, Output, ViewEncapsulation, Component, numberAttribute, Optional, Directive, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@angular/forms';
4
4
  import { NgControl, FormControlName, FormGroupDirective, FormControlDirective, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import * as i1 from '@eui/components/shared';
@@ -9,11 +9,38 @@ import { Subject, fromEvent } from 'rxjs';
9
9
  import { takeUntil, debounceTime, startWith } from 'rxjs/operators';
10
10
  import { CommonModule } from '@angular/common';
11
11
 
12
+ /**
13
+ * @fileoverview Enhanced textarea component for Angular forms with readonly state, form control integration, and state management.
14
+ *
15
+ * A form control component that provides an enhanced textarea with additional features.
16
+ * Supports readonly state visualization, form control integration, and state management.
17
+ *
18
+ * @component
19
+ * @selector textarea[euiTextArea]
20
+ *
21
+ * @example
22
+ * ```html
23
+ * <textarea euiTextArea
24
+ * [(ngModel)]="value"
25
+ * [readonly]="isReadonly"
26
+ * [disabled]="isDisabled"
27
+ * [isInvalid]="hasError" />
28
+ * ```
29
+ */
12
30
  class EuiTextareaComponent {
31
+ /**
32
+ * Static counter used to generate unique IDs for textarea instances
33
+ * @static
34
+ */
13
35
  static { this.idCounter = 0; }
14
36
  get class() {
15
37
  return [this.isInvalid ? 'eui-textarea--invalid' : '', this.baseStatesDirective.getCssClasses('eui-textarea')].join(' ').trim();
16
38
  }
39
+ /**
40
+ * The disabled state of the textarea
41
+ * @description When set to true, prevents user interaction with the textarea.
42
+ * This can be controlled either directly or through form control binding.
43
+ */
17
44
  get disabled() {
18
45
  return this._disabled ? true : null;
19
46
  }
@@ -25,6 +52,11 @@ class EuiTextareaComponent {
25
52
  // set BaseDirective Attribute
26
53
  this.baseStatesDirective.euiDisabled = this._disabled;
27
54
  }
55
+ /**
56
+ * The readonly state of the textarea
57
+ * @description When true, displays the textarea content in a read-only format
58
+ * with special styling.
59
+ */
28
60
  get readonly() {
29
61
  return this._readonly || undefined;
30
62
  }
@@ -39,10 +71,19 @@ class EuiTextareaComponent {
39
71
  this._renderer = _renderer;
40
72
  this.baseStatesDirective = baseStatesDirective;
41
73
  /**
42
- * emits the number of rows of text in the textarea while input changes
74
+ * Event emitter that fires when the number of text rows in the textarea changes
43
75
  */
44
76
  this.rowsChange = new EventEmitter();
77
+ /**
78
+ * Unique identifier for the textarea
79
+ * @default eui-textarea_{increment}
80
+ */
45
81
  this.id = `eui-textarea_${EuiTextareaComponent.idCounter++}`;
82
+ /**
83
+ * @description
84
+ * Data attribute for end-to-end testing
85
+ * @default eui-textarea
86
+ */
46
87
  this.e2eAttr = 'eui-textarea';
47
88
  this.destroy$ = new Subject();
48
89
  this.rows = signal(0);
@@ -50,14 +91,29 @@ class EuiTextareaComponent {
50
91
  this.rowsChange.emit(this.rows());
51
92
  });
52
93
  }
94
+ /**
95
+ * Handles input changes in the textarea
96
+ * @param {string} value - The new value of the textarea
97
+ * @description Updates the number of rows and triggers change detection
98
+ */
53
99
  onInputChange(value) {
54
100
  // signal rows update
55
101
  this.rows.set(this.hostEl.value.split('\n').length);
56
102
  this.onChange(value);
57
103
  }
104
+ /**
105
+ * Handles blur events on the textarea
106
+ * @param {string} value - The current value of the textarea
107
+ * @description Marks the control as touched and triggers validation
108
+ */
58
109
  onBlur(value) {
59
110
  this.onTouched(value);
60
111
  }
112
+ /**
113
+ * @description
114
+ * Lifecycle hook that initializes the component. Sets up DOM elements,
115
+ * initializes form control integration, and establishes state management
116
+ */
61
117
  ngOnInit() {
62
118
  this.hostEl = this._elementRef.nativeElement;
63
119
  this.hostParentEl = this.hostEl.parentElement;
@@ -85,6 +141,11 @@ class EuiTextareaComponent {
85
141
  }
86
142
  }
87
143
  }
144
+ /**
145
+ * @description
146
+ * Lifecycle hook that checks for changes in form control state
147
+ * Updates invalid state based on form control validation
148
+ */
88
149
  ngDoCheck() {
89
150
  if (this.control instanceof NgControl || this.control instanceof FormControl) {
90
151
  // TODO: Delete when https://github.com/angular/angular/issues/30275 is resolved
@@ -92,6 +153,11 @@ class EuiTextareaComponent {
92
153
  this.baseStatesDirective.euiDanger = this.isInvalid;
93
154
  }
94
155
  }
156
+ /**
157
+ * @description
158
+ * Lifecycle hook that handles changes to component inputs
159
+ * @param {SimpleChanges} changes - Object containing changed properties
160
+ */
95
161
  ngOnChanges(changes) {
96
162
  if (changes['readonly']) {
97
163
  const readonly = changes['readonly'].currentValue;
@@ -116,6 +182,11 @@ class EuiTextareaComponent {
116
182
  this.baseStatesDirective.euiDanger = changes['isInvalid'].currentValue;
117
183
  }
118
184
  }
185
+ /**
186
+ * @description
187
+ * Lifecycle hook that cleans up component resources
188
+ * Completes observables and removes generated DOM elements
189
+ */
119
190
  ngOnDestroy() {
120
191
  this.destroy$.complete();
121
192
  this.destroy$.unsubscribe();
@@ -137,6 +208,11 @@ class EuiTextareaComponent {
137
208
  }
138
209
  }
139
210
  }
211
+ /**
212
+ * @description
213
+ * ControlValueAccessor implementation for writing values
214
+ * @param {unknown} obj - The value to write to the textarea
215
+ */
140
216
  writeValue(obj) {
141
217
  if (this.valueContainerEl) {
142
218
  this._renderer.setProperty(this.valueContainerEl, 'innerText', obj || null);
@@ -145,12 +221,27 @@ class EuiTextareaComponent {
145
221
  // signal rows update
146
222
  this.rows.set(this.hostEl.value.split('\n').length);
147
223
  }
224
+ /**
225
+ * @description
226
+ * Registers the callback function for change events
227
+ * @param {Function} fn - The callback function
228
+ */
148
229
  registerOnChange(fn) {
149
230
  this.onChange = fn;
150
231
  }
232
+ /**
233
+ * @description
234
+ * Registers the callback function for touched events
235
+ * @param {Function} fn - The callback function
236
+ */
151
237
  registerOnTouched(fn) {
152
238
  this.onTouched = fn;
153
239
  }
240
+ /**
241
+ * @description
242
+ * Sets the disabled state of the textarea
243
+ * @param {boolean} isDisabled - The disabled state to set
244
+ */
154
245
  setDisabledState(isDisabled) {
155
246
  if (this.hostEl) {
156
247
  this._renderer.setProperty(this.hostEl, 'disabled', isDisabled);
@@ -165,6 +256,12 @@ class EuiTextareaComponent {
165
256
  this.isInvalid = this.control.invalid;
166
257
  }
167
258
  }
259
+ /**
260
+ * @description
261
+ * Creates the container for the textarea element
262
+ * @returns {HTMLDivElement} The created wrapper container element
263
+ * @private
264
+ */
168
265
  createHostWrapperContainer() {
169
266
  const wrapper = this._renderer.createElement('div');
170
267
  this._renderer.addClass(wrapper, 'eui-textarea__wrapper');
@@ -179,8 +276,9 @@ class EuiTextareaComponent {
179
276
  return wrapper;
180
277
  }
181
278
  /**
182
- * Create a Div element which will hold the value to display when readonly
183
- *
279
+ * @description
280
+ * Creates the container for displaying readonly values
281
+ * @returns {HTMLDivElement} The created value container element
184
282
  * @private
185
283
  */
186
284
  createValueContainer() {
@@ -190,7 +288,10 @@ class EuiTextareaComponent {
190
288
  return valueContainer;
191
289
  }
192
290
  /**
193
- * Changes the markup around the textarea. Append textarea onto a container with div
291
+ * @description
292
+ * Handles the DOM manipulation for the textarea structure
293
+ * Wraps the textarea in necessary containers and adds
294
+ * the readonly value display element
194
295
  *
195
296
  * @private
196
297
  */
@@ -202,11 +303,11 @@ class EuiTextareaComponent {
202
303
  }
203
304
  }
204
305
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiTextareaComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.5", type: EuiTextareaComponent, isStandalone: false, selector: "textarea[euiTextArea]", inputs: { disabled: "disabled", readonly: "readonly", id: "id", isInvalid: ["isInvalid", "isInvalid", booleanAttribute], e2eAttr: "e2eAttr" }, outputs: { rowsChange: "rowsChange" }, host: { listeners: { "input": "onInputChange($event.target.value)", "blur": "onBlur($event.target.value)" }, properties: { "class": "this.class", "attr.disabled": "this.disabled", "attr.readonly": "this.readonly", "attr.id": "this.id", "attr.data-e2e": "this.e2eAttr" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EuiTextareaComponent), multi: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.BaseStatesDirective, inputs: ["euiDisabled", "euiDisabled", "euiDanger", "euiDanger"] }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".eui-19 .eui-textarea__wrapper{display:flex;position:relative;width:100%}.eui-19 .eui-textarea__wrapper .eui-textarea{font:var(--eui-f-m);appearance:none;background-color:var(--eui-c-white);border:1px solid var(--eui-c-neutral-lighter);border-radius:var(--eui-br-m);box-shadow:none;color:var(--eui-c-text);padding:calc(var(--eui-s-xs) - 1px) calc(var(--eui-s-m) - 1px);width:100%;height:auto;resize:vertical}.eui-19 .eui-textarea__wrapper .eui-textarea:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea:not([hidden]){display:block}.eui-19 .eui-textarea__wrapper .eui-textarea::placeholder{color:var(--eui-c-neutral-lighter)!important;opacity:1}.eui-19 .eui-textarea__wrapper .eui-textarea[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;height:inherit;padding-left:0;padding-right:0;pointer-events:none}.eui-19 .eui-textarea__wrapper .eui-textarea[readonly]+.eui-feedback-message,.eui-19 .eui-textarea__wrapper .eui-textarea[readonly]+.eui-input-maxlength{appearance:none;display:none}.eui-19 .eui-textarea__wrapper .eui-textarea[disabled]:not([readonly]),.eui-19 .eui-textarea__wrapper .eui-textarea--disabled:not([readonly]){background-color:var(--eui-c-neutral-bg-light)!important;border:1px solid var(--eui-c-neutral-lightest);color:var(--eui-c-neutral-light);pointer-events:auto}.eui-19 .eui-textarea__wrapper .eui-textarea--invalid,.eui-19 .eui-textarea__wrapper .eui-textarea--danger{border:1px solid var(--eui-c-danger)}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable{padding-right:var(--eui-s-2xl)}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon{cursor:pointer;position:absolute;right:var(--eui-s-s);-webkit-user-select:none;user-select:none;visibility:visible}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon>svg{fill:var(--eui-c-neutral-lighter)}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon>svg:hover{fill:var(--eui-c-danger)}.eui-19 .eui-textarea__wrapper .eui-textarea--loading{padding-right:var(--eui-s-2xl)}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon{align-items:center;display:flex}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:after,.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:before{content:\"\";height:var(--eui-s-l);position:absolute;right:var(--eui-s-s);width:var(--eui-s-l)}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:before{border:var(--eui-s-2xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eui-s-2xs);box-shadow:0 0 0 1px transparent}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon--sm:after,.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon--sm:before{height:var(--eui-s-m);width:var(--eui-s-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-19 .eui-textarea__wrapper .eui-textarea{scrollbar-color:var(--eui-c-neutral-lighter) var(--eui-c-neutral-bg-light);scrollbar-width:auto}}.eui-19 .eui-textarea__wrapper .eui-textarea--disabled,.eui-19 .eui-textarea__wrapper .eui-textarea[disabled]{pointer-events:auto}.eui-19 .eui-textarea__wrapper .eui-textarea__value-container,.eui-19 .eui-textarea__wrapper.eui-textarea__wrapper--readonly .eui-input-maxlength-wrapper,.eui-19 .eui-textarea__wrapper.eui-textarea__wrapper--readonly .eui-textarea--readonly{appearance:none;display:none}.eui-19 .eui-textarea__wrapper.eui-textarea__wrapper--readonly .eui-textarea__value-container{appearance:initial;color:var(--eui-c-neutral-light);display:inline-flex;min-height:calc(var(--eui-s-3xl) + var(--eui-s-2xs));word-break:break-word}.eui-19 .eui-textarea__wrapper .eui-textarea--invalid{border:var(--eui-bw-xs) solid var(--eui-c-danger-dark)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.5", type: EuiTextareaComponent, isStandalone: true, selector: "textarea[euiTextArea]", inputs: { disabled: "disabled", readonly: "readonly", id: "id", isInvalid: ["isInvalid", "isInvalid", booleanAttribute], e2eAttr: "e2eAttr" }, outputs: { rowsChange: "rowsChange" }, host: { listeners: { "input": "onInputChange($event.target.value)", "blur": "onBlur($event.target.value)" }, properties: { "class": "this.class", "attr.disabled": "this.disabled", "attr.readonly": "this.readonly", "attr.id": "this.id", "attr.data-e2e": "this.e2eAttr" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EuiTextareaComponent), multi: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.BaseStatesDirective, inputs: ["euiDisabled", "euiDisabled", "euiDanger", "euiDanger"] }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".eui-19 .eui-textarea__wrapper{display:flex;position:relative;width:100%}.eui-19 .eui-textarea__wrapper .eui-textarea{font:var(--eui-f-m);appearance:none;background-color:var(--eui-c-white);border:1px solid var(--eui-c-neutral-lighter);border-radius:var(--eui-br-m);box-shadow:none;color:var(--eui-c-text);padding:calc(var(--eui-s-xs) - 1px) calc(var(--eui-s-m) - 1px);width:100%;height:auto;resize:vertical}.eui-19 .eui-textarea__wrapper .eui-textarea:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea:not([hidden]){display:block}.eui-19 .eui-textarea__wrapper .eui-textarea::placeholder{color:var(--eui-c-neutral-lighter)!important;opacity:1}.eui-19 .eui-textarea__wrapper .eui-textarea[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;height:inherit;padding-left:0;padding-right:0;pointer-events:none}.eui-19 .eui-textarea__wrapper .eui-textarea[readonly]+.eui-feedback-message,.eui-19 .eui-textarea__wrapper .eui-textarea[readonly]+.eui-input-maxlength{appearance:none;display:none}.eui-19 .eui-textarea__wrapper .eui-textarea[disabled]:not([readonly]),.eui-19 .eui-textarea__wrapper .eui-textarea--disabled:not([readonly]){background-color:var(--eui-c-neutral-bg-light)!important;border:1px solid var(--eui-c-neutral-lightest);color:var(--eui-c-neutral-light);pointer-events:auto}.eui-19 .eui-textarea__wrapper .eui-textarea--invalid,.eui-19 .eui-textarea__wrapper .eui-textarea--danger{border:1px solid var(--eui-c-danger)}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable{padding-right:var(--eui-s-2xl)}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon{cursor:pointer;position:absolute;right:var(--eui-s-s);-webkit-user-select:none;user-select:none;visibility:visible}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon>svg{fill:var(--eui-c-neutral-lighter)}.eui-19 .eui-textarea__wrapper .eui-textarea--clearable-icon>svg:hover{fill:var(--eui-c-danger)}.eui-19 .eui-textarea__wrapper .eui-textarea--loading{padding-right:var(--eui-s-2xl)}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon{align-items:center;display:flex}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:after,.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:before{content:\"\";height:var(--eui-s-l);position:absolute;right:var(--eui-s-s);width:var(--eui-s-l)}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:before{border:var(--eui-s-2xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eui-s-2xs);box-shadow:0 0 0 1px transparent}.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon--sm:after,.eui-19 .eui-textarea__wrapper .eui-textarea--loading-icon--sm:before{height:var(--eui-s-m);width:var(--eui-s-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-19 .eui-textarea__wrapper .eui-textarea::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-19 .eui-textarea__wrapper .eui-textarea{scrollbar-color:var(--eui-c-neutral-lighter) var(--eui-c-neutral-bg-light);scrollbar-width:auto}}.eui-19 .eui-textarea__wrapper .eui-textarea--disabled,.eui-19 .eui-textarea__wrapper .eui-textarea[disabled]{pointer-events:auto}.eui-19 .eui-textarea__wrapper .eui-textarea__value-container,.eui-19 .eui-textarea__wrapper.eui-textarea__wrapper--readonly .eui-input-maxlength-wrapper,.eui-19 .eui-textarea__wrapper.eui-textarea__wrapper--readonly .eui-textarea--readonly{appearance:none;display:none}.eui-19 .eui-textarea__wrapper.eui-textarea__wrapper--readonly .eui-textarea__value-container{appearance:initial;color:var(--eui-c-neutral-light);display:inline-flex;min-height:calc(var(--eui-s-3xl) + var(--eui-s-2xs));word-break:break-word}.eui-19 .eui-textarea__wrapper .eui-textarea--invalid{border:var(--eui-bw-xs) solid var(--eui-c-danger-dark)}\n"], encapsulation: i0.ViewEncapsulation.None }); }
206
307
  }
207
308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiTextareaComponent, decorators: [{
208
309
  type: Component,
209
- args: [{ selector: 'textarea[euiTextArea]', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, standalone: false, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EuiTextareaComponent), multi: true }], hostDirectives: [
310
+ args: [{ selector: 'textarea[euiTextArea]', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, standalone: true, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EuiTextareaComponent), multi: true }], hostDirectives: [
210
311
  {
211
312
  directive: BaseStatesDirective,
212
313
  inputs: ['euiDisabled', 'euiDanger'],
@@ -248,7 +349,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
248
349
  args: ['blur', ['$event.target.value']]
249
350
  }] } });
250
351
 
352
+ /* eslint-disable @angular-eslint/directive-selector */
353
+ /**
354
+ * A directive that automatically adjusts the height of a textarea based on its content.
355
+ *
356
+ * @directive
357
+ * @selector textarea[autoResize]
358
+ * @description
359
+ * The AutoResizeDirective automatically adjusts the height of a textarea element as the user types,
360
+ * ensuring that all content is visible without requiring manual resizing or scrolling.
361
+ * It supports minimum and maximum row constraints and can be enabled/disabled dynamically.
362
+ *
363
+ * @example
364
+ * ```html
365
+ * <textarea autoResize [minRows]="2" [maxRows]="5"></textarea>
366
+ * ```
367
+ */
251
368
  class AutoResizeDirective {
369
+ /**
370
+ * @description
371
+ * Sets the minimum number of rows for the textarea.
372
+ * This value determines the initial height of the textarea.
373
+ *
374
+ * @param minRows - The minimum number of rows to display
375
+ */
252
376
  set minRows(minRows) {
253
377
  this.defaultRows = coerceNumberProperty(minRows);
254
378
  }
@@ -256,14 +380,43 @@ class AutoResizeDirective {
256
380
  this.el = el;
257
381
  this.renderer = renderer;
258
382
  this.control = control;
383
+ /**
384
+ * @description
385
+ * Controls whether the auto-resize functionality is enabled.
386
+ * When true, the textarea will automatically adjust its height based on content.
387
+ * When false, the textarea will behave normally.
388
+ *
389
+ * @default true
390
+ */
259
391
  this.autoResize = true;
392
+ /**
393
+ * @description
394
+ * Sets the maximum number of rows for the textarea.
395
+ * When set to a value greater than 0, the textarea will not grow beyond this number of rows
396
+ * and will show scrollbars if necessary.
397
+ * When set to 0, there is no maximum limit.
398
+ *
399
+ * @default 0
400
+ */
260
401
  this.maxRows = 0;
261
402
  this.defaultRows = 1;
262
403
  this.destroy$ = new Subject();
263
404
  }
405
+ /**
406
+ * Event handler for input events on the textarea.
407
+ * Triggers the resize calculation when the content changes.
408
+ *
409
+ * @internal
410
+ */
264
411
  onInput() {
265
412
  this.resize();
266
413
  }
414
+ /**
415
+ * Initializes the directive by setting up window resize event handling
416
+ * and mutation observer for readonly attribute changes.
417
+ *
418
+ * @internal
419
+ */
267
420
  ngOnInit() {
268
421
  fromEvent(window, 'resize')
269
422
  .pipe(takeUntil(this.destroy$), debounceTime(300))
@@ -273,6 +426,13 @@ class AutoResizeDirective {
273
426
  // Start observing the target node for configured mutations
274
427
  this.observer.observe(this.el.nativeElement, { attributes: true });
275
428
  }
429
+ /**
430
+ * Handles changes to the directive's inputs, particularly the autoResize property.
431
+ * Updates the textarea's appearance and behavior accordingly.
432
+ *
433
+ * @param changes - Angular SimpleChanges object containing changed properties
434
+ * @internal
435
+ */
276
436
  ngOnChanges(changes) {
277
437
  if (changes['autoResize']) {
278
438
  const enable = changes['autoResize'].currentValue || this.autoResize;
@@ -284,6 +444,11 @@ class AutoResizeDirective {
284
444
  }
285
445
  }
286
446
  }
447
+ /**
448
+ * Performs initial resize after view initialization and sets up form control value change handling if applicable.
449
+ *
450
+ * @internal
451
+ */
287
452
  ngAfterViewInit() {
288
453
  if (this.autoResize) {
289
454
  if (this.control) {
@@ -294,13 +459,29 @@ class AutoResizeDirective {
294
459
  }
295
460
  }
296
461
  }
462
+ /**
463
+ * Cleans up subscriptions and disconnects observers when the directive is destroyed.
464
+ *
465
+ * @internal
466
+ */
297
467
  ngOnDestroy() {
298
468
  this.destroy$.complete();
299
469
  this.destroy$.unsubscribe();
300
470
  this.observer.disconnect();
301
471
  }
302
472
  /**
303
- * Calculates the height and set it, causing the textarea to resize.
473
+ * Calculates and sets the appropriate height for the textarea based on its content.
474
+ * This method creates a temporary clone of the textarea to measure the required height,
475
+ * taking into account minRows and maxRows constraints.
476
+ *
477
+ * The calculation process:
478
+ * 1. Creates a hidden clone of the textarea
479
+ * 2. Sets the clone's width to match the original
480
+ * 3. Measures the required height based on content
481
+ * 4. Applies maxRows constraint if specified
482
+ * 5. Updates the original textarea's height
483
+ *
484
+ * @public
304
485
  */
305
486
  resize() {
306
487
  if (this.autoResize) {
@@ -340,7 +521,8 @@ class AutoResizeDirective {
340
521
  }
341
522
  }
342
523
  /**
343
- * handles value changes through FormControl
524
+ * Sets up subscription to form control value changes to trigger resize when the value
525
+ * is changed programmatically through the form control.
344
526
  *
345
527
  * @protected
346
528
  */
@@ -349,6 +531,13 @@ class AutoResizeDirective {
349
531
  // startWith is being used to cause resize to be called in case of late subscription after value has changed
350
532
  this.control.valueChanges.pipe(takeUntil(this.destroy$), startWith('')).subscribe(() => this.resize());
351
533
  }
534
+ /**
535
+ * Mutation observer callback that handles changes to the readonly attribute
536
+ * and triggers resize when necessary.
537
+ *
538
+ * @param mutationsList - List of mutations that occurred
539
+ * @private
540
+ */
352
541
  readonlyMutationObserver(mutationsList) {
353
542
  // Use traditional 'for loops' for IE 11
354
543
  for (const mutation of mutationsList) {
@@ -358,14 +547,13 @@ class AutoResizeDirective {
358
547
  }
359
548
  }
360
549
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: AutoResizeDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.NgControl, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
361
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.5", type: AutoResizeDirective, isStandalone: false, selector: "textarea[autoResize]", inputs: { autoResize: ["autoResize", "autoResize", booleanAttribute], minRows: "minRows", maxRows: ["maxRows", "maxRows", numberAttribute] }, host: { listeners: { "input": "onInput($event.target)" } }, usesOnChanges: true, ngImport: i0 }); }
550
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.5", type: AutoResizeDirective, isStandalone: true, selector: "textarea[autoResize]", inputs: { autoResize: ["autoResize", "autoResize", booleanAttribute], minRows: "minRows", maxRows: ["maxRows", "maxRows", numberAttribute] }, host: { listeners: { "input": "onInput($event.target)" } }, usesOnChanges: true, ngImport: i0 }); }
362
551
  }
363
552
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: AutoResizeDirective, decorators: [{
364
553
  type: Directive,
365
554
  args: [{
366
- // eslint-disable-next-line @angular-eslint/directive-selector
367
555
  selector: 'textarea[autoResize]',
368
- standalone: false,
556
+ standalone: true,
369
557
  }]
370
558
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.NgControl, decorators: [{
371
559
  type: Optional
@@ -382,16 +570,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
382
570
  args: ['input', ['$event.target']]
383
571
  }] } });
384
572
 
573
+ /**
574
+ * @description
575
+ * A module that provides textarea functionality with auto-resizing capabilities.
576
+ * This module encapsulates the EuiTextareaComponent and AutoResizeDirective to provide
577
+ * a cohesive textarea solution for Angular applications.
578
+ *
579
+ * @usageNotes
580
+ * To use this module, import it into your feature module:
581
+ * ```typescript
582
+ * import { EuiTextAreaModule } from './path-to-module/eui-textarea.module';
583
+ *
584
+ * @NgModule({
585
+ * imports: [EuiTextAreaModule]
586
+ * })
587
+ * export class YourFeatureModule { }
588
+ * ```
589
+ *
590
+ * @publicApi
591
+ */
385
592
  class EuiTextAreaModule {
386
593
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiTextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
387
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: EuiTextAreaModule, declarations: [EuiTextareaComponent, AutoResizeDirective], imports: [CommonModule], exports: [EuiTextareaComponent, AutoResizeDirective] }); }
594
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: EuiTextAreaModule, imports: [CommonModule, EuiTextareaComponent, AutoResizeDirective], exports: [EuiTextareaComponent, AutoResizeDirective] }); }
388
595
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiTextAreaModule, imports: [CommonModule] }); }
389
596
  }
390
597
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiTextAreaModule, decorators: [{
391
598
  type: NgModule,
392
599
  args: [{
393
- imports: [CommonModule],
394
- declarations: [EuiTextareaComponent, AutoResizeDirective],
600
+ imports: [CommonModule, EuiTextareaComponent, AutoResizeDirective],
395
601
  exports: [EuiTextareaComponent, AutoResizeDirective],
396
602
  }]
397
603
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-textarea.mjs","sources":["../../eui-textarea/eui-textarea.component.ts","../../eui-textarea/auto-resize.directive.ts","../../eui-textarea/eui-textarea.module.ts","../../eui-textarea/eui-components-eui-textarea.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n OnDestroy,\n DoCheck,\n Injector,\n forwardRef,\n booleanAttribute,\n signal,\n Output,\n EventEmitter,\n effect,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n NgControl,\n FormControl,\n FormControlDirective,\n FormGroupDirective,\n FormControlName,\n} from '@angular/forms';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea[euiTextArea]',\n styleUrls: ['./styles/_index.scss'],\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EuiTextareaComponent), multi: true }],\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: ['euiDisabled', 'euiDanger'],\n },\n ],\n})\nexport class EuiTextareaComponent implements OnInit, OnDestroy, DoCheck, OnChanges, ControlValueAccessor {\n static idCounter = 0;\n\n /**\n * emits the number of rows of text in the textarea while input changes\n */\n @Output() rowsChange = new EventEmitter<number>();\n\n @HostBinding('class')\n public get class(): string {\n return [this.isInvalid ? 'eui-textarea--invalid' : '', this.baseStatesDirective.getCssClasses('eui-textarea')].join(' ').trim();\n }\n\n @HostBinding('attr.disabled')\n @Input()\n public get disabled(): boolean | null {\n return this._disabled ? true : null;\n }\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public set disabled(state: any) {\n // in case it's controlled by NgControl override\n this._disabled = coerceBooleanProperty(state);\n // set BaseDirective Attribute\n this.baseStatesDirective.euiDisabled = this._disabled;\n }\n @HostBinding('attr.readonly')\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public get readonly(): any {\n return this._readonly || undefined;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public set readonly(state: any) {\n this._readonly = coerceBooleanProperty(state);\n }\n @HostBinding('attr.id')\n @Input()\n id = `eui-textarea_${EuiTextareaComponent.idCounter++}`;\n\n @Input({ transform: booleanAttribute }) isInvalid: boolean;\n @HostBinding('attr.data-e2e') @Input() e2eAttr = 'eui-textarea';\n protected _readonly: boolean;\n\n protected hostEl: HTMLTextAreaElement;\n\n protected hostParentEl: HTMLElement;\n protected hostWrapperEl: HTMLDivElement;\n protected valueContainerEl: HTMLDivElement;\n private _disabled: boolean;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private control: FormControl | NgControl;\n private rows = signal(0);\n\n constructor(\n private injector: Injector,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private baseStatesDirective: BaseStatesDirective,\n ) {\n effect(() => {\n this.rowsChange.emit(this.rows());\n });\n }\n\n @HostListener('input', ['$event.target.value'])\n public onInputChange(value: string): void {\n // signal rows update\n this.rows.set(this.hostEl.value.split('\\n').length)\n this.onChange(value);\n }\n\n @HostListener('blur', ['$event.target.value'])\n public onBlur(value: string): void {\n this.onTouched(value);\n }\n\n ngOnInit(): void {\n this.hostEl = this._elementRef.nativeElement;\n this.hostParentEl = this.hostEl.parentElement;\n this.hostWrapperEl = this.createHostWrapperContainer();\n this.valueContainerEl = this.createValueContainer();\n\n this.handleMarkup();\n // extract the FormControl or NgControl\n this.control = (this.injector as Injector).get(NgControl, null, { optional: true });\n if (this.control instanceof FormControlName) {\n this.control = (this.injector as Injector).get(FormGroupDirective).getControl(this.control);\n } else if (this.control instanceof FormControlDirective) {\n this.control = this.control.form as FormControl;\n }\n // sets invalid state if control is present\n if (this.control instanceof FormControl || this.control instanceof NgControl) {\n this.disabled = this.control.disabled;\n this.isInvalid = this.control.dirty && this.control.touched && this.control.invalid;\n if (this.control instanceof FormControl) {\n this.control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe((status) => {\n this.isInvalid = status === 'INVALID';\n this.disabled = status === 'DISABLED';\n this.baseStatesDirective.euiDanger = this.isInvalid;\n });\n }\n }\n }\n\n ngDoCheck(): void {\n if (this.control instanceof NgControl || this.control instanceof FormControl) {\n // TODO: Delete when https://github.com/angular/angular/issues/30275 is resolved\n this.isInvalid = this.control.invalid && this.control.touched;\n this.baseStatesDirective.euiDanger = this.isInvalid;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['readonly']) {\n const readonly = changes['readonly'].currentValue;\n\n if (this.hostWrapperEl && this.valueContainerEl) {\n this.hostWrapperEl.classList.toggle('eui-textarea__wrapper--readonly', !!readonly);\n }\n if (this.hostEl && this.valueContainerEl) {\n this.hostEl.classList.toggle('eui-textarea--readonly', !!readonly);\n this.valueContainerEl.innerText = this.hostEl.value;\n }\n }\n if (changes['euiDisabled']) {\n if (this.control instanceof FormControl) {\n // eslint-disable-next-line\n changes['euiDisabled'].currentValue ? this.control.disable() : this.control.enable();\n } else {\n this.setDisabledState(changes['euiDisabled'].currentValue);\n }\n }\n if(changes['isInvalid']) {\n this.baseStatesDirective.euiDanger = changes['isInvalid'].currentValue;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.complete();\n this.destroy$.unsubscribe();\n // cleanup DOM leftovers\n if (this.valueContainerEl) {\n try {\n this._renderer.removeChild(this.hostEl.parentElement, this.valueContainerEl);\n } catch (e) {\n console.error(e);\n }\n }\n if (this.hostWrapperEl) {\n try {\n this._renderer.removeChild(this.hostParentEl, this.hostWrapperEl);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n writeValue(obj: unknown): void {\n if (this.valueContainerEl) {\n this._renderer.setProperty(this.valueContainerEl, 'innerText', obj || null);\n }\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', obj || null);\n // signal rows update\n this.rows.set(this.hostEl.value.split('\\n').length)\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (this.hostEl) {\n this._renderer.setProperty(this.hostEl, 'disabled', isDisabled);\n }\n }\n\n protected onChange(_: unknown): void {\n this.writeValue(_);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected onTouched(_: unknown): void {\n if (this.control) {\n this.isInvalid = this.control.invalid;\n }\n }\n\n private createHostWrapperContainer(): HTMLDivElement {\n const wrapper = this._renderer.createElement('div');\n this._renderer.addClass(wrapper, 'eui-textarea__wrapper');\n if (this.readonly) {\n this._renderer.addClass(wrapper, 'eui-textarea__wrapper--readonly');\n this._renderer.addClass(this.hostEl, 'eui-textarea--readonly');\n } else {\n this._renderer.removeClass(wrapper, 'eui-textarea__wrapper--readonly');\n this._renderer.removeClass(this.hostEl, 'eui-textarea--readonly');\n }\n\n return wrapper;\n }\n\n /**\n * Create a Div element which will hold the value to display when readonly\n *\n * @private\n */\n private createValueContainer(): HTMLDivElement {\n const valueContainer = this._renderer.createElement('div');\n this._renderer.addClass(valueContainer, 'eui-textarea__value-container');\n this._renderer.setProperty(valueContainer, 'innerText', this.hostEl.value);\n return valueContainer;\n }\n\n /**\n * Changes the markup around the textarea. Append textarea onto a container with div\n *\n * @private\n */\n private handleMarkup(): void {\n if (this.hostParentEl != null) {\n this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);\n this.hostWrapperEl.appendChild(this.hostEl);\n this.hostWrapperEl.appendChild(this.valueContainerEl);\n }\n }\n}\n","import {\n Directive,\n OnInit,\n OnDestroy,\n Input,\n ElementRef,\n HostListener,\n AfterViewInit,\n Optional,\n Renderer2,\n OnChanges,\n booleanAttribute,\n numberAttribute,\n SimpleChanges,\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, startWith, takeUntil } from 'rxjs/operators';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'textarea[autoResize]',\n standalone: false,\n})\nexport class AutoResizeDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n @Input({ transform: booleanAttribute }) autoResize = true;\n\n @Input()\n set minRows(minRows: number | string) {\n this.defaultRows = coerceNumberProperty(minRows);\n }\n @Input({ transform: numberAttribute }) maxRows = 0;\n\n private defaultRows = 1;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private observer: MutationObserver;\n\n constructor(\n protected el: ElementRef,\n protected renderer: Renderer2,\n @Optional() protected control: NgControl,\n ) {}\n\n @HostListener('input', ['$event.target'])\n onInput(): void {\n this.resize();\n }\n\n ngOnInit(): void {\n fromEvent(window, 'resize')\n .pipe(takeUntil(this.destroy$), debounceTime(300))\n .subscribe(() => this.resize());\n\n // Create an observer instance linked to the callback function\n this.observer = new MutationObserver(this.readonlyMutationObserver.bind(this));\n\n // Start observing the target node for configured mutations\n this.observer.observe(this.el.nativeElement, { attributes: true });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['autoResize']) {\n const enable = changes['autoResize'].currentValue || this.autoResize;\n this.renderer.setProperty(this.el.nativeElement, 'rows', this.defaultRows);\n this.renderer.setStyle(this.el.nativeElement, 'overflow', enable ? 'hidden' : '');\n this.renderer.setStyle(this.el.nativeElement, 'resize', enable ? 'none' : '');\n if (enable) {\n this.resize();\n }\n }\n }\n\n ngAfterViewInit(): void {\n if (this.autoResize) {\n if (this.control) {\n this.handleFormControlChanges();\n } else {\n this.resize();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.complete();\n this.destroy$.unsubscribe();\n this.observer.disconnect();\n }\n\n /**\n * Calculates the height and set it, causing the textarea to resize.\n */\n public resize(): void {\n if (this.autoResize) {\n // clone element\n const clone = this.el.nativeElement.cloneNode(true);\n const parent = this.el.nativeElement.parentNode;\n clone.style.width = this.el.nativeElement.offsetWidth + 'px';\n clone.style.visibility = 'hidden';\n clone.style.position = 'absolute';\n clone.textContent = this.el.nativeElement.value;\n parent.appendChild(clone);\n clone.style['overflow-y'] = 'hidden';\n clone.style.height = 'auto';\n const cloneHeight = clone.scrollHeight;\n\n this.renderer.setStyle(clone, 'height', cloneHeight);\n // calculate height\n const { offsetHeight } = clone;\n let { scrollHeight } = clone;\n // Enforce maxRows limit if set\n if (this.maxRows > 0) {\n const lineHeight = parseInt(getComputedStyle(clone).lineHeight, 10);\n const maxHeight = lineHeight * this.maxRows;\n scrollHeight = Math.min(scrollHeight, maxHeight);\n if(scrollHeight >= maxHeight) {\n this.renderer.removeStyle(this.el.nativeElement, 'overflow'); // Restore overflow behavior\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden'); // Hide scrollbars during adjustment\n }\n }\n let height = offsetHeight > scrollHeight ? offsetHeight : scrollHeight;\n height = height <= 0 ? 'auto' : `${height}px`;\n // remove clone\n parent.removeChild(clone);\n // set height\n this.renderer.setStyle(this.el.nativeElement, 'height', height);\n }\n }\n\n /**\n * handles value changes through FormControl\n *\n * @protected\n */\n protected handleFormControlChanges(): void {\n // in case value changed manually through control, call resize()\n // startWith is being used to cause resize to be called in case of late subscription after value has changed\n this.control.valueChanges.pipe(takeUntil(this.destroy$), startWith('')).subscribe(() => this.resize());\n }\n\n private readonlyMutationObserver(mutationsList: MutationRecord[]): void {\n // Use traditional 'for loops' for IE 11\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'readonly') {\n this.resize();\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiTextareaComponent } from './eui-textarea.component';\nimport { AutoResizeDirective } from './auto-resize.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EuiTextareaComponent, AutoResizeDirective],\n exports: [EuiTextareaComponent, AutoResizeDirective],\n})\nexport class EuiTextAreaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-textarea.mjs","sources":["../../eui-textarea/eui-textarea.component.ts","../../eui-textarea/auto-resize.directive.ts","../../eui-textarea/eui-textarea.module.ts","../../eui-textarea/eui-components-eui-textarea.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n OnDestroy,\n DoCheck,\n Injector,\n forwardRef,\n booleanAttribute,\n signal,\n Output,\n EventEmitter,\n effect,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n NgControl,\n FormControl,\n FormControlDirective,\n FormGroupDirective,\n FormControlName,\n} from '@angular/forms';\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @fileoverview Enhanced textarea component for Angular forms with readonly state, form control integration, and state management.\n *\n * A form control component that provides an enhanced textarea with additional features.\n * Supports readonly state visualization, form control integration, and state management.\n *\n * @component\n * @selector textarea[euiTextArea]\n *\n * @example\n * ```html\n * <textarea euiTextArea\n * [(ngModel)]=\"value\"\n * [readonly]=\"isReadonly\"\n * [disabled]=\"isDisabled\"\n * [isInvalid]=\"hasError\" />\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea[euiTextArea]',\n styleUrls: ['./styles/_index.scss'],\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EuiTextareaComponent), multi: true }],\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: ['euiDisabled', 'euiDanger'],\n },\n ],\n})\nexport class EuiTextareaComponent implements OnInit, OnDestroy, DoCheck, OnChanges, ControlValueAccessor {\n /**\n * Static counter used to generate unique IDs for textarea instances\n * @static\n */\n static idCounter = 0;\n\n /**\n * Event emitter that fires when the number of text rows in the textarea changes\n */\n @Output() rowsChange = new EventEmitter<number>();\n\n @HostBinding('class')\n public get class(): string {\n return [this.isInvalid ? 'eui-textarea--invalid' : '', this.baseStatesDirective.getCssClasses('eui-textarea')].join(' ').trim();\n }\n\n /**\n * The disabled state of the textarea\n * @description When set to true, prevents user interaction with the textarea.\n * This can be controlled either directly or through form control binding.\n */\n @HostBinding('attr.disabled')\n @Input()\n public get disabled(): boolean | null {\n return this._disabled ? true : null;\n }\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public set disabled(state: any) {\n // in case it's controlled by NgControl override\n this._disabled = coerceBooleanProperty(state);\n // set BaseDirective Attribute\n this.baseStatesDirective.euiDisabled = this._disabled;\n }\n /**\n * The readonly state of the textarea\n * @description When true, displays the textarea content in a read-only format\n * with special styling.\n */\n @HostBinding('attr.readonly')\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public get readonly(): any {\n return this._readonly || undefined;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public set readonly(state: any) {\n this._readonly = coerceBooleanProperty(state);\n }\n /**\n * Unique identifier for the textarea\n * @default eui-textarea_{increment}\n */\n @HostBinding('attr.id')\n @Input()\n id = `eui-textarea_${EuiTextareaComponent.idCounter++}`;\n\n /**\n * Flag indicating if the textarea is in an invalid state\n * @description When true, applies error styling to the textarea.\n * This can be set manually or automatically through form validation.\n */\n @Input({ transform: booleanAttribute }) isInvalid: boolean;\n /**\n * @description\n * Data attribute for end-to-end testing\n * @default eui-textarea\n */\n @HostBinding('attr.data-e2e') @Input() e2eAttr = 'eui-textarea';\n protected _readonly: boolean;\n\n protected hostEl: HTMLTextAreaElement;\n\n protected hostParentEl: HTMLElement;\n protected hostWrapperEl: HTMLDivElement;\n protected valueContainerEl: HTMLDivElement;\n private _disabled: boolean;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private control: FormControl | NgControl;\n private rows = signal(0);\n\n constructor(\n private injector: Injector,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private baseStatesDirective: BaseStatesDirective,\n ) {\n effect(() => {\n this.rowsChange.emit(this.rows());\n });\n }\n\n /**\n * Handles input changes in the textarea\n * @param {string} value - The new value of the textarea\n * @description Updates the number of rows and triggers change detection\n */\n @HostListener('input', ['$event.target.value'])\n public onInputChange(value: string): void {\n // signal rows update\n this.rows.set(this.hostEl.value.split('\\n').length)\n this.onChange(value);\n }\n\n /**\n * Handles blur events on the textarea\n * @param {string} value - The current value of the textarea\n * @description Marks the control as touched and triggers validation\n */\n @HostListener('blur', ['$event.target.value'])\n public onBlur(value: string): void {\n this.onTouched(value);\n }\n\n /**\n * @description\n * Lifecycle hook that initializes the component. Sets up DOM elements,\n * initializes form control integration, and establishes state management\n */\n ngOnInit(): void {\n this.hostEl = this._elementRef.nativeElement;\n this.hostParentEl = this.hostEl.parentElement;\n this.hostWrapperEl = this.createHostWrapperContainer();\n this.valueContainerEl = this.createValueContainer();\n\n this.handleMarkup();\n // extract the FormControl or NgControl\n this.control = (this.injector as Injector).get(NgControl, null, { optional: true });\n if (this.control instanceof FormControlName) {\n this.control = (this.injector as Injector).get(FormGroupDirective).getControl(this.control);\n } else if (this.control instanceof FormControlDirective) {\n this.control = this.control.form as FormControl;\n }\n // sets invalid state if control is present\n if (this.control instanceof FormControl || this.control instanceof NgControl) {\n this.disabled = this.control.disabled;\n this.isInvalid = this.control.dirty && this.control.touched && this.control.invalid;\n if (this.control instanceof FormControl) {\n this.control.statusChanges.pipe(takeUntil(this.destroy$)).subscribe((status) => {\n this.isInvalid = status === 'INVALID';\n this.disabled = status === 'DISABLED';\n this.baseStatesDirective.euiDanger = this.isInvalid;\n });\n }\n }\n }\n\n /**\n * @description\n * Lifecycle hook that checks for changes in form control state\n * Updates invalid state based on form control validation\n */\n ngDoCheck(): void {\n if (this.control instanceof NgControl || this.control instanceof FormControl) {\n // TODO: Delete when https://github.com/angular/angular/issues/30275 is resolved\n this.isInvalid = this.control.invalid && this.control.touched;\n this.baseStatesDirective.euiDanger = this.isInvalid;\n }\n }\n\n /**\n * @description\n * Lifecycle hook that handles changes to component inputs\n * @param {SimpleChanges} changes - Object containing changed properties\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['readonly']) {\n const readonly = changes['readonly'].currentValue;\n\n if (this.hostWrapperEl && this.valueContainerEl) {\n this.hostWrapperEl.classList.toggle('eui-textarea__wrapper--readonly', !!readonly);\n }\n if (this.hostEl && this.valueContainerEl) {\n this.hostEl.classList.toggle('eui-textarea--readonly', !!readonly);\n this.valueContainerEl.innerText = this.hostEl.value;\n }\n }\n if (changes['euiDisabled']) {\n if (this.control instanceof FormControl) {\n // eslint-disable-next-line\n changes['euiDisabled'].currentValue ? this.control.disable() : this.control.enable();\n } else {\n this.setDisabledState(changes['euiDisabled'].currentValue);\n }\n }\n if(changes['isInvalid']) {\n this.baseStatesDirective.euiDanger = changes['isInvalid'].currentValue;\n }\n }\n\n /**\n * @description\n * Lifecycle hook that cleans up component resources\n * Completes observables and removes generated DOM elements\n */\n ngOnDestroy(): void {\n this.destroy$.complete();\n this.destroy$.unsubscribe();\n // cleanup DOM leftovers\n if (this.valueContainerEl) {\n try {\n this._renderer.removeChild(this.hostEl.parentElement, this.valueContainerEl);\n } catch (e) {\n console.error(e);\n }\n }\n if (this.hostWrapperEl) {\n try {\n this._renderer.removeChild(this.hostParentEl, this.hostWrapperEl);\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n /**\n * @description\n * ControlValueAccessor implementation for writing values\n * @param {unknown} obj - The value to write to the textarea\n */\n writeValue(obj: unknown): void {\n if (this.valueContainerEl) {\n this._renderer.setProperty(this.valueContainerEl, 'innerText', obj || null);\n }\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', obj || null);\n // signal rows update\n this.rows.set(this.hostEl.value.split('\\n').length)\n }\n\n /**\n * @description\n * Registers the callback function for change events\n * @param {Function} fn - The callback function\n */\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n /**\n * @description\n * Registers the callback function for touched events\n * @param {Function} fn - The callback function\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * @description\n * Sets the disabled state of the textarea\n * @param {boolean} isDisabled - The disabled state to set\n */\n setDisabledState(isDisabled: boolean): void {\n if (this.hostEl) {\n this._renderer.setProperty(this.hostEl, 'disabled', isDisabled);\n }\n }\n\n protected onChange(_: unknown): void {\n this.writeValue(_);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected onTouched(_: unknown): void {\n if (this.control) {\n this.isInvalid = this.control.invalid;\n }\n }\n\n /**\n * @description\n * Creates the container for the textarea element\n * @returns {HTMLDivElement} The created wrapper container element\n * @private\n */\n private createHostWrapperContainer(): HTMLDivElement {\n const wrapper = this._renderer.createElement('div');\n this._renderer.addClass(wrapper, 'eui-textarea__wrapper');\n if (this.readonly) {\n this._renderer.addClass(wrapper, 'eui-textarea__wrapper--readonly');\n this._renderer.addClass(this.hostEl, 'eui-textarea--readonly');\n } else {\n this._renderer.removeClass(wrapper, 'eui-textarea__wrapper--readonly');\n this._renderer.removeClass(this.hostEl, 'eui-textarea--readonly');\n }\n\n return wrapper;\n }\n\n /**\n * @description\n * Creates the container for displaying readonly values\n * @returns {HTMLDivElement} The created value container element\n * @private\n */\n private createValueContainer(): HTMLDivElement {\n const valueContainer = this._renderer.createElement('div');\n this._renderer.addClass(valueContainer, 'eui-textarea__value-container');\n this._renderer.setProperty(valueContainer, 'innerText', this.hostEl.value);\n return valueContainer;\n }\n\n /**\n * @description\n * Handles the DOM manipulation for the textarea structure\n * Wraps the textarea in necessary containers and adds\n * the readonly value display element\n *\n * @private\n */\n private handleMarkup(): void {\n if (this.hostParentEl != null) {\n this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);\n this.hostWrapperEl.appendChild(this.hostEl);\n this.hostWrapperEl.appendChild(this.valueContainerEl);\n }\n }\n}\n","/* eslint-disable @angular-eslint/directive-selector */\nimport {\n Directive,\n OnInit,\n OnDestroy,\n Input,\n ElementRef,\n HostListener,\n AfterViewInit,\n Optional,\n Renderer2,\n OnChanges,\n booleanAttribute,\n numberAttribute,\n SimpleChanges,\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, startWith, takeUntil } from 'rxjs/operators';\nimport { NgControl } from '@angular/forms';\n\n/**\n * A directive that automatically adjusts the height of a textarea based on its content.\n *\n * @directive\n * @selector textarea[autoResize]\n * @description\n * The AutoResizeDirective automatically adjusts the height of a textarea element as the user types,\n * ensuring that all content is visible without requiring manual resizing or scrolling.\n * It supports minimum and maximum row constraints and can be enabled/disabled dynamically.\n *\n * @example\n * ```html\n * <textarea autoResize [minRows]=\"2\" [maxRows]=\"5\"></textarea>\n * ```\n */\n@Directive({\n selector: 'textarea[autoResize]',\n standalone: true,\n})\nexport class AutoResizeDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * @description\n * Controls whether the auto-resize functionality is enabled.\n * When true, the textarea will automatically adjust its height based on content.\n * When false, the textarea will behave normally.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) autoResize = true;\n\n /**\n * @description\n * Sets the minimum number of rows for the textarea.\n * This value determines the initial height of the textarea.\n *\n * @param minRows - The minimum number of rows to display\n */\n @Input()\n set minRows(minRows: number | string) {\n this.defaultRows = coerceNumberProperty(minRows);\n }\n /**\n * @description\n * Sets the maximum number of rows for the textarea.\n * When set to a value greater than 0, the textarea will not grow beyond this number of rows\n * and will show scrollbars if necessary.\n * When set to 0, there is no maximum limit.\n *\n * @default 0\n */\n @Input({ transform: numberAttribute }) maxRows = 0;\n\n private defaultRows = 1;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private observer: MutationObserver;\n\n constructor(\n protected el: ElementRef,\n protected renderer: Renderer2,\n @Optional() protected control: NgControl,\n ) {}\n\n /**\n * Event handler for input events on the textarea.\n * Triggers the resize calculation when the content changes.\n *\n * @internal\n */\n @HostListener('input', ['$event.target'])\n onInput(): void {\n this.resize();\n }\n\n /**\n * Initializes the directive by setting up window resize event handling\n * and mutation observer for readonly attribute changes.\n *\n * @internal\n */\n ngOnInit(): void {\n fromEvent(window, 'resize')\n .pipe(takeUntil(this.destroy$), debounceTime(300))\n .subscribe(() => this.resize());\n\n // Create an observer instance linked to the callback function\n this.observer = new MutationObserver(this.readonlyMutationObserver.bind(this));\n\n // Start observing the target node for configured mutations\n this.observer.observe(this.el.nativeElement, { attributes: true });\n }\n\n /**\n * Handles changes to the directive's inputs, particularly the autoResize property.\n * Updates the textarea's appearance and behavior accordingly.\n *\n * @param changes - Angular SimpleChanges object containing changed properties\n * @internal\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['autoResize']) {\n const enable = changes['autoResize'].currentValue || this.autoResize;\n this.renderer.setProperty(this.el.nativeElement, 'rows', this.defaultRows);\n this.renderer.setStyle(this.el.nativeElement, 'overflow', enable ? 'hidden' : '');\n this.renderer.setStyle(this.el.nativeElement, 'resize', enable ? 'none' : '');\n if (enable) {\n this.resize();\n }\n }\n }\n\n /**\n * Performs initial resize after view initialization and sets up form control value change handling if applicable.\n *\n * @internal\n */\n ngAfterViewInit(): void {\n if (this.autoResize) {\n if (this.control) {\n this.handleFormControlChanges();\n } else {\n this.resize();\n }\n }\n }\n\n /**\n * Cleans up subscriptions and disconnects observers when the directive is destroyed.\n *\n * @internal\n */\n ngOnDestroy(): void {\n this.destroy$.complete();\n this.destroy$.unsubscribe();\n this.observer.disconnect();\n }\n\n /**\n * Calculates and sets the appropriate height for the textarea based on its content.\n * This method creates a temporary clone of the textarea to measure the required height,\n * taking into account minRows and maxRows constraints.\n *\n * The calculation process:\n * 1. Creates a hidden clone of the textarea\n * 2. Sets the clone's width to match the original\n * 3. Measures the required height based on content\n * 4. Applies maxRows constraint if specified\n * 5. Updates the original textarea's height\n *\n * @public\n */\n public resize(): void {\n if (this.autoResize) {\n // clone element\n const clone = this.el.nativeElement.cloneNode(true);\n const parent = this.el.nativeElement.parentNode;\n clone.style.width = this.el.nativeElement.offsetWidth + 'px';\n clone.style.visibility = 'hidden';\n clone.style.position = 'absolute';\n clone.textContent = this.el.nativeElement.value;\n parent.appendChild(clone);\n clone.style['overflow-y'] = 'hidden';\n clone.style.height = 'auto';\n const cloneHeight = clone.scrollHeight;\n\n this.renderer.setStyle(clone, 'height', cloneHeight);\n // calculate height\n const { offsetHeight } = clone;\n let { scrollHeight } = clone;\n // Enforce maxRows limit if set\n if (this.maxRows > 0) {\n const lineHeight = parseInt(getComputedStyle(clone).lineHeight, 10);\n const maxHeight = lineHeight * this.maxRows;\n scrollHeight = Math.min(scrollHeight, maxHeight);\n if(scrollHeight >= maxHeight) {\n this.renderer.removeStyle(this.el.nativeElement, 'overflow'); // Restore overflow behavior\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'overflow', 'hidden'); // Hide scrollbars during adjustment\n }\n }\n let height = offsetHeight > scrollHeight ? offsetHeight : scrollHeight;\n height = height <= 0 ? 'auto' : `${height}px`;\n // remove clone\n parent.removeChild(clone);\n // set height\n this.renderer.setStyle(this.el.nativeElement, 'height', height);\n }\n }\n\n /**\n * Sets up subscription to form control value changes to trigger resize when the value\n * is changed programmatically through the form control.\n *\n * @protected\n */\n protected handleFormControlChanges(): void {\n // in case value changed manually through control, call resize()\n // startWith is being used to cause resize to be called in case of late subscription after value has changed\n this.control.valueChanges.pipe(takeUntil(this.destroy$), startWith('')).subscribe(() => this.resize());\n }\n\n /**\n * Mutation observer callback that handles changes to the readonly attribute\n * and triggers resize when necessary.\n *\n * @param mutationsList - List of mutations that occurred\n * @private\n */\n private readonlyMutationObserver(mutationsList: MutationRecord[]): void {\n // Use traditional 'for loops' for IE 11\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'readonly') {\n this.resize();\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiTextareaComponent } from './eui-textarea.component';\nimport { AutoResizeDirective } from './auto-resize.directive';\n\n/**\n * @description\n * A module that provides textarea functionality with auto-resizing capabilities.\n * This module encapsulates the EuiTextareaComponent and AutoResizeDirective to provide\n * a cohesive textarea solution for Angular applications.\n *\n * @usageNotes\n * To use this module, import it into your feature module:\n * ```typescript\n * import { EuiTextAreaModule } from './path-to-module/eui-textarea.module';\n *\n * @NgModule({\n * imports: [EuiTextAreaModule]\n * })\n * export class YourFeatureModule { }\n * ```\n *\n * @publicApi\n */\n@NgModule({\n imports: [CommonModule, EuiTextareaComponent, AutoResizeDirective],\n exports: [EuiTextareaComponent, AutoResizeDirective],\n})\nexport class EuiTextAreaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { booleanAttribute, Component, ViewEncapsulation, ViewChild, Input, NgModule } from '@angular/core';
2
+ import { booleanAttribute, Input, ViewChild, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
3
  import * as i2 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1 from '@eui/core';
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { booleanAttribute, Component, HostBinding, Input, forwardRef, Host, Optional, Inject, NgModule } from '@angular/core';
2
+ import { booleanAttribute, Input, HostBinding, Component, forwardRef, Host, Optional, Inject, NgModule } from '@angular/core';
3
3
  import * as i1 from '@eui/components/shared';
4
4
  import { BaseStatesDirective } from '@eui/components/shared';
5
5
  import * as i2 from '@angular/common';