@dev-tcloud/tcloud-ui 7.0.4 → 7.0.6

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.
@@ -9,6 +9,7 @@
9
9
  - Suporte a estados: `disabled` e `loading`.
10
10
  - Largura máxima configurável para labels.
11
11
  - Modo `showInput`: oculta o input de entrada, exibindo apenas os itens.
12
+ - Autocomplete nativo do navegador (via `<datalist>`) a partir de `autocompleteitems`.
12
13
  - Emite alterações via evento `tcChange`.
13
14
 
14
15
  ## Instalação
@@ -46,6 +47,7 @@ export class ExampleComponent {
46
47
  | required | string | Se definido, habilita validação de pelo menos um item na lista. | undefined |
47
48
  | maxWidthLabel | string | Largura máxima de cada label (ex: '95px', '120px'). | undefined |
48
49
  | showInput | boolean | Se true, oculta o input de entrada e exibe apenas os itens existentes. | false |
50
+ | autocompleteitems | string[] | Sugestões de autocomplete nativo (`<datalist>`) exibidas ao digitar no input. | [] |
49
51
  | ngModel | { value: any }[] | Array de itens para two-way binding. | undefined |
50
52
 
51
53
  ### Outputs
@@ -134,6 +136,22 @@ export class FormComponent {
134
136
  </tcloud-ui-multi-input>
135
137
  ```
136
138
 
139
+ ### Com Autocomplete Nativo (autocompleteitems)
140
+ ```ts
141
+ export class ExampleComponent {
142
+ sugestoesTags = ['Angular', 'TypeScript', 'JavaScript', 'HTML', 'CSS'];
143
+ }
144
+ ```
145
+
146
+ ```html
147
+ <tcloud-ui-multi-input
148
+ [tcList]="items"
149
+ [autocompleteitems]="sugestoesTags"
150
+ [placeholder]="'Digite uma tag'"
151
+ (tcChange)="onItemsChanged($event)">
152
+ </tcloud-ui-multi-input>
153
+ ```
154
+
137
155
  ## Uso Avançado
138
156
  ### Com ngModel e Formulário Reativo
139
157
  ```ts
@@ -8,11 +8,13 @@ O componente `tcloud-ui-multiples-values` permite a entrada e gerenciamento de m
8
8
  - Suporte a delimitador configurável para inserção de múltiplos valores de uma vez
9
9
  - Conversão automática para uppercase ou lowercase
10
10
  - Remoção de valores duplicados automaticamente
11
- - Validação por padrão regex (`pattern`)
11
+ - Validação por padrão regex (`pattern`), testado individualmente em cada valor após o split pelo `delimiter` — se algum valor for inválido, nenhum item é adicionado
12
+ - Preset de validação `type="email"` (regex de e-mail embutido, sem precisar informar `pattern`)
12
13
  - Dropdown com lista dos valores adicionados e busca integrada (quando mais de 5 itens)
13
14
  - Contador de registros adicionados
14
15
  - Botão para limpar toda a lista (quando mais de 5 itens)
15
16
  - Controle de largura máxima dos labels com `maxWidthLabel`
17
+ - Autocomplete nativo do navegador (via `<datalist>`) no input simples, a partir de `autocompleteitems`
16
18
  - Compatível com `ngModel` e formulários Angular (ControlValueAccessor + NG_VALIDATORS)
17
19
  - Posicionamento automático do dropdown (abre para cima quando não há espaço abaixo)
18
20
 
@@ -33,7 +35,8 @@ import { TCloudUiMultiplesValuesComponent } from 'tcloud-ui';
33
35
  | `listItems` | `{ description: string, value: any, disabled?: boolean }[]` | — | Lista de opções predefinidas exibidas em um data list para seleção |
34
36
  | `openValuesInChange` | `boolean` | `true` | Abre automaticamente o dropdown dos valores ao adicionar um novo item |
35
37
  | `useBtnAdd` | `boolean` | `true` | Exibe o botão de adicionar (`+`) ao lado do input |
36
- | `pattern` | `RegExp` | — | Expressão regular para validação do valor antes de adicioná-lo à lista |
38
+ | `pattern` | `RegExp` | — | Expressão regular para validação de cada valor (após o split pelo `delimiter`) antes de adicioná-lo à lista. Se informado, tem prioridade sobre o preset de `type` |
39
+ | `type` | `'text' \| 'email'` | `'text'`| Preset de validação. `'email'` ativa um regex de e-mail interno quando `pattern` não é informado |
37
40
  | `delimiter` | `string` | `','` | Caractere delimitador para dividir a entrada em múltiplos valores de uma vez |
38
41
  | `placeholder` | `string` | — | Texto placeholder exibido no input |
39
42
  | `disabled` | `boolean` | `false` | Desabilita o input e os botões de ação |
@@ -43,6 +46,7 @@ import { TCloudUiMultiplesValuesComponent } from 'tcloud-ui';
43
46
  | `uppercase` | `boolean` | `false` | Converte automaticamente os valores inseridos para letras maiúsculas |
44
47
  | `lowercase` | `boolean` | `false` | Converte automaticamente os valores inseridos para letras minúsculas |
45
48
  | `maxWidthLabel` | `string` | — | Define a largura máxima dos labels na lista de valores (ex: `'50px'`, `'100px'`) |
49
+ | `autocompleteitems` | `string[]` | `[]` | Sugestões de autocomplete nativo (`<datalist>`) exibidas ao digitar no input simples (quando `listItems` não está definido) |
46
50
 
47
51
  ### Outputs
48
52
 
@@ -80,6 +84,66 @@ export class ExemploBasicoComponent {
80
84
  }
81
85
  ```
82
86
 
87
+ ### Autocomplete nativo — Sugestões via `autocompleteitems`
88
+
89
+ ```html
90
+ <tcloud-ui-multiples-values
91
+ [(ngModel)]="tags"
92
+ [autocompleteitems]="sugestoesTags"
93
+ placeholder="Digite uma tag"
94
+ (tcChange)="onTagsChange($event)">
95
+ </tcloud-ui-multiples-values>
96
+ ```
97
+
98
+ ```typescript
99
+ import { TCloudUiMultiplesValuesComponent } from 'tcloud-ui';
100
+
101
+ @Component({
102
+ standalone: true,
103
+ imports: [TCloudUiMultiplesValuesComponent],
104
+ template: `...`
105
+ })
106
+ export class ExemploAutocompleteComponent {
107
+ tags: string[] = [];
108
+ sugestoesTags = ['Angular', 'TypeScript', 'JavaScript', 'HTML', 'CSS'];
109
+
110
+ onTagsChange(itens: string[]) {
111
+ console.log('Tags atualizadas:', itens);
112
+ }
113
+ }
114
+ ```
115
+
116
+ ### Lista de e-mails — Com `type="email"`
117
+
118
+ ```html
119
+ <tcloud-ui-multiples-values
120
+ [(ngModel)]="emails"
121
+ type="email"
122
+ delimiter=","
123
+ placeholder="Digite um ou mais e-mails separados por vírgula"
124
+ (tcChange)="onEmailsChange($event)">
125
+ </tcloud-ui-multiples-values>
126
+ ```
127
+
128
+ ```typescript
129
+ import { TCloudUiMultiplesValuesComponent } from 'tcloud-ui';
130
+
131
+ @Component({
132
+ standalone: true,
133
+ imports: [TCloudUiMultiplesValuesComponent],
134
+ template: `...`
135
+ })
136
+ export class ExemploEmailComponent {
137
+ emails: string[] = [];
138
+
139
+ onEmailsChange(itens: string[]) {
140
+ console.log('E-mails atualizados:', itens);
141
+ }
142
+ }
143
+ ```
144
+
145
+ Cada valor digitado é validado individualmente pelo regex de e-mail embutido após o split pelo `delimiter`. Se algum valor não for um e-mail válido, nenhum item é adicionado e o input recebe a classe de erro (`tc-input-error`, borda vermelha) até a correção. Para um regex customizado, use `pattern` — quando informado, `pattern` tem prioridade sobre `type`.
146
+
83
147
  ### Avançado — Com lista predefinida, uppercase e validação por pattern
84
148
 
85
149
  ```html