@seniorsistemas/angular-components 19.7.4 → 19.7.6
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/alert/lib/alert/alert.component.d.ts +8 -1
- package/chips/README.md +3 -2
- package/chips/lib/chips/chip-item/chip-item.component.d.ts +2 -0
- package/chips/lib/chips/chips/chips.component.d.ts +2 -1
- package/datepicker/README.md +15 -2
- package/datepicker/lib/datepicker/date-segment-input.d.ts +82 -0
- package/datepicker/lib/datepicker/date.utils.d.ts +3 -7
- package/datepicker/lib/datepicker/datepicker.component.d.ts +101 -8
- package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +7 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +1 -1
- package/dynamic-form/public-api.d.ts +1 -1
- package/esm2022/alert/lib/alert/alert.component.mjs +12 -6
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +15 -4
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +26 -14
- package/esm2022/datepicker/lib/datepicker/date-segment-input.mjs +418 -0
- package/esm2022/datepicker/lib/datepicker/date.utils.mjs +7 -79
- package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +451 -41
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
- package/esm2022/dynamic-form/public-api.mjs +1 -1
- package/esm2022/panel/lib/panel/panel.component.mjs +3 -3
- package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +8 -6
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +12 -6
- package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +39 -16
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +873 -118
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-panel.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +7 -5
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/package.json +13 -13
- package/schematics/migrations/migrate-steps-to-stepper/index.d.ts +2 -0
- package/schematics/migrations/migrate-steps-to-stepper/index.js +104 -0
- package/schematics/migrations/migrate-steps-to-stepper/index.js.map +1 -0
- package/schematics/migrations.json +5 -0
- package/schematics/utils/ast-utils.d.ts +13 -0
- package/schematics/utils/ast-utils.js +76 -0
- package/schematics/utils/ast-utils.js.map +1 -1
- package/sidebar/lib/sidebar/sidebar.component.d.ts +3 -1
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.js +0 -888
- package/schematics/migrations/migrate-dynamic-form-v19/index.test.js.map +0 -1
- package/schematics/migrations/migrate-p-datepicker/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-p-datepicker/index.test.js +0 -392
- package/schematics/migrations/migrate-p-datepicker/index.test.js.map +0 -1
- package/schematics/migrations/migrate-p-editor/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-p-editor/index.test.js +0 -393
- package/schematics/migrations/migrate-p-editor/index.test.js.map +0 -1
- package/schematics/migrations/migrate-s-chips-outputs/index.test.d.ts +0 -1
- package/schematics/migrations/migrate-s-chips-outputs/index.test.js +0 -125
- package/schematics/migrations/migrate-s-chips-outputs/index.test.js.map +0 -1
- package/schematics/utils/ast-utils.test.d.ts +0 -1
- package/schematics/utils/ast-utils.test.js +0 -138
- package/schematics/utils/ast-utils.test.js.map +0 -1
- package/schematics/utils/workspace-utils.test.d.ts +0 -1
- package/schematics/utils/workspace-utils.test.js +0 -152
- package/schematics/utils/workspace-utils.test.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
|
|
3
1
|
import { NgClass } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { input, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @description Componente de alerta que exibe mensagens informativas, de sucesso, aviso ou erro.
|
|
@@ -45,6 +45,13 @@ class AlertComponent {
|
|
|
45
45
|
* @default true
|
|
46
46
|
*/
|
|
47
47
|
closable = true;
|
|
48
|
+
/**
|
|
49
|
+
* @description Quando `true`, o conteúdo do alerta é escapado para evitar a execução de HTML ou scripts.
|
|
50
|
+
* Quando `false`, o conteúdo do alerta é renderizado como HTML, permitindo a inclusão de links, negrito, etc.
|
|
51
|
+
*
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
54
|
+
escape = input(true);
|
|
48
55
|
/**
|
|
49
56
|
* @description Emitido quando o usuário fecha o alerta clicando no botão de fechar.
|
|
50
57
|
*/
|
|
@@ -64,19 +71,18 @@ class AlertComponent {
|
|
|
64
71
|
}
|
|
65
72
|
_isOpen = true;
|
|
66
73
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
67
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertComponent, isStandalone: true, selector: "s-alert", inputs: { severity: "severity", summary: "summary", detail: "detail", closable: "closable" }, outputs: { closed: "closed" }, ngImport: i0, template: "@if (isOpen) {\n<div\n
|
|
74
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertComponent, isStandalone: true, selector: "s-alert", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: false, isRequired: false, transformFunction: null }, summary: { classPropertyName: "summary", publicName: "summary", isSignal: false, isRequired: true, transformFunction: null }, detail: { classPropertyName: "detail", publicName: "detail", isSignal: false, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: false, isRequired: false, transformFunction: null }, escape: { classPropertyName: "escape", publicName: "escape", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "@if (isOpen) {\n <div\n class=\"alert m-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
68
75
|
}
|
|
69
76
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, decorators: [{
|
|
70
77
|
type: Component,
|
|
71
|
-
args: [{ selector: 's-alert', standalone: true, imports: [NgClass], template: "@if (isOpen) {\n<div\n
|
|
78
|
+
args: [{ selector: 's-alert', standalone: true, imports: [NgClass], template: "@if (isOpen) {\n <div\n class=\"alert m-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n\n" }]
|
|
72
79
|
}], propDecorators: { severity: [{
|
|
73
80
|
type: Input
|
|
74
81
|
}], summary: [{
|
|
75
82
|
type: Input,
|
|
76
83
|
args: [{ required: true }]
|
|
77
84
|
}], detail: [{
|
|
78
|
-
type: Input
|
|
79
|
-
args: [{ required: true }]
|
|
85
|
+
type: Input
|
|
80
86
|
}], closable: [{
|
|
81
87
|
type: Input
|
|
82
88
|
}], closed: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-alert.mjs","sources":["../../projects/angular-components/alert/src/lib/alert/alert.component.ts","../../projects/angular-components/alert/src/lib/alert/alert.component.html","../../projects/angular-components/alert/src/lib/alert/alert.module.ts","../../projects/angular-components/alert/src/seniorsistemas-angular-components-alert.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-alert.mjs","sources":["../../projects/angular-components/alert/src/lib/alert/alert.component.ts","../../projects/angular-components/alert/src/lib/alert/alert.component.html","../../projects/angular-components/alert/src/lib/alert/alert.module.ts","../../projects/angular-components/alert/src/seniorsistemas-angular-components-alert.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\r\nimport { Component, EventEmitter, input, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * @description Componente de alerta que exibe mensagens informativas, de sucesso, aviso ou erro.\r\n * Suporta fechamento manual pelo usuário e emite um evento ao ser fechado.\r\n *\r\n * @example\r\n * ```html\r\n * <s-alert\r\n * severity=\"warning\"\r\n * summary=\"Atenção\"\r\n * detail=\"Verifique os dados antes de continuar.\"\r\n * (closed)=\"onAlertClosed()\"\r\n * />\r\n * ```\r\n *\r\n * @category Feedback\r\n */\r\n@Component({\r\n selector: 's-alert',\r\n templateUrl: './alert.component.html',\r\n standalone: true,\r\n imports: [NgClass],\r\n})\r\nexport class AlertComponent {\r\n /**\r\n * @description Nível de severidade do alerta, que define a cor e o ícone exibidos.\r\n * - `'info'`: alerta informativo (padrão).\r\n * - `'success'`: alerta de sucesso.\r\n * - `'warning'`: alerta de aviso.\r\n * - `'error'`: alerta de erro.\r\n *\r\n * @default 'info'\r\n */\r\n // sonar-ignore: Refactor this union type to have less than 3 elements\r\n @Input()\r\n public severity: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n /**\r\n * @description Título principal do alerta exibido em destaque. Campo obrigatório.\r\n */\r\n @Input({ required: true })\r\n public summary!: string;\r\n\r\n /**\r\n * @description Mensagem detalhada exibida abaixo do título do alerta. Campo obrigatório.\r\n */\r\n @Input()\r\n public detail!: string;\r\n\r\n /**\r\n * @description Quando `true`, exibe o botão de fechar o alerta.\r\n * Quando `false`, o alerta não pode ser dispensado pelo usuário.\r\n *\r\n * @default true\r\n */\r\n @Input()\r\n public closable = true;\r\n\r\n /**\r\n * @description Quando `true`, o conteúdo do alerta é escapado para evitar a execução de HTML ou scripts.\r\n * Quando `false`, o conteúdo do alerta é renderizado como HTML, permitindo a inclusão de links, negrito, etc.\r\n *\r\n * @default true\r\n */\r\n escape = input<boolean>(true);\r\n\r\n /**\r\n * @description Emitido quando o usuário fecha o alerta clicando no botão de fechar.\r\n */\r\n @Output()\r\n public closed = new EventEmitter<void>();\r\n\r\n public get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n public closeAlert(): void {\r\n this._isOpen = false;\r\n }\r\n\r\n public showAlert(): void {\r\n this._isOpen = true;\r\n }\r\n\r\n public onClose(): void {\r\n this.closed.emit();\r\n this.closeAlert();\r\n }\r\n\r\n private _isOpen = true;\r\n}\r\n","@if (isOpen) {\n <div\n class=\"alert m-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n 'border-primary bg-hippie-blue-50': severity === 'info',\n 'border-criticality-green bg-teal-50': severity === 'success',\n 'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n 'border-criticality-red bg-sunset-orange-50': severity === 'error',\n }\"\n >\n <div class=\"content flex items-center gap-4\">\n <div\n class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n [ngClass]=\"{\n 'bg-primary': severity === 'info',\n 'bg-criticality-green': severity === 'success',\n 'bg-criticality-yellow': severity === 'warning',\n 'bg-criticality-red': severity === 'error',\n }\"\n >\n <i\n class=\"fas\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n 'text-grayscale-0': severity !== 'warning',\n 'text-grayscale-90': severity === 'warning',\n }\"\n ></i>\n </div>\n <div class=\"text-container flex flex-col gap-4\">\n <div class=\"text flex flex-col justify-start\">\n @if (summary) {\n <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n }\n\n @if (detail) {\n @if (escape()) {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n {{ detail }}\n </span>\n } @else {\n <span\n class=\"detail font-open-sans text-sm text-grayscale-90\"\n [innerHTML]=\"detail\"\n ></span>\n }\n } @else {\n <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n <ng-content />\n </span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n </div>\n}\n\n","import { NgModule } from '@angular/core';\r\n\r\nimport { AlertComponent } from './alert.component';\r\n\r\n@NgModule({\r\n imports: [AlertComponent],\r\n exports: [AlertComponent],\r\n})\r\nexport class AlertModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, inject, ChangeDetectorRef, forwardRef, ElementRef, ContentChildren,
|
|
2
|
+
import { EventEmitter, Component, Input, Output, ViewChild, inject, ChangeDetectorRef, forwardRef, ElementRef, ContentChildren, ViewChildren, NgModule } from '@angular/core';
|
|
3
3
|
import { __decorate } from 'tslib';
|
|
4
|
-
import * as i1 from '@angular/forms';
|
|
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';
|
|
@@ -9,6 +9,8 @@ import { randomHash, isNullOrUndefined } from '@seniorsistemas/angular-component
|
|
|
9
9
|
import { CheckDisabled } from '@seniorsistemas/angular-components/shared';
|
|
10
10
|
import { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';
|
|
11
11
|
import { NgTemplateOutlet, NgClass } from '@angular/common';
|
|
12
|
+
import * as i1 from '@ngx-translate/core';
|
|
13
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* @description Componente interno de item individual de chip, utilizado pelo {@link ChipsComponent}.
|
|
@@ -35,12 +37,18 @@ class ChipItemComponent {
|
|
|
35
37
|
clickRemove = new EventEmitter();
|
|
36
38
|
/** @description Emitido ao clicar sobre o chip (fora do botão de remoção). */
|
|
37
39
|
chipClicked = new EventEmitter();
|
|
40
|
+
chipElement;
|
|
38
41
|
clickedRemove($event) {
|
|
42
|
+
$event.preventDefault();
|
|
39
43
|
this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });
|
|
40
44
|
}
|
|
41
45
|
onChipClicked($event) {
|
|
46
|
+
$event.preventDefault();
|
|
42
47
|
this.chipClicked.emit({ event: $event, data: this.dataRender });
|
|
43
48
|
}
|
|
49
|
+
focus() {
|
|
50
|
+
this.chipElement?.nativeElement.focus();
|
|
51
|
+
}
|
|
44
52
|
get _text() {
|
|
45
53
|
const _text = this._rawText;
|
|
46
54
|
return (_text.substring(0, _text.length > this.maxLengthRenderWithoutTooltip ? this.maxLengthRenderWithoutTooltip : _text.length) + (_text.length > this.maxLengthRenderWithoutTooltip ? '...' : ''));
|
|
@@ -49,7 +57,7 @@ class ChipItemComponent {
|
|
|
49
57
|
return this.objectField ? this.dataRender[this.objectField] || '' : this.dataRender || '';
|
|
50
58
|
}
|
|
51
59
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
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" }, ngImport: i0, template: "<ng-template #itemRender>\n <div\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\"\n [ngClass]=\"{ 'hover:bg-grayscale-30': !disabled, 'opacity-50': disabled }\"\n (click)=\"onChipClicked($event)\"
|
|
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 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", 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" }] });
|
|
53
61
|
}
|
|
54
62
|
__decorate([
|
|
55
63
|
CheckDisabled()
|
|
@@ -59,7 +67,7 @@ __decorate([
|
|
|
59
67
|
], ChipItemComponent.prototype, "onChipClicked", null);
|
|
60
68
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipItemComponent, decorators: [{
|
|
61
69
|
type: Component,
|
|
62
|
-
args: [{ selector: 's-chip-item', standalone: true, imports: [TooltipDirective, NgTemplateOutlet, NgClass], template: "<ng-template #itemRender>\n <div\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\"\n [ngClass]=\"{ 'hover:bg-grayscale-30': !disabled, 'opacity-50': disabled }\"\n (click)=\"onChipClicked($event)\"
|
|
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 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" }]
|
|
63
71
|
}], propDecorators: { dataRender: [{
|
|
64
72
|
type: Input,
|
|
65
73
|
args: [{ required: true }]
|
|
@@ -84,6 +92,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
84
92
|
type: Output
|
|
85
93
|
}], chipClicked: [{
|
|
86
94
|
type: Output
|
|
95
|
+
}], chipElement: [{
|
|
96
|
+
type: ViewChild,
|
|
97
|
+
args: ['chipElement']
|
|
87
98
|
}], clickedRemove: [], onChipClicked: [] } });
|
|
88
99
|
|
|
89
100
|
/**
|
|
@@ -156,7 +167,7 @@ class ChipsComponent {
|
|
|
156
167
|
valueChange = new EventEmitter();
|
|
157
168
|
templates = null;
|
|
158
169
|
input = null;
|
|
159
|
-
|
|
170
|
+
chipItems = null;
|
|
160
171
|
onChange = () => { };
|
|
161
172
|
onTouched = () => { };
|
|
162
173
|
isTabEventActive = false;
|
|
@@ -194,19 +205,20 @@ class ChipsComponent {
|
|
|
194
205
|
setTimeout(() => {
|
|
195
206
|
this.isTabEventActive = false;
|
|
196
207
|
}, tabTimeoutTime);
|
|
208
|
+
if (this.addOnTab) {
|
|
209
|
+
this.addItem();
|
|
210
|
+
}
|
|
211
|
+
return;
|
|
197
212
|
}
|
|
198
|
-
|
|
199
|
-
if (isEnter || isSeparator || isTab) {
|
|
213
|
+
if (isEnter || isSeparator) {
|
|
200
214
|
$event.preventDefault();
|
|
201
215
|
this.addItem();
|
|
202
216
|
}
|
|
203
217
|
}
|
|
204
218
|
onInputFocus($event) {
|
|
205
219
|
this.focused.emit($event);
|
|
206
|
-
this.isFocused = true;
|
|
207
220
|
}
|
|
208
221
|
onInputLostFocus($event) {
|
|
209
|
-
this.isFocused = false;
|
|
210
222
|
if (!this.addOnBlur || this.isTabEventActive) {
|
|
211
223
|
return;
|
|
212
224
|
}
|
|
@@ -217,6 +229,8 @@ class ChipsComponent {
|
|
|
217
229
|
const _removedItem = this.value[itemIndex];
|
|
218
230
|
this.value.splice(itemIndex, 1);
|
|
219
231
|
this.removed.emit({ value: _removedItem, originalEvent: event });
|
|
232
|
+
this.cdr.detectChanges();
|
|
233
|
+
this.restoreFocusAfterRemove(itemIndex);
|
|
220
234
|
}
|
|
221
235
|
onChipClicked({ event, data }) {
|
|
222
236
|
this.chipClicked.emit({ value: data, originalEvent: event });
|
|
@@ -266,6 +280,15 @@ class ChipsComponent {
|
|
|
266
280
|
}
|
|
267
281
|
});
|
|
268
282
|
}
|
|
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
|
+
}
|
|
269
292
|
storeValue(value) {
|
|
270
293
|
this.value = [...this.value, value];
|
|
271
294
|
this.added.emit({ value });
|
|
@@ -275,13 +298,13 @@ class ChipsComponent {
|
|
|
275
298
|
this.onTouched(this.value);
|
|
276
299
|
}
|
|
277
300
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
278
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChipsComponent, isStandalone: true, selector: "s-chips", inputs: { disabled: "disabled", field: "field", value: "value", placeholder: "placeholder", max: "max", maxLength: "maxLength", inputId: "inputId", allowDuplicated: "allowDuplicated", caseSensitiveDuplication: "caseSensitiveDuplication", addOnTab: "addOnTab", addOnBlur: "addOnBlur", separator: "separator", autofocus: "autofocus", infoLabel: "infoLabel", keyFilter: "keyFilter", showTooltip: "showTooltip", maxLengthRenderWithoutTooltip: "maxLengthRenderWithoutTooltip" }, outputs: { added: "added", removed: "removed", focused: "focused", focusLost: "focusLost", chipClicked: "chipClicked", valueChange: "valueChange" },
|
|
301
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChipsComponent, isStandalone: true, selector: "s-chips", inputs: { disabled: "disabled", field: "field", value: "value", placeholder: "placeholder", max: "max", maxLength: "maxLength", inputId: "inputId", allowDuplicated: "allowDuplicated", caseSensitiveDuplication: "caseSensitiveDuplication", addOnTab: "addOnTab", addOnBlur: "addOnBlur", separator: "separator", autofocus: "autofocus", infoLabel: "infoLabel", keyFilter: "keyFilter", showTooltip: "showTooltip", maxLengthRenderWithoutTooltip: "maxLengthRenderWithoutTooltip" }, outputs: { added: "added", removed: "removed", focused: "focused", focusLost: "focusLost", chipClicked: "chipClicked", valueChange: "valueChange" }, providers: [
|
|
279
302
|
{
|
|
280
303
|
provide: NG_VALUE_ACCESSOR,
|
|
281
304
|
useExisting: forwardRef(() => ChipsComponent),
|
|
282
305
|
multi: true,
|
|
283
306
|
},
|
|
284
|
-
], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ul\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]
|
|
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"] }] });
|
|
285
308
|
}
|
|
286
309
|
__decorate([
|
|
287
310
|
CheckDisabled()
|
|
@@ -297,7 +320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
297
320
|
useExisting: forwardRef(() => ChipsComponent),
|
|
298
321
|
multi: true,
|
|
299
322
|
},
|
|
300
|
-
], standalone: true, imports: [ChipItemComponent, FormsModule, KeyFilter], template: "<ul\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]
|
|
323
|
+
], standalone: true, imports: [ChipItemComponent, FormsModule, KeyFilter], 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"] }]
|
|
301
324
|
}], propDecorators: { disabled: [{
|
|
302
325
|
type: Input
|
|
303
326
|
}], field: [{
|
|
@@ -350,10 +373,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
350
373
|
}], input: [{
|
|
351
374
|
type: ViewChild,
|
|
352
375
|
args: ['input', { read: ElementRef }]
|
|
353
|
-
}],
|
|
354
|
-
type:
|
|
355
|
-
args: [
|
|
356
|
-
}], onInputLostFocus: [] } });
|
|
376
|
+
}], chipItems: [{
|
|
377
|
+
type: ViewChildren,
|
|
378
|
+
args: [ChipItemComponent]
|
|
379
|
+
}], onKeydown: [], onInputLostFocus: [] } });
|
|
357
380
|
|
|
358
381
|
class ChipsModule {
|
|
359
382
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -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, EventEmitter, Input, Output, TemplateRef } 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\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],\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 @CheckDisabled()\r\n clickedRemove($event: Event) {\r\n this.clickRemove.emit({ itemIndex: this.itemIndex, event: $event });\r\n }\r\n @CheckDisabled()\r\n onChipClicked($event: Event) {\r\n this.chipClicked.emit({ event: $event, data: this.dataRender });\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 class=\"rounded-medium border border-grayscale-50 bg-grayscale-10 break-words text-xs text-center flex items-center gap-2 px-1.5\"\n [ngClass]=\"{ 'hover:bg-grayscale-30': !disabled, 'opacity-50': disabled }\"\n (click)=\"onChipClicked($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\" [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 HostListener,\r\n Input,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\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 public isFocused = false;\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 @HostListener('document:keydown', ['$event'])\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 }\r\n const isTab = this.addOnTab && eventKeyIsTab;\r\n if (isEnter || isSeparator || isTab) {\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 this.isFocused = true;\r\n }\r\n\r\n @CheckDisabled()\r\n public onInputLostFocus($event: FocusEvent) {\r\n this.isFocused = false;\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 }\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 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]\"\n [class.outline]=\"isFocused\"\n [class.outline-2]=\"isFocused\"\n [class.outline-criticality-blue]=\"isFocused\">\n @for(item of value; track $index) {\n <li>\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 }@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 }\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":[],"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, 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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"}
|