mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import treeService from '../services/tree.js';
 | 
						|
import noteAutocompleteService from "../services/note_autocomplete.js";
 | 
						|
import utils from "../services/utils.js";
 | 
						|
import appContext from "../services/app_context.js";
 | 
						|
 | 
						|
const $dialog = $("#add-link-dialog");
 | 
						|
const $form = $("#add-link-form");
 | 
						|
const $autoComplete = $("#add-link-note-autocomplete");
 | 
						|
const $linkTitle = $("#link-title");
 | 
						|
const $addLinkTitleFormGroup = $("#add-link-title-form-group");
 | 
						|
 | 
						|
/** @var TextTypeWidget */
 | 
						|
let textTypeWidget;
 | 
						|
 | 
						|
export async function showDialog(widget) {
 | 
						|
    textTypeWidget = widget;
 | 
						|
 | 
						|
    $addLinkTitleFormGroup.toggle(!textTypeWidget.hasSelection());
 | 
						|
 | 
						|
    utils.openDialog($dialog);
 | 
						|
 | 
						|
    $autoComplete.val('').trigger('focus');
 | 
						|
    $linkTitle.val('');
 | 
						|
 | 
						|
    async function setDefaultLinkTitle(noteId) {
 | 
						|
        const noteTitle = await treeService.getNoteTitle(noteId);
 | 
						|
 | 
						|
        $linkTitle.val(noteTitle);
 | 
						|
    }
 | 
						|
 | 
						|
    noteAutocompleteService.initNoteAutocomplete($autoComplete);
 | 
						|
 | 
						|
    $autoComplete.on('autocomplete:selected', function(event, suggestion, dataset) {
 | 
						|
        if (!suggestion.path) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        const noteId = treeService.getNoteIdFromNotePath(suggestion.path);
 | 
						|
 | 
						|
        if (noteId) {
 | 
						|
            setDefaultLinkTitle(noteId);
 | 
						|
        }
 | 
						|
    });
 | 
						|
 | 
						|
    $autoComplete.on('autocomplete:cursorchanged', function(event, suggestion, dataset) {
 | 
						|
        const noteId = treeService.getNoteIdFromNotePath(suggestion.path);
 | 
						|
 | 
						|
        setDefaultLinkTitle(noteId);
 | 
						|
    });
 | 
						|
 | 
						|
    noteAutocompleteService.showRecentNotes($autoComplete);
 | 
						|
}
 | 
						|
 | 
						|
$form.on('submit', () => {
 | 
						|
    const notePath = $autoComplete.getSelectedPath();
 | 
						|
 | 
						|
    if (notePath) {
 | 
						|
        $dialog.modal('hide');
 | 
						|
 | 
						|
        textTypeWidget.addLink($linkTitle.val(), '#' + notePath);
 | 
						|
    }
 | 
						|
    else {
 | 
						|
        console.error("No path to add link.");
 | 
						|
    }
 | 
						|
 | 
						|
    return false;
 | 
						|
}); |