@seniorsistemas/components-ai 0.0.0-master-d4a804fe
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/CHANGELOG.md +101 -0
- package/CONTRIBUTING.md +317 -0
- package/README.md +161 -0
- package/docs/API.md +486 -0
- package/docs/COMPONENTS.md +272 -0
- package/docs/EXAMPLES.md +559 -0
- package/docs/MIGRATION.md +367 -0
- package/esm2022/lib/angular-components.module.mjs +25 -0
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +121 -0
- package/esm2022/lib/components/bulk-delete-dialog/bulk-delete-dialog.component.mjs +176 -0
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +625 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-date.component.mjs +86 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-dropdown.component.mjs +103 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-lookup.component.mjs +599 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-number.component.mjs +92 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-text.component.mjs +163 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-textarea.component.mjs +81 -0
- package/esm2022/lib/components/dynamic-form/fields/dynamic-field-wrapper.component.mjs +93 -0
- package/esm2022/lib/components/dynamic-form/fields/index.mjs +8 -0
- package/esm2022/lib/components/dynamic-form/models/dynamic-form.models.mjs +2 -0
- package/esm2022/lib/components/export-dialog/export-dialog.component.mjs +219 -0
- package/esm2022/lib/config/translation.config.mjs +70 -0
- package/esm2022/lib/directives/cep-mask.directive.mjs +79 -0
- package/esm2022/lib/directives/document-mask.directive.mjs +62 -0
- package/esm2022/lib/directives/phone-mask.directive.mjs +59 -0
- package/esm2022/lib/interceptors/api.interceptor.mjs +55 -0
- package/esm2022/lib/models/base-entity.interface.mjs +2 -0
- package/esm2022/lib/models/entity-list.config.mjs +2 -0
- package/esm2022/lib/pipes/translate.pipe.mjs +74 -0
- package/esm2022/lib/services/auth.service.mjs +169 -0
- package/esm2022/lib/services/cookie.service.mjs +90 -0
- package/esm2022/lib/services/entity.service.mjs +208 -0
- package/esm2022/lib/services/mask.service.mjs +121 -0
- package/esm2022/lib/services/permission.service.mjs +180 -0
- package/esm2022/lib/services/senior-token.service.mjs +209 -0
- package/esm2022/lib/services/theme.service.mjs +85 -0
- package/esm2022/lib/services/translation.service.mjs +232 -0
- package/esm2022/public-api.mjs +90 -0
- package/esm2022/seniorsistemas-components-ai.mjs +5 -0
- package/fesm2022/seniorsistemas-components-ai.mjs +4006 -0
- package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/angular-components.module.d.ts +13 -0
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +23 -0
- package/lib/components/bulk-delete-dialog/bulk-delete-dialog.component.d.ts +46 -0
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +97 -0
- package/lib/components/dynamic-form/fields/dynamic-field-date.component.d.ts +16 -0
- package/lib/components/dynamic-form/fields/dynamic-field-dropdown.component.d.ts +17 -0
- package/lib/components/dynamic-form/fields/dynamic-field-lookup.component.d.ts +52 -0
- package/lib/components/dynamic-form/fields/dynamic-field-number.component.d.ts +16 -0
- package/lib/components/dynamic-form/fields/dynamic-field-text.component.d.ts +17 -0
- package/lib/components/dynamic-form/fields/dynamic-field-textarea.component.d.ts +16 -0
- package/lib/components/dynamic-form/fields/dynamic-field-wrapper.component.d.ts +20 -0
- package/lib/components/dynamic-form/fields/index.d.ts +7 -0
- package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +178 -0
- package/lib/components/export-dialog/export-dialog.component.d.ts +56 -0
- package/lib/config/translation.config.d.ts +24 -0
- package/lib/directives/cep-mask.directive.d.ts +13 -0
- package/lib/directives/document-mask.directive.d.ts +19 -0
- package/lib/directives/phone-mask.directive.d.ts +11 -0
- package/lib/interceptors/api.interceptor.d.ts +2 -0
- package/lib/models/base-entity.interface.d.ts +7 -0
- package/lib/models/entity-list.config.d.ts +161 -0
- package/lib/pipes/translate.pipe.d.ts +21 -0
- package/lib/services/auth.service.d.ts +82 -0
- package/lib/services/cookie.service.d.ts +31 -0
- package/lib/services/entity.service.d.ts +99 -0
- package/lib/services/mask.service.d.ts +36 -0
- package/lib/services/permission.service.d.ts +91 -0
- package/lib/services/senior-token.service.d.ts +70 -0
- package/lib/services/theme.service.d.ts +16 -0
- package/lib/services/translation.service.d.ts +54 -0
- package/package.json +53 -0
- package/public-api.d.ts +17 -0
- package/src/lib/styles/entity-list.shared.scss +383 -0
- package/src/lib/styles/index.scss +10 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Documentação de Componentes
|
|
2
|
+
|
|
3
|
+
## 📦 @seniorsistemas/components-ia
|
|
4
|
+
|
|
5
|
+
Esta biblioteca fornece componentes reutilizáveis com inteligência artificial para aplicações da Senior Sistemas.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🎨 Componentes Disponíveis
|
|
10
|
+
|
|
11
|
+
### Dynamic Form Component
|
|
12
|
+
|
|
13
|
+
Componente de formulário dinâmico que renderiza campos baseado em configuração.
|
|
14
|
+
|
|
15
|
+
**Seletor**: `sia-dynamic-form`
|
|
16
|
+
|
|
17
|
+
**Inputs**:
|
|
18
|
+
- `formFields: DynamicFormFieldConfig[]` - Configuração dos campos (modo direto)
|
|
19
|
+
- `formSections: DynamicFormSection[]` - Configuração com seções
|
|
20
|
+
- `entity: any` - Entidade para edição (opcional)
|
|
21
|
+
- `mode: 'create' | 'edit' | 'filter' | 'inline-edit'` - Modo do formulário
|
|
22
|
+
- `displayMode: 'inline' | 'dialog' | 'drawer'` - Modo de exibição
|
|
23
|
+
- `visible: boolean` - Visibilidade (para dialog/drawer)
|
|
24
|
+
- `dialogHeader: string` - Título do dialog/drawer
|
|
25
|
+
- `submitButtonLabel: string` - Label do botão submit
|
|
26
|
+
- `cancelButtonLabel: string` - Label do botão cancelar
|
|
27
|
+
|
|
28
|
+
**Outputs**:
|
|
29
|
+
- `onSubmit: EventEmitter<any>` - Emitido ao submeter o formulário
|
|
30
|
+
- `onCancel: EventEmitter<void>` - Emitido ao cancelar
|
|
31
|
+
- `visibleChange: EventEmitter<boolean>` - Two-way binding de visibilidade
|
|
32
|
+
|
|
33
|
+
**Métodos Públicos**:
|
|
34
|
+
- `getForm(): FormGroup` - Retorna o FormGroup
|
|
35
|
+
- `resetForm(): void` - Reseta o formulário
|
|
36
|
+
|
|
37
|
+
**Exemplo Básico**:
|
|
38
|
+
```typescript
|
|
39
|
+
<sia-dynamic-form
|
|
40
|
+
[formFields]="fields"
|
|
41
|
+
[mode]="'create'"
|
|
42
|
+
(onSubmit)="handleSubmit($event)"
|
|
43
|
+
></sia-dynamic-form>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Exemplo com Dialog**:
|
|
47
|
+
```typescript
|
|
48
|
+
<sia-dynamic-form
|
|
49
|
+
[(visible)]="showDialog"
|
|
50
|
+
[formFields]="fields"
|
|
51
|
+
[entity]="selectedEntity"
|
|
52
|
+
[mode]="'edit'"
|
|
53
|
+
[displayMode]="'dialog'"
|
|
54
|
+
[dialogHeader]="'Editar Registro'"
|
|
55
|
+
(onSubmit)="handleSubmit($event)"
|
|
56
|
+
></sia-dynamic-form>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Exemplo com Seções**:
|
|
60
|
+
```typescript
|
|
61
|
+
<sia-dynamic-form
|
|
62
|
+
[formSections]="sections"
|
|
63
|
+
[mode]="'create'"
|
|
64
|
+
(onSubmit)="handleSubmit($event)"
|
|
65
|
+
></sia-dynamic-form>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Exemplo Inline Edit**:
|
|
69
|
+
```typescript
|
|
70
|
+
<sia-dynamic-form
|
|
71
|
+
[formFields]="fields"
|
|
72
|
+
[entity]="entity"
|
|
73
|
+
[mode]="'inline-edit'"
|
|
74
|
+
(onSubmit)="handleSubmit($event)"
|
|
75
|
+
></sia-dynamic-form>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Export Dialog Component
|
|
81
|
+
|
|
82
|
+
Dialog para exportação de dados em Excel ou PDF.
|
|
83
|
+
|
|
84
|
+
**Seletor**: `sia-export-dialog`
|
|
85
|
+
|
|
86
|
+
**Inputs**:
|
|
87
|
+
- `visible: boolean` - Visibilidade do dialog
|
|
88
|
+
- `data: any[]` - Dados para exportação
|
|
89
|
+
- `columns: ColumnOption[]` - Configuração das colunas
|
|
90
|
+
- `fileName: string` - Nome do arquivo (padrão: 'export')
|
|
91
|
+
|
|
92
|
+
**Outputs**:
|
|
93
|
+
- `visibleChange: EventEmitter<boolean>` - Two-way binding de visibilidade
|
|
94
|
+
|
|
95
|
+
**Exemplo**:
|
|
96
|
+
```typescript
|
|
97
|
+
<sia-export-dialog
|
|
98
|
+
[(visible)]="showExportDialog"
|
|
99
|
+
[data]="records"
|
|
100
|
+
[columns]="exportColumns"
|
|
101
|
+
[fileName]="'relatorio-produtos'"
|
|
102
|
+
></sia-export-dialog>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
### Bulk Delete Dialog Component
|
|
108
|
+
|
|
109
|
+
Dialog para exclusão em massa de registros.
|
|
110
|
+
|
|
111
|
+
**Seletor**: `sia-bulk-delete-dialog`
|
|
112
|
+
|
|
113
|
+
**Inputs**:
|
|
114
|
+
- `visible: boolean` - Visibilidade do dialog
|
|
115
|
+
- `selectedItems: any[]` - Itens selecionados
|
|
116
|
+
- `entityName: string` - Nome da entidade (singular)
|
|
117
|
+
- `entityPluralName: string` - Nome da entidade (plural)
|
|
118
|
+
|
|
119
|
+
**Outputs**:
|
|
120
|
+
- `visibleChange: EventEmitter<boolean>` - Two-way binding de visibilidade
|
|
121
|
+
- `onConfirm: EventEmitter<void>` - Emitido ao confirmar exclusão
|
|
122
|
+
|
|
123
|
+
**Exemplo**:
|
|
124
|
+
```typescript
|
|
125
|
+
<sia-bulk-delete-dialog
|
|
126
|
+
[(visible)]="showBulkDeleteDialog"
|
|
127
|
+
[selectedItems]="selectedRecords"
|
|
128
|
+
[entityName]="'produto'"
|
|
129
|
+
[entityPluralName]="'produtos'"
|
|
130
|
+
(onConfirm)="handleBulkDelete()"
|
|
131
|
+
></sia-bulk-delete-dialog>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
### Breadcrumb Component
|
|
137
|
+
|
|
138
|
+
Componente de navegação breadcrumb.
|
|
139
|
+
|
|
140
|
+
**Seletor**: `sia-breadcrumb`
|
|
141
|
+
|
|
142
|
+
**Inputs**:
|
|
143
|
+
- `items: MenuItem[]` - Itens do breadcrumb (PrimeNG MenuItem)
|
|
144
|
+
- `home: MenuItem` - Item home (opcional)
|
|
145
|
+
|
|
146
|
+
**Exemplo**:
|
|
147
|
+
```typescript
|
|
148
|
+
<sia-breadcrumb
|
|
149
|
+
[items]="breadcrumbItems"
|
|
150
|
+
[home]="{ icon: 'pi pi-home', routerLink: '/' }"
|
|
151
|
+
></sia-breadcrumb>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
breadcrumbItems: MenuItem[] = [
|
|
156
|
+
{ label: 'Cadastros' },
|
|
157
|
+
{ label: 'Produtos', routerLink: '/products' },
|
|
158
|
+
{ label: 'Editar' }
|
|
159
|
+
];
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 🔧 Tipos e Interfaces
|
|
165
|
+
|
|
166
|
+
### DynamicFormFieldConfig
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
interface DynamicFormFieldConfig {
|
|
170
|
+
name: string; // Nome do campo
|
|
171
|
+
label: string; // Label exibido
|
|
172
|
+
type: FieldType; // Tipo do campo
|
|
173
|
+
value?: any; // Valor inicial
|
|
174
|
+
required?: boolean; // Campo obrigatório
|
|
175
|
+
disabled?: boolean; // Campo desabilitado
|
|
176
|
+
placeholder?: string; // Placeholder
|
|
177
|
+
options?: SelectOption[]; // Opções (select, radio, checkbox)
|
|
178
|
+
rows?: number; // Linhas (textarea)
|
|
179
|
+
mask?: string; // Máscara (text)
|
|
180
|
+
validators?: ValidatorFn[]; // Validadores customizados
|
|
181
|
+
lookupConfig?: LookupConfig; // Config para lookup
|
|
182
|
+
dateFormat?: string; // Formato de data
|
|
183
|
+
showTime?: boolean; // Mostrar hora (date)
|
|
184
|
+
minDate?: Date; // Data mínima
|
|
185
|
+
maxDate?: Date; // Data máxima
|
|
186
|
+
accept?: string; // Tipos aceitos (file)
|
|
187
|
+
multiple?: boolean; // Múltiplos arquivos
|
|
188
|
+
min?: number; // Valor mínimo (number)
|
|
189
|
+
max?: number; // Valor máximo (number)
|
|
190
|
+
step?: number; // Incremento (number)
|
|
191
|
+
cols?: number; // Colunas do grid (1-12)
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### DynamicFormSection
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
interface DynamicFormSection {
|
|
199
|
+
title: string; // Título da seção
|
|
200
|
+
fields: DynamicFormFieldConfig[]; // Campos da seção
|
|
201
|
+
collapsible?: boolean; // Seção colapsável
|
|
202
|
+
collapsed?: boolean; // Inicialmente colapsada
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### FieldType
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
enum FieldType {
|
|
210
|
+
TEXT = 'text',
|
|
211
|
+
TEXTAREA = 'textarea',
|
|
212
|
+
NUMBER = 'number',
|
|
213
|
+
EMAIL = 'email',
|
|
214
|
+
PASSWORD = 'password',
|
|
215
|
+
DATE = 'date',
|
|
216
|
+
DATETIME = 'datetime',
|
|
217
|
+
SELECT = 'select',
|
|
218
|
+
MULTISELECT = 'multiselect',
|
|
219
|
+
CHECKBOX = 'checkbox',
|
|
220
|
+
RADIO = 'radio',
|
|
221
|
+
SWITCH = 'switch',
|
|
222
|
+
LOOKUP = 'lookup',
|
|
223
|
+
FILE = 'file',
|
|
224
|
+
HIDDEN = 'hidden'
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### ColumnOption
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
interface ColumnOption {
|
|
232
|
+
field: string; // Nome do campo
|
|
233
|
+
header: string; // Cabeçalho da coluna
|
|
234
|
+
selected?: boolean; // Selecionada para exportação
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 📱 Responsividade
|
|
241
|
+
|
|
242
|
+
Todos os componentes são responsivos e se adaptam a diferentes tamanhos de tela:
|
|
243
|
+
|
|
244
|
+
- **Desktop**: Layout completo com todas as features
|
|
245
|
+
- **Tablet**: Layout adaptado com priorização de conteúdo
|
|
246
|
+
- **Mobile**: Layout otimizado para toque e telas pequenas
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 🎨 Temas
|
|
251
|
+
|
|
252
|
+
Os componentes suportam temas do PrimeNG e se adaptam automaticamente ao tema configurado na aplicação.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## ♿ Acessibilidade
|
|
257
|
+
|
|
258
|
+
Todos os componentes seguem as diretrizes de acessibilidade:
|
|
259
|
+
|
|
260
|
+
- Labels associados aos campos
|
|
261
|
+
- Navegação por teclado
|
|
262
|
+
- ARIA attributes
|
|
263
|
+
- Contraste adequado
|
|
264
|
+
- Foco visível
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## 🔗 Veja Também
|
|
269
|
+
|
|
270
|
+
- [Exemplos Práticos](./EXAMPLES.md)
|
|
271
|
+
- [Referência da API](./API.md)
|
|
272
|
+
- [Guia de Migração](./MIGRATION.md)
|