{"version":3,"file":"main.js","sources":["../../src/js/parts/header.js","../../src/js/parts/faq.js","../../src/js/parts/expertise.js","../../src/js/parts/form.js","../../src/js/main.js"],"sourcesContent":["export const headerFunc = (toggle, up, scrollToElement) => {\r\n const body = document.querySelector('body');\r\n const scrollUp = 'scroll-up';\r\n const scrollDown = 'scroll-down';\r\n let lastScroll = 0;\r\n\r\n window.addEventListener('scroll', () => {\r\n if (!header.classList.contains('stopProg')) {\r\n const currentScroll = window.pageYOffset;\r\n if (currentScroll <= 0) {\r\n body.classList.remove(scrollUp);\r\n return;\r\n }\r\n\r\n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\r\n body.classList.remove(scrollUp);\r\n body.classList.add(scrollDown);\r\n } else if (\r\n currentScroll < lastScroll &&\r\n body.classList.contains(scrollDown)\r\n ) {\r\n body.classList.remove(scrollDown);\r\n body.classList.add(scrollUp);\r\n }\r\n lastScroll = currentScroll;\r\n } else {\r\n lastScroll = 0;\r\n }\r\n });\r\n\r\n const header = document.querySelector('.header');\r\n const navMenu = document.querySelector('.header__nav');\r\n navMenu.addEventListener('mouseover', changeHeader);\r\n\r\n function changeHeader(e) {\r\n const width = window.innerWidth;\r\n\r\n if (width > 1024) {\r\n if (!header.classList.contains('stopProg')) {\r\n const isFirst = e.target.closest('.flex');\r\n const hasClass = e.target.closest('.menu-item-has-children');\r\n const isSubA = e.target.closest('li').closest('.sub-menu');\r\n\r\n if (isFirst) {\r\n header.classList.add('hoveredHeader');\r\n }\r\n\r\n if (hasClass) {\r\n header.classList.add('fixedDubble');\r\n body.classList.add('bodyOverlay');\r\n }\r\n\r\n if (isSubA) {\r\n e.target.closest('.sub-menu').classList.add('hovered');\r\n }\r\n\r\n e.target.onmouseout = function (event) {\r\n header.classList.remove('fixedDubble');\r\n header.classList.remove('hoveredHeader');\r\n body.classList.remove('bodyOverlay');\r\n if (e.target.closest('.sub-menu')) {\r\n e.target.closest('.sub-menu').classList.remove('hovered');\r\n }\r\n };\r\n }\r\n }\r\n }\r\n\r\n const hamburgerButton = document.querySelector('.hamburger');\r\n hamburgerButton.addEventListener('click', showNavBox);\r\n\r\n function showNavBox(e) {\r\n e.preventDefault();\r\n\r\n hamburgerButton.classList.toggle('active');\r\n body.classList.toggle('overhideMob');\r\n toggle(navMenu, {\r\n display: 'flex',\r\n });\r\n }\r\n\r\n const parentItems = navMenu.querySelectorAll('.menu-item-has-children');\r\n\r\n parentItems.forEach(el => {\r\n el.addEventListener('click', openSubNav);\r\n });\r\n\r\n function openSubNav(e) {\r\n const width = window.innerWidth;\r\n\r\n if (width <= 1024) {\r\n const nav = e.currentTarget.querySelector('.sub-menu');\r\n\r\n if (e.target.closest('.sub-menu')) {\r\n e.stopPropagation();\r\n } else {\r\n e.preventDefault();\r\n e.currentTarget.classList.toggle('opened');\r\n navMenu.classList.toggle('expond');\r\n }\r\n }\r\n }\r\n\r\n const ankors = document.querySelectorAll('.ankor > a, a.ankor');\r\n\r\n if (ankors) {\r\n ankors.forEach(el => {\r\n el.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n const width = window.innerWidth;\r\n const targ = e.target.getAttribute('href');\r\n const targetH = document.querySelector(targ);\r\n let offset = 0;\r\n\r\n if (targ && targetH) {\r\n if(width <= 1024 && !e.target.closest('.menu-item-has-children') || width > 1024) {\r\n header.classList.add('stopProg');\r\n body.classList.remove(scrollUp);\r\n body.classList.add(scrollDown);\r\n }\r\n\r\n if (!targetH.classList.contains('noOffset')) {\r\n if (width > 1024) {\r\n header.classList.remove('fixedDubble');\r\n header.classList.remove('hoveredHeader');\r\n body.classList.remove('bodyOverlay');\r\n\r\n const subNavs = header.querySelectorAll('.sub-menu');\r\n subNavs.forEach(el => {\r\n el.classList.remove('hovered');\r\n });\r\n\r\n offset = -80;\r\n } else {\r\n offset = -64;\r\n }\r\n }\r\n\r\n if (width <= 1024) {\r\n if(!e.target.closest('.menu-item-has-children')) {\r\n hamburgerButton.classList.remove('active');\r\n body.classList.remove('overhideMob');\r\n up(navMenu);\r\n }\r\n }\r\n\r\n if(width <= 1024 && !e.target.closest('.menu-item-has-children') || width > 1024) {\r\n const options = {\r\n offset: offset,\r\n duration: 700,\r\n };\r\n \r\n scrollToElement(targetH, options);\r\n\r\n setTimeout(() => {\r\n header.classList.remove('stopProg');\r\n }, '1000');\r\n }\r\n } else {\r\n const protocol = window.location.protocol;\r\n const host = document.location.host;\r\n const fullUrl = window.location.href;\r\n const languageCodeRegex = /\\/([a-z]{2})\\//;\r\n const match = fullUrl.match(languageCodeRegex);\r\n const languageCode = match ? `/${match[1]}` : '';\r\n\r\n const url = protocol + '//' + host + languageCode + targ;\r\n\r\n console.log(url);\r\n\r\n window.location.href = url;\r\n }\r\n });\r\n });\r\n }\r\n};\r\n","export const faqFunc = (Accordion) => {\r\n const accordeon = document.querySelectorAll('.faq__container');\r\n\r\n if(accordeon) {\r\n const accOptions = {\r\n duration: 300,\r\n }\r\n\r\n accordeon.forEach(el => {\r\n new Accordion(el, accOptions);\r\n })\r\n }\r\n}","export const expertiseFunc = (Accordion) => {\r\n const accordeon = document.querySelectorAll('.expertise__container');\r\n\r\n if(accordeon) {\r\n const accOptions = {\r\n duration: 300,\r\n }\r\n\r\n accordeon.forEach(el => {\r\n new Accordion(el, accOptions);\r\n })\r\n }\r\n}","export const formFunc = (isEmail, isMobilePhone, isEmpty, axios) => {\r\n \r\n async function sendForm(form) {\r\n const ajaxurl = '/wp-admin/admin-ajax.php';\r\n const headers = { \"Content-Type\": \"multipart/form-data\" };\r\n const myFormData = new FormData(form);\r\n const params = Object.fromEntries(myFormData.entries());\r\n\r\n try {\r\n const responce = await axios.get(ajaxurl, {params}, {headers});\r\n if(responce.data !== 'error') {\r\n formEnd(form, true);\r\n } else {\r\n formEnd(form, false);\r\n }\r\n \r\n } catch(error) {\r\n formEnd(form, false);\r\n }\r\n }\r\n\r\n function formEnd(form, status) {\r\n if(status) {\r\n document.getElementById('seccessPopup').classList.add('opened');\r\n } else {\r\n document.getElementById('errorPopup').classList.add('opened');\r\n }\r\n\r\n setTimeout(() => form.reset(), 300);\r\n }\r\n\r\n const closeEls = document.querySelectorAll('.popup__close, .popup__underlay, .popup__closebtn');\r\n\r\n closeEls.forEach(el => {\r\n el.addEventListener('click', e => {\r\n document.querySelector('.popup.opened').classList.remove('opened');\r\n });\r\n });\r\n\r\n\r\n const forms = document.querySelectorAll('.submitForm');\r\n\r\n forms.forEach(form => {\r\n form.addEventListener('submit', submitForm);\r\n });\r\n\r\n function submitForm(e) {\r\n e.preventDefault();\r\n\r\n removeErrors();\r\n\r\n const fileds = e.target.elements;\r\n let errors = 0;\r\n\r\n Array.from(fileds).forEach(field => {\r\n const isReq = field.dataset.required;\r\n\r\n if(isReq) {\r\n const type = field.type;\r\n const val = field.value;\r\n\r\n if(checkField(field, type, val)) {\r\n errors += 1;\r\n }\r\n }\r\n\r\n field.addEventListener('focus', removeErrors);\r\n field.addEventListener('change', removeErrors);\r\n });\r\n\r\n if(!errors) {\r\n sendForm(e.target);\r\n }\r\n }\r\n\r\n function checkField(field, type, val) {\r\n let errors = false;\r\n\r\n if(type === 'text') {\r\n if(isEmpty(val)) {\r\n field.closest('label').classList.add('error');\r\n errors = true;\r\n }\r\n }\r\n\r\n if(type === 'email') {\r\n if(isEmpty(val) || !isEmail(val)) {\r\n field.closest('label').classList.add('error');\r\n errors = true;\r\n }\r\n }\r\n\r\n if(type === 'tel') {\r\n // if(isEmpty(val) || !isMobilePhone(val, ['uk-UA'])) {\r\n if(isEmpty(val)) {\r\n field.closest('label').classList.add('error');\r\n errors = true;\r\n }\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n function removeErrors() {\r\n const errors = document.querySelectorAll('.error');\r\n\r\n errors.forEach(el => {\r\n el.classList.remove('error');\r\n });\r\n }\r\n}","import { toggle, up } from \"slide-element\";\r\nimport Accordion from 'accordion-js';\r\nimport 'accordion-js/dist/accordion.min.css';\r\nimport isEmail from 'validator/lib/isEmail';\r\nimport isMobilePhone from 'validator/lib/isMobilePhone';\r\nimport isEmpty from 'validator/lib/isEmpty';\r\nimport scrollToElement from 'scroll-to-element';\r\nimport axios from 'axios';\r\n\r\nimport {headerFunc} from \"./parts/header.js\";\r\nimport {faqFunc} from \"./parts/faq.js\";\r\nimport {expertiseFunc} from \"./parts/expertise.js\";\r\nimport {formFunc} from \"./parts/form.js\";\r\n\r\nheaderFunc(toggle, up, scrollToElement);\r\nfaqFunc(Accordion);\r\nexpertiseFunc(Accordion);\r\nformFunc(isEmail, isMobilePhone, isEmpty, axios);"],"names":["headerFunc","toggle","up","scrollToElement","body","scrollUp","scrollDown","lastScroll","header","currentScroll","navMenu","changeHeader","isFirst","hasClass","isSubA","event","hamburgerButton","showNavBox","el","openSubNav","ankors","e","width","targ","targetH","offset","protocol","host","fullUrl","languageCodeRegex","match","languageCode","url","faqFunc","Accordion","accordeon","accOptions","expertiseFunc","formFunc","isEmail","isMobilePhone","isEmpty","axios","sendForm","form","ajaxurl","headers","myFormData","params","formEnd","status","submitForm","removeErrors","fileds","errors","field","type","val","checkField"],"mappings":"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"}