debian-mirror-gitlab/app/assets/javascripts/boards/components/new_list_dropdown.js

92 lines
2.5 KiB
JavaScript
Raw Normal View History

2019-12-04 20:38:33 +05:30
/* eslint-disable func-names, no-new */
2018-05-09 12:01:36 +05:30
import $ from 'jquery';
2019-12-04 20:38:33 +05:30
import { __ } from '~/locale';
2018-03-27 19:54:05 +05:30
import axios from '~/lib/utils/axios_utils';
2019-12-04 20:38:33 +05:30
import flash from '~/flash';
2018-03-17 18:26:18 +05:30
import CreateLabelDropdown from '../../create_label';
2018-12-13 13:39:08 +05:30
import boardsStore from '../stores/boards_store';
2017-08-17 22:00:37 +05:30
2018-12-13 13:39:08 +05:30
$(document)
.off('created.label')
2019-07-07 11:18:12 +05:30
.on('created.label', (e, label, addNewList) => {
if (!addNewList) {
return;
}
2018-12-13 13:39:08 +05:30
boardsStore.new({
2017-08-17 22:00:37 +05:30
title: label.title,
2018-12-13 13:39:08 +05:30
position: boardsStore.state.lists.length - 2,
list_type: 'label',
label: {
id: label.id,
title: label.title,
color: label.color,
},
});
2017-08-17 22:00:37 +05:30
});
2018-12-13 13:39:08 +05:30
export default function initNewListDropdown() {
$('.js-new-board-list').each(function() {
2019-12-04 20:38:33 +05:30
const $dropdownToggle = $(this);
const $dropdown = $dropdownToggle.closest('.dropdown');
2018-12-13 13:39:08 +05:30
new CreateLabelDropdown(
2019-12-04 20:38:33 +05:30
$dropdown.find('.dropdown-new-label'),
$dropdownToggle.data('namespacePath'),
$dropdownToggle.data('projectPath'),
2018-12-13 13:39:08 +05:30
);
2017-08-17 22:00:37 +05:30
2019-12-04 20:38:33 +05:30
$dropdownToggle.glDropdown({
2017-08-17 22:00:37 +05:30
data(term, callback) {
2019-12-04 20:38:33 +05:30
axios
.get($dropdownToggle.attr('data-list-labels-path'))
.then(({ data }) => callback(data))
.catch(() => {
$dropdownToggle.data('bs.dropdown').hide();
flash(__('Error fetching labels.'));
});
2017-08-17 22:00:37 +05:30
},
2018-12-13 13:39:08 +05:30
renderRow(label) {
2019-02-15 15:39:39 +05:30
const active = boardsStore.findListByLabelId(label.id);
2017-08-17 22:00:37 +05:30
const $li = $('<li />');
const $a = $('<a />', {
2018-12-13 13:39:08 +05:30
class: active ? `is-active js-board-list-${active.id}` : '',
2017-08-17 22:00:37 +05:30
text: label.title,
2018-03-17 18:26:18 +05:30
href: '#',
2017-08-17 22:00:37 +05:30
});
const $labelColor = $('<span />', {
class: 'dropdown-label-box',
2018-03-17 18:26:18 +05:30
style: `background-color: ${label.color}`,
2017-08-17 22:00:37 +05:30
});
return $li.append($a.prepend($labelColor));
},
search: {
2018-03-17 18:26:18 +05:30
fields: ['title'],
2017-08-17 22:00:37 +05:30
},
filterable: true,
selectable: true,
multiSelect: true,
2018-11-08 19:23:39 +05:30
containerSelector: '.js-tab-container-labels .dropdown-page-one .dropdown-content',
2018-12-13 13:39:08 +05:30
clicked(options) {
2017-08-17 22:00:37 +05:30
const { e } = options;
const label = options.selectedObj;
e.preventDefault();
2019-02-15 15:39:39 +05:30
if (!boardsStore.findListByLabelId(label.id)) {
2018-12-13 13:39:08 +05:30
boardsStore.new({
2017-08-17 22:00:37 +05:30
title: label.title,
2018-12-13 13:39:08 +05:30
position: boardsStore.state.lists.length - 2,
2017-08-17 22:00:37 +05:30
list_type: 'label',
label: {
id: label.id,
title: label.title,
2018-03-17 18:26:18 +05:30
color: label.color,
},
2017-08-17 22:00:37 +05:30
});
}
2018-03-17 18:26:18 +05:30
},
2017-08-17 22:00:37 +05:30
});
});
2018-12-13 13:39:08 +05:30
}