structra-ui 0.2.49 → 0.2.50

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "structra-ui",
3
- "version": "0.2.49",
3
+ "version": "0.2.50",
4
4
  "description": "Biblioteca de componentes Angular da StructraLab (UI reutilizável).",
5
5
  "homepage": "https://structralab.com/",
6
6
  "license": "MIT",
@@ -3104,6 +3104,11 @@ declare class MenuListComponent<T = string> implements OnChanges {
3104
3104
  groupCollapsible: boolean;
3105
3105
  /** Repasse para {@link MenuListBodyComponent.groupDefaultExpansion}. */
3106
3106
  groupDefaultExpansion: 'all' | 'first';
3107
+ /**
3108
+ * Quando `true` (omissão), abrir/fechar grupos colapsáveis persiste em `sessionStorage`
3109
+ * até ao refresh da página — útil na navegação SPA da sidebar.
3110
+ */
3111
+ persistGroupExpansion: boolean;
3107
3112
  searchable: boolean;
3108
3113
  searchPlaceholder: string;
3109
3114
  readonly itemSelect: EventEmitter<T>;
@@ -3121,11 +3126,12 @@ declare class MenuListComponent<T = string> implements OnChanges {
3121
3126
  focusFirstOption(): void;
3122
3127
  private syncDisplayItems;
3123
3128
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuListComponent<any>, never>;
3124
- 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: {}; }]>;
3129
+ 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; }; "persistGroupExpansion": { "alias": "persistGroupExpansion"; "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: {}; }]>;
3125
3130
  static ngAcceptInputType_dense: unknown;
3126
3131
  static ngAcceptInputType_nested: unknown;
3127
3132
  static ngAcceptInputType_compressText: unknown;
3128
3133
  static ngAcceptInputType_groupCollapsible: unknown;
3134
+ static ngAcceptInputType_persistGroupExpansion: unknown;
3129
3135
  static ngAcceptInputType_searchable: unknown;
3130
3136
  }
3131
3137
 
@@ -3457,9 +3463,19 @@ declare class AppSidebarComponent<T extends string = string> implements OnChange
3457
3463
  */
3458
3464
  readonly listCompressText: i0.WritableSignal<boolean>;
3459
3465
  private listRevealTimeoutId;
3466
+ private scrollRestoreTimeoutId;
3460
3467
  constructor();
3461
3468
  ngAfterViewInit(): void;
3462
3469
  ngOnChanges(changes: SimpleChanges): void;
3470
+ /**
3471
+ * Garante que o item `--selected` fica inteiro na área útil (margem + cabeçalho sticky),
3472
+ * com ~½ da opção vizinha visível quando há scroll, e movimento suave.
3473
+ */
3474
+ private scrollSidebarToSelectedItem;
3475
+ /**
3476
+ * Metade da altura da opção de menu imediatamente acima/abaixo na mesma lista (fallback em px).
3477
+ */
3478
+ private getMenuNeighborPeekHalfHeights;
3463
3479
  private clearListRevealTimeout;
3464
3480
  private scheduleSidebarHeadLayoutGuards;
3465
3481
  private applySidebarHeadLayoutGuards;