@dev-tcloud/tcloud-ui 6.15.0 → 6.18.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.
Files changed (79) hide show
  1. package/docs/tcloud-ui-accordion.md +345 -0
  2. package/docs/tcloud-ui-actions.md +88 -0
  3. package/docs/tcloud-ui-alert-banner.md +104 -0
  4. package/docs/tcloud-ui-array-to-text.md +361 -0
  5. package/docs/tcloud-ui-breadcrumb.md +103 -0
  6. package/docs/tcloud-ui-bytes.md +109 -0
  7. package/docs/tcloud-ui-calendar.md +387 -0
  8. package/docs/tcloud-ui-card-accordion.md +266 -0
  9. package/docs/tcloud-ui-card-title.md +47 -0
  10. package/docs/tcloud-ui-card.md +40 -0
  11. package/docs/tcloud-ui-choice-issues.md +59 -0
  12. package/docs/tcloud-ui-cnpj.md +102 -0
  13. package/docs/tcloud-ui-container.md +171 -0
  14. package/docs/tcloud-ui-cpf.md +102 -0
  15. package/docs/tcloud-ui-currency.md +271 -0
  16. package/docs/tcloud-ui-data-list.md +91 -0
  17. package/docs/tcloud-ui-datebr.md +139 -0
  18. package/docs/tcloud-ui-datepicker-time.md +191 -0
  19. package/docs/tcloud-ui-datepicker.md +186 -0
  20. package/docs/tcloud-ui-dropdown-multi.md +444 -0
  21. package/docs/tcloud-ui-dropdown.md +369 -0
  22. package/docs/tcloud-ui-el-copy.md +113 -0
  23. package/docs/tcloud-ui-empty-content.md +412 -0
  24. package/docs/tcloud-ui-faq.md +496 -0
  25. package/docs/tcloud-ui-filter-bar.md +86 -0
  26. package/docs/tcloud-ui-filters.md +337 -0
  27. package/docs/tcloud-ui-hover-parent.md +467 -0
  28. package/docs/tcloud-ui-icon-button.md +104 -0
  29. package/docs/tcloud-ui-input-container.md +520 -0
  30. package/docs/tcloud-ui-input-password.md +258 -0
  31. package/docs/tcloud-ui-input-search.md +314 -0
  32. package/docs/tcloud-ui-label-token.md +286 -0
  33. package/docs/tcloud-ui-legend.md +72 -0
  34. package/docs/tcloud-ui-line-step-circle.md +98 -0
  35. package/docs/tcloud-ui-line-step-title.md +194 -0
  36. package/docs/tcloud-ui-linha-logo.md +550 -0
  37. package/docs/tcloud-ui-loading.md +88 -0
  38. package/docs/tcloud-ui-message.md +539 -0
  39. package/docs/tcloud-ui-modal.md +196 -0
  40. package/docs/tcloud-ui-monthname.md +123 -0
  41. package/docs/tcloud-ui-multi-input.md +290 -0
  42. package/docs/tcloud-ui-multi-select.md +311 -0
  43. package/docs/tcloud-ui-multiples-values.md +157 -0
  44. package/docs/tcloud-ui-not-found.md +88 -0
  45. package/docs/tcloud-ui-number-step.md +134 -0
  46. package/docs/tcloud-ui-pagination.md +579 -0
  47. package/docs/tcloud-ui-progress-bar.md +65 -0
  48. package/docs/tcloud-ui-radio.md +83 -0
  49. package/docs/tcloud-ui-reorder-items.md +418 -0
  50. package/docs/tcloud-ui-respective.md +167 -0
  51. package/docs/tcloud-ui-scroll-box.md +109 -0
  52. package/docs/tcloud-ui-search-bar.md +88 -0
  53. package/docs/tcloud-ui-search-in-object.md +143 -0
  54. package/docs/tcloud-ui-search-input.md +74 -0
  55. package/docs/tcloud-ui-skeleton-loading.md +394 -0
  56. package/docs/tcloud-ui-slide-toggle.md +210 -0
  57. package/docs/tcloud-ui-statusinfo.md +138 -0
  58. package/docs/tcloud-ui-tab-group.md +376 -0
  59. package/docs/tcloud-ui-tab-menu.md +109 -0
  60. package/docs/tcloud-ui-table.md +96 -0
  61. package/docs/tcloud-ui-tag.md +379 -0
  62. package/docs/tcloud-ui-tc-badge.md +168 -0
  63. package/docs/tcloud-ui-tc-btn.md +189 -0
  64. package/docs/tcloud-ui-tc-colors.md +204 -0
  65. package/docs/tcloud-ui-tc-form-control.md +200 -0
  66. package/docs/tcloud-ui-tc-text.md +139 -0
  67. package/docs/tcloud-ui-tc-title.md +118 -0
  68. package/docs/tcloud-ui-tcloud-form.md +55 -0
  69. package/docs/tcloud-ui-toast.md +83 -0
  70. package/docs/tcloud-ui-tooltip.md +88 -0
  71. package/docs/tcloud-ui-topology.md +232 -0
  72. package/docs/tcloud-ui-upload-area.md +195 -0
  73. package/docs/tcloud-ui-welcome.md +112 -0
  74. package/docs/tcloud-ui-wizard-steps.md +103 -0
  75. package/js/tcloud-ui-app.js +11 -0
  76. package/package.json +1 -1
  77. package/scss/tcloud-revitalizacao/components/_tcloud-ui-table.scss +95 -0
  78. package/scss/tcloud-revitalizacao/tc-rev-styles.scss +1 -1
  79. package/scss/tcloud-revitalizacao/components/_tc-rev-table.scss +0 -57
@@ -0,0 +1,109 @@
1
+ # TCloudUiScrollBox
2
+
3
+ O componente `tcloud-ui-scroll-box` cria um contêiner com scroll vertical e altura limitada, ideal para envolver conteúdos extensos como tabelas, listas ou formulários longos. Utiliza `ng-content` para projetar qualquer conteúdo filho. Suporta unidades `px` e `vh` — com `px` aplica `max-height` (scroll apenas quando o conteúdo excede a altura), enquanto `vh` aplica `height` fixa relativa à viewport.
4
+
5
+ ## Características
6
+
7
+ - Contêiner com scroll vertical e altura máxima configurável
8
+ - Projeção de conteúdo via `ng-content` (aceita qualquer conteúdo Angular)
9
+ - Suporte a unidades `px` e `vh` no `maxHeight`
10
+ - Detecção automática da unidade a partir do valor informado
11
+ - Borda opcional ao redor do contêiner
12
+ - Comportamento diferenciado: `max-height` para `px` e `height` para `vh`
13
+ - Componente standalone
14
+
15
+ ## Instalação
16
+
17
+ Importe o componente diretamente no módulo ou componente standalone:
18
+
19
+ ```typescript
20
+ import { TCloudUiScrollBoxComponent } from 'tcloud-ui';
21
+ ```
22
+
23
+ ## Propriedades
24
+
25
+ ### Inputs
26
+
27
+ | Propriedade | Tipo | Padrão | Descrição |
28
+ |-------------|--------------------|---------|--------------------------------------------------------------------------------------------------------------|
29
+ | `border` | `boolean` | `true` | Exibe uma borda ao redor do contêiner de scroll |
30
+ | `maxHeight` | `number \| string` | `'400'` | Altura máxima do contêiner. Aceita número (em `px`) ou string com unidade (ex: `'300'`, `'80vh'`, `'500px'`) |
31
+
32
+ ### Outputs
33
+
34
+ Este componente não possui outputs.
35
+
36
+ ## Exemplos de Uso
37
+
38
+ ### Básico — Tabela com scroll vertical
39
+
40
+ ```html
41
+ <tcloud-ui-scroll-box [maxHeight]="300">
42
+ <table class="table">
43
+ <thead>
44
+ <tr>
45
+ <th>Nome</th>
46
+ <th>Nacionalidade</th>
47
+ </tr>
48
+ </thead>
49
+ <tbody>
50
+ <tr><td>Rodrigo</td><td>Brasileiro</td></tr>
51
+ <tr><td>Leonardo</td><td>Brasileiro</td></tr>
52
+ <tr><td>Romano</td><td>Italiano</td></tr>
53
+ <tr><td>Antônio</td><td>Brasileiro</td></tr>
54
+ <tr><td>Bruno</td><td>Canadense</td></tr>
55
+ <tr><td>Ana</td><td>Brasileiro</td></tr>
56
+ <tr><td>Marcia</td><td>Italiano</td></tr>
57
+ </tbody>
58
+ </table>
59
+ </tcloud-ui-scroll-box>
60
+ ```
61
+
62
+ ```typescript
63
+ import { TCloudUiScrollBoxComponent } from 'tcloud-ui';
64
+
65
+ @Component({
66
+ standalone: true,
67
+ imports: [TCloudUiScrollBoxComponent],
68
+ template: `...`
69
+ })
70
+ export class ExemploBasicoComponent {}
71
+ ```
72
+
73
+ ### Avançado — Altura relativa à viewport sem borda
74
+
75
+ ```html
76
+ <tcloud-ui-scroll-box maxHeight="60vh" [border]="false">
77
+ <div *ngFor="let item of itens">
78
+ <p>{{ item.descricao }}</p>
79
+ </div>
80
+ </tcloud-ui-scroll-box>
81
+ ```
82
+
83
+ ```typescript
84
+ import { TCloudUiScrollBoxComponent } from 'tcloud-ui';
85
+
86
+ @Component({
87
+ standalone: true,
88
+ imports: [TCloudUiScrollBoxComponent],
89
+ template: `...`
90
+ })
91
+ export class ExemploAvancadoComponent {
92
+ itens = Array.from({ length: 50 }, (_, i) => ({
93
+ descricao: `Item ${i + 1}`
94
+ }));
95
+ }
96
+ ```
97
+
98
+ ### Avançado — Lista de cards com altura fixa em pixels
99
+
100
+ ```html
101
+ <tcloud-ui-scroll-box maxHeight="500px">
102
+ <div class="card mb-2" *ngFor="let usuario of usuarios">
103
+ <div class="card-body">
104
+ <h5>{{ usuario.nome }}</h5>
105
+ <p>{{ usuario.email }}</p>
106
+ </div>
107
+ </div>
108
+ </tcloud-ui-scroll-box>
109
+ ```
@@ -0,0 +1,88 @@
1
+ # Search Bar
2
+
3
+ ## Características
4
+
5
+ O `TCloudUiSearchBarComponent` é um componente Angular standalone que exibe uma barra de busca com input estilizado. A cada digitação, emite o valor atual do campo via evento `searchChange`.
6
+
7
+ Funcionalidades principais:
8
+ - Input com placeholder descritivo para buscas por usuário, instância ou rotina.
9
+ - Emissão de evento `searchChange` a cada keystroke, permitindo busca em tempo real.
10
+ - Layout flexbox com border-radius arredondado (pill style).
11
+
12
+ ## Instalação
13
+
14
+ Importe o `TCloudUiSearchBarComponent` no componente standalone:
15
+
16
+ ```typescript
17
+ import { TCloudUiSearchBarComponent } from 'tcloud-ui';
18
+
19
+ @Component({
20
+ selector: 'app-exemplo',
21
+ standalone: true,
22
+ imports: [TCloudUiSearchBarComponent],
23
+ template: '...'
24
+ })
25
+ export class ExemploComponent {}
26
+ ```
27
+
28
+ ## Propriedades (API)
29
+
30
+ ### Inputs
31
+
32
+ Este componente não possui `@Input()` públicos.
33
+
34
+ ### Outputs
35
+
36
+ | Nome | Tipo de Evento | Descrição |
37
+ |--------------|----------------|--------------------------------------------------------|
38
+ | searchChange | `string` | Emitido a cada digitação com o valor atual do input. |
39
+
40
+ ## Exemplos de Uso
41
+
42
+ ### Uso Básico
43
+
44
+ ```html
45
+ <tcloud-ui-search-bar (searchChange)="onSearchChange($event)"></tcloud-ui-search-bar>
46
+ ```
47
+
48
+ ```typescript
49
+ @Component({
50
+ selector: 'app-exemplo',
51
+ standalone: true,
52
+ imports: [TCloudUiSearchBarComponent],
53
+ template: `
54
+ <tcloud-ui-search-bar (searchChange)="onSearchChange($event)"></tcloud-ui-search-bar>
55
+ `
56
+ })
57
+ export class ExemploComponent {
58
+ onSearchChange(value: string): void {
59
+ console.log('Buscando:', value);
60
+ }
61
+ }
62
+ ```
63
+
64
+ ### Uso Avançado — Filtragem de Lista em Tempo Real
65
+
66
+ ```typescript
67
+ @Component({
68
+ selector: 'app-exemplo',
69
+ standalone: true,
70
+ imports: [CommonModule, TCloudUiSearchBarComponent],
71
+ template: `
72
+ <tcloud-ui-search-bar (searchChange)="onSearch($event)"></tcloud-ui-search-bar>
73
+ <ul>
74
+ <li *ngFor="let item of filteredItems">{{ item }}</li>
75
+ </ul>
76
+ `
77
+ })
78
+ export class ExemploComponent {
79
+ items = ['Usuário Admin', 'Instância Produção', 'Rotina Backup', 'Usuário Dev'];
80
+ filteredItems = [...this.items];
81
+
82
+ onSearch(term: string): void {
83
+ this.filteredItems = this.items.filter(item =>
84
+ item.toLowerCase().includes(term.toLowerCase())
85
+ );
86
+ }
87
+ }
88
+ ```
@@ -0,0 +1,143 @@
1
+ # TCloudUiSearchInObjectService
2
+
3
+ O serviço `TCloudUiSearchInObjectService` realiza busca full-text em arrays de objetos ou arrays simples. Através do método `meet`, é possível pesquisar um termo em todas as propriedades de um objeto (ou em campos específicos), com normalização de acentos e case-insensitive. Suporta automaticamente valores do tipo `Date` (formatando em `dd/MM/yyyy hh:mm` e `medium` para comparação) e aplica o pipe `StatusInfoPipe` para transformar valores antes da busca. É o mecanismo de busca utilizado internamente pelo componente `tcloud-ui-input-search`.
4
+
5
+ ## Características
6
+
7
+ - Busca full-text em arrays de objetos por qualquer propriedade
8
+ - Busca em arrays simples (strings, números)
9
+ - Filtragem por campos específicos via parâmetro `camposDebusca`
10
+ - Normalização automática de acentos e diacríticos (NFD)
11
+ - Busca case-insensitive
12
+ - Detecção e formatação automática de valores `Date` para comparação textual
13
+ - Transformação de valores via `StatusInfoPipe` antes da comparação
14
+ - Remoção de duplicatas nos resultados
15
+ - Serviço injetável com `providedIn: 'root'`
16
+
17
+ ## Instalação
18
+
19
+ Importe o serviço diretamente no componente ou módulo:
20
+
21
+ ```typescript
22
+ import { TCloudUiSearchInObjectService } from 'tcloud-ui';
23
+ ```
24
+
25
+ O serviço é registrado com `providedIn: 'root'`, portanto está disponível globalmente via injeção de dependência sem necessidade de declaração em providers.
26
+
27
+ ## API
28
+
29
+ ### Métodos
30
+
31
+ | Método | Retorno | Descrição |
32
+ |--------|---------|-----------|
33
+ | `meet(valor, emObject, camposDebusca?)` | `any[]` | Procura o termo `valor` dentro do array `emObject`, retornando os itens que contêm o termo |
34
+
35
+ ### Parâmetros do método `meet`
36
+
37
+ | Parâmetro | Tipo | Obrigatório | Descrição |
38
+ |-----------------|------------|-------------|-----------------------------------------------------------------------------------------------------|
39
+ | `valor` | `string` | Sim | Texto a ser pesquisado. Quando vazio, retorna o array original sem filtrar |
40
+ | `emObject` | `any` | Sim | Array de objetos ou array simples onde a busca será realizada |
41
+ | `camposDebusca` | `any[]` | Não | Lista de chaves (propriedades) do objeto para restringir a busca. Quando omitido, busca em todas as propriedades |
42
+
43
+ ## Exemplos de Uso
44
+
45
+ ### Básico — Busca em todas as propriedades de um array de objetos
46
+
47
+ ```typescript
48
+ import { TCloudUiSearchInObjectService } from 'tcloud-ui';
49
+
50
+ @Component({
51
+ standalone: true,
52
+ imports: [CommonModule],
53
+ template: `
54
+ <input type="text" #inputBusca class="tc-form-control">
55
+ <button (click)="buscar(inputBusca.value)">Procurar</button>
56
+ <pre>{{ resultados | json }}</pre>
57
+ `
58
+ })
59
+ export class ExemploBasicoComponent {
60
+ dados = [
61
+ { name: 'Rodrigo', last_name: 'Rea' },
62
+ { name: 'João', last_name: 'Alves' },
63
+ { name: 'Maria', last_name: 'Alves' }
64
+ ];
65
+
66
+ resultados: any[] = [];
67
+
68
+ constructor(private searchService: TCloudUiSearchInObjectService) {}
69
+
70
+ buscar(valor: string) {
71
+ this.resultados = this.searchService.meet(valor, this.dados);
72
+ }
73
+ }
74
+ ```
75
+
76
+ ### Avançado — Busca restrita a campos específicos
77
+
78
+ ```typescript
79
+ import { TCloudUiSearchInObjectService } from 'tcloud-ui';
80
+
81
+ @Component({
82
+ standalone: true,
83
+ imports: [CommonModule],
84
+ template: `
85
+ <input type="text" (input)="buscar($event.target.value)" class="tc-form-control" placeholder="Buscar por nome...">
86
+ <table class="table">
87
+ <thead>
88
+ <tr><th>Nome</th><th>Sobrenome</th><th>Cidade</th></tr>
89
+ </thead>
90
+ <tbody>
91
+ <tr *ngFor="let item of resultados">
92
+ <td>{{ item.name }}</td>
93
+ <td>{{ item.last_name }}</td>
94
+ <td>{{ item.city }}</td>
95
+ </tr>
96
+ </tbody>
97
+ </table>
98
+ `
99
+ })
100
+ export class ExemploAvancadoComponent {
101
+ dados = [
102
+ { name: 'Rodrigo', last_name: 'Rea', city: 'São Paulo' },
103
+ { name: 'João', last_name: 'Alves', city: 'Rio de Janeiro' },
104
+ { name: 'Maria', last_name: 'Alves', city: 'Curitiba' }
105
+ ];
106
+
107
+ resultados: any[] = [...this.dados];
108
+ camposBusca = ['name', 'last_name'];
109
+
110
+ constructor(private searchService: TCloudUiSearchInObjectService) {}
111
+
112
+ buscar(valor: string) {
113
+ this.resultados = this.searchService.meet(valor, this.dados, this.camposBusca);
114
+ }
115
+ }
116
+ ```
117
+
118
+ ### Avançado — Busca em array simples
119
+
120
+ ```typescript
121
+ import { TCloudUiSearchInObjectService } from 'tcloud-ui';
122
+
123
+ @Component({
124
+ standalone: true,
125
+ imports: [CommonModule],
126
+ template: `
127
+ <input type="text" (input)="filtrar($event.target.value)" class="tc-form-control" placeholder="Filtrar tags...">
128
+ <ul>
129
+ <li *ngFor="let tag of tagsFiltradas">{{ tag }}</li>
130
+ </ul>
131
+ `
132
+ })
133
+ export class ExemploArraySimplesComponent {
134
+ tags = ['Angular', 'React', 'Vue', 'Svelte', 'Next.js'];
135
+ tagsFiltradas: string[] = [...this.tags];
136
+
137
+ constructor(private searchService: TCloudUiSearchInObjectService) {}
138
+
139
+ filtrar(valor: string) {
140
+ this.tagsFiltradas = this.searchService.meet(valor, this.tags);
141
+ }
142
+ }
143
+ ```
@@ -0,0 +1,74 @@
1
+ # Search Input
2
+
3
+ ## Características
4
+
5
+ O componente `tcloud-ui-search-input` fornece um campo de busca com debounce integrado. Ele encapsula um `FormControl` reativo que emite o texto pesquisado após 500ms de inatividade, aplicando `distinctUntilChanged` para evitar emissões duplicadas. O texto é automaticamente convertido para minúsculas. Suporta two-way binding via `[(searchText)]` e foco automático opcional.
6
+
7
+ ## Instalação
8
+
9
+ Importe o `TCloudUiModule` ou o componente standalone `TCloudUiSearchInputComponent`:
10
+
11
+ ```typescript
12
+ import { TCloudUiModule } from 'tcloud-ui';
13
+ // ou
14
+ import { TCloudUiSearchInputComponent } from 'tcloud-ui';
15
+ ```
16
+
17
+ ## API
18
+
19
+ ### Inputs
20
+
21
+ | Nome | Tipo | Descrição | Valor Default |
22
+ | ------------ | --------- | ----------------------------------------------------- | ------------- |
23
+ | `searchText` | `string` | Texto de pesquisa (suporta two-way binding). | `''` |
24
+ | `placeholder`| `string` | Texto placeholder exibido no campo de busca. | `''` |
25
+ | `autoFocus` | `boolean` | Aplica foco automático ao campo ao inicializar. | `false` |
26
+
27
+ ### Outputs
28
+
29
+ | Nome | Tipo de Evento | Descrição |
30
+ | ------------------ | -------------- | ---------------------------------------------------------------- |
31
+ | `searchTextChange` | `string` | Emitido quando o texto muda (para two-way binding). |
32
+ | `onSearch` | `string` | Emitido após debounce de 500ms com o texto pesquisado em lowercase. |
33
+
34
+ ## Exemplos de Uso
35
+
36
+ ### Uso Básico
37
+
38
+ ```html
39
+ <tcloud-ui-search-input
40
+ placeholder="Pesquisar..."
41
+ (onSearch)="onSearch($event)"
42
+ ></tcloud-ui-search-input>
43
+ ```
44
+
45
+ ```typescript
46
+ onSearch(text: string): void {
47
+ console.log('Texto pesquisado:', text);
48
+ }
49
+ ```
50
+
51
+ ### Uso Avançado
52
+
53
+ Two-way binding com `searchText` e auto focus:
54
+
55
+ ```html
56
+ <tcloud-ui-search-input
57
+ [(searchText)]="searchText"
58
+ placeholder="Pesquisar itens..."
59
+ [autoFocus]="true"
60
+ (onSearch)="filtrarLista($event)"
61
+ ></tcloud-ui-search-input>
62
+
63
+ <p>Valor atual: {{ searchText }}</p>
64
+ ```
65
+
66
+ ```typescript
67
+ searchText: string = '';
68
+
69
+ filtrarLista(text: string): void {
70
+ this.listaFiltrada = this.listaCompleta.filter(item =>
71
+ item.nome.toLowerCase().includes(text)
72
+ );
73
+ }
74
+ ```