@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
95 lines (94 loc) • 2.89 kB
TypeScript
/// <reference types="react" />
import { LoginView } from "@docsvision/webclient/Account/LoginContainer";
import { LoginLogic } from "@docsvision/webclient/Account/LoginLogic";
export declare enum FormType {
FormAndProviders = 0,
Form = 1,
Providers = 2,
Error = 3,
Loading = 4
}
export interface ILoginProvider {
description: string;
id: string;
logo: string;
name: string;
supportedModes: string[];
supportedTypes: string[];
url: string;
isStateCompare: boolean;
timeOut: number;
}
export declare type EventParameters = {
logic: LoginLogic;
data: FormData;
} | {
loginPageRef: React.RefObject<HTMLDivElement>;
} | {
logic: LoginLogic;
} | {
loginPageRef: React.RefObject<HTMLDivElement>;
} | {
logic: LoginLogic;
body: object;
} | {
logic: LoginLogic;
view: LoginView;
};
export interface ILoginPlugin {
name?: string;
order?: number;
fn: (data: EventParameters) => boolean | void | Promise<boolean | void>;
eventName: LoginEvents;
}
export declare type AutoCompleteOptions = Partial<{
login: string;
password: string;
form: string;
}>;
export declare type LoginEvents = "LogicEventConstructor" | "LogicEventBeforeFormSubmit" | "LogicEventAfterFormSubmit" | "LogicEventBeforeGetProviders" | "LogicEventAfterGetProviders" | "EventLoginPageUseEffect" | "EventContainerUseEffect";
export interface ILoginExtensionManager {
currentLocale: string;
getResources?: () => {
[key: string]: string;
};
setResources?: (resources: {
[key: string]: string;
}) => void;
addPlugin: (plugin: ILoginPlugin) => void;
addPlugins: (plugins: ILoginPlugin[]) => void;
removePlugin: (name: string) => void;
onSetupView: (view: LoginView) => LoginView;
logicEventConstructor: (data: {
logic: LoginLogic;
}) => boolean | void;
logicEventBeforeFormSubmit: (data: {
logic: LoginLogic;
data: FormData;
}) => Promise<boolean | void>;
logicEventAfterFormSubmit: (data: {
logic: LoginLogic;
data: object;
}) => Promise<boolean | void>;
eventContainerUseEffect: (data: {
logic: LoginLogic;
view: LoginView;
}) => Promise<boolean | void>;
logicEventBeforeGetProviders: (data: {
logic: LoginLogic;
data: {
body: string;
};
}) => Promise<boolean | void>;
logicEventAfterGetProviders: (data: {
logic: LoginLogic;
data: object;
}) => Promise<boolean | void>;
eventLoginPageUseEffect: (data: {
loginPageRef: React.RefObject<HTMLDivElement>;
}) => Promise<boolean | void>;
}
export declare type LoginExtensionManager = {
loginExtensionManager: ILoginExtensionManager;
};
export declare type windowWithLoginExtensionManager = Window & typeof globalThis & LoginExtensionManager;