@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.
- package/autocomplete/README.md +4 -0
- package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +7 -1
- package/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +3 -1
- package/checkbox/lib/checkbox/checkbox.component.d.ts +1 -6
- package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +8 -0
- package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -2
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -0
- package/drawer/README.md +9 -2
- package/drawer/lib/drawer/drawer.component.d.ts +12 -1
- package/editor/lib/editor/editor.component.d.ts +1 -1
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +10 -4
- package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +5 -3
- package/esm2022/button/lib/button/button.component.mjs +3 -3
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -9
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +17 -5
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +9 -8
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +18 -3
- package/esm2022/drawer/lib/drawer/drawer.component.mjs +33 -11
- package/esm2022/drawer/lib/drawer/drawer.module.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +4 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
- package/esm2022/editor/lib/editor/editor.component.mjs +8 -8
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +4 -4
- package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +4 -4
- package/esm2022/global-search/lib/global-search/global-search.module.mjs +2 -2
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +3 -3
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +2 -3
- package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +21 -3
- package/esm2022/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.mjs +14 -3
- package/esm2022/insights/lib/insights/insights.component.mjs +15 -4
- package/esm2022/paginator/lib/models/paginator.models.mjs +1 -1
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +19 -13
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +19 -8
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +3 -4
- package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +1 -1
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +23 -3
- package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +5 -3
- package/esm2022/select/lib/select/select.component.mjs +6 -4
- package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +6 -5
- package/esm2022/slider/lib/slider/slider.component.mjs +3 -3
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +58 -8
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +11 -3
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +1 -1
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +14 -21
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/token-list/lib/token-list/token-list.component.mjs +7 -3
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +3 -2
- package/esm2022/utils/lib/utils/utils.mjs +49 -3
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +13 -5
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +16 -4
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -8
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +8 -6
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -2
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs +32 -9
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +17 -17
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editor.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +3 -4
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-insights.mjs +47 -7
- package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +18 -12
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +20 -9
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +22 -2
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +9 -5
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +5 -4
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +57 -7
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +10 -2
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +13 -20
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +6 -2
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-utils.mjs +49 -3
- package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
- package/global-search/lib/global-search/global-search.module.d.ts +1 -1
- package/insights/README.md +12 -0
- package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +22 -1
- package/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.d.ts +9 -1
- package/insights/lib/insights/insights.component.d.ts +9 -1
- package/package.json +1 -3
- package/paginator/lib/models/paginator.models.d.ts +1 -0
- package/paginator/lib/paginator/paginator.component.d.ts +3 -1
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +3 -1
- package/rating-scale/README.md +38 -13
- package/rating-scale/lib/rating-scale/models/rating-scale-node.d.ts +8 -0
- package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +4 -1
- package/select/README.md +2 -0
- package/select/lib/select/components/select-option/select-option.component.d.ts +3 -1
- package/select/lib/select/select.component.d.ts +3 -1
- package/side-sheet/README.md +4 -4
- package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +1 -0
- package/speech-recognition/README.md +1 -0
- package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +4 -1
- package/split-button/README.md +2 -0
- package/split-button/lib/split-button/split-button.component.d.ts +5 -1
- package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -4
- package/token-list/lib/token-list/token-list.component.d.ts +3 -1
- package/utils/lib/utils/utils.d.ts +21 -0
package/rating-scale/README.md
CHANGED
|
@@ -52,25 +52,30 @@ export class MeuModulo {}
|
|
|
52
52
|
|
|
53
53
|
```typescript
|
|
54
54
|
interface RatingScaleNode {
|
|
55
|
-
id: string;
|
|
56
|
-
title?: string;
|
|
57
|
-
|
|
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',
|
|
70
|
-
{ id: 'happy', title: 'Feliz',
|
|
71
|
-
{ id: 'normal', title: 'Normal',
|
|
72
|
-
{ id: 'sad', title: 'Triste',
|
|
73
|
-
{ id: 'very-sad', title: 'Muito triste',
|
|
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',
|
|
132
|
-
{ id: 'happy',
|
|
133
|
-
{ id: 'normal',
|
|
134
|
-
{ id: 'sad',
|
|
135
|
-
{ id: 'very-sad',
|
|
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 {};
|
package/side-sheet/README.md
CHANGED
|
@@ -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 `
|
|
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
|
|
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
|
-
- [`
|
|
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
|
}
|
package/split-button/README.md
CHANGED
|
@@ -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;
|