UNPKG

6.42 kBTypeScriptView Raw
1import { Disposable, MaybePromise, CancellationTokenSource } from '../common';
2import { Widget, BaseWidget, Message } from './widgets';
3import { FrontendApplicationContribution } from './frontend-application-contribution';
4export declare class DialogProps {
5 readonly title: string;
6 /**
7 * Determines the maximum width of the dialog in pixels.
8 * Default value is undefined, which would result in the css property 'max-width: none' being applied to the dialog.
9 */
10 maxWidth?: number;
11 /**
12 * Determine the word wrapping behavior for content in the dialog.
13 * - `normal`: breaks words at allowed break points.
14 * - `break-word`: breaks otherwise unbreakable words.
15 * - `initial`: sets the property to it's default value.
16 * - `inherit`: inherit this property from it's parent element.
17 * Default value is undefined, which would result in the css property 'word-wrap' not being applied to the dialog.
18 */
19 wordWrap?: 'normal' | 'break-word' | 'initial' | 'inherit';
20}
21export declare type DialogMode = 'open' | 'preview';
22export declare type DialogError = string | boolean | {
23 message: string;
24 result: boolean;
25};
26export declare namespace DialogError {
27 function getResult(error: DialogError): boolean;
28 function getMessage(error: DialogError): string;
29}
30export declare namespace Dialog {
31 const YES: string;
32 const NO: string;
33 const OK: string;
34 const CANCEL: string;
35}
36export declare class DialogOverlayService implements FrontendApplicationContribution {
37 protected static INSTANCE: DialogOverlayService;
38 static get(): DialogOverlayService;
39 protected readonly dialogs: AbstractDialog<any>[];
40 protected readonly documents: Document[];
41 constructor();
42 initialize(): void;
43 protected get currentDialog(): AbstractDialog<any> | undefined;
44 push(dialog: AbstractDialog<any>): Disposable;
45 protected handleEscape(event: KeyboardEvent): boolean | void;
46 protected handleEnter(event: KeyboardEvent): boolean | void;
47}
48export declare abstract class AbstractDialog<T> extends BaseWidget {
49 protected readonly props: DialogProps;
50 protected readonly titleNode: HTMLDivElement;
51 protected readonly contentNode: HTMLDivElement;
52 protected readonly closeCrossNode: HTMLElement;
53 protected readonly controlPanel: HTMLDivElement;
54 protected readonly errorMessageNode: HTMLDivElement;
55 protected resolve: undefined | ((value: T | undefined) => void);
56 protected reject: undefined | ((reason: any) => void);
57 protected closeButton: HTMLButtonElement | undefined;
58 protected acceptButton: HTMLButtonElement | undefined;
59 protected activeElement: HTMLElement | undefined;
60 constructor(props: DialogProps, options?: Widget.IOptions);
61 protected appendCloseButton(text?: string): HTMLButtonElement;
62 protected appendAcceptButton(text?: string): HTMLButtonElement;
63 protected appendButton(text: string, primary: boolean): HTMLButtonElement;
64 protected createButton(text: string): HTMLButtonElement;
65 protected onAfterAttach(msg: Message): void;
66 protected handleEscape(event: KeyboardEvent): boolean | void;
67 protected handleEnter(event: KeyboardEvent): boolean | void;
68 protected onActivateRequest(msg: Message): void;
69 open(): Promise<T | undefined>;
70 close(): void;
71 protected onUpdateRequest(msg: Message): void;
72 protected validateCancellationSource: CancellationTokenSource;
73 protected validate(): Promise<void>;
74 protected acceptCancellationSource: CancellationTokenSource;
75 protected accept(): Promise<void>;
76 abstract get value(): T;
77 /**
78 * Return a string of zero-length or true if valid.
79 */
80 protected isValid(value: T, mode: DialogMode): MaybePromise<DialogError>;
81 protected setErrorMessage(error: DialogError): void;
82 protected addAction<K extends keyof HTMLElementEventMap>(element: HTMLElement, callback: () => void, ...additionalEventTypes: K[]): void;
83 protected addCloseAction<K extends keyof HTMLElementEventMap>(element: HTMLElement, ...additionalEventTypes: K[]): void;
84 protected addAcceptAction<K extends keyof HTMLElementEventMap>(element: HTMLElement, ...additionalEventTypes: K[]): void;
85}
86export declare class MessageDialogProps extends DialogProps {
87 readonly msg: string | HTMLElement;
88}
89export declare class ConfirmDialogProps extends MessageDialogProps {
90 readonly cancel?: string;
91 readonly ok?: string;
92}
93export declare class ConfirmDialog extends AbstractDialog<boolean> {
94 protected readonly props: ConfirmDialogProps;
95 protected confirmed: boolean;
96 constructor(props: ConfirmDialogProps);
97 protected onCloseRequest(msg: Message): void;
98 get value(): boolean;
99 protected createMessageNode(msg: string | HTMLElement): HTMLElement;
100}
101export declare function confirmExit(): Promise<boolean>;
102export declare class ConfirmSaveDialogProps extends MessageDialogProps {
103 readonly cancel: string;
104 readonly dontSave: string;
105 readonly save: string;
106}
107export declare class ConfirmSaveDialog extends AbstractDialog<boolean | undefined> {
108 protected readonly props: ConfirmSaveDialogProps;
109 protected result?: boolean;
110 constructor(props: ConfirmSaveDialogProps);
111 get value(): boolean | undefined;
112 protected createMessageNode(msg: string | HTMLElement): HTMLElement;
113 protected appendButtonAndSetResult(text: string, primary: boolean, result?: boolean): HTMLButtonElement;
114}
115export declare class SingleTextInputDialogProps extends DialogProps {
116 readonly confirmButtonLabel?: string;
117 readonly initialValue?: string;
118 readonly placeholder?: string;
119 readonly initialSelectionRange?: {
120 start: number;
121 end: number;
122 direction?: 'forward' | 'backward' | 'none';
123 };
124 readonly validate?: (input: string, mode: DialogMode) => MaybePromise<DialogError>;
125}
126export declare class SingleTextInputDialog extends AbstractDialog<string> {
127 protected props: SingleTextInputDialogProps;
128 protected readonly inputField: HTMLInputElement;
129 constructor(props: SingleTextInputDialogProps);
130 get value(): string;
131 protected isValid(value: string, mode: DialogMode): MaybePromise<DialogError>;
132 protected onAfterAttach(msg: Message): void;
133 protected onActivateRequest(msg: Message): void;
134 protected handleEnter(event: KeyboardEvent): boolean | void;
135}
136//# sourceMappingURL=dialogs.d.ts.map
\No newline at end of file