Preview Component
Overview
This model defines the contract for custom drag preview components. It ensures type-safety when passing draggable data (such as Drag Source or DnD Item) to a preview UI component.
PreviewComponent
import { BlockTreeItem, TDraggableData } from 'ngx-builder-dnd';
export interface PreviewComponent<T extends DragSourceData<any> | DndTreeItem> {
/**
* The draggable data for this preview.
* This must be provided by the library.
*/
data: T;
}
Example
import { Component, Input } from '@angular/core';
import { PreviewComponent, DndTreeItem } from 'ngx-builder-dnd';
@Component({
selector: 'app-item-preview',
template: `<div class="preview">{{ data.type }}</div>`,
})
export class ItemPreviewComponent implements PreviewComponent<DndTreeItem> {
@Input() data!: DndTreeItem;
}
Here, ItemPreviewComponent implements PreviewComponent and strongly types its data input.
This guarantees that only valid draggable data objects (like DndTreeItem) are passed to the preview UI.
See Also
- Drag Preview Component - Renders a preview of the dragged item.
- DnD Item Model - Represents an item in the drag-and-drop system.
- Drag Source Model - Describes the data of a drag source.