mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 21:19:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { Modal } from "bootstrap";
 | 
						|
import appContext from "../components/app_context.js";
 | 
						|
import type { ConfirmDialogOptions, ConfirmDialogResult, ConfirmWithMessageOptions } from "../widgets/dialogs/confirm.js";
 | 
						|
import type { PromptDialogOptions } from "../widgets/dialogs/prompt.js";
 | 
						|
import { focusSavedElement, saveFocusedElement } from "./focus.js";
 | 
						|
 | 
						|
export async function openDialog($dialog: JQuery<HTMLElement>, closeActDialog = true, config?: Partial<Modal.Options>) {
 | 
						|
    if (closeActDialog) {
 | 
						|
        closeActiveDialog();
 | 
						|
        glob.activeDialog = $dialog;
 | 
						|
    }
 | 
						|
 | 
						|
    saveFocusedElement();
 | 
						|
    Modal.getOrCreateInstance($dialog[0], config).show();
 | 
						|
 | 
						|
    $dialog.on("hidden.bs.modal", () => {
 | 
						|
        const $autocompleteEl = $(".aa-input");
 | 
						|
        if ("autocomplete" in $autocompleteEl) {
 | 
						|
            $autocompleteEl.autocomplete("close");
 | 
						|
        }
 | 
						|
 | 
						|
        if (!glob.activeDialog || glob.activeDialog === $dialog) {
 | 
						|
            focusSavedElement();
 | 
						|
        }
 | 
						|
    });
 | 
						|
 | 
						|
    const keyboardActionsService = (await import("./keyboard_actions.js")).default;
 | 
						|
    keyboardActionsService.updateDisplayedShortcuts($dialog);
 | 
						|
 | 
						|
    return $dialog;
 | 
						|
}
 | 
						|
 | 
						|
export function closeActiveDialog() {
 | 
						|
    if (glob.activeDialog) {
 | 
						|
        Modal.getOrCreateInstance(glob.activeDialog[0]).hide();
 | 
						|
        glob.activeDialog = null;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
async function info(message: string) {
 | 
						|
    return new Promise((res) => appContext.triggerCommand("showInfoDialog", { message, callback: res }));
 | 
						|
}
 | 
						|
 | 
						|
async function confirm(message: string) {
 | 
						|
    return new Promise((res) =>
 | 
						|
        appContext.triggerCommand("showConfirmDialog", <ConfirmWithMessageOptions>{
 | 
						|
            message,
 | 
						|
            callback: (x: false | ConfirmDialogOptions) => res(x && x.confirmed)
 | 
						|
        })
 | 
						|
    );
 | 
						|
}
 | 
						|
 | 
						|
async function confirmDeleteNoteBoxWithNote(title: string) {
 | 
						|
    return new Promise<ConfirmDialogResult | undefined>((res) => appContext.triggerCommand("showConfirmDeleteNoteBoxWithNoteDialog", { title, callback: res }));
 | 
						|
}
 | 
						|
 | 
						|
async function prompt(props: PromptDialogOptions) {
 | 
						|
    return new Promise<string | null>((res) => appContext.triggerCommand("showPromptDialog", { ...props, callback: res }));
 | 
						|
}
 | 
						|
 | 
						|
export default {
 | 
						|
    info,
 | 
						|
    confirm,
 | 
						|
    confirmDeleteNoteBoxWithNote,
 | 
						|
    prompt
 | 
						|
};
 |