UNPKG

@omnia/fx-models

Version:
102 lines (101 loc) 4.79 kB
import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models"; import { IMessageBusTopicSubscription } from "./Messaging"; import { Block, 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) => 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 {};