Native Shell
Native Shell: AI-generated UI, native in your app, on every platform. Apps on iOS, Android, macOS, Windows and Linux, GPUI apps and web pages load signed, sandboxed TSX modules at run time and draw th
Angular drag and drop for virtual scrolling. Sortable lists and boards that stay fast with thousands of items.
Developer toolsTypeScript · SCSSGitHub @gultyayevOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Virtual Scroll with Drag'n'drop support
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Angular drag and drop for virtual scrolling. Sortable lists and boards that stay fast with thousands of items: only the visible rows are rendered, and drag and drop still works across all of them.
Documentation · Live demo · Changelog
ion-contentnpm install ngx-virtual-dnd
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
import {
DragPreviewComponent,
DraggableDirective,
DropEvent,
DroppableGroupDirective,
reorderItems,
VirtualSortableListComponent,
} from 'ngx-virtual-dnd';
interface Task {
id: string;
title: string;
}
@Component({
selector: 'app-tasks',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
VirtualSortableListComponent,
DroppableGroupDirective,
DraggableDirective,
DragPreviewComponent,
],
template: `
<div vdndGroup="tasks">
<ng-template #taskTpl let-task>
<div class="row" [vdndDraggable]="task.id">{{ task.title }}</div>
</ng-template>
<vdnd-sortable-list
droppableId="backlog"
[items]="tasks()"
[itemHeight]="48"
[containerHeight]="400"
[itemIdFn]="taskId"
[itemTemplate]="taskTpl"
(drop)="onDrop($event)"
/>
</div>
<vdnd-drag-preview />
`,
})
export class TasksComponent {
readonly tasks = signal<Task[]>(
Array.from({ length: 1000 }, (_, i) => ({ id: `task-${i + 1}`, title: `Task ${i + 1}` })),
);
readonly taskId = (task: Task): string => task.id;
onDrop(event: DropEvent): void {
reorderItems(event, this.tasks);
}
}
Every draggable and droppable needs a group (here from vdndGroup), even for a single list, and the item template must be declared inside it. The Quick start explains each part, and Core concepts lists the rules that keep a setup working.
Install a skill that teaches AI coding assistants how to integrate this library:
npx skills add gultyayev/ngx-virtual-dnd
It works with Claude Code, Cursor, Windsurf, GitHub Copilot and 40+ other agents. The docs are also published as llms.txt.
See CONTRIBUTING.md to run the demo, the docs and the tests locally.
MIT