diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js index 20729d5ff..a37e2db87 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/palette-editor.js @@ -597,10 +597,26 @@ RED.palette.editor = (function() { } } function sortModulesRelevance(A,B) { - return sortModulesDownloads(A,B); + const defaultSort = sortModulesDownloads(A,B); + const currentFilter = searchInput.searchBox('value').trim(); + if (defaultSort === 0) { + // same number of downloads + if (currentFilter === "") { + return sortModulesAZ(A,B); + } + var i = A.info.index.indexOf(currentFilter) - B.info.index.indexOf(currentFilter); + if (i === 0) { + return sortModulesAZ(A,B); + } + return i; + } + return defaultSort; } function sortModulesDownloads(A,B) { - return B.info.downloads.week - A.info.downloads.week; + // check A has the info.downloads property - if not exising, prioritise it (likely a custom user catalogue) + const a = A.info && typeof A.info.downloads !== 'undefined' ? A.info.downloads.week : Number.MAX_SAFE_INTEGER; + const b = B.info && typeof B.info.downloads !== 'undefined' ? B.info.downloads.week : Number.MAX_SAFE_INTEGER; + return b - a; } function sortModulesAZ(A,B) { return A.info.id.localeCompare(B.info.id);