@hugogo/angular-grid-layout-hugo
Version:
Grid Layout with draggable and resizable items for Angular
103 lines (102 loc) • 5.23 kB
TypeScript
import { AfterContentChecked, AfterContentInit, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, QueryList, Renderer2, SimpleChanges } from '@angular/core';
import { NumberInput } from './coercion/number-property';
import { KtdGridItemComponent } from './grid-item/grid-item.component';
import { KtdGridCfg, KtdGridCompactType, KtdGridItemRenderData, KtdGridLayout, KtdGridLayoutItem } from './grid.definitions';
import { KtdDictionary } from '../types';
import { KtdGridService } from './grid.service';
import { BooleanInput } from './coercion/boolean-property';
interface KtdDragResizeEvent {
layout: KtdGridLayout;
layoutItem: KtdGridLayoutItem;
gridItemRef: KtdGridItemComponent;
}
export declare type KtdDragStart = KtdDragResizeEvent;
export declare type KtdResizeStart = KtdDragResizeEvent;
export declare type KtdDragEnd = KtdDragResizeEvent;
export declare type KtdResizeEnd = KtdDragResizeEvent;
export declare function parseRenderItemToPixels(renderItem: KtdGridItemRenderData<number>): KtdGridItemRenderData<string>;
export declare function __gridItemGetRenderDataFactoryFunc(gridCmp: KtdGridComponent): (id: string) => KtdGridItemRenderData<string>;
export declare function ktdGridItemGetRenderDataFactoryFunc(gridCmp: KtdGridComponent): (id: string) => KtdGridItemRenderData<string>;
export declare class KtdGridComponent implements OnChanges, AfterContentInit, AfterContentChecked, OnDestroy {
private gridService;
private elementRef;
private renderer;
private ngZone;
/** Query list of grid items that are being rendered. */
_gridItems: QueryList<KtdGridItemComponent>;
/** Emits when layout change */
layoutUpdated: EventEmitter<KtdGridLayout>;
/** Emits when drag starts */
dragStarted: EventEmitter<KtdDragStart>;
/** Emits when resize starts */
resizeStarted: EventEmitter<KtdResizeStart>;
/** Emits when drag ends */
dragEnded: EventEmitter<KtdDragEnd>;
/** Emits when resize ends */
resizeEnded: EventEmitter<KtdResizeEnd>;
/**
* Parent element that contains the scroll. If an string is provided it would search that element by id on the dom.
* If no data provided or null autoscroll is not performed.
*/
scrollableParent: HTMLElement | Document | string | null;
/** Whether or not to update the internal layout when some dependent property change. */
get compactOnPropsChange(): boolean;
set compactOnPropsChange(value: boolean);
private _compactOnPropsChange;
/** If true, grid items won't change position when being dragged over. Handy when using no compaction */
get preventCollision(): boolean;
set preventCollision(value: boolean);
private _preventCollision;
/** Number of CSS pixels that would be scrolled on each 'tick' when auto scroll is performed. */
get scrollSpeed(): number;
set scrollSpeed(value: number);
private _scrollSpeed;
/** Type of compaction that will be applied to the layout (vertical, horizontal or free). Defaults to 'vertical' */
get compactType(): KtdGridCompactType;
set compactType(val: KtdGridCompactType);
private _compactType;
/** Row height in css pixels */
get rowHeight(): number;
set rowHeight(val: number);
private _rowHeight;
/** Number of columns */
get cols(): number;
set cols(val: number);
private _cols;
/** Layout of the grid. Array of all the grid items with its 'id' and position on the grid. */
get layout(): KtdGridLayout;
set layout(layout: KtdGridLayout);
private _layout;
get config(): KtdGridCfg;
/** Total height of the grid */
private _height;
private _gridItemsRenderData;
private subscriptions;
constructor(gridService: KtdGridService, elementRef: ElementRef, renderer: Renderer2, ngZone: NgZone);
ngOnChanges(changes: SimpleChanges): void;
ngAfterContentInit(): void;
ngAfterContentChecked(): void;
resize(): void;
ngOnDestroy(): void;
compactLayout(): void;
getItemsRenderData(): KtdDictionary<KtdGridItemRenderData<number>>;
getItemRenderData(itemId: string): KtdGridItemRenderData<number>;
calculateRenderData(): void;
render(): void;
private updateGridItemsStyles;
private initSubscriptions;
/**
* Perform a general grid drag action, from start to end. A general grid drag action basically includes creating the placeholder element and adding
* some class animations. calcNewStateFunc needs to be provided in order to calculate the new state of the layout.
* @param gridItem that is been dragged
* @param pointerDownEvent event (mousedown or touchdown) where the user initiated the drag
* @param calcNewStateFunc function that return the new layout state and the drag element position
*/
private performDragSequence$;
static ngAcceptInputType_cols: NumberInput;
static ngAcceptInputType_rowHeight: NumberInput;
static ngAcceptInputType_scrollSpeed: NumberInput;
static ngAcceptInputType_compactOnPropsChange: BooleanInput;
static ngAcceptInputType_preventCollision: BooleanInput;
}
export {};