Sha256: d08cc6140e1144e9ed8983007dae7ea385806bbefe922a3635908d7bfdc9f163

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

/*
---
 
script: Submit.js
 
description: Does a request or navigates url to the link
 
license: Public domain (http://unlicense.org).

authors: Yaroslaff Fedin
 
requires:
  - LSD.Action
 
provides:
  - LSD.Action.Submit
 
...
*/


LSD.Action.Submit = LSD.Action.build({
  fork: true,
  
  enable: function(target, event) {
    if (this.retrieve(target)) return;
    var args = Array.prototype.slice.call(arguments, 1);
    if (target.lsd && !target.submit && this.invoker != target && (!event || event.type != 'click')) {
      if (target.chainPhase == -1 || (target.getCommandAction && target.getCommandAction() == 'submit')) 
        return target.callChain.apply(target, args);
    }
    var method = (target.submit || target.send || target.click);
    var submission = method.apply(target, args);
    if (submission && submission != target) {
      this.store(target, submission);
      var self = this, callback = function() {
        this.removeEvents(events);
        self.eliminate(target);
      };
      var events = { complete: callback, cancel: callback };
      submission.addEvents(events);
    }
    return submission
  },
  
  disable: function(target) {
    var submission = this.retrieve(target);
    if (submission) {
      if (submission !== true && submission.running) submission.cancel();
      this.eliminate(target);
    } else {
      if (target.cancel) return target.cancel.apply(target, Array.prototype.slice.call(arguments, 1));
    }
  },
  
  getState: function(target) {
    var submission = this.retrieve(target);
    return !submission || !(submission !== true || submission.running);
  }
});

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lsd_rails-0.1.2 Packages/lsd/Source/Action/Submit.js
lsd_rails-0.1.1 Packages/lsd/Source/Action/Submit.js
lsd_rails-0.1 Packages/lsd/Source/Action/Submit.js