| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | 
							- import { ReactiveCache } from '/imports/reactiveCache';
 
- let labelColors;
 
- Meteor.startup(() => {
 
-   labelColors = Boards.simpleSchema()._schema['labels.$.color'].allowedValues;
 
- });
 
- BlazeComponent.extendComponent({
 
-   onCreated() {
 
-     this.currentColor = new ReactiveVar(this.data().color);
 
-   },
 
-   labels() {
 
-     return labelColors.map(color => ({ color, name: '' }));
 
-   },
 
-   isSelected(color) {
 
-     return this.currentColor.get() === color;
 
-   },
 
-   events() {
 
-     return [
 
-       {
 
-         'click .js-palette-color'() {
 
-           this.currentColor.set(this.currentData().color);
 
-         },
 
-       },
 
-     ];
 
-   },
 
- }).register('formLabel');
 
- Template.createLabelPopup.helpers({
 
-   // This is the default color for a new label. We search the first color that
 
-   // is not already used in the board (although it's not a problem if two
 
-   // labels have the same color).
 
-   defaultColor() {
 
-     const labels = Utils.getCurrentBoard().labels;
 
-     const usedColors = _.pluck(labels, 'color');
 
-     const availableColors = _.difference(labelColors, usedColors);
 
-     return availableColors.length > 1 ? availableColors[0] : labelColors[0];
 
-   },
 
- });
 
- BlazeComponent.extendComponent({
 
-   onRendered() {
 
-     const itemsSelector = 'li.js-card-label-item:not(.placeholder)';
 
-     const $labels = this.$('.edit-labels-pop-over');
 
-     $labels.sortable({
 
-       connectWith: '.edit-labels-pop-over',
 
-       tolerance: 'pointer',
 
-       appendTo: '.edit-labels-pop-over',
 
-       helper(element, currentItem) {
 
-         let ret = currentItem.clone();
 
-         if (currentItem.closest('.popup-container-depth-0').length == 0)
 
-         { // only set css transform at every sub-popup, not at the main popup
 
-           const content = currentItem.closest('.content')[0]
 
-           const offsetLeft = content.offsetLeft;
 
-           const offsetTop = $('.pop-over > .header').height() * -1;
 
-           ret.css("transform", `translate(${offsetLeft}px, ${offsetTop}px)`);
 
-         }
 
-         return ret;
 
-       },
 
-       distance: 7,
 
-       items: itemsSelector,
 
-       placeholder: 'card-label-wrapper placeholder',
 
-       start(evt, ui) {
 
-         ui.helper.css('z-index', 1000);
 
-         ui.placeholder.height(ui.helper.height());
 
-         EscapeActions.clickExecute(evt.target, 'inlinedForm');
 
-       },
 
-       stop(evt, ui) {
 
-         const newLabelOrderOnlyIds = ui.item.parent().children().toArray().map(_element => Blaze.getData(_element)._id)
 
-         const card = Blaze.getData(this);
 
-         card.board().setNewLabelOrder(newLabelOrderOnlyIds);
 
-       },
 
-     });
 
-     // Disable drag-dropping if the current user is not a board member or is comment only
 
-     this.autorun(() => {
 
-       if (Utils.isTouchScreenOrShowDesktopDragHandles()) {
 
-         $labels.sortable({
 
-           handle: '.label-handle',
 
-         });
 
-       }
 
-     });
 
-   },
 
-   events() {
 
-     return [
 
-       {
 
-         'click .js-select-label'(event) {
 
-           const card = this.data();
 
-           const labelId = this.currentData()._id;
 
-           card.toggleLabel(labelId);
 
-           event.preventDefault();
 
-         },
 
-         'click .js-edit-label': Popup.open('editLabel'),
 
-         'click .js-add-label': Popup.open('createLabel'),
 
-       }
 
-     ];
 
-   }
 
- }).register('cardLabelsPopup');
 
- Template.cardLabelsPopup.events({
 
- });
 
- Template.formLabel.events({
 
-   'click .js-palette-color'(event) {
 
-     const $this = $(event.currentTarget);
 
-     // hide selected ll colors
 
-     $('.js-palette-select').addClass('hide');
 
-     // show select color
 
-     $this.find('.js-palette-select').removeClass('hide');
 
-   },
 
- });
 
- Template.createLabelPopup.events({
 
-   // Create the new label
 
-   'submit .create-label'(event, templateInstance) {
 
-     event.preventDefault();
 
-     const board = Utils.getCurrentBoard();
 
-     const name = templateInstance
 
-       .$('#labelName')
 
-       .val()
 
-       .trim();
 
-     const color = Blaze.getData(templateInstance.find('.fa-check')).color;
 
-     board.addLabel(name, color);
 
-     Popup.back();
 
-   },
 
- });
 
- Template.editLabelPopup.events({
 
-   'click .js-delete-label': Popup.afterConfirm('deleteLabel', function () {
 
-     const board = Utils.getCurrentBoard();
 
-     board.removeLabel(this._id);
 
-     Popup.back(2);
 
-   }),
 
-   'submit .edit-label'(event, templateInstance) {
 
-     event.preventDefault();
 
-     const board = Utils.getCurrentBoard();
 
-     const name = templateInstance
 
-       .$('#labelName')
 
-       .val()
 
-       .trim();
 
-     const color = Blaze.getData(templateInstance.find('.fa-check')).color;
 
-     board.editLabel(this._id, name, color);
 
-     Popup.back();
 
-   },
 
- });
 
- Template.cardLabelsPopup.helpers({
 
-   isLabelSelected(cardId) {
 
-     return _.contains(ReactiveCache.getCard(cardId).labelIds, this._id);
 
-   },
 
- });
 
 
  |