Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-11-10 21:11:08 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-11-10 21:11:08 +0300
commit4e50b9ed316f3c99693a41274babcd67c63ee640 (patch)
tree21f0f3a7f73a7dd51b06ba62ad9cfa3eaab85c9f /app/assets/javascripts/milestones
parent609943de5e2ee6c3bf0f09d3fb1d5fc38ed5a4ed (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/milestones')
-rw-r--r--app/assets/javascripts/milestones/milestone_select.js273
1 files changed, 0 insertions, 273 deletions
diff --git a/app/assets/javascripts/milestones/milestone_select.js b/app/assets/javascripts/milestones/milestone_select.js
deleted file mode 100644
index d4876c3dbe8..00000000000
--- a/app/assets/javascripts/milestones/milestone_select.js
+++ /dev/null
@@ -1,273 +0,0 @@
-/* eslint-disable one-var, no-self-compare, consistent-return, no-param-reassign, no-shadow */
-/* global Issuable */
-
-import $ from 'jquery';
-import { template, escape } from 'lodash';
-import Api from '~/api';
-import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown';
-import { __, sprintf } from '~/locale';
-import { sortMilestonesByDueDate } from '~/milestones/utils';
-import axios from '~/lib/utils/axios_utils';
-import { timeFor, parsePikadayDate, dateInWords } from '~/lib/utils/datetime_utility';
-
-export default class MilestoneSelect {
- constructor(currentProject, els, options = {}) {
- if (currentProject !== null) {
- this.currentProject =
- typeof currentProject === 'string' ? JSON.parse(currentProject) : currentProject;
- }
-
- MilestoneSelect.init(els, options);
- }
-
- static init(els, options) {
- let $els = $(els);
-
- if (!els) {
- $els = $('.js-milestone-select');
- }
-
- $els.each((i, dropdown) => {
- let milestoneLinkNoneTemplate,
- milestoneLinkTemplate,
- milestoneExpiredLinkTemplate,
- selectedMilestone,
- selectedMilestoneDefault;
- const $dropdown = $(dropdown);
- const issueUpdateURL = $dropdown.data('issueUpdate');
- const showNo = $dropdown.data('showNo');
- const showAny = $dropdown.data('showAny');
- const showMenuAbove = $dropdown.data('showMenuAbove');
- const showUpcoming = $dropdown.data('showUpcoming');
- const showStarted = $dropdown.data('showStarted');
- const useId = $dropdown.data('useId');
- const defaultLabel = $dropdown.data('defaultLabel');
- const defaultNo = $dropdown.data('defaultNo');
- const abilityName = $dropdown.data('abilityName');
- const $selectBox = $dropdown.closest('.selectbox');
- const $block = $selectBox.closest('.block');
- const $sidebarCollapsedValue = $block.find('.sidebar-collapsed-icon');
- const $value = $block.find('.value');
- const $loading = $block.find('.block-loading').addClass('gl-display-none');
- selectedMilestoneDefault = showAny ? '' : null;
- selectedMilestoneDefault =
- showNo && defaultNo ? __('No milestone') : selectedMilestoneDefault;
- selectedMilestone = $dropdown.data('selected') || selectedMilestoneDefault;
-
- if (issueUpdateURL) {
- milestoneLinkTemplate = template(
- '<a href="<%- web_url %>" class="bold has-tooltip" data-container="body" title="<%- remaining %>"><%- title %></a>',
- );
- milestoneExpiredLinkTemplate = template(
- '<a href="<%- web_url %>" class="bold has-tooltip" data-container="body" title="<%- remaining %>"><%- title %> (Past due)</a>',
- );
- milestoneLinkNoneTemplate = `<span class="no-value">${__('None')}</span>`;
- }
- return initDeprecatedJQueryDropdown($dropdown, {
- showMenuAbove,
- data: (term, callback) => {
- let contextId = parseInt($dropdown.get(0).dataset.projectId, 10);
- let getMilestones = Api.projectMilestones.bind(Api);
- const reqParams = { state: 'active', include_parent_milestones: true };
-
- if (term) {
- reqParams.search = term.trim();
- }
-
- if (!contextId) {
- contextId = $dropdown.get(0).dataset.groupId;
- delete reqParams.include_parent_milestones;
- getMilestones = Api.groupMilestones.bind(Api);
- }
-
- // We don't use $.data() as it caches initial value and never updates!
- return getMilestones(contextId, reqParams)
- .then(({ data }) =>
- data
- .map((m) => ({
- ...m,
- // Public API includes `title` instead of `name`.
- name: m.title,
- }))
- .sort(sortMilestonesByDueDate),
- )
- .then((data) => {
- const extraOptions = [];
- if (showAny) {
- extraOptions.push({
- id: null,
- name: null,
- title: __('Any milestone'),
- });
- }
- if (showNo && term.trim() === '') {
- extraOptions.push({
- id: -1,
- name: __('No milestone'),
- title: __('No milestone'),
- });
- }
- if (showUpcoming) {
- extraOptions.push({
- id: -2,
- name: '#upcoming',
- title: __('Upcoming'),
- });
- }
- if (showStarted) {
- extraOptions.push({
- id: -3,
- name: '#started',
- title: __('Started'),
- });
- }
- if (extraOptions.length && data.length) {
- extraOptions.push({ type: 'divider' });
- }
-
- callback(extraOptions.concat(data));
- if (showMenuAbove) {
- $dropdown.data('deprecatedJQueryDropdown').positionMenuAbove();
- }
- $(`[data-milestone-id="${selectedMilestone}"] > a`).addClass('is-active');
- });
- },
- renderRow: (milestone) => {
- const milestoneName = milestone.title || milestone.name;
- let milestoneDisplayName = escape(milestoneName);
-
- if (milestone.expired) {
- milestoneDisplayName = sprintf(__('%{milestone} (expired)'), {
- milestone: milestoneDisplayName,
- });
- }
-
- return `
- <li data-milestone-id="${escape(milestoneName)}">
- <a href='#' class='dropdown-menu-milestone-link'>
- ${milestoneDisplayName}
- </a>
- </li>
- `;
- },
- filterable: true,
- filterRemote: true,
- search: {
- fields: ['title'],
- },
- selectable: true,
- toggleLabel: (selected, el) => {
- if (selected && 'id' in selected && $(el).hasClass('is-active')) {
- return selected.title;
- }
- return defaultLabel;
- },
- defaultLabel,
- fieldName: $dropdown.data('fieldName'),
- text: (milestone) => escape(milestone.title),
- id: (milestone) => {
- if (milestone !== undefined) {
- if (!useId && !$dropdown.is('.js-issuable-form-dropdown')) {
- return milestone.name;
- }
-
- return milestone.id;
- }
- },
- hidden: () => {
- $selectBox.hide();
- // display:block overrides the hide-collapse rule
- return $value.css('display', '');
- },
- opened: (e) => {
- const $el = $(e.currentTarget);
- if (options.handleClick) {
- selectedMilestone = $dropdown[0].dataset.selected || selectedMilestoneDefault;
- }
- $('a.is-active', $el).removeClass('is-active');
- $(`[data-milestone-id="${selectedMilestone}"] > a`, $el).addClass('is-active');
- },
- vue: false,
- clicked: (clickEvent) => {
- const { e } = clickEvent;
- let selected = clickEvent.selectedObj;
-
- if (!selected) return;
-
- if (options.handleClick) {
- e.preventDefault();
- options.handleClick(selected);
- return;
- }
-
- const page = $('body').attr('data-page');
- const isIssueIndex = page === 'projects:issues:index';
- const isMRIndex = page === page && page === 'projects:merge_requests:index';
- const isSelecting = selected.name !== selectedMilestone;
- selectedMilestone = isSelecting ? selected.name : selectedMilestoneDefault;
-
- if (
- $dropdown.hasClass('js-filter-bulk-update') ||
- $dropdown.hasClass('js-issuable-form-dropdown')
- ) {
- e.preventDefault();
- return;
- }
-
- if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {
- return Issuable.filterResults($dropdown.closest('form'));
- } else if ($dropdown.hasClass('js-filter-submit')) {
- return $dropdown.closest('form').submit();
- }
-
- selected = $selectBox.find('input[type="hidden"]').val();
-
- const data = {};
- data[abilityName] = {};
- data[abilityName].milestone_id = selected != null ? selected : null;
- $loading.removeClass('gl-display-none');
- $dropdown.trigger('loading.gl.dropdown');
- return axios
- .put(issueUpdateURL, data)
- .then(({ data }) => {
- $dropdown.trigger('loaded.gl.dropdown');
- $loading.addClass('gl-display-none');
- $selectBox.hide();
- $value.css('display', '');
- if (data.milestone != null) {
- data.milestone.remaining = timeFor(data.milestone.due_date);
- data.milestone.name = data.milestone.title;
- $value.html(
- data.milestone.expired
- ? milestoneExpiredLinkTemplate({
- ...data.milestone,
- remaining: sprintf(__('%{due_date} (Past due)'), {
- due_date: dateInWords(parsePikadayDate(data.milestone.due_date)),
- }),
- })
- : milestoneLinkTemplate(data.milestone),
- );
- return $sidebarCollapsedValue
- .attr(
- 'data-original-title',
- `${data.milestone.name}<br />${data.milestone.remaining}`,
- )
- .find('span')
- .text(data.milestone.title);
- }
- $value.html(milestoneLinkNoneTemplate);
- return $sidebarCollapsedValue
- .attr('data-original-title', __('Milestone'))
- .find('span')
- .text(__('None'));
- })
- .catch(() => {
- $loading.addClass('gl-display-none');
- });
- },
- });
- });
- }
-}
-
-window.MilestoneSelect = MilestoneSelect;