From 6438df3a1e0fb944485cebf07976160184697d72 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 20 Jan 2021 13:34:23 -0600 Subject: Add latest changes from gitlab-org/gitlab@13-8-stable-ee --- app/assets/javascripts/access_tokens/index.js | 2 +- app/assets/javascripts/activities.js | 6 +- .../add_context_commits_modal_wrapper.vue | 10 +- .../add_context_commits_modal/store/actions.js | 14 +- .../javascripts/add_context_commits_modal/utils.js | 2 +- .../setup_metrics_and_profiling.js | 2 +- .../cohorts/components/usage_ping_disabled.vue | 2 +- .../components/usage_ping_disabled.vue | 2 +- .../javascripts/admin/statistics_panel/index.js | 2 +- .../admin/statistics_panel/store/actions.js | 2 +- .../admin/statistics_panel/store/getters.js | 4 +- .../admin/users/components/user_avatar.vue | 53 +++ .../admin/users/components/users_table.vue | 10 +- app/assets/javascripts/admin/users/constants.js | 1 + app/assets/javascripts/admin/users/index.js | 4 +- app/assets/javascripts/alert_handler.js | 4 +- .../alert_management/components/alert_details.vue | 26 +- .../components/alert_management_empty_state.vue | 52 +-- .../components/alert_management_table.vue | 6 +- .../alert_management/components/alert_metrics.vue | 2 +- .../alert_management/components/alert_status.vue | 4 +- .../components/sidebar/sidebar_assignees.vue | 4 +- .../components/sidebar/sidebar_todo.vue | 2 +- app/assets/javascripts/alert_management/details.js | 12 +- .../graphql/fragments/alert_note.fragment.graphql | 17 - .../graphql/fragments/detail_item.fragment.graphql | 4 +- .../graphql/fragments/list_item.fragment.graphql | 17 - .../mutations/alert_set_assignees.mutation.graphql | 2 +- .../mutations/update_alert_status.mutation.graphql | 17 - .../graphql/queries/get_alerts.query.graphql | 36 -- app/assets/javascripts/alert_management/list.js | 12 +- .../components/alerts_service_form.vue | 16 +- .../javascripts/alerts_service_settings/index.js | 2 +- .../components/alert_mapping_builder.vue | 22 +- .../components/alerts_integrations_list.vue | 4 +- .../components/alerts_settings_form.vue | 140 +----- .../components/alerts_settings_wrapper.vue | 41 +- .../javascripts/alerts_settings/constants.js | 10 +- app/assets/javascripts/alerts_settings/graphql.js | 2 +- app/assets/javascripts/alerts_settings/index.js | 18 +- .../alerts_settings/utils/cache_updates.js | 4 +- .../components/instance_statistics_count_chart.vue | 8 +- .../components/projects_and_groups_chart.vue | 8 +- .../instance_statistics/components/users_chart.vue | 4 +- .../analytics/instance_statistics/utils.js | 2 +- .../product_analytics/activity_charts_bundle.js | 8 +- app/assets/javascripts/api.js | 87 +++- app/assets/javascripts/api/api_utils.js | 5 + app/assets/javascripts/api/constants.js | 1 + app/assets/javascripts/api/groups_api.js | 22 + app/assets/javascripts/api/projects_api.js | 27 ++ app/assets/javascripts/api/user_api.js | 66 +++ ...atest_artifact_project_setting.mutation.graphql | 5 + ...p_latest_artifact_project_setting.query.graphql | 7 + app/assets/javascripts/artifacts_settings/index.js | 32 ++ .../keep_latest_artifact_checkbox.vue | 99 +++++ .../javascripts/authentication/u2f/authenticate.js | 6 +- .../javascripts/authentication/u2f/register.js | 4 +- .../authentication/webauthn/authenticate.js | 4 +- .../authentication/webauthn/register.js | 4 +- app/assets/javascripts/awards_handler.js | 45 +- .../javascripts/badges/components/badge_form.vue | 20 +- .../badges/components/badge_settings.vue | 2 +- app/assets/javascripts/badges/store/actions.js | 20 +- app/assets/javascripts/badges/store/mutations.js | 10 +- .../batch_comments/components/preview_item.vue | 6 +- .../stores/modules/batch_comments/actions.js | 20 +- .../stores/modules/batch_comments/getters.js | 20 +- .../stores/modules/batch_comments/mutations.js | 14 +- app/assets/javascripts/batch_comments/utils.js | 4 +- app/assets/javascripts/behaviors/autosize.js | 2 +- app/assets/javascripts/behaviors/bind_in_out.js | 2 +- .../javascripts/behaviors/copy_to_clipboard.js | 2 +- app/assets/javascripts/behaviors/gl_emoji.js | 2 +- .../javascripts/behaviors/load_startup_css.js | 2 +- .../javascripts/behaviors/markdown/copy_as_gfm.js | 12 +- .../behaviors/markdown/highlight_current_user.js | 2 +- .../behaviors/markdown/marks/inline_diff.js | 2 +- .../behaviors/markdown/marks/inline_html.js | 6 +- .../behaviors/markdown/nodes/code_block.js | 6 +- .../javascripts/behaviors/markdown/nodes/emoji.js | 4 +- .../javascripts/behaviors/markdown/nodes/image.js | 4 +- .../behaviors/markdown/nodes/playable.js | 4 +- .../behaviors/markdown/nodes/reference.js | 4 +- .../behaviors/markdown/nodes/table_cell.js | 4 +- .../behaviors/markdown/nodes/task_list_item.js | 2 +- .../behaviors/markdown/paste_markdown_table.js | 13 +- .../javascripts/behaviors/markdown/render_math.js | 4 +- .../behaviors/markdown/render_mermaid.js | 8 +- .../behaviors/markdown/render_metrics.js | 4 +- .../javascripts/behaviors/markdown/schema.js | 4 +- .../javascripts/behaviors/markdown/serializer.js | 4 +- .../javascripts/behaviors/preview_markdown.js | 40 +- app/assets/javascripts/behaviors/quick_submit.js | 2 +- app/assets/javascripts/behaviors/requires_input.js | 2 +- app/assets/javascripts/behaviors/secret_values.js | 4 +- .../javascripts/behaviors/shortcuts/keybindings.js | 8 +- .../javascripts/behaviors/shortcuts/shortcuts.js | 8 +- .../behaviors/shortcuts/shortcuts_blob.js | 2 +- .../behaviors/shortcuts/shortcuts_issuable.js | 4 +- app/assets/javascripts/blob/3d_viewer/index.js | 4 +- .../javascripts/blob/balsamiq/balsamiq_viewer.js | 4 +- app/assets/javascripts/blob/blob_file_dropzone.js | 14 +- .../blob/blob_line_permalink_updater.js | 6 +- .../blob/components/blob_content_error.vue | 2 +- .../components/blob_header_default_actions.vue | 5 +- .../javascripts/blob/file_template_mediator.js | 45 +- .../javascripts/blob/notebook/notebook_viewer.vue | 6 +- app/assets/javascripts/blob/openapi/index.js | 2 +- .../blob/pipeline_tour_success_modal.vue | 6 +- app/assets/javascripts/blob/sketch/index.js | 6 +- app/assets/javascripts/blob/stl_viewer.js | 4 +- .../blob/suggest_gitlab_ci_yml/index.js | 2 +- app/assets/javascripts/blob/template_selector.js | 8 +- .../template_selectors/ci_syntax_yaml_selector.js | 29 ++ .../blob/template_selectors/ci_yaml_selector.js | 4 +- .../blob/template_selectors/dockerfile_selector.js | 4 +- .../blob/template_selectors/gitignore_selector.js | 4 +- .../blob/template_selectors/license_selector.js | 4 +- .../metrics_dashboard_selector.js | 4 +- .../blob/template_selectors/type_selector.js | 4 +- app/assets/javascripts/blob/viewer/index.js | 10 +- app/assets/javascripts/blob_edit/blob_bundle.js | 2 +- app/assets/javascripts/blob_edit/edit_blob.js | 8 +- app/assets/javascripts/boards/boards_util.js | 50 ++- .../boards/components/board_assignee_dropdown.vue | 2 +- .../boards/components/board_card_layout.vue | 20 +- .../javascripts/boards/components/board_column.vue | 81 ++-- .../boards/components/board_column_deprecated.vue | 105 +++++ .../boards/components/board_column_new.vue | 82 ---- .../components/board_configuration_options.vue | 35 +- .../boards/components/board_content.vue | 27 +- .../javascripts/boards/components/board_form.vue | 149 ++++--- .../javascripts/boards/components/board_list.vue | 480 ++++++--------------- .../boards/components/board_list_deprecated.vue | 443 +++++++++++++++++++ .../boards/components/board_list_header.vue | 159 ++++--- .../components/board_list_header_deprecated.vue | 340 +++++++++++++++ .../boards/components/board_list_header_new.vue | 359 --------------- .../boards/components/board_list_new.vue | 239 ---------- .../boards/components/board_new_issue.vue | 84 ++-- .../components/board_new_issue_deprecated.vue | 136 ++++++ .../boards/components/board_new_issue_new.vue | 129 ------ .../boards/components/board_settings_sidebar.vue | 2 +- .../javascripts/boards/components/board_sidebar.js | 6 +- .../boards/components/boards_selector.vue | 6 +- .../boards/components/issue_card_inner.vue | 50 ++- .../components/issue_card_inner_deprecated.vue | 245 +++++++++++ .../boards/components/issue_time_estimate.vue | 28 +- .../components/issue_time_estimate_deprecated.vue | 48 +++ .../javascripts/boards/components/modal/footer.vue | 6 +- .../javascripts/boards/components/modal/index.vue | 14 +- .../boards/components/new_list_dropdown.js | 2 +- .../boards/components/project_select.vue | 193 +++++---- .../components/project_select_deprecated.vue | 145 +++++++ .../components/sidebar/board_editable_item.vue | 39 +- .../components/sidebar/board_sidebar_due_date.vue | 6 +- .../sidebar/board_sidebar_issue_title.vue | 171 ++++++++ .../sidebar/board_sidebar_labels_select.vue | 12 +- .../sidebar/board_sidebar_milestone_select.vue | 18 +- .../sidebar/board_sidebar_subscription.vue | 2 +- .../boards/components/sidebar/remove_issue.vue | 10 +- .../javascripts/boards/filtered_search_boards.js | 8 +- .../javascripts/boards/filters/due_date_filters.js | 2 +- .../boards/graphql/board.mutation.graphql | 11 - .../boards/graphql/board_create.mutation.graphql | 9 + .../boards/graphql/board_destroy.mutation.graphql | 7 + .../boards/graphql/board_update.mutation.graphql | 9 + .../boards/graphql/group_projects.query.graphql | 17 + .../graphql/issue_set_title.mutation.graphql | 8 + app/assets/javascripts/boards/index.js | 46 +- .../boards/mixins/sortable_default_options.js | 2 +- app/assets/javascripts/boards/models/issue.js | 2 +- app/assets/javascripts/boards/models/list.js | 4 +- .../boards/mount_multiple_boards_switcher.js | 9 +- app/assets/javascripts/boards/stores/actions.js | 103 ++++- .../javascripts/boards/stores/boards_store.js | 145 +++---- app/assets/javascripts/boards/stores/getters.js | 18 +- .../javascripts/boards/stores/modal_store.js | 10 +- .../javascripts/boards/stores/mutation_types.js | 4 + app/assets/javascripts/boards/stores/mutations.js | 40 +- app/assets/javascripts/boards/stores/state.js | 8 +- .../javascripts/branches/divergence_graph.js | 2 +- app/assets/javascripts/breadcrumb.js | 12 +- app/assets/javascripts/broadcast_notification.js | 2 +- app/assets/javascripts/build_artifacts.js | 10 +- .../javascripts/ci_lint/components/ci_lint.vue | 2 +- .../components/triggers_list.vue | 10 +- .../ci_settings_pipeline_triggers/index.js | 2 +- .../ci_variable_list/ci_variable_list.js | 21 +- .../components/ci_environments_dropdown.vue | 2 +- .../components/ci_variable_table.vue | 2 +- .../javascripts/ci_variable_list/store/actions.js | 8 +- .../javascripts/ci_variable_list/store/getters.js | 4 +- .../javascripts/ci_variable_list/store/utils.js | 8 +- app/assets/javascripts/clone_panel.js | 2 +- app/assets/javascripts/clusters/clusters_bundle.js | 28 +- .../clusters/components/applications.vue | 2 +- .../components/fluentd_output_settings.vue | 2 +- .../javascripts/clusters/forms/stores/index.js | 2 +- .../javascripts/clusters/stores/clusters_store.js | 6 +- .../clusters/stores/new_cluster/index.js | 2 +- .../clusters_list/components/ancestor_notice.vue | 35 +- .../clusters_list/components/clusters.vue | 12 +- .../javascripts/clusters_list/load_clusters.js | 2 +- .../javascripts/clusters_list/store/actions.js | 8 +- .../javascripts/clusters_list/store/index.js | 2 +- app/assets/javascripts/code_navigation/index.js | 2 +- .../javascripts/code_navigation/store/actions.js | 2 +- .../javascripts/code_navigation/utils/index.js | 4 +- app/assets/javascripts/commit/image_file.js | 20 +- .../commit/pipelines/pipelines_bundle.js | 2 +- app/assets/javascripts/commit_merge_requests.js | 4 +- app/assets/javascripts/commits.js | 5 +- app/assets/javascripts/commons/bootstrap.js | 8 +- .../javascripts/commons/nav/user_merge_requests.js | 32 +- app/assets/javascripts/compare_autocomplete.js | 10 +- .../components/project_form_group.vue | 4 +- app/assets/javascripts/confirm_danger_modal.js | 2 +- app/assets/javascripts/confirm_modal.js | 2 +- app/assets/javascripts/contextual_sidebar.js | 5 +- .../contributors/components/contributors.vue | 12 +- .../javascripts/contributors/stores/actions.js | 4 +- .../javascripts/contributors/stores/getters.js | 4 +- app/assets/javascripts/contributors/utils.js | 4 +- .../components/cluster_form_dropdown.vue | 8 +- .../create_cluster/eks_cluster/index.js | 2 +- .../eks_cluster/services/aws_services_facade.js | 2 +- .../create_cluster/eks_cluster/store/actions.js | 4 +- .../create_cluster/eks_cluster/store/state.js | 2 +- .../gke_cluster/components/gke_dropdown_mixin.js | 4 +- .../components/gke_machine_type_dropdown.vue | 4 +- .../components/gke_project_id_dropdown.vue | 10 +- .../gke_cluster/components/gke_zone_dropdown.vue | 4 +- .../create_cluster/gke_cluster/gapi_loader.js | 24 ++ .../create_cluster/gke_cluster/index.js | 18 +- .../create_cluster/gke_cluster/store/actions.js | 89 ++-- .../create_cluster/gke_cluster/store/getters.js | 6 +- .../create_cluster/gke_cluster_namespace/index.js | 2 +- .../create_cluster/init_create_cluster.js | 14 +- .../store/cluster_dropdown/actions.js | 6 +- app/assets/javascripts/create_item_dropdown.js | 4 +- app/assets/javascripts/create_label.js | 18 +- .../javascripts/create_merge_request_dropdown.js | 8 +- .../components/custom_metrics_form_fields.vue | 6 +- app/assets/javascripts/custom_metrics/constants.js | 4 +- .../components/total_time_component.vue | 4 +- .../cycle_analytics/cycle_analytics_bundle.js | 6 +- .../cycle_analytics/cycle_analytics_service.js | 4 +- .../cycle_analytics/cycle_analytics_store.js | 10 +- .../javascripts/deploy_freeze/store/actions.js | 2 +- .../javascripts/deploy_freeze/store/index.js | 2 +- .../javascripts/deploy_freeze/store/mutations.js | 4 +- .../javascripts/deploy_keys/components/app.vue | 4 +- .../javascripts/deploy_keys/components/key.vue | 2 +- .../javascripts/deploy_keys/service/index.js | 6 +- app/assets/javascripts/deploy_keys/store/index.js | 2 +- .../deprecated_jquery_dropdown/gl_dropdown.js | 43 +- .../gl_dropdown_filter.js | 17 +- .../gl_dropdown_input.js | 16 +- .../gl_dropdown_remote.js | 2 +- .../deprecated_jquery_dropdown/index.js | 2 +- .../components/design_destroyer.vue | 19 +- .../components/design_notes/design_discussion.vue | 2 +- .../components/design_notes/design_reply_form.vue | 6 +- .../components/design_presentation.vue | 2 +- .../components/design_sidebar.vue | 20 +- .../components/design_todo_button.vue | 23 +- .../components/toolbar/design_navigation.vue | 2 +- .../design_management/components/toolbar/index.vue | 18 +- .../components/upload/design_version_dropdown.vue | 2 +- .../javascripts/design_management/graphql.js | 4 +- .../design_management/mixins/all_designs.js | 2 +- .../design_management/mixins/all_versions.js | 4 +- .../design_management/pages/design/index.vue | 62 ++- .../javascripts/design_management/pages/index.vue | 27 +- .../javascripts/design_management/router/routes.js | 8 +- .../design_management/utils/cache_update.js | 28 +- .../utils/design_management_utils.js | 36 +- .../design_management/utils/error_messages.js | 4 +- app/assets/javascripts/diff.js | 8 +- app/assets/javascripts/diffs/components/app.vue | 74 ++-- .../javascripts/diffs/components/commit_item.vue | 11 +- .../diffs/components/compare_dropdown_layout.vue | 2 +- .../diffs/components/compare_versions.vue | 27 +- .../javascripts/diffs/components/diff_content.vue | 2 +- .../diffs/components/diff_expansion_cell.vue | 4 +- .../javascripts/diffs/components/diff_file.vue | 9 +- .../diffs/components/diff_gutter_avatars.vue | 2 +- .../diffs/components/diff_line_note_form.vue | 11 +- .../javascripts/diffs/components/diff_row.vue | 268 +++++++++--- .../javascripts/diffs/components/diff_row_utils.js | 26 +- .../javascripts/diffs/components/diff_view.vue | 39 +- .../diffs/components/inline_diff_table_row.vue | 7 +- .../diffs/components/inline_diff_view.vue | 6 +- .../javascripts/diffs/components/no_changes.vue | 42 +- .../diffs/components/parallel_diff_table_row.vue | 30 +- .../diffs/components/parallel_diff_view.vue | 8 +- .../javascripts/diffs/components/tree_list.vue | 2 +- app/assets/javascripts/diffs/constants.js | 6 + app/assets/javascripts/diffs/index.js | 11 +- app/assets/javascripts/diffs/store/actions.js | 65 +-- app/assets/javascripts/diffs/store/getters.js | 68 +-- .../diffs/store/getters_versions_dropdowns.js | 28 +- .../javascripts/diffs/store/modules/diff_state.js | 2 + .../javascripts/diffs/store/mutation_types.js | 2 + app/assets/javascripts/diffs/store/mutations.js | 57 +-- app/assets/javascripts/diffs/store/utils.js | 97 +++-- app/assets/javascripts/diffs/utils/diff_file.js | 15 +- app/assets/javascripts/diffs/utils/file_reviews.js | 61 +++ .../javascripts/diffs/utils/merge_request.js | 20 + app/assets/javascripts/diffs/utils/uuids.js | 4 +- .../javascripts/diffs/workers/tree_worker.js | 2 +- .../dirty_submit/dirty_submit_collection.js | 2 +- .../javascripts/dirty_submit/dirty_submit_form.js | 8 +- app/assets/javascripts/droplab/drop_down.js | 4 +- app/assets/javascripts/droplab/drop_lab.js | 10 +- app/assets/javascripts/droplab/hook_button.js | 4 +- app/assets/javascripts/droplab/hook_input.js | 4 +- app/assets/javascripts/droplab/keyboard.js | 2 +- app/assets/javascripts/droplab/plugins/ajax.js | 4 +- .../javascripts/droplab/plugins/ajax_filter.js | 8 +- app/assets/javascripts/droplab/plugins/filter.js | 10 +- .../javascripts/droplab/plugins/input_setter.js | 2 +- app/assets/javascripts/droplab/utils.js | 7 +- app/assets/javascripts/dropzone_input.js | 36 +- app/assets/javascripts/due_date_select.js | 20 +- app/assets/javascripts/editor/constants.js | 9 + .../javascripts/editor/editor_file_template_ext.js | 8 - app/assets/javascripts/editor/editor_lite.js | 28 +- .../editor/editor_lite_extension_base.js | 11 - .../javascripts/editor/editor_markdown_ext.js | 97 ----- .../editor/extensions/editor_ci_schema_ext.js | 38 ++ .../editor/extensions/editor_file_template_ext.js | 8 + .../extensions/editor_lite_extension_base.js | 11 + .../editor/extensions/editor_markdown_ext.js | 97 +++++ app/assets/javascripts/editor/utils.js | 2 +- app/assets/javascripts/emoji/index.js | 27 +- app/assets/javascripts/emoji/no_emoji_validator.js | 2 +- .../emoji/support/is_emoji_unicode_supported.js | 4 +- .../emoji/support/unicode_support_map.js | 8 +- .../environments/components/canary_ingress.vue | 109 +++++ .../components/canary_update_modal.vue | 133 ++++++ .../environments/components/container.vue | 12 - .../environments/components/deploy_board.vue | 216 ++++++++++ .../environments/components/environment_item.vue | 2 +- .../components/environment_rollback.vue | 2 +- .../environments/components/environments_app.vue | 16 +- .../environments/components/environments_table.vue | 40 +- app/assets/javascripts/environments/constants.js | 40 ++ .../folder/environments_folder_bundle.js | 3 - .../folder/environments_folder_view.vue | 12 - .../update_canary_ingress.mutation.graphql | 5 + app/assets/javascripts/environments/index.js | 3 - .../environments/mixins/canary_callout_mixin.js | 26 -- .../environments/mixins/environments_mixin.js | 10 +- .../environments/stores/environments_store.js | 26 +- .../javascripts/environments/stores/helpers.js | 21 +- .../error_tracking/components/error_details.vue | 4 +- .../error_tracking/components/stacktrace_entry.vue | 4 +- .../javascripts/error_tracking/store/actions.js | 2 +- .../error_tracking/store/details/actions.js | 2 +- .../error_tracking/store/details/getters.js | 2 +- .../error_tracking/store/list/mutations.js | 4 +- app/assets/javascripts/error_tracking/utils.js | 4 +- .../error_tracking_settings/store/actions.js | 2 +- .../error_tracking_settings/store/getters.js | 8 +- .../error_tracking_settings/store/mutations.js | 2 +- .../javascripts/error_tracking_settings/utils.js | 2 +- app/assets/javascripts/experimental_flags.js | 2 +- .../components/configure_feature_flags_modal.vue | 14 +- .../feature_flags/components/edit_feature_flag.vue | 26 +- .../components/environments_dropdown.vue | 17 +- .../feature_flags/components/feature_flags.vue | 2 +- .../feature_flags/components/feature_flags_tab.vue | 2 +- .../components/feature_flags_table.vue | 33 +- .../javascripts/feature_flags/components/form.vue | 40 +- .../feature_flags/components/new_feature_flag.vue | 2 +- .../feature_flags/components/strategy.vue | 8 +- .../components/strategy_parameters.vue | 2 +- .../feature_flags/store/edit/actions.js | 2 +- .../javascripts/feature_flags/store/edit/index.js | 2 +- .../store/gitlab_user_list/actions.js | 4 +- .../feature_flags/store/gitlab_user_list/index.js | 2 +- .../javascripts/feature_flags/store/helpers.js | 34 +- .../feature_flags/store/index/actions.js | 6 +- .../javascripts/feature_flags/store/index/index.js | 2 +- .../feature_flags/store/index/mutations.js | 11 +- .../javascripts/feature_flags/store/new/actions.js | 2 +- .../javascripts/feature_flags/store/new/index.js | 2 +- app/assets/javascripts/feature_flags/utils.js | 2 +- .../feature_highlight/feature_highlight.js | 2 +- .../feature_highlight/feature_highlight_helper.js | 2 +- app/assets/javascripts/file_pickers.js | 2 +- app/assets/javascripts/files_comment_button.js | 4 +- app/assets/javascripts/filterable_list.js | 2 +- .../filtered_search/available_dropdown_mappings.js | 11 +- .../recent_searches_dropdown_content.vue | 6 +- .../filtered_search/dropdown_ajax_filter.js | 2 +- .../javascripts/filtered_search/dropdown_emoji.js | 4 +- .../javascripts/filtered_search/dropdown_hint.js | 2 +- .../filtered_search/dropdown_non_user.js | 2 +- .../javascripts/filtered_search/dropdown_utils.js | 12 +- .../filtered_search/filtered_search_dropdown.js | 6 +- .../filtered_search_dropdown_manager.js | 2 +- .../filtered_search/filtered_search_manager.js | 28 +- .../filtered_search/filtered_search_token_keys.js | 21 +- .../filtered_search_visual_tokens.js | 9 +- .../issuable_filtered_search_token_keys.js | 2 +- .../stores/recent_searches_store.js | 2 +- .../filtered_search/visual_token_value.js | 10 +- app/assets/javascripts/flash.js | 10 +- app/assets/javascripts/fly_out_nav.js | 22 +- .../javascripts/frequent_items/components/app.vue | 2 +- app/assets/javascripts/frequent_items/index.js | 2 +- .../javascripts/frequent_items/store/actions.js | 10 +- .../javascripts/frequent_items/store/getters.js | 2 +- .../javascripts/frequent_items/store/mutations.js | 2 +- app/assets/javascripts/frequent_items/utils.js | 8 +- app/assets/javascripts/gfm_auto_complete.js | 51 +-- app/assets/javascripts/gl_field_errors.js | 8 +- app/assets/javascripts/gl_form.js | 11 +- app/assets/javascripts/gpg_badges.js | 2 +- .../grafana_integration/store/actions.js | 2 +- .../javascripts/grafana_integration/store/index.js | 2 +- .../fragments/alert.fragment.graphql | 17 + .../fragments/alert_note.fragment.graphql | 17 + .../mutations/update_alert_status.mutation.graphql | 17 + .../queries/get_alerts.query.graphql | 36 ++ app/assets/javascripts/graphql_shared/utils.js | 2 +- app/assets/javascripts/group.js | 14 +- .../components/shared_runners_form.vue | 2 +- app/assets/javascripts/groups/components/app.vue | 20 +- .../javascripts/groups/components/group_item.vue | 2 +- .../components/visibility_level_dropdown.vue | 2 +- .../javascripts/groups/groups_filterable_list.js | 5 +- .../groups/init_invite_members_banner.js | 2 +- .../javascripts/groups/members/components/app.vue | 4 +- app/assets/javascripts/groups/members/index.js | 2 +- app/assets/javascripts/groups/members/utils.js | 2 +- .../javascripts/groups/store/groups_store.js | 12 +- app/assets/javascripts/groups/transfer_dropdown.js | 6 +- app/assets/javascripts/groups_select.js | 6 +- .../javascripts/helpers/event_hub_factory.js | 4 +- app/assets/javascripts/helpers/help_page_helper.js | 21 + app/assets/javascripts/helpers/monitor_helper.js | 4 +- .../javascripts/helpers/startup_css_helper.js | 6 +- app/assets/javascripts/ide/commit_icon.js | 2 +- .../ide/components/commit_sidebar/list_item.vue | 2 +- .../ide/components/commit_sidebar/radio_group.vue | 1 + .../ide/components/file_templates/bar.vue | 2 +- .../ide/components/file_templates/dropdown.vue | 2 +- app/assets/javascripts/ide/components/ide.vue | 2 +- .../javascripts/ide/components/ide_sidebar_nav.vue | 2 +- .../javascripts/ide/components/nav_dropdown.vue | 4 +- .../ide/components/new_dropdown/upload.vue | 14 +- .../ide/components/panes/collapsible_sidebar.vue | 6 +- .../ide/components/preview/clientside.vue | 42 +- .../ide/components/preview/navigator.vue | 2 +- .../ide/components/repo_commit_section.vue | 4 +- .../javascripts/ide/components/repo_editor.vue | 19 +- app/assets/javascripts/ide/constants.js | 3 + app/assets/javascripts/ide/ide_router.js | 10 +- app/assets/javascripts/ide/index.js | 4 + .../javascripts/ide/lib/common/disposable.js | 4 +- app/assets/javascripts/ide/lib/common/model.js | 4 +- app/assets/javascripts/ide/lib/create_diff.js | 16 +- app/assets/javascripts/ide/lib/create_file_diff.js | 10 +- .../javascripts/ide/lib/decorations/controller.js | 2 +- app/assets/javascripts/ide/lib/diff/controller.js | 6 +- app/assets/javascripts/ide/lib/diff/diff.js | 2 +- app/assets/javascripts/ide/lib/diff/diff_worker.js | 2 +- app/assets/javascripts/ide/lib/editor.js | 12 +- app/assets/javascripts/ide/lib/editor_options.js | 4 +- .../javascripts/ide/lib/editorconfig/parser.js | 13 +- .../ide/lib/editorconfig/rules_mapper.js | 12 +- app/assets/javascripts/ide/lib/errors.js | 14 +- app/assets/javascripts/ide/lib/files.js | 21 +- app/assets/javascripts/ide/lib/languages/hcl.js | 14 +- app/assets/javascripts/ide/lib/languages/vue.js | 8 +- app/assets/javascripts/ide/lib/mirror.js | 26 +- app/assets/javascripts/ide/services/index.js | 11 +- app/assets/javascripts/ide/services/terminals.js | 2 +- app/assets/javascripts/ide/stores/actions.js | 17 +- app/assets/javascripts/ide/stores/actions/file.js | 47 +- .../ide/stores/actions/merge_request.js | 18 +- .../javascripts/ide/stores/actions/project.js | 15 +- app/assets/javascripts/ide/stores/actions/tree.js | 4 +- app/assets/javascripts/ide/stores/extend.js | 2 +- app/assets/javascripts/ide/stores/getters.js | 66 +-- .../ide/stores/modules/branches/actions.js | 2 +- .../ide/stores/modules/branches/mutations.js | 2 +- .../ide/stores/modules/commit/actions.js | 41 +- .../ide/stores/modules/commit/getters.js | 10 +- .../javascripts/ide/stores/modules/editor/setup.js | 15 +- .../ide/stores/modules/file_templates/actions.js | 2 +- .../ide/stores/modules/file_templates/getters.js | 4 +- .../ide/stores/modules/merge_requests/actions.js | 2 +- .../ide/stores/modules/merge_requests/mutations.js | 2 +- .../javascripts/ide/stores/modules/pane/getters.js | 2 +- .../ide/stores/modules/pipelines/actions.js | 6 +- .../ide/stores/modules/pipelines/getters.js | 19 +- .../ide/stores/modules/pipelines/mutations.js | 10 +- .../ide/stores/modules/pipelines/utils.js | 2 +- .../ide/stores/modules/terminal/actions/checks.js | 4 +- .../modules/terminal/actions/session_controls.js | 6 +- .../modules/terminal/actions/session_status.js | 2 +- .../ide/stores/modules/terminal/getters.js | 6 +- .../ide/stores/modules/terminal/messages.js | 2 +- .../ide/stores/modules/terminal/utils.js | 6 +- .../ide/stores/modules/terminal_sync/actions.js | 4 +- app/assets/javascripts/ide/stores/mutations.js | 12 +- .../javascripts/ide/stores/mutations/file.js | 46 +- .../javascripts/ide/stores/mutations/tree.js | 2 +- .../javascripts/ide/stores/plugins/terminal.js | 2 +- .../ide/stores/plugins/terminal_sync.js | 20 +- app/assets/javascripts/ide/stores/utils.js | 34 +- .../javascripts/ide/sync_router_and_store.js | 8 +- app/assets/javascripts/ide/utils.js | 33 +- .../javascripts/image_diff/helpers/badge_helper.js | 2 +- .../javascripts/image_diff/init_discussion_tab.js | 2 +- .../javascripts/image_diff/replaced_image_diff.js | 4 +- app/assets/javascripts/image_diff/view_types.js | 2 +- .../import_groups/components/import_table.vue | 2 +- .../import_groups/components/import_table_row.vue | 2 +- .../import_groups/graphql/client_factory.js | 8 +- .../graphql/services/source_groups_manager.js | 2 +- .../graphql/services/status_poller.js | 6 +- .../components/import_projects_table.vue | 19 +- .../import_projects/store/actions.js | 14 +- .../import_projects/store/getters.js | 24 +- .../import_projects/store/mutations.js | 22 +- .../import_entities/import_projects/utils.js | 6 + .../incidents/components/incidents_list.vue | 4 +- app/assets/javascripts/incidents/list.js | 6 +- app/assets/javascripts/init_changes_dropdown.js | 2 +- .../integrations/edit/components/dynamic_field.vue | 2 +- .../edit/components/integration_form.vue | 5 - .../edit/components/jira_trigger_fields.vue | 4 + .../edit/components/override_dropdown.vue | 2 +- .../javascripts/integrations/edit/store/getters.js | 4 +- .../integrations/integration_settings_form.js | 7 +- .../invite_member/init_invite_member_modal.js | 2 +- .../invite_member/init_invite_member_trigger.js | 2 +- .../components/invite_members_modal.vue | 59 ++- .../components/invite_members_trigger.vue | 7 +- .../components/members_token_select.vue | 37 +- .../invite_members/init_invite_members_modal.js | 4 +- .../invite_members/init_invite_members_trigger.js | 2 +- .../issuable/auto_width_dropdown_select.js | 5 +- .../javascripts/issuable_bulk_update_actions.js | 4 +- .../javascripts/issuable_bulk_update_sidebar.js | 8 +- app/assets/javascripts/issuable_context.js | 2 +- app/assets/javascripts/issuable_form.js | 20 +- app/assets/javascripts/issuable_index.js | 6 +- .../components/issuable_list_root.vue | 2 +- .../components/issuable_edit_form.vue | 3 +- .../issuable_suggestions/components/app.vue | 2 +- .../javascripts/issuable_suggestions/index.js | 2 +- app/assets/javascripts/issue.js | 10 +- .../javascripts/issue_show/components/app.vue | 18 +- .../issue_show/components/fields/description.vue | 10 +- .../components/fields/description_template.vue | 2 +- .../components/incidents/incident_tabs.vue | 12 +- app/assets/javascripts/issue_show/incident.js | 17 +- app/assets/javascripts/issue_show/issue.js | 2 +- .../javascripts/issue_show/utils/parse_data.js | 2 +- .../issues_list/components/issuable.vue | 4 +- .../issues_list/components/issuables_list_app.vue | 8 +- app/assets/javascripts/issues_list/index.js | 2 +- app/assets/javascripts/jira_connect/api.js | 33 ++ .../javascripts/jira_connect/components/app.vue | 57 ++- .../jira_connect/components/groups_list.vue | 88 ++++ .../jira_connect/components/groups_list_item.vue | 42 ++ app/assets/javascripts/jira_connect/constants.js | 1 + app/assets/javascripts/jira_connect/index.js | 97 ++--- app/assets/javascripts/jira_connect/store/index.js | 9 + .../jira_connect/store/mutation_types.js | 1 + .../javascripts/jira_connect/store/mutations.js | 7 + app/assets/javascripts/jira_connect/store/state.js | 3 + .../jira_import/components/jira_import_form.vue | 4 +- .../javascripts/jira_import/utils/cache_update.js | 2 +- .../jira_import/utils/jira_import_utils.js | 14 +- app/assets/javascripts/jobs/components/job_app.vue | 2 +- .../job_retry_forward_deployment_modal.vue | 10 +- .../javascripts/jobs/components/log/line.vue | 4 +- .../jobs/components/manual_variables_form.vue | 5 +- .../jobs/components/stages_dropdown.vue | 5 +- .../javascripts/jobs/components/trigger_block.vue | 2 +- app/assets/javascripts/jobs/store/actions.js | 8 +- app/assets/javascripts/jobs/store/getters.js | 24 +- app/assets/javascripts/jobs/store/utils.js | 4 +- app/assets/javascripts/label_manager.js | 2 +- app/assets/javascripts/labels_select.js | 35 +- app/assets/javascripts/lazy_loader.js | 10 +- app/assets/javascripts/lib/chrome_84_icon_fix.js | 4 +- app/assets/javascripts/lib/dompurify.js | 8 +- app/assets/javascripts/lib/graphql.js | 4 +- app/assets/javascripts/lib/utils/ajax_cache.js | 2 +- .../lib/utils/apollo_startup_js_link.js | 16 +- app/assets/javascripts/lib/utils/autosave.js | 4 +- .../javascripts/lib/utils/axios_startup_calls.js | 8 +- app/assets/javascripts/lib/utils/axios_utils.js | 10 +- .../javascripts/lib/utils/bootstrap_linked_tabs.js | 2 +- app/assets/javascripts/lib/utils/chart_utils.js | 4 +- app/assets/javascripts/lib/utils/color_utils.js | 4 +- app/assets/javascripts/lib/utils/common_utils.js | 168 ++------ app/assets/javascripts/lib/utils/css_utils.js | 2 +- app/assets/javascripts/lib/utils/datetime_range.js | 18 +- .../javascripts/lib/utils/datetime_utility.js | 129 +++++- app/assets/javascripts/lib/utils/dom_utils.js | 6 +- app/assets/javascripts/lib/utils/favicon.js | 30 ++ app/assets/javascripts/lib/utils/favicon_ci.js | 16 + app/assets/javascripts/lib/utils/forms.js | 12 +- app/assets/javascripts/lib/utils/grammar.js | 6 +- app/assets/javascripts/lib/utils/headers.js | 3 + app/assets/javascripts/lib/utils/icon_utils.js | 6 +- app/assets/javascripts/lib/utils/notify.js | 2 +- app/assets/javascripts/lib/utils/number_utils.js | 2 +- app/assets/javascripts/lib/utils/poll.js | 4 +- .../javascripts/lib/utils/poll_until_complete.js | 2 +- app/assets/javascripts/lib/utils/set.js | 2 +- app/assets/javascripts/lib/utils/simple_poll.js | 2 +- app/assets/javascripts/lib/utils/sticky.js | 2 +- app/assets/javascripts/lib/utils/text_markdown.js | 16 +- app/assets/javascripts/lib/utils/text_utility.js | 28 +- app/assets/javascripts/lib/utils/type_utility.js | 2 +- .../lib/utils/unit_format/formatter_factory.js | 4 +- app/assets/javascripts/lib/utils/url_utility.js | 16 +- app/assets/javascripts/lib/utils/users_cache.js | 8 +- app/assets/javascripts/line_highlighter.js | 42 +- .../javascripts/locale/ensure_single_line.js | 2 +- app/assets/javascripts/locale/index.js | 4 +- app/assets/javascripts/locale/sprintf.js | 2 +- .../logs/components/environment_logs.vue | 8 +- .../logs/components/log_advanced_filters.vue | 2 +- .../javascripts/logs/logs_tracking_helper.js | 2 +- app/assets/javascripts/logs/stores/actions.js | 8 +- app/assets/javascripts/logs/stores/getters.js | 4 +- app/assets/javascripts/logs/utils.js | 2 +- app/assets/javascripts/main.js | 22 +- app/assets/javascripts/manual_ordering.js | 2 +- app/assets/javascripts/member_expiration_date.js | 8 +- app/assets/javascripts/members.js | 10 +- .../access_request_action_buttons.vue | 4 +- .../action_buttons/invite_action_buttons.vue | 2 +- .../action_buttons/user_action_buttons.vue | 4 +- .../members/components/avatars/user_avatar.vue | 2 +- .../filter_sort/members_filtered_search_bar.vue | 6 +- .../components/filter_sort/sort_dropdown.vue | 24 +- .../members/components/modals/leave_modal.vue | 4 +- .../members/components/table/member_source.vue | 2 +- .../members/components/table/members_table.vue | 43 +- app/assets/javascripts/members/constants.js | 2 +- app/assets/javascripts/members/store/index.js | 2 +- app/assets/javascripts/members/store/utils.js | 3 +- app/assets/javascripts/members/utils.js | 12 +- .../merge_conflicts/components/diff_file_editor.js | 33 +- .../components/inline_conflict_lines.js | 2 +- .../components/parallel_conflict_lines.js | 2 +- .../merge_conflicts/merge_conflict_store.js | 28 +- app/assets/javascripts/merge_request.js | 34 +- .../merge_request/components/status_box.vue | 69 +++ app/assets/javascripts/merge_request/eventhub.js | 3 + app/assets/javascripts/merge_request_tabs.js | 18 +- app/assets/javascripts/milestone.js | 2 +- app/assets/javascripts/milestone_select.js | 14 +- .../milestones/components/milestone_combobox.vue | 2 +- .../javascripts/milestones/stores/actions.js | 16 +- .../javascripts/milestones/stores/mutations.js | 2 +- .../javascripts/mini_pipeline_graph_dropdown.js | 8 +- app/assets/javascripts/mirrors/mirror_repos.js | 2 +- app/assets/javascripts/mirrors/ssh_mirror.js | 12 +- .../monitoring/components/alert_widget.vue | 26 +- .../monitoring/components/alert_widget_form.vue | 4 +- .../monitoring/components/charts/annotations.js | 4 +- .../monitoring/components/charts/anomaly.vue | 23 +- .../monitoring/components/charts/bar.vue | 4 +- .../monitoring/components/charts/column.vue | 2 +- .../monitoring/components/charts/heatmap.vue | 4 +- .../monitoring/components/charts/options.js | 12 +- .../components/charts/stacked_column.vue | 10 +- .../monitoring/components/charts/time_series.vue | 8 +- .../components/dashboard_actions_menu.vue | 12 +- .../monitoring/components/dashboard_panel.vue | 10 +- .../components/dashboard_panel_builder.vue | 2 +- .../components/duplicate_dashboard_form.vue | 2 +- .../components/duplicate_dashboard_modal.vue | 4 +- .../monitoring/components/embeds/embed_group.vue | 2 +- .../monitoring/components/embeds/metric_embed.vue | 2 +- .../monitoring/components/empty_state.vue | 2 +- .../components/variables/dropdown_field.vue | 2 +- app/assets/javascripts/monitoring/csv_export.js | 14 +- .../javascripts/monitoring/requests/index.js | 14 +- .../monitoring/services/alerts_service.js | 10 +- .../javascripts/monitoring/stores/actions.js | 54 +-- .../monitoring/stores/embed_group/getters.js | 2 +- .../javascripts/monitoring/stores/getters.js | 38 +- .../javascripts/monitoring/stores/mutations.js | 16 +- app/assets/javascripts/monitoring/stores/utils.js | 28 +- .../monitoring/stores/variable_mapping.js | 18 +- app/assets/javascripts/monitoring/utils.js | 24 +- app/assets/javascripts/monitoring/validators.js | 6 +- app/assets/javascripts/mr_notes/init_notes.js | 2 +- app/assets/javascripts/mr_notes/stores/getters.js | 2 +- .../mr_popover/components/mr_popover.vue | 2 +- app/assets/javascripts/mr_popover/index.js | 4 +- app/assets/javascripts/namespace_select.js | 2 +- app/assets/javascripts/network/branch_graph.js | 8 +- app/assets/javascripts/new_branch_form.js | 6 +- app/assets/javascripts/notebook/cells/markdown.vue | 4 +- .../javascripts/notebook/cells/output/index.vue | 5 + .../javascripts/notebook/cells/output/latex.vue | 45 ++ app/assets/javascripts/notes.js | 68 +-- .../notes/components/comment_field_layout.vue | 69 +++ .../javascripts/notes/components/comment_form.vue | 81 ++-- .../notes/components/diff_with_note.vue | 2 +- .../notes/components/discussion_actions.vue | 19 +- .../notes/components/discussion_counter.vue | 6 +- .../notes/components/discussion_filter.vue | 2 +- .../components/discussion_jump_to_next_button.vue | 38 -- .../components/email_participants_warning.vue | 70 +++ .../notes/components/multiline_comment_form.vue | 7 +- .../notes/components/multiline_comment_utils.js | 10 +- .../javascripts/notes/components/note_actions.vue | 4 +- .../javascripts/notes/components/note_body.vue | 16 +- .../javascripts/notes/components/note_form.vue | 96 ++--- .../notes/components/noteable_discussion.vue | 4 +- .../javascripts/notes/components/noteable_note.vue | 2 +- .../javascripts/notes/components/notes_app.vue | 4 +- .../notes/components/timeline_toggle.vue | 1 - .../notes/components/toggle_replies_widget.vue | 4 +- app/assets/javascripts/notes/discussion_filters.js | 4 +- .../notes/mixins/diff_line_note_form.js | 6 +- .../notes/mixins/discussion_navigation.js | 2 +- .../javascripts/notes/mixins/issuable_state.js | 11 - app/assets/javascripts/notes/mixins/resolvable.js | 2 +- app/assets/javascripts/notes/sort_discussions.js | 2 +- app/assets/javascripts/notes/stores/actions.js | 41 +- .../javascripts/notes/stores/collapse_utils.js | 4 +- app/assets/javascripts/notes/stores/getters.js | 96 ++--- .../javascripts/notes/stores/modules/index.js | 2 +- app/assets/javascripts/notes/stores/mutations.js | 24 +- app/assets/javascripts/notes/stores/utils.js | 14 +- app/assets/javascripts/notes/utils.js | 2 +- app/assets/javascripts/notifications_dropdown.js | 10 +- app/assets/javascripts/onboarding_issues/index.js | 4 +- .../operation_settings/store/actions.js | 2 +- .../javascripts/operation_settings/store/index.js | 2 +- .../packages/details/components/package_files.vue | 8 +- .../packages/list/components/packages_list.vue | 8 +- .../packages/list/components/packages_list_app.vue | 14 +- .../packages/list/components/packages_sort.vue | 8 +- .../javascripts/packages/list/stores/getters.js | 4 +- app/assets/javascripts/packages/list/utils.js | 3 +- .../packages/shared/components/package_tags.vue | 2 +- app/assets/javascripts/packages/shared/utils.js | 6 +- .../settings/group/bundle.js | 20 + .../group/components/group_settings_app.vue | 9 + .../settings/group/graphql/index.js | 14 + app/assets/javascripts/pages/admin/admin.js | 6 +- .../application_settings/payload_previewer.js | 2 +- .../admin/broadcast_messages/broadcast_message.js | 2 +- .../jobs/index/components/stop_jobs_modal.vue | 4 +- .../javascripts/pages/admin/projects/index.js | 2 +- .../pages/admin/projects/index/index.js | 2 +- app/assets/javascripts/pages/admin/users/index.js | 2 +- .../javascripts/pages/admin/users/new/index.js | 2 +- .../index/components/customize_homepage_banner.vue | 2 +- .../index/init_customize_homepage_banner.js | 2 +- .../pages/dashboard/todos/index/todos.js | 2 +- .../pages/groups/group_members/index.js | 6 +- .../javascripts/pages/groups/issues/index.js | 1 + .../pages/groups/new/group_path_validator.js | 6 +- .../settings/packages_and_registries/index.js | 3 + .../javascripts/pages/groups/shared/group_tabs.js | 4 +- .../shared/components/delete_milestone_modal.vue | 4 +- .../shared/components/promote_milestone_modal.vue | 99 +++-- .../shared/delete_milestone_modal_init.js | 4 +- .../shared/promote_milestone_modal_init.js | 85 +--- app/assets/javascripts/pages/profiles/index.js | 2 +- .../javascripts/pages/profiles/show/index.js | 2 +- .../javascripts/pages/projects/blob/show/index.js | 2 +- .../pages/projects/commit/show/index.js | 4 + .../javascripts/pages/projects/edit/index.js | 3 + .../pages/projects/edit/mount_search_settings.js | 12 + .../forks/new/components/fork_groups_list.vue | 6 +- .../pages/projects/graphs/charts/index.js | 4 +- .../projects/graphs/components/code_coverage.vue | 6 +- app/assets/javascripts/pages/projects/init_form.js | 2 +- .../issues/service_desk/filtered_search.js | 2 +- .../javascripts/pages/projects/issues/show.js | 4 +- .../javascripts/pages/projects/jobs/index/index.js | 4 +- .../labels/components/promote_label_modal.vue | 4 +- .../pages/projects/labels/index/index.js | 7 +- .../javascripts/pages/projects/labels/new/index.js | 3 +- .../merge_requests/creations/new/compare.js | 12 +- .../merge_requests/init_merge_request_show.js | 17 +- app/assets/javascripts/pages/projects/new/index.js | 3 +- .../pages/projects/pages_domains/form.js | 6 +- .../projects/pipeline_schedules/index/index.js | 6 +- .../shared/components/interval_pattern_input.vue | 2 +- .../shared/components/target_branch_dropdown.js | 8 +- .../shared/components/timezone_dropdown.js | 12 +- .../pages/projects/pipelines/charts/index.js | 2 +- .../pages/projects/pipelines/init_pipelines.js | 2 +- .../pages/projects/pipelines/new/index.js | 22 +- app/assets/javascripts/pages/projects/project.js | 30 +- .../pages/projects/project_members/index.js | 6 +- .../pages/projects/settings/ci_cd/show/index.js | 4 +- .../components/project_feature_setting.vue | 6 + .../permissions/components/settings_panel.vue | 97 +++-- .../pages/projects/shared/permissions/external.js | 2 +- .../pages/projects/shared/permissions/index.js | 2 +- .../javascripts/pages/projects/tags/index/index.js | 7 +- .../pages/search/show/refresh_counts.js | 2 +- app/assets/javascripts/pages/search/show/search.js | 13 +- .../pages/sessions/new/length_validator.js | 2 +- .../pages/sessions/new/preserve_url_fragment.js | 4 +- .../pages/sessions/new/signin_tabs_memoizer.js | 2 +- .../pages/sessions/new/username_validator.js | 6 +- .../pages/shared/mount_badge_settings.js | 2 +- app/assets/javascripts/pages/shared/wikis/wikis.js | 34 +- .../javascripts/pages/users/activity_calendar.js | 29 +- app/assets/javascripts/pages/users/index.js | 6 +- app/assets/javascripts/pages/users/user_tabs.js | 20 +- app/assets/javascripts/pdf/index.vue | 4 +- app/assets/javascripts/pdf/page/index.vue | 2 +- app/assets/javascripts/performance/utils.js | 2 +- .../performance_bar/components/detailed_metric.vue | 6 +- .../components/request_selector.vue | 2 +- app/assets/javascripts/performance_bar/index.js | 29 +- .../performance_bar/performance_bar_log.js | 6 +- .../services/performance_bar_service.js | 2 +- .../stores/performance_bar_store.js | 6 +- app/assets/javascripts/persistent_user_callout.js | 6 +- app/assets/javascripts/persistent_user_callouts.js | 2 +- .../components/info/validation_segment.vue | 84 ++++ .../pipeline_editor/components/lint/ci_lint.vue | 53 +++ .../components/lint/ci_lint_results.vue | 18 +- .../components/lint/ci_lint_results_value.vue | 40 +- .../pipeline_editor/components/text_editor.vue | 34 +- .../pipeline_editor/components/ui/editor_tab.vue | 68 +++ .../mutations/commit_ci_file.mutation.graphql | 2 +- .../graphql/mutations/lint_ci.mutation.graphql | 2 +- .../graphql/queries/ci_config.graphql | 6 +- .../pipeline_editor/graphql/resolvers.js | 4 +- app/assets/javascripts/pipeline_editor/index.js | 25 +- .../pipeline_editor/pipeline_editor_app.vue | 164 ++++--- .../pipeline_new/components/pipeline_new_form.vue | 29 +- .../javascripts/pipeline_new/utils/format_refs.js | 2 +- app/assets/javascripts/pipelines.js | 2 +- .../javascripts/pipelines/components/dag/dag.vue | 6 +- .../pipelines/components/dag/dag_graph.vue | 18 +- .../pipelines/components/dag/drawing_utils.js | 4 +- .../pipelines/components/dag/interactions.js | 28 +- .../components/graph/action_component.vue | 8 +- .../pipelines/components/graph/graph_component.vue | 78 +++- .../components/graph/graph_component_legacy.vue | 8 +- .../components/graph/graph_component_wrapper.vue | 8 +- .../components/graph/job_group_dropdown.vue | 14 +- .../pipelines/components/graph/job_item.vue | 16 +- .../pipelines/components/graph/linked_pipeline.vue | 11 +- .../components/graph/linked_pipelines_column.vue | 15 +- .../graph/linked_pipelines_column_legacy.vue | 4 + .../components/graph/stage_column_component.vue | 41 +- .../graph/stage_column_component_legacy.vue | 4 + .../pipelines/components/graph/utils.js | 12 +- .../components/graph_shared/drawing_utils.js | 97 +++++ .../components/graph_shared/links_inner.vue | 140 ++++++ .../components/graph_shared/links_layer.vue | 86 ++++ .../components/graph_shared/main_graph_wrapper.vue | 7 +- .../pipelines/components/header_component.vue | 2 +- .../pipelines/components/parsing_utils.js | 24 +- .../components/pipeline_graph/drawing_utils.js | 96 ----- .../components/pipeline_graph/pipeline_graph.vue | 114 ++--- .../components/pipelines_list/empty_state.vue | 54 ++- .../components/pipelines_list/pipeline_url.vue | 68 +-- .../components/pipelines_list/pipelines.vue | 4 +- .../pipelines_list/pipelines_artifacts.vue | 52 ++- .../pipelines_list/pipelines_filtered_search.vue | 2 +- .../pipelines_list/pipelines_table_row.vue | 1 - .../pipelines/components/pipelines_list/stage.vue | 2 +- .../tokens/pipeline_branch_name_token.vue | 4 +- .../tokens/pipeline_status_token.vue | 2 +- .../tokens/pipeline_tag_name_token.vue | 4 +- .../tokens/pipeline_trigger_author_token.vue | 8 +- .../pipelines/components/unwrapping_utils.js | 33 +- .../fragments/linked_pipelines.fragment.graphql | 17 - .../pipeline_stages_connection.fragment.graphql | 34 ++ .../queries/get_pipeline_details.query.graphql | 65 --- .../pipeline_stages_connection.fragment.graphql | 20 - .../mixins/graph_pipeline_bundle_mixin.js | 2 +- .../javascripts/pipelines/mixins/pipelines.js | 6 +- .../pipelines/pipeline_details_bundle.js | 19 +- .../pipelines/pipeline_details_graph.js | 4 + .../pipelines/pipeline_details_header.js | 2 +- .../pipelines/pipeline_details_mediator.js | 2 +- .../javascripts/pipelines/stores/pipeline_store.js | 27 +- .../pipelines/stores/test_reports/getters.js | 10 +- .../pipelines/stores/test_reports/index.js | 2 +- .../pipelines/stores/test_reports/utils.js | 2 +- app/assets/javascripts/pipelines/utils.js | 32 +- .../javascripts/popovers/components/popovers.vue | 10 +- app/assets/javascripts/popovers/index.js | 6 +- .../profile/account/components/update_username.vue | 4 +- .../javascripts/profile/add_ssh_key_validation.js | 2 +- app/assets/javascripts/profile/gl_crop.js | 8 +- .../preferences/profile_preferences_bundle.js | 2 +- app/assets/javascripts/profile/profile.js | 10 +- app/assets/javascripts/project_find_file.js | 16 +- app/assets/javascripts/project_select.js | 10 +- .../javascripts/project_select_combo_button.js | 18 +- app/assets/javascripts/project_visibility.js | 2 +- .../commit/components/branches_dropdown.vue | 94 ++++ .../projects/commit/components/form_modal.vue | 137 ++++++ .../projects/commit/components/form_trigger.vue | 32 ++ .../javascripts/projects/commit/constants.js | 33 ++ .../javascripts/projects/commit/event_hub.js | 3 + .../projects/commit/init_revert_commit_modal.js | 55 +++ .../projects/commit/init_revert_commit_trigger.js | 20 + .../javascripts/projects/commit/store/actions.js | 36 ++ .../javascripts/projects/commit/store/getters.js | 5 + .../javascripts/projects/commit/store/index.js | 19 + .../projects/commit/store/mutation_types.js | 6 + .../javascripts/projects/commit/store/mutations.js | 25 ++ .../javascripts/projects/commit/store/state.js | 13 + .../commit_box/info/init_details_button.js | 4 +- .../projects/commit_box/info/load_branches.js | 2 +- .../projects/commits/components/author_select.vue | 2 +- app/assets/javascripts/projects/commits/index.js | 2 +- .../javascripts/projects/commits/store/actions.js | 2 +- .../projects/default_project_templates.js | 4 + .../components/app.vue | 24 +- .../components/welcome.vue | 2 +- .../illustrations/blank-project.svg | 36 +- .../illustrations/ci-cd-project.svg | 96 +---- .../illustrations/create-from-template.svg | 67 +-- .../illustrations/import-project.svg | 133 ++---- .../experiment_new_project_creation/index.js | 2 +- .../projects/pipelines/charts/components/app.vue | 233 ++++------ .../pipelines/charts/components/app_legacy.vue | 151 ------- .../components/ci_cd_analytics_area_chart.vue | 41 ++ .../charts/components/pipeline_charts.vue | 176 ++++++++ .../charts/components/pipelines_area_chart.vue | 46 -- .../charts/components/statistics_list.vue | 8 - .../get_pipeline_count_by_status.query.graphql | 1 - .../javascripts/projects/pipelines/charts/index.js | 102 +---- app/assets/javascripts/projects/project_new.js | 17 +- .../projects/settings/access_dropdown.js | 34 +- .../settings/components/shared_runners_toggle.vue | 2 +- .../components/service_desk_root.vue | 6 +- .../components/service_desk_setting.vue | 11 +- .../commit_pipeline_status_component.vue | 7 +- .../prometheus_alerts/components/reset_key.vue | 2 +- .../prometheus_metrics/custom_metrics.js | 12 +- .../prometheus_metrics/prometheus_metrics.js | 8 +- .../protected_branches/protected_branch_create.js | 4 +- .../protected_branches/protected_branch_edit.js | 4 +- app/assets/javascripts/read_more.js | 4 +- .../ref/components/ref_results_section.vue | 2 +- .../javascripts/ref/components/ref_selector.vue | 6 +- app/assets/javascripts/ref/stores/actions.js | 12 +- app/assets/javascripts/ref/stores/mutations.js | 4 +- app/assets/javascripts/ref_select_dropdown.js | 2 +- .../components/details_page/delete_alert.vue | 2 +- .../components/details_page/details_header.vue | 60 ++- .../details_page/partial_cleanup_alert.vue | 4 +- .../explorer/components/details_page/tags_list.vue | 5 +- .../components/details_page/tags_list_row.vue | 4 +- .../explorer/components/list_page/cli_commands.vue | 2 +- .../components/list_page/group_empty_state.vue | 4 +- .../explorer/components/list_page/image_list.vue | 6 + .../components/list_page/image_list_row.vue | 23 +- .../components/list_page/project_empty_state.vue | 8 +- .../components/list_page/registry_header.vue | 12 +- .../explorer/components/registry_breadcrumb.vue | 81 ++-- .../registry/explorer/constants/details.js | 21 + .../container_repository.fragment.graphql | 11 - .../javascripts/registry/explorer/graphql/index.js | 1 + ...et_container_repositories_details.query.graphql | 26 ++ .../get_container_repository_details.query.graphql | 5 + .../get_group_container_repositories.query.graphql | 23 - ...et_project_container_repositories.query.graphql | 23 - app/assets/javascripts/registry/explorer/index.js | 30 +- .../registry/explorer/pages/details.vue | 15 +- .../javascripts/registry/explorer/pages/list.vue | 138 ++++-- .../settings/components/expiration_input.vue | 4 +- .../settings/components/expiration_toggle.vue | 2 +- .../settings/components/registry_settings_app.vue | 2 +- .../registry/settings/components/settings_form.vue | 16 +- .../javascripts/registry/settings/constants.js | 4 +- .../settings/graphql/utils/cache_update.js | 4 +- app/assets/javascripts/registry/settings/utils.js | 10 +- .../components/related_issuable_input.vue | 6 +- .../components/related_issues_block.vue | 6 +- .../components/related_issues_root.vue | 6 +- app/assets/javascripts/related_issues/index.js | 2 +- .../related_issues/stores/related_issues_store.js | 2 +- .../javascripts/related_merge_requests/index.js | 2 +- .../related_merge_requests/store/actions.js | 2 +- .../releases/components/release_block_assets.vue | 6 +- .../components/release_block_milestone_info.vue | 6 +- .../releases/components/releases_sort.vue | 6 +- app/assets/javascripts/releases/constants.js | 2 +- app/assets/javascripts/releases/mount_edit.js | 2 +- app/assets/javascripts/releases/mount_index.js | 2 +- app/assets/javascripts/releases/mount_new.js | 2 +- app/assets/javascripts/releases/mount_show.js | 2 +- app/assets/javascripts/releases/stores/getters.js | 2 +- .../releases/stores/modules/detail/actions.js | 14 +- .../releases/stores/modules/detail/getters.js | 16 +- .../releases/stores/modules/detail/index.js | 2 +- .../releases/stores/modules/detail/mutations.js | 4 +- .../releases/stores/modules/list/actions.js | 2 +- .../releases/stores/modules/list/index.js | 2 +- app/assets/javascripts/releases/util.js | 30 +- .../reports/accessibility_report/store/getters.js | 14 +- .../reports/accessibility_report/store/index.js | 4 +- .../reports/codequality_report/store/actions.js | 4 +- .../reports/codequality_report/store/getters.js | 8 +- .../reports/codequality_report/store/index.js | 4 +- .../store/utils/codequality_comparison.js | 2 +- .../workers/codequality_comparison_worker.js | 2 +- .../reports/components/grouped_issues_list.vue | 2 +- .../components/grouped_test_reports_app.vue | 20 +- .../javascripts/reports/components/issues_list.vue | 2 +- .../javascripts/reports/components/modal.vue | 74 ++-- .../reports/components/modal_open_name.vue | 51 --- .../javascripts/reports/components/report_item.vue | 2 +- .../javascripts/reports/components/report_link.vue | 10 +- .../reports/components/test_issue_body.vue | 8 +- app/assets/javascripts/reports/store/actions.js | 9 +- app/assets/javascripts/reports/store/getters.js | 2 +- .../javascripts/reports/store/mutation_types.js | 1 + app/assets/javascripts/reports/store/mutations.js | 18 +- app/assets/javascripts/reports/store/state.js | 1 + app/assets/javascripts/reports/store/utils.js | 12 +- .../repository/components/breadcrumbs.vue | 4 +- .../components/directory_download_links.vue | 2 +- .../repository/components/last_commit.vue | 10 +- .../repository/components/table/parent_row.vue | 6 +- .../repository/components/tree_content.vue | 2 +- app/assets/javascripts/repository/graphql.js | 4 +- app/assets/javascripts/repository/log_tree.js | 8 +- .../repository/queries/project_path.query.graphql | 2 +- app/assets/javascripts/repository/router.js | 2 +- app/assets/javascripts/repository/utils/commit.js | 2 +- app/assets/javascripts/repository/utils/dom.js | 4 +- app/assets/javascripts/repository/utils/readme.js | 6 +- app/assets/javascripts/rest_api.js | 15 + app/assets/javascripts/right_sidebar.js | 42 +- .../search/highlight_blob_search_result.js | 4 +- app/assets/javascripts/search/sidebar/index.js | 2 +- app/assets/javascripts/search/store/actions.js | 4 +- app/assets/javascripts/search/store/index.js | 2 +- app/assets/javascripts/search/topbar/index.js | 4 +- app/assets/javascripts/search_autocomplete.js | 8 +- .../search_settings/components/search_settings.vue | 129 ++++++ .../javascripts/search_settings/constants.js | 11 + app/assets/javascripts/search_settings/index.js | 23 + .../javascripts/self_monitor/store/actions.js | 18 +- app/assets/javascripts/self_monitor/store/index.js | 2 +- .../javascripts/sentry_error_stack_trace/index.js | 2 +- .../javascripts/serverless/components/area.vue | 8 +- app/assets/javascripts/serverless/store/actions.js | 18 +- app/assets/javascripts/serverless/store/getters.js | 4 +- app/assets/javascripts/serverless/utils.js | 8 +- .../set_status_modal/set_status_modal_wrapper.vue | 9 +- app/assets/javascripts/set_status_modal/utils.js | 4 +- app/assets/javascripts/settings_panels.js | 11 +- .../sidebar/components/assignees/assignees.vue | 4 +- .../components/assignees/assignees_realtime.vue | 2 +- .../assignees/collapsed_assignee_list.vue | 6 +- .../components/confidential/edit_form_buttons.vue | 2 +- .../sidebar/components/copy_email_to_clipboard.vue | 43 ++ .../sidebar/components/labels/sidebar_labels.vue | 12 +- .../reviewers/collapsed_reviewer_list.vue | 6 +- .../components/reviewers/reviewer_title.vue | 17 +- .../sidebar/components/reviewers/reviewers.vue | 4 +- .../components/reviewers/sidebar_reviewers.vue | 10 +- .../components/severity/sidebar_severity.vue | 6 +- .../time_tracking/estimate_only_pane.vue | 18 - .../components/time_tracking/no_tracking_pane.vue | 11 - .../time_tracking/sidebar_time_tracking.vue | 2 +- .../components/time_tracking/time_tracker.vue | 21 +- .../javascripts/sidebar/lib/sidebar_move_issue.js | 4 +- .../javascripts/sidebar/mount_milestone_sidebar.js | 2 +- app/assets/javascripts/sidebar/mount_sidebar.js | 40 +- app/assets/javascripts/sidebar/sidebar_mediator.js | 6 +- app/assets/javascripts/sidebar/utils.js | 2 +- app/assets/javascripts/single_file_diff.js | 11 +- app/assets/javascripts/smart_interval.js | 6 +- .../javascripts/snippet/collapsible_input.js | 8 +- .../javascripts/snippets/components/edit.vue | 6 +- .../components/snippet_blob_actions_edit.vue | 4 +- .../snippets/components/snippet_blob_edit.vue | 6 +- .../snippets/components/snippet_blob_view.vue | 14 +- .../snippets/components/snippet_header.vue | 11 +- app/assets/javascripts/snippets/mixins/snippets.js | 2 +- app/assets/javascripts/snippets/utils/blob.js | 12 +- app/assets/javascripts/star.js | 5 +- .../static_site_editor/graphql/index.js | 4 +- .../static_site_editor/graphql/resolvers/file.js | 2 +- .../graphql/resolvers/has_submitted_changes.js | 2 +- .../graphql/resolvers/submit_content_changes.js | 4 +- .../static_site_editor/image_repository.js | 6 +- app/assets/javascripts/static_site_editor/index.js | 2 +- .../javascripts/static_site_editor/pages/home.vue | 2 +- .../static_site_editor/services/formatter.js | 6 +- .../static_site_editor/services/front_matterify.js | 2 +- .../static_site_editor/services/image_service.js | 4 +- .../services/load_source_content.js | 2 +- .../services/parse_source_file.js | 4 +- .../services/renderers/render_image.js | 10 +- .../services/submit_content_changes.js | 2 +- .../static_site_editor/services/templater.js | 10 +- app/assets/javascripts/task_list.js | 2 +- app/assets/javascripts/terminal/terminal.js | 6 +- .../terraform/components/terraform_list.vue | 2 +- .../javascripts/test_utils/simulate_input.js | 2 +- app/assets/javascripts/toggle_buttons.js | 2 +- .../javascripts/tooltips/components/tooltips.vue | 20 +- app/assets/javascripts/tooltips/index.js | 32 +- app/assets/javascripts/tracking.js | 6 +- app/assets/javascripts/tree.js | 8 +- app/assets/javascripts/ui_development_kit.js | 8 +- app/assets/javascripts/usage_ping_consent.js | 2 +- app/assets/javascripts/user_callout.js | 2 +- .../user_lists/components/user_list_form.vue | 2 +- .../javascripts/user_lists/store/edit/actions.js | 4 +- .../javascripts/user_lists/store/edit/index.js | 2 +- .../javascripts/user_lists/store/new/actions.js | 2 +- .../javascripts/user_lists/store/new/index.js | 2 +- .../javascripts/user_lists/store/show/actions.js | 4 +- .../javascripts/user_lists/store/show/index.js | 2 +- .../javascripts/user_lists/store/show/mutations.js | 4 +- app/assets/javascripts/user_lists/store/utils.js | 7 +- app/assets/javascripts/user_popovers.js | 8 +- app/assets/javascripts/users_select/index.js | 86 ++-- app/assets/javascripts/vue_alerts.js | 2 +- .../components/approvals/approvals.vue | 6 +- .../components/deployment/deployment_actions.vue | 2 +- .../deployment/deployment_view_button.vue | 2 +- .../components/deployment/memory_usage.vue | 8 +- .../components/extensions/base.vue | 8 +- .../components/extensions/container.js | 2 +- .../components/extensions/index.js | 2 +- .../components/mr_widget_alert_message.vue | 4 +- .../components/mr_widget_merge_help.vue | 2 +- .../components/mr_widget_pipeline.vue | 13 +- .../components/mr_widget_related_links.vue | 2 +- .../components/mr_widget_suggest_pipeline.vue | 4 +- .../components/source_branch_removal_status.vue | 2 +- .../components/states/commit_message_dropdown.vue | 7 +- .../components/states/commits_header.vue | 1 + .../states/mr_widget_auto_merge_enabled.vue | 164 ++++--- .../states/mr_widget_auto_merge_failed.vue | 19 +- .../components/states/mr_widget_conflicts.vue | 4 +- .../components/states/mr_widget_merged.vue | 4 +- .../components/states/mr_widget_missing_branch.vue | 2 +- .../components/states/mr_widget_rebase.vue | 110 +++-- .../components/states/ready_to_merge.vue | 457 +++++++++++++------- .../components/states/squash_before_merge.vue | 2 +- .../components/states/work_in_progress.vue | 24 +- .../terraform/mr_widget_terraform_container.vue | 2 +- .../vue_merge_request_widget/extensions/issues.js | 2 +- .../javascripts/vue_merge_request_widget/index.js | 6 +- .../vue_merge_request_widget/mixins/approvals.js | 2 +- .../mixins/ready_to_merge.js | 2 +- .../vue_merge_request_widget/mr_widget_options.vue | 31 +- .../states/auto_merge_enabled.fragment.graphql | 15 + .../states/auto_merge_enabled.query.graphql | 10 + .../queries/states/auto_merge_failed.query.graphql | 7 + .../queries/states/ready_to_merge.fragment.graphql | 41 ++ .../queries/states/ready_to_merge.query.graphql | 7 + .../queries/states/rebase.query.graphql | 11 + .../services/mr_widget_service.js | 6 +- .../stores/artifacts_list/getters.js | 2 +- .../stores/artifacts_list/index.js | 15 +- .../stores/mr_widget_store.js | 7 +- .../vue_shared/components/actions_button.vue | 2 +- .../vue_shared/components/alert_details_table.vue | 3 +- .../vue_shared/components/awards_list.vue | 8 +- .../vue_shared/components/changed_file_icon.vue | 2 + .../javascripts/vue_shared/components/commit.vue | 4 +- .../vue_shared/components/confirm_modal.vue | 4 +- .../components/content_viewer/content_viewer.vue | 4 +- .../content_viewer/viewers/download_viewer.vue | 13 +- .../content_viewer/viewers/image_viewer.vue | 6 +- .../content_viewer/viewers/markdown_viewer.vue | 2 +- .../date_time_picker/date_time_picker.vue | 2 +- .../date_time_picker/date_time_picker_input.vue | 4 +- .../date_time_picker/date_time_picker_lib.js | 4 +- .../vue_shared/components/deployment_instance.vue | 91 ++++ .../vue_shared/components/deprecated_modal_2.vue | 121 ------ .../components/dismissible_container.vue | 2 +- .../vue_shared/components/editor_lite.vue | 3 + .../vue_shared/components/file_finder/index.vue | 2 +- .../components/file_icon/file_icon_map.js | 11 +- .../javascripts/vue_shared/components/file_row.vue | 6 +- .../filtered_search_bar_root.vue | 18 +- .../filtered_search_bar/filtered_search_utils.js | 12 +- .../store/modules/filters/actions.js | 10 +- .../filtered_search_bar/tokens/author_token.vue | 4 +- .../filtered_search_bar/tokens/branch_token.vue | 2 +- .../filtered_search_bar/tokens/label_token.vue | 4 +- .../filtered_search_bar/tokens/milestone_token.vue | 2 +- .../gfm_autocomplete/gfm_autocomplete.vue | 15 +- .../components/gfm_autocomplete/utils.js | 69 ++- .../vue_shared/components/lib/utils/diff_utils.js | 2 +- .../components/markdown/apply_suggestion.vue | 34 +- .../vue_shared/components/markdown/field.vue | 6 +- .../vue_shared/components/markdown/header.vue | 2 +- .../components/markdown/suggestion_diff.vue | 9 +- .../components/markdown/suggestion_diff_header.vue | 23 +- .../vue_shared/components/markdown/suggestions.vue | 30 +- .../vue_shared/components/markdown/toolbar.vue | 8 +- .../vue_shared/components/modal_copy_button.vue | 10 +- .../vue_shared/components/navigation_tabs.vue | 37 +- .../vue_shared/components/notes/system_note.vue | 10 +- .../vue_shared/components/ordered_layout.vue | 2 +- .../paginated_table_with_search_and_tabs.vue | 2 +- .../paginated_table_with_search_and_tabs/utils.js | 2 +- .../javascripts/vue_shared/components/pikaday.vue | 57 +-- .../project_selector/project_list_item.vue | 2 +- .../project_selector/project_selector.vue | 9 +- .../vue_shared/components/registry/list_item.vue | 2 +- .../components/registry/metadata_item.vue | 15 +- .../vue_shared/components/registry/title_area.vue | 40 +- .../rich_content_editor/rich_content_editor.vue | 2 +- .../services/build_custom_renderer.js | 6 +- .../services/build_html_to_markdown_renderer.js | 4 +- .../rich_content_editor/services/editor_service.js | 16 +- .../services/renderers/build_uneditable_token.js | 8 +- .../services/renderers/render_html_block.js | 4 +- .../renderers/render_identifier_instance_text.js | 6 +- .../renderers/render_identifier_paragraph.js | 2 +- .../services/renderers/render_softbreak.js | 2 +- .../services/renderers/render_utils.js | 4 +- .../rich_content_editor/services/sanitize_html.js | 4 +- .../vue_shared/components/select2_select.vue | 2 +- .../components/sidebar/labels_select/base.vue | 2 +- .../labels_select/dropdown_create_label.vue | 2 +- .../labels_select/dropdown_value_collapsed.vue | 2 +- .../dropdown_contents_create_view.vue | 2 +- .../labels_select_vue/labels_select_root.vue | 8 +- .../sidebar/labels_select_vue/store/getters.js | 10 +- .../sidebar/labels_select_vue/store/mutations.js | 4 +- .../vue_shared/components/split_button.vue | 2 +- .../javascripts/vue_shared/components/tabs/tabs.js | 6 +- .../vue_shared/components/timezone_dropdown.vue | 4 +- .../components/upload_dropzone/upload_dropzone.vue | 4 +- .../components/user_avatar/user_avatar_image.vue | 2 +- .../vue_shared/components/web_ide_link.vue | 2 +- app/assets/javascripts/vue_shared/constants.js | 5 +- .../vue_shared/directives/autofocusonshow.js | 4 +- .../vue_shared/directives/validation.js | 12 +- .../vue_shared/gl_feature_flags_plugin.js | 2 +- .../vue_shared/mixins/ci_pagination_api_mixin.js | 2 +- .../components/security_summary.vue | 4 +- .../vue_shared/security_reports/constants.js | 9 + .../security_reports/security_reports_app.vue | 4 +- .../vue_shared/security_reports/store/getters.js | 22 +- .../security_reports/store/modules/sast/actions.js | 2 +- .../store/modules/secret_detection/actions.js | 2 +- .../vue_shared/security_reports/store/utils.js | 4 +- .../vue_shared/security_reports/utils.js | 39 +- app/assets/javascripts/vue_shared/translate.js | 2 +- app/assets/javascripts/vuex_shared/bindings.js | 2 +- .../javascripts/whats_new/components/app.vue | 5 +- app/assets/javascripts/whats_new/index.js | 2 +- .../whats_new/utils/get_drawer_body_height.js | 2 +- .../javascripts/whats_new/utils/notification.js | 4 +- app/assets/javascripts/zen_mode.js | 26 +- 1274 files changed, 13023 insertions(+), 8972 deletions(-) create mode 100644 app/assets/javascripts/admin/users/components/user_avatar.vue create mode 100644 app/assets/javascripts/admin/users/constants.js delete mode 100644 app/assets/javascripts/alert_management/graphql/fragments/alert_note.fragment.graphql delete mode 100644 app/assets/javascripts/alert_management/graphql/fragments/list_item.fragment.graphql delete mode 100644 app/assets/javascripts/alert_management/graphql/mutations/update_alert_status.mutation.graphql delete mode 100644 app/assets/javascripts/alert_management/graphql/queries/get_alerts.query.graphql create mode 100644 app/assets/javascripts/api/api_utils.js create mode 100644 app/assets/javascripts/api/constants.js create mode 100644 app/assets/javascripts/api/groups_api.js create mode 100644 app/assets/javascripts/api/projects_api.js create mode 100644 app/assets/javascripts/api/user_api.js create mode 100644 app/assets/javascripts/artifacts_settings/graphql/mutations/update_keep_latest_artifact_project_setting.mutation.graphql create mode 100644 app/assets/javascripts/artifacts_settings/graphql/queries/get_keep_latest_artifact_project_setting.query.graphql create mode 100644 app/assets/javascripts/artifacts_settings/index.js create mode 100644 app/assets/javascripts/artifacts_settings/keep_latest_artifact_checkbox.vue create mode 100644 app/assets/javascripts/blob/template_selectors/ci_syntax_yaml_selector.js create mode 100644 app/assets/javascripts/boards/components/board_column_deprecated.vue delete mode 100644 app/assets/javascripts/boards/components/board_column_new.vue create mode 100644 app/assets/javascripts/boards/components/board_list_deprecated.vue create mode 100644 app/assets/javascripts/boards/components/board_list_header_deprecated.vue delete mode 100644 app/assets/javascripts/boards/components/board_list_header_new.vue delete mode 100644 app/assets/javascripts/boards/components/board_list_new.vue create mode 100644 app/assets/javascripts/boards/components/board_new_issue_deprecated.vue delete mode 100644 app/assets/javascripts/boards/components/board_new_issue_new.vue create mode 100644 app/assets/javascripts/boards/components/issue_card_inner_deprecated.vue create mode 100644 app/assets/javascripts/boards/components/issue_time_estimate_deprecated.vue create mode 100644 app/assets/javascripts/boards/components/project_select_deprecated.vue create mode 100644 app/assets/javascripts/boards/components/sidebar/board_sidebar_issue_title.vue delete mode 100644 app/assets/javascripts/boards/graphql/board.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_create.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_destroy.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/board_update.mutation.graphql create mode 100644 app/assets/javascripts/boards/graphql/group_projects.query.graphql create mode 100644 app/assets/javascripts/boards/graphql/issue_set_title.mutation.graphql create mode 100644 app/assets/javascripts/create_cluster/gke_cluster/gapi_loader.js create mode 100644 app/assets/javascripts/diffs/utils/file_reviews.js create mode 100644 app/assets/javascripts/diffs/utils/merge_request.js delete mode 100644 app/assets/javascripts/editor/editor_file_template_ext.js delete mode 100644 app/assets/javascripts/editor/editor_lite_extension_base.js delete mode 100644 app/assets/javascripts/editor/editor_markdown_ext.js create mode 100644 app/assets/javascripts/editor/extensions/editor_ci_schema_ext.js create mode 100644 app/assets/javascripts/editor/extensions/editor_file_template_ext.js create mode 100644 app/assets/javascripts/editor/extensions/editor_lite_extension_base.js create mode 100644 app/assets/javascripts/editor/extensions/editor_markdown_ext.js create mode 100644 app/assets/javascripts/environments/components/canary_ingress.vue create mode 100644 app/assets/javascripts/environments/components/canary_update_modal.vue create mode 100644 app/assets/javascripts/environments/components/deploy_board.vue create mode 100644 app/assets/javascripts/environments/constants.js create mode 100644 app/assets/javascripts/environments/graphql/mutations/update_canary_ingress.mutation.graphql delete mode 100644 app/assets/javascripts/environments/mixins/canary_callout_mixin.js create mode 100644 app/assets/javascripts/graphql_shared/fragments/alert.fragment.graphql create mode 100644 app/assets/javascripts/graphql_shared/fragments/alert_note.fragment.graphql create mode 100644 app/assets/javascripts/graphql_shared/mutations/update_alert_status.mutation.graphql create mode 100644 app/assets/javascripts/graphql_shared/queries/get_alerts.query.graphql create mode 100644 app/assets/javascripts/helpers/help_page_helper.js create mode 100644 app/assets/javascripts/jira_connect/api.js create mode 100644 app/assets/javascripts/jira_connect/components/groups_list.vue create mode 100644 app/assets/javascripts/jira_connect/components/groups_list_item.vue create mode 100644 app/assets/javascripts/jira_connect/constants.js create mode 100644 app/assets/javascripts/jira_connect/store/index.js create mode 100644 app/assets/javascripts/jira_connect/store/mutation_types.js create mode 100644 app/assets/javascripts/jira_connect/store/mutations.js create mode 100644 app/assets/javascripts/jira_connect/store/state.js create mode 100644 app/assets/javascripts/lib/utils/favicon.js create mode 100644 app/assets/javascripts/lib/utils/favicon_ci.js create mode 100644 app/assets/javascripts/lib/utils/headers.js create mode 100644 app/assets/javascripts/merge_request/components/status_box.vue create mode 100644 app/assets/javascripts/merge_request/eventhub.js create mode 100644 app/assets/javascripts/notebook/cells/output/latex.vue create mode 100644 app/assets/javascripts/notes/components/comment_field_layout.vue delete mode 100644 app/assets/javascripts/notes/components/discussion_jump_to_next_button.vue create mode 100644 app/assets/javascripts/notes/components/email_participants_warning.vue create mode 100644 app/assets/javascripts/packages_and_registries/settings/group/bundle.js create mode 100644 app/assets/javascripts/packages_and_registries/settings/group/components/group_settings_app.vue create mode 100644 app/assets/javascripts/packages_and_registries/settings/group/graphql/index.js create mode 100644 app/assets/javascripts/pages/groups/settings/packages_and_registries/index.js create mode 100644 app/assets/javascripts/pages/projects/edit/mount_search_settings.js create mode 100644 app/assets/javascripts/pipeline_editor/components/info/validation_segment.vue create mode 100644 app/assets/javascripts/pipeline_editor/components/lint/ci_lint.vue create mode 100644 app/assets/javascripts/pipeline_editor/components/ui/editor_tab.vue create mode 100644 app/assets/javascripts/pipelines/components/graph_shared/drawing_utils.js create mode 100644 app/assets/javascripts/pipelines/components/graph_shared/links_inner.vue create mode 100644 app/assets/javascripts/pipelines/components/graph_shared/links_layer.vue delete mode 100644 app/assets/javascripts/pipelines/components/pipeline_graph/drawing_utils.js delete mode 100644 app/assets/javascripts/pipelines/graphql/fragments/linked_pipelines.fragment.graphql create mode 100644 app/assets/javascripts/pipelines/graphql/fragments/pipeline_stages_connection.fragment.graphql delete mode 100644 app/assets/javascripts/pipelines/graphql/queries/get_pipeline_details.query.graphql delete mode 100644 app/assets/javascripts/pipelines/graphql/queries/pipeline_stages_connection.fragment.graphql create mode 100644 app/assets/javascripts/projects/commit/components/branches_dropdown.vue create mode 100644 app/assets/javascripts/projects/commit/components/form_modal.vue create mode 100644 app/assets/javascripts/projects/commit/components/form_trigger.vue create mode 100644 app/assets/javascripts/projects/commit/constants.js create mode 100644 app/assets/javascripts/projects/commit/event_hub.js create mode 100644 app/assets/javascripts/projects/commit/init_revert_commit_modal.js create mode 100644 app/assets/javascripts/projects/commit/init_revert_commit_trigger.js create mode 100644 app/assets/javascripts/projects/commit/store/actions.js create mode 100644 app/assets/javascripts/projects/commit/store/getters.js create mode 100644 app/assets/javascripts/projects/commit/store/index.js create mode 100644 app/assets/javascripts/projects/commit/store/mutation_types.js create mode 100644 app/assets/javascripts/projects/commit/store/mutations.js create mode 100644 app/assets/javascripts/projects/commit/store/state.js delete mode 100644 app/assets/javascripts/projects/pipelines/charts/components/app_legacy.vue create mode 100644 app/assets/javascripts/projects/pipelines/charts/components/ci_cd_analytics_area_chart.vue create mode 100644 app/assets/javascripts/projects/pipelines/charts/components/pipeline_charts.vue delete mode 100644 app/assets/javascripts/projects/pipelines/charts/components/pipelines_area_chart.vue delete mode 100644 app/assets/javascripts/registry/explorer/graphql/fragments/container_repository.fragment.graphql create mode 100644 app/assets/javascripts/registry/explorer/graphql/queries/get_container_repositories_details.query.graphql delete mode 100644 app/assets/javascripts/registry/explorer/graphql/queries/get_group_container_repositories.query.graphql delete mode 100644 app/assets/javascripts/registry/explorer/graphql/queries/get_project_container_repositories.query.graphql delete mode 100644 app/assets/javascripts/reports/components/modal_open_name.vue create mode 100644 app/assets/javascripts/rest_api.js create mode 100644 app/assets/javascripts/search_settings/components/search_settings.vue create mode 100644 app/assets/javascripts/search_settings/constants.js create mode 100644 app/assets/javascripts/search_settings/index.js create mode 100644 app/assets/javascripts/sidebar/components/copy_email_to_clipboard.vue delete mode 100644 app/assets/javascripts/sidebar/components/time_tracking/estimate_only_pane.vue delete mode 100644 app/assets/javascripts/sidebar/components/time_tracking/no_tracking_pane.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/queries/states/auto_merge_enabled.fragment.graphql create mode 100644 app/assets/javascripts/vue_merge_request_widget/queries/states/auto_merge_enabled.query.graphql create mode 100644 app/assets/javascripts/vue_merge_request_widget/queries/states/auto_merge_failed.query.graphql create mode 100644 app/assets/javascripts/vue_merge_request_widget/queries/states/ready_to_merge.fragment.graphql create mode 100644 app/assets/javascripts/vue_merge_request_widget/queries/states/ready_to_merge.query.graphql create mode 100644 app/assets/javascripts/vue_merge_request_widget/queries/states/rebase.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/deployment_instance.vue delete mode 100644 app/assets/javascripts/vue_shared/components/deprecated_modal_2.vue (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/access_tokens/index.js b/app/assets/javascripts/access_tokens/index.js index 319144193f1..b4353af30d5 100644 --- a/app/assets/javascripts/access_tokens/index.js +++ b/app/assets/javascripts/access_tokens/index.js @@ -1,7 +1,7 @@ import Vue from 'vue'; import ExpiresAtField from './components/expires_at_field.vue'; -const getInputAttrs = el => { +const getInputAttrs = (el) => { const input = el.querySelector('input'); return { diff --git a/app/assets/javascripts/activities.js b/app/assets/javascripts/activities.js index 05de970e387..6b9f46dcfb6 100644 --- a/app/assets/javascripts/activities.js +++ b/app/assets/javascripts/activities.js @@ -9,9 +9,9 @@ export default class Activities { constructor(container = '') { this.container = container; - Pager.init(20, true, false, data => data, this.updateTooltips, this.container); + Pager.init(20, true, false, (data) => data, this.updateTooltips, this.container); - $('.event-filter-link').on('click', e => { + $('.event-filter-link').on('click', (e) => { e.preventDefault(); this.toggleFilter(e.currentTarget); this.reloadActivities(); @@ -24,7 +24,7 @@ export default class Activities { reloadActivities() { $('.content_list').html(''); - Pager.init(20, true, false, data => data, this.updateTooltips, this.container); + Pager.init(20, true, false, (data) => data, this.updateTooltips, this.container); } toggleFilter(sender) { diff --git a/app/assets/javascripts/add_context_commits_modal/components/add_context_commits_modal_wrapper.vue b/app/assets/javascripts/add_context_commits_modal/components/add_context_commits_modal_wrapper.vue index cb9aa50fa68..c58ded3f1f5 100644 --- a/app/assets/javascripts/add_context_commits_modal/components/add_context_commits_modal_wrapper.vue +++ b/app/assets/javascripts/add_context_commits_modal/components/add_context_commits_modal_wrapper.vue @@ -61,14 +61,14 @@ export default { }, }, selectedCommitsCount() { - return this.selectedCommits.filter(selectedCommit => selectedCommit.isSelected).length; + return this.selectedCommits.filter((selectedCommit) => selectedCommit.isSelected).length; }, shouldPurge() { return this.selectedCommitsCount !== this.selectedCommits.length; }, uniqueCommits() { return this.selectedCommits.filter( - selectedCommit => + (selectedCommit) => selectedCommit.isSelected && findCommitIndex(this.contextCommits, selectedCommit.short_id) === -1, ); @@ -126,7 +126,7 @@ export default { this.focusSearch(); if (this.shouldPurge) { this.setSelectedCommits( - [...this.commits, ...this.selectedCommits].filter(commit => commit.isSelected), + [...this.commits, ...this.selectedCommits].filter((commit) => commit.isSelected), ); } } @@ -178,7 +178,7 @@ export default { this.setCommits({ commits: tempCommits }); this.setSelectedCommits([ ...tempSelectedCommits, - ...tempCommits.filter(commit => commit.isSelected), + ...tempCommits.filter((commit) => commit.isSelected), ]); }, handleCreateContextCommits() { @@ -186,7 +186,7 @@ export default { return Promise.all([ this.createContextCommits({ commits: this.uniqueCommits }), this.removeContextCommits(), - ]).then(values => { + ]).then((values) => { if (values[0] || values[1]) { window.location.reload(); } diff --git a/app/assets/javascripts/add_context_commits_modal/store/actions.js b/app/assets/javascripts/add_context_commits_modal/store/actions.js index d23955182b2..1bf54b159ee 100644 --- a/app/assets/javascripts/add_context_commits_modal/store/actions.js +++ b/app/assets/javascripts/add_context_commits_modal/store/actions.js @@ -27,10 +27,10 @@ export const searchCommits = ({ dispatch, commit, state }, searchText) => { return axios .get(state.contextCommitsPath, params) .then(({ data }) => { - let commits = data.map(o => ({ ...o, isSelected: false })); - commits = commits.map(c => { + let commits = data.map((o) => ({ ...o, isSelected: false })); + commits = commits.map((c) => { const isPresent = state.selectedCommits.find( - selectedCommit => selectedCommit.short_id === c.short_id && selectedCommit.isSelected, + (selectedCommit) => selectedCommit.short_id === c.short_id && selectedCommit.isSelected, ); if (isPresent) { return { ...c, isSelected: true }; @@ -50,7 +50,7 @@ export const searchCommits = ({ dispatch, commit, state }, searchText) => { export const setCommits = ({ commit }, { commits: data, silentAddition = false }) => { let commits = _.uniqBy(data, 'short_id'); - commits = _.orderBy(data, c => new Date(c.committed_date), ['desc']); + commits = _.orderBy(data, (c) => new Date(c.committed_date), ['desc']); if (silentAddition) { commit(types.SET_COMMITS_SILENT, commits); } else { @@ -60,7 +60,7 @@ export const setCommits = ({ commit }, { commits: data, silentAddition = false } export const createContextCommits = ({ state }, { commits, forceReload = false }) => Api.createContextCommits(state.projectId, state.mergeRequestIid, { - commits: commits.map(commit => commit.short_id), + commits: commits.map((commit) => commit.short_id), }) .then(() => { if (forceReload) { @@ -81,7 +81,7 @@ export const fetchContextCommits = ({ dispatch, commit, state }) => { commit(types.FETCH_CONTEXT_COMMITS); return Api.allContextCommits(state.projectId, state.mergeRequestIid) .then(({ data }) => { - const contextCommits = data.map(o => ({ ...o, isSelected: true })); + const contextCommits = data.map((o) => ({ ...o, isSelected: true })); dispatch('setContextCommits', contextCommits); dispatch('setCommits', { commits: [...state.commits, ...contextCommits], @@ -121,7 +121,7 @@ export const setSelectedCommits = ({ commit }, selected) => { let selectedCommits = _.uniqBy(selected, 'short_id'); selectedCommits = _.orderBy( selectedCommits, - selectedCommit => new Date(selectedCommit.committed_date), + (selectedCommit) => new Date(selectedCommit.committed_date), ['desc'], ); commit(types.SET_SELECTED_COMMITS, selectedCommits); diff --git a/app/assets/javascripts/add_context_commits_modal/utils.js b/app/assets/javascripts/add_context_commits_modal/utils.js index 3495ee17cd3..114913b1893 100644 --- a/app/assets/javascripts/add_context_commits_modal/utils.js +++ b/app/assets/javascripts/add_context_commits_modal/utils.js @@ -1,5 +1,5 @@ export const findCommitIndex = (commits, commitShortId) => { - return commits.findIndex(commit => commit.short_id === commitShortId); + return commits.findIndex((commit) => commit.short_id === commitShortId); }; export const setCommitStatus = (commits, commitIndex, selected) => { diff --git a/app/assets/javascripts/admin/application_settings/setup_metrics_and_profiling.js b/app/assets/javascripts/admin/application_settings/setup_metrics_and_profiling.js index f89533aeb1d..a357d5d2f1f 100644 --- a/app/assets/javascripts/admin/application_settings/setup_metrics_and_profiling.js +++ b/app/assets/javascripts/admin/application_settings/setup_metrics_and_profiling.js @@ -1,7 +1,7 @@ import PayloadPreviewer from '~/pages/admin/application_settings/payload_previewer'; export default () => { - Array.from(document.querySelectorAll('.js-payload-preview-trigger')).forEach(trigger => { + Array.from(document.querySelectorAll('.js-payload-preview-trigger')).forEach((trigger) => { new PayloadPreviewer(trigger).init(); }); }; diff --git a/app/assets/javascripts/admin/cohorts/components/usage_ping_disabled.vue b/app/assets/javascripts/admin/cohorts/components/usage_ping_disabled.vue index bc2d96832fa..5da38495010 100644 --- a/app/assets/javascripts/admin/cohorts/components/usage_ping_disabled.vue +++ b/app/assets/javascripts/admin/cohorts/components/usage_ping_disabled.vue @@ -36,7 +36,7 @@ export default { ) " > -