@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,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
|
+
```
|