@paperbits/common
Version:
Paperbits common components.
283 lines (235 loc) • 7.35 kB
text/typescript
import { View, IComponent, IHighlightConfig, IContextCommandSet, ICommand, Toast } from ".";
import { DragSession } from "./draggables";
import { IWidgetBinding } from "../editing";
import { RoleModel } from "../user";
import { PointerPosition } from "./pointerPosition";
export enum ViewManagerMode {
selecting = "selecting",
dragging = "dragging",
selected = "selected",
configure = "configure",
pause = "pause",
preview = "preview"
}
export interface ISplitterConfig {
/**
* Element relative to which the splitter gets placed.
*/
element: HTMLElement;
/**
* Possible values: "top", "bottom", "left", "right";
*/
side: string;
/**
* Possible values: "inside", "outside";
*/
where: string;
}
export interface ViewManager {
/**
* Adds toast message to the stack.
* @param title {string} Message title.
* @param content {string} Message content.
* @param commands {ICommand[]} Message commands.
*/
addToast(title: string, content: string, commands?: ICommand[]): Toast;
/**
* Removed the toast message from the stack.
* @param toast {Toast} Toast message.
*/
removeToast(toast: Toast): void;
/**
* Returns active journey name.
*/
journeyName(): string;
/**
* Hides all active toolboxes.
*/
hideToolboxes(): void;
/**
* Reveals all hidden toolboxes.
*/
showToolboxes(): void;
/**
* Clears active journey.
*/
clearJourney(): void;
/**
* Close active view.
*/
closeView(): void;
/**
* Shows informational toast message.
* @param title {string} Message title.
* @param content {string} Message content.
* @param commands {ICommand[]} Message commands.
*/
notifyInfo(title: string, content: string, commands?: ICommand[]): Toast;
/**
* Shows success toast message.
* @param title {string} Message title.
* @param content {string} Message content.
* @param commands {ICommand[]} Message commands.
*/
notifySuccess(title: string, content: string): Toast;
/**
* Shows error toast message.
* @param title {string} Message title.
* @param content {string} Message content.
* @param commands {ICommand[]} Message commands.
*/
notifyError(title: string, content: string): Toast;
/**
* Shows progress toast message.
* @param title {string} Message title.
* @param content {string} Message content.
* @param commands {ICommand[]} Message commands.
*/
notifyProgress<T>(promise: Promise<T>, title: string, content: string): Toast;
/**
* Opens specified view in a popup window.
* @param view {View} A view.
*/
openViewAsPopup(view: View): void;
/**
* Opens specified view in the workshop stack.
* @param view {View} A view.
*/
openViewAsWorkshop(view: View): void;
/**
* Returns active view (or null, if none open).
*/
getActiveView(): View;
/**
* Deletes specified view and all views after it in the stack.
* @param view {View|string} View object or view component name.
*/
closeWorkshop(view: View | string): void;
/**
* Opens upload file dialog.
* @param accept File extensions, e.g. ".ttf,.woff";
*/
openUploadDialog(...accept: string[]): Promise<File[]>;
/**
* Opens editor view for widget associated with the binding.
* @param binding {IWidgetBinding<any, any>} Widget binding.
*/
openWidgetEditor(binding: IWidgetBinding<any, any>): void;
/**
* Shows contextual editor for specfied widget.
* @param widgetName {string} Name of a widget.
* @param commands {IContextCommandSet} Set of commands.
*/
setContextualCommands(widgetName: string, commands: IContextCommandSet): void;
/**
* Removes contextual editor for specfied widget.
* @param widgetName {string} Name of a widget.
*/
removeContextualCommands(widgetName: string): void;
/**
* Clears all contextual editors.
*/
clearContextualCommands(): void;
/**
* Highlights the element specfied in the configuration.
* @param config
*/
setHighlight(config: IHighlightConfig): void;
/**
* Selects element specfied in the configuration and shows associated commands.
* @param config
* @param commands
*/
setSelectedElement(config: IHighlightConfig, commands: IContextCommandSet): void;
/**
* Returns user-selected element.
*/
getSelectedElement(): IHighlightConfig;
/**
* Reflects current view managed mode.
*/
mode: ViewManagerMode;
/**
* Switches viewport.
* @param viewport {string} Viewport identifier, e.g. `xs`, `sm`, `md`, `lg`, `xl`.
*/
setViewport(viewport: string): void;
/**
* Gets current viewport.
* @returns A viewport identifier, e.g. `xs`, `sm`, `md`, `lg`, `xl`.
*/
getViewport(): string;
/**
* Sets specified roles for the view to show/hide role-dependent elements.
* @param roles {RoleModel[]} Roles.
*/
setViewRoles(roles: RoleModel[]): void;
/**
* Return roles currently set for the view.
*/
getViewRoles(): RoleModel[];
/**
* Shows the shutter. Used to show long running process, e.g. page loading.
*/
setShutter(): void;
/**
* Removes the shutter.
*/
removeShutter(): void;
/**
* Starts widget dragging.
* @param session
*/
beginDrag(session: DragSession): void;
/**
* Returns information about the element being dragged.
*/
getDragSession(): DragSession;
/**
* Shows splitter. Used to display where a dragged widget can be dropped.
* @param config {ISplitterConfig} Splitter configuration.
*/
setSplitter(config: ISplitterConfig): void;
/**
* Sets content host component.
* @param component {IComponent} Component.
*/
setHost(component: IComponent, canGoBack?: boolean): void;
/**
* Returns current content host component.
*/
getHost(): IComponent;
/**
* Returns the document hosting the content component.
*/
getHostDocument(): Document;
/**
* Returns the document hosting the designer.
*/
getDesignerDocument(): Document;
/**
* Returns currently active layer name, e.g. `page` or `layout`.
*/
getActiveLayer(): string;
/**
* Sets active layer.
* @param layerName {string} Name of the layer.
*/
setActiveLayer(layerName: string): void;
/**
* Temporarily disables contextual commands.
*/
pauseContextualCommands(): void;
/**
* Resumes contextual commands.
*/
resumeContextualCommands(): void;
/**
* Clears widget selection.
*/
clearSelection(): void;
/**
* Returns current pointer position.
*/
getPointerPosition(): PointerPosition;
}