diff --git a/public/src/client/users.js b/public/src/client/users.js index cb6322ba74..47c16f9387 100644 --- a/public/src/client/users.js +++ b/public/src/client/users.js @@ -29,6 +29,16 @@ define('forum/users', [ searchResultCount = params && params.resultCount; $('#search-user').on('keyup', utils.debounce(doSearch, 250)); $('.search select, .search input[type="checkbox"]').on('change', doSearch); + + // Populate box with query if present + const searchEl = document.getElementById('search-user'); + const search = new URLSearchParams(document.location.search); + const query = search.get('query'); + if (query) { + searchEl.value = query; + } + + searchEl.focus(); }; function doSearch() { @@ -36,20 +46,25 @@ define('forum/users', [ return; } $('[component="user/search/icon"]').removeClass('fa-search').addClass('fa-spinner fa-spin'); - const username = $('#search-user').val(); const activeSection = getActiveSection(); const query = { - section: activeSection, + section: activeSection || 'users', page: 1, }; - if (!username) { + const username = $('#search-user').val(); + if (username) { + query.query = username; + } else { return loadPage(query); } - query.query = username; - query.sortBy = getSortBy(); + const sortBy = getSortBy(); + if (sortBy) { + query.sortBy = sortBy; + } + const filters = []; if ($('.search .online-only').is(':checked') || (activeSection === 'online')) { filters.push('online'); @@ -85,6 +100,10 @@ define('forum/users', [ api.get('/api/users', query) .then(renderSearchResults) .catch(alerts.error); + + // Update query string + const search = new URLSearchParams(query); + ajaxify.updateHistory(`users?${search.toString()}`, true); } function renderSearchResults(data) {