summaryrefslogtreecommitdiff
path: root/app/assets
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-05-15 18:10:04 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-05-15 18:10:04 +0000
commit5ff1f808adf841bca979cb2fac6bdfa9c449d028 (patch)
treec95cfbbcb400684b2bc89fee4fc7b614315ba909 /app/assets
parentf8a5275c45ed2276daf843764113476749e680d2 (diff)
downloadgitlab-ce-5ff1f808adf841bca979cb2fac6bdfa9c449d028.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets')
-rw-r--r--app/assets/javascripts/admin/abuse_reports/components/abuse_report_actions.vue3
-rw-r--r--app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue6
-rw-r--r--app/assets/javascripts/admin/broadcast_messages/components/base.vue4
-rw-r--r--app/assets/javascripts/admin/broadcast_messages/components/message_form.vue4
-rw-r--r--app/assets/javascripts/analytics/shared/components/metric_tile.vue4
-rw-r--r--app/assets/javascripts/authentication/password/components/password_input.vue6
-rw-r--r--app/assets/javascripts/authentication/password/index.js5
-rw-r--r--app/assets/javascripts/behaviors/shortcuts/keybindings.js9
-rw-r--r--app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js2
-rw-r--r--app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue4
-rw-r--r--app/assets/javascripts/ci/pipeline_new/components/pipeline_new_form.vue4
-rw-r--r--app/assets/javascripts/ci/runner/admin_new_runner/admin_new_runner_app.vue4
-rw-r--r--app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue4
-rw-r--r--app/assets/javascripts/ci/runner/components/runner_update_form.vue4
-rw-r--r--app/assets/javascripts/ci/runner/group_new_runner/group_new_runner_app.vue4
-rw-r--r--app/assets/javascripts/ci/runner/group_runner_show/group_runner_show_app.vue4
-rw-r--r--app/assets/javascripts/ci/runner/project_new_runner/project_new_runner_app.vue4
-rw-r--r--app/assets/javascripts/editor/schema/ci.json8
-rw-r--r--app/assets/javascripts/gitlab_pages/components/pages_pipeline_wizard.vue4
-rw-r--r--app/assets/javascripts/import_entities/import_projects/components/import_projects_table.vue2
-rw-r--r--app/assets/javascripts/jobs/components/job/manual_variables_form.vue4
-rw-r--r--app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue22
-rw-r--r--app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue10
-rw-r--r--app/assets/javascripts/jobs/components/table/cells/actions_cell.vue4
-rw-r--r--app/assets/javascripts/lib/utils/url_utility.js26
-rw-r--r--app/assets/javascripts/listbox/redirect_behavior.js4
-rw-r--r--app/assets/javascripts/members/components/filter_sort/members_filtered_search_bar.vue3
-rw-r--r--app/assets/javascripts/milestones/components/delete_milestone_modal.vue4
-rw-r--r--app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/components/candidate_detail_row.vue41
-rw-r--r--app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/ml_candidates_show.vue87
-rw-r--r--app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue4
-rw-r--r--app/assets/javascripts/monitoring/components/dashboard_header.vue6
-rw-r--r--app/assets/javascripts/pages/admin/jobs/components/cancel_jobs_modal.vue4
-rw-r--r--app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue4
-rw-r--r--app/assets/javascripts/pages/registrations/new/index.js4
-rw-r--r--app/assets/javascripts/pages/sessions/index.js2
-rw-r--r--app/assets/javascripts/pipelines/components/header_component.vue4
-rw-r--r--app/assets/javascripts/pipelines/components/jobs/failed_jobs_table.vue4
-rw-r--r--app/assets/javascripts/projects/commits/components/author_select.vue6
-rw-r--r--app/assets/javascripts/releases/stores/modules/edit_new/actions.js4
-rw-r--r--app/assets/javascripts/repository/components/blob_content_viewer.vue4
-rw-r--r--app/assets/javascripts/snippets/components/edit.vue4
-rw-r--r--app/assets/javascripts/user_lists/store/edit/actions.js4
-rw-r--r--app/assets/javascripts/user_lists/store/new/actions.js4
-rw-r--r--app/assets/javascripts/vue_shared/security_configuration/components/manage_via_mr.vue4
-rw-r--r--app/assets/stylesheets/page_bundles/login.scss5
46 files changed, 221 insertions, 140 deletions
diff --git a/app/assets/javascripts/admin/abuse_reports/components/abuse_report_actions.vue b/app/assets/javascripts/admin/abuse_reports/components/abuse_report_actions.vue
index 4f3be0e3a59..5d42caa75ab 100644
--- a/app/assets/javascripts/admin/abuse_reports/components/abuse_report_actions.vue
+++ b/app/assets/javascripts/admin/abuse_reports/components/abuse_report_actions.vue
@@ -2,7 +2,7 @@
import { GlDisclosureDropdown, GlModal } from '@gitlab/ui';
import axios from '~/lib/utils/axios_utils';
import { __, sprintf } from '~/locale';
-import { redirectTo, refreshCurrentPage } from '~/lib/utils/url_utility';
+import { redirectTo, refreshCurrentPage } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { createAlert, VARIANT_SUCCESS } from '~/alert';
import { ACTIONS_I18N } from '../constants';
@@ -126,6 +126,7 @@ export default {
.catch(this.handleError);
},
handleRemoveReportResponse() {
+ // eslint-disable-next-line import/no-deprecated
if (this.report.redirectPath) redirectTo(this.report.redirectPath);
else refreshCurrentPage();
},
diff --git a/app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue b/app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue
index e1989cadd86..b1eb5371a35 100644
--- a/app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue
+++ b/app/assets/javascripts/admin/abuse_reports/components/abuse_reports_filtered_search_bar.vue
@@ -1,5 +1,5 @@
<script>
-import { setUrlParams, redirectTo, queryToObject, updateHistory } from '~/lib/utils/url_utility';
+import { setUrlParams, redirectTo, queryToObject, updateHistory } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { FILTERED_SEARCH_TERM } from '~/vue_shared/components/filtered_search_bar/constants';
import FilteredSearchBar from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue';
import {
@@ -80,12 +80,12 @@ export default {
params = { ...params, sort };
}
- redirectTo(setUrlParams(params, window.location.href, true));
+ redirectTo(setUrlParams(params, window.location.href, true)); // eslint-disable-line import/no-deprecated
},
handleSort(sort) {
const { page, ...query } = queryToObject(window.location.search);
- redirectTo(setUrlParams({ ...query, sort }, window.location.href, true));
+ redirectTo(setUrlParams({ ...query, sort }, window.location.href, true)); // eslint-disable-line import/no-deprecated
},
},
filteredSearchNamespace: 'abuse_reports',
diff --git a/app/assets/javascripts/admin/broadcast_messages/components/base.vue b/app/assets/javascripts/admin/broadcast_messages/components/base.vue
index c28cd266617..667ab4c34f5 100644
--- a/app/assets/javascripts/admin/broadcast_messages/components/base.vue
+++ b/app/assets/javascripts/admin/broadcast_messages/components/base.vue
@@ -1,6 +1,6 @@
<script>
import { GlPagination } from '@gitlab/ui';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { buildUrlWithCurrentLocation } from '~/lib/utils/common_utils';
import { createAlert, VARIANT_DANGER } from '~/alert';
import { s__ } from '~/locale';
@@ -66,7 +66,7 @@ export default {
// stranded on page 2 when deleting the last message.
// Force a page reload to avoid this edge case.
if (newVal === PER_PAGE && oldVal === PER_PAGE + 1) {
- redirectTo(this.buildPageUrl(1));
+ redirectTo(this.buildPageUrl(1)); // eslint-disable-line import/no-deprecated
}
},
},
diff --git a/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue b/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue
index 789cf77a88a..022f5df9c96 100644
--- a/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue
+++ b/app/assets/javascripts/admin/broadcast_messages/components/message_form.vue
@@ -14,7 +14,7 @@ import {
import axios from '~/lib/utils/axios_utils';
import { s__ } from '~/locale';
import { createAlert, VARIANT_DANGER } from '~/alert';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';
import SafeHtml from '~/vue_shared/directives/safe_html';
import { THEMES, TYPES, TYPE_BANNER } from '../constants';
@@ -143,7 +143,7 @@ export default {
const success = await this.submitForm();
if (success) {
- redirectTo(this.messagesPath);
+ redirectTo(this.messagesPath); // eslint-disable-line import/no-deprecated
} else {
this.loading = false;
}
diff --git a/app/assets/javascripts/analytics/shared/components/metric_tile.vue b/app/assets/javascripts/analytics/shared/components/metric_tile.vue
index 845a3386f6c..54dbe329c7a 100644
--- a/app/assets/javascripts/analytics/shared/components/metric_tile.vue
+++ b/app/assets/javascripts/analytics/shared/components/metric_tile.vue
@@ -1,6 +1,6 @@
<script>
import { GlSingleStat } from '@gitlab/ui/dist/charts';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import MetricPopover from './metric_popover.vue';
export default {
@@ -27,7 +27,7 @@ export default {
methods: {
clickHandler({ links }) {
if (this.hasLinks) {
- redirectTo(links[0].url);
+ redirectTo(links[0].url); // eslint-disable-line import/no-deprecated
}
},
},
diff --git a/app/assets/javascripts/authentication/password/components/password_input.vue b/app/assets/javascripts/authentication/password/components/password_input.vue
index 9b3c4a692a6..fa9a7782b74 100644
--- a/app/assets/javascripts/authentication/password/components/password_input.vue
+++ b/app/assets/javascripts/authentication/password/components/password_input.vue
@@ -32,6 +32,11 @@ export default {
required: false,
default: '',
},
+ testid: {
+ type: String,
+ required: false,
+ default: '',
+ },
autocomplete: {
type: String,
required: false,
@@ -76,6 +81,7 @@ export default {
:name="name"
:minlength="minimumPasswordLength"
:data-qa-selector="qaSelector"
+ :data-testid="testid"
:title="title"
:type="type"
/>
diff --git a/app/assets/javascripts/authentication/password/index.js b/app/assets/javascripts/authentication/password/index.js
index 4a73e0975ca..a4f2d038cf7 100644
--- a/app/assets/javascripts/authentication/password/index.js
+++ b/app/assets/javascripts/authentication/password/index.js
@@ -2,14 +2,14 @@ import Vue from 'vue';
import GlFieldErrors from '~/gl_field_errors';
import PasswordInput from './components/password_input.vue';
-export const initTogglePasswordVisibility = () => {
+export const initPasswordInput = () => {
document.querySelectorAll('.js-password').forEach((el) => {
if (!el) {
return null;
}
const { form } = el;
- const { title, id, minimumPasswordLength, qaSelector, autocomplete, name } = el.dataset;
+ const { title, id, minimumPasswordLength, qaSelector, testid, autocomplete, name } = el.dataset;
// eslint-disable-next-line no-new
new Vue({
@@ -22,6 +22,7 @@ export const initTogglePasswordVisibility = () => {
id,
minimumPasswordLength,
qaSelector,
+ testid,
autocomplete,
name,
},
diff --git a/app/assets/javascripts/behaviors/shortcuts/keybindings.js b/app/assets/javascripts/behaviors/shortcuts/keybindings.js
index d58e02e7983..a88cc1834ac 100644
--- a/app/assets/javascripts/behaviors/shortcuts/keybindings.js
+++ b/app/assets/javascripts/behaviors/shortcuts/keybindings.js
@@ -240,7 +240,7 @@ export const REPO_GRAPH_SCROLL_BOTTOM = {
export const GO_TO_PROJECT_OVERVIEW = {
id: 'project.goToOverview',
description: __("Go to the project's overview page"),
- defaultKeys: ['g p'], // eslint-disable-line @gitlab/require-i18n-strings
+ defaultKeys: ['g o'], // eslint-disable-line @gitlab/require-i18n-strings
};
export const GO_TO_PROJECT_ACTIVITY_FEED = {
@@ -309,6 +309,12 @@ export const GO_TO_PROJECT_MERGE_REQUESTS = {
defaultKeys: ['g m'], // eslint-disable-line @gitlab/require-i18n-strings
};
+export const GO_TO_PROJECT_PIPELINES = {
+ id: 'project.goToPipelines',
+ description: __('Go to pipelines'),
+ defaultKeys: ['g p'], // eslint-disable-line @gitlab/require-i18n-strings
+};
+
export const GO_TO_PROJECT_JOBS = {
id: 'project.goToJobs',
description: __('Go to jobs'),
@@ -598,6 +604,7 @@ const PROJECT_SHORTCUTS_GROUP = {
NEW_ISSUE,
GO_TO_PROJECT_ISSUE_BOARDS,
GO_TO_PROJECT_MERGE_REQUESTS,
+ GO_TO_PROJECT_PIPELINES,
GO_TO_PROJECT_JOBS,
...(gon.features?.removeMonitorMetrics ? [] : [GO_TO_PROJECT_METRICS]),
GO_TO_PROJECT_ENVIRONMENTS,
diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js
index bd08dc28f7a..9e6c9c2e08e 100644
--- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js
+++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_navigation.js
@@ -6,6 +6,7 @@ import {
GO_TO_PROJECT_RELEASES,
GO_TO_PROJECT_FILES,
GO_TO_PROJECT_COMMITS,
+ GO_TO_PROJECT_PIPELINES,
GO_TO_PROJECT_JOBS,
GO_TO_PROJECT_REPO_GRAPH,
GO_TO_PROJECT_REPO_CHARTS,
@@ -32,6 +33,7 @@ export default class ShortcutsNavigation extends Shortcuts {
[GO_TO_PROJECT_RELEASES, () => findAndFollowLink('.shortcuts-deployments-releases')],
[GO_TO_PROJECT_FILES, () => findAndFollowLink('.shortcuts-tree')],
[GO_TO_PROJECT_COMMITS, () => findAndFollowLink('.shortcuts-commits')],
+ [GO_TO_PROJECT_PIPELINES, () => findAndFollowLink('.shortcuts-pipelines')],
[GO_TO_PROJECT_JOBS, () => findAndFollowLink('.shortcuts-builds')],
[GO_TO_PROJECT_REPO_GRAPH, () => findAndFollowLink('.shortcuts-network')],
[GO_TO_PROJECT_REPO_CHARTS, () => findAndFollowLink('.shortcuts-repository-charts')],
diff --git a/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue b/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue
index ff848a973e3..de8e5a1a284 100644
--- a/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue
+++ b/app/assets/javascripts/ci/pipeline_editor/pipeline_editor_app.vue
@@ -1,7 +1,7 @@
<script>
import { GlLoadingIcon, GlModal } from '@gitlab/ui';
import { fetchPolicies } from '~/lib/graphql';
-import { mergeUrlParams, queryToObject, redirectTo } from '~/lib/utils/url_utility';
+import { mergeUrlParams, queryToObject, redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { __, s__ } from '~/locale';
import { unwrapStagesWithNeeds } from '~/pipelines/components/unwrapping_utils';
@@ -325,7 +325,7 @@ export default {
},
this.newMergeRequestPath,
);
- redirectTo(url);
+ redirectTo(url); // eslint-disable-line import/no-deprecated
},
async refetchContent() {
this.$apollo.queries.initialCiFileContent.skip = false;
diff --git a/app/assets/javascripts/ci/pipeline_new/components/pipeline_new_form.vue b/app/assets/javascripts/ci/pipeline_new/components/pipeline_new_form.vue
index 4c4c0ce24f2..6fd5c8130ad 100644
--- a/app/assets/javascripts/ci/pipeline_new/components/pipeline_new_form.vue
+++ b/app/assets/javascripts/ci/pipeline_new/components/pipeline_new_form.vue
@@ -18,7 +18,7 @@ import { uniqueId } from 'lodash';
import Vue from 'vue';
import { fetchPolicies } from '~/lib/graphql';
import SafeHtml from '~/vue_shared/directives/safe_html';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__, __, n__ } from '~/locale';
import {
CC_VALIDATION_REQUIRED_ERROR,
@@ -339,7 +339,7 @@ export default {
const { id, errors, totalWarnings, warnings } = data.createPipeline;
if (id) {
- redirectTo(`${this.pipelinesPath}/${id}`);
+ redirectTo(`${this.pipelinesPath}/${id}`); // eslint-disable-line import/no-deprecated
return;
}
diff --git a/app/assets/javascripts/ci/runner/admin_new_runner/admin_new_runner_app.vue b/app/assets/javascripts/ci/runner/admin_new_runner/admin_new_runner_app.vue
index d344fb248cf..e4d47fba464 100644
--- a/app/assets/javascripts/ci/runner/admin_new_runner/admin_new_runner_app.vue
+++ b/app/assets/javascripts/ci/runner/admin_new_runner/admin_new_runner_app.vue
@@ -1,6 +1,6 @@
<script>
import { createAlert, VARIANT_SUCCESS } from '~/alert';
-import { redirectTo, setUrlParams } from '~/lib/utils/url_utility';
+import { redirectTo, setUrlParams } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__ } from '~/locale';
import RegistrationCompatibilityAlert from '~/ci/runner/components/registration/registration_compatibility_alert.vue';
@@ -32,7 +32,7 @@ export default {
message: s__('Runners|Runner created.'),
variant: VARIANT_SUCCESS,
});
- redirectTo(ephemeralRegisterUrl);
+ redirectTo(ephemeralRegisterUrl); // eslint-disable-line import/no-deprecated
},
onError(error) {
createAlert({ message: error.message });
diff --git a/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue b/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue
index 36fb1cee525..668a55d2437 100644
--- a/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue
+++ b/app/assets/javascripts/ci/runner/admin_runner_show/admin_runner_show_app.vue
@@ -2,7 +2,7 @@
import { createAlert, VARIANT_SUCCESS } from '~/alert';
import { TYPENAME_CI_RUNNER } from '~/graphql_shared/constants';
import { convertToGraphQLId } from '~/graphql_shared/utils';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import RunnerDeleteButton from '../components/runner_delete_button.vue';
import RunnerEditButton from '../components/runner_edit_button.vue';
@@ -71,7 +71,7 @@ export default {
},
onDeleted({ message }) {
saveAlertToLocalStorage({ message, variant: VARIANT_SUCCESS });
- redirectTo(this.runnersPath);
+ redirectTo(this.runnersPath); // eslint-disable-line import/no-deprecated
},
},
};
diff --git a/app/assets/javascripts/ci/runner/components/runner_update_form.vue b/app/assets/javascripts/ci/runner/components/runner_update_form.vue
index dd8e965cecd..2d34c551d6d 100644
--- a/app/assets/javascripts/ci/runner/components/runner_update_form.vue
+++ b/app/assets/javascripts/ci/runner/components/runner_update_form.vue
@@ -14,7 +14,7 @@ import {
runnerToModel,
} from 'ee_else_ce/ci/runner/runner_update_form_utils';
import { createAlert, VARIANT_SUCCESS } from '~/alert';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { __ } from '~/locale';
import { captureException } from '~/ci/runner/sentry_utils';
import { ACCESS_LEVEL_NOT_PROTECTED, ACCESS_LEVEL_REF_PROTECTED, PROJECT_TYPE } from '../constants';
@@ -101,7 +101,7 @@ export default {
},
onSuccess() {
saveAlertToLocalStorage({ message: __('Changes saved.'), variant: VARIANT_SUCCESS });
- redirectTo(this.runnerPath);
+ redirectTo(this.runnerPath); // eslint-disable-line import/no-deprecated
},
onError(message) {
this.saving = false;
diff --git a/app/assets/javascripts/ci/runner/group_new_runner/group_new_runner_app.vue b/app/assets/javascripts/ci/runner/group_new_runner/group_new_runner_app.vue
index c2622d720bf..67d29daf66f 100644
--- a/app/assets/javascripts/ci/runner/group_new_runner/group_new_runner_app.vue
+++ b/app/assets/javascripts/ci/runner/group_new_runner/group_new_runner_app.vue
@@ -1,6 +1,6 @@
<script>
import { createAlert, VARIANT_SUCCESS } from '~/alert';
-import { redirectTo, setUrlParams } from '~/lib/utils/url_utility';
+import { redirectTo, setUrlParams } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__ } from '~/locale';
import RegistrationCompatibilityAlert from '~/ci/runner/components/registration/registration_compatibility_alert.vue';
@@ -38,7 +38,7 @@ export default {
message: s__('Runners|Runner created.'),
variant: VARIANT_SUCCESS,
});
- redirectTo(ephemeralRegisterUrl);
+ redirectTo(ephemeralRegisterUrl); // eslint-disable-line import/no-deprecated
},
onError(error) {
createAlert({ message: error.message });
diff --git a/app/assets/javascripts/ci/runner/group_runner_show/group_runner_show_app.vue b/app/assets/javascripts/ci/runner/group_runner_show/group_runner_show_app.vue
index 2db3a2f42a7..1318bf5a2e6 100644
--- a/app/assets/javascripts/ci/runner/group_runner_show/group_runner_show_app.vue
+++ b/app/assets/javascripts/ci/runner/group_runner_show/group_runner_show_app.vue
@@ -2,7 +2,7 @@
import { createAlert, VARIANT_SUCCESS } from '~/alert';
import { TYPENAME_CI_RUNNER } from '~/graphql_shared/constants';
import { convertToGraphQLId } from '~/graphql_shared/utils';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import RunnerDeleteButton from '../components/runner_delete_button.vue';
import RunnerEditButton from '../components/runner_edit_button.vue';
@@ -76,7 +76,7 @@ export default {
},
onDeleted({ message }) {
saveAlertToLocalStorage({ message, variant: VARIANT_SUCCESS });
- redirectTo(this.runnersPath);
+ redirectTo(this.runnersPath); // eslint-disable-line import/no-deprecated
},
},
};
diff --git a/app/assets/javascripts/ci/runner/project_new_runner/project_new_runner_app.vue b/app/assets/javascripts/ci/runner/project_new_runner/project_new_runner_app.vue
index a3661e08497..f0ae54c0232 100644
--- a/app/assets/javascripts/ci/runner/project_new_runner/project_new_runner_app.vue
+++ b/app/assets/javascripts/ci/runner/project_new_runner/project_new_runner_app.vue
@@ -1,6 +1,6 @@
<script>
import { createAlert, VARIANT_SUCCESS } from '~/alert';
-import { redirectTo, setUrlParams } from '~/lib/utils/url_utility';
+import { redirectTo, setUrlParams } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__ } from '~/locale';
import RegistrationCompatibilityAlert from '~/ci/runner/components/registration/registration_compatibility_alert.vue';
@@ -38,7 +38,7 @@ export default {
message: s__('Runners|Runner created.'),
variant: VARIANT_SUCCESS,
});
- redirectTo(ephemeralRegisterUrl);
+ redirectTo(ephemeralRegisterUrl); // eslint-disable-line import/no-deprecated
},
onError(error) {
createAlert({ message: error.message });
diff --git a/app/assets/javascripts/editor/schema/ci.json b/app/assets/javascripts/editor/schema/ci.json
index 1fb6f606b6b..d240ad7353a 100644
--- a/app/assets/javascripts/editor/schema/ci.json
+++ b/app/assets/javascripts/editor/schema/ci.json
@@ -1092,6 +1092,14 @@
"on_failure",
"always"
]
+ },
+ "fallback_keys": {
+ "type": "array",
+ "markdownDescription": "List of keys to download cache from if no cache hit occurred for key",
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 5
}
}
},
diff --git a/app/assets/javascripts/gitlab_pages/components/pages_pipeline_wizard.vue b/app/assets/javascripts/gitlab_pages/components/pages_pipeline_wizard.vue
index bf71f682048..f19e047061f 100644
--- a/app/assets/javascripts/gitlab_pages/components/pages_pipeline_wizard.vue
+++ b/app/assets/javascripts/gitlab_pages/components/pages_pipeline_wizard.vue
@@ -5,7 +5,7 @@ import PipelineWizard from '~/pipeline_wizard/pipeline_wizard.vue';
import PagesWizardTemplate from '~/pipeline_wizard/templates/pages.yml?raw';
import { logError } from '~/lib/logger';
import { s__ } from '~/locale';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import pagesMarkOnboardingComplete from '../queries/mark_onboarding_complete.graphql';
export const i18n = {
@@ -57,7 +57,7 @@ export default {
async onDone() {
this.loading = true;
await this.updateOnboardingState();
- redirectTo(this.redirectToWhenDone);
+ redirectTo(this.redirectToWhenDone); // eslint-disable-line import/no-deprecated
},
},
};
diff --git a/app/assets/javascripts/import_entities/import_projects/components/import_projects_table.vue b/app/assets/javascripts/import_entities/import_projects/components/import_projects_table.vue
index a867a1695b9..1c830d8c2c5 100644
--- a/app/assets/javascripts/import_entities/import_projects/components/import_projects_table.vue
+++ b/app/assets/javascripts/import_entities/import_projects/components/import_projects_table.vue
@@ -58,7 +58,7 @@ export default {
data() {
return {
optionalStagesSelection: Object.fromEntries(
- this.optionalStages.map(({ name }) => [name, false]),
+ this.optionalStages.map(({ name, selected }) => [name, selected]),
),
};
},
diff --git a/app/assets/javascripts/jobs/components/job/manual_variables_form.vue b/app/assets/javascripts/jobs/components/job/manual_variables_form.vue
index 19a75ffaa85..d3b2ddc5422 100644
--- a/app/assets/javascripts/jobs/components/job/manual_variables_form.vue
+++ b/app/assets/javascripts/jobs/components/job/manual_variables_form.vue
@@ -16,7 +16,7 @@ import { TYPENAME_CI_BUILD, TYPENAME_COMMIT_STATUS } from '~/graphql_shared/cons
import { convertToGraphQLId } from '~/graphql_shared/utils';
import { JOB_GRAPHQL_ERRORS } from '~/jobs/constants';
import { helpPagePath } from '~/helpers/help_page_helper';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__ } from '~/locale';
import { reportMessageToSentry } from '~/jobs/utils';
import GetJob from './graphql/queries/get_job.query.graphql';
@@ -186,7 +186,7 @@ export default {
return `${this.$options.inputTypes[type]}-${id}`;
},
navigateToJob(path) {
- redirectTo(path);
+ redirectTo(path); // eslint-disable-line import/no-deprecated
},
runJob() {
this.runBtnDisabled = true;
diff --git a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue b/app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue
index 05567328660..0ba34eafa58 100644
--- a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue
+++ b/app/assets/javascripts/jobs/components/job/sidebar/sidebar_detail_row.vue
@@ -22,6 +22,11 @@ export default {
required: false,
default: '',
},
+ path: {
+ type: String,
+ required: false,
+ default: '',
+ },
},
computed: {
hasTitle() {
@@ -35,10 +40,19 @@ export default {
</script>
<template>
<p class="gl-display-flex gl-justify-content-space-between gl-mb-2">
- <span v-if="hasTitle"
- ><b>{{ title }}:</b> {{ value }}</span
- >
- <gl-link v-if="hasHelpURL" :href="helpUrl" target="_blank">
+ <span v-if="hasTitle">
+ <b>{{ 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 }}</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>
diff --git a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue b/app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue
index 8300a22cb67..3cd90eb3bca 100644
--- a/app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue
+++ b/app/assets/javascripts/jobs/components/job/sidebar/sidebar_job_details_container.vue
@@ -70,6 +70,9 @@ export default {
timeoutSource: this.job.metadata.timeout_source,
});
},
+ runnerAdminPath() {
+ return this.job?.runner?.admin_path || '';
+ },
},
i18n: {
COVERAGE: __('Coverage'),
@@ -104,7 +107,12 @@ export default {
data-testid="job-timeout"
:title="$options.i18n.TIMEOUT"
/>
- <detail-row v-if="job.runner" :value="runnerId" :title="$options.i18n.RUNNER" />
+ <detail-row
+ v-if="job.runner"
+ :value="runnerId"
+ :title="$options.i18n.RUNNER"
+ :path="runnerAdminPath"
+ />
<detail-row v-if="job.coverage" :value="coverage" :title="$options.i18n.COVERAGE" />
<p v-if="hasTags" class="build-detail-row" data-testid="job-tags">
diff --git a/app/assets/javascripts/jobs/components/table/cells/actions_cell.vue b/app/assets/javascripts/jobs/components/table/cells/actions_cell.vue
index f4061f3d375..d97f6f6ff8c 100644
--- a/app/assets/javascripts/jobs/components/table/cells/actions_cell.vue
+++ b/app/assets/javascripts/jobs/components/table/cells/actions_cell.vue
@@ -8,7 +8,7 @@ import {
GlTooltipDirective,
} from '@gitlab/ui';
import GlCountdown from '~/vue_shared/components/gl_countdown.vue';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import {
ACTIONS_DOWNLOAD_ARTIFACTS,
ACTIONS_START_NOW,
@@ -138,7 +138,7 @@ export default {
} else if (redirect) {
// Retry and Play actions redirect to job detail view
// we don't need to refetch with jobActionPerformed event
- redirectTo(job.detailedStatus.detailsPath);
+ redirectTo(job.detailedStatus.detailsPath); // eslint-disable-line import/no-deprecated
} else {
eventHub.$emit('jobActionPerformed');
}
diff --git a/app/assets/javascripts/lib/utils/url_utility.js b/app/assets/javascripts/lib/utils/url_utility.js
index 6c1495b8468..f16ff188edb 100644
--- a/app/assets/javascripts/lib/utils/url_utility.js
+++ b/app/assets/javascripts/lib/utils/url_utility.js
@@ -272,6 +272,11 @@ export const setUrlFragment = (url, fragment) => {
return `${rootUrl}#${encodedFragment}`;
};
+/**
+ * Navigates to a URL
+ * @param {*} url - url to navigate to
+ * @param {*} external - if true, open a new page or tab
+ */
export function visitUrl(url, external = false) {
if (external) {
// Simulate `target="_blank" rel="noopener noreferrer"`
@@ -284,6 +289,19 @@ export function visitUrl(url, external = false) {
}
}
+export function refreshCurrentPage() {
+ visitUrl(window.location.href);
+}
+
+/**
+ * Navigates to a URL
+ * @deprecated Use visitUrl from ~/lib/utils/url_utility.js instead
+ * @param {*} url
+ */
+export function redirectTo(url) {
+ return window.location.assign(url);
+}
+
export function updateHistory({ state = {}, title = '', url, replace = false, win = window } = {}) {
if (win.history) {
if (replace) {
@@ -294,14 +312,6 @@ export function updateHistory({ state = {}, title = '', url, replace = false, wi
}
}
-export function refreshCurrentPage() {
- visitUrl(window.location.href);
-}
-
-export function redirectTo(url) {
- return window.location.assign(url);
-}
-
export const escapeFileUrl = (fileUrl) => encodeURIComponent(fileUrl).replace(/%2F/g, '/');
export function webIDEUrl(route = undefined) {
diff --git a/app/assets/javascripts/listbox/redirect_behavior.js b/app/assets/javascripts/listbox/redirect_behavior.js
index 38d9d84f889..28b0892d126 100644
--- a/app/assets/javascripts/listbox/redirect_behavior.js
+++ b/app/assets/javascripts/listbox/redirect_behavior.js
@@ -1,5 +1,5 @@
import { initListbox } from '~/listbox';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
/**
* Instantiates GlCollapsibleListbox components with redirect behavior for tags created
@@ -15,7 +15,7 @@ export function initRedirectListboxBehavior() {
return elements.map((el) =>
initListbox(el, {
onChange({ href }) {
- redirectTo(href);
+ redirectTo(href); // eslint-disable-line import/no-deprecated
},
}),
);
diff --git a/app/assets/javascripts/members/components/filter_sort/members_filtered_search_bar.vue b/app/assets/javascripts/members/components/filter_sort/members_filtered_search_bar.vue
index 685482a76de..8cdaa76e673 100644
--- a/app/assets/javascripts/members/components/filter_sort/members_filtered_search_bar.vue
+++ b/app/assets/javascripts/members/components/filter_sort/members_filtered_search_bar.vue
@@ -5,7 +5,7 @@ import {
getParameterByName,
setUrlParams,
queryToObject,
- redirectTo,
+ redirectTo, // eslint-disable-line import/no-deprecated
} from '~/lib/utils/url_utility';
import {
SORT_QUERY_PARAM_NAME,
@@ -119,6 +119,7 @@ export default {
const sortParamValue = getParameterByName(SORT_QUERY_PARAM_NAME);
const activeTabParamValue = getParameterByName(ACTIVE_TAB_QUERY_PARAM_NAME);
+ // eslint-disable-next-line import/no-deprecated
redirectTo(
setUrlParams(
{
diff --git a/app/assets/javascripts/milestones/components/delete_milestone_modal.vue b/app/assets/javascripts/milestones/components/delete_milestone_modal.vue
index 8e7428089e2..c13bf50eba7 100644
--- a/app/assets/javascripts/milestones/components/delete_milestone_modal.vue
+++ b/app/assets/javascripts/milestones/components/delete_milestone_modal.vue
@@ -3,7 +3,7 @@ import { GlSprintf, GlModal } from '@gitlab/ui';
import { createAlert } from '~/alert';
import axios from '~/lib/utils/axios_utils';
import { HTTP_STATUS_NOT_FOUND } from '~/lib/utils/http_status';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { __, n__, s__, sprintf } from '~/locale';
import eventHub from '../event_hub';
@@ -76,7 +76,7 @@ Once deleted, it cannot be undone or recovered.`),
});
// follow the rediect to milestones overview page
- redirectTo(response.request.responseURL);
+ redirectTo(response.request.responseURL); // eslint-disable-line import/no-deprecated
})
.catch((error) => {
eventHub.$emit('deleteMilestoneModal.requestFinished', {
diff --git a/app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/components/candidate_detail_row.vue b/app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/components/candidate_detail_row.vue
new file mode 100644
index 00000000000..20c5248052b
--- /dev/null
+++ b/app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/components/candidate_detail_row.vue
@@ -0,0 +1,41 @@
+<script>
+import { GlLink } from '@gitlab/ui';
+
+export default {
+ name: 'CandidateDetailRow',
+ components: {
+ GlLink,
+ },
+ props: {
+ label: {
+ type: String,
+ required: true,
+ },
+ text: {
+ type: [String, Number],
+ required: true,
+ },
+ href: {
+ type: String,
+ required: false,
+ default: '',
+ },
+ sectionLabel: {
+ type: String,
+ required: false,
+ default: '',
+ },
+ },
+};
+</script>
+
+<template>
+ <tr>
+ <td class="gl-text-secondary gl-font-weight-bold">{{ sectionLabel }}</td>
+ <td class="gl-font-weight-bold">{{ label }}</td>
+ <td>
+ <gl-link v-if="href" :href="href">{{ text }}</gl-link>
+ <template v-else>{{ text }}</template>
+ </td>
+ </tr>
+</template>
diff --git a/app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/ml_candidates_show.vue b/app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/ml_candidates_show.vue
index cef5da726f3..3ef73e7c874 100644
--- a/app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/ml_candidates_show.vue
+++ b/app/assets/javascripts/ml/experiment_tracking/routes/candidates/show/ml_candidates_show.vue
@@ -1,7 +1,8 @@
<script>
-import { GlLink } from '@gitlab/ui';
import ModelExperimentsHeader from '~/ml/experiment_tracking/components/model_experiments_header.vue';
import DeleteButton from '~/ml/experiment_tracking/components/delete_button.vue';
+import DetailRow from './components/candidate_detail_row.vue';
+
import {
TITLE_LABEL,
INFO_LABEL,
@@ -23,7 +24,7 @@ export default {
components: {
ModelExperimentsHeader,
DeleteButton,
- GlLink,
+ DetailRow,
},
props: {
candidate: {
@@ -38,27 +39,27 @@ export default {
STATUS_LABEL,
EXPERIMENT_LABEL,
ARTIFACTS_LABEL,
- PARAMETERS_LABEL,
- METRICS_LABEL,
- METADATA_LABEL,
DELETE_CANDIDATE_CONFIRMATION_MESSAGE,
DELETE_CANDIDATE_PRIMARY_ACTION_LABEL,
DELETE_CANDIDATE_MODAL_TITLE,
MLFLOW_ID_LABEL,
},
computed: {
+ info() {
+ return Object.freeze(this.candidate.info);
+ },
sections() {
return [
{
- sectionName: this.$options.i18n.PARAMETERS_LABEL,
+ sectionName: PARAMETERS_LABEL,
sectionValues: this.candidate.params,
},
{
- sectionName: this.$options.i18n.METRICS_LABEL,
+ sectionName: METRICS_LABEL,
sectionValues: this.candidate.metrics,
},
{
- sectionName: this.$options.i18n.METADATA_LABEL,
+ sectionName: METADATA_LABEL,
sectionValues: this.candidate.metadata,
},
];
@@ -71,7 +72,7 @@ export default {
<div>
<model-experiments-header :page-title="$options.i18n.TITLE_LABEL">
<delete-button
- :delete-path="candidate.info.path"
+ :delete-path="info.path"
:delete-confirmation-text="$options.i18n.DELETE_CANDIDATE_CONFIRMATION_MESSAGE"
:action-primary-text="$options.i18n.DELETE_CANDIDATE_PRIMARY_ACTION_LABEL"
:modal-title="$options.i18n.DELETE_CANDIDATE_MODAL_TITLE"
@@ -82,55 +83,39 @@ export default {
<tbody>
<tr class="divider"></tr>
- <tr>
- <td class="gl-text-secondary gl-font-weight-bold">{{ $options.i18n.INFO_LABEL }}</td>
- <td class="gl-font-weight-bold">{{ $options.i18n.ID_LABEL }}</td>
- <td>{{ candidate.info.iid }}</td>
- </tr>
+ <detail-row
+ :label="$options.i18n.ID_LABEL"
+ :section-label="$options.i18n.INFO_LABEL"
+ :text="info.iid"
+ />
- <tr>
- <td></td>
- <td class="gl-font-weight-bold">{{ $options.i18n.MLFLOW_ID_LABEL }}</td>
- <td>{{ candidate.info.eid }}</td>
- </tr>
+ <detail-row :label="$options.i18n.MLFLOW_ID_LABEL" :text="info.eid" />
- <tr>
- <td></td>
- <td class="gl-font-weight-bold">{{ $options.i18n.STATUS_LABEL }}</td>
- <td>{{ candidate.info.status }}</td>
- </tr>
+ <detail-row :label="$options.i18n.STATUS_LABEL" :text="info.status" />
- <tr>
- <td></td>
- <td class="gl-font-weight-bold">{{ $options.i18n.EXPERIMENT_LABEL }}</td>
- <td>
- <gl-link :href="candidate.info.path_to_experiment">{{
- candidate.info.experiment_name
- }}</gl-link>
- </td>
- </tr>
+ <detail-row
+ :label="$options.i18n.EXPERIMENT_LABEL"
+ :text="info.experiment_name"
+ :href="info.path_to_experiment"
+ />
- <tr v-if="candidate.info.path_to_artifact">
- <td></td>
- <td class="gl-font-weight-bold">{{ $options.i18n.ARTIFACTS_LABEL }}</td>
- <td>
- <gl-link :href="candidate.info.path_to_artifact">{{
- $options.i18n.ARTIFACTS_LABEL
- }}</gl-link>
- </td>
- </tr>
+ <detail-row
+ v-if="info.path_to_artifact"
+ :label="$options.i18n.ARTIFACTS_LABEL"
+ :href="info.path_to_artifact"
+ :text="$options.i18n.ARTIFACTS_LABEL"
+ />
<template v-for="{ sectionName, sectionValues } in sections">
- <tr :key="sectionName" class="divider"></tr>
+ <tr v-if="sectionValues" :key="sectionName" class="divider"></tr>
- <tr v-for="(item, index) in sectionValues" :key="item.name">
- <td v-if="index === 0" class="gl-text-secondary gl-font-weight-bold">
- {{ sectionName }}
- </td>
- <td v-else></td>
- <td class="gl-font-weight-bold">{{ item.name }}</td>
- <td>{{ item.value }}</td>
- </tr>
+ <detail-row
+ v-for="(item, index) in sectionValues"
+ :key="item.name"
+ :label="item.name"
+ :section-label="index === 0 ? sectionName : ''"
+ :text="item.value"
+ />
</template>
</tbody>
</table>
diff --git a/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue b/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue
index d67154b7697..29ce8572e9a 100644
--- a/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue
+++ b/app/assets/javascripts/monitoring/components/dashboard_actions_menu.vue
@@ -12,7 +12,7 @@ import {
import { mapState, mapGetters, mapActions } from 'vuex';
import CustomMetricsFormFields from '~/custom_metrics/components/custom_metrics_form_fields.vue';
import invalidUrl from '~/lib/utils/invalid_url';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__ } from '~/locale';
import TrackEventDirective from '~/vue_shared/directives/track_event';
import { PANEL_NEW_PAGE } from '../router/constants';
@@ -113,7 +113,7 @@ export default {
const dashboardPath = encodeURIComponent(
dashboard.out_of_the_box_dashboard ? dashboard.path : dashboard.display_name,
);
- redirectTo(`${baseURL}/${dashboardPath}`);
+ redirectTo(`${baseURL}/${dashboardPath}`); // eslint-disable-line import/no-deprecated
},
},
diff --git a/app/assets/javascripts/monitoring/components/dashboard_header.vue b/app/assets/javascripts/monitoring/components/dashboard_header.vue
index 7bb0d3874d1..44dde454983 100644
--- a/app/assets/javascripts/monitoring/components/dashboard_header.vue
+++ b/app/assets/javascripts/monitoring/components/dashboard_header.vue
@@ -13,7 +13,7 @@ import {
import { debounce } from 'lodash';
import { mapActions, mapState, mapGetters } from 'vuex';
import invalidUrl from '~/lib/utils/invalid_url';
-import { mergeUrlParams, redirectTo } from '~/lib/utils/url_utility';
+import { mergeUrlParams, redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__ } from '~/locale';
import DateTimePicker from '~/vue_shared/components/date_time_picker/date_time_picker.vue';
@@ -137,13 +137,13 @@ export default {
const dashboardPath = encodeURIComponent(
dashboard.out_of_the_box_dashboard ? dashboard.path : dashboard.display_name,
);
- redirectTo(`${baseURL}/${dashboardPath}`);
+ redirectTo(`${baseURL}/${dashboardPath}`); // eslint-disable-line import/no-deprecated
},
debouncedEnvironmentsSearch: debounce(function environmentsSearchOnInput(searchTerm) {
this.filterEnvironments(searchTerm);
}, 500),
onDateTimePickerInput(timeRange) {
- redirectTo(timeRangeToUrl(timeRange));
+ redirectTo(timeRangeToUrl(timeRange)); // eslint-disable-line import/no-deprecated
},
onDateTimePickerInvalid() {
this.$emit('dateTimePickerInvalid');
diff --git a/app/assets/javascripts/pages/admin/jobs/components/cancel_jobs_modal.vue b/app/assets/javascripts/pages/admin/jobs/components/cancel_jobs_modal.vue
index 3bc785ee1b6..b2c5326fefd 100644
--- a/app/assets/javascripts/pages/admin/jobs/components/cancel_jobs_modal.vue
+++ b/app/assets/javascripts/pages/admin/jobs/components/cancel_jobs_modal.vue
@@ -2,7 +2,7 @@
import { GlModal } from '@gitlab/ui';
import { createAlert } from '~/alert';
import axios from '~/lib/utils/axios_utils';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import {
CANCEL_TEXT,
CANCEL_JOBS_FAILED_TEXT,
@@ -31,7 +31,7 @@ export default {
.post(this.url)
.then((response) => {
// follow the rediect to refresh the page
- redirectTo(response.request.responseURL);
+ redirectTo(response.request.responseURL); // eslint-disable-line import/no-deprecated
})
.catch((error) => {
createAlert({
diff --git a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue
index 50e34f4e4f8..9f7a7b436df 100644
--- a/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue
+++ b/app/assets/javascripts/pages/projects/forks/new/components/fork_form.vue
@@ -15,7 +15,7 @@ import { buildApiUrl } from '~/api/api_utils';
import { createAlert } from '~/alert';
import axios from '~/lib/utils/axios_utils';
import csrf from '~/lib/utils/csrf';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__, __ } from '~/locale';
import validation from '~/vue_shared/directives/validation';
import {
@@ -261,7 +261,7 @@ export default {
try {
const { data } = await axios.post(url, postParams);
- redirectTo(data.web_url);
+ redirectTo(data.web_url); // eslint-disable-line import/no-deprecated
return;
} catch (error) {
createAlert({
diff --git a/app/assets/javascripts/pages/registrations/new/index.js b/app/assets/javascripts/pages/registrations/new/index.js
index 00f7c5d60d1..84050c3cb0f 100644
--- a/app/assets/javascripts/pages/registrations/new/index.js
+++ b/app/assets/javascripts/pages/registrations/new/index.js
@@ -5,7 +5,7 @@ import LengthValidator from '~/validators/length_validator';
import UsernameValidator from '~/pages/sessions/new/username_validator';
import EmailFormatValidator from '~/pages/sessions/new/email_format_validator';
import { initLanguageSwitcher } from '~/language_switcher';
-import { initTogglePasswordVisibility } from '~/authentication/password';
+import { initPasswordInput } from '~/authentication/password';
import Tracking from '~/tracking';
new UsernameValidator(); // eslint-disable-line no-new
@@ -20,4 +20,4 @@ Tracking.enableFormTracking({
});
initLanguageSwitcher();
-initTogglePasswordVisibility();
+initPasswordInput();
diff --git a/app/assets/javascripts/pages/sessions/index.js b/app/assets/javascripts/pages/sessions/index.js
index 8d8534ec556..fdd846a9476 100644
--- a/app/assets/javascripts/pages/sessions/index.js
+++ b/app/assets/javascripts/pages/sessions/index.js
@@ -1,3 +1,5 @@
import { mount2faAuthentication } from '~/authentication/mount_2fa';
+import { initPasswordInput } from '~/authentication/password';
mount2faAuthentication();
+initPasswordInput();
diff --git a/app/assets/javascripts/pipelines/components/header_component.vue b/app/assets/javascripts/pipelines/components/header_component.vue
index 065e40bd3ea..27119419060 100644
--- a/app/assets/javascripts/pipelines/components/header_component.vue
+++ b/app/assets/javascripts/pipelines/components/header_component.vue
@@ -7,7 +7,7 @@ import {
GlModalDirective,
GlTooltipDirective,
} from '@gitlab/ui';
-import { setUrlFragment, redirectTo } from '~/lib/utils/url_utility';
+import { setUrlFragment, redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { __ } from '~/locale';
import CiHeader from '~/vue_shared/components/header_ci_component.vue';
import {
@@ -233,7 +233,7 @@ export default {
this.reportFailure(DELETE_FAILURE, errors);
this.isDeleting = false;
} else {
- redirectTo(setUrlFragment(this.paths.pipelinesPath, 'delete_success'));
+ redirectTo(setUrlFragment(this.paths.pipelinesPath, 'delete_success')); // eslint-disable-line import/no-deprecated
}
} catch {
this.$apollo.queries.pipeline.startPolling(POLL_INTERVAL);
diff --git a/app/assets/javascripts/pipelines/components/jobs/failed_jobs_table.vue b/app/assets/javascripts/pipelines/components/jobs/failed_jobs_table.vue
index 80c08d7c613..ec7000120f1 100644
--- a/app/assets/javascripts/pipelines/components/jobs/failed_jobs_table.vue
+++ b/app/assets/javascripts/pipelines/components/jobs/failed_jobs_table.vue
@@ -3,7 +3,7 @@ import { GlButton, GlLink, GlTableLite } from '@gitlab/ui';
import SafeHtml from '~/vue_shared/directives/safe_html';
import { __, s__ } from '~/locale';
import { createAlert } from '~/alert';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import CiBadgeLink from '~/vue_shared/components/ci_badge_link.vue';
import RetryFailedJobMutation from '../../graphql/mutations/retry_failed_job.mutation.graphql';
import { DEFAULT_FIELDS } from '../../constants';
@@ -40,7 +40,7 @@ export default {
if (errors.length > 0) {
this.showErrorMessage();
} else {
- redirectTo(job.detailedStatus.detailsPath);
+ redirectTo(job.detailedStatus.detailsPath); // eslint-disable-line import/no-deprecated
}
} catch {
this.showErrorMessage();
diff --git a/app/assets/javascripts/projects/commits/components/author_select.vue b/app/assets/javascripts/projects/commits/components/author_select.vue
index f85be67d4b3..2966214e051 100644
--- a/app/assets/javascripts/projects/commits/components/author_select.vue
+++ b/app/assets/javascripts/projects/commits/components/author_select.vue
@@ -9,7 +9,7 @@ import {
} from '@gitlab/ui';
import { debounce } from 'lodash';
import { mapState, mapActions } from 'vuex';
-import { redirectTo, queryToObject } from '~/lib/utils/url_utility';
+import { redirectTo, queryToObject } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { __ } from '~/locale';
const tooltipMessage = __('Searching by both author and message is currently not supported.');
@@ -89,10 +89,10 @@ export default {
commitListElement.style.transition = 'opacity 200ms';
if (!user) {
- return redirectTo(this.commitsPath);
+ return redirectTo(this.commitsPath); // eslint-disable-line import/no-deprecated
}
- return redirectTo(`${this.commitsPath}?author=${user}`);
+ return redirectTo(`${this.commitsPath}?author=${user}`); // eslint-disable-line import/no-deprecated
},
searchAuthors() {
this.fetchAuthors(this.authorInput);
diff --git a/app/assets/javascripts/releases/stores/modules/edit_new/actions.js b/app/assets/javascripts/releases/stores/modules/edit_new/actions.js
index 2ea31518dd0..2e3cf3bf9b8 100644
--- a/app/assets/javascripts/releases/stores/modules/edit_new/actions.js
+++ b/app/assets/javascripts/releases/stores/modules/edit_new/actions.js
@@ -1,6 +1,6 @@
import { getTag } from '~/rest_api';
import { createAlert } from '~/alert';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { s__ } from '~/locale';
import createReleaseMutation from '~/releases/graphql/mutations/create_release.mutation.graphql';
import deleteReleaseMutation from '~/releases/graphql/mutations/delete_release.mutation.graphql';
@@ -95,7 +95,7 @@ export const removeAssetLink = ({ commit }, linkIdToRemove) => {
export const receiveSaveReleaseSuccess = ({ commit }, urlToRedirectTo) => {
commit(types.RECEIVE_SAVE_RELEASE_SUCCESS);
- redirectTo(urlToRedirectTo);
+ redirectTo(urlToRedirectTo); // eslint-disable-line import/no-deprecated
};
export const saveRelease = ({ commit, dispatch, state }) => {
diff --git a/app/assets/javascripts/repository/components/blob_content_viewer.vue b/app/assets/javascripts/repository/components/blob_content_viewer.vue
index 2878d4324c8..e056a822c8b 100644
--- a/app/assets/javascripts/repository/components/blob_content_viewer.vue
+++ b/app/assets/javascripts/repository/components/blob_content_viewer.vue
@@ -8,7 +8,7 @@ import { createAlert } from '~/alert';
import axios from '~/lib/utils/axios_utils';
import { isLoggedIn, handleLocationHash } from '~/lib/utils/common_utils';
import { __ } from '~/locale';
-import { redirectTo, getLocationHash } from '~/lib/utils/url_utility';
+import { redirectTo, getLocationHash } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import WebIdeLink from '~/vue_shared/components/web_ide_link.vue';
import CodeIntelligence from '~/code_navigation/components/app.vue';
@@ -305,7 +305,7 @@ export default {
}
const { ideEditPath, editBlobPath } = this.blobInfo;
- redirectTo(target === 'ide' ? ideEditPath : editBlobPath);
+ redirectTo(target === 'ide' ? ideEditPath : editBlobPath); // eslint-disable-line import/no-deprecated
},
setForkTarget(target) {
this.forkTarget = target;
diff --git a/app/assets/javascripts/snippets/components/edit.vue b/app/assets/javascripts/snippets/components/edit.vue
index 1678e51a29d..5e2f194e133 100644
--- a/app/assets/javascripts/snippets/components/edit.vue
+++ b/app/assets/javascripts/snippets/components/edit.vue
@@ -3,7 +3,7 @@ import { GlButton, GlLoadingIcon, GlFormInput, GlFormGroup } from '@gitlab/ui';
import eventHub from '~/blob/components/eventhub';
import { createAlert } from '~/alert';
-import { redirectTo, joinPaths } from '~/lib/utils/url_utility';
+import { redirectTo, joinPaths } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { __, sprintf } from '~/locale';
import {
SNIPPET_MARK_EDIT_APP_START,
@@ -192,7 +192,7 @@ export default {
if (errors?.length) {
this.alertAPIFailure(errors[0]);
} else {
- redirectTo(baseObj.snippet.webUrl);
+ redirectTo(baseObj.snippet.webUrl); // eslint-disable-line import/no-deprecated
}
})
.catch((e) => {
diff --git a/app/assets/javascripts/user_lists/store/edit/actions.js b/app/assets/javascripts/user_lists/store/edit/actions.js
index 6db2e65cf04..6f5d483a4c7 100644
--- a/app/assets/javascripts/user_lists/store/edit/actions.js
+++ b/app/assets/javascripts/user_lists/store/edit/actions.js
@@ -1,5 +1,5 @@
import Api from '~/api';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { getErrorMessages } from '../utils';
import * as types from './mutation_types';
@@ -17,6 +17,6 @@ export const updateUserList = ({ commit, state }, userList) => {
iid: userList.iid,
name: userList.name,
})
- .then(({ data }) => redirectTo(data.path))
+ .then(({ data }) => redirectTo(data.path)) // eslint-disable-line import/no-deprecated
.catch((response) => commit(types.RECEIVE_USER_LIST_ERROR, getErrorMessages(response)));
};
diff --git a/app/assets/javascripts/user_lists/store/new/actions.js b/app/assets/javascripts/user_lists/store/new/actions.js
index 478fca40142..030f1f59212 100644
--- a/app/assets/javascripts/user_lists/store/new/actions.js
+++ b/app/assets/javascripts/user_lists/store/new/actions.js
@@ -1,5 +1,5 @@
import Api from '~/api';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { getErrorMessages } from '../utils';
import * as types from './mutation_types';
@@ -10,6 +10,6 @@ export const createUserList = ({ commit, state }, userList) => {
...state.userList,
...userList,
})
- .then(({ data }) => redirectTo(data.path))
+ .then(({ data }) => redirectTo(data.path)) // eslint-disable-line import/no-deprecated
.catch((response) => commit(types.RECEIVE_CREATE_USER_LIST_ERROR, getErrorMessages(response)));
};
diff --git a/app/assets/javascripts/vue_shared/security_configuration/components/manage_via_mr.vue b/app/assets/javascripts/vue_shared/security_configuration/components/manage_via_mr.vue
index c2ff2eec9fa..fe408354f66 100644
--- a/app/assets/javascripts/vue_shared/security_configuration/components/manage_via_mr.vue
+++ b/app/assets/javascripts/vue_shared/security_configuration/components/manage_via_mr.vue
@@ -2,7 +2,7 @@
import { GlButton } from '@gitlab/ui';
import { featureToMutationMap } from 'ee_else_ce/security_configuration/components/constants';
import { parseErrorMessage } from '~/lib/utils/error_message';
-import { redirectTo } from '~/lib/utils/url_utility';
+import { redirectTo } from '~/lib/utils/url_utility'; // eslint-disable-line import/no-deprecated
import { sprintf, s__ } from '~/locale';
import apolloProvider from '../provider';
@@ -77,7 +77,7 @@ export default {
);
}
- redirectTo(successPath);
+ redirectTo(successPath); // eslint-disable-line import/no-deprecated
} catch (e) {
this.$emit('error', parseErrorMessage(e, this.$options.i18n.genericErrorText));
this.isLoading = false;
diff --git a/app/assets/stylesheets/page_bundles/login.scss b/app/assets/stylesheets/page_bundles/login.scss
index 6175bba6ba7..98fa45e0e3d 100644
--- a/app/assets/stylesheets/page_bundles/login.scss
+++ b/app/assets/stylesheets/page_bundles/login.scss
@@ -96,11 +96,6 @@
.login-body {
font-size: 13px;
- input + p,
- input ~ p.field-validation {
- margin-top: 5px;
- }
-
.username .validation-success {
color: $green-600;
}