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:
parent
e9664dc678
commit
21badde4ef
5 changed files with 18 additions and 5 deletions
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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') {
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue