diff options
Diffstat (limited to 'app/assets/javascripts/search')
4 files changed, 37 insertions, 6 deletions
diff --git a/app/assets/javascripts/search/index.js b/app/assets/javascripts/search/index.js index d9d4056466a..446ab7f433c 100644 --- a/app/assets/javascripts/search/index.js +++ b/app/assets/javascripts/search/index.js @@ -1,11 +1,11 @@ import setHighlightClass from 'ee_else_ce/search/highlight_blob_search_result'; import { queryToObject } from '~/lib/utils/url_utility'; -import Project from '~/pages/projects/project'; import refreshCounts from '~/pages/search/show/refresh_counts'; import { initSidebar } from './sidebar'; import { initSearchSort } from './sort'; import createStore from './store'; import { initTopbar } from './topbar'; +import { initBlobRefSwitcher } from './under_topbar'; export const initSearchApp = () => { const query = queryToObject(window.location.search); @@ -18,5 +18,5 @@ export const initSearchApp = () => { setHighlightClass(query.search); // Code Highlighting refreshCounts(); // Other Scope Tab Counts - Project.initRefSwitcher(); // Code Search Branch Picker + initBlobRefSwitcher(); // Code Search Branch Picker }; diff --git a/app/assets/javascripts/search/topbar/components/searchable_dropdown.vue b/app/assets/javascripts/search/topbar/components/searchable_dropdown.vue index 5653cddda60..ff639d538b3 100644 --- a/app/assets/javascripts/search/topbar/components/searchable_dropdown.vue +++ b/app/assets/javascripts/search/topbar/components/searchable_dropdown.vue @@ -144,9 +144,9 @@ export default { /> <gl-dropdown-item class="gl-border-b-solid gl-border-b-gray-100 gl-border-b-1 gl-pb-2! gl-mb-2" - :is-check-item="true" + is-check-item :is-checked="isSelected($options.ANY_OPTION)" - :is-check-centered="true" + is-check-centered @click="updateDropdown($options.ANY_OPTION)" > <span data-testid="item-title">{{ $options.ANY_OPTION.name }}</span> diff --git a/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue b/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue index a4254a355a2..70156142365 100644 --- a/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue +++ b/app/assets/javascripts/search/topbar/components/searchable_dropdown_item.vue @@ -53,9 +53,9 @@ export default { <template> <gl-dropdown-item - :is-check-item="true" + is-check-item :is-checked="isSelected" - :is-check-centered="true" + is-check-centered @click="$emit('change', item)" > <div class="gl-display-flex gl-align-items-center"> diff --git a/app/assets/javascripts/search/under_topbar/index.js b/app/assets/javascripts/search/under_topbar/index.js new file mode 100644 index 00000000000..8e50c6655dd --- /dev/null +++ b/app/assets/javascripts/search/under_topbar/index.js @@ -0,0 +1,31 @@ +import Vue from 'vue'; +import Translate from '~/vue_shared/translate'; +import RefSelector from '~/ref/components/ref_selector.vue'; +import { setUrlParams, visitUrl } from '~/lib/utils/url_utility'; + +Vue.use(Translate); + +export const initBlobRefSwitcher = () => { + const el = document.getElementById('js-blob-ref-switcher'); + + if (!el) return false; + + const { projectId, ref, fieldName } = el.dataset; + + return new Vue({ + el, + render(createElement) { + return createElement(RefSelector, { + props: { + projectId, + value: ref, + }, + on: { + input(selected) { + visitUrl(setUrlParams({ [fieldName]: selected })); + }, + }, + }); + }, + }); +}; |