From edaa33dee2ff2f7ea3fac488d41558eb5f86d68c Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 20 Jan 2022 09:16:11 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-7-stable-ee --- .../admin/users/components/user_actions.vue | 3 +- .../shared/components/projects_dropdown_filter.vue | 13 +- app/assets/javascripts/api/packages_api.js | 8 +- app/assets/javascripts/behaviors/copy_code.js | 3 +- .../javascripts/behaviors/copy_to_clipboard.js | 46 +- .../javascripts/behaviors/markdown/render_gfm.js | 7 +- .../behaviors/markdown/render_sandboxed_mermaid.js | 234 ++++++ .../javascripts/behaviors/preview_markdown.js | 7 - .../blob/blob_line_permalink_updater.js | 2 +- .../javascripts/blob/components/blob_header.vue | 2 +- .../blob/components/blob_header_filepath.vue | 11 +- .../components/blob_header_viewer_switcher.vue | 4 + app/assets/javascripts/blob/line_highlighter.js | 181 +++++ .../javascripts/boards/components/board_card.vue | 2 +- .../boards/components/board_content_sidebar.vue | 29 +- .../boards/components/board_filtered_search.vue | 17 +- .../boards/components/board_list_header.vue | 2 +- .../components/sidebar/board_sidebar_title.vue | 2 +- app/assets/javascripts/boards/constants.js | 4 + .../graphql/group_board_milestones.query.graphql | 4 +- .../boards/graphql/issue.fragment.graphql | 35 +- .../boards/graphql/issue_create.mutation.graphql | 2 +- .../graphql/issue_move_list.mutation.graphql | 2 +- .../boards/graphql/lists_issues.query.graphql | 4 +- .../graphql/project_board_milestones.query.graphql | 4 +- app/assets/javascripts/boards/stores/actions.js | 2 + .../javascripts/branches/branches_delete_modal.js | 53 -- .../clusters/agents/components/show.vue | 13 +- .../clusters/agents/graphql/provider.js | 26 + app/assets/javascripts/clusters/agents/index.js | 24 +- .../clusters_list/components/agent_options.vue | 200 +++++ .../clusters_list/components/agent_table.vue | 65 +- .../clusters_list/components/agents.vue | 6 +- app/assets/javascripts/clusters_list/constants.js | 4 +- .../clusters_list/graphql/cache_update.js | 22 + .../mutations/delete_agent.mutation.graphql | 5 + app/assets/javascripts/clusters_list/index.js | 2 + app/assets/javascripts/confirm_danger_modal.js | 64 -- .../components/wrappers/frontmatter.vue | 2 +- app/assets/javascripts/content_editor/constants.js | 7 + .../javascripts/content_editor/extensions/code.js | 13 +- .../extensions/code_block_highlight.js | 9 +- .../content_editor/extensions/frontmatter.js | 11 + .../javascripts/content_editor/extensions/image.js | 11 + .../content_editor/services/markdown_serializer.js | 2 +- .../services/serialization_helpers.js | 9 +- .../services/track_input_rules_and_shortcuts.js | 48 +- .../javascripts/create_merge_request_dropdown.js | 566 -------------- app/assets/javascripts/crm/components/form.vue | 232 ++++++ .../cycle_analytics/components/base.vue | 2 +- .../cycle_analytics/components/path_navigation.vue | 2 +- .../cycle_analytics/components/stage_table.vue | 33 +- .../components/value_stream_filters.vue | 4 +- .../components/design_notes/design_discussion.vue | 85 ++- .../design_notes/design_note_signed_out.vue | 50 ++ .../components/design_presentation.vue | 4 +- .../components/design_sidebar.vue | 24 +- app/assets/javascripts/design_management/index.js | 4 +- .../diffs/components/compare_versions.vue | 2 +- .../diffs/components/image_diff_overlay.vue | 16 +- app/assets/javascripts/dropzone_input.js | 1 - app/assets/javascripts/editor/source_editor.js | 2 +- app/assets/javascripts/emoji/components/picker.vue | 16 +- .../components/confirm_rollback_modal.vue | 3 +- .../environments/components/deployment.vue | 25 + .../components/deployment_status_badge.vue | 60 ++ .../components/environment_actions.vue | 25 +- .../environments/components/environment_item.vue | 11 +- .../environments/components/environment_stop.vue | 27 +- .../components/new_environment_folder.vue | 26 +- .../components/new_environment_item.vue | 265 +++++++ .../components/new_environments_app.vue | 39 +- .../components/stop_environment_modal.vue | 15 +- .../graphql/mutations/action.mutation.graphql | 5 + .../set_environment_to_stop.mutation.graphql | 3 + .../queries/environment_to_stop.query.graphql | 3 + .../queries/is_environment_stopping.query.graphql | 3 + .../queries/is_last_deployment.query.graphql | 3 + .../javascripts/environments/graphql/resolvers.js | 18 +- .../environments/graphql/typedefs.graphql | 6 +- app/assets/javascripts/experimental_flags.js | 15 - app/assets/javascripts/flash.js | 139 +++- app/assets/javascripts/gitlab_version_check.js | 20 + .../components/deployments_service_table.vue | 61 ++ .../javascripts/google_cloud/components/home.vue | 17 +- app/assets/javascripts/google_tag_manager/index.js | 122 +++ .../fragment_types/vulnerability_location_types.js | 17 + .../fragments/issue.fragment.graphql | 37 + app/assets/javascripts/group.js | 7 +- .../javascripts/groups/components/item_stats.vue | 2 +- app/assets/javascripts/groups/groups_list.js | 18 + app/assets/javascripts/groups/landing.js | 38 + .../javascripts/groups/store/groups_store.js | 3 + app/assets/javascripts/groups/transfer_edit.js | 11 + app/assets/javascripts/groups_list.js | 18 - .../javascripts/header_search/components/app.vue | 7 +- .../javascripts/helpers/event_hub_factory.js | 7 - .../javascripts/ide/components/jobs/stage.vue | 5 +- .../ide/stores/modules/pipelines/actions.js | 8 +- app/assets/javascripts/init_confirm_danger.js | 18 +- app/assets/javascripts/integrations/constants.js | 5 + .../integrations/edit/components/dynamic_field.vue | 5 +- .../edit/components/integration_form.vue | 143 ++-- .../edit/components/reset_confirmation_modal.vue | 2 +- app/assets/javascripts/integrations/edit/index.js | 7 +- .../javascripts/integrations/edit/store/actions.js | 23 - .../integrations/edit/store/mutations.js | 9 - .../javascripts/integrations/edit/store/state.js | 2 - .../overrides/components/integration_overrides.vue | 7 + .../overrides/components/integration_tabs.vue | 52 ++ .../javascripts/integrations/overrides/index.js | 5 +- .../issuable/bulk_update_sidebar/index.js | 28 + .../init_issue_status_select.js | 17 - .../issuable_bulk_update_sidebar.js | 10 +- .../issuable_init_bulk_update_sidebar.js | 19 - .../issuable/components/csv_import_modal.vue | 6 +- app/assets/javascripts/issuable/index.js | 37 +- app/assets/javascripts/issues/constants.js | 6 + .../issues/create_merge_request_dropdown.js | 566 ++++++++++++++ app/assets/javascripts/issues/form.js | 24 - app/assets/javascripts/issues/index.js | 88 +++ .../issues/init_filtered_search_service_desk.js | 11 - app/assets/javascripts/issues/issue.js | 2 +- .../list/components/issue_card_time_info.vue | 104 +++ .../issues/list/components/issues_list_app.vue | 821 ++++++++++++++++++++ .../components/jira_issues_import_status_app.vue | 112 +++ .../issues/list/components/new_issue_dropdown.vue | 127 ++++ app/assets/javascripts/issues/list/constants.js | 316 ++++++++ app/assets/javascripts/issues/list/eventhub.js | 3 + app/assets/javascripts/issues/list/index.js | 165 +++++ .../issues/list/queries/get_issues.query.graphql | 90 +++ .../list/queries/get_issues_counts.query.graphql | 129 ++++ .../queries/get_issues_list_details.query.graphql | 24 + .../issues/list/queries/issue.fragment.graphql | 54 ++ .../issues/list/queries/label.fragment.graphql | 6 + .../issues/list/queries/milestone.fragment.graphql | 4 + .../list/queries/reorder_issues.mutation.graphql | 13 + .../list/queries/search_labels.query.graphql | 20 + .../list/queries/search_milestones.query.graphql | 20 + .../list/queries/search_projects.query.graphql | 14 + .../issues/list/queries/search_users.query.graphql | 26 + .../issues/list/queries/user.fragment.graphql | 6 + app/assets/javascripts/issues/list/utils.js | 261 +++++++ app/assets/javascripts/issues/manual_ordering.js | 6 +- app/assets/javascripts/issues/new/index.js | 4 +- .../issues/related_merge_requests/index.js | 32 +- .../components/sentry_error_stack_trace.vue | 43 -- .../issues/sentry_error_stack_trace/index.js | 22 - app/assets/javascripts/issues/show.js | 59 -- .../javascripts/issues/show/components/app.vue | 8 +- .../issues/show/components/fields/type.vue | 10 +- .../issues/show/components/header_actions.vue | 13 +- .../show/components/sentry_error_stack_trace.vue | 43 ++ app/assets/javascripts/issues/show/constants.js | 26 +- app/assets/javascripts/issues/show/incident.js | 101 --- app/assets/javascripts/issues/show/index.js | 161 ++++ app/assets/javascripts/issues/show/issue.js | 86 --- .../issues_list/components/issuable.vue | 441 ----------- .../issues_list/components/issuables_list_app.vue | 426 ----------- .../components/issue_card_time_info.vue | 104 --- .../issues_list/components/issues_list_app.vue | 822 --------------------- .../components/jira_issues_import_status_app.vue | 112 --- .../issues_list/components/new_issue_dropdown.vue | 127 ---- app/assets/javascripts/issues_list/constants.js | 372 ---------- app/assets/javascripts/issues_list/eventhub.js | 3 - app/assets/javascripts/issues_list/index.js | 195 ----- .../issues_list/queries/get_issues.query.graphql | 90 --- .../queries/get_issues_counts.query.graphql | 129 ---- .../queries/get_issues_list_details.query.graphql | 24 - .../issues_list/queries/issue.fragment.graphql | 54 -- .../issues_list/queries/label.fragment.graphql | 6 - .../issues_list/queries/milestone.fragment.graphql | 4 - .../queries/reorder_issues.mutation.graphql | 13 - .../queries/search_labels.query.graphql | 20 - .../queries/search_milestones.query.graphql | 20 - .../queries/search_projects.query.graphql | 14 - .../issues_list/queries/search_users.query.graphql | 26 - .../issues_list/queries/user.fragment.graphql | 6 - .../javascripts/issues_list/service_desk_helper.js | 111 --- app/assets/javascripts/issues_list/utils.js | 261 ------- .../javascripts/jira_import/utils/constants.js | 2 + .../jira_import/utils/jira_import_utils.js | 2 +- app/assets/javascripts/jobs/bridge/app.vue | 106 ++- .../javascripts/jobs/bridge/components/sidebar.vue | 65 +- .../bridge/graphql/queries/pipeline.query.graphql | 70 ++ .../jobs/components/job_log_controllers.vue | 1 + .../components/sidebar_job_details_container.vue | 9 +- app/assets/javascripts/jobs/index.js | 13 +- .../labels/components/delete_label_modal.vue | 13 + .../javascripts/labels/create_label_dropdown.js | 4 +- app/assets/javascripts/labels/index.js | 2 +- app/assets/javascripts/landing.js | 38 - app/assets/javascripts/lib/mermaid.js | 61 ++ app/assets/javascripts/lib/utils/common_utils.js | 10 + app/assets/javascripts/lib/utils/constants.js | 1 - .../javascripts/lib/utils/resize_observer.js | 58 ++ app/assets/javascripts/line_highlighter.js | 181 ----- app/assets/javascripts/main.js | 15 + .../members/components/table/members_table.vue | 43 +- app/assets/javascripts/members/constants.js | 30 +- .../components/details_page/details_header.vue | 7 +- .../components/details_page/empty_state.vue | 44 -- .../explorer/components/details_page/tags_list.vue | 67 +- .../components/details_page/tags_list_row.vue | 7 +- .../explorer/components/registry_breadcrumb.vue | 51 -- .../explorer/constants/common.js | 2 + .../explorer/constants/details.js | 7 + .../container_registry/explorer/constants/list.js | 3 +- .../get_container_repository_tags.query.graphql | 4 +- .../container_registry/explorer/index.js | 39 +- .../container_registry/explorer/pages/details.vue | 19 +- .../package_registry/components/details/app.vue | 347 --------- .../components/details/composer_installation.vue | 10 +- .../components/details/conan_installation.vue | 8 +- .../components/details/maven_installation.vue | 19 +- .../components/details/npm_installation.vue | 10 +- .../components/details/nuget_installation.vue | 7 +- .../components/details/package_files.vue | 6 +- .../components/details/pypi_installation.vue | 9 +- .../components/list/package_list_row.vue | 20 +- .../package_registry/constants.js | 7 + .../queries/get_package_details.query.graphql | 10 + .../package_registry/index.js | 58 +- .../package_registry/pages/details.js | 27 - .../package_registry/pages/details.vue | 350 +++++++++ .../package_registry/router.js | 20 +- .../shared/components/persisted_search.vue | 80 ++ .../shared/components/registry_breadcrumb.vue | 56 ++ .../packages_and_registries/shared/utils.js | 35 + .../pages/admin/integrations/edit/index.js | 2 +- .../javascripts/pages/admin/labels/edit/index.js | 2 + .../javascripts/pages/admin/runners/edit/index.js | 3 + .../javascripts/pages/admin/runners/show/index.js | 3 - .../pages/dashboard/todos/index/todos.js | 8 +- .../javascripts/pages/explore/groups/index.js | 6 +- app/assets/javascripts/pages/groups/edit/index.js | 4 +- .../javascripts/pages/groups/issues/index.js | 10 +- .../javascripts/pages/groups/labels/edit/index.js | 2 + .../pages/groups/merge_requests/index.js | 4 +- app/assets/javascripts/pages/groups/new/index.js | 7 +- .../javascripts/pages/groups/packages/index.js | 8 + .../pages/groups/packages/index/index.js | 3 - .../pages/groups/settings/access_tokens/index.js | 3 + .../groups/settings/integrations/edit/index.js | 2 +- app/assets/javascripts/pages/help/index/index.js | 5 +- .../javascripts/pages/profiles/keys/index.js | 2 + .../javascripts/pages/projects/blob/show/index.js | 6 + .../pages/projects/branches/index/index.js | 2 - .../javascripts/pages/projects/edit/index.js | 2 - .../pages/projects/find_file/show/index.js | 2 +- .../pages/projects/imports/show/index.js | 2 +- .../pages/projects/incidents/show/index.js | 2 +- app/assets/javascripts/pages/projects/init_blob.js | 2 +- .../pages/projects/issues/edit/index.js | 2 +- .../pages/projects/issues/index/index.js | 11 +- .../javascripts/pages/projects/issues/new/index.js | 2 +- .../pages/projects/issues/service_desk/index.js | 7 +- .../pages/projects/issues/show/index.js | 2 +- .../pages/projects/labels/edit/index.js | 2 + .../pages/projects/merge_requests/index/index.js | 5 +- app/assets/javascripts/pages/projects/new/index.js | 2 +- .../pages/projects/packages/packages/index.js | 8 + .../projects/packages/packages/index/index.js | 3 - .../pages/projects/packages/packages/show/index.js | 3 - .../shared/components/timezone_dropdown.js | 4 +- .../pages/projects/services/edit/index.js | 2 +- .../permissions/components/settings_panel.vue | 40 +- .../pages/projects/shared/permissions/index.js | 31 +- .../javascripts/pages/projects/show/index.js | 4 +- .../javascripts/pages/registrations/new/index.js | 4 + .../pages/shared/wikis/components/wiki_form.vue | 4 +- .../components/commit/commit_form.vue | 1 + .../components/editor/text_editor.vue | 10 +- .../components/header/pipeline_status.vue | 4 +- .../components/header/validation_segment.vue | 22 +- .../components/pipeline_editor_tabs.vue | 8 + .../pipeline_editor/components/ui/editor_tab.vue | 17 +- .../javascripts/pipeline_editor/constants.js | 2 + app/assets/javascripts/pipeline_editor/index.js | 2 + .../pipeline_editor/pipeline_editor_app.vue | 43 +- .../pipeline_editor/pipeline_editor_home.vue | 2 +- .../pipelines/components/header_component.vue | 4 +- .../pipelines/components/jobs/jobs_app.vue | 2 +- .../pipelines/components/parsing_utils.js | 22 +- .../components/pipeline_graph/pipeline_graph.vue | 7 +- .../pipelines/components/unwrapping_utils.js | 9 +- app/assets/javascripts/pipelines/constants.js | 2 + .../pipelines/graphql/fragmentTypes.json | 1 + .../pipelines/pipeline_shared_client.js | 9 + app/assets/javascripts/pipelines/utils.js | 6 +- .../javascripts/profile/add_ssh_key_validation.js | 17 +- app/assets/javascripts/project_find_file.js | 183 ----- app/assets/javascripts/project_import.js | 7 - .../javascripts/project_select_combo_button.js | 19 +- app/assets/javascripts/project_visibility.js | 58 -- .../javascripts/projects/project_find_file.js | 183 +++++ app/assets/javascripts/projects/project_import.js | 7 + .../javascripts/projects/project_visibility.js | 71 ++ app/assets/javascripts/projects/star.js | 38 + .../components/related_issues_list.vue | 2 +- .../repository/components/blob_button_group.vue | 25 +- .../repository/components/blob_content_viewer.vue | 10 +- .../repository/components/blob_controls.vue | 119 +++ .../repository/components/blob_edit.vue | 1 + .../repository/components/delete_blob_modal.vue | 4 + .../repository/components/fork_suggestion.vue | 1 + .../repository/components/preview/index.vue | 9 +- .../repository/components/upload_blob_modal.vue | 4 + app/assets/javascripts/repository/index.js | 21 +- .../repository/queries/blob_controls.query.graphql | 18 + .../repository/queries/blob_info.query.graphql | 16 +- .../repository/queries/path_locks.fragment.graphql | 3 + .../admin_runner_edit/admin_runner_edit_app.vue | 58 ++ .../javascripts/runner/admin_runner_edit/index.js | 32 + .../runner/admin_runners/admin_runners_app.vue | 131 +++- .../javascripts/runner/admin_runners/index.js | 30 +- .../components/cells/runner_actions_cell.vue | 17 +- .../runner/components/cells/runner_status_cell.vue | 12 +- .../registration_token_reset_dropdown_item.vue | 34 +- .../runner/components/runner_header.vue | 52 ++ .../runner/components/runner_status_badge.vue | 8 +- .../runner/components/runner_type_alert.vue | 54 -- .../runner/components/runner_update_form.vue | 10 +- .../search_tokens/status_token_config.js | 4 +- .../runner/components/search_tokens/tag_token.vue | 4 +- .../runner/components/stat/runner_online_stat.vue | 17 - .../runner/components/stat/runner_stats.vue | 49 ++ .../runner/components/stat/runner_status_stat.vue | 65 ++ app/assets/javascripts/runner/constants.js | 5 +- .../runner/graphql/get_group_runners.query.graphql | 2 +- .../graphql/get_group_runners_count.query.graphql | 20 + .../runner/graphql/get_runners.query.graphql | 1 + .../runner/graphql/get_runners_count.query.graphql | 10 + .../graphql/runner_details_shared.fragment.graphql | 2 + .../runner/graphql/runner_node.fragment.graphql | 4 + .../runner/group_runners/group_runners_app.vue | 56 +- .../javascripts/runner/runner_details/index.js | 32 - .../runner/runner_details/runner_details_app.vue | 71 -- .../runner_details/runner_update_form_utils.js | 38 - .../javascripts/runner/runner_search_utils.js | 28 + .../javascripts/runner/runner_update_form_utils.js | 38 + .../security_configuration/components/app.vue | 32 +- .../components/auto_dev_ops_alert.vue | 1 + .../security_configuration/components/constants.js | 2 +- .../components/training_provider_list.vue | 130 +++- ...re_security_training_providers.mutation.graphql | 9 + .../javascripts/security_configuration/index.js | 30 +- .../javascripts/security_configuration/resolver.js | 56 ++ .../set_status_modal/set_status_modal_wrapper.vue | 2 + .../components/crm_contacts/crm_contacts.vue | 15 +- app/assets/javascripts/sidebar/mount_sidebar.js | 7 + app/assets/javascripts/sidebar/sidebar_mediator.js | 52 +- .../javascripts/sidebar/stores/sidebar_store.js | 4 + app/assets/javascripts/star.js | 38 - app/assets/javascripts/tracking/index.js | 5 +- app/assets/javascripts/transfer_edit.js | 11 - app/assets/javascripts/tree.js | 64 -- app/assets/javascripts/version_check_image.js | 6 - .../components/approvals/approvals.vue | 2 + .../components/extensions/actions.vue | 1 + .../components/extensions/base.vue | 50 +- .../components/extensions/index.js | 1 + .../components/mr_widget_header.vue | 2 + .../components/mr_widget_status_icon.vue | 4 +- .../components/states/merge_checks_failed.vue | 45 +- .../components/states/mr_widget_archived.vue | 11 +- .../components/states/mr_widget_checking.vue | 6 +- .../components/states/mr_widget_conflicts.vue | 10 +- .../components/states/mr_widget_missing_branch.vue | 15 +- .../states/mr_widget_pipeline_blocked.vue | 4 +- .../components/states/mr_widget_rebase.vue | 62 +- .../components/states/nothing_to_merge.vue | 4 +- .../components/states/pipeline_failed.vue | 4 +- .../components/states/ready_to_merge.vue | 2 +- .../components/states/sha_mismatch.vue | 8 +- .../components/states/unresolved_discussions.vue | 22 +- .../components/states/work_in_progress.vue | 5 +- .../vue_merge_request_widget/constants.js | 3 + .../extensions/terraform/index.js | 173 +++++ .../vue_merge_request_widget/mr_widget_options.vue | 20 +- .../services/mr_widget_service.js | 5 +- .../stores/mr_widget_store.js | 12 +- .../vue_shared/components/actions_button.vue | 2 + .../vue_shared/components/clipboard_button.vue | 60 +- .../components/confirm_danger/confirm_danger.vue | 7 +- .../confirm_danger/confirm_danger_modal.stories.js | 17 +- .../confirm_danger/confirm_danger_modal.vue | 25 +- .../filtered_search_bar_root.vue | 2 +- .../filtered_search_bar/tokens/author_token.vue | 4 +- .../vue_shared/components/gitlab_version_check.vue | 67 ++ .../vue_shared/components/line_numbers.vue | 30 +- .../components/markdown/apply_suggestion.vue | 2 +- .../vue_shared/components/markdown/field.vue | 75 +- .../vue_shared/components/modal_copy_button.vue | 4 +- .../labels_select_widget/dropdown_contents.vue | 5 + .../dropdown_contents_create_view.vue | 19 +- .../dropdown_contents_labels_view.vue | 12 +- .../labels_select_widget/dropdown_header.vue | 1 + .../sidebar/labels_select_widget/label_item.vue | 2 +- .../labels_select_widget/labels_select_root.vue | 1 + .../vue_shared/components/source_editor.vue | 2 +- .../vue_shared/components/source_viewer.vue | 45 +- .../vue_shared/components/web_ide_link.vue | 96 ++- .../list/components/issuable_bulk_edit_sidebar.vue | 1 + .../issuable/list/components/issuable_item.vue | 8 +- .../issuable/list/components/issuable_tabs.vue | 6 +- .../vue_shared/issuable/list/constants.js | 2 +- .../vue_shared/issuable/show/constants.js | 5 - .../new_namespace/new_namespace_page.vue | 18 +- .../work_items/components/item_title.vue | 4 + app/assets/javascripts/work_items/constants.js | 2 + .../work_items/pages/work_item_root.vue | 16 +- 412 files changed, 9512 insertions(+), 6876 deletions(-) create mode 100644 app/assets/javascripts/behaviors/markdown/render_sandboxed_mermaid.js create mode 100644 app/assets/javascripts/blob/line_highlighter.js delete mode 100644 app/assets/javascripts/branches/branches_delete_modal.js create mode 100644 app/assets/javascripts/clusters/agents/graphql/provider.js create mode 100644 app/assets/javascripts/clusters_list/components/agent_options.vue create mode 100644 app/assets/javascripts/clusters_list/graphql/mutations/delete_agent.mutation.graphql delete mode 100644 app/assets/javascripts/confirm_danger_modal.js delete mode 100644 app/assets/javascripts/create_merge_request_dropdown.js create mode 100644 app/assets/javascripts/crm/components/form.vue create mode 100644 app/assets/javascripts/design_management/components/design_notes/design_note_signed_out.vue create mode 100644 app/assets/javascripts/environments/components/deployment.vue create mode 100644 app/assets/javascripts/environments/components/deployment_status_badge.vue create mode 100644 app/assets/javascripts/environments/components/new_environment_item.vue create mode 100644 app/assets/javascripts/environments/graphql/mutations/action.mutation.graphql create mode 100644 app/assets/javascripts/environments/graphql/mutations/set_environment_to_stop.mutation.graphql create mode 100644 app/assets/javascripts/environments/graphql/queries/environment_to_stop.query.graphql create mode 100644 app/assets/javascripts/environments/graphql/queries/is_environment_stopping.query.graphql create mode 100644 app/assets/javascripts/environments/graphql/queries/is_last_deployment.query.graphql delete mode 100644 app/assets/javascripts/experimental_flags.js create mode 100644 app/assets/javascripts/gitlab_version_check.js create mode 100644 app/assets/javascripts/google_cloud/components/deployments_service_table.vue create mode 100644 app/assets/javascripts/google_tag_manager/index.js create mode 100644 app/assets/javascripts/graphql_shared/fragment_types/vulnerability_location_types.js create mode 100644 app/assets/javascripts/graphql_shared/fragments/issue.fragment.graphql create mode 100644 app/assets/javascripts/groups/groups_list.js create mode 100644 app/assets/javascripts/groups/landing.js create mode 100644 app/assets/javascripts/groups/transfer_edit.js delete mode 100644 app/assets/javascripts/groups_list.js create mode 100644 app/assets/javascripts/integrations/overrides/components/integration_tabs.vue create mode 100644 app/assets/javascripts/issuable/bulk_update_sidebar/index.js delete mode 100644 app/assets/javascripts/issuable/bulk_update_sidebar/init_issue_status_select.js delete mode 100644 app/assets/javascripts/issuable/bulk_update_sidebar/issuable_init_bulk_update_sidebar.js create mode 100644 app/assets/javascripts/issues/create_merge_request_dropdown.js delete mode 100644 app/assets/javascripts/issues/form.js create mode 100644 app/assets/javascripts/issues/index.js delete mode 100644 app/assets/javascripts/issues/init_filtered_search_service_desk.js create mode 100644 app/assets/javascripts/issues/list/components/issue_card_time_info.vue create mode 100644 app/assets/javascripts/issues/list/components/issues_list_app.vue create mode 100644 app/assets/javascripts/issues/list/components/jira_issues_import_status_app.vue create mode 100644 app/assets/javascripts/issues/list/components/new_issue_dropdown.vue create mode 100644 app/assets/javascripts/issues/list/constants.js create mode 100644 app/assets/javascripts/issues/list/eventhub.js create mode 100644 app/assets/javascripts/issues/list/index.js create mode 100644 app/assets/javascripts/issues/list/queries/get_issues.query.graphql create mode 100644 app/assets/javascripts/issues/list/queries/get_issues_counts.query.graphql create mode 100644 app/assets/javascripts/issues/list/queries/get_issues_list_details.query.graphql create mode 100644 app/assets/javascripts/issues/list/queries/issue.fragment.graphql create mode 100644 app/assets/javascripts/issues/list/queries/label.fragment.graphql create mode 100644 app/assets/javascripts/issues/list/queries/milestone.fragment.graphql create mode 100644 app/assets/javascripts/issues/list/queries/reorder_issues.mutation.graphql create mode 100644 app/assets/javascripts/issues/list/queries/search_labels.query.graphql create mode 100644 app/assets/javascripts/issues/list/queries/search_milestones.query.graphql create mode 100644 app/assets/javascripts/issues/list/queries/search_projects.query.graphql create mode 100644 app/assets/javascripts/issues/list/queries/search_users.query.graphql create mode 100644 app/assets/javascripts/issues/list/queries/user.fragment.graphql create mode 100644 app/assets/javascripts/issues/list/utils.js delete mode 100644 app/assets/javascripts/issues/sentry_error_stack_trace/components/sentry_error_stack_trace.vue delete mode 100644 app/assets/javascripts/issues/sentry_error_stack_trace/index.js delete mode 100644 app/assets/javascripts/issues/show.js create mode 100644 app/assets/javascripts/issues/show/components/sentry_error_stack_trace.vue delete mode 100644 app/assets/javascripts/issues/show/incident.js create mode 100644 app/assets/javascripts/issues/show/index.js delete mode 100644 app/assets/javascripts/issues/show/issue.js delete mode 100644 app/assets/javascripts/issues_list/components/issuable.vue delete mode 100644 app/assets/javascripts/issues_list/components/issuables_list_app.vue delete mode 100644 app/assets/javascripts/issues_list/components/issue_card_time_info.vue delete mode 100644 app/assets/javascripts/issues_list/components/issues_list_app.vue delete mode 100644 app/assets/javascripts/issues_list/components/jira_issues_import_status_app.vue delete mode 100644 app/assets/javascripts/issues_list/components/new_issue_dropdown.vue delete mode 100644 app/assets/javascripts/issues_list/constants.js delete mode 100644 app/assets/javascripts/issues_list/eventhub.js delete mode 100644 app/assets/javascripts/issues_list/index.js delete mode 100644 app/assets/javascripts/issues_list/queries/get_issues.query.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/get_issues_counts.query.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/get_issues_list_details.query.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/issue.fragment.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/label.fragment.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/milestone.fragment.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/reorder_issues.mutation.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/search_labels.query.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/search_milestones.query.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/search_projects.query.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/search_users.query.graphql delete mode 100644 app/assets/javascripts/issues_list/queries/user.fragment.graphql delete mode 100644 app/assets/javascripts/issues_list/service_desk_helper.js delete mode 100644 app/assets/javascripts/issues_list/utils.js create mode 100644 app/assets/javascripts/jobs/bridge/graphql/queries/pipeline.query.graphql delete mode 100644 app/assets/javascripts/landing.js create mode 100644 app/assets/javascripts/lib/mermaid.js create mode 100644 app/assets/javascripts/lib/utils/resize_observer.js delete mode 100644 app/assets/javascripts/line_highlighter.js delete mode 100644 app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/empty_state.vue delete mode 100644 app/assets/javascripts/packages_and_registries/container_registry/explorer/components/registry_breadcrumb.vue delete mode 100644 app/assets/javascripts/packages_and_registries/package_registry/components/details/app.vue delete mode 100644 app/assets/javascripts/packages_and_registries/package_registry/pages/details.js create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue create mode 100644 app/assets/javascripts/packages_and_registries/shared/components/persisted_search.vue create mode 100644 app/assets/javascripts/packages_and_registries/shared/components/registry_breadcrumb.vue create mode 100644 app/assets/javascripts/pages/admin/runners/edit/index.js delete mode 100644 app/assets/javascripts/pages/admin/runners/show/index.js create mode 100644 app/assets/javascripts/pages/groups/packages/index.js delete mode 100644 app/assets/javascripts/pages/groups/packages/index/index.js create mode 100644 app/assets/javascripts/pages/groups/settings/access_tokens/index.js create mode 100644 app/assets/javascripts/pages/projects/packages/packages/index.js delete mode 100644 app/assets/javascripts/pages/projects/packages/packages/index/index.js delete mode 100644 app/assets/javascripts/pages/projects/packages/packages/show/index.js create mode 100644 app/assets/javascripts/pipelines/graphql/fragmentTypes.json delete mode 100644 app/assets/javascripts/project_find_file.js delete mode 100644 app/assets/javascripts/project_import.js delete mode 100644 app/assets/javascripts/project_visibility.js create mode 100644 app/assets/javascripts/projects/project_find_file.js create mode 100644 app/assets/javascripts/projects/project_import.js create mode 100644 app/assets/javascripts/projects/project_visibility.js create mode 100644 app/assets/javascripts/projects/star.js create mode 100644 app/assets/javascripts/repository/components/blob_controls.vue create mode 100644 app/assets/javascripts/repository/queries/blob_controls.query.graphql create mode 100644 app/assets/javascripts/repository/queries/path_locks.fragment.graphql create mode 100644 app/assets/javascripts/runner/admin_runner_edit/admin_runner_edit_app.vue create mode 100644 app/assets/javascripts/runner/admin_runner_edit/index.js create mode 100644 app/assets/javascripts/runner/components/runner_header.vue delete mode 100644 app/assets/javascripts/runner/components/runner_type_alert.vue delete mode 100644 app/assets/javascripts/runner/components/stat/runner_online_stat.vue create mode 100644 app/assets/javascripts/runner/components/stat/runner_stats.vue create mode 100644 app/assets/javascripts/runner/components/stat/runner_status_stat.vue create mode 100644 app/assets/javascripts/runner/graphql/get_group_runners_count.query.graphql create mode 100644 app/assets/javascripts/runner/graphql/get_runners_count.query.graphql delete mode 100644 app/assets/javascripts/runner/runner_details/index.js delete mode 100644 app/assets/javascripts/runner/runner_details/runner_details_app.vue delete mode 100644 app/assets/javascripts/runner/runner_details/runner_update_form_utils.js create mode 100644 app/assets/javascripts/runner/runner_update_form_utils.js create mode 100644 app/assets/javascripts/security_configuration/graphql/configure_security_training_providers.mutation.graphql create mode 100644 app/assets/javascripts/security_configuration/resolver.js delete mode 100644 app/assets/javascripts/star.js delete mode 100644 app/assets/javascripts/transfer_edit.js delete mode 100644 app/assets/javascripts/tree.js delete mode 100644 app/assets/javascripts/version_check_image.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/extensions/terraform/index.js create mode 100644 app/assets/javascripts/vue_shared/components/gitlab_version_check.vue delete mode 100644 app/assets/javascripts/vue_shared/issuable/show/constants.js (limited to 'app/assets/javascripts') diff --git a/app/assets/javascripts/admin/users/components/user_actions.vue b/app/assets/javascripts/admin/users/components/user_actions.vue index 567d7151847..f5d21ece138 100644 --- a/app/assets/javascripts/admin/users/components/user_actions.vue +++ b/app/assets/javascripts/admin/users/components/user_actions.vue @@ -109,12 +109,13 @@ export default {
{{ $options.i18n.userAdministration diff --git a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue index 0bdb45d35c9..b3ae671d611 100644 --- a/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue +++ b/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue @@ -31,7 +31,8 @@ export default { props: { groupId: { type: Number, - required: true, + required: false, + default: null, }, groupNamespace: { type: String, @@ -57,6 +58,11 @@ export default { required: false, default: () => [], }, + loadingDefaultProjects: { + type: Boolean, + required: false, + default: false, + }, }, data() { return { @@ -111,6 +117,9 @@ export default { searchTerm() { this.search(); }, + defaultProjects(projects) { + this.selectedProjects = [...projects]; + }, }, mounted() { this.search(); @@ -202,6 +211,7 @@ export default { ref="projectsDropdown" class="dropdown dropdown-projects" toggle-class="gl-shadow-none" + :loading="loadingDefaultProjects" :show-clear-all="hasSelectedProjects" show-highlighted-items-title highlighted-items-title-class="gl-p-3" @@ -209,6 +219,7 @@ export default { @hide="onHide" > - {{ blobSize }} - + + {{ blobSize }} + + {{ __('LFS') }}
diff --git a/app/assets/javascripts/blob/components/blob_header_viewer_switcher.vue b/app/assets/javascripts/blob/components/blob_header_viewer_switcher.vue index a5b594fbd88..b2546d47694 100644 --- a/app/assets/javascripts/blob/components/blob_header_viewer_switcher.vue +++ b/app/assets/javascripts/blob/components/blob_header_viewer_switcher.vue @@ -53,6 +53,8 @@ export default { icon="code" category="primary" variant="default" + class="js-blob-viewer-switch-btn" + data-viewer="simple" @click="switchToViewer($options.SIMPLE_BLOB_VIEWER)" /> diff --git a/app/assets/javascripts/blob/line_highlighter.js b/app/assets/javascripts/blob/line_highlighter.js new file mode 100644 index 00000000000..a1f59aa1b54 --- /dev/null +++ b/app/assets/javascripts/blob/line_highlighter.js @@ -0,0 +1,181 @@ +/* eslint-disable func-names, no-underscore-dangle, no-param-reassign, consistent-return */ + +import $ from 'jquery'; +import { scrollToElement } from '~/lib/utils/common_utils'; + +// LineHighlighter +// +// Handles single- and multi-line selection and highlight for blob views. +// +// +// ### Example Markup +// +//
+//
+//
+// 1 +// 2 +// 3 +// 4 +// 5 +//
+//
+//         
+//           ...
+//           ...
+//           ...
+//           ...
+//           ...
+//         
+//       
+//
+//
+// + +const LineHighlighter = function (options = {}) { + options.highlightLineClass = options.highlightLineClass || 'hll'; + options.fileHolderSelector = options.fileHolderSelector || '.file-holder'; + options.scrollFileHolder = options.scrollFileHolder || false; + options.hash = options.hash || window.location.hash; + + this.options = options; + this._hash = options.hash; + this.highlightLineClass = options.highlightLineClass; + this.setHash = this.setHash.bind(this); + this.highlightLine = this.highlightLine.bind(this); + this.clickHandler = this.clickHandler.bind(this); + this.highlightHash = this.highlightHash.bind(this); + + this.bindEvents(); + this.highlightHash(); +}; + +LineHighlighter.prototype.bindEvents = function () { + const $fileHolder = $(this.options.fileHolderSelector); + + $fileHolder.on('click', 'a[data-line-number]', this.clickHandler); + $fileHolder.on('highlight:line', this.highlightHash); + window.addEventListener('hashchange', (e) => this.highlightHash(e.target.location.hash)); +}; + +LineHighlighter.prototype.highlightHash = function (newHash) { + let range; + if (newHash && typeof newHash === 'string') this._hash = newHash; + + this.clearHighlight(); + + if (this._hash !== '') { + range = this.hashToRange(this._hash); + if (range[0]) { + this.highlightRange(range); + const lineSelector = `#L${range[0]}`; + + scrollToElement(lineSelector, { + // Scroll to the first highlighted line on initial load + // Add an offset of -100 for some context + offset: -100, + }); + } + } +}; + +LineHighlighter.prototype.clickHandler = function (event) { + let range; + event.preventDefault(); + this.clearHighlight(); + const lineNumber = $(event.target).closest('a').data('lineNumber'); + const current = this.hashToRange(this._hash); + if (!(current[0] && event.shiftKey)) { + // If there's no current selection, or there is but Shift wasn't held, + // treat this like a single-line selection. + this.setHash(lineNumber); + return this.highlightLine(lineNumber); + } else if (event.shiftKey) { + if (lineNumber < current[0]) { + range = [lineNumber, current[0]]; + } else { + range = [current[0], lineNumber]; + } + this.setHash(range[0], range[1]); + return this.highlightRange(range); + } +}; + +LineHighlighter.prototype.clearHighlight = function () { + return $(`.${this.highlightLineClass}`).removeClass(this.highlightLineClass); +}; + +// Convert a URL hash String into line numbers +// +// hash - Hash String +// +// Examples: +// +// hashToRange('#L5') # => [5, null] +// hashToRange('#L5-15') # => [5, 15] +// hashToRange('#foo') # => [null, null] +// +// Returns an Array +LineHighlighter.prototype.hashToRange = function (hash) { + // ?L(\d+)(?:-L?(\d+))?$/) + const matches = hash.match(/^#?L(\d+)(?:-L?(\d+))?$/); + if (matches && matches.length) { + const first = parseInt(matches[1], 10); + const last = matches[2] ? parseInt(matches[2], 10) : null; + return [first, last]; + } + return [null, null]; +}; + +// Highlight a single line +// +// lineNumber - Line number to highlight +LineHighlighter.prototype.highlightLine = function (lineNumber) { + return $(`#LC${lineNumber}`).addClass(this.highlightLineClass); +}; + +// Highlight all lines within a range +// +// range - Array containing the starting and ending line numbers +LineHighlighter.prototype.highlightRange = function (range) { + if (range[1]) { + const results = []; + const ref = range[0] <= range[1] ? range : range.reverse(); + + for (let lineNumber = range[0]; lineNumber <= ref[1]; lineNumber += 1) { + results.push(this.highlightLine(lineNumber)); + } + + return results; + } + return this.highlightLine(range[0]); +}; + +// Set the URL hash string +LineHighlighter.prototype.setHash = function (firstLineNumber, lastLineNumber) { + let hash; + if (lastLineNumber) { + hash = `#L${firstLineNumber}-${lastLineNumber}`; + } else { + hash = `#L${firstLineNumber}`; + } + this._hash = hash; + return this.__setLocationHash__(hash); +}; + +// Make the actual hash change in the browser +// +// This method is stubbed in tests. +LineHighlighter.prototype.__setLocationHash__ = function (value) { + return window.history.pushState( + { + url: value, + // We're using pushState instead of assigning location.hash directly to + // prevent the page from scrolling on the hashchange event + }, + document.title, + value, + ); +}; + +export default LineHighlighter; diff --git a/app/assets/javascripts/boards/components/board_card.vue b/app/assets/javascripts/boards/components/board_card.vue index 563bed6a6b8..dc821cb9f58 100644 --- a/app/assets/javascripts/boards/components/board_card.vue +++ b/app/assets/javascripts/boards/components/board_card.vue @@ -72,7 +72,7 @@ export default { data-qa-selector="board_card" :class="{ 'multi-select': multiSelectVisible, - 'user-can-drag': isDraggable, + 'gl-cursor-grab': isDraggable, 'is-disabled': isDisabled, 'is-active': isActive, 'gl-cursor-not-allowed gl-bg-gray-10': item.isLoading, diff --git a/app/assets/javascripts/boards/components/board_content_sidebar.vue b/app/assets/javascripts/boards/components/board_content_sidebar.vue index f89f8e5feb8..156029b62b0 100644 --- a/app/assets/javascripts/boards/components/board_content_sidebar.vue +++ b/app/assets/javascripts/boards/components/board_content_sidebar.vue @@ -6,11 +6,12 @@ import SidebarDropdownWidget from 'ee_else_ce/sidebar/components/sidebar_dropdow import { __, sprintf } from '~/locale'; import BoardSidebarTimeTracker from '~/boards/components/sidebar/board_sidebar_time_tracker.vue'; import BoardSidebarTitle from '~/boards/components/sidebar/board_sidebar_title.vue'; -import { ISSUABLE } from '~/boards/constants'; +import { ISSUABLE, INCIDENT } from '~/boards/constants'; import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import SidebarAssigneesWidget from '~/sidebar/components/assignees/sidebar_assignees_widget.vue'; import SidebarConfidentialityWidget from '~/sidebar/components/confidential/sidebar_confidentiality_widget.vue'; import SidebarDateWidget from '~/sidebar/components/date/sidebar_date_widget.vue'; +import SidebarSeverity from '~/sidebar/components/severity/sidebar_severity.vue'; import SidebarSubscriptionsWidget from '~/sidebar/components/subscriptions/sidebar_subscriptions_widget.vue'; import SidebarTodoWidget from '~/sidebar/components/todo_toggle/sidebar_todo_widget.vue'; import SidebarLabelsWidget from '~/vue_shared/components/sidebar/labels_select_widget/labels_select_root.vue'; @@ -29,6 +30,7 @@ export default { SidebarSubscriptionsWidget, SidebarDropdownWidget, SidebarTodoWidget, + SidebarSeverity, MountingPortal, SidebarWeightWidget: () => import('ee_component/sidebar/components/weight/sidebar_weight_widget.vue'), @@ -69,9 +71,15 @@ export default { isIssuableSidebar() { return this.sidebarType === ISSUABLE; }, + isIncidentSidebar() { + return this.activeBoardItem.type === INCIDENT; + }, showSidebar() { return this.isIssuableSidebar && this.isSidebarOpen; }, + sidebarTitle() { + return this.isIncidentSidebar ? __('Incident details') : __('Issue details'); + }, fullPath() { return this.activeBoardItem?.referencePath?.split('#')[0] || ''; }, @@ -138,7 +146,7 @@ export default { @close="handleClose" >