Sha256: 50cb9fe8efe2e85c9e215ec8ea1e210a089cfea2b1463807851bf9e2bcdf188b

Contents?: true

Size: 1.61 KB

Versions: 4

Compression:

Stored size: 1.61 KB

Contents

/*
---
 
script: Invokable.js
 
description: Makes widget submit into another widget 
 
license: Public domain (http://unlicense.org).

authors: Yaroslaff Fedin
 
requires:
  - LSD.Mixin
 
provides:
  - LSD.Mixin.Invokable
 
...
*/


LSD.Mixin.Invokable = new Class({
  options: {
    chain: {
      feedback: function() {
        return {
          action: 'submit',
          target: this.getSubmissionTarget,
          arguments: this.getSubmissionData,
          priority: -5
        }
      }
    },
    states: Array.object('invoked'),
    events: {
      _invokable: {
        submit: function() {
          this.revoke(true);
        },
        cancel: 'revoke',
        setParent: function(widget) {
          this.invoke(widget)
        },
        unsetParent: 'revoke'
      }
    }
  },
  
  onMix: function() {
    var invoker = this.invoker || this.options.invoker;
    if (invoker) this.invoke(invoker);
  },
  
  invoke: function(invoker) {
    console.error('invoked', invoker.tagName);
    this.invoker = invoker;
    this.fireEvent('invoke', arguments);
    this.fireEvent('register', ['invoker', invoker]);
  },
  
  revoke: function(soft) {
    console.error('revoked');
    var invoker = this.invoker;
    if (soft !== true) this.invoker.uncallChain();
    this.fireEvent('revoke', invoker);
    this.fireEvent('unregister', ['invoker', invoker]);
  },
  
  getInvoker: function() {
    return this.invoker;
  },
  
  getSubmissionTarget: function() {
    return this.getInvoker();
  },
  
  getSubmissionData: function() {
    return this.getData ? this.getData() : null;
  }
});

LSD.Behavior.define(':invokable', 'invokable');

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lsd_rails-0.1.6 Packages/lsd/Source/Mixin/Invokable.js
lsd_rails-0.1.5 Packages/lsd/Source/Mixin/Invokable.js
lsd_rails-0.1.4 Packages/lsd/Source/Mixin/Invokable.js
lsd_rails-0.1.3 Packages/lsd/Source/Mixin/Invokable.js