diff --git a/web_src/js/features/comp/SearchTeamBox.ts b/web_src/js/features/comp/SearchTeamBox.ts new file mode 100644 index 0000000000..417621bd19 --- /dev/null +++ b/web_src/js/features/comp/SearchTeamBox.ts @@ -0,0 +1,36 @@ +import {fomanticQuery} from '../../modules/fomantic/base.ts'; +import {html} from '../../utils/html.ts'; + +const {appSubUrl} = window.config; + +export function initCompSearchTeamBox() { + const searchTeamBox = document.querySelector('#search-team-box'); + if (!searchTeamBox) return; + + fomanticQuery(searchTeamBox).search({ + minCharacters: 2, + apiSettings: { + url: `${appSubUrl}${searchTeamBox.getAttribute('data-search-url')}`, + onResponse(response: {data: any[]}) { + const resultItems = []; + const searchQuery = searchTeamBox.querySelector('input').value; + const searchQueryUppercase = searchQuery.toUpperCase(); + for (const item of response.data) { + const resultItem = { + title: item.name, + description: html`${item.description}`, + }; + if (searchQueryUppercase === item.name.toUpperCase()) { + resultItems.unshift(resultItem); // add the exact match to the top + } else { + resultItems.push(resultItem); + } + } + + return {results: resultItems}; + }, + }, + searchFields: ['login', 'full_name'], + showNoResults: false, + }); +} diff --git a/web_src/js/index.ts b/web_src/js/index.ts index aa21ccdc06..798f6117c6 100644 --- a/web_src/js/index.ts +++ b/web_src/js/index.ts @@ -37,6 +37,7 @@ import {initRepoReleaseNew} from './features/repo-release.ts'; import {initRepoEditor} from './features/repo-editor.ts'; import {initCompSearchUserBox} from './features/comp/SearchUserBox.ts'; import {initInstall} from './features/install.ts'; +import {initCompSearchTeamBox} from './features/comp/SearchTeamBox.ts' import {initCompWebHookEditor} from './features/comp/WebHookEditor.ts'; import {initRepoBranchButton} from './features/repo-branch.ts'; import {initCommonOrganization} from './features/common-organization.ts'; @@ -93,6 +94,7 @@ const initPerformanceTracer = callInitFunctions([ initCompSearchUserBox, initCompWebHookEditor, + initCompSearchTeamBox, initInstall,