Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,10 @@ export class ColumnVirtualizerDynamic {

count = this.sentences.length

#measureItems = effect(
() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
{ allowSignalWrites: true },
#measureItems = effect(() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
)

virtualizer = injectVirtualizer(() => ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,9 @@ export class GridVirtualizerDynamic {

virtualRows = viewChildren<ElementRef<HTMLDivElement>>('virtualRow')

#measureItems = effect(
() =>
this.virtualRows().forEach((el) => {
this.rowVirtualizer.measureElement(el.nativeElement)
}),
{ allowSignalWrites: true },
#measureItems = effect(() =>
this.virtualRows().forEach((el) => {
this.rowVirtualizer.measureElement(el.nativeElement)
}),
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,10 @@ export class RowVirtualizerDynamicWindow {

count = this.sentences.length

#measureItems = effect(
() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
{ allowSignalWrites: true },
#measureItems = effect(() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
)

virtualizer = injectWindowVirtualizer(() => ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,10 @@ export class RowVirtualizerDynamic {

count = this.sentences.length

#measureItems = effect(
() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
{ allowSignalWrites: true },
#measureItems = effect(() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
)

virtualizer = injectVirtualizer(() => ({
Expand Down
35 changes: 16 additions & 19 deletions examples/angular/infinite-scroll/src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,25 +103,22 @@ export class InfiniteScrollComponent {
overscan: 5,
}))

#fetchNextPage = effect(
() => {
const lastItem =
this.virtualizer.getVirtualItems()[
this.virtualizer.getVirtualItems().length - 1
]
if (!lastItem) {
return
}
if (
lastItem.index >= this.allRows().length - 1 &&
this.query.hasNextPage() &&
!this.query.isFetchingNextPage()
) {
this.query.fetchNextPage()
}
},
{ allowSignalWrites: true },
)
#fetchNextPage = effect(() => {
const lastItem =
this.virtualizer.getVirtualItems()[
this.virtualizer.getVirtualItems().length - 1
]
if (!lastItem) {
return
}
if (
lastItem.index >= this.allRows().length - 1 &&
this.query.hasNextPage() &&
!this.query.isFetchingNextPage()
) {
this.query.fetchNextPage()
}
})
}

@Component({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,10 @@ export class ColumnVirtualizerPadding {

virtualItems = viewChildren<ElementRef<HTMLDivElement>>('virtualItem')

#measureItems = effect(
() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
{ allowSignalWrites: true },
#measureItems = effect(() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
)

virtualizer = injectVirtualizer(() => ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,11 @@ export class GridVirtualizerPadding {

virtualItems = viewChildren<ElementRef<HTMLDivElement>>('virtualItem')

#measureItems = effect(
() =>
this.virtualItems().forEach((el) => {
this.rowVirtualizer.measureElement(el.nativeElement)
this.columnVirtualizer.measureElement(el.nativeElement)
}),
{ allowSignalWrites: true },
#measureItems = effect(() =>
this.virtualItems().forEach((el) => {
this.rowVirtualizer.measureElement(el.nativeElement)
this.columnVirtualizer.measureElement(el.nativeElement)
}),
)

show = signal(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,10 @@ export class RowVirtualizerPadding {

virtualItems = viewChildren<ElementRef<HTMLDivElement>>('virtualItem')

#measureItems = effect(
() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
{ allowSignalWrites: true },
#measureItems = effect(() =>
this.virtualItems().forEach((el) => {
this.virtualizer.measureElement(el.nativeElement)
}),
)

virtualizer = injectVirtualizer(() => ({
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { readFile } from 'node:fs/promises'
import { resolve } from 'node:path'
import { expect, test } from '@playwright/test'
import { glob } from 'tinyglobby'

const ANGULAR_EXAMPLE_SOURCE_GLOB = 'examples/angular/*/src/**/*.ts'
const DEPRECATED_EFFECT_OPTION = 'allowSignalWrites'
const DEPRECATED_EFFECT_OPTION_PATTERN = new RegExp(
`\\b${DEPRECATED_EFFECT_OPTION}\\s*:\\s*true\\b`,
)
const REPO_ROOT_RELATIVE_PATH = '../../../../..'
const SOURCE_FILE_ENCODING = 'utf-8'

test('Angular examples do not pass deprecated effect options', async () => {
const repoRoot = resolve(import.meta.dirname, REPO_ROOT_RELATIVE_PATH)
const files = await glob(ANGULAR_EXAMPLE_SOURCE_GLOB, { cwd: repoRoot })

const matches: Array<string> = []

for (const file of files) {
const source = await readFile(resolve(repoRoot, file), SOURCE_FILE_ENCODING)
if (DEPRECATED_EFFECT_OPTION_PATTERN.test(source)) {
matches.push(file)
}
}

expect(matches, `${DEPRECATED_EFFECT_OPTION} is deprecated`).toEqual([])
})
Loading