@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.
Files changed (76) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/CONTRIBUTING.md +317 -0
  3. package/README.md +161 -0
  4. package/docs/API.md +486 -0
  5. package/docs/COMPONENTS.md +272 -0
  6. package/docs/EXAMPLES.md +559 -0
  7. package/docs/MIGRATION.md +367 -0
  8. package/esm2022/lib/angular-components.module.mjs +25 -0
  9. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +121 -0
  10. package/esm2022/lib/components/bulk-delete-dialog/bulk-delete-dialog.component.mjs +176 -0
  11. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +625 -0
  12. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-date.component.mjs +86 -0
  13. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-dropdown.component.mjs +103 -0
  14. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-lookup.component.mjs +599 -0
  15. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-number.component.mjs +92 -0
  16. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-text.component.mjs +163 -0
  17. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-textarea.component.mjs +81 -0
  18. package/esm2022/lib/components/dynamic-form/fields/dynamic-field-wrapper.component.mjs +93 -0
  19. package/esm2022/lib/components/dynamic-form/fields/index.mjs +8 -0
  20. package/esm2022/lib/components/dynamic-form/models/dynamic-form.models.mjs +2 -0
  21. package/esm2022/lib/components/export-dialog/export-dialog.component.mjs +219 -0
  22. package/esm2022/lib/config/translation.config.mjs +70 -0
  23. package/esm2022/lib/directives/cep-mask.directive.mjs +79 -0
  24. package/esm2022/lib/directives/document-mask.directive.mjs +62 -0
  25. package/esm2022/lib/directives/phone-mask.directive.mjs +59 -0
  26. package/esm2022/lib/interceptors/api.interceptor.mjs +55 -0
  27. package/esm2022/lib/models/base-entity.interface.mjs +2 -0
  28. package/esm2022/lib/models/entity-list.config.mjs +2 -0
  29. package/esm2022/lib/pipes/translate.pipe.mjs +74 -0
  30. package/esm2022/lib/services/auth.service.mjs +169 -0
  31. package/esm2022/lib/services/cookie.service.mjs +90 -0
  32. package/esm2022/lib/services/entity.service.mjs +208 -0
  33. package/esm2022/lib/services/mask.service.mjs +121 -0
  34. package/esm2022/lib/services/permission.service.mjs +180 -0
  35. package/esm2022/lib/services/senior-token.service.mjs +209 -0
  36. package/esm2022/lib/services/theme.service.mjs +85 -0
  37. package/esm2022/lib/services/translation.service.mjs +232 -0
  38. package/esm2022/public-api.mjs +90 -0
  39. package/esm2022/seniorsistemas-components-ai.mjs +5 -0
  40. package/fesm2022/seniorsistemas-components-ai.mjs +4006 -0
  41. package/fesm2022/seniorsistemas-components-ai.mjs.map +1 -0
  42. package/index.d.ts +5 -0
  43. package/lib/angular-components.module.d.ts +13 -0
  44. package/lib/components/breadcrumb/breadcrumb.component.d.ts +23 -0
  45. package/lib/components/bulk-delete-dialog/bulk-delete-dialog.component.d.ts +46 -0
  46. package/lib/components/dynamic-form/dynamic-form.component.d.ts +97 -0
  47. package/lib/components/dynamic-form/fields/dynamic-field-date.component.d.ts +16 -0
  48. package/lib/components/dynamic-form/fields/dynamic-field-dropdown.component.d.ts +17 -0
  49. package/lib/components/dynamic-form/fields/dynamic-field-lookup.component.d.ts +52 -0
  50. package/lib/components/dynamic-form/fields/dynamic-field-number.component.d.ts +16 -0
  51. package/lib/components/dynamic-form/fields/dynamic-field-text.component.d.ts +17 -0
  52. package/lib/components/dynamic-form/fields/dynamic-field-textarea.component.d.ts +16 -0
  53. package/lib/components/dynamic-form/fields/dynamic-field-wrapper.component.d.ts +20 -0
  54. package/lib/components/dynamic-form/fields/index.d.ts +7 -0
  55. package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +178 -0
  56. package/lib/components/export-dialog/export-dialog.component.d.ts +56 -0
  57. package/lib/config/translation.config.d.ts +24 -0
  58. package/lib/directives/cep-mask.directive.d.ts +13 -0
  59. package/lib/directives/document-mask.directive.d.ts +19 -0
  60. package/lib/directives/phone-mask.directive.d.ts +11 -0
  61. package/lib/interceptors/api.interceptor.d.ts +2 -0
  62. package/lib/models/base-entity.interface.d.ts +7 -0
  63. package/lib/models/entity-list.config.d.ts +161 -0
  64. package/lib/pipes/translate.pipe.d.ts +21 -0
  65. package/lib/services/auth.service.d.ts +82 -0
  66. package/lib/services/cookie.service.d.ts +31 -0
  67. package/lib/services/entity.service.d.ts +99 -0
  68. package/lib/services/mask.service.d.ts +36 -0
  69. package/lib/services/permission.service.d.ts +91 -0
  70. package/lib/services/senior-token.service.d.ts +70 -0
  71. package/lib/services/theme.service.d.ts +16 -0
  72. package/lib/services/translation.service.d.ts +54 -0
  73. package/package.json +53 -0
  74. package/public-api.d.ts +17 -0
  75. package/src/lib/styles/entity-list.shared.scss +383 -0
  76. 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)