@litigiovirtual/ius-design-components 2.2.1 → 2.2.3

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": "@litigiovirtual/ius-design-components",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": ">=22.0.0 <23.0.0",
6
6
  "@angular/common": ">=22.0.0 <23.0.0",
@@ -8567,6 +8567,13 @@ declare class EntityNavigatorComponent {
8567
8567
  readonly createIcon: _angular_core.InputSignal<string>;
8568
8568
  readonly groupLimit: _angular_core.InputSignal<number | undefined>;
8569
8569
  readonly collapsibleGroups: _angular_core.InputSignalWithTransform<boolean, unknown>;
8570
+ /**
8571
+ * Grupos plegados **controlado** (keys). Presente → el consumidor gobierna el
8572
+ * plegado; el navegador refleja este set y emite `groupCollapse(next)` en cada
8573
+ * cambio — incluido el auto-despliegue del salto por letra sobre un grupo
8574
+ * plegado. Sin él, el plegado es estado interno. Requiere `collapsibleGroups`.
8575
+ */
8576
+ readonly collapsedGroups: _angular_core.InputSignal<readonly string[] | undefined>;
8570
8577
  readonly stickyHeaders: _angular_core.InputSignalWithTransform<boolean, unknown>;
8571
8578
  readonly pinnableGroups: _angular_core.InputSignalWithTransform<boolean, unknown>;
8572
8579
  readonly defaultPinnedGroup: _angular_core.InputSignal<string | null>;
@@ -8614,6 +8621,8 @@ declare class EntityNavigatorComponent {
8614
8621
  }>;
8615
8622
  readonly create: EventEmitter<MouseEvent>;
8616
8623
  readonly pinGroup: EventEmitter<string | null>;
8624
+ /** Par two-way de `collapsedGroups`. */
8625
+ readonly groupCollapse: EventEmitter<string[]>;
8617
8626
  readonly more: EventEmitter<MouseEvent>;
8618
8627
  /** Par two-way de `collapsed`. */
8619
8628
  readonly collapsedChange: EventEmitter<boolean>;
@@ -8626,6 +8635,7 @@ declare class EntityNavigatorComponent {
8626
8635
  private readonly sentinels;
8627
8636
  private readonly letterAnchors;
8628
8637
  private readonly doc;
8638
+ private readonly injector;
8629
8639
  private readonly zone;
8630
8640
  private readonly destroyRef;
8631
8641
  private readonly internalCollapsed;
@@ -8655,12 +8665,14 @@ declare class EntityNavigatorComponent {
8655
8665
  private readonly lmBusy;
8656
8666
  private readonly lmCounts;
8657
8667
  private pendingLetter;
8668
+ private pendingDesde;
8658
8669
  private io;
8659
- private vRaf;
8660
8670
  constructor();
8661
8671
  /** Siembra el estado interno con los `default*` la primera vez que se leen. */
8662
8672
  private sembrarEstadoInicial;
8663
8673
  protected readonly isCollapsed: _angular_core.Signal<boolean>;
8674
+ /** Grupos plegados efectivos: el input controlado manda sobre el interno. */
8675
+ protected readonly plegados: _angular_core.Signal<ReadonlySet<string>>;
8664
8676
  protected readonly activeKeys: _angular_core.Signal<ReadonlySet<string>>;
8665
8677
  protected readonly stateVal: _angular_core.Signal<string | undefined>;
8666
8678
  /** SegmentedControl pide un array mutable; el input del contrato es readonly. */
@@ -8715,6 +8727,12 @@ declare class EntityNavigatorComponent {
8715
8727
  protected alternarPinGrupo(key: string): void;
8716
8728
  protected alternarShowMore(key: string): void;
8717
8729
  protected alternarPlegadoGrupo(key: string): void;
8730
+ /**
8731
+ * Camino único del plegado: si `collapsedGroups` es controlado solo emite
8732
+ * (el consumidor manda el set); si no, muta el estado interno. Lo usan tanto
8733
+ * el chevron del encabezado como el auto-despliegue del salto por letra.
8734
+ */
8735
+ private aplicarPlegado;
8718
8736
  protected alternarColapso(): void;
8719
8737
  private readonly alturas;
8720
8738
  /** `stickyHeaders` es incompatible con la ventana de render: con `virtualized` se ignora. */
@@ -8750,6 +8768,13 @@ declare class EntityNavigatorComponent {
8750
8768
  private readonly hayMasLotes;
8751
8769
  /** (Re)observa los centinelas presentes tras cada render. */
8752
8770
  private registrarCentinelas;
8771
+ /**
8772
+ * Barrido único del nivel superior: las letras presentes (en orden de
8773
+ * aparición) y el grupo donde cae cada una. Recorre `g.items` **crudo**, así
8774
+ * que ve también los grupos plegados — de ahí sale el auto-despliegue del
8775
+ * salto. Primera aparición gana, igual que el ancla del DOM.
8776
+ */
8777
+ private readonly barridoDeLetras;
8753
8778
  /** Letras realmente presentes en el nivel superior, en orden de aparición. */
8754
8779
  protected readonly letrasPresentes: _angular_core.Signal<string[]>;
8755
8780
  private readonly setPresentes;
@@ -8762,12 +8787,42 @@ declare class EntityNavigatorComponent {
8762
8787
  /** Roving tabindex: el único tab-stop del rail. */
8763
8788
  protected readonly alphaTabStop: _angular_core.Signal<string | undefined>;
8764
8789
  protected saltarALetra(letter: string): void;
8790
+ /** Deja el salto en espera de su destino, con el sello para acotar la espera. */
8791
+ private dejarSaltoPendiente;
8792
+ /**
8793
+ * Despliega el grupo que contiene `letter` si está plegado. Va por el mismo
8794
+ * camino que el chevron (`aplicarPlegado`): con `collapsedGroups` controlado
8795
+ * emite `groupCollapse` para sincronizar al consumidor, si no muta el estado
8796
+ * interno. Devuelve `true` si hubo que desplegar (el salto queda pendiente).
8797
+ */
8798
+ private desplegarGrupoDeLetra;
8799
+ /**
8800
+ * ¿El cuerpo ya pintó las filas del grupo al que pertenece `letter`? Es lo que
8801
+ * distingue «el destino todavía no tiene layout» de «el destino no existe».
8802
+ */
8803
+ private vistaAlDia;
8765
8804
  private anclaDeLetra;
8766
8805
  /** Descuenta el alto del encabezado sticky (salto por scrollTop, no scrollIntoView). */
8767
8806
  private topDeAncla;
8768
8807
  private prefiereMenosMovimiento;
8769
- /** Resuelve el salto pendiente cuando el ancla aparece tras cargar lotes. */
8808
+ /**
8809
+ * Reintenta el salto pendiente cada vez que cambian las anclas o el modelo —
8810
+ * el destino puede aparecer tras cargar lotes o tras desplegar su grupo.
8811
+ */
8770
8812
  private registrarAnclasDeLetra;
8813
+ /**
8814
+ * Desplaza hasta el destino del salto pendiente si ya se puede: con ventana de
8815
+ * render sale del offset declarado, si no del ancla en el DOM.
8816
+ *
8817
+ * Mientras no se pueda, el salto se CONSERVA: el destino puede estar a un
8818
+ * render de distancia (grupo recién desplegado), a un lote de distancia, o a
8819
+ * la espera de que el consumidor aplique el `collapsedGroups` que se le emitió.
8820
+ * Descartarlo en el primer intento fallido era el bug: el ancla llegaba un
8821
+ * turno después y el salto ya no existía. La espera va acotada por
8822
+ * `SALTO_PENDIENTE_TTL` para no dejarlo colgado ni desplazar por sorpresa
8823
+ * mucho después (p. ej. si el ancla nunca se pinta por `groupLimit`).
8824
+ */
8825
+ private resolverSaltoPendiente;
8771
8826
  /** Teclado del rail: ↑/↓/Inicio/Fin mueven el foco entre letras habilitadas. */
8772
8827
  protected onRailKey(event: KeyboardEvent): void;
8773
8828
  private registrarObservadores;
@@ -8786,7 +8841,7 @@ declare class EntityNavigatorComponent {
8786
8841
  protected padAddChild(level: number): number;
8787
8842
  protected etiquetaPinGrupo(fijada: boolean): string;
8788
8843
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EntityNavigatorComponent, never>;
8789
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityNavigatorComponent, "ius-entity-navigator", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "titleIcon": { "alias": "titleIcon"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchThreshold": { "alias": "searchThreshold"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "selectedFilters": { "alias": "selectedFilters"; "required": false; "isSignal": true; }; "availableFilters": { "alias": "availableFilters"; "required": false; "isSignal": true; }; "activeFacets": { "alias": "activeFacets"; "required": false; "isSignal": true; }; "stateSegments": { "alias": "stateSegments"; "required": false; "isSignal": true; }; "stateValue": { "alias": "stateValue"; "required": false; "isSignal": true; }; "sortLabel": { "alias": "sortLabel"; "required": false; "isSignal": true; }; "sortOptions": { "alias": "sortOptions"; "required": false; "isSignal": true; }; "sortValue": { "alias": "sortValue"; "required": false; "isSignal": true; }; "metaLabel": { "alias": "metaLabel"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "accent": { "alias": "accent"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "autoExpandOnFilter": { "alias": "autoExpandOnFilter"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "defaultSelected": { "alias": "defaultSelected"; "required": false; "isSignal": true; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; "isSignal": true; }; "noResultsLabel": { "alias": "noResultsLabel"; "required": false; "isSignal": true; }; "createLabel": { "alias": "createLabel"; "required": false; "isSignal": true; }; "createIcon": { "alias": "createIcon"; "required": false; "isSignal": true; }; "groupLimit": { "alias": "groupLimit"; "required": false; "isSignal": true; }; "collapsibleGroups": { "alias": "collapsibleGroups"; "required": false; "isSignal": true; }; "stickyHeaders": { "alias": "stickyHeaders"; "required": false; "isSignal": true; }; "pinnableGroups": { "alias": "pinnableGroups"; "required": false; "isSignal": true; }; "defaultPinnedGroup": { "alias": "defaultPinnedGroup"; "required": false; "isSignal": true; }; "moreLabel": { "alias": "moreLabel"; "required": false; "isSignal": true; }; "alphaIndex": { "alias": "alphaIndex"; "required": false; "isSignal": true; }; "alphaIndexLetters": { "alias": "alphaIndexLetters"; "required": false; "isSignal": true; }; "loadMoreLabel": { "alias": "loadMoreLabel"; "required": false; "isSignal": true; }; "virtualized": { "alias": "virtualized"; "required": false; "isSignal": true; }; "virtualizeThreshold": { "alias": "virtualizeThreshold"; "required": false; "isSignal": true; }; "itemHeights": { "alias": "itemHeights"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "defaultCollapsed": { "alias": "defaultCollapsed"; "required": false; "isSignal": true; }; "fluidWidth": { "alias": "fluidWidth"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "search": "search"; "searchChange": "searchChange"; "searchClear": "searchClear"; "filter": "filter"; "filterRemove": "filterRemove"; "addFilter": "addFilter"; "stateChange": "stateChange"; "facetAdd": "facetAdd"; "facetRemove": "facetRemove"; "sort": "sort"; "select": "select"; "selectedChange": "selectedChange"; "expandedChange": "expandedChange"; "togglePin": "togglePin"; "create": "create"; "pinGroup": "pinGroup"; "more": "more"; "collapsedChange": "collapsedChange"; "jumpToLetter": "jumpToLetter"; "loadMore": "loadMore"; "expandLoad": "expandLoad"; }, never, never, true, never>;
8844
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EntityNavigatorComponent, "ius-entity-navigator", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "titleIcon": { "alias": "titleIcon"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchThreshold": { "alias": "searchThreshold"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "selectedFilters": { "alias": "selectedFilters"; "required": false; "isSignal": true; }; "availableFilters": { "alias": "availableFilters"; "required": false; "isSignal": true; }; "activeFacets": { "alias": "activeFacets"; "required": false; "isSignal": true; }; "stateSegments": { "alias": "stateSegments"; "required": false; "isSignal": true; }; "stateValue": { "alias": "stateValue"; "required": false; "isSignal": true; }; "sortLabel": { "alias": "sortLabel"; "required": false; "isSignal": true; }; "sortOptions": { "alias": "sortOptions"; "required": false; "isSignal": true; }; "sortValue": { "alias": "sortValue"; "required": false; "isSignal": true; }; "metaLabel": { "alias": "metaLabel"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "accent": { "alias": "accent"; "required": false; "isSignal": true; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "autoExpandOnFilter": { "alias": "autoExpandOnFilter"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "defaultSelected": { "alias": "defaultSelected"; "required": false; "isSignal": true; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; "isSignal": true; }; "noResultsLabel": { "alias": "noResultsLabel"; "required": false; "isSignal": true; }; "createLabel": { "alias": "createLabel"; "required": false; "isSignal": true; }; "createIcon": { "alias": "createIcon"; "required": false; "isSignal": true; }; "groupLimit": { "alias": "groupLimit"; "required": false; "isSignal": true; }; "collapsibleGroups": { "alias": "collapsibleGroups"; "required": false; "isSignal": true; }; "collapsedGroups": { "alias": "collapsedGroups"; "required": false; "isSignal": true; }; "stickyHeaders": { "alias": "stickyHeaders"; "required": false; "isSignal": true; }; "pinnableGroups": { "alias": "pinnableGroups"; "required": false; "isSignal": true; }; "defaultPinnedGroup": { "alias": "defaultPinnedGroup"; "required": false; "isSignal": true; }; "moreLabel": { "alias": "moreLabel"; "required": false; "isSignal": true; }; "alphaIndex": { "alias": "alphaIndex"; "required": false; "isSignal": true; }; "alphaIndexLetters": { "alias": "alphaIndexLetters"; "required": false; "isSignal": true; }; "loadMoreLabel": { "alias": "loadMoreLabel"; "required": false; "isSignal": true; }; "virtualized": { "alias": "virtualized"; "required": false; "isSignal": true; }; "virtualizeThreshold": { "alias": "virtualizeThreshold"; "required": false; "isSignal": true; }; "itemHeights": { "alias": "itemHeights"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "defaultCollapsed": { "alias": "defaultCollapsed"; "required": false; "isSignal": true; }; "fluidWidth": { "alias": "fluidWidth"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "search": "search"; "searchChange": "searchChange"; "searchClear": "searchClear"; "filter": "filter"; "filterRemove": "filterRemove"; "addFilter": "addFilter"; "stateChange": "stateChange"; "facetAdd": "facetAdd"; "facetRemove": "facetRemove"; "sort": "sort"; "select": "select"; "selectedChange": "selectedChange"; "expandedChange": "expandedChange"; "togglePin": "togglePin"; "create": "create"; "pinGroup": "pinGroup"; "groupCollapse": "groupCollapse"; "more": "more"; "collapsedChange": "collapsedChange"; "jumpToLetter": "jumpToLetter"; "loadMore": "loadMore"; "expandLoad": "expandLoad"; }, never, never, true, never>;
8790
8845
  }
8791
8846
 
8792
8847
  /**