@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
@@ -54,6 +54,8 @@ export class MeuComponent {}
54
54
  | `multiple` | `boolean` | `false` | não | Habilita seleção de múltiplos itens como chips |
55
55
  | `dropdown` | `boolean` | `false` | não | Exibe botão de seta para abrir a lista sem digitar |
56
56
  | `checkmark` | `boolean` | `false` | não | Exibe ícone de check na opção selecionada |
57
+ | `clearIconClass` | `string` | `'far fa-times'` | não | Classe do ícone do botão de limpar o valor do campo |
58
+ | `checkIconClass` | `string` | `'far fa-check'` | não | Classe do ícone de checkmark exibido ao lado da opção selecionada (com `checkmark` e `multiple`) |
57
59
  | `lazy` | `boolean` | `false` | não | Ativa carregamento assíncrono via output `lazyLoad` |
58
60
  | `virtualScroll` | `boolean` | `false` | não | Virtualiza a lista para melhor performance |
59
61
  | `virtualScrollItemSize` | `number` | `37` | não | Altura em pixels de cada item no virtual scroll |
@@ -118,6 +120,8 @@ filtrar(event: { query: string }) {
118
120
  </s-autocomplete>
119
121
  ```
120
122
 
123
+ No modo múltiplo, cada item selecionado é exibido como um chip (`AutocompleteChipComponent`, interno) com um botão de remover. O ícone desse botão pode ser customizado através do input `removeIconClass` (`string`, padrão `'far fa-times'`) do próprio `AutocompleteChipComponent`.
124
+
121
125
  ### Lazy loading (dados de API)
122
126
 
123
127
  ```html
@@ -62,6 +62,12 @@ export declare class AutocompleteComponent<T> implements ControlValueAccessor {
62
62
  forceSelection: import("@angular/core").InputSignal<boolean>;
63
63
  /** @description Exibe ícone de checkmark ao lado da opção selecionada no dropdown. @default false */
64
64
  checkmark: import("@angular/core").InputSignal<boolean>;
65
+ /** @description Classe do ícone do botão de limpar o valor do campo. @default 'far fa-times' */
66
+ clearIconClass: import("@angular/core").InputSignal<string>;
67
+ /** @description Classe do ícone de checkmark exibido ao lado da opção selecionada no dropdown. @default 'far fa-check' */
68
+ checkIconClass: import("@angular/core").InputSignal<string>;
69
+ /** @description Classe do ícone do botão de remover chip, exibido no modo `multiple`. @default 'far fa-times' */
70
+ removeIconClass: import("@angular/core").InputSignal<string>;
65
71
  /** @description Habilita seleção de múltiplos itens exibidos como chips no campo. @default false */
66
72
  multiple: import("@angular/core").InputSignal<boolean>;
67
73
  /** @description Quantidade mínima de caracteres necessária para acionar a busca por sugestões. @default 1 */
@@ -297,6 +303,6 @@ export declare class AutocompleteComponent<T> implements ControlValueAccessor {
297
303
  */
298
304
  private _validateInputs;
299
305
  static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteComponent<any>, never>;
300
- static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent<any>, "s-autocomplete", never, { "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "suggestionValue": { "alias": "suggestionValue"; "required": false; "isSignal": true; }; "suggestionLabel": { "alias": "suggestionLabel"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "dropdown": { "alias": "dropdown"; "required": false; "isSignal": true; }; "forceSelection": { "alias": "forceSelection"; "required": false; "isSignal": true; }; "checkmark": { "alias": "checkmark"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "minLengthToSearch": { "alias": "minLengthToSearch"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "values": "valuesChange"; "disabled": "disabledChange"; "lazyLoad": "lazyLoad"; "selected": "selected"; "unselected": "unselected"; "blurred": "blurred"; "cleared": "cleared"; "keyUp": "keyUp"; "focused": "focused"; "completeMethod": "completeMethod"; }, never, never, true, never>;
306
+ static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent<any>, "s-autocomplete", never, { "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "suggestionValue": { "alias": "suggestionValue"; "required": false; "isSignal": true; }; "suggestionLabel": { "alias": "suggestionLabel"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "dropdown": { "alias": "dropdown"; "required": false; "isSignal": true; }; "forceSelection": { "alias": "forceSelection"; "required": false; "isSignal": true; }; "checkmark": { "alias": "checkmark"; "required": false; "isSignal": true; }; "clearIconClass": { "alias": "clearIconClass"; "required": false; "isSignal": true; }; "checkIconClass": { "alias": "checkIconClass"; "required": false; "isSignal": true; }; "removeIconClass": { "alias": "removeIconClass"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "minLengthToSearch": { "alias": "minLengthToSearch"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "values": "valuesChange"; "disabled": "disabledChange"; "lazyLoad": "lazyLoad"; "selected": "selected"; "unselected": "unselected"; "blurred": "blurred"; "cleared": "cleared"; "keyUp": "keyUp"; "focused": "focused"; "completeMethod": "completeMethod"; }, never, never, true, never>;
301
307
  }
302
308
  export {};
@@ -2,8 +2,10 @@ import * as i0 from "@angular/core";
2
2
  export declare class AutocompleteChipComponent<T> {
3
3
  suggestion: import("@angular/core").InputSignal<T>;
4
4
  suggestionLabel: import("@angular/core").InputSignal<keyof T | undefined>;
5
+ /** @description Classe do ícone do botão de remover o chip. @default 'far fa-times' */
6
+ removeIconClass: import("@angular/core").InputSignal<string>;
5
7
  suggestionRemoved: import("@angular/core").OutputEmitterRef<T>;
6
8
  removeSuggestion(): void;
7
9
  static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteChipComponent<any>, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteChipComponent<any>, "s-autocomplete-chip", never, { "suggestion": { "alias": "suggestion"; "required": true; "isSignal": true; }; "suggestionLabel": { "alias": "suggestionLabel"; "required": false; "isSignal": true; }; }, { "suggestionRemoved": "suggestionRemoved"; }, never, never, true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteChipComponent<any>, "s-autocomplete-chip", never, { "suggestion": { "alias": "suggestion"; "required": true; "isSignal": true; }; "suggestionLabel": { "alias": "suggestionLabel"; "required": false; "isSignal": true; }; "removeIconClass": { "alias": "removeIconClass"; "required": false; "isSignal": true; }; }, { "suggestionRemoved": "suggestionRemoved"; }, never, never, true, never>;
9
11
  }
@@ -28,11 +28,6 @@ export declare class CheckboxComponent implements ControlValueAccessor {
28
28
  ariaLabel: import("@angular/core").InputSignal<string | undefined>;
29
29
  /** @description ID do elemento que descreve o checkbox (para usar `<label for="...">`). Opcional. */
30
30
  ariaLabelledBy: import("@angular/core").InputSignal<string | undefined>;
31
- /**
32
- * @description Emitido quando o valor do checkbox é alterado pelo usuário.
33
- * Emite o novo valor booleano (`true` para marcado, `false` para desmarcado).
34
- */
35
- readonly checkedChange: import("@angular/core").OutputEmitterRef<boolean>;
36
31
  private _onChange;
37
32
  private _onTouched;
38
33
  private _hasUserInteracted;
@@ -49,5 +44,5 @@ export declare class CheckboxComponent implements ControlValueAccessor {
49
44
  setDisabledState(disabled: boolean): void;
50
45
  onBlur(): void;
51
46
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
52
- static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "s-checkbox", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "checked": "checkedChange"; "checkedChange": "checkedChange"; }, never, never, true, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "s-checkbox", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "checked": "checkedChange"; }, never, never, true, never>;
53
48
  }
@@ -24,13 +24,21 @@ export declare class CheckboxListComponent implements ControlValueAccessor {
24
24
  * Campo obrigatório.
25
25
  */
26
26
  data: CheckboxListData;
27
+ /**
28
+ * @description Instância do nó pai na árvore recursiva, obtida via DI (`@SkipSelf`).
29
+ * `null` para o nó raiz. Usada para herdar o estado `disabled` sem expor um `@Input`
30
+ * paralelo ao contrato de `ControlValueAccessor`.
31
+ */
32
+ private readonly _parent;
27
33
  state: CheckboxListState;
28
34
  private _onChange;
29
35
  private _onTouched;
30
36
  writeValue(value: CheckboxListState): void;
31
37
  get renderType(): "inline" | "block";
38
+ get isDisabled(): boolean;
32
39
  registerOnChange(onChange: (value: CheckboxListState) => void): void;
33
40
  registerOnTouched(onTouched: () => void): void;
41
+ setDisabledState(isDisabled: boolean): void;
34
42
  private _initializeChildren;
35
43
  getCheckboxState(item: CheckboxListChildren | undefined, label: string): {};
36
44
  updateParent(): void;
@@ -25,10 +25,9 @@ import * as i1 from "@seniorsistemas/angular-components/common/deprecated-select
25
25
  export declare class ContentGeneratorComponent implements OnInit, ControlValueAccessor {
26
26
  private readonly _iassistService;
27
27
  private readonly _formBuilder;
28
- private readonly _translateService;
29
28
  speechRecognitionService: SpeechRecognitionService;
30
- private injector;
31
29
  private readonly _destroyRef;
30
+ disabled: import("@angular/core").WritableSignal<boolean>;
32
31
  textArea: import("@angular/core").Signal<TextAreaComponent | undefined>;
33
32
  private static id;
34
33
  /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
@@ -64,6 +63,7 @@ export declare class ContentGeneratorComponent implements OnInit, ControlValueAc
64
63
  private _onTouched?;
65
64
  ngOnInit(): void;
66
65
  writeValue(value: string): void;
66
+ setDisabledState(isDisabled: boolean): void;
67
67
  registerOnChange(onChange: (value: string) => void): void;
68
68
  registerOnTouched(onTouched: () => void): void;
69
69
  onValueChange(value: string): void;
@@ -53,6 +53,7 @@ export declare class CountryPhonePickerComponent implements OnInit, ControlValue
53
53
  phoneInput: ElementRef | null;
54
54
  private readonly filterInput;
55
55
  isFocused: boolean;
56
+ disabled: boolean;
56
57
  mask: string | null;
57
58
  selectedItem: CountryPhoneData | null;
58
59
  currentItemIndex: number;
@@ -81,6 +82,7 @@ export declare class CountryPhonePickerComponent implements OnInit, ControlValue
81
82
  writeValue(value: PhoneSelectionData): void;
82
83
  registerOnChange(onChange: (value: PhoneSelectionData) => void): void;
83
84
  registerOnTouched(onTouched: (value: PhoneSelectionData) => void): void;
85
+ setDisabledState(isDisabled: boolean): void;
84
86
  ngOnInit(): void;
85
87
  onSelectItem(country: CountryPhoneData): void;
86
88
  onCleanFilter(): void;
package/drawer/README.md CHANGED
@@ -50,6 +50,7 @@ export class MeuModule {}
50
50
  | `dismissible` | `boolean` | `true` | Não | Fechar ao clicar no backdrop (área escurecida fora do painel) |
51
51
  | `closeOnEscape` | `boolean` | `true` | Não | Fechar ao pressionar a tecla Escape |
52
52
  | `header` | `string` | `undefined` | Não | Texto exibido no cabeçalho padrão. Substituível via `sTemplate="header"` |
53
+ | `ariaLabel` | `string` | `undefined` | Não | Nome acessível do drawer quando o cabeçalho é um template customizado via `sTemplate="header"`. Ignorado quando `header` está definido |
53
54
  | `largeSized` | `boolean` | `false` | Não | Aumenta a largura do drawer para acomodar mais conteúdo |
54
55
  | `cache` | `boolean` | `false` | Não | Mantém o conteúdo no DOM quando fechado, preservando estado interno |
55
56
  | `registerConfirmClose` | `() => boolean` | `() => true` | Não | Função chamada antes de fechar; retornar `false` bloqueia o fechamento |
@@ -109,9 +110,15 @@ confirmClose = (): boolean => {
109
110
  ## Acessibilidade
110
111
 
111
112
  - O drawer utiliza `cdkTrapFocus` para aprisionar o foco dentro do painel enquanto aberto
112
- - Pressionar `Escape` fecha o drawer quando `closeOnEscape = true`
113
+ - Enquanto visível, o painel recebe `role="dialog"` e `aria-modal="true"`
114
+ - O nome acessível é associado via `aria-labelledby`, apontando para o cabeçalho (`header`) renderizado como `<h2>`. Ao usar `sTemplate="header"`, forneça `ariaLabel` para que o painel continue tendo um nome acessível
115
+ - Pressionar `Escape` fecha o drawer quando `closeOnEscape = true`, mas apenas se a instância estiver visível — instâncias fechadas (inclusive as mantidas no DOM por `cache = true`) ignoram o Escape, mesmo com múltiplas instâncias de `s-drawer` montadas na página
116
+ - Se houver duas instâncias visíveis simultaneamente, um único Escape fecha as duas (a listener é por instância, sem controle centralizado de qual está "no topo")
113
117
  - O painel entra e sai com animação de deslizamento (300ms) vindo da direita
114
- - Ao abrir, o scroll da página é bloqueado automaticamente e restaurado ao fechar
118
+ - Ao abrir, o scroll da página é bloqueado automaticamente e restaurado ao fechar. O bloqueio é compartilhado com outros overlays da biblioteca (ex: `SideSheet`) e com outras instâncias de `s-drawer` — fechar um não reativa o scroll enquanto outro ainda estiver aberto, e o valor de `overflow` anterior ao primeiro bloqueio é preservado
119
+ - Ao fechar, o foco retorna automaticamente ao elemento que estava focado antes da abertura (ex: o botão que abriu o drawer)
120
+ - Com `cache = true`, o painel permanece no DOM enquanto oculto, mas recebe `inert` e `aria-hidden="true"`, e o focus trap é desabilitado — o conteúdo escondido não fica alcançável por teclado ou leitor de tela. Use `cache` apenas quando o estado interno do conteúdo realmente precisa ser preservado entre aberturas
121
+ - Como o backdrop (`dismissible`) só fecha por clique/toque, sem equivalente de teclado, definir `[closable]="false"` junto com `[closeOnEscape]="false"` remove todo caminho de fechamento acessível por teclado, a menos que o conteúdo customizado (`body`/`footer`) forneça o seu próprio. É responsabilidade de quem consome o componente garantir esse caminho ao optar por essa combinação
115
122
 
116
123
  ## Componentes relacionados
117
124
 
@@ -50,6 +50,12 @@ export declare class DrawerComponent implements AfterContentInit, OnDestroy {
50
50
  * Pode ser substituído por um template customizado via `sTemplate="header"`.
51
51
  */
52
52
  header?: string;
53
+ /**
54
+ * @description Nome acessível do drawer, usado quando o cabeçalho é um template
55
+ * customizado via `sTemplate="header"` (nesse caso não há `header` para associar
56
+ * via `aria-labelledby`). Ignorado quando `header` está definido.
57
+ */
58
+ ariaLabel?: string;
53
59
  /**
54
60
  * @description Quando `true`, aumenta a largura do drawer para acomodar mais conteúdo.
55
61
  *
@@ -68,21 +74,26 @@ export declare class DrawerComponent implements AfterContentInit, OnDestroy {
68
74
  * Quando retornar `false`, o fechamento é bloqueado. Útil para validar formulários não salvos.
69
75
  */
70
76
  set registerConfirmClose(fn: () => boolean);
77
+ /** @description Id único usado para associar o título ao painel via `aria-labelledby`. */
78
+ protected readonly titleId: string;
71
79
  headerTemplate: TemplateRef<unknown> | null;
72
80
  bodyTemplate: TemplateRef<unknown> | null;
73
81
  footerTemplate: TemplateRef<unknown> | null;
74
82
  protected readonly footerComponent: import("@angular/core").Signal<FooterComponent | undefined>;
75
83
  private _confirmClose;
84
+ private _elementToRefocus;
85
+ private readonly _scrollLock;
76
86
  private readonly visibleEffect;
77
87
  ngAfterContentInit(): void;
78
88
  ngOnDestroy(): void;
79
89
  closeDrawer(): void;
80
90
  handleEscape(): void;
91
+ private _restoreFocus;
81
92
  private _getCustomTemplate;
82
93
  private getHeaderTemplate;
83
94
  private getBodyTemplate;
84
95
  private getFooterTemplate;
85
96
  private _getTemplates;
86
97
  static ɵfac: i0.ɵɵFactoryDeclaration<DrawerComponent, never>;
87
- static ɵcmp: i0.ɵɵComponentDeclaration<DrawerComponent, "s-drawer, s-sidebar", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; "header": { "alias": "header"; "required": false; }; "largeSized": { "alias": "largeSized"; "required": false; }; "cache": { "alias": "cache"; "required": false; }; "registerConfirmClose": { "alias": "registerConfirmClose"; "required": false; }; }, { "visible": "visibleChange"; }, ["footerComponent", "templates"], [":not(s-footer)", "s-footer"], true, [{ directive: typeof i1.DeprecatedSelectorDirective; inputs: {}; outputs: {}; }]>;
98
+ static ɵcmp: i0.ɵɵComponentDeclaration<DrawerComponent, "s-drawer, s-sidebar", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; }; "dismissible": { "alias": "dismissible"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; "header": { "alias": "header"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "largeSized": { "alias": "largeSized"; "required": false; }; "cache": { "alias": "cache"; "required": false; }; "registerConfirmClose": { "alias": "registerConfirmClose"; "required": false; }; }, { "visible": "visibleChange"; }, ["footerComponent", "templates"], [":not(s-footer)", "s-footer"], true, [{ directive: typeof i1.DeprecatedSelectorDirective; inputs: {}; outputs: {}; }]>;
88
99
  }
@@ -60,10 +60,10 @@ export declare class EditorComponent implements AfterViewInit, OnDestroy, Contro
60
60
  * @description Emitido quando a seleção de texto no editor muda.
61
61
  */
62
62
  selectionChange: import("@angular/core").OutputEmitterRef<EditorSelectionChangeEvent>;
63
+ protected formDisabled: boolean;
63
64
  private editorContainer;
64
65
  private imageInput;
65
66
  private editor?;
66
- private _formDisabled;
67
67
  private _currentPlaceholder;
68
68
  activeStates: {
69
69
  isBold: boolean;