@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
|
-
>
|
|
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à
|
|
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
|
-
|
|
9
|
+
## Tính năng
|
|
10
10
|
|
|
11
|
-
- ✅ **Multiple Selection**: Chọn nhiều mục
|
|
12
|
-
- ✅ **Single Selection**: Chế độ chọn một mục duy nhất
|
|
13
|
-
- ✅ **
|
|
14
|
-
- ✅ **
|
|
15
|
-
- ✅ **
|
|
16
|
-
- ✅ **
|
|
17
|
-
- ✅ **
|
|
18
|
-
- ✅ **
|
|
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
|
|
23
|
-
- Khi
|
|
24
|
-
- Thay thế
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
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
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
|
92
|
-
|
|
93
|
-
| `[
|
|
94
|
-
| `[
|
|
95
|
-
| `[
|
|
96
|
-
| `[
|
|
97
|
-
| `[
|
|
98
|
-
| `[
|
|
99
|
-
| `[
|
|
100
|
-
| `[
|
|
101
|
-
| `[
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
|
106
|
-
|
|
|
107
|
-
| `
|
|
108
|
-
| `(
|
|
109
|
-
| `
|
|
110
|
-
| `
|
|
111
|
-
| `
|
|
112
|
-
| `
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
621
|
+
## Lưu ý quan trọng
|
|
138
622
|
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
640
|
+
npx nx serve core-ui
|
|
149
641
|
```
|
|
150
642
|
|
|
151
|
-
|
|
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,
|
|
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-
|
|
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-
|
|
8
|
-
"@libs-ui/components-popover": "0.2.356-
|
|
9
|
-
"@libs-ui/utils": "0.2.356-
|
|
10
|
-
"@libs-ui/components-buttons-button": "0.2.356-
|
|
11
|
-
"@libs-ui/components-dropdown": "0.2.356-
|
|
12
|
-
"@libs-ui/components-inputs-input": "0.2.356-
|
|
13
|
-
"@libs-ui/components-inputs-search": "0.2.356-
|
|
14
|
-
"@libs-ui/components-inputs-valid": "0.2.356-
|
|
15
|
-
"@libs-ui/components-label": "0.2.356-
|
|
16
|
-
"@libs-ui/components-list": "0.2.356-
|
|
17
|
-
"@libs-ui/interfaces-types": "0.2.356-
|
|
18
|
-
"@libs-ui/services-http-request": "0.2.356-
|
|
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-
|
|
22
|
-
"@libs-ui/components-scroll-overlay": "0.2.356-
|
|
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",
|