Sha256: 65768adf5bb4685dd6a7ffddbee5171de2bd25e6e6cc50a44e28e41f218ce2be

Contents?: true

Size: 1.91 KB

Versions: 12

Compression:

Stored size: 1.91 KB

Contents

(function() {
  "use strict";

  App.SaveButtonComponent = Ember.Component.extend({
    attributeBindings: ['href'],
    classNames: ['save-button'],
    classNameBindings: ['disabled', 'isConfirming:confirm', 'isSaving:saving', 'isSaved:saved', 'isError:error'],
    href: '#',
    isDisabled: false,
    isConfirming: false,
    isSaving: false,
    isSaved: false,
    isError: false,
    tagName: 'a',
    
    click: function(event) {
      if (this.get('isSaving') || this.get('isDisabled')) {
        return false;
      }
      
      if (this.get('confirm')) {
        if (!this.get('isConfirming')) {
          this.set('isConfirming', true);
          return false;
        } else {
          this.set('isConfirming', false);
          if ($(event.target).hasClass('no')) {
            return false;
          }
        }
      }
      
      var defer = Ember.RSVP.defer(),
          self = this;
      
      defer.promise.then(function() {
        if (self && !self.isDestroyed) {
          self.set('isSaved', true);
          self.set('isSaving', false);
        }
        Ember.run.later(function() {
          if (self && !self.isDestroyed) {
            self.set('isSaved', false);
          }
        }, 800);
      }, function() {
        if (self && !self.isDestroyed) {
          self.set('isError', true);
          self.set('isSaving', false);
        }
        Ember.run.later(function() {
          if (self && !self.isDestroyed) {
            self.set('isError', false);
          }
        }, 800);
      });
      
      this.set('isSaving', true);
      this.sendAction('action', defer);
      
      return false;
    },
    
    disabled: function() {
      if (this.get('isSaving') ||
          this.get('isSaved')  ||
          this.get('isError')
      ) {
        return false;
      } else {
        return this.get('isDisabled');
      }
    }.property('isDisabled', 'isSaving', 'isSaved', 'isError')
  });
  
})();

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
blogelator-0.2.5 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.2.4 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.2.3 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.2.2 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.2.1 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.1.6 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.1.5 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.1.4 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.1.3 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.1.2 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.1.1 app/assets/javascripts/blogelator/components/save_button_component.js
blogelator-0.1.0 app/assets/javascripts/blogelator/components/save_button_component.js