aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/features/comp/SearchUserBox.js
diff options
context:
space:
mode:
Diffstat (limited to 'web_src/js/features/comp/SearchUserBox.js')
-rw-r--r--web_src/js/features/comp/SearchUserBox.js36
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
+ });
+}