59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @file
							 | 
						||
| 
								 | 
							
								 * Maintains and deprecates Dialog jQuery events.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(function ($, Drupal, once) {
							 | 
						||
| 
								 | 
							
								  if (once('drupal-dialog-deprecation-listener', 'html').length) {
							 | 
						||
| 
								 | 
							
								    const eventSpecial = {
							 | 
						||
| 
								 | 
							
								      handle($event) {
							 | 
						||
| 
								 | 
							
								        const $element = $($event.target);
							 | 
						||
| 
								 | 
							
								        const event = $event.originalEvent;
							 | 
						||
| 
								 | 
							
								        const dialog = event.dialog;
							 | 
						||
| 
								 | 
							
								        const dialogArguments = [$event, dialog, $element, event?.settings];
							 | 
						||
| 
								 | 
							
								        $event.handleObj.handler.apply(this, dialogArguments);
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $.event.special['dialog:beforecreate'] = eventSpecial;
							 | 
						||
| 
								 | 
							
								    $.event.special['dialog:aftercreate'] = eventSpecial;
							 | 
						||
| 
								 | 
							
								    $.event.special['dialog:beforeclose'] = eventSpecial;
							 | 
						||
| 
								 | 
							
								    $.event.special['dialog:afterclose'] = eventSpecial;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const listenDialogEvent = (event) => {
							 | 
						||
| 
								 | 
							
								      const windowEvents = $._data(window, 'events');
							 | 
						||
| 
								 | 
							
								      const isWindowHasDialogListener = windowEvents[event.type];
							 | 
						||
| 
								 | 
							
								      if (isWindowHasDialogListener) {
							 | 
						||
| 
								 | 
							
								        Drupal.deprecationError({
							 | 
						||
| 
								 | 
							
								          message: `jQuery event ${event.type} is deprecated in 10.3.0 and is removed from Drupal:12.0.0. See https://www.drupal.org/node/3422670`,
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [
							 | 
						||
| 
								 | 
							
								      'dialog:beforecreate',
							 | 
						||
| 
								 | 
							
								      'dialog:aftercreate',
							 | 
						||
| 
								 | 
							
								      'dialog:beforeclose',
							 | 
						||
| 
								 | 
							
								      'dialog:afterclose',
							 | 
						||
| 
								 | 
							
								    ].forEach((e) => window.addEventListener(e, listenDialogEvent));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    window.addEventListener('dialog:beforecreate', (event) => {
							 | 
						||
| 
								 | 
							
								      const dialog = event.target;
							 | 
						||
| 
								 | 
							
								      $(dialog).on('dialogButtonsChange.dialogDeprecation', (e) => {
							 | 
						||
| 
								 | 
							
								        // If triggered by jQuery.
							 | 
						||
| 
								 | 
							
								        if (!e?.originalEvent) {
							 | 
						||
| 
								 | 
							
								          Drupal.deprecationError({
							 | 
						||
| 
								 | 
							
								            message: `jQuery event dialogButtonsChange is deprecated in 11.2.0 and is removed from Drupal:12.0.0. See https://www.drupal.org/node/3464202`,
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								          dialog.dispatchEvent(new CustomEvent('dialogButtonsChange'));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    window.addEventListener('dialog:beforeclose', (event) => {
							 | 
						||
| 
								 | 
							
								      const dialog = event.target;
							 | 
						||
| 
								 | 
							
								      $(dialog).off(`dialogButtonsChange.dialogDeprecation`);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})(jQuery, Drupal, once);
							 |