diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-24 09:10:14 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-24 09:10:14 +0000 |
commit | 2f752481c2e727834216a93dee82df9f8e2acb2e (patch) | |
tree | 47899c8a7f2be92d4824d84c48e9cf5e0410196c /app | |
parent | 273d780f9ede8f6ed5ebbd4f81c8a391a55f882a (diff) | |
download | gitlab-ce-2f752481c2e727834216a93dee82df9f8e2acb2e.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
14 files changed, 67 insertions, 12 deletions
diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts.js index 85636f3e5d2..e4e5f16927b 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts.js @@ -34,6 +34,7 @@ export default class Shortcuts { Mousetrap.bind('?', this.onToggleHelp); Mousetrap.bind('s', Shortcuts.focusSearch); + Mousetrap.bind('/', Shortcuts.focusSearch); Mousetrap.bind('f', this.focusFilter.bind(this)); Mousetrap.bind('p b', Shortcuts.onTogglePerfBar); diff --git a/app/assets/javascripts/boards/filtered_search_boards.js b/app/assets/javascripts/boards/filtered_search_boards.js index b7966dd869d..f421faeb52d 100644 --- a/app/assets/javascripts/boards/filtered_search_boards.js +++ b/app/assets/javascripts/boards/filtered_search_boards.js @@ -27,6 +27,11 @@ export default class FilteredSearchBoards extends FilteredSearchManager { updateObject(path) { this.store.path = path.substr(1); + if (gon.features.boardsWithSwimlanes) { + boardsStore.updateFiltersUrl(); + boardsStore.performSearch(); + } + if (this.updateUrl) { boardsStore.updateFiltersUrl(); } diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index 971edd71eec..21c362affbb 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import Vue from 'vue'; -import { mapActions } from 'vuex'; +import { mapActions, mapState } from 'vuex'; import 'ee_else_ce/boards/models/issue'; import 'ee_else_ce/boards/models/list'; @@ -42,6 +42,7 @@ import { NavigationType, convertObjectPropsToCamelCase, parseBoolean, + urlParamsToObject, } from '~/lib/utils/common_utils'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher'; @@ -104,6 +105,7 @@ export default () => { }; }, computed: { + ...mapState(['isShowingEpicsSwimlanes']), detailIssueVisible() { return Object.keys(this.detailIssue.issue).length; }, @@ -125,17 +127,21 @@ export default () => { eventHub.$on('newDetailIssue', this.updateDetailIssue); eventHub.$on('clearDetailIssue', this.clearDetailIssue); sidebarEventHub.$on('toggleSubscription', this.toggleSubscription); + eventHub.$on('performSearch', this.performSearch); }, beforeDestroy() { eventHub.$off('updateTokens', this.updateTokens); eventHub.$off('newDetailIssue', this.updateDetailIssue); eventHub.$off('clearDetailIssue', this.clearDetailIssue); sidebarEventHub.$off('toggleSubscription', this.toggleSubscription); + eventHub.$off('performSearch', this.performSearch); }, mounted() { this.filterManager = new FilteredSearchBoards(boardsStore.filter, true, boardsStore.cantEdit); this.filterManager.setup(); + this.performSearch(); + boardsStore.disabled = this.disabled; if (gon.features.graphqlBoardLists) { @@ -189,10 +195,16 @@ export default () => { } }, methods: { - ...mapActions(['setInitialBoardData']), + ...mapActions(['setInitialBoardData', 'setFilters', 'fetchEpicsSwimlanes']), updateTokens() { this.filterManager.updateTokens(); }, + performSearch() { + this.setFilters(convertObjectPropsToCamelCase(urlParamsToObject(window.location.search))); + if (gon.features.boardsWithSwimlanes && this.isShowingEpicsSwimlanes) { + this.fetchEpicsSwimlanes(false); + } + }, updateDetailIssue(newIssue, multiSelect = false) { const { sidebarInfoEndpoint } = newIssue; if (sidebarInfoEndpoint && newIssue.subscribed === undefined) { diff --git a/app/assets/javascripts/boards/stores/actions.js b/app/assets/javascripts/boards/stores/actions.js index b4be7546252..cce36dc6a14 100644 --- a/app/assets/javascripts/boards/stores/actions.js +++ b/app/assets/javascripts/boards/stores/actions.js @@ -21,6 +21,11 @@ export default { commit(types.SET_ACTIVE_ID, id); }, + setFilters: ({ commit }, filters) => { + const { scope, utf8, state, ...filterParams } = filters; + commit(types.SET_FILTERS, filterParams); + }, + fetchLists: () => { notImplemented(); }, diff --git a/app/assets/javascripts/boards/stores/boards_store.js b/app/assets/javascripts/boards/stores/boards_store.js index 30c71d64085..002a8bee3dc 100644 --- a/app/assets/javascripts/boards/stores/boards_store.js +++ b/app/assets/javascripts/boards/stores/boards_store.js @@ -513,6 +513,10 @@ const boardsStore = { eventHub.$emit('updateTokens'); }, + performSearch() { + eventHub.$emit('performSearch'); + }, + setListDetail(newList) { this.detail.list = newList; }, diff --git a/app/assets/javascripts/boards/stores/mutation_types.js b/app/assets/javascripts/boards/stores/mutation_types.js index 0f96dc2e287..0f9e93dec5c 100644 --- a/app/assets/javascripts/boards/stores/mutation_types.js +++ b/app/assets/javascripts/boards/stores/mutation_types.js @@ -1,4 +1,5 @@ export const SET_INITIAL_BOARD_DATA = 'SET_INITIAL_BOARD_DATA'; +export const SET_FILTERS = 'SET_FILTERS'; export const REQUEST_ADD_LIST = 'REQUEST_ADD_LIST'; export const RECEIVE_ADD_LIST_SUCCESS = 'RECEIVE_ADD_LIST_SUCCESS'; export const RECEIVE_ADD_LIST_ERROR = 'RECEIVE_ADD_LIST_ERROR'; diff --git a/app/assets/javascripts/boards/stores/mutations.js b/app/assets/javascripts/boards/stores/mutations.js index 1644c118868..738c4aa841a 100644 --- a/app/assets/javascripts/boards/stores/mutations.js +++ b/app/assets/javascripts/boards/stores/mutations.js @@ -17,6 +17,10 @@ export default { state.activeId = id; }, + [mutationTypes.SET_FILTERS](state, filterParams) { + state.filterParams = filterParams; + }, + [mutationTypes.REQUEST_ADD_LIST]: () => { notImplemented(); }, diff --git a/app/assets/javascripts/boards/stores/state.js b/app/assets/javascripts/boards/stores/state.js index fde9e62149c..cf01e4fa0e3 100644 --- a/app/assets/javascripts/boards/stores/state.js +++ b/app/assets/javascripts/boards/stores/state.js @@ -8,6 +8,7 @@ export default () => ({ boardLists: [], issuesByListId: {}, isLoadingIssues: false, + filterParams: {}, error: undefined, // TODO: remove after ce/ee split of board_content.vue isShowingEpicsSwimlanes: false, diff --git a/app/assets/javascripts/clusters/components/knative_domain_editor.vue b/app/assets/javascripts/clusters/components/knative_domain_editor.vue index 1236d2a46c9..0194a8e5ac1 100644 --- a/app/assets/javascripts/clusters/components/knative_domain_editor.vue +++ b/app/assets/javascripts/clusters/components/knative_domain_editor.vue @@ -6,8 +6,8 @@ import { GlLoadingIcon, GlSearchBoxByType, GlSprintf, + GlButton, } from '@gitlab/ui'; -import LoadingButton from '~/vue_shared/components/loading_button.vue'; import ClipboardButton from '../../vue_shared/components/clipboard_button.vue'; import { __, s__ } from '~/locale'; @@ -17,7 +17,7 @@ const { UPDATING, UNINSTALLING } = APPLICATION_STATUS; export default { components: { - LoadingButton, + GlButton, ClipboardButton, GlLoadingIcon, GlDeprecatedDropdown, @@ -215,13 +215,16 @@ export default { }} </p> - <loading-button - class="btn-success js-knative-save-domain-button mt-3 ml-3" + <gl-button + class="js-knative-save-domain-button gl-mt-5 gl-ml-5" + variant="success" + category="primary" :loading="saving" :disabled="saveButtonDisabled" - :label="saveButtonLabel" @click="$emit('save')" - /> + > + {{ saveButtonLabel }} + </gl-button> </template> </div> </template> diff --git a/app/graphql/mutations/concerns/mutations/authorizes_project.rb b/app/graphql/mutations/concerns/mutations/authorizes_project.rb new file mode 100644 index 00000000000..87341525d6c --- /dev/null +++ b/app/graphql/mutations/concerns/mutations/authorizes_project.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Mutations + module AuthorizesProject + include ResolvesProject + + def authorized_find_project!(full_path:) + authorized_find!(full_path: full_path) + end + + private + + def find_object(full_path:) + resolve_project(full_path: full_path) + end + end +end diff --git a/app/views/admin/runners/_runner.html.haml b/app/views/admin/runners/_runner.html.haml index 0bbe73d6f7e..a2b736c332c 100644 --- a/app/views/admin/runners/_runner.html.haml +++ b/app/views/admin/runners/_runner.html.haml @@ -76,4 +76,4 @@ = sprite_icon('play') .btn-group = link_to [:admin, runner], method: :delete, class: 'btn btn-danger has-tooltip', title: _('Remove'), ref: 'tooltip', aria: { label: _('Remove') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do - = icon('remove') + = sprite_icon('close') diff --git a/app/views/groups/runners/_runner.html.haml b/app/views/groups/runners/_runner.html.haml index 07cbcd8401e..3fc50cc86d2 100644 --- a/app/views/groups/runners/_runner.html.haml +++ b/app/views/groups/runners/_runner.html.haml @@ -79,8 +79,8 @@ - if runner.belongs_to_more_than_one_project? .btn-group .btn.btn-danger.has-tooltip{ 'aria-label' => 'Remove', 'data-container' => 'body', 'data-original-title' => _('Multi-project Runners cannot be removed'), 'data-placement' => 'top', disabled: 'disabled' } - = icon('remove') + = sprite_icon('close') - else .btn-group = link_to group_runner_path(@group, runner), method: :delete, class: 'btn btn-danger has-tooltip', title: _('Remove'), ref: 'tooltip', aria: { label: _('Remove') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do - = icon('remove') + = sprite_icon('close') diff --git a/app/views/help/_shortcuts.html.haml b/app/views/help/_shortcuts.html.haml index 80df8581a9b..d252a279a45 100644 --- a/app/views/help/_shortcuts.html.haml +++ b/app/views/help/_shortcuts.html.haml @@ -40,6 +40,8 @@ %tr %td.shortcut %kbd s + \/ + %kbd / %td= _('Start search') %tr %td.shortcut diff --git a/app/views/projects/ci/builds/_build.html.haml b/app/views/projects/ci/builds/_build.html.haml index 23f9a6a8f6c..c7ab01a4ef7 100644 --- a/app/views/projects/ci/builds/_build.html.haml +++ b/app/views/projects/ci/builds/_build.html.haml @@ -102,7 +102,7 @@ - if can?(current_user, :update_build, job) - if job.active? = link_to cancel_project_job_path(job.project, job, continue: { to: request.fullpath }), method: :post, title: _('Cancel'), class: 'btn btn-build' do - = icon('remove', class: 'cred') + = sprite_icon('close') - elsif job.scheduled? .btn-group .btn.btn-default{ disabled: true } |