Files
neo/frontend/types/page-layout.ts

74 lines
1.5 KiB
TypeScript

export interface FieldLayoutItem {
fieldId: string;
x?: number;
y?: number;
w?: number;
h?: number;
// For list layouts: field order (optional)
order?: number;
}
export type PageLayoutType = 'detail' | 'list';
export interface PageLayoutConfig {
fields: FieldLayoutItem[];
relatedLists?: string[];
}
export interface PageLayout {
id: string;
name: string;
objectId: string;
layoutType: PageLayoutType;
isDefault: boolean;
layoutConfig: PageLayoutConfig;
description?: string;
createdAt?: string;
updatedAt?: string;
// Database column names (snake_case) - used when data comes directly from DB
layout_type?: PageLayoutType;
layout_config?: PageLayoutConfig;
object_id?: string;
is_default?: boolean;
}
export interface CreatePageLayoutRequest {
name: string;
objectId: string;
layoutType?: PageLayoutType;
isDefault?: boolean;
layoutConfig: PageLayoutConfig;
description?: string;
}
export interface UpdatePageLayoutRequest {
name?: string;
isDefault?: boolean;
layoutConfig?: PageLayoutConfig;
description?: string;
}
export interface GridStackOptions {
column: number;
cellHeight: number;
minRow: number;
float: boolean;
acceptWidgets: boolean | string;
removable?: boolean | string;
animate: boolean;
}
export interface GridStackWidget {
id: string;
x: number;
y: number;
w: number;
h: number;
minW?: number;
maxW?: number;
noResize?: boolean;
noMove?: boolean;
locked?: boolean;
content?: string;
}