zyy-free-layout
Version:
[vue3+ts]自由拖动布局
38 lines (37 loc) • 1.85 kB
TypeScript
import { DesignWidget, LayoutOptions, PageRect, Point, SelectArea, WidgetOption } from "@/types";
import { Widget } from "./widget";
import { VNode, InjectionKey, Ref } from "vue";
import { DragService } from "./dragService";
export interface Model {
pageRect: PageRect;
newWidget: Widget | null;
widgets: Widget[];
selectedArea: SelectArea | null;
}
export declare class FreeLayoutService {
container: Ref<HTMLElement | null>;
$emit: (event: "createWidget" | "attached" | "drag-start" | "moving" | "moved" | "delete" | "widgetClick", ...args: any[]) => void;
renderWidget?: ((widget: Widget) => VNode) | undefined;
static token: InjectionKey<FreeLayoutService>;
static inject: () => FreeLayoutService | undefined;
dragService?: DragService;
options: Required<LayoutOptions>;
model: Model;
constructor(options: LayoutOptions, container: Ref<HTMLElement | null>, $emit: (event: "createWidget" | "attached" | "drag-start" | "moving" | "moved" | "delete" | "widgetClick", ...args: any[]) => void, renderWidget?: ((widget: Widget) => VNode) | undefined, dragService?: DragService);
setDragService(dragService?: DragService): void;
getRect(): PageRect;
setPosition(x?: number, y?: number): void;
setSize(width?: number, height?: number): void;
createNewWidget(option: WidgetOption, startEvent: MouseEvent): void;
deleteNewWidget(): void;
addWidget(options: DesignWidget): Widget;
getWidgets(): Widget[];
getWidget(id: string): Widget | undefined;
deleteWidget(id: string): void;
clearWidget(): void;
createSelectedArea(): void;
setSelectedWidgets(selectedArea: SelectArea): void;
getSelectedWidgets(): Widget[];
clearSelectedWidgets(): void;
mousePToPageP(mouseX: number, mouseY: number): Point;
}