123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- BlazeComponent.extendComponent({
- template: function() {
- return 'listBody';
- },
- mixins: function() {
- return [Mixins.PerfectScrollbar];
- },
- isSelected: function() {
- return Session.equals('currentCard', this.currentData()._id);
- },
- openForm: function(options) {
- options = options || {};
- options.position = options.position || 'top';
- var forms = this.componentChildren('inlinedForm');
- var form = _.find(forms, function(component) {
- return component.data().position === options.position;
- });
- if (! form && forms.length > 0) {
- form = forms[0];
- }
- form.open();
- },
- addCard: function(evt) {
- evt.preventDefault();
- var textarea = $(evt.currentTarget).find('textarea');
- var title = textarea.val();
- var position = Blaze.getData(evt.currentTarget).position;
- var sortIndex;
- if (position === 'top') {
- sortIndex = Utils.getSortIndex(null, this.find('.js-minicard:first'));
- } else if (position === 'bottom') {
- sortIndex = Utils.getSortIndex(this.find('.js-minicard:last'), null);
- }
- // Clear the form in-memory cache
- // var inputCacheKey = "addCard-" + this.listId;
- // InputsCache.set(inputCacheKey, '');
- // title trim if not empty then
- if ($.trim(title)) {
- Cards.insert({
- title: title,
- listId: this.data()._id,
- boardId: this.data().board()._id,
- sort: sortIndex
- }, function(err, _id) {
- // In case the filter is active we need to add the newly
- // inserted card in the list of exceptions -- cards that are
- // not filtered. Otherwise the card will disappear instantly.
- // See https://github.com/libreboard/libreboard/issues/80
- Filter.addException(_id);
- });
- // We keep the form opened, empty it, and scroll to it.
- textarea.val('').focus();
- Utils.Scroll(this.find('.js-minicards')).top(1000, true);
- }
- },
- showNewCardForm: function(value) {
- this.newCardFormIsVisible.set(value);
- },
- scrollToBottom: function() {
- var $container = $(this.firstNode());
- $container.animate({
- scrollTop: $container.height()
- });
- },
- onCreated: function() {
- this.newCardFormIsVisible = new ReactiveVar(true);
- },
- events: function() {
- return [{
- submit: this.addCard,
- 'click .open-card-composer': this.scrollToBottom
- }];
- }
- }).register('listBody');
- BlazeComponent.extendComponent({
- template: function() {
- return 'addCardForm';
- },
- pressKey: function(evt) {
- // Pressing Enter should submit the card
- if (evt.keyCode === 13) {
- evt.preventDefault();
- $(evt.currentTarget).parents('form:first').submit();
- // Pressing Tab should open the form of the next column, and Maj+Tab go
- // in the reverse order
- } else if (evt.keyCode === 9) {
- evt.preventDefault();
- var isReverse = evt.shiftKey;
- var list = $('#js-list-' + this.data().listId);
- var listSelector = '.js-list:not(.js-add-list)';
- var nextList = list[isReverse ? 'prev' : 'next'](listSelector).get(0);
- // If there isn't no next list, loop back to the beginning.
- if (! nextList) {
- nextList = $(listSelector + (isReverse ? ':last' : ':first')).get(0);
- }
- BlazeComponent.getComponentForElement(nextList).openForm({
- position:this.data().position
- });
- }
- },
- events: function() {
- return [{
- keydown: this.pressKey
- }];
- }
- }).register('addCardForm');
|