@libs-ui/components-tags 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,153 +1,643 @@
1
1
  # @libs-ui/components-tags
2
2
 
3
- > Library Angular Component quản lý và hiển thị danh sách các thẻ (Tags/Labels) với hỗ trợ tìm kiếm, lựa chọn từ danh sách, và tùy chỉnh giao diện mạnh mẽ.
3
+ > Component Angular quản lý và hiển thị danh sách thẻ (tags) với hỗ trợ chọn từ popover list, nhập tự do, tìm kiếm, avatar, validation và tùy chỉnh giao diện.
4
4
 
5
5
  ## Giới thiệu
6
6
 
7
- `LibsUiComponentsTagsComponent` là một component linh hoạt cho phép người dùng chọn một hoặc nhiều mục từ một danh sách hoặc nhập trực tiếp. Nó hỗ trợ hiển thị avatar, các trạng thái validation, tìm kiếm online/offline, và tích hợp sâu với `libs_ui-components-list` và `libs_ui-components-popover`.
7
+ `LibsUiComponentsTagsComponent` là component linh hoạt cho phép người dùng chọn một hoặc nhiều mục từ danh sách gợi ý (tích hợp `libs_ui-components-list` và `libs_ui-components-popover`) hoặc nhập trực tiếp để tạo tag mới. Component hỗ trợ tìm kiếm online/offline, hiển thị avatar bên cạnh nhãn tag, kiểm tra trùng lặp thông minh, các chế độ validation đa dạng và expose `FunctionControl` để component cha điều khiển từ bên ngoài.
8
8
 
9
- ### Tính năng
9
+ ## Tính năng
10
10
 
11
- - ✅ **Multiple Selection**: Chọn nhiều mục cùng lúc.
12
- - ✅ **Single Selection**: Chế độ chọn một mục duy nhất (UI giống dropdown).
13
- - ✅ **Search Online/Offline**: Tìm kiếm linh hoạt từ local data hoặc qua API.
14
- - ✅ **Avatar Support**: Tự động hiển thị avatar hoặc text avatar cho mỗi tag.
15
- - ✅ **Enter to Add**: Cho phép tạo mới tag bằng cách nhấn Enter.
16
- - ✅ **Validation**: Hỗ trợ required, max items, và pattern validation.
17
- - ✅ **Custom Styling**: Tùy chỉnh màu sắc, border cho từng tag qua config.
18
- - ✅ **OnPush Change Detection**: Tối ưu hiệu năng.
11
+ - ✅ **Multiple Selection**: Chọn nhiều mục đồng thời từ danh sách gợi ý
12
+ - ✅ **Single Selection**: Chế độ chọn một mục duy nhất với giao diện giống dropdown
13
+ - ✅ **Free Input / Enter to Add**: Nhập tự do, nhấn Enter để tạo tag mới
14
+ - ✅ **Search Online/Offline**: Tìm kiếm linh hoạt từ local data hoặc gọi API debounced 1.5s
15
+ - ✅ **Avatar Support**: Hiển thị avatar ảnh hoặc text avatar bên cạnh mỗi tag
16
+ - ✅ **Duplicate Check**: Tự động kiểm tra trùng lặp theo label và key trước khi thêm
17
+ - ✅ **Validation**: Required, max items, và pattern (regex) validation
18
+ - ✅ **Custom Styling**: Tùy chỉnh màu sắc, border cho từng tag qua `ITagsConfig.getStyles`
19
+ - ✅ **Disable / Readonly Mode**: Hỗ trợ trạng thái vô hiệu hóa và chỉ đọc
20
+ - ✅ **FunctionControl API**: Expose `checkIsValid`, `clearItemSelected`, `resetToDefaultDataSelected`, v.v. qua `outFunctionsControl`
21
+ - ✅ **HTTP Detail Loading**: Tự động load chi tiết item theo keys qua `httpRequestDetailItemByIds`
22
+ - ✅ **OnPush Change Detection**: Tối ưu hiệu năng với Angular Signals
19
23
 
20
24
  ## Khi nào sử dụng
21
25
 
22
- - Trong các form cần chọn nhiều nhãn (labels), người nhận (recipients), hoặc phân loại (categories).
23
- - Khi cần một bộ chọn (selector) có khả năng tìm kiếm mạnh mẽ và hiển thị thông tin phong phú (ảnh, tên).
24
- - Thay thế cho các input text thuần túy khi dữ liệu có cấu trúc.
26
+ - Trong các form cần gán nhãn (labels), người nhận (recipients), danh mục (categories), kỹ năng (skills)
27
+ - Khi bộ chọn cần tìm kiếm mạnh, hiển thị thông tin phong phú (avatar, tên) kèm mỗi lựa chọn
28
+ - Thay thế `input` text thuần khi dữ liệu có cấu trúc và cần liên kết với danh sách nguồn
29
+ - Khi nghiệp vụ cần cho phép tạo tag mới tự do kết hợp với chọn tag có sẵn
30
+ - Khi cần chọn đơn với giao diện giống dropdown nhưng muốn hiển thị tag bên trong ô
25
31
 
26
32
  ## Cài đặt
27
33
 
28
34
  ```bash
29
- # npm
30
35
  npm install @libs-ui/components-tags
31
-
32
- # yarn
33
- yarn add @libs-ui/components-tags
34
36
  ```
35
37
 
36
38
  ## Import
37
39
 
38
40
  ```typescript
39
41
  import { LibsUiComponentsTagsComponent } from '@libs-ui/components-tags';
42
+ import { ITagsConfig, ITagsFunctionControlEvent } from '@libs-ui/components-tags';
40
43
 
41
44
  @Component({
42
45
  standalone: true,
43
46
  imports: [LibsUiComponentsTagsComponent],
44
- // ...
45
47
  })
46
48
  export class YourComponent {}
47
49
  ```
48
50
 
49
- ## Ví dụ
51
+ ## Ví dụ sử dụng
52
+
53
+ ### 1. Cơ bản — Chọn nhiều tag từ danh sách
54
+
55
+ ```typescript
56
+ // your.component.ts
57
+ import { Component, signal } from '@angular/core';
58
+ import { LibsUiComponentsTagsComponent, ITagsConfig } from '@libs-ui/components-tags';
59
+ import { IListConfigItem } from '@libs-ui/components-list';
60
+ import { of } from 'rxjs';
61
+
62
+ @Component({
63
+ standalone: true,
64
+ imports: [LibsUiComponentsTagsComponent],
65
+ templateUrl: './your.component.html',
66
+ })
67
+ export class YourComponent {
68
+ private readonly tagService = {
69
+ getAll: () => of({
70
+ data: [
71
+ { id: '1', label: 'Angular' },
72
+ { id: '2', label: 'React' },
73
+ { id: '3', label: 'Vue' },
74
+ { id: '4', label: 'TypeScript' },
75
+ ],
76
+ paging: { page: 1, total_pages: 1 },
77
+ }),
78
+ };
79
+
80
+ readonly defaultItems = [{ id: '1', label: 'Angular' }];
81
+
82
+ readonly config: ITagsConfig = {};
83
+
84
+ readonly listConfig: IListConfigItem = {
85
+ type: 'checkbox',
86
+ configTemplateCheckbox: signal({
87
+ fieldKey: 'id',
88
+ getValue: (item: any) => item.label,
89
+ }),
90
+ httpRequestData: signal({
91
+ objectInstance: this.tagService,
92
+ functionName: 'getAll',
93
+ argumentsValue: [],
94
+ }) as any,
95
+ };
96
+
97
+ protected handlerSelectTags(items: unknown[]): void {
98
+ // items là mảng các object đã chọn
99
+ }
100
+ }
101
+ ```
102
+
103
+ ```html
104
+ <!-- your.component.html -->
105
+ <libs_ui-components-tags
106
+ [config]="config"
107
+ [listConfig]="listConfig"
108
+ [defaultItemsSelected]="defaultItems"
109
+ placeholder="Tìm kiếm hoặc nhập tag..."
110
+ (outSelectMultiItem)="handlerSelectTags($event)"
111
+ />
112
+ ```
113
+
114
+ ---
115
+
116
+ ### 2. Chọn đơn — Giao diện giống Dropdown
117
+
118
+ ```typescript
119
+ // your.component.ts
120
+ import { Component, signal } from '@angular/core';
121
+ import { LibsUiComponentsTagsComponent, ITagsConfig } from '@libs-ui/components-tags';
122
+ import { IListConfigItem } from '@libs-ui/components-list';
123
+ import { of } from 'rxjs';
50
124
 
51
- ### Basic Usage
125
+ @Component({
126
+ standalone: true,
127
+ imports: [LibsUiComponentsTagsComponent],
128
+ templateUrl: './your.component.html',
129
+ })
130
+ export class YourComponent {
131
+ private readonly categoryService = {
132
+ getAll: () => of({
133
+ data: [
134
+ { id: 'BE', label: 'Backend' },
135
+ { id: 'FE', label: 'Frontend' },
136
+ { id: 'DS', label: 'Design' },
137
+ ],
138
+ paging: { page: 1, total_pages: 1 },
139
+ }),
140
+ };
141
+
142
+ readonly config: ITagsConfig = {
143
+ uiLikeDropdown: true,
144
+ ignoreInput: true,
145
+ };
146
+
147
+ readonly listConfig: IListConfigItem = {
148
+ type: 'text',
149
+ configTemplateText: signal({
150
+ fieldKey: 'id',
151
+ getValue: (item: any) => item.label,
152
+ }),
153
+ httpRequestData: signal({
154
+ objectInstance: this.categoryService,
155
+ functionName: 'getAll',
156
+ argumentsValue: [],
157
+ }) as any,
158
+ };
159
+
160
+ protected handlerSelectCategory(items: unknown[]): void {
161
+ // items[0] là item được chọn
162
+ }
163
+ }
164
+ ```
165
+
166
+ ```html
167
+ <!-- your.component.html -->
168
+ <libs_ui-components-tags
169
+ [config]="config"
170
+ [listConfig]="listConfig"
171
+ [singleSelected]="true"
172
+ placeholder="Chọn danh mục..."
173
+ (outSelectMultiItem)="handlerSelectCategory($event)"
174
+ />
175
+ ```
176
+
177
+ ---
178
+
179
+ ### 3. Hiển thị Avatar
180
+
181
+ ```typescript
182
+ // your.component.ts
183
+ import { Component, signal } from '@angular/core';
184
+ import { LibsUiComponentsTagsComponent, ITagsConfig } from '@libs-ui/components-tags';
185
+ import { IListConfigItem } from '@libs-ui/components-list';
186
+ import { of } from 'rxjs';
187
+
188
+ @Component({
189
+ standalone: true,
190
+ imports: [LibsUiComponentsTagsComponent],
191
+ templateUrl: './your.component.html',
192
+ })
193
+ export class YourComponent {
194
+ private readonly userService = {
195
+ getAll: () => of({
196
+ data: [
197
+ { id: '1', label: 'Nguyen Van A', avatar: 'https://example.com/avatar1.png', user: 'nva' },
198
+ { id: '2', label: 'Tran Thi B', avatar: 'https://example.com/avatar2.png', user: 'ttb' },
199
+ { id: '3', label: 'Le Van C', user: 'lvc' },
200
+ ],
201
+ paging: { page: 1, total_pages: 1 },
202
+ }),
203
+ };
204
+
205
+ readonly config: ITagsConfig = {};
206
+
207
+ readonly listConfig: IListConfigItem = {
208
+ type: 'text',
209
+ configTemplateText: signal({
210
+ fieldKey: 'id',
211
+ getValue: (item: any) => item.label,
212
+ }),
213
+ httpRequestData: signal({
214
+ objectInstance: this.userService,
215
+ functionName: 'getAll',
216
+ argumentsValue: [],
217
+ }) as any,
218
+ };
219
+ }
220
+ ```
221
+
222
+ ```html
223
+ <!-- your.component.html -->
224
+ <libs_ui-components-tags
225
+ [config]="config"
226
+ [listConfig]="listConfig"
227
+ fieldGetImage="avatar"
228
+ fieldGetTextAvatar="user"
229
+ [imageSize]="24"
230
+ placeholder="Chọn thành viên..."
231
+ />
232
+ ```
233
+
234
+ ---
235
+
236
+ ### 4. Validation — Required và Max Items
237
+
238
+ ```typescript
239
+ // your.component.ts
240
+ import { Component, signal } from '@angular/core';
241
+ import { LibsUiComponentsTagsComponent, ITagsConfig, ITagsFunctionControlEvent } from '@libs-ui/components-tags';
242
+ import { IListConfigItem } from '@libs-ui/components-list';
243
+ import { of } from 'rxjs';
244
+
245
+ @Component({
246
+ standalone: true,
247
+ imports: [LibsUiComponentsTagsComponent],
248
+ templateUrl: './your.component.html',
249
+ })
250
+ export class YourComponent {
251
+ private readonly tagService = {
252
+ getAll: () => of({ data: [{ id: '1', label: 'Angular' }, { id: '2', label: 'React' }], paging: { page: 1, total_pages: 1 } }),
253
+ };
254
+
255
+ readonly config: ITagsConfig = {};
256
+
257
+ readonly listConfig: IListConfigItem = {
258
+ type: 'checkbox',
259
+ configTemplateCheckbox: signal({ fieldKey: 'id', getValue: (item: any) => item.label }),
260
+ httpRequestData: signal({ objectInstance: this.tagService, functionName: 'getAll', argumentsValue: [] }) as any,
261
+ };
262
+
263
+ private tagsControl: ITagsFunctionControlEvent | undefined;
264
+
265
+ protected handlerFunctionsControl(event: ITagsFunctionControlEvent): void {
266
+ event.stopPropagation();
267
+ this.tagsControl = event;
268
+ }
269
+
270
+ protected handlerValidEvent(isValid: boolean): void {
271
+ event?.stopPropagation?.();
272
+ // xử lý trạng thái form
273
+ }
274
+
275
+ async submitForm(): Promise<void> {
276
+ const isValid = await this.tagsControl?.checkIsValid();
277
+ if (!isValid) return;
278
+ // tiếp tục submit
279
+ }
280
+ }
281
+ ```
282
+
283
+ ```html
284
+ <!-- your.component.html -->
285
+ <libs_ui-components-tags
286
+ [config]="config"
287
+ [listConfig]="listConfig"
288
+ [validRequired]="{ message: 'Vui lòng chọn ít nhất một tag' }"
289
+ [validMaxItemSelected]="{ value: 3, message: 'Chỉ được chọn tối đa 3 tag' }"
290
+ (outFunctionsControl)="handlerFunctionsControl($event)"
291
+ (outValidEvent)="handlerValidEvent($event)"
292
+ />
293
+ ```
294
+
295
+ ---
296
+
297
+ ### 5. Tùy chỉnh màu sắc tag
298
+
299
+ ```typescript
300
+ // your.component.ts
301
+ import { Component, signal } from '@angular/core';
302
+ import { LibsUiComponentsTagsComponent, ITagsConfig } from '@libs-ui/components-tags';
303
+ import { IListConfigItem } from '@libs-ui/components-list';
304
+ import { of } from 'rxjs';
305
+
306
+ @Component({
307
+ standalone: true,
308
+ imports: [LibsUiComponentsTagsComponent],
309
+ templateUrl: './your.component.html',
310
+ })
311
+ export class YourComponent {
312
+ private readonly tagService = {
313
+ getAll: () => of({
314
+ data: [{ id: '1', label: 'Cao', priority: 'high' }, { id: '2', label: 'Trung bình', priority: 'medium' }, { id: '3', label: 'Thấp', priority: 'low' }],
315
+ paging: { page: 1, total_pages: 1 },
316
+ }),
317
+ };
318
+
319
+ readonly config: ITagsConfig = {
320
+ getStyles: (item: any): Record<string, string> => {
321
+ const map: Record<string, Record<string, string>> = {
322
+ high: { backgroundColor: '#fee2e2', color: '#b91c1c', border: '1px solid #f87171' },
323
+ medium: { backgroundColor: '#fef9c3', color: '#a16207', border: '1px solid #facc15' },
324
+ low: { backgroundColor: '#dcfce7', color: '#15803d', border: '1px solid #4ade80' },
325
+ };
326
+ return map[item.priority] || {};
327
+ },
328
+ };
329
+
330
+ readonly listConfig: IListConfigItem = {
331
+ type: 'checkbox',
332
+ configTemplateCheckbox: signal({ fieldKey: 'id', getValue: (item: any) => item.label }),
333
+ httpRequestData: signal({ objectInstance: this.tagService, functionName: 'getAll', argumentsValue: [] }) as any,
334
+ };
335
+ }
336
+ ```
52
337
 
53
338
  ```html
339
+ <!-- your.component.html -->
54
340
  <libs_ui-components-tags
341
+ [config]="config"
55
342
  [listConfig]="listConfig"
56
- [(keysSelected)]="selectedKeys"
57
- placeholder="Chọn nhãn..." />
343
+ placeholder="Chọn mức độ ưu tiên..."
344
+ />
58
345
  ```
59
346
 
347
+ ---
348
+
349
+ ### 6. Điều khiển từ bên ngoài qua FunctionControl
350
+
60
351
  ```typescript
61
- // Trong component class
62
- readonly listConfig: IListConfigItem = {
63
- // Config cho LibsUiComponentsListComponent
64
- httpRequest: {
65
- url: '/api/tags',
66
- method: 'GET'
352
+ // your.component.ts
353
+ import { Component, signal } from '@angular/core';
354
+ import { LibsUiComponentsTagsComponent, ITagsConfig, ITagsFunctionControlEvent } from '@libs-ui/components-tags';
355
+
356
+ @Component({
357
+ standalone: true,
358
+ imports: [LibsUiComponentsTagsComponent],
359
+ templateUrl: './your.component.html',
360
+ })
361
+ export class YourComponent {
362
+ readonly config: ITagsConfig = {};
363
+ private tagsControl: ITagsFunctionControlEvent | undefined;
364
+
365
+ protected handlerFunctionsControl(event: ITagsFunctionControlEvent): void {
366
+ event.stopPropagation();
367
+ this.tagsControl = event;
368
+ }
369
+
370
+ protected async handlerClearAll(): Promise<void> {
371
+ await this.tagsControl?.clearItemSelected();
372
+ }
373
+
374
+ protected async handlerFocusInput(): Promise<void> {
375
+ await this.tagsControl?.focusInput();
67
376
  }
68
- };
69
- readonly selectedKeys = signal<string[]>([]);
70
- ```
71
-
72
- ## API
73
-
74
- ### libs_ui-components-tags
75
-
76
- #### Inputs
77
-
78
- | Property | Type | Default | Description |
79
- | ------------------------------ | ----------------------- | ----------------------- | ----------------------------------------------------------- |
80
- | `[config]` | `ITagsConfig` | `undefined` | Cấu hình chuyên sâu cho giao diện và logic của tags. |
81
- | `[listConfig]` | `IListConfigItem` | `undefined` | Cấu hình cho danh sách gợi ý (Popover list). |
82
- | `[placeholder]` | `string` | `'i18n_import_content'` | Nội dung placeholder khi chưa có tag nào hoặc đang focus. |
83
- | `[singleSelected]` | `boolean` | `false` | Nếu `true`, chỉ cho phép chọn duy nhất một mục. |
84
- | `[maxItemInput]` | `number` | `undefined` | Giới hạn số lượng tag tối đa có thể chọn. |
85
- | `[defaultKeysSelected]` | `Array<any>` | `undefined` | Danh sách các keys mặc định được chọn ban đầu. |
86
- | `[httpRequestDetailItemByIds]` | `IHttpRequestConfig` | `undefined` | API dùng để lấy thông tin chi tiết các items dựa trên keys. |
87
- | `[disable]` | `boolean` | `false` | Vô hiệu hóa component. |
88
- | `[readonly]` | `boolean` | `false` | Chế độ chỉ đọc, không thể xóa hoặc thêm tag. |
89
- | `[zIndex]` | `number` | `1000` | z-index cho popover list. |
90
- | `[fieldLabel]` | `string` | `'label'` | Tên trường hiển thị label cho tag. |
91
- | `[defaultItemsSelected]` | `Array<any>` | `[]` | Danh sách các item object được chọn ban đầu. |
92
- | `[isSearchOnline]` | `boolean` | `false` | Tìm kiếm online (qua API) hay offline (local). |
93
- | `[maxItemInput]` | `number` | `undefined` | Giới hạn số lượng tag tối đa có thể chọn. |
94
- | `[validMaxItemSelected]` | `IValidMaxItemSelected` | `undefined` | Cấu hình validation cho số lượng item tối đa. |
95
- | `[validPattern]` | `IValidPattern[]` | `undefined` | Cấu hình validation theo pattern (regex). |
96
- | `[fieldGetImage]` | `string` | `undefined` | Tên trường lấy URL ảnh avatar. |
97
- | `[imageSize]` | `number` | `16` | Kích thước avatar (16, 24, 32, ...). |
98
- | `[keysDisableItem]` | `Array<any>` | `[]` | Danh sách keys bị vô hiệu hóa (không thể xóa). |
99
- | `[validRequired]` | `IMessageTranslate` | `undefined` | Message lỗi khi không có tag nào được chọn. |
100
- | `[showListBellow]` | `boolean` | `false` | Luôn hiển thị danh sách gợi ý bên dưới. |
101
- | `[enterAutoAddTagToList]` | `boolean` | `false` | Tự động thêm tag mới vào danh sách khi nhấn Enter. |
102
-
103
- #### Outputs
104
-
105
- | Property | Type | Description |
106
- | ------------------------------- | --------------------------- | ---------------------------------------------------------- |
107
- | `(outSelectMultiItem)` | `Array<any>` | Emit danh sách các đối tượng (items) đã được chọn. |
108
- | `(outFunctionsControl)` | `ITagsFunctionControlEvent` | Cung cấp các methods để điều khiển component từ bên ngoài. |
109
- | `(outValidEvent)` | `boolean` | Emit trạng thái validation (true nếu hợp lệ). |
110
- | `(outClickButtonOther)` | `IButton` | Emit khi click vào nút khác trên danh sách. |
111
- | `(outShowListEvent)` | `boolean` | Emit khi ẩn/hiện danh sách gợi ý. |
112
- | `(outLoadingGetDetailSelected)` | `boolean` | Emit trạng thái loading khi lấy chi tiết item qua API. |
377
+
378
+ protected async handlerCheckValid(): Promise<void> {
379
+ const isValid = await this.tagsControl?.checkIsValid();
380
+ // xử lý kết quả
381
+ }
382
+ }
383
+ ```
384
+
385
+ ```html
386
+ <!-- your.component.html -->
387
+ <libs_ui-components-tags
388
+ [config]="config"
389
+ (outFunctionsControl)="handlerFunctionsControl($event)"
390
+ />
391
+ <button (click)="handlerClearAll()">Xóa tất cả</button>
392
+ <button (click)="handlerFocusInput()">Focus Input</button>
393
+ <button (click)="handlerCheckValid()">Kiểm tra hợp lệ</button>
394
+ ```
395
+
396
+ ---
397
+
398
+ ## @Input()
399
+
400
+ | Input | Type | Default | Mô tả | Ví dụ |
401
+ |---|---|---|---|---|
402
+ | `[config]` | `ITagsConfig` | `undefined` | Cấu hình giao diện và logic của tags | `[config]="{ uiLikeDropdown: true }"` |
403
+ | `[classAvatarInclude]` | `string` | `undefined` | Class CSS bổ sung cho avatar | `classAvatarInclude="rounded-full"` |
404
+ | `[classIconRemoveTagItem]` | `string` | `undefined` | Class CSS bổ sung cho icon xóa tag | `[classIconRemoveTagItem]="'text-red-500'"` |
405
+ | `[classIncludePopover]` | `string` | `undefined` | Class CSS bổ sung cho popover container | `[classIncludePopover]="'shadow-lg'"` |
406
+ | `[classIncludeTagItem]` | `string` | `undefined` | Class CSS bổ sung cho mỗi tag item | `[classIncludeTagItem]="'font-semibold'"` |
407
+ | `[checkExitByFields]` | `Array<string>` | `undefined` | Các trường bổ sung để kiểm tra trùng lặp khi nhập | `[checkExitByFields]="['email', 'code']"` |
408
+ | `[checkExitIsLabelInclude]` | `boolean` | `undefined` | Kiểm tra trùng lặp theo `includes` thay vì `===` | `[checkExitIsLabelInclude]="true"` |
409
+ | `[defaultItemsSelected]` | `Array<unknown>` | `undefined` | Danh sách item object được chọn mặc định ban đầu | `[defaultItemsSelected]="[{ id: '1', label: 'Angular' }]"` |
410
+ | `[defaultKeysSelected]` | `Array<unknown>` | `undefined` | Danh sách keys được chọn mặc định (cần `httpRequestDetailItemByIds` để load detail) | `[defaultKeysSelected]="['1', '2']"` |
411
+ | `[disable]` | `boolean` | `undefined` | Vô hiệu hóa toàn bộ component | `[disable]="true"` |
412
+ | `[emitEventClickXIcon]` | `boolean` | `undefined` | Emit `outSelectMultiItem` khi click icon xóa dù list đang mở | `[emitEventClickXIcon]="true"` |
413
+ | `[enterAutoAddTagToList]` | `boolean` | `false` | Tự động thêm tag nhập mới vào danh sách gợi ý | `[enterAutoAddTagToList]="true"` |
414
+ | `[fieldGetImage]` | `string` | `undefined` | Tên trường lấy URL ảnh avatar | `fieldGetImage="avatar"` |
415
+ | `[fieldGetTextAvatar]` | `string` | `'user'` | Tên trường lấy text hiển thị cho avatar khi không có ảnh | `fieldGetTextAvatar="username"` |
416
+ | `[fieldLabel]` | `string` | `'label'` | Tên trường dùng làm nhãn hiển thị cho mỗi tag | `fieldLabel="name"` |
417
+ | `[functionCheckPermissionCreateTag]` | `() => boolean` | `() => true` | Hàm kiểm tra quyền tạo tag mới khi nhấn Enter | `[functionCheckPermissionCreateTag]="checkPermission"` |
418
+ | `[getLastTextAfterSpace]` | `boolean` | `undefined` | Lấy phần text sau khoảng trắng cuối cùng khi tìm kiếm | `[getLastTextAfterSpace]="true"` |
419
+ | `[hiddenInputWhenReadonly]` | `boolean` | `undefined` | Ẩn ô input khi ở chế độ readonly | `[hiddenInputWhenReadonly]="true"` |
420
+ | `[httpRequestDetailItemByIds]` | `IHttpRequestConfig` | `undefined` | Cấu hình API để load chi tiết item theo keys (dùng với `defaultKeysSelected`) | `[httpRequestDetailItemByIds]="detailConfig"` |
421
+ | `[ignoreEmitWhenSameDataSelected]` | `boolean` | `undefined` | Bỏ qua emit khi data selected không thay đổi | `[ignoreEmitWhenSameDataSelected]="true"` |
422
+ | `[imageSize]` | `TYPE_SIZE_AVATAR_CONFIG` | `16` | Kích thước avatar (px) | `[imageSize]="24"` |
423
+ | `[isSearchOnline]` | `boolean` | `false` | Kích hoạt tìm kiếm online qua API (gửi keyword lên server) | `[isSearchOnline]="true"` |
424
+ | `[keysDisableItem]` | `Array<unknown>` | `undefined` | Danh sách keys của các tag không thể bị xóa | `[keysDisableItem]="['1', '3']"` |
425
+ | `[keysHiddenItem]` | `model<Array<unknown>>` | `undefined` | Two-way binding danh sách keys bị ẩn khỏi danh sách | `[(keysHiddenItem)]="hiddenKeys"` |
426
+ | `[labelConfig]` | `ILabel` | `undefined` | Cấu hình label hiển thị phía trên component | `[labelConfig]="{ labelLeft: 'Tags' }"` |
427
+ | `[linkImageError]` | `string` | `undefined` | URL ảnh fallback khi ảnh avatar bị lỗi | `linkImageError="assets/default-avatar.png"` |
428
+ | `[listBackgroundListCustom]` | `string` | `undefined` | Class background tùy chỉnh cho danh sách popover | `[listBackgroundListCustom]="'bg-gray-50'"` |
429
+ | `[listButtonsOther]` | `Array<IButton>` | `undefined` | Các nút bổ sung hiển thị trong popover list | `[listButtonsOther]="extraButtons"` |
430
+ | `[listClickExactly]` | `boolean` | `undefined` | Chỉ cho phép click chính xác vào item (không bubble) | `[listClickExactly]="true"` |
431
+ | `[listConfig]` | `IListConfigItem` | `undefined` | Cấu hình danh sách gợi ý hiển thị trong popover | `[listConfig]="listConfig"` |
432
+ | `[listDividerClassInclude]` | `string` | `undefined` | Class CSS bổ sung cho divider trong danh sách | `[listDividerClassInclude]="'my-2'"` |
433
+ | `[listHiddenInputSearchWhenHasSearchConfig]` | `boolean` | `undefined` | Ẩn input tìm kiếm trong list khi đã có `listSearchConfig` | `[listHiddenInputSearchWhenHasSearchConfig]="true"` |
434
+ | `[listMaxItemShow]` | `number` | `undefined` | Số lượng item tối đa hiển thị trong popover list | `[listMaxItemShow]="10"` |
435
+ | `[listSearchConfig]` | `IInputSearchConfig` | `undefined` | Cấu hình ô tìm kiếm bên trong popover list | `[listSearchConfig]="searchConfig"` |
436
+ | `[listSearchPadding]` | `boolean` | `undefined` | Thêm padding cho phần tìm kiếm trong list | `[listSearchPadding]="true"` |
437
+ | `[maxItemInput]` | `number` | `undefined` | Giới hạn số lượng tag tối đa có thể chọn | `[maxItemInput]="5"` |
438
+ | `[parentBorderWidth]` | `number` | `undefined` | Độ rộng border của phần tử cha (điều chỉnh vị trí popover) | `[parentBorderWidth]="1"` |
439
+ | `[placeholder]` | `string` | `undefined` | Placeholder text khi chưa có tag nào | `placeholder="Tìm kiếm hoặc nhập..."` |
440
+ | `[readonly]` | `boolean` | `undefined` | Chế độ chỉ đọc, không thể thêm/xóa tag | `[readonly]="true"` |
441
+ | `[removeTextSearchWhenBlurInput]` | `boolean` | `true` | Xóa text tìm kiếm khi blur khỏi input | `[removeTextSearchWhenBlurInput]="false"` |
442
+ | `[showBorderActiveWhenFocusInput]` | `boolean` | `undefined` | Hiển thị border active khi input được focus | `[showBorderActiveWhenFocusInput]="true"` |
443
+ | `[showListBellow]` | `boolean` | `undefined` | Luôn hiển thị danh sách bên dưới (không qua popover overlay) | `[showListBellow]="true"` |
444
+ | `[singleSelected]` | `boolean` | `undefined` | Chế độ chọn đơn (chỉ giữ lại một tag) | `[singleSelected]="true"` |
445
+ | `[validMaxItemSelected]` | `IValidMaxItemSelected` | `undefined` | Cấu hình validation số lượng tối đa | `[validMaxItemSelected]="{ value: 3, message: 'Tối đa 3 tag' }"` |
446
+ | `[validPattern]` | `Array<IValidPattern>` | `undefined` | Cấu hình validation theo pattern regex | `[validPattern]="[{ pattern: /^[a-z]+$/, message: 'Chỉ chữ thường' }]"` |
447
+ | `[validRequired]` | `IMessageTranslate` | `undefined` | Thông báo lỗi khi không có tag nào được chọn | `[validRequired]="{ message: 'Trường này bắt buộc' }"` |
448
+ | `[zIndex]` | `number` | `1000` | z-index của popover danh sách | `[zIndex]="1500"` |
449
+
450
+ ## @Output()
451
+
452
+ | Output | Type | Mô tả | Handler TS | Binding HTML |
453
+ |---|---|---|---|---|
454
+ | `(outChangStageFlagMouse)` | `IFlagMouse` | Emit trạng thái hover chuột (enter/leave) vào component | `handlerMouseState(e: IFlagMouse): void { e.stopPropagation(); }` | `(outChangStageFlagMouse)="handlerMouseState($event)"` |
455
+ | `(outClickButtonOther)` | `IButton` | Emit khi người dùng click vào nút bổ sung trong danh sách | `handlerClickOtherBtn(e: IButton): void { e.stopPropagation(); }` | `(outClickButtonOther)="handlerClickOtherBtn($event)"` |
456
+ | `(outFunctionsControl)` | `ITagsFunctionControlEvent` | Emit object chứa các method điều khiển component từ bên ngoài | `handlerFunctionsControl(e: ITagsFunctionControlEvent): void { e.stopPropagation(); this.ctrl = e; }` | `(outFunctionsControl)="handlerFunctionsControl($event)"` |
457
+ | `(outLoadingGetDetailSelected)` | `boolean` | Emit trạng thái loading khi đang gọi API load chi tiết item theo keys | `handlerDetailLoading(e: boolean): void { e.stopPropagation(); }` | `(outLoadingGetDetailSelected)="handlerDetailLoading($event)"` |
458
+ | `(outSelectMultiItem)` | `Array<unknown>` | Emit danh sách đầy đủ các object item đã được chọn mỗi khi thay đổi | `handlerSelectTags(e: unknown[]): void { e.stopPropagation(); this.selectedItems = e; }` | `(outSelectMultiItem)="handlerSelectTags($event)"` |
459
+ | `(outShowListEvent)` | `boolean` | Emit khi danh sách popover hiện (`true`) hoặc ẩn (`false`) | `handlerShowList(e: boolean): void { e.stopPropagation(); }` | `(outShowListEvent)="handlerShowList($event)"` |
460
+ | `(outValidEvent)` | `boolean` | Emit trạng thái validation (`true` = hợp lệ, `false` = có lỗi) | `handlerValid(e: boolean): void { e.stopPropagation(); this.isValid = e; }` | `(outValidEvent)="handlerValid($event)"` |
113
461
 
114
462
  ## Types & Interfaces
115
463
 
464
+ ```typescript
465
+ import { ITagsConfig, ITagsFunctionControlEvent } from '@libs-ui/components-tags';
466
+ ```
467
+
468
+ ### ITagsConfig
469
+
116
470
  ```typescript
117
471
  export interface ITagsConfig {
118
- getValue?: (item: unknown) => string; // Hàm custom lấy label
119
- getStyles?: (item: unknown) => any; // Hàm custom style cho tag
120
- getDisableItem?: (item: unknown) => boolean; // Disable click xóa cho tag cụ thể
121
- ignoreInput?: boolean; // Ẩn input nhập text
122
- uiLikeDropdown?: boolean; // Giao diện giống dropdown classic
123
- directionList?: TYPE_POPOVER_DIRECTION; // Hướng hiển thị danh sách
124
- // ... (see source for all options)
472
+ /** Hàm custom để lấy text nhãn hiển thị cho tag, ưu tiên hơn fieldLabel */
473
+ getValue?: (item: unknown) => string;
474
+
475
+ /**
476
+ * Hàm transform giá trị nhãn khi tạo tag mới bằng Enter.
477
+ * Nhận item và value hiện tại, có thể mutate item để đổi nhãn.
478
+ */
479
+ buildValue?: (item: unknown, value: string) => void;
480
+
481
+ /** Hàm trả về object NgStyle cho từng tag item (backgroundColor, color, border, ...) */
482
+ getStyles?: (item: unknown) => Record<string, string>;
483
+
484
+ /** Hàm xác định tag có bị disable (không thể xóa) hay không */
485
+ getDisableItem?: (item: unknown) => boolean;
486
+
487
+ /**
488
+ * Hàm trả về style đặc biệt theo tên preset.
489
+ * 'specific_violet_color' → { color: '#7239EA', backgroundColor: '#F1EBFD' }
490
+ * Dùng cho tag do hệ thống gắn tự động, không thể xóa.
491
+ */
492
+ getStylesTagSpecific?: (item: unknown) => 'specific_violet_color' | undefined | void;
493
+
494
+ /** Hàm trả về cấu hình tooltip cho từng tag item */
495
+ getTooltip?: (item: unknown) => IPopover;
496
+
497
+ /** Kích thước avatar (px). Ưu tiên hơn input [imageSize] */
498
+ imageSize?: TYPE_SIZE_AVATAR_CONFIG;
499
+
500
+ /** Tên trường lấy URL ảnh avatar. Ưu tiên hơn input [fieldGetImage] */
501
+ fieldGetImage?: string;
502
+
503
+ /** Tên trường lấy text cho avatar khi không có ảnh. Ưu tiên hơn input [fieldGetTextAvatar] */
504
+ fieldGetTextAvatar?: string;
505
+
506
+ /** URL ảnh fallback khi avatar lỗi */
507
+ linkImageError?: string;
508
+
509
+ /** Lấy từ cuối sau khoảng trắng để tìm kiếm (dùng cho mention @user) */
510
+ getLastTextAfterSpace?: boolean;
511
+
512
+ /** Class CSS bổ sung cho avatar */
513
+ classAvatarInclude?: string;
514
+
515
+ /** Ẩn ô input nhập text (chỉ chọn từ danh sách) */
516
+ ignoreInput?: boolean;
517
+
518
+ /** Class CSS bổ sung cho input bên trong component */
519
+ classInputInclude?: string;
520
+
521
+ /** Ẩn popover danh sách gợi ý (component chỉ hiển thị tags đã chọn) */
522
+ ignoreShowList?: boolean;
523
+
524
+ /**
525
+ * Không cho phép tạo tag mới khi nhấn Enter.
526
+ * Chỉ cho phép chọn item có sẵn trong danh sách.
527
+ */
528
+ ignoreEnterCreateNewItem?: boolean;
529
+
530
+ /** Ẩn item trong danh sách gợi ý khi item đó đã được chọn */
531
+ isHiddenItemWhenSelected?: boolean;
532
+
533
+ /**
534
+ * Chế độ UI giống dropdown classic:
535
+ * - Đổi border sang box-shadow
536
+ * - Hiển thị icon mũi tên thu gọn bên phải
537
+ */
538
+ uiLikeDropdown?: boolean;
539
+
540
+ /** Ẩn thông báo lỗi validation dưới component */
541
+ ignoreShowError?: boolean;
542
+
543
+ /** Class CSS bổ sung cho thẻ wrapper chính của component */
544
+ classInclude?: string;
545
+
546
+ /** Class CSS áp dụng riêng khi ở chế độ readonly */
547
+ classCustomWhenReadOnly?: string;
548
+
549
+ /** Cấu hình animation cho popover */
550
+ animationConfig?: {
551
+ time?: number;
552
+ distance?: number;
553
+ };
554
+
555
+ /** Hướng hiển thị danh sách popover ('top' | 'bottom' | 'left' | 'right') */
556
+ directionList?: TYPE_POPOVER_DIRECTION;
125
557
  }
558
+ ```
559
+
560
+ ### ITagsFunctionControlEvent
126
561
 
562
+ ```typescript
127
563
  export interface ITagsFunctionControlEvent {
564
+ /** Kiểm tra tính hợp lệ của component (required, maxItem, pattern). Trả về true nếu hợp lệ. */
128
565
  checkIsValid: () => Promise<boolean>;
566
+
567
+ /** Cập nhật lại text nhãn cho tất cả các tag đang hiển thị */
568
+ updateLabel: () => Promise<void>;
569
+
570
+ /**
571
+ * Xóa toàn bộ các tag đã chọn.
572
+ * @param ignoreValid - Nếu true, bỏ qua validation sau khi xóa
573
+ */
129
574
  clearItemSelected: (ignoreValid?: boolean) => Promise<void>;
575
+
576
+ /** Xóa text tìm kiếm trong input */
577
+ clearKeySearch: () => Promise<void>;
578
+
579
+ /** Focus vào ô input tìm kiếm */
130
580
  focusInput: () => Promise<void>;
131
- refreshListData: () => Promise<void>;
581
+
582
+ /** Đóng popover danh sách gợi ý */
583
+ removeList: () => Promise<void>;
584
+
585
+ /** Lấy fakeId prefix dùng cho tag mới tạo bằng Enter (chưa có id thực) */
586
+ getFakeId: () => Promise<string>;
587
+
588
+ /** Kích hoạt sự kiện Enter để tạo tag mới từ text hiện tại trong input */
589
+ createTag: () => Promise<void>;
590
+
591
+ /** Reset lỗi validation */
592
+ resetError: () => Promise<void>;
593
+
594
+ /**
595
+ * Xóa một tag cụ thể khỏi danh sách đã chọn
596
+ * @param event - DOM Event
597
+ * @param item - Item cần xóa
598
+ */
599
+ removeItemSelected: (event: Event, item: unknown) => Promise<void>;
600
+
601
+ /**
602
+ * Reset về danh sách mặc định ban đầu (defaultItemsSelected / defaultKeysSelected)
603
+ * @param item - Nếu truyền vào, set danh sách này thay vì default
604
+ */
132
605
  resetToDefaultDataSelected: (item?: Array<unknown>) => Promise<void>;
133
- // ... (see source for all methods)
606
+
607
+ /** Cập nhật lại trạng thái disable cho các tag đã chọn dựa trên config.getDisableItem */
608
+ updateItemSelectedDisable: () => Promise<void>;
609
+
610
+ /** Refresh lại dữ liệu danh sách gợi ý */
611
+ refreshListData: () => Promise<void>;
612
+
613
+ /**
614
+ * Set lỗi thủ công từ bên ngoài
615
+ * @param message - Thông báo lỗi cần hiển thị
616
+ */
617
+ setError?: (message: string) => Promise<void>;
134
618
  }
135
619
  ```
136
620
 
137
- ## Demo
621
+ ## Lưu ý quan trọng
138
622
 
139
- ```bash
140
- npx nx serve core-ui
141
- ```
623
+ ⚠️ **Config object bắt buộc**: Luôn truyền `[config]` dù là object rỗng `{}`. Nếu không có `config`, component sẽ return sớm trong `ngOnInit` và không emit `outFunctionsControl`.
624
+
625
+ ⚠️ **httpRequestDetailItemByIds yêu cầu cấu hình**: Khi dùng `[defaultKeysSelected]` kết hợp với `[httpRequestDetailItemByIds]`, bắt buộc phải cấu hình `guideAutoUpdateArgumentsValue.detailById`. Thiếu cấu hình này sẽ throw Error runtime.
626
+
627
+ ⚠️ **fieldKey mặc định là `id`**: Component lấy fieldKey từ `listConfig` (thông qua `getFieldKeyByType`). Nếu listConfig dùng trường khác làm key (ví dụ `code`), phải cấu hình `configTemplateCheckbox.fieldKey` hoặc `configTemplateText.fieldKey` cho đúng.
628
+
629
+ ⚠️ **singleSelected và itemsSelected**: Khi `[singleSelected]="true"`, mỗi lần chọn item mới sẽ xóa item cũ trước. Kết hợp với `config.uiLikeDropdown` và `config.ignoreInput` để có giao diện dropdown hoàn chỉnh.
142
630
 
143
- Truy cập: `http://localhost:4500/tags`
631
+ ⚠️ **Tag mới tạo bằng Enter (fakeId)**: Tags tạo bằng Enter sẽ có `id` dạng `{fakeId}{text}{uuid}`. Khi emit qua `outSelectMultiItem`, trường key của tag này được set về chuỗi rỗng `''`. Consumer cần xử lý trường hợp `id === ''` để phân biệt tag mới chưa lưu.
144
632
 
145
- ## Unit Tests
633
+ ⚠️ **Cleanup timeout**: Component tự dọn dẹp các `setTimeout` trong `ngOnDestroy`. Không cần xử lý thêm từ phía consumer.
634
+
635
+ ⚠️ **outFunctionsControl không phải Observable**: `outFunctionsControl` là `OutputEmitterRef` (Signal API). Không được `.pipe()` hoặc `takeUntilDestroyed` trên output này.
636
+
637
+ ## Demo
146
638
 
147
639
  ```bash
148
- npx nx test components-tags
640
+ npx nx serve core-ui
149
641
  ```
150
642
 
151
- ## License
152
-
153
- MIT
643
+ Truy cập: http://localhost:4500/tags
@@ -1,6 +1,6 @@
1
1
  import { NgTemplateOutlet, NgStyle } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Pipe, signal, computed, inject, DestroyRef, input, model, output, viewChild, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { Pipe, signal, computed, inject, DestroyRef, input, model, output, viewChild, effect, untracked, Component, ChangeDetectionStrategy } from '@angular/core';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';
6
6
  import { LibsUiComponentsClickOutsideDirective } from '@libs-ui/components-click-outside';
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-tags.mjs","sources":["../../../../../libs-ui/components/tags/src/pipes/get-color.pipe.ts","../../../../../libs-ui/components/tags/src/tags.component.ts","../../../../../libs-ui/components/tags/src/tags.component.html","../../../../../libs-ui/components/tags/src/libs-ui-components-tags.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { colorStepContrastFromOrigin, get, rgbToHex } from '@libs-ui/utils';\n\n@Pipe({\n name: 'LibsUiComponentsTagsGetColorPipe',\n standalone: true,\n})\nexport class LibsUiComponentsTagsGetColorPipe implements PipeTransform {\n transform(style: unknown, element: HTMLElement) {\n if (!style) {\n return {};\n }\n let color = get<unknown>(style, 'color') as string;\n let backgroundColor = (get<unknown>(style, 'backgroundColor') || get<unknown>(style, 'background')) as string;\n if (color && color.includes('rgb') && color.match(/d+/g)?.length) {\n const [red, green, blue] = Array.from(color.match(/d+/g) || []);\n color = rgbToHex({ red, green, blue });\n }\n if (backgroundColor && backgroundColor.includes('rgb') && backgroundColor.match(/\\d+/g)?.length) {\n const [red, green, blue] = Array.from(backgroundColor.match(/\\d+/g) || []);\n backgroundColor = rgbToHex({ red, green, blue });\n }\n if (color && /(^#)[a-z0-9]{3,6}/gi.test(color)) {\n element.style.setProperty('--libs-ui-tags-item-icon-default', color);\n element.style.setProperty('--libs-ui-tags-item-icon-background-hover', color);\n }\n if (backgroundColor && /(^#)[a-z0-9]{3,6}/gi.test(backgroundColor)) {\n element.style.setProperty('--libs-ui-tags-item-icon-hover', backgroundColor);\n element.style.setProperty('--libs-ui-tags-item-icon-active', backgroundColor);\n element.style.setProperty('--libs-ui-tags-item-icon-background-active', colorStepContrastFromOrigin(backgroundColor, 60)?.light || '');\n }\n return style;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LibsUiComponentsAvatarComponent, TYPE_SIZE_AVATAR_CONFIG } from '@libs-ui/components-avatar';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsClickOutsideDirective } from '@libs-ui/components-click-outside';\nimport { IValidMaxItemSelected } from '@libs-ui/components-dropdown';\nimport { IFocusAndBlurEvent, IInputFunctionControlEvent, LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';\nimport { IInputSearchConfig } from '@libs-ui/components-inputs-search';\nimport { IValidPattern } from '@libs-ui/components-inputs-valid';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { getFieldKeyByType, IListConfigItem, IListDataEmitKey, IListDataEmitMultiKey, IListFunctionControlEvent, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { IFlagMouse, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IHttpResponse, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { IHttpRequestConfig, LibsUiHttpRequestService } from '@libs-ui/services-http-request';\nimport { cloneDeep, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_PATTEN_VALID, escapeHtml, get, isNil, set, uuid } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { debounceTime, Subject, Subscription } from 'rxjs';\nimport { ITagsConfig, ITagsFunctionControlEvent } from './interfaces/tags.interface';\nimport { LibsUiComponentsTagsGetColorPipe } from './pipes/get-color.pipe';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tags',\n templateUrl: './tags.component.html',\n styleUrl: './tags.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TranslateModule,\n NgTemplateOutlet,\n NgStyle,\n LibsUiComponentsClickOutsideDirective,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsInputsInputComponent,\n LibsUiComponentsAvatarComponent,\n LibsUiComponentsListComponent,\n LibsUiComponentsTagsGetColorPipe,\n LibsUiComponentsScrollOverlayDirective,\n ],\n})\nexport class LibsUiComponentsTagsComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected flagMouse = signal<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n protected loading = signal<boolean>(false);\n protected loadingDetail = signal<boolean>(false);\n protected keySearch = signal<string>('');\n protected valueInput = signal<string>('');\n protected itemsSelected = signal<Array<any>>([]);\n protected showList = signal<boolean>(false);\n protected positionList = signal<TYPE_POPOVER_DIRECTION | undefined>(undefined);\n protected keysSelected = signal<Array<unknown>>([]);\n protected disableWhenMaxItem = signal<boolean>(false);\n protected focus = signal<boolean>(false);\n protected error = signal<IMessageTranslate | undefined>(undefined);\n protected fieldKey = signal<string>('id');\n protected functionGetItemAutoAddList = computed(() => {\n if (!this.enterAutoAddTagToList()) {\n return;\n }\n return () =>\n this.itemsSelected()\n .filter((item) => `${get(item, this.fieldKey(), '')}`.search(this.fakeId()) === 0)\n .reverse();\n });\n protected listKeyDisable = signal<Array<unknown>>([]);\n\n private readonly fakeId = signal<string>(uuid());\n private readonly timeOutFlag = signal<number | undefined>(undefined);\n private readonly timeOutChangeSearch = signal<number | undefined>(undefined);\n private readonly timeOutCheckViewChange = signal<number | undefined>(undefined);\n private readonly timeoutClickOutside = signal<number | undefined>(undefined);\n private readonly clientHeight = signal<number | undefined>(undefined);\n private readonly itemsOfList = signal<Array<unknown>>([]);\n private readonly keySearchChange = new Subject<string>();\n private readonly keySearchChangeSub = signal<Subscription | undefined>(undefined);\n private readonly tempIgnoreEmit = signal<boolean>(false);\n private readonly popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private readonly inputFunctionControl = signal<IInputFunctionControlEvent | undefined>(undefined);\n private readonly typePopover = signal<TYPE_POPOVER_EVENT | undefined>(undefined);\n private readonly listFunctionControl = signal<IListFunctionControlEvent | undefined>(undefined);\n private readonly defaultItemsSelectedCurrent = signal<Array<unknown> | undefined>(undefined);\n private readonly destroyRef = inject(DestroyRef);\n // #region INPUT\n readonly classIncludePopover = input<string>();\n readonly enterAutoAddTagToList = input<boolean>(false);\n readonly checkExitIsLabelInclude = input<boolean>();\n readonly checkExitByFields = input<Array<string>>();\n readonly parentBorderWidth = input<number>();\n readonly functionCheckPermissionCreateTag = input<() => boolean>(() => true);\n readonly placeholder = input<string>();\n readonly httpRequestDetailItemByIds = input<IHttpRequestConfig>();\n readonly fieldLabel = input<string>('label');\n readonly maxItemInput = input<number>();\n readonly zIndex = input<number, number | undefined>(1000, { transform: (value) => value ?? 1000 });\n readonly config = input<ITagsConfig>();\n readonly disable = input<boolean>();\n readonly readonly = input<boolean>();\n readonly labelConfig = input<ILabel>();\n readonly defaultItemsSelected = input<Array<unknown>>();\n readonly defaultKeysSelected = input<Array<unknown>>();\n readonly listSearchConfig = input<IInputSearchConfig>();\n readonly isSearchOnline = input<boolean>(false);\n readonly listSearchPadding = input<boolean>();\n readonly listDividerClassInclude = input<string>();\n readonly listConfig = input<IListConfigItem>();\n readonly listButtonsOther = input<Array<IButton>>();\n readonly listClickExactly = input<boolean>();\n readonly listBackgroundListCustom = input<string>();\n readonly listMaxItemShow = input<number>();\n readonly listHiddenInputSearchWhenHasSearchConfig = input<boolean>();\n readonly removeTextSearchWhenBlurInput = input<boolean>(true);\n readonly keysHiddenItem = model<Array<unknown>>();\n readonly keysDisableItem = input<Array<unknown>>();\n readonly ignoreEmitWhenSameDataSelected = input<boolean>();\n readonly singleSelected = input<boolean>();\n readonly classIncludeTagItem = input<string>();\n readonly classIconRemoveTagItem = input<string>();\n readonly showBorderActiveWhenFocusInput = input<boolean>();\n readonly fieldGetImage = input<string>();\n readonly imageSize = input<TYPE_SIZE_AVATAR_CONFIG>(16);\n readonly linkImageError = input<string>();\n readonly fieldGetTextAvatar = input<string>('user');\n readonly classAvatarInclude = input<string>();\n readonly getLastTextAfterSpace = input<boolean>();\n readonly validRequired = input<IMessageTranslate>();\n readonly validMaxItemSelected = input<IValidMaxItemSelected>();\n readonly validPattern = input<Array<IValidPattern>>();\n readonly showListBellow = input<boolean>();\n readonly hiddenInputWhenReadonly = input<boolean>();\n readonly emitEventClickXIcon = input<boolean>();\n\n // #region OUTPUT\n readonly outSelectMultiItem = output<Array<unknown>>();\n readonly outValidEvent = output<boolean>();\n readonly outFunctionsControl = output<ITagsFunctionControlEvent>();\n readonly outClickButtonOther = output<IButton>();\n readonly outShowListEvent = output<boolean>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outLoadingGetDetailSelected = output<boolean>();\n\n /* VIEW CHILD */\n private readonly tagsEl = viewChild.required<ElementRef>('tagsEl');\n\n /* INJECT*/\n private readonly httpRequestService = inject(LibsUiHttpRequestService);\n\n constructor() {\n effect(() => {\n const maxItemInput = this.maxItemInput();\n untracked(() => {\n this.disableWhenMaxItem.set(false);\n if (maxItemInput && maxItemInput <= this.itemsSelected().length) {\n this.disableWhenMaxItem.set(true);\n }\n });\n });\n effect(() => {\n const listConfig = this.listConfig();\n untracked(() => {\n if (listConfig) {\n this.fieldKey.set(getFieldKeyByType(listConfig, 'id'));\n }\n });\n });\n effect(() => {\n const currentItems = this.defaultItemsSelected() || [];\n untracked(() => {\n const previousItems = this.defaultItemsSelectedCurrent() || [];\n this.defaultItemsSelectedCurrent.set(this.defaultItemsSelected());\n if (previousItems.length !== currentItems.length) {\n this.updateItemsSelected(currentItems);\n return;\n }\n for (const prevItem of previousItems) {\n if (!currentItems.some((item) => get(item, this.fieldKey()) === get(prevItem, this.fieldKey()))) {\n this.updateItemsSelected(currentItems);\n break;\n }\n }\n });\n });\n effect(() => {\n const currentValue = this.defaultKeysSelected() || [];\n untracked(() => {\n const previousValue = this.keysSelected() || [];\n if (previousValue.length !== currentValue.length) {\n this.getDetailByIds(currentValue);\n return;\n }\n const keysNew = currentValue.filter((key) => !this.itemsSelected().some((item) => get(item, this.fieldKey(), '') === key));\n if (keysNew.length) {\n this.getDetailByIds(keysNew);\n }\n });\n });\n effect(() => {\n let listKeyDisable: Array<unknown> = [];\n const keysDisableItem = this.keysDisableItem();\n const itemsSelected = this.itemsSelected();\n\n untracked(() => {\n if (keysDisableItem?.length) {\n listKeyDisable = [...keysDisableItem];\n }\n itemsSelected.forEach((item) => {\n if (item.disableItem && !listKeyDisable.find((key) => key === item[this.fieldKey()])) {\n listKeyDisable.push(item[this.fieldKey()]);\n }\n });\n this.listKeyDisable.set(listKeyDisable);\n });\n });\n }\n\n ngOnInit() {\n if (!this.config()) {\n return;\n }\n const httpRequestDetailItemByIds = this.httpRequestDetailItemByIds();\n if (httpRequestDetailItemByIds && !httpRequestDetailItemByIds?.guideAutoUpdateArgumentsValue?.detailById) {\n throw new Error('Config getDetailByIds yêu cầu tối thiểu các tham số guideAutoUpdateArgumentsValue, detailById');\n }\n const preprocessor = (keys: Array<unknown>) => {\n if (!keys || !(keys instanceof Array) || !keys.length) {\n return '';\n }\n return keys.join(';');\n };\n if (httpRequestDetailItemByIds?.guideAutoUpdateArgumentsValue?.detailById) {\n httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.fieldGetValue = httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.fieldGetValue ?? 'keys';\n httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.preprocessor = httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.preprocessor ?? preprocessor;\n }\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n public get FunctionsControl(): ITagsFunctionControlEvent {\n return {\n checkIsValid: this.checkValid.bind(this),\n removeList: async () => this.popoverFunctionControl()?.removePopoverOverlay(),\n updateLabel: this.updateLabel.bind(this),\n clearItemSelected: this.clearItemSelected.bind(this),\n clearKeySearch: () => this.handlerValueChangeSearch(''),\n focusInput: () => this.focusInput(),\n getFakeId: async () => this.fakeId(),\n createTag: this.handlerEnterEvent.bind(this),\n removeItemSelected: this.handlerRemoveItemSelected.bind(this),\n resetError: this.resetError.bind(this),\n resetToDefaultDataSelected: this.resetToDefaultDataSelected.bind(this),\n updateItemSelectedDisable: this.updateItemSelectedDisable.bind(this),\n refreshListData: this.refreshListData.bind(this),\n setError: this.setError.bind(this),\n };\n }\n\n private async setError(message: string) {\n this.error.set({ message });\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n private async updateLabel() {\n if (!this.itemsSelected()?.length) {\n return;\n }\n this.itemsSelected.update((items) => {\n items.forEach((item) => this.updateFieldLabel(item));\n return [...items];\n });\n }\n\n private updateFieldLabel(item: unknown) {\n const ref = get(item, 'ref') || item;\n const getValue = this.config()?.getValue;\n set<any>(item, 'fieldLabel', `${get(ref, this.fieldLabel()) || get(ref, 'label') || get(ref, 'name') || ' '}`);\n if (getValue) {\n set<any>(item, 'fieldLabel', getValue(ref) || ' ');\n }\n }\n\n private async clearItemSelected(ignoreValid = false) {\n if (!this.itemsSelected()?.length) {\n return;\n }\n const length = this.itemsSelected().length - 1;\n this.tempIgnoreEmit.set(true);\n this.itemsSelected().forEach((item, index) => {\n if (index === length) {\n this.tempIgnoreEmit.set(false);\n }\n this.handlerRemoveItemSelected(\n {\n stopPropagation: () => {\n return;\n },\n } as Event,\n item,\n ignoreValid\n );\n });\n }\n\n private updateItemsSelected(itemsSelected: Array<unknown>, ignoreValidate = true, ignoreEmitKeySelectedWhenItemsNotExitsEmpty?: boolean) {\n if (!itemsSelected?.length) {\n return;\n }\n const itemsNotExits: Array<unknown> = [];\n itemsSelected.forEach((item) => {\n if (!item) {\n return;\n }\n let fieldLabel = `${get<unknown>(item, this.fieldLabel()) || get<unknown>(item, 'label') || get<unknown>(item, 'name') || ' '}`;\n const getValue = this.config()?.getValue;\n if (getValue) {\n fieldLabel = getValue(item) || ' ';\n }\n const itemExits = this.checkExits(fieldLabel, get<unknown>(item, this.fieldKey()));\n if (itemExits?.isItemSelected) {\n Object.assign(itemExits.item, item);\n return;\n }\n itemsNotExits.push(item);\n });\n this.processData(itemsNotExits, ignoreValidate, ignoreEmitKeySelectedWhenItemsNotExitsEmpty);\n }\n\n protected handlerPopoverEvent(type: TYPE_POPOVER_EVENT) {\n this.typePopover.set(type);\n if (type === 'click') {\n return;\n }\n if (type === 'remove') {\n this.showList.set(false);\n this.outShowListEvent.emit(false);\n this.inputFunctionControl()?.blur();\n return;\n }\n this.showList.set(true);\n this.outShowListEvent.emit(true);\n this.inputFunctionControl()?.focus();\n }\n\n protected handlerPopoverContentEvent(position: TYPE_POPOVER_DIRECTION) {\n if (this.positionList() === position) {\n return;\n }\n this.positionList.set(position);\n }\n\n protected async handlerRemoveItemSelected(event: Event, itemRemove: unknown, ignoreValid?: boolean, isEventOnElement?: boolean) {\n event.stopPropagation();\n this.flagMouse.set({ isMouseEnter: true, isMouseEnterContent: true });\n this.timeOutFlag.set(setTimeout(() => this.flagMouse.set({ isMouseEnter: false, isMouseEnterContent: false }), 250));\n this.itemsSelected.update((items) =>\n items.filter((item) => {\n const keyRemove = get(itemRemove, this.fieldKey());\n const keyItem = get(item, this.fieldKey());\n const labelRemove = get<any>(itemRemove, 'fieldLabel').trim();\n const labelItem = get(item, 'fieldLabel').trim();\n\n return ((isNil(keyRemove) || isNil(keyItem)) && labelRemove !== labelItem) || (!isNil(keyRemove) && !isNil(keyItem) && keyRemove !== keyItem);\n })\n );\n if (itemRemove && !isNil(get<unknown>(itemRemove, this.fieldKey())) && `${get<unknown>(itemRemove, this.fieldKey())}`.search(this.fakeId()) >= 0) {\n this.keysHiddenItem.update((items) => Array.from(new Set([...(items || []), get<unknown>(itemRemove, this.fieldKey())])));\n }\n this.keysSelected.set(Array.from(new Set(this.itemsSelected().map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.disableWhenMaxItem.set(false);\n const maxItemInput = this.maxItemInput();\n if (maxItemInput && maxItemInput <= this.itemsSelected().length) {\n this.disableWhenMaxItem.set(true);\n }\n if (!this.showList() || (this.emitEventClickXIcon() && isEventOnElement)) {\n this.outSelectMultiItem.emit(this.getItemSelected());\n this.checkViewChange(true, ignoreValid);\n return;\n }\n if (this.showList()) {\n this.tempIgnoreEmit.set(true);\n }\n if (!ignoreValid) {\n this.checkValid();\n }\n this.tempIgnoreEmit.set(false);\n }\n\n protected handlerInputFunctionControl(event: IInputFunctionControlEvent) {\n this.inputFunctionControl.set(event);\n }\n\n protected handlerFocusAndBlurEvent(event: IFocusAndBlurEvent) {\n this.focus.set(false);\n if (event.name === 'focus') {\n this.focus.set(true);\n }\n if (event.name === 'blur' && this.typePopover()?.includes('mouseleave') && this.validRequired() && !this.itemsSelected()?.length) {\n this.checkValid();\n }\n }\n\n protected handlerClickOutside(event: Event) {\n event.stopPropagation();\n clearTimeout(this.timeoutClickOutside());\n this.timeoutClickOutside.set(\n setTimeout(() => {\n if (this.showList() || !this.removeTextSearchWhenBlurInput()) {\n return;\n }\n this.valueInput.set('');\n this.keySearch.set('');\n this.inputFunctionControl()?.resetValue();\n }, 250)\n );\n }\n\n protected async handlerEnterEvent() {\n if (!this.valueInput() || !`${this.valueInput()}`.trim()) {\n return;\n }\n if (this.config()?.ignoreEnterCreateNewItem) {\n const itemExits = this.checkExits();\n if (!itemExits || itemExits.isItemSelected) {\n return;\n }\n this.processData([itemExits.item]);\n this.handlerValueChangeSearch('');\n return;\n }\n if (!this.functionCheckPermissionCreateTag()()) {\n return;\n }\n const itemExits = this.checkExits();\n const valueInput = `${this.valueInput()}`.trim();\n const newItem = { [this.fieldLabel()]: valueInput };\n if (this.fieldKey()) {\n set(newItem, this.fieldKey(), `${this.fakeId()}${valueInput}${uuid()}`);\n }\n if (!itemExits) {\n if (this.checkPattern([newItem])) {\n const itemBuildValue = { ...newItem };\n const buildValue = this.config()?.buildValue;\n if (buildValue) {\n buildValue(itemBuildValue, newItem[this.fieldLabel()]);\n }\n newItem[this.fieldLabel()] = itemBuildValue[this.fieldLabel()];\n if (this.enterAutoAddTagToList()) {\n this.listFunctionControl()?.updateData({ newData: signal([signal(newItem)]), functionCustomAddDataToStore: (newData, store) => store.update((value) => [...newData(), ...value]) });\n }\n this.processData([newItem]);\n this.handlerValueChangeSearch('');\n }\n return;\n }\n if (itemExits.isItemSelected) {\n return;\n }\n this.processData([itemExits.item]);\n this.handlerValueChangeSearch('');\n }\n\n protected async handlerValueChangeSearch(value: string | number) {\n this.valueInput.set(`${value}`);\n if (!`${value || ''}`.trim()) {\n this.keySearchChangeSub()?.unsubscribe();\n this.keySearchChangeSub.set(undefined);\n this.timeOutChangeSearch.set(setTimeout(() => this.keySearch.set('')));\n if (!this.config()?.ignoreEnterCreateNewItem) {\n this.checkValid();\n }\n return;\n }\n if (this.config()?.ignoreInput) {\n return;\n }\n if (!this.keySearchChangeSub()) {\n this.setEventKeySearch();\n }\n this.keySearchChange.next(`${value || ''}`.trim());\n }\n\n private setEventKeySearch() {\n if (this.keySearchChangeSub()) {\n return;\n }\n this.keySearchChangeSub.set(this.keySearchChange.pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef)).subscribe((value) => this.keySearch.set(`${value || ''}`.trim())));\n }\n\n private processData(items: Array<unknown>, ignoreValidate = false, ignoreEmitKeySelectedWhenItemsNotExitsEmpty?: boolean) {\n if (!items?.length) {\n const itemsSelected = this.getItemSelected();\n if (!ignoreEmitKeySelectedWhenItemsNotExitsEmpty) {\n this.outSelectMultiItem.emit(itemsSelected);\n }\n this.keysSelected.set(Array.from(new Set(itemsSelected?.map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.checkViewChange(false, ignoreValidate);\n return;\n }\n const itemsMapping = items.map((item) => {\n const ref = get(item, 'ref') || item;\n item = cloneDeep(ref);\n set(item, 'ref', ref);\n this.updateFieldLabel(item);\n const { getDisableItem, getStyles, getStylesTagSpecific, getTooltip } = this.config() || {};\n if (getDisableItem) {\n set<any>(item, 'disableItem', getDisableItem(item));\n }\n if (getStyles) {\n set<any>(item, 'ngStyles', getStyles(item));\n }\n if (getStylesTagSpecific) {\n const type = getStylesTagSpecific(item);\n if (type === 'specific_violet_color') {\n set<any>(item, 'ngStyles', { color: '#7239EA', backgroundColor: '#F1EBFD' });\n }\n }\n if (getTooltip) {\n set<any>(item, 'tooltip', getTooltip(item));\n }\n return item;\n });\n this.itemsSelected.update((items) => [...items, ...itemsMapping]);\n this.keysSelected.set(Array.from(new Set(this.itemsSelected().map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.outSelectMultiItem.emit(this.getItemSelected());\n this.checkViewChange(false, ignoreValidate);\n }\n\n protected handlerDataChange(items: Array<unknown>) {\n this.itemsOfList.set(items);\n this.popoverFunctionControl()?.updatePopoverOverlayPosition();\n if (!this.config()?.ignoreInput) {\n this.inputFunctionControl()?.focus();\n }\n }\n\n protected handlerLoading(event: boolean) {\n this.loading.set(event);\n }\n\n private checkViewChange(ignoreScrollBottom: boolean, ignoreValidate = false) {\n this.disableWhenMaxItem.set(false);\n const maxItemInput = this.maxItemInput();\n if (maxItemInput && maxItemInput <= this.itemsSelected().length) {\n this.disableWhenMaxItem.set(true);\n }\n this.timeOutCheckViewChange.set(\n setTimeout(() => {\n const scrollHeight = this.tagsEl()?.nativeElement.scrollHeight;\n if (!isNil(scrollHeight) && this.clientHeight() !== scrollHeight && this.positionList() !== 'top') {\n this.popoverFunctionControl()?.updatePopoverOverlayPosition();\n }\n if (!ignoreScrollBottom && this.tagsEl()?.nativeElement) {\n this.tagsEl().nativeElement.scrollTop = scrollHeight;\n }\n this.clientHeight.set(scrollHeight);\n }, 250)\n );\n if (!ignoreValidate) {\n this.checkValid();\n }\n }\n\n private checkExits(label?: string, id?: string) {\n let itemExits;\n if (!isNil(id) && !`${id}`.includes(this.fakeId()) && this.fieldKey()) {\n itemExits = this.itemsSelected().find((item) => !isNil(get(item, this.fieldKey())) && `${get(item, this.fieldKey())}`.trim() === `${id}`);\n if (itemExits) {\n return { item: itemExits, isItemSelected: true };\n }\n return;\n }\n if (!label) {\n label = `${this.valueInput() || ''}`.trim();\n }\n itemExits = this.itemsSelected().find(\n (item) =>\n (!isNil(get(item, 'fieldLabel')) && get(item, 'fieldLabel').trim() === label?.trim()) ||\n (this.checkExitIsLabelInclude() && get(item, 'fieldLabel').trim().includes(label?.trim())) ||\n this.checkExitByFields()?.some((field) => get(item, field)?.trim() === label?.trim() || get(item, field)?.trim() === escapeHtml(label?.trim() || '') || escapeHtml(get(item, field)?.trim() || ' ') === escapeHtml(label?.trim() || ''))\n );\n if (itemExits) {\n return { item: itemExits, isItemSelected: true };\n }\n itemExits = this.itemsOfList().find(\n (item) =>\n (!isNil(get(item, 'fieldLabel')) && get<any>(item, 'fieldLabel').trim() === label?.trim()) ||\n (this.checkExitIsLabelInclude() && get<any>(item, 'fieldLabel').trim().includes(label?.trim())) ||\n this.checkExitByFields()?.some(\n (field) => get<any>(item, field)?.trim() === label?.trim() || escapeHtml(get<any>(item, field)?.trim() || ' ') === escapeHtml(label?.trim() || '') || get<any>(item, field)?.trim() === escapeHtml(label?.trim() || '')\n )\n );\n if (itemExits) {\n return { item: itemExits, isItemSelected: false };\n }\n\n return;\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event?.item) {\n return;\n }\n if (!isNil(event?.key)) {\n this.popoverFunctionControl()?.removePopoverOverlay();\n }\n if (this.itemsSelected()[0]) {\n this.tempIgnoreEmit.set(true);\n this.handlerRemoveItemSelected(\n {\n stopPropagation: () => {\n return;\n },\n } as Event,\n this.itemsSelected()[0],\n this.itemsSelected()[0].disableItem\n );\n this.tempIgnoreEmit.set(false);\n }\n this.updateItemsSelected([event.item], !!this.itemsSelected()[0]); // Bug #36075\n }\n\n private getFlagEmitSelectedItem(keys: Array<unknown>) {\n if (!this.ignoreEmitWhenSameDataSelected() || keys.length !== this.itemsSelected().length) {\n return false;\n }\n for (const key of keys) {\n if (!this.itemsSelected().some((item) => get(item, this.fieldKey()) === key)) {\n return false;\n }\n }\n return true;\n }\n\n protected async handlerSelectMultiKey(event: IListDataEmitMultiKey | undefined) {\n if (!event) {\n return;\n }\n const keys = [];\n const items: Array<unknown> = [];\n if (event.keys?.length && !event.mapKeys?.length) {\n keys.push(...event.keys);\n }\n const ignoreEmitKeySelectedWhenItemsNotExitsEmpty = this.getFlagEmitSelectedItem(cloneDeep(event.keys ?? []));\n event.mapKeys.forEach((mapKey) => {\n if (isNil(mapKey.key)) {\n return;\n }\n if (mapKey.item) {\n return items.push(mapKey.item);\n }\n if (!Array.isArray(this.itemsSelected())) {\n return keys.push(mapKey.key);\n }\n const item = this.itemsSelected().find((item) => get(item, this.fieldKey()) === mapKey.key);\n if (item) {\n return items.push(item);\n }\n return keys.push(mapKey.key);\n });\n if (keys.length) {\n const resultData: Array<unknown> = await this.getDetailByIds(keys, true);\n items.push(...resultData);\n }\n const messageEmpty = this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID;\n let ignoreValidate = true;\n if (messageEmpty === this.error()?.message) {\n ignoreValidate = false;\n }\n const itemRemove = this.itemsSelected().find((itemSelected) => !isNil(get(itemSelected, this.fieldKey())) && !items.some((item) => get(itemSelected, this.fieldKey()) === get(item, this.fieldKey())));\n this.itemsSelected.update((itemsSelected) => itemsSelected.filter((itemSelected) => isNil(get(itemSelected, this.fieldKey())) || (event.keys.length && items.some((item) => get(itemSelected, this.fieldKey()) === get(item, this.fieldKey())))));\n if (itemRemove) {\n if (this.enterAutoAddTagToList() && !isNil(get(itemRemove, this.fieldKey())) && `${get(itemRemove, this.fieldKey())}`.search(this.fakeId()) >= 0) {\n this.keysHiddenItem.update((items) => [...(items || []), get(itemRemove, this.fieldKey())]);\n }\n }\n if (!event.keys.length) {\n this.checkValid();\n this.keysSelected.set(Array.from(new Set(this.itemsSelected()?.map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.outSelectMultiItem.emit(this.getItemSelected());\n this.checkViewChange(false, ignoreValidate);\n return;\n }\n this.updateItemsSelected(items, ignoreValidate, ignoreEmitKeySelectedWhenItemsNotExitsEmpty);\n this.checkValid();\n }\n\n private async getDetailByIds(keys: Array<unknown>, isResponseData?: boolean): Promise<Array<unknown>> {\n const httpRequestDetailItemByIds = this.httpRequestDetailItemByIds();\n if (!httpRequestDetailItemByIds || this.loadingDetail() || !(keys instanceof Array) || !keys.length) {\n return [];\n }\n this.updateLoadingDetail(true);\n const cloneHttpDetailConfig = cloneDeep(httpRequestDetailItemByIds);\n try {\n const { argumentsValue, guideAutoUpdateArgumentsValue } = cloneHttpDetailConfig;\n if (!guideAutoUpdateArgumentsValue?.detailById) {\n return [];\n }\n guideAutoUpdateArgumentsValue.detailById.fieldGetValue = 'keys';\n this.httpRequestService.updateArguments(argumentsValue, { keys: keys }, {}, '', false, false, guideAutoUpdateArgumentsValue);\n const result = (await this.httpRequestService.callApi(cloneHttpDetailConfig)) as IHttpResponse<Array<unknown>>;\n if (!isResponseData) {\n this.updateItemsSelected(result.data || []);\n this.updateLoadingDetail(false);\n return [];\n }\n this.updateLoadingDetail(false);\n return result.data || [];\n } catch (error) {\n console.log(error);\n this.updateLoadingDetail(false);\n }\n return [];\n }\n\n private async checkValid() {\n const valid = !!this.itemsSelected()?.length;\n const stateError = !!this.error();\n this.error.set(undefined);\n if (this.validRequired() && !valid) {\n this.error.set({ ...this.validRequired(), message: this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID });\n }\n if (!this.error()) {\n this.checkPattern(this.itemsSelected());\n this.checkMaxItemSelectedValid();\n }\n if (!this.tempIgnoreEmit()) {\n this.outValidEvent.emit(!this.error());\n }\n if (stateError !== !!this.error()) {\n this.popoverFunctionControl()?.updatePopoverOverlayPosition();\n }\n return !this.error();\n }\n\n private checkMaxItemSelectedValid() {\n const validMaxItemSelected = this.validMaxItemSelected();\n if (validMaxItemSelected && this.itemsSelected().length > validMaxItemSelected.value) {\n this.error.set({ ...validMaxItemSelected, message: validMaxItemSelected.message || ERROR_MESSAGE_MAX_VALID, interpolateParams: { value: validMaxItemSelected.value } });\n return false;\n }\n return true;\n }\n\n private checkPattern(items: Array<unknown>): boolean {\n const validPattern = this.validPattern();\n if (!validPattern?.length || !items?.length) {\n return true;\n }\n for (const valid of validPattern) {\n if (valid.pattern && items.some((item) => !valid.pattern.test(get(item, this.fieldLabel())))) {\n this.error.set({ ...valid, message: valid.message || ERROR_MESSAGE_PATTEN_VALID });\n return false;\n }\n }\n return true;\n }\n\n protected handlerClickButtonOther(event: IButton) {\n this.outClickButtonOther.emit(event);\n }\n\n private getItemSelected(): Array<unknown> {\n return this.itemsSelected().map((item) => {\n const itemMap = { ...item };\n if (!isNil(get(itemMap, this.fieldKey())) && `${get(itemMap, this.fieldKey())}`.search(this.fakeId()) === 0) {\n set(itemMap, this.fieldKey(), '');\n }\n return itemMap;\n });\n }\n\n protected async resetToDefaultDataSelected(itemSelected?: Array<unknown>) {\n if (itemSelected && Array.isArray(itemSelected)) {\n this.itemsSelected.set([]);\n this.updateItemsSelected(itemSelected);\n return;\n }\n if (!this.fieldKey()) {\n return;\n }\n const defaultKeysSelected = this.defaultKeysSelected();\n if (defaultKeysSelected && Array.isArray(defaultKeysSelected)) {\n this.itemsSelected.set([]);\n this.getDetailByIds(defaultKeysSelected);\n return;\n }\n const defaultItemsSelected = this.defaultItemsSelected();\n if (defaultItemsSelected && Array.isArray(defaultItemsSelected)) {\n this.itemsSelected.set([]);\n this.updateItemsSelected(defaultItemsSelected);\n }\n }\n\n protected handlerFunctionControlList(event: IListFunctionControlEvent) {\n this.listFunctionControl.set(event);\n }\n\n protected async focusInput() {\n this.inputFunctionControl()?.focus();\n }\n\n protected handlerChangeFlagMouse(event: IFlagMouse) {\n this.outChangStageFlagMouse.emit(event);\n }\n\n protected handlerChangStageFlagMouse(flag: IFlagMouse) {\n this.flagMouse.set(flag);\n }\n\n protected handlerClickTagItem(event: Event) {\n if (!this.showList()) {\n return;\n }\n event.stopPropagation();\n this.flagMouse.set({ isMouseEnter: true, isMouseEnterContent: true });\n }\n\n private async resetError() {\n this.error.set(undefined);\n }\n\n private updateLoadingDetail(event: boolean) {\n this.loadingDetail.set(event);\n this.outLoadingGetDetailSelected.emit(event);\n }\n\n private async updateItemSelectedDisable() {\n const getDisableItem = this.config()?.getDisableItem;\n if (!getDisableItem) {\n return;\n }\n this.itemsSelected.update((itemsSelected) => itemsSelected.map((item) => ({ ...item, disableItem: getDisableItem(item) })));\n }\n\n private async refreshListData() {\n this.listFunctionControl()?.refresh();\n }\n\n ngOnDestroy(): void {\n if (this.timeOutFlag()) clearTimeout(this.timeOutFlag());\n if (this.timeOutChangeSearch()) clearTimeout(this.timeOutChangeSearch());\n if (this.timeOutCheckViewChange()) clearTimeout(this.timeOutCheckViewChange());\n if (this.timeoutClickOutside()) clearTimeout(this.timeoutClickOutside());\n\n if (this.keySearchChangeSub()) this.keySearchChangeSub()?.unsubscribe();\n }\n}\n","<div class=\"flex flex-col w-full h-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable() || loading() || loadingDetail()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable() || loading() || loadingDetail()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleActive]=\"labelConfig.toggleDisable || disable() || loading() || loadingDetail()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <libs_ui-components-popover\n class=\"w-full h-full\"\n [ignoreShowPopover]=\"disable() || readonly() || !!config()?.ignoreShowList || false\"\n [ignoreCursorPointerModeLikeClick]=\"true\"\n [elementRefCustom]=\"tagsEl\"\n [mode]=\"!config()?.ignoreInput ? 'click' : 'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: config()?.animationConfig || {},\n zIndex: zIndex(),\n widthByParent: true,\n parentBorderWidth: parentBorderWidth() ?? 0,\n maxHeight: 2048,\n maxWidth: 2048,\n direction: config()?.directionList || 'bottom',\n directionDistance: 2,\n template: !showListBellow() ? listViewEl : undefined,\n whiteTheme: true,\n ignoreArrow: true,\n classInclude: 'rounded-[4px] ' + classIncludePopover() + (!listConfig()?.ignoreShowDataWhenNotSearch || keySearch() ? ' libs-ui-border-general' : ''),\n position: { mode: 'start', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outEventPopoverContent)=\"handlerPopoverContentEvent($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\">\n <div\n class=\"relative\"\n [class.cursor-pointer]=\"!disable() && !readonly()\"\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 @if (config()?.uiLikeDropdown) {\n <i\n class=\"flex text-[16px] absolute right-[16px] top-[8px] libs-ui-icon-move-right rotate-90 z-[1]\"\n [class.text-[#6a7383]]=\"!readonly() && !disable()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n <div\n #tagsEl\n [class]=\"'libs-ui-tags ' + (config()?.classInclude || '') + (readonly() ? config()?.classCustomWhenReadOnly || ' libs-ui-readonly' : '')\"\n [class.libs-ui-tags-not-popup]=\"(!showList() && !showBorderActiveWhenFocusInput()) || (!focus() && showBorderActiveWhenFocusInput())\"\n [class.libs-ui-tags-error]=\"!!error() && !config()?.ignoreShowError\"\n [class.!pr-[32px]]=\"config()?.uiLikeDropdown\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.libs-ui-border-primary-general]=\"focus() && showBorderActiveWhenFocusInput()\"\n LibsUiComponentsClickOutsideDirective\n LibsUiComponentsScrollOverlayDirective\n (outOutside)=\"handlerClickOutside($event)\">\n @for (item of itemsSelected(); track item[fieldKey()]) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"item?.tooltip?.type || 'other'\"\n [config]=\"item?.tooltip?.config || { zIndex: zIndex() + 2 }\"\n [ignoreShowPopover]=\"!item?.tooltip || item.tooltip.ignoreShowPopover\"\n [ngStyle]=\"item?.bullet || item?.ngStyles\"\n [class]=\"classIncludeTagItem() || ''\"\n [class.libs-ui-tags-readonly]=\"item.disableItem\"\n [class.libs-ui-tags-item]=\"!item.disableItem\"\n [class.cursor-default]=\"disable() || readonly()\"\n (pointerdown)=\"handlerClickTagItem($event)\">\n @if (fieldGetImage() || config()?.fieldGetImage; as fieldGetImage) {\n <div class=\"flex items-center justify-center h-full\">\n <libs_ui-components-avatar\n [classInclude]=\"classAvatarInclude() || config()?.classAvatarInclude || 'mr-[8px]'\"\n [size]=\"imageSize() || config()?.imageSize\"\n [linkAvatar]=\"item[fieldGetImage]\"\n [linkAvatarError]=\"linkImageError() || config()?.linkImageError\"\n [idGenColor]=\"item[fieldGetTextAvatar() || config()?.fieldGetTextAvatar || '']\"\n [getLastTextAfterSpace]=\"getLastTextAfterSpace() || config()?.getLastTextAfterSpace\"\n [textAvatar]=\"item[fieldGetTextAvatar() || config()?.fieldGetTextAvatar || 'user']\" />\n </div>\n }\n @let constHtmlLabel = item.fieldLabel || ' ';\n <span\n class=\"libs-ui-font-h6r\"\n [innerHtml]=\"constHtmlLabel | translate\"></span>\n @if (!disable() && !item.disableItem && !readonly()) {\n <div class=\"flex items-center justify-center ml-[8px]\">\n @let constHtmlStyle = item?.bullet || item?.ngStyles;\n <i\n #iconCloseEl\n [attr.specificStyle]=\"!!constHtmlStyle\"\n [class]=\"'flex text-[16px] ' + (classIconRemoveTagItem() || 'libs-ui-icon-close')\"\n [class.cursor-pointer]=\"!disable() && !loading() && !loadingDetail()\"\n [class.pointer-events-none]=\"disable() || loading() || loadingDetail()\"\n [ngStyle]=\"constHtmlStyle | LibsUiComponentsTagsGetColorPipe: iconCloseEl\"\n (pointerdown)=\"handlerRemoveItemSelected($event, item, false, true)\"></i>\n </div>\n }\n </div>\n }\n @if (!singleSelected() || (singleSelected() && !itemsSelected().length)) {\n @if (!config()?.ignoreInput && !config()?.uiLikeDropdown && (!hiddenInputWhenReadonly() || (hiddenInputWhenReadonly() && !readonly()))) {\n <libs_ui-components-inputs-input\n class=\"grow\"\n [class.mb-[4px]]=\"itemsSelected().length\"\n [classInclude]=\"'w-full bg-transparent ' + (config()?.classInputInclude || 'px-[4px] min-w-[30px]')\"\n [defaultHeight]=\"24\"\n [placeholder]=\"readonly() ? '' : placeholder() || 'i18n_import_content'\"\n [noBorder]=\"true\"\n [(value)]=\"valueInput\"\n [disable]=\"disable() || loading() || loadingDetail() || disableWhenMaxItem()\"\n [readonly]=\"readonly()\"\n (outEnterEvent)=\"handlerEnterEvent()\"\n (valueChange)=\"handlerValueChangeSearch($event)\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurEvent($event)\"\n (outFunctionsControl)=\"handlerInputFunctionControl($event)\" />\n }\n @if (config()?.ignoreInput && config()?.uiLikeDropdown && !itemsSelected().length) {\n <div\n class=\"flex items-center pb-[4px] pt-[2px] ml-[11px] libs-ui-font-h5r\"\n [class.text-[#9ca2ad]]=\"disable()\">\n @let constHtmlPlaceholder = placeholder() || 'i18n_select_value';\n {{ constHtmlPlaceholder | translate }}\n </div>\n }\n }\n </div>\n @if (error() && !config()?.ignoreShowError) {\n <div class=\"text-[#ee2d41] libs-ui-font-h7r mt-[8px]\">\n @let constHtmlMessage = error()?.message || ' ';\n {{ constHtmlMessage | translate: error()?.interpolateParams || {} }}\n </div>\n }\n </div>\n </libs_ui-components-popover>\n</div>\n@if (showListBellow()) {\n <ng-container *ngTemplateOutlet=\"listViewEl\"></ng-container>\n}\n<ng-template #listViewEl>\n @if (listConfig(); as listConfig) {\n <libs_ui-components-list\n [searchConfig]=\"listSearchConfig() || { classInclude: 'hidden', iconLeftClass: 'hidden' }\"\n [isSearchOnline]=\"isSearchOnline()\"\n [zIndex]=\"zIndex()\"\n [keySearch]=\"keySearch()\"\n [config]=\"listConfig\"\n [disable]=\"disable() || loadingDetail() || disableWhenMaxItem()\"\n [searchPadding]=\"listSearchPadding()\"\n [maxItemShow]=\"listMaxItemShow() || 6\"\n [multiKeySelected]=\"keysSelected()\"\n [clickExactly]=\"false\"\n [keysHiddenItem]=\"keysHiddenItem()\"\n [keysDisableItem]=\"listKeyDisable()\"\n [dividerClassInclude]=\"listDividerClassInclude() ?? 'hidden'\"\n [buttonsOther]=\"listButtonsOther()\"\n [backgroundListCustom]=\"listBackgroundListCustom()\"\n [functionGetItemsAutoAddList]=\"functionGetItemAutoAddList()\"\n [hiddenInputSearch]=\"listHiddenInputSearchWhenHasSearchConfig()\"\n (outFunctionsControl)=\"handlerFunctionControlList($event)\"\n (outSelectKey)=\"handlerSelectedKey($event)\"\n (outSelectMultiKey)=\"handlerSelectMultiKey($event)\"\n (outChangeView)=\"handlerDataChange($event)\"\n (outClickButtonOther)=\"handlerClickButtonOther($event)\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outLoading)=\"handlerLoading($event)\" />\n }\n</ng-template>\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-tags.mjs","sources":["../../../../../libs-ui/components/tags/src/pipes/get-color.pipe.ts","../../../../../libs-ui/components/tags/src/tags.component.ts","../../../../../libs-ui/components/tags/src/tags.component.html","../../../../../libs-ui/components/tags/src/libs-ui-components-tags.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { colorStepContrastFromOrigin, get, rgbToHex } from '@libs-ui/utils';\n\n@Pipe({\n name: 'LibsUiComponentsTagsGetColorPipe',\n standalone: true,\n})\nexport class LibsUiComponentsTagsGetColorPipe implements PipeTransform {\n transform(style: unknown, element: HTMLElement) {\n if (!style) {\n return {};\n }\n let color = get<unknown>(style, 'color') as string;\n let backgroundColor = (get<unknown>(style, 'backgroundColor') || get<unknown>(style, 'background')) as string;\n if (color && color.includes('rgb') && color.match(/d+/g)?.length) {\n const [red, green, blue] = Array.from(color.match(/d+/g) || []);\n color = rgbToHex({ red, green, blue });\n }\n if (backgroundColor && backgroundColor.includes('rgb') && backgroundColor.match(/\\d+/g)?.length) {\n const [red, green, blue] = Array.from(backgroundColor.match(/\\d+/g) || []);\n backgroundColor = rgbToHex({ red, green, blue });\n }\n if (color && /(^#)[a-z0-9]{3,6}/gi.test(color)) {\n element.style.setProperty('--libs-ui-tags-item-icon-default', color);\n element.style.setProperty('--libs-ui-tags-item-icon-background-hover', color);\n }\n if (backgroundColor && /(^#)[a-z0-9]{3,6}/gi.test(backgroundColor)) {\n element.style.setProperty('--libs-ui-tags-item-icon-hover', backgroundColor);\n element.style.setProperty('--libs-ui-tags-item-icon-active', backgroundColor);\n element.style.setProperty('--libs-ui-tags-item-icon-background-active', colorStepContrastFromOrigin(backgroundColor, 60)?.light || '');\n }\n return style;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LibsUiComponentsAvatarComponent, TYPE_SIZE_AVATAR_CONFIG } from '@libs-ui/components-avatar';\nimport { IButton } from '@libs-ui/components-buttons-button';\nimport { LibsUiComponentsClickOutsideDirective } from '@libs-ui/components-click-outside';\nimport { IValidMaxItemSelected } from '@libs-ui/components-dropdown';\nimport { IFocusAndBlurEvent, IInputFunctionControlEvent, LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';\nimport { IInputSearchConfig } from '@libs-ui/components-inputs-search';\nimport { IValidPattern } from '@libs-ui/components-inputs-valid';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { getFieldKeyByType, IListConfigItem, IListDataEmitKey, IListDataEmitMultiKey, IListFunctionControlEvent, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { IFlagMouse, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IHttpResponse, IMessageTranslate } from '@libs-ui/interfaces-types';\nimport { IHttpRequestConfig, LibsUiHttpRequestService } from '@libs-ui/services-http-request';\nimport { cloneDeep, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_PATTEN_VALID, escapeHtml, get, isNil, set, uuid } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { debounceTime, Subject, Subscription } from 'rxjs';\nimport { ITagsConfig, ITagsFunctionControlEvent } from './interfaces/tags.interface';\nimport { LibsUiComponentsTagsGetColorPipe } from './pipes/get-color.pipe';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tags',\n templateUrl: './tags.component.html',\n styleUrl: './tags.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TranslateModule,\n NgTemplateOutlet,\n NgStyle,\n LibsUiComponentsClickOutsideDirective,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsInputsInputComponent,\n LibsUiComponentsAvatarComponent,\n LibsUiComponentsListComponent,\n LibsUiComponentsTagsGetColorPipe,\n LibsUiComponentsScrollOverlayDirective,\n ],\n})\nexport class LibsUiComponentsTagsComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected flagMouse = signal<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n protected loading = signal<boolean>(false);\n protected loadingDetail = signal<boolean>(false);\n protected keySearch = signal<string>('');\n protected valueInput = signal<string>('');\n protected itemsSelected = signal<Array<any>>([]);\n protected showList = signal<boolean>(false);\n protected positionList = signal<TYPE_POPOVER_DIRECTION | undefined>(undefined);\n protected keysSelected = signal<Array<unknown>>([]);\n protected disableWhenMaxItem = signal<boolean>(false);\n protected focus = signal<boolean>(false);\n protected error = signal<IMessageTranslate | undefined>(undefined);\n protected fieldKey = signal<string>('id');\n protected functionGetItemAutoAddList = computed(() => {\n if (!this.enterAutoAddTagToList()) {\n return;\n }\n return () =>\n this.itemsSelected()\n .filter((item) => `${get(item, this.fieldKey(), '')}`.search(this.fakeId()) === 0)\n .reverse();\n });\n protected listKeyDisable = signal<Array<unknown>>([]);\n\n private readonly fakeId = signal<string>(uuid());\n private readonly timeOutFlag = signal<number | undefined>(undefined);\n private readonly timeOutChangeSearch = signal<number | undefined>(undefined);\n private readonly timeOutCheckViewChange = signal<number | undefined>(undefined);\n private readonly timeoutClickOutside = signal<number | undefined>(undefined);\n private readonly clientHeight = signal<number | undefined>(undefined);\n private readonly itemsOfList = signal<Array<unknown>>([]);\n private readonly keySearchChange = new Subject<string>();\n private readonly keySearchChangeSub = signal<Subscription | undefined>(undefined);\n private readonly tempIgnoreEmit = signal<boolean>(false);\n private readonly popoverFunctionControl = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private readonly inputFunctionControl = signal<IInputFunctionControlEvent | undefined>(undefined);\n private readonly typePopover = signal<TYPE_POPOVER_EVENT | undefined>(undefined);\n private readonly listFunctionControl = signal<IListFunctionControlEvent | undefined>(undefined);\n private readonly defaultItemsSelectedCurrent = signal<Array<unknown> | undefined>(undefined);\n private readonly destroyRef = inject(DestroyRef);\n // #region INPUT\n readonly classIncludePopover = input<string>();\n readonly enterAutoAddTagToList = input<boolean>(false);\n readonly checkExitIsLabelInclude = input<boolean>();\n readonly checkExitByFields = input<Array<string>>();\n readonly parentBorderWidth = input<number>();\n readonly functionCheckPermissionCreateTag = input<() => boolean>(() => true);\n readonly placeholder = input<string>();\n readonly httpRequestDetailItemByIds = input<IHttpRequestConfig>();\n readonly fieldLabel = input<string>('label');\n readonly maxItemInput = input<number>();\n readonly zIndex = input<number, number | undefined>(1000, { transform: (value) => value ?? 1000 });\n readonly config = input<ITagsConfig>();\n readonly disable = input<boolean>();\n readonly readonly = input<boolean>();\n readonly labelConfig = input<ILabel>();\n readonly defaultItemsSelected = input<Array<unknown>>();\n readonly defaultKeysSelected = input<Array<unknown>>();\n readonly listSearchConfig = input<IInputSearchConfig>();\n readonly isSearchOnline = input<boolean>(false);\n readonly listSearchPadding = input<boolean>();\n readonly listDividerClassInclude = input<string>();\n readonly listConfig = input<IListConfigItem>();\n readonly listButtonsOther = input<Array<IButton>>();\n readonly listClickExactly = input<boolean>();\n readonly listBackgroundListCustom = input<string>();\n readonly listMaxItemShow = input<number>();\n readonly listHiddenInputSearchWhenHasSearchConfig = input<boolean>();\n readonly removeTextSearchWhenBlurInput = input<boolean>(true);\n readonly keysHiddenItem = model<Array<unknown>>();\n readonly keysDisableItem = input<Array<unknown>>();\n readonly ignoreEmitWhenSameDataSelected = input<boolean>();\n readonly singleSelected = input<boolean>();\n readonly classIncludeTagItem = input<string>();\n readonly classIconRemoveTagItem = input<string>();\n readonly showBorderActiveWhenFocusInput = input<boolean>();\n readonly fieldGetImage = input<string>();\n readonly imageSize = input<TYPE_SIZE_AVATAR_CONFIG>(16);\n readonly linkImageError = input<string>();\n readonly fieldGetTextAvatar = input<string>('user');\n readonly classAvatarInclude = input<string>();\n readonly getLastTextAfterSpace = input<boolean>();\n readonly validRequired = input<IMessageTranslate>();\n readonly validMaxItemSelected = input<IValidMaxItemSelected>();\n readonly validPattern = input<Array<IValidPattern>>();\n readonly showListBellow = input<boolean>();\n readonly hiddenInputWhenReadonly = input<boolean>();\n readonly emitEventClickXIcon = input<boolean>();\n\n // #region OUTPUT\n readonly outSelectMultiItem = output<Array<unknown>>();\n readonly outValidEvent = output<boolean>();\n readonly outFunctionsControl = output<ITagsFunctionControlEvent>();\n readonly outClickButtonOther = output<IButton>();\n readonly outShowListEvent = output<boolean>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outLoadingGetDetailSelected = output<boolean>();\n\n /* VIEW CHILD */\n private readonly tagsEl = viewChild.required<ElementRef>('tagsEl');\n\n /* INJECT*/\n private readonly httpRequestService = inject(LibsUiHttpRequestService);\n\n constructor() {\n effect(() => {\n const maxItemInput = this.maxItemInput();\n untracked(() => {\n this.disableWhenMaxItem.set(false);\n if (maxItemInput && maxItemInput <= this.itemsSelected().length) {\n this.disableWhenMaxItem.set(true);\n }\n });\n });\n effect(() => {\n const listConfig = this.listConfig();\n untracked(() => {\n if (listConfig) {\n this.fieldKey.set(getFieldKeyByType(listConfig, 'id'));\n }\n });\n });\n effect(() => {\n const currentItems = this.defaultItemsSelected() || [];\n untracked(() => {\n const previousItems = this.defaultItemsSelectedCurrent() || [];\n this.defaultItemsSelectedCurrent.set(this.defaultItemsSelected());\n if (previousItems.length !== currentItems.length) {\n this.updateItemsSelected(currentItems);\n return;\n }\n for (const prevItem of previousItems) {\n if (!currentItems.some((item) => get(item, this.fieldKey()) === get(prevItem, this.fieldKey()))) {\n this.updateItemsSelected(currentItems);\n break;\n }\n }\n });\n });\n effect(() => {\n const currentValue = this.defaultKeysSelected() || [];\n untracked(() => {\n const previousValue = this.keysSelected() || [];\n if (previousValue.length !== currentValue.length) {\n this.getDetailByIds(currentValue);\n return;\n }\n const keysNew = currentValue.filter((key) => !this.itemsSelected().some((item) => get(item, this.fieldKey(), '') === key));\n if (keysNew.length) {\n this.getDetailByIds(keysNew);\n }\n });\n });\n effect(() => {\n let listKeyDisable: Array<unknown> = [];\n const keysDisableItem = this.keysDisableItem();\n const itemsSelected = this.itemsSelected();\n\n untracked(() => {\n if (keysDisableItem?.length) {\n listKeyDisable = [...keysDisableItem];\n }\n itemsSelected.forEach((item) => {\n if (item.disableItem && !listKeyDisable.find((key) => key === item[this.fieldKey()])) {\n listKeyDisable.push(item[this.fieldKey()]);\n }\n });\n this.listKeyDisable.set(listKeyDisable);\n });\n });\n }\n\n ngOnInit() {\n if (!this.config()) {\n return;\n }\n const httpRequestDetailItemByIds = this.httpRequestDetailItemByIds();\n if (httpRequestDetailItemByIds && !httpRequestDetailItemByIds?.guideAutoUpdateArgumentsValue?.detailById) {\n throw new Error('Config getDetailByIds yêu cầu tối thiểu các tham số guideAutoUpdateArgumentsValue, detailById');\n }\n const preprocessor = (keys: Array<unknown>) => {\n if (!keys || !(keys instanceof Array) || !keys.length) {\n return '';\n }\n return keys.join(';');\n };\n if (httpRequestDetailItemByIds?.guideAutoUpdateArgumentsValue?.detailById) {\n httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.fieldGetValue = httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.fieldGetValue ?? 'keys';\n httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.preprocessor = httpRequestDetailItemByIds.guideAutoUpdateArgumentsValue.detailById.preprocessor ?? preprocessor;\n }\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n public get FunctionsControl(): ITagsFunctionControlEvent {\n return {\n checkIsValid: this.checkValid.bind(this),\n removeList: async () => this.popoverFunctionControl()?.removePopoverOverlay(),\n updateLabel: this.updateLabel.bind(this),\n clearItemSelected: this.clearItemSelected.bind(this),\n clearKeySearch: () => this.handlerValueChangeSearch(''),\n focusInput: () => this.focusInput(),\n getFakeId: async () => this.fakeId(),\n createTag: this.handlerEnterEvent.bind(this),\n removeItemSelected: this.handlerRemoveItemSelected.bind(this),\n resetError: this.resetError.bind(this),\n resetToDefaultDataSelected: this.resetToDefaultDataSelected.bind(this),\n updateItemSelectedDisable: this.updateItemSelectedDisable.bind(this),\n refreshListData: this.refreshListData.bind(this),\n setError: this.setError.bind(this),\n };\n }\n\n private async setError(message: string) {\n this.error.set({ message });\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControl.set(event);\n }\n\n private async updateLabel() {\n if (!this.itemsSelected()?.length) {\n return;\n }\n this.itemsSelected.update((items) => {\n items.forEach((item) => this.updateFieldLabel(item));\n return [...items];\n });\n }\n\n private updateFieldLabel(item: unknown) {\n const ref = get(item, 'ref') || item;\n const getValue = this.config()?.getValue;\n set<any>(item, 'fieldLabel', `${get(ref, this.fieldLabel()) || get(ref, 'label') || get(ref, 'name') || ' '}`);\n if (getValue) {\n set<any>(item, 'fieldLabel', getValue(ref) || ' ');\n }\n }\n\n private async clearItemSelected(ignoreValid = false) {\n if (!this.itemsSelected()?.length) {\n return;\n }\n const length = this.itemsSelected().length - 1;\n this.tempIgnoreEmit.set(true);\n this.itemsSelected().forEach((item, index) => {\n if (index === length) {\n this.tempIgnoreEmit.set(false);\n }\n this.handlerRemoveItemSelected(\n {\n stopPropagation: () => {\n return;\n },\n } as Event,\n item,\n ignoreValid\n );\n });\n }\n\n private updateItemsSelected(itemsSelected: Array<unknown>, ignoreValidate = true, ignoreEmitKeySelectedWhenItemsNotExitsEmpty?: boolean) {\n if (!itemsSelected?.length) {\n return;\n }\n const itemsNotExits: Array<unknown> = [];\n itemsSelected.forEach((item) => {\n if (!item) {\n return;\n }\n let fieldLabel = `${get<unknown>(item, this.fieldLabel()) || get<unknown>(item, 'label') || get<unknown>(item, 'name') || ' '}`;\n const getValue = this.config()?.getValue;\n if (getValue) {\n fieldLabel = getValue(item) || ' ';\n }\n const itemExits = this.checkExits(fieldLabel, get<unknown>(item, this.fieldKey()));\n if (itemExits?.isItemSelected) {\n Object.assign(itemExits.item, item);\n return;\n }\n itemsNotExits.push(item);\n });\n this.processData(itemsNotExits, ignoreValidate, ignoreEmitKeySelectedWhenItemsNotExitsEmpty);\n }\n\n protected handlerPopoverEvent(type: TYPE_POPOVER_EVENT) {\n this.typePopover.set(type);\n if (type === 'click') {\n return;\n }\n if (type === 'remove') {\n this.showList.set(false);\n this.outShowListEvent.emit(false);\n this.inputFunctionControl()?.blur();\n return;\n }\n this.showList.set(true);\n this.outShowListEvent.emit(true);\n this.inputFunctionControl()?.focus();\n }\n\n protected handlerPopoverContentEvent(position: TYPE_POPOVER_DIRECTION) {\n if (this.positionList() === position) {\n return;\n }\n this.positionList.set(position);\n }\n\n protected async handlerRemoveItemSelected(event: Event, itemRemove: unknown, ignoreValid?: boolean, isEventOnElement?: boolean) {\n event.stopPropagation();\n this.flagMouse.set({ isMouseEnter: true, isMouseEnterContent: true });\n this.timeOutFlag.set(setTimeout(() => this.flagMouse.set({ isMouseEnter: false, isMouseEnterContent: false }), 250));\n this.itemsSelected.update((items) =>\n items.filter((item) => {\n const keyRemove = get(itemRemove, this.fieldKey());\n const keyItem = get(item, this.fieldKey());\n const labelRemove = get<any>(itemRemove, 'fieldLabel').trim();\n const labelItem = get(item, 'fieldLabel').trim();\n\n return ((isNil(keyRemove) || isNil(keyItem)) && labelRemove !== labelItem) || (!isNil(keyRemove) && !isNil(keyItem) && keyRemove !== keyItem);\n })\n );\n if (itemRemove && !isNil(get<unknown>(itemRemove, this.fieldKey())) && `${get<unknown>(itemRemove, this.fieldKey())}`.search(this.fakeId()) >= 0) {\n this.keysHiddenItem.update((items) => Array.from(new Set([...(items || []), get<unknown>(itemRemove, this.fieldKey())])));\n }\n this.keysSelected.set(Array.from(new Set(this.itemsSelected().map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.disableWhenMaxItem.set(false);\n const maxItemInput = this.maxItemInput();\n if (maxItemInput && maxItemInput <= this.itemsSelected().length) {\n this.disableWhenMaxItem.set(true);\n }\n if (!this.showList() || (this.emitEventClickXIcon() && isEventOnElement)) {\n this.outSelectMultiItem.emit(this.getItemSelected());\n this.checkViewChange(true, ignoreValid);\n return;\n }\n if (this.showList()) {\n this.tempIgnoreEmit.set(true);\n }\n if (!ignoreValid) {\n this.checkValid();\n }\n this.tempIgnoreEmit.set(false);\n }\n\n protected handlerInputFunctionControl(event: IInputFunctionControlEvent) {\n this.inputFunctionControl.set(event);\n }\n\n protected handlerFocusAndBlurEvent(event: IFocusAndBlurEvent) {\n this.focus.set(false);\n if (event.name === 'focus') {\n this.focus.set(true);\n }\n if (event.name === 'blur' && this.typePopover()?.includes('mouseleave') && this.validRequired() && !this.itemsSelected()?.length) {\n this.checkValid();\n }\n }\n\n protected handlerClickOutside(event: Event) {\n event.stopPropagation();\n clearTimeout(this.timeoutClickOutside());\n this.timeoutClickOutside.set(\n setTimeout(() => {\n if (this.showList() || !this.removeTextSearchWhenBlurInput()) {\n return;\n }\n this.valueInput.set('');\n this.keySearch.set('');\n this.inputFunctionControl()?.resetValue();\n }, 250)\n );\n }\n\n protected async handlerEnterEvent() {\n if (!this.valueInput() || !`${this.valueInput()}`.trim()) {\n return;\n }\n if (this.config()?.ignoreEnterCreateNewItem) {\n const itemExits = this.checkExits();\n if (!itemExits || itemExits.isItemSelected) {\n return;\n }\n this.processData([itemExits.item]);\n this.handlerValueChangeSearch('');\n return;\n }\n if (!this.functionCheckPermissionCreateTag()()) {\n return;\n }\n const itemExits = this.checkExits();\n const valueInput = `${this.valueInput()}`.trim();\n const newItem = { [this.fieldLabel()]: valueInput };\n if (this.fieldKey()) {\n set(newItem, this.fieldKey(), `${this.fakeId()}${valueInput}${uuid()}`);\n }\n if (!itemExits) {\n if (this.checkPattern([newItem])) {\n const itemBuildValue = { ...newItem };\n const buildValue = this.config()?.buildValue;\n if (buildValue) {\n buildValue(itemBuildValue, newItem[this.fieldLabel()]);\n }\n newItem[this.fieldLabel()] = itemBuildValue[this.fieldLabel()];\n if (this.enterAutoAddTagToList()) {\n this.listFunctionControl()?.updateData({ newData: signal([signal(newItem)]), functionCustomAddDataToStore: (newData, store) => store.update((value) => [...newData(), ...value]) });\n }\n this.processData([newItem]);\n this.handlerValueChangeSearch('');\n }\n return;\n }\n if (itemExits.isItemSelected) {\n return;\n }\n this.processData([itemExits.item]);\n this.handlerValueChangeSearch('');\n }\n\n protected async handlerValueChangeSearch(value: string | number) {\n this.valueInput.set(`${value}`);\n if (!`${value || ''}`.trim()) {\n this.keySearchChangeSub()?.unsubscribe();\n this.keySearchChangeSub.set(undefined);\n this.timeOutChangeSearch.set(setTimeout(() => this.keySearch.set('')));\n if (!this.config()?.ignoreEnterCreateNewItem) {\n this.checkValid();\n }\n return;\n }\n if (this.config()?.ignoreInput) {\n return;\n }\n if (!this.keySearchChangeSub()) {\n this.setEventKeySearch();\n }\n this.keySearchChange.next(`${value || ''}`.trim());\n }\n\n private setEventKeySearch() {\n if (this.keySearchChangeSub()) {\n return;\n }\n this.keySearchChangeSub.set(this.keySearchChange.pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef)).subscribe((value) => this.keySearch.set(`${value || ''}`.trim())));\n }\n\n private processData(items: Array<unknown>, ignoreValidate = false, ignoreEmitKeySelectedWhenItemsNotExitsEmpty?: boolean) {\n if (!items?.length) {\n const itemsSelected = this.getItemSelected();\n if (!ignoreEmitKeySelectedWhenItemsNotExitsEmpty) {\n this.outSelectMultiItem.emit(itemsSelected);\n }\n this.keysSelected.set(Array.from(new Set(itemsSelected?.map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.checkViewChange(false, ignoreValidate);\n return;\n }\n const itemsMapping = items.map((item) => {\n const ref = get(item, 'ref') || item;\n item = cloneDeep(ref);\n set(item, 'ref', ref);\n this.updateFieldLabel(item);\n const { getDisableItem, getStyles, getStylesTagSpecific, getTooltip } = this.config() || {};\n if (getDisableItem) {\n set<any>(item, 'disableItem', getDisableItem(item));\n }\n if (getStyles) {\n set<any>(item, 'ngStyles', getStyles(item));\n }\n if (getStylesTagSpecific) {\n const type = getStylesTagSpecific(item);\n if (type === 'specific_violet_color') {\n set<any>(item, 'ngStyles', { color: '#7239EA', backgroundColor: '#F1EBFD' });\n }\n }\n if (getTooltip) {\n set<any>(item, 'tooltip', getTooltip(item));\n }\n return item;\n });\n this.itemsSelected.update((items) => [...items, ...itemsMapping]);\n this.keysSelected.set(Array.from(new Set(this.itemsSelected().map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.outSelectMultiItem.emit(this.getItemSelected());\n this.checkViewChange(false, ignoreValidate);\n }\n\n protected handlerDataChange(items: Array<unknown>) {\n this.itemsOfList.set(items);\n this.popoverFunctionControl()?.updatePopoverOverlayPosition();\n if (!this.config()?.ignoreInput) {\n this.inputFunctionControl()?.focus();\n }\n }\n\n protected handlerLoading(event: boolean) {\n this.loading.set(event);\n }\n\n private checkViewChange(ignoreScrollBottom: boolean, ignoreValidate = false) {\n this.disableWhenMaxItem.set(false);\n const maxItemInput = this.maxItemInput();\n if (maxItemInput && maxItemInput <= this.itemsSelected().length) {\n this.disableWhenMaxItem.set(true);\n }\n this.timeOutCheckViewChange.set(\n setTimeout(() => {\n const scrollHeight = this.tagsEl()?.nativeElement.scrollHeight;\n if (!isNil(scrollHeight) && this.clientHeight() !== scrollHeight && this.positionList() !== 'top') {\n this.popoverFunctionControl()?.updatePopoverOverlayPosition();\n }\n if (!ignoreScrollBottom && this.tagsEl()?.nativeElement) {\n this.tagsEl().nativeElement.scrollTop = scrollHeight;\n }\n this.clientHeight.set(scrollHeight);\n }, 250)\n );\n if (!ignoreValidate) {\n this.checkValid();\n }\n }\n\n private checkExits(label?: string, id?: string) {\n let itemExits;\n if (!isNil(id) && !`${id}`.includes(this.fakeId()) && this.fieldKey()) {\n itemExits = this.itemsSelected().find((item) => !isNil(get(item, this.fieldKey())) && `${get(item, this.fieldKey())}`.trim() === `${id}`);\n if (itemExits) {\n return { item: itemExits, isItemSelected: true };\n }\n return;\n }\n if (!label) {\n label = `${this.valueInput() || ''}`.trim();\n }\n itemExits = this.itemsSelected().find(\n (item) =>\n (!isNil(get(item, 'fieldLabel')) && get(item, 'fieldLabel').trim() === label?.trim()) ||\n (this.checkExitIsLabelInclude() && get(item, 'fieldLabel').trim().includes(label?.trim())) ||\n this.checkExitByFields()?.some((field) => get(item, field)?.trim() === label?.trim() || get(item, field)?.trim() === escapeHtml(label?.trim() || '') || escapeHtml(get(item, field)?.trim() || ' ') === escapeHtml(label?.trim() || ''))\n );\n if (itemExits) {\n return { item: itemExits, isItemSelected: true };\n }\n itemExits = this.itemsOfList().find(\n (item) =>\n (!isNil(get(item, 'fieldLabel')) && get<any>(item, 'fieldLabel').trim() === label?.trim()) ||\n (this.checkExitIsLabelInclude() && get<any>(item, 'fieldLabel').trim().includes(label?.trim())) ||\n this.checkExitByFields()?.some(\n (field) => get<any>(item, field)?.trim() === label?.trim() || escapeHtml(get<any>(item, field)?.trim() || ' ') === escapeHtml(label?.trim() || '') || get<any>(item, field)?.trim() === escapeHtml(label?.trim() || '')\n )\n );\n if (itemExits) {\n return { item: itemExits, isItemSelected: false };\n }\n\n return;\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event?.item) {\n return;\n }\n if (!isNil(event?.key)) {\n this.popoverFunctionControl()?.removePopoverOverlay();\n }\n if (this.itemsSelected()[0]) {\n this.tempIgnoreEmit.set(true);\n this.handlerRemoveItemSelected(\n {\n stopPropagation: () => {\n return;\n },\n } as Event,\n this.itemsSelected()[0],\n this.itemsSelected()[0].disableItem\n );\n this.tempIgnoreEmit.set(false);\n }\n this.updateItemsSelected([event.item], !!this.itemsSelected()[0]); // Bug #36075\n }\n\n private getFlagEmitSelectedItem(keys: Array<unknown>) {\n if (!this.ignoreEmitWhenSameDataSelected() || keys.length !== this.itemsSelected().length) {\n return false;\n }\n for (const key of keys) {\n if (!this.itemsSelected().some((item) => get(item, this.fieldKey()) === key)) {\n return false;\n }\n }\n return true;\n }\n\n protected async handlerSelectMultiKey(event: IListDataEmitMultiKey | undefined) {\n if (!event) {\n return;\n }\n const keys = [];\n const items: Array<unknown> = [];\n if (event.keys?.length && !event.mapKeys?.length) {\n keys.push(...event.keys);\n }\n const ignoreEmitKeySelectedWhenItemsNotExitsEmpty = this.getFlagEmitSelectedItem(cloneDeep(event.keys ?? []));\n event.mapKeys.forEach((mapKey) => {\n if (isNil(mapKey.key)) {\n return;\n }\n if (mapKey.item) {\n return items.push(mapKey.item);\n }\n if (!Array.isArray(this.itemsSelected())) {\n return keys.push(mapKey.key);\n }\n const item = this.itemsSelected().find((item) => get(item, this.fieldKey()) === mapKey.key);\n if (item) {\n return items.push(item);\n }\n return keys.push(mapKey.key);\n });\n if (keys.length) {\n const resultData: Array<unknown> = await this.getDetailByIds(keys, true);\n items.push(...resultData);\n }\n const messageEmpty = this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID;\n let ignoreValidate = true;\n if (messageEmpty === this.error()?.message) {\n ignoreValidate = false;\n }\n const itemRemove = this.itemsSelected().find((itemSelected) => !isNil(get(itemSelected, this.fieldKey())) && !items.some((item) => get(itemSelected, this.fieldKey()) === get(item, this.fieldKey())));\n this.itemsSelected.update((itemsSelected) => itemsSelected.filter((itemSelected) => isNil(get(itemSelected, this.fieldKey())) || (event.keys.length && items.some((item) => get(itemSelected, this.fieldKey()) === get(item, this.fieldKey())))));\n if (itemRemove) {\n if (this.enterAutoAddTagToList() && !isNil(get(itemRemove, this.fieldKey())) && `${get(itemRemove, this.fieldKey())}`.search(this.fakeId()) >= 0) {\n this.keysHiddenItem.update((items) => [...(items || []), get(itemRemove, this.fieldKey())]);\n }\n }\n if (!event.keys.length) {\n this.checkValid();\n this.keysSelected.set(Array.from(new Set(this.itemsSelected()?.map((item) => get(item, `ref.${this.fieldKey()}`)))));\n this.outSelectMultiItem.emit(this.getItemSelected());\n this.checkViewChange(false, ignoreValidate);\n return;\n }\n this.updateItemsSelected(items, ignoreValidate, ignoreEmitKeySelectedWhenItemsNotExitsEmpty);\n this.checkValid();\n }\n\n private async getDetailByIds(keys: Array<unknown>, isResponseData?: boolean): Promise<Array<unknown>> {\n const httpRequestDetailItemByIds = this.httpRequestDetailItemByIds();\n if (!httpRequestDetailItemByIds || this.loadingDetail() || !(keys instanceof Array) || !keys.length) {\n return [];\n }\n this.updateLoadingDetail(true);\n const cloneHttpDetailConfig = cloneDeep(httpRequestDetailItemByIds);\n try {\n const { argumentsValue, guideAutoUpdateArgumentsValue } = cloneHttpDetailConfig;\n if (!guideAutoUpdateArgumentsValue?.detailById) {\n return [];\n }\n guideAutoUpdateArgumentsValue.detailById.fieldGetValue = 'keys';\n this.httpRequestService.updateArguments(argumentsValue, { keys: keys }, {}, '', false, false, guideAutoUpdateArgumentsValue);\n const result = (await this.httpRequestService.callApi(cloneHttpDetailConfig)) as IHttpResponse<Array<unknown>>;\n if (!isResponseData) {\n this.updateItemsSelected(result.data || []);\n this.updateLoadingDetail(false);\n return [];\n }\n this.updateLoadingDetail(false);\n return result.data || [];\n } catch (error) {\n console.log(error);\n this.updateLoadingDetail(false);\n }\n return [];\n }\n\n private async checkValid() {\n const valid = !!this.itemsSelected()?.length;\n const stateError = !!this.error();\n this.error.set(undefined);\n if (this.validRequired() && !valid) {\n this.error.set({ ...this.validRequired(), message: this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID });\n }\n if (!this.error()) {\n this.checkPattern(this.itemsSelected());\n this.checkMaxItemSelectedValid();\n }\n if (!this.tempIgnoreEmit()) {\n this.outValidEvent.emit(!this.error());\n }\n if (stateError !== !!this.error()) {\n this.popoverFunctionControl()?.updatePopoverOverlayPosition();\n }\n return !this.error();\n }\n\n private checkMaxItemSelectedValid() {\n const validMaxItemSelected = this.validMaxItemSelected();\n if (validMaxItemSelected && this.itemsSelected().length > validMaxItemSelected.value) {\n this.error.set({ ...validMaxItemSelected, message: validMaxItemSelected.message || ERROR_MESSAGE_MAX_VALID, interpolateParams: { value: validMaxItemSelected.value } });\n return false;\n }\n return true;\n }\n\n private checkPattern(items: Array<unknown>): boolean {\n const validPattern = this.validPattern();\n if (!validPattern?.length || !items?.length) {\n return true;\n }\n for (const valid of validPattern) {\n if (valid.pattern && items.some((item) => !valid.pattern.test(get(item, this.fieldLabel())))) {\n this.error.set({ ...valid, message: valid.message || ERROR_MESSAGE_PATTEN_VALID });\n return false;\n }\n }\n return true;\n }\n\n protected handlerClickButtonOther(event: IButton) {\n this.outClickButtonOther.emit(event);\n }\n\n private getItemSelected(): Array<unknown> {\n return this.itemsSelected().map((item) => {\n const itemMap = { ...item };\n if (!isNil(get(itemMap, this.fieldKey())) && `${get(itemMap, this.fieldKey())}`.search(this.fakeId()) === 0) {\n set(itemMap, this.fieldKey(), '');\n }\n return itemMap;\n });\n }\n\n protected async resetToDefaultDataSelected(itemSelected?: Array<unknown>) {\n if (itemSelected && Array.isArray(itemSelected)) {\n this.itemsSelected.set([]);\n this.updateItemsSelected(itemSelected);\n return;\n }\n if (!this.fieldKey()) {\n return;\n }\n const defaultKeysSelected = this.defaultKeysSelected();\n if (defaultKeysSelected && Array.isArray(defaultKeysSelected)) {\n this.itemsSelected.set([]);\n this.getDetailByIds(defaultKeysSelected);\n return;\n }\n const defaultItemsSelected = this.defaultItemsSelected();\n if (defaultItemsSelected && Array.isArray(defaultItemsSelected)) {\n this.itemsSelected.set([]);\n this.updateItemsSelected(defaultItemsSelected);\n }\n }\n\n protected handlerFunctionControlList(event: IListFunctionControlEvent) {\n this.listFunctionControl.set(event);\n }\n\n protected async focusInput() {\n this.inputFunctionControl()?.focus();\n }\n\n protected handlerChangeFlagMouse(event: IFlagMouse) {\n this.outChangStageFlagMouse.emit(event);\n }\n\n protected handlerChangStageFlagMouse(flag: IFlagMouse) {\n this.flagMouse.set(flag);\n }\n\n protected handlerClickTagItem(event: Event) {\n if (!this.showList()) {\n return;\n }\n event.stopPropagation();\n this.flagMouse.set({ isMouseEnter: true, isMouseEnterContent: true });\n }\n\n private async resetError() {\n this.error.set(undefined);\n }\n\n private updateLoadingDetail(event: boolean) {\n this.loadingDetail.set(event);\n this.outLoadingGetDetailSelected.emit(event);\n }\n\n private async updateItemSelectedDisable() {\n const getDisableItem = this.config()?.getDisableItem;\n if (!getDisableItem) {\n return;\n }\n this.itemsSelected.update((itemsSelected) => itemsSelected.map((item) => ({ ...item, disableItem: getDisableItem(item) })));\n }\n\n private async refreshListData() {\n this.listFunctionControl()?.refresh();\n }\n\n ngOnDestroy(): void {\n if (this.timeOutFlag()) clearTimeout(this.timeOutFlag());\n if (this.timeOutChangeSearch()) clearTimeout(this.timeOutChangeSearch());\n if (this.timeOutCheckViewChange()) clearTimeout(this.timeOutCheckViewChange());\n if (this.timeoutClickOutside()) clearTimeout(this.timeoutClickOutside());\n\n if (this.keySearchChangeSub()) this.keySearchChangeSub()?.unsubscribe();\n }\n}\n","<div class=\"flex flex-col w-full h-full\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable() || loading() || loadingDetail()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable() || loading() || loadingDetail()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleActive]=\"labelConfig.toggleDisable || disable() || loading() || loadingDetail()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <libs_ui-components-popover\n class=\"w-full h-full\"\n [ignoreShowPopover]=\"disable() || readonly() || !!config()?.ignoreShowList || false\"\n [ignoreCursorPointerModeLikeClick]=\"true\"\n [elementRefCustom]=\"tagsEl\"\n [mode]=\"!config()?.ignoreInput ? 'click' : 'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: config()?.animationConfig || {},\n zIndex: zIndex(),\n widthByParent: true,\n parentBorderWidth: parentBorderWidth() ?? 0,\n maxHeight: 2048,\n maxWidth: 2048,\n direction: config()?.directionList || 'bottom',\n directionDistance: 2,\n template: !showListBellow() ? listViewEl : undefined,\n whiteTheme: true,\n ignoreArrow: true,\n classInclude: 'rounded-[4px] ' + classIncludePopover() + (!listConfig()?.ignoreShowDataWhenNotSearch || keySearch() ? ' libs-ui-border-general' : ''),\n position: { mode: 'start', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outEventPopoverContent)=\"handlerPopoverContentEvent($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\">\n <div\n class=\"relative\"\n [class.cursor-pointer]=\"!disable() && !readonly()\"\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 @if (config()?.uiLikeDropdown) {\n <i\n class=\"flex text-[16px] absolute right-[16px] top-[8px] libs-ui-icon-move-right rotate-90 z-[1]\"\n [class.text-[#6a7383]]=\"!readonly() && !disable()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n <div\n #tagsEl\n [class]=\"'libs-ui-tags ' + (config()?.classInclude || '') + (readonly() ? config()?.classCustomWhenReadOnly || ' libs-ui-readonly' : '')\"\n [class.libs-ui-tags-not-popup]=\"(!showList() && !showBorderActiveWhenFocusInput()) || (!focus() && showBorderActiveWhenFocusInput())\"\n [class.libs-ui-tags-error]=\"!!error() && !config()?.ignoreShowError\"\n [class.!pr-[32px]]=\"config()?.uiLikeDropdown\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.libs-ui-border-primary-general]=\"focus() && showBorderActiveWhenFocusInput()\"\n LibsUiComponentsClickOutsideDirective\n LibsUiComponentsScrollOverlayDirective\n (outOutside)=\"handlerClickOutside($event)\">\n @for (item of itemsSelected(); track item[fieldKey()]) {\n <div\n LibsUiComponentsPopoverDirective\n [type]=\"item?.tooltip?.type || 'other'\"\n [config]=\"item?.tooltip?.config || { zIndex: zIndex() + 2 }\"\n [ignoreShowPopover]=\"!item?.tooltip || item.tooltip.ignoreShowPopover\"\n [ngStyle]=\"item?.bullet || item?.ngStyles\"\n [class]=\"classIncludeTagItem() || ''\"\n [class.libs-ui-tags-readonly]=\"item.disableItem\"\n [class.libs-ui-tags-item]=\"!item.disableItem\"\n [class.cursor-default]=\"disable() || readonly()\"\n (pointerdown)=\"handlerClickTagItem($event)\">\n @if (fieldGetImage() || config()?.fieldGetImage; as fieldGetImage) {\n <div class=\"flex items-center justify-center h-full\">\n <libs_ui-components-avatar\n [classInclude]=\"classAvatarInclude() || config()?.classAvatarInclude || 'mr-[8px]'\"\n [size]=\"imageSize() || config()?.imageSize\"\n [linkAvatar]=\"item[fieldGetImage]\"\n [linkAvatarError]=\"linkImageError() || config()?.linkImageError\"\n [idGenColor]=\"item[fieldGetTextAvatar() || config()?.fieldGetTextAvatar || '']\"\n [getLastTextAfterSpace]=\"getLastTextAfterSpace() || config()?.getLastTextAfterSpace\"\n [textAvatar]=\"item[fieldGetTextAvatar() || config()?.fieldGetTextAvatar || 'user']\" />\n </div>\n }\n @let constHtmlLabel = item.fieldLabel || ' ';\n <span\n class=\"libs-ui-font-h6r\"\n [innerHtml]=\"constHtmlLabel | translate\"></span>\n @if (!disable() && !item.disableItem && !readonly()) {\n <div class=\"flex items-center justify-center ml-[8px]\">\n @let constHtmlStyle = item?.bullet || item?.ngStyles;\n <i\n #iconCloseEl\n [attr.specificStyle]=\"!!constHtmlStyle\"\n [class]=\"'flex text-[16px] ' + (classIconRemoveTagItem() || 'libs-ui-icon-close')\"\n [class.cursor-pointer]=\"!disable() && !loading() && !loadingDetail()\"\n [class.pointer-events-none]=\"disable() || loading() || loadingDetail()\"\n [ngStyle]=\"constHtmlStyle | LibsUiComponentsTagsGetColorPipe: iconCloseEl\"\n (pointerdown)=\"handlerRemoveItemSelected($event, item, false, true)\"></i>\n </div>\n }\n </div>\n }\n @if (!singleSelected() || (singleSelected() && !itemsSelected().length)) {\n @if (!config()?.ignoreInput && !config()?.uiLikeDropdown && (!hiddenInputWhenReadonly() || (hiddenInputWhenReadonly() && !readonly()))) {\n <libs_ui-components-inputs-input\n class=\"grow\"\n [class.mb-[4px]]=\"itemsSelected().length\"\n [classInclude]=\"'w-full bg-transparent ' + (config()?.classInputInclude || 'px-[4px] min-w-[30px]')\"\n [defaultHeight]=\"24\"\n [placeholder]=\"readonly() ? '' : placeholder() || 'i18n_import_content'\"\n [noBorder]=\"true\"\n [(value)]=\"valueInput\"\n [disable]=\"disable() || loading() || loadingDetail() || disableWhenMaxItem()\"\n [readonly]=\"readonly()\"\n (outEnterEvent)=\"handlerEnterEvent()\"\n (valueChange)=\"handlerValueChangeSearch($event)\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurEvent($event)\"\n (outFunctionsControl)=\"handlerInputFunctionControl($event)\" />\n }\n @if (config()?.ignoreInput && config()?.uiLikeDropdown && !itemsSelected().length) {\n <div\n class=\"flex items-center pb-[4px] pt-[2px] ml-[11px] libs-ui-font-h5r\"\n [class.text-[#9ca2ad]]=\"disable()\">\n @let constHtmlPlaceholder = placeholder() || 'i18n_select_value';\n {{ constHtmlPlaceholder | translate }}\n </div>\n }\n }\n </div>\n @if (error() && !config()?.ignoreShowError) {\n <div class=\"text-[#ee2d41] libs-ui-font-h7r mt-[8px]\">\n @let constHtmlMessage = error()?.message || ' ';\n {{ constHtmlMessage | translate: error()?.interpolateParams || {} }}\n </div>\n }\n </div>\n </libs_ui-components-popover>\n</div>\n@if (showListBellow()) {\n <ng-container *ngTemplateOutlet=\"listViewEl\"></ng-container>\n}\n<ng-template #listViewEl>\n @if (listConfig(); as listConfig) {\n <libs_ui-components-list\n [searchConfig]=\"listSearchConfig() || { classInclude: 'hidden', iconLeftClass: 'hidden' }\"\n [isSearchOnline]=\"isSearchOnline()\"\n [zIndex]=\"zIndex()\"\n [keySearch]=\"keySearch()\"\n [config]=\"listConfig\"\n [disable]=\"disable() || loadingDetail() || disableWhenMaxItem()\"\n [searchPadding]=\"listSearchPadding()\"\n [maxItemShow]=\"listMaxItemShow() || 6\"\n [multiKeySelected]=\"keysSelected()\"\n [clickExactly]=\"false\"\n [keysHiddenItem]=\"keysHiddenItem()\"\n [keysDisableItem]=\"listKeyDisable()\"\n [dividerClassInclude]=\"listDividerClassInclude() ?? 'hidden'\"\n [buttonsOther]=\"listButtonsOther()\"\n [backgroundListCustom]=\"listBackgroundListCustom()\"\n [functionGetItemsAutoAddList]=\"functionGetItemAutoAddList()\"\n [hiddenInputSearch]=\"listHiddenInputSearchWhenHasSearchConfig()\"\n (outFunctionsControl)=\"handlerFunctionControlList($event)\"\n (outSelectKey)=\"handlerSelectedKey($event)\"\n (outSelectMultiKey)=\"handlerSelectMultiKey($event)\"\n (outChangeView)=\"handlerDataChange($event)\"\n (outClickButtonOther)=\"handlerClickButtonOther($event)\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outLoading)=\"handlerLoading($event)\" />\n }\n</ng-template>\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,25 +1,25 @@
1
1
  {
2
2
  "name": "@libs-ui/components-tags",
3
- "version": "0.2.356-42",
3
+ "version": "0.2.356-43",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",
7
- "@libs-ui/components-avatar": "0.2.356-42",
8
- "@libs-ui/components-popover": "0.2.356-42",
9
- "@libs-ui/utils": "0.2.356-42",
10
- "@libs-ui/components-buttons-button": "0.2.356-42",
11
- "@libs-ui/components-dropdown": "0.2.356-42",
12
- "@libs-ui/components-inputs-input": "0.2.356-42",
13
- "@libs-ui/components-inputs-search": "0.2.356-42",
14
- "@libs-ui/components-inputs-valid": "0.2.356-42",
15
- "@libs-ui/components-label": "0.2.356-42",
16
- "@libs-ui/components-list": "0.2.356-42",
17
- "@libs-ui/interfaces-types": "0.2.356-42",
18
- "@libs-ui/services-http-request": "0.2.356-42",
7
+ "@libs-ui/components-avatar": "0.2.356-43",
8
+ "@libs-ui/components-popover": "0.2.356-43",
9
+ "@libs-ui/utils": "0.2.356-43",
10
+ "@libs-ui/components-buttons-button": "0.2.356-43",
11
+ "@libs-ui/components-dropdown": "0.2.356-43",
12
+ "@libs-ui/components-inputs-input": "0.2.356-43",
13
+ "@libs-ui/components-inputs-search": "0.2.356-43",
14
+ "@libs-ui/components-inputs-valid": "0.2.356-43",
15
+ "@libs-ui/components-label": "0.2.356-43",
16
+ "@libs-ui/components-list": "0.2.356-43",
17
+ "@libs-ui/interfaces-types": "0.2.356-43",
18
+ "@libs-ui/services-http-request": "0.2.356-43",
19
19
  "@ngx-translate/core": "^15.0.0",
20
20
  "rxjs": "~7.8.0",
21
- "@libs-ui/components-click-outside": "0.2.356-42",
22
- "@libs-ui/components-scroll-overlay": "0.2.356-42"
21
+ "@libs-ui/components-click-outside": "0.2.356-43",
22
+ "@libs-ui/components-scroll-overlay": "0.2.356-43"
23
23
  },
24
24
  "sideEffects": false,
25
25
  "module": "fesm2022/libs-ui-components-tags.mjs",