@alauda-fe/common
Version:
Alauda frontend team common codes.
66 lines (65 loc) • 1.87 kB
TypeScript
import { GridItemComponent } from './components/grid-items/component';
import { CompactType } from './utils/react-grid-layout.utils';
export type GridItemDimension = 'w' | 'h' | undefined;
export type DragActionType = 'drag' | 'resize';
export type COMPACT_TYPE = 'HORIZONTAL' | 'VERTICAL' | 'FREE';
export declare const GridCompactType: Record<COMPACT_TYPE, CompactType>;
export type GridCompactType = (typeof GridCompactType)[keyof typeof GridCompactType];
export type GridLayoutItem<Extra = unknown> = {
id: string;
x: number;
y: number;
w: number;
h: number;
minW?: number;
minH?: number;
maxW?: number;
maxH?: number;
} & Extra;
export type GridLayout<Extra = unknown> = Array<GridLayoutItem<Extra>>;
export interface GridItemClientRect {
top?: number;
bottom?: number;
left?: number;
right?: number;
width?: number;
height?: number;
}
export interface GridItemDraggingInfo {
pointerDownEvent: MouseEvent;
pointerDragEvent: MouseEvent;
gridElemClientRect: GridItemClientRect;
dragElemClientRect: GridItemClientRect;
scrollDifference: {
top: number;
left: number;
};
}
export interface GridItemRenderData<T = number> {
id: string;
top: T;
left: T;
width: T;
height: T;
}
export interface GridCfg {
cols: number;
rowHeight: number;
layout: GridLayoutItem[];
preventCollision?: boolean;
gutter: number;
}
export interface DragResizeEvent {
layout: GridLayout;
layoutItem: GridLayoutItem;
gridItemRef: GridItemComponent;
}
export type DragStartEvent = DragResizeEvent;
export type ResizeStartEvent = DragResizeEvent;
export type DragEndEvent = DragResizeEvent;
export type ResizeEndEvent = DragResizeEvent;
export interface ItemResizeEvent {
width: number;
height: number;
gridItemRef: GridItemComponent;
}