import React from 'react'; import XBaseLayout, { XBaseLayoutProps } from "../base/XBaseLayout"; export interface XGridLayoutProps extends XBaseLayoutProps { /** * 布局宽度,列数 */ colsNum?: number; /** * 布局高度,行数 */ rowsNum?: number; /** * 缩放值 */ transformScale?: number; /** * 是否允许重叠 */ allowOverlap?: boolean; /** * 边缘 */ margin?: Array; /** * 打开事件 */ onOpenFun?: (gridLayut: XGridLayout, item: {}) => void; /** * 编辑事件 */ onEditFun?: (gridLayut: XGridLayout, item: {}) => void; /** * 移除事件 */ onRemoveFun?: (item: {}) => void; /** * 移除事件 */ onItemChangeFun?: (item: {}) => void; /** * 是否为编辑模式 */ isEdit?: boolean; /** * 可拖拽大小位置 * @defaultValue ["s", "w", "e", "n", "sw", "nw", "se", "ne"] */ resizeHandles?: Array; /** * 显示方式 */ compactType?: false | "vertical" | "horizontal"; /** * 显示方式 */ preventCollision?: boolean; /** * 自定义render */ itemRender?: (item: any, index: number) => React.ReactNode; /** * 点击事件 * @param item * @param layoutObj */ onClickItem?: (item: any) => void; onResizeStop?: (item: any) => void; onDragStop?: (item: any) => void; /** * 某一项发生变化回调 */ onItemLayoutChange?: (item: any) => void; /** * 获取拖入的外部组件的大小 */ onDropDragOver?: (e: any) => ({ w?: number; h?: number; } | boolean); /** * 外部组件放下时的事件 */ onDrop: (layout: any, item: any, e: Event) => void; /** * ReactGridLayout的容器对象,传递此值将自动将根据该对象自动适配高度,实现编辑和预览统一 */ heightObserverElement?: () => HTMLElement | HTMLElement; } /** * 可以自定义拖动布局的仪表盘 * @name 仪表盘布局 * @groupName */ export default class XGridLayout extends XBaseLayout { static ComponentName: string; static GetReactGridLayout(): Promise; static defaultProps: { margin: number[]; colsNum: number; rowsNum: number; onOpenFun: any; onEditFun: any; onRemoveFun: any; onLayoutChange: any; isEdit: boolean; allowOverlap: boolean; compactType: string; preventCollision: boolean; resizeHandles: string[]; itemRender: any; lazyChildren: boolean; styleType: string; hasBox: boolean; showBorder: any; overflow: string; boxStyle: {}; width: string; height: string; visible: boolean; grid: number[]; gridSpan: number[]; /** * 是否为编辑模式 */ parent: string; pureRender: boolean; dataSourceUrl: string; filterData: {}; mustHasFilter: boolean; }; reactGridLayout: any; isDrag: boolean; isResize: boolean; constructor(props: XGridLayoutProps); onWindowResize: any; reactGridLayoutInstance: any; resizeObserver: any; componentDidMount(): Promise; componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot: any): void; componentWillUnmount(): void; /** * 设置数据集 * @param layout 布局列表 * @param data 数据列表 */ SetData(data?: any[], callback?: any): void; /** * 返回布局和数据 */ GetData(): any; GetItem(id: any): any; /** * 添加新项 * @param item */ AddItem(item?: { id: string; layoutValue: any; }): void; /** * 清空数据 */ ClearData(): void; /** * 设置编辑模式 * @param isEdit * @constructor */ SetIsEdit(isEdit: boolean): void; /** * 刷新 */ Refresh(): void; /** * 删除布局 * @param i */ RemoveItem(id: string): void; topUp(id: string): void; bottomUp(id: string): void; up(id: string): void; down(id: string): void; renderItem(item: any, index: any): React.JSX.Element; showContexify: any; render(): React.JSX.Element; }