Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / misc / states.es6.js
index 3e77b078b6499321fb9dee4e7ab547933b10a35f..b47b90de57e40c12a61a636e777c03fa2f8af298 100644 (file)
@@ -12,7 +12,7 @@
    *
    * @namespace Drupal.states
    */
-  const states = Drupal.states = {
+  const states = {
 
     /**
      * An array of functions that should be postponed.
@@ -20,6 +20,8 @@
     postponed: [],
   };
 
+  Drupal.states = states;
+
   /**
    * Attaches the states.
    *
   Drupal.behaviors.states = {
     attach(context, settings) {
       const $states = $(context).find('[data-drupal-states]');
-      let config;
-      let state;
       const il = $states.length;
       for (let 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],
-            });
-          }
-        }
+        const config = JSON.parse($states[i].getAttribute('data-drupal-states'));
+        Object.keys(config || {}).forEach((state) => {
+          new states.Dependent({
+            element: $($states[i]),
+            state: states.State.sanitize(state),
+            constraints: config[state],
+          });
+        });
       }
 
       // Execute all postponed functions now.
     $.extend(this, { values: {}, oldValue: null }, args);
 
     this.dependees = this.getDependees();
-    for (const selector in this.dependees) {
-      if (this.dependees.hasOwnProperty(selector)) {
-        this.initializeDependee(selector, this.dependees[selector]);
-      }
-    }
+    Object.keys(this.dependees || {}).forEach((selector) => {
+      this.initializeDependee(selector, this.dependees[selector]);
+    });
   };
 
   /**
       // Cache for the states of this dependee.
       this.values[selector] = {};
 
+      // eslint-disable-next-line no-restricted-syntax
       for (const i in dependeeStates) {
         if (dependeeStates.hasOwnProperty(i)) {
           state = dependeeStates[i];
       // bogus, we don't want to end up with an infinite loop.
       else if ($.isPlainObject(constraints)) {
         // This constraint is an object (AND).
+        // eslint-disable-next-line no-restricted-syntax
         for (const n in constraints) {
           if (constraints.hasOwnProperty(n)) {
             result = ternary(result, this.checkConstraints(constraints[n], selector, n));
         trigger.call(window, this.element);
       }
       else {
-        for (const event in trigger) {
-          if (trigger.hasOwnProperty(event)) {
-            this.defaultTrigger(event, trigger[event]);
-          }
-        }
+        Object.keys(trigger || {}).forEach((event) => {
+          this.defaultTrigger(event, trigger[event]);
+        });
       }
 
       // Mark this trigger as initialized for this element.
     /**
      * Original unresolved name.
      */
-    this.pristine = this.name = state;
+    this.pristine = state;
+    this.name = state;
 
     // Normalize the state name.
     let process = true;
     if (e.trigger) {
       $(e.target)
         .prop('disabled', e.value)
-        .closest('.js-form-item, .js-form-submit, .js-form-wrapper').toggleClass('form-disabled', e.value)
-        .find('select, input, textarea').prop('disabled', e.value);
+        .closest('.js-form-item, .js-form-submit, .js-form-wrapper')
+        .toggleClass('form-disabled', e.value)
+        .find('select, input, textarea')
+        .prop('disabled', e.value);
 
       // Note: WebKit nightlies don't reflect that change correctly.
       // See https://bugs.webkit.org/show_bug.cgi?id=23789
         }
       }
       else {
-        $(e.target).removeAttr('required aria-required').closest('.js-form-item, .js-form-wrapper').find('label.js-form-required').removeClass('js-form-required form-required');
+        $(e.target)
+          .removeAttr('required aria-required')
+          .closest('.js-form-item, .js-form-wrapper')
+          .find('label.js-form-required')
+          .removeClass('js-form-required form-required');
       }
     }
   });