@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
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
4
|
+
|
|
5
|
+
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
|
|
6
|
+
e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2026-02-13
|
|
9
|
+
|
|
10
|
+
### 🎉 Lançamento Inicial
|
|
11
|
+
|
|
12
|
+
Primeira versão da biblioteca `@seniorsistemas/components-ia`.
|
|
13
|
+
|
|
14
|
+
### ✨ Adicionado
|
|
15
|
+
|
|
16
|
+
#### Componentes
|
|
17
|
+
- **DynamicFormComponent** - Formulário dinâmico com suporte a:
|
|
18
|
+
- Múltiplos tipos de campo (text, number, date, select, lookup, etc)
|
|
19
|
+
- Modos: create, edit, filter, inline-edit
|
|
20
|
+
- Display modes: inline, dialog, drawer
|
|
21
|
+
- Suporte a seções colapsáveis
|
|
22
|
+
- Validações customizadas
|
|
23
|
+
- Máscaras de input
|
|
24
|
+
|
|
25
|
+
- **ExportDialogComponent** - Exportação de dados em Excel e PDF
|
|
26
|
+
- **BulkDeleteDialogComponent** - Exclusão em massa com confirmação
|
|
27
|
+
- **BreadcrumbComponent** - Navegação breadcrumb
|
|
28
|
+
|
|
29
|
+
#### Serviços
|
|
30
|
+
- **EntityService<T>** - Serviço base genérico para CRUD
|
|
31
|
+
- `list()` - Listagem com paginação
|
|
32
|
+
- `getById()` - Buscar por ID
|
|
33
|
+
- `insert()` - Criar registro
|
|
34
|
+
- `update()` - Atualizar registro
|
|
35
|
+
- `delete()` - Excluir registro
|
|
36
|
+
- `bulkDelete()` - Exclusão em massa
|
|
37
|
+
|
|
38
|
+
- **TranslationService** - Internacionalização (i18n)
|
|
39
|
+
- **ThemeService** - Gerenciamento de temas light/dark
|
|
40
|
+
- **AuthService** - Autenticação e tokens
|
|
41
|
+
- **PermissionService** - Controle de permissões
|
|
42
|
+
- **CookieService** - Gerenciamento de cookies
|
|
43
|
+
- **SeniorTokenService** - Tokens Senior
|
|
44
|
+
- **MaskService** - Máscaras de input
|
|
45
|
+
|
|
46
|
+
#### Diretivas
|
|
47
|
+
- **CepMaskDirective** - Máscara de CEP (00000-000)
|
|
48
|
+
- **DocumentMaskDirective** - Máscara de CPF/CNPJ
|
|
49
|
+
- **PhoneMaskDirective** - Máscara de telefone
|
|
50
|
+
|
|
51
|
+
#### Pipes
|
|
52
|
+
- **TranslatePipe** - Pipe de tradução
|
|
53
|
+
|
|
54
|
+
#### Interceptors
|
|
55
|
+
- **apiInterceptor** - Interceptor HTTP para API
|
|
56
|
+
|
|
57
|
+
#### Modelos
|
|
58
|
+
- **BaseEntity** - Interface base para entidades
|
|
59
|
+
- **DynamicFormFieldConfig** - Configuração de campos
|
|
60
|
+
- **DynamicFormSection** - Configuração de seções
|
|
61
|
+
- **FieldType** - Enum de tipos de campo
|
|
62
|
+
- **ColumnOption** - Configuração de colunas
|
|
63
|
+
|
|
64
|
+
#### Documentação
|
|
65
|
+
- **COMPONENTS.md** - Documentação completa de componentes
|
|
66
|
+
- **EXAMPLES.md** - Exemplos práticos
|
|
67
|
+
- **API.md** - Referência da API
|
|
68
|
+
- **MIGRATION.md** - Guia de migração
|
|
69
|
+
- **README.md** - Documentação principal
|
|
70
|
+
|
|
71
|
+
### 📦 Configuração
|
|
72
|
+
- Suporte a Angular 18.2+
|
|
73
|
+
- Integração com PrimeNG 18.0+
|
|
74
|
+
- Prefixo de componentes: `sia-`
|
|
75
|
+
- Build otimizado com ng-packagr
|
|
76
|
+
- Assets incluem estilos SCSS e documentação
|
|
77
|
+
|
|
78
|
+
### 🎨 Estilos
|
|
79
|
+
- Estilos compartilhados para listagens
|
|
80
|
+
- Suporte a temas PrimeNG
|
|
81
|
+
- Responsividade mobile-first
|
|
82
|
+
- Acessibilidade (ARIA)
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Tipos de Mudanças
|
|
87
|
+
|
|
88
|
+
- `✨ Adicionado` - Novas funcionalidades
|
|
89
|
+
- `🔄 Modificado` - Mudanças em funcionalidades existentes
|
|
90
|
+
- `🗑️ Removido` - Funcionalidades removidas
|
|
91
|
+
- `🐛 Corrigido` - Correções de bugs
|
|
92
|
+
- `🔒 Segurança` - Correções de vulnerabilidades
|
|
93
|
+
- `⚠️ Descontinuado` - Funcionalidades que serão removidas
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Links
|
|
98
|
+
|
|
99
|
+
- [Documentação](./docs/COMPONENTS.md)
|
|
100
|
+
- [Exemplos](./docs/EXAMPLES.md)
|
|
101
|
+
- [API Reference](./docs/API.md)
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
# Guia de Contribuição
|
|
2
|
+
|
|
3
|
+
Obrigado por considerar contribuir com `@seniorsistemas/components-ia`! 🎉
|
|
4
|
+
|
|
5
|
+
## 📋 Índice
|
|
6
|
+
|
|
7
|
+
- [Código de Conduta](#código-de-conduta)
|
|
8
|
+
- [Como Contribuir](#como-contribuir)
|
|
9
|
+
- [Padrões de Código](#padrões-de-código)
|
|
10
|
+
- [Processo de Pull Request](#processo-de-pull-request)
|
|
11
|
+
- [Estrutura do Projeto](#estrutura-do-projeto)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 📜 Código de Conduta
|
|
16
|
+
|
|
17
|
+
Este projeto adere a um código de conduta. Ao participar, você concorda em manter um ambiente respeitoso e colaborativo.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 🤝 Como Contribuir
|
|
22
|
+
|
|
23
|
+
### Reportar Bugs
|
|
24
|
+
|
|
25
|
+
Se encontrar um bug, por favor abra uma issue com:
|
|
26
|
+
|
|
27
|
+
- Descrição clara do problema
|
|
28
|
+
- Passos para reproduzir
|
|
29
|
+
- Comportamento esperado vs atual
|
|
30
|
+
- Versão da biblioteca e Angular
|
|
31
|
+
- Screenshots (se aplicável)
|
|
32
|
+
|
|
33
|
+
### Sugerir Melhorias
|
|
34
|
+
|
|
35
|
+
Para sugerir novas funcionalidades:
|
|
36
|
+
|
|
37
|
+
- Descreva o caso de uso
|
|
38
|
+
- Explique por que seria útil
|
|
39
|
+
- Forneça exemplos de uso
|
|
40
|
+
- Considere alternativas
|
|
41
|
+
|
|
42
|
+
### Contribuir com Código
|
|
43
|
+
|
|
44
|
+
1. **Fork o repositório**
|
|
45
|
+
2. **Clone seu fork**
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/seu-usuario/components-ia.git
|
|
48
|
+
```
|
|
49
|
+
3. **Crie uma branch**
|
|
50
|
+
```bash
|
|
51
|
+
git checkout -b feature/minha-feature
|
|
52
|
+
```
|
|
53
|
+
4. **Faça suas alterações**
|
|
54
|
+
5. **Commit suas mudanças**
|
|
55
|
+
```bash
|
|
56
|
+
git commit -m "feat: adiciona nova funcionalidade"
|
|
57
|
+
```
|
|
58
|
+
6. **Push para o GitHub**
|
|
59
|
+
```bash
|
|
60
|
+
git push origin feature/minha-feature
|
|
61
|
+
```
|
|
62
|
+
7. **Abra um Pull Request**
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 💻 Padrões de Código
|
|
67
|
+
|
|
68
|
+
### Convenções de Nomenclatura
|
|
69
|
+
|
|
70
|
+
- **Componentes**: PascalCase (ex: `DynamicFormComponent`)
|
|
71
|
+
- **Serviços**: PascalCase com sufixo Service (ex: `EntityService`)
|
|
72
|
+
- **Interfaces**: PascalCase (ex: `DynamicFormFieldConfig`)
|
|
73
|
+
- **Enums**: PascalCase (ex: `FieldType`)
|
|
74
|
+
- **Variáveis**: camelCase (ex: `formFields`)
|
|
75
|
+
- **Constantes**: UPPER_SNAKE_CASE (ex: `DEFAULT_PAGE_SIZE`)
|
|
76
|
+
|
|
77
|
+
### Estrutura de Arquivos
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
component-name/
|
|
81
|
+
├── component-name.component.ts
|
|
82
|
+
├── component-name.component.html
|
|
83
|
+
├── component-name.component.scss
|
|
84
|
+
├── component-name.component.spec.ts
|
|
85
|
+
└── README.md (opcional)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### TypeScript
|
|
89
|
+
|
|
90
|
+
- Use tipos explícitos sempre que possível
|
|
91
|
+
- Evite `any` (use `unknown` se necessário)
|
|
92
|
+
- Use interfaces para objetos complexos
|
|
93
|
+
- Documente funções públicas com JSDoc
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
/**
|
|
97
|
+
* Cria um novo registro
|
|
98
|
+
* @param entity - Dados da entidade
|
|
99
|
+
* @returns Observable com a entidade criada
|
|
100
|
+
*/
|
|
101
|
+
insert(entity: Partial<T>): Observable<T> {
|
|
102
|
+
return this.http.post<T>(this.apiUrl, entity);
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### HTML/Templates
|
|
107
|
+
|
|
108
|
+
- Use formatação consistente
|
|
109
|
+
- Prefira `*ngIf` e `*ngFor` ao invés de `ng-template`
|
|
110
|
+
- Use `trackBy` em `*ngFor` para performance
|
|
111
|
+
- Mantenha templates simples (lógica no component)
|
|
112
|
+
|
|
113
|
+
### SCSS
|
|
114
|
+
|
|
115
|
+
- Use variáveis para cores e espaçamentos
|
|
116
|
+
- Siga a metodologia BEM quando apropriado
|
|
117
|
+
- Evite seletores profundos
|
|
118
|
+
- Use mixins para código reutilizável
|
|
119
|
+
|
|
120
|
+
### Commits
|
|
121
|
+
|
|
122
|
+
Siga o padrão [Conventional Commits](https://www.conventionalcommits.org/):
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
<tipo>(<escopo>): <descrição>
|
|
126
|
+
|
|
127
|
+
[corpo opcional]
|
|
128
|
+
|
|
129
|
+
[rodapé opcional]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Tipos:**
|
|
133
|
+
- `feat`: Nova funcionalidade
|
|
134
|
+
- `fix`: Correção de bug
|
|
135
|
+
- `docs`: Documentação
|
|
136
|
+
- `style`: Formatação (não afeta código)
|
|
137
|
+
- `refactor`: Refatoração
|
|
138
|
+
- `test`: Testes
|
|
139
|
+
- `chore`: Manutenção
|
|
140
|
+
|
|
141
|
+
**Exemplos:**
|
|
142
|
+
```
|
|
143
|
+
feat(dynamic-form): adiciona suporte a validação assíncrona
|
|
144
|
+
fix(export-dialog): corrige exportação de datas
|
|
145
|
+
docs(readme): atualiza exemplos de uso
|
|
146
|
+
refactor(entity-service): melhora tipagem genérica
|
|
147
|
+
test(breadcrumb): adiciona testes unitários
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 🔄 Processo de Pull Request
|
|
153
|
+
|
|
154
|
+
### Checklist
|
|
155
|
+
|
|
156
|
+
Antes de submeter um PR, verifique:
|
|
157
|
+
|
|
158
|
+
- [ ] Código segue os padrões do projeto
|
|
159
|
+
- [ ] Testes foram adicionados/atualizados
|
|
160
|
+
- [ ] Documentação foi atualizada
|
|
161
|
+
- [ ] Build passa sem erros
|
|
162
|
+
- [ ] Testes passam
|
|
163
|
+
- [ ] Commit messages seguem o padrão
|
|
164
|
+
- [ ] Branch está atualizada com main
|
|
165
|
+
|
|
166
|
+
### Revisão
|
|
167
|
+
|
|
168
|
+
- PRs serão revisados por mantenedores
|
|
169
|
+
- Feedback será fornecido via comentários
|
|
170
|
+
- Mudanças podem ser solicitadas
|
|
171
|
+
- Após aprovação, o PR será merged
|
|
172
|
+
|
|
173
|
+
### Após o Merge
|
|
174
|
+
|
|
175
|
+
- Sua contribuição será incluída no próximo release
|
|
176
|
+
- Você será creditado no CHANGELOG
|
|
177
|
+
- Obrigado pela contribuição! 🎉
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 📁 Estrutura do Projeto
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
components-ia/
|
|
185
|
+
├── projects/
|
|
186
|
+
│ └── seniorsistemas/
|
|
187
|
+
│ └── components-ia/
|
|
188
|
+
│ ├── src/
|
|
189
|
+
│ │ ├── lib/
|
|
190
|
+
│ │ │ ├── components/ # Componentes
|
|
191
|
+
│ │ │ ├── services/ # Serviços
|
|
192
|
+
│ │ │ ├── directives/ # Diretivas
|
|
193
|
+
│ │ │ ├── pipes/ # Pipes
|
|
194
|
+
│ │ │ ├── models/ # Interfaces/Types
|
|
195
|
+
│ │ │ ├── interceptors/ # Interceptors
|
|
196
|
+
│ │ │ ├── config/ # Configurações
|
|
197
|
+
│ │ │ └── styles/ # Estilos globais
|
|
198
|
+
│ │ └── public-api.ts # API pública
|
|
199
|
+
│ ├── docs/ # Documentação
|
|
200
|
+
│ ├── package.json
|
|
201
|
+
│ ├── README.md
|
|
202
|
+
│ ├── CHANGELOG.md
|
|
203
|
+
│ └── CONTRIBUTING.md
|
|
204
|
+
├── angular.json
|
|
205
|
+
├── package.json
|
|
206
|
+
└── tsconfig.json
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 🧪 Testes
|
|
212
|
+
|
|
213
|
+
### Executar Testes
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
npm run test
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Cobertura
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
npm run test:coverage
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Escrever Testes
|
|
226
|
+
|
|
227
|
+
- Teste comportamento, não implementação
|
|
228
|
+
- Use mocks para dependências
|
|
229
|
+
- Teste casos de sucesso e erro
|
|
230
|
+
- Mantenha testes simples e legíveis
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
describe('DynamicFormComponent', () => {
|
|
234
|
+
it('should create form with fields', () => {
|
|
235
|
+
const fields: DynamicFormFieldConfig[] = [
|
|
236
|
+
{ name: 'name', label: 'Nome', type: FieldType.TEXT, cols: 12 }
|
|
237
|
+
];
|
|
238
|
+
component.formFields = fields;
|
|
239
|
+
component.ngOnInit();
|
|
240
|
+
expect(component.getForm().get('name')).toBeDefined();
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 📖 Documentação
|
|
248
|
+
|
|
249
|
+
### Atualizar Documentação
|
|
250
|
+
|
|
251
|
+
Ao adicionar/modificar funcionalidades:
|
|
252
|
+
|
|
253
|
+
1. Atualize `docs/COMPONENTS.md`
|
|
254
|
+
2. Adicione exemplos em `docs/EXAMPLES.md`
|
|
255
|
+
3. Atualize `docs/API.md` se necessário
|
|
256
|
+
4. Atualize `CHANGELOG.md`
|
|
257
|
+
5. Atualize `README.md` se relevante
|
|
258
|
+
|
|
259
|
+
### Escrever Documentação
|
|
260
|
+
|
|
261
|
+
- Use linguagem clara e objetiva
|
|
262
|
+
- Forneça exemplos práticos
|
|
263
|
+
- Inclua casos de uso comuns
|
|
264
|
+
- Documente parâmetros e retornos
|
|
265
|
+
- Adicione screenshots quando útil
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## 🚀 Build e Publicação
|
|
270
|
+
|
|
271
|
+
### Build Local
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
npm run build
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Testar Localmente
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# Na biblioteca
|
|
281
|
+
cd dist/seniorsistemas/components-ia
|
|
282
|
+
npm link
|
|
283
|
+
|
|
284
|
+
# No projeto de teste
|
|
285
|
+
npm link @seniorsistemas/components-ia
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Publicação
|
|
289
|
+
|
|
290
|
+
Apenas mantenedores podem publicar:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
npm run build:prod
|
|
294
|
+
cd dist/seniorsistemas/components-ia
|
|
295
|
+
npm publish
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 💡 Dicas
|
|
301
|
+
|
|
302
|
+
- Comece com issues marcadas como `good first issue`
|
|
303
|
+
- Pergunte se tiver dúvidas
|
|
304
|
+
- Mantenha PRs focados e pequenos
|
|
305
|
+
- Seja paciente durante a revisão
|
|
306
|
+
- Aprenda com o feedback
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 📞 Contato
|
|
311
|
+
|
|
312
|
+
- Issues: [GitHub Issues](https://github.com/senior-sistemas/components-ia/issues)
|
|
313
|
+
- Discussões: [GitHub Discussions](https://github.com/senior-sistemas/components-ia/discussions)
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
Obrigado por contribuir! 🙏
|
package/README.md
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# @seniorsistemas/components-ia
|
|
2
|
+
|
|
3
|
+
Biblioteca de componentes reutilizáveis com inteligência artificial para aplicações da Senior Sistemas.
|
|
4
|
+
|
|
5
|
+
## 📦 Instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @seniorsistemas/components-ia
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 🎯 Objetivo
|
|
12
|
+
|
|
13
|
+
Esta biblioteca fornece componentes, serviços e utilitários comuns para acelerar o desenvolvimento de aplicações, eliminando duplicação de código e garantindo consistência entre projetos.
|
|
14
|
+
|
|
15
|
+
## 🚀 Recursos
|
|
16
|
+
|
|
17
|
+
### Componentes
|
|
18
|
+
- **DynamicFormComponent** - Formulário dinâmico com múltiplos modos e tipos de campo
|
|
19
|
+
- **ExportDialogComponent** - Exportação de dados (Excel, PDF)
|
|
20
|
+
- **BulkDeleteDialogComponent** - Exclusão em massa
|
|
21
|
+
- **BreadcrumbComponent** - Navegação breadcrumb
|
|
22
|
+
|
|
23
|
+
### Serviços
|
|
24
|
+
- **EntityService** - Serviço base genérico para CRUD
|
|
25
|
+
- **AuthService** - Autenticação
|
|
26
|
+
- **TranslationService** - Internacionalização
|
|
27
|
+
- **ThemeService** - Gerenciamento de temas
|
|
28
|
+
- **PermissionService** - Controle de permissões
|
|
29
|
+
|
|
30
|
+
### Diretivas
|
|
31
|
+
- **CepMaskDirective** - Máscara de CEP
|
|
32
|
+
- **DocumentMaskDirective** - Máscara de CPF/CNPJ
|
|
33
|
+
- **PhoneMaskDirective** - Máscara de telefone
|
|
34
|
+
|
|
35
|
+
### Pipes
|
|
36
|
+
- **TranslatePipe** - Pipe de tradução
|
|
37
|
+
|
|
38
|
+
## 📖 Uso Básico
|
|
39
|
+
|
|
40
|
+
### Importar o módulo
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { AngularComponentsModule } from '@seniorsistemas/components-ia';
|
|
44
|
+
|
|
45
|
+
@NgModule({
|
|
46
|
+
imports: [
|
|
47
|
+
AngularComponentsModule
|
|
48
|
+
]
|
|
49
|
+
})
|
|
50
|
+
export class AppModule { }
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Exemplo: Formulário Dinâmico
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { Component } from '@angular/core';
|
|
57
|
+
import { DynamicFormFieldConfig, FieldType } from '@seniorsistemas/components-ia';
|
|
58
|
+
|
|
59
|
+
@Component({
|
|
60
|
+
selector: 'app-product-form',
|
|
61
|
+
template: `
|
|
62
|
+
<sia-dynamic-form
|
|
63
|
+
[formFields]="formFields"
|
|
64
|
+
[mode]="'create'"
|
|
65
|
+
(onSubmit)="handleSubmit($event)"
|
|
66
|
+
></sia-dynamic-form>
|
|
67
|
+
`
|
|
68
|
+
})
|
|
69
|
+
export class ProductFormComponent {
|
|
70
|
+
formFields: DynamicFormFieldConfig[] = [
|
|
71
|
+
{
|
|
72
|
+
name: 'name',
|
|
73
|
+
label: 'Nome do Produto',
|
|
74
|
+
type: FieldType.TEXT,
|
|
75
|
+
required: true,
|
|
76
|
+
cols: 12
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: 'price',
|
|
80
|
+
label: 'Preço',
|
|
81
|
+
type: FieldType.NUMBER,
|
|
82
|
+
required: true,
|
|
83
|
+
cols: 6
|
|
84
|
+
}
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
handleSubmit(formValue: any): void {
|
|
88
|
+
console.log('Produto criado:', formValue);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Exemplo: Formulário em Dialog
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
<sia-dynamic-form
|
|
97
|
+
[(visible)]="showDialog"
|
|
98
|
+
[formFields]="formFields"
|
|
99
|
+
[entity]="selectedEntity"
|
|
100
|
+
[mode]="selectedEntity ? 'edit' : 'create'"
|
|
101
|
+
[displayMode]="'dialog'"
|
|
102
|
+
[dialogHeader]="'Novo Produto'"
|
|
103
|
+
(onSubmit)="handleSubmit($event)"
|
|
104
|
+
></sia-dynamic-form>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 📚 Documentação Completa
|
|
108
|
+
|
|
109
|
+
A biblioteca inclui documentação detalhada na pasta `docs/`:
|
|
110
|
+
|
|
111
|
+
- **[COMPONENTS.md](./docs/COMPONENTS.md)** - Documentação completa de cada componente
|
|
112
|
+
- **[EXAMPLES.md](./docs/EXAMPLES.md)** - Exemplos práticos de uso
|
|
113
|
+
- **[API.md](./docs/API.md)** - Referência completa da API
|
|
114
|
+
- **[MIGRATION.md](./docs/MIGRATION.md)** - Guia de migração
|
|
115
|
+
|
|
116
|
+
### Acessando a Documentação
|
|
117
|
+
|
|
118
|
+
Após instalar a biblioteca, a documentação estará disponível em:
|
|
119
|
+
```
|
|
120
|
+
node_modules/@seniorsistemas/components-ia/docs/
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Você pode abrir os arquivos diretamente no seu editor:
|
|
124
|
+
```bash
|
|
125
|
+
code node_modules/@seniorsistemas/components-ia/docs/COMPONENTS.md
|
|
126
|
+
code node_modules/@seniorsistemas/components-ia/docs/EXAMPLES.md
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 🛠️ Desenvolvimento
|
|
130
|
+
|
|
131
|
+
### Build
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
npm run build
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Testes
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npm run test
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## 📋 Requisitos
|
|
144
|
+
|
|
145
|
+
- Angular 18.2+
|
|
146
|
+
- PrimeNG 18.0+
|
|
147
|
+
- RxJS 7.8+
|
|
148
|
+
|
|
149
|
+
## 🤝 Contribuindo
|
|
150
|
+
|
|
151
|
+
Contribuições são bem-vindas! Por favor, leia o [guia de contribuição](./CONTRIBUTING.md) antes de submeter PRs.
|
|
152
|
+
|
|
153
|
+
## 📄 Licença
|
|
154
|
+
|
|
155
|
+
MIT © Senior Sistemas
|
|
156
|
+
|
|
157
|
+
## 🔗 Links
|
|
158
|
+
|
|
159
|
+
- [Documentação Completa](./docs/COMPONENTS.md)
|
|
160
|
+
- [Exemplos](./docs/EXAMPLES.md)
|
|
161
|
+
- [Changelog](./CHANGELOG.md)
|