diff -r be944660c56a -r 3d72ae0968f4 wp/wp-includes/blocks/navigation/view.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/blocks/navigation/view.js Tue Sep 27 16:37:53 2022 +0200 @@ -0,0 +1,93 @@ +/******/ (function() { // webpackBootstrap +/******/ "use strict"; +var __webpack_exports__ = {}; + +;// CONCATENATED MODULE: ./node_modules/micromodal/dist/micromodal.es.js +function e(e,t){for(var o=0;oe.length)&&(t=e.length);for(var o=0,n=new Array(t);o0&&this.registerTriggers.apply(this,t(a)),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}var i,a,r;return i=o,(a=[{key:"registerTriggers",value:function(){for(var e=this,t=arguments.length,o=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:null;if(this.activeElement=document.activeElement,this.modal.setAttribute("aria-hidden","false"),this.modal.classList.add(this.config.openClass),this.scrollBehaviour("disable"),this.addEventListeners(),this.config.awaitOpenAnimation){var o=function t(){e.modal.removeEventListener("animationend",t,!1),e.setFocusToFirstNode()};this.modal.addEventListener("animationend",o,!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement,t)}},{key:"closeModal",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.modal;if(this.modal.setAttribute("aria-hidden","true"),this.removeEventListeners(),this.scrollBehaviour("enable"),this.activeElement&&this.activeElement.focus&&this.activeElement.focus(),this.config.onClose(this.modal,this.activeElement,e),this.config.awaitCloseAnimation){var o=this.config.openClass;this.modal.addEventListener("animationend",(function e(){t.classList.remove(o),t.removeEventListener("animationend",e,!1)}),!1)}else t.classList.remove(this.config.openClass)}},{key:"closeModalById",value:function(e){this.modal=document.getElementById(e),this.modal&&this.closeModal()}},{key:"scrollBehaviour",value:function(e){if(this.config.disableScroll){var t=document.querySelector("body");switch(e){case"enable":Object.assign(t.style,{overflow:""});break;case"disable":Object.assign(t.style,{overflow:"hidden"})}}}},{key:"addEventListeners",value:function(){this.modal.addEventListener("touchstart",this.onClick),this.modal.addEventListener("click",this.onClick),document.addEventListener("keydown",this.onKeydown)}},{key:"removeEventListeners",value:function(){this.modal.removeEventListener("touchstart",this.onClick),this.modal.removeEventListener("click",this.onClick),document.removeEventListener("keydown",this.onKeydown)}},{key:"onClick",value:function(e){(e.target.hasAttribute(this.config.closeTrigger)||e.target.parentNode.hasAttribute(this.config.closeTrigger))&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}},{key:"onKeydown",value:function(e){27===e.keyCode&&this.closeModal(e),9===e.keyCode&&this.retainFocus(e)}},{key:"getFocusableNodes",value:function(){var e=this.modal.querySelectorAll(n);return Array.apply(void 0,t(e))}},{key:"setFocusToFirstNode",value:function(){var e=this;if(!this.config.disableFocus){var t=this.getFocusableNodes();if(0!==t.length){var o=t.filter((function(t){return!t.hasAttribute(e.config.closeTrigger)}));o.length>0&&o[0].focus(),0===o.length&&t[0].focus()}}}},{key:"retainFocus",value:function(e){var t=this.getFocusableNodes();if(0!==t.length)if(t=t.filter((function(e){return null!==e.offsetParent})),this.modal.contains(document.activeElement)){var o=t.indexOf(document.activeElement);e.shiftKey&&0===o&&(t[t.length-1].focus(),e.preventDefault()),!e.shiftKey&&t.length>0&&o===t.length-1&&(t[0].focus(),e.preventDefault())}else t[0].focus()}}])&&e(i.prototype,a),r&&e(i,r),o}(),a=null,r=function(e){if(!document.getElementById(e))return console.warn("MicroModal: ❗Seems like you have missed %c'".concat(e,"'"),"background-color: #f8f9fa;color: #50596c;font-weight: bold;","ID somewhere in your code. Refer example below to resolve it."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",'')),!1},s=function(e,t){if(function(e){e.length<=0&&(console.warn("MicroModal: ❗Please specify at least one %c'micromodal-trigger'","background-color: #f8f9fa;color: #50596c;font-weight: bold;","data attribute."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",''))}(e),!t)return!0;for(var o in t)r(o);return!0},{init:function(e){var o=Object.assign({},{openTrigger:"data-micromodal-trigger"},e),n=t(document.querySelectorAll("[".concat(o.openTrigger,"]"))),r=function(e,t){var o=[];return e.forEach((function(e){var n=e.attributes[t].value;void 0===o[n]&&(o[n]=[]),o[n].push(e)})),o}(n,o.openTrigger);if(!0!==o.debugMode||!1!==s(n,r))for(var l in r){var c=r[l];o.targetModal=l,o.triggers=t(c),a=new i(o)}},show:function(e,t){var o=t||{};o.targetModal=e,!0===o.debugMode&&!1===r(e)||(a&&a.removeEventListeners(),(a=new i(o)).showModal())},close:function(e){e?a.closeModalById(e):a.closeModal()}});"undefined"!=typeof window&&(window.MicroModal=l);/* harmony default export */ var micromodal_es = (l); + +;// CONCATENATED MODULE: ./node_modules/@wordpress/block-library/build-module/navigation/view.js +/** + * External dependencies + */ + // Responsive navigation toggle. + +function navigationToggleModal(modal) { + const dialogContainer = modal.querySelector(`.wp-block-navigation__responsive-dialog`); + const isHidden = 'true' === modal.getAttribute('aria-hidden'); + modal.classList.toggle('has-modal-open', !isHidden); + dialogContainer.toggleAttribute('aria-modal', !isHidden); + + if (isHidden) { + dialogContainer.removeAttribute('role'); + dialogContainer.removeAttribute('aria-modal'); + } else { + dialogContainer.setAttribute('role', 'dialog'); + dialogContainer.setAttribute('aria-modal', 'true'); + } // Add a class to indicate the modal is open. + + + const htmlElement = document.documentElement; + htmlElement.classList.toggle('has-modal-open'); +} // Open on click functionality. + + +function closeSubmenus(element) { + element.querySelectorAll('[aria-expanded="true"]').forEach(function (toggle) { + toggle.setAttribute('aria-expanded', 'false'); + }); +} + +function toggleSubmenuOnClick(event) { + const buttonToggle = event.target.closest('[aria-expanded]'); + const isSubmenuOpen = buttonToggle.getAttribute('aria-expanded'); + + if (isSubmenuOpen === 'true') { + closeSubmenus(buttonToggle.closest('.wp-block-navigation-item')); + } else { + // Close all sibling submenus. + const parentElement = buttonToggle.closest('.wp-block-navigation-item'); + const navigationParent = buttonToggle.closest('.wp-block-navigation__submenu-container, .wp-block-navigation__container, .wp-block-page-list'); + navigationParent.querySelectorAll('.wp-block-navigation-item').forEach(function (child) { + if (child !== parentElement) { + closeSubmenus(child); + } + }); // Open submenu. + + buttonToggle.setAttribute('aria-expanded', 'true'); + } +} // Necessary for some themes such as TT1 Blocks, where +// scripts could be loaded before the body. + + +window.addEventListener('load', () => { + micromodal_es.init({ + onShow: navigationToggleModal, + onClose: navigationToggleModal, + openClass: 'is-menu-open' + }); + const submenuButtons = document.querySelectorAll('.wp-block-navigation-submenu__toggle'); + submenuButtons.forEach(function (button) { + button.addEventListener('click', toggleSubmenuOnClick); + }); // Close on click outside. + + document.addEventListener('click', function (event) { + const navigationBlocks = document.querySelectorAll('.wp-block-navigation'); + navigationBlocks.forEach(function (block) { + if (!block.contains(event.target)) { + closeSubmenus(block); + } + }); + }); // Close on focus outside. + + document.addEventListener('keyup', function (event) { + const submenuBlocks = document.querySelectorAll('.wp-block-navigation-item.has-child'); + submenuBlocks.forEach(function (block) { + if (!block.contains(event.target)) { + closeSubmenus(block); + } + }); + }); +}); + +/******/ })() +; \ No newline at end of file