{"version":3,"sources":["blocks/o-modal.js"],"names":["define","utility","oModalFn","focusableElementsString","focusedElementBeforeModal","modalDialog","FRAMEWORK","locale","settings","oModal","closeText","tagName","loadingText","rootElement","classList","add","lWholePage","document","querySelector","init","elm","buttons","Object","keys","button","forEach","contains","setAttribute","querySelectorAll","modalLinkClick","target","notificationModal","thisModal","addEventListener","e","trapEscapeKey","closeModal","window","getAttribute","fn","destroyModal","preventDefault","open","modalLinkElm","close","trapTabKey","focusableElements","destroy","focusedItem","evt","foundElements","focusedItemIndex","obj","numberOfFocusableItems","which","find","el","isVisible","focus","length","indexOf","setInitialFocusModal","shiftKey","i","setTimeout","newTarget","targetElement","closest","openModal","matchMedia","matches","getComputedStyle","animationName","initiatingObj","waitForClose","timeoutFn","stopBodyScrolling","content","openModalNow","removeEventListener","insertAdjacentHTML","removeAttribute","contentOrigin","modalContent","childNodes","append","loadContent","modalTarget","remove","dataOrigin","trigger","oModalTarget","submitID","timings","t500ms","getContent","urlAnchorRegExp","staticContent","contentChildren","href","thisContent","dataUrl","updateContent","current","status","staticID","hash","match","contentHolder","createElement","requestLoadInto","pathname","response","search","push","grandchildEl","replace","split","staticSource","thisContentHolder","thisModalContent","thisModalContentHeading","childEl","insertBefore","firstChild","Array","addClass","thisModalContentLabel","contentLabel","scrollTop","htmlEl","top","disableClose","scrollBehavior","initInstance","bool","scrollY","body","documentElement","style","marginTop","convertToPx","scrollTo"],"mappings":"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","file":"blocks/o-modal.js","sourcesContent":["// eslint-disable-next-line max-lines-per-function\r\ndefine( [ 'utility' ], function run( utility ) {\r\n\t'use strict';\r\n\r\n\tvar oModalFn = {\r\n\t\tfocusableElementsString : 'a[href], area[href], input:not([disabled]), select:not([disabled]),\t\t' +\r\n\t\t' textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]',\r\n\t\tfocusedElementBeforeModal : null,\r\n\t\tmodalDialog : '
' +\r\n\t\t'' +\r\n\t\t'
' +\r\n\t\t'
' +\r\n\t\t'
' +\r\n\t\t'' + FRAMEWORK.locale.settings.oModal.loadingText + '
',\r\n\t\trootElement : document.documentElement,\r\n\t\tlWholePage : document.querySelector( 'body > .l-whole-page' ),\r\n\r\n\t\tinit : function( elm ) {\r\n\t\t\tif ( oModalFn.rootElement.classList.contains( 'js-o-modal' ) ) {\r\n\t\t\t\tif ( elm && !elm.classList.contains( 'o-modal-link' ) && ( elm.tagName === 'A' || elm.tagName === 'BUTTON' ) ) {\r\n\t\t\t\t\telm.classList.add( 'o-modal-link' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If modal was already setup on the page then just run the button search to update the modal button list for the page\r\n\t\t\t\toModalFn.rootElement.oModal.buttons = oModalFn.rootElement.querySelectorAll( 'a.o-modal-link, button.o-modal-link, a[data-module=\"o-modal\"], button[data-module=\"o-modal\"]' );\r\n\r\n\t\t\t\tObject.keys( oModalFn.rootElement.oModal.buttons ).forEach( function loop( button ) {\r\n\t\t\t\t\tif ( oModalFn.rootElement.oModal.buttons[ button ].classList.contains( 'js-o-modal__trigger' ) ) {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toModalFn.rootElement.oModal.buttons[ button ].classList.add( 'js-o-modal__trigger' );\r\n\t\t\t\t\t\tif ( oModalFn.rootElement.oModal.buttons[ button ].tagName === 'A' ) {\r\n\t\t\t\t\t\t\toModalFn.rootElement.oModal.buttons[ button ].setAttribute( 'role', 'button' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\toModalFn.rootElement.classList.add( 'js-o-modal' );\r\n\r\n\t\t\t\toModalFn.rootElement.oModal = {};\r\n\r\n\t\t\t\tif ( elm && !elm.classList.contains( 'o-modal-link' ) && ( elm.tagName === 'A' || elm.tagName === 'BUTTON' ) ) {\r\n\t\t\t\t\telm.classList.add( 'o-modal-link' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\toModalFn.rootElement.oModal.buttons = oModalFn.rootElement.querySelectorAll( 'a.o-modal-link, button.o-modal-link, a[data-module=\"o-modal\"], button[data-module=\"o-modal\"]' );\r\n\r\n\t\t\t\tObject.keys( oModalFn.rootElement.oModal.buttons ).forEach( function loop( button ) {\r\n\t\t\t\t\tif ( oModalFn.rootElement.oModal.buttons[ button ].classList.contains( 'js-o-modal__trigger' ) ) {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toModalFn.rootElement.oModal.buttons[ button ].classList.add( 'js-o-modal__trigger' );\r\n\t\t\t\t\t\tif ( oModalFn.rootElement.oModal.buttons[ button ].tagName === 'A' ) {\r\n\t\t\t\t\t\t\toModalFn.rootElement.oModal.buttons[ button ].setAttribute( 'role', 'button' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\toModalFn.rootElement.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\toModalFn.modalLinkClick( e.target, e );\r\n\t\t\t\t});\r\n\t\t\t\toModalFn.rootElement.addEventListener( 'keydown', function listener( e ) {\r\n\t\t\t\t\tvar thisModal,\r\n\t\t\t\t\t\tnotificationModal = false;\r\n\t\t\t\t\tif ( oModalFn.rootElement.classList.contains( 'o-modal-active' ) ) {\r\n\t\t\t\t\t\tthisModal = document.querySelector( '.o-modal' );\r\n\t\t\t\t\t\toModalFn.trapTabKey( thisModal, e );\r\n\r\n\t\t\t\t\t\tif ( oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-notification' ) && oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-notification' ) !== '' ) {\r\n\t\t\t\t\t\t\tnotificationModal = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// If the element that triggered the modal disable-close attribute does not equal 'all' and isn't a notification, then you can close the modal\r\n\t\t\t\t\t\tif ( oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-disable-close' ) !== 'all' && notificationModal === false ) {\r\n\t\t\t\t\t\t\toModalFn.trapEscapeKey( thisModal, e );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\twindow.addEventListener( 'modal:close', function fn() {\r\n\t\t\t\t\toModalFn.closeModal();\r\n\t\t\t\t});\r\n\t\t\t\twindow.addEventListener( 'modal:destroy', function fn() {\r\n\t\t\t\t\toModalFn.destroyModal();\r\n\t\t\t\t});\r\n\r\n\t\t\t\toModalFn.rootElement.oModal.open = function open( modalLinkElm ) {\r\n\t\t\t\t\toModalFn.modalLinkClick( modalLinkElm );\r\n\t\t\t\t};\r\n\t\t\t\toModalFn.rootElement.oModal.close = function close() {\r\n\t\t\t\t\toModalFn.closeModal();\r\n\t\t\t\t};\r\n\t\t\t\toModalFn.rootElement.oModal.destroy = function destroy() {\r\n\t\t\t\t\toModalFn.destroyModal();\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn oModalFn.rootElement.oModal;\r\n\t\t},\r\n\r\n\t\ttrapEscapeKey : function( obj, evt ) {\r\n\t\t\t// If escape pressed\r\n\t\t\tif ( evt.which === 27 ) {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\toModalFn.closeModal();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttrapTabKey : function( obj, evt ) {\r\n\t\t\tvar foundElements,\r\n\t\t\t\tfocusableElements = [],\r\n\t\t\t\tfocusedItem,\r\n\t\t\t\tnumberOfFocusableItems,\r\n\t\t\t\tfocusedItemIndex;\r\n\t\t\t// If tab or shift-tab pressed\r\n\t\t\tif ( evt.which === 9 ) {\r\n\t\t\t\t// Get list of focusable items\r\n\t\t\t\tfoundElements = utility.find( [ obj ], oModalFn.focusableElementsString );\r\n\t\t\t\tfoundElements.forEach( function loop( el ) {\r\n\t\t\t\t\tif ( utility.isVisible( el ) ) {\r\n\t\t\t\t\t\tfocusableElements.push( el );\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tfocusedItem = document.querySelector( ':focus' ); // Get currently focused item\r\n\t\t\t\tnumberOfFocusableItems = focusableElements.length; // Get the number of focusable items\r\n\t\t\t\t// Get the index of the currently focused item\r\n\t\t\t\tfocusedItemIndex = focusableElements.indexOf( focusedItem );\r\n\t\t\t\tif ( evt.shiftKey && focusedItemIndex === 0 ) { // Back tab\r\n\t\t\t\t\t// If focused on first item and user presses back-tab, go to the last focusable item\r\n\t\t\t\t\tfocusableElements[ numberOfFocusableItems - 1 ].focus();\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t} else if ( focusedItemIndex === -1 || ( !evt.shiftKey && focusedItemIndex === numberOfFocusableItems - 1 ) ) {\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Forward tab\r\n\t\t\t\t\t * If the foucused item is outside of the allowed focus items then set to the first focusable item\r\n\t\t\t\t\t * If focused on the last item and user presses tab, go to the first focusable item\r\n\t\t\t\t\t */\r\n\t\t\t\t\tfocusableElements[ 0 ].focus();\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Do nothing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetInitialFocusModal : function( obj ) {\r\n\t\t\tvar focusableElements = utility.find( [ obj ], oModalFn.focusableElementsString ),\r\n\t\t\t\ti;\r\n\t\t\tfor ( i = 0; i < focusableElements.length; i++ ) {\r\n\t\t\t\tif ( utility.isVisible( focusableElements[ i ] ) ) {\r\n\t\t\t\t\tfocusableElements[ i ].focus();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// eslint-disable-next-line complexity\r\n\t\tmodalLinkClick : function( targetElement, evt ) {\r\n\t\t\tvar newTarget = targetElement.closest( '.o-modal-link, .o-modal__cancel, .a-button--cancel:not(.a-button--filters-cancel), [data-module=\"o-modal\"]' ),\r\n\t\t\t\tpreventDefault = false;\r\n\r\n\t\t\tif ( targetElement.classList.contains( 'o-modal-link' ) || targetElement.getAttribute( 'data-module' ) === 'o-modal' ) {\r\n\t\t\t\tpreventDefault = true;\r\n\t\t\t\toModalFn.openModal( targetElement );\r\n\t\t\t} else if ( targetElement.classList.contains( 'o-modal__cancel' ) || ( targetElement.closest( '.o-modal' ) && targetElement.classList.contains( 'a-button--cancel' ) ) ) {\r\n\t\t\t\tpreventDefault = true;\r\n\t\t\t\t// eslint-disable-next-line max-len\r\n\t\t\t\tif ( ( window.matchMedia( '(prefers-reduced-motion: no-preference)' ) === true || window.matchMedia( '(prefers-reduced-motion: no-preference)' ).matches === true ) && oModalFn.rootElement.classList.contains( 'u-animation' ) && getComputedStyle( document.querySelector( '.o-modal' ) ).animationName !== 'none' ) {\r\n\t\t\t\t\toModalFn.rootElement.classList.add( 'o-modal-close' );\r\n\t\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\t\toModalFn.rootElement.classList.remove( 'o-modal-close' );\r\n\t\t\t\t\t\toModalFn.closeModal();\r\n\t\t\t\t\t}, 500 );\r\n\t\t\t\t} else {\r\n\t\t\t\t\toModalFn.closeModal();\r\n\t\t\t\t}\r\n\t\t\t} else if ( newTarget ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t\tpreventDefault = true;\r\n\t\t\t\toModalFn.modalLinkClick( newTarget, evt );\r\n\t\t\t} else {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\r\n\t\t\tif ( preventDefault && evt ) {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\topenModal : function( initiatingObj, content ) {\r\n\t\t\tlet waitForClose = function() {\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\tif ( oModalFn.rootElement.classList.contains( 'o-modal-closing' ) ) {\r\n\t\t\t\t\t\twaitForClose();\r\n\t\t\t\t\t} else if ( document.querySelector( '.o-modal' ) ) {\r\n\t\t\t\t\t\toModalFn.closeModal();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toModalFn.openModalNow( initiatingObj, content );\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 50 ); // Wait until the modal is fully closed before trying to open the next one\r\n\t\t\t};\r\n\t\t\twaitForClose();\r\n\t\t},\r\n\r\n\t\topenModalNow : function( initiatingObj, content ) {\r\n\t\t\tlet thisModal;\r\n\r\n\t\t\toModalFn.stopBodyScrolling( true );\r\n\r\n\t\t\t// Save current focus\r\n\t\t\toModalFn.focusedElementBeforeModal = initiatingObj;\r\n\t\t\toModalFn.lWholePage.insertAdjacentHTML( 'afterend', oModalFn.modalDialog );\r\n\t\t\t/* Remove role of document on description for full screen modals to allow screenreaders to enter forms mode */\r\n\t\t\tif ( oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-fullscreen' ) ) {\r\n\t\t\t\tdocument.querySelector( '#modalDescription' ).removeAttribute( 'role' );\r\n\t\t\t}\r\n\r\n\t\t\tthisModal = document.querySelector( '.o-modal' );\r\n\r\n\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\toModalFn.rootElement.classList.add( 'o-modal-active' );\r\n\t\t\t\t// Attach a listener to redirect the tab to the modal window. If the user somehow gets out of the modal window\r\n\t\t\t\toModalFn.lWholePage.addEventListener( 'focusin', oModalFn.setInitialFocusModal( thisModal ) );\r\n\t\t\t\toModalFn.setInitialFocusModal( thisModal );\r\n\t\t\t\toModalFn.loadContent( content );\r\n\t\t\t}, 10 ); // Small delay from adding the content to ensure the css animations work\r\n\t\t},\r\n\r\n\t\tcloseModal : function() {\r\n\t\t\tif ( oModalFn.rootElement.classList.contains( 'o-modal-active' ) ) {\r\n\t\t\t\toModalFn.lWholePage.setAttribute( 'aria-hidden', 'false' ); // Mark the main page as visible\r\n\t\t\t\toModalFn.rootElement.classList.remove( 'o-modal-active' );\r\n\t\t\t\toModalFn.rootElement.classList.remove( 'o-modal-loaded' );\r\n\t\t\t\toModalFn.rootElement.classList.add( 'o-modal-closing' );\r\n\r\n\t\t\t\t// Remove the listener which redirects tab keys in the main content area to the modal\r\n\t\t\t\toModalFn.lWholePage.removeEventListener( 'focusin', oModalFn.setInitialFocusModal( document.querySelector( '.o-modal' ) ) );\r\n\r\n\t\t\t\t// Set focus back to element that had it before the modal was opened\r\n\t\t\t\toModalFn.focusedElementBeforeModal.focus();\r\n\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\t// Save content state so that it restore the state when reopened\r\n\t\t\t\t\tvar modalContent = document.querySelector( '.o-modal__content' ),\r\n\t\t\t\t\t\tcontentOrigin,\r\n\t\t\t\t\t\tmodalTarget;\r\n\t\t\t\t\tif ( modalContent ) {\r\n\t\t\t\t\t\tcontentOrigin = document.querySelector( modalContent.getAttribute( 'data-origin' ) );\r\n\t\t\t\t\t\tif ( contentOrigin ) {\r\n\t\t\t\t\t\t\twhile ( modalContent.childNodes.length ) {\r\n\t\t\t\t\t\t\t\tcontentOrigin.append( modalContent.firstChild ); // Only grab the content inside\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Remove modal from the DOM\r\n\t\t\t\t\t\tmodalTarget = document.querySelector( '.o-modal-target' );\r\n\t\t\t\t\t\tif ( modalTarget ) {\r\n\t\t\t\t\t\t\tmodalTarget.classList.remove( 'o-modal-target--active' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdocument.querySelectorAll( '.o-modal, .o-modal-overlay' ).forEach( function loop( el ) {\r\n\t\t\t\t\t\t\tel.remove();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\toModalFn.rootElement.classList.remove( 'o-modal-closing' );\r\n\t\t\t\t\toModalFn.stopBodyScrolling();\r\n\r\n\t\t\t\t\tutility.trigger( window, 'modal:closed' );\r\n\t\t\t\t}, FRAMEWORK.timings.current.t500ms );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tdestroyModal : function() {\r\n\t\t\tvar submitID;\r\n\r\n\t\t\tif ( oModalFn.rootElement.classList.contains( 'o-modal-active' ) ) {\r\n\t\t\t\tsubmitID = oModalFn.focusedElementBeforeModal.getAttribute( 'href' );\r\n\t\t\t\toModalFn.lWholePage.setAttribute( 'aria-hidden', 'false' ); // Mark the main page as visible\r\n\t\t\t\toModalFn.rootElement.classList.remove( 'o-modal-active' );\r\n\t\t\t\toModalFn.rootElement.classList.remove( 'o-modal-loaded' );\r\n\t\t\t\toModalFn.rootElement.classList.add( 'o-modal-closing' );\r\n\t\t\t\t// Remove the listener which redirects tab keys in the main content area to the modal\r\n\t\t\t\toModalFn.lWholePage.removeEventListener( 'focusin', oModalFn.setInitialFocusModal( document.querySelector( '.o-modal' ) ) );\r\n\t\t\t\t// Set focus back to element that had it before the modal was opened\r\n\t\t\t\toModalFn.focusedElementBeforeModal.focus();\r\n\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\t// Remove ajaxed content from within the target div and remove modal from the DOM\r\n\t\t\t\t\tvar oModalTarget = document.querySelector( '.o-modal-target' ),\r\n\t\t\t\t\t\tdataOrigin,\r\n\t\t\t\t\t\tdataUrl = oModalFn.focusedElementBeforeModal.getAttribute( 'data-url' );\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tdataOrigin = oModalTarget.querySelector( submitID );\r\n\t\t\t\t\t\tif ( dataOrigin ) {\r\n\t\t\t\t\t\t\tdataOrigin.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t}\r\n\t\t\t\t\toModalTarget.classList.remove( 'o-modal-target--active' );\r\n\t\t\t\t\tif ( dataUrl && dataUrl !== '' ) {\r\n\t\t\t\t\t\toModalFn.focusedElementBeforeModal.setAttribute( 'href', dataUrl );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdocument.querySelector( '.o-modal' ).remove();\r\n\t\t\t\t\tdocument.querySelector( '.o-modal-overlay' ).remove();\r\n\t\t\t\t\toModalFn.rootElement.classList.remove( 'o-modal-closing' );\r\n\t\t\t\t\toModalFn.stopBodyScrolling();\r\n\t\t\t\t\tutility.trigger( window, 'modal:closed' );\r\n\t\t\t\t}, FRAMEWORK.timings.current.t500ms );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tloadContent : function( content ) {\r\n\t\t\tvar thisContent = content,\r\n\t\t\t\tgetContent,\r\n\t\t\t\thref = oModalFn.focusedElementBeforeModal.getAttribute( 'href' ),\r\n\t\t\t\thash = href.match( utility.urlAnchorRegExp ),\r\n\t\t\t\tstaticID,\r\n\t\t\t\tstaticContent,\r\n\t\t\t\tstaticSource;\r\n\r\n\t\t\tdocument.querySelector( '.o-modal' ).classList.remove( 'o-modal--fullscreen' );\r\n\t\t\toModalFn.rootElement.classList.remove( 'o-modal-loaded' );\r\n\t\t\tdocument.querySelector( '.o-modal-overlay' ).classList.remove( 'o-modal-overlay--loaded' );\r\n\r\n\t\t\tgetContent = function() {\r\n\t\t\t\tvar contentHolder = document.createElement( 'div' ),\r\n\t\t\t\t\tcontentChildren;\r\n\t\t\t\tif ( oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-fullscreen' ) ) {\r\n\t\t\t\t\tdocument.querySelector( '.o-modal-overlay' ).classList.add( 'o-modal-overlay--fullscreen' );\r\n\t\t\t\t}\r\n\t\t\t\tif ( href.indexOf( '#' ) === 0 || ( href.indexOf( '/' ) === 0 &&\r\n\t\t\t\twindow.location.pathname === oModalFn.focusedElementBeforeModal.pathname && window.location.search === oModalFn.focusedElementBeforeModal.search ) ) {\r\n\t\t\t\t\t// If url is for within the same page get content (unless the params are different incase this the app is using the params to change the page content)\r\n\t\t\t\t\tthisContent = document.querySelector( String( hash ) );\r\n\t\t\t\t\tif ( typeof thisContent === 'undefined' || thisContent === null ) {\r\n\t\t\t\t\t\toModalFn.closeModal(); // No content found so close modal\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontentChildren = [];\r\n\t\t\t\t\t\tthisContent.childNodes.forEach( function loop( el ) {\r\n\t\t\t\t\t\t\tcontentChildren.push( el ); // Only grab the content inside\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tdocument.querySelector( '.o-modal__content' ).setAttribute( 'data-origin', hash ); // Store where the content came from so it can be restored\r\n\t\t\t\t\t\toModalFn.updateContent( contentChildren );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\thref = href.replace( '#', ' #' );\r\n\t\t\t\t\tutility.requestLoadInto( contentHolder, href, function fn( response, status ) {\r\n\t\t\t\t\t\tif ( status >= 200 && status < 400 ) {\r\n\t\t\t\t\t\t\toModalFn.updateContent( contentHolder );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\toModalFn.closeModal(); // No content found so close modal\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tif ( typeof thisContent === 'undefined' ) {\r\n\t\t\t\tif ( typeof href === 'undefined' ) {\r\n\t\t\t\t\toModalFn.closeModal(); // No content found so close modal\r\n\t\t\t\t} else if ( oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-fullscreen' ) && !oModalFn.focusedElementBeforeModal.getAttribute( 'href' ).match( '^#' ) ) {\r\n\t\t\t\t\tdocument.querySelector( '.o-modal-overlay' ).classList.add( 'o-modal-overlay--fullscreen' );\r\n\t\t\t\t\tstaticID = oModalFn.focusedElementBeforeModal.getAttribute( 'href' ).split( '#' )[ 1 ];\r\n\t\t\t\t\tstaticSource = oModalFn.focusedElementBeforeModal.getAttribute( 'href' ).replace( '#', ' #' );\r\n\r\n\t\t\t\t\tstaticContent = document.createElement( 'div' );\r\n\t\t\t\t\tstaticContent.setAttribute( 'id', staticID );\r\n\t\t\t\t\tstaticContent.classList.add( 'o-modal__content-container' );\r\n\r\n\t\t\t\t\t// Fullscreen modal - get content and drop in at end of page for reuse\r\n\t\t\t\t\tutility.requestLoadInto( staticContent, staticSource, function fn( response, status ) {\r\n\t\t\t\t\t\tvar oModalTarget = document.querySelector( '.o-modal-target' );\r\n\t\t\t\t\t\toModalFn.focusedElementBeforeModal.setAttribute( 'data-url', oModalFn.focusedElementBeforeModal.getAttribute( 'href' ) ); // Set the data-url to the external link\r\n\t\t\t\t\t\toModalFn.focusedElementBeforeModal.setAttribute( 'href', '#' + staticID ); // Update the href on the original anchor to the new value\r\n\t\t\t\t\t\tif ( status >= 200 && status < 400 ) {\r\n\t\t\t\t\t\t\tstaticContent.childNodes.forEach( function loop( childEl ) {\r\n\t\t\t\t\t\t\t\tchildEl.childNodes.forEach( function innerLoop( grandchildEl ) {\r\n\t\t\t\t\t\t\t\t\t// Move all children out of the element\r\n\t\t\t\t\t\t\t\t\twhile ( grandchildEl.firstChild ) {\r\n\t\t\t\t\t\t\t\t\t\tchildEl.insertBefore( grandchildEl.firstChild, grandchildEl );\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t// Remove the empty element\r\n\t\t\t\t\t\t\t\t\tchildEl.removeChild( grandchildEl );\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\toModalTarget.classList.add( 'o-modal-target--active' );\r\n\t\t\t\t\t\t\toModalTarget.append( staticContent );\r\n\t\t\t\t\t\t\thref = oModalFn.focusedElementBeforeModal.getAttribute( 'href' ); // Update href var to that same new value\r\n\t\t\t\t\t\t\tgetContent();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\toModalFn.destroyModal(); // No content found so close modal\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Standard modal (or fullscreen with content loaded and target div populated etc)\r\n\t\t\t\t\tgetContent();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// eslint-disable-next-line complexity\r\n\t\tupdateContent : function( content ) {\r\n\t\t\tvar thisContent = content,\r\n\t\t\t\tthisModal = document.querySelector( '.o-modal' ),\r\n\t\t\t\tthisContentHolder = document.querySelector( '.o-modal__content-holder' ),\r\n\t\t\t\tthisModalContent = document.querySelector( '.o-modal__content' ),\r\n\t\t\t\tthisModalContentHeading,\r\n\t\t\t\tthisModalContentLabel,\r\n\t\t\t\tdisableClose,\r\n\t\t\t\tnotificationModal;\r\n\r\n\t\t\tif ( thisModal ) {\r\n\t\t\t\tif ( oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-fullscreen' ) ) {\r\n\t\t\t\t\tthisModal.classList.add( 'o-modal--fullscreen' );\r\n\t\t\t\t\tif ( oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-wallet' ) ) {\r\n\t\t\t\t\t\tthisModal.classList.add( 'o-modal--wallet' );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthisContentHolder.classList.remove( 'has-fullscreen' );\r\n\t\t\t\t}\r\n\t\t\t\tif ( Array.isArray( thisContent ) ) {\r\n\t\t\t\t\tthisContent.forEach( function loop( el ) {\r\n\t\t\t\t\t\tthisModalContent.append( el );\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthisModalContent.append( thisContent );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthisModalContentHeading = thisModalContent.querySelector( 'h1, h2, h3, h4, h5, .a-heading' );\r\n\t\t\t\tif ( thisModalContentHeading ) {\r\n\t\t\t\t\tthisModalContentLabel = thisModalContentHeading.textContent;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthisModalContentLabel = FRAMEWORK.locale.settings.oModal.contentLabel;\r\n\t\t\t\t}\r\n\t\t\t\tthisModalContent.setAttribute( 'aria-label', thisModalContentLabel );\r\n\r\n\t\t\t\toModalFn.rootElement.classList.add( 'o-modal-loaded' );\r\n\t\t\t\tdocument.querySelector( '.o-modal-overlay' ).classList.add( 'o-modal-overlay--loaded' );\r\n\r\n\t\t\t\tthisContentHolder.scrollTop = 0;\r\n\r\n\t\t\t\tdisableClose = oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-disable-close' );\r\n\t\t\t\tnotificationModal = oModalFn.focusedElementBeforeModal.getAttribute( 'data-modal-notification' );\r\n\t\t\t\tthisModal.classList.remove( 'o-modal--no-close' );\r\n\t\t\t\tif ( disableClose || notificationModal ) {\r\n\t\t\t\t\t// If the user clicks outside the modal set focus back to the modal\r\n\t\t\t\t\tdocument.querySelector( '.o-modal-overlay' ).addEventListener( 'click', function listener( e ) {\r\n\t\t\t\t\t\toModalFn.trapTabKey( thisModal, e );\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tswitch ( true ) {\r\n\t\t\t\t\tcase disableClose === 'all':\r\n\t\t\t\t\t\tthisModal.classList.add( 'o-modal--no-close' ); // Hide the close link in the header\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase notificationModal:\r\n\t\t\t\t\t\tthisModal.classList.add( 'o-modal--no-close' ); // Hide the close link in the header\r\n\t\t\t\t\t\tthisModal.classList.add( 'o-modal-notification' );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase notificationModal === 'success':\r\n\t\t\t\t\t\tutility.addClass( thisModal, 'o-modal--no-close o-modal-notification o-modal-notification--success' );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase notificationModal === 'info':\r\n\t\t\t\t\t\tutility.addClass( thisModal, 'o-modal--no-close o-modal-notification o-modal-notification--info' );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase notificationModal === 'warn':\r\n\t\t\t\t\t\tutility.addClass( thisModal, 'o-modal--no-close o-modal-notification o-modal-notification--warn' );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase notificationModal === 'error':\r\n\t\t\t\t\t\tutility.addClass( thisModal, 'o-modal--no-close o-modal-notification o-modal-notification--error' );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault: // No match, so do nothing\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdocument.querySelector( '.o-modal-overlay' ).addEventListener( 'click', function listener() {\r\n\t\t\t\t\t\toModalFn.closeModal();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\toModalFn.setInitialFocusModal( document.querySelector( '.o-modal' ) );\r\n\t\t\t\t// Mark the main page as hidden\r\n\t\t\t\toModalFn.lWholePage.setAttribute( 'aria-hidden', 'true' );\r\n\t\t\t\tutility.trigger( window, 'refresh' );\r\n\t\t\t\tutility.trigger( window, 'modal:opened' );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstopBodyScrolling : function( bool ) {\r\n\t\t\tvar htmlEl = document.querySelector( 'html' ),\r\n\t\t\t\tscrollTop = htmlEl.getAttribute( 'data-scrolltop' ),\r\n\t\t\t\ttop = 0;\r\n\r\n\t\t\tif ( bool === true ) {\r\n\t\t\t\tif ( !htmlEl.getAttribute( 'data-scrolltop' ) ) {\r\n\t\t\t\t\t// Store the current scrollTop offset\r\n\t\t\t\t\ttop = window.scrollY || document.body.scrollTop || document.documentElement.scrollTop;\r\n\t\t\t\t\thtmlEl.setAttribute( 'data-scrolltop', top );\r\n\t\t\t\t\tdocument.querySelector( '.l-whole-page' ).style.marginTop = utility.convertToPx( 0 - top );\r\n\t\t\t\t\t// Remove CSS scroll-behavior smooth\r\n\t\t\t\t\thtmlEl.style.scrollBehavior = 'auto';\r\n\t\t\t\t\twindow.scrollTo( 0, htmlEl.getAttribute( 'data-scrolltop' ) );\r\n\t\t\t\t\t// Reinstate CSS scroll-behavior\r\n\t\t\t\t\thtmlEl.style.scrollBehavior = '';\r\n\t\t\t\t}\r\n\t\t\t} else if ( scrollTop ) {\r\n\t\t\t\t// Restore scroll top\r\n\t\t\t\tdocument.querySelector( '.l-whole-page' ).style.marginTop = 0;\r\n\t\t\t\t// Remove CSS scroll-behavior smooth\r\n\t\t\t\thtmlEl.style.scrollBehavior = 'auto';\r\n\t\t\t\twindow.scrollTo( 0, htmlEl.getAttribute( 'data-scrolltop' ) );\r\n\t\t\t\t// Reinstate CSS scroll-behavior\r\n\t\t\t\thtmlEl.style.scrollBehavior = '';\r\n\t\t\t\thtmlEl.removeAttribute( 'data-scrolltop' );\r\n\t\t\t} else {\r\n\t\t\t\t// Do nothing\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n\r\n\treturn {\r\n\t\tinitInstance : function( elm ) {\r\n\t\t\treturn oModalFn.init( elm );\r\n\t\t},\r\n\t};\r\n});\r\n"]}