Editors: Updated entity link select to pre-fill with selection

Updated all uses across both editors, so the entity link selector popup
now initates a search with the selection text if existing.

For #4571
This commit is contained in:
Dan Brown 2023-09-24 18:33:33 +01:00
parent e9664dc678
commit 21badde4ef
No known key found for this signature in database
GPG key ID: 46D9F943C24A2EF9
5 changed files with 18 additions and 5 deletions

View file

@ -15,9 +15,14 @@ export class EntitySelectorPopup extends Component {
window.$events.listen('entity-select-confirm', this.handleConfirmedSelection.bind(this));
}
show(callback) {
show(callback, searchText = '') {
this.callback = callback;
this.getPopup().show();
if (searchText) {
this.getSelector().searchText(searchText);
}
this.getSelector().focusSearch();
}

View file

@ -87,6 +87,11 @@ export class EntitySelector extends Component {
this.searchInput.focus();
}
searchText(queryText) {
this.searchInput.value = queryText;
this.searchEntities(queryText);
}
showLoading() {
this.loading.style.display = 'block';
this.resultsContainer.style.display = 'none';

View file

@ -68,11 +68,12 @@ export class Actions {
/** @type {EntitySelectorPopup} * */
const selector = window.$components.first('entity-selector-popup');
const selectionText = this.#getSelectionText(selectionRange);
selector.show(entity => {
const selectedText = this.#getSelectionText(selectionRange) || entity.name;
const selectedText = selectionText || entity.name;
const newText = `[${selectedText}](${entity.link})`;
this.#replaceSelection(newText, newText.length, selectionRange);
});
}, selectionText);
}
// Show draw.io if enabled and handle save.

View file

@ -78,12 +78,13 @@ function filePickerCallback(callback, value, meta) {
if (meta.filetype === 'file') {
/** @type {EntitySelectorPopup} * */
const selector = window.$components.first('entity-selector-popup');
const selectionText = this.selection.getContent({format: 'text'}).trim();
selector.show(entity => {
callback(entity.link, {
text: entity.name,
title: entity.name,
});
});
}, selectionText);
}
if (meta.filetype === 'image') {

View file

@ -48,6 +48,7 @@ export function register(editor) {
editor.shortcuts.add('meta+shift+K', '', () => {
/** @var {EntitySelectorPopup} * */
const selectorPopup = window.$components.first('entity-selector-popup');
const selectionText = editor.selection.getContent({format: 'text'}).trim();
selectorPopup.show(entity => {
if (editor.selection.isCollapsed()) {
editor.insertContent(editor.dom.createHTML('a', {href: entity.link}, editor.dom.encode(entity.name)));
@ -57,6 +58,6 @@ export function register(editor) {
editor.selection.collapse(false);
editor.focus();
});
}, selectionText);
});
}