diff --git a/app/assets/javascripts/labels_select.js b/app/assets/javascripts/labels_select.js index f57febbda37..b8c8cc91f53 100644 --- a/app/assets/javascripts/labels_select.js +++ b/app/assets/javascripts/labels_select.js @@ -479,24 +479,46 @@ export default class LabelsSelect { // concatenation // see: http://2ality.com/2016/05/template-literal-whitespace.html#joining-arrays + const linkOpenTag = + '?label_name[]=<%- encodeURIComponent(label.title) %>" class="gl-link gl-label-link has-tooltip" <%= linkAttrs %> title="<%= tooltipTitleTemplate({ label, isScopedLabel, enableScopedLabels, escapeStr }) %>">'; + const spanOpenTag = + ''; const labelTemplate = _.template( [ - '?label_name[]=<%- encodeURIComponent(label.title) %>">', - ' title="<%= tooltipTitleTemplate({ label, isScopedLabel, enableScopedLabels, escapeStr }) %>" style="background-color: <%= escapeStr(label.color) %>; color: <%= escapeStr(label.text_color) %>;">', + '', + linkOpenTag, + spanOpenTag, '<%- label.title %>', '', '', + '', ].join(''), ); const infoIconTemplate = _.template( [ - '', - '', + '', + '', '', ].join(''), ); + const scopedLabelTemplate = _.template( + [ + '', + linkOpenTag, + spanOpenTag, + '<%- label.title.slice(0, label.title.lastIndexOf("::")) %>', + '', + '', + '<%- label.title.slice(label.title.lastIndexOf("::") + 2) %>', + '', + '', + '<%= infoIconTemplate({ label, scopedLabelsDocumentationLink, escapeStr }) %>', + '', + ].join(''), + ); + const tooltipTitleTemplate = _.template( [ '<% if (isScopedLabel(label) && enableScopedLabels) { %>', @@ -514,8 +536,7 @@ export default class LabelsSelect { '<% _.each(labels, function(label){ %>', '<% if (isScopedLabel(label) && enableScopedLabels) { %>', '', - '<%= labelTemplate({ label, issueUpdateURL, isScopedLabel, enableScopedLabels, tooltipTitleTemplate, escapeStr, linkAttrs: \'data-html="true"\' }) %>', - '<%= infoIconTemplate({ label, scopedLabelsDocumentationLink, escapeStr }) %>', + '<%= scopedLabelTemplate({ label, issueUpdateURL, isScopedLabel, enableScopedLabels, infoIconTemplate, scopedLabelsDocumentationLink, tooltipTitleTemplate, escapeStr, linkAttrs: \'data-html="true"\' }) %>', '', '<% } else { %>', '<%= labelTemplate({ label, issueUpdateURL, isScopedLabel, enableScopedLabels, tooltipTitleTemplate, escapeStr, linkAttrs: "" }) %>', @@ -528,6 +549,7 @@ export default class LabelsSelect { ...tplData, labelTemplate, infoIconTemplate, + scopedLabelTemplate, tooltipTitleTemplate, isScopedLabel, escapeStr: _.escape, diff --git a/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js b/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js index 7c2008d9edc..d191479b1b4 100644 --- a/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js +++ b/app/assets/javascripts/pages/admin/broadcast_messages/broadcast_message.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import _ from 'underscore'; +import { debounce } from 'lodash'; import axios from '~/lib/utils/axios_utils'; import flash from '~/flash'; import { __ } from '~/locale'; @@ -34,7 +34,7 @@ export default () => { $broadcastMessage.on( 'input', - _.debounce(function onMessageInput() { + debounce(function onMessageInput() { const message = $(this).val(); if (message === '') { $jsBroadcastMessagePreview.text(__('Your message here')); diff --git a/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue b/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue index 527c16860c0..a99fde54981 100644 --- a/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue +++ b/app/assets/javascripts/pages/admin/projects/index/components/delete_project_modal.vue @@ -1,5 +1,5 @@