Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/admin/users/components/actions/approve.vue4
-rw-r--r--app/assets/javascripts/admin/users/components/user_actions.vue3
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue39
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue8
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue3
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue33
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue29
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue4
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue12
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue34
-rw-r--r--app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue2
-rw-r--r--app/assets/javascripts/ci/merge_requests/components/pipelines_table_wrapper.vue (renamed from app/assets/javascripts/commit/pipelines/pipelines_table_wrapper.vue)2
-rw-r--r--app/assets/javascripts/commit/pipelines/legacy_pipelines_table_wrapper.vue (renamed from app/assets/javascripts/commit/pipelines/pipelines_table.vue)0
-rw-r--r--app/assets/javascripts/commit/pipelines/pipelines_bundle.js3
-rw-r--r--app/assets/javascripts/merge_request_tabs.js4
-rw-r--r--app/assets/javascripts/search/sidebar/components/archived_filter/data.js1
-rw-r--r--app/assets/javascripts/search/sidebar/components/merge_requests_filters.vue33
-rw-r--r--app/assets/javascripts/vue_shared/components/ci_badge_link.vue3
-rw-r--r--app/assets/stylesheets/page_bundles/build.scss65
-rw-r--r--app/experiments/ios_specific_templates_experiment.rb2
-rw-r--r--app/helpers/users_helper.rb4
-rw-r--r--app/models/hooks/web_hook_log.rb3
-rw-r--r--app/views/admin/groups/_form.html.haml2
-rw-r--r--app/views/admin/groups/_group.html.haml4
-rw-r--r--app/views/admin/groups/index.html.haml2
-rw-r--r--app/views/admin/groups/show.html.haml2
-rw-r--r--app/views/admin/users/_head.html.haml4
-rw-r--r--app/views/admin/users/_users.html.haml4
-rw-r--r--app/views/admin/users/show.html.haml2
29 files changed, 159 insertions, 152 deletions
diff --git a/app/assets/javascripts/admin/users/components/actions/approve.vue b/app/assets/javascripts/admin/users/components/actions/approve.vue
index 5b13bd177ae..bcd17570b95 100644
--- a/app/assets/javascripts/admin/users/components/actions/approve.vue
+++ b/app/assets/javascripts/admin/users/components/actions/approve.vue
@@ -44,7 +44,7 @@ export default {
},
actionPrimary: {
text: I18N_USER_ACTIONS.approve,
- attributes: { variant: 'confirm', 'data-qa-selector': 'approve_user_confirm_button' },
+ attributes: { variant: 'confirm', 'data-testid': 'approve-user-confirm-button' },
},
messageHtml,
},
@@ -55,7 +55,7 @@ export default {
</script>
<template>
- <gl-disclosure-dropdown-item data-qa-selector="approve_user_button" @action="onClick">
+ <gl-disclosure-dropdown-item @action="onClick">
<template #list-item>
<slot></slot>
</template>
diff --git a/app/assets/javascripts/admin/users/components/user_actions.vue b/app/assets/javascripts/admin/users/components/user_actions.vue
index 38c7d3f9b90..a9482d479b6 100644
--- a/app/assets/javascripts/admin/users/components/user_actions.vue
+++ b/app/assets/javascripts/admin/users/components/user_actions.vue
@@ -116,8 +116,7 @@ export default {
category="tertiary"
:toggle-text="$options.i18n.userAdministration"
text-sr-only
- data-testid="dropdown-toggle"
- data-qa-selector="user_actions_dropdown_toggle"
+ data-testid="user-actions-dropdown-toggle"
:data-qa-username="user.username"
no-caret
>
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue b/app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue
index 7f25ca8a94d..95616a4c706 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/commit_block.vue
@@ -22,25 +22,32 @@ export default {
</script>
<template>
<div>
- <span class="gl-font-weight-bold">{{ __('Commit') }}</span>
+ <p class="gl-display-flex gl-flex-wrap gl-align-items-baseline gl-gap-2 gl-mb-0">
+ <span class="gl-display-flex gl-font-weight-bold">{{ __('Commit') }}</span>
- <gl-link :href="commit.commit_path" class="gl-text-blue-600!" data-testid="commit-sha">
- {{ commit.short_id }}
- </gl-link>
+ <gl-link
+ :href="commit.commit_path"
+ class="gl-text-blue-500! gl-font-monospace"
+ data-testid="commit-sha"
+ >
+ {{ commit.short_id }}
+ </gl-link>
- <clipboard-button
- :text="commit.id"
- :title="__('Copy commit SHA')"
- category="tertiary"
- size="small"
- />
+ <clipboard-button
+ :text="commit.id"
+ :title="__('Copy commit SHA')"
+ category="tertiary"
+ size="small"
+ class="gl-align-self-center"
+ />
- <span v-if="mergeRequest">
- {{ __('in') }}
- <gl-link :href="mergeRequest.path" class="gl-text-blue-600!" data-testid="link-commit"
- >!{{ mergeRequest.iid }}</gl-link
- >
- </span>
+ <span v-if="mergeRequest">
+ {{ __('in') }}
+ <gl-link :href="mergeRequest.path" class="gl-text-blue-500!" data-testid="link-commit"
+ >!{{ mergeRequest.iid }}</gl-link
+ >
+ </span>
+ </p>
<p class="gl-mb-0">{{ commit.title }}</p>
</div>
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue b/app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue
index 572544db526..8e87f118fa4 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/job_container_item.vue
@@ -40,7 +40,7 @@ export default {
},
classes() {
return {
- retried: this.job.retried,
+ 'retried gl-text-secondary': this.job.retried,
'gl-font-weight-bold': this.isActive,
};
},
@@ -57,7 +57,7 @@ export default {
v-gl-tooltip.left.viewport
:href="job.status.details_path"
:title="tooltipText"
- class="gl-display-flex gl-align-items-center"
+ class="gl-display-flex gl-align-items-center gl-py-3 gl-pl-7"
:data-testid="dataTestId"
>
<gl-icon
@@ -67,11 +67,11 @@ export default {
:size="14"
/>
- <ci-icon :status="job.status" class="gl-mr-2" :size="14" />
+ <ci-icon :status="job.status" class="gl-mr-3" :size="14" />
<span class="gl-text-truncate gl-w-full">{{ jobName }}</span>
- <gl-icon v-if="job.retried" name="retry" />
+ <gl-icon v-if="job.retried" name="retry" class="gl-mr-4" />
</gl-link>
</div>
</template>
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue b/app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue
index df64b6422c7..18bd2593c2a 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/jobs_container.vue
@@ -24,7 +24,8 @@ export default {
};
</script>
<template>
- <div class="builds-container">
+ <div class="block builds-container">
+ <b class="gl-display-flex gl-mb-2 gl-font-weight-semibold">{{ __('Related jobs') }}</b>
<job-container-item
v-for="job in jobs"
:key="job.id"
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue
index 305d7004357..7f2f4fc0331 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar.vue
@@ -16,7 +16,6 @@ import TriggerBlock from './trigger_block.vue';
export default {
name: 'JobSidebar',
- borderTopClass: ['gl-border-t-solid', 'gl-border-t-1', 'gl-border-t-gray-100'],
forwardDeploymentFailureModalId,
components: {
ArtifactsBlock,
@@ -80,56 +79,44 @@ export default {
<template>
<aside class="right-sidebar build-sidebar" data-offset-top="101" data-spy="affix">
<div class="sidebar-container">
- <div class="blocks-container">
+ <div class="blocks-container gl-p-4">
<sidebar-header
+ class="block gl-pb-4! gl-mb-2"
:rest-job="job"
:job-id="job.id"
@updateVariables="$emit('updateVariables')"
/>
- <job-sidebar-details-container class="gl-py-4" :class="$options.borderTopClass" />
+ <job-sidebar-details-container class="block gl-mb-2" />
<artifacts-block
v-if="hasArtifact"
- class="gl-py-4"
- :class="$options.borderTopClass"
+ class="block gl-mb-2"
:artifact="job.artifact"
:help-url="artifactHelpUrl"
/>
<external-links-block
v-if="hasExternalLinks"
- class="gl-py-4"
- :class="$options.borderTopClass"
+ class="block gl-mb-2"
:external-links="externalLinks"
/>
- <trigger-block
- v-if="hasTriggers"
- class="gl-py-4"
- :class="$options.borderTopClass"
- :trigger="job.trigger"
- />
+ <trigger-block v-if="hasTriggers" class="block gl-mb-2" :trigger="job.trigger" />
- <commit-block
- :commit="commit"
- class="gl-py-4"
- :class="$options.borderTopClass"
- :merge-request="job.merge_request"
- />
+ <commit-block class="block gl-mb-2" :commit="commit" :merge-request="job.merge_request" />
<stages-dropdown
v-if="job.pipeline"
- class="gl-py-4"
- :class="$options.borderTopClass"
+ class="block gl-mb-2"
:pipeline="job.pipeline"
:selected-stage="selectedStage"
:stages="stages"
@requestSidebarStageDropdown="fetchJobsForStage"
/>
- </div>
- <jobs-container v-if="jobs.length" :job-id="job.id" :jobs="jobs" />
+ <jobs-container v-if="jobs.length" :job-id="job.id" :jobs="jobs" />
+ </div>
</div>
<job-retry-forward-deployment-modal
v-if="shouldShowJobRetryForwardDeploymentModal"
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue
index 0ba34eafa58..5b1bf354fd4 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_detail_row.vue
@@ -39,21 +39,26 @@ export default {
};
</script>
<template>
- <p class="gl-display-flex gl-justify-content-space-between gl-mb-2">
- <span v-if="hasTitle">
- <b>{{ title }}:</b>
+ <p class="build-sidebar-item gl-mb-2">
+ <b v-if="hasTitle" class="gl-display-flex">{{ title }}:</b>
+ <gl-link
+ v-if="path"
+ :href="path"
+ class="gl-text-blue-600!"
+ data-testid="job-sidebar-value-link"
+ >
+ {{ value }}
+ </gl-link>
+ <span v-else
+ >{{ value }}
<gl-link
- v-if="path"
- :href="path"
- class="gl-text-blue-600!"
- data-testid="job-sidebar-value-link"
+ v-if="hasHelpURL"
+ :href="helpUrl"
+ target="_blank"
+ data-testid="job-sidebar-help-link"
>
- {{ value }}
+ <gl-icon name="question-o" class="gl-ml-2 gl-text-blue-500" />
</gl-link>
- <span v-else>{{ value }}</span>
</span>
- <gl-link v-if="hasHelpURL" :href="helpUrl" target="_blank" data-testid="job-sidebar-help-link">
- <gl-icon name="question-o" />
- </gl-link>
</p>
</template>
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue
index d4de53f9807..77e3ecb9b3c 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_header.vue
@@ -93,7 +93,7 @@ export default {
</script>
<template>
- <div class="gl-py-4">
+ <div>
<tooltip-on-truncate :title="job.name" truncate-target="child"
><h4 class="gl-mt-0 gl-mb-3 gl-text-truncate" data-testid="job-name">{{ job.name }}</h4>
</tooltip-on-truncate>
@@ -158,7 +158,7 @@ export default {
/>
<gl-button
:aria-label="$options.i18n.toggleSidebar"
- category="tertiary"
+ category="secondary"
class="gl-md-display-none gl-ml-2"
icon="chevron-double-lg-right"
@click="toggleSidebar"
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue
index 09335476008..ebef3ecaa3f 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/sidebar_job_details_container.vue
@@ -44,10 +44,14 @@ export default {
this.job.finished_at ||
this.job.erased_at ||
this.job.queued_duration ||
+ this.job.id ||
this.job.runner ||
this.job.coverage,
);
},
+ jobId() {
+ return this.job?.id ? `#${this.job.id}` : '';
+ },
runnerId() {
const { id, short_sha: token, description } = this.job.runner;
@@ -81,8 +85,9 @@ export default {
ERASED: __('Erased'),
QUEUED: __('Queued'),
RUNNER: __('Runner'),
- TAGS: __('Tags:'),
+ TAGS: __('Tags'),
TIMEOUT: __('Timeout'),
+ ID: __('Job ID'),
},
TIMEOUT_HELP_URL: helpPagePath('/ci/pipelines/settings.md', {
anchor: 'set-a-limit-for-how-long-jobs-can-run',
@@ -108,6 +113,7 @@ export default {
data-testid="job-timeout"
:title="$options.i18n.TIMEOUT"
/>
+ <detail-row v-if="job.id" :value="jobId" :title="$options.i18n.ID" />
<detail-row
v-if="job.runner"
:value="runnerId"
@@ -117,8 +123,8 @@ export default {
<detail-row v-if="job.coverage" :value="coverage" :title="$options.i18n.COVERAGE" />
<p v-if="hasTags" class="build-detail-row" data-testid="job-tags">
- <span class="font-weight-bold">{{ $options.i18n.TAGS }}</span>
- <gl-badge v-for="(tag, i) in job.tags" :key="i" variant="info">{{ tag }}</gl-badge>
+ <span class="font-weight-bold">{{ $options.i18n.TAGS }}:</span>
+ <gl-badge v-for="(tag, i) in job.tags" :key="i" variant="info" size="sm">{{ tag }}</gl-badge>
</p>
</div>
</template>
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue b/app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue
index 3fee1427256..4ccd949e754 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/stages_dropdown.vue
@@ -1,20 +1,20 @@
<script>
import { GlLink, GlDisclosureDropdown, GlSprintf } from '@gitlab/ui';
import { isEmpty } from 'lodash';
+import CiBadgeLink from '~/vue_shared/components/ci_badge_link.vue';
import { Mousetrap } from '~/lib/mousetrap';
import { s__ } from '~/locale';
-import CiIcon from '~/vue_shared/components/ci_icon.vue';
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
import { clickCopyToClipboardButton } from '~/behaviors/copy_to_clipboard';
import { keysFor, MR_COPY_SOURCE_BRANCH_NAME } from '~/behaviors/shortcuts/keybindings';
export default {
components: {
- CiIcon,
ClipboardButton,
GlDisclosureDropdown,
GlLink,
GlSprintf,
+ CiBadgeLink,
},
props: {
pipeline: {
@@ -51,13 +51,13 @@ export default {
},
pipelineInfo() {
if (!this.hasRef) {
- return s__('Job|%{boldStart}Pipeline%{boldEnd} %{id}');
+ return s__('Job|%{boldStart}Pipeline%{boldEnd} %{id} %{status}');
}
if (!this.isTriggeredByMergeRequest) {
- return s__('Job|%{boldStart}Pipeline%{boldEnd} %{id} for %{ref}');
+ return s__('Job|%{boldStart}Pipeline%{boldEnd} %{id} %{status} for %{ref}');
}
if (!this.isMergeRequestPipeline) {
- return s__('Job|%{boldStart}Pipeline%{boldEnd} %{id} for %{mrId} with %{source}');
+ return s__('Job|%{boldStart}Pipeline%{boldEnd} %{id} %{status} for %{mrId} with %{source}');
}
return s__(
@@ -94,24 +94,30 @@ export default {
</script>
<template>
<div class="dropdown">
- <div class="js-pipeline-info" data-testid="pipeline-info">
- <ci-icon :status="pipeline.details.status" />
+ <div class="gl-display-flex gl-flex-wrap gl-gap-2 js-pipeline-info" data-testid="pipeline-info">
<gl-sprintf :message="pipelineInfo">
<template #bold="{ content }">
- <span class="font-weight-bold">{{ content }}</span>
+ <span class="gl-display-flex gl-font-weight-bold">{{ content }}</span>
</template>
<template #id>
<gl-link
:href="pipeline.path"
- class="js-pipeline-path link-commit"
+ class="js-pipeline-path link-commit gl-text-blue-500!"
data-testid="pipeline-path"
>#{{ pipeline.id }}</gl-link
>
</template>
+ <template #status>
+ <ci-badge-link
+ :status="pipeline.details.status"
+ badge-size="sm"
+ data-testid="pipeline-status-link"
+ />
+ </template>
<template #mrId>
<gl-link
:href="pipeline.merge_request.path"
- class="link-commit ref-name"
+ class="link-commit ref-name gl-text-blue-500!"
data-testid="mr-link"
>!{{ pipeline.merge_request.iid }}</gl-link
>
@@ -119,7 +125,7 @@ export default {
<template #ref>
<gl-link
:href="pipeline.ref.path"
- class="link-commit ref-name"
+ class="link-commit ref-name gl-mt-1"
data-testid="source-ref-link"
>{{ pipeline.ref.name }}</gl-link
><clipboard-button
@@ -134,7 +140,7 @@ export default {
<template #source>
<gl-link
:href="pipeline.merge_request.source_branch_path"
- class="link-commit ref-name"
+ class="link-commit ref-name gl-mt-1"
data-testid="source-branch-link"
>{{ pipeline.merge_request.source_branch }}</gl-link
><clipboard-button
@@ -149,7 +155,7 @@ export default {
<template #target>
<gl-link
:href="pipeline.merge_request.target_branch_path"
- class="link-commit ref-name"
+ class="link-commit ref-name gl-mt-1"
data-testid="target-branch-link"
>{{ pipeline.merge_request.target_branch }}</gl-link
><clipboard-button
@@ -167,7 +173,7 @@ export default {
:toggle-text="selectedStage"
:items="dropdownItems"
block
- class="gl-mt-3"
+ class="gl-mt-2"
/>
</div>
</template>
diff --git a/app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue b/app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue
index c9172fe0322..315587a3376 100644
--- a/app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue
+++ b/app/assets/javascripts/ci/job_details/components/sidebar/trigger_block.vue
@@ -68,7 +68,7 @@ export default {
<template v-if="hasVariables">
<p class="gl-display-flex gl-justify-content-space-between gl-align-items-center">
- <span class="gl-font-weight-bold">{{ __('Trigger variables:') }}</span>
+ <span class="gl-display-flex gl-font-weight-bold">{{ __('Trigger variables') }}</span>
<gl-button
v-if="hasValues"
diff --git a/app/assets/javascripts/commit/pipelines/pipelines_table_wrapper.vue b/app/assets/javascripts/ci/merge_requests/components/pipelines_table_wrapper.vue
index f9b95c233ad..ee911d716e4 100644
--- a/app/assets/javascripts/commit/pipelines/pipelines_table_wrapper.vue
+++ b/app/assets/javascripts/ci/merge_requests/components/pipelines_table_wrapper.vue
@@ -1,10 +1,10 @@
<script>
import { GlLoadingIcon } from '@gitlab/ui';
-import getMergeRequestPipelines from '~/ci/merge_requests/graphql/queries/get_merge_request_pipelines.query.graphql';
import { createAlert } from '~/alert';
import { __ } from '~/locale';
import { getQueryHeaders } from '~/ci/pipeline_details/graph/utils';
import { graphqlEtagMergeRequestPipelines } from '~/ci/pipeline_details/utils';
+import getMergeRequestPipelines from '../graphql/queries/get_merge_request_pipelines.query.graphql';
export default {
components: {
diff --git a/app/assets/javascripts/commit/pipelines/pipelines_table.vue b/app/assets/javascripts/commit/pipelines/legacy_pipelines_table_wrapper.vue
index 5e84dcbe48e..5e84dcbe48e 100644
--- a/app/assets/javascripts/commit/pipelines/pipelines_table.vue
+++ b/app/assets/javascripts/commit/pipelines/legacy_pipelines_table_wrapper.vue
diff --git a/app/assets/javascripts/commit/pipelines/pipelines_bundle.js b/app/assets/javascripts/commit/pipelines/pipelines_bundle.js
index 96c274225d8..beeb9b9ada4 100644
--- a/app/assets/javascripts/commit/pipelines/pipelines_bundle.js
+++ b/app/assets/javascripts/commit/pipelines/pipelines_bundle.js
@@ -26,7 +26,8 @@ export default () => {
if (pipelineTableViewEl.dataset.disableInitialization === undefined) {
const table = new Vue({
components: {
- CommitPipelinesTable: () => import('~/commit/pipelines/pipelines_table.vue'),
+ CommitPipelinesTable: () =>
+ import('~/commit/pipelines/legacy_pipelines_table_wrapper.vue'),
},
apolloProvider,
provide: {
diff --git a/app/assets/javascripts/merge_request_tabs.js b/app/assets/javascripts/merge_request_tabs.js
index 9279e7ca935..1bc67522e82 100644
--- a/app/assets/javascripts/merge_request_tabs.js
+++ b/app/assets/javascripts/merge_request_tabs.js
@@ -95,8 +95,8 @@ function mountPipelines() {
components: {
CommitPipelinesTable: () => {
return gon.features.mrPipelinesGraphql
- ? import('~/commit/pipelines/pipelines_table_wrapper.vue')
- : import('~/commit/pipelines/pipelines_table.vue');
+ ? import('~/ci/merge_requests/components/pipelines_table_wrapper.vue')
+ : import('~/commit/pipelines/legacy_pipelines_table_wrapper.vue');
},
},
apolloProvider,
diff --git a/app/assets/javascripts/search/sidebar/components/archived_filter/data.js b/app/assets/javascripts/search/sidebar/components/archived_filter/data.js
index d765a821116..831e253a0b6 100644
--- a/app/assets/javascripts/search/sidebar/components/archived_filter/data.js
+++ b/app/assets/javascripts/search/sidebar/components/archived_filter/data.js
@@ -8,6 +8,7 @@ export const TRACKING_LABEL_CHECKBOX = 'checkbox';
const scopes = {
PROJECTS: 'projects',
ISSUES: 'issues',
+ MERGE_REQUESTS: 'merge_requests',
};
const filterParam = 'include_archived';
diff --git a/app/assets/javascripts/search/sidebar/components/merge_requests_filters.vue b/app/assets/javascripts/search/sidebar/components/merge_requests_filters.vue
index bc5b797dd56..2845eb2049b 100644
--- a/app/assets/javascripts/search/sidebar/components/merge_requests_filters.vue
+++ b/app/assets/javascripts/search/sidebar/components/merge_requests_filters.vue
@@ -1,18 +1,49 @@
<script>
+// eslint-disable-next-line no-restricted-imports
+import { mapGetters, mapState } from 'vuex';
+import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
+import { HR_DEFAULT_CLASSES, SEARCH_TYPE_ADVANCED } from '../constants';
+import { statusFilterData } from './status_filter/data';
import StatusFilter from './status_filter/index.vue';
import FiltersTemplate from './filters_template.vue';
+import { archivedFilterData } from './archived_filter/data';
+import ArchivedFilter from './archived_filter/index.vue';
export default {
name: 'MergeRequestsFilters',
components: {
StatusFilter,
FiltersTemplate,
+ ArchivedFilter,
+ },
+ mixins: [glFeatureFlagsMixin()],
+ computed: {
+ ...mapGetters(['currentScope']),
+ ...mapState(['useSidebarNavigation', 'searchType']),
+ showArchivedFilter() {
+ return (
+ Object.values(archivedFilterData.scopes).includes(this.currentScope) &&
+ this.glFeatures.searchMergeRequestsHideArchivedProjects &&
+ this.searchType === SEARCH_TYPE_ADVANCED
+ );
+ },
+ showStatusFilter() {
+ return Object.values(statusFilterData.scopes).includes(this.currentScope);
+ },
+ showDivider() {
+ return !this.useSidebarNavigation;
+ },
+ hrClasses() {
+ return [...HR_DEFAULT_CLASSES, 'gl-display-none', 'gl-md-display-block'];
+ },
},
};
</script>
<template>
<filters-template>
- <status-filter class="gl-mb-5" />
+ <status-filter v-if="showStatusFilter" class="gl-mb-5" />
+ <hr v-if="showArchivedFilter && showDivider" :class="hrClasses" />
+ <archived-filter v-if="showArchivedFilter" class="gl-mb-5" />
</filters-template>
</template>
diff --git a/app/assets/javascripts/vue_shared/components/ci_badge_link.vue b/app/assets/javascripts/vue_shared/components/ci_badge_link.vue
index 9a3f1672d01..d25f40b1af9 100644
--- a/app/assets/javascripts/vue_shared/components/ci_badge_link.vue
+++ b/app/assets/javascripts/vue_shared/components/ci_badge_link.vue
@@ -120,13 +120,12 @@ export default {
<template>
<gl-badge
v-gl-tooltip
- :class="{ 'gl-pl-0!': isSmallBadgeSize }"
+ :class="{ 'gl-pl-2': isSmallBadgeSize }"
:title="title"
:href="detailsPath"
:size="badgeSize"
:variant="badgeStyles.variant"
data-testid="ci-badge-link"
- data-qa-selector="status_badge_link"
@click="$emit('ciStatusBadgeClick')"
>
<ci-icon :status="status" />
diff --git a/app/assets/stylesheets/page_bundles/build.scss b/app/assets/stylesheets/page_bundles/build.scss
index 5d84b6004ee..09c4d184f3f 100644
--- a/app/assets/stylesheets/page_bundles/build.scss
+++ b/app/assets/stylesheets/page_bundles/build.scss
@@ -89,8 +89,6 @@
}
.right-sidebar.build-sidebar {
- padding: 0;
-
&.right-sidebar-collapsed {
display: none;
}
@@ -103,29 +101,6 @@
-webkit-overflow-scrolling: touch;
}
- .blocks-container {
- padding: 0 $gl-padding;
- width: 289px;
- }
-
- .trigger-variables-btn-container {
- justify-content: space-between;
- align-items: center;
-
- .trigger-variables-btn {
- margin-top: -5px;
- margin-bottom: -5px;
- }
- }
-
- .trigger-build-variables {
- margin: 0;
- overflow-x: auto;
- width: 100%;
- -ms-overflow-style: scrollbar;
- -webkit-overflow-scrolling: touch;
- }
-
.trigger-build-variable {
font-weight: $gl-font-weight-normal;
color: var(--gray-950, $gray-950);
@@ -145,38 +120,20 @@
vertical-align: top;
}
- .badge.badge-pill {
- margin-left: 2px;
+ .blocks-container {
+ width: 289px;
}
- .stage-item {
- cursor: pointer;
-
- &:hover {
- color: var(--gl-text-color, $gl-text-color);
- }
+ .block {
+ width: 262px;
}
.builds-container {
- background-color: var(--white, $white);
- border-top: 1px solid var(--border-color, $border-color);
- border-bottom: 1px solid var(--border-color, $border-color);
- max-height: 300px;
- width: 289px;
overflow: auto;
- a {
- padding: $gl-padding 10px $gl-padding 40px;
- width: 270px;
-
- &:hover {
- color: var(--gl-text-color, $gl-text-color);
- }
- }
-
.icon-arrow-right {
- left: 15px;
- top: 20px;
+ left: 8px;
+ top: 12px;
}
.build-job {
@@ -195,9 +152,15 @@
.container-fluid.container-limited {
max-width: 100%;
}
+}
+
+.build-sidebar-item {
+ display: grid;
+ grid-template-columns: 1fr 2fr;
+ grid-gap: $gl-padding-8;
- .content-wrapper {
- padding-bottom: 6px;
+ &:last-of-type {
+ @include gl-mb-0;
}
}
diff --git a/app/experiments/ios_specific_templates_experiment.rb b/app/experiments/ios_specific_templates_experiment.rb
index 1731fa87be8..5bd4a3d0287 100644
--- a/app/experiments/ios_specific_templates_experiment.rb
+++ b/app/experiments/ios_specific_templates_experiment.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class IosSpecificTemplatesExperiment < ApplicationExperiment
+ control
+
before_run(if: :skip_experiment) { throw(:abort) } # rubocop:disable Cop/BanCatchThrow
private
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index ac279904fd2..30f8f6fdfe5 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -164,7 +164,7 @@ module UsersHelper
messageHtml: message,
actionPrimary: {
text: s_('AdminUsers|Confirm user'),
- attributes: [{ variant: 'confirm', 'data-qa-selector': 'confirm_user_confirm_button' }]
+ attributes: [{ variant: 'confirm', 'data-testid': 'confirm-user-confirm-button' }]
},
actionSecondary: {
text: _('Cancel'),
@@ -176,7 +176,7 @@ module UsersHelper
path: confirm_admin_user_path(user),
method: 'put',
modal_attributes: modal_attributes,
- qa_selector: 'confirm_user_button'
+ testid: 'confirm-user-button'
}
end
diff --git a/app/models/hooks/web_hook_log.rb b/app/models/hooks/web_hook_log.rb
index 2846c970d53..3e0c8e7c472 100644
--- a/app/models/hooks/web_hook_log.rb
+++ b/app/models/hooks/web_hook_log.rb
@@ -1,7 +1,6 @@
# frozen_string_literal: true
class WebHookLog < ApplicationRecord
- include SafeUrl
include Presentable
include DeleteWithLimit
include CreatedAtFilterable
@@ -69,7 +68,7 @@ class WebHookLog < ApplicationRecord
private
def obfuscate_basic_auth
- self.url = safe_url
+ self.url = Gitlab::UrlSanitizer.sanitize_masked_url(url)
end
def redact_user_emails
diff --git a/app/views/admin/groups/_form.html.haml b/app/views/admin/groups/_form.html.haml
index b708564e23a..2da28910af3 100644
--- a/app/views/admin/groups/_form.html.haml
+++ b/app/views/admin/groups/_form.html.haml
@@ -41,6 +41,6 @@
- else
.gl-mt-5
- = f.submit _('Save changes'), data: { qa_selector: 'save_changes_button' }, pajamas_button: true
+ = f.submit _('Save changes'), data: { testid: 'save-changes-button' }, pajamas_button: true
= render Pajamas::ButtonComponent.new(href: admin_group_path(@group)) do
= _('Cancel')
diff --git a/app/views/admin/groups/_group.html.haml b/app/views/admin/groups/_group.html.haml
index 20d24161c57..0c4bf91f545 100644
--- a/app/views/admin/groups/_group.html.haml
+++ b/app/views/admin/groups/_group.html.haml
@@ -1,11 +1,11 @@
- group = local_assigns.fetch(:group)
-%li.group-row.gl-py-3.gl-align-items-center{ class: 'gl-display-flex!', data: { qa_selector: 'group_row_content' } }
+%li.group-row.gl-py-3.gl-align-items-center{ class: 'gl-display-flex!', data: { testid: 'group-row-content' } }
= render Pajamas::AvatarComponent.new(group, size: 32, alt: '')
.gl-min-w-0.gl-flex-grow-1.gl-ml-3
.title
- = link_to [:admin, group], class: 'group-name', data: { qa_selector: 'group_name_link' } do
+ = link_to [:admin, group], class: 'group-name', data: { testid: 'group-name-link' } do
= group.full_name
- if group.description.present?
diff --git a/app/views/admin/groups/index.html.haml b/app/views/admin/groups/index.html.haml
index 2a49b9c5ad8..9f42897d1da 100644
--- a/app/views/admin/groups/index.html.haml
+++ b/app/views/admin/groups/index.html.haml
@@ -7,7 +7,7 @@
= hidden_field_tag :sort, @sort
.search-holder
.search-field-holder
- = search_field_tag :name, params[:name].presence, class: "form-control search-text-input js-search-input", autofocus: true, spellcheck: false, placeholder: 'Search by name', data: { qa_selector: 'group_search_field' }
+ = search_field_tag :name, params[:name].presence, class: "form-control search-text-input js-search-input", autofocus: true, spellcheck: false, placeholder: 'Search by name', data: { testid: 'group-search-field' }
= sprite_icon('search', css_class: 'search-icon')
= render "shared/groups/dropdown", options_hash: admin_groups_sort_options_hash
= render Pajamas::ButtonComponent.new(variant: :confirm, href: new_admin_group_path) do
diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml
index 5f5f6c98663..f7a49c88d78 100644
--- a/app/views/admin/groups/show.html.haml
+++ b/app/views/admin/groups/show.html.haml
@@ -8,7 +8,7 @@
= _('Group: %{group_name}') % { group_name: @group.full_name }
= render Pajamas::ButtonComponent.new(href: admin_group_edit_path(@group),
- button_options: { class: 'gl-float-right', data: { qa_selector: 'edit_group_link' }},
+ button_options: { class: 'gl-float-right', data: { testid: 'edit-group-link' }},
icon: 'pencil') do
= _('Edit')
%hr
diff --git a/app/views/admin/users/_head.html.haml b/app/views/admin/users/_head.html.haml
index 8f7741b8a32..f6b7db2032f 100644
--- a/app/views/admin/users/_head.html.haml
+++ b/app/views/admin/users/_head.html.haml
@@ -31,7 +31,7 @@
- if impersonation_enabled?
.gl-p-2
%span.btn-group{ class: !@can_impersonate ? 'has-tooltip' : nil, title: @impersonation_error_text }
- = render Pajamas::ButtonComponent.new(disabled: !@can_impersonate, method: :post, href: impersonate_admin_user_path(@user), button_options: { data: { qa_selector: 'impersonate_user_link', testid: 'impersonate_user_link' } }) do
+ = render Pajamas::ButtonComponent.new(disabled: !@can_impersonate, method: :post, href: impersonate_admin_user_path(@user), button_options: { data: { testid: 'impersonate-user-link' } }) do
= _('Impersonate')
- if can_force_email_confirmation?(@user)
.gl-p-2
@@ -48,5 +48,5 @@
= gl_tab_link_to _("SSH keys"), keys_admin_user_path(@user)
= gl_tab_link_to _("Identities"), admin_user_identities_path(@user)
- if impersonation_enabled?
- = gl_tab_link_to _("Impersonation Tokens"), admin_user_impersonation_tokens_path(@user), data: { qa_selector: 'impersonation_tokens_tab' }
+ = gl_tab_link_to _("Impersonation Tokens"), admin_user_impersonation_tokens_path(@user), data: { testid: 'impersonation-tokens-tab' }
.gl-mb-3
diff --git a/app/views/admin/users/_users.html.haml b/app/views/admin/users/_users.html.haml
index 213d5847986..d4a9009a0cf 100644
--- a/app/views/admin/users/_users.html.haml
+++ b/app/views/admin/users/_users.html.haml
@@ -35,7 +35,7 @@
= gl_tab_link_to admin_users_path(filter: "banned"), { item_active: active_when(params[:filter] == 'banned'), class: 'gl-border-0!' } do
= s_('AdminUsers|Banned')
= gl_tab_counter_badge(limited_counter_with_delimiter(User.banned))
- = gl_tab_link_to admin_users_path(filter: "blocked_pending_approval"), { item_active: active_when(params[:filter] == 'blocked_pending_approval'), class: 'filter-blocked-pending-approval gl-border-0!', data: { qa_selector: 'pending_approval_tab' } } do
+ = gl_tab_link_to admin_users_path(filter: "blocked_pending_approval"), { item_active: active_when(params[:filter] == 'blocked_pending_approval'), class: 'filter-blocked-pending-approval gl-border-0!', data: { testid: 'pending-approval-tab' } } do
= s_('AdminUsers|Pending approval')
= gl_tab_counter_badge(limited_counter_with_delimiter(User.blocked_pending_approval))
= gl_tab_link_to admin_users_path(filter: "deactivated"), { item_active: active_when(params[:filter] == 'deactivated'), class: 'gl-border-0!' } do
@@ -56,7 +56,7 @@
= hidden_field_tag "filter", h(params[:filter])
.search-holder
.search-field-holder.gl-mb-4
- = search_field_tag :search_query, params[:search_query], placeholder: s_('AdminUsers|Search by name, email, or username'), class: 'form-control search-text-input js-search-input', spellcheck: false, data: { qa_selector: 'user_search_field' }
+ = search_field_tag :search_query, params[:search_query], placeholder: s_('AdminUsers|Search by name, email, or username'), class: 'form-control search-text-input js-search-input', spellcheck: false, data: { testid: 'user-search-field' }
- if @sort.present?
= hidden_field_tag :sort, @sort
= sprite_icon('search', css_class: 'search-icon')
diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml
index 8ab81fa862c..4cc3e12a8ad 100644
--- a/app/views/admin/users/show.html.haml
+++ b/app/views/admin/users/show.html.haml
@@ -45,7 +45,7 @@
= link_button_to nil, remove_email_admin_user_path(@user, email), data: { confirm: _("Are you sure you want to remove %{email}?") % { email: email.email }, 'confirm-btn-variant': 'danger' }, method: :delete, class: 'float-right', title: _('Remove secondary email'), id: "remove_email_#{email.id}", variant: :danger, size: :small, icon: 'close'
%li
%span.light ID:
- %strong{ data: { qa_selector: 'user_id_content' } }
+ %strong{ data: { testid: 'user-id-content' } }
= @user.id
%li
%span.light= _('Namespace ID:')