ng-virtual-list 19.7.24 → 19.7.25
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.
|
@@ -2231,11 +2231,25 @@ const validateScrollIteration = (value) => {
|
|
|
2231
2231
|
throw Error('The "align" parameter must have the value `none`, `start`, `center` or `end`.');
|
|
2232
2232
|
}
|
|
2233
2233
|
};
|
|
2234
|
-
const formatScreenReaderMessage = (items, messagePattern) => {
|
|
2234
|
+
const formatScreenReaderMessage = (items, messagePattern, scrollSize, isVertical, bounds) => {
|
|
2235
2235
|
if (!messagePattern) {
|
|
2236
2236
|
return '';
|
|
2237
2237
|
}
|
|
2238
|
-
const
|
|
2238
|
+
const list = items ?? [], size = isVertical ? bounds.height : bounds.width;
|
|
2239
|
+
let start = Number.NaN, end = Number.NaN, prevItem;
|
|
2240
|
+
for (let i = 0, l = list.length; i < l; i++) {
|
|
2241
|
+
const item = list[i], position = isVertical ? item.measures.y : item.measures.x, itemSize = isVertical ? item.measures.height : item.measures.width;
|
|
2242
|
+
if (((position + itemSize) >= scrollSize) && Number.isNaN(start)) {
|
|
2243
|
+
start = item.index + 1;
|
|
2244
|
+
}
|
|
2245
|
+
if ((position >= (scrollSize + size)) && Number.isNaN(end) && prevItem) {
|
|
2246
|
+
end = prevItem.index + 1;
|
|
2247
|
+
}
|
|
2248
|
+
prevItem = item;
|
|
2249
|
+
}
|
|
2250
|
+
if (Number.isNaN(start) || Number.isNaN(end)) {
|
|
2251
|
+
return '';
|
|
2252
|
+
}
|
|
2239
2253
|
let formatted = messagePattern ?? '';
|
|
2240
2254
|
formatted = formatted.replace('$1', `${start}`);
|
|
2241
2255
|
formatted = formatted.replace('$2', `${end}`);
|
|
@@ -2822,8 +2836,8 @@ class NgVirtualListComponent {
|
|
|
2822
2836
|
this._trackBox.trackingPropertyName = v;
|
|
2823
2837
|
})).subscribe();
|
|
2824
2838
|
const $bounds = toObservable(this._bounds).pipe(filter(b => !!b)), $items = toObservable(this.items).pipe(map(i => !i ? [] : i)), $scrollSize = toObservable(this._scrollSize), $itemSize = toObservable(this.itemSize).pipe(map(v => v <= 0 ? DEFAULT_ITEM_SIZE : v)), $bufferSize = toObservable(this.bufferSize).pipe(map(v => v < 0 ? DEFAULT_BUFFER_SIZE : v)), $maxBufferSize = toObservable(this.maxBufferSize).pipe(map(v => v < 0 ? DEFAULT_BUFFER_SIZE : v)), $itemConfigMap = toObservable(this.itemConfigMap).pipe(map(v => !v ? {} : v)), $snap = toObservable(this.snap), $isVertical = toObservable(this.direction).pipe(map(v => this.getIsVertical(v || DEFAULT_DIRECTION))), $isLazy = toObservable(this.collectionMode).pipe(map(v => this.getIsLazy(v || DEFAULT_COLLECTION_MODE))), $dynamicSize = toObservable(this.dynamicSize), $enabledBufferOptimization = toObservable(this.enabledBufferOptimization), $snappingMethod = toObservable(this.snappingMethod).pipe(map(v => this.getIsSnappingMethodAdvanced(v || DEFAULT_SNAPPING_METHOD))), $methodForSelecting = toObservable(this.methodForSelecting), $selectedIds = toObservable(this.selectedIds), $collapsedIds = toObservable(this.collapsedIds).pipe(map(v => Array.isArray(v) ? v : [])), $collapsedItemIds = toObservable(this._collapsedItemIds).pipe(map(v => Array.isArray(v) ? v : [])), $actualItems = toObservable(this._actualItems), $screenReaderMessage = toObservable(this.screenReaderMessage), $displayItems = this._service.$displayItems, $cacheVersion = toObservable(this._cacheVersion);
|
|
2825
|
-
combineLatest([$displayItems, $screenReaderMessage]).pipe(takeUntilDestroyed(), distinctUntilChanged(), tap(([items, screenReaderMessage]) => {
|
|
2826
|
-
this.screenReaderFormattedMessage.set(formatScreenReaderMessage(items, screenReaderMessage));
|
|
2839
|
+
combineLatest([$displayItems, $screenReaderMessage, $isVertical, $scrollSize, $bounds]).pipe(takeUntilDestroyed(), distinctUntilChanged(), tap(([items, screenReaderMessage, isVertical, scrollSize, bounds]) => {
|
|
2840
|
+
this.screenReaderFormattedMessage.set(formatScreenReaderMessage(items, screenReaderMessage, scrollSize, isVertical, bounds));
|
|
2827
2841
|
})).subscribe();
|
|
2828
2842
|
$isLazy.pipe(takeUntilDestroyed(), tap(v => {
|
|
2829
2843
|
this._trackBox.isLazy = v;
|