Initial Drupal 11 with DDEV setup
This commit is contained in:
		
							
								
								
									
										82
									
								
								web/core/modules/system/js/system.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								web/core/modules/system/js/system.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,82 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @file
 | 
			
		||||
 * System behaviors.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
(function ($, Drupal, drupalSettings) {
 | 
			
		||||
  // Cache IDs in an array for ease of use.
 | 
			
		||||
  const ids = [];
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Attaches field copy behavior from input fields to other input fields.
 | 
			
		||||
   *
 | 
			
		||||
   * When a field is filled out, apply its value to other fields that will
 | 
			
		||||
   * likely use the same value. In the installer this is used to populate the
 | 
			
		||||
   * administrator email address with the same value as the site email address.
 | 
			
		||||
   *
 | 
			
		||||
   * @type {Drupal~behavior}
 | 
			
		||||
   *
 | 
			
		||||
   * @prop {Drupal~behaviorAttach} attach
 | 
			
		||||
   *   Attaches the field copy behavior to an input field.
 | 
			
		||||
   */
 | 
			
		||||
  Drupal.behaviors.copyFieldValue = {
 | 
			
		||||
    attach(context) {
 | 
			
		||||
      // List of fields IDs on which to bind the event listener.
 | 
			
		||||
      // Create an array of IDs to use with jQuery.
 | 
			
		||||
      Object.keys(drupalSettings.copyFieldValue || {}).forEach((element) => {
 | 
			
		||||
        ids.push(element);
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      if (ids.length) {
 | 
			
		||||
        // Listen to value:copy events on all dependent fields.
 | 
			
		||||
        // We have to use body and not document because of the way jQuery events
 | 
			
		||||
        // bubble up the DOM tree.
 | 
			
		||||
        $(once('copy-field-values', 'body')).on(
 | 
			
		||||
          'value:copy',
 | 
			
		||||
          this.valueTargetCopyHandler,
 | 
			
		||||
        );
 | 
			
		||||
        // Listen on all source elements.
 | 
			
		||||
        $(once('copy-field-values', `#${ids.join(', #')}`)).on(
 | 
			
		||||
          'blur',
 | 
			
		||||
          this.valueSourceBlurHandler,
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    detach(context, settings, trigger) {
 | 
			
		||||
      if (trigger === 'unload' && ids.length) {
 | 
			
		||||
        $(once.remove('copy-field-values', 'body')).off('value:copy');
 | 
			
		||||
        $(once.remove('copy-field-values', `#${ids.join(', #')}`)).off('blur');
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Event handler that fill the target element with the specified value.
 | 
			
		||||
     *
 | 
			
		||||
     * @param {jQuery.Event} e
 | 
			
		||||
     *   Event object.
 | 
			
		||||
     * @param {string} value
 | 
			
		||||
     *   Custom value from jQuery trigger.
 | 
			
		||||
     */
 | 
			
		||||
    valueTargetCopyHandler(e, value) {
 | 
			
		||||
      const { target } = e;
 | 
			
		||||
      if (target.value === '') {
 | 
			
		||||
        target.value = value;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Handler for a Blur event on a source field.
 | 
			
		||||
     *
 | 
			
		||||
     * This event handler will trigger a 'value:copy' event on all dependent
 | 
			
		||||
     * fields.
 | 
			
		||||
     *
 | 
			
		||||
     * @param {jQuery.Event} e
 | 
			
		||||
     *   The event triggered.
 | 
			
		||||
     */
 | 
			
		||||
    valueSourceBlurHandler(e) {
 | 
			
		||||
      const { value } = e.target;
 | 
			
		||||
      const targetIds = drupalSettings.copyFieldValue[e.target.id];
 | 
			
		||||
      $(`#${targetIds.join(', #')}`).trigger('value:copy', value);
 | 
			
		||||
    },
 | 
			
		||||
  };
 | 
			
		||||
})(jQuery, Drupal, drupalSettings);
 | 
			
		||||
		Reference in New Issue
	
	Block a user