diff options
Diffstat (limited to 'app')
36 files changed, 215 insertions, 30 deletions
diff --git a/app/assets/javascripts/ci/runner/graphql/edit/runner_fields_shared.fragment.graphql b/app/assets/javascripts/ci/runner/graphql/edit/runner_fields_shared.fragment.graphql index 29abddf84f5..d18b80511fb 100644 --- a/app/assets/javascripts/ci/runner/graphql/edit/runner_fields_shared.fragment.graphql +++ b/app/assets/javascripts/ci/runner/graphql/edit/runner_fields_shared.fragment.graphql @@ -10,5 +10,5 @@ fragment RunnerFieldsShared on CiRunner { maximumTimeout tagList createdAt - status(legacyMode: null) + status } diff --git a/app/assets/javascripts/ci/runner/graphql/list/list_item_shared.fragment.graphql b/app/assets/javascripts/ci/runner/graphql/list/list_item_shared.fragment.graphql index 0a449ef0435..4eebcd01be6 100644 --- a/app/assets/javascripts/ci/runner/graphql/list/list_item_shared.fragment.graphql +++ b/app/assets/javascripts/ci/runner/graphql/list/list_item_shared.fragment.graphql @@ -16,7 +16,7 @@ fragment ListItemShared on CiRunner { ...User } contactedAt - status(legacyMode: null) + status jobExecutionStatus userPermissions { updateRunner diff --git a/app/assets/javascripts/ci/runner/graphql/show/runner_details_shared.fragment.graphql b/app/assets/javascripts/ci/runner/graphql/show/runner_details_shared.fragment.graphql index b5689ff7687..bd53fb29bd0 100644 --- a/app/assets/javascripts/ci/runner/graphql/show/runner_details_shared.fragment.graphql +++ b/app/assets/javascripts/ci/runner/graphql/show/runner_details_shared.fragment.graphql @@ -15,7 +15,7 @@ fragment RunnerDetailsShared on CiRunner { jobCount tagList createdAt - status(legacyMode: null) + status contactedAt tokenExpiresAt version diff --git a/app/assets/javascripts/content_editor/components/wrappers/code_block.vue b/app/assets/javascripts/content_editor/components/wrappers/code_block.vue index 55cf38dfcbb..4a3dfe3656c 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/code_block.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/code_block.vue @@ -82,6 +82,7 @@ export default { <node-view-wrapper :class="`content-editor-code-block gl-relative code highlight gl-p-3 ${$options.userColorScheme}`" as="pre" + dir="auto" > <div v-if="node.attrs.showPreview" diff --git a/app/assets/javascripts/content_editor/components/wrappers/details.vue b/app/assets/javascripts/content_editor/components/wrappers/details.vue index aff15ac3e53..e09f2fd1456 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/details.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/details.vue @@ -28,6 +28,6 @@ export default { :class="{ 'is-open': open }" @click="open = !open" ></div> - <node-view-content as="ul" class="details-content" :class="{ 'is-open': open }" /> + <node-view-content as="ul" class="details-content" :class="{ 'is-open': open }" dir="auto" /> </node-view-wrapper> </template> diff --git a/app/assets/javascripts/content_editor/components/wrappers/footnote_definition.vue b/app/assets/javascripts/content_editor/components/wrappers/footnote_definition.vue index 8b7b02605f7..b96b7400d85 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/footnote_definition.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/footnote_definition.vue @@ -21,6 +21,7 @@ export default { data-testid="footnote-label" contenteditable="false" class="gl-display-inline-flex gl-mr-2" + dir="auto" >{{ node.attrs.label }}:</span > <node-view-content /> diff --git a/app/assets/javascripts/content_editor/components/wrappers/table_cell_base.vue b/app/assets/javascripts/content_editor/components/wrappers/table_cell_base.vue index 4d948f4ec05..5624bae34c2 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/table_cell_base.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/table_cell_base.vue @@ -110,6 +110,7 @@ export default { <node-view-wrapper class="gl-relative gl-padding-5 gl-min-w-10" :as="cellType" + dir="auto" @click="hideDropdown" > <span diff --git a/app/assets/javascripts/content_editor/components/wrappers/table_of_contents_heading.vue b/app/assets/javascripts/content_editor/components/wrappers/table_of_contents_heading.vue index edd75d232e8..9f0709ca83a 100644 --- a/app/assets/javascripts/content_editor/components/wrappers/table_of_contents_heading.vue +++ b/app/assets/javascripts/content_editor/components/wrappers/table_of_contents_heading.vue @@ -10,11 +10,11 @@ export default { }; </script> <template> - <li> + <li dir="auto"> <a v-if="heading.text" href="#" @click.prevent> {{ heading.text }} </a> - <ul v-if="heading.subHeadings.length"> + <ul v-if="heading.subHeadings.length" dir="auto"> <table-of-contents-heading v-for="(child, index) in heading.subHeadings" :key="index" diff --git a/app/assets/javascripts/content_editor/extensions/blockquote.js b/app/assets/javascripts/content_editor/extensions/blockquote.js index 9b424ac8367..f5ffc990061 100644 --- a/app/assets/javascripts/content_editor/extensions/blockquote.js +++ b/app/assets/javascripts/content_editor/extensions/blockquote.js @@ -4,6 +4,15 @@ import { getParents } from '~/lib/utils/dom_utils'; import { getMarkdownSource } from '../services/markdown_sourcemap'; export default Blockquote.extend({ + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + addAttributes() { return { ...this.parent?.(), diff --git a/app/assets/javascripts/content_editor/extensions/bullet_list.js b/app/assets/javascripts/content_editor/extensions/bullet_list.js index 8d0faf7a9fe..dfd9cac4c66 100644 --- a/app/assets/javascripts/content_editor/extensions/bullet_list.js +++ b/app/assets/javascripts/content_editor/extensions/bullet_list.js @@ -2,6 +2,15 @@ import { BulletList } from '@tiptap/extension-bullet-list'; import { getMarkdownSource } from '../services/markdown_sourcemap'; export default BulletList.extend({ + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + addAttributes() { return { ...this.parent?.(), diff --git a/app/assets/javascripts/content_editor/extensions/code_block_highlight.js b/app/assets/javascripts/content_editor/extensions/code_block_highlight.js index 1d85bfcc965..8917417e55e 100644 --- a/app/assets/javascripts/content_editor/extensions/code_block_highlight.js +++ b/app/assets/javascripts/content_editor/extensions/code_block_highlight.js @@ -1,6 +1,6 @@ import { lowlight } from 'lowlight/lib/core'; import { CodeBlockLowlight } from '@tiptap/extension-code-block-lowlight'; -import { textblockTypeInputRule } from '@tiptap/core'; +import { mergeAttributes, textblockTypeInputRule } from '@tiptap/core'; import { VueNodeViewRenderer } from '@tiptap/vue-2'; import languageLoader from '../services/code_block_language_loader'; import CodeBlockWrapper from '../components/wrappers/code_block.vue'; @@ -13,6 +13,16 @@ export const tildeInputRegex = /^~~~([a-z]+)?[\s\n]$/; export default CodeBlockLowlight.extend({ isolating: true, exitOnArrowDown: false, + + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + addAttributes() { return { language: { @@ -61,7 +71,7 @@ export default CodeBlockLowlight.extend({ return [ 'pre', { - ...HTMLAttributes, + ...mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), class: `content-editor-code-block ${gon.user_color_scheme} ${HTMLAttributes.class}`, }, ['code', {}, 0], diff --git a/app/assets/javascripts/content_editor/extensions/description_item.js b/app/assets/javascripts/content_editor/extensions/description_item.js index 957fdede27b..06fecf8196d 100644 --- a/app/assets/javascripts/content_editor/extensions/description_item.js +++ b/app/assets/javascripts/content_editor/extensions/description_item.js @@ -5,6 +5,14 @@ export default Node.create({ content: 'block+', defining: true, + addOptions() { + return { + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + addAttributes() { return { isTerm: { @@ -21,7 +29,9 @@ export default Node.create({ renderHTML({ HTMLAttributes: { isTerm, ...HTMLAttributes } }) { return [ 'li', - mergeAttributes(HTMLAttributes, { class: isTerm ? 'dl-term' : 'dl-description' }), + mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { + class: isTerm ? 'dl-term' : 'dl-description', + }), 0, ]; }, diff --git a/app/assets/javascripts/content_editor/extensions/description_list.js b/app/assets/javascripts/content_editor/extensions/description_list.js index 8f5b145cfa3..72c191757d0 100644 --- a/app/assets/javascripts/content_editor/extensions/description_list.js +++ b/app/assets/javascripts/content_editor/extensions/description_list.js @@ -6,12 +6,24 @@ export default Node.create({ group: 'block list', content: 'descriptionItem+', + addOptions() { + return { + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + parseHTML() { return [{ tag: 'dl' }]; }, renderHTML({ HTMLAttributes }) { - return ['ul', mergeAttributes(HTMLAttributes, { class: 'dl-content' }), 0]; + return [ + 'ul', + mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { class: 'dl-content' }), + 0, + ]; }, addInputRules() { diff --git a/app/assets/javascripts/content_editor/extensions/details_content.js b/app/assets/javascripts/content_editor/extensions/details_content.js index fb6c49d91aa..fbe58664a10 100644 --- a/app/assets/javascripts/content_editor/extensions/details_content.js +++ b/app/assets/javascripts/content_editor/extensions/details_content.js @@ -1,4 +1,4 @@ -import { Node } from '@tiptap/core'; +import { Node, mergeAttributes } from '@tiptap/core'; import { PARSE_HTML_PRIORITY_HIGHEST } from '../constants'; export default Node.create({ @@ -6,6 +6,14 @@ export default Node.create({ content: 'block+', defining: true, + addOptions() { + return { + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + parseHTML() { return [ { tag: '*', consuming: false, context: 'details/', priority: PARSE_HTML_PRIORITY_HIGHEST }, @@ -13,7 +21,7 @@ export default Node.create({ }, renderHTML({ HTMLAttributes }) { - return ['li', HTMLAttributes, 0]; + return ['li', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]; }, addKeyboardShortcuts() { diff --git a/app/assets/javascripts/content_editor/extensions/figure.js b/app/assets/javascripts/content_editor/extensions/figure.js index b2076894412..e82c2cb9813 100644 --- a/app/assets/javascripts/content_editor/extensions/figure.js +++ b/app/assets/javascripts/content_editor/extensions/figure.js @@ -1,4 +1,4 @@ -import { Node } from '@tiptap/core'; +import { Node, mergeAttributes } from '@tiptap/core'; export default Node.create({ name: 'figure', @@ -6,11 +6,19 @@ export default Node.create({ group: 'block', defining: true, + addOptions() { + return { + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + parseHTML() { return [{ tag: 'figure' }]; }, renderHTML({ HTMLAttributes }) { - return ['figure', HTMLAttributes, 0]; + return ['figure', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]; }, }); diff --git a/app/assets/javascripts/content_editor/extensions/figure_caption.js b/app/assets/javascripts/content_editor/extensions/figure_caption.js index ffd1b474f03..c08db6d9f4d 100644 --- a/app/assets/javascripts/content_editor/extensions/figure_caption.js +++ b/app/assets/javascripts/content_editor/extensions/figure_caption.js @@ -1,4 +1,4 @@ -import { Node } from '@tiptap/core'; +import { Node, mergeAttributes } from '@tiptap/core'; export default Node.create({ name: 'figureCaption', @@ -6,11 +6,19 @@ export default Node.create({ group: 'block', defining: true, + addOptions() { + return { + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + parseHTML() { return [{ tag: 'figcaption' }]; }, renderHTML({ HTMLAttributes }) { - return ['figcaption', HTMLAttributes, 0]; + return ['figcaption', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]; }, }); diff --git a/app/assets/javascripts/content_editor/extensions/footnote_reference.js b/app/assets/javascripts/content_editor/extensions/footnote_reference.js index ae5b8edc7af..270f0977a7a 100644 --- a/app/assets/javascripts/content_editor/extensions/footnote_reference.js +++ b/app/assets/javascripts/content_editor/extensions/footnote_reference.js @@ -17,6 +17,14 @@ export default Node.create({ selectable: true, + addOptions() { + return { + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + addAttributes() { return { identifier: { @@ -35,6 +43,6 @@ export default Node.create({ }, renderHTML({ HTMLAttributes: { label, ...HTMLAttributes } }) { - return ['sup', mergeAttributes(HTMLAttributes), label]; + return ['sup', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), label]; }, }); diff --git a/app/assets/javascripts/content_editor/extensions/footnotes_section.js b/app/assets/javascripts/content_editor/extensions/footnotes_section.js index 2b2c4177e1d..2fdad39635e 100644 --- a/app/assets/javascripts/content_editor/extensions/footnotes_section.js +++ b/app/assets/javascripts/content_editor/extensions/footnotes_section.js @@ -9,6 +9,14 @@ export default Node.create({ isolating: true, + addOptions() { + return { + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + parseHTML() { return [ { tag: 'section.footnotes', skip: true }, @@ -17,6 +25,12 @@ export default Node.create({ }, renderHTML({ HTMLAttributes }) { - return ['ol', mergeAttributes(HTMLAttributes, { class: 'footnotes gl-font-sm' }), 0]; + return [ + 'ol', + mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { + class: 'footnotes gl-font-sm', + }), + 0, + ]; }, }); diff --git a/app/assets/javascripts/content_editor/extensions/heading.js b/app/assets/javascripts/content_editor/extensions/heading.js index 41903162ba5..8927d7b9c1e 100644 --- a/app/assets/javascripts/content_editor/extensions/heading.js +++ b/app/assets/javascripts/content_editor/extensions/heading.js @@ -2,6 +2,15 @@ import { Heading } from '@tiptap/extension-heading'; import { textblockTypeInputRule } from '@tiptap/core'; export default Heading.extend({ + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + addInputRules() { return this.options.levels.map((level) => { return textblockTypeInputRule({ diff --git a/app/assets/javascripts/content_editor/extensions/list_item.js b/app/assets/javascripts/content_editor/extensions/list_item.js index 72454b0905d..7b9ca4e14c8 100644 --- a/app/assets/javascripts/content_editor/extensions/list_item.js +++ b/app/assets/javascripts/content_editor/extensions/list_item.js @@ -1 +1,12 @@ -export { ListItem as default } from '@tiptap/extension-list-item'; +import ListItem from '@tiptap/extension-list-item'; + +export default ListItem.extend({ + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { + dir: 'auto', + }, + }; + }, +}); diff --git a/app/assets/javascripts/content_editor/extensions/ordered_list.js b/app/assets/javascripts/content_editor/extensions/ordered_list.js index 57d5bd6ebf8..d0b760010de 100644 --- a/app/assets/javascripts/content_editor/extensions/ordered_list.js +++ b/app/assets/javascripts/content_editor/extensions/ordered_list.js @@ -2,6 +2,15 @@ import { OrderedList } from '@tiptap/extension-ordered-list'; import { getMarkdownSource } from '../services/markdown_sourcemap'; export default OrderedList.extend({ + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { + dir: 'auto', + }, + }; + }, + addAttributes() { return { ...this.parent?.(), diff --git a/app/assets/javascripts/content_editor/extensions/paragraph.js b/app/assets/javascripts/content_editor/extensions/paragraph.js index 33bf1c94003..c63b64fd784 100644 --- a/app/assets/javascripts/content_editor/extensions/paragraph.js +++ b/app/assets/javascripts/content_editor/extensions/paragraph.js @@ -1 +1,12 @@ -export { Paragraph as default } from '@tiptap/extension-paragraph'; +import Paragraph from '@tiptap/extension-paragraph'; + +export default Paragraph.extend({ + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { + dir: 'auto', + }, + }; + }, +}); diff --git a/app/assets/javascripts/content_editor/extensions/sourcemap.js b/app/assets/javascripts/content_editor/extensions/sourcemap.js index 54d69d83188..f02d0c2ca52 100644 --- a/app/assets/javascripts/content_editor/extensions/sourcemap.js +++ b/app/assets/javascripts/content_editor/extensions/sourcemap.js @@ -31,6 +31,8 @@ import TableOfContents from './table_of_contents'; import Video from './video'; export default Extension.create({ + name: 'sourcemap', + addGlobalAttributes() { return [ { diff --git a/app/assets/javascripts/content_editor/extensions/task_item.js b/app/assets/javascripts/content_editor/extensions/task_item.js index 6efef3f8198..849fd55034e 100644 --- a/app/assets/javascripts/content_editor/extensions/task_item.js +++ b/app/assets/javascripts/content_editor/extensions/task_item.js @@ -4,8 +4,9 @@ import { PARSE_HTML_PRIORITY_HIGHEST } from '../constants'; export default TaskItem.extend({ addOptions() { return { + ...this.parent?.(), nested: true, - HTMLAttributes: {}, + HTMLAttributes: { dir: 'auto' }, }; }, diff --git a/app/assets/javascripts/content_editor/extensions/task_list.js b/app/assets/javascripts/content_editor/extensions/task_list.js index 72c6e020102..01e5bddb97a 100644 --- a/app/assets/javascripts/content_editor/extensions/task_list.js +++ b/app/assets/javascripts/content_editor/extensions/task_list.js @@ -4,6 +4,13 @@ import { PARSE_HTML_PRIORITY_HIGHEST } from '../constants'; import { getMarkdownSource } from '../services/markdown_sourcemap'; export default TaskList.extend({ + addOptions() { + return { + ...this.parent?.(), + HTMLAttributes: { dir: 'auto' }, + }; + }, + addAttributes() { return { numeric: { @@ -33,6 +40,10 @@ export default TaskList.extend({ }, renderHTML({ HTMLAttributes: { numeric, ...HTMLAttributes } }) { - return [numeric ? 'ol' : 'ul', mergeAttributes(HTMLAttributes, { 'data-type': 'taskList' }), 0]; + return [ + numeric ? 'ol' : 'ul', + mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { 'data-type': 'taskList' }), + 0, + ]; }, }); diff --git a/app/assets/javascripts/integrations/index/components/integrations_table.vue b/app/assets/javascripts/integrations/index/components/integrations_table.vue index 439c243f418..59a29f81727 100644 --- a/app/assets/javascripts/integrations/index/components/integrations_table.vue +++ b/app/assets/javascripts/integrations/index/components/integrations_table.vue @@ -2,6 +2,7 @@ import { GlIcon, GlLink, GlTable, GlTooltipDirective } from '@gitlab/ui'; import { sprintf, s__, __ } from '~/locale'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; +import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; export default { components: { @@ -13,6 +14,7 @@ export default { directives: { GlTooltip: GlTooltipDirective, }, + mixins: [glFeatureFlagsMixin()], props: { integrations: { type: Array, @@ -55,6 +57,12 @@ export default { }, ]; }, + filteredIntegrations() { + return this.integrations.filter( + (integration) => + !(integration.name === 'prometheus' && this.glFeatures.removeMonitorMetrics), + ); + }, }, methods: { getStatusTooltipTitle(integration) { @@ -67,7 +75,7 @@ export default { </script> <template> - <gl-table :items="integrations" :fields="fields" :empty-text="emptyText" show-empty fixed> + <gl-table :items="filteredIntegrations" :fields="fields" :empty-text="emptyText" show-empty fixed> <template #cell(active)="{ item }"> <gl-icon v-if="item.active" diff --git a/app/assets/javascripts/lib/utils/text_utility.js b/app/assets/javascripts/lib/utils/text_utility.js index 1bed38b7dbe..963041dd5d0 100644 --- a/app/assets/javascripts/lib/utils/text_utility.js +++ b/app/assets/javascripts/lib/utils/text_utility.js @@ -483,7 +483,7 @@ export const markdownConfig = { 'ul', 'var', ], - ALLOWED_ATTR: ['class', 'style', 'href', 'src'], + ALLOWED_ATTR: ['class', 'style', 'href', 'src', 'dir'], ALLOW_DATA_ATTR: false, }; diff --git a/app/assets/javascripts/notes/utils.js b/app/assets/javascripts/notes/utils.js index 9a1323cdaf2..ed1c80e7a6e 100644 --- a/app/assets/javascripts/notes/utils.js +++ b/app/assets/javascripts/notes/utils.js @@ -1,4 +1,5 @@ import { marked } from 'marked'; +import markedBidi from 'marked-bidi'; import { sanitize } from '~/lib/dompurify'; import { markdownConfig } from '~/lib/utils/text_utility'; @@ -13,6 +14,8 @@ export const trackToggleTimelineView = (enabled) => ({ property: enabled, }); +marked.use(markedBidi()); + export const renderMarkdown = (rawMarkdown) => { return sanitize(marked(rawMarkdown), markdownConfig); }; diff --git a/app/assets/javascripts/pipelines/components/header_component.vue b/app/assets/javascripts/pipelines/components/header_component.vue index a36d5d9b58f..065e40bd3ea 100644 --- a/app/assets/javascripts/pipelines/components/header_component.vue +++ b/app/assets/javascripts/pipelines/components/header_component.vue @@ -16,6 +16,7 @@ import { DELETE_FAILURE, DEFAULT, BUTTON_TOOLTIP_RETRY, + BUTTON_TOOLTIP_CANCEL, } from '../constants'; import cancelPipelineMutation from '../graphql/mutations/cancel_pipeline.mutation.graphql'; import deletePipelineMutation from '../graphql/mutations/delete_pipeline.mutation.graphql'; @@ -29,6 +30,7 @@ const POLL_INTERVAL = 10000; export default { name: 'PipelineHeaderSection', BUTTON_TOOLTIP_RETRY, + BUTTON_TOOLTIP_CANCEL, pipelineCancel: 'pipelineCancel', pipelineRetry: 'pipelineRetry', finishedStatuses: ['FAILED', 'SUCCESS', 'CANCELED'], @@ -275,6 +277,9 @@ export default { <gl-button v-if="canCancelPipeline" + v-gl-tooltip + :aria-label="$options.BUTTON_TOOLTIP_CANCEL" + :title="$options.BUTTON_TOOLTIP_CANCEL" :loading="isCanceling" :disabled="isCanceling" class="gl-ml-3" @@ -282,7 +287,7 @@ export default { data-testid="cancelPipeline" @click="cancelPipeline()" > - {{ __('Cancel running') }} + {{ __('Cancel pipeline') }} </gl-button> <gl-button diff --git a/app/assets/javascripts/pipelines/constants.js b/app/assets/javascripts/pipelines/constants.js index abeeea1f888..d092c3ca630 100644 --- a/app/assets/javascripts/pipelines/constants.js +++ b/app/assets/javascripts/pipelines/constants.js @@ -79,7 +79,7 @@ export const PipelineKeyOptions = [ export const TOAST_MESSAGE = s__('Pipeline|Creating pipeline.'); export const BUTTON_TOOLTIP_RETRY = __('Retry all failed or cancelled jobs'); -export const BUTTON_TOOLTIP_CANCEL = __('Cancel'); +export const BUTTON_TOOLTIP_CANCEL = __('Cancel the running pipeline'); export const DEFAULT_FIELDS = [ { diff --git a/app/assets/javascripts/super_sidebar/components/menu_section.vue b/app/assets/javascripts/super_sidebar/components/menu_section.vue index 5de6e04d827..b57a4e3013c 100644 --- a/app/assets/javascripts/super_sidebar/components/menu_section.vue +++ b/app/assets/javascripts/super_sidebar/components/menu_section.vue @@ -30,6 +30,11 @@ export default { required: false, default: 'div', }, + collectionStyle: { + type: Boolean, + required: false, + default: false, + }, }, data() { return { @@ -89,7 +94,13 @@ export default { </slot> </span> - <span class="gl-pr-3 gl-text-gray-900 gl-truncate-end"> + <span + class="gl-pr-3 gl-truncate-end gl-text-gray-900" + :class="{ + 'gl-font-sm gl-font-weight-semibold': collectionStyle, + }" + data-testid="section-title" + > {{ item.title }} </span> diff --git a/app/assets/javascripts/super_sidebar/components/pinned_section.vue b/app/assets/javascripts/super_sidebar/components/pinned_section.vue index 4fc86e41ef2..93d9cf71a18 100644 --- a/app/assets/javascripts/super_sidebar/components/pinned_section.vue +++ b/app/assets/javascripts/super_sidebar/components/pinned_section.vue @@ -70,6 +70,7 @@ export default { :item="sectionItem" :expanded="expanded" :separated="true" + collection-style @collapse-toggle="expanded = !expanded" > <draggable diff --git a/app/assets/javascripts/super_sidebar/components/sidebar_menu.vue b/app/assets/javascripts/super_sidebar/components/sidebar_menu.vue index 12abd727ef0..055886621f1 100644 --- a/app/assets/javascripts/super_sidebar/components/sidebar_menu.vue +++ b/app/assets/javascripts/super_sidebar/components/sidebar_menu.vue @@ -150,6 +150,7 @@ export default { v-for="item in nonStaticItems" :key="item.id" :item="item" + :collection-style="supportsPins" tag="li" @pin-add="createPin" @pin-remove="destroyPin" diff --git a/app/controllers/concerns/integrations/actions.rb b/app/controllers/concerns/integrations/actions.rb index 7bebafae0fd..c0816c2fe9c 100644 --- a/app/controllers/concerns/integrations/actions.rb +++ b/app/controllers/concerns/integrations/actions.rb @@ -8,6 +8,9 @@ module Integrations::Actions include IntegrationsHelper before_action :integration, only: [:edit, :update, :overrides, :test] + before_action :render_404, only: :edit, if: -> do + integration.to_param == 'prometheus' && Feature.enabled?(:remove_monitor_metrics) + end urgency :low, [:test] end diff --git a/app/controllers/projects/settings/integrations_controller.rb b/app/controllers/projects/settings/integrations_controller.rb index 16c1373df2b..a0e72fb1687 100644 --- a/app/controllers/projects/settings/integrations_controller.rb +++ b/app/controllers/projects/settings/integrations_controller.rb @@ -25,6 +25,7 @@ module Projects end def edit + render_404 if integration.to_param == 'prometheus' && Feature.enabled?(:remove_monitor_metrics) end def update diff --git a/app/views/projects/settings/integrations/_form.html.haml b/app/views/projects/settings/integrations/_form.html.haml index de5c63cc7fd..97d90976f18 100644 --- a/app/views/projects/settings/integrations/_form.html.haml +++ b/app/views/projects/settings/integrations/_form.html.haml @@ -21,6 +21,5 @@ = render 'shared/integration_settings', integration: integration - if lookup_context.template_exists?('show', "shared/integrations/#{integration.to_param}", true) - - if !(integration.to_param == 'prometheus' && Feature.enabled?(:remove_monitor_metrics)) - %hr - = render "shared/integrations/#{integration.to_param}/show", integration: integration + %hr + = render "shared/integrations/#{integration.to_param}/show", integration: integration |