ngx-eiffage-material 0.0.47 → 0.0.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/index.d.ts CHANGED
@@ -932,7 +932,7 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements OnI
932
932
  * - 'chips': a chip per selected item (default when multiple=true)
933
933
  * - 'text': a single comma-joined text line
934
934
  */
935
- readonly displayMode: _angular_core.InputSignal<"text" | "chips">;
935
+ readonly displayMode: _angular_core.InputSignal<"chips" | "text">;
936
936
  /** Whether to show the search input inside the bottom sheet */
937
937
  readonly showSearch: _angular_core.InputSignalWithTransform<boolean, unknown>;
938
938
  /** Placeholder for the search input inside the bottom sheet */
@@ -943,6 +943,8 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements OnI
943
943
  readonly confirmLabel: _angular_core.InputSignal<string>;
944
944
  /** Label for the reset button (multiple mode) */
945
945
  readonly resetLabel: _angular_core.InputSignal<string>;
946
+ /** Controls how the subscript wrapper (hint/error) reserves space */
947
+ readonly subscriptSizing: _angular_core.InputSignal<SubscriptSizing>;
946
948
  /** Error message rendered inside mat-error */
947
949
  readonly error: _angular_core.InputSignal<string>;
948
950
  /** Hint message rendered inside mat-hint */
@@ -990,7 +992,7 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements OnI
990
992
  preventOpen(isOpen: boolean): void;
991
993
  clearSelection(event: Event): void;
992
994
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxPaginatedSelect<any, any>, never>;
993
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPaginatedSelect<any, any>, "ngx-paginated-select", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "endpoint": { "alias": "endpoint"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "optionTemplate": { "alias": "optionTemplate"; "required": false; "isSignal": true; }; "extraFiltersTemplate": { "alias": "extraFiltersTemplate"; "required": false; "isSignal": true; }; "maxChipsDisplayed": { "alias": "maxChipsDisplayed"; "required": false; "isSignal": true; }; "chipsDirection": { "alias": "chipsDirection"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
995
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPaginatedSelect<any, any>, "ngx-paginated-select", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "endpoint": { "alias": "endpoint"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "optionTemplate": { "alias": "optionTemplate"; "required": false; "isSignal": true; }; "extraFiltersTemplate": { "alias": "extraFiltersTemplate"; "required": false; "isSignal": true; }; "maxChipsDisplayed": { "alias": "maxChipsDisplayed"; "required": false; "isSignal": true; }; "chipsDirection": { "alias": "chipsDirection"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
994
996
  }
995
997
 
996
998
  interface NgxPaginatedSelectBottomSheetData<T, U extends PaginatedFilter<T>> {
@@ -1041,16 +1043,23 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
1041
1043
  readonly allSelected: _angular_core.Signal<boolean>;
1042
1044
  readonly someSelected: _angular_core.Signal<boolean>;
1043
1045
  /**
1044
- * Only reads `resource.value()` — never `data.filters()`.
1046
+ * Reactively depends ONLY on `resource.value()`. The filter snapshot is read
1047
+ * via `untracked` so external filter changes (parent-driven, e.g. an extra
1048
+ * filters panel) do NOT create a reactive dependency here — that would make
1049
+ * the effect re-run on scroll page increments with stale resource data,
1050
+ * duplicating items and breaking `onScroll` (see original limitation).
1051
+ *
1052
+ * Reset logic:
1053
+ * - Fingerprint the current filter identity (everything except `pageNumber`).
1054
+ * - If the fingerprint changed since the previous fetch, this fetch belongs
1055
+ * to a different filter set → replace the accumulated array.
1056
+ * - If only `pageNumber` moved, this is a scroll-load-more → append.
1045
1057
  *
1046
- * When a query change or a new open resets to page 1 we call
1047
- * `accumulatedItems.set([])` synchronously *before* updating the filter,
1048
- * so by the time this effect fires with new data it always appends onto an
1049
- * already-clean array. Reading `data.filters()` here would cause the effect
1050
- * to run a second time (with stale resource data) the moment the page number
1051
- * is incremented on scroll, duplicating items and making
1052
- * `options().length >= total()` so `onScroll` would never fire again.
1058
+ * This is what allows callers to mutate `data.filters` from outside (extra
1059
+ * filter selects, checkboxes, etc.) and have the list refresh cleanly
1060
+ * without the previous page's items lingering.
1053
1061
  */
1062
+ private _lastFilterFingerprint;
1054
1063
  private readonly _accumEffect;
1055
1064
  constructor();
1056
1065
  isSelected(item: T): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-eiffage-material",
3
- "version": "0.0.47",
3
+ "version": "0.0.50",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0"