@omnia/fx-models
Version:
Provide Omnia Fx Models Stuffs.
102 lines (101 loc) • 4.88 kB
TypeScript
import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { IMessageBusTopicSubscription } from "./Messaging";
import { Block, IReactiveLayoutItemsSettingsStore, LoadedLayout } from "./Layout";
interface ILayoutCanvasItemDefinition<T> {
id: GuidValue;
createInstance: (layout: LoadedLayout) => Promise<T>;
/**
*This influence the order of the items, be nice, use ordering with gap -100, 0, 100, 200
So other extensions etc can inject between
*/
weight?: number;
}
interface ILayoutCanvasItemInstance {
definitionId: GuidValue;
slots: ILayoutCanvasItemSlot;
}
interface ILayoutCanvasItemSlot {
header: () => JSX.Element;
content: () => JSX.Element | JSX.Element[];
}
export interface ILayoutCanvasExpansionItemInstance extends ILayoutCanvasItemInstance {
slots: ILayoutCanvasItemSlot;
}
export interface ILayoutCanvasTabInstance extends ILayoutCanvasItemInstance {
slots: ILayoutCanvasItemSlot;
items: ILayoutCanvasExpansionItemInstance[];
active?: boolean;
disabled?: boolean;
/**
*Will force the components content to render on mounted. This is useful if you have content that will not be rendered in the DOM that you want crawled for SEO.
*/
eager?: boolean;
onClick?: () => void;
}
export interface ILayoutCanvasSectionSettingsPanelDefinition extends ILayoutCanvasSettingsPanelDefinition {
}
export interface ILayoutCanvasBlockSettingsPanelDefinition extends ILayoutCanvasSettingsPanelDefinition {
}
export interface ILayoutCanvasLayoutSettingsPanelDefinition extends ILayoutCanvasSettingsPanelDefinition {
}
export interface ILayoutCanvasSettingsPanelDefinitionSlots {
body: (items: ILayoutCanvasTabInstance[]) => JSX.Element;
}
export interface ILayoutCanvasExpansionItemDefinitionSlots {
beforeContent: () => JSX.Element;
afterContent: () => JSX.Element;
}
export interface ILayoutCanvasTabDefinitionBuilder<T> {
/**
*@param weight This influence the order of the items, be nice, use ordering with gap -100, 0, 100, 200
So other extensions etc can inject between
*/
add: (tab: ILayoutCanvasTabDefinition) => ILayoutCanvasTabDefinitionBuilder<T>;
remove: (tab: GuidValue) => ILayoutCanvasTabDefinitionBuilder<T>;
update: (tabId: GuidValue) => ILayoutCanvasTabItemsDefinitionBuilder<ILayoutCanvasTabDefinition>;
sort: (compareFn: (a: ILayoutCanvasTabDefinition, b: ILayoutCanvasTabDefinition) => number) => ILayoutCanvasTabDefinitionBuilder<T>;
done: () => T;
}
export interface ILayoutCanvasTabItemsDefinitionBuilder<T> {
reset: () => ILayoutCanvasTabItemsDefinitionBuilder<T>;
add: (item: ILayoutCanvasExpansionItemDefinition) => ILayoutCanvasTabItemsDefinitionBuilder<T>;
remove: (itemId: GuidValue) => ILayoutCanvasTabItemsDefinitionBuilder<T>;
sort: (compareFn: (a: ILayoutCanvasExpansionItemDefinition, b: ILayoutCanvasExpansionItemDefinition) => number) => ILayoutCanvasTabItemsDefinitionBuilder<T>;
done: () => T;
update: (itemId: GuidValue) => ILayoutCanvasExpansionItemDefinitionBuilder<ILayoutCanvasTabItemsDefinitionBuilder<T>>;
}
export interface ILayoutCanvasExpansionItemDefinitionBuilder<T> {
slots: (slots: ILayoutCanvasExpansionItemDefinitionSlots) => ILayoutCanvasExpansionItemDefinitionBuilder<T>;
done: () => T;
}
export interface ILayoutCanvasSettingsPanelDefinition {
reset: () => ILayoutCanvasSettingsPanelDefinition;
slots: (slots: ILayoutCanvasSettingsPanelDefinitionSlots) => ILayoutCanvasSettingsPanelDefinition;
tabs: () => ILayoutCanvasTabDefinitionBuilder<ILayoutCanvasSettingsPanelDefinition>;
result: () => {
tabs: ILayoutCanvasTabDefinition[];
slots: Partial<ILayoutCanvasSettingsPanelDefinitionSlots>;
};
done: () => ILayoutCanvasSettingsPanel;
}
export interface ILayoutCanvasExpansionItemDefinition extends ILayoutCanvasItemDefinition<ILayoutCanvasExpansionItemInstance> {
slots: ILayoutCanvasExpansionItemDefinitionSlots;
}
export interface ILayoutCanvasTabDefinition extends ILayoutCanvasItemDefinition<ILayoutCanvasTabInstance> {
items: ILayoutCanvasExpansionItemDefinition[];
createInstance: (layout: LoadedLayout, block?: Block, blockSettingsStore?: IReactiveLayoutItemsSettingsStore) => Promise<ILayoutCanvasTabInstance>;
hooks: {
beforeCreate: IMessageBusTopicSubscription<ILayoutCanvasTabDefinition>;
created: IMessageBusTopicSubscription<ILayoutCanvasTabInstance>;
};
}
export interface ILayoutCanvasDefinitionBuilder {
panels: () => ILayoutCanvasSettingsPanel;
}
export interface ILayoutCanvasSettingsPanel {
section: () => ILayoutCanvasSettingsPanelDefinition;
layout: () => ILayoutCanvasLayoutSettingsPanelDefinition;
block: () => ILayoutCanvasSettingsPanelDefinition;
done: () => ILayoutCanvasDefinitionBuilder;
}
export {};