From 921173681c207356914a35ea3dca1afffeac8b05 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 10 Mar 2021 09:09:29 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/global.gitlab-ci.yml | 4 +- .../boards/components/board_card_inner.vue | 2 +- .../boards/components/board_form.vue | 6 +- .../boards/components/board_new_issue.vue | 7 +- .../components/board_new_issue_deprecated.vue | 6 +- .../boards/components/boards_selector.vue | 7 +- .../components/boards_selector_deprecated.vue | 7 +- .../boards/components/filtered_search.vue | 54 +++ .../javascripts/boards/filtered_search.js | 25 ++ app/assets/javascripts/boards/index.js | 20 +- .../javascripts/boards/stores/getters.js | 4 +- .../groups/components/group_item.vue | 43 ++- .../notes/components/note_actions.vue | 26 +- .../new/components/fork_groups_list_item.vue | 20 +- .../ref/components/ref_selector.vue | 1 + .../components/user_access_role_badge.vue | 22 ++ app/assets/stylesheets/pages/groups.scss | 4 - app/controllers/groups/boards_controller.rb | 1 + app/models/project.rb | 4 +- .../shared/deploy_tokens/_form.html.haml | 2 +- .../shared/issuable/_search_bar.html.haml | 329 +++++++++--------- .../btn-confirm-shared-deploy-tokens.yml | 5 + ...end-turn-off-ref-selector-autocomplete.yml | 5 + .../user-access-role-badge-component.yml | 5 + config/feature_categories.yml | 8 +- ..._button.yml => boards_filtered_search.yml} | 10 +- doc/.vale/gitlab/Admin.yml | 2 +- doc/.vale/gitlab/AlertBoxStyle.yml | 2 +- .../gitlab/RelativeLinksDoubleSlashes.yml | 13 + doc/administration/pages/index.md | 2 +- .../troubleshooting/elasticsearch.md | 21 +- doc/development/documentation/styleguide.md | 8 - doc/development/elasticsearch.md | 63 +++- doc/integration/elasticsearch.md | 60 +++- doc/update/index.md | 19 +- .../analytics/instance_statistics.md | 8 - doc/user/markdown.md | 4 +- doc/user/search/advanced_global_search.md | 8 - doc/user/search/advanced_search_syntax.md | 8 - lib/gitlab.rb | 4 + .../credentials/registry/dependency_proxy.rb | 2 +- scripts/lint-doc.sh | 2 +- spec/frontend/boards/board_card_inner_spec.js | 1 - spec/frontend/boards/board_list_spec.js | 6 +- .../boards/board_new_issue_deprecated_spec.js | 8 + .../boards/components/board_form_spec.js | 9 + .../boards/components/board_new_issue_spec.js | 3 +- .../boards/components/filtered_search_spec.js | 65 ++++ spec/frontend/boards/stores/getters_spec.js | 36 ++ spec/frontend/fixtures/issues.rb | 2 + .../groups/components/group_item_spec.js | 5 +- .../notes/components/note_actions_spec.js | 10 +- .../components/user_access_role_badge_spec.js | 26 ++ spec/lib/gitlab/url_blocker_spec.rb | 4 +- spec/models/ci/build_spec.rb | 4 +- spec/spec_helper.rb | 6 + 56 files changed, 734 insertions(+), 304 deletions(-) create mode 100644 app/assets/javascripts/boards/components/filtered_search.vue create mode 100644 app/assets/javascripts/boards/filtered_search.js create mode 100644 app/assets/javascripts/vue_shared/components/user_access_role_badge.vue create mode 100644 changelogs/unreleased/btn-confirm-shared-deploy-tokens.yml create mode 100644 changelogs/unreleased/nfriend-turn-off-ref-selector-autocomplete.yml create mode 100644 changelogs/unreleased/user-access-role-badge-component.yml rename config/feature_flags/development/{saas_add_seats_button.yml => boards_filtered_search.yml} (62%) create mode 100644 doc/.vale/gitlab/RelativeLinksDoubleSlashes.yml delete mode 100644 doc/development/documentation/styleguide.md delete mode 100644 doc/user/admin_area/analytics/instance_statistics.md delete mode 100644 doc/user/search/advanced_global_search.md delete mode 100644 doc/user/search/advanced_search_syntax.md create mode 100644 spec/frontend/boards/components/filtered_search_spec.js create mode 100644 spec/frontend/vue_shared/components/user_access_role_badge_spec.js diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 5de8a6bc250..274629f9c60 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -102,7 +102,7 @@ - name: postgres:11.6 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine - - name: elasticsearch:7.10.1 + - name: elasticsearch:7.11.1 command: ["elasticsearch", "-E", "discovery.type=single-node"] variables: POSTGRES_HOST_AUTH_METHOD: trust @@ -113,7 +113,7 @@ - name: postgres:12 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:5.0-alpine - - name: elasticsearch:7.10.1 + - name: elasticsearch:7.11.1 command: ["elasticsearch", "-E", "discovery.type=single-node"] variables: POSTGRES_HOST_AUTH_METHOD: trust diff --git a/app/assets/javascripts/boards/components/board_card_inner.vue b/app/assets/javascripts/boards/components/board_card_inner.vue index e9ba66cf86a..d4d6b17a589 100644 --- a/app/assets/javascripts/boards/components/board_card_inner.vue +++ b/app/assets/javascripts/boards/components/board_card_inner.vue @@ -27,7 +27,7 @@ export default { GlTooltip: GlTooltipDirective, }, mixins: [boardCardInner], - inject: ['groupId', 'rootPath', 'scopedLabelsAvailable'], + inject: ['rootPath', 'scopedLabelsAvailable'], props: { item: { type: Object, diff --git a/app/assets/javascripts/boards/components/board_form.vue b/app/assets/javascripts/boards/components/board_form.vue index 0d392686393..d8504dcfb0f 100644 --- a/app/assets/javascripts/boards/components/board_form.vue +++ b/app/assets/javascripts/boards/components/board_form.vue @@ -107,7 +107,7 @@ export default { }; }, computed: { - ...mapGetters(['isEpicBoard']), + ...mapGetters(['isEpicBoard', 'isGroupBoard', 'isProjectBoard']), isNewForm() { return this.currentPage === formType.new; }, @@ -178,8 +178,8 @@ export default { } : { ...variables, - projectPath: this.projectId ? this.fullPath : undefined, - groupPath: this.groupId ? this.fullPath : undefined, + projectPath: this.isProjectBoard ? this.fullPath : undefined, + groupPath: this.isGroupBoard ? this.fullPath : undefined, }; }, boardScopeMutationVariables() { diff --git a/app/assets/javascripts/boards/components/board_new_issue.vue b/app/assets/javascripts/boards/components/board_new_issue.vue index 1df154688c8..a81c28733cd 100644 --- a/app/assets/javascripts/boards/components/board_new_issue.vue +++ b/app/assets/javascripts/boards/components/board_new_issue.vue @@ -1,6 +1,6 @@ + + diff --git a/app/assets/javascripts/boards/filtered_search.js b/app/assets/javascripts/boards/filtered_search.js new file mode 100644 index 00000000000..182a2cf3724 --- /dev/null +++ b/app/assets/javascripts/boards/filtered_search.js @@ -0,0 +1,25 @@ +import Vue from 'vue'; +import store from '~/boards/stores'; +import { queryToObject } from '~/lib/utils/url_utility'; +import FilteredSearch from './components/filtered_search.vue'; + +export default () => { + const queryParams = queryToObject(window.location.search); + const el = document.getElementById('js-board-filtered-search'); + + /* + When https://github.com/vuejs/vue-apollo/pull/1153 is merged and deployed + we can remove apolloProvider option from here. Currently without it its causing + an error + */ + + return new Vue({ + el, + store, + apolloProvider: {}, + render: (createElement) => + createElement(FilteredSearch, { + props: { search: queryParams.search }, + }), + }); +}; diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index 0b9694a253c..4efcb1cd49c 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -53,7 +53,6 @@ let issueBoardsApp; export default () => { const $boardApp = document.getElementById('board-app'); - // check for browser back and trigger a hard reload to circumvent browser caching. window.addEventListener('pageshow', (event) => { const isNavTypeBackForward = @@ -73,6 +72,14 @@ export default () => { boardsStore.setTimeTrackingLimitToHours($boardApp.dataset.timeTrackingLimitToHours); } + if (gon?.features?.boardsFilteredSearch) { + import('~/boards/filtered_search') + .then(({ default: initFilteredSearch }) => { + initFilteredSearch(apolloProvider); + }) + .catch(() => {}); + } + // eslint-disable-next-line @gitlab/no-runtime-template-compiler issueBoardsApp = new Vue({ el: $boardApp, @@ -164,8 +171,15 @@ export default () => { eventHub.$off('initialBoardLoad', this.initialBoardLoad); }, mounted() { - this.filterManager = new FilteredSearchBoards(boardsStore.filter, true, boardsStore.cantEdit); - this.filterManager.setup(); + if (!gon.features?.boardsFilteredSearch) { + this.filterManager = new FilteredSearchBoards( + boardsStore.filter, + true, + boardsStore.cantEdit, + ); + + this.filterManager.setup(); + } this.performSearch(); diff --git a/app/assets/javascripts/boards/stores/getters.js b/app/assets/javascripts/boards/stores/getters.js index ff8054ee557..c96f92106cc 100644 --- a/app/assets/javascripts/boards/stores/getters.js +++ b/app/assets/javascripts/boards/stores/getters.js @@ -1,7 +1,9 @@ import { find } from 'lodash'; -import { inactiveId } from '../constants'; +import { BoardType, inactiveId } from '../constants'; export default { + isGroupBoard: (state) => state.boardType === BoardType.group, + isProjectBoard: (state) => state.boardType === BoardType.project, isSidebarOpen: (state) => state.activeId !== inactiveId, isSwimlanesOn: () => false, getBoardItemById: (state) => (id) => { diff --git a/app/assets/javascripts/groups/components/group_item.vue b/app/assets/javascripts/groups/components/group_item.vue index d41fa0b2410..9d46fcec09b 100644 --- a/app/assets/javascripts/groups/components/group_item.vue +++ b/app/assets/javascripts/groups/components/group_item.vue @@ -1,29 +1,36 @@ @@ -140,28 +148,31 @@ export default { data-testid="group-name" :href="group.relativePath" :title="group.fullName" - class="no-expand gl-mt-3 gl-mr-3 gl-text-gray-900!" + class="no-expand gl-mr-3 gl-mt-3 gl-text-gray-900!" :itemprop="microdata.nameItemprop" - >{{ + > + {{ // ending bracket must be by closing tag to prevent // link hover text-decoration from over-extending group.name - }} - + - + {{ group.permission }} - +
diff --git a/app/assets/javascripts/notes/components/note_actions.vue b/app/assets/javascripts/notes/components/note_actions.vue index e1f3c964ed8..0b2c7611f8e 100644 --- a/app/assets/javascripts/notes/components/note_actions.vue +++ b/app/assets/javascripts/notes/components/note_actions.vue @@ -7,6 +7,7 @@ import { deprecatedCreateFlash as flash } from '~/flash'; import { BV_HIDE_TOOLTIP } from '~/lib/utils/constants'; import { __, sprintf } from '~/locale'; import eventHub from '~/sidebar/event_hub'; +import UserAccessRoleBadge from '~/vue_shared/components/user_access_role_badge.vue'; import { splitCamelCase } from '../../lib/utils/text_utility'; import ReplyButton from './note_actions/reply_button.vue'; @@ -17,6 +18,7 @@ export default { ReplyButton, GlButton, GlDropdownItem, + UserAccessRoleBadge, }, directives: { GlTooltip: GlTooltipDirective, @@ -226,24 +228,30 @@ export default {