diff --git a/src/components/fileTree/index.js b/src/components/fileTree/index.js index f6154d026..22176d7df 100644 --- a/src/components/fileTree/index.js +++ b/src/components/fileTree/index.js @@ -373,6 +373,8 @@ export default class FileTree { * @param {boolean} isDirectory */ appendEntry(name, url, isDirectory) { + if (this.entries.some((entry) => entry.url === url)) return; + const entry = { name, url, isDirectory, isFile: !isDirectory }; // Insert in sorted position @@ -399,10 +401,10 @@ export default class FileTree { // Virtual list mode: update items this.virtualList.setItems(this.entries); } else { - // Fragment mode: re-render - this.destroyChildTrees(); - this.container.innerHTML = ""; - this.renderWithFragment(); + const index = this.entries.findIndex((item) => item.url === url); + const $el = this.createEntryElement(entry); + const $next = this.container.children[index]; + this.container.insertBefore($el, $next || null); } } diff --git a/src/components/inputhints/index.js b/src/components/inputhints/index.js index 23bba3cfe..9e8f5fad6 100644 --- a/src/components/inputhints/index.js +++ b/src/components/inputhints/index.js @@ -27,9 +27,11 @@ import "./style.scss"; * @param {HTMLInputElement} $input Input field * @param {Array|HintCallback} hints Hints or a callback to generate hints * @param {(value: string) => void} onSelect Callback to call when a hint is selected + * @param {object} [options] + * @param {boolean} [options.dynamic] Regenerate hints when input changes * @returns {{getSelected: ()=>HTMLLIElement, container: HTMLUListElement}} */ -export default function inputhints($input, hints, onSelect) { +export default function inputhints($input, hints, onSelect, options = {}) { /**@type {HTMLUListElement} */ const $ul =