diff --git a/assets/css/styles.css b/assets/css/styles.css index d982e52..63503bf 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -913,10 +913,35 @@ select { --tw-backdrop-sepia: ; } -.visible { - visibility: visible; +.container { + width: 100%; } +@media (min-width: 640px) { + .container { + max-width: 640px; + } +} +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} +@media (min-width: 1024px) { + .container { + max-width: 1024px; + } +} +@media (min-width: 1280px) { + .container { + max-width: 1280px; + } +} +@media (min-width: 1536px) { + .container { + max-width: 1536px; + } +} .fixed { position: fixed; } @@ -1739,10 +1764,6 @@ html { margin-right: calc(2rem * var(--tw-space-x-reverse)); margin-left: calc(2rem * (1 - var(--tw-space-x-reverse))); } - .lg\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; - } .lg\:px-8 { padding-left: 2rem; padding-right: 2rem; @@ -2005,19 +2026,57 @@ body.login { translate: 0; } -#content-container { - transition: opacity 0.3s ease-in-out; /* Adjust the duration and timing function as needed */ +#header-nav.out-of-view { + opacity: 0; + translate: 0 -100%; + transition: opacity 2000ms ease-in-out; + transition: translate 1000ms ease-in-out; } -.active #content-container { - opacity: 0; /* Initial opacity when collapsing */ - transition: opacity 0.3s ease-in-out; /* Adjust the duration and timing function as needed */ +#header-nav.in-view { + opacity: 1; + translate: 0 0; } -.active #content-container.visible { - opacity: 1; /* Opacity when expanding */ +#content-container.page-transition { + opacity: 0; + transform: perspective(800px) rotateY(-90deg) scale(0.9); + transform-origin: left center; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); + background: linear-gradient(to right, rgba(255, 255, 255, 0.8) 50%, transparent 50%); + background-size: 200% 100%; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, background-position 0.3s ease-in-out; } +#content-container:not(.page-transition) { + opacity: 1; + transform: perspective(800px) rotateY(0deg) scale(1); + transform-origin: left center; + box-shadow: 0 0 20px rgba(0, 0, 0, 0); + background-position: 100% 0; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, background-position 0.3s ease-in-out; +} + +@media (min-width: 1024px) { + #content-container.page-transition { + opacity: 0; + transform: perspective(800px) rotateY(-5deg) scale(1); + transform-origin: left center; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); + background: linear-gradient(to right, rgba(255, 255, 255, 0.8) 50%, transparent 50%); + background-size: 200% 100%; + background-position: 100% 0; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, background-position 0.3s ease-in-out; + } + #content-container:not(.page-transition) { + opacity: 1; + transform: perspective(800px) rotateY(0deg) scale(1); + transform-origin: left center; + box-shadow: 0 0 20px rgba(0, 0, 0, 0); + background-position: 0 0; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, background-position 0.3s ease-in-out; + } +} #footer-nav.out-of-view { opacity: 0; translate: 0 100%; diff --git a/assets/js/index.js b/assets/js/index.js index f36bbe5..5fe999c 100644 --- a/assets/js/index.js +++ b/assets/js/index.js @@ -14,23 +14,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); class CollapsePanel { constructor() { - this.toggles = document.querySelectorAll('.accordion-toggle'); this.init(); } init() { document.addEventListener('DOMContentLoaded', () => { - this.addToggleCollapseListener(); + this.addToggleCollapseListener('.accordion-toggle'); }); } - addToggleCollapseListener() { - this.toggles.forEach(toggle => { - toggle.addEventListener('click', () => { - toggle.parentNode.parentNode.classList.toggle('active'); - }); - }); - } - addNewToggleCollapseListener() { - this.toggles = document.querySelectorAll('#content-container .accordion-toggle'); + addToggleCollapseListener(selector) { + this.toggles = document.querySelectorAll(selector); this.toggles.forEach(toggle => { toggle.addEventListener('click', () => { toggle.parentNode.parentNode.classList.toggle('active'); @@ -57,20 +49,26 @@ class Nav { this.toggleMenuBtn = document.getElementById('toggle-nav'); this.toggleSlideOutMenu = document.getElementById('slide-out-menu'); this.accordions = document.querySelectorAll('#slide-out-menu .accordion'); - this.toggleCollapse(); - this.events(); + this.init(); } - events() { + init() { // Open and Close the Nav Menu - this.toggleMenuBtn.addEventListener('click', () => this.toggleNavMenu()); + document.addEventListener('DOMContentLoaded', () => { + // Check if fullscreen is supported + if (document.documentElement.requestFullscreen) { + // Request fullscreen + document.documentElement.requestFullscreen(); + } + this.toggleMenuBtn.addEventListener('click', () => this.toggleNavMenu()); + }); } toggleNavMenu() { this.toggleMenuBtn.classList.toggle('active'); this.toggleSlideOutMenu.classList.toggle('open'); document.body.classList.toggle('noScroll'); - this.toggleCollapse(); + this.collapseAllAccordions(); } - toggleCollapse() { + collapseAllAccordions() { setTimeout(() => { this.accordions.forEach(accordion => { accordion.classList.remove('active'); @@ -93,7 +91,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _CollapsePanel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CollapsePanel */ "./src/modules/CollapsePanel.js"); - // Import the CollapsePanel class +/* harmony import */ var _NavControl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NavControl */ "./src/modules/NavControl.js"); + class PageTransitions { constructor() { @@ -101,38 +100,52 @@ class PageTransitions { } init() { document.addEventListener('DOMContentLoaded', () => { - this.addLinkClickListener(); + this.addLinkClickListener('a'); }); } - addLinkClickListener() { - this.links = document.querySelectorAll('a'); + addLinkClickListener(selector) { + this.links = document.querySelectorAll(selector); this.links.forEach(link => { link.addEventListener('click', e => { e.preventDefault(); + this.navControl = new _NavControl__WEBPACK_IMPORTED_MODULE_1__["default"](); + if (this.navControl.toggleMenuBtn.classList.contains('active')) { + this.navControl.toggleNavMenu(); + } if (this.isExternalLink(link)) { link.setAttribute('target', '_blank'); + window.open(link, '_blank'); + } + if (!this.isExternalLink(link)) { + this.animatePageTransition(() => { + this.loadContent(link.getAttribute('href'), 'content-container'); + }); } - this.loadContent(link.getAttribute('href'), 'content-container'); }); }); } - addNewLinkClickListener() { - this.newlinks = document.querySelectorAll('#content-container a'); - console.log(this.newlinks); - this.newlinks.forEach(link => { - link.addEventListener('click', e => { - e.preventDefault(); - if (this.isExternalLink(link)) { - link.setAttribute('target', '_blank'); - } - this.loadContent(link.getAttribute('href'), 'content-container'); - }); - }); + animatePageTransition(callback) { + const contentContainer = document.getElementById('content-container'); + + // Add the transition class + this.addTransitionClass(contentContainer); + + // Wait for the transition to complete + callback(); // Call the callback function (loading content) after the transition + } + addTransitionClass(element) { + element.classList.add('page-transition'); + } + removeTransitionClass(element) { + element.classList.remove('page-transition'); } loadContent(targetUrl, elementId) { + const contentContainer = document.getElementById('content-container'); fetch(targetUrl).then(response => response.text()).then(data => { this.updateContent(data, elementId); history.pushState(null, null, targetUrl); + // Trigger removal of transition class after fetching data + this.removeTransitionClass(contentContainer); }).catch(error => console.error('Error fetching content:', error)); } updateContent(data, elementId) { @@ -142,13 +155,26 @@ class PageTransitions { if (targetElement) { const newContent = targetElement.innerHTML; - // If you want to replace the content instead of appending: + // Update the content container contentContainer.innerHTML = newContent; - // Create an instance of CollapsePanel and call toggleCollapse + // Update the page title + const newTitle = parsedData.querySelector('title'); + if (newTitle) { + document.title = newTitle.textContent; + } + + // Other dynamic updates can go here, for example: + // const newMetaDescription = parsedData.querySelector('meta[name="description"]'); + // if (newMetaDescription) { + // const currentMetaDescription = document.querySelector('meta[name="description"]'); + // currentMetaDescription.setAttribute('content', newMetaDescription.getAttribute('content')); + // } + + // Initialize or update dynamic components this.collapsePanel = new _CollapsePanel__WEBPACK_IMPORTED_MODULE_0__["default"](); - this.collapsePanel.addNewToggleCollapseListener(); - this.addNewLinkClickListener(); + this.collapsePanel.addToggleCollapseListener('#content-container .accordion-toggle'); + this.addLinkClickListener('#content-container a'); } else { console.error(`Element with ID '${elementId}' not found in the fetched data`); } @@ -177,19 +203,29 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); class SplashScreen { constructor() { - this.enterBtn = document.getElementById('app-enter'); this.splashScreen = document.getElementById('splash-screen'); + this.enterButton = document.getElementById('app-enter'); this.headerNav = document.getElementById('header-nav'); this.footerNav = document.getElementById('footer-nav'); - this.events(); + this.init(); } - events() { - // Open and Close the Nav Menu - if (this.enterBtn) { - this.enterBtn.addEventListener('click', () => this.enterApp()); + init() { + document.addEventListener('DOMContentLoaded', () => { + this.checkFirstVisit(); + }); + } + checkFirstVisit() { + if (!sessionStorage.getItem('visited')) { + this.showSplashScreen(); + this.addEventListeners(); } } - enterApp() { + showSplashScreen() { + this.splashScreen.classList.remove('hidden'); + this.headerNav.classList.add('out-of-view'); + this.footerNav.classList.add('out-of-view'); + } + hideSplashScreen() { this.splashScreen.classList.add('close'); setTimeout(() => { this.headerNav.classList.add('in-view'); @@ -203,6 +239,12 @@ class SplashScreen { this.footerNav.classList.remove('in-view'); }, 2000); } + addEventListeners() { + this.enterButton.addEventListener('click', () => { + this.hideSplashScreen(); + sessionStorage.setItem('visited', true); + }); + } } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SplashScreen); diff --git a/assets/js/index.js.map b/assets/js/index.js.map index cbe7bd9..3f8aeed 100644 --- a/assets/js/index.js.map +++ b/assets/js/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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","sources":["webpack://starter/./src/modules/CollapsePanel.js","webpack://starter/./src/modules/NavControl.js","webpack://starter/./src/modules/PageTransitions.js","webpack://starter/./src/modules/SplashScreen.js","webpack://starter/./src/modules/TestModule.js","webpack://starter/webpack/bootstrap","webpack://starter/webpack/runtime/define property getters","webpack://starter/webpack/runtime/hasOwnProperty shorthand","webpack://starter/webpack/runtime/make namespace object","webpack://starter/./src/index.js"],"sourcesContent":["class CollapsePanel {\r\n constructor() {\r\n this.toggles = document.querySelectorAll('.accordion-toggle')\r\n this.init()\r\n }\r\n\r\n init() {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n this.addToggleCollapseListener()\r\n })\r\n }\r\n\r\n addToggleCollapseListener() {\r\n this.toggles.forEach((toggle) => {\r\n toggle.addEventListener('click', () => {\r\n toggle.parentNode.parentNode.classList.toggle('active')\r\n })\r\n })\r\n }\r\n \r\n addNewToggleCollapseListener() {\r\n this.toggles = document.querySelectorAll('#content-container .accordion-toggle')\r\n this.toggles.forEach((toggle) => {\r\n toggle.addEventListener('click', () => {\r\n toggle.parentNode.parentNode.classList.toggle('active')\r\n })\r\n })\r\n }\r\n\r\n \r\n}\r\n\r\nexport default CollapsePanel\r\n","class Nav {\r\n constructor() {\r\n this.toggleMenuBtn = document.getElementById('toggle-nav')\r\n this.toggleSlideOutMenu = document.getElementById('slide-out-menu')\r\n this.accordions = document.querySelectorAll('#slide-out-menu .accordion')\r\n this.toggleCollapse()\r\n this.events()\r\n }\r\n\r\n events() {\r\n // Open and Close the Nav Menu\r\n this.toggleMenuBtn.addEventListener('click', () => this.toggleNavMenu())\r\n }\r\n\r\n toggleNavMenu() {\r\n this.toggleMenuBtn.classList.toggle('active')\r\n this.toggleSlideOutMenu.classList.toggle('open')\r\n document.body.classList.toggle('noScroll')\r\n this.toggleCollapse()\r\n }\r\n\r\n toggleCollapse() {\r\n setTimeout(() => {\r\n this.accordions.forEach((accordion) => {\r\n accordion.classList.remove('active')\r\n })\r\n }, 600)\r\n }\r\n\r\n}\r\n\r\nexport default Nav\r\n","import CollapsePanel from './CollapsePanel' // Import the CollapsePanel class\r\n\r\nclass PageTransitions {\r\n constructor() {\r\n this.init()\r\n }\r\n\r\n init() {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n this.addLinkClickListener()\r\n })\r\n }\r\n\r\n addLinkClickListener() {\r\n this.links = document.querySelectorAll('a')\r\n this.links.forEach((link) => {\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n if (this.isExternalLink(link)) {\r\n link.setAttribute('target', '_blank')\r\n }\r\n this.loadContent(link.getAttribute('href'), 'content-container')\r\n })\r\n })\r\n }\r\n\r\n addNewLinkClickListener() {\r\n this.newlinks = document.querySelectorAll('#content-container a')\r\n console.log(this.newlinks)\r\n this.newlinks.forEach((link) => {\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n if (this.isExternalLink(link)) {\r\n link.setAttribute('target', '_blank')\r\n }\r\n this.loadContent(link.getAttribute('href'), 'content-container')\r\n })\r\n })\r\n }\r\n\r\n loadContent(targetUrl, elementId) {\r\n fetch(targetUrl)\r\n .then((response) => response.text())\r\n .then((data) => {\r\n this.updateContent(data, elementId)\r\n history.pushState(null, null, targetUrl)\r\n })\r\n .catch((error) => console.error('Error fetching content:', error))\r\n }\r\n\r\n updateContent(data, elementId) {\r\n const contentContainer = document.getElementById('content-container')\r\n const parsedData = new DOMParser().parseFromString(data, 'text/html')\r\n const targetElement = parsedData.getElementById(elementId)\r\n\r\n if (targetElement) {\r\n const newContent = targetElement.innerHTML\r\n\r\n // If you want to replace the content instead of appending:\r\n contentContainer.innerHTML = newContent\r\n\r\n // Create an instance of CollapsePanel and call toggleCollapse\r\n this.collapsePanel = new CollapsePanel()\r\n this.collapsePanel.addNewToggleCollapseListener()\r\n this.addNewLinkClickListener()\r\n } else {\r\n console.error(`Element with ID '${elementId}' not found in the fetched data`)\r\n }\r\n }\r\n\r\n // Function to check if a link is external\r\n isExternalLink(link) {\r\n const currentDomain = window.location.hostname\r\n const linkDomain = link.hostname\r\n\r\n return linkDomain !== currentDomain\r\n }\r\n}\r\n\r\nexport default PageTransitions\r\n","class SplashScreen {\r\n constructor() {\r\n this.enterBtn = document.getElementById('app-enter')\r\n this.splashScreen = document.getElementById('splash-screen')\r\n this.headerNav = document.getElementById('header-nav')\r\n this.footerNav = document.getElementById('footer-nav')\r\n this.events()\r\n }\r\n\r\n events() {\r\n // Open and Close the Nav Menu\r\n if (this.enterBtn) {\r\n this.enterBtn.addEventListener('click', () => this.enterApp())\r\n }\r\n }\r\n\r\n enterApp() {\r\n this.splashScreen.classList.add('close')\r\n setTimeout(() => {\r\n this.headerNav.classList.add('in-view')\r\n this.footerNav.classList.add('in-view')\r\n this.splashScreen.classList.add('hidden')\r\n }, 600)\r\n setTimeout(() => {\r\n this.headerNav.classList.remove('out-of-view')\r\n this.footerNav.classList.remove('out-of-view')\r\n this.headerNav.classList.remove('in-view')\r\n this.footerNav.classList.remove('in-view')\r\n }, 2000)\r\n }\r\n}\r\n\r\nexport default SplashScreen\r\n","class Test {\r\n constructor() {\r\n console.log('This Module is for testing purposes')\r\n }\r\n}\r\n\r\nexport default Test\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Our modules / classes\r\n// Import modules e.g import MobileMenu from \"./modules/MobileMenu\"\r\nimport Test from './modules/TestModule'\r\nimport NavControl from './modules/NavControl'\r\nimport CollapsePanel from './modules/CollapsePanel'\r\nimport SplashScreen from './modules/SplashScreen'\r\nimport PageTransitions from './modules/PageTransitions'\r\n\r\n// Instantiate a new object using our modules/classes\r\n// e.g var mobileMenu = new MobileMenu()\r\n\r\nconst testModule = new Test()\r\nconst navControl = new NavControl()\r\nconst collapsePanel = new CollapsePanel()\r\nconst splashScreen = new SplashScreen()\r\nconst pageTransitions = new PageTransitions()\r\n"],"names":["CollapsePanel","constructor","toggles","document","querySelectorAll","init","addEventListener","addToggleCollapseListener","forEach","toggle","parentNode","classList","addNewToggleCollapseListener","Nav","toggleMenuBtn","getElementById","toggleSlideOutMenu","accordions","toggleCollapse","events","toggleNavMenu","body","setTimeout","accordion","remove","PageTransitions","addLinkClickListener","links","link","e","preventDefault","isExternalLink","setAttribute","loadContent","getAttribute","addNewLinkClickListener","newlinks","console","log","targetUrl","elementId","fetch","then","response","text","data","updateContent","history","pushState","catch","error","contentContainer","parsedData","DOMParser","parseFromString","targetElement","newContent","innerHTML","collapsePanel","currentDomain","window","location","hostname","linkDomain","SplashScreen","enterBtn","splashScreen","headerNav","footerNav","enterApp","add","Test","NavControl","testModule","navControl","pageTransitions"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://starter/./src/modules/CollapsePanel.js","webpack://starter/./src/modules/NavControl.js","webpack://starter/./src/modules/PageTransitions.js","webpack://starter/./src/modules/SplashScreen.js","webpack://starter/./src/modules/TestModule.js","webpack://starter/webpack/bootstrap","webpack://starter/webpack/runtime/define property getters","webpack://starter/webpack/runtime/hasOwnProperty shorthand","webpack://starter/webpack/runtime/make namespace object","webpack://starter/./src/index.js"],"sourcesContent":["class CollapsePanel {\r\n constructor() {\r\n this.init()\r\n }\r\n\r\n init() {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n this.addToggleCollapseListener('.accordion-toggle')\r\n })\r\n }\r\n\r\n addToggleCollapseListener(selector) {\r\n this.toggles = document.querySelectorAll(selector)\r\n this.toggles.forEach((toggle) => {\r\n toggle.addEventListener('click', () => {\r\n toggle.parentNode.parentNode.classList.toggle('active')\r\n })\r\n })\r\n }\r\n \r\n}\r\n\r\nexport default CollapsePanel\r\n","class Nav {\r\n constructor() {\r\n this.toggleMenuBtn = document.getElementById('toggle-nav')\r\n this.toggleSlideOutMenu = document.getElementById('slide-out-menu')\r\n this.accordions = document.querySelectorAll('#slide-out-menu .accordion')\r\n this.init()\r\n }\r\n\r\n init() {\r\n // Open and Close the Nav Menu\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Check if fullscreen is supported\r\n if (document.documentElement.requestFullscreen) {\r\n // Request fullscreen\r\n document.documentElement.requestFullscreen()\r\n }\r\n\r\n this.toggleMenuBtn.addEventListener('click', () => this.toggleNavMenu())\r\n })\r\n }\r\n\r\n toggleNavMenu() {\r\n this.toggleMenuBtn.classList.toggle('active')\r\n this.toggleSlideOutMenu.classList.toggle('open')\r\n document.body.classList.toggle('noScroll')\r\n this.collapseAllAccordions()\r\n }\r\n\r\n collapseAllAccordions() {\r\n setTimeout(() => {\r\n this.accordions.forEach((accordion) => {\r\n accordion.classList.remove('active')\r\n })\r\n }, 600)\r\n }\r\n}\r\n\r\nexport default Nav\r\n","import CollapsePanel from './CollapsePanel'\r\nimport NavControl from './NavControl'\r\n\r\nclass PageTransitions {\r\n constructor() {\r\n this.init()\r\n }\r\n\r\n init() {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n this.addLinkClickListener('a')\r\n })\r\n }\r\n\r\n addLinkClickListener(selector) {\r\n this.links = document.querySelectorAll(selector)\r\n this.links.forEach((link) => {\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n this.navControl = new NavControl()\r\n if (this.navControl.toggleMenuBtn.classList.contains('active')) {\r\n this.navControl.toggleNavMenu()\r\n }\r\n if (this.isExternalLink(link)) {\r\n link.setAttribute('target', '_blank')\r\n window.open(link, '_blank')\r\n }\r\n if (!this.isExternalLink(link)) {\r\n this.animatePageTransition(() => {\r\n this.loadContent(link.getAttribute('href'), 'content-container')\r\n })\r\n }\r\n })\r\n })\r\n }\r\n\r\n animatePageTransition(callback) {\r\n const contentContainer = document.getElementById('content-container')\r\n\r\n // Add the transition class\r\n this.addTransitionClass(contentContainer)\r\n\r\n // Wait for the transition to complete\r\n callback() // Call the callback function (loading content) after the transition\r\n }\r\n\r\n addTransitionClass(element) {\r\n element.classList.add('page-transition')\r\n }\r\n\r\n removeTransitionClass(element) {\r\n element.classList.remove('page-transition')\r\n }\r\n\r\n loadContent(targetUrl, elementId) {\r\n const contentContainer = document.getElementById('content-container')\r\n\r\n fetch(targetUrl)\r\n .then((response) => response.text())\r\n .then((data) => {\r\n this.updateContent(data, elementId)\r\n history.pushState(null, null, targetUrl)\r\n // Trigger removal of transition class after fetching data\r\n this.removeTransitionClass(contentContainer)\r\n })\r\n .catch((error) => console.error('Error fetching content:', error))\r\n }\r\n\r\n updateContent(data, elementId) {\r\n const contentContainer = document.getElementById('content-container')\r\n const parsedData = new DOMParser().parseFromString(data, 'text/html')\r\n const targetElement = parsedData.getElementById(elementId)\r\n\r\n if (targetElement) {\r\n const newContent = targetElement.innerHTML\r\n\r\n // Update the content container\r\n contentContainer.innerHTML = newContent\r\n\r\n // Update the page title\r\n const newTitle = parsedData.querySelector('title')\r\n if (newTitle) {\r\n document.title = newTitle.textContent\r\n }\r\n\r\n // Other dynamic updates can go here, for example:\r\n // const newMetaDescription = parsedData.querySelector('meta[name=\"description\"]');\r\n // if (newMetaDescription) {\r\n // const currentMetaDescription = document.querySelector('meta[name=\"description\"]');\r\n // currentMetaDescription.setAttribute('content', newMetaDescription.getAttribute('content'));\r\n // }\r\n\r\n // Initialize or update dynamic components\r\n this.collapsePanel = new CollapsePanel()\r\n this.collapsePanel.addToggleCollapseListener('#content-container .accordion-toggle')\r\n this.addLinkClickListener('#content-container a')\r\n } else {\r\n console.error(`Element with ID '${elementId}' not found in the fetched data`)\r\n }\r\n }\r\n\r\n // Function to check if a link is external\r\n isExternalLink(link) {\r\n const currentDomain = window.location.hostname\r\n const linkDomain = link.hostname\r\n\r\n return linkDomain !== currentDomain\r\n }\r\n}\r\n\r\nexport default PageTransitions\r\n","class SplashScreen {\r\n constructor() {\r\n this.splashScreen = document.getElementById('splash-screen')\r\n this.enterButton = document.getElementById('app-enter')\r\n this.headerNav = document.getElementById('header-nav')\r\n this.footerNav = document.getElementById('footer-nav')\r\n\r\n this.init()\r\n }\r\n\r\n init() {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n this.checkFirstVisit()\r\n })\r\n }\r\n\r\n checkFirstVisit() {\r\n if (!sessionStorage.getItem('visited')) {\r\n this.showSplashScreen()\r\n this.addEventListeners()\r\n }\r\n }\r\n\r\n showSplashScreen() {\r\n this.splashScreen.classList.remove('hidden')\r\n this.headerNav.classList.add('out-of-view')\r\n this.footerNav.classList.add('out-of-view')\r\n }\r\n\r\n hideSplashScreen() {\r\n this.splashScreen.classList.add('close')\r\n setTimeout(() => {\r\n this.headerNav.classList.add('in-view')\r\n this.footerNav.classList.add('in-view')\r\n this.splashScreen.classList.add('hidden')\r\n }, 600)\r\n setTimeout(() => {\r\n this.headerNav.classList.remove('out-of-view')\r\n this.footerNav.classList.remove('out-of-view')\r\n this.headerNav.classList.remove('in-view')\r\n this.footerNav.classList.remove('in-view')\r\n }, 2000)\r\n }\r\n\r\n addEventListeners() {\r\n this.enterButton.addEventListener('click', () => {\r\n this.hideSplashScreen()\r\n sessionStorage.setItem('visited', true)\r\n })\r\n }\r\n}\r\n\r\nexport default SplashScreen\r\n","class Test {\r\n constructor() {\r\n console.log('This Module is for testing purposes')\r\n }\r\n}\r\n\r\nexport default Test\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Our modules / classes\r\n// Import modules e.g import MobileMenu from \"./modules/MobileMenu\"\r\nimport Test from './modules/TestModule'\r\nimport NavControl from './modules/NavControl'\r\nimport CollapsePanel from './modules/CollapsePanel'\r\nimport SplashScreen from './modules/SplashScreen'\r\nimport PageTransitions from './modules/PageTransitions'\r\n\r\n// Instantiate a new object using our modules/classes\r\n// e.g var mobileMenu = new MobileMenu()\r\n\r\nconst testModule = new Test()\r\nconst navControl = new NavControl()\r\nconst collapsePanel = new CollapsePanel()\r\nconst splashScreen = new SplashScreen()\r\nconst pageTransitions = new PageTransitions()\r\n"],"names":["CollapsePanel","constructor","init","document","addEventListener","addToggleCollapseListener","selector","toggles","querySelectorAll","forEach","toggle","parentNode","classList","Nav","toggleMenuBtn","getElementById","toggleSlideOutMenu","accordions","documentElement","requestFullscreen","toggleNavMenu","body","collapseAllAccordions","setTimeout","accordion","remove","NavControl","PageTransitions","addLinkClickListener","links","link","e","preventDefault","navControl","contains","isExternalLink","setAttribute","window","open","animatePageTransition","loadContent","getAttribute","callback","contentContainer","addTransitionClass","element","add","removeTransitionClass","targetUrl","elementId","fetch","then","response","text","data","updateContent","history","pushState","catch","error","console","parsedData","DOMParser","parseFromString","targetElement","newContent","innerHTML","newTitle","querySelector","title","textContent","collapsePanel","currentDomain","location","hostname","linkDomain","SplashScreen","splashScreen","enterButton","headerNav","footerNav","checkFirstVisit","sessionStorage","getItem","showSplashScreen","addEventListeners","hideSplashScreen","setItem","Test","log","testModule","pageTransitions"],"sourceRoot":""} \ No newline at end of file diff --git a/header.php b/header.php index 6a5d146..7acf296 100644 --- a/header.php +++ b/header.php @@ -3,7 +3,7 @@
- + + +