@seniorsistemas/angular-components 17.27.1-feature-sds-110-1bb20c20 → 17.27.1-feature-sds-110-57186492

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 (72) hide show
  1. package/autocomplete/index.d.ts +5 -0
  2. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +250 -0
  3. package/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +9 -0
  4. package/autocomplete/public-api.d.ts +1 -0
  5. package/button/lib/button/button.component.d.ts +1 -1
  6. package/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.d.ts +1 -2
  7. package/dynamic-form/lib/dynamic-form/dynamic-form.module.d.ts +3 -2
  8. package/dynamic-form/lib/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +3 -2
  9. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +554 -0
  10. package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +17 -0
  11. package/esm2022/autocomplete/public-api.mjs +2 -0
  12. package/esm2022/autocomplete/seniorsistemas-angular-components-autocomplete.mjs +5 -0
  13. package/esm2022/button/lib/button/button.component.mjs +4 -10
  14. package/esm2022/chips/lib/chips/chips/chips.component.mjs +2 -2
  15. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +2 -2
  16. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +2 -2
  17. package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.mjs +16 -10
  18. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.module.mjs +5 -1
  19. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +7 -6
  20. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/currency/currency-field.component.mjs +18 -8
  21. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +1 -1
  22. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/password/password-field.component.mjs +2 -2
  23. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/select/select-field.component.mjs +1 -1
  24. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-lookup/inline-edit-lookup.component.mjs +1 -1
  25. package/esm2022/lib/locale/fallback.mjs +2 -1
  26. package/esm2022/object-card/lib/object-card/object-card.component.mjs +3 -3
  27. package/esm2022/paginator/lib/paginator/paginator.component.mjs +2 -2
  28. package/esm2022/panel/lib/panel/panel.component.mjs +3 -3
  29. package/esm2022/select/lib/select/select.component.mjs +234 -336
  30. package/esm2022/text-area/lib/text-area/text-area.component.mjs +4 -4
  31. package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.component.mjs +4 -4
  32. package/esm2022/toast/lib/toast/toast.component.mjs +13 -13
  33. package/esm2022/token-list/lib/token-list/token-list.component.mjs +3 -3
  34. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +575 -0
  35. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -0
  36. package/fesm2022/seniorsistemas-angular-components-button.mjs +3 -9
  37. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  38. package/fesm2022/seniorsistemas-angular-components-chips.mjs +2 -2
  39. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  40. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +1 -1
  41. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  42. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +2 -2
  43. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  44. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +38 -19
  45. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  46. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +1 -1
  47. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  48. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
  49. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  50. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +1 -1
  51. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  52. package/fesm2022/seniorsistemas-angular-components-panel.mjs +2 -2
  53. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  54. package/fesm2022/seniorsistemas-angular-components-select.mjs +232 -334
  55. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  56. package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs +3 -3
  57. package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs.map +1 -1
  58. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +3 -3
  59. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  60. package/fesm2022/seniorsistemas-angular-components-toast.mjs +12 -12
  61. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  62. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +2 -2
  63. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  64. package/fesm2022/seniorsistemas-angular-components.mjs +1 -0
  65. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  66. package/package.json +19 -13
  67. package/select/lib/select/select.component.d.ts +148 -157
  68. package/styles.css +1 -0
  69. package/text-area-ia/lib/text-area-ia/text-area-ia.component.d.ts +1 -1
  70. package/toast/lib/toast/toast.component.d.ts +4 -4
  71. package/src/lib/styles/tailwind.scss +0 -3
  72. package/tailwind.css +0 -1167
@@ -1,4 +1,4 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
1
+ import { OnInit } from '@angular/core';
2
2
  import { ControlValueAccessor, FormControl, FormGroup } from '@angular/forms';
3
3
  import * as i0 from "@angular/core";
4
4
  interface InternalDropdownOption<T> {
@@ -6,7 +6,8 @@ interface InternalDropdownOption<T> {
6
6
  id: string;
7
7
  grouper?: boolean;
8
8
  }
9
- export declare class SelectComponent<T> implements ControlValueAccessor, OnInit, OnDestroy {
9
+ export declare class SelectComponent<T> implements ControlValueAccessor, OnInit {
10
+ private static nextId;
10
11
  placeholder: import("@angular/core").InputSignal<string>;
11
12
  multiple: import("@angular/core").InputSignal<boolean>;
12
13
  options: import("@angular/core").InputSignal<T[]>;
@@ -20,256 +21,246 @@ export declare class SelectComponent<T> implements ControlValueAccessor, OnInit,
20
21
  virtualScroll: import("@angular/core").InputSignal<boolean>;
21
22
  virtualScrollItemSize: import("@angular/core").InputSignal<number>;
22
23
  emptyMessage: import("@angular/core").InputSignal<string | null>;
23
- useRawValue: import("@angular/core").InputSignal<boolean>;
24
- dataKey: import("@angular/core").InputSignal<keyof T | undefined>;
25
24
  disabled: import("@angular/core").ModelSignal<boolean>;
26
- showOptions: import("@angular/core").WritableSignal<boolean>;
27
- value: import("@angular/core").WritableSignal<T | null>;
28
- values: import("@angular/core").WritableSignal<T[]>;
25
+ showOptions: import("@angular/core").ModelSignal<boolean>;
26
+ value: import("@angular/core").WritableSignal<InternalDropdownOption<T> | null>;
27
+ values: import("@angular/core").WritableSignal<InternalDropdownOption<T>[]>;
29
28
  filterValue: import("@angular/core").WritableSignal<string>;
30
29
  focusedIndex: import("@angular/core").WritableSignal<number>;
31
- dropTop: number;
32
- dropLeft: number;
33
- dropWidth: number;
34
- private _portalHost;
30
+ componentId: string;
35
31
  /**
36
- * Verifica se todas as opções visíveis (filtradas e não agrupadoras) estão selecionadas.
37
- *
38
- * - Retorna `true` se todas as opções filtradas estiverem presentes em `values()`.
39
- * - Ignora opções marcadas como `grouper`.
40
- * - Usa `_getCompareValueExtractor()` para comparar os valores de forma consistente.
41
- *
42
- * Esse estado é usado para controlar o checkbox de "Selecionar todos" quando todas as opções visíveis estão marcadas.
32
+ * Computed que indica se todas as opções filtradas estão selecionadas.
33
+ * Retorna `true` se todas as opções disponíveis (excluindo agrupadores) estiverem presentes
34
+ * na lista de valores selecionados, e `false` caso contrário.
35
+ * @returns {boolean} `true` se todas as opções filtradas estão selecionadas, `false` caso contrário.
43
36
  */
44
37
  allSelected: import("@angular/core").Signal<boolean>;
38
+ /**
39
+ * Retorna o item atualmente focado na lista de opções filtradas.
40
+ * @returns O dado do item focado ou `null` caso nenhum item esteja focado.
41
+ */
45
42
  focusedItem: import("@angular/core").Signal<NonNullable<T> | null>;
46
43
  /**
47
- * Converte as opções externas (`options()`) em uma estrutura interna padronizada (`InternalDropdownOption<T>`).
48
- *
49
- * - Se os dados forem primitivos (string, number, etc.), gera opções com IDs baseados no índice.
50
- * - Se os dados forem objetos, delega a criação das opções para `_addIdToOptions()`, que adiciona IDs e marca agrupadores.
51
- * - Se o modo agrupado estiver ativo (`group()`), transforma as opções em uma lista achatada com agrupadores via `_grouperToFlat()`.
52
- *
53
- * Essa estrutura é usada internamente para renderização, filtragem e controle de seleção.
44
+ * Computa e retorna a lista interna de opções do dropdown.
45
+ * - Se as opções estiverem agrupadas (`group()` retorna verdadeiro),
46
+ * utiliza `_grouperToFlat` para transformar as opções agrupadas em uma lista plana.
47
+ * - Caso contrário, retorna as opções com IDs adicionados.
48
+ * @returns Um array de `InternalDropdownOption<T>` representando as opções disponíveis para o componente select.
54
49
  */
55
50
  internalOptions: import("@angular/core").Signal<InternalDropdownOption<T>[]>;
56
51
  /**
57
- * Retorna o texto que deve ser exibido no componente com base nos valores selecionados.
58
- *
59
- * - No modo múltiplo:
60
- * - Se houver mais de um item selecionado, exibe uma mensagem traduzida com o total de registros.
61
- * - Se houver apenas um item selecionado, exibe o label correspondente.
62
- * - No modo simples:
63
- * - Exibe o label do valor selecionado. *
64
- * - Se nenhum valor estiver selecionado, retorna uma string vazia.
65
- *
66
- * Essa lógica é usada para mostrar o conteúdo atual do campo de seleção.
52
+ * Retorna uma string representando a seleção atual do componente.
53
+ * - Se o modo múltiplo estiver ativado e mais de um item estiver selecionado,
54
+ * retorna uma mensagem traduzida indicando o número total de registros selecionados.
55
+ * - Se apenas um item estiver selecionado, retorna o rótulo desse item.
56
+ * - Se o modo múltiplo não estiver ativado, retorna o rótulo do item selecionado ou uma string vazia caso nenhum item esteja selecionado.
57
+ * @returns {string} Texto representando a seleção atual.
67
58
  */
68
59
  print: import("@angular/core").Signal<any>;
60
+ /**
61
+ * Indica se o seletor está "limpo", ou seja, sem nenhum valor selecionado.
62
+ * - No modo múltiplo (`multiple`), retorna `true` se não houver nenhum valor selecionado (`values` está vazio).
63
+ * - No modo simples, retorna `true` se não houver valor selecionado (`value` é falsy).
64
+ * @returns `true` se não houver seleção, `false` caso contrário.
65
+ */
69
66
  isClean: import("@angular/core").Signal<boolean>;
70
- TIsPrimitive: import("@angular/core").Signal<boolean>;
71
67
  /**
72
- * Indica se o estado de seleção está indeterminado.
73
- *
74
- * - Retorna `true` quando **algumas**, mas não todas, opções visíveis estão selecionadas.
75
- * - Retorna `false` quando **todas** ou **nenhuma** das opções visíveis estão selecionadas.
76
- * - Ignora opções marcadas como `grouper`.
77
- *
78
- * Esse estado é usado, por exemplo, para exibir o checkbox de "Selecionar todos" em modo indeterminado.
68
+ * Computed que indica se o estado de seleção "Selecionar Todos" está indeterminado.
69
+ * Retorna `true` quando nem todos os itens filtrados estão selecionados e nem todos estão desmarcados,
70
+ * ou seja, quando uma seleção parcial dos itens disponíveis.
71
+ * @returns {boolean} `true` se a seleção for parcial, `false` caso contrário.
79
72
  */
80
73
  selectAllIsIndeterminate: import("@angular/core").Signal<boolean>;
81
74
  /**
82
- * Retorna a lista de opções filtradas com base no valor digitado pelo usuário.
83
- *
84
- * - Se o filtro estiver desativado ou vazio, retorna todas as opções.
85
- * - Caso contrário, aplica o filtro usando o(s) campo(s) definidos em `filterBy`.
86
- * - Ignora opções marcadas como `grouper`.
87
- * - Usa o extrator de label para comparar os valores com o texto buscado.
75
+ * Retorna uma lista de opções filtradas com base no valor de busca (`filterValue`) e nos critérios definidos.
76
+ * - Se o filtro estiver desabilitado ou o valor de busca estiver vazio, retorna todas as opções.
77
+ * - Caso contrário, filtra as opções utilizando o(s) campo(s) especificado(s) em `filterBy`.
78
+ * - Ignora opções que possuem a propriedade `grouper` definida.
79
+ * @returns As opções filtradas conforme o valor de busca e critérios de filtro.
88
80
  */
89
81
  filteredOptions: import("@angular/core").Signal<InternalDropdownOption<T>[]>;
90
82
  readonly filterForm: FormGroup<{
91
83
  filter: FormControl<string>;
92
84
  }>;
93
- private readonly _elementRef;
94
- private _dropdownTemplate;
95
85
  private _containerDiv;
96
86
  private _onChange;
97
87
  private _onTouched;
98
- private readonly platformId;
99
- private readonly _viewContainerRef;
100
88
  private readonly _translateService;
101
- private destroy$;
102
- /**
103
- * Inicializa o componente, validando os inputs e configurando o filtro com debounce.
104
- */
89
+ constructor();
105
90
  ngOnInit(): void;
106
91
  /**
107
- * Executa limpeza de recursos ao destruir o componente.
92
+ * Define o valor selecionado do componente select.
93
+ * @param value O valor a ser definido. Pode ser um objeto do tipo `T`, um array de `T` (quando múltipla seleção está habilitada), ou `null`.
94
+ * @throws Se o modo múltiplo estiver ativado e o valor não for um array, lança um erro.
95
+ * @throws Se o modo múltiplo estiver desativado e o valor for um array, lança um erro.
96
+ * Este método mapeia o(s) valor(es) fornecido(s) para as opções internas do componente,
97
+ * garantindo que apenas opções válidas sejam selecionadas conforme o modo de seleção (único ou múltiplo).
108
98
  */
109
- ngOnDestroy(): void;
99
+ writeValue(value: T | T[] | null): void;
110
100
  /**
111
- * Define o valor no componente vindo do formulário externo.
112
- * @param value Valor atribuído pelo Angular forms.
113
- */
114
- writeValue(value: any): void;
115
- /**
116
- * Registra a função que será chamada quando o valor mudar.
117
- * @param onChange Função callback.
101
+ * Registra uma função de callback que será chamada sempre que o valor do componente mudar.
102
+ * @param onChange Função de callback que recebe o novo valor selecionado ou null.
118
103
  */
119
104
  registerOnChange(onChange: (value: T | T[] | null) => void): void;
120
105
  /**
121
- * Registra a função que será chamada quando o componente for "tocado".
122
- * @param onTouched Função callback.
106
+ * Registra uma função de callback que será chamada quando o componente for tocado (perder o foco).
107
+ * @param onTouched Função de callback a ser executada quando o componente for marcado como "tocado".
123
108
  */
124
109
  registerOnTouched(onTouched: () => void): void;
125
110
  /**
126
111
  * Define o estado de desabilitado do componente.
127
- * @param disabled Indica se o componente está desabilitado.
112
+ * @param disabled Indica se o componente deve ser desabilitado (`true`) ou habilitado (`false`).
128
113
  */
129
114
  setDisabledState(disabled: boolean): void;
130
115
  /**
131
- * Alterna a exibição da lista de opções (dropdown).
116
+ * Alterna a exibição das opções do componente select.
117
+ * Se o componente estiver desabilitado, não realiza nenhuma ação.
118
+ * Caso contrário, inverte o estado de exibição das opções.
132
119
  */
133
120
  toggle(): void;
134
121
  /**
135
- * Seleciona ou desseleciona um item na lista.
136
- * @param item Item a ser selecionado ou desmarcado.
122
+ * Seleciona um item no componente de seleção.
123
+ * @param item O item a ser selecionado ou desmarcado.
124
+ * Se o componente estiver desabilitado, a função retorna imediatamente.
125
+ * No modo múltiplo, adiciona ou remove o item da lista de valores selecionados.
126
+ * No modo simples, define o item como valor selecionado e fecha o dropdown.
127
+ * Sempre notifica as mudanças e marca o componente como tocado.
137
128
  */
138
- selectItem(item: T): void;
129
+ selectItem(item: InternalDropdownOption<T>): void;
139
130
  /**
140
- * Limpa a seleção atual.
141
- * @param event Evento do clique.
131
+ * Limpa o valor selecionado no componente select.
132
+ * Se o componente estiver desabilitado, não executa nenhuma ação.
133
+ * Para seleção múltipla, remove todos os valores selecionados e notifica a alteração.
134
+ * Para seleção única, define o valor como nulo e notifica a alteração.
135
+ * Fecha o dropdown e marca o componente como "tocado".
136
+ * Impede a propagação do evento do mouse.
137
+ * @param event Evento do mouse que acionou a limpeza da seleção.
142
138
  */
143
139
  clear(event: MouseEvent): void;
144
140
  /**
145
- * Limpa o filtro aplicado à lista de opções.
141
+ * Limpa o filtro do formulário, resetando o campo 'filter' do formulário de filtro.
142
+ * Este método redefine o valor do campo 'filter' para seu estado inicial,
143
+ * removendo qualquer texto ou valor previamente inserido pelo usuário.
146
144
  */
147
145
  clearFilter(): void;
148
146
  /**
149
- * Fecha o dropdown se o clique ocorrer fora do componente.
150
- * @param event Evento do clique.
151
- */
152
- onDocumentClick(event: MouseEvent): void;
153
- /**
154
- * Fecha o dropdown em eventos de redimensionamento de janela.
147
+ * Manipula o evento de redimensionamento da janela.
148
+ * Fecha o dropdown de opções caso ele esteja visível ao redimensionar a janela.
149
+ * @param _ Evento de redimensionamento da janela (não utilizado).
155
150
  */
156
151
  onWindowResize(_: Event): void;
157
152
  /**
158
- * Dispara a abertura/fechamento do dropdown ao clicar no container.
153
+ * Manipula o evento de clique no elemento container da seleção.
154
+ * Este método alterna o estado de exibição do componente select e,
155
+ * em seguida, define o foco no elemento container correspondente.
159
156
  */
160
157
  onContainerDivClick(): void;
161
158
  /**
162
- * Trata eventos de teclado para navegação e seleção.
163
- * @param event Evento do teclado.
159
+ * Manipula eventos de teclado para navegação e seleção de opções no componente select.
160
+ * - 'ArrowDown': Move o foco para a próxima opção disponível.
161
+ * - 'ArrowUp': Move o foco para a opção anterior.
162
+ * - 'Tab': Seleciona a opção atualmente focada e fecha o dropdown.
163
+ * - 'Enter': Seleciona a opção focada se o dropdown estiver aberto, ou alterna a abertura do dropdown.
164
+ * - 'Escape': Fecha o dropdown.
165
+ * - ' ': (barra de espaço) Seleciona a opção focada se o dropdown estiver aberto, ou alterna a abertura do dropdown.
166
+ * Previne o comportamento padrão do navegador quando necessário para garantir a navegação adequada pelo teclado.
167
+ * @param event O evento de teclado disparado pelo usuário.
164
168
  */
165
169
  onKeyDown(event: KeyboardEvent): void;
166
170
  /**
167
- * Retorna o rótulo de exibição de uma opção.
168
- * @param option Item da lista de opções.
169
- * @returns Texto que será exibido no dropdown.
171
+ * Retorna o rótulo (label) associado a uma opção fornecida.
172
+ * @param option - A opção do tipo T para a qual o rótulo deve ser obtido.
173
+ * @returns O rótulo da opção como uma string.
170
174
  */
171
175
  getOptionLabel(option: T): string;
172
176
  /**
173
- * Função usada para o trackBy no for do template.
174
- * @param _ Índice do item.
175
- * @param item Item da lista.
176
- * @returns ID único da opção.
177
+ * Função de trackBy utilizada em diretivas *ngFor para otimizar a renderização de listas.
178
+ * Retorna o identificador único (`id`) de cada item do tipo `InternalDropdownOption<T>`.
179
+ * @param _ - Índice do item na lista (não utilizado).
180
+ * @param item - O item atual da lista do tipo `InternalDropdownOption<T>`.
181
+ * @returns O identificador único do item como uma string.
177
182
  */
178
183
  trackById(_: number, item: InternalDropdownOption<T>): string;
179
184
  /**
180
- * Verifica se uma opção está selecionada.
181
- * @param option Opção a ser verificada.
182
- * @returns Verdadeiro se a opção estiver selecionada.
185
+ * Verifica se a opção fornecida está selecionada.
186
+ * @param option - A opção interna do dropdown a ser verificada.
187
+ * @returns `true` se a opção estiver selecionada, caso contrário `false`.
183
188
  */
184
- isOptionSelected(option: T): boolean;
189
+ isOptionSelected(option: InternalDropdownOption<T>): boolean;
185
190
  /**
186
- * Alterna a seleção de todos os itens filtrados.
191
+ * Alterna a seleção de todos os itens disponíveis.
192
+ * Se o modo múltiplo estiver ativado, seleciona todos os itens filtrados que não são agrupadores
193
+ * caso nem todos estejam selecionados, ou limpa a seleção caso todos já estejam selecionados.
194
+ * Após a alteração, notifica a mudança de valor.
187
195
  */
188
196
  toggleSelectAll(): void;
189
197
  /**
190
- * Procura e retorna uma opção com valor primitivo igual ao informado.
191
- *
192
- * @param value Valor primitivo (string, number ou boolean).
193
- * @returns A opção correspondente, ou `null` se não encontrada.
194
- */
195
- private _findOptionByPrimitiveValue;
196
- /**
197
- * Remove propriedades internas adicionadas pelo componente, retornando apenas os dados crus.
198
- *
199
- * Usado para garantir que apenas os objetos de dados reais sejam emitidos ao formulário,
200
- * especialmente no modo múltiplo.
201
- *
202
- * @param value Valor armazenado internamente (com ou sem `InternalDropdownOption`).
203
- * @returns Os dados "puros", sem propriedades adicionais.
204
- */
205
- private _removeInternalProperties;
206
- /**
207
- * Retorna o texto (label) correspondente a uma determinada opção.
208
- * Usa a propriedade definida em `optionLabel`, ou tenta usar uma propriedade padrão (`label`).
209
- *
210
- * @param option A opção a ser exibida.
211
- * @returns O texto legível da opção para exibição no componente.
198
+ * Retorna o rótulo (label) de uma opção fornecida.
199
+ * Este método utiliza a propriedade definida por `optionLabel` para extrair o valor do rótulo da opção.
200
+ * Caso `optionLabel` não esteja definido, retorna a representação em string da própria opção.
201
+ * @private
202
+ * @param option A opção da qual o rótulo será extraído.
203
+ * @returns O rótulo da opção como uma string.
212
204
  */
213
205
  private _getLabelFromOption;
214
206
  /**
215
- * Valida os inputs obrigatórios do componente.
207
+ * Valida as entradas do componente de seleção.
208
+ * Este método verifica se as opções fornecidas são válidas. Caso as opções sejam objetos,
209
+ * garante que a propriedade `optionLabel` esteja definida, lançando um erro caso contrário.
210
+ * Se não houver opções, a validação é ignorada.
211
+ * @private
212
+ * @throws {Error} Se as opções forem objetos e `optionLabel` não estiver definido.
216
213
  */
217
214
  private _validateInputs;
218
- private _findOptionByValue;
219
- /**
220
- * Extrai o valor final de uma opção, com base em `optionValue`.
221
- * @returns Função que retorna o valor da opção.
222
- */
223
- private _getValueExtractor;
224
- /**
225
- * Extrai o valor comparável de uma opção.
226
- * @returns Função que retorna a chave de comparação.
227
- */
228
- private _getCompareValueExtractor;
229
215
  /**
230
- * Fecha o dropdown e redefine o foco.
216
+ * Fecha o dropdown de opções do componente select.
217
+ * Este método oculta as opções disponíveis e redefine o índice do item focado para -1,
218
+ * indicando que nenhum item está atualmente focado.
219
+ * @private
231
220
  */
232
221
  private _closeDropdown;
233
222
  /**
234
- * Adiciona identificadores únicos às opções.
235
- * @param options Lista original de opções.
236
- * @returns Lista com IDs adicionados.
223
+ * Adiciona um identificador único a cada opção fornecida.
224
+ * Para cada item no array de opções, gera um objeto `InternalDropdownOption` contendo o dado original
225
+ * e um campo `id` único baseado no timestamp atual e no índice do item. Caso a opção seja um grupo
226
+ * (detectado pela presença de um array `items`), adiciona também a propriedade `grouper: true`.
227
+ * @private
228
+ * @param options Array de opções do tipo `T` a serem processadas.
229
+ * @returns Um array de objetos `InternalDropdownOption<T>` com identificadores únicos.
237
230
  */
238
231
  private _addIdToOptions;
239
232
  /**
240
- * Converte uma estrutura agrupada em uma lista achatada.
241
- * @param options Lista de opções com agrupadores.
242
- * @returns Lista achatada de opções e grupos.
233
+ * Converte uma lista de opções possivelmente agrupadas em uma lista plana de opções.
234
+ * Para cada opção que possui um agrupador (`grouper`) e um array de itens em `data.items`,
235
+ * adiciona a opção do agrupador e, em seguida, adiciona cada item do grupo como uma nova opção
236
+ * individual, atribuindo um `id` único para cada item do grupo.
237
+ * Caso a opção não seja um agrupador, ela é adicionada diretamente ao resultado.
238
+ * @private
239
+ * @param options Lista de opções internas do dropdown, podendo conter agrupadores.
240
+ * @returns Lista plana de opções, incluindo agrupadores e seus itens expandidos.
243
241
  */
244
242
  private _grouperToFlat;
245
243
  /**
246
- * Move o foco para a próxima opção.
247
- * @param options Lista de opções visíveis.
244
+ * Move o foco para a próxima opção disponível na lista, ignorando opções que sejam agrupadores.
245
+ * @private
246
+ * @param options Lista de opções internas do dropdown.
248
247
  */
249
248
  private _focusNextOption;
250
249
  /**
251
- * Move o foco para a opção anterior.
252
- * @param options Lista de opções visíveis.
250
+ * Move o foco para a opção anterior na lista, ignorando opções do tipo "grouper".
251
+ * @private
252
+ * @param options Lista de opções internas do dropdown.
253
253
  */
254
254
  private _focusPreviousOption;
255
255
  /**
256
- * Rola o dropdown até a opção atualmente focada.
256
+ * Rola a lista de opções para garantir que a opção atualmente focada esteja visível.
257
+ * Este método obtém o ID da opção atualmente focada a partir da lista de opções filtradas.
258
+ * Se um ID válido for encontrado, busca o elemento correspondente no DOM e utiliza
259
+ * `scrollIntoView` para rolar até a opção, alinhando-a ao bloco mais próximo.
260
+ * @private
257
261
  */
258
262
  private _scrollToFocusedOption;
259
- /**
260
- * Extrai o texto de uma opção, com base em `optionLabel`.
261
- * @returns Função que retorna o label da opção.
262
- */
263
- private _getLabelExtractor;
264
- /**
265
- * Cria e posiciona dinamicamente o dropdown como portal.
266
- */
267
- private _createDropdownPortal;
268
- /**
269
- * Remove o portal do dropdown do DOM.
270
- */
271
- private _destroyDropdownPortal;
272
263
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent<any>, never>;
273
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent<any>, "s-select", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "checkmark": { "alias": "checkmark"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "useRawValue": { "alias": "useRawValue"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; }, never, never, true, never>;
264
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent<any>, "s-select", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "checkmark": { "alias": "checkmark"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showOptions": { "alias": "showOptions"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "showOptions": "showOptionsChange"; }, never, never, true, never>;
274
265
  }
275
266
  export {};
package/styles.css ADDED
@@ -0,0 +1 @@
1
+ @import "@angular/cdk/overlay-prebuilt.css";
@@ -1,9 +1,9 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { ControlValueAccessor, FormBuilder, FormGroup } from '@angular/forms';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
- import { IAssistService } from '../services/IAssist/iassist.service';
5
4
  import { SpeechRecognitionService } from '@seniorsistemas/angular-components/speech-recognition';
6
5
  import { TextAreaComponent } from '@seniorsistemas/angular-components/text-area';
6
+ import { IAssistService } from '../services/IAssist/iassist.service';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class TextAreaIAComponent implements OnInit, ControlValueAccessor {
9
9
  private readonly _iassistService;
@@ -1,15 +1,15 @@
1
- import { EventEmitter, OnDestroy } from "@angular/core";
1
+ import { EventEmitter, OnDestroy, OnInit } from "@angular/core";
2
2
  import { Toast } from "./types/toast";
3
3
  import * as i0 from "@angular/core";
4
- export declare class ToastComponent implements OnDestroy {
4
+ export declare class ToastComponent implements OnInit, OnDestroy {
5
5
  toast: Toast;
6
6
  dismiss: EventEmitter<void>;
7
7
  isLeaving: boolean;
8
8
  private timer;
9
- startDismissAnimation(): void;
10
- dismissToast(): void;
11
9
  ngOnInit(): void;
12
10
  ngOnDestroy(): void;
11
+ startDismissAnimation(): void;
12
+ dismissToast(): void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ToastComponent, never>;
14
14
  static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "s-toast", never, { "toast": { "alias": "toast"; "required": false; }; }, { "dismiss": "dismiss"; }, never, never, false, never>;
15
15
  }
@@ -1,3 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;