diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-25 12:12:21 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-25 12:12:21 +0300 |
commit | 45760607bc053b7379f81edd5ea91dd2a6471522 (patch) | |
tree | 3c23388962d7d0eb31fde246718fc91c6acf5c26 /app/assets/javascripts/vue_shared/components/filtered_search_bar | |
parent | 0712a75cc03cb881dc40ae53a50d059822354ad8 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/vue_shared/components/filtered_search_bar')
-rw-r--r-- | app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/iteration_token.vue | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/iteration_token.vue b/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/iteration_token.vue index c1d1bc7da91..d93daac1072 100644 --- a/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/iteration_token.vue +++ b/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/iteration_token.vue @@ -1,5 +1,5 @@ <script> -import { GlFilteredSearchSuggestion } from '@gitlab/ui'; +import { GlDropdownDivider, GlDropdownSectionHeader, GlFilteredSearchSuggestion } from '@gitlab/ui'; import createFlash from '~/flash'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import { __ } from '~/locale'; @@ -9,6 +9,8 @@ import { DEFAULT_ITERATIONS } from '../constants'; export default { components: { BaseToken, + GlDropdownDivider, + GlDropdownSectionHeader, GlFilteredSearchSuggestion, }, props: { @@ -40,6 +42,23 @@ export default { getActiveIteration(iterations, data) { return iterations.find((iteration) => this.getValue(iteration) === data); }, + groupIterationsByCadence(iterations) { + const cadences = []; + iterations.forEach((iteration) => { + if (!iteration.iterationCadence) { + return; + } + const { title } = iteration.iterationCadence; + const cadenceIteration = { id: iteration.id, title: iteration.title }; + const cadence = cadences.find((cad) => cad.title === title); + if (cadence) { + cadence.iterations.push(cadenceIteration); + } else { + cadences.push({ title, iterations: [cadenceIteration] }); + } + }); + return cadences; + }, fetchIterations(searchTerm) { this.loading = true; this.config @@ -77,13 +96,23 @@ export default { {{ activeTokenValue ? activeTokenValue.title : inputValue }} </template> <template #suggestions-list="{ suggestions }"> - <gl-filtered-search-suggestion - v-for="iteration in suggestions" - :key="iteration.id" - :value="getValue(iteration)" - > - {{ iteration.title }} - </gl-filtered-search-suggestion> + <template v-for="(cadence, index) in groupIterationsByCadence(suggestions)"> + <gl-dropdown-divider v-if="index !== 0" :key="index" /> + <gl-dropdown-section-header + :key="cadence.title" + class="gl-overflow-hidden" + :title="cadence.title" + > + {{ cadence.title }} + </gl-dropdown-section-header> + <gl-filtered-search-suggestion + v-for="iteration in cadence.iterations" + :key="iteration.id" + :value="getValue(iteration)" + > + {{ iteration.title }} + </gl-filtered-search-suggestion> + </template> </template> </base-token> </template> |