diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 5889771806e..84ad1ea742c 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -633,7 +633,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/api/project_statistics.md @aqualls /doc/api/project_templates.md @aqualls /doc/api/project_vulnerabilities.md @aqualls -/doc/api/projects.md @msedlakjakubowski +/doc/api/projects.md @lciutacu /doc/api/protected_branches.md @aqualls /doc/api/protected_environments.md @rdickenson /doc/api/protected_tags.md @aqualls @@ -766,6 +766,7 @@ lib/gitlab/checks/** @proglottis @toon @zj-gitlab /doc/development/gitaly.md @eread /doc/development/gitlab_flavored_markdown/ @ashrafkhamis /doc/development/gitlab_flavored_markdown/specification_guide/ @ashrafkhamis +/doc/development/gitlab_shell/ @aqualls /doc/development/graphql_guide/ @ashrafkhamis /doc/development/graphql_guide/batchloader.md @aqualls /doc/development/i18n/ @eread diff --git a/app/assets/javascripts/custom_metrics/components/custom_metrics_form_fields.vue b/app/assets/javascripts/custom_metrics/components/custom_metrics_form_fields.vue index c6aeb6c726d..9811a0774e1 100644 --- a/app/assets/javascripts/custom_metrics/components/custom_metrics_form_fields.vue +++ b/app/assets/javascripts/custom_metrics/components/custom_metrics_form_fields.vue @@ -11,7 +11,7 @@ import { debounce } from 'lodash'; import axios from '~/lib/utils/axios_utils'; import { backOff } from '~/lib/utils/common_utils'; import csrf from '~/lib/utils/csrf'; -import statusCodes from '~/lib/utils/http_status'; +import { HTTP_STATUS_OK } from '~/lib/utils/http_status'; import { __, s__ } from '~/locale'; import { queryTypes, formDataValidator } from '../constants'; @@ -23,7 +23,7 @@ function backOffRequest(makeRequestCallback) { return backOff((next, stop) => { makeRequestCallback() .then((resp) => { - if (resp.status === statusCodes.OK) { + if (resp.status === HTTP_STATUS_OK) { stop(resp); } else { next(); diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index b87fe65841b..9f90de9abde 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -9,7 +9,7 @@ import { createAlert, VARIANT_WARNING } from '~/flash'; import { diffViewerModes } from '~/ide/constants'; import axios from '~/lib/utils/axios_utils'; -import httpStatusCodes, { HTTP_STATUS_NOT_FOUND } from '~/lib/utils/http_status'; +import { HTTP_STATUS_NOT_FOUND, HTTP_STATUS_OK } from '~/lib/utils/http_status'; import Poll from '~/lib/utils/poll'; import { mergeUrlParams, getLocationHash } from '~/lib/utils/url_utility'; import { __, s__ } from '~/locale'; @@ -248,7 +248,7 @@ export const fetchCoverageFiles = ({ commit, state }) => { data: state.endpointCoverage, method: 'getCoverageReports', successCallback: ({ status, data }) => { - if (status === httpStatusCodes.OK) { + if (status === HTTP_STATUS_OK) { commit(types.SET_COVERAGE_DATA, data); coveragePoll.stop(); diff --git a/app/assets/javascripts/lib/utils/http_status.js b/app/assets/javascripts/lib/utils/http_status.js index c3adb79bcbe..9ca4efe6dfe 100644 --- a/app/assets/javascripts/lib/utils/http_status.js +++ b/app/assets/javascripts/lib/utils/http_status.js @@ -1,4 +1,5 @@ export const HTTP_STATUS_ABORTED = 0; +export const HTTP_STATUS_OK = 200; export const HTTP_STATUS_CREATED = 201; export const HTTP_STATUS_ACCEPTED = 202; export const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203; @@ -28,7 +29,7 @@ const httpStatusCodes = { }; export const successCodes = [ - httpStatusCodes.OK, + HTTP_STATUS_OK, HTTP_STATUS_CREATED, HTTP_STATUS_ACCEPTED, HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION, diff --git a/app/assets/javascripts/lib/utils/poll_until_complete.js b/app/assets/javascripts/lib/utils/poll_until_complete.js index 3545db3a227..dbe54dceb52 100644 --- a/app/assets/javascripts/lib/utils/poll_until_complete.js +++ b/app/assets/javascripts/lib/utils/poll_until_complete.js @@ -1,5 +1,5 @@ import axios from '~/lib/utils/axios_utils'; -import httpStatusCodes from './http_status'; +import { HTTP_STATUS_OK } from './http_status'; import Poll from './poll'; /** @@ -30,7 +30,7 @@ export default (url, config = {}) => data: { url, config }, method: 'axiosGet', successCallback: (response) => { - if (response.status === httpStatusCodes.OK) { + if (response.status === HTTP_STATUS_OK) { resolve(response); eTagPoll.stop(); } diff --git a/app/assets/javascripts/self_monitor/store/actions.js b/app/assets/javascripts/self_monitor/store/actions.js index 7198dbe8b04..d94fd77dd42 100644 --- a/app/assets/javascripts/self_monitor/store/actions.js +++ b/app/assets/javascripts/self_monitor/store/actions.js @@ -1,6 +1,6 @@ import axios from '~/lib/utils/axios_utils'; import { backOff } from '~/lib/utils/common_utils'; -import statusCodes, { HTTP_STATUS_ACCEPTED } from '~/lib/utils/http_status'; +import { HTTP_STATUS_ACCEPTED, HTTP_STATUS_OK } from '~/lib/utils/http_status'; import { __, s__ } from '~/locale'; import * as types from './mutation_types'; @@ -43,7 +43,7 @@ export const requestCreateProject = ({ dispatch, state, commit }) => { export const requestCreateProjectStatus = ({ dispatch, state }, jobId) => { backOffRequest(() => axios.get(state.createProjectStatusEndpoint, { params: { job_id: jobId } })) .then((resp) => { - if (resp.status === statusCodes.OK) { + if (resp.status === HTTP_STATUS_OK) { dispatch('requestCreateProjectSuccess', resp.data); } }) @@ -95,7 +95,7 @@ export const requestDeleteProject = ({ dispatch, state, commit }) => { export const requestDeleteProjectStatus = ({ dispatch, state }, jobId) => { backOffRequest(() => axios.get(state.deleteProjectStatusEndpoint, { params: { job_id: jobId } })) .then((resp) => { - if (resp.status === statusCodes.OK) { + if (resp.status === HTTP_STATUS_OK) { dispatch('requestDeleteProjectSuccess', resp.data); } }) diff --git a/app/assets/javascripts/super_sidebar/components/counter.vue b/app/assets/javascripts/super_sidebar/components/counter.vue index 873d7c48574..d790e61ca31 100644 --- a/app/assets/javascripts/super_sidebar/components/counter.vue +++ b/app/assets/javascripts/super_sidebar/components/counter.vue @@ -6,24 +6,43 @@ export default { GlIcon, }, props: { + count: { + type: Number, + required: true, + }, + href: { + type: String, + required: false, + default: '', + }, icon: { type: String, required: true, }, - count: { - type: Number, + label: { + type: String, required: true, }, }, + computed: { + ariaLabel() { + return `${this.label} ${this.count}`; + }, + component() { + return this.href ? 'a' : 'button'; + }, + }, }; diff --git a/app/assets/javascripts/super_sidebar/components/super_sidebar.vue b/app/assets/javascripts/super_sidebar/components/super_sidebar.vue index e5c29f966c1..e2eac64f5ad 100644 --- a/app/assets/javascripts/super_sidebar/components/super_sidebar.vue +++ b/app/assets/javascripts/super_sidebar/components/super_sidebar.vue @@ -1,6 +1,6 @@