@libs-ui/components-inputs-input 0.2.356-42 → 0.2.356-43

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/README.md CHANGED
@@ -1,53 +1,38 @@
1
1
  # @libs-ui/components-inputs-input
2
2
 
3
- > Universal input component hỗ trợ text, number, textarea với validation và customization đầy đủ
4
-
5
- **Version:** 0.2.355-14
3
+ > Universal input component hỗ trợ text, number, textarea và iframe-textarea với validation, formatting và customization đầy đủ.
6
4
 
7
5
  ## Giới thiệu
8
6
 
9
- `LibsUiComponentsInputsInputComponent` là một standalone Angular component đa năng cho việc nhập liệu. Component hỗ trợ nhiều loại dữ liệu (string, int, float, bigint), nhiều tag (input, textarea, iframe-textarea), khả năng tùy biến cao với validation, icons, templates,external controls.
7
+ `LibsUiComponentsInputsInputComponent` là Angular standalone component đa năng cho việc nhập liệu. Component hỗ trợ 4 kiểu dữ liệu (`string`, `int`, `float`, `bigint`), 3 loại tag (`input`, `textarea`, `iframe-textarea`), tự động format number theo locale (VI/EN), auto-resize textarea, cung cấp API điều khiển ngoài qua `FunctionsControl`. Tích hợp sẵn OnPush Change Detection Angular Signals.
10
8
 
11
- ### Tính năng
9
+ ## Tính năng
12
10
 
13
- - ✅ Hỗ trợ nhiều data types: string, int, float, bigint
14
- - ✅ Hỗ trợ nhiều tag types: input, textarea, iframe-textarea
15
- - ✅ Auto-resize cho textarea
16
- - ✅ Number formatting theo ngôn ngữ (VI/EN)
17
- - ✅ Min/Max value validation cho number
18
- - ✅ Character count display
19
- - ✅ Icon left/right với popover
20
- - ✅ Template slots (left/right bottom)
21
- - ✅ Up/Down buttons cho number input
22
- - ✅ Drag & drop file support
23
- - ✅ External control via FunctionsControl
24
- - ✅ OnPush Change Detection
25
- - ✅ Angular Signals
11
+ - ✅ Hỗ trợ 4 kiểu dữ liệu: `string`, `int`, `float`, `bigint`
12
+ - ✅ Hỗ trợ 3 loại tag: `input`, `textarea`, `iframe-textarea`
13
+ - ✅ Tự động format number theo ngôn ngữ (VI dùng `.` phân cách nghìn, EN dùng `,`)
14
+ - ✅ Auto-resize textarea theo nội dung (min/max height có thể cấu hình)
15
+ - ✅ Validation min/max value cho number input
16
+ - ✅ Hiển thị character count (`showCount`)
17
+ - ✅ Icon left/right kèm popover tooltip
18
+ - ✅ Template slot tùy chỉnh dưới input (trái/phải)
19
+ - ✅ Nút tăng/giảm (up/down) cho number input
20
+ - ✅ Drag & drop file vào input
21
+ - ✅ Điều khiển từ bên ngoài qua `FunctionsControl` (focus, blur, insert, reset, selectAll)
22
+ - ✅ `iframe-textarea`: lập CSS toàn cục, style riêng qua `iframeTextareaCustomStyle`
23
+ - ✅ OnPush Change Detection + Angular Signals
26
24
 
27
25
  ## Khi nào sử dụng
28
26
 
29
27
  - Cần input field cơ bản cho text hoặc number
30
- - Cần textarea với auto-resize
31
- - Cần format number theo locale (VI/EN)
28
+ - Cần textarea tự động co giãn theo nội dung
29
+ - Cần format number theo locale VI/EN
32
30
  - Cần validation min/max cho number input
33
- - Cần hiển thị character count
34
- - Cần custom icons với popover
35
- - Cần control input từ component cha
36
- - Cần drag & drop file vào input
37
-
38
- ## Important Notes
39
-
40
- ⚠️ **Data Type Handling**: Component tự động format number theo ngôn ngữ hiện tại (VI dùng dấu `.` cho thousands, EN dùng `,`).
41
-
42
- ⚠️ **Textarea Auto-resize**: Khi dùng `tagInput="textarea"`, component tự động điều chỉnh height dựa trên content.
43
-
44
- ⚠️ **Number Precision**:
45
-
46
- - `int`: max 16-17 digits
47
- - `float`: max 15 digits (font) + decimals
48
- - `bigint`: configurable via `maxLengthNumberCount` và `fixedFloat`
49
-
50
- ⚠️ **Value Model**: `value` là model (two-way binding), component tự động parse và emit theo `dataType`.
31
+ - Cần hiển thị số ký tự đã nhập
32
+ - Cần custom icon trái/phải với popover tooltip
33
+ - Cần điều khiển input từ component cha (focus, insert text, reset)
34
+ - Cần drag & drop file vào vùng input
35
+ - Cần cô lập editor content khỏi CSS toàn cục (dùng `iframe-textarea`)
51
36
 
52
37
  ## Cài đặt
53
38
 
@@ -67,17 +52,43 @@ import { LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs
67
52
  export class YourComponent {}
68
53
  ```
69
54
 
70
- ## dụ
55
+ Import thêm types/interfaces khi cần:
56
+
57
+ ```typescript
58
+ import {
59
+ LibsUiComponentsInputsInputComponent,
60
+ IInputFunctionControlEvent,
61
+ IFocusAndBlurEvent,
62
+ IIframeTextareaCustomStyle,
63
+ TYPE_DATA_TYPE_INPUT,
64
+ TYPE_TAG_INPUT,
65
+ TYPE_INPUT,
66
+ TYPE_INPUT_RESIZE_MODE,
67
+ TYPE_MODE_INPUT,
68
+ } from '@libs-ui/components-inputs-input';
69
+ ```
70
+
71
+ ## Ví dụ sử dụng
71
72
 
72
73
  ### Basic Text Input
73
74
 
74
75
  ```html
75
76
  <libs_ui-components-inputs-input
76
77
  [(value)]="textValue"
77
- [placeholder]="'Enter text'"
78
- (outChange)="onTextChange($event)" />
78
+ [placeholder]="'Nhập nội dung'"
79
+ (outChange)="handlerTextChange($event)" />
80
+ ```
81
+
82
+ ```typescript
83
+ protected textValue = signal('');
84
+
85
+ handlerTextChange(value: string): void {
86
+ // value đã được emit
87
+ }
79
88
  ```
80
89
 
90
+ ---
91
+
81
92
  ### Number Input với Min/Max
82
93
 
83
94
  ```html
@@ -86,179 +97,451 @@ export class YourComponent {}
86
97
  [(value)]="numberValue"
87
98
  [minValueNumber]="0"
88
99
  [maxValueNumber]="100"
89
- [placeholder]="'0-100'" />
100
+ [placeholder]="'Nhập số 0-100'"
101
+ (outChange)="handlerNumberChange($event)" />
102
+ ```
103
+
104
+ ```typescript
105
+ protected numberValue = signal<number>(0);
106
+
107
+ handlerNumberChange(value: number): void {
108
+ // value là number đã được parse
109
+ }
110
+ ```
111
+
112
+ ---
113
+
114
+ ### Float Input với Fixed Decimal và Giá trị âm
115
+
116
+ ```html
117
+ <libs_ui-components-inputs-input
118
+ [dataType]="'float'"
119
+ [(value)]="floatValue"
120
+ [fixedFloat]="2"
121
+ [acceptNegativeValue]="true"
122
+ [placeholder]="'Nhập số thực (vd: -99.99)'"
123
+ (outChange)="handlerFloatChange($event)" />
124
+ ```
125
+
126
+ ```typescript
127
+ protected floatValue = signal<number>(0);
128
+
129
+ handlerFloatChange(value: number): void {
130
+ // value là số thực, tối đa 2 chữ số thập phân
131
+ }
90
132
  ```
91
133
 
92
- ### Textarea với Auto-resize
134
+ ---
135
+
136
+ ### Bigint Input với Precision tùy chỉnh
137
+
138
+ ```html
139
+ <libs_ui-components-inputs-input
140
+ [dataType]="'bigint'"
141
+ [(value)]="bigintValue"
142
+ [maxLengthNumberCount]="19"
143
+ [fixedFloat]="4"
144
+ [placeholder]="'Nhập giá trị lớn'"
145
+ (outChange)="handlerBigintChange($event)" />
146
+ ```
147
+
148
+ ```typescript
149
+ protected bigintValue = signal('');
150
+
151
+ handlerBigintChange(value: string): void {
152
+ // bigint trả về string thay vì number
153
+ }
154
+ ```
155
+
156
+ ---
157
+
158
+ ### Textarea với Auto-resize và Character Count
93
159
 
94
160
  ```html
95
161
  <libs_ui-components-inputs-input
96
162
  [tagInput]="'textarea'"
97
163
  [(value)]="textareaValue"
98
- [minHeightTextArea]="100"
164
+ [defaultHeight]="80"
165
+ [minHeightTextArea]="80"
99
166
  [maxHeightTextArea]="300"
167
+ [maxLength]="500"
100
168
  [showCount]="true"
101
- [maxLength]="500" />
169
+ [placeholder]="'Nhập mô tả...'"
170
+ (outChange)="handlerTextareaChange($event)"
171
+ (outHeightAreaChange)="handlerHeightChange($event)" />
172
+ ```
173
+
174
+ ```typescript
175
+ protected textareaValue = signal('');
176
+
177
+ handlerTextareaChange(value: string): void {
178
+ // value là chuỗi text
179
+ }
180
+
181
+ handlerHeightChange(data: { isChange: boolean; height: number }): void {
182
+ // data.height là chiều cao mới của textarea
183
+ }
102
184
  ```
103
185
 
104
- ### Float Input với Fixed Decimal
186
+ ---
187
+
188
+ ### Password Input
105
189
 
106
190
  ```html
107
191
  <libs_ui-components-inputs-input
108
- [dataType]="'float'"
109
- [(value)]="floatValue"
110
- [fixedFloat]="2"
111
- [acceptNegativeValue]="true" />
192
+ [typeInput]="'password'"
193
+ [(value)]="passwordValue"
194
+ [resetAutoCompletePassword]="true"
195
+ [placeholder]="'Nhập mật khẩu'"
196
+ (outChange)="handlerPasswordChange($event)" />
112
197
  ```
113
198
 
114
- ### Input với Icons
199
+ ```typescript
200
+ protected passwordValue = signal('');
201
+
202
+ handlerPasswordChange(value: string): void {
203
+ // xử lý password
204
+ }
205
+ ```
206
+
207
+ ---
208
+
209
+ ### Input với Icon Left/Right và Popover
115
210
 
116
211
  ```html
117
212
  <libs_ui-components-inputs-input
118
213
  [(value)]="searchValue"
119
214
  [iconLeftClass]="'libs-ui-icon-search'"
120
215
  [iconRightClass]="'libs-ui-icon-close'"
121
- [popoverContentIconLeft]="'Search for items'"
122
- (outIconLeft)="onSearchClick()"
123
- (outIconRight)="onClearClick()" />
216
+ [popoverContentIconLeft]="'Tìm kiếm'"
217
+ [popoverContentIconRight]="'Xóa nội dung'"
218
+ [placeholder]="'Tìm kiếm...'"
219
+ (outChange)="handlerSearchChange($event)"
220
+ (outIconLeft)="handlerIconLeftClick($event)"
221
+ (outIconRight)="handlerIconRightClick($event)" />
124
222
  ```
125
223
 
126
- ### External Control
224
+ ```typescript
225
+ protected searchValue = signal('');
226
+
227
+ handlerSearchChange(value: string): void {
228
+ // xử lý tìm kiếm
229
+ }
230
+
231
+ handlerIconLeftClick(eventName: string): void {
232
+ // eventName = 'click'
233
+ }
234
+
235
+ handlerIconRightClick(eventName: string): void {
236
+ this.searchValue.set('');
237
+ }
238
+ ```
239
+
240
+ ---
241
+
242
+ ### External Control qua FunctionsControl
127
243
 
128
244
  ```html
129
245
  <libs_ui-components-inputs-input
130
246
  [(value)]="controlledValue"
131
- (outFunctionsControl)="onFunctionsControl($event)" />
247
+ [placeholder]="'Điều khiển từ bên ngoài'"
248
+ (outFunctionsControl)="handlerFunctionsControl($event)" />
132
249
 
133
- <button (click)="focusInput()">Focus</button>
134
- <button (click)="insertText('Hello')">Insert Text</button>
250
+ <button (click)="handlerFocusInput()">Focus</button>
251
+ <button (click)="handlerInsertText()">Insert "Hello"</button>
252
+ <button (click)="handlerResetInput()">Reset</button>
253
+ <button (click)="handlerSelectAll()">Select All</button>
135
254
  ```
136
255
 
137
256
  ```typescript
138
- functionControl = signal<IInputFunctionControlEvent | null>(null);
257
+ import { signal } from '@angular/core';
258
+ import { IInputFunctionControlEvent } from '@libs-ui/components-inputs-input';
139
259
 
140
- onFunctionsControl(control: IInputFunctionControlEvent) {
260
+ protected controlledValue = signal('');
261
+ private functionControl = signal<IInputFunctionControlEvent | null>(null);
262
+
263
+ handlerFunctionsControl(control: IInputFunctionControlEvent): void {
141
264
  this.functionControl.set(control);
142
265
  }
143
266
 
144
- async focusInput() {
267
+ async handlerFocusInput(): Promise<void> {
145
268
  await this.functionControl()?.focus();
146
269
  }
147
270
 
148
- async insertText(text: string) {
149
- await this.functionControl()?.insertContent(text);
271
+ async handlerInsertText(): Promise<void> {
272
+ await this.functionControl()?.insertContent('Hello');
273
+ }
274
+
275
+ async handlerResetInput(): Promise<void> {
276
+ await this.functionControl()?.resetValue();
277
+ }
278
+
279
+ async handlerSelectAll(): Promise<void> {
280
+ await this.functionControl()?.selectAllContent();
150
281
  }
151
282
  ```
152
283
 
153
- ## API
154
-
155
- ### Inputs (Most Common)
156
-
157
- | Property | Type | Default | Description |
158
- | --------------------------------------------- | -------------------------------- | -------------------------- | -------------------------------------------- |
159
- | Property | Type | Default | Description |
160
- | -------------------------------------------- | -------------------------------- | -------------------------- | -------------------------------------------- |
161
- | `[acceptNegativeValue]` | `boolean` | `false` | Cho phép giá trị âm |
162
- | `[acceptOnlyClickIcon]` | `boolean` | `false` | Chỉ cho phép click vào icon |
163
- | `[autoAddZeroLessThan10InTypeInt]` | `boolean` | `false` | Tự động thêm số 0 nếu < 10 (int) |
164
- | `[autoRemoveEmoji]` | `boolean` | `false` | Tự động loại bỏ emoji |
165
- | `[backgroundNone]` | `boolean` | `false` | Trong suốt background |
166
- | `[blurTimeOut]` | `number` | `32` | Delay time cho blur event |
167
- | `[borderError]` | `boolean` | `false` | Hiển thị border error |
168
- | `[classContainerBottomInput]` | `string` | `' '` | Class cho container dưới input |
169
- | `[classContainerInput]` | `string` | `'w-full'` | Class cho container input |
170
- | `[classInclude]` | `string` | `' w-full '` | Class bao ngoài component |
171
- | `[dataType]` | `TYPE_DATA_TYPE_INPUT` | `'string'` | Data type: string, int, float, bigint |
172
- | `[defaultHeight]` | `number` | `32` | Chiều cao mặc định |
173
- | `[disable]` | `boolean` | `false` | Disable mode |
174
- | `[emitEmptyInDataTypeNumber]` | `boolean` | `false` | Emit empty string khi xoá hết number |
175
- | `[fixedFloat]` | `number` | `undefined` | Số chữ số thập phân |
176
- | `[focusInput]` | `boolean` | `false` | Auto focus input |
177
- | `[focusTimeOut]` | `number` | `600` | Delay time cho focus method |
178
- | `[iconLeftClass]` | `string` | `''` | Class cho icon trái |
179
- | `[iconRightClass]` | `string` | `undefined` | Class cho icon phải |
180
- | `[iframeTextareaCustomStyle]` | `IIframeTextareaCustomStyle` | `undefined` | Custom style cho iframe textarea |
181
- | `[ignoreBlockInputMaxValue]` | `boolean` | `undefined` | Không chặn nhập quá max value |
182
- | `[ignoreStopPropagationEvent]` | `boolean` | `undefined` | Không chặn propagation event |
183
- | `[ignoreWidthInput100]` | `boolean` | `undefined` | Không set width 100% |
184
- | `[keepPlaceholderOnly]` | `boolean` | `false` | Chỉ giữ placeholder (ẩn value) |
185
- | `[keepZeroInTypeInt]` | `boolean` | `false` | Giữ số 0 ở đầu (int) |
186
- | `[maxHeightTextArea]` | `number` | `250` | Max height cho textarea |
187
- | `[maxLength]` | `number` | `undefined` | Max character length |
188
- | `[maxLengthNumberCount]` | `number` | `undefined` | Max length cho phần số (bigint) |
189
- | `[minHeightTextArea]` | `number` | `undefined` | Min height cho textarea |
190
- | `[minValueNumber]` | `number` | `undefined` | Min value cho number input |
191
- | `[maxValueNumber]` | `number` | `undefined` | Max value cho number input |
192
- | `[noBorder]` | `boolean` | `false` | Ẩn border |
193
- | `[onlyAcceptNegativeValue]` | `boolean` | `false` | Chỉ chấp nhận số âm |
194
- | `[placeholder]` | `string` | `' '` | Placeholder text |
195
- | `[popoverContentIconLeft]` | `string` | `''` | Popover content icon trái |
196
- | `[popoverContentIconRight]` | `string` | `''` | Popover content icon phải |
197
- | `[readonly]` | `boolean` | `false` | Readonly mode |
198
- | `[resetAutoCompletePassword]` | `boolean` | `false` | Reset autocomplete cho password |
199
- | `[resize]` | `TYPE_INPUT_RESIZE_MODE` | `'vertical'` | Resize mode |
200
- | `[selectAllTimeOut]` | `number` | `600` | Delay time cho selectAll |
201
- | `[setIconRightColorSameColorDisableReadOnly]` | `boolean` | `false` | Icon phải cùng màu disable text |
202
- | `[showCount]` | `boolean` | `false` | Hiển thị character count |
203
- | `[tabInsertContentTagInput]` | `boolean` | `false` | Cho phép dùng Tab để insert |
204
- | `[tagInput]` | `TYPE_TAG_INPUT` | `'input'` | Tag type: input, textarea, iframe-textarea |
205
- | `[templateLeftBottomInput]` | `TemplateRef<TYPE_TEMPLATE_REF>` | `undefined` | Template custom dưới trái |
206
- | `[templateRightBottomInput]` | `TemplateRef<TYPE_TEMPLATE_REF>` | `undefined` | Template custom dưới phải |
207
- | `[textAreaEnterNotNewLine]` | `boolean` | `false` | Enter không xuống dòng trong textarea |
208
- | `[typeInput]` | `TYPE_INPUT` | `'text'` | Input type: text, number, password |
209
- | `[useColorModeExist]` | `boolean` | `false` | Sử dụng màu sắc theo mode của hệ thống |
210
- | `[value]` | `string \| number` | `''` | Input value (model binding) |
211
- | `[valueUpDownNumber]` | `number` | `undefined` | Bước nhảy cho nút tăng giảm |
212
- | `[zIndexPopoverContent]` | `number` | `10` | Z-index cho popover content |
213
-
214
- **Note**: Component có 50+ inputs. Xem demo tại `/inputs/input` để biết chi tiết.
215
-
216
- ### Outputs
217
-
218
- | Property | Type | Description |
219
- | -------------------------------- | ------------------------------------------ | --------------------------------------------- |
220
- | Property | Type | Description |
221
- | -------------------------------- | ------------------------------------------ | -------------------------------------------- |
222
- | `(outChange)` | `any` | Emit khi value thay đổi (two-way binding) |
223
- | `(outChangeValueByButtonUpDown)` | `void` | Emit khi click button up/down |
224
- | `(outEnterEvent)` | `IEvent` | Emit khi nhấn Enter |
225
- | `(outFileDrop)` | `File` | Emit khi drop single file |
226
- | `(outFilesDrop)` | `Array<File>` | Emit khi drop multiple files |
227
- | `(outFocusAndBlurEvent)` | `IFocusAndBlurEvent` | Emit khi focus/blur |
228
- | `(outFunctionsControl)` | `IInputFunctionControlEvent` | Emit function controls instance |
229
- | `(outHeightAreaChange)` | `{ isChange: boolean; height: number; }` | Emit khi height textarea thay đổi auto-resize |
230
- | `(outIconLeft)` | `string` | Emit khi click icon left |
231
- | `(outIconRight)` | `string` | Emit khi click icon right |
232
- | `(outInputEvent)` | `IEvent` | Emit pure input event (native) |
233
-
234
- ### FunctionsControl Methods
235
-
236
- | Method | Description |
237
- | ---------------------------- | ------------------------- |
238
- | `focus(emitEvent?: boolean)` | Focus vào input |
239
- | `blur(emitEvent?: boolean)` | Blur khỏi input |
240
- | `insertContent(data)` | Insert content vào cursor |
241
- | `resetValue()` | Reset value về empty |
242
- | `getElementValue()` | Lấy value từ element |
243
- | `selectAllContent()` | Select all content |
244
-
245
- ## Types
284
+ ---
285
+
286
+ ### IFrame Textarea với Custom Style
287
+
288
+ ```html
289
+ <libs_ui-components-inputs-input
290
+ [tagInput]="'iframe-textarea'"
291
+ [(value)]="iframeValue"
292
+ [iframeTextareaCustomStyle]="iframeStyle"
293
+ [defaultHeight]="120"
294
+ [maxHeightTextArea]="400"
295
+ [placeholder]="'Nhập nội dung (cô lập CSS)'"
296
+ (outChange)="handlerIframeChange($event)"
297
+ (outFunctionsControl)="handlerIframeFunctionsControl($event)" />
298
+ ```
246
299
 
247
300
  ```typescript
248
- type TYPE_INPUT = 'text' | 'number' | 'password';
249
- type TYPE_DATA_TYPE_INPUT = 'string' | 'int' | 'float' | 'bigint';
301
+ import { IIframeTextareaCustomStyle, IInputFunctionControlEvent } from '@libs-ui/components-inputs-input';
302
+
303
+ protected iframeValue = signal('');
304
+ protected iframeStyle: IIframeTextareaCustomStyle = {
305
+ fontSize: '14px',
306
+ lineHeight: '1.6',
307
+ padding: '8px 12px',
308
+ color: '#333333',
309
+ backgroundColor: '#ffffff',
310
+ borderColor: '#e2e8f0',
311
+ borderRadius: '6px',
312
+ };
313
+
314
+ handlerIframeChange(value: string): void {
315
+ // value là nội dung textarea bên trong iframe
316
+ }
317
+
318
+ handlerIframeFunctionsControl(control: IInputFunctionControlEvent): void {
319
+ // lưu control để điều khiển từ bên ngoài
320
+ }
321
+ ```
322
+
323
+ ---
324
+
325
+ ### Number Input với Nút Up/Down
326
+
327
+ ```html
328
+ <libs_ui-components-inputs-input
329
+ [dataType]="'int'"
330
+ [(value)]="stepValue"
331
+ [minValueNumber]="0"
332
+ [maxValueNumber]="10"
333
+ [valueUpDownNumber]="1"
334
+ [placeholder]="'0'"
335
+ (outChange)="handlerStepChange($event)"
336
+ (outChangeValueByButtonUpDown)="handlerUpDownClick()" />
337
+ ```
338
+
339
+ ```typescript
340
+ protected stepValue = signal<number>(0);
341
+
342
+ handlerStepChange(value: number): void {
343
+ // value thay đổi
344
+ }
345
+
346
+ handlerUpDownClick(): void {
347
+ // được gọi khi click nút tăng/giảm
348
+ }
349
+ ```
350
+
351
+ ---
352
+
353
+ ### Textarea không xuống dòng khi Enter
354
+
355
+ ```html
356
+ <libs_ui-components-inputs-input
357
+ [tagInput]="'textarea'"
358
+ [(value)]="singleLineValue"
359
+ [textAreaEnterNotNewLine]="true"
360
+ [placeholder]="'Enter để submit, Shift+Enter xuống dòng'"
361
+ (outChange)="handlerChange($event)"
362
+ (outEnterEvent)="handlerEnter($event)" />
363
+ ```
364
+
365
+ ```typescript
366
+ import { IEvent } from '@libs-ui/interfaces-types';
367
+
368
+ protected singleLineValue = signal('');
369
+
370
+ handlerChange(value: string): void {
371
+ // xử lý thay đổi
372
+ }
373
+
374
+ handlerEnter(event: IEvent): void {
375
+ event.stopPropagation();
376
+ // xử lý submit khi nhấn Enter
377
+ }
378
+ ```
379
+
380
+ ---
381
+
382
+ ### Drag & Drop File vào Input
383
+
384
+ ```html
385
+ <libs_ui-components-inputs-input
386
+ [(value)]="fileDropValue"
387
+ [placeholder]="'Kéo file vào đây hoặc nhập text'"
388
+ (outChange)="handlerChange($event)"
389
+ (outFilesDrop)="handlerFilesDrop($event)"
390
+ (outFileDrop)="handlerFileDrop($event)" />
391
+ ```
392
+
393
+ ```typescript
394
+ protected fileDropValue = signal('');
395
+
396
+ handlerChange(value: string): void {
397
+ // xử lý text thay đổi
398
+ }
399
+
400
+ handlerFilesDrop(files: File[]): void {
401
+ // xử lý nhiều file drop
402
+ files.forEach(file => console.log(file.name));
403
+ }
404
+
405
+ handlerFileDrop(file: File): void {
406
+ // xử lý từng file riêng lẻ
407
+ }
408
+ ```
409
+
410
+ ## @Input()
411
+
412
+ | Input | Type | Default | Mô tả | Ví dụ |
413
+ |---|---|---|---|---|
414
+ | `[acceptNegativeValue]` | `boolean` | `false` | Cho phép nhập giá trị âm | `[acceptNegativeValue]="true"` |
415
+ | `[acceptOnlyClickIcon]` | `boolean` | `false` | Cho phép click icon kể cả khi disable/readonly | `[acceptOnlyClickIcon]="true"` |
416
+ | `[autoAddZeroLessThan10InTypeInt]` | `boolean` | `false` | Tự động thêm số 0 trước nếu giá trị < 10 (dataType=int) | `[autoAddZeroLessThan10InTypeInt]="true"` |
417
+ | `[autoRemoveEmoji]` | `boolean` | `false` | Tự động loại bỏ emoji khỏi chuỗi nhập | `[autoRemoveEmoji]="true"` |
418
+ | `[backgroundNone]` | `boolean` | `false` | Làm trong suốt background của input | `[backgroundNone]="true"` |
419
+ | `[blurTimeOut]` | `number` | `32` | Delay (ms) trước khi blur được thực thi | `[blurTimeOut]="50"` |
420
+ | `[borderError]` | `boolean` | `false` | Hiển thị border màu đỏ báo lỗi | `[borderError]="hasError()"` |
421
+ | `[classContainerBottomInput]` | `string` | `' '` | CSS class cho container bên dưới input | `[classContainerBottomInput]="'flex gap-2'"` |
422
+ | `[classContainerInput]` | `string` | `'w-full'` | CSS class cho container bọc input | `[classContainerInput]="'w-64'"` |
423
+ | `[classInclude]` | `string` | `' w-full '` | CSS class bổ sung cho element input | `[classInclude]="'text-right'"` |
424
+ | `[dataType]` | `TYPE_DATA_TYPE_INPUT` | `'string'` | Kiểu dữ liệu: `'string'` \| `'int'` \| `'float'` \| `'bigint'` | `[dataType]="'int'"` |
425
+ | `[defaultHeight]` | `number` | `32` | Chiều cao mặc định (px) | `[defaultHeight]="40"` |
426
+ | `[disable]` | `boolean` | `false` | Vô hiệu hóa input | `[disable]="isLoading()"` |
427
+ | `[emitEmptyInDataTypeNumber]` | `boolean` | `false` | Emit `undefined` khi xóa hết giá trị number | `[emitEmptyInDataTypeNumber]="true"` |
428
+ | `[(fixedFloat)]` | `number` | `undefined` | Số chữ số thập phân tối đa (dùng với float/bigint) | `[(fixedFloat)]="2"` |
429
+ | `[focusInput]` | `boolean` | `false` | Tự động focus input khi render | `[focusInput]="true"` |
430
+ | `[focusTimeOut]` | `number` | `600` | Delay (ms) trước khi focus được thực thi | `[focusTimeOut]="300"` |
431
+ | `[iconLeftClass]` | `string` | `''` | CSS class cho icon bên trái | `[iconLeftClass]="'libs-ui-icon-search'"` |
432
+ | `[iconRightClass]` | `string` | `undefined` | CSS class cho icon bên phải | `[iconRightClass]="'libs-ui-icon-close'"` |
433
+ | `[iframeTextareaCustomStyle]` | `IIframeTextareaCustomStyle` | `undefined` | Custom style cho nội dung bên trong iframe-textarea | `[iframeTextareaCustomStyle]="myStyle"` |
434
+ | `[ignoreBlockInputMaxValue]` | `boolean` | `undefined` | Không chặn nhập khi vượt quá maxValueNumber | `[ignoreBlockInputMaxValue]="true"` |
435
+ | `[ignoreStopPropagationEvent]` | `boolean` | `undefined` | Không gọi stopPropagation trên sự kiện native | `[ignoreStopPropagationEvent]="true"` |
436
+ | `[ignoreWidthInput100]` | `boolean` | `undefined` | Không áp dụng `w-full` cho element input | `[ignoreWidthInput100]="true"` |
437
+ | `[keepPlaceholderOnly]` | `boolean` | `false` | Chỉ hiển thị placeholder, ẩn giá trị thực | `[keepPlaceholderOnly]="true"` |
438
+ | `[keepZeroInTypeInt]` | `boolean` | `false` | Giữ số 0 ở đầu khi nhập (dataType=int) | `[keepZeroInTypeInt]="true"` |
439
+ | `[(maxLength)]` | `number` | `undefined` | Số ký tự tối đa được nhập | `[(maxLength)]="100"` |
440
+ | `[(maxLengthNumberCount)]` | `number` | `undefined` | Số chữ số tối đa phần nguyên (dataType=bigint) | `[(maxLengthNumberCount)]="19"` |
441
+ | `[maxHeightTextArea]` | `number` | `250` | Chiều cao tối đa textarea (px) | `[maxHeightTextArea]="400"` |
442
+ | `[(maxValueNumber)]` | `number` | `undefined` | Giá trị tối đa cho number input | `[(maxValueNumber)]="100"` |
443
+ | `[minHeightTextArea]` | `number` | `undefined` | Chiều cao tối thiểu textarea (px) | `[minHeightTextArea]="80"` |
444
+ | `[(minValueNumber)]` | `number` | `undefined` | Giá trị tối thiểu cho number input | `[(minValueNumber)]="0"` |
445
+ | `[modeInput]` | `TYPE_MODE_INPUT` | `'text'` | inputmode cho mobile keyboard: `'none'` \| `'text'` \| `'tel'` \| `'url'` \| `'email'` \| `'numeric'` \| `'decimal'` | `[modeInput]="'numeric'"` |
446
+ | `[noBorder]` | `boolean` | `false` | Ẩn border của input | `[noBorder]="true"` |
447
+ | `[onlyAcceptNegativeValue]` | `boolean` | `false` | Chỉ chấp nhận số âm (tự động set acceptNegativeValue=true) | `[onlyAcceptNegativeValue]="true"` |
448
+ | `[placeholder]` | `string` | `' '` | Placeholder text (hỗ trợ i18n key) | `[placeholder]="'i18n_enter_value'"` |
449
+ | `[popoverContentIconLeft]` | `string` | `''` | Nội dung popover khi hover icon trái | `[popoverContentIconLeft]="'Tìm kiếm'"` |
450
+ | `[popoverContentIconRight]` | `string` | `''` | Nội dung popover khi hover icon phải | `[popoverContentIconRight]="'Xóa'"` |
451
+ | `[readonly]` | `boolean` | `false` | Chỉ đọc, không cho phép chỉnh sửa | `[readonly]="isViewing()"` |
452
+ | `[resetAutoCompletePassword]` | `boolean` | `false` | Tắt autocomplete của browser (dùng cho password) | `[resetAutoCompletePassword]="true"` |
453
+ | `[resize]` | `TYPE_INPUT_RESIZE_MODE` | `'vertical'` | Chế độ resize textarea: `'auto'` \| `'vertical'` \| `'horizontal'` \| `'none'` | `[resize]="'none'"` |
454
+ | `[selectAllTimeOut]` | `number` | `600` | Delay (ms) trước khi selectAll được thực thi | `[selectAllTimeOut]="300"` |
455
+ | `[setIconRightColorSameColorDisableReadOnly]` | `boolean` | `false` | Icon phải có màu giống màu text disable/readonly | `[setIconRightColorSameColorDisableReadOnly]="true"` |
456
+ | `[showCount]` | `boolean` | `false` | Hiển thị số ký tự đã nhập (dataType=string) | `[showCount]="true"` |
457
+ | `[tabInsertContentTagInput]` | `boolean` | `false` | Cho phép dùng phím Tab để chèn ký tự tab vào input | `[tabInsertContentTagInput]="true"` |
458
+ | `[tagInput]` | `TYPE_TAG_INPUT` | `'input'` | Loại element: `'input'` \| `'textarea'` \| `'iframe-textarea'` | `[tagInput]="'textarea'"` |
459
+ | `[templateLeftBottomInput]` | `TemplateRef` | `undefined` | Template tùy chỉnh ở góc dưới trái | `[templateLeftBottomInput]="myLeftTpl"` |
460
+ | `[templateRightBottomInput]` | `TemplateRef` | `undefined` | Template tùy chỉnh ở góc dưới phải | `[templateRightBottomInput]="myRightTpl"` |
461
+ | `[textAreaEnterNotNewLine]` | `boolean` | `false` | Enter không xuống dòng trong textarea (dùng Shift+Enter để xuống dòng) | `[textAreaEnterNotNewLine]="true"` |
462
+ | `[typeInput]` | `TYPE_INPUT` | `'text'` | HTML input type: `'text'` \| `'number'` \| `'password'` | `[typeInput]="'password'"` |
463
+ | `[useColorModeExist]` | `boolean` | `false` | Áp dụng màu text theo color mode của hệ thống | `[useColorModeExist]="true"` |
464
+ | `[(value)]` | `string \| number` | `''` | Giá trị input (two-way binding qua model) | `[(value)]="myValue"` |
465
+ | `[valueUpDownNumber]` | `number` | `undefined` | Bước nhảy mỗi lần nhấn nút tăng/giảm | `[valueUpDownNumber]="5"` |
466
+ | `[zIndexPopoverContent]` | `number` | `10` | Z-index của popover content | `[zIndexPopoverContent]="100"` |
467
+
468
+ ## @Output()
469
+
470
+ | Output | Type | Mô tả | Handler TS | Binding HTML |
471
+ |---|---|---|---|---|
472
+ | `(outChange)` | `string \| number \| undefined` | Emit khi value thay đổi, đã được parse theo `dataType` | `handlerChange(value: string \| number): void { /* xử lý */ }` | `(outChange)="handlerChange($event)"` |
473
+ | `(outChangeValueByButtonUpDown)` | `void` | Emit khi người dùng click nút tăng hoặc giảm | `handlerUpDownClick(): void { /* xử lý */ }` | `(outChangeValueByButtonUpDown)="handlerUpDownClick()"` |
474
+ | `(outEnterEvent)` | `IEvent` | Emit khi nhấn phím Enter (trong textarea nếu `textAreaEnterNotNewLine=true` thì chỉ Enter không Shift) | `handlerEnter(event: IEvent): void { event.stopPropagation(); /* xử lý submit */ }` | `(outEnterEvent)="handlerEnter($event)"` |
475
+ | `(outFileDrop)` | `File` | Emit từng file riêng lẻ khi drop hoặc paste file vào input | `handlerFileDrop(file: File): void { event.stopPropagation(); /* xử lý file */ }` | `(outFileDrop)="handlerFileDrop($event)"` |
476
+ | `(outFilesDrop)` | `Array<File>` | Emit toàn bộ danh sách file khi drop hoặc paste vào input | `handlerFilesDrop(files: File[]): void { event.stopPropagation(); /* xử lý danh sách */ }` | `(outFilesDrop)="handlerFilesDrop($event)"` |
477
+ | `(outFocusAndBlurEvent)` | `IFocusAndBlurEvent` | Emit khi input được focus hoặc blur, kèm `name: 'focus' \| 'blur'` | `handlerFocusBlur(e: IFocusAndBlurEvent): void { e.event.stopPropagation(); /* xử lý */ }` | `(outFocusAndBlurEvent)="handlerFocusBlur($event)"` |
478
+ | `(outFunctionsControl)` | `IInputFunctionControlEvent` | Emit API điều khiển: focus, blur, insert, reset, selectAll | `handlerFunctionsControl(ctrl: IInputFunctionControlEvent): void { this.ctrl.set(ctrl); }` | `(outFunctionsControl)="handlerFunctionsControl($event)"` |
479
+ | `(outHeightAreaChange)` | `{ isChange: boolean; height: number }` | Emit khi chiều cao textarea thay đổi do auto-resize | `handlerHeightChange(data: { isChange: boolean; height: number }): void { /* xử lý */ }` | `(outHeightAreaChange)="handlerHeightChange($event)"` |
480
+ | `(outIconLeft)` | `string` | Emit khi click icon trái, giá trị là tên event (`'click'`) | `handlerIconLeft(eventName: string): void { eventName; /* 'click' */ }` | `(outIconLeft)="handlerIconLeft($event)"` |
481
+ | `(outIconRight)` | `string` | Emit khi click icon phải, giá trị là tên event (`'click'`) | `handlerIconRight(eventName: string): void { eventName; /* 'click' */ }` | `(outIconRight)="handlerIconRight($event)"` |
482
+ | `(outInputEvent)` | `IEvent` | Emit native input event gốc (mỗi lần DOM input event xảy ra) | `handlerInputEvent(e: IEvent): void { e.stopPropagation(); /* xử lý native event */ }` | `(outInputEvent)="handlerInputEvent($event)"` |
483
+
484
+ ## FunctionsControl API
485
+
486
+ Nhận instance `IInputFunctionControlEvent` qua output `(outFunctionsControl)`. Tất cả methods là async.
487
+
488
+ | Method | Signature | Mô tả |
489
+ |---|---|---|
490
+ | `focus` | `(emitEvent?: boolean) => Promise<void>` | Focus vào input. Nếu `emitEvent=true` thì emit `outFocusAndBlurEvent` |
491
+ | `blur` | `(emitEvent?: boolean) => Promise<void>` | Blur khỏi input. Nếu `emitEvent=true` thì emit `outFocusAndBlurEvent` |
492
+ | `insertContent` | `(data: string \| number) => Promise<void>` | Chèn nội dung vào vị trí con trỏ hiện tại |
493
+ | `resetValue` | `() => Promise<void>` | Reset value về chuỗi rỗng và emit `outChange` |
494
+ | `getElementValue` | `() => Promise<string> \| undefined` | Lấy giá trị raw từ DOM element |
495
+ | `checkAndDisableUpDownButton` | `(value: number) => Promise<void>` | Kiểm tra và cập nhật trạng thái disable của nút tăng/giảm |
496
+ | `selectAllContent` | `() => Promise<void>` | Chọn toàn bộ nội dung trong input |
497
+
498
+ ## Types & Interfaces
499
+
500
+ ```typescript
501
+ import {
502
+ TYPE_INPUT,
503
+ TYPE_DATA_TYPE_INPUT,
504
+ TYPE_TAG_INPUT,
505
+ TYPE_MODE_INPUT,
506
+ TYPE_INPUT_RESIZE_MODE,
507
+ IInputFunctionControlEvent,
508
+ IFocusAndBlurEvent,
509
+ IIframeTextareaCustomStyle,
510
+ } from '@libs-ui/components-inputs-input';
511
+
512
+ // Loại HTML element
250
513
  type TYPE_TAG_INPUT = 'input' | 'textarea' | 'iframe-textarea';
251
- type TYPE_INPUT_RESIZE_MODE = 'auto' | 'vertical' | 'horizontal' | 'none';
252
514
 
515
+ // Kiểu dữ liệu
516
+ type TYPE_DATA_TYPE_INPUT = 'string' | 'int' | 'float' | 'bigint';
517
+
518
+ // HTML input type attribute
519
+ type TYPE_INPUT = 'text' | 'number' | 'password';
520
+
521
+ // inputmode attribute (mobile keyboard)
522
+ type TYPE_MODE_INPUT = 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal';
523
+
524
+ // Chế độ resize textarea
525
+ type TYPE_INPUT_RESIZE_MODE = 'auto' | 'vertical' | 'horizontal' | 'none' | undefined;
526
+
527
+ // API điều khiển từ component cha
253
528
  interface IInputFunctionControlEvent {
254
529
  focus: (emitEvent?: boolean) => Promise<void>;
255
530
  blur: (emitEvent?: boolean) => Promise<void>;
256
531
  insertContent: (data: string | number) => Promise<void>;
257
532
  resetValue: () => Promise<void>;
258
- getElementValue: () => Promise<any> | undefined;
533
+ getElementValue: () => Promise<string> | undefined;
534
+ checkAndDisableUpDownButton: (value: number) => Promise<void>;
259
535
  selectAllContent: () => Promise<void>;
260
536
  }
261
537
 
538
+ // Event focus/blur
539
+ interface IFocusAndBlurEvent {
540
+ name: 'focus' | 'blur';
541
+ event: Event;
542
+ }
543
+
544
+ // Custom style cho iframe-textarea
262
545
  interface IIframeTextareaCustomStyle {
263
546
  borderRadius?: string;
264
547
  borderColor?: string;
@@ -271,6 +554,22 @@ interface IIframeTextareaCustomStyle {
271
554
  }
272
555
  ```
273
556
 
557
+ ## Lưu ý quan trọng
558
+
559
+ ⚠️ **Number Formatting theo Locale**: Component tự động format number theo ngôn ngữ hiện tại. Tiếng Việt (VI) dùng dấu `.` phân cách nghìn và `,` phân cách thập phân. Tiếng Anh (EN) dùng `,` phân cách nghìn và `.` phân cách thập phân.
560
+
561
+ ⚠️ **Giới hạn độ chính xác số**: `int` tối đa 16-17 chữ số, `float` tối đa 15 chữ số phần nguyên + phần thập phân, `bigint` cấu hình được qua `maxLengthNumberCount` (default 19) và `fixedFloat` (default 4).
562
+
563
+ ⚠️ **value là model (two-way binding)**: Dùng `[(value)]="mySignal"` để binding hai chiều. Output `(outChange)` emit giá trị đã được parse theo `dataType` — với `bigint` trả về `string`, các loại khác trả về `number` hoặc `string`.
564
+
565
+ ⚠️ **iframe-textarea CSS isolation**: Khi dùng `tagInput="iframe-textarea"`, content được render bên trong `<iframe>` — CSS của trang cha không áp dụng vào bên trong. Dùng `[iframeTextareaCustomStyle]` để tùy chỉnh giao diện bên trong iframe (fontSize, padding, color, borderColor...).
566
+
567
+ ⚠️ **FunctionsControl timing**: Output `(outFunctionsControl)` emit sau khi DOM element được khởi tạo xong. Lưu instance vào signal để dùng sau: `private ctrl = signal<IInputFunctionControlEvent | null>(null)`.
568
+
569
+ ⚠️ **textAreaEnterNotNewLine với Shift+Enter**: Khi `[textAreaEnterNotNewLine]="true"`, nhấn `Enter` không xuống dòng và emit `outEnterEvent`. Dùng `Shift+Enter` để xuống dòng bình thường.
570
+
571
+ ⚠️ **emitEmptyInDataTypeNumber**: Mặc định khi xóa hết giá trị number, component emit `0`. Bật `[emitEmptyInDataTypeNumber]="true"` để emit `undefined` thay vì `0`.
572
+
274
573
  ## Demo
275
574
 
276
575
  ```bash
@@ -278,7 +577,3 @@ npx nx serve core-ui
278
577
  ```
279
578
 
280
579
  Truy cập: `http://localhost:4500/inputs/input`
281
-
282
- ## License
283
-
284
- MIT
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, computed, input, model, output, viewChild, inject, Renderer2, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { signal, computed, input, model, output, viewChild, inject, Renderer2, effect, untracked, Component, ChangeDetectionStrategy } from '@angular/core';
3
3
  import { DomSanitizer } from '@angular/platform-browser';
4
4
  import { LibsUiComponentsButtonsSortComponent } from '@libs-ui/components-buttons-sort';
5
5
  import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-inputs-input.mjs","sources":["../../../../../../libs-ui/components/inputs/input/src/defines/index-iframe-area.define.ts","../../../../../../libs-ui/components/inputs/input/src/input.component.ts","../../../../../../libs-ui/components/inputs/input/src/input.component.html","../../../../../../libs-ui/components/inputs/input/src/libs-ui-components-inputs-input.ts"],"sourcesContent":["import { IIframeTextareaCustomStyle } from '../interfaces/focus-and-blur-event.interface';\n\nexport const indexInputHtml = (customStyle: IIframeTextareaCustomStyle) => `\n<!DOCTYPE html>\n<html>\n <head>\n <base href=\"/\" />\n </head>\n <style type=\"text/css\">\n \t::-webkit-scrollbar {\n\t width: 8px;\n\t height: 8px; \n\t cursor: default;\n\t}\n\t \n\t::-webkit-scrollbar-track {\n\t border-radius: 0;\n\t background: #fff;\n\t}\n\n\t \n\t::-webkit-scrollbar-track:hover {\n\t background: rgba(78, 78, 78, 0.05);\n\t}\n\n\t::-webkit-scrollbar-track:focus {\n\t background: #b3b3b3;\n\t}\n\n\t::-webkit-scrollbar-track:checked {\n\t background: #b3b3b3;\n\t}\n\t \n\t \n\t::-webkit-scrollbar-thumb {\n\t border-radius: 0;\n\t background: rgba(78, 78, 78, 0.15);\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:hover {\n\t background: #dadada;\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:focus {\n\t background: #b3b3b3;\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:checked {\n\t background: #b3b3b3;\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\tbody{\n\t\tmax-width: 100vw;\n\t\tmax-height:100vh;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toverflow: hidden;\n\t}\n\n\ttextarea{\n\t\tmax-width: 100vw;\n\t\tmax-height:100vh;\n\t\tresize: none;\n\t\tborder: none;\n\t\tborder: ${customStyle.borderColor ? ' 1px solid #e6e7ea;' : 'none'};\n\t\twidth: 100%;\n\t\tborder-radius: ${customStyle.borderRadius ?? '4px'};\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tline-height: ${customStyle.lineHeight ?? '16px'};\n\t\theight: ${customStyle.height ?? 'auto'};\n\t\tcolor: ${customStyle.color ?? '#4e4e4e'};\n\t\tpadding: ${customStyle.padding ?? '6px 12px'};\n\t\tbackground-color: ${customStyle.backgroundColor ?? '#fff'};\n\t\tfont-size: ${customStyle.fontSize ?? '12px'};\n\t\tfont-family:var(--libs-ui-font-family-name) !important;\n\t\toverflow: hidden;\n\t\tmargin: 0;\n\t\tresize: none;\n\t}\n\t${\n customStyle.borderColor\n ? `textarea:focus:not(:read-only):not(:disabled) {\n\t\tborder: 1px solid ${customStyle.borderColor};\n\t}`\n : ''\n }\n\n\ttextarea::-webkit-input-placeholder {\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:-moz-placeholder {\n\t\t/* Firefox 18- */\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea::-moz-placeholder {\n\t\t/* Firefox 19+ */\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:-ms-input-placeholder {\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:focus {\n \toutline: none;\n\t}\n\t*, ::after, ::before {\n \tbox-sizing: border-box;\n\t}\n \n </style>\n\n <body>\n\t <textarea></textarea>\n </body>\n</html>`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2, TemplateRef, computed, effect, inject, input, model, output, signal, untracked, viewChild } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ISort, LibsUiComponentsButtonsSortComponent } from '@libs-ui/components-buttons-sort';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { IEvent, IEventCustom, IString, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiConfigProjectService } from '@libs-ui/services-config-project';\nimport { UtilsCache, UtilsKeyCodeConstant, UtilsLanguageConstants, formatNumber, isNil, isTypeFile, removeEmoji, setCaretPosition, uuid, viewDataNumberByLanguage } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable, Subject, fromEvent } from 'rxjs';\nimport { debounceTime, filter, mergeMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { indexInputHtml } from './defines/index-iframe-area.define';\nimport { IFocusAndBlurEvent, IIframeTextareaCustomStyle } from './interfaces/focus-and-blur-event.interface';\nimport { IInputFunctionControlEvent } from './interfaces/function-control-event.interface';\nimport { TYPE_DATA_TYPE_INPUT, TYPE_INPUT, TYPE_INPUT_RESIZE_MODE, TYPE_MODE_INPUT, TYPE_TAG_INPUT } from './interfaces/input.interface';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n standalone: true,\n imports: [TranslateModule, NgTemplateOutlet, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsSortComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsInputsInputComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected disableAsc = signal(false);\n protected disableDesc = signal(false);\n protected htmlIframeArea = signal<SafeHtml | undefined>(undefined);\n protected countDisplay = computed(this.countDisplayComputed.bind(this));\n protected maxLengthDisplay = computed(() => `${viewDataNumberByLanguage(this.maxLength() || 0, false)}`);\n protected paddingRightCustom = signal<number | undefined>(undefined);\n protected inputIframeRef = signal<ElementRef | undefined>(undefined);\n\n private readonly DEFAULT_MAX_HEIGHT_TEXT_AREA = 250;\n private readonly charFirstIsZero = signal<boolean>(false);\n private readonly preHeightArea = signal<number>(0);\n private iframeRef: HTMLIFrameElement | undefined;\n private readonly dataTextPaste = signal<string>('');\n private readonly onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly tagInput = input<TYPE_TAG_INPUT, TYPE_TAG_INPUT | undefined>('input', { transform: (value) => value || 'input' });\n readonly dataType = input<TYPE_DATA_TYPE_INPUT, TYPE_DATA_TYPE_INPUT | undefined>('string', { transform: (val) => val || 'string' });\n readonly typeInput = input<TYPE_INPUT, TYPE_INPUT | undefined>('text', { transform: (val) => val || 'text' });\n readonly modeInput = input<TYPE_MODE_INPUT, TYPE_MODE_INPUT | undefined>('text', { transform: (val) => val || 'text' });\n\n readonly tabInsertContentTagInput = input<boolean>(false);\n readonly textAreaEnterNotNewLine = input<boolean>(false);\n readonly emitEmptyInDataTypeNumber = input<boolean | undefined>(false);\n readonly keepZeroInTypeInt = input<boolean>(false);\n readonly autoAddZeroLessThan10InTypeInt = input<boolean | undefined>(false);\n readonly ignoreBlockInputMaxValue = input<boolean>();\n readonly maxValueNumber = model<number>();\n readonly minValueNumber = model<number>();\n readonly fixedFloat = model<number>();\n readonly acceptNegativeValue = model<boolean | undefined>(false);\n readonly valueUpDownNumber = input<number | undefined>();\n readonly classInclude = input<string, string>(' w-full ', { transform: (value) => value || ' w-full ' });\n readonly maxLength = model<number | undefined>();\n readonly readonly = input<boolean | undefined>(false);\n readonly disable = input<boolean | undefined>(false);\n readonly noBorder = input<boolean>();\n readonly backgroundNone = input<boolean | undefined>(false);\n readonly borderError = input<boolean>(false);\n readonly useColorModeExist = input<boolean | undefined>(false);\n readonly placeholder = input<string, string>(' ', { transform: (value) => value || ' ' });\n readonly keepPlaceholderOnly = input<boolean | undefined>(false);\n readonly value = model<string | number>('');\n readonly autoRemoveEmoji = input<boolean | undefined>(false);\n readonly defaultHeight = input<number, number | undefined>(32, { transform: (value) => value || 32 });\n readonly minHeightTextArea = input<number | undefined>();\n readonly maxHeightTextArea = input<number, number | undefined>(this.DEFAULT_MAX_HEIGHT_TEXT_AREA, { transform: (value) => value || this.DEFAULT_MAX_HEIGHT_TEXT_AREA });\n readonly focusTimeOut = input<number, number | undefined>(600, { transform: (value) => value ?? 600 });\n readonly selectAllTimeOut = input<number, number | undefined>(600, { transform: (value) => value ?? 600 });\n readonly blurTimeOut = input<number, number | undefined>(32, { transform: (value) => value || 32 });\n readonly zIndexPopoverContent = input<number, number | undefined>(10, { transform: (value) => value || 10 });\n readonly classContainerInput = input<string, string | undefined>('w-full', { transform: (value) => value || 'w-full' });\n readonly showCount = input<boolean>();\n readonly ignoreStopPropagationEvent = input<boolean>();\n readonly resize = input<TYPE_INPUT_RESIZE_MODE, TYPE_INPUT_RESIZE_MODE>('vertical', { transform: (value) => value || 'vertical' });\n readonly templateLeftBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly templateRightBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly classContainerBottomInput = input<string | undefined, string | undefined>(' ', { transform: (value) => value || ' ' });\n readonly ignoreWidthInput100 = input<boolean>();\n readonly iframeTextareaCustomStyle = input<IIframeTextareaCustomStyle>();\n\n readonly iconLeftClass = input<string, string | undefined>('', { transform: (value) => value || '' });\n readonly popoverContentIconLeft = input<string, string | undefined>('', { transform: (value) => value || '' });\n readonly iconRightClass = input<string | undefined>();\n readonly popoverContentIconRight = input<string, string | undefined>('', { transform: (value) => value || '' });\n readonly resetAutoCompletePassword = input<boolean, boolean | undefined>(false, { transform: (value) => value ?? false });\n readonly acceptOnlyClickIcon = input<boolean | undefined>(false);\n readonly setIconRightColorSameColorDisableReadOnly = input<boolean | undefined>(false);\n readonly onlyAcceptNegativeValue = input<boolean | undefined>(false);\n readonly maxLengthNumberCount = model<number | undefined>();\n readonly focusInput = input<boolean>(false);\n\n // #region OUTPUT\n readonly outHeightAreaChange = output<{ isChange: boolean; height: number }>();\n readonly outChange = output<any>();\n readonly outFocusAndBlurEvent = output<IFocusAndBlurEvent>();\n readonly outEnterEvent = output<IEvent>();\n readonly outInputEvent = output<IEvent>(); // emit pure event input\n readonly outIconLeft = output<string>();\n readonly outIconRight = output<string>();\n readonly outFunctionsControl = output<IInputFunctionControlEvent>();\n readonly outFilesDrop = output<Array<File>>();\n readonly outFileDrop = output<File>();\n readonly outChangeValueByButtonUpDown = output<void>();\n\n /* VIEW CHILD */\n protected inputRef = viewChild<ElementRef>('inputRef');\n protected textCountRef = viewChild<ElementRef>('textCountRef');\n protected elementRightRef = viewChild<ElementRef>('elementRightRef');\n\n // #region INJECT\n private readonly renderer = inject(Renderer2);\n private readonly configProjectService = inject(LibsUiConfigProjectService);\n private readonly translateService = inject(TranslateService);\n private readonly sanitizer = inject(DomSanitizer);\n\n constructor() {\n effect(\n () => {\n if (this.onlyAcceptNegativeValue()) {\n this.acceptNegativeValue.set(true);\n }\n if (!this.Element) {\n return;\n }\n\n if (this.dataType() === 'string') {\n if (this.Element.value !== this.value()) {\n this.init();\n }\n\n return;\n }\n this.updateMaxLengthMinMaxValueByDataType();\n const value = this.parseValueByDataType(this.Element.value);\n\n if ((this.Element.value !== '' && value === this.value()) || (this.Element.value === '' && this.emitEmptyInDataTypeNumber() && this.value() === undefined)) {\n return;\n }\n this.init();\n },\n { allowSignalWrites: true }\n );\n effect(() => {\n if (this.Element) {\n this.onDestroy.next();\n untracked(() => this.afterViewInit());\n }\n });\n }\n\n ngOnInit(): void {\n this.htmlIframeArea.set(this.sanitizer.bypassSecurityTrustHtml(indexInputHtml(this.iframeTextareaCustomStyle() || { borderColor: this.noBorder() ? '' : `${this.configProjectService.colorStepContrastFromOrigin(20)?.light}` })));\n }\n\n afterViewInit() {\n if (!this.Element) {\n return;\n }\n this.outHeightAreaChange.emit({ isChange: false, height: this.Element?.scrollHeight });\n this.outFunctionsControl.emit(this.FunctionsControl);\n this.init();\n\n this.initEvent('focus', this.ignoreStopPropagationEvent()).subscribe((e: IEvent) => this.outFocusAndBlurEvent.emit({ name: 'focus', event: e }));\n this.initEvent('blur', this.ignoreStopPropagationEvent()).subscribe((e: IEvent) => this.outFocusAndBlurEvent.emit({ name: 'blur', event: e }));\n const mouseDownEvent = this.initEvent('mousedown', this.ignoreStopPropagationEvent()).pipe(take(1));\n const keyDownEvent = this.initEvent('keydown', this.ignoreStopPropagationEvent());\n const inputEvent = this.initEvent('input', this.ignoreStopPropagationEvent());\n const cutEvent = this.initEvent('cut', this.ignoreStopPropagationEvent());\n const pasteEvent = this.initEvent('paste', this.ignoreStopPropagationEvent());\n const keyupEvent = this.initEvent('keyup', this.ignoreStopPropagationEvent());\n\n this.initEvent('click', this.ignoreStopPropagationEvent() ?? true).subscribe();\n this.initEvent('dragover', this.ignoreStopPropagationEvent())\n .pipe(\n tap((event: IEvent) => {\n event.preventDefault();\n event.stopPropagation();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n })\n )\n .subscribe();\n\n this.initEvent('drop', this.ignoreStopPropagationEvent()).subscribe(this.checkAndEmitFiles.bind(this));\n pasteEvent.subscribe(this.checkAndEmitFiles.bind(this));\n\n this.combineObservable(mouseDownEvent, pasteEvent);\n this.combineObservable(mouseDownEvent, cutEvent);\n keyDownEvent\n .pipe(\n take(1),\n tap((e: IEvent) => this.checkTypeNumber(e, 'key')),\n mergeMap(() => inputEvent),\n tap((e: IEvent) => this.checkTypeNumber(e, 'data'))\n )\n .subscribe((e: IEvent) => {\n if (this.dataType() === 'string' && this.maxLength() && (e.inputType === 'insertCompositionText' || e.inputType === 'insertText') && e.target.value?.length > (this.maxLength() || 0)) {\n e.target.value = e.target.value.slice(0, this.maxLength());\n }\n this.processEventAndEmitValue(e);\n });\n\n keyupEvent\n .pipe(\n filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.ENTER),\n filter((event: IEvent) => !this.textAreaEnterNotNewLine() || (this.textAreaEnterNotNewLine() && !event.shiftKey))\n )\n .subscribe((event: IEvent) => this.outEnterEvent.emit(event));\n\n if (this.dataType() === 'string' && (this.tagInput() !== 'input' || (this.tagInput() === 'input' && this.tabInsertContentTagInput()))) {\n keyDownEvent\n .pipe(\n filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.TAB),\n tap((event: IEvent) => event.preventDefault()),\n filter((event: IEvent) => !event.target.value || !this.maxLength() || event.target.value.length < (this.maxLength() || 25)),\n tap((event: IEvent) => {\n if (this.readonly() || this.disable()) {\n return;\n }\n this.insetValueToSelectionStart('\\t', event);\n })\n )\n .subscribe();\n }\n\n if (this.textAreaEnterNotNewLine()) {\n keyDownEvent\n .pipe(\n filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.ENTER && !event.shiftKey),\n tap((e: IEvent) => e.preventDefault())\n )\n .subscribe();\n }\n\n this.countDisplayComputed();\n }\n\n // #region FUNCTIONS\n public get FunctionsControl(): IInputFunctionControlEvent {\n return {\n focus: this.focus.bind(this),\n blur: this.blur.bind(this),\n insertContent: this.addDataToSelectionInput.bind(this),\n resetValue: this.resetValue.bind(this),\n getElementValue: this.getElementValue.bind(this),\n checkAndDisableUpDownButton: this.checkAndDisableUpDownButton.bind(this),\n selectAllContent: this.selectAllContent.bind(this),\n };\n }\n\n private updateMaxLengthMinMaxValueByDataType() {\n if (this.dataType() === 'int' || this.dataType() === 'float') {\n this.maxLength.update((value) => {\n return !value || value > 21 ? 21 : value;\n });\n this.minValueNumber.update((value) => value ?? Number.MIN_SAFE_INTEGER);\n this.maxValueNumber.update((value) => value ?? Number.MAX_SAFE_INTEGER);\n }\n if (this.dataType() === 'bigint') {\n this.maxLength.update((value) => (!value || value > 25 ? 25 : value));\n this.fixedFloat.update((value) => value ?? 4);\n this.maxLengthNumberCount.update((value) => value ?? 19);\n }\n }\n\n private async getElementValue() {\n return this.Element?.value;\n }\n\n private checkAndEmitFiles(event: IEvent) {\n const files = event.dataTransfer?.files || event.clipboardData?.files;\n const text = (event.clipboardData || (window as any).clipboardData)?.getData('text');\n\n this.dataTextPaste.set(text);\n if (!files?.length) {\n return;\n }\n if (!text) {\n event.preventDefault();\n }\n event.stopPropagation();\n const fileList = [];\n\n for (const file of Array.from(files)) {\n if (isTypeFile(file)) {\n this.outFileDrop.emit(file);\n fileList.push(file);\n }\n }\n this.outFilesDrop.emit(fileList);\n }\n\n private insetValueToSelectionStart(text: string, event: IEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.Element.setRangeText(text, this.Element.selectionStart, this.Element.selectionStart, 'end');\n this.processEventAndEmitValue(event);\n }\n\n private get Element() {\n return this.inputIframeRef()?.nativeElement || this.inputRef()?.nativeElement;\n }\n\n protected handlerChangeValue(data: ISort) {\n data.reset();\n if (this.disable() || this.readonly()) {\n return;\n }\n const operator = data.mode === 'asc' ? 1 : -1;\n let value = +this.value() || 0;\n const separator = UtilsCache.getLang() === UtilsLanguageConstants.VI ? '.' : ',';\n const splitValue = (this.value() || this.minValueNumber() || 0).toString().split(separator);\n const dataBehindSeparator = splitValue?.[1];\n\n if (this.dataType() === 'bigint') {\n value = +(splitValue?.[0] || 0);\n }\n value = value + (this.valueUpDownNumber() ?? 1) * operator;\n if (!this.acceptNegativeValue() && value < 0) {\n value = 0;\n }\n const separatorStr = dataBehindSeparator ? separator : '';\n const dataEmit = this.dataType() === 'bigint' ? `${value}${separatorStr}${dataBehindSeparator}` : value;\n this.value.set(dataEmit);\n this.outChange.emit(dataEmit);\n this.outChangeValueByButtonUpDown.emit();\n this.checkAndDisableUpDownButton(value);\n }\n\n protected handlerEventIconLeft(e: Event, eventName: string) {\n e.stopPropagation();\n if ((this.disable() || this.readonly()) && !this.acceptOnlyClickIcon()) {\n return;\n }\n this.outIconLeft.emit(eventName);\n }\n\n protected handlerEventIconRight(e: Event, eventName: string) {\n e.stopPropagation();\n if ((this.disable() || this.readonly()) && !this.acceptOnlyClickIcon()) {\n return;\n }\n this.outIconRight.emit(eventName);\n }\n\n private async checkAndDisableUpDownButton(value: number) {\n if (this.dataType() !== 'int' && this.dataType() !== 'float' && this.dataType() !== 'bigint') {\n return;\n }\n this.disableAsc.set(false);\n this.disableDesc.set(false);\n this.minValueNumber.update((value) => value ?? Number.MIN_SAFE_INTEGER);\n this.maxValueNumber.update((value) => value ?? Number.MAX_SAFE_INTEGER);\n value = value ?? 0;\n\n if (!isNil(this.maxValueNumber()) && value >= (this.maxValueNumber() ?? Number.MAX_SAFE_INTEGER)) {\n this.disableAsc.set(true);\n }\n\n if (!isNil(this.minValueNumber()) && value <= (this.minValueNumber() || 0)) {\n this.disableDesc.set(true);\n }\n }\n\n protected initEvent(eventName: string, ignoreStopPropagationEvent?: boolean): Observable<IEvent> {\n return fromEvent<IEvent>(this.Element, eventName).pipe(\n tap((e: IEvent) => {\n if (!ignoreStopPropagationEvent) {\n e.stopPropagation();\n }\n this.outInputEvent.emit(e);\n }),\n takeUntil(this.onDestroy)\n );\n }\n\n private convertValue(value: string) {\n if (value && this.dataType() === 'bigint') {\n const separator = UtilsCache.getLang() === UtilsLanguageConstants.VI ? '.' : ',';\n let [int, decimal] = value.split(separator);\n const decimalSplit = decimal ? decimal.split('') : [];\n const decimalEveryZero = decimalSplit.every((item) => item === '0');\n\n if (int === '-0' && (!decimal || decimalEveryZero)) {\n int = '0';\n }\n if (!decimal || decimalEveryZero) {\n decimal = '0';\n }\n if (decimalSplit.some((item) => item !== '0')) {\n decimalSplit.reverse();\n const decimalReverse = decimalSplit.join('');\n\n decimal = decimalReverse.replace(/(^0+)/, '').split('').reverse().join('');\n }\n\n return `${int}${separator}${decimal}`;\n }\n\n return value;\n }\n\n private init() {\n if (!this.maxLength()) {\n this.updateMaxLengthMinMaxValueByDataType();\n }\n if (!this.Element) {\n return;\n }\n let elementValue = this.convertValue(`${this.value() ?? ''}`);\n\n if (this.dataType() !== 'string') {\n elementValue = elementValue.replace(new RegExp(`[^0-9.,${this.acceptNegativeValue() ? '-' : ''}]`, 'g'), '');\n if (UtilsCache.getLang() === UtilsLanguageConstants.EN) {\n elementValue = elementValue.replace(/,/, '');\n }\n }\n this.Element.value = elementValue;\n\n const eventFake: IEventCustom = {\n preventDefault: () => {\n return;\n },\n target: this.Element,\n data: elementValue,\n fakeEvent: true,\n };\n\n this.checkTypeNumber(eventFake, 'data');\n this.processEventAndEmitValue(eventFake);\n }\n\n private processEventAndEmitValue(e: IEvent | IEventCustom): void {\n const value: any = this.parseValueByDataType(e.target.value);\n\n if (this.dataType() !== 'string' && !this.ignoreBlockInputMaxValue() && !isNil(this.maxValueNumber()) && value > (this.maxValueNumber() || 0) && this.value() < value) {\n const valueDisplay = viewDataNumberByLanguage(`${this.value()}`.replace(/\\./g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n\n return this.processEventAndEmitValue(e);\n }\n if (this.dataType() !== 'string' && isNil(value)) {\n e.target.value = 0;\n\n return this.processEventAndEmitValue(e);\n }\n\n if (e.fakeEvent && (`${this.value() ?? ''}` === `${value}` || (this.emitEmptyInDataTypeNumber() && e.target.value.trim() === ''))) {\n this.checkAndDisableUpDownButton(this.dataType() === 'bigint' ? value : +value);\n\n setTimeout(() => {\n this.calculatorHeightTextArea(e);\n }, 250);\n\n return;\n }\n this.value.set(value);\n if (this.emitEmptyInDataTypeNumber() && e.target.value.trim() === '') {\n const dataEmit = this.dataType() === 'string' ? '' : undefined;\n this.value.set(dataEmit as any);\n }\n this.outChange.emit(this.value());\n this.checkAndDisableUpDownButton(this.dataType() === 'bigint' ? value : +value);\n this.calculatorHeightTextArea(e);\n }\n\n private checkMaxLengthNumberAndSetValue(valueDisplay: string, e: IEvent | IEventCustom): boolean {\n if (isNil(this.value()) || (+this.value() > 0 && this.parseValueByDataType(valueDisplay) < this.value()) || (+this.value() < 0 && this.parseValueByDataType(valueDisplay) > this.value())) {\n return false;\n }\n const valueCompare = formatNumber(valueDisplay).toString();\n const numbers = valueCompare.split('.');\n let lengthValueCompare = 0;\n let maxLength = this.acceptNegativeValue() && typeof +this.value() === 'number' && +this.value() < 0 ? (this.maxLength() || 21) + 1 : this.maxLength() || 21;\n\n if (this.dataType() === 'float') {\n maxLength--;\n }\n if (numbers?.[0]) {\n lengthValueCompare = viewDataNumberByLanguage(`${numbers[0]}`.replace(/\\./g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14).length;\n }\n if (numbers?.[1]) {\n lengthValueCompare += 1 + numbers[1].length;\n }\n if (maxLength && lengthValueCompare >= maxLength) {\n const valueDisplay = viewDataNumberByLanguage((lengthValueCompare === maxLength ? valueCompare : `${this.value()}`).replace(/\\./g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n\n return true;\n }\n\n return false;\n }\n\n private checkTypeNumber(e: IEvent | IEventCustom, fieldName: string) {\n const currentLang = UtilsCache.getLang();\n const separator = currentLang === UtilsLanguageConstants.VI ? '.' : ',';\n const separatorRevert = currentLang === UtilsLanguageConstants.VI ? ',' : '.';\n let valueTarget: IString = e.target.value;\n const selectionStart = e.target.selectionStart - 1;\n const { data, keyCode } = e;\n\n this.charFirstIsZero.set(false);\n if (valueTarget.startsWith('0')) {\n this.charFirstIsZero.set(true);\n }\n\n if (this.dataType() === 'string') {\n if (this.autoRemoveEmoji()) {\n e.target.value = removeEmoji(valueTarget);\n }\n\n return;\n }\n if (/\\d/g.test(data) && valueTarget.charAt(selectionStart + 1) === '-') {\n valueTarget = valueTarget.replaceAt(0, '') as IString;\n }\n let strRegex = `[^0-9.,${this.acceptNegativeValue() ? '-' : ''}]`;\n\n if (new RegExp(strRegex, 'gi').test((e as any)[fieldName]) && keyCode !== UtilsKeyCodeConstant.BACKSPACE) {\n e.preventDefault();\n e.target.value = valueTarget = e.target.value.replace(new RegExp(strRegex, 'gi'), '') as IString;\n }\n if (!e.fakeEvent) {\n switch (data) {\n case separator:\n valueTarget = valueTarget.replace(new RegExp(`[${separator}]`, 'gi'), '') as IString;\n break;\n\n case separatorRevert: {\n if (currentLang === UtilsLanguageConstants.VI && this.dataType() === 'int') {\n e.target.value = valueTarget.replace(new RegExp(`[${separatorRevert}]`, 'gi'), '') as IString;\n\n return;\n }\n if (valueTarget === separatorRevert) {\n e.target.value = '';\n\n return;\n }\n if (valueTarget && valueTarget.length === 2 && valueTarget.startsWith('-') && data && !/\\d/g.test(data)) {\n e.target.value = '-';\n\n return;\n }\n const occurrencesByCharacter = valueTarget.occurrencesByCharacter(separatorRevert);\n\n if (occurrencesByCharacter > 1) {\n valueTarget = valueTarget.replaceAt(e.target.selectionStart - 1, '') as IString;\n break;\n }\n let maxLength = this.dataType() === 'float' ? (this.maxLength() || 21) - 1 : this.maxLength() || 21;\n\n if (valueTarget.indexOf('-') >= 0) {\n maxLength++;\n }\n if (occurrencesByCharacter === 1 && valueTarget.length === maxLength && valueTarget.indexOf(separatorRevert) === valueTarget.length - 1) {\n valueTarget = valueTarget.replaceAt(e.target.selectionStart - 1, '') as IString;\n break;\n }\n if (this.onlyAcceptNegativeValue() && valueTarget === `0${separatorRevert}`) {\n e.target.value = '0';\n break;\n }\n const valueBeforeFormat = e.target.value;\n const valueAfterFormat = viewDataNumberByLanguage(e.target.value, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n if (valueBeforeFormat === valueAfterFormat) {\n return;\n }\n e.target.value = valueAfterFormat;\n }\n }\n valueTarget = formatNumber(valueTarget) as IString;\n }\n const indexesOfDash = valueTarget.indexesOfCharacter?.('-') || [];\n\n if (indexesOfDash.length) {\n const [firstIndex, secondIndex] = indexesOfDash;\n const indexReplace = firstIndex || secondIndex; // firstIndex=0 thì ko xóa\n\n if (indexReplace) {\n valueTarget = valueTarget.replaceAll(indexReplace, '-', '') as IString;\n }\n }\n if (this.acceptNegativeValue() && valueTarget === '-') {\n e.target.value = valueTarget;\n\n return;\n }\n switch (this.dataType()) {\n case 'int': {\n strRegex = `[^0-9${this.acceptNegativeValue() ? '-' : ''}]`;\n if (!e.fakeEvent) {\n valueTarget = valueTarget.replace(new RegExp(strRegex, 'gi'), '') as IString;\n const maxTotalNumber = valueTarget.includes('-') ? 17 : 16;\n\n if (valueTarget.length > maxTotalNumber) {\n valueTarget = valueTarget.slice(0, maxTotalNumber) as IString;\n }\n if (Math.abs(parseInt(valueTarget)) > (this.maxValueNumber() ?? 9007199254740991)) {\n valueTarget = valueTarget.slice(0, maxTotalNumber - 1) as IString;\n }\n if (this.onlyAcceptNegativeValue() && !valueTarget.startsWith('-') && !valueTarget.startsWith('0')) {\n valueTarget = '' as IString;\n }\n if (valueTarget && /(^-)?(^0+)/.test(valueTarget)) {\n const id = uuid();\n\n valueTarget = valueTarget.replace(/(^-)?(^0+)/, `$1${id}`).replace(id, '0') as IString;\n }\n if (valueTarget === '-0') {\n valueTarget = '0' as IString;\n }\n if (valueTarget && /(^0)([1-9])(\\d+)?/.test(valueTarget)) {\n valueTarget = valueTarget.replace(/(^0)([1-9])(\\d+)?/, '$2$3') as IString;\n }\n const valueDisplay = viewDataNumberByLanguage(valueTarget, this.acceptNegativeValue() || false, 0);\n\n if (this.checkMaxLengthNumberAndSetValue(valueDisplay, e)) {\n break;\n }\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n break;\n }\n const indexOfDot = valueTarget.indexOf('.');\n const indexOfComma = valueTarget.indexOf(',');\n let indexChoose = indexOfDot;\n\n if (indexOfDot < 0 || indexOfDot > indexOfComma) {\n indexChoose = indexOfComma;\n }\n if (indexChoose >= 0) {\n valueTarget = valueTarget.substring(0, indexChoose) as IString;\n }\n const valueDisplay = viewDataNumberByLanguage(valueTarget, this.acceptNegativeValue() || false, 0);\n\n if (this.checkMaxLengthNumberAndSetValue(valueDisplay, e)) {\n break;\n }\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n break;\n }\n\n case 'float':\n\n // eslint-disable-next-line no-fallthrough\n case 'bigint':\n this.getValueFormat(e, valueTarget, separator, separatorRevert, currentLang);\n break;\n }\n if (valueTarget === 'NaN') {\n e.target.value = '' as IString;\n }\n if (e.fakeEvent || data === undefined) {\n return;\n }\n this.setCaretPosition(e, selectionStart + 1);\n }\n\n private getValueFormat(e: IEvent | IEventCustom, valueTarget: IString, separator: '.' | ',', separatorRevert: '.' | ',', currentLang: string) {\n let strRegex = `[^0-9${separator}${currentLang === UtilsLanguageConstants.EN ? '.' : ''}${this.acceptNegativeValue() ? '-' : ''}]`;\n\n if (!e.fakeEvent) {\n valueTarget = valueTarget.replace(new RegExp(strRegex, 'gi'), '') as IString;\n }\n const indexesOfSeparator = valueTarget.indexesOfCharacter(separator);\n const [firstIndex, secondIndex] = indexesOfSeparator;\n\n if (secondIndex) {\n valueTarget = e.target.value.replaceAll(secondIndex, separator, '');\n }\n if (firstIndex && valueTarget.substring(firstIndex + 1).length >= (this.fixedFloat() ?? 14)) {\n valueTarget = valueTarget.substring(0, firstIndex + (this.fixedFloat() ?? 14) + 1) as IString;\n }\n strRegex = `[${separator}]`;\n valueTarget = valueTarget.replace(new RegExp(strRegex, 'g'), separatorRevert) as IString;\n let valueFormat = '';\n let [fontSeparatorNumber, behindSeparatorNumber] = valueTarget.split(separatorRevert);\n let maxFontTotalNumber = fontSeparatorNumber?.includes('-') ? 16 : 15;\n\n if (this.dataType() === 'bigint') {\n maxFontTotalNumber = (this.maxLengthNumberCount() ?? 19) - (this.fixedFloat() ?? 4) + (fontSeparatorNumber.includes('-') ? 1 : 0);\n }\n const fontOverMaxTotalNumber = fontSeparatorNumber && fontSeparatorNumber.length >= maxFontTotalNumber;\n\n if (fontOverMaxTotalNumber) {\n fontSeparatorNumber = fontSeparatorNumber.slice(0, maxFontTotalNumber) as IString;\n if (this.dataType() === 'float') {\n behindSeparatorNumber = '';\n }\n }\n switch (this.dataType()) {\n case 'float':\n if (!fontOverMaxTotalNumber && behindSeparatorNumber?.length) {\n behindSeparatorNumber = behindSeparatorNumber.slice(0, maxFontTotalNumber - fontSeparatorNumber.length);\n }\n behindSeparatorNumber = `${behindSeparatorNumber ?? ''}`;\n break;\n\n case 'bigint':\n if (behindSeparatorNumber?.length && behindSeparatorNumber.length > (this.fixedFloat() ?? 4)) {\n behindSeparatorNumber = behindSeparatorNumber.slice(0, this.fixedFloat() ?? 4);\n }\n break;\n }\n const indexOfSeparatorRevert = valueTarget.indexOf(separatorRevert);\n\n if (this.onlyAcceptNegativeValue() && !fontSeparatorNumber.startsWith('-') && !fontSeparatorNumber.startsWith('0')) {\n fontSeparatorNumber = '';\n }\n if (this.onlyAcceptNegativeValue() && indexOfSeparatorRevert >= 0 && !fontSeparatorNumber.startsWith('-')) {\n fontSeparatorNumber = '0';\n behindSeparatorNumber = this.dataType() === 'bigint' ? '0' : '';\n }\n if (fontSeparatorNumber && /(^-)(0+)/.test(fontSeparatorNumber)) {\n const id = uuid();\n\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^-)(0+)/, `$1${id}`).replace(id, '0');\n }\n if (fontSeparatorNumber && /(^0+)/.test(fontSeparatorNumber)) {\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^0+)/, '0');\n }\n if (/(^-)(0+)([1-9])([\\d.]+)?/.test(fontSeparatorNumber)) {\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^-)(0+)([1-9])([\\d.]+)?/, '$1$3$4');\n }\n if (/(^0+)([1-9])([\\d.]+)?/.test(fontSeparatorNumber)) {\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^0+)([1-9])([\\d.]+)?/, '$2$3');\n }\n switch (this.dataType()) {\n case 'float':\n if (/(^0{6})/.test(behindSeparatorNumber)) {\n behindSeparatorNumber = behindSeparatorNumber.replace(/(^0{6})/, '00000');\n }\n break;\n\n case 'bigint':\n if (/(^0{4})/.test(behindSeparatorNumber)) {\n behindSeparatorNumber = behindSeparatorNumber.replace(/(^0{4})/, '0000');\n }\n break;\n }\n if (fontSeparatorNumber) {\n fontSeparatorNumber = viewDataNumberByLanguage(fontSeparatorNumber, this.acceptNegativeValue(), this.fixedFloat() ?? (this.dataType() === 'bigint' ? 4 : 14));\n }\n const hasSeparatorRevert = (this.dataType() === 'bigint' ? true : !fontOverMaxTotalNumber) && indexOfSeparatorRevert >= 0;\n\n valueFormat = `${fontSeparatorNumber ?? ''}${hasSeparatorRevert ? separatorRevert : ''}${behindSeparatorNumber ?? ''}`;\n if (valueFormat && this.onlyAcceptNegativeValue() && !valueFormat.startsWith('-') && !valueFormat.startsWith('0')) {\n valueFormat = '0';\n }\n if (this.checkMaxLengthNumberAndSetValue(valueFormat, e)) {\n return;\n }\n e.target.value = valueFormat as IString;\n }\n\n private getCheckZero(value: number, targetCurrent: string): string {\n let zero = '';\n\n if (this.dataType() !== 'int') {\n return zero;\n }\n\n if (this.charFirstIsZero() && this.keepZeroInTypeInt() && value !== 0) {\n zero = '0';\n }\n\n if (this.charFirstIsZero() && this.autoAddZeroLessThan10InTypeInt() && ((value > 0 && value < 10 && !/(^0)+/.test(`${targetCurrent}`)) || (/^0{2,}$/.exec(targetCurrent ?? '')?.length && value === 0))) {\n zero = '0';\n }\n\n return zero;\n }\n\n private setCaretPosition(e: IEvent | IEventCustom, selectionStart: number) {\n const { keyCode, inputType } = e;\n\n if (keyCode === UtilsKeyCodeConstant.UP_ARROW || keyCode === UtilsKeyCodeConstant.DOWN_ARROW || keyCode === UtilsKeyCodeConstant.LEFT_ARROW || keyCode === UtilsKeyCodeConstant.RIGHT_ARROW) {\n return;\n }\n const valueTarget = e.target.value.replace('-', '');\n let value = UtilsCache.getLang() === UtilsLanguageConstants.VI ? `${this.value() || 0}`.replace('.', ',') : `${this.value() || 0}`;\n\n value = viewDataNumberByLanguage(value, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n value = `${value}`.replace('-', '');\n\n if (value === valueTarget && value !== '0' && value !== '-') {\n setCaretPosition(this.Element, selectionStart);\n\n return;\n }\n\n let factor = 0;\n const distance = valueTarget.length - value.length;\n if (distance < -1) {\n factor = -1;\n }\n if (distance > 1) {\n factor = 1;\n }\n selectionStart += factor;\n if (inputType === 'insertFromPaste' && this.dataTextPaste()) {\n const dataTextDisplay = `${viewDataNumberByLanguage(this.dataTextPaste(), this.acceptNegativeValue(), this.fixedFloat() ?? 14)}`;\n const indexes: Array<number> = e.target.value.indexesByString(dataTextDisplay);\n\n selectionStart -= factor;\n\n if (indexes.some((index) => index === selectionStart) || !indexes.length) {\n return setCaretPosition(this.Element, selectionStart);\n }\n\n let newSelectionStart = indexes[0];\n\n for (const index of indexes) {\n let replaceValue = formatNumber(`${valueTarget.substring(0, index)}${valueTarget.substring(index + dataTextDisplay.length + 1, valueTarget.length)}`);\n\n replaceValue = viewDataNumberByLanguage(replaceValue, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n if (value === replaceValue) {\n newSelectionStart = index;\n break;\n }\n }\n\n if (newSelectionStart >= 0) {\n selectionStart = newSelectionStart + dataTextDisplay.length + 1;\n\n return setCaretPosition(this.Element, selectionStart);\n }\n }\n\n setCaretPosition(this.Element, selectionStart);\n }\n\n private parseValueByDataType(value: string): number | string {\n switch (this.dataType()) {\n case 'string':\n return value;\n\n case 'int':\n if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n return 0;\n }\n\n return +formatNumber(value);\n\n case 'float':\n if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n return 0;\n }\n\n return parseFloat((+formatNumber(value)).toFixed(this.fixedFloat() ?? 14));\n\n case 'bigint':\n if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n return '0';\n }\n\n return formatNumber(value);\n }\n }\n\n private calculatorHeightTextArea(e: IEvent | IEventCustom) {\n if (this.tagInput() === 'input') {\n return;\n }\n const target = e.target;\n\n target.style.overflow = 'hidden';\n target.style.height = `${this.defaultHeight()}px`;\n const { scrollHeight } = target;\n\n const height = scrollHeight + 2; // border top + bottom = 2\n\n if (!this.preHeightArea() && this.preHeightArea() !== height) {\n this.outHeightAreaChange.emit({ isChange: true, height: height });\n }\n\n if (height > (this.maxHeightTextArea() ?? 32)) {\n target.style.overflow = 'auto';\n }\n if (this.iframeRef) {\n this.iframeRef.style.height = `${height}px`;\n }\n target.style.height = `${height}px`;\n this.preHeightArea.set(height);\n }\n\n private combineObservable(mouseDownEvent: Observable<IEvent>, observableMerge: Observable<IEvent>) {\n mouseDownEvent\n .pipe(\n mergeMap(() => observableMerge),\n debounceTime(0),\n tap((e: IEvent) => this.checkTypeNumber(e, 'key'))\n )\n .subscribe((e: IEvent) => this.processEventAndEmitValue(e));\n }\n\n private async focus(emitEvent?: boolean) {\n setTimeout(() => {\n this.Element?.focus();\n if (emitEvent) {\n this.outFocusAndBlurEvent.emit({ name: 'focus', event: { target: this.Element } as unknown as IEvent });\n }\n }, this.focusTimeOut());\n }\n\n private async blur(emitEvent?: boolean) {\n setTimeout(() => {\n this.Element?.blur();\n if (emitEvent) {\n this.outFocusAndBlurEvent.emit({ name: 'blur', event: { target: this.Element } as unknown as IEvent });\n }\n }, this.blurTimeOut());\n }\n\n private async addDataToSelectionInput(data: string | number) {\n const target = this.Element;\n const selectionStart = target.selectionStart;\n\n const value = this.Element.value;\n const beforeValue = value.substring(0, selectionStart);\n const afterValue = value.substring(selectionStart);\n\n this.Element.value = `${beforeValue}${data}${afterValue}`;\n setCaretPosition(this.Element, selectionStart + data.toString().length);\n const eventFake: IEventCustom = {\n preventDefault: () => {\n return;\n },\n target: this.Element,\n data: '',\n fakeEvent: true,\n };\n\n this.processEventAndEmitValue(eventFake);\n }\n\n protected handlerOnLoad(e: Event, element: HTMLIFrameElement) {\n e.stopPropagation();\n this.iframeRef = element;\n const iframe: any = element.contentWindow || element.contentDocument;\n this.configProjectService.setupFontFamily(iframe.document);\n\n this.inputIframeRef.set({ nativeElement: iframe.document.getElementsByTagName('TEXTAREA')[0] });\n if (this.Element) {\n this.renderer.setAttribute(this.Element, 'placeholder', this.translateService.instant(this.placeholder()));\n if (this.disable()) {\n this.renderer.setAttribute(this.Element, 'disabled', 'true');\n }\n this.afterViewInit();\n }\n }\n\n private async resetValue() {\n const value = '';\n\n this.Element.value = value;\n this.value.set(value);\n this.outChange.emit(value);\n }\n\n private countDisplayComputed() {\n if ((this.dataType() !== 'string' && this.valueUpDownNumber()) || !isNil(this.iconRightClass())) {\n setTimeout(() => {\n this.paddingRightCustom.set((this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0) + 12);\n });\n }\n if (!this.showCount() || this.dataType() !== 'string' || typeof this.value() !== 'string') {\n return '0';\n }\n setTimeout(() => {\n this.paddingRightCustom.set((this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0) + 12);\n if (this.showCount()) {\n if (this.textCountRef()) {\n this.paddingRightCustom.set(this.textCountRef()?.nativeElement.clientWidth + 16);\n }\n\n if (this.tagInput() === 'input') {\n this.paddingRightCustom.update((value) => {\n return value + (this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0);\n });\n }\n }\n });\n\n return `${viewDataNumberByLanguage((this.value() as string).length, false)}`;\n }\n\n private async selectAllContent() {\n setTimeout(() => {\n this.Element?.select();\n }, this.selectAllTimeOut());\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div\n [class]=\"'flex relative !text-[#9ca2ad] ' + classContainerInput()\"\n [class.libs-ui-components-input-textarea-container]=\"tagInput() === 'textarea' && resize() === 'auto'\">\n @if (tagInput() === 'input') {\n <input\n #inputRef\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [style.height.px]=\"defaultHeight()\"\n [style.minHeight.px]=\"defaultHeight()\"\n [style.paddingRight.px.important]=\"paddingRightCustom()\"\n [class.w-full]=\"!ignoreWidthInput100()\"\n [class]=\"'libs-ui-input libs-ui-font-h5r ' + classInclude()\"\n [class.border-primary-focus-general]=\"focusInput()\"\n [class.libs-ui-input-not-border]=\"noBorder()\"\n [class.libs-ui-bg-special-none]=\"backgroundNone()\"\n [class.libs-ui-border-error-general]=\"borderError()\"\n [class.text-[#29c7cc]]=\"useColorModeExist()\"\n [class.!pl-[40px]]=\"iconLeftClass()\"\n [attr.maxLength]=\"maxLength() || undefined\"\n [placeholder]=\"placeholder() | translate\"\n [attr.type]=\"typeInput()\"\n [attr.inputmode]=\"modeInput()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disable()\"\n [autocomplete]=\"resetAutoCompletePassword() ? 'new-password' : ''\" />\n }\n @if (tagInput() === 'textarea') {\n @if (resize() === 'auto') {\n <div class=\"libs-ui-components-input-textarea-container-resize-icon\"></div>\n }\n <textarea\n #inputRef\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [style.height.px]=\"defaultHeight()\"\n [style.minHeight.px]=\"minHeightTextArea() ?? defaultHeight()\"\n [style.paddingRight.px.important]=\"paddingRightCustom()\"\n [style.maxHeight.px]=\"maxHeightTextArea()\"\n [style.resize]=\"resize()\"\n [class.w-full]=\"!ignoreWidthInput100()\"\n [class]=\"'libs-ui-input libs-ui-font-h5r libs-ui-cursor-auto ' + classInclude()\"\n [class.libs-ui-input-not-border]=\"noBorder()\"\n [class.libs-ui-bg-special-none]=\"backgroundNone()\"\n [class.libs-ui-border-error-general]=\"borderError()\"\n [class.text-[#29c7cc]]=\"useColorModeExist()\"\n [class.pl-[32px]]=\"iconLeftClass()\"\n [attr.maxLength]=\"maxLength() || undefined\"\n [placeholder]=\"placeholder() | translate\"\n [readonly]=\"readonly()\"\n [disabled]=\"disable()\"></textarea>\n }\n\n @if (tagInput() === 'iframe-textarea' && htmlIframeArea()) {\n <span class=\"d-none\"></span>\n <iframe\n #iframeRef\n title=\"Content frame\"\n [style.maxHeight.px]=\"maxHeightTextArea()\"\n [style.height.px]=\"defaultHeight()\"\n [srcdoc]=\"htmlIframeArea()\"\n class=\"w-full border-0\"\n (load)=\"handlerOnLoad($event, iframeRef)\"></iframe>\n }\n @if (iconLeftClass()) {\n <libs_ui-components-popover\n [ignoreShowPopover]=\"!popoverContentIconLeft()\"\n [config]=\"{ maxWidth: 250, direction: 'bottom', content: popoverContentIconLeft(), zIndex: zIndexPopoverContent() }\">\n <i\n [attr.tagInput]=\"tagInput()\"\n [class]=\"iconLeftClass() + ' libs-ui-input-icon-left !text-[#9ca2ad]'\"\n (click)=\"handlerEventIconLeft($event, 'click')\"\n (keydown.enter)=\"handlerEventIconLeft($event, 'click')\"></i>\n </libs_ui-components-popover>\n }\n <div\n #elementRightRef\n class=\"absolute flex items-center h-full top-0 right-0\">\n @if (value() && placeholder().trim() && keepPlaceholderOnly()) {\n <span [class]=\"'libs-ui-input-placeholder-custom libs-ui-font-h5r'\">\n {{ placeholder() }}\n </span>\n }\n @if (dataType() !== 'string' && valueUpDownNumber()) {\n <libs_ui-components-buttons-sort\n class=\"mr-[12px]\"\n [disableAsc]=\"disableAsc()\"\n [disableDesc]=\"disableDesc()\"\n [attr.tagInput]=\"tagInput()\"\n [onlyEmit]=\"true\"\n [disable]=\"disable() || readonly()\"\n (outChange)=\"handlerChangeValue($event)\" />\n }\n @if (iconRightClass()) {\n <libs_ui-components-popover\n class=\"flex\"\n [ignoreShowPopover]=\"!popoverContentIconRight()\"\n [config]=\"{ maxWidth: 250, direction: 'bottom', content: popoverContentIconRight(), zIndex: zIndexPopoverContent() }\">\n <i\n [attr.tagInput]=\"tagInput()\"\n [class.text-[#6a7383]]=\"(!disable() && !readonly()) || acceptOnlyClickIcon()\"\n [class.text-[#cdd0d6]]=\"((disable() || readonly()) && !acceptOnlyClickIcon()) || setIconRightColorSameColorDisableReadOnly()\"\n [class]=\"iconRightClass() + ' libs-ui-input-icon-right'\"\n (click)=\"handlerEventIconRight($event, 'click')\"\n (keydown.enter)=\"handlerEventIconRight($event, 'click')\"></i>\n </libs_ui-components-popover>\n }\n </div>\n <div\n class=\"libs-ui-input-text-bottom {{ classContainerBottomInput() }}\"\n [style.right.px]=\"(tagInput() === 'input' ? elementRightRef.clientWidth || 0 : 0) + 8\">\n @if (templateLeftBottomInput(); as templateLeftBottomInput) {\n <ng-container *ngTemplateOutlet=\"templateLeftBottomInput\" />\n }\n <div\n #textCountRef\n class=\"text-[#9ca2ad] libs-ui-font-h7r\"\n [class.hidden]=\"dataType() !== 'string' || !showCount()\">\n <span>{{ countDisplay() }}</span>\n @if (maxLength()) {\n <span>/{{ maxLengthDisplay() }}</span>\n }\n </div>\n @if (templateRightBottomInput(); as templateRightBottomInput) {\n <ng-container *ngTemplateOutlet=\"templateRightBottomInput\" />\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-inputs-input.mjs","sources":["../../../../../../libs-ui/components/inputs/input/src/defines/index-iframe-area.define.ts","../../../../../../libs-ui/components/inputs/input/src/input.component.ts","../../../../../../libs-ui/components/inputs/input/src/input.component.html","../../../../../../libs-ui/components/inputs/input/src/libs-ui-components-inputs-input.ts"],"sourcesContent":["import { IIframeTextareaCustomStyle } from '../interfaces/focus-and-blur-event.interface';\n\nexport const indexInputHtml = (customStyle: IIframeTextareaCustomStyle) => `\n<!DOCTYPE html>\n<html>\n <head>\n <base href=\"/\" />\n </head>\n <style type=\"text/css\">\n \t::-webkit-scrollbar {\n\t width: 8px;\n\t height: 8px; \n\t cursor: default;\n\t}\n\t \n\t::-webkit-scrollbar-track {\n\t border-radius: 0;\n\t background: #fff;\n\t}\n\n\t \n\t::-webkit-scrollbar-track:hover {\n\t background: rgba(78, 78, 78, 0.05);\n\t}\n\n\t::-webkit-scrollbar-track:focus {\n\t background: #b3b3b3;\n\t}\n\n\t::-webkit-scrollbar-track:checked {\n\t background: #b3b3b3;\n\t}\n\t \n\t \n\t::-webkit-scrollbar-thumb {\n\t border-radius: 0;\n\t background: rgba(78, 78, 78, 0.15);\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:hover {\n\t background: #dadada;\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:focus {\n\t background: #b3b3b3;\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\t::-webkit-scrollbar-thumb:checked {\n\t background: #b3b3b3;\n\t box-shadow: inset 1px 1px 2px 0 rgba(78, 78, 78, 0.3);\n\t}\n\n\tbody{\n\t\tmax-width: 100vw;\n\t\tmax-height:100vh;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\toverflow: hidden;\n\t}\n\n\ttextarea{\n\t\tmax-width: 100vw;\n\t\tmax-height:100vh;\n\t\tresize: none;\n\t\tborder: none;\n\t\tborder: ${customStyle.borderColor ? ' 1px solid #e6e7ea;' : 'none'};\n\t\twidth: 100%;\n\t\tborder-radius: ${customStyle.borderRadius ?? '4px'};\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tline-height: ${customStyle.lineHeight ?? '16px'};\n\t\theight: ${customStyle.height ?? 'auto'};\n\t\tcolor: ${customStyle.color ?? '#4e4e4e'};\n\t\tpadding: ${customStyle.padding ?? '6px 12px'};\n\t\tbackground-color: ${customStyle.backgroundColor ?? '#fff'};\n\t\tfont-size: ${customStyle.fontSize ?? '12px'};\n\t\tfont-family:var(--libs-ui-font-family-name) !important;\n\t\toverflow: hidden;\n\t\tmargin: 0;\n\t\tresize: none;\n\t}\n\t${\n customStyle.borderColor\n ? `textarea:focus:not(:read-only):not(:disabled) {\n\t\tborder: 1px solid ${customStyle.borderColor};\n\t}`\n : ''\n }\n\n\ttextarea::-webkit-input-placeholder {\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:-moz-placeholder {\n\t\t/* Firefox 18- */\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea::-moz-placeholder {\n\t\t/* Firefox 19+ */\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:-ms-input-placeholder {\n\t\tpadding-left: '4px';\n\t\tcolor: rgba(78, 78, 78, 0.5) !important;\n\t}\n\n\ttextarea:focus {\n \toutline: none;\n\t}\n\t*, ::after, ::before {\n \tbox-sizing: border-box;\n\t}\n \n </style>\n\n <body>\n\t <textarea></textarea>\n </body>\n</html>`;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2, TemplateRef, computed, effect, inject, input, model, output, signal, untracked, viewChild } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ISort, LibsUiComponentsButtonsSortComponent } from '@libs-ui/components-buttons-sort';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { IEvent, IEventCustom, IString, TYPE_TEMPLATE_REF } from '@libs-ui/interfaces-types';\nimport { LibsUiConfigProjectService } from '@libs-ui/services-config-project';\nimport { UtilsCache, UtilsKeyCodeConstant, UtilsLanguageConstants, formatNumber, isNil, isTypeFile, removeEmoji, setCaretPosition, uuid, viewDataNumberByLanguage } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable, Subject, fromEvent } from 'rxjs';\nimport { debounceTime, filter, mergeMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { indexInputHtml } from './defines/index-iframe-area.define';\nimport { IFocusAndBlurEvent, IIframeTextareaCustomStyle } from './interfaces/focus-and-blur-event.interface';\nimport { IInputFunctionControlEvent } from './interfaces/function-control-event.interface';\nimport { TYPE_DATA_TYPE_INPUT, TYPE_INPUT, TYPE_INPUT_RESIZE_MODE, TYPE_MODE_INPUT, TYPE_TAG_INPUT } from './interfaces/input.interface';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-inputs-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n standalone: true,\n imports: [TranslateModule, NgTemplateOutlet, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsSortComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsInputsInputComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected disableAsc = signal(false);\n protected disableDesc = signal(false);\n protected htmlIframeArea = signal<SafeHtml | undefined>(undefined);\n protected countDisplay = computed(this.countDisplayComputed.bind(this));\n protected maxLengthDisplay = computed(() => `${viewDataNumberByLanguage(this.maxLength() || 0, false)}`);\n protected paddingRightCustom = signal<number | undefined>(undefined);\n protected inputIframeRef = signal<ElementRef | undefined>(undefined);\n\n private readonly DEFAULT_MAX_HEIGHT_TEXT_AREA = 250;\n private readonly charFirstIsZero = signal<boolean>(false);\n private readonly preHeightArea = signal<number>(0);\n private iframeRef: HTMLIFrameElement | undefined;\n private readonly dataTextPaste = signal<string>('');\n private readonly onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly tagInput = input<TYPE_TAG_INPUT, TYPE_TAG_INPUT | undefined>('input', { transform: (value) => value || 'input' });\n readonly dataType = input<TYPE_DATA_TYPE_INPUT, TYPE_DATA_TYPE_INPUT | undefined>('string', { transform: (val) => val || 'string' });\n readonly typeInput = input<TYPE_INPUT, TYPE_INPUT | undefined>('text', { transform: (val) => val || 'text' });\n readonly modeInput = input<TYPE_MODE_INPUT, TYPE_MODE_INPUT | undefined>('text', { transform: (val) => val || 'text' });\n\n readonly tabInsertContentTagInput = input<boolean>(false);\n readonly textAreaEnterNotNewLine = input<boolean>(false);\n readonly emitEmptyInDataTypeNumber = input<boolean | undefined>(false);\n readonly keepZeroInTypeInt = input<boolean>(false);\n readonly autoAddZeroLessThan10InTypeInt = input<boolean | undefined>(false);\n readonly ignoreBlockInputMaxValue = input<boolean>();\n readonly maxValueNumber = model<number>();\n readonly minValueNumber = model<number>();\n readonly fixedFloat = model<number>();\n readonly acceptNegativeValue = model<boolean | undefined>(false);\n readonly valueUpDownNumber = input<number | undefined>();\n readonly classInclude = input<string, string>(' w-full ', { transform: (value) => value || ' w-full ' });\n readonly maxLength = model<number | undefined>();\n readonly readonly = input<boolean | undefined>(false);\n readonly disable = input<boolean | undefined>(false);\n readonly noBorder = input<boolean>();\n readonly backgroundNone = input<boolean | undefined>(false);\n readonly borderError = input<boolean>(false);\n readonly useColorModeExist = input<boolean | undefined>(false);\n readonly placeholder = input<string, string>(' ', { transform: (value) => value || ' ' });\n readonly keepPlaceholderOnly = input<boolean | undefined>(false);\n readonly value = model<string | number>('');\n readonly autoRemoveEmoji = input<boolean | undefined>(false);\n readonly defaultHeight = input<number, number | undefined>(32, { transform: (value) => value || 32 });\n readonly minHeightTextArea = input<number | undefined>();\n readonly maxHeightTextArea = input<number, number | undefined>(this.DEFAULT_MAX_HEIGHT_TEXT_AREA, { transform: (value) => value || this.DEFAULT_MAX_HEIGHT_TEXT_AREA });\n readonly focusTimeOut = input<number, number | undefined>(600, { transform: (value) => value ?? 600 });\n readonly selectAllTimeOut = input<number, number | undefined>(600, { transform: (value) => value ?? 600 });\n readonly blurTimeOut = input<number, number | undefined>(32, { transform: (value) => value || 32 });\n readonly zIndexPopoverContent = input<number, number | undefined>(10, { transform: (value) => value || 10 });\n readonly classContainerInput = input<string, string | undefined>('w-full', { transform: (value) => value || 'w-full' });\n readonly showCount = input<boolean>();\n readonly ignoreStopPropagationEvent = input<boolean>();\n readonly resize = input<TYPE_INPUT_RESIZE_MODE, TYPE_INPUT_RESIZE_MODE>('vertical', { transform: (value) => value || 'vertical' });\n readonly templateLeftBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly templateRightBottomInput = input<TemplateRef<TYPE_TEMPLATE_REF>>();\n readonly classContainerBottomInput = input<string | undefined, string | undefined>(' ', { transform: (value) => value || ' ' });\n readonly ignoreWidthInput100 = input<boolean>();\n readonly iframeTextareaCustomStyle = input<IIframeTextareaCustomStyle>();\n\n readonly iconLeftClass = input<string, string | undefined>('', { transform: (value) => value || '' });\n readonly popoverContentIconLeft = input<string, string | undefined>('', { transform: (value) => value || '' });\n readonly iconRightClass = input<string | undefined>();\n readonly popoverContentIconRight = input<string, string | undefined>('', { transform: (value) => value || '' });\n readonly resetAutoCompletePassword = input<boolean, boolean | undefined>(false, { transform: (value) => value ?? false });\n readonly acceptOnlyClickIcon = input<boolean | undefined>(false);\n readonly setIconRightColorSameColorDisableReadOnly = input<boolean | undefined>(false);\n readonly onlyAcceptNegativeValue = input<boolean | undefined>(false);\n readonly maxLengthNumberCount = model<number | undefined>();\n readonly focusInput = input<boolean>(false);\n\n // #region OUTPUT\n readonly outHeightAreaChange = output<{ isChange: boolean; height: number }>();\n readonly outChange = output<any>();\n readonly outFocusAndBlurEvent = output<IFocusAndBlurEvent>();\n readonly outEnterEvent = output<IEvent>();\n readonly outInputEvent = output<IEvent>(); // emit pure event input\n readonly outIconLeft = output<string>();\n readonly outIconRight = output<string>();\n readonly outFunctionsControl = output<IInputFunctionControlEvent>();\n readonly outFilesDrop = output<Array<File>>();\n readonly outFileDrop = output<File>();\n readonly outChangeValueByButtonUpDown = output<void>();\n\n /* VIEW CHILD */\n protected inputRef = viewChild<ElementRef>('inputRef');\n protected textCountRef = viewChild<ElementRef>('textCountRef');\n protected elementRightRef = viewChild<ElementRef>('elementRightRef');\n\n // #region INJECT\n private readonly renderer = inject(Renderer2);\n private readonly configProjectService = inject(LibsUiConfigProjectService);\n private readonly translateService = inject(TranslateService);\n private readonly sanitizer = inject(DomSanitizer);\n\n constructor() {\n effect(\n () => {\n if (this.onlyAcceptNegativeValue()) {\n this.acceptNegativeValue.set(true);\n }\n if (!this.Element) {\n return;\n }\n\n if (this.dataType() === 'string') {\n if (this.Element.value !== this.value()) {\n this.init();\n }\n\n return;\n }\n this.updateMaxLengthMinMaxValueByDataType();\n const value = this.parseValueByDataType(this.Element.value);\n\n if ((this.Element.value !== '' && value === this.value()) || (this.Element.value === '' && this.emitEmptyInDataTypeNumber() && this.value() === undefined)) {\n return;\n }\n this.init();\n },\n { allowSignalWrites: true }\n );\n effect(() => {\n if (this.Element) {\n this.onDestroy.next();\n untracked(() => this.afterViewInit());\n }\n });\n }\n\n ngOnInit(): void {\n this.htmlIframeArea.set(this.sanitizer.bypassSecurityTrustHtml(indexInputHtml(this.iframeTextareaCustomStyle() || { borderColor: this.noBorder() ? '' : `${this.configProjectService.colorStepContrastFromOrigin(20)?.light}` })));\n }\n\n afterViewInit() {\n if (!this.Element) {\n return;\n }\n this.outHeightAreaChange.emit({ isChange: false, height: this.Element?.scrollHeight });\n this.outFunctionsControl.emit(this.FunctionsControl);\n this.init();\n\n this.initEvent('focus', this.ignoreStopPropagationEvent()).subscribe((e: IEvent) => this.outFocusAndBlurEvent.emit({ name: 'focus', event: e }));\n this.initEvent('blur', this.ignoreStopPropagationEvent()).subscribe((e: IEvent) => this.outFocusAndBlurEvent.emit({ name: 'blur', event: e }));\n const mouseDownEvent = this.initEvent('mousedown', this.ignoreStopPropagationEvent()).pipe(take(1));\n const keyDownEvent = this.initEvent('keydown', this.ignoreStopPropagationEvent());\n const inputEvent = this.initEvent('input', this.ignoreStopPropagationEvent());\n const cutEvent = this.initEvent('cut', this.ignoreStopPropagationEvent());\n const pasteEvent = this.initEvent('paste', this.ignoreStopPropagationEvent());\n const keyupEvent = this.initEvent('keyup', this.ignoreStopPropagationEvent());\n\n this.initEvent('click', this.ignoreStopPropagationEvent() ?? true).subscribe();\n this.initEvent('dragover', this.ignoreStopPropagationEvent())\n .pipe(\n tap((event: IEvent) => {\n event.preventDefault();\n event.stopPropagation();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n })\n )\n .subscribe();\n\n this.initEvent('drop', this.ignoreStopPropagationEvent()).subscribe(this.checkAndEmitFiles.bind(this));\n pasteEvent.subscribe(this.checkAndEmitFiles.bind(this));\n\n this.combineObservable(mouseDownEvent, pasteEvent);\n this.combineObservable(mouseDownEvent, cutEvent);\n keyDownEvent\n .pipe(\n take(1),\n tap((e: IEvent) => this.checkTypeNumber(e, 'key')),\n mergeMap(() => inputEvent),\n tap((e: IEvent) => this.checkTypeNumber(e, 'data'))\n )\n .subscribe((e: IEvent) => {\n if (this.dataType() === 'string' && this.maxLength() && (e.inputType === 'insertCompositionText' || e.inputType === 'insertText') && e.target.value?.length > (this.maxLength() || 0)) {\n e.target.value = e.target.value.slice(0, this.maxLength());\n }\n this.processEventAndEmitValue(e);\n });\n\n keyupEvent\n .pipe(\n filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.ENTER),\n filter((event: IEvent) => !this.textAreaEnterNotNewLine() || (this.textAreaEnterNotNewLine() && !event.shiftKey))\n )\n .subscribe((event: IEvent) => this.outEnterEvent.emit(event));\n\n if (this.dataType() === 'string' && (this.tagInput() !== 'input' || (this.tagInput() === 'input' && this.tabInsertContentTagInput()))) {\n keyDownEvent\n .pipe(\n filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.TAB),\n tap((event: IEvent) => event.preventDefault()),\n filter((event: IEvent) => !event.target.value || !this.maxLength() || event.target.value.length < (this.maxLength() || 25)),\n tap((event: IEvent) => {\n if (this.readonly() || this.disable()) {\n return;\n }\n this.insetValueToSelectionStart('\\t', event);\n })\n )\n .subscribe();\n }\n\n if (this.textAreaEnterNotNewLine()) {\n keyDownEvent\n .pipe(\n filter((event: IEvent) => event.keyCode === UtilsKeyCodeConstant.ENTER && !event.shiftKey),\n tap((e: IEvent) => e.preventDefault())\n )\n .subscribe();\n }\n\n this.countDisplayComputed();\n }\n\n // #region FUNCTIONS\n public get FunctionsControl(): IInputFunctionControlEvent {\n return {\n focus: this.focus.bind(this),\n blur: this.blur.bind(this),\n insertContent: this.addDataToSelectionInput.bind(this),\n resetValue: this.resetValue.bind(this),\n getElementValue: this.getElementValue.bind(this),\n checkAndDisableUpDownButton: this.checkAndDisableUpDownButton.bind(this),\n selectAllContent: this.selectAllContent.bind(this),\n };\n }\n\n private updateMaxLengthMinMaxValueByDataType() {\n if (this.dataType() === 'int' || this.dataType() === 'float') {\n this.maxLength.update((value) => {\n return !value || value > 21 ? 21 : value;\n });\n this.minValueNumber.update((value) => value ?? Number.MIN_SAFE_INTEGER);\n this.maxValueNumber.update((value) => value ?? Number.MAX_SAFE_INTEGER);\n }\n if (this.dataType() === 'bigint') {\n this.maxLength.update((value) => (!value || value > 25 ? 25 : value));\n this.fixedFloat.update((value) => value ?? 4);\n this.maxLengthNumberCount.update((value) => value ?? 19);\n }\n }\n\n private async getElementValue() {\n return this.Element?.value;\n }\n\n private checkAndEmitFiles(event: IEvent) {\n const files = event.dataTransfer?.files || event.clipboardData?.files;\n const text = (event.clipboardData || (window as any).clipboardData)?.getData('text');\n\n this.dataTextPaste.set(text);\n if (!files?.length) {\n return;\n }\n if (!text) {\n event.preventDefault();\n }\n event.stopPropagation();\n const fileList = [];\n\n for (const file of Array.from(files)) {\n if (isTypeFile(file)) {\n this.outFileDrop.emit(file);\n fileList.push(file);\n }\n }\n this.outFilesDrop.emit(fileList);\n }\n\n private insetValueToSelectionStart(text: string, event: IEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.Element.setRangeText(text, this.Element.selectionStart, this.Element.selectionStart, 'end');\n this.processEventAndEmitValue(event);\n }\n\n private get Element() {\n return this.inputIframeRef()?.nativeElement || this.inputRef()?.nativeElement;\n }\n\n protected handlerChangeValue(data: ISort) {\n data.reset();\n if (this.disable() || this.readonly()) {\n return;\n }\n const operator = data.mode === 'asc' ? 1 : -1;\n let value = +this.value() || 0;\n const separator = UtilsCache.getLang() === UtilsLanguageConstants.VI ? '.' : ',';\n const splitValue = (this.value() || this.minValueNumber() || 0).toString().split(separator);\n const dataBehindSeparator = splitValue?.[1];\n\n if (this.dataType() === 'bigint') {\n value = +(splitValue?.[0] || 0);\n }\n value = value + (this.valueUpDownNumber() ?? 1) * operator;\n if (!this.acceptNegativeValue() && value < 0) {\n value = 0;\n }\n const separatorStr = dataBehindSeparator ? separator : '';\n const dataEmit = this.dataType() === 'bigint' ? `${value}${separatorStr}${dataBehindSeparator}` : value;\n this.value.set(dataEmit);\n this.outChange.emit(dataEmit);\n this.outChangeValueByButtonUpDown.emit();\n this.checkAndDisableUpDownButton(value);\n }\n\n protected handlerEventIconLeft(e: Event, eventName: string) {\n e.stopPropagation();\n if ((this.disable() || this.readonly()) && !this.acceptOnlyClickIcon()) {\n return;\n }\n this.outIconLeft.emit(eventName);\n }\n\n protected handlerEventIconRight(e: Event, eventName: string) {\n e.stopPropagation();\n if ((this.disable() || this.readonly()) && !this.acceptOnlyClickIcon()) {\n return;\n }\n this.outIconRight.emit(eventName);\n }\n\n private async checkAndDisableUpDownButton(value: number) {\n if (this.dataType() !== 'int' && this.dataType() !== 'float' && this.dataType() !== 'bigint') {\n return;\n }\n this.disableAsc.set(false);\n this.disableDesc.set(false);\n this.minValueNumber.update((value) => value ?? Number.MIN_SAFE_INTEGER);\n this.maxValueNumber.update((value) => value ?? Number.MAX_SAFE_INTEGER);\n value = value ?? 0;\n\n if (!isNil(this.maxValueNumber()) && value >= (this.maxValueNumber() ?? Number.MAX_SAFE_INTEGER)) {\n this.disableAsc.set(true);\n }\n\n if (!isNil(this.minValueNumber()) && value <= (this.minValueNumber() || 0)) {\n this.disableDesc.set(true);\n }\n }\n\n protected initEvent(eventName: string, ignoreStopPropagationEvent?: boolean): Observable<IEvent> {\n return fromEvent<IEvent>(this.Element, eventName).pipe(\n tap((e: IEvent) => {\n if (!ignoreStopPropagationEvent) {\n e.stopPropagation();\n }\n this.outInputEvent.emit(e);\n }),\n takeUntil(this.onDestroy)\n );\n }\n\n private convertValue(value: string) {\n if (value && this.dataType() === 'bigint') {\n const separator = UtilsCache.getLang() === UtilsLanguageConstants.VI ? '.' : ',';\n let [int, decimal] = value.split(separator);\n const decimalSplit = decimal ? decimal.split('') : [];\n const decimalEveryZero = decimalSplit.every((item) => item === '0');\n\n if (int === '-0' && (!decimal || decimalEveryZero)) {\n int = '0';\n }\n if (!decimal || decimalEveryZero) {\n decimal = '0';\n }\n if (decimalSplit.some((item) => item !== '0')) {\n decimalSplit.reverse();\n const decimalReverse = decimalSplit.join('');\n\n decimal = decimalReverse.replace(/(^0+)/, '').split('').reverse().join('');\n }\n\n return `${int}${separator}${decimal}`;\n }\n\n return value;\n }\n\n private init() {\n if (!this.maxLength()) {\n this.updateMaxLengthMinMaxValueByDataType();\n }\n if (!this.Element) {\n return;\n }\n let elementValue = this.convertValue(`${this.value() ?? ''}`);\n\n if (this.dataType() !== 'string') {\n elementValue = elementValue.replace(new RegExp(`[^0-9.,${this.acceptNegativeValue() ? '-' : ''}]`, 'g'), '');\n if (UtilsCache.getLang() === UtilsLanguageConstants.EN) {\n elementValue = elementValue.replace(/,/, '');\n }\n }\n this.Element.value = elementValue;\n\n const eventFake: IEventCustom = {\n preventDefault: () => {\n return;\n },\n target: this.Element,\n data: elementValue,\n fakeEvent: true,\n };\n\n this.checkTypeNumber(eventFake, 'data');\n this.processEventAndEmitValue(eventFake);\n }\n\n private processEventAndEmitValue(e: IEvent | IEventCustom): void {\n const value: any = this.parseValueByDataType(e.target.value);\n\n if (this.dataType() !== 'string' && !this.ignoreBlockInputMaxValue() && !isNil(this.maxValueNumber()) && value > (this.maxValueNumber() || 0) && this.value() < value) {\n const valueDisplay = viewDataNumberByLanguage(`${this.value()}`.replace(/\\./g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n\n return this.processEventAndEmitValue(e);\n }\n if (this.dataType() !== 'string' && isNil(value)) {\n e.target.value = 0;\n\n return this.processEventAndEmitValue(e);\n }\n\n if (e.fakeEvent && (`${this.value() ?? ''}` === `${value}` || (this.emitEmptyInDataTypeNumber() && e.target.value.trim() === ''))) {\n this.checkAndDisableUpDownButton(this.dataType() === 'bigint' ? value : +value);\n\n setTimeout(() => {\n this.calculatorHeightTextArea(e);\n }, 250);\n\n return;\n }\n this.value.set(value);\n if (this.emitEmptyInDataTypeNumber() && e.target.value.trim() === '') {\n const dataEmit = this.dataType() === 'string' ? '' : undefined;\n this.value.set(dataEmit as any);\n }\n this.outChange.emit(this.value());\n this.checkAndDisableUpDownButton(this.dataType() === 'bigint' ? value : +value);\n this.calculatorHeightTextArea(e);\n }\n\n private checkMaxLengthNumberAndSetValue(valueDisplay: string, e: IEvent | IEventCustom): boolean {\n if (isNil(this.value()) || (+this.value() > 0 && this.parseValueByDataType(valueDisplay) < this.value()) || (+this.value() < 0 && this.parseValueByDataType(valueDisplay) > this.value())) {\n return false;\n }\n const valueCompare = formatNumber(valueDisplay).toString();\n const numbers = valueCompare.split('.');\n let lengthValueCompare = 0;\n let maxLength = this.acceptNegativeValue() && typeof +this.value() === 'number' && +this.value() < 0 ? (this.maxLength() || 21) + 1 : this.maxLength() || 21;\n\n if (this.dataType() === 'float') {\n maxLength--;\n }\n if (numbers?.[0]) {\n lengthValueCompare = viewDataNumberByLanguage(`${numbers[0]}`.replace(/\\./g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14).length;\n }\n if (numbers?.[1]) {\n lengthValueCompare += 1 + numbers[1].length;\n }\n if (maxLength && lengthValueCompare >= maxLength) {\n const valueDisplay = viewDataNumberByLanguage((lengthValueCompare === maxLength ? valueCompare : `${this.value()}`).replace(/\\./g, ','), this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n\n return true;\n }\n\n return false;\n }\n\n private checkTypeNumber(e: IEvent | IEventCustom, fieldName: string) {\n const currentLang = UtilsCache.getLang();\n const separator = currentLang === UtilsLanguageConstants.VI ? '.' : ',';\n const separatorRevert = currentLang === UtilsLanguageConstants.VI ? ',' : '.';\n let valueTarget: IString = e.target.value;\n const selectionStart = e.target.selectionStart - 1;\n const { data, keyCode } = e;\n\n this.charFirstIsZero.set(false);\n if (valueTarget.startsWith('0')) {\n this.charFirstIsZero.set(true);\n }\n\n if (this.dataType() === 'string') {\n if (this.autoRemoveEmoji()) {\n e.target.value = removeEmoji(valueTarget);\n }\n\n return;\n }\n if (/\\d/g.test(data) && valueTarget.charAt(selectionStart + 1) === '-') {\n valueTarget = valueTarget.replaceAt(0, '') as IString;\n }\n let strRegex = `[^0-9.,${this.acceptNegativeValue() ? '-' : ''}]`;\n\n if (new RegExp(strRegex, 'gi').test((e as any)[fieldName]) && keyCode !== UtilsKeyCodeConstant.BACKSPACE) {\n e.preventDefault();\n e.target.value = valueTarget = e.target.value.replace(new RegExp(strRegex, 'gi'), '') as IString;\n }\n if (!e.fakeEvent) {\n switch (data) {\n case separator:\n valueTarget = valueTarget.replace(new RegExp(`[${separator}]`, 'gi'), '') as IString;\n break;\n\n case separatorRevert: {\n if (currentLang === UtilsLanguageConstants.VI && this.dataType() === 'int') {\n e.target.value = valueTarget.replace(new RegExp(`[${separatorRevert}]`, 'gi'), '') as IString;\n\n return;\n }\n if (valueTarget === separatorRevert) {\n e.target.value = '';\n\n return;\n }\n if (valueTarget && valueTarget.length === 2 && valueTarget.startsWith('-') && data && !/\\d/g.test(data)) {\n e.target.value = '-';\n\n return;\n }\n const occurrencesByCharacter = valueTarget.occurrencesByCharacter(separatorRevert);\n\n if (occurrencesByCharacter > 1) {\n valueTarget = valueTarget.replaceAt(e.target.selectionStart - 1, '') as IString;\n break;\n }\n let maxLength = this.dataType() === 'float' ? (this.maxLength() || 21) - 1 : this.maxLength() || 21;\n\n if (valueTarget.indexOf('-') >= 0) {\n maxLength++;\n }\n if (occurrencesByCharacter === 1 && valueTarget.length === maxLength && valueTarget.indexOf(separatorRevert) === valueTarget.length - 1) {\n valueTarget = valueTarget.replaceAt(e.target.selectionStart - 1, '') as IString;\n break;\n }\n if (this.onlyAcceptNegativeValue() && valueTarget === `0${separatorRevert}`) {\n e.target.value = '0';\n break;\n }\n const valueBeforeFormat = e.target.value;\n const valueAfterFormat = viewDataNumberByLanguage(e.target.value, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n if (valueBeforeFormat === valueAfterFormat) {\n return;\n }\n e.target.value = valueAfterFormat;\n }\n }\n valueTarget = formatNumber(valueTarget) as IString;\n }\n const indexesOfDash = valueTarget.indexesOfCharacter?.('-') || [];\n\n if (indexesOfDash.length) {\n const [firstIndex, secondIndex] = indexesOfDash;\n const indexReplace = firstIndex || secondIndex; // firstIndex=0 thì ko xóa\n\n if (indexReplace) {\n valueTarget = valueTarget.replaceAll(indexReplace, '-', '') as IString;\n }\n }\n if (this.acceptNegativeValue() && valueTarget === '-') {\n e.target.value = valueTarget;\n\n return;\n }\n switch (this.dataType()) {\n case 'int': {\n strRegex = `[^0-9${this.acceptNegativeValue() ? '-' : ''}]`;\n if (!e.fakeEvent) {\n valueTarget = valueTarget.replace(new RegExp(strRegex, 'gi'), '') as IString;\n const maxTotalNumber = valueTarget.includes('-') ? 17 : 16;\n\n if (valueTarget.length > maxTotalNumber) {\n valueTarget = valueTarget.slice(0, maxTotalNumber) as IString;\n }\n if (Math.abs(parseInt(valueTarget)) > (this.maxValueNumber() ?? 9007199254740991)) {\n valueTarget = valueTarget.slice(0, maxTotalNumber - 1) as IString;\n }\n if (this.onlyAcceptNegativeValue() && !valueTarget.startsWith('-') && !valueTarget.startsWith('0')) {\n valueTarget = '' as IString;\n }\n if (valueTarget && /(^-)?(^0+)/.test(valueTarget)) {\n const id = uuid();\n\n valueTarget = valueTarget.replace(/(^-)?(^0+)/, `$1${id}`).replace(id, '0') as IString;\n }\n if (valueTarget === '-0') {\n valueTarget = '0' as IString;\n }\n if (valueTarget && /(^0)([1-9])(\\d+)?/.test(valueTarget)) {\n valueTarget = valueTarget.replace(/(^0)([1-9])(\\d+)?/, '$2$3') as IString;\n }\n const valueDisplay = viewDataNumberByLanguage(valueTarget, this.acceptNegativeValue() || false, 0);\n\n if (this.checkMaxLengthNumberAndSetValue(valueDisplay, e)) {\n break;\n }\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n break;\n }\n const indexOfDot = valueTarget.indexOf('.');\n const indexOfComma = valueTarget.indexOf(',');\n let indexChoose = indexOfDot;\n\n if (indexOfDot < 0 || indexOfDot > indexOfComma) {\n indexChoose = indexOfComma;\n }\n if (indexChoose >= 0) {\n valueTarget = valueTarget.substring(0, indexChoose) as IString;\n }\n const valueDisplay = viewDataNumberByLanguage(valueTarget, this.acceptNegativeValue() || false, 0);\n\n if (this.checkMaxLengthNumberAndSetValue(valueDisplay, e)) {\n break;\n }\n e.target.value = `${this.getCheckZero(+valueDisplay, e.target.value)}${valueDisplay}`;\n break;\n }\n\n case 'float':\n\n // eslint-disable-next-line no-fallthrough\n case 'bigint':\n this.getValueFormat(e, valueTarget, separator, separatorRevert, currentLang);\n break;\n }\n if (valueTarget === 'NaN') {\n e.target.value = '' as IString;\n }\n if (e.fakeEvent || data === undefined) {\n return;\n }\n this.setCaretPosition(e, selectionStart + 1);\n }\n\n private getValueFormat(e: IEvent | IEventCustom, valueTarget: IString, separator: '.' | ',', separatorRevert: '.' | ',', currentLang: string) {\n let strRegex = `[^0-9${separator}${currentLang === UtilsLanguageConstants.EN ? '.' : ''}${this.acceptNegativeValue() ? '-' : ''}]`;\n\n if (!e.fakeEvent) {\n valueTarget = valueTarget.replace(new RegExp(strRegex, 'gi'), '') as IString;\n }\n const indexesOfSeparator = valueTarget.indexesOfCharacter(separator);\n const [firstIndex, secondIndex] = indexesOfSeparator;\n\n if (secondIndex) {\n valueTarget = e.target.value.replaceAll(secondIndex, separator, '');\n }\n if (firstIndex && valueTarget.substring(firstIndex + 1).length >= (this.fixedFloat() ?? 14)) {\n valueTarget = valueTarget.substring(0, firstIndex + (this.fixedFloat() ?? 14) + 1) as IString;\n }\n strRegex = `[${separator}]`;\n valueTarget = valueTarget.replace(new RegExp(strRegex, 'g'), separatorRevert) as IString;\n let valueFormat = '';\n let [fontSeparatorNumber, behindSeparatorNumber] = valueTarget.split(separatorRevert);\n let maxFontTotalNumber = fontSeparatorNumber?.includes('-') ? 16 : 15;\n\n if (this.dataType() === 'bigint') {\n maxFontTotalNumber = (this.maxLengthNumberCount() ?? 19) - (this.fixedFloat() ?? 4) + (fontSeparatorNumber.includes('-') ? 1 : 0);\n }\n const fontOverMaxTotalNumber = fontSeparatorNumber && fontSeparatorNumber.length >= maxFontTotalNumber;\n\n if (fontOverMaxTotalNumber) {\n fontSeparatorNumber = fontSeparatorNumber.slice(0, maxFontTotalNumber) as IString;\n if (this.dataType() === 'float') {\n behindSeparatorNumber = '';\n }\n }\n switch (this.dataType()) {\n case 'float':\n if (!fontOverMaxTotalNumber && behindSeparatorNumber?.length) {\n behindSeparatorNumber = behindSeparatorNumber.slice(0, maxFontTotalNumber - fontSeparatorNumber.length);\n }\n behindSeparatorNumber = `${behindSeparatorNumber ?? ''}`;\n break;\n\n case 'bigint':\n if (behindSeparatorNumber?.length && behindSeparatorNumber.length > (this.fixedFloat() ?? 4)) {\n behindSeparatorNumber = behindSeparatorNumber.slice(0, this.fixedFloat() ?? 4);\n }\n break;\n }\n const indexOfSeparatorRevert = valueTarget.indexOf(separatorRevert);\n\n if (this.onlyAcceptNegativeValue() && !fontSeparatorNumber.startsWith('-') && !fontSeparatorNumber.startsWith('0')) {\n fontSeparatorNumber = '';\n }\n if (this.onlyAcceptNegativeValue() && indexOfSeparatorRevert >= 0 && !fontSeparatorNumber.startsWith('-')) {\n fontSeparatorNumber = '0';\n behindSeparatorNumber = this.dataType() === 'bigint' ? '0' : '';\n }\n if (fontSeparatorNumber && /(^-)(0+)/.test(fontSeparatorNumber)) {\n const id = uuid();\n\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^-)(0+)/, `$1${id}`).replace(id, '0');\n }\n if (fontSeparatorNumber && /(^0+)/.test(fontSeparatorNumber)) {\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^0+)/, '0');\n }\n if (/(^-)(0+)([1-9])([\\d.]+)?/.test(fontSeparatorNumber)) {\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^-)(0+)([1-9])([\\d.]+)?/, '$1$3$4');\n }\n if (/(^0+)([1-9])([\\d.]+)?/.test(fontSeparatorNumber)) {\n fontSeparatorNumber = fontSeparatorNumber.replace(/(^0+)([1-9])([\\d.]+)?/, '$2$3');\n }\n switch (this.dataType()) {\n case 'float':\n if (/(^0{6})/.test(behindSeparatorNumber)) {\n behindSeparatorNumber = behindSeparatorNumber.replace(/(^0{6})/, '00000');\n }\n break;\n\n case 'bigint':\n if (/(^0{4})/.test(behindSeparatorNumber)) {\n behindSeparatorNumber = behindSeparatorNumber.replace(/(^0{4})/, '0000');\n }\n break;\n }\n if (fontSeparatorNumber) {\n fontSeparatorNumber = viewDataNumberByLanguage(fontSeparatorNumber, this.acceptNegativeValue(), this.fixedFloat() ?? (this.dataType() === 'bigint' ? 4 : 14));\n }\n const hasSeparatorRevert = (this.dataType() === 'bigint' ? true : !fontOverMaxTotalNumber) && indexOfSeparatorRevert >= 0;\n\n valueFormat = `${fontSeparatorNumber ?? ''}${hasSeparatorRevert ? separatorRevert : ''}${behindSeparatorNumber ?? ''}`;\n if (valueFormat && this.onlyAcceptNegativeValue() && !valueFormat.startsWith('-') && !valueFormat.startsWith('0')) {\n valueFormat = '0';\n }\n if (this.checkMaxLengthNumberAndSetValue(valueFormat, e)) {\n return;\n }\n e.target.value = valueFormat as IString;\n }\n\n private getCheckZero(value: number, targetCurrent: string): string {\n let zero = '';\n\n if (this.dataType() !== 'int') {\n return zero;\n }\n\n if (this.charFirstIsZero() && this.keepZeroInTypeInt() && value !== 0) {\n zero = '0';\n }\n\n if (this.charFirstIsZero() && this.autoAddZeroLessThan10InTypeInt() && ((value > 0 && value < 10 && !/(^0)+/.test(`${targetCurrent}`)) || (/^0{2,}$/.exec(targetCurrent ?? '')?.length && value === 0))) {\n zero = '0';\n }\n\n return zero;\n }\n\n private setCaretPosition(e: IEvent | IEventCustom, selectionStart: number) {\n const { keyCode, inputType } = e;\n\n if (keyCode === UtilsKeyCodeConstant.UP_ARROW || keyCode === UtilsKeyCodeConstant.DOWN_ARROW || keyCode === UtilsKeyCodeConstant.LEFT_ARROW || keyCode === UtilsKeyCodeConstant.RIGHT_ARROW) {\n return;\n }\n const valueTarget = e.target.value.replace('-', '');\n let value = UtilsCache.getLang() === UtilsLanguageConstants.VI ? `${this.value() || 0}`.replace('.', ',') : `${this.value() || 0}`;\n\n value = viewDataNumberByLanguage(value, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n value = `${value}`.replace('-', '');\n\n if (value === valueTarget && value !== '0' && value !== '-') {\n setCaretPosition(this.Element, selectionStart);\n\n return;\n }\n\n let factor = 0;\n const distance = valueTarget.length - value.length;\n if (distance < -1) {\n factor = -1;\n }\n if (distance > 1) {\n factor = 1;\n }\n selectionStart += factor;\n if (inputType === 'insertFromPaste' && this.dataTextPaste()) {\n const dataTextDisplay = `${viewDataNumberByLanguage(this.dataTextPaste(), this.acceptNegativeValue(), this.fixedFloat() ?? 14)}`;\n const indexes: Array<number> = e.target.value.indexesByString(dataTextDisplay);\n\n selectionStart -= factor;\n\n if (indexes.some((index) => index === selectionStart) || !indexes.length) {\n return setCaretPosition(this.Element, selectionStart);\n }\n\n let newSelectionStart = indexes[0];\n\n for (const index of indexes) {\n let replaceValue = formatNumber(`${valueTarget.substring(0, index)}${valueTarget.substring(index + dataTextDisplay.length + 1, valueTarget.length)}`);\n\n replaceValue = viewDataNumberByLanguage(replaceValue, this.acceptNegativeValue(), this.fixedFloat() ?? 14);\n if (value === replaceValue) {\n newSelectionStart = index;\n break;\n }\n }\n\n if (newSelectionStart >= 0) {\n selectionStart = newSelectionStart + dataTextDisplay.length + 1;\n\n return setCaretPosition(this.Element, selectionStart);\n }\n }\n\n setCaretPosition(this.Element, selectionStart);\n }\n\n private parseValueByDataType(value: string): number | string {\n switch (this.dataType()) {\n case 'string':\n return value;\n\n case 'int':\n if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n return 0;\n }\n\n return +formatNumber(value);\n\n case 'float':\n if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n return 0;\n }\n\n return parseFloat((+formatNumber(value)).toFixed(this.fixedFloat() ?? 14));\n\n case 'bigint':\n if (this.acceptNegativeValue() && (value === '-' || value === ',' || value === '.')) {\n return '0';\n }\n\n return formatNumber(value);\n }\n }\n\n private calculatorHeightTextArea(e: IEvent | IEventCustom) {\n if (this.tagInput() === 'input') {\n return;\n }\n const target = e.target;\n\n target.style.overflow = 'hidden';\n target.style.height = `${this.defaultHeight()}px`;\n const { scrollHeight } = target;\n\n const height = scrollHeight + 2; // border top + bottom = 2\n\n if (!this.preHeightArea() && this.preHeightArea() !== height) {\n this.outHeightAreaChange.emit({ isChange: true, height: height });\n }\n\n if (height > (this.maxHeightTextArea() ?? 32)) {\n target.style.overflow = 'auto';\n }\n if (this.iframeRef) {\n this.iframeRef.style.height = `${height}px`;\n }\n target.style.height = `${height}px`;\n this.preHeightArea.set(height);\n }\n\n private combineObservable(mouseDownEvent: Observable<IEvent>, observableMerge: Observable<IEvent>) {\n mouseDownEvent\n .pipe(\n mergeMap(() => observableMerge),\n debounceTime(0),\n tap((e: IEvent) => this.checkTypeNumber(e, 'key'))\n )\n .subscribe((e: IEvent) => this.processEventAndEmitValue(e));\n }\n\n private async focus(emitEvent?: boolean) {\n setTimeout(() => {\n this.Element?.focus();\n if (emitEvent) {\n this.outFocusAndBlurEvent.emit({ name: 'focus', event: { target: this.Element } as unknown as IEvent });\n }\n }, this.focusTimeOut());\n }\n\n private async blur(emitEvent?: boolean) {\n setTimeout(() => {\n this.Element?.blur();\n if (emitEvent) {\n this.outFocusAndBlurEvent.emit({ name: 'blur', event: { target: this.Element } as unknown as IEvent });\n }\n }, this.blurTimeOut());\n }\n\n private async addDataToSelectionInput(data: string | number) {\n const target = this.Element;\n const selectionStart = target.selectionStart;\n\n const value = this.Element.value;\n const beforeValue = value.substring(0, selectionStart);\n const afterValue = value.substring(selectionStart);\n\n this.Element.value = `${beforeValue}${data}${afterValue}`;\n setCaretPosition(this.Element, selectionStart + data.toString().length);\n const eventFake: IEventCustom = {\n preventDefault: () => {\n return;\n },\n target: this.Element,\n data: '',\n fakeEvent: true,\n };\n\n this.processEventAndEmitValue(eventFake);\n }\n\n protected handlerOnLoad(e: Event, element: HTMLIFrameElement) {\n e.stopPropagation();\n this.iframeRef = element;\n const iframe: any = element.contentWindow || element.contentDocument;\n this.configProjectService.setupFontFamily(iframe.document);\n\n this.inputIframeRef.set({ nativeElement: iframe.document.getElementsByTagName('TEXTAREA')[0] });\n if (this.Element) {\n this.renderer.setAttribute(this.Element, 'placeholder', this.translateService.instant(this.placeholder()));\n if (this.disable()) {\n this.renderer.setAttribute(this.Element, 'disabled', 'true');\n }\n this.afterViewInit();\n }\n }\n\n private async resetValue() {\n const value = '';\n\n this.Element.value = value;\n this.value.set(value);\n this.outChange.emit(value);\n }\n\n private countDisplayComputed() {\n if ((this.dataType() !== 'string' && this.valueUpDownNumber()) || !isNil(this.iconRightClass())) {\n setTimeout(() => {\n this.paddingRightCustom.set((this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0) + 12);\n });\n }\n if (!this.showCount() || this.dataType() !== 'string' || typeof this.value() !== 'string') {\n return '0';\n }\n setTimeout(() => {\n this.paddingRightCustom.set((this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0) + 12);\n if (this.showCount()) {\n if (this.textCountRef()) {\n this.paddingRightCustom.set(this.textCountRef()?.nativeElement.clientWidth + 16);\n }\n\n if (this.tagInput() === 'input') {\n this.paddingRightCustom.update((value) => {\n return value + (this.elementRightRef()?.nativeElement.getBoundingClientRect().width || 0);\n });\n }\n }\n });\n\n return `${viewDataNumberByLanguage((this.value() as string).length, false)}`;\n }\n\n private async selectAllContent() {\n setTimeout(() => {\n this.Element?.select();\n }, this.selectAllTimeOut());\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div\n [class]=\"'flex relative !text-[#9ca2ad] ' + classContainerInput()\"\n [class.libs-ui-components-input-textarea-container]=\"tagInput() === 'textarea' && resize() === 'auto'\">\n @if (tagInput() === 'input') {\n <input\n #inputRef\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [style.height.px]=\"defaultHeight()\"\n [style.minHeight.px]=\"defaultHeight()\"\n [style.paddingRight.px.important]=\"paddingRightCustom()\"\n [class.w-full]=\"!ignoreWidthInput100()\"\n [class]=\"'libs-ui-input libs-ui-font-h5r ' + classInclude()\"\n [class.border-primary-focus-general]=\"focusInput()\"\n [class.libs-ui-input-not-border]=\"noBorder()\"\n [class.libs-ui-bg-special-none]=\"backgroundNone()\"\n [class.libs-ui-border-error-general]=\"borderError()\"\n [class.text-[#29c7cc]]=\"useColorModeExist()\"\n [class.!pl-[40px]]=\"iconLeftClass()\"\n [attr.maxLength]=\"maxLength() || undefined\"\n [placeholder]=\"placeholder() | translate\"\n [attr.type]=\"typeInput()\"\n [attr.inputmode]=\"modeInput()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disable()\"\n [autocomplete]=\"resetAutoCompletePassword() ? 'new-password' : ''\" />\n }\n @if (tagInput() === 'textarea') {\n @if (resize() === 'auto') {\n <div class=\"libs-ui-components-input-textarea-container-resize-icon\"></div>\n }\n <textarea\n #inputRef\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [style.height.px]=\"defaultHeight()\"\n [style.minHeight.px]=\"minHeightTextArea() ?? defaultHeight()\"\n [style.paddingRight.px.important]=\"paddingRightCustom()\"\n [style.maxHeight.px]=\"maxHeightTextArea()\"\n [style.resize]=\"resize()\"\n [class.w-full]=\"!ignoreWidthInput100()\"\n [class]=\"'libs-ui-input libs-ui-font-h5r libs-ui-cursor-auto ' + classInclude()\"\n [class.libs-ui-input-not-border]=\"noBorder()\"\n [class.libs-ui-bg-special-none]=\"backgroundNone()\"\n [class.libs-ui-border-error-general]=\"borderError()\"\n [class.text-[#29c7cc]]=\"useColorModeExist()\"\n [class.pl-[32px]]=\"iconLeftClass()\"\n [attr.maxLength]=\"maxLength() || undefined\"\n [placeholder]=\"placeholder() | translate\"\n [readonly]=\"readonly()\"\n [disabled]=\"disable()\"></textarea>\n }\n\n @if (tagInput() === 'iframe-textarea' && htmlIframeArea()) {\n <span class=\"d-none\"></span>\n <iframe\n #iframeRef\n title=\"Content frame\"\n [style.maxHeight.px]=\"maxHeightTextArea()\"\n [style.height.px]=\"defaultHeight()\"\n [srcdoc]=\"htmlIframeArea()\"\n class=\"w-full border-0\"\n (load)=\"handlerOnLoad($event, iframeRef)\"></iframe>\n }\n @if (iconLeftClass()) {\n <libs_ui-components-popover\n [ignoreShowPopover]=\"!popoverContentIconLeft()\"\n [config]=\"{ maxWidth: 250, direction: 'bottom', content: popoverContentIconLeft(), zIndex: zIndexPopoverContent() }\">\n <i\n [attr.tagInput]=\"tagInput()\"\n [class]=\"iconLeftClass() + ' libs-ui-input-icon-left !text-[#9ca2ad]'\"\n (click)=\"handlerEventIconLeft($event, 'click')\"\n (keydown.enter)=\"handlerEventIconLeft($event, 'click')\"></i>\n </libs_ui-components-popover>\n }\n <div\n #elementRightRef\n class=\"absolute flex items-center h-full top-0 right-0\">\n @if (value() && placeholder().trim() && keepPlaceholderOnly()) {\n <span [class]=\"'libs-ui-input-placeholder-custom libs-ui-font-h5r'\">\n {{ placeholder() }}\n </span>\n }\n @if (dataType() !== 'string' && valueUpDownNumber()) {\n <libs_ui-components-buttons-sort\n class=\"mr-[12px]\"\n [disableAsc]=\"disableAsc()\"\n [disableDesc]=\"disableDesc()\"\n [attr.tagInput]=\"tagInput()\"\n [onlyEmit]=\"true\"\n [disable]=\"disable() || readonly()\"\n (outChange)=\"handlerChangeValue($event)\" />\n }\n @if (iconRightClass()) {\n <libs_ui-components-popover\n class=\"flex\"\n [ignoreShowPopover]=\"!popoverContentIconRight()\"\n [config]=\"{ maxWidth: 250, direction: 'bottom', content: popoverContentIconRight(), zIndex: zIndexPopoverContent() }\">\n <i\n [attr.tagInput]=\"tagInput()\"\n [class.text-[#6a7383]]=\"(!disable() && !readonly()) || acceptOnlyClickIcon()\"\n [class.text-[#cdd0d6]]=\"((disable() || readonly()) && !acceptOnlyClickIcon()) || setIconRightColorSameColorDisableReadOnly()\"\n [class]=\"iconRightClass() + ' libs-ui-input-icon-right'\"\n (click)=\"handlerEventIconRight($event, 'click')\"\n (keydown.enter)=\"handlerEventIconRight($event, 'click')\"></i>\n </libs_ui-components-popover>\n }\n </div>\n <div\n class=\"libs-ui-input-text-bottom {{ classContainerBottomInput() }}\"\n [style.right.px]=\"(tagInput() === 'input' ? elementRightRef.clientWidth || 0 : 0) + 8\">\n @if (templateLeftBottomInput(); as templateLeftBottomInput) {\n <ng-container *ngTemplateOutlet=\"templateLeftBottomInput\" />\n }\n <div\n #textCountRef\n class=\"text-[#9ca2ad] libs-ui-font-h7r\"\n [class.hidden]=\"dataType() !== 'string' || !showCount()\">\n <span>{{ countDisplay() }}</span>\n @if (maxLength()) {\n <span>/{{ maxLengthDisplay() }}</span>\n }\n </div>\n @if (templateRightBottomInput(); as templateRightBottomInput) {\n <ng-container *ngTemplateOutlet=\"templateRightBottomInput\" />\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@libs-ui/components-inputs-input",
3
- "version": "0.2.356-42",
3
+ "version": "0.2.356-43",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18.0.0",
6
6
  "@angular/platform-browser": ">=18.0.0",
7
- "@libs-ui/components-buttons-sort": "0.2.356-42",
8
- "@libs-ui/components-popover": "0.2.356-42",
9
- "@libs-ui/interfaces-types": "0.2.356-42",
10
- "@libs-ui/services-config-project": "0.2.356-42",
11
- "@libs-ui/utils": "0.2.356-42",
7
+ "@libs-ui/components-buttons-sort": "0.2.356-43",
8
+ "@libs-ui/components-popover": "0.2.356-43",
9
+ "@libs-ui/interfaces-types": "0.2.356-43",
10
+ "@libs-ui/services-config-project": "0.2.356-43",
11
+ "@libs-ui/utils": "0.2.356-43",
12
12
  "@ngx-translate/core": "^15.0.0",
13
13
  "rxjs": "~7.8.0",
14
14
  "@angular/common": "~18.2.0"