X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmisc%2Fstates.js;fp=web%2Fcore%2Fmisc%2Fstates.js;h=4fd2052a4398ac58a46b241a1a484686285bfe70;hp=61bbf46c612eb9470d9d7fdb89429d8d6c84ffd0;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/web/core/misc/states.js b/web/core/misc/states.js index 61bbf46c6..4fd2052a4 100644 --- a/web/core/misc/states.js +++ b/web/core/misc/states.js @@ -6,27 +6,30 @@ **/ (function ($, Drupal) { - var states = Drupal.states = { + var states = { postponed: [] }; + Drupal.states = states; + Drupal.behaviors.states = { attach: function attach(context, settings) { var $states = $(context).find('[data-drupal-states]'); - var config = void 0; - var state = void 0; var il = $states.length; + + var _loop = function _loop(i) { + var config = JSON.parse($states[i].getAttribute('data-drupal-states')); + Object.keys(config || {}).forEach(function (state) { + new states.Dependent({ + element: $($states[i]), + state: states.State.sanitize(state), + constraints: config[state] + }); + }); + }; + for (var i = 0; i < il; i++) { - config = JSON.parse($states[i].getAttribute('data-drupal-states')); - for (state in config) { - if (config.hasOwnProperty(state)) { - new states.Dependent({ - element: $($states[i]), - state: states.State.sanitize(state), - constraints: config[state] - }); - } - } + _loop(i); } while (states.postponed.length) { @@ -36,14 +39,14 @@ }; states.Dependent = function (args) { + var _this = this; + $.extend(this, { values: {}, oldValue: null }, args); this.dependees = this.getDependees(); - for (var selector in this.dependees) { - if (this.dependees.hasOwnProperty(selector)) { - this.initializeDependee(selector, this.dependees[selector]); - } - } + Object.keys(this.dependees || {}).forEach(function (selector) { + _this.initializeDependee(selector, _this.dependees[selector]); + }); }; states.Dependent.comparisons = { @@ -185,16 +188,16 @@ states.Trigger.prototype = { initialize: function initialize() { + var _this2 = this; + var trigger = states.Trigger.states[this.state]; if (typeof trigger === 'function') { trigger.call(window, this.element); } else { - for (var event in trigger) { - if (trigger.hasOwnProperty(event)) { - this.defaultTrigger(event, trigger[event]); - } - } + Object.keys(trigger || {}).forEach(function (event) { + _this2.defaultTrigger(event, trigger[event]); + }); } this.element.data('trigger:' + this.state, true); @@ -259,7 +262,8 @@ }; states.State = function (state) { - this.pristine = this.name = state; + this.pristine = state; + this.name = state; var process = true; do {