Skip to main content
cngx-src documentation

CngxVirtualItem

DirectivePrimaryv0.1.0WCAG AA

projects/common/data/recycler/virtual-item.directive.ts

Import#

import { CngxVirtualItem } from '@cngx/common/data'

Description#

A11y atom that sets aria-setsize, aria-posinset, and data-cngx-recycle-index on each rendered virtual item. Replaces manual ARIA boilerplate.

Also provides data-cngx-recycle-index for focus tracking - consumers who don't use CngxMeasure (grid mode, uniform heights) get focus tracking for free.

Does NOT set role - the consumer decides (listitem, option, treeitem, tab).

@for (item of visibleItems(); track item.id; let i = $index) {
  <div role="listitem"
       [cngxVirtualItem]="recycler"
       [cngxVirtualItemIndex]="recycler.start() + i">
    {{ item.name }}
  </div>
}

https://cngxjs.github.io/cngx/examples/#/common/data/recycler/basic-list-fixed-item-height https://cngxjs.github.io/cngx/examples/#/common/data/recycler/content-visibility-css-only https://cngxjs.github.io/cngx/examples/#/common/data/recycler/infinite-scroll-recycler https://cngxjs.github.io/cngx/examples/#/common/data/recycler/scrolltoindex-deep-link https://cngxjs.github.io/cngx/examples/#/common/data/recycler/variable-heights-cngxmeasure https://cngxjs.github.io/cngx/examples/#/common/data/recycler/with-cngxasyncstate-skeleton-first-load

Metadata#

Host#

Index#

Inputs#

cngxVirtualItem#CngxRecycler
input()Required

The recycler instance providing ariaSetSize.

cngxVirtualItemIndex#number
input()Required

The absolute 0-based index of this item in the full dataset.

HostBindings#

BindingExpression
[attr.aria-setsize]ariaSetSize()
[attr.aria-posinset]ariaPosinset()
[attr.data-cngx-recycle-index]cngxVirtualItemIndex()