@omnia/fx
Version:
Provide Omnia Fx typings and tooling for clientside Omnia development.
146 lines (145 loc) • 3.52 kB
TypeScript
import { IMessageBusTopicSubscription } from "../../models";
import { TsxAllowUnknowProperties, WizardStyles } from "..";
export interface WizardStepModel {
id: string;
title: string;
content: JSX.Element;
beforeButtons?: () => JSX.Element[];
afterButtons?: () => JSX.Element[];
onGoToNext?: () => Promise<boolean>;
onGoToPrev?: () => Promise<boolean>;
}
export interface WizardStateModel {
hideStepsProgress: boolean;
currentStepNumber: number;
totalSteps: number;
}
export interface IWizardStep {
/**
* get back to previous step
*/
goBack: () => IWizardStep;
/**
* go next step
*/
goNext: () => IWizardStep;
/**
* hide a step progress
*/
hideStepProgress: () => IWizardStep;
/**
* show a step progress
*/
showStepProgress: () => IWizardStep;
/**
* register self step buttons.
*/
registerButtons: (afterButtons: () => JSX.Element[], beforeButtons: () => JSX.Element[]) => IWizardStep;
/**
* listen to when your step visible
*/
onStepVisible: () => IMessageBusTopicSubscription<void>;
/**
* disable go next step
*/
disableNext: () => IWizardStep;
/**
* enable go next step
*/
enableNext: () => IWizardStep;
/**
* hide go next step
*/
hideNext: () => IWizardStep;
/**
* enable go next step
*/
showNext: () => IWizardStep;
/**
* disable go back step
*/
disableBack: () => IWizardStep;
/**
* enable go back step
*/
enableBack: () => IWizardStep;
/**
* hide go back step
*/
hideBack: () => IWizardStep;
/**
* enable go back step
*/
showBack: () => IWizardStep;
}
export interface IWizardInstance {
/**
* @param step the sequence of the steps to go to
*/
goTo(step: number): Promise<boolean>;
/**
* get back to last step
*/
goBack(): Promise<boolean>;
/**
* go next step
*/
goNext(): Promise<boolean>;
/**
* get state of wizard
*/
getWizardState: <T extends WizardStateModel>() => T;
/**
* set state of wizard
*/
setWizardState: (state: WizardStateModel) => void;
/**
* add new step
*/
addStep: (step: WizardStepModel, position: number) => void;
/**
* add new steps
*/
addSteps: (steps: Array<WizardStepModel>) => void;
/**
* remove a step
*/
removeSteps: (position: number, howmany?: number) => void;
/**
* register step instance.
*/
registerStepInstance: (stepId: string, instance: IWizardStepComponent) => IWizardStep;
/**
* get step instance.
*/
getStep: (stepId: string) => IWizardStep;
/**
* listen to wizard state changed
*/
onWizardStateChanged: () => IMessageBusTopicSubscription<WizardStateModel>;
}
export interface IWizardStepComponent {
wizard?: () => IWizardInstance;
stepId: string;
canGoNext?: () => Promise<boolean>;
}
export interface IWizard {
styles?: typeof WizardStyles;
onInstanceCreated?: (instance: IWizardInstance) => void;
steps: Array<WizardStepModel>;
defaultStepIndex?: number;
horizontalMinHeight?: number;
}
declare global {
namespace VueTsxSupport.JSX {
interface Element {
}
interface ElementClass {
}
interface ElementAttributesProperty {
}
interface IntrinsicElements {
"omfx-wizard": TsxAllowUnknowProperties<IWizard>;
}
}
}