Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2024-06-06 12:22:53 +00:00
parent 14dc95c832
commit d8ee0721db
168 changed files with 969 additions and 282 deletions

View File

@ -95,6 +95,7 @@ qa:selectors:
.pipeline-tier-base:
extends:
- .preflight-job-base
image: alpine:latest
variables:
GIT_STRATEGY: none
script:

View File

@ -2962,6 +2962,8 @@
.preflight:rules:pipeline-tier-1:
rules:
- <<: *if-merge-request-labels-pipeline-expedite
when: never
- <<: *if-merge-request-tier-1
allow_failure: true
- !reference [".prevent-tier-2-and-above", rules]

View File

@ -168,19 +168,6 @@ Layout/ArgumentAlignment:
- 'lib/gitlab/diff/rendered/notebook/diff_file.rb'
- 'lib/gitlab/diff/suggestions_parser.rb'
- 'lib/gitlab/email/hook/delivery_metrics_observer.rb'
- 'rubocop/cop/rspec/modify_sidekiq_middleware.rb'
- 'scripts/packages/automated_cleanup.rb'
- 'scripts/rubocop-parse'
- 'sidekiq_cluster/sidekiq_cluster.rb'
- 'spec/benchmarks/banzai_benchmark.rb'
- 'spec/components/previews/pajamas/alert_component_preview.rb'
- 'spec/components/previews/pajamas/banner_component_preview.rb'
- 'spec/components/previews/pajamas/button_component_preview.rb'
- 'spec/graphql/features/authorization_spec.rb'
- 'spec/initializers/secret_token_spec.rb'
- 'spec/lib/api/every_api_endpoint_spec.rb'
- 'spec/lib/atlassian/jira_connect/client_spec.rb'
- 'spec/lib/backup/dump/postgres_spec.rb'
- 'spec/lib/backup/manager_spec.rb'
- 'spec/lib/bulk_imports/common/pipelines/lfs_objects_pipeline_spec.rb'
- 'spec/lib/container_registry/blob_spec.rb'

View File

@ -1 +1 @@
bb9d396df20bb7abda6fac6bf155ae30b939e41f
3c57fe552dc067f60db94b398d26592fcf4502c0

View File

@ -575,17 +575,17 @@
{"name":"rouge","version":"4.2.0","platform":"ruby","checksum":"60dd666b3a223467dc72f5b7384764dfd7ad4e50b0df9eff072be58123506eba"},
{"name":"rqrcode","version":"2.2.0","platform":"ruby","checksum":"23eea88bb44c7ee6d6cab9354d08c287f7ebcdc6112e1fe7bcc2d010d1ffefc1"},
{"name":"rqrcode_core","version":"1.2.0","platform":"ruby","checksum":"cf4989dc82d24e2877984738c4ee569308625fed2a810960f1b02d68d0308d1a"},
{"name":"rspec","version":"3.12.0","platform":"ruby","checksum":"ccc41799a43509dc0be84070e3f0410ac95cbd480ae7b6c245543eb64162399c"},
{"name":"rspec","version":"3.13.0","platform":"ruby","checksum":"d490914ac1d5a5a64a0e1400c1d54ddd2a501324d703b8cfe83f458337bab993"},
{"name":"rspec-benchmark","version":"0.6.0","platform":"ruby","checksum":"1014adb57ec2599a2455c63884229f367a2fff6a63a77fd68ce5d804c83dd6cf"},
{"name":"rspec-core","version":"3.12.2","platform":"ruby","checksum":"155b54480f28e2b2813185077fe435c2d663031616360ed3b179a9d6a55d2551"},
{"name":"rspec-expectations","version":"3.12.3","platform":"ruby","checksum":"093d18e2e7e0a2c619ef8f7343d442fc6c0793fb7897d56f16f26c8a9d244416"},
{"name":"rspec-mocks","version":"3.12.6","platform":"ruby","checksum":"de51a4148ba2ce6f1c1646a2a03e9df2f52da9a42b164f2e7467b2cbe37e07bf"},
{"name":"rspec-core","version":"3.13.0","platform":"ruby","checksum":"557792b4e88da883d580342b263d9652b6a10a12d5bda9ef967b01a48f15454c"},
{"name":"rspec-expectations","version":"3.13.0","platform":"ruby","checksum":"621d48c62262f955421eaa418130744760802cad47e781df70dba4d9f897102e"},
{"name":"rspec-mocks","version":"3.13.1","platform":"ruby","checksum":"087189899c337937bcf1d66a50dc3fc999ac88335bbeba4d385c2a38c87d7b38"},
{"name":"rspec-parameterized","version":"1.0.2","platform":"ruby","checksum":"b456dec0091924175ac13963e173cdbaa2ab3e1581a405a948addc34e3f3f4c2"},
{"name":"rspec-parameterized-core","version":"1.0.0","platform":"ruby","checksum":"287b494985e79821160af63aba4f91db8dbfa9a21cb200db34ba38f40e16ccc1"},
{"name":"rspec-parameterized-table_syntax","version":"1.0.0","platform":"ruby","checksum":"d7df951eff9c5dd367ca7d5f9ae4853bb7ab7941f9d5b35bba361d112704988c"},
{"name":"rspec-rails","version":"6.1.1","platform":"ruby","checksum":"bd949e61f89379f410ea1e43133163282f8d977c683ce6d10bf5aef6b1e995b2"},
{"name":"rspec-rails","version":"6.1.2","platform":"ruby","checksum":"02874ab2e3b09001742af389c48739bed8706943e453afaea5e12614a83b990b"},
{"name":"rspec-retry","version":"0.6.2","platform":"ruby","checksum":"6101ba23a38809811ae3484acde4ab481c54d846ac66d5037ccb40131a60d858"},
{"name":"rspec-support","version":"3.12.0","platform":"ruby","checksum":"dd4d44b247ff679b95b5607ac5641d197a5f9b1d33f916123cb98fc5f917c58b"},
{"name":"rspec-support","version":"3.13.1","platform":"ruby","checksum":"48877d4f15b772b7538f3693c22225f2eda490ba65a0515c4e7cf6f2f17de70f"},
{"name":"rspec_junit_formatter","version":"0.6.0","platform":"ruby","checksum":"40dde674e6ae4e6cc0ff560da25497677e34fefd2338cc467a8972f602b62b15"},
{"name":"rspec_profiling","version":"0.0.9","platform":"ruby","checksum":"6199be2daeaa14bac3d10d704dbb0a8df052cf046332c505603263aea24f7590"},
{"name":"rubocop","version":"1.62.1","platform":"ruby","checksum":"aeb1ec501aef5833617b3b6a1512303806218c349c28ce5b3ea72e3782ad4a35"},

View File

@ -1525,23 +1525,23 @@ GEM
chunky_png (~> 1.0)
rqrcode_core (~> 1.0)
rqrcode_core (1.2.0)
rspec (3.12.0)
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-benchmark (0.6.0)
benchmark-malloc (~> 0.2)
benchmark-perf (~> 0.6)
benchmark-trend (~> 0.4)
rspec (>= 3.0)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.3)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.6)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-support (~> 3.13.0)
rspec-parameterized (1.0.2)
rspec-parameterized-core (< 2)
rspec-parameterized-table_syntax (< 2)
@ -1553,17 +1553,17 @@ GEM
rspec-parameterized-table_syntax (1.0.0)
binding_of_caller
rspec-parameterized-core (< 2)
rspec-rails (6.1.1)
rspec-rails (6.1.2)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-core (~> 3.12)
rspec-expectations (~> 3.12)
rspec-mocks (~> 3.12)
rspec-support (~> 3.12)
rspec-core (~> 3.13)
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.12.0)
rspec-support (3.13.1)
rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
rspec_profiling (0.0.9)

View File

@ -39,7 +39,7 @@ export default {
<div>
<nav class="review-bar-component js-review-bar" data-testid="review_bar_component">
<div
class="review-bar-content d-flex gl-justify-content-end"
class="review-bar-content gl-flex gl-justify-content-end"
data-testid="review-bar-content"
>
<preview-dropdown />

View File

@ -42,7 +42,7 @@ export default {
};
</script>
<template>
<div class="file-header-content d-flex gl-align-items-center gl-leading-1">
<div class="file-header-content gl-flex gl-align-items-center gl-leading-1">
<slot name="filepath-prepend"></slot>
<template v-if="fileName">

View File

@ -96,7 +96,7 @@ export default {
:key="user.username"
:value="user.username"
>
<div class="d-flex">
<div class="gl-flex">
<gl-avatar :size="32" :src="user.avatar_url" />
<div>
<div>{{ user.name }}</div>

View File

@ -63,9 +63,9 @@ export default {
</script>
<template>
<div class="d-flex gl-flex-direction-column">
<div class="gl-flex gl-flex-direction-column">
<gl-form-group>
<div class="gl-display-flex gl-align-items-center">
<div class="gl-flex gl-align-items-center">
<h4 class="gl-pr-3 gl-m-0">{{ s__('ClusterIntegration|GitLab Integration') }}</h4>
<div class="js-cluster-enable-toggle-area">
@ -136,7 +136,7 @@ export default {
</gl-sprintf>
</div>
</gl-form-group>
<div v-if="editable" class="form group gl-display-flex gl-justify-content-end">
<div v-if="editable" class="form group gl-flex gl-justify-content-end">
<gl-button
category="primary"
variant="confirm"

View File

@ -105,7 +105,7 @@ function createLink(data, selected, options, index) {
link.href = getPropertyWithDefault(data, options, 'url', '#');
if (options.icon) {
link.classList.add('d-flex', 'align-items-center');
link.classList.add('gl-flex', 'align-items-center');
}
if (options.trackSuggestionClickedLabel) {

View File

@ -754,7 +754,7 @@ export default {
<div
:data-can-create-note="getNoteableData.current_user.can_create_note"
class="files d-flex gl-mt-2"
class="files gl-flex gl-mt-2"
>
<diffs-file-tree :visible="renderFileTree" @toggled="fileTreeToggled" />
<div class="col-12 col-md-auto diff-files-holder">

View File

@ -117,7 +117,7 @@ export default {
</gl-button-group>
</div>
<div>
<div class="d-flex float-left gl-align-items-center align-self-start">
<div class="gl-flex float-left gl-items-center align-self-start">
<gl-form-checkbox
v-if="isSelectable"
:checked="checked"

View File

@ -190,7 +190,7 @@ export default {
</div>
<gl-sprintf
v-else-if="!commit && hasSourceVersions"
class="d-flex gl-align-items-center compare-versions-container"
class="gl-flex gl-items-center compare-versions-container"
:message="s__('MergeRequest|Compare %{target} and %{source}')"
>
<template #target>

View File

@ -36,7 +36,7 @@ export default {
</script>
<template>
<div class="discussion-reply-holder d-flex clearfix">
<div class="discussion-reply-holder gl-flex clearfix">
<template v-if="userCanReply">
<slot v-if="hasForm" name="form"></slot>
<template v-else-if="renderReplyPlaceholder">

View File

@ -381,7 +381,7 @@ export default {
<div
v-if="!diffFile.submodule && addMergeRequestButtons"
class="file-actions d-flex gl-align-items-center gl-ml-auto gl-align-self-start"
class="file-actions gl-flex gl-items-center gl-ml-auto gl-align-self-start"
>
<diff-stats
:diff-file="diffFile"
@ -392,7 +392,7 @@ export default {
v-if="isReviewable && showLocalFileReviews"
v-gl-tooltip.hover.focus.left
data-testid="fileReviewCheckbox"
class="gl-mr-5 -gl-mb-3 gl-display-flex gl-align-items-center"
class="gl-mr-5 -gl-mb-3 gl-flex gl-items-center"
:title="$options.i18n.fileReviewTooltip"
:checked="reviewed"
@change="toggleReview"

View File

@ -150,8 +150,8 @@ export default {
</script>
<template>
<div class="tree-list-holder d-flex flex-column" data-testid="file-tree-container">
<div class="gl-display-flex gl-align-items-center gl-mb-3">
<div class="tree-list-holder gl-flex flex-column" data-testid="file-tree-container">
<div class="gl-flex gl-items-center gl-mb-3">
<h5 class="gl-display-inline-block gl-my-0">{{ __('Files') }}</h5>
<gl-badge size="sm" class="gl-ml-2" data-testid="file-count">{{ realSize }}</gl-badge>
<gl-button-group class="gl-ml-auto">

View File

@ -161,11 +161,11 @@ export default {
<gl-icon class="gl-text-blue-500 gl-ml-2" name="question-o" />
</span>
<gl-tooltip :target="() => $refs['legend-icon']" boundary="#content-body">
<div class="deploy-board-legend gl-display-flex gl-flex-direction-column">
<div class="deploy-board-legend gl-flex gl-flex-direction-column">
<div
v-for="status in statuses"
:key="status.text"
class="gl-display-flex gl-align-items-center"
class="gl-flex gl-items-center"
>
<instance-component :status="status.class" :stable="status.stable" />
<span class="legend-text gl-ml-3">{{ status.text }}</span>
@ -174,7 +174,7 @@ export default {
</gl-tooltip>
</div>
<div class="deploy-board-instances-container d-flex flex-wrap flex-row">
<div class="deploy-board-instances-container gl-flex flex-wrap flex-row">
<template v-for="(instance, i) in deployBoardData.instances">
<instance-component
:key="i"
@ -220,7 +220,7 @@ export default {
<section v-safe-html="deployBoardSvg" class="deploy-board-empty-state-svg"></section>
<section class="deploy-board-empty-state-text">
<span class="deploy-board-empty-state-title d-flex">{{
<span class="deploy-board-empty-state-title gl-flex">{{
__('Kubernetes deployment not found')
}}</span>
<span>

View File

@ -81,7 +81,7 @@ export default {
<template>
<div class="file-holder">
<div ref="header" class="file-title file-title-flex-parent">
<div class="file-header-content d-flex align-content-center gl-flex-wrap overflow-hidden">
<div class="file-header-content gl-flex align-content-center gl-flex-wrap overflow-hidden">
<div v-if="hasCode" class="gl-inline-block cursor-pointer" @click="toggle()">
<gl-icon :name="collapseIcon" :size="16" class="gl-mr-2" />
</div>

View File

@ -157,9 +157,9 @@ export default {
{{ s__('FeatureFlags|Feature flag') }}
</div>
<div
class="table-mobile-content gl-text-left gl-display-flex flex-column js-feature-flag-title gl-mr-5"
class="table-mobile-content gl-text-left gl-flex flex-column js-feature-flag-title gl-mr-5"
>
<div class="gl-display-flex gl-align-items-center">
<div class="gl-flex gl-align-items-center">
<div class="feature-flag-name text-monospace text-wrap gl-break-anywhere">
{{ featureFlag.name }}
</div>
@ -180,7 +180,7 @@ export default {
{{ s__('FeatureFlags|Environment Specs') }}
</div>
<div
class="table-mobile-content gl-text-left d-flex gl-flex-wrap justify-content-end justify-content-md-start js-feature-flag-environments"
class="table-mobile-content gl-text-left gl-flex gl-flex-wrap justify-content-end justify-content-md-start js-feature-flag-environments"
>
<strategy-label
v-for="strategy in featureFlag.strategies"

View File

@ -159,9 +159,9 @@ export default {
>
<div
:class="{ 'project-row-contents': !isGroup }"
class="group-row-contents d-flex gl-align-items-center py-2 pr-3"
class="group-row-contents gl-flex gl-items-center py-2 pr-3"
>
<div class="folder-toggle-wrap gl-mr-2 d-flex gl-align-items-center">
<div class="folder-toggle-wrap gl-mr-2 !gl-flex gl-items-center">
<gl-button
v-if="hasChildren"
:aria-label="toggleAriaLabel"
@ -180,7 +180,7 @@ export default {
class="gl-hidden sm:gl-inline-flex flex-shrink-0 gl-mr-3"
/>
<a
:class="{ 'gl-sm-display-flex': !group.isChildrenLoading }"
:class="{ 'sm:gl-flex': !group.isChildrenLoading }"
class="gl-hidden gl-text-decoration-none! gl-mr-3"
:href="group.relativePath"
:aria-label="group.name"
@ -193,10 +193,10 @@ export default {
:project-name="group.name"
/>
</a>
<div class="group-text-container d-flex flex-fill gl-align-items-center">
<div class="group-text-container !gl-flex flex-fill gl-align-items-center">
<div class="group-text flex-grow-1 flex-shrink-1">
<div
class="gl-display-flex gl-align-items-center gl-flex-wrap title namespace-title gl-font-bold gl-mr-3"
class="gl-flex gl-align-items-center gl-flex-wrap title namespace-title gl-font-bold gl-mr-3"
>
<a
v-gl-tooltip.bottom
@ -266,7 +266,7 @@ export default {
<gl-badge variant="info">{{ __('Archived') }}</gl-badge>
</div>
<div
class="metadata gl-display-flex gl-flex-grow-1 gl-flex-shrink-0 gl-flex-wrap justify-content-md-between"
class="metadata gl-flex gl-flex-grow-1 gl-flex-shrink-0 gl-flex-wrap justify-content-md-between"
>
<item-stats
:item="group"

View File

@ -45,7 +45,7 @@ export default {
<pagination-links
:change="change"
:page-info="pageInfo"
class="d-flex justify-content-center gl-mt-3"
class="!gl-flex justify-content-center gl-mt-3"
/>
</div>
</template>

View File

@ -33,8 +33,8 @@ export default {
</script>
<template>
<a :href="branchHref" class="btn-link d-flex gl-align-items-center">
<span class="d-flex gl-mr-3 ide-search-list-current-icon">
<a :href="branchHref" class="btn-link gl-flex gl-items-center">
<span class="gl-flex gl-mr-3 ide-search-list-current-icon">
<gl-icon v-if="isActive" :size="16" name="mobile-issue-close" />
</span>
<span>

View File

@ -72,7 +72,7 @@ export default {
/>
<gl-icon name="search" class="gl-ml-5 gl-mt-1 input-icon" />
</label>
<div class="dropdown-content ide-merge-requests-dropdown-content d-flex">
<div class="dropdown-content ide-merge-requests-dropdown-content !gl-flex">
<gl-loading-icon
v-if="isLoading"
size="lg"
@ -84,10 +84,7 @@ export default {
<item :item="item" :project-id="currentProjectId" :is-active="isActiveBranch(item)" />
</li>
</template>
<li
v-else
class="ide-search-list-empty d-flex gl-align-items-center justify-content-center"
>
<li v-else class="ide-search-list-empty !gl-flex gl-items-center gl-justify-center">
<template v-if="hasNoSearchResults">
{{ __('No branches found') }}
</template>

View File

@ -86,15 +86,15 @@ export default {
role="button"
@click="openFileInEditor"
>
<span class="multi-file-commit-list-file-path d-flex gl-align-items-center">
<span class="multi-file-commit-list-file-path !gl-flex gl-items-center">
<file-icon :file-name="file.name" class="gl-mr-3" />
<template v-if="file.prevName && file.prevName !== file.name">
{{ file.prevName }} &#x2192;
</template>
{{ file.name }}
</span>
<div class="ml-auto d-flex gl-align-items-center">
<div class="d-flex gl-align-items-center ide-commit-list-changed-icon">
<div class="ml-auto gl-flex gl-items-center">
<div class="gl-flex gl-items-center ide-commit-list-changed-icon">
<gl-icon :name="iconName" :size="16" :class="iconClass" />
</div>
</div>

View File

@ -134,7 +134,7 @@ export default {
<template>
<article
class="ide position-relative d-flex flex-column align-items-stretch"
class="ide position-relative gl-flex flex-column align-items-stretch"
:class="{ [`theme-${themeName}`]: themeName }"
>
<cannot-push-code-alert
@ -143,7 +143,7 @@ export default {
:action="canPushCodeStatus.action"
/>
<error-message v-if="errorMessage" :message="errorMessage" />
<div class="ide-view flex-grow d-flex">
<div class="ide-view flex-grow gl-flex">
<template v-if="loadDeferred">
<find-file
:files="allBlobs"

View File

@ -45,7 +45,7 @@ export default {
</template>
<template v-else>
<ide-project-header :project="currentProject" />
<div class="ide-context-body d-flex flex-fill">
<div class="ide-context-body gl-flex flex-fill">
<activity-bar />
<div class="multi-file-commit-panel-inner" data-testid="ide-side-bar-inner">
<div class="multi-file-commit-panel-inner-content">

View File

@ -27,7 +27,7 @@ export default {
</script>
<template>
<div class="ide-status-list d-flex">
<div class="ide-status-list gl-flex">
<template v-if="activeFile">
<div>
<gl-link v-gl-tooltip.hover :href="activeFile.permalink" :title="__('Open in file view')">

View File

@ -77,13 +77,13 @@ export default {
</script>
<template>
<div class="ide-pipeline build-page d-flex flex-column flex-fill">
<header class="ide-job-header d-flex gl-align-items-center">
<div class="ide-pipeline build-page gl-flex flex-column flex-fill">
<header class="ide-job-header gl-flex gl-items-center">
<gl-button category="secondary" icon="chevron-left" size="small" @click="setDetailJob(null)">
{{ __('View jobs') }}
</gl-button>
</header>
<div class="top-bar d-flex border-left-0 mr-3">
<div class="top-bar gl-flex border-left-0 mr-3">
<job-description :job="detailJob" />
<div class="controllers ml-auto">
<a

View File

@ -23,11 +23,8 @@ export default {
</script>
<template>
<div class="d-flex gl-align-items-center">
<ci-icon
:status="job.status"
class="gl-align-items-center gl-border gl-display-inline-flex gl-z-1"
/>
<div class="gl-flex gl-items-center">
<ci-icon :status="job.status" class="gl-items-center gl-border gl-inline-flex gl-z-1" />
<span class="gl-ml-3">
{{ job.name }}
<a

View File

@ -40,8 +40,8 @@ export default {
</script>
<template>
<a :href="mergeRequestHref" class="btn-link d-flex gl-align-items-center">
<span class="d-flex gl-mr-3 ide-search-list-current-icon">
<a :href="mergeRequestHref" class="btn-link gl-flex gl-items-center">
<span class="gl-flex gl-mr-3 ide-search-list-current-icon">
<gl-icon v-if="isActive" :size="16" name="mobile-issue-close" />
</span>
<span>

View File

@ -91,7 +91,7 @@ export default {
/>
<gl-icon :size="16" name="search" class="ml-3 input-icon" />
</label>
<div class="dropdown-content ide-merge-requests-dropdown-content d-flex">
<div class="dropdown-content ide-merge-requests-dropdown-content gl-flex">
<gl-loading-icon
v-if="isLoading"
size="lg"
@ -103,10 +103,10 @@ export default {
<li v-for="searchType in $options.searchTypes" :key="searchType.type">
<button
type="button"
class="btn-link d-flex gl-align-items-center"
class="btn-link gl-flex gl-items-center"
@click.stop="setSearchType(searchType)"
>
<span class="d-flex gl-mr-3 ide-search-list-current-icon">
<span class="gl-flex gl-mr-3 ide-search-list-current-icon">
<gl-icon :size="16" name="search" />
</span>
<span>{{ searchType.label }}</span>
@ -122,10 +122,7 @@ export default {
/>
</li>
</template>
<li
v-else
class="ide-search-list-empty d-flex gl-align-items-center justify-content-center"
>
<li v-else class="ide-search-list-empty gl-flex gl-items-center justify-content-center">
{{ __('No merge requests found') }}
</li>
</ul>

View File

@ -60,12 +60,12 @@ export default {
:class="{
show: isOpen,
}"
class="dropdown d-flex"
class="dropdown gl-flex"
>
<button
:aria-label="__('Create new file or directory')"
type="button"
class="rounded border-0 d-flex ide-entry-dropdown-toggle"
class="rounded border-0 gl-flex ide-entry-dropdown-toggle"
@click.stop="openDropdown()"
>
<gl-icon name="ellipsis_v" />
@ -75,7 +75,7 @@ export default {
<li>
<item-button
:label="__('New file')"
class="d-flex"
class="gl-flex"
icon="doc-new"
icon-classes="mr-2"
@click="createNewItem('blob')"
@ -85,7 +85,7 @@ export default {
<li>
<item-button
:label="__('New directory')"
class="d-flex"
class="gl-flex"
icon="folder-new"
icon-classes="mr-2"
@click="createNewItem($options.modalTypes.tree)"
@ -96,7 +96,7 @@ export default {
<li>
<item-button
:label="__('Rename/Move')"
class="d-flex"
class="gl-flex"
icon="pencil"
icon-classes="mr-2"
@click="createNewItem($options.modalTypes.rename)"
@ -105,7 +105,7 @@ export default {
<li>
<item-button
:label="__('Delete')"
class="d-flex"
class="gl-flex"
icon="remove"
icon-classes="mr-2"
@click="deleteEntry(path)"

View File

@ -72,7 +72,7 @@ export default {
:show-label="showLabel"
:icon-classes="showLabel ? 'mr-2' : ''"
:label="__('Upload file')"
class="d-flex"
class="gl-flex"
icon="upload"
@click="startFileUpload"
/>

View File

@ -39,8 +39,8 @@ export default {
</script>
<template>
<div v-if="session" class="ide-terminal d-flex flex-column">
<header class="ide-job-header d-flex gl-align-items-center">
<div v-if="session" class="ide-terminal gl-flex flex-column">
<header class="ide-job-header gl-flex gl-items-center">
<h5>{{ __('Web Terminal') }}</h5>
<div class="ml-auto align-self-center">
<gl-button

View File

@ -93,8 +93,8 @@ export default {
</script>
<template>
<div class="d-flex flex-column flex-fill min-height-0 pr-3">
<div class="top-bar d-flex border-left-0 gl-align-items-center">
<div class="gl-flex flex-column flex-fill min-height-0 pr-3">
<div class="top-bar gl-flex border-left-0 gl-items-center">
<div v-if="loadingText">
<gl-loading-icon size="sm" :inline="true" />
<span>{{ loadingText }}</span>
@ -108,7 +108,7 @@ export default {
@scroll-down="glterminal.scrollToBottom()"
/>
</div>
<div class="terminal-wrapper d-flex flex-fill min-height-0">
<div class="terminal-wrapper gl-flex flex-fill min-height-0">
<div
ref="terminal"
class="ide-terminal-trace flex-fill min-height-0 gl-w-full"

View File

@ -25,7 +25,7 @@ export default {
<template>
<div class="gl-h-full">
<div v-if="isShowSplash" class="gl-h-full d-flex flex-column justify-content-center">
<div v-if="isShowSplash" class="gl-h-full gl-flex flex-column justify-content-center">
<empty-state
:is-loading="allCheck.isLoading"
:is-valid="allCheck.isValid"

View File

@ -62,13 +62,7 @@ export default {
</script>
<template>
<div
v-if="status"
v-gl-tooltip
:title="status.text"
role="note"
class="d-flex gl-align-items-center"
>
<div v-if="status" v-gl-tooltip :title="status.text" role="note" class="gl-flex gl-items-center">
<span>{{ __('Terminal') }}:</span>
<span class="square s16 d-flex-center ml-1" :aria-label="status.text">
<gl-loading-icon v-if="isLoading" inline size="sm" class="d-flex-center" />

View File

@ -94,7 +94,7 @@ export default {
<gl-skeleton-loader v-if="$apollo.queries.mergeRequest.loading" :height="15">
<rect width="250" height="15" rx="4" />
</gl-skeleton-loader>
<div v-else-if="showDetails" class="d-flex gl-align-items-center justify-content-between">
<div v-else-if="showDetails" class="gl-flex gl-align-items-center gl-justify-between">
<div class="gl-inline-flex gl-align-items-center">
<gl-badge class="gl-mr-2" :variant="badgeVariant">
{{ stateHumanName }}

View File

@ -342,7 +342,7 @@ export default {
{{ __('Load more users') }}
</gl-button>
<div class="footer-block row-content-block d-flex justify-content-between">
<div class="footer-block row-content-block gl-flex justify-content-between">
<gl-button
type="submit"
category="primary"

View File

@ -241,7 +241,7 @@ export default class LabelsSelect {
// We need to identify which items are actually labels
if (label.id) {
const selectedLayoutClasses = ['d-flex', 'flex-row', 'text-break-word'];
const selectedLayoutClasses = ['gl-flex', 'flex-row', 'text-break-word'];
selectedClass.push('label-item', ...selectedLayoutClasses);
linkEl.dataset.labelId = label.id;
}

View File

@ -131,7 +131,7 @@ export default {
category="tertiary"
/>
</div>
<div class="file-actions d-flex gl-align-items-center gl-ml-auto gl-align-self-start">
<div class="file-actions gl-flex gl-items-center gl-ml-auto gl-align-self-start">
<gl-button-group v-if="file.type === 'text'" class="gl-mr-3">
<gl-button
:selected="file.resolveMode === 'interactive'"

View File

@ -172,7 +172,7 @@ export default {
};
</script>
<template>
<div class="d-flex flex-column">
<div class="gl-flex flex-column">
<p class="pt-3 js-subtitle-text">
<gl-sprintf
:message="
@ -262,7 +262,7 @@ export default {
<asset-links-form />
<div class="d-flex gl-gap-x-3 pt-3">
<div class="gl-flex gl-gap-x-3 pt-3">
<gl-button
class="js-no-auto-disable"
category="primary"

View File

@ -100,7 +100,7 @@ export default {
</script>
<template>
<div class="d-flex flex-column release-assets-links-form">
<div class="gl-flex flex-column release-assets-links-form">
<h2 class="text-4">{{ __('Release assets') }}</h2>
<p class="m-0">
<gl-sprintf
@ -132,7 +132,7 @@ export default {
<div
v-for="(link, index) in release.assets.links"
:key="link.id"
class="gl-sm-display-flex flex-column flex-sm-row gl-gap-5 align-items-stretch align-items-sm-start no-gutters"
class="sm:gl-flex flex-column flex-sm-row gl-gap-5 align-items-stretch align-items-sm-start no-gutters"
>
<gl-form-group
class="url-field form-group col"
@ -224,7 +224,7 @@ export default {
:title="__('Remove asset link')"
@click="onRemoveClicked(link.id)"
>
<div class="d-flex">
<div class="gl-flex">
<gl-icon class="mr-1 mr-sm-0" :size="16" name="remove" />
<span class="d-inline d-sm-none">{{ __('Remove asset link') }}</span>
</div>

View File

@ -61,10 +61,10 @@ export default {
<div>
<h3 class="gl-heading-5 gl-mb-2!">{{ __('Evidence collection') }}</h3>
<div v-for="(evidence, index) in evidences" :key="evidenceTitle(index)">
<div class="gl-display-flex gl-align-items-center">
<div class="gl-flex gl-items-center">
<gl-link
v-gl-tooltip
class="gl-display-flex gl-align-items-center gl-font-monospace"
class="gl-flex gl-items-center gl-font-monospace"
target="_blank"
:title="__('Open evidence JSON in new tab')"
:href="evidenceUrl(index)"
@ -74,7 +74,7 @@ export default {
<gl-icon name="external-link" class="gl-ml-2 gl-flex-shrink-0 gl-flex-grow-0" />
</gl-link>
<expand-button class="gl-display-flex gl-align-items-center gl-gap-2 gl-ml-4">
<expand-button class="gl-flex gl-items-center gl-gap-2 gl-ml-4">
<template #short>
<span class="js-short gl-font-monospace gl-text-secondary">{{ shortSha(index) }}</span>
</template>
@ -85,7 +85,7 @@ export default {
<clipboard-button :title="__('Copy evidence SHA')" :text="sha(index)" category="tertiary" />
</div>
<div class="gl-display-flex gl-align-items-center gl-text-secondary">
<div class="gl-flex gl-items-center gl-text-secondary">
<gl-icon
v-gl-tooltip
name="clock"

View File

@ -48,9 +48,9 @@ export default {
</script>
<template>
<div class="gl-display-flex gl-align-items-center gl-justify-content-space-between gl-w-full">
<div class="gl-flex gl-items-center gl-justify-content-space-between gl-w-full">
<h2
class="gl-new-card-title gl-heading-3 gl-m-0! gl-display-flex gl-gap-3"
class="gl-new-card-title gl-heading-3 gl-m-0! gl-flex gl-gap-3"
data-testid="release-block-title"
>
<gl-link v-if="selfLink" class="gl-text-black-normal" :href="selfLink">

View File

@ -55,7 +55,7 @@ export default {
<template>
<div class="labels-select-contents-create js-labels-create">
<div class="dropdown-title d-flex gl-align-items-center pt-0 pb-2 gl-mb-0">
<div class="dropdown-title gl-flex gl-items-center pt-0 pb-2 gl-mb-0">
<gl-button
:aria-label="__('Go back')"
category="tertiary"
@ -93,7 +93,7 @@ export default {
@click.prevent="handleColorClick(color)"
/>
</div>
<div class="color-input-container gl-display-flex">
<div class="color-input-container gl-flex">
<gl-form-input
v-model.trim="selectedColor"
class="gl-rounded-top-right-none gl-rounded-bottom-right-none -gl-mr-1 gl-mb-2 gl-w-8"
@ -114,7 +114,7 @@ export default {
:disabled="disableCreate"
category="primary"
variant="confirm"
class="float-left d-flex gl-align-items-center"
class="float-left gl-flex gl-items-center"
data-testid="create-click"
@click="handleCreateClick"
>

View File

@ -55,7 +55,7 @@ export default {
data-placement="left"
class="gl-inline-block js-user-link !gl-text-inherit gl-hover-text-blue-800!"
>
<!-- use d-flex so that slot can be appropriately styled -->
<!-- use gl-flex so that slot can be appropriately styled -->
<span class="gl-flex">
<reviewer-avatar :user="user" :img-size="24" :issuable-type="issuableType" />
<slot :user="user"></slot>

View File

@ -255,7 +255,7 @@ export default {
<template>
<div>
<div
class="gl-display-flex gl-align-items-flex-start gl-flex-direction-column gl-sm-flex-direction-row gl-gap-3 gl-pt-3"
class="gl-flex gl-align-items-flex-start gl-flex-direction-column gl-sm-flex-direction-row gl-gap-3 gl-pt-3"
>
<span
v-if="snippet.hidden"
@ -278,7 +278,7 @@ export default {
<div
v-if="hasPersonalSnippetActions"
class="gl-display-flex gl-align-self-center gl-gap-3 gl-w-full gl-sm-w-auto gl-flex-direction-column gl-sm-flex-direction-row"
class="gl-flex gl-align-self-center gl-gap-3 gl-w-full gl-sm-w-auto gl-flex-direction-column gl-sm-flex-direction-row"
>
<gl-button
v-if="snippet.userPermissions.updateSnippet"
@ -312,7 +312,7 @@ export default {
<div class="gl-w-full gl-min-h-7">
<gl-button
class="gl-sm-display-none! gl-new-dropdown-toggle gl-w-full"
button-text-classes="gl-display-flex gl-justify-content-space-between gl-w-full"
button-text-classes="gl-flex gl-justify-content-space-between gl-w-full"
category="secondary"
tabindex="0"
>
@ -321,7 +321,7 @@ export default {
</gl-button>
<gl-button
v-gl-tooltip="showDropdownTooltip"
class="gl-display-none gl-sm-display-flex! gl-new-dropdown-toggle gl-new-dropdown-icon-only gl-new-dropdown-toggle-no-caret"
class="gl-hidden sm:gl-flex gl-new-dropdown-toggle gl-new-dropdown-icon-only gl-new-dropdown-toggle-no-caret"
category="tertiary"
icon="ellipsis_v"
:aria-label="$options.i18n.snippetAction"
@ -349,9 +349,9 @@ export default {
<div
class="detail-page-header gl-flex-direction-column gl-md-flex-direction-row gl-p-0 gl-mb-5"
>
<div class="gl-display-flex gl-align-items-baseline">
<div class="gl-flex gl-items-baseline">
<div
class="has-tooltip gl-display-flex gl-align-self-baseline gl-mt-3 gl-mr-2"
class="has-tooltip gl-flex gl-align-self-baseline gl-mt-3 gl-mr-2"
data-testid="snippet-container"
:title="snippetVisibilityLevelDescription"
data-container="body"

View File

@ -53,7 +53,7 @@ export default {
:value="option.value"
class="gl-mb-3"
>
<div class="gl-display-flex gl-align-items-center">
<div class="gl-flex gl-items-center">
<gl-icon :size="16" :name="option.icon" />
<span
class="gl-font-semibold gl-ml-2 js-visibility-option"

View File

@ -24,7 +24,7 @@ export default {
</script>
<template>
<div class="d-flex gl-align-items-center">
<div class="gl-flex gl-items-center">
<span class="text-muted">{{ s__('mrWidget|Approval is optional') }}</span>
<gl-link
v-if="canApprove && helpPath"

View File

@ -45,7 +45,7 @@ export default {
</script>
<template>
<div class="mr-widget-extension">
<div class="d-flex gl-align-items-center pl-3 gl-py-3">
<div class="gl-flex gl-items-center pl-3 gl-py-3">
<div v-if="hasError" class="ci-widget media">
<div class="media-body">
<span class="gl-font-sm gl-ml-7 gl-leading-24 js-error-state">

View File

@ -174,17 +174,14 @@ export default {
</template>
<template v-else-if="!hasPipeline">
<gl-loading-icon size="sm" />
<p
class="gl-flex-grow-1 gl-display-flex gl-ml-3 gl-mb-0"
data-testid="monitoring-pipeline-message"
>
<p class="gl-flex-grow-1 gl-flex gl-ml-3 gl-mb-0" data-testid="monitoring-pipeline-message">
{{ $options.monitoringPipelineText }}
<gl-link
v-gl-tooltip
:href="ciTroubleshootingDocsPath"
target="_blank"
:title="__('Get more information about troubleshooting pipelines')"
class="gl-display-flex gl-align-items-center gl-ml-2"
class="gl-flex gl-items-center gl-ml-2"
>
<gl-icon
name="question-o"
@ -195,12 +192,12 @@ export default {
</template>
<template v-else-if="hasPipeline">
<ci-icon :status="status" class="gl-align-self-start gl-mt-2 gl-mr-3" />
<div class="ci-widget-container d-flex">
<div class="ci-widget-container gl-flex">
<div class="ci-widget-content">
<div class="media-body">
<div
data-testid="pipeline-info-container"
class="gl-display-flex gl-flex-wrap gl-align-items-center gl-justify-content-space-between"
class="gl-flex gl-flex-wrap gl-align-items-center gl-justify-content-space-between"
>
<p
class="mr-pipeline-title gl-align-self-start gl-m-0! gl-mr-3! gl-font-bold gl-text-gray-900"

View File

@ -29,9 +29,7 @@ export default {
<template>
<li>
<div class="commit-message-editor">
<div
class="gl-display-flex gl-flex-wrap gl-align-items-center justify-content-between gl-mb-3"
>
<div class="gl-flex gl-flex-wrap gl-align-items-center justify-content-between gl-mb-3">
<label class="col-form-label" :for="inputId">
<strong>{{ label }}</strong>
</label>

View File

@ -56,7 +56,7 @@ export default {
<template>
<div>
<div
class="js-mr-widget-commits-count mr-widget-extension clickable d-flex gl-align-items-center px-3 py-2"
class="js-mr-widget-commits-count mr-widget-extension clickable gl-flex gl-items-center px-3 py-2"
@click="toggle()"
>
<gl-button

View File

@ -73,6 +73,6 @@ export default {
v-gl-tooltip
:class="cssClass"
:title="tooltipText"
class="deployment-instance d-flex justify-content-center gl-align-items-center"
class="deployment-instance gl-flex justify-content-center gl-items-center"
/>
</template>

View File

@ -29,7 +29,7 @@ export default {
</script>
<template>
<div class="two-up view d-flex">
<div class="two-up view gl-flex">
<image-viewer
:path="oldPath"
:file-size="oldSize"

View File

@ -103,7 +103,7 @@ export default {
data-testid="project-search-field"
@input="onInput"
/>
<div class="d-flex flex-column">
<div class="gl-flex flex-column">
<gl-loading-icon v-if="showLoadingIndicator" size="sm" class="py-2 px-4" />
<gl-infinite-scroll
:max-list-height="maxListHeight"
@ -112,7 +112,7 @@ export default {
@bottomReached="bottomReached"
>
<template v-if="!showLoadingIndicator" #items>
<div class="gl-display-flex gl-flex-direction-column gl-p-3">
<div class="gl-flex gl-flex-col gl-p-3">
<project-list-item
v-for="project in projectSearchResults"
:key="project.id"

View File

@ -6,7 +6,7 @@ module Groups
layout 'group_settings'
skip_cross_project_access_check :show
before_action :authorize_admin_group!, except: :show
before_action :authorize_admin_cicd_variables!, only: :show
before_action :authorize_show_cicd_settings!, only: :show
before_action :authorize_update_max_artifacts_size!, only: [:update]
before_action :define_variables, only: [:show]
before_action :push_licensed_features, only: [:show]
@ -47,6 +47,15 @@ module Groups
private
def authorize_show_cicd_settings!
return if can_any?(current_user, [
:admin_cicd_variables,
:admin_runner
], group)
access_denied!
end
def define_variables
define_ci_variables
end

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
class Projects::RunnersController < Projects::ApplicationController
before_action :authorize_admin_build!
before_action :authorize_admin_runner!
before_action :authorize_create_runner!, only: [:new, :register]
before_action :runner, only: [:edit, :update, :destroy, :pause, :resume, :show, :register]

View File

@ -9,7 +9,7 @@ module Projects
layout 'project_settings'
before_action :authorize_admin_pipeline!, except: :show
before_action :authorize_admin_cicd_variables!, only: :show
before_action :authorize_show_cicd_settings!, only: :show
before_action :check_builds_available!
before_action :define_variables
@ -75,6 +75,15 @@ module Projects
private
def authorize_show_cicd_settings!
return if can_any?(current_user, [
:admin_cicd_variables,
:admin_runner
], project)
access_denied!
end
def highlight_badge(name, content, language = nil)
Gitlab::Highlight.highlight(name, content, language: language)
end

View File

@ -265,6 +265,7 @@ class GroupPolicy < Namespaces::GroupProjectNamespaceSharedPolicy
enable :admin_namespace
enable :admin_group_member
enable :admin_package
enable :admin_runner
enable :admin_integrations
enable :change_visibility_level

View File

@ -13,6 +13,7 @@ module Namespaces
enable :create_projects
enable :import_projects
enable :admin_namespace
enable :admin_runner
enable :read_namespace
enable :read_namespace_via_membership
enable :read_statistics

View File

@ -619,6 +619,7 @@ class ProjectPolicy < BasePolicy
enable :read_import_error
enable :admin_cicd_variables
enable :admin_push_rules
enable :admin_runner
enable :manage_deploy_tokens
enable :manage_merge_request_settings
enable :change_restrict_user_defined_variables

View File

@ -357,7 +357,7 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
label = icon + _('Add LICENSE')
AnchorData.new(
false,
content_tag(:span, label, class: 'add-license-link d-flex'),
content_tag(:span, label, class: 'add-license-link gl-flex'),
empty_repo? ? add_license_ide_path : add_license_path
)
end

View File

@ -3,7 +3,7 @@
module Groups
class UpdateSharedRunnersService < Groups::BaseService
def execute
return error('Operation not allowed', 403) unless can?(current_user, :admin_group, group)
return error('Operation not allowed', 403) unless can?(current_user, :admin_runner, group)
validate_params

View File

@ -22,6 +22,9 @@
"admin_push_rules": {
"type": "boolean"
},
"admin_runners": {
"type": "boolean"
},
"admin_terraform_state": {
"type": "boolean"
},

View File

@ -1,7 +1,7 @@
- only_key_value = local_assigns.fetch(:only_key_value, false)
%li.ci-variable-row.m-0.gl-hidden.sm:gl-block
.d-flex.gl-w-full.gl-align-items-center.pb-2
.gl-flex.gl-w-full.gl-align-items-center.pb-2
.bold.table-section.section-15.gl-mr-3
= s_('CiVariables|Type')
.bold.table-section.section-15.gl-mr-3

View File

@ -41,7 +41,7 @@
.todos-filters
.issues-details-filters.row-content-block.second-block
= form_tag todos_filter_path(without: [:project_id, :author_id, :type, :action_id]), method: :get, class: 'filter-form gl-display-flex gl-flex-direction-column gl-sm-flex-direction-row' do
.filter-categories.gl-display-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-flex-grow-1.gl-flex-wrap.-gl-mx-2
.filter-categories.gl-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-flex-grow-1.gl-flex-wrap.-gl-mx-2
.filter-item.gl-m-2
- if params[:group_id].present?
= hidden_field_tag(:group_id, params[:group_id])

View File

@ -2,7 +2,7 @@
= event_user_info(event)
.event-title.gl-display-flex.gl-flex-wrap
.event-title.gl-flex.gl-flex-wrap
= inline_event_icon(event)
.event-title-block.gl-display-inline-block.gl-mr-2
- if event.target

View File

@ -2,7 +2,7 @@
= event_user_info(event)
.event-title.gl-display-flex.gl-flex-wrap
.event-title.gl-flex.gl-flex-wrap
= inline_event_icon(event)
.event-title-block.gl-display-inline-block.gl-mr-2
%span.event-type{ class: event.action_name + user_profile_activity_classes }

View File

@ -2,7 +2,7 @@
= event_user_info(event)
.event-title.gl-display-flex.gl-flex-wrap
.event-title.gl-flex.gl-flex-wrap
= inline_event_icon(event)
.event-title-block.gl-display-inline-block.gl-mr-2
%span.event-type{ class: event.action_name + user_profile_activity_classes }

View File

@ -4,7 +4,7 @@
= event_user_info(event)
.event-title.gl-display-flex.gl-flex-wrap
.event-title.gl-flex.gl-flex-wrap
= inline_event_icon(event)
.event-title-block.gl-display-inline-block.gl-mr-2
%span.event-type{ class: event.action_name + user_profile_activity_classes }

View File

@ -6,6 +6,6 @@
= event_user_info(event)
.event-title.d-flex.gl-flex-wrap
.event-title.gl-flex.gl-flex-wrap
= inline_event_icon(event)
= s_('Profiles|Made a private contribution')

View File

@ -4,7 +4,7 @@
= event_user_info(event)
.event-title.gl-display-flex.gl-flex-wrap
.event-title.gl-flex.gl-flex-wrap
= inline_event_icon(event)
.event-title-block.gl-display-inline-block.gl-mr-2
%span.event-type.pushed{ class: user_profile_activity_classes }= event.push_activity_description

View File

@ -2,7 +2,7 @@
= event_user_info(event)
.event-title.gl-display-flex.gl-flex-wrap
.event-title.gl-flex.gl-flex-wrap
= inline_event_icon(event)
.event-title-block.gl-display-inline-block.gl-mr-2
%span.event-type{ class: event.action_name + user_profile_activity_classes }

View File

@ -26,7 +26,7 @@
.settings-content
= render 'ci/variables/index', save_endpoint: group_variables_path
- if can?(current_user, :admin_group, @group)
- if can?(current_user, :admin_runner, @group)
%section.settings#runners-settings.no-animate{ class: ('expanded' if expanded) }
.settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
@ -39,6 +39,7 @@
.settings-content
= render 'groups/runners/settings'
- if can?(current_user, :admin_group, @group)
%section.settings#auto-devops-settings.no-animate{ class: ('expanded' if expanded) }
.settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only

View File

@ -1,8 +1,8 @@
- page_title _('Bitbucket import')
- header_title _('Projects'), root_path
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('bitbucket', css_class: 'gl-mr-3', size: 48)
= _('Import projects from Bitbucket')

View File

@ -2,8 +2,8 @@
- header_title _("New project"), new_project_path
- add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project')
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('bitbucket', css_class: 'gl-mr-3', size: 48)
= _('Import repositories from Bitbucket Server')
%hr

View File

@ -1,7 +1,7 @@
- page_title _('Bitbucket Server import')
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('bitbucket', css_class: 'gl-mr-3', size: 48)
= _('Import projects from Bitbucket Server')

View File

@ -2,8 +2,8 @@
- header_title _("New project"), new_project_path
- add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project')
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('bug', css_class: 'gl-mr-3', size: 48)
= _('Import projects from FogBugz')
%hr

View File

@ -2,8 +2,8 @@
- header_title _("New project"), new_project_path
- add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project')
%h1.page-title.gl-font-size-h-display.d-flex
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('bug', css_class: 'gl-mr-2')
= _('Import projects from FogBugz')
%hr

View File

@ -1,6 +1,6 @@
- page_title _("FogBugz import")
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('bug', css_class: 'gl-mr-3', size: 48)
= _('Import projects from FogBugz')

View File

@ -2,8 +2,8 @@
- header_title _("New project"), new_project_path
- add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project')
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('gitea', css_class: 'gl-mr-3', size: 48)
= _('Import projects from Gitea')
%hr

View File

@ -1,6 +1,6 @@
- page_title _("Gitea import")
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('gitea', css_class: 'gl-mr-3', size: 48)
= _('Import projects from Gitea')

View File

@ -2,8 +2,8 @@
- header_title _("New project"), new_project_path
- add_to_breadcrumbs s_('ProjectsNew|Import project'), new_project_path(anchor: 'import_project')
%h1.page-title.gl-font-size-h-display.d-flex.gl-align-items-center
.gl-display-flex.gl-align-items-center.gl-justify-content-center
%h1.page-title.gl-font-size-h-display.gl-flex.gl-items-center
.gl-flex.gl-items-center.gl-justify-content-center
= sprite_icon('tanuki', css_class: 'gl-mr-3', size: 48)
= _('Import an exported GitLab project')
%hr

View File

@ -11,6 +11,6 @@
= render "layouts/broadcast"
= yield :flash_message
= render "layouts/flash", flash_container_no_margin: true
.content-wrapper{ id: "content-body", class: "d-flex flex-column align-items-stretch gl-p-0" }
.content-wrapper{ id: "content-body", class: "!gl-flex flex-column align-items-stretch gl-p-0" }
= yield
= footer_message

View File

@ -1,6 +1,6 @@
- anchors = local_assigns.fetch(:anchors, [])
- project_buttons = local_assigns.fetch(:project_buttons, false)
- stat_text_classes = "stat-text d-flex gl-align-items-center gl-px-0! gl-pb-2!"
- stat_text_classes = "stat-text gl-flex gl-items-center gl-px-0! gl-pb-2!"
- return unless anchors.any?

View File

@ -38,29 +38,29 @@
= sprite_icon('branch', size: 12, css_class: 'fork-sprite')
= merge_request.target_branch
- if merge_request.labels.any?
.gl-mt-2.gl-display-flex.gl-flex-wrap.gl-gap-2{ role: 'group', 'aria-label': _('Labels') }
.gl-mt-2.gl-flex.gl-flex-wrap.gl-gap-2{ role: 'group', 'aria-label': _('Labels') }
- presented_labels_sorted_by_title(merge_request.labels, merge_request.project).each do |label|
= link_to_label(label, type: :merge_request)
.gl-font-sm.gl-display-flex.gl-flex-shrink-0.gl-align-self-start.gl-gap-1.gl-flex-direction-row.gl-justify-content-space-between.gl-w-full.gl-md-w-auto{ class: 'gl-md-flex-direction-column!' }
.gl-font-sm.gl-flex.gl-flex-shrink-0.gl-align-self-start.gl-gap-1.gl-flex-direction-row.gl-justify-content-space-between.gl-w-full.gl-md-w-auto{ class: 'gl-md-flex-direction-column!' }
%ul.controls.gl-gap-3.gl-pl-0.gl-align-self-end
- if merge_request.merged?
- merged_at = merge_request.merged_at ? l(merge_request.merged_at.to_time) : _("Merge date & time could not be determined")
%li.gl-display-flex{ class: 'gl-mr-0!' }
%li.gl-flex{ class: 'gl-mr-0!' }
%a.has-tooltip{ href: "#{merge_request_path(merge_request)}#widget-state", title: merged_at }
= render Pajamas::BadgeComponent.new(_('Merged'), size: 'sm', variant: 'info')
- elsif merge_request.closed?
%li.gl-display-flex{ class: 'gl-mr-0!' }
%li.gl-flex{ class: 'gl-mr-0!' }
= render Pajamas::BadgeComponent.new(_('Closed'), size: 'sm', variant: 'danger')
- if merge_request.open? && merge_request.broken?
%li.issuable-pipeline-broken.gl-display-flex{ class: 'gl-mr-0!' }
%li.issuable-pipeline-broken.gl-flex{ class: 'gl-mr-0!' }
= link_to merge_request_path(merge_request), class: "has-tooltip", title: _('Cannot be merged automatically') do
= sprite_icon('warning-solid')
- if merge_request.assignees.any?
%li.gl-display-flex{ class: 'gl-mr-0!' }
%li.gl-flex{ class: 'gl-mr-0!' }
= render 'shared/issuable/assignees', project: merge_request.project, issuable: merge_request
- if merge_request.reviewers.any?
%li.gl-display-flex.issuable-reviewers{ class: 'gl-mr-0!' }
%li.gl-flex.issuable-reviewers{ class: 'gl-mr-0!' }
= render 'shared/issuable/reviewers', project: merge_request.project, issuable: merge_request
= render 'shared/issuable_meta_data', issuable: merge_request
= render 'projects/merge_requests/approvals_count', merge_request: merge_request

View File

@ -24,8 +24,8 @@
.merge-request-details.issuable-details{ data: { id: @merge_request.project.id } }
= render "projects/merge_requests/mr_box"
.gl-static.merge-request-tabs-holder{ class: "#{'js-tabs-affix' unless ENV['RAILS_ENV'] == 'test'}" }
.merge-request-tabs-container.gl-display-flex.gl-justify-content-space-between{ class: "#{'is-merge-request' if !fluid_layout}" }
%ul.merge-request-tabs.nav-tabs.nav.nav-links.gl-display-flex.gl-flex-nowrap.gl-m-0.gl-p-0.gl-w-full.gl-lg-w-auto
.merge-request-tabs-container.gl-flex.gl-justify-content-space-between{ class: "#{'is-merge-request' if !fluid_layout}" }
%ul.merge-request-tabs.nav-tabs.nav.nav-links.gl-flex.gl-flex-nowrap.gl-m-0.gl-p-0.gl-w-full.gl-lg-w-auto
= render "projects/merge_requests/tabs/tab", class: "notes-tab", testid: "notes-tab" do
= tab_link_for @merge_request, :show, force_link: @commit.present? do
= _("Overview")
@ -47,7 +47,7 @@
.gl-flex.gl-flex-wrap.gl-items-center.justify-content-lg-end
#js-vue-discussion-counter{ data: { blocks_merge: @project.only_allow_merge_if_all_discussions_are_resolved?.to_s } }
- if !!@issuable_sidebar.dig(:current_user, :id)
.gl-display-flex.gl-gap-3
.gl-flex.gl-gap-3
.js-sidebar-todo-widget-root{ data: { project_path: @issuable_sidebar[:project_full_path], iid: @issuable_sidebar[:iid], id: @issuable_sidebar[:id] } }
- if notifications_todos_buttons_enabled?
.js-sidebar-subscriptions-widget-root{ data: { full_path: @issuable_sidebar[:project_full_path], iid: @issuable_sidebar[:iid] } }

View File

@ -1,4 +1,4 @@
.template-option.d-flex.gl-align-items-center{ data: { testid: 'template-option-container' } }
.template-option.gl-items-center{ class: '!gl-flex', data: { testid: 'template-option-container' } }
.logo.gl-mr-3.px-1
= image_tag template.logo, size: 32, class: "btn-template-icon icon-#{template.name}"
.description
@ -7,7 +7,7 @@
%br
.text-muted
= template.description
.controls.d-flex.gl-align-items-center
.controls.gl-items-center{ class: '!gl-flex' }
= render Pajamas::ButtonComponent.new(button_options: { class: 'gl-mr-3', data: { track_label: "template_preview", track_property: template.name, track_action: "click_button", track_value: "" } }, href: template.preview, target: '_blank') do
= _("Preview")
%label.btn.gl-button.btn-confirm.template-button.choose-template.gl-mb-0{ for: template.name,

View File

@ -34,6 +34,7 @@
= render_if_exists 'projects/settings/ci_cd/protected_environments', expanded: expanded
- if can?(current_user, :admin_runner, @project)
- expand_runners = expanded || params[:expand_runners]
%section.settings.no-animate#js-runners-settings{ class: ('expanded' if expand_runners), data: { testid: 'runners-settings-content' } }
.settings-header
@ -47,6 +48,7 @@
.settings-content
= render 'projects/runners/settings'
- if can?(current_user, :admin_pipeline, @project)
- if Gitlab::CurrentSettings.current_application_settings.keep_latest_artifact?
%section.settings.no-animate#js-artifacts-settings{ class: ('expanded' if expanded) }
.settings-header

View File

@ -7,8 +7,8 @@
- block_css_class = type != :productivity_analytics ? 'row-content-block second-block' : ''
.issues-filters
.issues-details-filters.filtered-search-block.gl-display-flex.gl-flex-direction-column.gl-lg-flex-direction-row.gl-gap-3{ class: block_css_class }
.gl-display-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-flex-grow-1.gl-w-full
.issues-details-filters.filtered-search-block.gl-flex.gl-flex-direction-column.gl-lg-flex-direction-row.gl-gap-3{ class: block_css_class }
.gl-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-flex-grow-1.gl-w-full
= form_tag page_filter_path, method: :get, class: 'filter-form js-filter-form gl-w-full' do
- if params[:search].present?
= hidden_field_tag :search, params[:search]
@ -18,7 +18,7 @@
- c.with_label do
%span.gl-sr-only
= _('Select all')
.issues-other-filters.filtered-search-wrapper.gl-display-flex.gl-flex-direction-column.gl-md-flex-direction-row
.issues-other-filters.filtered-search-wrapper.gl-flex.gl-flex-direction-column.gl-md-flex-direction-row
.filtered-search-box
- if type != :boards
- text = tag.span(sprite_icon('history')) + tag.span(_('Recent searches'), class: "gl-sr-only")
@ -206,6 +206,6 @@
= render_if_exists 'shared/issuable/filter_epic', type: type
= render Pajamas::ButtonComponent.new(category: :tertiary, size: :small, icon: 'clear', icon_classes: "clear-search-icon", button_options: { class: 'clear-search hidden gl-align-self-center gl-mr-1 has-tooltip', title: _('Clear') })
.filter-dropdown-container.gl-display-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-align-items-flex-start
.filter-dropdown-container.gl-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-align-items-flex-start
- if type != :productivity_analytics && show_sorting_dropdown
= render 'shared/issuable/sort_dropdown'

View File

@ -19,7 +19,7 @@
- visibilityMismatchString = i18n["#{source_level}#{target_level}"]
.form-group.row.d-flex.gl-px-5.branch-selector
.form-group.row.gl-flex.gl-px-5.branch-selector
.align-self-center
%span
= html_escape(_('From %{code_open}%{source_title}%{code_close} into')) % { source_title: source_title, code_open: '<code>'.html_safe, code_close: '</code>'.html_safe }

View File

@ -9,7 +9,7 @@
-# Note this is just for individual members. For groups please see shared/members/_group
%li.member.js-member.py-2.px-3.d-flex.flex-column{ class: [dom_class(member), ("flex-md-row" unless force_mobile_view)], id: dom_id(member) }
%li.member.js-member.py-2.px-3.gl-flex.flex-column{ class: [dom_class(member), ("flex-md-row" unless force_mobile_view)], id: dom_id(member) }
%span.list-item-name.mb-2.m-md-0
- if user
= render Pajamas::AvatarComponent.new(user, size: 32, class: 'gl-mr-3 flex-shrink-0 flex-grow-0')

View File

@ -50,7 +50,7 @@
- if can_admin_milestone
- show_delete = @project.present? || @group.present?
.col-1.order-2.order-md-3
.gl-display-flex.gl-justify-content-end
.gl-flex.gl-justify-content-end
.js-vue-milestone-actions{ data: { id: milestone.id,
title: milestone.title,
is_active: milestone.active?.to_s,

View File

@ -1,6 +1,6 @@
- page_title _("New Snippet")
.page-title-holder.d-flex.gl-align-items-center
.page-title-holder.gl-flex.gl-items-center
%h1.page-title.gl-font-size-h-display= _('New Snippet')
.gl-mt-3

View File

@ -3,6 +3,6 @@ name: diff_preview_in_email
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60007
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/382055
milestone: '15.6'
type: gitlab_com_derisk
type: beta
group: group::code review
default_enabled: false
default_enabled: true

View File

@ -0,0 +1,9 @@
---
migration_job_name: BackfillDraftNotesProjectId
description: Backfills sharding key `draft_notes.project_id` from `merge_requests`.
feature_category: code_review_workflow
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/155403
milestone: '17.1'
queued_migration_version: 20240605090456
finalize_after: '2024-07-22'
finalized_by: # version of the migration that finalized this BBM

View File

@ -0,0 +1,9 @@
---
migration_job_name: BackfillMergeRequestAssigneesProjectId
description: Backfills sharding key `merge_request_assignees.project_id` from `merge_requests`.
feature_category: code_review_workflow
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/155492
milestone: '17.1'
queued_migration_version: 20240605193142
finalize_after: '2024-07-22'
finalized_by: # version of the migration that finalized this BBM

Some files were not shown because too many files have changed in this diff Show More