Initial Drupal 11 with DDEV setup
This commit is contained in:
		
							
								
								
									
										53
									
								
								web/core/modules/navigation/js/toolbar-dropdown.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								web/core/modules/navigation/js/toolbar-dropdown.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
			
		||||
/* cspell:ignore uidom */
 | 
			
		||||
((Drupal, once, { computePosition, offset, shift, flip }) => {
 | 
			
		||||
  /**
 | 
			
		||||
   * Attaches the dropdown behavior to all required triggers.
 | 
			
		||||
   *
 | 
			
		||||
   * @type {Drupal~behavior}
 | 
			
		||||
   *
 | 
			
		||||
   * @prop {Drupal~behaviorAttach} attach
 | 
			
		||||
   *   Attaches the dropdown behavior.
 | 
			
		||||
   */
 | 
			
		||||
  Drupal.behaviors.dropdownInit = {
 | 
			
		||||
    attach: (context) => {
 | 
			
		||||
      once('dropdown-trigger', '[data-drupal-dropdown]', context).forEach(
 | 
			
		||||
        (trigger) => {
 | 
			
		||||
          const dropdown = trigger.nextElementSibling;
 | 
			
		||||
 | 
			
		||||
          const updatePosition = () => {
 | 
			
		||||
            computePosition(trigger, dropdown, {
 | 
			
		||||
              strategy: 'fixed',
 | 
			
		||||
              placement: trigger.dataset.drupalDropdownPosition || 'bottom',
 | 
			
		||||
              middleware: [
 | 
			
		||||
                flip({ padding: 16 }),
 | 
			
		||||
                offset(6),
 | 
			
		||||
                shift({ padding: 16 }),
 | 
			
		||||
              ],
 | 
			
		||||
            }).then(({ x, y }) => {
 | 
			
		||||
              Object.assign(dropdown.style, {
 | 
			
		||||
                left: `${x}px`,
 | 
			
		||||
                top: `${y}px`,
 | 
			
		||||
              });
 | 
			
		||||
            });
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          trigger.addEventListener('click', (e) => {
 | 
			
		||||
            updatePosition();
 | 
			
		||||
            trigger.setAttribute(
 | 
			
		||||
              'aria-expanded',
 | 
			
		||||
              e.currentTarget.getAttribute('aria-expanded') === 'false',
 | 
			
		||||
            );
 | 
			
		||||
          });
 | 
			
		||||
 | 
			
		||||
          // Event listener to close dropdown when clicking outside
 | 
			
		||||
          document.addEventListener('click', (e) => {
 | 
			
		||||
            const isButtonClicked = trigger.contains(e.target);
 | 
			
		||||
            if (!isButtonClicked) {
 | 
			
		||||
              trigger.setAttribute('aria-expanded', 'false');
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
        },
 | 
			
		||||
      );
 | 
			
		||||
    },
 | 
			
		||||
  };
 | 
			
		||||
})(Drupal, once, FloatingUIDOM);
 | 
			
		||||
		Reference in New Issue
	
	Block a user