47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @file
 | 
						|
 * Language admin behavior.
 | 
						|
 */
 | 
						|
 | 
						|
(function ($, Drupal) {
 | 
						|
  /**
 | 
						|
   * Makes language negotiation inherit user interface negotiation.
 | 
						|
   *
 | 
						|
   * @type {Drupal~behavior}
 | 
						|
   *
 | 
						|
   * @prop {Drupal~behaviorAttach} attach
 | 
						|
   *   Attach behavior to language negotiation admin user interface.
 | 
						|
   */
 | 
						|
  Drupal.behaviors.negotiationLanguage = {
 | 
						|
    attach() {
 | 
						|
      const $configForm = $('#language-negotiation-configure-form');
 | 
						|
      const inputSelector = 'input[name$="[configurable]"]';
 | 
						|
      // Given a customization checkbox derive the language type being changed.
 | 
						|
      function toggleTable(checkbox) {
 | 
						|
        const $checkbox = $(checkbox);
 | 
						|
        // Get the language detection type such as Interface text language
 | 
						|
        // detection or Content language detection.
 | 
						|
        $checkbox
 | 
						|
          .closest('.table-language-group')
 | 
						|
          .find('table, .tabledrag-toggle-weight')
 | 
						|
          .toggle($checkbox.prop('checked'));
 | 
						|
      }
 | 
						|
 | 
						|
      // Bind hide/show and rearrange customization checkboxes.
 | 
						|
      $(once('negotiation-language-admin-bind', $configForm)).on(
 | 
						|
        'change',
 | 
						|
        inputSelector,
 | 
						|
        (event) => {
 | 
						|
          toggleTable(event.target);
 | 
						|
        },
 | 
						|
      );
 | 
						|
      // Initially, hide language detection types that are not customized.
 | 
						|
      $configForm
 | 
						|
        .find(`${inputSelector}:not(:checked)`)
 | 
						|
        .each((index, element) => {
 | 
						|
          toggleTable(element);
 | 
						|
        });
 | 
						|
    },
 | 
						|
  };
 | 
						|
})(jQuery, Drupal);
 |