@dev-tcloud/tcloud-ui 6.14.3 → 6.17.0
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/docs/tcloud-ui-accordion.md +345 -0
- package/docs/tcloud-ui-actions.md +88 -0
- package/docs/tcloud-ui-alert-banner.md +104 -0
- package/docs/tcloud-ui-array-to-text.md +361 -0
- package/docs/tcloud-ui-breadcrumb.md +103 -0
- package/docs/tcloud-ui-bytes.md +109 -0
- package/docs/tcloud-ui-calendar.md +387 -0
- package/docs/tcloud-ui-card-accordion.md +266 -0
- package/docs/tcloud-ui-card-title.md +47 -0
- package/docs/tcloud-ui-card.md +40 -0
- package/docs/tcloud-ui-choice-issues.md +59 -0
- package/docs/tcloud-ui-cnpj.md +102 -0
- package/docs/tcloud-ui-container.md +171 -0
- package/docs/tcloud-ui-cpf.md +102 -0
- package/docs/tcloud-ui-currency.md +271 -0
- package/docs/tcloud-ui-data-list.md +91 -0
- package/docs/tcloud-ui-datebr.md +139 -0
- package/docs/tcloud-ui-datepicker-time.md +191 -0
- package/docs/tcloud-ui-datepicker.md +186 -0
- package/docs/tcloud-ui-dropdown-multi.md +444 -0
- package/docs/tcloud-ui-dropdown.md +369 -0
- package/docs/tcloud-ui-el-copy.md +113 -0
- package/docs/tcloud-ui-empty-content.md +412 -0
- package/docs/tcloud-ui-faq.md +496 -0
- package/docs/tcloud-ui-filter-bar.md +86 -0
- package/docs/tcloud-ui-filters.md +337 -0
- package/docs/tcloud-ui-hover-parent.md +467 -0
- package/docs/tcloud-ui-icon-button.md +104 -0
- package/docs/tcloud-ui-input-container.md +520 -0
- package/docs/tcloud-ui-input-password.md +258 -0
- package/docs/tcloud-ui-input-search.md +314 -0
- package/docs/tcloud-ui-label-token.md +286 -0
- package/docs/tcloud-ui-legend.md +72 -0
- package/docs/tcloud-ui-line-step-circle.md +98 -0
- package/docs/tcloud-ui-line-step-title.md +194 -0
- package/docs/tcloud-ui-linha-logo.md +550 -0
- package/docs/tcloud-ui-loading.md +88 -0
- package/docs/tcloud-ui-message.md +539 -0
- package/docs/tcloud-ui-modal.md +196 -0
- package/docs/tcloud-ui-monthname.md +123 -0
- package/docs/tcloud-ui-multi-input.md +290 -0
- package/docs/tcloud-ui-multi-select.md +311 -0
- package/docs/tcloud-ui-multiples-values.md +157 -0
- package/docs/tcloud-ui-not-found.md +88 -0
- package/docs/tcloud-ui-number-step.md +134 -0
- package/docs/tcloud-ui-pagination.md +579 -0
- package/docs/tcloud-ui-progress-bar.md +65 -0
- package/docs/tcloud-ui-radio.md +83 -0
- package/docs/tcloud-ui-reorder-items.md +418 -0
- package/docs/tcloud-ui-respective.md +167 -0
- package/docs/tcloud-ui-scroll-box.md +109 -0
- package/docs/tcloud-ui-search-bar.md +88 -0
- package/docs/tcloud-ui-search-in-object.md +143 -0
- package/docs/tcloud-ui-search-input.md +74 -0
- package/docs/tcloud-ui-skeleton-loading.md +394 -0
- package/docs/tcloud-ui-slide-toggle.md +210 -0
- package/docs/tcloud-ui-statusinfo.md +138 -0
- package/docs/tcloud-ui-tab-group.md +376 -0
- package/docs/tcloud-ui-tab-menu.md +109 -0
- package/docs/tcloud-ui-table.md +96 -0
- package/docs/tcloud-ui-tag.md +379 -0
- package/docs/tcloud-ui-tc-badge.md +168 -0
- package/docs/tcloud-ui-tc-btn.md +189 -0
- package/docs/tcloud-ui-tc-colors.md +204 -0
- package/docs/tcloud-ui-tc-form-control.md +200 -0
- package/docs/tcloud-ui-tc-text.md +139 -0
- package/docs/tcloud-ui-tc-title.md +118 -0
- package/docs/tcloud-ui-tcloud-form.md +55 -0
- package/docs/tcloud-ui-toast.md +83 -0
- package/docs/tcloud-ui-tooltip.md +88 -0
- package/docs/tcloud-ui-topology.md +232 -0
- package/docs/tcloud-ui-upload-area.md +195 -0
- package/docs/tcloud-ui-welcome.md +112 -0
- package/docs/tcloud-ui-wizard-steps.md +103 -0
- package/js/tcloud-ui-app.js +11 -0
- package/package.json +1 -1
- package/scss/tcloud-ui/styles/_claus-badge.scss +117 -0
- package/scss/tcloud-ui/styles/_claus-btn.scss +207 -0
- package/scss/tcloud-ui/styles/_claus-card.scss +12 -0
- package/scss/tcloud-ui/styles/_claus-colors.scss +192 -0
- package/scss/tcloud-ui/styles/_claus-form.scss +88 -0
- package/scss/tcloud-ui/styles/_claus-sizes.scss +28 -0
- package/scss/tcloud-ui/styles/_claus-spacers.scss +49 -0
- package/scss/tcloud-ui/styles/_claus-themes.scss +36 -0
- package/scss/tcloud-ui/styles/_claus-title.scss +24 -0
- package/scss/tcloud-ui/styles/_claus-typography.scss +70 -0
- package/scss/tcloud-ui/styles/_claus-variables.scss +131 -0
- package/scss/tcloud-ui/styles/_colors.scss +123 -0
- package/scss/tcloud-ui/styles/_tc-btn.scss +210 -0
- package/scss/tcloud-ui/styles/_tc-card.scss +7 -0
- package/scss/tcloud-ui/styles/_tc-title.scss +49 -0
- package/scss/tcloud-ui/styles.scss +35 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Topology Pipes
|
|
2
|
+
|
|
3
|
+
O conjunto de pipes `topology` fornece quatro pipes independentes para tradução de valores de topologia de infraestrutura TOTVS Cloud: status de servidores, regiões de datacenter, tipos de ambiente e produtos. Cada pipe realiza a conversão de chaves internas para nomes legíveis em português.
|
|
4
|
+
|
|
5
|
+
## Características
|
|
6
|
+
|
|
7
|
+
- Quatro pipes especializados: `topologyStatus`, `topologyRegion`, `topologyEnvironment` e `topologyProduct`
|
|
8
|
+
- Tradução de chaves de infraestrutura para nomes legíveis
|
|
9
|
+
- Comparação case-insensitive no pipe de status
|
|
10
|
+
- Suporte a subproduto no pipe de produto (ex: Protheus como Smart ERP via `origin`)
|
|
11
|
+
- Retorna o valor original quando não encontra correspondência (exceto `topologyEnvironment` que retorna "Ambiente Indefinido")
|
|
12
|
+
- Todos os pipes são standalone
|
|
13
|
+
|
|
14
|
+
## Instalação
|
|
15
|
+
|
|
16
|
+
Importe os pipes diretamente no módulo ou componente standalone:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import {
|
|
20
|
+
TopologyStatusPipe,
|
|
21
|
+
TopologyRegionPipe,
|
|
22
|
+
TopologyEnvironmentPipe,
|
|
23
|
+
TopologyProductPipe
|
|
24
|
+
} from 'tcloud-ui';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## TopologyStatusPipe
|
|
30
|
+
|
|
31
|
+
### Sintaxe
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
{{ valor | topologyStatus }}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Mapa de Status
|
|
38
|
+
|
|
39
|
+
| Chave | Valor |
|
|
40
|
+
|---------------|-------------------|
|
|
41
|
+
| `ok` / `done` | Disponível |
|
|
42
|
+
| `error` | Indisponível |
|
|
43
|
+
| `deleting` | Apagando... |
|
|
44
|
+
| `stopped` | Desligado |
|
|
45
|
+
| `new` | Em criação |
|
|
46
|
+
| `dr_new` | Configurando DR |
|
|
47
|
+
| `dr_done` | DR configurado |
|
|
48
|
+
| `maintenance` | Em manutenção |
|
|
49
|
+
| `migrating` | Migrando |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## TopologyRegionPipe
|
|
54
|
+
|
|
55
|
+
### Sintaxe
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
{{ valor | topologyRegion }}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Mapa de Regiões
|
|
62
|
+
|
|
63
|
+
| Chave | Valor |
|
|
64
|
+
|----------|--------|
|
|
65
|
+
| `zone_1` | TESP01 |
|
|
66
|
+
| `zone_2` | TESP02 |
|
|
67
|
+
| `tesp03` | TESP03 |
|
|
68
|
+
| `tesp04` | TESP04 |
|
|
69
|
+
| `tesp05` | TESP05 |
|
|
70
|
+
| `tece01` | TECE01 |
|
|
71
|
+
| `tesp06` | TESP06 |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## TopologyEnvironmentPipe
|
|
76
|
+
|
|
77
|
+
### Sintaxe
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
{{ valor | topologyEnvironment }}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Mapa de Ambientes
|
|
84
|
+
|
|
85
|
+
| Chave | Valor |
|
|
86
|
+
|----------------|----------------------|
|
|
87
|
+
| `production` | Produção |
|
|
88
|
+
| `qa` | Qualidade |
|
|
89
|
+
| `development` | Desenvolvimento |
|
|
90
|
+
| `troubleshoot` | Troubleshoot |
|
|
91
|
+
| `audit` | Auditoria |
|
|
92
|
+
| `historical` | Histórico |
|
|
93
|
+
| *(outros)* | Ambiente Indefinido |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## TopologyProductPipe
|
|
98
|
+
|
|
99
|
+
### Sintaxe
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
{{ valor | topologyProduct }}
|
|
103
|
+
{{ valor | topologyProduct:origin }}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Parâmetros
|
|
107
|
+
|
|
108
|
+
| Parâmetro | Tipo | Obrigatório | Descrição |
|
|
109
|
+
|-----------|----------|-------------|----------------------------------------------------------------------|
|
|
110
|
+
| `origin` | `string` | Não | Origem do produto. Quando `'smarterp'` e valor `'protheus'`, retorna "Smart ERP" |
|
|
111
|
+
|
|
112
|
+
### Mapa de Produtos
|
|
113
|
+
|
|
114
|
+
| Chave | Valor |
|
|
115
|
+
|-------------------|-------------------|
|
|
116
|
+
| `2c` | Carol Connect |
|
|
117
|
+
| `bioenergia` | Bioenergia |
|
|
118
|
+
| `consinco` | Consinco |
|
|
119
|
+
| `datasul` | Datasul |
|
|
120
|
+
| `fluig` | Fluig |
|
|
121
|
+
| `iaas` | IaaS |
|
|
122
|
+
| `license_server` | License Server |
|
|
123
|
+
| `logix` | Logix |
|
|
124
|
+
| `paas` | Outros |
|
|
125
|
+
| `pep` | PEP |
|
|
126
|
+
| `protheus` | Protheus |
|
|
127
|
+
| `pvi` | PVI |
|
|
128
|
+
| `rm` | RM |
|
|
129
|
+
| `rms` | RMS |
|
|
130
|
+
| `sfa` | SFA |
|
|
131
|
+
| `sisjuri` | Sisjuri |
|
|
132
|
+
| `smarterp` | Smart ERP |
|
|
133
|
+
| `smartrm` | RM |
|
|
134
|
+
| `smartrm_cluster` | Smart RM Cluster |
|
|
135
|
+
| `smartrm_control` | Smart RM Control |
|
|
136
|
+
| `taf` | TAF |
|
|
137
|
+
| `totvsagro` | TOTVS Agro |
|
|
138
|
+
| `totvsmoda` | TOTVS Moda |
|
|
139
|
+
| `treports` | TReports |
|
|
140
|
+
| `tss` | TSS |
|
|
141
|
+
| `winthor` | Winthor |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Exemplos de Uso
|
|
146
|
+
|
|
147
|
+
### Básico — Tradução de status e ambiente
|
|
148
|
+
|
|
149
|
+
```html
|
|
150
|
+
<p>{{ 'ok' | topologyStatus }}</p>
|
|
151
|
+
<!-- Resultado: Disponível -->
|
|
152
|
+
|
|
153
|
+
<p>{{ 'production' | topologyEnvironment }}</p>
|
|
154
|
+
<!-- Resultado: Produção -->
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import { TopologyStatusPipe, TopologyEnvironmentPipe } from 'tcloud-ui';
|
|
159
|
+
|
|
160
|
+
@Component({
|
|
161
|
+
standalone: true,
|
|
162
|
+
imports: [TopologyStatusPipe, TopologyEnvironmentPipe],
|
|
163
|
+
template: `
|
|
164
|
+
<span>{{ servidor.status | topologyStatus }}</span>
|
|
165
|
+
<span>{{ servidor.ambiente | topologyEnvironment }}</span>
|
|
166
|
+
`
|
|
167
|
+
})
|
|
168
|
+
export class ExemploBasicoComponent {
|
|
169
|
+
servidor = { status: 'ok', ambiente: 'production' };
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Avançado — Listagem de servidores com todos os pipes
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<table class="table">
|
|
177
|
+
<thead>
|
|
178
|
+
<tr>
|
|
179
|
+
<th>Produto</th>
|
|
180
|
+
<th>Ambiente</th>
|
|
181
|
+
<th>Região</th>
|
|
182
|
+
<th>Status</th>
|
|
183
|
+
</tr>
|
|
184
|
+
</thead>
|
|
185
|
+
<tbody>
|
|
186
|
+
<tr *ngFor="let srv of servidores">
|
|
187
|
+
<td>{{ srv.produto | topologyProduct }}</td>
|
|
188
|
+
<td>{{ srv.ambiente | topologyEnvironment }}</td>
|
|
189
|
+
<td>{{ srv.regiao | topologyRegion }}</td>
|
|
190
|
+
<td>{{ srv.status | topologyStatus }}</td>
|
|
191
|
+
</tr>
|
|
192
|
+
</tbody>
|
|
193
|
+
</table>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
import {
|
|
198
|
+
TopologyStatusPipe,
|
|
199
|
+
TopologyRegionPipe,
|
|
200
|
+
TopologyEnvironmentPipe,
|
|
201
|
+
TopologyProductPipe
|
|
202
|
+
} from 'tcloud-ui';
|
|
203
|
+
|
|
204
|
+
@Component({
|
|
205
|
+
standalone: true,
|
|
206
|
+
imports: [
|
|
207
|
+
CommonModule,
|
|
208
|
+
TopologyStatusPipe,
|
|
209
|
+
TopologyRegionPipe,
|
|
210
|
+
TopologyEnvironmentPipe,
|
|
211
|
+
TopologyProductPipe
|
|
212
|
+
],
|
|
213
|
+
template: `...`
|
|
214
|
+
})
|
|
215
|
+
export class ExemploAvancadoComponent {
|
|
216
|
+
servidores = [
|
|
217
|
+
{ produto: 'protheus', ambiente: 'production', regiao: 'zone_1', status: 'ok' },
|
|
218
|
+
{ produto: 'rm', ambiente: 'qa', regiao: 'tesp03', status: 'maintenance' },
|
|
219
|
+
{ produto: 'datasul', ambiente: 'development', regiao: 'tece01', status: 'new' }
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Avançado — Produto com origin (Smart ERP)
|
|
225
|
+
|
|
226
|
+
```html
|
|
227
|
+
<p>{{ 'protheus' | topologyProduct:'smarterp' }}</p>
|
|
228
|
+
<!-- Resultado: Smart ERP -->
|
|
229
|
+
|
|
230
|
+
<p>{{ 'protheus' | topologyProduct }}</p>
|
|
231
|
+
<!-- Resultado: Protheus -->
|
|
232
|
+
```
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# TCloudUiUploadArea
|
|
2
|
+
|
|
3
|
+
Componente de área de upload com suporte a drag-and-drop, pré-visualização de imagens, reordenação por arraste e validação de arquivos.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Seletor
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<tcloud-ui-upload-area></tcloud-ui-upload-area>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Inputs
|
|
16
|
+
|
|
17
|
+
| Nome | Tipo | Default | Descrição |
|
|
18
|
+
|------|------|---------|-----------|
|
|
19
|
+
| `maxFiles` | `number \| undefined` | `undefined` | Número máximo de arquivos permitidos. Se `undefined`, não há limite. |
|
|
20
|
+
| `acceptedFileTypes` | `AcceptedFileType[] \| undefined` | `undefined` | Lista de tipos MIME aceitos. Se `undefined`, todos os tipos são aceitos. Utiliza o enum `AcceptedFileType`. |
|
|
21
|
+
| `imageDimensions` | `ImageDimensions \| undefined` | `undefined` | Dimensões permitidas para imagens (largura x altura em pixels). Se `strict: true`, valida exatamente; caso contrário, aceita até as dimensões informadas. |
|
|
22
|
+
| `showProgress` | `boolean` | `false` | Exibe barra de progresso animada durante o carregamento dos arquivos. |
|
|
23
|
+
| `preloadedImages` | `PreloadedImage[] \| string[]` | — | Imagens pré-carregadas para modo de edição. Aceita array de URLs (strings) ou objetos `PreloadedImage` com `url`, `key` e `order`. As imagens são baixadas e convertidas em `File`. |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Outputs
|
|
28
|
+
|
|
29
|
+
| Nome | Tipo emitido | Descrição |
|
|
30
|
+
|------|-------------|-----------|
|
|
31
|
+
| `onChange` | `ImageItem[]` | Evento centralizado emitido sempre que houver mudança (adição, remoção ou reordenação). |
|
|
32
|
+
| `filesSelected` | `File[]` | Emitido quando novos arquivos são selecionados ou arrastados. |
|
|
33
|
+
| `imagesReordered` | `string[]` | Emitido após reordenação das imagens (array de previews atualizado). |
|
|
34
|
+
| `imagesRemoved` | `string[]` | Emitido após remoção de uma imagem (array de previews atualizado). |
|
|
35
|
+
| `onError` | `string` | Emitido quando ocorre um erro ou aviso (tipo rejeitado, limite atingido, dimensões inválidas). |
|
|
36
|
+
| `onProgress` | `number` | Emitido durante o carregamento, informando o progresso de 0 a 100. |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Enums
|
|
41
|
+
|
|
42
|
+
### AcceptedFileType
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
enum AcceptedFileType {
|
|
46
|
+
// Imagens
|
|
47
|
+
JPEG = 'image/jpeg',
|
|
48
|
+
JPG = 'image/jpg',
|
|
49
|
+
PNG = 'image/png',
|
|
50
|
+
GIF = 'image/gif',
|
|
51
|
+
WEBP = 'image/webp',
|
|
52
|
+
SVG = 'image/svg+xml',
|
|
53
|
+
BMP = 'image/bmp',
|
|
54
|
+
ICO = 'image/x-icon',
|
|
55
|
+
|
|
56
|
+
// Vídeos
|
|
57
|
+
MP4 = 'video/mp4',
|
|
58
|
+
WEBM = 'video/webm',
|
|
59
|
+
OGG = 'video/ogg',
|
|
60
|
+
AVI = 'video/x-msvideo',
|
|
61
|
+
MOV = 'video/quicktime',
|
|
62
|
+
WMV = 'video/x-ms-wmv',
|
|
63
|
+
FLV = 'video/x-flv',
|
|
64
|
+
MKV = 'video/x-matroska'
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Interfaces
|
|
71
|
+
|
|
72
|
+
### PreloadedImage
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
interface PreloadedImage {
|
|
76
|
+
url: string;
|
|
77
|
+
key?: string;
|
|
78
|
+
order?: number;
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### ImageDimensions
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
interface ImageDimensions {
|
|
86
|
+
width: number;
|
|
87
|
+
height: number;
|
|
88
|
+
strict?: boolean; // true = exato, false = máximo
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### ImageItem
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
interface ImageItem {
|
|
96
|
+
name: string; // Nome original do arquivo
|
|
97
|
+
new_name: string; // Nome gerado aleatoriamente
|
|
98
|
+
order: number; // Posição na lista (1-based)
|
|
99
|
+
preview?: string; // Data URL ou URL para preview
|
|
100
|
+
file: File; // Objeto File do arquivo
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Exemplos de Uso
|
|
107
|
+
|
|
108
|
+
### Básico
|
|
109
|
+
|
|
110
|
+
```html
|
|
111
|
+
<tcloud-ui-upload-area
|
|
112
|
+
(onChange)="onImagesChange($event)"
|
|
113
|
+
></tcloud-ui-upload-area>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Com limite de arquivos e tipos aceitos
|
|
117
|
+
|
|
118
|
+
```html
|
|
119
|
+
<tcloud-ui-upload-area
|
|
120
|
+
[maxFiles]="5"
|
|
121
|
+
[acceptedFileTypes]="acceptedTypes"
|
|
122
|
+
(onChange)="onImagesChange($event)"
|
|
123
|
+
(onError)="onError($event)"
|
|
124
|
+
></tcloud-ui-upload-area>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
import { AcceptedFileType } from 'tcloud-ui';
|
|
129
|
+
|
|
130
|
+
acceptedTypes = [
|
|
131
|
+
AcceptedFileType.JPEG,
|
|
132
|
+
AcceptedFileType.PNG,
|
|
133
|
+
AcceptedFileType.WEBP
|
|
134
|
+
];
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Com barra de progresso e validação de dimensões
|
|
138
|
+
|
|
139
|
+
```html
|
|
140
|
+
<tcloud-ui-upload-area
|
|
141
|
+
[maxFiles]="10"
|
|
142
|
+
[showProgress]="true"
|
|
143
|
+
[imageDimensions]="{ width: 1920, height: 1080 }"
|
|
144
|
+
(onChange)="onImagesChange($event)"
|
|
145
|
+
(onError)="onError($event)"
|
|
146
|
+
(onProgress)="onProgress($event)"
|
|
147
|
+
></tcloud-ui-upload-area>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Com imagens pré-carregadas (modo edição)
|
|
151
|
+
|
|
152
|
+
```html
|
|
153
|
+
<tcloud-ui-upload-area
|
|
154
|
+
[preloadedImages]="existingImages"
|
|
155
|
+
(onChange)="onImagesChange($event)"
|
|
156
|
+
></tcloud-ui-upload-area>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
// Usando array de strings (URLs)
|
|
161
|
+
existingImages = [
|
|
162
|
+
'https://example.com/img1.jpg',
|
|
163
|
+
'https://example.com/img2.jpg'
|
|
164
|
+
];
|
|
165
|
+
|
|
166
|
+
// Ou usando objetos PreloadedImage
|
|
167
|
+
existingImages: PreloadedImage[] = [
|
|
168
|
+
{ url: 'https://example.com/img1.jpg', key: 'img1', order: 1 },
|
|
169
|
+
{ url: 'https://example.com/img2.jpg', key: 'img2', order: 2 }
|
|
170
|
+
];
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Funcionalidades
|
|
176
|
+
|
|
177
|
+
- **Drag and Drop**: Arraste arquivos do sistema para a área de upload.
|
|
178
|
+
- **Clique para selecionar**: Clique na área para abrir o seletor de arquivos.
|
|
179
|
+
- **Pré-visualização**: Exibe thumbnails das imagens selecionadas.
|
|
180
|
+
- **Reordenação**: Arraste e solte as imagens para alterar a ordem.
|
|
181
|
+
- **Remoção**: Botão "×" para remover imagens individualmente.
|
|
182
|
+
- **Validação de tipos**: Filtra arquivos por tipo MIME usando o enum `AcceptedFileType`.
|
|
183
|
+
- **Validação de dimensões**: Valida largura e altura das imagens (exata ou máxima).
|
|
184
|
+
- **Limite de arquivos**: Controla o número máximo de arquivos.
|
|
185
|
+
- **Barra de progresso**: Exibe progresso animado durante o carregamento com efeito shimmer.
|
|
186
|
+
- **Imagens pré-carregadas**: Suporte a modo edição com imagens existentes (baixa URLs e converte para `File`).
|
|
187
|
+
- **Tratamento de erros**: Detecta imagens que falharam ao carregar e exibe placeholder de erro.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Importação
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
import { TCloudUiUploadAreaComponent, AcceptedFileType, PreloadedImage, ImageDimensions, ImageItem } from 'tcloud-ui';
|
|
195
|
+
```
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# TCloudUiWelcome
|
|
2
|
+
|
|
3
|
+
O componente `tcloud-ui-welcome` exibe uma seção de boas-vindas com imagem opcional, título, descrição e área de conteúdo projetado via `ng-content`. É ideal para páginas iniciais, estados vazios ou telas introdutórias. O título e a descrição são renderizados via `innerHTML`, permitindo uso de HTML. Quando uma imagem é fornecida, o layout se divide em colunas (4/8); sem imagem, o conteúdo ocupa a largura total (12 colunas).
|
|
4
|
+
|
|
5
|
+
## Características
|
|
6
|
+
|
|
7
|
+
- Layout responsivo com grid de colunas (imagem 4 cols + conteúdo 8 cols, ou conteúdo 12 cols sem imagem)
|
|
8
|
+
- Imagem opcional com tamanho configurável (`small`, `normal`, `big`)
|
|
9
|
+
- Título e descrição com suporte a HTML (`innerHTML`)
|
|
10
|
+
- Tamanho de fonte da descrição configurável (`small`, `normal`, `big`)
|
|
11
|
+
- Projeção de conteúdo via `ng-content` para botões ou ações customizadas
|
|
12
|
+
- Componente standalone
|
|
13
|
+
|
|
14
|
+
## Instalação
|
|
15
|
+
|
|
16
|
+
Importe o componente diretamente no módulo ou componente standalone:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { TCloudUiWelcomeComponent } from 'tcloud-ui';
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Propriedades
|
|
23
|
+
|
|
24
|
+
### Inputs
|
|
25
|
+
|
|
26
|
+
| Propriedade | Tipo | Padrão | Descrição |
|
|
27
|
+
|---------------|-----------------------------------|------------|-------------------------------------------------------------------------------------|
|
|
28
|
+
| `imgSrc` | `string` | `''` | URL da imagem exibida ao lado do conteúdo. Quando vazio, o conteúdo ocupa 12 colunas |
|
|
29
|
+
| `title` | `string` | `''` | Título da seção de boas-vindas. Aceita HTML via `innerHTML` |
|
|
30
|
+
| `description` | `string` | `''` | Texto descritivo abaixo do título. Aceita HTML via `innerHTML` |
|
|
31
|
+
| `size` | `'small' \| 'normal' \| 'big'` | `'small'` | Define o tamanho da imagem |
|
|
32
|
+
| `font` | `'small' \| 'normal' \| 'big'` | `'normal'` | Define o tamanho da fonte da descrição |
|
|
33
|
+
| `mirrored` | `boolean` | `false` | Espelha o layout (inverte a posição da imagem e do conteúdo) |
|
|
34
|
+
|
|
35
|
+
### Outputs
|
|
36
|
+
|
|
37
|
+
Este componente não possui outputs.
|
|
38
|
+
|
|
39
|
+
## Exemplos de Uso
|
|
40
|
+
|
|
41
|
+
### Básico — Boas-vindas com imagem e botão de ação
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<tcloud-ui-welcome
|
|
45
|
+
[imgSrc]="'https://example.com/welcome.svg'"
|
|
46
|
+
[title]="'Bem-vindo ao Sistema'"
|
|
47
|
+
[description]="'Comece criando seu primeiro registro.'">
|
|
48
|
+
<button class="tc-btn tc-btn-primary" type="button">
|
|
49
|
+
Criar Registro
|
|
50
|
+
</button>
|
|
51
|
+
</tcloud-ui-welcome>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
import { TCloudUiWelcomeComponent } from 'tcloud-ui';
|
|
56
|
+
|
|
57
|
+
@Component({
|
|
58
|
+
standalone: true,
|
|
59
|
+
imports: [TCloudUiWelcomeComponent],
|
|
60
|
+
template: `...`
|
|
61
|
+
})
|
|
62
|
+
export class ExemploBasicoComponent {}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Avançado — Descrição com HTML e múltiplas ações
|
|
66
|
+
|
|
67
|
+
```html
|
|
68
|
+
<tcloud-ui-welcome
|
|
69
|
+
[imgSrc]="'https://tcloud.totvs.com.br/assets/img/commercial-event-art.svg'"
|
|
70
|
+
[title]="'Bem vindo a Janela de Manutenções Programadas'"
|
|
71
|
+
[description]="descricaoHTML"
|
|
72
|
+
[size]="'big'"
|
|
73
|
+
[font]="'big'">
|
|
74
|
+
<button class="tc-btn tc-btn-primary" type="button" (click)="criarAgendamento()">
|
|
75
|
+
Criar Agendamentos
|
|
76
|
+
</button>
|
|
77
|
+
</tcloud-ui-welcome>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
import { TCloudUiWelcomeComponent } from 'tcloud-ui';
|
|
82
|
+
|
|
83
|
+
@Component({
|
|
84
|
+
standalone: true,
|
|
85
|
+
imports: [TCloudUiWelcomeComponent],
|
|
86
|
+
template: `...`
|
|
87
|
+
})
|
|
88
|
+
export class ExemploAvancadoComponent {
|
|
89
|
+
descricaoHTML = `
|
|
90
|
+
<p>Aqui você pode criar agendamentos, utilizando as ações disponíveis no catálogo de ações do seu ambiente.</p>
|
|
91
|
+
<p>Se você precisa agendar uma ação solicitada por alguma manutenção programada pela TOTVS,
|
|
92
|
+
acesse o menu lateral: "Janela de Manutenção" - "Agendamentos Pendentes"</p>
|
|
93
|
+
`;
|
|
94
|
+
|
|
95
|
+
criarAgendamento() {
|
|
96
|
+
console.log('Abrindo formulário de agendamento');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Avançado — Sem imagem, apenas texto centralizado
|
|
102
|
+
|
|
103
|
+
```html
|
|
104
|
+
<tcloud-ui-welcome
|
|
105
|
+
[title]="'Nenhum dado disponível'"
|
|
106
|
+
[description]="'Utilize o botão abaixo para importar seus dados.'"
|
|
107
|
+
[font]="'small'">
|
|
108
|
+
<button class="tc-btn tc-btn-outline-primary" type="button">
|
|
109
|
+
Importar Dados
|
|
110
|
+
</button>
|
|
111
|
+
</tcloud-ui-welcome>
|
|
112
|
+
```
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Wizard Steps
|
|
2
|
+
|
|
3
|
+
Componente de wizard/stepper que exibe uma sequência de etapas com suporte a direções horizontal e vertical. Cada etapa pode ter estados de concluído, atual e próximo, com animação de barra de progresso e clique opcional nas etapas.
|
|
4
|
+
|
|
5
|
+
## Características
|
|
6
|
+
|
|
7
|
+
- Layout horizontal e vertical
|
|
8
|
+
- Estados visuais: concluído (com ícone de check), atual (destacado) e próximo
|
|
9
|
+
- Barra de progresso animada entre as etapas concluídas
|
|
10
|
+
- Suporte a clique nas etapas já concluídas (quando habilitado)
|
|
11
|
+
- Descrição opcional por etapa
|
|
12
|
+
|
|
13
|
+
## Instalação
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { TCloudUiModule } from 'tcloud-ui';
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Adicione `TCloudUiModule` aos imports do seu componente/módulo.
|
|
20
|
+
|
|
21
|
+
## Propriedades (API)
|
|
22
|
+
|
|
23
|
+
### Inputs
|
|
24
|
+
|
|
25
|
+
| Nome | Tipo | Descrição | Valor Default |
|
|
26
|
+
|----------------|--------------------------------|-------------------------------------------------|------------------|
|
|
27
|
+
| steps | `WizardStep[]` | Lista de etapas do wizard (obrigatório) | — |
|
|
28
|
+
| currentStep | `number` | Índice da etapa atual (base 0) | `0` |
|
|
29
|
+
| direction | `'horizontal' \| 'vertical'` | Direção do layout do wizard | `'horizontal'` |
|
|
30
|
+
| stepClickable | `boolean` | Permite clicar em etapas concluídas/atuais | `false` |
|
|
31
|
+
|
|
32
|
+
### Outputs
|
|
33
|
+
|
|
34
|
+
| Nome | Tipo de Evento | Descrição |
|
|
35
|
+
|--------------|------------------------------------------|----------------------------------------------------|
|
|
36
|
+
| onStepClick | `{ step: WizardStep, index: number }` | Emitido ao clicar em uma etapa (quando habilitado) |
|
|
37
|
+
|
|
38
|
+
### Tipo WizardStep
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
type WizardStep = {
|
|
42
|
+
title: string;
|
|
43
|
+
description?: string;
|
|
44
|
+
completed?: boolean;
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Exemplos de Uso
|
|
49
|
+
|
|
50
|
+
### Uso Básico
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<tcloud-ui-wizard-steps
|
|
54
|
+
[steps]="steps"
|
|
55
|
+
[currentStep]="1">
|
|
56
|
+
</tcloud-ui-wizard-steps>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
steps: WizardStep[] = [
|
|
61
|
+
{ title: 'Dados pessoais', description: 'Informações do usuário' },
|
|
62
|
+
{ title: 'Endereço', description: 'Localização e CEP' },
|
|
63
|
+
{ title: 'Pagamento', description: 'Forma de pagamento' },
|
|
64
|
+
{ title: 'Confirmação', description: 'Revisão e envio' }
|
|
65
|
+
];
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Uso Avançado — Steps clicáveis com controle de etapa
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<tcloud-ui-wizard-steps
|
|
72
|
+
[steps]="steps"
|
|
73
|
+
[currentStep]="currentStep"
|
|
74
|
+
[stepClickable]="true"
|
|
75
|
+
(onStepClick)="onStepClicked($event)">
|
|
76
|
+
</tcloud-ui-wizard-steps>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
currentStep = 2;
|
|
81
|
+
|
|
82
|
+
steps: WizardStep[] = [
|
|
83
|
+
{ title: 'Dados pessoais', completed: true },
|
|
84
|
+
{ title: 'Endereço', completed: true },
|
|
85
|
+
{ title: 'Pagamento' },
|
|
86
|
+
{ title: 'Confirmação' }
|
|
87
|
+
];
|
|
88
|
+
|
|
89
|
+
onStepClicked(event: { step: WizardStep, index: number }) {
|
|
90
|
+
console.log('Etapa clicada:', event);
|
|
91
|
+
this.currentStep = event.index + 1;
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Layout Vertical
|
|
96
|
+
|
|
97
|
+
```html
|
|
98
|
+
<tcloud-ui-wizard-steps
|
|
99
|
+
[steps]="steps"
|
|
100
|
+
[currentStep]="currentStep"
|
|
101
|
+
direction="vertical">
|
|
102
|
+
</tcloud-ui-wizard-steps>
|
|
103
|
+
```
|