@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.
Files changed (92) 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-ui/styles/_claus-badge.scss +117 -0
  78. package/scss/tcloud-ui/styles/_claus-btn.scss +207 -0
  79. package/scss/tcloud-ui/styles/_claus-card.scss +12 -0
  80. package/scss/tcloud-ui/styles/_claus-colors.scss +192 -0
  81. package/scss/tcloud-ui/styles/_claus-form.scss +88 -0
  82. package/scss/tcloud-ui/styles/_claus-sizes.scss +28 -0
  83. package/scss/tcloud-ui/styles/_claus-spacers.scss +49 -0
  84. package/scss/tcloud-ui/styles/_claus-themes.scss +36 -0
  85. package/scss/tcloud-ui/styles/_claus-title.scss +24 -0
  86. package/scss/tcloud-ui/styles/_claus-typography.scss +70 -0
  87. package/scss/tcloud-ui/styles/_claus-variables.scss +131 -0
  88. package/scss/tcloud-ui/styles/_colors.scss +123 -0
  89. package/scss/tcloud-ui/styles/_tc-btn.scss +210 -0
  90. package/scss/tcloud-ui/styles/_tc-card.scss +7 -0
  91. package/scss/tcloud-ui/styles/_tc-title.scss +49 -0
  92. package/scss/tcloud-ui/styles.scss +35 -0
@@ -0,0 +1,186 @@
1
+ # Datepicker
2
+
3
+ ## Características
4
+ - Componente standalone de seleção de datas baseado em VanillaJS Datepicker.
5
+ - Suporta modo inline (calendário exibido) e modo input (calendário em popup).
6
+ - Suporta seleção de múltiplas datas com limite configurável.
7
+ - Permite desabilitar dias da semana específicos e datas individuais.
8
+ - Controle de intervalo de datas com minDate e maxDate.
9
+ - Integração com ngModel (two-way binding) e ControlValueAccessor.
10
+ - Detecção automática de layout (classic ou modern) via TCloudUiLayoutService.
11
+ - Máscara automática no formato DD/MM/YYYY.
12
+ - Eventos: `onChange` (mudança de seleção) e `onCheckDate` (verificação de datas em modo disabled).
13
+
14
+ ## Instalação
15
+ ```ts
16
+ import { TCloudUiDatepickerComponent } from 'projects/tcloud-ui/src/public-api';
17
+
18
+ @Component({
19
+ selector: 'app-example',
20
+ standalone: true,
21
+ imports: [TCloudUiDatepickerComponent],
22
+ template: `<tcloud-ui-datepicker [(ngModel)]="dateValue"></tcloud-ui-datepicker>`
23
+ })
24
+ export class ExampleComponent {
25
+ dateValue: string | undefined;
26
+ }
27
+ ```
28
+
29
+ ## Propriedades (API)
30
+ ### Inputs
31
+ | Nome | Tipo | Descrição | Valor Default |
32
+ | --- | --- | --- | --- |
33
+ | multiple | boolean | Permite seleção de múltiplas datas. | false |
34
+ | maxNumberOfDates | number | Limite máximo de datas selecionáveis. 0 = sem limite. Requires `multiple=true`. | 0 |
35
+ | daysOfWeekDisabled | number[] | Array de dias da semana desabilitados (0=Domingo até 6=Domingo). | [] |
36
+ | minDate | string | Data mínima permitida no formato DD/MM/YYYY. | '' |
37
+ | maxDate | string | Data máxima permitida no formato DD/MM/YYYY. | '' |
38
+ | datesDisabled | string[] | Array de datas específicas desabilitadas no formato DD/MM/YYYY. | [] |
39
+ | modeInput | boolean | Se true, exibe calendário em popup ao clicar em input. Se false, exibe calendário inline. | false |
40
+ | useBorder | boolean | Se true, adiciona borda ao input no modeInput. | true |
41
+ | childInputDateTime | boolean | Flag para uso em componentes filho tipo datepicker-time. | false |
42
+ | startViewInMinDate | boolean | Inicia a visualização do calendário na minDate. | false |
43
+ | startViewInMaxDate | boolean | Inicia a visualização do calendário na maxDate. | false |
44
+ | disabled | boolean | Desabilita seleção de datas, mas emite evento `onCheckDate` ao tentar selecionar. | false |
45
+ | ngModel | string \| string[] | Data(s) selecionada(s) no formato DD/MM/YYYY (ou separadas por vírgula em múltiplas). | undefined |
46
+ | code | string | Identificador do componente para referência interna. | 'tcloud-ui-datepicker' |
47
+
48
+ ### Outputs
49
+ | Nome | Tipo de Evento | Descrição |
50
+ | --- | --- | --- |
51
+ | onChange | EventEmitter<any> | Emite quando a data/datas é/são alterada(s). Retorna o valor selecionado. |
52
+ | ngModelChange | EventEmitter<any> | Emite alteração do ngModel para two-way binding. |
53
+ | onCheckDate | EventEmitter<any> | Emite quando há tentativa de seleção em modo disabled. Retorna `{ value, date, checked, disabled }`. |
54
+
55
+ ## Exemplos de Uso
56
+ ### Uso Básico - Calendário Inline
57
+ ```html
58
+ <tcloud-ui-datepicker
59
+ [(ngModel)]="dateValue"
60
+ (onChange)="onDateChanged($event)">
61
+ </tcloud-ui-datepicker>
62
+
63
+ <p>Data selecionada: {{ dateValue }}</p>
64
+ ```
65
+
66
+ Componente:
67
+ ```ts
68
+ export class ExampleComponent {
69
+ dateValue: string | undefined;
70
+
71
+ onDateChanged(event: any) {
72
+ console.log('Data selecionada:', event);
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### Uso Básico - Modo Input
78
+ ```html
79
+ <tcloud-ui-datepicker
80
+ [modeInput]="true"
81
+ [(ngModel)]="dateValue">
82
+ </tcloud-ui-datepicker>
83
+ ```
84
+
85
+ ### Com Intervalo de Datas
86
+ ```html
87
+ <tcloud-ui-datepicker
88
+ [minDate]="'18/11/2021'"
89
+ [maxDate]="'18/12/2023'"
90
+ [(ngModel)]="dateValue">
91
+ </tcloud-ui-datepicker>
92
+ ```
93
+
94
+ ### Desabilitar Dias da Semana
95
+ ```html
96
+ <!-- Desabilita sábado e domingo -->
97
+ <tcloud-ui-datepicker
98
+ [daysOfWeekDisabled]="[0, 6]"
99
+ [(ngModel)]="dateValue">
100
+ </tcloud-ui-datepicker>
101
+ ```
102
+
103
+ ### Desabilitar Datas Específicas
104
+ ```html
105
+ <tcloud-ui-datepicker
106
+ [datesDisabled]="['12/10/2022', '25/12/2022', '01/01/2023']"
107
+ [(ngModel)]="dateValue">
108
+ </tcloud-ui-datepicker>
109
+ ```
110
+
111
+ ## Uso Avançado
112
+ ### Múltiplas Datas
113
+ ```html
114
+ <tcloud-ui-datepicker
115
+ [multiple]="true"
116
+ [maxNumberOfDates]="5"
117
+ [(ngModel)]="selectedDates"
118
+ (onChange)="onDatesChanged($event)">
119
+ </tcloud-ui-datepicker>
120
+
121
+ <p>Datas selecionadas: {{ selectedDates }}</p>
122
+ ```
123
+
124
+ Componente:
125
+ ```ts
126
+ export class ExampleComponent {
127
+ selectedDates: string[] = [];
128
+
129
+ onDatesChanged(event: any) {
130
+ console.log('Datas selecionadas:', event);
131
+ }
132
+ }
133
+ ```
134
+
135
+ ### Combinação: Intervalo + Semana + Datas Desabilitadas
136
+ ```html
137
+ <tcloud-ui-datepicker
138
+ [minDate]="'01/01/2024'"
139
+ [maxDate]="'31/12/2024'"
140
+ [daysOfWeekDisabled]="[0, 6]"
141
+ [datesDisabled]="['25/12/2024', '01/01/2025']"
142
+ [modeInput]="true"
143
+ [(ngModel)]="dateValue">
144
+ </tcloud-ui-datepicker>
145
+ ```
146
+
147
+ ### Modo Disabled com Verificação
148
+ ```html
149
+ <tcloud-ui-datepicker
150
+ [multiple]="true"
151
+ [disabled]="true"
152
+ [(ngModel)]="selectedDates"
153
+ (onCheckDate)="onCheckDate($event)">
154
+ </tcloud-ui-datepicker>
155
+ ```
156
+
157
+ Componente:
158
+ ```ts
159
+ export class ExampleComponent {
160
+ selectedDates: string[] = ['22/01/2024', '26/01/2024'];
161
+
162
+ onCheckDate(event: any) {
163
+ console.log('Tentativa de seleção desabilitada:', event);
164
+ // event: { value: '25/01/2024', date: Date, checked: true, disabled: true }
165
+ }
166
+ }
167
+ ```
168
+
169
+ ### Iniciar em Data Específica
170
+ ```html
171
+ <!-- Abre o calendário exibindo a minDate -->
172
+ <tcloud-ui-datepicker
173
+ [minDate]="'15/03/2024'"
174
+ [startViewInMinDate]="true"
175
+ [(ngModel)]="dateValue">
176
+ </tcloud-ui-datepicker>
177
+ ```
178
+
179
+ ### Sem Borda (Inline)
180
+ ```html
181
+ <tcloud-ui-datepicker
182
+ [useBorder]="false"
183
+ [modeInput]="true"
184
+ [(ngModel)]="dateValue">
185
+ </tcloud-ui-datepicker>
186
+ ```
@@ -0,0 +1,444 @@
1
+ # Dropdown Multi
2
+
3
+ ## Características
4
+
5
+ O componente `tcloud-ui-dropdown-multi` é um componente de múltipla seleção com suporte a seleção/deselção em massa, itens desabilitados, dois-way binding e visualização customizável do texto selecionado. Permite que o usuário selecione múltiplas opções de uma lista dropdown com interface intuitiva.
6
+
7
+ ## Instalação
8
+
9
+ Para utilizar o componente Dropdown Multi, importe o módulo `TCloudUiModule`:
10
+
11
+ ```typescript
12
+ import { TCloudUiModule } from '@tcloud-ui/lib';
13
+ import { Component } from '@angular/core';
14
+
15
+ @Component({
16
+ selector: 'app-example',
17
+ standalone: true,
18
+ imports: [TCloudUiModule],
19
+ template: `<tcloud-ui-dropdown-multi ...></tcloud-ui-dropdown-multi>`
20
+ })
21
+ export class ExampleComponent {}
22
+ ```
23
+
24
+ Ou importe diretamente o componente e as interfaces de dados:
25
+
26
+ ```typescript
27
+ import { TCloudUiDropdownMultiComponent, DropdownMultiOption, DropdownMultiSize } from '@tcloud-ui/lib';
28
+
29
+ @Component({
30
+ selector: 'app-example',
31
+ standalone: true,
32
+ imports: [TCloudUiDropdownMultiComponent],
33
+ template: `<tcloud-ui-dropdown-multi ...></tcloud-ui-dropdown-multi>`
34
+ })
35
+ export class ExampleComponent {}
36
+ ```
37
+
38
+ ## Propriedades (API)
39
+
40
+ ### Inputs
41
+
42
+ | Nome | Tipo | Descrição | Valor Default |
43
+ |------|------|-----------|---------------|
44
+ | `label` | `string` | Texto do rótulo exibido acima do seletor | `''` (vazio) |
45
+ | `disabled` | `boolean` | Desabilita interações com o dropdown | `false` |
46
+ | `options` | `DropdownMultiOption[]` | **Obrigatório**. Lista de opções disponíveis | - |
47
+ | `initialValues` | `any[]` | Valores pré-selecionados (deprecated - use `values` instead) | `[]` |
48
+ | `size` | `DropdownMultiSize` | Tamanho do dropdown: `'sm'` \| `'md'` \| `'lg'` | `'sm'` |
49
+ | `width` | `string` | Largura customizada do dropdown (ex: `'300px'`, `'100%'`) | `''` |
50
+ | `placeholder` | `string` | Texto exibido quando nenhum item está selecionado | `'Selecione'` |
51
+ | `maxDisplayItems` | `number` | Máximo de itens a exibir no botão antes de mostrar "+N" | `2` |
52
+ | `searchable` | `string` | Habilita campo para buscar na lista de itens | `false` |
53
+ | `searchPlaceholder` | `string` | Texto exibido quando nenhum texto de busca é exibido | `Buscar...` |
54
+
55
+ ### Two-Way Binding (Model)
56
+
57
+ | Nome | Tipo | Descrição |
58
+ |------|------|-----------|
59
+ | `values` | `any[]` | Array de valores selecionados - atualiza bidirecionalmente |
60
+
61
+ ### Outputs
62
+
63
+ | Nome | Tipo de Evento | Descrição |
64
+ |------|----------------|-----------|
65
+ | `optionsSelected` | `any[]` | Emitido quando opções são selecionadas/deseleccionadas |
66
+
67
+ ### Interfaces e Enums Exportados
68
+
69
+ ```typescript
70
+ export interface DropdownMultiOption {
71
+ id?: any;
72
+ value: any;
73
+ displayValue: string;
74
+ disabled?: boolean;
75
+ }
76
+
77
+ export enum DropdownMultiSize {
78
+ sm = 'sm',
79
+ md = 'md',
80
+ lg = 'lg',
81
+ }
82
+ ```
83
+
84
+ ## Características Técnicas
85
+
86
+ - **Seleção em Massa**: Botão "Todos" para selecionar/deselecionar todas as opções de uma vez
87
+ - **Seleção Parcial**: Indica visualmente quando apenas alguns itens estão selecionados
88
+ - **Itens Desabilitados**: Suporte a itens que não podem ser selecionados
89
+ - **Visualização Inteligente**: Mostra primeiros N itens com "+X" para itens restantes
90
+ - **Two-Way Binding**: Sincronização bidirecionional de valores com [(values)]
91
+ - **Scroll Automático**: Menu dropdown com scroll quando há muitas opções
92
+ - **Acessibilidade**: Suporte a aria-expanded e navegação por teclado
93
+
94
+ ## Exemplos de Uso
95
+
96
+ ### Uso Básico
97
+
98
+ ```typescript
99
+ import { Component } from '@angular/core';
100
+ import { TCloudUiModule } from '@tcloud-ui/lib';
101
+ import { CommonModule } from '@angular/common';
102
+
103
+ @Component({
104
+ selector: 'app-basic-multi-dropdown',
105
+ standalone: true,
106
+ imports: [CommonModule, TCloudUiModule],
107
+ template: `
108
+ <tcloud-ui-dropdown-multi
109
+ [options]="items"
110
+ label="Selecione itens"
111
+ placeholder="Nenhum selecionado"
112
+ ></tcloud-ui-dropdown-multi>
113
+ `
114
+ })
115
+ export class BasicMultiDropdownComponent {
116
+ items = [
117
+ { value: 'item1', displayValue: 'Item 1' },
118
+ { value: 'item2', displayValue: 'Item 2' },
119
+ { value: 'item3', displayValue: 'Item 3' },
120
+ { value: 'item4', displayValue: 'Item 4' }
121
+ ];
122
+ }
123
+ ```
124
+
125
+ ### Com Two-Way Binding
126
+
127
+ ```typescript
128
+ import { Component, signal } from '@angular/core';
129
+ import { TCloudUiModule } from '@tcloud-ui/lib';
130
+ import { CommonModule } from '@angular/common';
131
+
132
+ @Component({
133
+ selector: 'app-multi-dropdown-binding',
134
+ standalone: true,
135
+ imports: [CommonModule, TCloudUiModule],
136
+ template: `
137
+ <div>
138
+ <tcloud-ui-dropdown-multi
139
+ [(values)]="selectedItems"
140
+ [options]="fruitOptions"
141
+ label="Frutas"
142
+ placeholder="Escolha frutas"
143
+ (optionsSelected)="onFruitsSelected($event)"
144
+ ></tcloud-ui-dropdown-multi>
145
+
146
+ <div *ngIf="selectedItems().length > 0">
147
+ <h4>Frutas Selecionadas:</h4>
148
+ <ul>
149
+ <li *ngFor="let item of selectedItems()">{{ item }}</li>
150
+ </ul>
151
+ </div>
152
+ </div>
153
+ `
154
+ })
155
+ export class MultiDropdownBindingComponent {
156
+ selectedItems = signal<any[]>([]);
157
+
158
+ fruitOptions = [
159
+ { value: 'apple', displayValue: 'Maçã' },
160
+ { value: 'banana', displayValue: 'Banana' },
161
+ { value: 'orange', displayValue: 'Laranja' },
162
+ { value: 'grape', displayValue: 'Uva' },
163
+ { value: 'strawberry', displayValue: 'Morango' }
164
+ ];
165
+
166
+ onFruitsSelected(options: any[]): void {
167
+ console.log('Frutas selecionadas:', options);
168
+ }
169
+ }
170
+ ```
171
+
172
+ ### Diferentes Tamanhos
173
+
174
+ ```typescript
175
+ import { Component } from '@angular/core';
176
+ import { TCloudUiModule, DropdownMultiSize } from '@tcloud-ui/lib';
177
+ import { CommonModule } from '@angular/common';
178
+
179
+ @Component({
180
+ selector: 'app-multi-dropdown-sizes',
181
+ standalone: true,
182
+ imports: [CommonModule, TCloudUiModule],
183
+ template: `
184
+ <div class="size-examples">
185
+ <!-- Tamanho Pequeno -->
186
+ <tcloud-ui-dropdown-multi
187
+ [options]="colorOptions"
188
+ [size]="'sm'"
189
+ label="Pequeno (sm)"
190
+ width="200px"
191
+ ></tcloud-ui-dropdown-multi>
192
+
193
+ <!-- Tamanho Médio -->
194
+ <tcloud-ui-dropdown-multi
195
+ [options]="colorOptions"
196
+ [size]="'md'"
197
+ label="Médio (md)"
198
+ width="200px"
199
+ ></tcloud-ui-dropdown-multi>
200
+
201
+ <!-- Tamanho Grande -->
202
+ <tcloud-ui-dropdown-multi
203
+ [options]="colorOptions"
204
+ [size]="'lg'"
205
+ label="Grande (lg)"
206
+ width="200px"
207
+ ></tcloud-ui-dropdown-multi>
208
+ </div>
209
+ `,
210
+ styles: [`
211
+ .size-examples {
212
+ display: flex;
213
+ flex-direction: column;
214
+ gap: 2rem;
215
+ }
216
+ `]
217
+ })
218
+ export class MultiDropdownSizesComponent {
219
+ colorOptions = [
220
+ { value: 'red', displayValue: 'Vermelho' },
221
+ { value: 'blue', displayValue: 'Azul' },
222
+ { value: 'green', displayValue: 'Verde' },
223
+ { value: 'yellow', displayValue: 'Amarelo' }
224
+ ];
225
+ }
226
+ ```
227
+
228
+ ### Com Itens Desabilitados
229
+
230
+ ```typescript
231
+ import { Component } from '@angular/core';
232
+ import { TCloudUiModule } from '@tcloud-ui/lib';
233
+ import { CommonModule } from '@angular/common';
234
+
235
+ @Component({
236
+ selector: 'app-multi-dropdown-disabled-items',
237
+ standalone: true,
238
+ imports: [CommonModule, TCloudUiModule],
239
+ template: `
240
+ <tcloud-ui-dropdown-multi
241
+ [options]="statusOptions"
242
+ label="Status"
243
+ placeholder="Selecione status"
244
+ width="250px"
245
+ ></tcloud-ui-dropdown-multi>
246
+ `
247
+ })
248
+ export class MultiDropdownDisabledItemsComponent {
249
+ statusOptions = [
250
+ { value: 'active', displayValue: 'Ativo' },
251
+ { value: 'inactive', displayValue: 'Inativo' },
252
+ { value: 'pending', displayValue: 'Pendente', disabled: true },
253
+ { value: 'archived', displayValue: 'Arquivado', disabled: true }
254
+ ];
255
+ }
256
+ ```
257
+
258
+ ### Quantidade de Itens Exibidos
259
+
260
+ ```typescript
261
+ import { Component, signal } from '@angular/core';
262
+ import { TCloudUiModule } from '@tcloud-ui/lib';
263
+ import { CommonModule } from '@angular/common';
264
+
265
+ @Component({
266
+ selector: 'app-multi-dropdown-max-display',
267
+ standalone: true,
268
+ imports: [CommonModule, TCloudUiModule],
269
+ template: `
270
+ <div class="display-examples">
271
+ <!-- Exibe 1 item -->
272
+ <tcloud-ui-dropdown-multi
273
+ [options]="languageOptions"
274
+ [maxDisplayItems]="1"
275
+ label="Max 1 Item"
276
+ width="200px"
277
+ ></tcloud-ui-dropdown-multi>
278
+
279
+ <!-- Exibe 3 itens (padrão) -->
280
+ <tcloud-ui-dropdown-multi
281
+ [options]="languageOptions"
282
+ [maxDisplayItems]="3"
283
+ label="Max 3 Items"
284
+ width="200px"
285
+ ></tcloud-ui-dropdown-multi>
286
+
287
+ <!-- Exibe todos -->
288
+ <tcloud-ui-dropdown-multi
289
+ [options]="languageOptions"
290
+ [maxDisplayItems]="99"
291
+ label="Mostrar Todos"
292
+ width="200px"
293
+ ></tcloud-ui-dropdown-multi>
294
+ </div>
295
+ `,
296
+ styles: [`
297
+ .display-examples {
298
+ display: flex;
299
+ flex-direction: column;
300
+ gap: 2rem;
301
+ }
302
+ `]
303
+ })
304
+ export class MultiDropdownMaxDisplayComponent {
305
+ languageOptions = [
306
+ { value: 'en', displayValue: 'English' },
307
+ { value: 'pt', displayValue: 'Português' },
308
+ { value: 'es', displayValue: 'Español' },
309
+ { value: 'fr', displayValue: 'Français' },
310
+ { value: 'de', displayValue: 'Deutsch' }
311
+ ];
312
+ }
313
+ ```
314
+
315
+ ## Métodos Públicos
316
+
317
+ O componente expõe os seguintes métodos que podem ser acessados via template reference variable:
318
+
319
+ ```typescript
320
+ // Selecionar todas as opções (exceto desabilitadas)
321
+ selectAll(): void
322
+
323
+ // Limpar todas as seleções
324
+ clearAll(): void
325
+
326
+ // Alternar seleção de uma opção
327
+ toggleOption(option: DropdownMultiOption): void
328
+
329
+ // Abrir/fechar o dropdown
330
+ toggleDropdown(): void
331
+ ```
332
+
333
+ ### Exemplo com Métodos
334
+
335
+ ```typescript
336
+ import { Component, ViewChild } from '@angular/core';
337
+ import { TCloudUiModule } from '@tcloud-ui/lib';
338
+ import { CommonModule } from '@angular/common';
339
+
340
+ @Component({
341
+ selector: 'app-multi-dropdown-methods',
342
+ standalone: true,
343
+ imports: [CommonModule, TCloudUiModule],
344
+ template: `
345
+ <div>
346
+ <div class="button-group">
347
+ <button (click)="dropdown.selectAll()">Selecionar Todos</button>
348
+ <button (click)="dropdown.clearAll()">Limpar Tudo</button>
349
+ </div>
350
+
351
+ <tcloud-ui-dropdown-multi
352
+ #dropdown
353
+ [options]="weekDays"
354
+ label="Dias da Semana"
355
+ placeholder="Escolha dias"
356
+ ></tcloud-ui-dropdown-multi>
357
+ </div>
358
+ `,
359
+ styles: [`
360
+ .button-group {
361
+ margin-bottom: 1rem;
362
+ display: flex;
363
+ gap: 1rem;
364
+ }
365
+ button {
366
+ padding: 0.5rem 1rem;
367
+ background: var(--c-primary-500);
368
+ color: white;
369
+ border: none;
370
+ border-radius: 0.25rem;
371
+ cursor: pointer;
372
+ }
373
+ `]
374
+ })
375
+ export class MultiDropdownMethodsComponent {
376
+ weekDays = [
377
+ { value: 'monday', displayValue: 'Segunda' },
378
+ { value: 'tuesday', displayValue: 'Terça' },
379
+ { value: 'wednesday', displayValue: 'Quarta' },
380
+ { value: 'thursday', displayValue: 'Quinta' },
381
+ { value: 'friday', displayValue: 'Sexta' },
382
+ { value: 'saturday', displayValue: 'Sábado' },
383
+ { value: 'sunday', displayValue: 'Domingo' }
384
+ ];
385
+ }
386
+ ```
387
+
388
+ ## Boas Práticas
389
+
390
+ 1. **Use Labels Claros**: Sempre defina um label descritivo para a função do dropdown
391
+ 2. **Placeholder Útil**: Configure um placeholder que indique claramente o que deve ser selecionado
392
+ 3. **Limite de Opções**: Se tiver muitas opções (>20), considere agrupar ou usar filtro
393
+ 4. **Opções Desabilitadas**: Use para opções que não estão disponíveis no contexto atual
394
+ 5. **maxDisplayItems**: Ajuste conforme o espaço disponível e quantidade típica de seleções
395
+
396
+ ## Estados Visuais
397
+
398
+ - **Default**: Sem seleção - exibe placeholder
399
+ - **Hover**: Bordas destacadas em azul
400
+ - **Selecionado Parcial**: Mostra opções selecionadas
401
+ - **Todos Selecionados**: Exibe "Todos"
402
+ - **Desabilitado**: Cinza, sem interação possível
403
+
404
+ ## Performance
405
+
406
+ O componente é otimizado para listas de até 100 opções. Para listas maiores, considere:
407
+ - Implementar virtualização (scroll virtual) no menu
408
+ - Adicionar filter/search de opções
409
+ - Paginar as opções
410
+
411
+ ## Acessibilidade
412
+
413
+ - Suporte a `aria-expanded` indicando se dropdown está aberto/fechado
414
+ - Checkboxes com suporte apropriado para leitores de tela
415
+ - Navegação por teclado (deve ser alcançável por Tab)
416
+
417
+ ## Compatibilidade
418
+
419
+ - **Angular**: 16+
420
+ - **Browsers**: Todos os navegadores modernos
421
+ - **CSS Variables**: Utiliza variáveis CSS do sistema de design
422
+
423
+ ## Integração com Formulários
424
+
425
+ O componente funciona com `formsModule` (value-accessor pattern) e pode ser usado em formulários reativos:
426
+
427
+ ```typescript
428
+ // Em seu componente
429
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
430
+
431
+ @Component({
432
+ imports: [ReactiveFormsModule, TCloudUiModule]
433
+ })
434
+ export class YourComponent {
435
+ selectedItems = new FormControl([]);
436
+
437
+ // No template:
438
+ // <tcloud-ui-dropdown-multi [formControl]="selectedItems" ...></tcloud-ui-dropdown-multi>
439
+ }
440
+ ```
441
+
442
+ ## Suporte
443
+
444
+ Para reportar problemas, sugestões ou criar pull requests, visite o repositório oficial do projeto.