diff options
Diffstat (limited to 'web_src/js/features/comp/SearchUserBox.js')
-rw-r--r-- | web_src/js/features/comp/SearchUserBox.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/web_src/js/features/comp/SearchUserBox.js b/web_src/js/features/comp/SearchUserBox.js new file mode 100644 index 0000000000..9019f17de3 --- /dev/null +++ b/web_src/js/features/comp/SearchUserBox.js @@ -0,0 +1,36 @@ +import {htmlEscape} from 'escape-goat'; + +const {AppSubUrl} = window.config; + +export function initSearchUserBox() { + const $searchUserBox = $('#search-user-box'); + $searchUserBox.search({ + minCharacters: 2, + apiSettings: { + url: `${AppSubUrl}/api/v1/users/search?q={query}`, + onResponse(response) { + const items = []; + const searchQueryUppercase = $searchUserBox.find('input').val().toUpperCase(); + $.each(response.data, (_i, item) => { + let title = item.login; + if (item.full_name && item.full_name.length > 0) { + title += ` (${htmlEscape(item.full_name)})`; + } + const resultItem = { + title, + image: item.avatar_url + }; + if (searchQueryUppercase === item.login.toUpperCase()) { + items.unshift(resultItem); + } else { + items.push(resultItem); + } + }); + + return {results: items}; + } + }, + searchFields: ['login', 'full_name'], + showNoResults: false + }); +} |