ng-virtual-list 17.4.0 → 17.4.2

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.
Files changed (64) hide show
  1. package/README.md +34 -1
  2. package/esm2020/lib/components/ng-virtual-list-item.component.mjs +131 -0
  3. package/esm2020/lib/const/index.mjs +44 -0
  4. package/esm2020/lib/enums/direction.mjs +2 -0
  5. package/esm2020/lib/enums/directions.mjs +18 -0
  6. package/esm2020/lib/enums/index.mjs +4 -0
  7. package/esm2020/lib/enums/snapping-method.mjs +2 -0
  8. package/esm2020/lib/enums/snapping-methods.mjs +18 -0
  9. package/esm2020/lib/models/base-virtual-list-item-component.mjs +9 -0
  10. package/esm2020/lib/models/collection.model.mjs +3 -0
  11. package/esm2020/lib/models/component.model.mjs +2 -0
  12. package/esm2020/lib/models/index.mjs +2 -0
  13. package/esm2020/lib/models/item.model.mjs +2 -0
  14. package/esm2020/lib/models/render-collection.model.mjs +3 -0
  15. package/esm2020/lib/models/render-item-config.model.mjs +2 -0
  16. package/esm2020/lib/models/render-item.model.mjs +3 -0
  17. package/esm2020/lib/models/scroll-direction.model.mjs +2 -0
  18. package/esm2020/lib/models/scroll-event.model.mjs +2 -0
  19. package/esm2020/lib/models/sticky-map.model.mjs +2 -0
  20. package/esm2020/lib/ng-virtual-list.component.mjs +675 -0
  21. package/esm2020/lib/ng-virtual-list.module.mjs +20 -0
  22. package/esm2020/lib/types/id.mjs +2 -0
  23. package/esm2020/lib/types/index.mjs +2 -0
  24. package/esm2020/lib/types/rect.mjs +2 -0
  25. package/esm2020/lib/types/size.mjs +2 -0
  26. package/esm2020/lib/utils/browser.mjs +3 -0
  27. package/esm2020/lib/utils/buffer-interpolation.mjs +27 -0
  28. package/esm2020/lib/utils/cacheMap.mjs +167 -0
  29. package/esm2020/lib/utils/debounce.mjs +31 -0
  30. package/esm2020/lib/utils/disposableComponent.mjs +29 -0
  31. package/esm2020/lib/utils/eventEmitter.mjs +106 -0
  32. package/esm2020/lib/utils/index.mjs +5 -0
  33. package/esm2020/lib/utils/isDirection.mjs +15 -0
  34. package/esm2020/lib/utils/scrollEvent.mjs +42 -0
  35. package/esm2020/lib/utils/snapping-method.mjs +9 -0
  36. package/esm2020/lib/utils/toggleClassName.mjs +15 -0
  37. package/esm2020/lib/utils/trackBox.mjs +756 -0
  38. package/esm2020/lib/utils/tracker.mjs +134 -0
  39. package/esm2020/ng-virtual-list.mjs +5 -0
  40. package/esm2020/public-api.mjs +10 -0
  41. package/esm2022/lib/components/ng-virtual-list-item.component.mjs +2 -2
  42. package/esm2022/lib/models/base-virtual-list-item-component.mjs +1 -1
  43. package/esm2022/lib/models/index.mjs +2 -3
  44. package/esm2022/lib/ng-virtual-list.component.mjs +4 -6
  45. package/esm2022/lib/utils/index.mjs +2 -6
  46. package/esm2022/lib/utils/trackBox.mjs +12 -4
  47. package/esm2022/lib/utils/tracker.mjs +1 -1
  48. package/esm2022/public-api.mjs +2 -1
  49. package/fesm2015/ng-virtual-list.mjs +2224 -0
  50. package/fesm2015/ng-virtual-list.mjs.map +1 -0
  51. package/fesm2020/ng-virtual-list.mjs +2229 -0
  52. package/fesm2020/ng-virtual-list.mjs.map +1 -0
  53. package/fesm2022/ng-virtual-list.mjs +195 -190
  54. package/fesm2022/ng-virtual-list.mjs.map +1 -1
  55. package/lib/components/ng-virtual-list-item.component.d.ts +9 -9
  56. package/lib/models/base-virtual-list-item-component.d.ts +0 -1
  57. package/lib/models/index.d.ts +1 -4
  58. package/lib/ng-virtual-list.component.d.ts +47 -50
  59. package/lib/utils/disposableComponent.d.ts +15 -0
  60. package/lib/utils/index.d.ts +3 -6
  61. package/lib/utils/trackBox.d.ts +4 -1
  62. package/lib/utils/tracker.d.ts +11 -4
  63. package/package.json +1 -1
  64. package/public-api.d.ts +1 -0
@@ -1,7 +1,7 @@
1
- import { ChangeDetectorRef, ElementRef, TemplateRef } from '@angular/core';
1
+ import { TemplateRef } from '@angular/core';
2
2
  import { IRenderVirtualListItem } from '../models/render-item.model';
3
3
  import { ISize } from '../types';
4
- import { BaseVirtualListItemComponent } from '../models';
4
+ import { BaseVirtualListItemComponent } from '../models/base-virtual-list-item-component';
5
5
  import * as i0 from "@angular/core";
6
6
  /**
7
7
  * Virtual list item component
@@ -10,24 +10,24 @@ import * as i0 from "@angular/core";
10
10
  * @email djonnyx@gmail.com
11
11
  */
12
12
  export declare class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
13
- protected static __nextId: number;
14
- protected _id: number;
13
+ private static __nextId;
14
+ private _id;
15
15
  get id(): number;
16
- protected _cdr: ChangeDetectorRef;
16
+ private _cdr;
17
17
  regular: boolean;
18
18
  data: import("@angular/core").WritableSignal<IRenderVirtualListItem | undefined>;
19
- protected _data: IRenderVirtualListItem | undefined;
19
+ private _data;
20
20
  set item(v: IRenderVirtualListItem | undefined);
21
- protected _regularLength: string;
21
+ private _regularLength;
22
22
  set regularLength(v: string);
23
23
  get item(): IRenderVirtualListItem | undefined;
24
24
  get itemId(): import("../types").Id | undefined;
25
25
  itemRenderer: import("@angular/core").WritableSignal<TemplateRef<any> | undefined>;
26
26
  set renderer(v: TemplateRef<any> | undefined);
27
- protected _elementRef: ElementRef<HTMLElement>;
27
+ private _elementRef;
28
28
  get element(): HTMLElement;
29
29
  constructor();
30
- protected update(): void;
30
+ private update;
31
31
  getBounds(): ISize;
32
32
  show(): void;
33
33
  hide(): void;
@@ -18,7 +18,6 @@ export declare abstract class BaseVirtualListItemComponent {
18
18
  abstract itemRenderer: WritableSignal<TemplateRef<any> | undefined>;
19
19
  abstract set renderer(v: TemplateRef<any> | undefined);
20
20
  abstract get element(): HTMLElement;
21
- protected abstract update(): void;
22
21
  abstract getBounds(): ISize;
23
22
  abstract show(): void;
24
23
  abstract hide(): void;
@@ -3,7 +3,4 @@ import { IScrollEvent } from './scroll-event.model';
3
3
  import { IVirtualListItem } from './item.model';
4
4
  import { IVirtualListStickyMap } from './sticky-map.model';
5
5
  import { IVirtualListCollection } from './collection.model';
6
- import { BaseVirtualListItemComponent } from './base-virtual-list-item-component';
7
- import { Component$1 } from './component.model';
8
- export type { ScrollDirection, IScrollEvent, IVirtualListItem, IVirtualListStickyMap, IVirtualListCollection, Component$1, };
9
- export { BaseVirtualListItemComponent, };
6
+ export type { ScrollDirection, IScrollEvent, IVirtualListItem, IVirtualListStickyMap, IVirtualListCollection, };
@@ -1,10 +1,8 @@
1
- import { AfterViewInit, ComponentRef, ElementRef, OnDestroy, OnInit, TemplateRef, ViewContainerRef, WritableSignal } from '@angular/core';
1
+ import { AfterViewInit, OnDestroy, OnInit, TemplateRef } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { BaseVirtualListItemComponent, Component$1, IScrollEvent, IVirtualListCollection, IVirtualListStickyMap } from './models';
3
+ import { IScrollEvent, IVirtualListCollection, IVirtualListStickyMap } from './models';
4
4
  import { Id, ISize } from './types';
5
- import { IRenderVirtualListCollection } from './models/render-collection.model';
6
5
  import { Direction, SnappingMethod } from './enums';
7
- import { TrackBox } from './utils';
8
6
  import * as i0 from "@angular/core";
9
7
  /**
10
8
  * Virtual list component.
@@ -15,17 +13,17 @@ import * as i0 from "@angular/core";
15
13
  * @email djonnyx@gmail.com
16
14
  */
17
15
  export declare class NgVirtualListComponent implements AfterViewInit, OnInit, OnDestroy {
18
- protected static __nextId: number;
19
- protected _id: number;
16
+ private static __nextId;
17
+ private _id;
20
18
  /**
21
19
  * Readonly. Returns the unique identifier of the component.
22
20
  */
23
21
  get id(): number;
24
- protected _listContainerRef: ViewContainerRef | undefined;
25
- protected _snapContainerRef: ViewContainerRef | undefined;
26
- protected _snappedContainer: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
27
- protected _container: import("@angular/core").Signal<ElementRef<HTMLDivElement> | undefined>;
28
- protected _list: import("@angular/core").Signal<ElementRef<HTMLUListElement> | undefined>;
22
+ private _listContainerRef;
23
+ private _snapContainerRef;
24
+ private _snappedContainer;
25
+ private _container;
26
+ private _list;
29
27
  /**
30
28
  * Fires when the list has been scrolled.
31
29
  */
@@ -34,7 +32,7 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnInit, On
34
32
  * Fires when the list has completed scrolling.
35
33
  */
36
34
  onScrollEnd: import("@angular/core").OutputEmitterRef<IScrollEvent>;
37
- protected _itemsOptions: any;
35
+ private _itemsOptions;
38
36
  /**
39
37
  * Collection of list items.
40
38
  */
@@ -54,13 +52,13 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnInit, On
54
52
  * Rendering element template.
55
53
  */
56
54
  itemRenderer: import("@angular/core").InputSignal<TemplateRef<any>>;
57
- protected _itemRenderer: WritableSignal<TemplateRef<any> | undefined>;
55
+ private _itemRenderer;
58
56
  /**
59
57
  * Dictionary zIndex by id of the list element. If the value is not set or equal to 0,
60
58
  * then a simple element is displayed, if the value is greater than 0, then the sticky position mode is enabled for the element.
61
59
  */
62
60
  stickyMap: import("@angular/core").InputSignal<IVirtualListStickyMap>;
63
- protected _itemSizeOptions: any;
61
+ private _itemSizeOptions;
64
62
  /**
65
63
  * If direction = 'vertical', then the height of a typical element. If direction = 'horizontal', then the width of a typical element.
66
64
  * Ignored if the dynamicSize property is true.
@@ -98,21 +96,21 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnInit, On
98
96
  * 'advanced' - The group is rendered on a transparent background. List items below the group are not rendered.
99
97
  */
100
98
  snappingMethod: import("@angular/core").InputSignal<SnappingMethod>;
101
- protected _isSnappingMethodAdvanced: boolean;
99
+ private _isSnappingMethodAdvanced;
102
100
  get isSnappingMethodAdvanced(): boolean;
103
- protected _isVertical: boolean;
104
- protected _displayComponents: Array<ComponentRef<BaseVirtualListItemComponent>>;
105
- protected _snapedDisplayComponent: ComponentRef<BaseVirtualListItemComponent> | undefined;
106
- protected _bounds: WritableSignal<ISize | null>;
107
- protected _scrollSize: WritableSignal<number>;
108
- protected _resizeObserver: ResizeObserver | null;
109
- protected _resizeSnappedComponentHandler: () => void;
110
- protected _resizeSnappedObserver: ResizeObserver | null;
111
- protected _componentsResizeObserver: ResizeObserver;
112
- protected _onResizeHandler: () => void;
113
- protected _onScrollHandler: (e?: Event) => void;
114
- protected _elementRef: ElementRef<any>;
115
- protected _initialized: WritableSignal<boolean>;
101
+ private _isVertical;
102
+ private _displayComponents;
103
+ private _snapedDisplayComponent;
104
+ private _bounds;
105
+ private _scrollSize;
106
+ private _resizeObserver;
107
+ private _resizeSnappedComponentHandler;
108
+ private _resizeSnappedObserver;
109
+ private _componentsResizeObserver;
110
+ private _onResizeHandler;
111
+ private _onScrollHandler;
112
+ private _elementRef;
113
+ private _initialized;
116
114
  readonly $initialized: Observable<boolean>;
117
115
  /**
118
116
  * The name of the property by which tracking is performed
@@ -121,31 +119,30 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnInit, On
121
119
  /**
122
120
  * Base class of the element component
123
121
  */
124
- protected _itemComponentClass: Component$1<BaseVirtualListItemComponent>;
122
+ private _itemComponentClass;
125
123
  /**
126
124
  * Base class trackBox
127
125
  */
128
- protected _trackBoxClass: Component$1<TrackBox>;
126
+ private _trackBoxClass;
129
127
  /**
130
128
  * Dictionary of element sizes by their id
131
129
  */
132
- protected _trackBox: TrackBox;
133
- protected _onTrackBoxChangeHandler: (v: number) => void;
134
- protected _cacheVersion: WritableSignal<number>;
130
+ private _trackBox;
131
+ private _onTrackBoxChangeHandler;
132
+ private _cacheVersion;
135
133
  constructor();
136
- protected setupRenderer(): void;
137
- protected onInit(): void;
138
- protected listenCacheChangesIfNeed(value: boolean): void;
139
- protected getIsSnappingMethodAdvanced(m?: SnappingMethod): boolean;
140
- protected getIsVertical(d?: Direction): boolean;
141
- protected createDisplayComponentsIfNeed(displayItems: IRenderVirtualListCollection | null): void;
142
- protected updateRegularRenderer(): void;
143
- protected resetRenderers(itemRenderer?: TemplateRef<HTMLElement>): void;
134
+ private onInit;
135
+ private listenCacheChangesIfNeed;
136
+ private getIsSnappingMethodAdvanced;
137
+ private getIsVertical;
138
+ private createDisplayComponentsIfNeed;
139
+ private updateRegularRenderer;
140
+ private resetRenderers;
144
141
  /**
145
142
  * Tracking by id
146
143
  */
147
- protected tracking(): void;
148
- protected resetBoundsSize(isVertical: boolean, totalSize: number): void;
144
+ private tracking;
145
+ private resetBoundsSize;
149
146
  /**
150
147
  * Returns the bounds of an element with a given id
151
148
  */
@@ -155,17 +152,17 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnInit, On
155
152
  * Behavior accepts the values ​​"auto", "instant" and "smooth".
156
153
  */
157
154
  scrollTo(id: Id, behavior?: ScrollBehavior): void;
158
- protected _scrollToRepeatExecutionTimeout: number | undefined;
159
- protected clearScrollToRepeatExecutionTimeout(): void;
160
- protected scrollToExecutor(id: Id, behavior: ScrollBehavior, iteration?: number, isLastIteration?: boolean): void;
155
+ private _scrollToRepeatExecutionTimeout;
156
+ private clearScrollToRepeatExecutionTimeout;
157
+ private scrollToExecutor;
161
158
  /**
162
159
  * Scrolls the scroll area to the desired element with the specified ID.
163
160
  */
164
161
  scrollToEnd(behavior?: ScrollBehavior): void;
165
- protected _onContainerScrollHandler: (e: Event) => void;
166
- protected _onContainerScrollEndHandler: (e: Event) => void;
167
- protected afterViewInit(): void;
168
- protected dispose(): void;
162
+ private _onContainerScrollHandler;
163
+ private _onContainerScrollEndHandler;
164
+ private afterViewInit;
165
+ private dispose;
169
166
  static ɵfac: i0.ɵɵFactoryDeclaration<NgVirtualListComponent, never>;
170
167
  static ɵcmp: i0.ɵɵComponentDeclaration<NgVirtualListComponent, "ng-virtual-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; "enabledBufferOptimization": { "alias": "enabledBufferOptimization"; "required": false; "isSignal": true; }; "itemRenderer": { "alias": "itemRenderer"; "required": true; "isSignal": true; }; "stickyMap": { "alias": "stickyMap"; "required": false; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "dynamicSize": { "alias": "dynamicSize"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "itemsOffset": { "alias": "itemsOffset"; "required": false; "isSignal": true; }; "bufferSize": { "alias": "bufferSize"; "required": false; "isSignal": true; }; "maxBufferSize": { "alias": "maxBufferSize"; "required": false; "isSignal": true; }; "snappingMethod": { "alias": "snappingMethod"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "onScroll": "onScroll"; "onScrollEnd": "onScrollEnd"; }, never, never, false, never>;
171
168
  }
@@ -0,0 +1,15 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Base disposable component
6
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/15.x/projects/ng-virtual-list/src/lib/utils/disposableComponent.ts
7
+ * @author Evgenii Grebennikov
8
+ * @email djonnyx@gmail.com
9
+ */
10
+ export declare class DisposableComponent implements OnDestroy {
11
+ protected _$unsubscribe: Subject<void>;
12
+ ngOnDestroy(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<DisposableComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<DisposableComponent, "ng-component", never, {}, {}, never, never, false, never>;
15
+ }
@@ -1,9 +1,6 @@
1
- import { isDirection } from "./isDirection";
2
1
  import { debounce } from "./debounce";
3
2
  import { toggleClassName } from './toggleClassName';
4
- import { Tracker } from "./tracker";
5
- import { TrackBox, IUpdateCollectionReturns, TRACK_BOX_CHANGE_EVENT_NAME, IMetrics, IRecalculateMetricsOptions, IGetItemPositionOptions, IUpdateCollectionOptions, CacheMapEvents, OnChangeEventListener, CacheMapListeners, ItemDisplayMethods } from "./trackBox";
6
- import { CMap, ICacheMap, CACHE_BOX_CHANGE_EVENT_NAME } from './cacheMap';
3
+ import { IMetrics } from "./trackBox";
7
4
  import { ScrollEvent } from "./scrollEvent";
8
- export { isDirection, debounce, toggleClassName, ScrollEvent, TrackBox, Tracker, TRACK_BOX_CHANGE_EVENT_NAME, CMap, CACHE_BOX_CHANGE_EVENT_NAME, };
9
- export type { ICacheMap, IUpdateCollectionReturns, IMetrics, IRecalculateMetricsOptions, IGetItemPositionOptions, IUpdateCollectionOptions, CacheMapEvents, OnChangeEventListener, CacheMapListeners, ItemDisplayMethods, };
5
+ export { debounce, toggleClassName, ScrollEvent, };
6
+ export type { IMetrics, };
@@ -5,7 +5,8 @@ import { CacheMap, CMap } from "./cacheMap";
5
5
  import { Tracker } from "./tracker";
6
6
  import { ISize } from "../types";
7
7
  import { HEIGHT_PROP_NAME, WIDTH_PROP_NAME } from "../const";
8
- import { BaseVirtualListItemComponent, IVirtualListStickyMap } from "../models";
8
+ import { IVirtualListStickyMap } from "../models";
9
+ import { BaseVirtualListItemComponent } from "../models/base-virtual-list-item-component";
9
10
  export declare const TRACK_BOX_CHANGE_EVENT_NAME = "change";
10
11
  export interface IMetrics {
11
12
  delta: number;
@@ -104,7 +105,9 @@ export declare class TrackBox<C extends BaseVirtualListItemComponent = any> exte
104
105
  * Set the trackBy property
105
106
  */
106
107
  set trackingPropertyName(v: string);
108
+ protected _trackingPropertyName: string;
107
109
  constructor(trackingPropertyName: string);
110
+ protected initialize(): void;
108
111
  set(id: Id, bounds: ISize): CMap<Id, ISize>;
109
112
  protected _previousCollection: Array<{
110
113
  id: Id;
@@ -1,6 +1,8 @@
1
1
  import { ComponentRef } from "@angular/core";
2
- import { BaseVirtualListItemComponent, ScrollDirection } from "../models";
2
+ import { ScrollDirection } from "../models";
3
3
  import { Id, ISize } from "../types";
4
+ import { BaseVirtualListItemComponent } from "../models/base-virtual-list-item-component";
5
+ type TrackingPropertyId = string | number;
4
6
  export interface IVirtualListItemComponent<I = any> {
5
7
  getBounds(): ISize;
6
8
  itemId: Id;
@@ -19,7 +21,9 @@ export declare class Tracker<C extends BaseVirtualListItemComponent = any> {
19
21
  /**
20
22
  * display objects dictionary of indexes by id
21
23
  */
22
- private _displayObjectIndexMapById;
24
+ protected _displayObjectIndexMapById: {
25
+ [id: number]: number;
26
+ };
23
27
  set displayObjectIndexMapById(v: {
24
28
  [id: number]: number;
25
29
  });
@@ -29,12 +33,14 @@ export declare class Tracker<C extends BaseVirtualListItemComponent = any> {
29
33
  /**
30
34
  * Dictionary displayItems propertyNameId by items propertyNameId
31
35
  */
32
- private _trackMap;
36
+ protected _trackMap: {
37
+ [id: TrackingPropertyId]: number;
38
+ } | null;
33
39
  get trackMap(): {
34
40
  [id: string]: number;
35
41
  [id: number]: number;
36
42
  } | null;
37
- private _trackingPropertyName;
43
+ protected _trackingPropertyName: string;
38
44
  set trackingPropertyName(v: string);
39
45
  constructor(trackingPropertyName: string);
40
46
  /**
@@ -44,3 +50,4 @@ export declare class Tracker<C extends BaseVirtualListItemComponent = any> {
44
50
  untrackComponentByIdProperty(component?: C): void;
45
51
  dispose(): void;
46
52
  }
53
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-virtual-list",
3
- "version": "17.4.0",
3
+ "version": "17.4.2",
4
4
  "author": {
5
5
  "name": "Evgenii Grebennikov",
6
6
  "email": "djonnyx@gmail.com"
package/public-api.d.ts CHANGED
@@ -4,3 +4,4 @@ export * from './lib/ng-virtual-list.component';
4
4
  export * from './lib/enums';
5
5
  export * from './lib/models';
6
6
  export * from './lib/types';
7
+ export * from './lib/utils';