structra-ui 0.2.34 → 0.2.36

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ChangeDetectorRef, Injector, DestroyRef, EventEmitter, OnChanges, OnInit, SimpleChanges, DoCheck, AfterViewInit, TemplateRef, OnDestroy, AfterContentInit, QueryList, Signal, Renderer2, ElementRef } from '@angular/core';
2
+ import { ChangeDetectorRef, Injector, DestroyRef, EventEmitter, OnChanges, OnInit, SimpleChanges, DoCheck, AfterViewInit, TemplateRef, OnDestroy, AfterContentInit, QueryList, Signal, Renderer2 } from '@angular/core';
3
3
  import { ControlValueAccessor, AbstractControl, NgControl, ValidatorFn } from '@angular/forms';
4
4
  import { MatDatepicker } from '@angular/material/datepicker';
5
5
  import * as _angular_cdk_overlay from '@angular/cdk/overlay';
@@ -184,6 +184,14 @@ type MenuLeafItem<T = string> = MenuItemAction<T> | MenuItemDivider;
184
184
  /** Nó de primeiro nível ou dentro de grupos (inclui submenus). */
185
185
  type MenuNodeItem<T = string> = MenuLeafItem<T> | MenuItemGroup<T> | MenuItemSubmenu<T>;
186
186
 
187
+ /**
188
+ * Escala do campo (design system).
189
+ * - **`sm`** — compacto (barras laterais, filtros).
190
+ * - **`md`** — padrão da lib (legado).
191
+ * - **`lg`** — maior destaque tipográfico e área tocável.
192
+ */
193
+ type FieldSize = 'sm' | 'md' | 'lg';
194
+
187
195
  /**
188
196
  * Diretiva base abstrata: CVA, valor interno, disabled, touched e inputs comuns.
189
197
  * Sem UI; os campos concretos envolvem o input com `BaseFieldComponent`.
@@ -201,6 +209,10 @@ declare abstract class BaseFieldDirective<T> implements ControlValueAccessor {
201
209
  name: string;
202
210
  label: string;
203
211
  placeholder: string;
212
+ /**
213
+ * Escala visual: `sm` (compacto), `md` (padrão), `lg` (maior).
214
+ */
215
+ size: FieldSize;
204
216
  errorMessage: string;
205
217
  /** Se `true`, exibe o parágrafo de erro; por defeito `false` (só estado inválido na borda/label). */
206
218
  showErrorMessage: boolean;
@@ -296,7 +308,7 @@ declare abstract class BaseFieldDirective<T> implements ControlValueAccessor {
296
308
  */
297
309
  protected applyAutofocusIfNeeded(resolve: () => HTMLElement | null | undefined): void;
298
310
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseFieldDirective<any>, never>;
299
- static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFieldDirective<any>, never, never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "showErrorMessage": { "alias": "showErrorMessage"; "required": false; }; "invalidThemed": { "alias": "invalidThemed"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showRequiredMark": { "alias": "showRequiredMark"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "showPrefixIcon": { "alias": "showPrefixIcon"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "iconLeft": { "alias": "iconLeft"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "mostrarMenuContexto": { "alias": "mostrarMenuContexto"; "required": false; }; "contextMenuItems": { "alias": "contextMenuItems"; "required": false; }; "contextMenuId": { "alias": "contextMenuId"; "required": false; }; }, { "contextMenuSelect": "contextMenuSelect"; }, never, never, true, never>;
311
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFieldDirective<any>, never, never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "size": { "alias": "size"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "showErrorMessage": { "alias": "showErrorMessage"; "required": false; }; "invalidThemed": { "alias": "invalidThemed"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showRequiredMark": { "alias": "showRequiredMark"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "showPrefixIcon": { "alias": "showPrefixIcon"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "iconLeft": { "alias": "iconLeft"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "mostrarMenuContexto": { "alias": "mostrarMenuContexto"; "required": false; }; "contextMenuItems": { "alias": "contextMenuItems"; "required": false; }; "contextMenuId": { "alias": "contextMenuId"; "required": false; }; }, { "contextMenuSelect": "contextMenuSelect"; }, never, never, true, never>;
300
312
  static ngAcceptInputType_invalidThemed: unknown;
301
313
  static ngAcceptInputType_autocomplete: unknown;
302
314
  static ngAcceptInputType_loading: unknown;
@@ -416,6 +428,8 @@ declare class BaseFieldComponent implements OnChanges, OnInit {
416
428
  filled: boolean;
417
429
  disabled: boolean;
418
430
  readonly: boolean;
431
+ /** Igual a {@link BaseFieldDirective.size}: `sm` | `md` | `lg`. */
432
+ size: FieldSize;
419
433
  inputId: string;
420
434
  errorId: string;
421
435
  showPrefixIcon: boolean;
@@ -454,7 +468,7 @@ declare class BaseFieldComponent implements OnChanges, OnInit {
454
468
  onClearClick(): void;
455
469
  onContextMenuItemSelect(id: string): void;
456
470
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseFieldComponent, never>;
457
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseFieldComponent, "app-base-field", never, { "label": { "alias": "label"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showRequiredMark": { "alias": "showRequiredMark"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "invalidThemed": { "alias": "invalidThemed"; "required": false; }; "filled": { "alias": "filled"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "errorId": { "alias": "errorId"; "required": false; }; "showPrefixIcon": { "alias": "showPrefixIcon"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "showSuffixSlot": { "alias": "showSuffixSlot"; "required": false; }; "valueAlignEnd": { "alias": "valueAlignEnd"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "skeletonVariant": { "alias": "skeletonVariant"; "required": false; }; "mostrarMenuContexto": { "alias": "mostrarMenuContexto"; "required": false; }; "contextMenuItems": { "alias": "contextMenuItems"; "required": false; }; "contextMenuId": { "alias": "contextMenuId"; "required": false; }; }, { "clear": "clear"; "contextMenuSelect": "contextMenuSelect"; }, never, ["[appFieldPrefix]", "*", "[appFieldSuffix]"], true, never>;
471
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseFieldComponent, "app-base-field", never, { "label": { "alias": "label"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showRequiredMark": { "alias": "showRequiredMark"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "invalidThemed": { "alias": "invalidThemed"; "required": false; }; "filled": { "alias": "filled"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "size": { "alias": "size"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "errorId": { "alias": "errorId"; "required": false; }; "showPrefixIcon": { "alias": "showPrefixIcon"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "showSuffixSlot": { "alias": "showSuffixSlot"; "required": false; }; "valueAlignEnd": { "alias": "valueAlignEnd"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "skeletonVariant": { "alias": "skeletonVariant"; "required": false; }; "mostrarMenuContexto": { "alias": "mostrarMenuContexto"; "required": false; }; "contextMenuItems": { "alias": "contextMenuItems"; "required": false; }; "contextMenuId": { "alias": "contextMenuId"; "required": false; }; }, { "clear": "clear"; "contextMenuSelect": "contextMenuSelect"; }, never, ["[appFieldPrefix]", "*", "[appFieldSuffix]"], true, never>;
458
472
  static ngAcceptInputType_invalidThemed: unknown;
459
473
  static ngAcceptInputType_loading: unknown;
460
474
  static ngAcceptInputType_mostrarMenuContexto: unknown;
@@ -792,6 +806,8 @@ declare function cepMaskCompleteValidator(): ValidatorFn;
792
806
  interface FieldCommonInputs {
793
807
  label: string;
794
808
  placeholder: string;
809
+ /** `sm` | `md` (omissão) | `lg`. */
810
+ size?: FieldSize;
795
811
  /** Mensagem de erro sob o campo; vazia usa o texto padrão quando inválido. */
796
812
  errorMessage: string;
797
813
  /** Por defeito `false` na `BaseFieldDirective`. */
@@ -1020,6 +1036,7 @@ declare class SwitchFieldComponent extends BooleanFieldDirective implements Afte
1020
1036
  */
1021
1037
  declare class DropdownBaseComponent {
1022
1038
  private readonly appTheme;
1039
+ private readonly overlay;
1023
1040
  /**
1024
1041
  * O overlay do CDK fica sob `body`; sem estas classes, `var(--app-color-*)` cai no `:root`.
1025
1042
  * Tem de ser **array**: uma única string com espaço quebra `classList.add` e as classes não aplicam.
@@ -1047,6 +1064,13 @@ declare class DropdownBaseComponent {
1047
1064
  connectedPositions: ConnectedPosition[] | undefined;
1048
1065
  /** Empurra o overlay para caber no viewport quando há espaço insuficiente. */
1049
1066
  pushConnectedOverlay: boolean;
1067
+ /**
1068
+ * Por omissão **reposiciona** o painel quando o viewport ou contentores com scroll se movem
1069
+ * (mesma ideia que submenus em `app-menu-list`). Sobrescrever só em casos especiais (ex.: fechar ao scroll).
1070
+ */
1071
+ scrollStrategy: ScrollStrategy | null;
1072
+ readonly defaultScrollStrategy: _angular_cdk_overlay.RepositionScrollStrategy;
1073
+ get effectiveScrollStrategy(): ScrollStrategy;
1050
1074
  /**
1051
1075
  * `true`: painel sem fundo/borda/sombra próprios — o conteúdo (ex.: `app-menu-list`) define o chrome.
1052
1076
  * Evita dupla moldura com `menu-surface-shell` nos menus de acção.
@@ -1064,7 +1088,7 @@ declare class DropdownBaseComponent {
1064
1088
  setOpen(next: boolean): void;
1065
1089
  toggle(): void;
1066
1090
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownBaseComponent, never>;
1067
- static ɵcmp: i0.ɵɵComponentDeclaration<DropdownBaseComponent, "app-dropdown-base", never, { "open": { "alias": "open"; "required": false; }; "panelTemplate": { "alias": "panelTemplate"; "required": true; }; "panelWidthPx": { "alias": "panelWidthPx"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "connectedPositions": { "alias": "connectedPositions"; "required": false; }; "pushConnectedOverlay": { "alias": "pushConnectedOverlay"; "required": false; }; "bareOverlayPanel": { "alias": "bareOverlayPanel"; "required": false; }; }, { "openChange": "openChange"; }, never, ["[appDropdownTrigger]"], true, never>;
1091
+ static ɵcmp: i0.ɵɵComponentDeclaration<DropdownBaseComponent, "app-dropdown-base", never, { "open": { "alias": "open"; "required": false; }; "panelTemplate": { "alias": "panelTemplate"; "required": true; }; "panelWidthPx": { "alias": "panelWidthPx"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "connectedPositions": { "alias": "connectedPositions"; "required": false; }; "pushConnectedOverlay": { "alias": "pushConnectedOverlay"; "required": false; }; "scrollStrategy": { "alias": "scrollStrategy"; "required": false; }; "bareOverlayPanel": { "alias": "bareOverlayPanel"; "required": false; }; }, { "openChange": "openChange"; }, never, ["[appDropdownTrigger]"], true, never>;
1068
1092
  static ngAcceptInputType_open: unknown;
1069
1093
  static ngAcceptInputType_closeOnEscape: unknown;
1070
1094
  static ngAcceptInputType_hasBackdrop: unknown;
@@ -3061,142 +3085,41 @@ declare class DrawerComponent implements OnChanges, OnDestroy {
3061
3085
  static ngAcceptInputType_showCloseButton: unknown;
3062
3086
  }
3063
3087
 
3064
- interface MenuRowAction<T = string> {
3065
- kind: 'action';
3066
- item: MenuItemAction<T>;
3067
- /** Índice na navegação por teclado; `null` se desabilitado. */
3068
- focusIndex: number | null;
3069
- /** `null` = fora de grupo; caso contrário, pertence a este grupo (oculto se o grupo estiver fechado). */
3070
- containingGroupId?: number | null;
3071
- }
3072
- interface MenuRowDivider {
3073
- kind: 'divider';
3074
- containingGroupId?: number | null;
3075
- }
3076
- interface MenuRowGroup {
3077
- kind: 'group';
3078
- label?: string;
3079
- groupId: number;
3080
- /** Eco de {@link MenuItemGroup.alwaysExpanded}. */
3081
- alwaysExpanded?: boolean;
3082
- }
3083
- interface MenuRowSubmenu<T = string> {
3084
- kind: 'submenu';
3085
- item: MenuItemSubmenu<T>;
3086
- focusIndex: number | null;
3087
- containingGroupId?: number | null;
3088
- }
3089
- type MenuRow<T = string> = MenuRowAction<T> | MenuRowDivider | MenuRowGroup | MenuRowSubmenu<T>;
3090
-
3091
3088
  declare class MenuListComponent<T = string> implements OnChanges {
3092
3089
  private readonly cdr;
3093
- readonly hostRef: ElementRef<any>;
3094
- /** Igual a `[appTheme]` na lib; omitir = tema global (ex.: propagado por `app-sidebar`). */
3095
3090
  readonly appTheme: i0.InputSignal<"blue" | "green" | "purple" | "orange" | "white" | "gray" | "sepia" | "black" | AppTheme | undefined>;
3096
- readonly effectiveThemeId: i0.Signal<"blue" | "green" | "purple" | "orange" | "white" | "gray" | "sepia" | "black">;
3097
3091
  items: readonly MenuNodeItem<T>[];
3098
- /** Prefixo dos `id` das opções focáveis (`${menuId}-opt-${focusIndex}`). */
3099
3092
  menuId: string;
3100
3093
  dense: boolean;
3101
- /** Quando `true`, o menu está dentro de um submenu — seta ← regressa um nível. */
3102
3094
  nested: boolean;
3103
- /**
3104
- * Destaca visualmente o item cuja `id` coincide (navegação actual / rota activa).
3105
- * Só aplica a linhas `kind: 'item'` neste nível.
3106
- */
3107
3095
  selectedItemId: T | null;
3108
- /**
3109
- * Oculta rótulos e descrições (ex.: sidebar colapsada), mantendo ícones; define `title` nativo para hover.
3110
- */
3111
3096
  compressText: boolean;
3112
- /**
3113
- * Submenus (`kind: 'submenu'`):
3114
- * - **`true` (omissão)** — abre/fecha **por clique** (e teclado); **não** abre ao passar o rato.
3115
- * - **`false`** — igual ao comportamento anterior: abre **só com hover** (com atraso), sem alternar ao clicar na linha.
3116
- */
3117
3097
  clickToOpen: boolean;
3118
- /**
3119
- * Grupos (`kind: 'group'`): quando `false`, cabeçalhos sem seta e itens sempre visíveis (não recolhe).
3120
- */
3121
3098
  groupCollapsible: boolean;
3122
- /**
3123
- * Com {@link groupCollapsible}: estado inicial ao receber `items`.
3124
- * - `'all'` — todos os grupos expandidos (omissão).
3125
- * - `'first'` — só o primeiro grupo expandível fica aberto; os restantes recolhidos.
3126
- */
3127
3099
  groupDefaultExpansion: 'all' | 'first';
3100
+ searchable: boolean;
3101
+ searchPlaceholder: string;
3128
3102
  readonly itemSelect: EventEmitter<T>;
3129
3103
  readonly closeRequest: EventEmitter<void>;
3130
3104
  readonly submenuBack: EventEmitter<void>;
3131
- private nestedLists?;
3132
- rows: MenuRow<T>[];
3133
- /** Filtrado + índices de foco coerentes com grupos recolhidos. */
3134
- displayRows: MenuRow<T>[];
3135
- /** Ids de grupo expandidos; ao mudar `items`, todos voltam a abertos. */
3136
- private readonly expandedGroupIds;
3137
- private focusableCount;
3138
- /** Índice entre `0` e `focusableCount - 1`, ou `-1` = nenhum realce. */
3139
- activeIndex: number;
3140
- /** Painel de submenu aberto (um por instância de lista). */
3141
- openSubmenuKey: string | null;
3142
- private submenuOpenTimer;
3143
- private submenuCloseTimer;
3144
- readonly submenuPositions: _angular_cdk_overlay.ConnectedPosition[];
3145
- readonly panelThemeNgClass: i0.Signal<{
3146
- [x: string]: boolean;
3147
- }>;
3148
- overlayPanelClasses(): string[];
3149
- onNestedItemSelect(id: T): void;
3150
- /** Identidade estável para `@for` — `track $index` quebra quando linhas são omitidas por grupo recolhido. */
3151
- trackDisplayRow(index: number, row: MenuRow<T>): string;
3105
+ private body?;
3106
+ searchQuery: string;
3107
+ displayItems: MenuNodeItem<T>[];
3108
+ get showSearchField(): boolean;
3109
+ get expandAllGroupsWhenSearching(): boolean;
3110
+ get showSearchNoResults(): boolean;
3152
3111
  ngOnChanges(changes: SimpleChanges): void;
3153
- /** Estado inicial de grupos expandidos (chaveado por {@link groupDefaultExpansion}). */
3154
- private applyInitialExpandedGroups;
3155
- private syncDisplayRows;
3156
- isGroupExpanded(groupId: number): boolean;
3157
- /** Eco de `MenuItemGroup.alwaysExpanded` para este `groupId`. */
3158
- private isGroupAlwaysExpanded;
3159
- private isRowVisible;
3160
- toggleGroup(groupId: number): void;
3161
- submenuRowKey(row: MenuRow<T>, index: number): string;
3162
- isSubmenuOpen(row: MenuRow<T>, index: number): boolean;
3163
- submenuMenuId(row: MenuRow<T>): string;
3164
- onRowMouseEnter(row: MenuRow<T>): void;
3165
- /**
3166
- * Grupo / divisor não são `menuitem` com foco-mãe — ao passar o rato para o cabeçalho do grupo,
3167
- * limpa o realce da opção anterior (`.menu-list__option--active`).
3168
- */
3169
- onNonOptionSurfaceEnter(): void;
3170
- onSubmenuTriggerEnter(row: MenuRow<T>, index: number): void;
3171
- onSubmenuTriggerLeave(_row: MenuRow<T>, index: number): void;
3172
- onSubmenuPanelEnter(): void;
3173
- onSubmenuPanelLeave(row: MenuRow<T>, index: number): void;
3174
- private scheduleSubmenuClose;
3175
- private cancelSubmenuOpenTimer;
3176
- private cancelSubmenuCloseTimer;
3177
- /** Fecha o submenu deste nível (seta ← no filho ou fecho de irmão). */
3178
- closeOpenSubmenu(): void;
3179
- onSubmenuRowClick(ev: MouseEvent, row: MenuRow<T>, index: number): void;
3180
- onSubmenuOutsideClick(row: MenuRow<T>, index: number): void;
3181
- private openSubmenuForRowAt;
3182
- private queueFocusNestedFirst;
3183
- /** Primeira opção focável (abertura por teclado). */
3184
- focusFirstOption(): void;
3185
- onItemClick(ev: MouseEvent, item: MenuItemAction<T>): void;
3186
- optionId(focusIndex: number): string;
3187
- isActiveRow(row: MenuRow<T>): boolean;
3188
- /** Realce de selecção persistente (ex.: item de navegação activo). */
3189
- isRowSelected(row: MenuRow<T>): boolean;
3112
+ onSearchQueryInput(value: string | null): void;
3190
3113
  resetHighlight(): void;
3191
- onMenuSurfaceLeave(): void;
3192
- private focusActiveDom;
3193
- onKeydown(ev: KeyboardEvent): void;
3114
+ focusFirstOption(): void;
3115
+ private syncDisplayItems;
3194
3116
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuListComponent<any>, never>;
3195
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuListComponent<any>, "app-menu-list", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; "nested": { "alias": "nested"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "compressText": { "alias": "compressText"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; }, { "itemSelect": "itemSelect"; "closeRequest": "closeRequest"; "submenuBack": "submenuBack"; }, never, never, true, [{ directive: typeof i1.CdkScrollable; inputs: {}; outputs: {}; }]>;
3117
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuListComponent<any>, "app-menu-list", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; "nested": { "alias": "nested"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "compressText": { "alias": "compressText"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; }, { "itemSelect": "itemSelect"; "closeRequest": "closeRequest"; "submenuBack": "submenuBack"; }, never, never, true, [{ directive: typeof i1.CdkScrollable; inputs: {}; outputs: {}; }]>;
3196
3118
  static ngAcceptInputType_dense: unknown;
3197
3119
  static ngAcceptInputType_nested: unknown;
3198
3120
  static ngAcceptInputType_compressText: unknown;
3199
3121
  static ngAcceptInputType_groupCollapsible: unknown;
3122
+ static ngAcceptInputType_searchable: unknown;
3200
3123
  }
3201
3124
 
3202
3125
  /**
@@ -3502,6 +3425,8 @@ declare class AppSidebarComponent<T extends string = string> implements OnChange
3502
3425
  selectedItemId: T | null;
3503
3426
  /** Modo estreito: só ícones + `compressText` na lista (rótulos via `title` / `aria-label`). */
3504
3427
  collapsed: boolean;
3428
+ /** Repassado a {@link MenuListComponent.searchable}: campo de pesquisa na lista da lateral. */
3429
+ searchable: boolean;
3505
3430
  /**
3506
3431
  * Repassado a {@link MenuListComponent.clickToOpen}: submenus na lateral abrem por **clique** (`true`, omissão)
3507
3432
  * ou por **hover** (`false`).
@@ -3530,8 +3455,9 @@ declare class AppSidebarComponent<T extends string = string> implements OnChange
3530
3455
  private scheduleSidebarHeadLayoutGuards;
3531
3456
  private applySidebarHeadLayoutGuards;
3532
3457
  static ɵfac: i0.ɵɵFactoryDeclaration<AppSidebarComponent<any>, never>;
3533
- static ɵcmp: i0.ɵɵComponentDeclaration<AppSidebarComponent<any>, "app-sidebar", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; }, { "itemSelect": "itemSelect"; }, never, ["[appSidebarBrand]", "[appSidebarToolbar]"], true, never>;
3458
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppSidebarComponent<any>, "app-sidebar", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; }, { "itemSelect": "itemSelect"; }, never, ["[appSidebarBrand]", "[appSidebarToolbar]"], true, never>;
3534
3459
  static ngAcceptInputType_collapsed: unknown;
3460
+ static ngAcceptInputType_searchable: unknown;
3535
3461
  static ngAcceptInputType_groupCollapsible: unknown;
3536
3462
  }
3537
3463
 
@@ -3644,4 +3570,4 @@ declare class AppBreadcrumbComponent {
3644
3570
  }
3645
3571
 
3646
3572
  export { ADAPTIVE_DATA_VIEW_MOBILE_QUERY, APP_SIDEBAR_LABEL_REVEAL_LAG_MS, APP_SIDEBAR_LAYOUT_DURATION_MS, APP_SIDEBAR_NAV_REVEAL_TOTAL_MS, APP_THEME_BASE_CLASS, APP_THEME_IDS, ActionMenuComponent, AdaptiveDataViewComponent, AlertComponent, AnchoredOverlayComponent, AppBreadcrumbComponent, AppDialogComponent, AppLibLightBlockScrollStrategy, AppShellComponent, AppShellSidebarTemplateDirective, AppShellSidebarToggleComponent, AppSidebarBrandDirective, AppSidebarComponent, AppSidebarToolbarDirective, AppTheme, AppThemeService, AppTopbarComponent, AppUserMenuComponent, BR_ESTADOS_NOME_SIGLA, BaseFieldComponent, BaseFieldDirective, BooleanFieldDirective, ButtonComponent, ButtonRadius, ButtonSize, ButtonType, ButtonVariant, CardListComponent, CepFieldComponent, CheckboxFieldComponent, ConfirmDialogComponent, ConfirmDialogService, ContextMenuComponent, CpfCnpjFieldComponent, DashboardSectionComponent, DataCardComponent, DataGridComponent, DataListComponent, DataToolbarComponent, DateFieldComponent, DecimalFieldComponent, DetailsFieldComponent, DetailsViewComponent, DialogFooterDirective, DividerComponent, DrawerComponent, DrawerSide, DrawerSize, DropdownBaseComponent, DropdownMenuComponent, DropdownMultiOptionFieldBase, DropdownOptionFieldBase, DropdownSearchFieldComponent, EmptyStateComponent, FILE_PREVIEW_UNAVAILABLE_MESSAGE, FileUploadFieldComponent, FormActionsAlign, FormActionsComponent, FormColComponent, FormGroupComponent, FormGroupVariant, FormLayoutGap, FormRowAlign, FormRowComponent, FormRowJustify, FormSectionAlign, FormSectionComponent, FormSectionRadius, FormSectionVariant, FormTabComponent, FormTabsComponent, ImagePreviewPanelComponent, InputMaskFieldComponent, IntegerFieldComponent, LAYOUT_STACK_SIDE_BY_SIDE, LAYOUT_STACK_STACKED, LayoutStackAlign, LayoutStackComponent, LayoutStackDirection, LayoutStackItemAlign, LibDialogSize, ListItemComponent, LoadingDialogComponent, LoadingDialogService, MaskedTextFieldBase, MenuDividerComponent, MenuDropdownPlacement, MenuGroupComponent, MenuListComponent, MultiselectFieldComponent, NgControlFieldDirective, OverlayPlacement, PDF_IFRAME_VIEWER_HASH, PasswordFieldComponent, PhoneFieldComponent, PopoverBodyTemplateDirective, PopoverComponent, PopoverFooterTemplateDirective, PopoverTriggerDirective, STRUCTRA_THEME_IDS, STRUCTRA_UI, SelectFieldComponent, SkeletonBlockComponent, SkeletonCardComponent, SkeletonFieldShellComponent, SkeletonListComponent, SkeletonTableComponent, SkeletonTextComponent, StatCardComponent, StatusBadgeComponent, SwitchFieldComponent, TableEmptyStateComponent, TableToolbarComponent, TextFieldComponent, TextareaFieldComponent, ThemeDirective, ToastHostComponent, ToastService, TooltipComponent, TooltipPanelTemplateDirective, ValidationSummaryComponent, anchoredOverlayPositions, appendPdfIframeViewerParams, applyOptionalThemeHostClasses, applyPickedCalendarDate, buildDecimalBrDisplay, buildDecimalBrParseString, buildEmptyStateOverlayHtml, caretIndexFromIntegerDigitCount, caretIndexFromSemantic, cepMaskCompleteValidator, cpfCnpjMaskCompleteValidator, escapeHtml, extractDecimalBrParts, fileIsLikelyImage, fileMatchesAccept, fixedDigitsMaskCompleteValidator, formatAcceptForDisplay, formatDateTimePtBr, formatDecimalBr, formatFileSizeBytes, formatIntegerThousandsBr, formatMaskDigits, formatUiFieldDateValue, getFilePreviewKind, getThemeClass, getThemeClassList, getThemeTokenClass, injectEffectiveThemeId, libDialogPanelClasses, mapEstadosToOptions, maskDigitCount, normalizeFormDateValue, normalizeStructraTheme, parseDecimalBr, parseIntegerString, parseUiFieldDateValue, phoneBrMaskCompleteValidator, resolveControlAtPath, sanitizeDecimalBrInput, sanitizeIntegerDigits, sectionHasVisibleInvalid, semanticCaretAt, semanticIntegerDigitCountLeft, stripToDigits, subscribeMarkForCheckOnInvalidUiRefresh, subtreeHasVisibleInvalid };
3647
- export type { AdaptiveDataViewMode, AlertType, AppThemeId, AppThemeOption, BreadcrumbItem, CardItemView, CardListDataMode, CardListMapFn, ConfirmDialogData, ConfirmDialogVariant, DataGridColumn, DataGridPaginationChangeEvent, DetailsViewItem, DropdownListBindings, DropdownSearchPageRequested, FieldCommonInputs, FilePreviewKind, FormTabsVariant, LoadingDialogData, MenuItemAction, MenuItemDivider, MenuItemGroup, MenuItemKind, MenuItemSubmenu, MenuLeafItem, MenuNodeItem, SelectPageRequested, SkeletonFieldShellVariant, StatCardDeltaTone, StatusBadgeSize, StatusBadgeVariant, StructraTheme, ToastInstance, ToastShowOptions, ToastType, ToastVerticalPosition, UiSelectOption, ValidationSummaryItem, ValidationSummaryVariant };
3573
+ export type { AdaptiveDataViewMode, AlertType, AppThemeId, AppThemeOption, BreadcrumbItem, CardItemView, CardListDataMode, CardListMapFn, ConfirmDialogData, ConfirmDialogVariant, DataGridColumn, DataGridPaginationChangeEvent, DetailsViewItem, DropdownListBindings, DropdownSearchPageRequested, FieldCommonInputs, FieldSize, FilePreviewKind, FormTabsVariant, LoadingDialogData, MenuItemAction, MenuItemDivider, MenuItemGroup, MenuItemKind, MenuItemSubmenu, MenuLeafItem, MenuNodeItem, SelectPageRequested, SkeletonFieldShellVariant, StatCardDeltaTone, StatusBadgeSize, StatusBadgeVariant, StructraTheme, ToastInstance, ToastShowOptions, ToastType, ToastVerticalPosition, UiSelectOption, ValidationSummaryItem, ValidationSummaryVariant };