Keep search input focused while typing
This commit is contained in:
parent
9aa837e14d
commit
9a59cd29e4
|
|
@ -287,13 +287,18 @@
|
||||||
var index = null;
|
var index = null;
|
||||||
var cleanupFns = [];
|
var cleanupFns = [];
|
||||||
var indexRefresh = Promise.resolve();
|
var indexRefresh = Promise.resolve();
|
||||||
|
var input = null;
|
||||||
|
var button = null;
|
||||||
|
var statusEl = null;
|
||||||
|
var resultsEl = null;
|
||||||
|
|
||||||
function render() {
|
function ensureLayout() {
|
||||||
|
if (input) return;
|
||||||
containerEl.innerHTML = '';
|
containerEl.innerHTML = '';
|
||||||
containerEl.className = 'search-root';
|
containerEl.className = 'search-root';
|
||||||
containerEl.setAttribute('data-plugin-id', 'verstak.search');
|
containerEl.setAttribute('data-plugin-id', 'verstak.search');
|
||||||
|
|
||||||
var input = el('input', {
|
input = el('input', {
|
||||||
className: 'search-input',
|
className: 'search-input',
|
||||||
type: 'search',
|
type: 'search',
|
||||||
placeholder: 'Search files, folders, text',
|
placeholder: 'Search files, folders, text',
|
||||||
|
|
@ -304,10 +309,8 @@
|
||||||
scheduleSearch();
|
scheduleSearch();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var button = el('button', {
|
button = el('button', {
|
||||||
className: 'search-btn',
|
className: 'search-btn',
|
||||||
textContent: state.searching ? 'Searching...' : 'Search',
|
|
||||||
disabled: state.searching ? 'disabled' : null,
|
|
||||||
'data-search-action': 'run',
|
'data-search-action': 'run',
|
||||||
onClick: search
|
onClick: search
|
||||||
});
|
});
|
||||||
|
|
@ -317,9 +320,22 @@
|
||||||
el('span', { className: 'search-scope', title: rootPath || 'Vault' }, [rootPath || 'Vault'])
|
el('span', { className: 'search-scope', title: rootPath || 'Vault' }, [rootPath || 'Vault'])
|
||||||
]));
|
]));
|
||||||
|
|
||||||
containerEl.appendChild(el('div', { className: 'search-status' + (state.error ? ' error' : '') }, [state.error || state.status]));
|
statusEl = el('div', { className: 'search-status' });
|
||||||
var resultsEl = el('div', { className: 'search-results' });
|
containerEl.appendChild(statusEl);
|
||||||
|
resultsEl = el('div', { className: 'search-results' });
|
||||||
containerEl.appendChild(resultsEl);
|
containerEl.appendChild(resultsEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
function render() {
|
||||||
|
ensureLayout();
|
||||||
|
if (document.activeElement !== input && input.value !== state.query) {
|
||||||
|
input.value = state.query;
|
||||||
|
}
|
||||||
|
button.textContent = state.searching ? 'Searching...' : 'Search';
|
||||||
|
button.disabled = !!state.searching;
|
||||||
|
statusEl.className = 'search-status' + (state.error ? ' error' : '');
|
||||||
|
statusEl.textContent = state.error || state.status;
|
||||||
|
resultsEl.innerHTML = '';
|
||||||
if (!state.results.length) {
|
if (!state.results.length) {
|
||||||
resultsEl.appendChild(el('div', { className: 'search-empty' }, [state.searching ? 'Searching...' : 'No results']));
|
resultsEl.appendChild(el('div', { className: 'search-empty' }, [state.searching ? 'Searching...' : 'No results']));
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue