MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* Das folgende JavaScript wird für alle Benutzer geladen. */
/* Das folgende JavaScript wird für alle Benutzer geladen. */
/*
* Dialog Javascript for
* Vorlage:DialogButton
*
*
*/
(function(){
(function(){
   const run = () => {
  /* add dialog opener event handler */
     document.querySelectorAll('[data-zum-toggle-target]').forEach((elem) => {
   const run = function(){
       const target = elem.dataSet.zumToggleTarget;
     document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
       if(!target){ return; }
      if(elem.dataset.dialogOpenerAdded === 'true') { return; }
       elem.addEventListener('click', (ev) => {
 
         document.querySelectorAll(target).forEach((tElem) => {
 
          if (tElem.dataSet.zumToggleVisible) {
       var dialogId = elem.dataset.dialogOpenerId;
            tElem.dataSet.zumToggleVisible = null;
       var dialog = document.getElementById(dialogId);
          } else {
 
            tElem.dataSet.zumToggleVisible = true;
      elem.dataset.dialogOpenerAdded = 'true';
          }
       elem.addEventListener('click', function(ev) {
         });
         dialog.showModal();
        ev.stopPropagation();
         return false;
       });
       });
     });
     });
   }
   };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
    /* close on click outside of dialog content */
    const run = function(){
    document.querySelectorAll('dialog.zum-dialog').forEach(function(elem){
      if(elem.dataset.dialogCloseonBackdropAdded === 'true') { return; }
      elem.dataset.dialogCloseonBackdropAdded = 'true';


   if (document.readyState === "loading") {
      elem.addEventListener('mousedown', function(ev){
     document.addEventListener("DOMContentLoaded", run);
        if(ev.target !== elem){return true;}
   } else {
        var rect = ev.target.getBoundingClientRect();
    run();
        if(ev.x >= rect.left
  }
        && ev.x <= rect.right
        && ev.y >= rect.top
        && ev.y <= rect.bottom) { return true; }
 
        ev.target.close();
        ev.stopPropagation();
        return false;
      });
    });
   };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
  /*cleanup empty p tags, at beginning and end of dialogs created by Vorlage:DialogButton */
  const run = function() {
    document.querySelectorAll('dialog.zum-dialog').forEach(function(elem) {
      if(elem.dataset.dialogCleanedup === 'true') { return; }
      elem.dataset.dialogCleanedup = 'true';
      [elem.firstElementChild, elem.lastElementChild]
        .filter(function(e){return e && e.tagName === 'P' && e.textContent === '';})
        .forEach(function(e) { elem.removeChild(e);})
    });
    document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
      if(elem.dataset.dialogCleanedup === 'true') { return; }
      elem.dataset.dialogCleanedup = 'true';
      [elem.firstElementChild, elem.lastElementChild]
        .filter(function(e){ return e && e.tagName === 'P' && e.textContent === '';})
        .forEach(function(e){ elem.removeChild(e);})
     });
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
  /* overrule mediawiki default popup-close event handler */
  const run = function() {
    document.querySelectorAll('dialog.zum-dialog')
    .forEach(function(elem) {elem.querySelectorAll('button.popup-close')
      .forEach(function(btn) { btn.addEventListener('click', function(ev) {
        ev.stopImmediatePropagation();
      });});});
   };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
})();

Aktuelle Version vom 18. Februar 2024, 20:14 Uhr

/* Das folgende JavaScript wird für alle Benutzer geladen. */

/*
 * Dialog Javascript for
 * Vorlage:DialogButton
 *
 *
 */

(function(){
  /* add dialog opener event handler */
  const run = function(){
    document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
      if(elem.dataset.dialogOpenerAdded === 'true') { return; }


      var dialogId = elem.dataset.dialogOpenerId;
      var dialog = document.getElementById(dialogId);

      elem.dataset.dialogOpenerAdded = 'true';
      elem.addEventListener('click', function(ev) {
        dialog.showModal();
        ev.stopPropagation();
        return false;
      });
    });
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
    /* close on click outside of dialog content */
    const run = function(){
    document.querySelectorAll('dialog.zum-dialog').forEach(function(elem){
      if(elem.dataset.dialogCloseonBackdropAdded === 'true') { return; }
      elem.dataset.dialogCloseonBackdropAdded = 'true';

      elem.addEventListener('mousedown', function(ev){
        if(ev.target !== elem){return true;}
        var rect = ev.target.getBoundingClientRect();
        if(ev.x >= rect.left 
        && ev.x <= rect.right 
        && ev.y >= rect.top 
        && ev.y <= rect.bottom) { return true; }

        ev.target.close();
        ev.stopPropagation();
        return false;
      });
    });
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
  /*cleanup empty p tags, at beginning and end of dialogs created by Vorlage:DialogButton */
  const run = function() {
    document.querySelectorAll('dialog.zum-dialog').forEach(function(elem) {
      if(elem.dataset.dialogCleanedup === 'true') { return; }
      elem.dataset.dialogCleanedup = 'true';
      [elem.firstElementChild, elem.lastElementChild]
        .filter(function(e){return e && e.tagName === 'P' && e.textContent === '';})
        .forEach(function(e) { elem.removeChild(e);})
    });
    document.querySelectorAll('[data-dialog-opener-id]').forEach(function(elem) {
      if(elem.dataset.dialogCleanedup === 'true') { return; }
      elem.dataset.dialogCleanedup = 'true';
      [elem.firstElementChild, elem.lastElementChild]
        .filter(function(e){ return e && e.tagName === 'P' && e.textContent === '';})
        .forEach(function(e){ elem.removeChild(e);})
    });
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();
(function(){
  /* overrule mediawiki default popup-close event handler */
  const run = function() {
    document.querySelectorAll('dialog.zum-dialog')
     .forEach(function(elem) {elem.querySelectorAll('button.popup-close')
       .forEach(function(btn) { btn.addEventListener('click', function(ev) {
         ev.stopImmediatePropagation();
       });});});
  };
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", run);
} else {
  run();
}
})();