@seniorsistemas/angular-components 19.9.3 → 19.9.5

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 (136) hide show
  1. package/autocomplete/README.md +4 -0
  2. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +7 -1
  3. package/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +3 -1
  4. package/checkbox/lib/checkbox/checkbox.component.d.ts +1 -6
  5. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +8 -0
  6. package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -2
  7. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -0
  8. package/drawer/README.md +9 -2
  9. package/drawer/lib/drawer/drawer.component.d.ts +12 -1
  10. package/editor/lib/editor/editor.component.d.ts +1 -1
  11. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +10 -4
  12. package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +5 -3
  13. package/esm2022/button/lib/button/button.component.mjs +3 -3
  14. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -9
  15. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +17 -5
  16. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +9 -8
  17. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +18 -3
  18. package/esm2022/drawer/lib/drawer/drawer.component.mjs +33 -11
  19. package/esm2022/drawer/lib/drawer/drawer.module.mjs +2 -2
  20. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
  21. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
  22. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
  23. package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +4 -3
  24. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
  25. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
  26. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
  27. package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
  28. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
  29. package/esm2022/editor/lib/editor/editor.component.mjs +8 -8
  30. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +4 -4
  31. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +4 -4
  32. package/esm2022/global-search/lib/global-search/global-search.module.mjs +2 -2
  33. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +3 -3
  34. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +2 -3
  35. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +21 -3
  36. package/esm2022/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.mjs +14 -3
  37. package/esm2022/insights/lib/insights/insights.component.mjs +15 -4
  38. package/esm2022/paginator/lib/models/paginator.models.mjs +1 -1
  39. package/esm2022/paginator/lib/paginator/paginator.component.mjs +19 -13
  40. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +19 -8
  41. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +3 -4
  42. package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +1 -1
  43. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +23 -3
  44. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +5 -3
  45. package/esm2022/select/lib/select/select.component.mjs +6 -4
  46. package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +6 -5
  47. package/esm2022/slider/lib/slider/slider.component.mjs +3 -3
  48. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +58 -8
  49. package/esm2022/split-button/lib/split-button/split-button.component.mjs +11 -3
  50. package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
  51. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +1 -1
  52. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +14 -21
  53. package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
  54. package/esm2022/token-list/lib/token-list/token-list.component.mjs +7 -3
  55. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +3 -2
  56. package/esm2022/utils/lib/utils/utils.mjs +49 -3
  57. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +13 -5
  58. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  59. package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
  60. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  61. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +16 -4
  62. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  63. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -8
  64. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  65. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +8 -6
  66. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  67. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -2
  68. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-drawer.mjs +32 -9
  70. package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
  71. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +17 -17
  72. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  73. package/fesm2022/seniorsistemas-angular-components-editor.mjs +7 -7
  74. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +3 -3
  76. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +3 -3
  78. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  79. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +3 -4
  80. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  81. package/fesm2022/seniorsistemas-angular-components-insights.mjs +47 -7
  82. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  83. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +18 -12
  84. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  85. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +20 -9
  86. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  87. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +22 -2
  88. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  89. package/fesm2022/seniorsistemas-angular-components-select.mjs +9 -5
  90. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  91. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +5 -4
  92. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
  93. package/fesm2022/seniorsistemas-angular-components-slider.mjs +2 -2
  94. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  95. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +57 -7
  96. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  97. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +10 -2
  98. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  99. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
  100. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  101. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +13 -20
  102. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  103. package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
  104. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  105. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
  106. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  107. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +6 -2
  108. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -1
  110. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components-utils.mjs +49 -3
  112. package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
  113. package/global-search/lib/global-search/global-search.module.d.ts +1 -1
  114. package/insights/README.md +12 -0
  115. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +22 -1
  116. package/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.d.ts +9 -1
  117. package/insights/lib/insights/insights.component.d.ts +9 -1
  118. package/package.json +1 -3
  119. package/paginator/lib/models/paginator.models.d.ts +1 -0
  120. package/paginator/lib/paginator/paginator.component.d.ts +3 -1
  121. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +3 -1
  122. package/rating-scale/README.md +38 -13
  123. package/rating-scale/lib/rating-scale/models/rating-scale-node.d.ts +8 -0
  124. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +4 -1
  125. package/select/README.md +2 -0
  126. package/select/lib/select/components/select-option/select-option.component.d.ts +3 -1
  127. package/select/lib/select/select.component.d.ts +3 -1
  128. package/side-sheet/README.md +4 -4
  129. package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +1 -0
  130. package/speech-recognition/README.md +1 -0
  131. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +4 -1
  132. package/split-button/README.md +2 -0
  133. package/split-button/lib/split-button/split-button.component.d.ts +5 -1
  134. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -4
  135. package/token-list/lib/token-list/token-list.component.d.ts +3 -1
  136. package/utils/lib/utils/utils.d.ts +21 -0
@@ -52,25 +52,30 @@ export class MeuModulo {}
52
52
 
53
53
  ```typescript
54
54
  interface RatingScaleNode {
55
- id: string; // Identificador único do nó (obrigatório)
56
- title?: string; // Texto exibido abaixo do ícone
57
- icon?: string; // Classe do ícone Font Awesome (ex: 'fa-smile')
55
+ id: string; // Identificador único do nó (obrigatório)
56
+ title?: string; // Texto exibido abaixo do ícone
57
+ /** @deprecated Use `selectedIcon` e `unselectedIcon`. */
58
+ icon?: string; // Classe do ícone Font Awesome sem o glifo (ex: 'fa-smile') — sempre exibido com o glifo fixo `fas`
59
+ selectedIcon?: string; // Classe completa (glifo + ícone, ex: 'fas fa-smile') exibida quando o nó está selecionado
60
+ unselectedIcon?: string; // Classe completa (glifo + ícone, ex: 'far fa-smile') exibida quando o nó não está selecionado
58
61
  }
59
62
  ```
60
63
 
61
64
  > O `FormControl` deve ser do tipo `RatingScaleNode`. O componente emite o objeto `RatingScaleNode` completo quando um nó é selecionado.
62
65
 
66
+ > **`selectedIcon`/`unselectedIcon` devem ser informados juntos.** Se apenas um dos dois for informado, o componente emite um aviso no console e não exibe nenhum ícone para aquele nó. Se os dois forem informados, eles têm prioridade sobre `icon` (que é ignorado nesse caso).
67
+
63
68
  ## Exemplos
64
69
 
65
70
  ### Escala de humor com ícones
66
71
 
67
72
  ```typescript
68
73
  const nosHumor: RatingScaleNode[] = [
69
- { id: 'very-happy', title: 'Muito feliz', icon: 'fa-laugh-wink' },
70
- { id: 'happy', title: 'Feliz', icon: 'fa-smile' },
71
- { id: 'normal', title: 'Normal', icon: 'fa-meh' },
72
- { id: 'sad', title: 'Triste', icon: 'fa-sad-tear' },
73
- { id: 'very-sad', title: 'Muito triste', icon: 'fa-sad-cry' },
74
+ { id: 'very-happy', title: 'Muito feliz', selectedIcon: 'fas fa-laugh-wink', unselectedIcon: 'far fa-laugh-wink' },
75
+ { id: 'happy', title: 'Feliz', selectedIcon: 'fas fa-smile', unselectedIcon: 'far fa-smile' },
76
+ { id: 'normal', title: 'Normal', selectedIcon: 'fas fa-meh', unselectedIcon: 'far fa-meh' },
77
+ { id: 'sad', title: 'Triste', selectedIcon: 'fas fa-sad-tear', unselectedIcon: 'far fa-sad-tear' },
78
+ { id: 'very-sad', title: 'Muito triste', selectedIcon: 'fas fa-sad-cry', unselectedIcon: 'far fa-sad-cry' },
74
79
  ];
75
80
  ```
76
81
 
@@ -128,11 +133,11 @@ this.form = new FormGroup({
128
133
  ```html
129
134
  <s-rating-scale
130
135
  [nodes]="[
131
- { id: 'very-happy', icon: 'fa-laugh-wink' },
132
- { id: 'happy', icon: 'fa-smile' },
133
- { id: 'normal', icon: 'fa-meh' },
134
- { id: 'sad', icon: 'fa-sad-tear' },
135
- { id: 'very-sad', icon: 'fa-sad-cry' }
136
+ { id: 'very-happy', selectedIcon: 'fas fa-laugh-wink', unselectedIcon: 'far fa-laugh-wink' },
137
+ { id: 'happy', selectedIcon: 'fas fa-smile', unselectedIcon: 'far fa-smile' },
138
+ { id: 'normal', selectedIcon: 'fas fa-meh', unselectedIcon: 'far fa-meh' },
139
+ { id: 'sad', selectedIcon: 'fas fa-sad-tear', unselectedIcon: 'far fa-sad-tear' },
140
+ { id: 'very-sad', selectedIcon: 'fas fa-sad-cry', unselectedIcon: 'far fa-sad-cry' }
136
141
  ]"
137
142
  startLabel="Triste"
138
143
  endLabel="Feliz"
@@ -148,6 +153,26 @@ this.form = new FormGroup({
148
153
  - `startLabel` e `endLabel` contextualizam os extremos da escala para todos os usuários
149
154
  - Em modo `disabled`, nenhum nó aceita interação e o estilo visual indica o estado inativo
150
155
 
156
+ ## Migração
157
+
158
+ ### `icon` para `selectedIcon`/`unselectedIcon`
159
+
160
+ O campo `icon` de `RatingScaleNode` está depreciado. Ele sempre exibia o ícone com o glifo `fas` fixo, independente do nó estar selecionado ou não. Os novos campos `selectedIcon`/`unselectedIcon` recebem a classe completa (glifo + ícone) pra cada estado, permitindo escolher livremente qualquer combinação — inclusive estilos diferentes (`fas`/`far`/etc.) por nó:
161
+
162
+ ```typescript
163
+ // Antes
164
+ const nos: RatingScaleNode[] = [
165
+ { id: 'happy', title: 'Feliz', icon: 'fa-smile' },
166
+ ];
167
+
168
+ // Depois
169
+ const nos: RatingScaleNode[] = [
170
+ { id: 'happy', title: 'Feliz', selectedIcon: 'fas fa-smile', unselectedIcon: 'far fa-smile' },
171
+ ];
172
+ ```
173
+
174
+ `selectedIcon` e `unselectedIcon` devem ser informados sempre em conjunto — informar só um dos dois gera um aviso no console e nenhum ícone é exibido para o nó.
175
+
151
176
  ## Componentes relacionados
152
177
 
153
178
  - [`StarRating`](../star-rating/README.md) — avaliação por estrelas com escala numérica fixa
@@ -1,5 +1,13 @@
1
1
  export interface RatingScaleNode {
2
2
  id: string;
3
3
  title?: string;
4
+ /**
5
+ * @deprecated Use `selectedIcon` e `unselectedIcon` para controlar o glifo (`fas`/`far`/etc.)
6
+ * junto com o ícone. Será removido na próxima versão major.
7
+ */
4
8
  icon?: string;
9
+ /** @description Classe completa (glifo + ícone, ex: `'fas fa-smile'`) exibida quando o nó está selecionado. Deve ser informado junto com `unselectedIcon`. */
10
+ selectedIcon?: string;
11
+ /** @description Classe completa (glifo + ícone, ex: `'far fa-smile'`) exibida quando o nó não está selecionado. Deve ser informado junto com `selectedIcon`. */
12
+ unselectedIcon?: string;
5
13
  }
@@ -1,3 +1,4 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
1
2
  import { ControlValueAccessor } from '@angular/forms';
2
3
  import { RatingScaleNode } from './models/rating-scale-node';
3
4
  import * as i0 from "@angular/core";
@@ -18,7 +19,7 @@ import * as i0 from "@angular/core";
18
19
  *
19
20
  * @category Feedback
20
21
  */
21
- export declare class RatingScaleComponent implements ControlValueAccessor {
22
+ export declare class RatingScaleComponent implements ControlValueAccessor, OnChanges {
22
23
  /**
23
24
  * @description Lista de nós que compõem a escala de avaliação. Campo obrigatório.
24
25
  * Cada `RatingScaleNode` define o valor, rótulo e cor do item na escala.
@@ -37,6 +38,8 @@ export declare class RatingScaleComponent implements ControlValueAccessor {
37
38
  value?: RatingScaleNode;
38
39
  private _onChange?;
39
40
  private _onTouched?;
41
+ ngOnChanges(changes: SimpleChanges): void;
42
+ getNodeIconClass(node: RatingScaleNode): string | undefined;
40
43
  writeValue(value: RatingScaleNode): void;
41
44
  registerOnChange(onChange: (value: RatingScaleNode) => void): void;
42
45
  registerOnTouched(onTouched: (value: RatingScaleNode) => void): void;
package/select/README.md CHANGED
@@ -62,6 +62,8 @@ export class MeuComponent {}
62
62
  | `ariaLabel` | `string` | `''` | Não | Label de acessibilidade do componente |
63
63
  | `ariaLabelledBy` | `string` | `''` | Não | ID do elemento externo que descreve o componente |
64
64
 
65
+ > **Nota:** o ícone exibido por `checkmark` usa por padrão a classe `far fa-check` (Font Awesome Free), definida internamente pelo `SelectOptionComponent` (sub-componente interno que renderiza cada opção do dropdown) através do input `checkIconClass`. Esse input não é público — não é exposto nem repassado pelo `SelectComponent`.
66
+
65
67
  ### Tipos
66
68
 
67
69
  ```typescript
@@ -7,8 +7,10 @@ export declare class SelectOptionComponent {
7
7
  isGrouper: import("@angular/core").InputSignal<boolean>;
8
8
  isFocused: import("@angular/core").InputSignal<boolean>;
9
9
  isSelected: import("@angular/core").ModelSignal<boolean>;
10
+ /** @description Classe do ícone de checkmark exibido quando a opção está selecionada. @default 'far fa-check' */
11
+ checkIconClass: import("@angular/core").InputSignal<string>;
10
12
  selected: import("@angular/core").OutputEmitterRef<void>;
11
13
  onClick(): void;
12
14
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectOptionComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectOptionComponent, "s-select-option", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": true; "isSignal": true; }; "checkmark": { "alias": "checkmark"; "required": true; "isSignal": true; }; "isGrouper": { "alias": "isGrouper"; "required": true; "isSignal": true; }; "isFocused": { "alias": "isFocused"; "required": true; "isSignal": true; }; "isSelected": { "alias": "isSelected"; "required": true; "isSignal": true; }; }, { "isSelected": "isSelectedChange"; "selected": "selected"; }, never, never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectOptionComponent, "s-select-option", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": true; "isSignal": true; }; "checkmark": { "alias": "checkmark"; "required": true; "isSignal": true; }; "isGrouper": { "alias": "isGrouper"; "required": true; "isSignal": true; }; "isFocused": { "alias": "isFocused"; "required": true; "isSignal": true; }; "isSelected": { "alias": "isSelected"; "required": true; "isSignal": true; }; "checkIconClass": { "alias": "checkIconClass"; "required": false; "isSignal": true; }; }, { "isSelected": "isSelectedChange"; "selected": "selected"; }, never, never, true, never>;
14
16
  }
@@ -43,6 +43,8 @@ export declare class SelectComponent<T> implements ControlValueAccessor, OnInit,
43
43
  filter: import("@angular/core").InputSignal<boolean>;
44
44
  /** @description Exibe um ícone de checkmark ao lado da opção selecionada. @default false */
45
45
  checkmark: import("@angular/core").InputSignal<boolean>;
46
+ /** @description Classe do ícone de checkmark exibido quando `checkmark` está ativo. @default 'far fa-check' */
47
+ checkIconClass: import("@angular/core").InputSignal<string>;
46
48
  /** @description Chave(s) do objeto usada(s) para filtragem textual. Quando não informado, usa `optionLabel`. */
47
49
  filterBy: import("@angular/core").InputSignal<keyof T | (keyof T)[] | undefined>;
48
50
  /** @description Habilita agrupamento de opções. As opções devem conter itens filhos conforme a estrutura de grupo suportada. @default false */
@@ -369,6 +371,6 @@ export declare class SelectComponent<T> implements ControlValueAccessor, OnInit,
369
371
  */
370
372
  private _focusSelectedOption;
371
373
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent<any>, never>;
372
- 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; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "showOptions": "showOptionsChange"; }, never, never, true, never>;
374
+ 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; }; "checkIconClass": { "alias": "checkIconClass"; "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; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "showOptions": "showOptionsChange"; }, never, never, true, never>;
373
375
  }
374
376
  export {};
@@ -16,7 +16,7 @@ Painel que empurra o conteúdo adjacente para a esquerda, dividindo o espaço ho
16
16
 
17
17
  - Ações destrutivas ou de confirmação — prefira `ConfirmDialog`
18
18
  - Conteúdo crítico que exige atenção exclusiva, bloqueando toda a tela — prefira `Dialog`
19
- - Fechamento configurável por Escape, clique fora ou confirmação de fechamento — prefira `Sidebar`
19
+ - Fechamento configurável por Escape, clique fora ou confirmação de fechamento — prefira `Drawer`
20
20
  - Painel embutido no mesmo fluxo de layout, sem necessidade de overlay em mobile — prefira `SlideInBar`
21
21
 
22
22
  ## Instalação
@@ -173,12 +173,12 @@ protected editarCompleto(pedido: Pedido): void {
173
173
  - No modo overlay (< 1024px): `role="dialog"`, `aria-modal="true"` e `cdkTrapFocus` aprisionam o foco dentro do painel enquanto aberto
174
174
  - No modo push (>= 1024px): `role="complementary"`, sem aprisionamento de foco — o conteúdo ao lado continua totalmente navegável por teclado
175
175
  - O título recebe `aria-labelledby` com um id único por instância
176
- - Ao abrir, o foco é devolvido ao elemento que estava focado antes de abrir, quando o painel é fechado
177
- - O scroll da página é bloqueado automaticamente apenas no modo overlay, e restaurado ao fechar
176
+ - Ao fechar, o foco é devolvido ao elemento que estava focado antes da abertura
177
+ - O scroll da página é bloqueado automaticamente apenas no modo overlay, e restaurado ao fechar. O bloqueio é compartilhado com outros overlays da biblioteca (ex: `Drawer`) — fechar um não reativa o scroll enquanto outro ainda estiver aberto
178
178
  - Fecha somente pelo botão X do cabeçalho — não há fechamento por Escape ou clique fora, em nenhuma resolução
179
179
 
180
180
  ## Componentes relacionados
181
181
 
182
- - [`Sidebar`](../sidebar/README.md) — painel lateral que sobrepõe o conteúdo com backdrop, fechamento configurável por Esc/clique fora
182
+ - [`Drawer`](../drawer/README.md) — painel lateral que sobrepõe o conteúdo com backdrop, fechamento configurável por Esc/clique fora
183
183
  - [`Dialog`](../dialog/README.md) — modal centralizado para confirmações e conteúdo crítico
184
184
  - [`SlideInBar`](../slide-in-bar/README.md) — painel embutido no fluxo do layout, sem necessidade de overlay em mobile
@@ -53,6 +53,7 @@ export declare class SideSheetComponent {
53
53
  */
54
54
  protected readonly panelWidthClasses: import("@angular/core").Signal<"[@media(min-width:1024px)]:w-[400px] [@media(min-width:1366px)]:w-[max(400px,50vw)]" | "[@media(min-width:1024px)]:w-[400px] [@media(min-width:1920px)]:w-[480px] [@media(min-width:2560px)]:w-[560px] [@media(min-width:3440px)]:w-[640px]">;
55
55
  private _elementToRefocus;
56
+ private readonly _scrollLock;
56
57
  constructor();
57
58
  protected closeSideSheet(): void;
58
59
  private _matchesDesktop;
@@ -47,6 +47,7 @@ export class MeuModule {}
47
47
  | `textAreaElement` | `HTMLTextAreaElement` | — | Sim | Referência ao elemento `<textarea>` nativo que receberá o texto transcrito |
48
48
  | `keepContext` | `boolean` | `false` | Não | Quando `true`, o texto reconhecido é adicionado ao texto existente em vez de substituí-lo |
49
49
  | `speechRecognitionPlaceholder` | `string` | `''` | Não | Placeholder exibido no textarea durante o reconhecimento de voz |
50
+ | `moreOptionsIconClass` | `string` | `'far fa-ellipsis-h'` | Não | Classe do ícone do botão de mais opções |
50
51
 
51
52
  ### Outputs
52
53
 
@@ -25,12 +25,15 @@ export declare class SpeechRecognitionComponent implements OnInit, OnDestroy {
25
25
  keepContext: boolean;
26
26
  /** @description Placeholder exibido no textarea durante o reconhecimento de voz. @default '' */
27
27
  speechRecognitionPlaceholder: string;
28
+ /** @description Classe do ícone do botão de mais opções. @default 'far fa-ellipsis-h' */
29
+ moreOptionsIconClass: string;
28
30
  private _recognizedText;
29
31
  private originalTextAreaElementText;
30
32
  private isDoneTextToSpeech;
31
33
  private readonly onDestroy$;
32
34
  private readonly VOICE_SPEEDS;
33
35
  private readonly keydownEventListener;
36
+ disabledSpeechRecognition: import("@angular/core").InputSignal<boolean>;
34
37
  disabled: boolean;
35
38
  isListeningUserVoice: boolean;
36
39
  voiceSpeed: number;
@@ -64,5 +67,5 @@ export declare class SpeechRecognitionComponent implements OnInit, OnDestroy {
64
67
  private speak;
65
68
  private get textToSpeech();
66
69
  static ɵfac: i0.ɵɵFactoryDeclaration<SpeechRecognitionComponent, never>;
67
- static ɵcmp: i0.ɵɵComponentDeclaration<SpeechRecognitionComponent, "s-speech-recognition", never, { "textAreaElement": { "alias": "textAreaElement"; "required": true; }; "keepContext": { "alias": "keepContext"; "required": false; }; "speechRecognitionPlaceholder": { "alias": "speechRecognitionPlaceholder"; "required": false; }; }, { "recognizedText": "recognizedText"; }, never, never, true, never>;
70
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpeechRecognitionComponent, "s-speech-recognition", never, { "textAreaElement": { "alias": "textAreaElement"; "required": true; }; "keepContext": { "alias": "keepContext"; "required": false; }; "speechRecognitionPlaceholder": { "alias": "speechRecognitionPlaceholder"; "required": false; }; "moreOptionsIconClass": { "alias": "moreOptionsIconClass"; "required": false; }; "disabledSpeechRecognition": { "alias": "disabledSpeechRecognition"; "required": false; "isSignal": true; }; }, { "recognizedText": "recognizedText"; }, never, never, true, never>;
68
71
  }
@@ -47,6 +47,8 @@ export class MeuModule {}
47
47
  | `options` | `SplitButtonOption[]` | — | Sim | Lista de opções exibidas no dropdown |
48
48
  | `type` | `SplitButtonType` | `'primary'` | Não | Estilo visual do botão: `'primary'`, `'secondary'` ou `'default'` |
49
49
  | `disabled` | `boolean` | `false` | Não | Desabilita o botão principal e o dropdown |
50
+ | `openIcon` | `string` | `'far fa-chevron-down'` | Não | Classe do ícone exibido no dropdown quando está fechado |
51
+ | `closeIcon` | `string` | `'far fa-chevron-up'` | Não | Classe do ícone exibido no dropdown quando está aberto |
50
52
 
51
53
  ### Outputs
52
54
 
@@ -30,6 +30,10 @@ export declare class SplitButtonComponent {
30
30
  type: SplitButtonType;
31
31
  /** @description Lista de opções exibidas no dropdown. Campo obrigatório. */
32
32
  options: SplitButtonOption[];
33
+ /** @description Classe do ícone exibido quando o dropdown está fechado. @default 'far fa-chevron-down' */
34
+ openIcon: string;
35
+ /** @description Classe do ícone exibido quando o dropdown está aberto. @default 'far fa-chevron-up' */
36
+ closeIcon: string;
33
37
  /** @description Emitido quando o usuário clica no botão principal (não no dropdown). */
34
38
  buttonClicked: EventEmitter<any>;
35
39
  open: boolean;
@@ -39,5 +43,5 @@ export declare class SplitButtonComponent {
39
43
  onOptionClick(option: SplitButtonOption): void;
40
44
  private _closeDropdown;
41
45
  static ɵfac: i0.ɵɵFactoryDeclaration<SplitButtonComponent, never>;
42
- static ɵcmp: i0.ɵɵComponentDeclaration<SplitButtonComponent, "s-split-button", never, { "disabled": { "alias": "disabled"; "required": false; }; "iconClass": { "alias": "iconClass"; "required": true; }; "label": { "alias": "label"; "required": true; }; "type": { "alias": "type"; "required": false; }; "options": { "alias": "options"; "required": true; }; }, { "buttonClicked": "buttonClicked"; }, never, never, true, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<SplitButtonComponent, "s-split-button", never, { "disabled": { "alias": "disabled"; "required": false; }; "iconClass": { "alias": "iconClass"; "required": true; }; "label": { "alias": "label"; "required": true; }; "type": { "alias": "type"; "required": false; }; "options": { "alias": "options"; "required": true; }; "openIcon": { "alias": "openIcon"; "required": false; }; "closeIcon": { "alias": "closeIcon"; "required": false; }; }, { "buttonClicked": "buttonClicked"; }, never, never, true, never>;
43
47
  }
@@ -1,5 +1,4 @@
1
1
  import { OnDestroy, OnInit } from '@angular/core';
2
- import { CheckboxListData, CheckboxListState } from '@seniorsistemas/angular-components/checkbox-list';
3
2
  import { Table, TableService } from 'primeng/table';
4
3
  import * as i0 from "@angular/core";
5
4
  /**
@@ -28,10 +27,8 @@ export declare class TableHeaderCheckboxComponent implements OnInit, OnDestroy {
28
27
  rowProps?: string[];
29
28
  /** @description Quando `true`, usa o objeto completo da linha em vez de propriedades específicas. */
30
29
  useAllObject?: boolean;
31
- checkboxItems: CheckboxListData;
32
30
  checked: boolean;
33
31
  hasFocus: boolean;
34
- checkboxState: CheckboxListState;
35
32
  private _ngUnsubscribe;
36
33
  constructor();
37
34
  ngOnInit(): void;
@@ -39,7 +36,7 @@ export declare class TableHeaderCheckboxComponent implements OnInit, OnDestroy {
39
36
  onFocus(): void;
40
37
  onBlur(): void;
41
38
  isDisabled(): boolean;
42
- onClick(): void;
39
+ onClick(checked: boolean): void;
43
40
  updateCheckedState(): any;
44
41
  onToggleCheckbox(checked: boolean): void;
45
42
  isAllFilteredValuesChecked(): boolean;
@@ -26,6 +26,8 @@ export declare class TokenListComponent {
26
26
  removableTokens: boolean;
27
27
  /** @description Quando `true`, remove os eventos de ponteiro (hover/clique) dos tokens. @default false */
28
28
  hidePointerEvents: boolean;
29
+ /** @description Classe do ícone do botão de remover token. @default 'far fa-times' */
30
+ removeIconClass: string;
29
31
  /** @description Emitido quando o usuário clica em um token não desabilitado. */
30
32
  tokenSelected: EventEmitter<IToken>;
31
33
  /** @description Emitido quando o usuário remove um token não desabilitado. */
@@ -33,5 +35,5 @@ export declare class TokenListComponent {
33
35
  onTokenSelected(token: IToken): void;
34
36
  onTokenRemoved(token: IToken): void;
35
37
  static ɵfac: i0.ɵɵFactoryDeclaration<TokenListComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<TokenListComponent, "s-token-list", never, { "id": { "alias": "id"; "required": false; }; "tokens": { "alias": "tokens"; "required": true; }; "removableTokens": { "alias": "removableTokens"; "required": false; }; "hidePointerEvents": { "alias": "hidePointerEvents"; "required": false; }; }, { "tokenSelected": "tokenSelected"; "tokenRemoved": "tokenRemoved"; }, never, never, true, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<TokenListComponent, "s-token-list", never, { "id": { "alias": "id"; "required": false; }; "tokens": { "alias": "tokens"; "required": true; }; "removableTokens": { "alias": "removableTokens"; "required": false; }; "hidePointerEvents": { "alias": "hidePointerEvents"; "required": false; }; "removeIconClass": { "alias": "removeIconClass"; "required": false; }; }, { "tokenSelected": "tokenSelected"; "tokenRemoved": "tokenRemoved"; }, never, never, true, never>;
37
39
  }
@@ -23,6 +23,27 @@ export declare const isMousePositionOutsideOfElement: (event: MouseEvent | Point
23
23
  }) => boolean;
24
24
  export declare const getElementPositionInfo: (element: HTMLElement) => ElementPosition;
25
25
  export declare const getElementLeftoverContentAvailable: (element: HTMLElement) => ElementLeftoverPosition;
26
+ /**
27
+ * @description Libera um lock de scroll adquirido via `disableScroll`. Como múltiplos overlays
28
+ * (ex: Drawer, SideSheet) podem estar abertos ao mesmo tempo e todos chamam essa mesma função,
29
+ * o scroll só é de fato reativado quando o último lock pendente é liberado — e restaura o valor
30
+ * de `overflow` anterior ao primeiro `disableScroll`, em vez de sempre forçar `'auto'`.
31
+ */
26
32
  export declare const enableScroll: () => void;
33
+ /**
34
+ * @description Bloqueia o scroll da página. Contabiliza quantos overlays pediram o bloqueio
35
+ * simultaneamente, para que fechar um não reative o scroll enquanto outro ainda estiver aberto.
36
+ */
27
37
  export declare const disableScroll: () => void;
38
+ export type ScrollLock = {
39
+ lock: () => void;
40
+ unlock: () => void;
41
+ };
42
+ /**
43
+ * @description Cria um controle de lock de scroll para uma instância (ex: um componente de
44
+ * overlay). Chamar `lock`/`unlock` várias vezes seguidas é seguro — cada instância só chama
45
+ * `disableScroll`/`enableScroll` (que ela mesma adquiriu, evitando liberar o lock de outro overlay
46
+ * por engano) na primeira vez que necessário.
47
+ */
48
+ export declare const createScrollLock: () => ScrollLock;
28
49
  export declare function deepClone<T>(value: T, weakMap?: WeakMap<WeakKey, any>): T;