diff --git a/.rubocop_todo/layout/space_inside_parens.yml b/.rubocop_todo/layout/space_inside_parens.yml index bfbbb6352b6..50511bbb1e3 100644 --- a/.rubocop_todo/layout/space_inside_parens.yml +++ b/.rubocop_todo/layout/space_inside_parens.yml @@ -23,21 +23,6 @@ Layout/SpaceInsideParens: - 'ee/app/services/sitemap/create_service.rb' - 'ee/lib/ee/gitlab/auth/ldap/access.rb' - 'ee/lib/gitlab/auth/smartcard/session.rb' - - 'ee/spec/features/account_recovery_regular_check_spec.rb' - - 'ee/spec/features/billings/billing_plans_spec.rb' - - 'ee/spec/features/boards/board_filters_spec.rb' - - 'ee/spec/features/boards/group_boards/board_deletion_spec.rb' - - 'ee/spec/features/boards/user_visits_board_spec.rb' - - 'ee/spec/features/groups/analytics/ci_cd_analytics_spec.rb' - - 'ee/spec/features/groups/issues_spec.rb' - - 'ee/spec/features/groups/iteration_spec.rb' - - 'ee/spec/features/groups/iterations/user_creates_iteration_in_cadence_spec.rb' - - 'ee/spec/features/groups/iterations/user_edits_iteration_cadence_spec.rb' - - 'ee/spec/features/groups/iterations/user_edits_iteration_spec.rb' - - 'ee/spec/features/merge_request/user_edits_multiple_reviewers_mr_spec.rb' - - 'ee/spec/features/merge_requests/user_resets_approvers_spec.rb' - - 'ee/spec/features/merge_requests/user_views_all_merge_requests_spec.rb' - - 'ee/spec/features/merge_trains/two_merge_requests_on_train_spec.rb' - 'ee/spec/finders/ee/alert_management/http_integrations_finder_spec.rb' - 'ee/spec/finders/epics_finder_spec.rb' - 'ee/spec/finders/security/pipeline_vulnerabilities_finder_spec.rb' diff --git a/Gemfile b/Gemfile index 3c00672a582..83008786a20 100644 --- a/Gemfile +++ b/Gemfile @@ -229,7 +229,7 @@ gem 'gitlab-sidekiq-fetcher', '0.8.0', require: 'sidekiq-reliable-fetch' gem 'fugit', '~> 1.2.1' # HTTP requests -gem 'httparty', '~> 0.16.4' +gem 'httparty', '~> 0.20.0' # Colored output to console gem 'rainbow', '~> 3.0' diff --git a/Gemfile.checksum b/Gemfile.checksum index 1bbc982f718..6a68d1a93f3 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -272,7 +272,7 @@ {"name":"http-cookie","version":"1.0.5","platform":"ruby","checksum":"73756d46c7dbdc7023deecdb8a171348ea95a1b99810b31cfe8b4fb4e9a6318f"}, {"name":"http-form_data","version":"2.3.0","platform":"ruby","checksum":"cc4eeb1361d9876821e31d7b1cf0b68f1cf874b201d27903480479d86448a5f3"}, {"name":"http-parser","version":"1.2.3","platform":"ruby","checksum":"414dec1f443d68e1068509f184ee4b93e3442f626645071182ce49bc27db18a3"}, -{"name":"httparty","version":"0.16.4","platform":"ruby","checksum":"62c89d00f5e8933b2d397a49b57deb18ca18e16cb7d862ee4f53b73228dc3d81"}, +{"name":"httparty","version":"0.20.0","platform":"ruby","checksum":"490d2a028a5accc611f1685d479d80ef80b129140d24a93c53c119f578614867"}, {"name":"httpclient","version":"2.8.3","platform":"ruby","checksum":"2951e4991214464c3e92107e46438527d23048e634f3aee91c719e0bdfaebda6"}, {"name":"i18n","version":"1.12.0","platform":"ruby","checksum":"91e3cc1b97616d308707eedee413d82ee021d751c918661fb82152793e64aced"}, {"name":"i18n_data","version":"0.8.0","platform":"ruby","checksum":"92d942cc193dc4a54a95b68f44e52c79e024fa72e09f26a982bc61153b6f0c6c"}, diff --git a/Gemfile.lock b/Gemfile.lock index 7de50d806e2..054b5e81443 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -734,7 +734,7 @@ GEM http-form_data (2.3.0) http-parser (1.2.3) ffi-compiler (>= 1.0, < 2.0) - httparty (0.16.4) + httparty (0.20.0) mime-types (~> 3.0) multi_xml (>= 0.5.2) httpclient (2.8.3) @@ -1666,7 +1666,7 @@ DEPENDENCIES health_check (~> 3.0) html-pipeline (~> 2.13.2) html2text - httparty (~> 0.16.4) + httparty (~> 0.20.0) icalendar invisible_captcha (~> 1.1.0) ipaddr (= 1.2.2) diff --git a/app/assets/javascripts/pipelines/components/test_reports/test_suite_table.vue b/app/assets/javascripts/pipelines/components/test_reports/test_suite_table.vue index 7d0f1ba4b5f..1cd28e027f3 100644 --- a/app/assets/javascripts/pipelines/components/test_reports/test_suite_table.vue +++ b/app/assets/javascripts/pipelines/components/test_reports/test_suite_table.vue @@ -112,21 +112,21 @@ export default { >
{{ __('Suite') }}
-
+
{{ __('Name') }}
-
+
{{ __('Filename') }}
-
+
@@ -156,7 +156,7 @@ export default {
{{ __('Duration') }}
-
+
{{ testCase.formattedTime }}
diff --git a/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue b/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue index 98468583992..c262d65f6ce 100644 --- a/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue +++ b/app/assets/javascripts/sidebar/components/date/sidebar_date_widget.vue @@ -170,7 +170,7 @@ export default { this.$emit('closeForm'); }, openDatePicker() { - this.$refs.datePicker.calendar.show(); + this.$refs.datePicker.show(); }, setFixedDate(isFixed) { const date = this.issuable[dateFields[this.dateType].dateFixed]; diff --git a/app/assets/javascripts/users_select/constants.js b/app/assets/javascripts/users_select/constants.js index 64df1e1748c..6b91d7e7c10 100644 --- a/app/assets/javascripts/users_select/constants.js +++ b/app/assets/javascripts/users_select/constants.js @@ -1,11 +1,3 @@ -export const AJAX_USERS_SELECT_OPTIONS_MAP = { - projectId: 'projectId', - groupId: 'groupId', - showCurrentUser: 'currentUser', - authorId: 'authorId', - skipUsers: 'skipUsers', -}; - export const AJAX_USERS_SELECT_PARAMS_MAP = { project_id: 'projectId', group_id: 'groupId', diff --git a/app/assets/javascripts/users_select/index.js b/app/assets/javascripts/users_select/index.js index 8fc5c354802..a0550737e24 100644 --- a/app/assets/javascripts/users_select/index.js +++ b/app/assets/javascripts/users_select/index.js @@ -1,21 +1,17 @@ -/* eslint-disable func-names, prefer-rest-params, consistent-return, no-shadow, no-self-compare, no-unused-expressions, yoda, prefer-spread, camelcase, no-param-reassign */ +/* eslint-disable func-names, consistent-return, no-shadow, no-self-compare, no-unused-expressions, camelcase, no-param-reassign */ /* global Issuable */ /* global emitSidebarEvent */ import $ from 'jquery'; import { escape, template, uniqBy } from 'lodash'; -import { - AJAX_USERS_SELECT_OPTIONS_MAP, - AJAX_USERS_SELECT_PARAMS_MAP, -} from 'ee_else_ce/users_select/constants'; +import { AJAX_USERS_SELECT_PARAMS_MAP } from 'ee_else_ce/users_select/constants'; import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown'; import { isUserBusy } from '~/set_status_modal/utils'; import { fixTitle, dispose } from '~/tooltips'; import axios from '~/lib/utils/axios_utils'; import { parseBoolean, spriteIcon } from '~/lib/utils/common_utils'; -import { loadCSSFile } from '~/lib/utils/css_utils'; import { s__, __, sprintf } from '~/locale'; -import { getAjaxUsersSelectOptions, getAjaxUsersSelectParams } from './utils'; +import { getAjaxUsersSelectParams } from './utils'; // TODO: remove eventHub hack after code splitting refactor window.emitSidebarEvent = window.emitSidebarEvent || $.noop; @@ -24,9 +20,7 @@ function UsersSelect(currentUser, els, options = {}) { const elsClassName = els?.toString().match('.(.+$)')[1]; const $els = $(els || '.js-user-search'); this.users = this.users.bind(this); - this.user = this.user.bind(this); this.usersPath = '/-/autocomplete/users.json'; - this.userPath = '/-/autocomplete/users/:id.json'; if (currentUser != null) { if (typeof currentUser === 'object') { this.currentUser = currentUser; @@ -36,7 +30,6 @@ function UsersSelect(currentUser, els, options = {}) { } const { handleClick } = options; - const userSelect = this; $els.each((i, dropdown) => { const userSelect = this; @@ -619,156 +612,8 @@ function UsersSelect(currentUser, els, options = {}) { }, }); }); - - if ($('.ajax-users-select').length) { - import(/* webpackChunkName: 'select2' */ 'select2/select2') - .then(() => { - // eslint-disable-next-line promise/no-nesting - loadCSSFile(gon.select2_css_path) - .then(() => { - $('.ajax-users-select').each((i, select) => { - const options = getAjaxUsersSelectOptions($(select), AJAX_USERS_SELECT_OPTIONS_MAP); - options.skipLdap = $(select).hasClass('skip_ldap'); - const showNullUser = $(select).data('nullUser'); - const showAnyUser = $(select).data('anyUser'); - const showEmailUser = $(select).data('emailUser'); - const firstUser = $(select).data('firstUser'); - return $(select).select2({ - placeholder: __('Search for a user'), - multiple: $(select).hasClass('multiselect'), - minimumInputLength: 0, - query(query) { - return userSelect.users(query.term, options, (users) => { - let name; - const data = { - results: users, - }; - if (query.term.length === 0) { - if (firstUser) { - // Move current user to the front of the list - const ref = data.results; - - for (let index = 0, len = ref.length; index < len; index += 1) { - const obj = ref[index]; - if (obj.username === firstUser) { - data.results.splice(index, 1); - data.results.unshift(obj); - break; - } - } - } - if (showNullUser) { - const nullUser = { - name: s__('UsersSelect|Unassigned'), - id: 0, - }; - data.results.unshift(nullUser); - } - if (showAnyUser) { - name = showAnyUser; - if (name === true) { - name = s__('UsersSelect|Any User'); - } - const anyUser = { - name, - id: null, - }; - data.results.unshift(anyUser); - } - } - if ( - showEmailUser && - data.results.length === 0 && - query.term.match(/^[^@]+@[^@]+$/) - ) { - const trimmed = query.term.trim(); - const emailUser = { - name: sprintf(__('Invite "%{trimmed}" by email'), { trimmed }), - username: trimmed, - id: trimmed, - invite: true, - }; - data.results.unshift(emailUser); - } - return query.callback(data); - }); - }, - initSelection() { - const args = 1 <= arguments.length ? [].slice.call(arguments, 0) : []; - return userSelect.initSelection.apply(userSelect, args); - }, - formatResult() { - const args = 1 <= arguments.length ? [].slice.call(arguments, 0) : []; - return userSelect.formatResult.apply(userSelect, args); - }, - formatSelection() { - const args = 1 <= arguments.length ? [].slice.call(arguments, 0) : []; - return userSelect.formatSelection.apply(userSelect, args); - }, - dropdownCssClass: 'ajax-users-dropdown', - // we do not want to escape markup since we are displaying html in results - escapeMarkup(m) { - return m; - }, - }); - }); - }) - .catch(() => {}); - }) - .catch(() => {}); - } } -UsersSelect.prototype.initSelection = function (element, callback) { - const id = $(element).val(); - if (id === '0') { - const nullUser = { - name: s__('UsersSelect|Unassigned'), - }; - return callback(nullUser); - } else if (id !== '') { - return this.user(id, callback); - } -}; - -UsersSelect.prototype.formatResult = function (user) { - let avatar = gon.default_avatar_url; - if (user.avatar_url) { - avatar = user.avatar_url; - } - return ` -
-
- -
- -
- `; -}; - -UsersSelect.prototype.formatSelection = function (user) { - return escape(user.name); -}; - -UsersSelect.prototype.user = function (user_id, callback) { - if (!/^\d+$/.test(user_id)) { - return false; - } - - let url = this.buildUrl(this.userPath); - url = url.replace(':id', user_id); - return axios.get(url).then(({ data }) => { - callback(data); - }); -}; - // Return users list. Filtered by query // Only active users retrieved UsersSelect.prototype.users = function (query, options, callback) { diff --git a/app/assets/javascripts/users_select/utils.js b/app/assets/javascripts/users_select/utils.js index b46fd15fb77..8184e646124 100644 --- a/app/assets/javascripts/users_select/utils.js +++ b/app/assets/javascripts/users_select/utils.js @@ -1,17 +1,3 @@ -/** - * Get options from data attributes on passed `$select`. - * @param {jQuery} $select - * @param {Object} optionsMap e.g. { optionKeyName: 'dataAttributeName' } - */ -export const getAjaxUsersSelectOptions = ($select, optionsMap) => { - return Object.keys(optionsMap).reduce((accumulator, optionKey) => { - const dataKey = optionsMap[optionKey]; - accumulator[optionKey] = $select.data(dataKey); - - return accumulator; - }, {}); -}; - /** * Get query parameters used for users request from passed `options` parameter * @param {Object} options e.g. { currentUserId: 1, fooBar: 'baz' } diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index 1298c1316e2..dd52dc1ca55 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -538,13 +538,15 @@ export default {