| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | BlazeComponent.extendComponent({  customFields() {    return CustomFields.find({      boardIds: {$in: [Session.get('currentBoard')]},    });  },  events() {    return [{      'click .js-open-create-custom-field': Popup.open('createCustomField'),      'click .js-edit-custom-field': Popup.open('editCustomField'),    }];  },}).register('customFieldsSidebar');const CreateCustomFieldPopup = BlazeComponent.extendComponent({  _types: ['text', 'number', 'date', 'dropdown'],  onCreated() {    this.type = new ReactiveVar((this.data().type) ? this.data().type : this._types[0]);    this.dropdownItems = new ReactiveVar((this.data().settings && this.data().settings.dropdownItems) ? this.data().settings.dropdownItems : []);  },  types() {    const currentType = this.data().type;    return this._types.      map((type) => {return {        value: type,        name: TAPi18n.__(`custom-field-${type}`),        selected: type === currentType,      };});  },  isTypeNotSelected(type) {    return this.type.get() !== type;  },  getDropdownItems() {    const items = this.dropdownItems.get();    Array.from(this.findAll('.js-field-settings-dropdown input')).forEach((el, index) => {      //console.log('each item!', index, el.value);      if (!items[index]) items[index] = {        _id: Random.id(6),      };      items[index].name = el.value.trim();    });    return items;  },  getSettings() {    const settings = {};    switch (this.type.get()) {    case 'dropdown': {      const dropdownItems = this.getDropdownItems().filter((item) => !!item.name.trim());      settings.dropdownItems = dropdownItems;      break;    }    }    return settings;  },  events() {    return [{      'change .js-field-type'(evt) {        const value = evt.target.value;        this.type.set(value);      },      'keydown .js-dropdown-item.last'(evt) {        if (evt.target.value.trim() && evt.keyCode === 13) {          const items = this.getDropdownItems();          this.dropdownItems.set(items);          evt.target.value = '';        }      },      'click .js-field-show-on-card'(evt) {        let $target = $(evt.target);        if(!$target.hasClass('js-field-show-on-card')){          $target = $target.parent();        }        $target.find('.materialCheckBox').toggleClass('is-checked');        $target.toggleClass('is-checked');      },      'click .js-field-automatically-on-card'(evt) {        let $target = $(evt.target);        if(!$target.hasClass('js-field-automatically-on-card')){          $target = $target.parent();        }        $target.find('.materialCheckBox').toggleClass('is-checked');        $target.toggleClass('is-checked');      },      'click .js-field-showLabel-on-card'(evt) {        let $target = $(evt.target);        if(!$target.hasClass('js-field-showLabel-on-card')){          $target = $target.parent();        }        $target.find('.materialCheckBox').toggleClass('is-checked');        $target.toggleClass('is-checked');      },      'click .primary'(evt) {        evt.preventDefault();        const data = {          name: this.find('.js-field-name').value.trim(),          type: this.type.get(),          settings: this.getSettings(),          showOnCard: this.find('.js-field-show-on-card.is-checked') !== null,          showLabelOnMiniCard: this.find('.js-field-showLabel-on-card.is-checked') !== null,          automaticallyOnCard: this.find('.js-field-automatically-on-card.is-checked') !== null,        };        // insert or update        if (!this.data()._id) {          data.boardIds = [Session.get('currentBoard')];          CustomFields.insert(data);        } else {          CustomFields.update(this.data()._id, {$set: data});        }        Popup.back();      },      'click .js-delete-custom-field': Popup.afterConfirm('deleteCustomField', function() {        const customField = CustomFields.findOne(this._id);        if (customField.boardIds.length > 1) {          CustomFields.update(customField._id, {            $pull: {              boardIds: Session.get('currentBoard'),            },          });        } else {          CustomFields.remove(customField._id);        }        Popup.close();      }),    }];  },});CreateCustomFieldPopup.register('createCustomFieldPopup');(class extends CreateCustomFieldPopup {  template() {    return 'createCustomFieldPopup';  }}).register('editCustomFieldPopup');/*Template.deleteCustomFieldPopup.events({  'submit'(evt) {    const customFieldId = this._id;    CustomFields.remove(customFieldId);    Popup.close();  }});*/
 |