@seniorsistemas/angular-components 19.9.6 → 19.9.7-develop-ad878012
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/chips/lib/chips/chip-item/chip-item.component.d.ts +10 -4
- package/chips/lib/chips/chips/chips.component.d.ts +0 -1
- package/chips/public-api.d.ts +3 -2
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -10
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +4 -13
- package/esm2022/chips/public-api.mjs +4 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +6 -4
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
- package/esm2022/shared/lib/shared/helpers.mjs +24 -1
- package/esm2022/token-list/lib/token-list/token-list.component.mjs +26 -7
- package/esm2022/token-list/lib/token-list/token-list.module.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +20 -22
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +9 -8
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +24 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +26 -7
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
- package/package.json +1 -1
- package/shared/lib/shared/helpers.d.ts +23 -0
- package/token-list/lib/token-list/token-list.component.d.ts +7 -3
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewChildren, } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { ChipItemComponent } from '@seniorsistemas/angular-components/chips';
|
|
4
|
+
import { restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
6
|
/**
|
|
5
7
|
* @description Componente de lista de tokens (etiquetas) clicáveis e opcionalmente
|
|
@@ -18,6 +20,9 @@ import * as i0 from "@angular/core";
|
|
|
18
20
|
*/
|
|
19
21
|
export class TokenListComponent {
|
|
20
22
|
static nextId = 0;
|
|
23
|
+
destroyRef = inject(DestroyRef);
|
|
24
|
+
pendingFocusIndex = null;
|
|
25
|
+
chipItems;
|
|
21
26
|
/** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
|
|
22
27
|
id = `s-token-list-${TokenListComponent.nextId++}`;
|
|
23
28
|
/** @description Lista de tokens exibidos. Campo obrigatório. */
|
|
@@ -32,23 +37,37 @@ export class TokenListComponent {
|
|
|
32
37
|
tokenSelected = new EventEmitter();
|
|
33
38
|
/** @description Emitido quando o usuário remove um token não desabilitado. */
|
|
34
39
|
tokenRemoved = new EventEmitter();
|
|
40
|
+
ngAfterViewInit() {
|
|
41
|
+
this.chipItems.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
42
|
+
if (this.pendingFocusIndex === null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const focusIndex = this.pendingFocusIndex;
|
|
46
|
+
this.pendingFocusIndex = null;
|
|
47
|
+
restoreFocusAfterRemoval(this.chipItems.toArray(), focusIndex);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
35
50
|
onTokenSelected(token) {
|
|
36
51
|
if (!token.disabled) {
|
|
37
52
|
this.tokenSelected.next(token);
|
|
38
53
|
}
|
|
39
54
|
}
|
|
40
|
-
onTokenRemoved(token) {
|
|
55
|
+
onTokenRemoved(token, index) {
|
|
41
56
|
if (!token.disabled) {
|
|
57
|
+
this.pendingFocusIndex = index;
|
|
42
58
|
this.tokenRemoved.next(token);
|
|
43
59
|
}
|
|
44
60
|
}
|
|
45
61
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TokenListComponent, isStandalone: true, selector: "s-token-list", inputs: { id: "id", tokens: "tokens", removableTokens: "removableTokens", hidePointerEvents: "hidePointerEvents", removeIconClass: "removeIconClass" }, outputs: { tokenSelected: "tokenSelected", tokenRemoved: "tokenRemoved" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"token-list\"\n>\n @for (token of tokens; track $index) {\n <
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TokenListComponent, isStandalone: true, selector: "s-token-list", inputs: { id: "id", tokens: "tokens", removableTokens: "removableTokens", hidePointerEvents: "hidePointerEvents", removeIconClass: "removeIconClass" }, outputs: { tokenSelected: "tokenSelected", tokenRemoved: "tokenRemoved" }, viewQueries: [{ propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"token-list inline-flex max-w-full flex-wrap items-center gap-2 px-[10px] py-0 normal-case\"\n>\n @for (token of tokens; track $index) {\n <s-chip-item\n [dataRender]=\"token.label\"\n [itemIndex]=\"$index\"\n [disabled]=\"token.disabled ?? false\"\n [showTooltip]=\"false\"\n [removeIconClass]=\"removeIconClass\"\n [hidePointerEvents]=\"hidePointerEvents\"\n [showRemove]=\"removableTokens && !token.notRemovable\"\n (clickRemove)=\"onTokenRemoved(token, $index)\"\n (chipClicked)=\"onTokenSelected(token)\"\n >\n </s-chip-item>\n }\n</div>\n\n", dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip", "showRemove", "removeIconClass", "hidePointerEvents"], outputs: ["clickRemove", "chipClicked"] }] });
|
|
47
63
|
}
|
|
48
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, decorators: [{
|
|
49
65
|
type: Component,
|
|
50
|
-
args: [{ selector: 's-token-list', standalone: true, imports: [
|
|
51
|
-
}], propDecorators: {
|
|
66
|
+
args: [{ selector: 's-token-list', standalone: true, imports: [ChipItemComponent], template: "<div\n [id]=\"id\"\n class=\"token-list inline-flex max-w-full flex-wrap items-center gap-2 px-[10px] py-0 normal-case\"\n>\n @for (token of tokens; track $index) {\n <s-chip-item\n [dataRender]=\"token.label\"\n [itemIndex]=\"$index\"\n [disabled]=\"token.disabled ?? false\"\n [showTooltip]=\"false\"\n [removeIconClass]=\"removeIconClass\"\n [hidePointerEvents]=\"hidePointerEvents\"\n [showRemove]=\"removableTokens && !token.notRemovable\"\n (clickRemove)=\"onTokenRemoved(token, $index)\"\n (chipClicked)=\"onTokenSelected(token)\"\n >\n </s-chip-item>\n }\n</div>\n\n" }]
|
|
67
|
+
}], propDecorators: { chipItems: [{
|
|
68
|
+
type: ViewChildren,
|
|
69
|
+
args: [ChipItemComponent]
|
|
70
|
+
}], id: [{
|
|
52
71
|
type: Input
|
|
53
72
|
}], tokens: [{
|
|
54
73
|
type: Input,
|
|
@@ -64,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
64
83
|
}], tokenRemoved: [{
|
|
65
84
|
type: Output
|
|
66
85
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQUdyRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU9ILE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFUixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLGlCQUFpQixHQUFrQixJQUFJLENBQUM7SUFHL0IsU0FBUyxDQUFnQztJQUUxRCxzR0FBc0c7SUFFL0YsRUFBRSxHQUFHLGdCQUFnQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBRTFELGdFQUFnRTtJQUV6RCxNQUFNLENBQVk7SUFFekIsMEVBQTBFO0lBRW5FLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFFL0IsMEdBQTBHO0lBRW5HLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUVqQyxzRkFBc0Y7SUFFL0UsZUFBZSxHQUFHLGNBQWMsQ0FBQztJQUV4QyxnRkFBZ0Y7SUFFekUsYUFBYSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWhFLDhFQUE4RTtJQUV2RSxZQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFeEQsZUFBZTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM1RSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztZQUNYLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5Qix3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO3dHQTNEUSxrQkFBa0I7NEZBQWxCLGtCQUFrQix5VUFNYixpQkFBaUIsZ0RDNUNuQyxvc0JBb0JBLDRDRGdCYyxpQkFBaUI7OzRGQUVsQixrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0ksY0FBYyxjQUVaLElBQUksV0FDUCxDQUFDLGlCQUFpQixDQUFDOzhCQVNYLFNBQVM7c0JBRHpCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUt4QixFQUFFO3NCQURSLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixNQUFNO2dCQUtBLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIERlc3Ryb3lSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBpbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW1wb3J0IHsgQ2hpcEl0ZW1Db21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzJztcclxuaW1wb3J0IHsgcmVzdG9yZUZvY3VzQWZ0ZXJSZW1vdmFsIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xyXG5pbXBvcnQgeyBJVG9rZW4gfSBmcm9tICcuL21vZGVscy90b2tlbic7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgbGlzdGEgZGUgdG9rZW5zIChldGlxdWV0YXMpIGNsaWPDoXZlaXMgZSBvcGNpb25hbG1lbnRlXHJcbiAqIHJlbW92w612ZWlzLiBFbWl0ZSBldmVudG9zIGFvIHNlbGVjaW9uYXIgb3UgcmVtb3ZlciB1bSB0b2tlbi5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy10b2tlbi1saXN0XHJcbiAqICAgW3Rva2Vuc109XCJsaXN0YURlVG9rZW5zXCJcclxuICogICBbcmVtb3ZhYmxlVG9rZW5zXT1cInRydWVcIlxyXG4gKiAgICh0b2tlblNlbGVjdGVkKT1cIm9uVG9rZW5TZWxlY2lvbmFkbygkZXZlbnQpXCJcclxuICogICAodG9rZW5SZW1vdmVkKT1cIm9uVG9rZW5SZW1vdmlkbygkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBTdW1tYXJ5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy10b2tlbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b2tlbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ2hpcEl0ZW1Db21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9rZW5MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gICAgcHJpdmF0ZSBwZW5kaW5nRm9jdXNJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihDaGlwSXRlbUNvbXBvbmVudClcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpcEl0ZW1zITogUXVlcnlMaXN0PENoaXBJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIElkZW50aWZpY2Fkb3Igw7puaWNvIGRvIGNvbXBvbmVudGUgbm8gRE9NLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpZCA9IGBzLXRva2VuLWxpc3QtJHtUb2tlbkxpc3RDb21wb25lbnQubmV4dElkKyt9YDtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIExpc3RhIGRlIHRva2VucyBleGliaWRvcy4gQ2FtcG8gb2JyaWdhdMOzcmlvLiAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyB0b2tlbnMhOiBJVG9rZW5bXTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4aWJlIG8gYm90w6NvIGRlIHJlbW/Dp8OjbyBlbSBjYWRhIHRva2VuLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZW1vdmFibGVUb2tlbnMgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIHJlbW92ZSBvcyBldmVudG9zIGRlIHBvbnRlaXJvIChob3Zlci9jbGlxdWUpIGRvcyB0b2tlbnMuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhpZGVQb2ludGVyRXZlbnRzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGFzc2UgZG8gw61jb25lIGRvIGJvdMOjbyBkZSByZW1vdmVyIHRva2VuLiBAZGVmYXVsdCAnZmFyIGZhLXRpbWVzJyAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZW1vdmVJY29uQ2xhc3MgPSAnZmFyIGZhLXRpbWVzJztcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2xpY2EgZW0gdW0gdG9rZW4gbsOjbyBkZXNhYmlsaXRhZG8uICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB0b2tlblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gcmVtb3ZlIHVtIHRva2VuIG7Do28gZGVzYWJpbGl0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdG9rZW5SZW1vdmVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hpcEl0ZW1zLmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZ0ZvY3VzSW5kZXggPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBmb2N1c0luZGV4ID0gdGhpcy5wZW5kaW5nRm9jdXNJbmRleDtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRm9jdXNJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1c0FmdGVyUmVtb3ZhbCh0aGlzLmNoaXBJdGVtcy50b0FycmF5KCksIGZvY3VzSW5kZXgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRva2VuU2VsZWN0ZWQodG9rZW46IElUb2tlbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdG9rZW4uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy50b2tlblNlbGVjdGVkLm5leHQodG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25Ub2tlblJlbW92ZWQodG9rZW46IElUb2tlbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdG9rZW4uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRm9jdXNJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVtb3ZlZC5uZXh0KHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdlxuICAgIFtpZF09XCJpZFwiXG4gICAgY2xhc3M9XCJ0b2tlbi1saXN0IGlubGluZS1mbGV4IG1heC13LWZ1bGwgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiBweC1bMTBweF0gcHktMCBub3JtYWwtY2FzZVwiXG4+XG4gICAgQGZvciAodG9rZW4gb2YgdG9rZW5zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHMtY2hpcC1pdGVtXG4gICAgICAgICAgICBbZGF0YVJlbmRlcl09XCJ0b2tlbi5sYWJlbFwiXG4gICAgICAgICAgICBbaXRlbUluZGV4XT1cIiRpbmRleFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidG9rZW4uZGlzYWJsZWQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtyZW1vdmVJY29uQ2xhc3NdPVwicmVtb3ZlSWNvbkNsYXNzXCJcbiAgICAgICAgICAgIFtoaWRlUG9pbnRlckV2ZW50c109XCJoaWRlUG9pbnRlckV2ZW50c1wiXG4gICAgICAgICAgICBbc2hvd1JlbW92ZV09XCJyZW1vdmFibGVUb2tlbnMgJiYgIXRva2VuLm5vdFJlbW92YWJsZVwiXG4gICAgICAgICAgICAoY2xpY2tSZW1vdmUpPVwib25Ub2tlblJlbW92ZWQodG9rZW4sICRpbmRleClcIlxuICAgICAgICAgICAgKGNoaXBDbGlja2VkKT1cIm9uVG9rZW5TZWxlY3RlZCh0b2tlbilcIlxuICAgICAgICA+XG4gICAgICAgIDwvcy1jaGlwLWl0ZW0+XG4gICAgfVxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export class TokenListModule {
|
|
5
5
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
6
6
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, imports: [TokenListComponent], exports: [TokenListComponent] });
|
|
7
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule });
|
|
7
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, imports: [TokenListComponent] });
|
|
8
8
|
}
|
|
9
9
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListModule, decorators: [{
|
|
10
10
|
type: NgModule,
|
|
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
13
13
|
exports: [TokenListComponent],
|
|
14
14
|
}]
|
|
15
15
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLGVBQWU7d0dBQWYsZUFBZTt5R0FBZixlQUFlLFlBSGQsa0JBQWtCLGFBQ2xCLGtCQUFrQjt5R0FFbkIsZUFBZSxZQUhkLGtCQUFrQjs7NEZBR25CLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUb2tlbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL3Rva2VuLWxpc3QuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbVG9rZW5MaXN0Q29tcG9uZW50XSxcclxuICAgIGV4cG9ydHM6IFtUb2tlbkxpc3RDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9rZW5MaXN0TW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, ViewChild, inject, ChangeDetectorRef, forwardRef, ElementRef, ContentChildren, ViewChildren, NgModule } from '@angular/core';
|
|
2
|
+
import { input, EventEmitter, Component, Input, Output, ViewChild, inject, ChangeDetectorRef, forwardRef, ElementRef, ContentChildren, ViewChildren, NgModule } from '@angular/core';
|
|
3
3
|
import { __decorate } from 'tslib';
|
|
4
4
|
import * as i1$1 from '@angular/forms';
|
|
5
5
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
6
6
|
import { KeyFilter } from 'primeng/keyfilter';
|
|
7
7
|
import { TemplateDirective } from '@seniorsistemas/angular-components/template';
|
|
8
8
|
import { randomHash, isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
|
|
9
|
-
import { CheckDisabled } from '@seniorsistemas/angular-components/shared';
|
|
9
|
+
import { CheckDisabled, restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';
|
|
10
10
|
import { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';
|
|
11
11
|
import { NgTemplateOutlet, NgClass } from '@angular/common';
|
|
12
12
|
import * as i1 from '@ngx-translate/core';
|
|
@@ -21,7 +21,7 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
21
21
|
class ChipItemComponent {
|
|
22
22
|
/** @description Conteúdo a ser exibido no chip (string ou objeto). Campo obrigatório. */
|
|
23
23
|
dataRender;
|
|
24
|
-
/** @description Chave do objeto usada para exibição quando `dataRender` for um objeto.
|
|
24
|
+
/** @description Chave do objeto usada para exibição quando `dataRender` for um objeto. */
|
|
25
25
|
objectField;
|
|
26
26
|
/** @description Desabilita os eventos de clique do chip. Campo obrigatório. */
|
|
27
27
|
disabled = false;
|
|
@@ -31,14 +31,23 @@ class ChipItemComponent {
|
|
|
31
31
|
itemIndex = -1;
|
|
32
32
|
/** @description Habilita o tooltip para chips com texto truncado. Campo obrigatório. */
|
|
33
33
|
showTooltip = true;
|
|
34
|
-
/** @description Limite de caracteres exibidos antes de truncar o texto do chip
|
|
34
|
+
/** @description Limite de caracteres exibidos antes de truncar o texto do chip.*/
|
|
35
35
|
maxLengthRenderWithoutTooltip = 20;
|
|
36
|
+
/** @description Controla a exibição do botão de remoção do chip. */
|
|
37
|
+
showRemove = input(true);
|
|
38
|
+
/** @description Classe do ícone do botão de remoção do chip. @default 'fas fa-times' */
|
|
39
|
+
removeIconClass = input('fas fa-times');
|
|
40
|
+
/** @description Controla a exibição de eventos de ponteiro no chip. @default false */
|
|
41
|
+
hidePointerEvents = input(false);
|
|
36
42
|
/** @description Emitido ao clicar no botão de remoção do chip. */
|
|
37
43
|
clickRemove = new EventEmitter();
|
|
38
44
|
/** @description Emitido ao clicar sobre o chip (fora do botão de remoção). */
|
|
39
45
|
chipClicked = new EventEmitter();
|
|
40
46
|
chipElement;
|
|
41
47
|
clickedRemove($event) {
|
|
48
|
+
if (!this.showRemove()) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
42
51
|
$event.preventDefault();
|
|
43
52
|
this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });
|
|
44
53
|
}
|
|
@@ -57,7 +66,7 @@ class ChipItemComponent {
|
|
|
57
66
|
return this.objectField ? this.dataRender[this.objectField] || '' : this.dataRender || '';
|
|
58
67
|
}
|
|
59
68
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChipItemComponent, isStandalone: true, selector: "s-chip-item", inputs: { dataRender: "dataRender", objectField: "objectField", disabled: "disabled", templateRef: "templateRef", itemIndex: "itemIndex", showTooltip: "showTooltip", maxLengthRenderWithoutTooltip: "maxLengthRenderWithoutTooltip" }, outputs: { clickRemove: "clickRemove", chipClicked: "chipClicked" }, viewQueries: [{ propertyName: "chipElement", first: true, predicate: ["chipElement"], descendants: true }], ngImport: i0, template: "<ng-template #itemRender>\n <div\n #chipElement\n class=\"rounded-medium border border-grayscale-50 bg-grayscale-10
|
|
69
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChipItemComponent, isStandalone: true, selector: "s-chip-item", inputs: { dataRender: { classPropertyName: "dataRender", publicName: "dataRender", isSignal: false, isRequired: true, transformFunction: null }, objectField: { classPropertyName: "objectField", publicName: "objectField", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: true, transformFunction: null }, templateRef: { classPropertyName: "templateRef", publicName: "templateRef", isSignal: false, isRequired: false, transformFunction: null }, itemIndex: { classPropertyName: "itemIndex", publicName: "itemIndex", isSignal: false, isRequired: true, transformFunction: null }, showTooltip: { classPropertyName: "showTooltip", publicName: "showTooltip", isSignal: false, isRequired: true, transformFunction: null }, maxLengthRenderWithoutTooltip: { classPropertyName: "maxLengthRenderWithoutTooltip", publicName: "maxLengthRenderWithoutTooltip", isSignal: false, isRequired: false, transformFunction: null }, showRemove: { classPropertyName: "showRemove", publicName: "showRemove", isSignal: true, isRequired: false, transformFunction: null }, removeIconClass: { classPropertyName: "removeIconClass", publicName: "removeIconClass", isSignal: true, isRequired: false, transformFunction: null }, hidePointerEvents: { classPropertyName: "hidePointerEvents", publicName: "hidePointerEvents", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickRemove: "clickRemove", chipClicked: "chipClicked" }, viewQueries: [{ propertyName: "chipElement", first: true, predicate: ["chipElement"], descendants: true }], ngImport: i0, template: "<ng-template #itemRender>\n <div\n #chipElement\n class=\"flex items-center gap-2 break-words rounded-medium border border-grayscale-50 bg-grayscale-10 px-1.5 text-center text-xs focus:outline focus:outline-2 focus:outline-criticality-blue\"\n [ngClass]=\"{\n 'hover:bg-grayscale-30': !disabled,\n 'opacity-50': disabled,\n 'pointer-events-none': hidePointerEvents(),\n }\"\n role=\"button\"\n [attr.aria-label]=\"_rawText + ', ' + ('platform.angular_components.remove' | translate)\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (click)=\"onChipClicked($event)\"\n (keydown.enter)=\"onChipClicked($event)\"\n (keydown.space)=\"onChipClicked($event)\"\n (keydown.backspace)=\"clickedRemove($event)\"\n (keydown.delete)=\"clickedRemove($event)\"\n [sTooltip]=\"_rawText\"\n [showDelay]=\"0\"\n [visible]=\"showTooltip ? _rawText.length > maxLengthRenderWithoutTooltip : false\"\n >\n @if (templateRef) {\n <ng-container *ngTemplateOutlet=\"templateRef; context: { $implicit: dataRender, text: _text }\">\n </ng-container>\n } @else {\n {{ _text }}\n }\n @if (showRemove()) {\n <i\n [class]=\"removeIconClass()\"\n aria-hidden=\"true\"\n [ngClass]=\"{ 'cursor-pointer': !disabled, 'cursor-default': disabled }\"\n (click)=\"clickedRemove($event)\"\n ></i>\n }\n </div>\n</ng-template>\n\n@if (objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (!objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n", dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
61
70
|
}
|
|
62
71
|
__decorate([
|
|
63
72
|
CheckDisabled()
|
|
@@ -67,13 +76,12 @@ __decorate([
|
|
|
67
76
|
], ChipItemComponent.prototype, "onChipClicked", null);
|
|
68
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipItemComponent, decorators: [{
|
|
69
78
|
type: Component,
|
|
70
|
-
args: [{ selector: 's-chip-item', standalone: true, imports: [TooltipDirective, NgTemplateOutlet, NgClass, TranslateModule], template: "<ng-template #itemRender>\n <div\n #chipElement\n class=\"rounded-medium border border-grayscale-50 bg-grayscale-10
|
|
79
|
+
args: [{ selector: 's-chip-item', standalone: true, imports: [TooltipDirective, NgTemplateOutlet, NgClass, TranslateModule], template: "<ng-template #itemRender>\n <div\n #chipElement\n class=\"flex items-center gap-2 break-words rounded-medium border border-grayscale-50 bg-grayscale-10 px-1.5 text-center text-xs focus:outline focus:outline-2 focus:outline-criticality-blue\"\n [ngClass]=\"{\n 'hover:bg-grayscale-30': !disabled,\n 'opacity-50': disabled,\n 'pointer-events-none': hidePointerEvents(),\n }\"\n role=\"button\"\n [attr.aria-label]=\"_rawText + ', ' + ('platform.angular_components.remove' | translate)\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (click)=\"onChipClicked($event)\"\n (keydown.enter)=\"onChipClicked($event)\"\n (keydown.space)=\"onChipClicked($event)\"\n (keydown.backspace)=\"clickedRemove($event)\"\n (keydown.delete)=\"clickedRemove($event)\"\n [sTooltip]=\"_rawText\"\n [showDelay]=\"0\"\n [visible]=\"showTooltip ? _rawText.length > maxLengthRenderWithoutTooltip : false\"\n >\n @if (templateRef) {\n <ng-container *ngTemplateOutlet=\"templateRef; context: { $implicit: dataRender, text: _text }\">\n </ng-container>\n } @else {\n {{ _text }}\n }\n @if (showRemove()) {\n <i\n [class]=\"removeIconClass()\"\n aria-hidden=\"true\"\n [ngClass]=\"{ 'cursor-pointer': !disabled, 'cursor-default': disabled }\"\n (click)=\"clickedRemove($event)\"\n ></i>\n }\n </div>\n</ng-template>\n\n@if (objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (!objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n" }]
|
|
71
80
|
}], propDecorators: { dataRender: [{
|
|
72
81
|
type: Input,
|
|
73
82
|
args: [{ required: true }]
|
|
74
83
|
}], objectField: [{
|
|
75
|
-
type: Input
|
|
76
|
-
args: [{ required: true }]
|
|
84
|
+
type: Input
|
|
77
85
|
}], disabled: [{
|
|
78
86
|
type: Input,
|
|
79
87
|
args: [{ required: true }]
|
|
@@ -86,8 +94,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
86
94
|
type: Input,
|
|
87
95
|
args: [{ required: true }]
|
|
88
96
|
}], maxLengthRenderWithoutTooltip: [{
|
|
89
|
-
type: Input
|
|
90
|
-
args: [{ required: true }]
|
|
97
|
+
type: Input
|
|
91
98
|
}], clickRemove: [{
|
|
92
99
|
type: Output
|
|
93
100
|
}], chipClicked: [{
|
|
@@ -230,7 +237,7 @@ class ChipsComponent {
|
|
|
230
237
|
this.value.splice(itemIndex, 1);
|
|
231
238
|
this.removed.emit({ value: _removedItem, originalEvent: event });
|
|
232
239
|
this.cdr.detectChanges();
|
|
233
|
-
this.
|
|
240
|
+
restoreFocusAfterRemoval(this.chipItems?.toArray() ?? [], itemIndex, () => this.input?.nativeElement.focus());
|
|
234
241
|
}
|
|
235
242
|
onChipClicked({ event, data }) {
|
|
236
243
|
this.chipClicked.emit({ value: data, originalEvent: event });
|
|
@@ -280,15 +287,6 @@ class ChipsComponent {
|
|
|
280
287
|
}
|
|
281
288
|
});
|
|
282
289
|
}
|
|
283
|
-
restoreFocusAfterRemove(removedIndex) {
|
|
284
|
-
const items = this.chipItems?.toArray() ?? [];
|
|
285
|
-
if (items.length) {
|
|
286
|
-
items[Math.min(removedIndex, items.length - 1)].focus();
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
this.input?.nativeElement.focus();
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
290
|
storeValue(value) {
|
|
293
291
|
this.value = [...this.value, value];
|
|
294
292
|
this.added.emit({ value });
|
|
@@ -304,7 +302,7 @@ class ChipsComponent {
|
|
|
304
302
|
useExisting: forwardRef(() => ChipsComponent),
|
|
305
303
|
multi: true,
|
|
306
304
|
},
|
|
307
|
-
], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border border-grayscale-30 bg-grayscale-0 list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-criticality-blue\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"], dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip"], outputs: ["clickRemove", "chipClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }] });
|
|
305
|
+
], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border border-grayscale-30 bg-grayscale-0 list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-criticality-blue\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"], dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip", "showRemove", "removeIconClass", "hidePointerEvents"], outputs: ["clickRemove", "chipClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }] });
|
|
308
306
|
}
|
|
309
307
|
__decorate([
|
|
310
308
|
CheckDisabled()
|
|
@@ -395,5 +393,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
395
393
|
* Generated bundle index. Do not edit.
|
|
396
394
|
*/
|
|
397
395
|
|
|
398
|
-
export { ChipsComponent, ChipsModule };
|
|
396
|
+
export { ChipItemComponent, ChipsComponent, ChipsModule };
|
|
399
397
|
//# sourceMappingURL=seniorsistemas-angular-components-chips.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-chips.mjs","sources":["../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.ts","../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.html","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.ts","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.html","../../projects/angular-components/chips/src/lib/chips/chips.module.ts","../../projects/angular-components/chips/src/seniorsistemas-angular-components-chips.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n/**\r\n * @description Componente interno de item individual de chip, utilizado pelo {@link ChipsComponent}.\r\n * Responsável pela renderização do texto, tooltip e botão de remoção de cada chip.\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chip-item',\r\n templateUrl: './chip-item.component.html',\r\n standalone: true,\r\n imports: [TooltipDirective, NgTemplateOutlet, NgClass, TranslateModule],\r\n})\r\nexport class ChipItemComponent {\r\n /** @description Conteúdo a ser exibido no chip (string ou objeto). Campo obrigatório. */\r\n @Input({ required: true }) dataRender!: string | Object;\r\n /** @description Chave do objeto usada para exibição quando `dataRender` for um objeto. Campo obrigatório. */\r\n @Input({ required: true }) objectField!: string;\r\n /** @description Desabilita os eventos de clique do chip. Campo obrigatório. */\r\n @Input({ required: true }) disabled = false;\r\n /** @description Template personalizado para renderização interna do chip. */\r\n @Input() templateRef!: TemplateRef<any> | undefined;\r\n /** @description Índice do chip na lista, usado ao emitir o evento de remoção. Campo obrigatório. */\r\n @Input({ required: true }) itemIndex = -1;\r\n /** @description Habilita o tooltip para chips com texto truncado. Campo obrigatório. */\r\n @Input({ required: true }) showTooltip = true;\r\n /** @description Limite de caracteres exibidos antes de truncar o texto do chip. Campo obrigatório. */\r\n @Input({ required: true }) maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Emitido ao clicar no botão de remoção do chip. */\r\n @Output() clickRemove = new EventEmitter<{ itemIndex: number; event: Event }>();\r\n /** @description Emitido ao clicar sobre o chip (fora do botão de remoção). */\r\n @Output() chipClicked = new EventEmitter<{ event: Event; data: string | Object }>();\r\n\r\n @ViewChild('chipElement')\r\n private readonly chipElement?: ElementRef<HTMLElement>;\r\n\r\n @CheckDisabled()\r\n clickedRemove($event: Event) {\r\n $event.preventDefault();\r\n this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });\r\n }\r\n @CheckDisabled()\r\n onChipClicked($event: Event) {\r\n $event.preventDefault();\r\n this.chipClicked.emit({ event: $event, data: this.dataRender });\r\n }\r\n\r\n public focus(): void {\r\n this.chipElement?.nativeElement.focus();\r\n }\r\n\r\n get _text() {\r\n const _text = this._rawText;\r\n return (\r\n _text.substring(\r\n 0,\r\n _text.length > this.maxLengthRenderWithoutTooltip ? this.maxLengthRenderWithoutTooltip : _text.length,\r\n ) + (_text.length > this.maxLengthRenderWithoutTooltip ? '...' : '')\r\n );\r\n }\r\n\r\n get _rawText() {\r\n return this.objectField ? (this.dataRender as any)[this.objectField] || '' : this.dataRender || '';\r\n }\r\n}\r\n","<ng-template #itemRender>\n <div\n #chipElement\n class=\"rounded-medium border border-grayscale-50 bg-grayscale-10 break-words text-xs text-center flex items-center gap-2 px-1.5 focus:outline focus:outline-2 focus:outline-criticality-blue\"\n [ngClass]=\"{ 'hover:bg-grayscale-30': !disabled, 'opacity-50': disabled }\"\n role=\"button\"\n [attr.aria-label]=\"_rawText + ', ' + ('platform.angular_components.remove' | translate)\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (click)=\"onChipClicked($event)\"\n (keydown.enter)=\"onChipClicked($event)\"\n (keydown.space)=\"onChipClicked($event)\"\n (keydown.backspace)=\"clickedRemove($event)\"\n (keydown.delete)=\"clickedRemove($event)\"\n [sTooltip]=\"_rawText\"\n [showDelay]=\"0\"\n [visible]=\"showTooltip ? _rawText.length > maxLengthRenderWithoutTooltip : false\">\n @if(templateRef) {\n <ng-container\n *ngTemplateOutlet=\"templateRef; context: { $implicit: dataRender, text: _text }\">\n </ng-container>\n } @else {\n {{ _text }}\n }\n <i class=\"fas fa-times\" aria-hidden=\"true\" [ngClass]=\"{ 'cursor-pointer': !disabled, 'cursor-default': disabled }\" (click)=\"clickedRemove($event)\"></i>\n </div>\n</ng-template>\n\n\n@if(objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender;\"></ng-container>\n}\n\n@if(!objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender;\"></ng-container>\n}\n\n@if(templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren,\r\n inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nimport { KeyFilterPattern, KeyFilter } from 'primeng/keyfilter';\r\n\r\nimport { ChipAddEvent, ChipClickEvent, ChipRemoveEvent } from '../models/chip-models';\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { isNullOrUndefined, randomHash } from '@seniorsistemas/angular-components/utils';\r\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\r\nimport { ChipItemComponent } from '../chip-item/chip-item.component';\r\n\r\n/**\r\n * @description Componente de entrada de tags/chips que permite adicionar e remover\r\n * itens de texto livremente ou a partir de uma lista. Suporta templates personalizados\r\n * para renderização de cada chip, filtro de teclas, limite de itens e duplicação configurável.\r\n * Implementa {@link ControlValueAccessor} para uso em formulários Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <s-chips\r\n * formControlName=\"tags\"\r\n * placeholder=\"Adicionar tag...\"\r\n * [max]=\"10\"\r\n * [allowDuplicated]=\"false\"\r\n * (added)=\"onAdded($event)\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ChipsComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [ChipItemComponent, FormsModule, KeyFilter],\r\n})\r\nexport class ChipsComponent implements AfterViewInit, ControlValueAccessor {\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n public newItem = '';\r\n public chipTemplate?: TemplateRef<any>;\r\n\r\n /** @description Desabilita a interação com o componente. @default false */\r\n @Input()\r\n public disabled = false;\r\n\r\n /** @description Chave do objeto usada para exibição quando os itens são objetos complexos. @default '' */\r\n @Input()\r\n public field = '';\r\n\r\n /** @description Lista de chips atualmente exibidos. @default [] */\r\n @Input()\r\n public value: any[] = [];\r\n\r\n /** @description Texto de placeholder exibido no campo de entrada quando vazio. */\r\n @Input()\r\n public placeholder: string | undefined;\r\n\r\n /** @description Número máximo de chips permitidos. @default Infinity */\r\n @Input()\r\n public max = Infinity;\r\n\r\n /** @description Comprimento máximo do texto de cada chip. @default Infinity */\r\n @Input()\r\n public maxLength = Infinity;\r\n\r\n /** @description Identificador do elemento `<input>` interno. Gerado automaticamente se não informado. */\r\n @Input()\r\n public inputId = `chips-${randomHash()}`;\r\n\r\n /** @description Permite a adição de chips com valor duplicado. @default true */\r\n @Input()\r\n public allowDuplicated = true;\r\n\r\n /** @description Quando `false`, a comparação de duplicatas é case-insensitive. @default false */\r\n @Input()\r\n public caseSensitiveDuplication = false;\r\n\r\n /** @description Adiciona o chip ao pressionar Tab. @default true */\r\n @Input()\r\n public addOnTab = true;\r\n\r\n /** @description Adiciona o chip ao perder o foco (blur). @default true */\r\n @Input()\r\n public addOnBlur = true;\r\n\r\n /** @description Caractere separador que, quando digitado, confirma a adição de um novo chip. @default '' */\r\n @Input()\r\n public separator = '';\r\n\r\n /** @description Coloca o foco automaticamente no campo de entrada ao renderizar o componente. @default false */\r\n @Input()\r\n public autofocus = false;\r\n\r\n /** @description Texto informativo exibido abaixo do campo de entrada. @default '' */\r\n @Input()\r\n public infoLabel = '';\r\n\r\n /** @description Expressão regular ou padrão predefinido (PrimeNG KeyFilterPattern) para filtrar teclas aceitas. */\r\n @Input()\r\n public keyFilter?: RegExp | KeyFilterPattern;\r\n\r\n /** @description Exibe tooltip ao passar o mouse sobre chips com texto truncado. @default true */\r\n @Input()\r\n public showTooltip = true;\r\n\r\n /** @description Número máximo de caracteres exibidos diretamente no chip sem aplicar truncamento. @default 20 */\r\n @Input()\r\n public maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Emitido quando um novo chip é adicionado com sucesso. */\r\n @Output()\r\n public added = new EventEmitter<ChipAddEvent>();\r\n\r\n /** @description Emitido quando um chip é removido pelo usuário. */\r\n @Output()\r\n public removed = new EventEmitter<ChipRemoveEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada recebe foco. */\r\n @Output()\r\n public focused = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada perde o foco. */\r\n @Output()\r\n public focusLost = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o usuário clica em um chip existente. */\r\n @Output()\r\n public chipClicked = new EventEmitter<ChipClickEvent>();\r\n\r\n /** @description Emitido sempre que a lista de chips é alterada (adição ou remoção). */\r\n @Output()\r\n public valueChange = new EventEmitter<string[] | any[]>();\r\n\r\n @ContentChildren(TemplateDirective)\r\n private readonly templates: QueryList<TemplateDirective> | null = null;\r\n\r\n @ViewChild('input', { read: ElementRef })\r\n private readonly input: ElementRef<HTMLElement> | null = null;\r\n\r\n @ViewChildren(ChipItemComponent)\r\n private readonly chipItems: QueryList<ChipItemComponent> | null = null;\r\n\r\n public onChange: (value: string[] | any[]) => void = () => {};\r\n public onTouched: (value: string[] | any[]) => void = () => {};\r\n\r\n private isTabEventActive = false;\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.autofocus && this.input) {\r\n this.input.nativeElement.focus();\r\n }\r\n if (this.templates) {\r\n this.chipTemplate = this.templates.find((x) => x.type === 'chip-container')?.template;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n public writeValue(obj: string[] | any[]): void {\r\n if (isNullOrUndefined(obj)) {\r\n obj = [];\r\n }\r\n this.value = obj;\r\n }\r\n\r\n public registerOnChange(fn: (value: string[] | any[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n @CheckDisabled()\r\n public onKeydown($event: KeyboardEvent) {\r\n const isEnter = $event.key === 'Enter';\r\n const isSeparator = this.separator && $event.key === this.separator;\r\n const eventKeyIsTab = $event.key === 'Tab';\r\n if (eventKeyIsTab) {\r\n const tabTimeoutTime = 50;\r\n this.isTabEventActive = true;\r\n setTimeout(() => {\r\n this.isTabEventActive = false;\r\n }, tabTimeoutTime);\r\n if (this.addOnTab) {\r\n this.addItem();\r\n }\r\n return;\r\n }\r\n if (isEnter || isSeparator) {\r\n $event.preventDefault();\r\n this.addItem();\r\n }\r\n }\r\n\r\n public onInputFocus($event: FocusEvent) {\r\n this.focused.emit($event);\r\n }\r\n\r\n @CheckDisabled()\r\n public onInputLostFocus($event: FocusEvent) {\r\n if (!this.addOnBlur || this.isTabEventActive) {\r\n return;\r\n }\r\n this.addItem();\r\n this.focusLost.emit($event);\r\n }\r\n\r\n public removeItem({ itemIndex, event }: { itemIndex: number; event: Event }) {\r\n const _removedItem = this.value[itemIndex];\r\n this.value.splice(itemIndex, 1);\r\n this.removed.emit({ value: _removedItem, originalEvent: event });\r\n this.cdr.detectChanges();\r\n this.restoreFocusAfterRemove(itemIndex);\r\n }\r\n\r\n public onChipClicked({ event, data }: { event: Event; data: string | Object }) {\r\n this.chipClicked.emit({ value: data, originalEvent: event });\r\n }\r\n\r\n private addItem() {\r\n if (!this.hasValueToAdd()) {\r\n return;\r\n }\r\n if (this.isMaxReached()) {\r\n return;\r\n }\r\n if (!this.isValidItemLength()) {\r\n return;\r\n }\r\n const valueToAdd = this.getValueToAdd();\r\n if (!this.hasDuplicatedItem()) {\r\n this.storeValue(valueToAdd);\r\n }\r\n this.newItem = '';\r\n }\r\n\r\n private hasValueToAdd(): boolean {\r\n return !!this.newItem;\r\n }\r\n\r\n private isMaxReached(): boolean {\r\n return !!(this.max && this.value.length === this.max);\r\n }\r\n\r\n private isValidItemLength(): boolean {\r\n return this.maxLength ? this.newItem.length <= this.maxLength : true;\r\n }\r\n\r\n private getMappedValues(): string[] {\r\n return this.field ? this.value.map((x) => x[this.field]) : this.value;\r\n }\r\n\r\n private getValueToAdd(): any {\r\n return this.field ? { [this.field]: this.newItem } : this.newItem;\r\n }\r\n\r\n private hasDuplicatedItem(): boolean {\r\n if (this.allowDuplicated) {\r\n return false;\r\n }\r\n const mappedValues = this.getMappedValues();\r\n return !!mappedValues.find((x) => {\r\n if (this.caseSensitiveDuplication) {\r\n return x === this.newItem;\r\n } else {\r\n return x.toLowerCase() === this.newItem.toLowerCase();\r\n }\r\n });\r\n }\r\n\r\n private restoreFocusAfterRemove(removedIndex: number): void {\r\n const items = this.chipItems?.toArray() ?? [];\r\n if (items.length) {\r\n items[Math.min(removedIndex, items.length - 1)].focus();\r\n } else {\r\n this.input?.nativeElement.focus();\r\n }\r\n }\r\n\r\n private storeValue(value: any) {\r\n this.value = [...this.value, value];\r\n this.added.emit({ value });\r\n this.valueChange.emit(this.value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n}\r\n","<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border border-grayscale-30 bg-grayscale-0 list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-criticality-blue\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n","import { NgModule } from '@angular/core';\r\nimport { ChipsComponent } from './chips/chips.component';\r\n\r\n@NgModule({\r\n imports: [ChipsComponent],\r\n exports: [ChipsComponent],\r\n})\r\nexport class ChipsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-chips.mjs","sources":["../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.ts","../../projects/angular-components/chips/src/lib/chips/chip-item/chip-item.component.html","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.ts","../../projects/angular-components/chips/src/lib/chips/chips/chips.component.html","../../projects/angular-components/chips/src/lib/chips/chips.module.ts","../../projects/angular-components/chips/src/seniorsistemas-angular-components-chips.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, input, Input, Output, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n/**\r\n * @description Componente interno de item individual de chip, utilizado pelo {@link ChipsComponent}.\r\n * Responsável pela renderização do texto, tooltip e botão de remoção de cada chip.\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chip-item',\r\n templateUrl: './chip-item.component.html',\r\n standalone: true,\r\n imports: [TooltipDirective, NgTemplateOutlet, NgClass, TranslateModule],\r\n})\r\nexport class ChipItemComponent {\r\n /** @description Conteúdo a ser exibido no chip (string ou objeto). Campo obrigatório. */\r\n @Input({ required: true }) dataRender!: string | Object;\r\n /** @description Chave do objeto usada para exibição quando `dataRender` for um objeto. */\r\n @Input() objectField: string | undefined;\r\n /** @description Desabilita os eventos de clique do chip. Campo obrigatório. */\r\n @Input({ required: true }) disabled = false;\r\n /** @description Template personalizado para renderização interna do chip. */\r\n @Input() templateRef!: TemplateRef<any> | undefined;\r\n /** @description Índice do chip na lista, usado ao emitir o evento de remoção. Campo obrigatório. */\r\n @Input({ required: true }) itemIndex = -1;\r\n /** @description Habilita o tooltip para chips com texto truncado. Campo obrigatório. */\r\n @Input({ required: true }) showTooltip = true;\r\n /** @description Limite de caracteres exibidos antes de truncar o texto do chip.*/\r\n @Input() maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Controla a exibição do botão de remoção do chip. */\r\n showRemove = input(true);\r\n\r\n /** @description Classe do ícone do botão de remoção do chip. @default 'fas fa-times' */\r\n removeIconClass = input('fas fa-times');\r\n\r\n /** @description Controla a exibição de eventos de ponteiro no chip. @default false */\r\n hidePointerEvents = input(false);\r\n\r\n /** @description Emitido ao clicar no botão de remoção do chip. */\r\n @Output() clickRemove = new EventEmitter<{ itemIndex: number; event: Event }>();\r\n /** @description Emitido ao clicar sobre o chip (fora do botão de remoção). */\r\n @Output() chipClicked = new EventEmitter<{ event: Event; data: string | Object }>();\r\n\r\n @ViewChild('chipElement')\r\n private readonly chipElement?: ElementRef<HTMLElement>;\r\n\r\n @CheckDisabled()\r\n clickedRemove($event: Event) {\r\n if (!this.showRemove()) {\r\n return;\r\n }\r\n $event.preventDefault();\r\n this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });\r\n }\r\n @CheckDisabled()\r\n onChipClicked($event: Event) {\r\n $event.preventDefault();\r\n this.chipClicked.emit({ event: $event, data: this.dataRender });\r\n }\r\n\r\n public focus(): void {\r\n this.chipElement?.nativeElement.focus();\r\n }\r\n\r\n get _text() {\r\n const _text = this._rawText;\r\n return (\r\n _text.substring(\r\n 0,\r\n _text.length > this.maxLengthRenderWithoutTooltip ? this.maxLengthRenderWithoutTooltip : _text.length,\r\n ) + (_text.length > this.maxLengthRenderWithoutTooltip ? '...' : '')\r\n );\r\n }\r\n\r\n get _rawText() {\r\n return this.objectField ? (this.dataRender as any)[this.objectField] || '' : this.dataRender || '';\r\n }\r\n}\r\n","<ng-template #itemRender>\n <div\n #chipElement\n class=\"flex items-center gap-2 break-words rounded-medium border border-grayscale-50 bg-grayscale-10 px-1.5 text-center text-xs focus:outline focus:outline-2 focus:outline-criticality-blue\"\n [ngClass]=\"{\n 'hover:bg-grayscale-30': !disabled,\n 'opacity-50': disabled,\n 'pointer-events-none': hidePointerEvents(),\n }\"\n role=\"button\"\n [attr.aria-label]=\"_rawText + ', ' + ('platform.angular_components.remove' | translate)\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (click)=\"onChipClicked($event)\"\n (keydown.enter)=\"onChipClicked($event)\"\n (keydown.space)=\"onChipClicked($event)\"\n (keydown.backspace)=\"clickedRemove($event)\"\n (keydown.delete)=\"clickedRemove($event)\"\n [sTooltip]=\"_rawText\"\n [showDelay]=\"0\"\n [visible]=\"showTooltip ? _rawText.length > maxLengthRenderWithoutTooltip : false\"\n >\n @if (templateRef) {\n <ng-container *ngTemplateOutlet=\"templateRef; context: { $implicit: dataRender, text: _text }\">\n </ng-container>\n } @else {\n {{ _text }}\n }\n @if (showRemove()) {\n <i\n [class]=\"removeIconClass()\"\n aria-hidden=\"true\"\n [ngClass]=\"{ 'cursor-pointer': !disabled, 'cursor-default': disabled }\"\n (click)=\"clickedRemove($event)\"\n ></i>\n }\n </div>\n</ng-template>\n\n@if (objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (!objectField && !templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n@if (templateRef) {\n <ng-container *ngTemplateOutlet=\"itemRender\"></ng-container>\n}\n\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\r\n ViewChildren,\r\n inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nimport { KeyFilterPattern, KeyFilter } from 'primeng/keyfilter';\r\n\r\nimport { ChipAddEvent, ChipClickEvent, ChipRemoveEvent } from '../models/chip-models';\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { isNullOrUndefined, randomHash } from '@seniorsistemas/angular-components/utils';\r\nimport { CheckDisabled, restoreFocusAfterRemoval } from '@seniorsistemas/angular-components/shared';\r\nimport { ChipItemComponent } from '../chip-item/chip-item.component';\r\n\r\n/**\r\n * @description Componente de entrada de tags/chips que permite adicionar e remover\r\n * itens de texto livremente ou a partir de uma lista. Suporta templates personalizados\r\n * para renderização de cada chip, filtro de teclas, limite de itens e duplicação configurável.\r\n * Implementa {@link ControlValueAccessor} para uso em formulários Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <s-chips\r\n * formControlName=\"tags\"\r\n * placeholder=\"Adicionar tag...\"\r\n * [max]=\"10\"\r\n * [allowDuplicated]=\"false\"\r\n * (added)=\"onAdded($event)\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ChipsComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [ChipItemComponent, FormsModule, KeyFilter],\r\n})\r\nexport class ChipsComponent implements AfterViewInit, ControlValueAccessor {\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n public newItem = '';\r\n public chipTemplate?: TemplateRef<any>;\r\n\r\n /** @description Desabilita a interação com o componente. @default false */\r\n @Input()\r\n public disabled = false;\r\n\r\n /** @description Chave do objeto usada para exibição quando os itens são objetos complexos. @default '' */\r\n @Input()\r\n public field = '';\r\n\r\n /** @description Lista de chips atualmente exibidos. @default [] */\r\n @Input()\r\n public value: any[] = [];\r\n\r\n /** @description Texto de placeholder exibido no campo de entrada quando vazio. */\r\n @Input()\r\n public placeholder: string | undefined;\r\n\r\n /** @description Número máximo de chips permitidos. @default Infinity */\r\n @Input()\r\n public max = Infinity;\r\n\r\n /** @description Comprimento máximo do texto de cada chip. @default Infinity */\r\n @Input()\r\n public maxLength = Infinity;\r\n\r\n /** @description Identificador do elemento `<input>` interno. Gerado automaticamente se não informado. */\r\n @Input()\r\n public inputId = `chips-${randomHash()}`;\r\n\r\n /** @description Permite a adição de chips com valor duplicado. @default true */\r\n @Input()\r\n public allowDuplicated = true;\r\n\r\n /** @description Quando `false`, a comparação de duplicatas é case-insensitive. @default false */\r\n @Input()\r\n public caseSensitiveDuplication = false;\r\n\r\n /** @description Adiciona o chip ao pressionar Tab. @default true */\r\n @Input()\r\n public addOnTab = true;\r\n\r\n /** @description Adiciona o chip ao perder o foco (blur). @default true */\r\n @Input()\r\n public addOnBlur = true;\r\n\r\n /** @description Caractere separador que, quando digitado, confirma a adição de um novo chip. @default '' */\r\n @Input()\r\n public separator = '';\r\n\r\n /** @description Coloca o foco automaticamente no campo de entrada ao renderizar o componente. @default false */\r\n @Input()\r\n public autofocus = false;\r\n\r\n /** @description Texto informativo exibido abaixo do campo de entrada. @default '' */\r\n @Input()\r\n public infoLabel = '';\r\n\r\n /** @description Expressão regular ou padrão predefinido (PrimeNG KeyFilterPattern) para filtrar teclas aceitas. */\r\n @Input()\r\n public keyFilter?: RegExp | KeyFilterPattern;\r\n\r\n /** @description Exibe tooltip ao passar o mouse sobre chips com texto truncado. @default true */\r\n @Input()\r\n public showTooltip = true;\r\n\r\n /** @description Número máximo de caracteres exibidos diretamente no chip sem aplicar truncamento. @default 20 */\r\n @Input()\r\n public maxLengthRenderWithoutTooltip = 20;\r\n\r\n /** @description Emitido quando um novo chip é adicionado com sucesso. */\r\n @Output()\r\n public added = new EventEmitter<ChipAddEvent>();\r\n\r\n /** @description Emitido quando um chip é removido pelo usuário. */\r\n @Output()\r\n public removed = new EventEmitter<ChipRemoveEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada recebe foco. */\r\n @Output()\r\n public focused = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o campo de entrada perde o foco. */\r\n @Output()\r\n public focusLost = new EventEmitter<FocusEvent>();\r\n\r\n /** @description Emitido quando o usuário clica em um chip existente. */\r\n @Output()\r\n public chipClicked = new EventEmitter<ChipClickEvent>();\r\n\r\n /** @description Emitido sempre que a lista de chips é alterada (adição ou remoção). */\r\n @Output()\r\n public valueChange = new EventEmitter<string[] | any[]>();\r\n\r\n @ContentChildren(TemplateDirective)\r\n private readonly templates: QueryList<TemplateDirective> | null = null;\r\n\r\n @ViewChild('input', { read: ElementRef })\r\n private readonly input: ElementRef<HTMLElement> | null = null;\r\n\r\n @ViewChildren(ChipItemComponent)\r\n private readonly chipItems: QueryList<ChipItemComponent> | null = null;\r\n\r\n public onChange: (value: string[] | any[]) => void = () => {};\r\n public onTouched: (value: string[] | any[]) => void = () => {};\r\n\r\n private isTabEventActive = false;\r\n\r\n public ngAfterViewInit(): void {\r\n if (this.autofocus && this.input) {\r\n this.input.nativeElement.focus();\r\n }\r\n if (this.templates) {\r\n this.chipTemplate = this.templates.find((x) => x.type === 'chip-container')?.template;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n public writeValue(obj: string[] | any[]): void {\r\n if (isNullOrUndefined(obj)) {\r\n obj = [];\r\n }\r\n this.value = obj;\r\n }\r\n\r\n public registerOnChange(fn: (value: string[] | any[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n @CheckDisabled()\r\n public onKeydown($event: KeyboardEvent) {\r\n const isEnter = $event.key === 'Enter';\r\n const isSeparator = this.separator && $event.key === this.separator;\r\n const eventKeyIsTab = $event.key === 'Tab';\r\n if (eventKeyIsTab) {\r\n const tabTimeoutTime = 50;\r\n this.isTabEventActive = true;\r\n setTimeout(() => {\r\n this.isTabEventActive = false;\r\n }, tabTimeoutTime);\r\n if (this.addOnTab) {\r\n this.addItem();\r\n }\r\n return;\r\n }\r\n if (isEnter || isSeparator) {\r\n $event.preventDefault();\r\n this.addItem();\r\n }\r\n }\r\n\r\n public onInputFocus($event: FocusEvent) {\r\n this.focused.emit($event);\r\n }\r\n\r\n @CheckDisabled()\r\n public onInputLostFocus($event: FocusEvent) {\r\n if (!this.addOnBlur || this.isTabEventActive) {\r\n return;\r\n }\r\n this.addItem();\r\n this.focusLost.emit($event);\r\n }\r\n\r\n public removeItem({ itemIndex, event }: { itemIndex: number; event: Event }) {\r\n const _removedItem = this.value[itemIndex];\r\n this.value.splice(itemIndex, 1);\r\n this.removed.emit({ value: _removedItem, originalEvent: event });\r\n this.cdr.detectChanges();\r\n restoreFocusAfterRemoval(this.chipItems?.toArray() ?? [], itemIndex, () => this.input?.nativeElement.focus());\r\n }\r\n\r\n public onChipClicked({ event, data }: { event: Event; data: string | Object }) {\r\n this.chipClicked.emit({ value: data, originalEvent: event });\r\n }\r\n\r\n private addItem() {\r\n if (!this.hasValueToAdd()) {\r\n return;\r\n }\r\n if (this.isMaxReached()) {\r\n return;\r\n }\r\n if (!this.isValidItemLength()) {\r\n return;\r\n }\r\n const valueToAdd = this.getValueToAdd();\r\n if (!this.hasDuplicatedItem()) {\r\n this.storeValue(valueToAdd);\r\n }\r\n this.newItem = '';\r\n }\r\n\r\n private hasValueToAdd(): boolean {\r\n return !!this.newItem;\r\n }\r\n\r\n private isMaxReached(): boolean {\r\n return !!(this.max && this.value.length === this.max);\r\n }\r\n\r\n private isValidItemLength(): boolean {\r\n return this.maxLength ? this.newItem.length <= this.maxLength : true;\r\n }\r\n\r\n private getMappedValues(): string[] {\r\n return this.field ? this.value.map((x) => x[this.field]) : this.value;\r\n }\r\n\r\n private getValueToAdd(): any {\r\n return this.field ? { [this.field]: this.newItem } : this.newItem;\r\n }\r\n\r\n private hasDuplicatedItem(): boolean {\r\n if (this.allowDuplicated) {\r\n return false;\r\n }\r\n const mappedValues = this.getMappedValues();\r\n return !!mappedValues.find((x) => {\r\n if (this.caseSensitiveDuplication) {\r\n return x === this.newItem;\r\n } else {\r\n return x.toLowerCase() === this.newItem.toLowerCase();\r\n }\r\n });\r\n }\r\n\r\n private storeValue(value: any) {\r\n this.value = [...this.value, value];\r\n this.added.emit({ value });\r\n this.valueChange.emit(this.value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n}\r\n","<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border border-grayscale-30 bg-grayscale-0 list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-criticality-blue\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"bg-grayscale-0 w-full border-none flex-1 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n","import { NgModule } from '@angular/core';\r\nimport { ChipsComponent } from './chips/chips.component';\r\n\r\n@NgModule({\r\n imports: [ChipsComponent],\r\n exports: [ChipsComponent],\r\n})\r\nexport class ChipsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|