ng-virtual-list 16.7.17 → 16.9.0

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 (186) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +65 -21
  3. package/esm2022/lib/components/list-item/ng-virtual-list-item.component.mjs +414 -0
  4. package/esm2022/lib/components/list-item/ng-virtual-list-item.module.mjs +20 -0
  5. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +266 -0
  6. package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.module.mjs +20 -0
  7. package/esm2022/lib/components/scroller/enums/index.mjs +3 -0
  8. package/esm2022/lib/components/scroller/enums/scroller-direction.mjs +6 -0
  9. package/esm2022/lib/components/scroller/enums/scroller-directions.mjs +2 -0
  10. package/esm2022/lib/components/scroller/ng-scroller.component.mjs +629 -0
  11. package/esm2022/lib/components/scroller/ng-scroller.module.mjs +21 -0
  12. package/esm2022/lib/components/scroller/types/easing.mjs +2 -0
  13. package/esm2022/lib/components/scroller/types/index.mjs +2 -0
  14. package/esm2022/lib/components/scroller/utils/ease.mjs +7 -0
  15. package/esm2022/lib/components/scroller/utils/index.mjs +4 -0
  16. package/esm2022/lib/components/scroller/utils/scroll-box.mjs +45 -0
  17. package/esm2022/lib/components/substrate/enums/index.mjs +4 -0
  18. package/esm2022/lib/components/substrate/enums/substrate-modes.mjs +16 -0
  19. package/esm2022/lib/components/substrate/enums/substrate-styles.mjs +15 -0
  20. package/esm2022/lib/components/substrate/index.mjs +5 -0
  21. package/esm2022/lib/components/substrate/substrate.component.mjs +381 -0
  22. package/esm2022/lib/components/substrate/substrate.module.mjs +19 -0
  23. package/esm2022/lib/components/substrate/types/index.mjs +2 -0
  24. package/esm2022/lib/components/substrate/types/substrate-mode.mjs +2 -0
  25. package/esm2022/lib/components/substrate/types/substrate-style.mjs +2 -0
  26. package/esm2022/lib/const/index.mjs +41 -3
  27. package/esm2022/lib/directives/index.mjs +4 -0
  28. package/esm2022/lib/directives/item-click/item-click.directive.mjs +66 -0
  29. package/esm2022/lib/directives/item-click/item-click.module.mjs +19 -0
  30. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +61 -0
  31. package/esm2022/lib/directives/locale-sensitive/locale-sensitive.module.mjs +19 -0
  32. package/esm2022/lib/enums/collection-mode.mjs +1 -1
  33. package/esm2022/lib/enums/collection-modes.mjs +2 -2
  34. package/esm2022/lib/enums/direction.mjs +1 -1
  35. package/esm2022/lib/enums/directions.mjs +2 -2
  36. package/esm2022/lib/enums/focus-alignments.mjs +2 -2
  37. package/esm2022/lib/enums/index.mjs +3 -2
  38. package/esm2022/lib/enums/method-for-selecting-types.mjs +2 -2
  39. package/esm2022/lib/enums/method-for-selecting.mjs +1 -1
  40. package/esm2022/lib/enums/methods-for-selecting.mjs +2 -2
  41. package/esm2022/lib/enums/snapping-method.mjs +1 -1
  42. package/esm2022/lib/enums/snapping-methods.mjs +6 -2
  43. package/esm2022/lib/enums/text-direction.mjs +2 -0
  44. package/esm2022/lib/enums/text-directions.mjs +14 -0
  45. package/esm2022/lib/models/base-virtual-list-item-component.mjs +2 -2
  46. package/esm2022/lib/models/collection.model.mjs +1 -1
  47. package/esm2022/lib/models/display-object-config.model.mjs +1 -1
  48. package/esm2022/lib/models/display-object-measures.model.mjs +1 -1
  49. package/esm2022/lib/models/index.mjs +1 -1
  50. package/esm2022/lib/models/item-config-map.model.mjs +1 -1
  51. package/esm2022/lib/models/item.model.mjs +1 -1
  52. package/esm2022/lib/models/render-collection.model.mjs +1 -1
  53. package/esm2022/lib/models/render-item-config.model.mjs +1 -1
  54. package/esm2022/lib/models/render-item-measures.model.mjs +3 -0
  55. package/esm2022/lib/models/render-item.model.mjs +1 -1
  56. package/esm2022/lib/models/scroll-event.model.mjs +1 -1
  57. package/esm2022/lib/models/scroll-options.model.mjs +1 -1
  58. package/esm2022/lib/ng-virtual-list.component.mjs +868 -242
  59. package/esm2022/lib/ng-virtual-list.module.mjs +8 -6
  60. package/esm2022/lib/ng-virtual-list.service.mjs +39 -9
  61. package/esm2022/lib/types/color.mjs +2 -0
  62. package/esm2022/lib/types/focus-alignment.mjs +1 -1
  63. package/esm2022/lib/types/gradient-color-position.mjs +2 -0
  64. package/esm2022/lib/types/gradient-color-positions.mjs +2 -0
  65. package/esm2022/lib/types/gradient-color.mjs +2 -0
  66. package/esm2022/lib/types/id.mjs +1 -1
  67. package/esm2022/lib/types/index.mjs +1 -1
  68. package/esm2022/lib/types/rect.mjs +1 -1
  69. package/esm2022/lib/types/rounded-corner.mjs +2 -0
  70. package/esm2022/lib/types/scrollbar-theme.mjs +2 -0
  71. package/esm2022/lib/types/size.mjs +1 -1
  72. package/esm2022/lib/utils/browser.mjs +9 -2
  73. package/esm2022/lib/utils/buffer-interpolation.mjs +6 -4
  74. package/esm2022/lib/utils/cache-map.mjs +154 -0
  75. package/esm2022/lib/utils/cmap.mjs +34 -0
  76. package/esm2022/lib/utils/debounce.mjs +2 -2
  77. package/esm2022/lib/utils/event-emitter.mjs +105 -0
  78. package/esm2022/lib/utils/get-shape-min-size.mjs +13 -0
  79. package/esm2022/lib/utils/index.mjs +3 -3
  80. package/esm2022/lib/utils/is-collection-mode.mjs +15 -0
  81. package/esm2022/lib/utils/is-direction.mjs +15 -0
  82. package/esm2022/lib/utils/is-method-for-selecting.mjs +18 -0
  83. package/esm2022/lib/utils/object.mjs +1 -1
  84. package/esm2022/lib/utils/scroll-event.mjs +45 -0
  85. package/esm2022/lib/utils/snapping-method.mjs +2 -2
  86. package/esm2022/lib/utils/toggle-class-name.mjs +15 -0
  87. package/esm2022/lib/utils/track-box.mjs +968 -0
  88. package/esm2022/lib/utils/tracker.mjs +38 -10
  89. package/esm2022/public-api.mjs +2 -2
  90. package/fesm2022/ng-virtual-list.mjs +3063 -552
  91. package/fesm2022/ng-virtual-list.mjs.map +1 -1
  92. package/lib/components/{ng-virtual-list-item.component.d.ts → list-item/ng-virtual-list-item.component.d.ts} +39 -13
  93. package/lib/components/list-item/ng-virtual-list-item.module.d.ts +9 -0
  94. package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +101 -0
  95. package/lib/components/ng-scroll-bar/ng-scroll-bar.module.d.ts +9 -0
  96. package/lib/components/scroller/enums/index.d.ts +4 -0
  97. package/lib/components/scroller/enums/scroller-direction.d.ts +4 -0
  98. package/lib/components/scroller/enums/scroller-directions.d.ts +2 -0
  99. package/lib/components/scroller/ng-scroller.component.d.ts +157 -0
  100. package/lib/components/scroller/ng-scroller.module.d.ts +10 -0
  101. package/lib/components/scroller/types/easing.d.ts +1 -0
  102. package/lib/components/scroller/types/index.d.ts +2 -0
  103. package/lib/components/scroller/utils/ease.d.ts +2 -0
  104. package/lib/components/scroller/utils/index.d.ts +3 -0
  105. package/lib/components/scroller/utils/scroll-box.d.ts +39 -0
  106. package/lib/components/substrate/enums/index.d.ts +3 -0
  107. package/lib/components/substrate/enums/substrate-modes.d.ts +13 -0
  108. package/lib/components/substrate/enums/substrate-styles.d.ts +12 -0
  109. package/lib/components/substrate/index.d.ts +7 -0
  110. package/lib/components/substrate/substrate.component.d.ts +91 -0
  111. package/lib/components/substrate/substrate.module.d.ts +8 -0
  112. package/lib/components/substrate/types/index.d.ts +3 -0
  113. package/lib/components/substrate/types/substrate-mode.d.ts +10 -0
  114. package/lib/components/substrate/types/substrate-style.d.ts +10 -0
  115. package/lib/const/index.d.ts +32 -2
  116. package/lib/directives/index.d.ts +3 -0
  117. package/lib/directives/item-click/item-click.directive.d.ts +22 -0
  118. package/lib/directives/item-click/item-click.module.d.ts +8 -0
  119. package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +26 -0
  120. package/lib/directives/locale-sensitive/locale-sensitive.module.d.ts +8 -0
  121. package/lib/enums/collection-mode.d.ts +1 -1
  122. package/lib/enums/collection-modes.d.ts +1 -1
  123. package/lib/enums/direction.d.ts +1 -1
  124. package/lib/enums/directions.d.ts +1 -1
  125. package/lib/enums/focus-alignments.d.ts +1 -1
  126. package/lib/enums/index.d.ts +4 -2
  127. package/lib/enums/method-for-selecting-types.d.ts +1 -1
  128. package/lib/enums/method-for-selecting.d.ts +1 -1
  129. package/lib/enums/methods-for-selecting.d.ts +1 -1
  130. package/lib/enums/snapping-method.d.ts +2 -2
  131. package/lib/enums/snapping-methods.d.ts +6 -2
  132. package/lib/enums/text-direction.d.ts +10 -0
  133. package/lib/enums/text-directions.d.ts +12 -0
  134. package/lib/models/base-virtual-list-item-component.d.ts +1 -3
  135. package/lib/models/collection.model.d.ts +1 -1
  136. package/lib/models/display-object-config.model.d.ts +1 -1
  137. package/lib/models/display-object-measures.model.d.ts +37 -1
  138. package/lib/models/index.d.ts +2 -2
  139. package/lib/models/item-config-map.model.d.ts +20 -19
  140. package/lib/models/item.model.d.ts +2 -6
  141. package/lib/models/render-collection.model.d.ts +1 -1
  142. package/lib/models/render-item-config.model.d.ts +1 -2
  143. package/lib/models/render-item-measures.model.d.ts +49 -0
  144. package/lib/models/render-item.model.d.ts +11 -8
  145. package/lib/models/scroll-event.model.d.ts +5 -1
  146. package/lib/models/scroll-options.model.d.ts +1 -1
  147. package/lib/ng-virtual-list.component.d.ts +128 -21
  148. package/lib/ng-virtual-list.module.d.ts +5 -3
  149. package/lib/ng-virtual-list.service.d.ts +23 -4
  150. package/lib/types/color.d.ts +7 -0
  151. package/lib/types/focus-alignment.d.ts +1 -1
  152. package/lib/types/gradient-color-position.d.ts +7 -0
  153. package/lib/types/gradient-color-positions.d.ts +8 -0
  154. package/lib/types/gradient-color.d.ts +8 -0
  155. package/lib/types/id.d.ts +1 -1
  156. package/lib/types/index.d.ts +4 -1
  157. package/lib/types/rect.d.ts +1 -1
  158. package/lib/types/rounded-corner.d.ts +7 -0
  159. package/lib/types/scrollbar-theme.d.ts +17 -0
  160. package/lib/types/size.d.ts +1 -1
  161. package/lib/utils/browser.d.ts +6 -0
  162. package/lib/utils/{cacheMap.d.ts → cache-map.d.ts} +12 -16
  163. package/lib/utils/cmap.d.ts +16 -0
  164. package/lib/utils/debounce.d.ts +1 -1
  165. package/lib/utils/{eventEmitter.d.ts → event-emitter.d.ts} +4 -2
  166. package/lib/utils/get-shape-min-size.d.ts +8 -0
  167. package/lib/utils/index.d.ts +3 -3
  168. package/lib/utils/{isCollectionMode.d.ts → is-collection-mode.d.ts} +2 -2
  169. package/lib/utils/{isDirection.d.ts → is-direction.d.ts} +2 -2
  170. package/lib/utils/{isMethodForSelecting.d.ts → is-method-for-selecting.d.ts} +2 -2
  171. package/lib/utils/object.d.ts +1 -1
  172. package/lib/utils/{scrollEvent.d.ts → scroll-event.d.ts} +6 -2
  173. package/lib/utils/{toggleClassName.d.ts → toggle-class-name.d.ts} +2 -2
  174. package/lib/utils/{trackBox.d.ts → track-box.d.ts} +61 -55
  175. package/lib/utils/tracker.d.ts +8 -4
  176. package/package.json +4 -3
  177. package/public-api.d.ts +1 -1
  178. package/esm2022/lib/components/ng-virtual-list-item.component.mjs +0 -363
  179. package/esm2022/lib/utils/cacheMap.mjs +0 -168
  180. package/esm2022/lib/utils/eventEmitter.mjs +0 -105
  181. package/esm2022/lib/utils/isCollectionMode.mjs +0 -15
  182. package/esm2022/lib/utils/isDirection.mjs +0 -15
  183. package/esm2022/lib/utils/isMethodForSelecting.mjs +0 -18
  184. package/esm2022/lib/utils/scrollEvent.mjs +0 -42
  185. package/esm2022/lib/utils/toggleClassName.mjs +0 -15
  186. package/esm2022/lib/utils/trackBox.mjs +0 -822
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 djonnyx (Evgenii Grebennikov)
3
+ Copyright (c) 2026 djonnyx (Evgenii Alexandrovich Grebennikov)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -4,6 +4,10 @@
4
4
 
5
5
  Flexible, and actively maintained Angular library that excels with high-performance, feature-rich virtualized lists—including grouping, sticky headers, snapping, animations, collapsing group elements, single and multiple selection of elements and both scroll directions. Whether you're rendering millions of items or building interactive list components, it delivers scalability and customization. Angular (14–20) compatibility.
6
6
 
7
+ The main advantage of this solution is the elimination of the "empty spaces" effect during fast scrolling, which occurs in the classic implementation of virtualized lists. Visualization is as close as possible to native lists.
8
+
9
+ Works correctly in all browsers and platforms.
10
+
7
11
  <img width="1033" height="171" alt="logo" src="https://github.com/user-attachments/assets/b559cfde-405a-4361-b71b-6715478d997d" />
8
12
 
9
13
  <b>Angular version 16.X.X</b>.
@@ -12,8 +16,8 @@ Flexible, and actively maintained Angular library that excels with high-performa
12
16
  ![npm downloads](https://img.shields.io/npm/dm/ng-virtual-list)
13
17
  ![npm total downloads](https://img.shields.io/npm/dt/ng-virtual-list)
14
18
 
15
- [Live Demo](https://ng-virtual-list-chat-demo.eugene-grebennikov.pro/)
16
- [(Code)](https://github.com/DjonnyX/ng-virtual-list-demo)
19
+ [Live Demo](https://chat-demo.eugene-grebennikov.pro/)
20
+ [(Code)](https://github.com/DjonnyX/ng-virtual-list-chat-demo)
17
21
 
18
22
  [Live Examples (Storybook)](https://ng-virtual-list-examples.eugene-grebennikov.pro/)
19
23
 
@@ -83,6 +87,8 @@ Collapsing groups
83
87
 
84
88
  Support for element animation
85
89
 
90
+ Implemented a virtual scroll handler, ensuring stable scrolling on all platforms
91
+
86
92
  <br/>
87
93
 
88
94
  ## 📦 Installation
@@ -115,7 +121,7 @@ items = Array.from({ length: 100000 }, (_, i) => ({ id: i, name: `Item #${i}` })
115
121
 
116
122
  Template:
117
123
  ```html
118
- <ng-virtual-list class="list" direction="horizontal" [items]="horizontalItems" [bufferSize]="5" [maxBufferSize]="20"
124
+ <ng-virtual-list class="list" direction="horizontal" [items]="horizontalItems" [bufferSize]="1" [maxBufferSize]="5"
119
125
  [itemRenderer]="horizontalItemRenderer" [itemSize]="64" methodForSelecting="select"
120
126
  [selectedIds]="2" (onSelect)="onSelect($event)" (onItemClick)="onItemClick($event)"></ng-virtual-list>
121
127
 
@@ -164,7 +170,7 @@ export class AppComponent {
164
170
  Template:
165
171
  ```html
166
172
  <ng-virtual-list class="list" direction="horizontal" [items]="horizontalGroupItems" [itemRenderer]="horizontalGroupItemRenderer"
167
- [bufferSize]="5" [maxBufferSize]="20" [itemConfigMap]="horizontalGroupItemConfigMap" [itemSize]="54" [snap]="true"
173
+ [bufferSize]="1" [maxBufferSize]="5" [itemConfigMap]="horizontalGroupItemConfigMap" [itemSize]="54" [snap]="true"
168
174
  methodForSelecting="multi-select" [selectedIds]="[3,2]" (onSelect)="onSelect($event)" (onItemClick)="onItemClick($event)"></ng-virtual-list>
169
175
 
170
176
  <ng-template #horizontalGroupItemRenderer let-data="data" let-config="config">
@@ -231,7 +237,7 @@ export class AppComponent {
231
237
 
232
238
  Template:
233
239
  ```html
234
- <ng-virtual-list class="list simple" [items]="items" [bufferSize]="5" [maxBufferSize]="20" [itemRenderer]="itemRenderer"
240
+ <ng-virtual-list class="list simple" [items]="items" [bufferSize]="1" [maxBufferSize]="5" [itemRenderer]="itemRenderer"
235
241
  [itemSize]="40"></ng-virtual-list>
236
242
 
237
243
  <ng-template #itemRenderer let-data="data">
@@ -270,7 +276,7 @@ export class AppComponent {
270
276
 
271
277
  Template:
272
278
  ```html
273
- <ng-virtual-list class="list simple" [items]="groupItems" [bufferSize]="5" [maxBufferSize]="20" [itemRenderer]="groupItemRenderer"
279
+ <ng-virtual-list class="list simple" [items]="groupItems" [bufferSize]="1" [maxBufferSize]="5" [itemRenderer]="groupItemRenderer"
274
280
  [itemConfigMap]="groupItemConfigMap" [itemSize]="40" [snap]="false"></ng-virtual-list>
275
281
 
276
282
  <ng-template #groupItemRenderer let-data="data">
@@ -290,7 +296,7 @@ Template:
290
296
 
291
297
  Template (with snapping):
292
298
  ```html
293
- <ng-virtual-list class="list simple" [items]="groupItems" [bufferSize]="5" [maxBufferSize]="20" [itemRenderer]="groupItemRenderer"
299
+ <ng-virtual-list class="list simple" [items]="groupItems" [bufferSize]="1" [maxBufferSize]="5" [itemRenderer]="groupItemRenderer"
294
300
  [itemConfigMap]="groupItemConfigMap" [itemSize]="40" [snap]="true"></ng-virtual-list>
295
301
 
296
302
  <ng-template #groupItemRenderer let-data="data">
@@ -401,7 +407,7 @@ Virtual list with height-adjustable elements.
401
407
 
402
408
  Template
403
409
  ```html
404
- <ng-virtual-list #dynamicList class="list" [items]="groupDynamicItems" [itemRenderer]="groupItemRenderer" [bufferSize]="5" [maxBufferSize]="20"
410
+ <ng-virtual-list #dynamicList class="list" [items]="groupDynamicItems" [itemRenderer]="groupItemRenderer" [bufferSize]="1" [maxBufferSize]="5"
405
411
  [itemConfigMap]="groupDynamicItemConfigMap" [dynamicSize]="true" [snap]="true"></ng-virtual-list>
406
412
 
407
413
  <ng-template #groupItemRenderer let-data="data">
@@ -472,6 +478,45 @@ export class AppComponent {
472
478
 
473
479
  ## 🖼️ Stylization
474
480
 
481
+ - Scrollbar theme
482
+ ```ts
483
+ import { NgVirtualListComponent, GradientColor, RoundedCorner, ScrollBarTheme } from 'ng-virtual-list';
484
+
485
+ const X_LITE_BLUE_PLASMA_GRADIENT: GradientColor = ["rgba(133, 142, 255, 0)", "rgb(0, 133, 160)"],
486
+ ROUND_CORNER: RoundedCorner = [3, 3, 3, 3],
487
+ SCROLLBAR_GRADIENT: ScrollBarTheme = {
488
+ fill: ["rgba(51, 0, 97, 1)", "rgba(73, 0, 97, 1)"],
489
+ strokeGradientColor: X_LITE_BLUE_PLASMA_GRADIENT,
490
+ strokeAnimationDuration: 1000,
491
+ thickness: 6,
492
+ roundCorner: ROUND_CORNER,
493
+ rippleColor: 'rgba(255,255,255,0.5)',
494
+ };
495
+
496
+ @Component({
497
+ selector: 'app-root',
498
+ imports: [FormsModule, NgVirtualListComponent],
499
+ templateUrl: './app.component.html',
500
+ styleUrl: './app.component.scss'
501
+ })
502
+ export class AppComponent {
503
+ scrollbarTheme = SCROLLBAR_GRADIENT;
504
+
505
+ items = Array.from({ length: 100000 }, (_, i) => ({ id: i, name: `Item #${i}` }));
506
+ }
507
+
508
+ ```
509
+
510
+ ```html
511
+ <ng-virtual-list [scrollbarTheme]="scrollbarTheme" [items]="items" [itemRenderer]="itemRenderer"></ng-virtual-list>
512
+
513
+ <ng-template #horizontalItemRenderer let-data="data" let-config="config">
514
+ <div *ngIf="data" [ngClass]="{'list__h-container': true, 'selected': config.selected}">
515
+ <span>{{data.name}}</span>
516
+ </div>
517
+ </ng-template>
518
+ ```
519
+
475
520
  List items are encapsulated in shadowDOM, so to override default styles you need to use ::part access
476
521
 
477
522
  - Customize a scroll area of list
@@ -574,7 +619,7 @@ Inputs
574
619
  | collectionMode | [CollectionMode? = 'normal'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/collection-mode.ts) | Determines the action modes for collection elements. Default value is `normal`. |
575
620
  | selectByClick | boolean? = true | If `false`, the element is selected using the config.select method passed to the template; if `true`, the element is selected by clicking on it. The default value is `true`. |
576
621
  | snap | boolean? = false | Determines whether elements will snap. Default value is "false". |
577
- | snappingMethod | [SnappingMethod? = 'normal'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts) | Snapping method. 'normal' - Normal group rendering. 'advanced' - The group is rendered on a transparent background. List items below the group are not rendered. |
622
+ | snappingMethod | [SnappingMethod? = 'normal'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/snapping-method.ts) | Snapping method. 'normal' - Normal group rendering. 'advanced' - The group is rendered on a transparent background. 'chat' - The group is rendered on a background. List items below the group are not rendered. |
578
623
  | direction | [Direction? = 'vertical'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/direction.ts) | Determines the direction in which elements are placed. Default value is "vertical". |
579
624
  | dynamicSize | boolean? = false | If true then the items in the list can have different sizes and the itemSize property is ignored. If false then the items in the list have a fixed size specified by the itemSize property. The default value is false. |
580
625
  | enabledBufferOptimization | boolean? = true | Experimental! Enables buffer optimization. Can only be used if items in the collection are not added or updated. |
@@ -582,6 +627,16 @@ Inputs
582
627
  | selectedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> \| [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts) \| undefined | Sets the selected items. |
583
628
  | collapsedIds | Array<[Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts)> | Sets the collapsed items. |
584
629
  | screenReaderMessage | string? = "Showing items $1 to $2" | Message for screen reader. The message format is: "some text `$1` some text `$2`", where `$1` is the number of the first element of the screen collection, `$2` is the number of the last element of the screen collection. |
630
+ | langTextDir | [TextDirection? = 'ltr'](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/enums/text-direction.ts) | A string indicating the direction of text for the locale. Can be either "ltr" (left-to-right) or "rtl" (right-to-left). |
631
+ | loading | boolean? = false | If `true`, the scrollBar goes into loading state. The default value is `false`. |
632
+ | scrollbarTheme | [ScrollBarTheme?](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/scrollbar-theme.ts) | Scrollbar theme. |
633
+ | clickDistance | number? = 40 | The maximum scroll distance at which a click event is triggered. |
634
+ | waitForPreparation | boolean? = true | If true, it will wait until the list items are fully prepared before displaying them.. The default value is `true`. |
635
+ | scrollStartOffset | number? = 0 | Sets the scroll start offset value; Default value is "0". |
636
+ | scrollEndOffset | number? = 0 | Sets the scroll end offset value; Default value is "0". |
637
+ | snapScrollToBottom | boolean? = false | Determines whether the scroll will be anchored to the end of the list at startup.. Default value is "false". |
638
+ | snapToEndTransitionInstantOffset | number? = 0 | Sets the offset value; if the scroll area value is exceeded, the scroll animation will be disabled. Default value is "0". |
639
+ | scrollbarMinSize | number? = 80 | Minimum scrollbar size. |
585
640
 
586
641
  <br/>
587
642
 
@@ -598,7 +653,6 @@ Outputs
598
653
  | onScrollReachStart | void | Fires when the scroll reaches the start. |
599
654
  | onScrollReachEnd | void | Fires when the scroll reaches the end. |
600
655
 
601
-
602
656
  <br/>
603
657
 
604
658
  Methods
@@ -630,16 +684,6 @@ Properties
630
684
 
631
685
  <br/>
632
686
 
633
- Methods
634
-
635
- | Method | Type | Description |
636
- |--|--|--|
637
- | scrollTo | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior: ScrollBehavior = 'auto') => number | The method scrolls the list to the element with the given id and returns the value of the scrolled area. Behavior accepts the values ​​"auto", "instant" and "smooth". |
638
- | scrollToEnd | (behavior?: ScrollBehavior) => void | Scrolls the scroll area to the desired element with the specified ID. |
639
- | getItemBounds | (id: [Id](https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/types/id.ts), behavior?: ScrollBehavior) => void | Returns the bounds of an element with a given id |
640
-
641
- <br/>
642
-
643
687
  ## 🤝 Contributing
644
688
 
645
689
  PRs and feature requests are welcome!
@@ -652,7 +696,7 @@ Try it out, star ⭐ the repo, and let us know what you’re building.
652
696
 
653
697
  MIT License
654
698
 
655
- Copyright (c) 2025 djonnyx (Evgenii Grebennikov)
699
+ Copyright (c) 2026 djonnyx (Evgenii Alexandrovich Grebennikov)
656
700
 
657
701
  Permission is hereby granted, free of charge, to any person obtaining a copy
658
702
  of this software and associated documentation files (the "Software"), to deal