vue3-free-layout
Version:
[vue3+ts]拖动布局,自由拖动,标尺,放大缩小,控件之间的标尺
62 lines (61 loc) • 2.04 kB
TypeScript
import { Boundary, DesignWidget } from "@/types";
import DesignService from "@/services/design.service";
import { UpdateData, YWidget } from "@/services/synchronize.service";
export declare enum LineDirection {
ROW = 0,
COLUMN = 1
}
export declare enum DistanceEnum {
ADSORB = 0,
SHOW_LINE = 1,
REMOTE = 2
}
interface Line {
id: string;
direction: LineDirection;
x: number;
y: number;
show: boolean;
}
export interface BoundaryLine extends Line {
width: number | string;
height: number | string;
}
export interface AlignmentOption {
showAlign: boolean;
enableAdsorb: boolean;
alignWeight: number;
alignColor: string;
showAlignSpan: number;
adsorbSpan: number;
pagePadding: [number, number, number, number];
}
export default class AlignmentLineService {
option: AlignmentOption;
designService: DesignService;
boundaryLine: Array<BoundaryLine>;
constructor(option: AlignmentOption, designService: DesignService);
setPaddingLine(): void;
onNewWidgetMove(widgets: Array<DesignWidget>, designService: DesignService): void;
onWidgetGroupMove(yWidgets: Array<YWidget>): void;
handlerWidgetMove(boundary: Boundary, adsorbHandler: Function): void;
adsorbNewWidge(designService: DesignService, place: string, line: BoundaryLine): void;
adsorbWidgets(yWidgets: Array<YWidget>, place: string, line: BoundaryLine, boundary: Boundary): void;
onBoundaryMove(selecteds: Array<YWidget>, direct: string[]): void;
getDistance(span: number, line: number): {
distance: number;
tag: DistanceEnum;
};
addBoundaryLine(widget: DesignWidget): void;
delBoundaryLine(id: string): void;
clearAllLine(): void;
hideAllLine(): void;
handlerAlignmentLine(updateData: UpdateData): void;
leftJustify(): void;
rightJustify(): void;
topJustify(): void;
bottomJustify(): void;
rowBetween(): void;
columnBetween(): void;
}
export {};