vgapp 0.4.3 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/vgapp.css +1 -0
- package/build/vgapp.css.map +1 -1
- package/build/vgapp.js +1 -1
- package/build/vgapp.js.map +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
package/build/vgapp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vgapp.js","mappings":"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","sources":["webpack://vg/webpack/bootstrap","webpack://vg/webpack/runtime/define property getters","webpack://vg/webpack/runtime/hasOwnProperty shorthand","webpack://vg/webpack/runtime/make namespace object","webpack://vg/./app/utils/js/functions.js","webpack://vg/./app/utils/js/dom/selectors.js","webpack://vg/./app/utils/js/dom/data.js","webpack://vg/./app/utils/js/dom/manipulator.js","webpack://vg/./app/utils/js/components/params.js","webpack://vg/./app/utils/js/dom/event.js","webpack://vg/./app/modules/module-fn.js","webpack://vg/./app/utils/js/components/animation.js","webpack://vg/./app/modules/base-module.js","webpack://vg/./app/modules/vgcollapse/js/vgcollapse.js","webpack://vg/./app/modules/vgcollapse/index.js","webpack://vg/./app/utils/js/components/placement.js","webpack://vg/./app/utils/js/components/overflow.js","webpack://vg/./app/utils/js/components/backdrop.js","webpack://vg/./app/modules/vgdropdown/js/vgdropdown.js","webpack://vg/./app/modules/vgdropdown/index.js","webpack://vg/./app/utils/js/components/scrollbar.js","webpack://vg/./app/modules/vgmodal/js/vgmodal.js","webpack://vg/./app/utils/js/components/templater.js","webpack://vg/./app/modules/vgformsender/js/hideshowpass.js","webpack://vg/./app/modules/vgformsender/js/vgformsender.js","webpack://vg/./app/modules/vgformsender/index.js","webpack://vg/./app/utils/js/dom/cookie.js","webpack://vg/./app/modules/vglawcookie/js/vglawcookie.js","webpack://vg/./app/modules/vglawcookie/index.js","webpack://vg/./app/modules/vgmodal/index.js","webpack://vg/./app/utils/js/components/responsive.js","webpack://vg/./app/modules/vgnav/js/vgnav.js","webpack://vg/./app/modules/vgnav/index.js","webpack://vg/./app/modules/vgrollup/js/vgrollup.js","webpack://vg/./app/modules/vgrollup/index.js","webpack://vg/./app/modules/vgselect/js/vgselect.js","webpack://vg/./app/modules/vgselect/index.js","webpack://vg/./app/modules/vgsidebar/js/vgsidebar.js","webpack://vg/./app/modules/vgsidebar/index.js","webpack://vg/./app/modules/vgspy/js/vgspy.js","webpack://vg/./app/modules/vgspy/index.js","webpack://vg/./app/modules/vgtabs/js/vgtabs.js","webpack://vg/./app/modules/vgtabs/index.js","webpack://vg/./app/modules/vgtoast/js/vgtoast.js","webpack://vg/./app/modules/vgtoast/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\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};","/**\r\n * Набор скриптов для широкого применения\r\n */\r\n\r\n/**\r\n * Экранирование селекторов для корректной работы идентификаторов\r\n * @param {string} selector\r\n * @returns {string}\r\n */\r\nconst parseSelector = selector => {\r\n\tif (selector && window.CSS && window.CSS.escape) {\r\n\t\t// document.querySelector needs escaping to handle IDs (html5+) containing for instance /\r\n\t\tselector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\r\n\t}\r\n\r\n\treturn selector\r\n}\r\n\r\n/**\r\n * Если что-нибудь в объекте\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isEmptyObj(obj) {\r\n\tfor (let prop in obj) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(obj, prop)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nconst getElement = object => {\r\n\t// it's a jQuery object or a node element\r\n\tif (isElement(object)) {\r\n\t\treturn object.jquery ? object[0] : object\r\n\t}\r\n\r\n\tif (typeof object === 'string' && object.length > 0) {\r\n\t\treturn document.querySelector(parseSelector(object))\r\n\t}\r\n\r\n\treturn null\r\n}\r\n\r\n/**\r\n * isElement\r\n * @param object\r\n * @returns {boolean}\r\n */\r\nconst isElement = object => {\r\n\tif (!isObject(object)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn typeof object.nodeType !== 'undefined'\r\n}\r\n\r\n/**\r\n * isDisabled\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nconst isDisabled = element => {\r\n\tif (!element || element.nodeType !== Node.ELEMENT_NODE) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (element.classList.contains('disabled')) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (typeof element.disabled !== 'undefined') {\r\n\t\treturn element.disabled\r\n\t}\r\n\r\n\treturn element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\r\n}\r\n\r\n/**\r\n * isVisible\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nfunction isVisible (element) {\r\n\tif (!isElement(element) || element.getClientRects().length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\tconst elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\r\n\tconst closedDetails = element.closest('details:not([open])')\r\n\r\n\tif (!closedDetails) {\r\n\t\treturn elementIsVisible\r\n\t}\r\n\r\n\tif (closedDetails !== element) {\r\n\t\tconst summary = element.closest('summary')\r\n\t\tif (summary && summary.parentNode !== closedDetails) {\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tif (summary === null) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementIsVisible\r\n}\r\n\r\n/**\r\n * isObject\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isObject(obj) {\r\n\treturn obj && typeof obj === 'object'\r\n}\r\n\r\n/**\r\n * Приводим в порядок типы данных\r\n * @param value\r\n * @returns {any}\r\n */\r\nfunction normalizeData(value) {\r\n\tif (value === 'true') {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (value === 'false') {\r\n\t\treturn false\r\n\t}\r\n\r\n\tif (value === Number(value).toString()) {\r\n\t\treturn Number(value)\r\n\t}\r\n\r\n\tif (value === '' || value === 'null') {\r\n\t\treturn null\r\n\t}\r\n\r\n\tif (typeof value !== 'string') {\r\n\t\treturn value\r\n\t}\r\n\r\n\ttry {\r\n\t\treturn JSON.parse(decodeURIComponent(value))\r\n\t} catch {\r\n\t\treturn value\r\n\t}\r\n}\r\n\r\n/**\r\n * Удаляем элементы с массива\r\n * @param arr\r\n * @param el\r\n */\r\nfunction removeElementArray(arr, el) {\r\n\treturn arr.filter((item) => !el.includes(item));\r\n}\r\n\r\n/**\r\n * Глубокое объединение объектов\r\n * @param objects\r\n * @returns {*}\r\n */\r\nfunction mergeDeepObject(...objects) {\r\n\tconst isObject = obj => obj && typeof obj === 'object';\r\n\r\n\tif (!isObject) return;\r\n\r\n\treturn objects.reduce((prev, obj) => {\r\n\t\tObject.keys(obj).forEach(key => {\r\n\t\t\tconst pVal = prev[key];\r\n\t\t\tconst oVal = obj[key];\r\n\r\n\t\t\tif (Array.isArray(pVal) && Array.isArray(oVal)) {\r\n\t\t\t\tprev[key] = pVal.concat(...oVal);\r\n\t\t\t}\r\n\t\t\telse if (isObject(pVal) && isObject(oVal)) {\r\n\t\t\t\tprev[key] = mergeDeepObject(pVal, oVal);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tprev[key] = oVal;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn prev;\r\n\t}, {});\r\n}\r\n\r\n/**\r\n * Callback\r\n * @param possibleCallback\r\n * @param args\r\n * @param defaultValue\r\n * @returns {*}\r\n */\r\nfunction execute(possibleCallback, args = [], defaultValue = possibleCallback) {\r\n\treturn typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\r\n}\r\n\r\n/**\r\n * Transition\r\n * @param callback\r\n * @param transitionElement\r\n * @param waitForTransition\r\n */\r\nconst TRANSITION_END = 'transitionend';\r\nconst MILLISECONDS_MULTIPLIER = 1000;\r\n\r\nfunction executeAfterTransition (callback, transitionElement, waitForTransition = true, timeOutMs) {\r\n\tif (!waitForTransition) {\r\n\t\texecute(callback)\r\n\t\treturn\r\n\t}\r\n\r\n\tconst durationPadding = 5\r\n\tconst emulatedDuration = timeOutMs ? timeOutMs : getTransitionDurationFromElement(transitionElement) + durationPadding;\r\n\r\n\tlet called = false\r\n\r\n\tconst handler = ({ target }) => {\r\n\t\tif (target !== transitionElement) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tcalled = true\r\n\t\ttransitionElement.removeEventListener(TRANSITION_END, handler)\r\n\t\texecute(callback)\r\n\t}\r\n\r\n\ttransitionElement.addEventListener(TRANSITION_END, handler)\r\n\tsetTimeout(() => {\r\n\t\tif (!called) {\r\n\t\t\ttriggerTransitionEnd(transitionElement)\r\n\t\t}\r\n\t}, emulatedDuration)\r\n}\r\n\r\nconst getTransitionDurationFromElement = element => {\r\n\tif (!element) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// Get transition-duration of the element\r\n\tlet { transitionDuration, transitionDelay } = window.getComputedStyle(element)\r\n\r\n\tconst floatTransitionDuration = Number.parseFloat(transitionDuration)\r\n\tconst floatTransitionDelay = Number.parseFloat(transitionDelay)\r\n\r\n\t// Return 0 if element or transition duration is not found\r\n\tif (!floatTransitionDuration && !floatTransitionDelay) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// If multiple durations are defined, take the first\r\n\ttransitionDuration = transitionDuration.split(',')[0]\r\n\ttransitionDelay = transitionDelay.split(',')[0]\r\n\r\n\treturn (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\r\n}\r\n\r\nconst triggerTransitionEnd = element => {\r\n\telement.dispatchEvent(new Event(TRANSITION_END))\r\n}\r\n\r\n/**\r\n * Трюк для перезапуска анимации элемента\r\n *\r\n * @param {HTMLElement} element\r\n * @return void\r\n *\r\n * @смотри https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\r\n */\r\nconst reflow = element => {\r\n\telement.offsetHeight // eslint-disable-line no-unused-expressions\r\n}\r\n\r\n/**\r\n * Noop\r\n */\r\nconst noop = () => {};\r\n\r\n/**\r\n * Генерация случайной строки\r\n */\r\nfunction makeRandomString(length = 7) {\r\n\tlet result = '';\r\n\tconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\tconst charactersLength = characters.length;\r\n\tlet counter = 0;\r\n\twhile (counter < length) {\r\n\t\tresult += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n\t\tcounter += 1;\r\n\t}\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Транслитерация символов с латиницы на кириллицу и обратно\r\n * @param text\r\n * @param enToRu\r\n * @returns {*}\r\n */\r\nfunction transliterate(text, enToRu) {\r\n\tlet ru = \"й ц у к е н г ш щ з х ъ ф ы в а п р о л д ж э я ч с м и т ь б ю\".split(/ +/g);\r\n\tlet en = \"q w e r t y u i o p [ ] a s d f g h j k l ; ' z x c v b n m , .\".split(/ +/g);\r\n\tlet x;\r\n\r\n\tfor (x = 0; x < ru.length; x++) {\r\n\t\ttext = text.split(enToRu ? en[x] : ru[x]).join(enToRu ? ru[x] : en[x]);\r\n\t\ttext = text.split(enToRu ? en[x].toUpperCase() : ru[x].toUpperCase()).join(enToRu ? ru[x].toUpperCase() : en[x].toUpperCase());\r\n\t}\r\n\r\n\treturn text;\r\n}\r\n\r\n/**\r\n * Возвращает предыдущий/следующий элемент списка.\r\n *\r\n * @param {array} list The list of elements\r\n * @param activeElement The active element\r\n * @param shouldGetNext Choose to get next or previous element\r\n * @param isCycleAllowed\r\n * @return {Element|elem} The proper element\r\n */\r\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\r\n\tconst listLength = list.length\r\n\tlet index = list.indexOf(activeElement)\r\n\r\n\t// if the element does not exist in the list return an element\r\n\t// depending on the direction and if cycle is allowed\r\n\tif (index === -1) {\r\n\t\treturn !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\r\n\t}\r\n\r\n\tindex += shouldGetNext ? 1 : -1\r\n\r\n\tif (isCycleAllowed) {\r\n\t\tindex = (index + listLength) % listLength\r\n\t}\r\n\r\n\treturn list[Math.max(0, Math.min(index, listLength - 1))]\r\n}\r\n\r\n/**\r\n *\r\n */\r\nconst isRTL = () => document.documentElement.dir === 'rtl'\r\n\r\nexport {isElement, isVisible, isDisabled, isObject, isEmptyObj, mergeDeepObject, removeElementArray, normalizeData, execute, executeAfterTransition, reflow, noop, makeRandomString, isRTL, transliterate, getElement, getNextActiveElement}","/**\r\n * Работа с DOM\r\n * @param selector\r\n * @returns {*}\r\n */\r\nimport {isElement} from \"../functions\";\r\n\r\nconst parseSelector = selector => {\r\n\tif (selector && window.CSS && window.CSS.escape) {\r\n\t\tselector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\r\n\t}\r\n\r\n\treturn selector\r\n}\r\n\r\nconst getSelector = element => {\r\n\tlet selector = element.getAttribute('data-vg-target');\r\n\r\n\tif (!selector || selector === '#') {\r\n\t\tlet hrefAttribute = element.getAttribute('href');\r\n\t\tif (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\r\n\t\t\threfAttribute = `#${hrefAttribute.split('#')[1]}`;\r\n\t\t}\r\n\r\n\t\tselector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\r\n\t}\r\n\r\n\treturn selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\r\n}\r\n\r\nconst Selectors = {\r\n\tfind(selector, element = document.documentElement) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\treturn selector;\r\n\t\t} else {\r\n\t\t\treturn Element.prototype.querySelector.call(element, selector);\r\n\t\t}\r\n\t},\r\n\r\n\tfindAll(selector, container = document.documentElement) {\r\n\t\treturn [].concat(...Element.prototype.querySelectorAll.call(container, selector));\r\n\t},\r\n\r\n\tgetSelectorFromElement(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\tif (selector) return Selectors.find(selector) ? selector : null\r\n\t\treturn null\r\n\t},\r\n\r\n\tgetElementFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.find(selector) : null\r\n\t},\r\n\r\n\tgetMultipleElementsFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.findAll(selector) : []\r\n\t},\r\n\r\n\tparents(element, selector) {\r\n\t\tconst parents = []\r\n\t\tlet ancestor = element.parentNode.closest(selector)\r\n\r\n\t\twhile (ancestor) {\r\n\t\t\tparents.push(ancestor)\r\n\t\t\tancestor = ancestor.parentNode.closest(selector)\r\n\t\t}\r\n\r\n\t\treturn parents\r\n\t},\r\n\r\n\tnext(element, selector) {\r\n\t\tlet next = element.nextElementSibling\r\n\r\n\t\twhile (next) {\r\n\t\t\tif (next.matches(selector)) {\r\n\t\t\t\treturn [next]\r\n\t\t\t}\r\n\r\n\t\t\tnext = next.nextElementSibling\r\n\t\t}\r\n\r\n\t\treturn []\r\n\t},\r\n\r\n\tprev(element, selector) {\r\n\t\tlet previous = element.previousElementSibling\r\n\r\n\t\twhile (previous) {\r\n\t\t\tif (previous.matches(selector)) {\r\n\t\t\t\treturn [previous]\r\n\t\t\t}\r\n\r\n\t\t\tprevious = previous.previousElementSibling\r\n\t\t}\r\n\r\n\t\treturn []\r\n\t}\r\n}\r\n\r\nexport default Selectors;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap data.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт работает с коллекцией модулей. Подробнее тут https://learn.javascript.ru/map-set\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst elementMap = new Map()\r\n\r\nexport default {\r\n\tset(element, key, instance) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\telementMap.set(element, new Map())\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\t\tif (!instanceMap.has(key) && instanceMap.size !== 0) {\r\n\t\t\tconsole.error(`VGApp не допускает более одного экземпляра для каждого элемента. Связанный экземпляр: ${Array.from(instanceMap.keys())[0]}.`)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tinstanceMap.set(key, instance);\r\n\t},\r\n\r\n\tget(element, key) {\r\n\t\tif (elementMap.has(element)) {\r\n\t\t\treturn elementMap.get(element).get(key) || null\r\n\t\t}\r\n\r\n\t\treturn null\r\n\t},\r\n\r\n\tremove(element, key) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\r\n\t\tinstanceMap.delete(key);\r\n\r\n\t\tif (instanceMap.size === 0) {\r\n\t\t\telementMap.delete(element)\r\n\t\t}\r\n\t}\r\n}\r\n","import {isElement, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Манипуляции с атрибутами у элемента:\r\n * get (элемент, имя, флаг - вырезать data-) - метод выбирает значение атрибута по его имени, если в поле имени передать 'data' -> будут выбраны только дата атрибуты, если 'all' -> метод вернет значение всех атрибутов\r\n * has (элемент, имя) - есть ли атрибут у элемента\r\n * set (элемент, имя, значение) - установка у элемента атрибута или его изменение\r\n * remove (элемент, имя) - удаляет атрибут у элемента\r\n */\r\nconst Manipulator = {\r\n\tget(element, nameAttribute = 'data', isRemoveDataName = true) {\r\n\t\tif (!element) {\r\n\t\t\treturn {}\r\n\t\t}\r\n\r\n\t\tif (nameAttribute === 'data') {\r\n\t\t\tlet elmBase = ['data-vg-toggle', 'data-vg-target', 'data-vg-dismiss'],\r\n\t\t\t\tattributes = {};\r\n\r\n\t\t\tlet arr = [].filter.call(element.attributes, function (at) {\r\n\t\t\t\treturn /^data-/.test(at.name);\r\n\t\t\t});\r\n\r\n\t\t\tif (arr.length) {\r\n\t\t\t\tarr.forEach(function (v) {\r\n\t\t\t\t\tlet name = v.name;\r\n\r\n\t\t\t\t\tif (!elmBase.includes(name)) {\r\n\t\t\t\t\t\tif (isRemoveDataName) name = name.slice(5);\r\n\t\t\t\t\t\tattributes[name] = normalizeData(v.value)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn attributes;\r\n\t\t} else if (nameAttribute === 'all') {\r\n\t\t\treturn element.getAttributeNames().reduce((acc, name) => {\r\n\t\t\t\treturn {...acc, [name]: element.getAttribute(name)};\r\n\t\t\t}, {});\r\n\t\t} else {\r\n\t\t\treturn element.getAttribute(nameAttribute);\r\n\t\t}\r\n\t},\r\n\r\n\thas(element, nameAttribute) {\r\n\t\treturn element.hasAttribute(nameAttribute);\r\n\t},\r\n\r\n\tset(element, name, value) {\r\n\t\tif (isElement(element) && name) {\r\n\t\t\telement.setAttribute(name, value);\r\n\t\t}\r\n\t},\r\n\r\n\tremove(element, nameAttribute) {\r\n\t\tif (isElement(element) && nameAttribute) {\r\n\t\t\telement.removeAttribute(nameAttribute);\r\n\t\t}\r\n\t},\r\n\r\n\thide(el) {\r\n\t\tel.style.display = 'none';\r\n\t},\r\n\r\n\tshow(el, state = 'block') {\r\n\t\tel.style.display = state;\r\n\t},\r\n}\r\n\r\nexport {Manipulator}\r\n","import {isElement, mergeDeepObject, normalizeData} from \"../functions\";\r\nimport {Manipulator} from \"../dom/manipulator\";\r\n\r\nclass Params {\r\n\tconstructor(params, element = null) {\r\n\t\tthis._params = this.merge(params, element);\r\n\t}\r\n\r\n\tget() {\r\n\t\treturn this._params;\r\n\t}\r\n\r\n\tfromElement(element) {\r\n\t\treturn isElement(element) ? Manipulator.get(element) : {};\r\n\t}\r\n\r\n\tmerge(params, element) {\r\n\t\tlet mParams = mergeDeepObject(params, this.fromElement(element));\r\n\r\n\t\tfor (let key in mParams) {\r\n\t\t\tif (key.indexOf('-') !== -1) {\r\n\t\t\t\tlet keys = key.split('-'),\r\n\t\t\t\t\tvalue = normalizeData(mParams[key]);\r\n\r\n\t\t\t\tif (keys[0] in mParams) {\r\n\t\t\t\t\tif (keys[1] in mParams[keys[0]]) {\r\n\t\t\t\t\t\tmParams[keys[0]][keys[1]] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete mParams[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ('params' in mParams) {\r\n\t\t\tmParams = mergeDeepObject(mParams, mParams.params);\r\n\t\t\tdelete mParams.params;\r\n\t\t}\r\n\r\n\t\treturn mParams;\r\n\t}\r\n}\r\n\r\nexport default Params;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap event.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт для прослушивания события\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\r\nconst stripNameRegex = /\\..*/\r\nconst stripUidRegex = /::\\d+$/\r\nconst eventRegistry = {} // Events storage\r\nlet uidEvent = 1\r\nconst customEvents = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout'\r\n}\r\n\r\nconst nativeEvents = new Set([\r\n\t'click',\r\n\t'dblclick',\r\n\t'mouseup',\r\n\t'mousedown',\r\n\t'contextmenu',\r\n\t'mousewheel',\r\n\t'DOMMouseScroll',\r\n\t'mouseover',\r\n\t'mouseout',\r\n\t'mousemove',\r\n\t'selectstart',\r\n\t'selectend',\r\n\t'submit',\r\n\t'keydown',\r\n\t'keypress',\r\n\t'keyup',\r\n\t'orientationchange',\r\n\t'touchstart',\r\n\t'touchmove',\r\n\t'touchend',\r\n\t'touchcancel',\r\n\t'pointerdown',\r\n\t'pointermove',\r\n\t'pointerup',\r\n\t'pointerleave',\r\n\t'pointercancel',\r\n\t'popstate',\r\n\t'gesturestart',\r\n\t'gesturechange',\r\n\t'gestureend',\r\n\t'focus',\r\n\t'blur',\r\n\t'change',\r\n\t'reset',\r\n\t'select',\r\n\t'submit',\r\n\t'focusin',\r\n\t'focusout',\r\n\t'load',\r\n\t'unload',\r\n\t'beforeunload',\r\n\t'resize',\r\n\t'move',\r\n\t'DOMContentLoaded',\r\n\t'readystatechange',\r\n\t'error',\r\n\t'abort',\r\n\t'scroll'\r\n])\r\n\r\n/**\r\n * Приватные методы\r\n */\r\n\r\nfunction makeEventUid(element, uid) {\r\n\treturn (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\r\n}\r\n\r\nfunction getElementEvents(element) {\r\n\tconst uid = makeEventUid(element)\r\n\r\n\telement.uidEvent = uid\r\n\teventRegistry[uid] = eventRegistry[uid] || {}\r\n\r\n\treturn eventRegistry[uid]\r\n}\r\n\r\nfunction bootstrapHandler(element, fn) {\r\n\treturn function handler(event) {\r\n\t\thydrateObj(event, { delegateTarget: element })\r\n\r\n\t\tif (handler.oneOff) {\r\n\t\t\tEventHandler.off(element, event.type, fn)\r\n\t\t}\r\n\r\n\t\treturn fn.apply(element, [event])\r\n\t}\r\n}\r\n\r\nfunction bootstrapDelegationHandler(element, selector, fn) {\r\n\treturn function handler(event) {\r\n\t\tconst domElements = element.querySelectorAll(selector)\r\n\r\n\t\tfor (let { target } = event; target && target !== this; target = target.parentNode) {\r\n\t\t\tfor (const domElement of domElements) {\r\n\t\t\t\tif (domElement !== target) {\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\r\n\t\t\t\thydrateObj(event, { delegateTarget: target })\r\n\r\n\t\t\t\tif (handler.oneOff) {\r\n\t\t\t\t\tEventHandler.off(element, event.type, selector, fn)\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn fn.apply(target, [event])\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction findHandler(events, callable, delegationSelector = null) {\r\n\treturn Object.values(events)\r\n\t\t.find(event => event.callable === callable && event.delegationSelector === delegationSelector)\r\n}\r\n\r\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\r\n\tconst isDelegated = typeof handler === 'string'\r\n\t// TODO: выдает \"false\" вместо селектора, поэтому нужно проверить. boot\r\n\tconst callable = isDelegated ? delegationFunction : (handler || delegationFunction)\r\n\tlet typeEvent = getTypeEvent(originalTypeEvent)\r\n\r\n\tif (!nativeEvents.has(typeEvent)) {\r\n\t\ttypeEvent = originalTypeEvent\r\n\t}\r\n\r\n\treturn [isDelegated, callable, typeEvent]\r\n}\r\n\r\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\r\n\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\treturn\r\n\t}\r\n\r\n\tlet [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\r\n\t// in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\r\n\t// this prevents the handler from being dispatched the same way as mouseover or mouseout does\r\n\tif (originalTypeEvent in customEvents) {\r\n\t\tconst wrapFunction = fn => {\r\n\t\t\treturn function (event) {\r\n\t\t\t\tif (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\r\n\t\t\t\t\treturn fn.call(this, event)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcallable = wrapFunction(callable)\r\n\t}\r\n\r\n\tconst events = getElementEvents(element)\r\n\tconst handlers = events[typeEvent] || (events[typeEvent] = {})\r\n\tconst previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\r\n\r\n\tif (previousFunction) {\r\n\t\tpreviousFunction.oneOff = previousFunction.oneOff && oneOff\r\n\r\n\t\treturn\r\n\t}\r\n\r\n\tconst uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\r\n\tconst fn = isDelegated ?\r\n\t\tbootstrapDelegationHandler(element, handler, callable) :\r\n\t\tbootstrapHandler(element, callable)\r\n\r\n\tfn.delegationSelector = isDelegated ? handler : null\r\n\tfn.callable = callable\r\n\tfn.oneOff = oneOff\r\n\tfn.uidEvent = uid\r\n\thandlers[uid] = fn\r\n\r\n\telement.addEventListener(typeEvent, fn, isDelegated)\r\n}\r\n\r\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\r\n\tconst fn = findHandler(events[typeEvent], handler, delegationSelector)\r\n\r\n\tif (!fn) {\r\n\t\treturn\r\n\t}\r\n\r\n\telement.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\r\n\tdelete events[typeEvent][fn.uidEvent]\r\n}\r\n\r\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\r\n\tconst storeElementEvent = events[typeEvent] || {}\r\n\r\n\tfor (const [handlerKey, event] of Object.entries(storeElementEvent)) {\r\n\t\tif (handlerKey.includes(namespace)) {\r\n\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction getTypeEvent(event) {\r\n\t// allow to get the native events from namespaced events ('click.bs.button' --> 'click')\r\n\tevent = event.replace(stripNameRegex, '')\r\n\treturn customEvents[event] || event\r\n}\r\n\r\nfunction hydrateObj(obj, meta = {}) {\r\n\tfor (const [key, value] of Object.entries(meta)) {\r\n\t\ttry {\r\n\t\t\tobj[key] = value\r\n\t\t} catch {\r\n\t\t\tObject.defineProperty(obj, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget() {\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\treturn obj\r\n}\r\n\r\n/**\r\n * События\r\n * @type {{one(*, *, *, *): void, trigger(*, *, *): (null|*), off(*, *, *, *): void, on(*, *, *, *): void}}\r\n */\r\nconst EventHandler = {\r\n\t/**\r\n\t * Прослушиватель событий (элемент, событие (полный список смотри в константе nativeEvents, источник события или хендлер, функция обратного вызова))\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\ton(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, false)\r\n\t},\r\n\r\n\t/**\r\n\t * Прослушиватель событий, но замыкается и больше не повторяется на элементе\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\tone(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, true)\r\n\t},\r\n\r\n\t/**\r\n\t * Удаление обработчика\r\n\t * @param element\r\n\t * @param originalTypeEvent\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\toff(element, originalTypeEvent, handler, delegationFunction) {\r\n\t\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\t\tconst inNamespace = typeEvent !== originalTypeEvent\r\n\t\tconst events = getElementEvents(element)\r\n\t\tconst storeElementEvent = events[typeEvent] || {}\r\n\t\tconst isNamespace = originalTypeEvent.startsWith('.')\r\n\r\n\t\tif (typeof callable !== 'undefined') {\r\n\t\t\t// Simplest case: handler is passed, remove that listener ONLY.\r\n\t\t\tif (!Object.keys(storeElementEvent).length) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tremoveHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isNamespace) {\r\n\t\t\tfor (const elementEvent of Object.keys(events)) {\r\n\t\t\t\tremoveNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\r\n\t\t\tconst handlerKey = keyHandlers.replace(stripUidRegex, '')\r\n\r\n\t\t\tif (!inNamespace || originalTypeEvent.includes(handlerKey)) {\r\n\t\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Пользовательские события. Подробнее тут https://learn.javascript.ru/dispatch-events\r\n\t * @param element\r\n\t * @param event\r\n\t * @param args\r\n\t * @returns {*|null}\r\n\t */\r\n\ttrigger(element, event, args) {\r\n\t\tif (typeof event !== 'string' || !element) {\r\n\t\t\treturn null\r\n\t\t}\r\n\r\n\t\tlet bubbles = true;\r\n\t\tlet nativeDispatch = true;\r\n\t\tlet defaultPrevented = false;\r\n\r\n\t\tconst evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\r\n\r\n\t\tif (defaultPrevented) {\r\n\t\t\tevt.preventDefault()\r\n\t\t}\r\n\r\n\t\tif (nativeDispatch) {\r\n\t\t\telement.dispatchEvent(evt)\r\n\t\t}\r\n\r\n\t\treturn evt\r\n\t}\r\n}\r\n\r\nexport default EventHandler\r\n","import EventHandler from \"../utils/js/dom/event\";\r\nimport {isDisabled, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Тут собраны вспомогательные скрипты для работы модулей\r\n */\r\n\r\n/**\r\n * Набор svg элементов\r\n * @param name\r\n * @returns {*|{}}\r\n */\r\nconst getSVG = (name) => {\r\n\tconst svg = {\r\n\t\terror: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-success\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-2\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(252, 191, 191, .5)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-error-circle\" stroke=\"#F74444\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-error-line1\" d=\"M22.244224,22 L60.4279902,60.1837662\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path><path class=\"ui-error-line2\" d=\"M60.755776,21 L23.244224,59.8443492\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path></g></g></svg>',\r\n\t\tsuccess: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-error\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(117, 183, 152, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-success-circle\" id=\"Oval-2\" stroke=\"#A5DC86\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><polyline class=\"ui-success-path\" id=\"Path-2\" stroke=\"#A5DC86\" stroke-width=\"4\" points=\"19 38.8036813 31.1020744 54.8046875 63.299221 28\"></polyline></g></g></svg>',\r\n\t\twaiting: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-waiting\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(255, 218, 106, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-waiting-circle\" id=\"Oval-2\" stroke=\"#ffda6a\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-waiting-line1\" d=\"M43 63C54.598 63 64 53.598 64 42C64 30.402 54.598 21 43 21C31.402 21 22 30.402 22 42C22 53.598 31.402 63 43 63Z\" stroke-width=\"3\" stroke=\"#ffda6a\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path class=\"ui-waiting-line2\" d=\"M40.6667 32.6641V44.3307H52.3334\" stroke=\"#ffda6a\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></g></svg>',\r\n\t\tdots: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-three-dots-vertical\" viewBox=\"0 0 16 16\"><path d=\"M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/></svg>',\r\n\t\tcross: '<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 224.512 224.512\" xml:space=\"preserve\"><g><polygon points=\"224.507,6.997 217.521,0 112.256,105.258 6.998,0 0.005,6.997 105.263,112.254 0.005,217.512 6.998,224.512 112.256,119.24 217.521,224.512 224.507,217.512 119.249,112.254 \"/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>'\r\n\t};\r\n\r\n\treturn svg[name] ?? {};\r\n}\r\n\r\n/**\r\n * Вешаем событие \"Закрыть\" на все модалки, сайдбары и т.п.\r\n * @param module\r\n * @param method\r\n */\r\nconst dismissTrigger = (module, method = 'hide') => {\r\n\tconst clickEvent = `click.dismiss.${module.EVENT_KEY}`\r\n\tconst name = module.NAME;\r\n\r\n\tEventHandler.on(document, clickEvent, `[data-vg-dismiss=\"${name}\"]`, function (event) {\r\n\t\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tif (isDisabled(this)) return;\r\n\r\n\t\tconst target = Selectors.getSelectorFromElement(this) || this.closest(`.vg-${name}`);\r\n\t\tconst instance = module.getOrCreateInstance(target);\r\n\r\n\t\tinstance[method]();\r\n\t})\r\n}\r\n\r\n/**\r\n * AJAX REQUEST\r\n * @type {{post: ajax.post, get: ajax.get, x: ((function(): (XMLHttpRequest))|*), send: ajax.send}}\r\n */\r\nconst Ajax = {\r\n\tx: function () {\r\n\t\tif (typeof XMLHttpRequest !== 'undefined') {\r\n\t\t\treturn new XMLHttpRequest();\r\n\t\t}\r\n\t\tlet versions = [\r\n\t\t\t\"MSXML2.XmlHttp.6.0\",\r\n\t\t\t\"MSXML2.XmlHttp.5.0\",\r\n\t\t\t\"MSXML2.XmlHttp.4.0\",\r\n\t\t\t\"MSXML2.XmlHttp.3.0\",\r\n\t\t\t\"MSXML2.XmlHttp.2.0\",\r\n\t\t\t\"Microsoft.XmlHttp\"\r\n\t\t];\r\n\r\n\t\tlet xhr;\r\n\t\tfor (let i = 0; i < versions.length; i++) {\r\n\t\t\ttry {\r\n\t\t\t\txhr = new ActiveXObject(versions[i]);\r\n\t\t\t\tbreak;\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\treturn xhr;\r\n\t},\r\n\r\n\tsend: function (url, callback, method, data, async) {\r\n\t\tif (async === undefined) {\r\n\t\t\tasync = true;\r\n\t\t}\r\n\t\tlet x = Ajax.x();\r\n\t\tx.open(method, url, async);\r\n\t\tx.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\tx.onreadystatechange = function () {\r\n\t\t\tif (x.readyState === 4) {\r\n\t\t\t\tswitch (x.status) {\r\n\t\t\t\t\tcase 200:\r\n\t\t\t\t\t\tcallback('success', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tcallback('error', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tx.send(data)\r\n\t},\r\n\r\n\tget: function (url, data, callback, async) {\r\n\t\tlet query = [];\r\n\r\n\t\tif (!isEmptyObj(data)) {\r\n\t\t\tfor (let key of data) {\r\n\t\t\t\tquery.push(encodeURIComponent(key[0]) + '=' + encodeURIComponent(key[1]));\r\n\t\t\t}\r\n\t\t}\r\n\t\tAjax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async)\r\n\t},\r\n\r\n\tpost: function (url, data, callback, async) {\r\n\t\tAjax.send(url, callback, 'POST', data, async)\r\n\t}\r\n};\r\n\r\nexport {\r\n\tdismissTrigger, Ajax, getSVG\r\n}","import {isElement, mergeDeepObject} from \"../functions\";\r\nimport EventHandler from \"../dom/event\";\r\n\r\n/**\r\n * Классы для анимаций смотрим здесь\r\n * https://animate.style/\r\n *\r\n * Работает с модулями у которых есть события show, hide, hidden\r\n */\r\nclass Animation {\r\n\tconstructor(element, key, params = {}) {\r\n\t\tthis._params = mergeDeepObject({\r\n\t\t\tenable: false,\r\n\t\t\tin: 'animate__backInUp',\r\n\t\t\tout: 'animate__backOutUp',\r\n\t\t\tdelay: 0,\r\n\t\t\tduration: 800,\r\n\t\t}, params);\r\n\r\n\t\tthis.classes = {\r\n\t\t\tanimated: 'animate__animated',\r\n\t\t\tduration: 'animate__duration-' + this._params.duration\r\n\t\t}\r\n\r\n\t\tif (!this._params.enable) return;\r\n\t\tif (!isElement(element)) return;\r\n\r\n\t\tthis._element = element;\r\n\t\tthis._name_key = key;\r\n\r\n\t\tif (!this._element.classList.contains(this.classes.animated)) {\r\n\t\t\tthis._element.classList.add(this.classes.animated);\r\n\t\t\tthis._element.classList.add(this.classes.duration);\r\n\t\t}\r\n\r\n\t\tthis._triggers();\r\n\t}\r\n\r\n\t_triggers() {\r\n\t\tEventHandler.on(this._element, this._name_key + '.show', () => {\r\n\t\t\tthis._element.classList.remove(this._params.out);\r\n\t\t\tthis._element.classList.add(this._params.in);\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._element, this._name_key + '.hide', () => {\r\n\t\t\tthis._element.classList.remove(this._params.in);\r\n\t\t\tthis._element.classList.add(this._params.out);\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._element, this._name_key + '.hidden', () => {\r\n\t\t\tthis._element.classList.remove(this._params.out);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default Animation;","import {execute, executeAfterTransition, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\nimport Data from \"../utils/js/dom/data\";\r\nimport Params from \"../utils/js/components/params\";\r\nimport EventHandler from \"../utils/js/dom/event\";\r\nimport {Ajax, getSVG} from \"./module-fn\";\r\nimport Animation from \"../utils/js/components/animation\";\r\n\r\nclass BaseModule {\r\n\tconstructor(element) {\r\n\t\tif (!element) return\r\n\r\n\t\tthis._element = Selectors.find(element);\r\n\t\tif (!this._element){\r\n\t\t\tthrow new Error('Товарищ! Первый параметр не должен быть пустым!');\r\n\t\t}\r\n\r\n\t\tthis._params = {};\r\n\t\tthis._isLoaded = false;\r\n\t\tData.set(this._element, this.constructor.NAME_KEY, this);\r\n\t}\r\n\r\n\t_getParams(element, params) {\r\n\t\treturn new Params(params, element).get();\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tData.remove(this._element, this.constructor.NAME_KEY);\r\n\t\tEventHandler.off(this._element, this.constructor.EVENT_KEY)\r\n\r\n\t\tfor (const propertyName of Object.getOwnPropertyNames(this)) {\r\n\t\t\tthis[propertyName] = null\r\n\t\t}\r\n\t}\r\n\r\n\t_route(callback) {\r\n\t\tconst _this = this;\r\n\t\tlet $content = null;\r\n\r\n\t\tif (_this._isLoaded) return;\r\n\r\n\t\tconst setData = (data) => {\r\n\t\t\tif ($content) $content.innerHTML = data;\r\n\t\t};\r\n\r\n\t\tif (!_this._params.hasOwnProperty('ajax')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!_this._params.ajax.route) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!'method' in _this._params.ajax) {\r\n\t\t\t_this._params.ajax.method = 'get';\r\n\t\t}\r\n\r\n\t\tif ('target' in _this._params.ajax && _this._params.ajax.target) {\r\n\t\t\t$content = Selectors.find(_this._params.ajax.target);\r\n\t\t}\r\n\r\n\t\tif ('loader' in _this._params.ajax && _this._params.ajax.loader) {\r\n\t\t\tsetData('<div class=\"vg-loader\"></div>');\r\n\t\t}\r\n\r\n\t\tAjax[_this._params.ajax.method](_this._params.ajax.route, _this._params.ajax.data || {}, function (status, data) {\r\n\t\t\tif ('once' in _this._params.ajax && _this._params.ajax.once) {\r\n\t\t\t\t_this._isLoaded = true;\r\n\t\t\t}\r\n\r\n\t\t\tsetData(data.response);\r\n\t\t\texecute(callback, [status, data]);\r\n\t\t});\r\n\t}\r\n\r\n\t_dismissElement() {\r\n\t\tlet cross = getSVG('cross'),\r\n\t\t\tbutton = this._element.querySelector('.vg-btn-close');\r\n\r\n\t\tif (button) {\r\n\t\t\tlet svg = button.querySelector('svg');\r\n\t\t\tif (!svg) button.insertAdjacentHTML('beforeend', cross);\r\n\t\t}\r\n\t}\r\n\r\n\t_queueCallback(callback, element, isAnimated = true, timeOutMs) {\r\n\t\texecuteAfterTransition(callback, element, isAnimated, timeOutMs);\r\n\t}\r\n\r\n\t_animation(element, key, params = {}) {\r\n\t\tnew Animation(element, key, params);\r\n\t}\r\n\r\n\tstatic getInstance(element) {\r\n\t\treturn Data.get(Selectors.find(element), this.NAME_KEY)\r\n\t}\r\n\r\n\tstatic getOrCreateInstance(element, params = {}) {\r\n\t\treturn this.getInstance(element) || new this(element, !isEmptyObj(params) ? params : {})\r\n\t}\r\n\r\n\tstatic get DATA_KEY() {\r\n\t\treturn `vg.${this.NAME}`\r\n\t}\r\n\r\n\tstatic get EVENT_KEY() {\r\n\t\treturn `.${this.DATA_KEY}`\r\n\t}\r\n}\r\n\r\nexport default BaseModule;","import BaseModule from \"../../base-module\";\r\nimport {mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'collapse';\r\nconst NAME_KEY = 'vg.collapse';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_COLLAPSE = 'vg-collapse';\r\nconst CLASS_NAME_COLLAPSING = 'vg-collapsing';\r\nconst CLASS_NAME_COLLAPSED = 'vg-collapsed';\r\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\r\n\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"collapse\"]';\r\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGCollapse extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\ttoggle: true,\r\n\t\t\tparent: null,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._isTransitioning = false\r\n\t\tthis._triggerArray = []\r\n\r\n\t\tconst toggleList = Selectors.findAll(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const elem of toggleList) {\r\n\t\t\tconst selector = Selectors.getSelectorFromElement(elem);\r\n\t\t\tconst filterElement = Selectors.findAll(selector).filter(foundElement => foundElement === this._element);\r\n\r\n\t\t\tif (selector !== null && filterElement.length) {\r\n\t\t\t\tthis._triggerArray.push(elem)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._initializeChildren();\r\n\r\n\t\tif (!this._params.parent) {\r\n\t\t\tthis._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\r\n\t\t}\r\n\r\n\t\tif (this._params.toggle) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || _this._isShown()) return;\r\n\r\n\t\tlet activeChildren = [];\r\n\r\n\t\tif (_this._params.parent) {\r\n\t\t\tactiveChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\r\n\t\t\t\t.filter(element => element !== this._element)\r\n\t\t\t\t.map(element => VGCollapse.getOrCreateInstance(element, { toggle: false }));\r\n\t\t}\r\n\r\n\t\tif (activeChildren.length && activeChildren[0]._isTransitioning) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_SHOW);\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\tfor (const activeInstance of activeChildren) {\r\n\t\t\tactiveInstance.hide();\r\n\t\t}\r\n\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE)\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING)\r\n\r\n\t\t_this._element.style.height = 0;\r\n\r\n\t\t_this._addAriaAndCollapsedClass(_this._triggerArray, true);\r\n\t\t_this._isTransitioning = true;\r\n\r\n\t\t_this._route();\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\t\t_this._element.style.height = '';\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_SHOWN);\r\n\t\t}\r\n\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\r\n\t\tconst scrollSize = `scrollHeight`;\r\n\t\t_this._element.style.height = `${_this._element[scrollSize]}px`;\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || !_this._isShown()) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_HIDE)\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\t_this._element.style.height = `${this._element.getBoundingClientRect().height}px`;\r\n\t\treflow(_this._element);\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING);\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\tfor (const trigger of _this._triggerArray) {\r\n\t\t\tconst element = Selectors.getElementFromSelector(trigger);\r\n\r\n\t\t\tif (element && !_this._isShown(element)) {\r\n\t\t\t\t_this._addAriaAndCollapsedClass([trigger], false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_this._isTransitioning = true\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE);\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_HIDDEN);\r\n\t\t}\r\n\r\n\t\t_this._element.style.height = '';\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown(element = this._element) {\r\n\t\treturn element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addAriaAndCollapsedClass(triggerArray, isOpen) {\r\n\t\tif (!triggerArray.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const element of triggerArray) {\r\n\t\t\tthis._changeStateButton(element, isOpen);\r\n\t\t}\r\n\t}\r\n\r\n\t_initializeChildren() {\r\n\t\tif (!this._params.parent) return;\r\n\r\n\t\tconst children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const element of children) {\r\n\t\t\tconst selected = Selectors.getElementFromSelector(element)\r\n\r\n\t\t\tif (selected) {\r\n\t\t\t\tthis._addAriaAndCollapsedClass([element], this._isShown(selected))\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_getFirstLevelChildren(selector) {\r\n\t\tconst children = Selectors.find(CLASS_NAME_DEEPER_CHILDREN, this._params.parent);\r\n\t\treturn Selectors.find(selector, this._params.parent).filter(element => !children.includes(element));\r\n\t}\r\n\r\n\t_changeStateButton(element, isOpen) {\r\n\t\telement.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\r\n\t\telement.setAttribute('aria-expanded', isOpen);\r\n\t\telement.innerHTML = Manipulator.get(element, `data-${isOpen ? 'hide' : 'show'}-text`) || element.innerHTML;\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tSelectors.getMultipleElementsFromSelector(this).forEach(function (element) {\r\n\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).toggle();\r\n\t});\r\n})\r\n\r\nexport default VGCollapse;","import VGCollapse from \"./js/vgcollapse\";\r\n\r\nexport default VGCollapse;","import {mergeDeepObject, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Класс Placement, определяет и устанавливает местоположение элемента на странице.\r\n * TODO класс не дописан\r\n */\r\n\r\nclass Placement {\r\n\tconstructor(arg = {}) {\r\n\t\tthis.params = mergeDeepObject({\r\n\t\t\telement: null,\r\n\t\t\tdrop: null\r\n\t\t}, arg);\r\n\t}\r\n\r\n\t_getPlacement() {\r\n\t\tconst _this = this;\r\n\t\tconst _parent = (self) => {\r\n\t\t\tlet parent = self.parentNode,\r\n\t\t\t\toverflow = getComputedStyle(parent).overflow;\r\n\r\n\t\t\tif (parent.tagName !== 'BODY') {\r\n\t\t\t\tif (overflow === 'visible') {\r\n\t\t\t\t\t_parent(parent)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn parent;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet isFixed = false, top, left,\r\n\t\t\tbounds = _this.params.drop.getBoundingClientRect(),\r\n\t\t\tparent = _this.params.element.getBoundingClientRect();\r\n\r\n\t\tif (_parent(_this.params.element)) {\r\n\t\t\tisFixed = true;\r\n\t\t\ttop = bounds.top;\r\n\t\t\tleft = bounds.left;\r\n\t\t} else {\r\n\t\t\tlet styles = getComputedStyle(_this.params.drop);\r\n\t\t\ttop = normalizeData(styles.top.slice(0, -2));\r\n\t\t\tleft = normalizeData(styles.left.slice(0, -2));\r\n\t\t}\r\n\r\n\t\tif ((bounds.left + bounds.width) > window.innerWidth) {\r\n\t\t\tleft = parent.width - bounds.width;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tisFixed: isFixed,\r\n\t\t\ttop: top,\r\n\t\t\tleft: left\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Placement;","import {Manipulator} from \"../dom/manipulator\";\r\n\r\n/**\r\n * Класс Overflow\r\n * Запрещает скроллинг и убирает его, компенсируя отступом\r\n */\r\n\r\nclass Overflow {\r\n\tstatic append() {\r\n\t\tdocument.body.style.paddingRight = getWidth() + 'px';\r\n\t\tdocument.body.style.overflow = 'hidden';\r\n\r\n\t\tfunction getWidth() {\r\n\t\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic destroy() {\r\n\t\tdocument.body.style.overflow = '';\r\n\t\tdocument.body.style.paddingRight = '';\r\n\r\n\t\tlet styles = Manipulator.get(document.body, 'style');\r\n\t\tif (!styles) Manipulator.remove(document.body, 'style');\r\n\t}\r\n}\r\n\r\nexport default Overflow;","import {execute} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\nimport EventHandler from \"../dom/event\";\r\nimport Overflow from \"./overflow\";\r\n\r\nconst NAME = 'backdrop';\r\nconst CLASS_NAME = 'vg-backdrop';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst EVENT_MOUSEDOWN = `mousedown.vg.${NAME}`;\r\n\r\nlet backdrop_delay = 500;\r\n\r\nclass Backdrop {\r\n\tstatic show(callback) {\r\n\t\tBackdrop._append()\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic hide(callback) {\r\n\t\tBackdrop._destroy();\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic _append() {\r\n\t\tif (Selectors.find('.' + CLASS_NAME)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet backdrop = document.createElement('div');\r\n\t\tbackdrop.classList.add(CLASS_NAME);\r\n\r\n\t\tdocument.body.append(backdrop);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tbackdrop.classList.add(CLASS_NAME_FADE)\r\n\t\t}, 50);\r\n\r\n\t\tEventHandler.on(backdrop, EVENT_MOUSEDOWN, () => {\r\n\t\t\tBackdrop.hide()\r\n\t\t\tOverflow.destroy();\r\n\t\t});\r\n\t}\r\n\r\n\tstatic _destroy() {\r\n\t\tlet element = Selectors.find('.' + CLASS_NAME);\r\n\t\tif (!element) return;\r\n\r\n\t\telement.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\telement.remove();\r\n\t\t}, backdrop_delay);\r\n\t}\r\n}\r\n\r\nexport default Backdrop;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {isDisabled, mergeDeepObject, noop} from \"../../../utils/js/functions\";\r\nimport Placement from \"../../../utils/js/components/placement\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\n\r\nconst NAME = 'dropdown';\r\nconst NAME_KEY = 'vg.dropdown';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst TARGET_CONTAINER = 'vg-dropdown-content';\r\nconst PARENT_CONTAINER = 'vg-dropdown';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"dropdown\"]';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYDOWN_DATA_API = `keydown.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\n\r\nclass VGDropdown extends BaseModule {\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tlet defaultParams = {\r\n\t\t\toffset: [0, 2],\r\n\t\t\tbackdrop: false,\r\n\t\t\toverflow: false,\r\n\t\t\tkeyboard: false,\r\n\t\t\tplacement: 'bottom',\r\n\t\t\ttimeoutAnimation: 350,\r\n\t\t\thover: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: false,\r\n\t\t\t\tin: 'animate__flipInY',\r\n\t\t\t\tout: 'animate__flipOutY',\r\n\t\t\t\tdelay: 800,\r\n\t\t\t},\r\n\t\t}\r\n\r\n\t\tif ('offset' in params && Array.isArray(params.offset)) {\r\n\t\t\tdefaultParams.offset = params.offset;\r\n\t\t}\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject(defaultParams, params));\r\n\r\n\t\tconst target = Selectors.getElementFromSelector(this._element);\r\n\r\n\t\tthis._parent = this._element.parentNode;\r\n\t\tthis._drop = target || Selectors.find('.' + TARGET_CONTAINER, this._parent);\r\n\t\tthis._isPlacement = false;\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._drop, VGDropdown.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\treturn this._isShown() ? this.hide() : this.show();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tif (isDisabled(this._element) || this._isShown()) return;\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, relatedTarget)\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.on(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._route();\r\n\r\n\t\tthis._element.setAttribute('aria-expanded', true);\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._drop.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._setPlacement();\r\n\r\n\t\tif (this._params.backdrop && !this._params.hover) {\r\n\t\t\tBackdrop.show();\r\n\t\t}\r\n\r\n\t\tif (this._params.overflow) {\r\n\t\t\tOverflow.append();\r\n\t\t\tdocument.body.classList.add('dropdown-open')\r\n\t\t}\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._drop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._drop, true, 50);\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element) || !this._isShown()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tthis._completeHide(relatedTarget);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\treturn super.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_completeHide(relatedTarget) {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE, relatedTarget)\r\n\t\tif (hideEvent.defaultPrevented) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._drop.classList.remove(CLASS_NAME_FADE);\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\tthis._element.setAttribute('aria-expanded', 'false');\r\n\r\n\t\tif (this._params.backdrop && !this._params.hover) {\r\n\t\t\tconst _this = this;\r\n\t\t\tBackdrop.hide(function () {\r\n\t\t\t\tif (_this._params.overflow) {\r\n\t\t\t\t\tOverflow.destroy();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this._params.overflow) {\r\n\t\t\tOverflow.destroy();\r\n\t\t\tdocument.body.classList.remove('dropdown-open');\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst completeCallback = () => {\r\n\t\t\t\tthis._drop.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN, relatedTarget);\r\n\t\t\t}\r\n\t\t\tthis._queueCallback(completeCallback, this._parent, true, 10);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\t// TODO class Placement isn't done\r\n\t_setPlacement() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._isPlacement) {\r\n\t\t\tlet placement = new Placement({\r\n\t\t\t\telement: this._parent,\r\n\t\t\t\tdrop: this._drop\r\n\t\t\t})._getPlacement();\r\n\r\n\t\t\tif (placement.isFixed) {\r\n\t\t\t\t_this._drop.style.position = 'fixed';\r\n\t\t\t\t_this._drop.style.transform = 'translateY(-20%)'; // todo this is костыль поfixить\r\n\t\t\t}\r\n\r\n\t\t\t_this._drop.style.left = placement.left + 'px';\r\n\t\t\t_this._drop.style.top = placement.top + 'px';\r\n\t\t}\r\n\r\n\t\tif (_this._params.offset) {\r\n\t\t\t_this._drop.style.paddingTop = _this._params.offset[1] + 'px';\r\n\t\t\t_this._drop.style.paddingRight = _this._params.offset[0] + 'px';\r\n\t\t}\r\n\r\n\t\t_this._isPlacement = true;\r\n\t}\r\n\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(element, params);\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\tlet currentElem = null;\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\tif (currentElem) return;\r\n\t\t\t\tVGDropdown.hideOpenToggles(event);\r\n\r\n\t\t\t\tlet target = event.target.closest('.' + PARENT_CONTAINER);\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (!instance._parent.contains(target)) return;\r\n\t\t\t\tcurrentElem = target;\r\n\t\t\t\tinstance.show();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\tlet relatedTarget = event.relatedTarget;\r\n\r\n\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentElem = null;\r\n\t\t\t\tinstance._completeHide({relatedTarget: instance._element});\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_DATA_TOGGLE, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYDOWN_DATA_API, '.' + TARGET_CONTAINER, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(element, EVENT_CLICK_DATA_API, function (event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tinstance.toggle();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic hideOpenToggles(event) {\r\n\t\tconst openToggles = Selectors.findAll('[data-vg-toggle=\"dropdown\"]:not(.disabled):not(:disabled).show');\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGDropdown.getInstance(toggle);\r\n\t\t\tif (!context) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (event.target.closest('.' + TARGET_CONTAINER) === context._drop) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst composedPath = event.composedPath();\r\n\t\t\tif (composedPath.includes(context._element)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: context._element }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext._completeHide(relatedTarget)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic keydownHandler(event) {\r\n\t\tconst isInput = /input|textarea/i.test(event.target.tagName)\r\n\t\tconst isEscapeEvent = event.key === 'Escape'\r\n\t\tconst isUpOrDownEvent = ['ArrowUp', 'ArrowDown'].includes(event.key)\r\n\r\n\t\tif (!isUpOrDownEvent && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isInput && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tevent.preventDefault()\r\n\r\n\t\tconst getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\r\n\t\t\tthis : (Selectors.find(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\r\n\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(getToggleButton)\r\n\r\n\t\tif (isUpOrDownEvent) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.show()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (instance._isShown()) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.hide()\r\n\t\t\tgetToggleButton.focus()\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGDropdown.hideOpenToggles(event)\r\n\t}\r\n}\r\n\r\nexport default VGDropdown;","import './scss/vgdropdown.scss';\r\nimport VGDropdown from \"./js/vgdropdown\";\r\n\r\nexport default VGDropdown;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap util/scrollBar.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n */\r\n\r\nimport {Manipulator} from \"../dom/manipulator\";\r\nimport {isElement} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\n\r\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\r\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\r\nconst PROPERTY_PADDING = 'padding-right'\r\nconst PROPERTY_MARGIN = 'margin-right'\r\n\r\n/**\r\n * Class definition\r\n */\r\n\r\nclass ScrollBarHelper {\r\n\tconstructor() {\r\n\t\tthis._element = document.body\r\n\t}\r\n\r\n\t// Public\r\n\tgetWidth() {\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\r\n\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst width = this.getWidth()\r\n\t\tthis._disableOverFlow()\r\n\t\t// give padding to element to balance the hidden scrollbar width\r\n\t\tthis._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\t// trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\r\n\t\tthis._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\tthis._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis._resetElementAttributes(this._element, 'overflow')\r\n\t\tthis._resetElementAttributes(this._element, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\r\n\t}\r\n\r\n\tisOverflowing() {\r\n\t\treturn this.getWidth() > 0\r\n\t}\r\n\r\n\t// Private\r\n\t_disableOverFlow() {\r\n\t\tthis._saveInitialAttribute(this._element, 'overflow')\r\n\t\tthis._element.style.overflow = 'hidden'\r\n\t}\r\n\r\n\t_setElementAttributes(selector, styleProperty, callback) {\r\n\t\tconst scrollbarWidth = this.getWidth()\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tif (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tthis._saveInitialAttribute(element, styleProperty)\r\n\t\t\tconst calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_saveInitialAttribute(element, styleProperty) {\r\n\t\tconst actualValue = element.style.getPropertyValue(styleProperty)\r\n\t\tif (actualValue) {\r\n\t\t\tManipulator.get(element, styleProperty, actualValue)\r\n\t\t}\r\n\t}\r\n\r\n\t_resetElementAttributes(selector, styleProperty) {\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tconst value = Manipulator.get(element, styleProperty)\r\n\t\t\t// We only want to remove the property if the value is `null`; the value can also be zero\r\n\t\t\tif (value === null) {\r\n\t\t\t\telement.style.removeProperty(styleProperty)\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tManipulator.remove(element, styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, value)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_applyManipulationCallback(selector, callBack) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\tcallBack(selector)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const sel of Selectors.findAll(selector, this._element)) {\r\n\t\t\tcallBack(sel)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default ScrollBarHelper","import BaseModule from \"../../base-module\";\r\nimport ScrollBarHelper from \"../../../utils/js/components/scrollbar\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport {execute, isDisabled, isRTL, mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'modal';\r\nconst NAME_KEY = 'vg.modal';\r\n\r\nconst ESCAPE_KEY = 'Escape';\r\n\r\nconst OPEN_SELECTOR = '.vg-modal.show';\r\nconst SELECTOR_DIALOG = '.vg-modal-dialog';\r\nconst SELECTOR_MODAL_BODY = '.vg-modal-body';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"modal\"]';\r\n\r\nconst CLASS_NAME_OPEN = 'vg-modal-open';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_STATIC = 'vg-modal-static';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_RESIZE = `${NAME_KEY}.resize`;\r\nconst EVENT_KEY_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_MOUSEDOWN_DISMISS = `mousedown.dismiss${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DISMISS = `click.dismiss${NAME_KEY}`;\r\nconst EVENT_KEY_DOM_LOADED_DATA_API = `DOMContentLoaded.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_POPSTATE_DATA_API = `popstate.${NAME_KEY}.data.api`;\r\n\r\nclass VGModal extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\tfocus: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tfields: [],\r\n\t\t\thash: false,\r\n\t\t\tcentered: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: false,\r\n\t\t\t\tin: 'animate__rollIn',\r\n\t\t\t\tout: 'animate__rollOut',\r\n\t\t\t\tdelay: 100,\r\n\t\t\t\tduration: 800,\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-modal',\r\n\t\t\t\tdialog: 'vg-modal-dialog',\r\n\t\t\t\tcontent: 'vg-modal-content',\r\n\t\t\t\theader: 'vg-modal-header',\r\n\t\t\t\ttitle: 'vg-modal-title',\r\n\t\t\t\tbody: 'vg-modal-body',\r\n\t\t\t\tfooter: 'vg-modal-footer',\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._button = null;\r\n\t\tthis._dialog = Selectors.find(SELECTOR_DIALOG, this._element);\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = false;\r\n\t\tthis._scrollBar = new ScrollBarHelper();\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGModal.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tstatic init(element, params, callback) {\r\n\t\tVGModal.build(element, params, callback);\r\n\t}\r\n\r\n\tstatic build(id, params, callback) {\r\n\t\tif (typeof id !== \"string\") return;\r\n\r\n\t\tlet _element = document.createElement('div');\r\n\t\t_element.classList.add('vg-modal', 'fade');\r\n\t\t_element.id = id;let dialog = document.createElement('div');\r\n\t\tdialog.classList.add('vg-modal-dialog');\r\n\r\n\t\tif ('centered' in params && params.centered) {\r\n\t\t\tdialog.classList.add('vg-modal-dialog-centered');\r\n\t\t}\r\n\r\n\t\tlet content = document.createElement('div');\r\n\t\tcontent.classList.add('vg-modal-content');\r\n\r\n\t\tlet btnClose = document.createElement('button');\r\n\t\tManipulator.set(btnClose, 'type', 'button');\r\n\t\tManipulator.set(btnClose, 'data-vg-dismiss', 'modal');\r\n\t\tManipulator.set(btnClose, 'data-vg-target', '#' + id);\r\n\t\tManipulator.set(btnClose, 'aria-label', 'close');\r\n\t\tbtnClose.classList.add('vg-btn-close');\r\n\r\n\t\tcontent.append(btnClose);\r\n\r\n\t\tlet body = document.createElement('div');\r\n\t\tbody.classList.add('vg-modal-body');\r\n\r\n\t\tcontent.append(body);\r\n\t\tdialog.append(content);\r\n\t\t_element.append(dialog);\r\n\r\n\t\tdocument.body.append(_element);\r\n\r\n\t\tconst modal = VGModal.getOrCreateInstance(_element, params);\r\n\r\n\t\texecute(callback, [modal]);\r\n\r\n\t\treturn modal;\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tthis._params = this._getParams(relatedTarget, this._params);\r\n\t\t_this._route(function (status, data) {\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_LOADED, {stats: status, data: data});\r\n\t\t});\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = true;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tif (this._params.hash) {\r\n\t\t\twindow.history.pushState(null, \"vg-sidebar-open\", \"#\" + this._element.id);\r\n\r\n\t\t\tEventHandler.on(window, EVENT_KEY_POPSTATE_DATA_API, () => {\r\n\t\t\t\tthis.hide();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._scrollBar.hide();\r\n\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tthis._addFieldsInModal(relatedTarget);\r\n\t\tthis._adjustDialog();\r\n\r\n\t\tBackdrop.show(() => this._showElement(relatedTarget));\r\n\t}\r\n\r\n\thide(openedModals = []) {\r\n\t\tif (!this._isShown || this._isTransitioning) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\tthis._queueCallback(() => this._hideModal(openedModals), this._element, this._isAnimatedFade());\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\t_hideModal(openedModals) {\r\n\t\tthis._element.style.display = 'none';\r\n\t\tthis._element.setAttribute('aria-hidden', true);\r\n\t\tthis._element.removeAttribute('aria-modal');\r\n\t\tthis._element.removeAttribute('role');\r\n\t\tthis._isTransitioning = false;\r\n\r\n\t\tif (openedModals.length) return;\r\n\r\n\t\tif (this._params.hash) {\r\n\t\t\thistory.pushState(\"\", document.title, window.location.pathname + window.location.search);\r\n\t\t}\r\n\r\n\t\tBackdrop.hide(() => {\r\n\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\tthis._resetAdjustments();\r\n\t\t\tthis._scrollBar.reset();\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t})\r\n\t}\r\n\r\n\t_showElement(relatedTarget) {\r\n\t\tif (!document.body.contains(this._element)) {\r\n\t\t\tdocument.body.append(this._element);\r\n\t\t}\r\n\r\n\t\tthis._element.style.display = 'block';\r\n\t\tthis._element.removeAttribute('aria-hidden');\r\n\t\tthis._element.setAttribute('aria-modal', true);\r\n\t\tthis._element.setAttribute('role', 'dialog');\r\n\t\tthis._element.scrollTop = 0;\r\n\r\n\t\tconst modalBody = Selectors.find(SELECTOR_MODAL_BODY, this._dialog);\r\n\t\tif (modalBody) {\r\n\t\t\tmodalBody.scrollTop = 0;\r\n\t\t}\r\n\r\n\t\treflow(this._element);\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW)\r\n\r\n\t\tconst transitionComplete = () => {\r\n\t\t\tthis._isTransitioning = false;\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, {\r\n\t\t\t\trelatedTarget\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(transitionComplete, this._dialog, this._isAnimatedFade())\r\n\t}\r\n\r\n\t_isAnimatedFade() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_FADE)\r\n\t}\r\n\r\n\t_adjustDialog() {\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\r\n\t\tconst scrollbarWidth = this._scrollBar.getWidth()\r\n\t\tconst isBodyOverflowing = scrollbarWidth > 0\r\n\r\n\t\tif (isBodyOverflowing && !isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingLeft' : 'paddingRight'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\r\n\t\tif (!isBodyOverflowing && isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingRight' : 'paddingLeft'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\t}\r\n\r\n\t_resetAdjustments() {\r\n\t\tthis._element.style.paddingLeft = ''\r\n\t\tthis._element.style.paddingRight = ''\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(this._element, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== ESCAPE_KEY) return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._triggerBackdropTransition();\r\n\t\t});\r\n\r\n\t\tEventHandler.on(window, EVENT_KEY_RESIZE, () => {\r\n\t\t\tif (this._isShown && !this._isTransitioning) this._adjustDialog();\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._element, EVENT_KEY_MOUSEDOWN_DISMISS, event => {\r\n\t\t\tEventHandler.one(this._element, EVENT_KEY_CLICK_DISMISS, event2 => {\r\n\t\t\t\tif (this._element !== event.target || this._element !== event2.target) return;\r\n\r\n\t\t\t\tif (this._params.backdrop === 'static') {\r\n\t\t\t\t\tthis._triggerBackdropTransition();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._params.backdrop) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\t_triggerBackdropTransition() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\r\n\t\tconst initialOverflowY = this._element.style.overflowY;\r\n\r\n\t\tif (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) return;\r\n\t\tif (!isModalOverflowing) this._element.style.overflowY = 'hidden';\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_STATIC);\r\n\r\n\t\tthis._queueCallback(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_STATIC);\r\n\t\t\tthis._queueCallback(() => {\r\n\t\t\t\tthis._element.style.overflowY = initialOverflowY;\r\n\t\t\t}, this._dialog);\r\n\t\t}, this._dialog);\r\n\t}\r\n\r\n\t_addFieldsInModal(relatedTarget) {\r\n\t\tthis._params = this._getParams(relatedTarget, this._params);\r\n\r\n\t\tif (!this._params.fields.length) return;\r\n\r\n\t\tthis._params.fields.forEach((item) => {\r\n\t\t\tif (!'name' in item && !'value' in item) return;\r\n\r\n\t\t\tlet elements = Selectors.findAll('[data-' + item.name + ']', this._element);\r\n\t\t\tif (!elements.length) return;\r\n\r\n\t\t\tfor (const elm of elements) {\r\n\t\t\t\tswitch (elm.tagName) {\r\n\t\t\t\t\tcase 'INPUT': elm.value = item.value; break;\r\n\t\t\t\t\tcase 'IMG': Manipulator.set(elm, 'src', item.value); break;\r\n\t\t\t\t\tdefault: elm.innerHTML = item.value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGModal);\r\n\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) event.preventDefault();\r\n\r\n\tEventHandler.one(target, EVENT_KEY_SHOW, showEvent => {\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\t});\r\n\r\n\tconst alreadyOpen = Selectors.find(OPEN_SELECTOR);\r\n\tif (alreadyOpen) VGModal.getInstance(alreadyOpen).hide([alreadyOpen]);\r\n\r\n\tconst data = VGModal.getOrCreateInstance(target);\r\n\tdata.toggle(this);\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_DOM_LOADED_DATA_API, function () {\r\n\tlet targetHash = window.location.hash.slice(1);\r\n\tif (targetHash) {\r\n\t\tlet target = Selectors.find('#' + targetHash);\r\n\t\tif (target && target.classList.contains('vg-modal')) {\r\n\t\t\tif (isDisabled(target)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst data = VGModal.getOrCreateInstance(target)\r\n\t\t\tdata.toggle();\r\n\t\t}\r\n\t}\r\n})\r\n\r\nexport default VGModal;","import {execute, mergeDeepObject} from \"../functions\";\r\n\r\nconst TEMPLATES = [\r\n\t{type: 'pass-open', template: '<span data-vg-toggle=\"vgpass\" class=\"[[classes]]\" title=\"Показать / Скрыть\" data-bs-toggle=\"tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path d=\"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"/></svg></span>'},\r\n\t{type: 'pass-close', template: '<span data-vg-toggle=\"vgpass\" class=\"[[classes]]\" title=\"Показать / Скрыть\" data-bs-toggle=\"tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z\"/></svg></span>'},\r\n]\r\n\r\n\r\nclass Templater {\r\n\tconstructor(el, params = {}) {\r\n\t\tif (!el) {\r\n\t\t\tthrow new Error('Element is required');\r\n\t\t}\r\n\r\n\t\tthis._element = el;\r\n\t\tthis._params = mergeDeepObject({\r\n\t\t\tinsert: 'afterend',\r\n\t\t\tclasses: []\r\n\t\t}, params);\r\n\t}\r\n\r\n\trender(content, callback) {\r\n\t\tlet tmpl = this.toHTML(content, callback);\r\n\r\n\t\tswitch (this._params.insert) {\r\n\t\t\tcase 'afterend':\r\n\t\t\t\tthis._element.insertAdjacentHTML('afterend', tmpl);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\ttoHTML(content = '' | null, callback) {\r\n\t\tlet tmpl = '';\r\n\r\n\t\tfor (const tmplElement of TEMPLATES) {\r\n\t\t\tif (tmplElement.type === this._params.template) {\r\n\t\t\t\ttmpl = tmplElement.template;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!tmpl) return;\r\n\r\n\t\ttmpl = tmpl.replace('[[classes]]', this._params.classes.join(' '));\r\n\t\texecute(callback, [this._element, this._params, tmpl]);\r\n\r\n\t\treturn tmpl;\r\n\t}\r\n\r\n\tsetContent() {\r\n\r\n\t}\r\n}\r\n\r\nexport default Templater;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport Templater from \"../../../utils/js/components/templater\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'hideshowpass';\r\nconst NAME_KEY = 'vg.hideshowpass';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"vgpass\"]';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGHideShowPass extends BaseModule{\r\n\tconstructor(el, params = {}) {\r\n\t\tsuper(el, params);\r\n\r\n\t\tthis._params = this._getParams(el, mergeDeepObject({}, params));\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide(relatedTarget);\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tif (relatedTarget) this._params = this._getParams(relatedTarget, this._params);\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\trelatedTarget.remove();\r\n\t\tthis.build(true);\r\n\t\tManipulator.set(this._element, 'type', 'text');\r\n\t}\r\n\r\n\thide(relatedTarget) {\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\trelatedTarget.remove();\r\n\t\tthis.build(false);\r\n\t\tManipulator.set(this._element, 'type', 'password');\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\tstatic init(el, params) {\r\n\t\tlet instance = VGHideShowPass.getOrCreateInstance(el, params);\r\n\t\tinstance.build(false);\r\n\t}\r\n\r\n\tbuild(isShow = false) {\r\n\t\tif (!isShow) {\r\n\t\t\tthis._params.template = 'pass-close';\r\n\t\t} else {\r\n\t\t\tthis._params.template = 'pass-open';\r\n\t\t}\r\n\r\n\t\tnew Templater(this._element, this._params).render();\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.prev(this);\r\n\tif (!target) return;\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\r\n\tconst instance = VGHideShowPass.getOrCreateInstance(target)\r\n\tinstance.toggle(this);\r\n});\r\n\r\nexport default VGHideShowPass","import BaseModule from \"../../base-module\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport VGModal from \"../../vgmodal/js/vgmodal\";\r\nimport {\r\n\texecute,\r\n\tisObject,\r\n\tisVisible,\r\n\tmakeRandomString,\r\n\tmergeDeepObject,\r\n\tnoop,\r\n\tnormalizeData\r\n} from \"../../../utils/js/functions\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport VGCollapse from \"../../vgcollapse/js/vgcollapse\";\r\nimport {getSVG} from \"../../module-fn\";\r\nimport VGHideShowPass from \"./hideshowpass\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'form-sender';\r\nconst NAME_KEY = 'vg.fs';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_SUCCESS = 'vg.fs.success';\r\nconst EVENT_KEY_ERROR = 'vg.fs.error';\r\nconst EVENT_KEY_BEFORE = 'vg.fs.before';\r\n\r\nconst EVENT_SUBMIT_DATA_API = `submit.${NAME_KEY}.data.api`;\r\n\r\nclass VGFormSender extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tresponse: {\r\n\t\t\t\tenabled: false,\r\n\t\t\t\terrors: false,\r\n\t\t\t\ttitle: '',\r\n\t\t\t\tmessage: '',\r\n\t\t\t},\r\n\t\t\tredirect: {\r\n\t\t\t\terror: '',\r\n\t\t\t\tsuccess: ''\r\n\t\t\t},\r\n\t\t\tvalidate: false,\r\n\t\t\tsubmit: false,\r\n\t\t\tfields: [],\r\n\t\t\ttimeout: 50,\r\n\t\t\tpass: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\ttemplate: 'pass-open',\r\n\t\t\t\tclasses: ['vg-form-sender--hide-show-pass'],\r\n\t\t\t\tinsert: 'afterend'\r\n\t\t\t},\r\n\t\t\talert: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\ttype: 'modal',\r\n\t\t\t\terrors: true,\r\n\t\t\t\tdelay: 0\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-form-sender',\r\n\t\t\t\talertCollapse: 'vg-form-sender-collapse',\r\n\t\t\t\talertModal: 'vg-form-sender-modal',\r\n\t\t\t\tvalidation: 'needs-validation',\r\n\t\t\t\twasValidate: 'was-validated',\r\n\t\t\t\tcontent: 'vg-form-sender--content'\r\n\t\t\t},\r\n\t\t\tcallback: {\r\n\t\t\t\tafterInit: noop,\r\n\t\t\t\tafterSuccess: noop,\r\n\t\t\t\tafterError: noop,\r\n\t\t\t},\r\n\t\t\tinterceptors: {\r\n\t\t\t\tsuccess: false,\r\n\t\t\t\terror: false\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._params.ajax.route = Manipulator.get(this._element, 'action').toLowerCase();\r\n\t\tthis._params.ajax.method = Manipulator.get(this._element, 'method').toLowerCase();\r\n\t\tthis._button = Selectors.find('[type=\"submit\"]', this._element) || Selectors.find('[form=\"' + this._element.id + '\"]') || null;\r\n\r\n\t\tthis._params.isBtnText = Manipulator.get(this._element, 'data-btn-text') !== 'false';\r\n\t\tthis._params.isJsonParse = Manipulator.get(this._element, 'data-json-parse') !== 'false';\r\n\t\tthis._params.isShowPass = Manipulator.get(this._element, 'data-show-pass') === 'true';\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tthis._element.classList.add(this._params.classes.general);\r\n\r\n\t\t[... Selectors.findAll('input, textarea, select', this._element)].forEach((el) => {\r\n\t\t\tif (isVisible(el)) {\r\n\t\t\t\tel.parentElement.classList.add(this._params.classes.content)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (this._params.validate) {\r\n\t\t\tManipulator.set(this._element, 'novalidate', '');\r\n\t\t\tthis._element.classList.add(this._params.classes.validation);\r\n\t\t}\r\n\r\n\t\tif (this._params.pass.enabled) {\r\n\t\t\t[... Selectors.findAll('input[type=\"password\"]', this._element)].forEach((el) => {\r\n\t\t\t\tVGHideShowPass.init(el, this._params.pass);\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\texecute(this._params.callback.afterInit, [this._element, this]);\r\n\r\n\t\treturn this\r\n\t}\r\n\r\n\trequest(data, event) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._alertBefore();\r\n\r\n\t\t_this._params.ajax.data = data;\r\n\r\n\t\t_this._route(function (status, data) {\r\n\t\t\t_this._element.classList.remove('was-validated');\r\n\r\n\t\t\tif (_this._params.response.enabled) {\r\n\t\t\t\tdata.response = _this._params.response;\r\n\t\t\t}\r\n\r\n\t\t\tif (_this._params.alert.enabled) {\r\n\t\t\t\tif (typeof status === 'string' && status === 'error') {\r\n\t\t\t\t\tif (_this._params.redirect.error) {\r\n\t\t\t\t\t\twindow.location.href = _this._params.redirect.error;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!_this._params.interceptors.error) {\r\n\t\t\t\t\t\t\t_this._alertError(event, data);\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterError, [_this._element, _this, event, data]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterError, [_this._element, _this, event, data]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (typeof status === 'string' && status === 'success') {\r\n\t\t\t\t\tif (_this._params.redirect.success) {\r\n\t\t\t\t\t\twindow.location.href = _this._params.redirect.success;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!_this._params.interceptors.success) {\r\n\t\t\t\t\t\t\t_this._alertSuccess(event, data);\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterSuccess, [_this._element, _this, event, data]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterSuccess, [_this._element, _this, event, data]);\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\t\t});\r\n\t}\r\n\r\n\t_alertBefore() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t[...document.getElementsByClassName(_this._params.classes.alertCollapse)].forEach(function (element) {\r\n\t\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_this._statusButton('before');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_BEFORE, _this);\r\n\t}\r\n\r\n\t_alertError(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'error');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_ERROR, [event, _this, data]);\r\n\t}\r\n\r\n\t_alertSuccess(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'success');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_SUCCESS, [event, _this, data]);\r\n\t}\r\n\r\n\t_statusButton(status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._button) return;\r\n\r\n\t\tlet btnSubmitText = _this._button,\r\n\t\t\tbtnText = {\r\n\t\t\tsend: 'Отправляем...',\r\n\t\t\ttext: 'Отправить'\r\n\t\t};\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-spinner') && status === 'before') {\r\n\t\t\t_this._button.insertAdjacentHTML('afterbegin', '<span class=\"spinner-border spinner-border-sm me-2\"></span>');\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text')) {\r\n\t\t\tbtnText.text = Manipulator.get(_this._button, 'data-text');\r\n\t\t} else {\r\n\t\t\tlet $btnText = _this._button.querySelector('[data-text]');\r\n\t\t\tif ($btnText) {\r\n\t\t\t\tbtnText.text = Manipulator.get($btnText, 'data-text');\r\n\t\t\t\tbtnSubmitText = $btnText;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text-send')) {\r\n\t\t\tbtnText.send = Manipulator.get(_this._button, 'data-text-send');\r\n\t\t} else {\r\n\t\t\tlet $btnTextSend = _this._button.querySelector('[data-text-send]');\r\n\t\t\tif ($btnTextSend) {\r\n\t\t\t\tbtnText.send = Manipulator.get($btnTextSend, 'data-text-send');\r\n\t\t\t\tbtnSubmitText = $btnTextSend;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (status === 'before') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.send;\r\n\t\t\t}\r\n\t\t\tManipulator.set(_this._button,'disabled', 'disabled');\r\n\t\t}\r\n\r\n\t\tif (status === 'after') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.text;\r\n\t\t\t}\r\n\t\t\tManipulator.remove(_this._button,'disabled');\r\n\r\n\t\t\tlet spinner = _this._button.querySelector('.spinner-border');\r\n\t\t\tif (spinner) spinner.remove();\r\n\t\t}\r\n\t}\r\n\r\n\t_jsonParse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.isJsonParse && typeof data === 'string') {\r\n\t\t\tlet parserData = {};\r\n\r\n\t\t\ttry {\r\n\t\t\t\tparserData = JSON.parse(data);\r\n\t\t\t\t_this.alert(parserData, status);\r\n\t\t\t} catch (e) {\r\n\t\t\t\t_this.alert(data, status);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_this.alert(data, status);\r\n\t\t}\r\n\t}\r\n\r\n\talert(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (('code' in data) && data.code && data.code === 200) {\r\n\t\t\t\tif ('response' in data && data.response) {\r\n\t\t\t\t\tlet response = normalizeData(data.response);\r\n\t\t\t\t\tif (typeof response === 'string') {\r\n\t\t\t\t\t\tif (response.indexOf(\"Parse error\") !== -1 || response.indexOf(\"syntax error\") !== -1) {\r\n\t\t\t\t\t\t\tstatus = 'error';\r\n\t\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\ttext: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif ('errors' in response && normalizeData(response.errors)) {\r\n\t\t\t\t\t\t\tstatus = normalizeData(response.errors) ? 'error' : 'success';\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\t\t}\r\n\r\n\t\tif (!_this._params.alert.enabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'modal') {\r\n\t\t\t_this._alertModal(data, status)\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t_this._alertCollapse(data, status)\r\n\t\t}\r\n\t}\r\n\r\n\t_alertModal(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\t// Есть ли открытые модалки, закрываем\r\n\t\t[...document.getElementsByClassName('modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tlet mBS = bootstrap.Modal.getOrCreateInstance(element);\r\n\t\t\t\tmBS.hide();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t[...document.getElementsByClassName('vg-modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tconst mVG = VGModal.getOrCreateInstance(element);\r\n\t\t\t\tmVG.hide([mVG]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet id = _this._params.classes.general + '-' + makeRandomString(),\r\n\t\t\t$modal = Selectors.find('.' + _this._params.classes.alertModal);\r\n\r\n\t\tif ($modal) $modal.remove();\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tVGModal.init(id, {\r\n\t\t\t\tclasses: {\r\n\t\t\t\t\talert: _this._params.classes.alertModal\r\n\t\t\t\t}\r\n\t\t\t}, function (self) {\r\n\t\t\t\tlet element = self._element;\r\n\t\t\t\telement.classList.add(_this._params.classes.alertModal);\r\n\r\n\t\t\t\tlet $body = Selectors.find('.vg-modal-body', element);\r\n\t\t\t\tif ($body) $body.append(_this.setDataRelationStatus(element, status, data, 'modal'));\r\n\r\n\t\t\t\tself.toggle();\r\n\r\n\t\t\t\tif (_this._params.alert.delay > 0) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tself.hide();\r\n\t\t\t\t\t}, _this._params.alert.delay)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}, _this._params.timeout);\r\n\t}\r\n\r\n\t_alertCollapse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tlet $collapse = Selectors.find('.' + _this._params.classes.alertCollapse);\r\n\t\tif (!$collapse) {\r\n\t\t\t$collapse = document.createElement('div');\r\n\t\t\t$collapse.classList.add(_this._params.classes.alertCollapse);\r\n\t\t\t$collapse.classList.add('vg-collapse');\r\n\t\t\t$collapse.id = _this._params.classes.general + '-' + makeRandomString();\r\n\t\t\t$collapse.append(_this.setDataRelationStatus($collapse, status, data, 'collapse'));\r\n\r\n\t\t\t_this._element.prepend($collapse);\r\n\t\t}\r\n\r\n\t\tlet collapse = VGCollapse.getOrCreateInstance($collapse, {toggle: false});\r\n\t\tcollapse.toggle();\r\n\r\n\t\tif (_this._params.alert.delay > 0) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tcollapse.hide();\r\n\t\t\t}, _this._params.alert.delay)\r\n\t\t}\r\n\t}\r\n\r\n\tsetDataRelationStatus($element, status, data, type) {\r\n\t\tlet $alert = Selectors.find('.vg-alert-' + status, $element);\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (status === 'error') {\r\n\t\t\t\tif ('code' in data && data.code !== 200) {\r\n\t\t\t\t\tif ('text' in data && !data.text) {\r\n\t\t\t\t\t\tdata.text = 'Something went wrong, please repeat later';\r\n\r\n\t\t\t\t\t\tswitch (data.code) {\r\n\t\t\t\t\t\t\tcase 400:\r\n\t\t\t\t\t\t\t\tdata.text = 'Bad Request'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 401:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 413:\r\n\t\t\t\t\t\t\t\tdata.text = 'Forbidden'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 404:\r\n\t\t\t\t\t\t\t\tdata.text = 'Not Found'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 422:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unprocessable Entity'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\t\t\tdata.text = 'Internal Server Error'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 504:\r\n\t\t\t\t\t\t\t\tdata.text = 'Gateway Timeout'\r\n\t\t\t\t\t\t\t\tbreak;\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 ('response' in data) {\r\n\t\t\t\tlet response = normalizeData(data.response), title = '', txt = '', code = '';\r\n\t\t\t\tif (typeof response !== 'string') {\r\n\t\t\t\t\tif (!('view' in response)) {\r\n\t\t\t\t\t\tif ('title' in response) title = response.title;\r\n\t\t\t\t\t\tif (status === 'error' && data.code !== 200 && this._params.alert.errors) {\r\n\t\t\t\t\t\t\tcode = ' ' + data.text + ' (' + data.code + ')';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!title) txt += '<h4 class=\"vg-alert-content--title\">' + code + '</h4>';\r\n\t\t\t\t\t\telse txt += '<h4 class=\"vg-alert-content--title\">' + title + '</h4>';\r\n\r\n\t\t\t\t\t\tif ('message' in response) {\r\n\t\t\t\t\t\t\ttxt += '<div class=\"vg-alert-content--message\">' + response.message + '</div>'\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ('errors' in response && this._params.alert.errors) {\r\n\t\t\t\t\t\t\tlet errors = normalizeData(response.errors) || null;\r\n\t\t\t\t\t\t\tif (isObject(errors)) {\r\n\t\t\t\t\t\t\t\tfor (const error in errors) {\r\n\t\t\t\t\t\t\t\t\tif (Array.isArray(errors[error])) {\r\n\t\t\t\t\t\t\t\t\t\terrors[error].forEach(function (t) {\r\n\t\t\t\t\t\t\t\t\t\t\ttxt += '<div>'+ t +'</div>';\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\ttxt = '<div>'+ errors[error] +'</div>';\r\n\t\t\t\t\t\t\t\t\t}\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}\r\n\r\n\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\tview: txt\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\tdata.view = response;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!$alert) {\r\n\t\t\t$alert = document.createElement('div');\r\n\t\t\t$alert.classList.add('vg-alert', 'vg-alert-' + status, 'vg-alert-' + type);\r\n\r\n\t\t\tlet content = document.createElement('div');\r\n\t\t\tcontent.classList.add('vg-alert-content');\r\n\r\n\t\t\tlet icon = document.createElement('div');\r\n\t\t\ticon.classList.add('vg-alert-content--icon');\r\n\r\n\t\t\tlet i = document.createElement('i');\r\n\t\t\ti.innerHTML = getSVG(status);\r\n\r\n\t\t\ticon.append(i);\r\n\t\t\tcontent.append(icon);\r\n\r\n\t\t\tlet text = document.createElement('div');\r\n\t\t\ttext.classList.add('vg-alert-content--text');\r\n\t\t\ttext.innerHTML = data.view;\r\n\r\n\t\t\tcontent.append(text);\r\n\t\t\t$alert.append(content);\r\n\t\t} else {\r\n\t\t\tlet text = Selectors.find('.vg-alert-content--text', $alert);\r\n\t\t\ttext.innerHTML = data.view;\r\n\t\t}\r\n\r\n\t\treturn $alert;\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGFormSender.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\t}\r\n}\r\n\r\nEventHandler.on(document, EVENT_SUBMIT_DATA_API, function (event) {\r\n\tif (!Manipulator.has(event.target, 'data-vgformsender')) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst instance = VGFormSender.getOrCreateInstance(event.target, {});\r\n\tif (!instance) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (instance._params.validate) {\r\n\t\tif (!instance._element.checkValidity()) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\tinstance._element.classList.add(instance._params.classes.wasValidate);\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tconst collectData = function(data, fields) {\r\n\t\tfor (let name in fields) {\r\n\t\t\tif (typeof fields[name] === 'object') {\r\n\t\t\t\tfor (let key in fields[name]) {\r\n\t\t\t\t\tlet arr = Object.keys(fields[name][key]).map(function (i) {\r\n\t\t\t\t\t\treturn fields[name][key][i];\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdata.append(name, arr);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdata.append(name, fields[name]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tif (!instance._params.submit) {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tlet data = new FormData(instance._element);\r\n\r\n\t\t// TODO доделать\r\n\t\t/*if (Array.isArray(instance._params.ajax.fields) && instance._params.ajax.fields.length) {\r\n\t\t\tdata = collectData(data, instance._params.ajax.fields);\r\n\t\t}*/\r\n\r\n\t\treturn instance.request(data, event);\r\n\t}\r\n})\r\n\r\nexport default VGFormSender;","import './scss/vgformsender.scss';\r\nimport VGFormSender from \"./js/vgformsender\";\r\n\r\nexport default VGFormSender;","/*! js-cookie v3.0.1 | MIT */\r\n\r\nfunction assign (target) {\r\n\tfor (let i = 1; i < arguments.length; i++) {\r\n\t\tlet source = arguments[i];\r\n\t\tfor (let key in source) {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t}\r\n\t}\r\n\treturn target\r\n}\r\n\r\nlet defaultConverter = {\r\n\tread: function (value) {\r\n\t\tif (value[0] === '\"') {\r\n\t\t\tvalue = value.slice(1, -1);\r\n\t\t}\r\n\t\treturn value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\r\n\t},\r\n\twrite: function (value) {\r\n\t\treturn encodeURIComponent(value).replace(\r\n\t\t\t/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\r\n\t\t\tdecodeURIComponent\r\n\t\t)\r\n\t}\r\n};\r\n\r\nfunction init (converter, defaultAttributes) {\r\n\tfunction set (key, value, attributes) {\r\n\t\tif (typeof document === 'undefined') {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tattributes = assign({}, defaultAttributes, attributes);\r\n\r\n\t\tif (typeof attributes.expires === 'number') {\r\n\t\t\tattributes.expires = new Date(Date.now() + attributes.expires * 864e5);\r\n\t\t}\r\n\t\tif (attributes.expires) {\r\n\t\t\tattributes.expires = attributes.expires.toUTCString();\r\n\t\t}\r\n\r\n\t\tkey = encodeURIComponent(key)\r\n\t\t\t.replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\r\n\t\t\t.replace(/[()]/g, escape);\r\n\r\n\t\tlet stringifiedAttributes = '';\r\n\t\tfor (let attributeName in attributes) {\r\n\t\t\tif (!attributes[attributeName]) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tstringifiedAttributes += '; ' + attributeName;\r\n\r\n\t\t\tif (attributes[attributeName] === true) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\t// Considers RFC 6265 section 5.2:\r\n\t\t\t// ...\r\n\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\r\n\t\t\t// character:\r\n\t\t\t// Consume the characters of the unparsed-attributes up to,\r\n\t\t\t// not including, the first %x3B (\";\") character.\r\n\t\t\t// ...\r\n\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\r\n\t\t}\r\n\r\n\t\treturn (document.cookie =\r\n\t\t\tkey + '=' + converter.write(value, key) + stringifiedAttributes)\r\n\t}\r\n\r\n\tfunction get (key) {\r\n\t\tif (typeof document === 'undefined' || (arguments.length && !key)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// To prevent the for loop in the first place assign an empty array\r\n\t\t// in case there are no cookies at all.\r\n\t\tlet cookies = document.cookie ? document.cookie.split('; ') : [];\r\n\t\tlet jar = {};\r\n\t\tfor (let i = 0; i < cookies.length; i++) {\r\n\t\t\tlet parts = cookies[i].split('=');\r\n\t\t\tlet value = parts.slice(1).join('=');\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet foundKey = decodeURIComponent(parts[0]);\r\n\t\t\t\tjar[foundKey] = converter.read(value, foundKey);\r\n\r\n\t\t\t\tif (key === foundKey) {\r\n\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\treturn key ? jar[key] : jar\r\n\t}\r\n\r\n\treturn Object.create({\r\n\t\t\tset: set,\r\n\t\t\tget: get,\r\n\t\t\tremove: function (key, attributes) {\r\n\t\t\t\tset(\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\t'',\r\n\t\t\t\t\tassign({}, attributes, {\r\n\t\t\t\t\t\texpires: -1\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\twithAttributes: function (attributes) {\r\n\t\t\t\treturn init(this.converter, assign({}, this.attributes, attributes))\r\n\t\t\t},\r\n\t\t\twithConverter: function (converter) {\r\n\t\t\t\treturn init(assign({}, this.converter, converter), this.attributes)\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tattributes: { value: Object.freeze(defaultAttributes) },\r\n\t\t\tconverter: { value: Object.freeze(converter) }\r\n\t\t}\r\n\t)\r\n}\r\n\r\nlet api = init(defaultConverter, { path: '/' });\r\n\r\nexport default api;","import BaseModule from \"../../base-module\";\r\nimport {isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Cookies from \"../../../utils/js/dom/cookie\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'lawcookie';\r\nconst NAME_KEY = 'vg.lawcookie';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"lawcookie\"]';\r\nconst SELECTOR_DATA_TOGGLE_CLEAR = '[data-vg-toggle=\"lawcookie-clear\"]';\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGLawCookie extends BaseModule {\r\n\tstatic sParams = {};\r\n\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tstorage: 'local', // cookie or local\r\n\t\t\tdelay: 500,\r\n\t\t\tcookie: {\r\n\t\t\t\tname: 'lawCookie',\r\n\t\t\t\tvalue: 'yes',\r\n\t\t\t\tattributes: {}\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tin: 'animate__fadeInUp',\r\n\t\t\t\tout: 'animate__fadeOutDown',\r\n\t\t\t\tdelay: 800,\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tVGLawCookie.sParams = this._params;\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGLawCookie.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\treturn !this._isShown() ? this.show() : this.hide();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this.storage().get();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, {})\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, {});\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._element, true, this._params.delay)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\t\tconst completeCallback = () => EventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t\tthis._queueCallback(completeCallback, this._element, true);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\tstorage() {\r\n\t\tthis._storage = {\r\n\t\t\tisCookie: this._params.storage === 'cookie',\r\n\t\t\tstorage: this._params.storage === 'cookie' ? Cookies : localStorage,\r\n\t\t\tname: this._params.cookie.name,\r\n\t\t\tvalue: this._params.cookie.value,\r\n\t\t\tattributes: this._params.cookie.attributes,\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tget() {\r\n\t\tif (this._storage.isCookie) {\r\n\t\t\treturn this._storage.storage.get(this._storage.name);\r\n\t\t} else {\r\n\t\t\treturn this._storage.storage.getItem(this._storage.name);\r\n\t\t}\r\n\t}\r\n\r\n\tset() {\r\n\t\tif (this._storage.isCookie) {\r\n\t\t\tthis._storage.storage.set(this._storage.name, this._storage.value, this._storage.attributes);\r\n\t\t} else {\r\n\t\t\tthis._storage.storage.setItem(this._storage.name, this._storage.value);\r\n\t\t}\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\tstatic reset() {\r\n\t\tCookies.remove(VGLawCookie.sParams.cookie.name);\r\n\t\tlocalStorage.clear();\r\n\t\tlocation.reload();\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGLawCookie.getOrCreateInstance(element, params);\r\n\t\tinstance.toggle();\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGLawCookie);\r\n\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) return;\r\n\r\n\tconst element = Selectors.find('#vg-lawcookie');\r\n\tif (!element) return;\r\n\r\n\tconst instance = VGLawCookie.getOrCreateInstance(element);\r\n\tinstance.storage().set();\r\n\tinstance.hide();\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CLEAR, function (event) {\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) return;\r\n\r\n\tconst element = Selectors.find('#vg-lawcookie');\r\n\tif (!element) return;\r\n\r\n\tconst instance = VGLawCookie.getOrCreateInstance(element);\r\n\tinstance.dispose();\r\n\r\n\tlocation.reload();\r\n});\r\n\r\nexport default VGLawCookie;","import './scss/vglawcookie.scss';\r\nimport VGLawCookie from \"./js/vglawcookie\";\r\n\r\nexport default VGLawCookie;","import './scss/vgmodal.scss';\r\nimport VGModal from \"./js/vgmodal\";\r\n\r\nexport default VGModal;","/**\r\n * Класс Responsive, работает по таким же медиа точкам, что и bootstrap\r\n * и определяет на тач устройства.\r\n */\r\n\r\nclass Responsive {\r\n\tconstructor() {\r\n\t\tthis.breakpoints = {\r\n\t\t\txs: 0,\r\n\t\t\tsm: 576,\r\n\t\t\tmd: 768,\r\n\t\t\tlg: 992,\r\n\t\t\txl: 1200,\r\n\t\t\txxl: 1400,\r\n\t\t\txxxl: 1600,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Если наша ширина экрана совпадает с диапазоном который указан в модуле выдаем true, иначе false\r\n\t * @param module\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic check(module) {\r\n\t\tlet instance = new this ;\r\n\t\treturn instance.define(module);\r\n\t}\r\n\r\n\t/**\r\n\t * Проверяет на тач устройства. TODO не совсем правильно, надо сделать по-другому\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic checkMobileOrTablet() {\r\n\t\tlet check = false;\r\n\t\t(function(a) {\r\n\t\t\tif (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.slice(0,4))){\r\n\t\t\t\tcheck = true;\r\n\t\t\t}\r\n\t\t})(navigator.userAgent||navigator.vendor||window.opera);\r\n\r\n\t\treturn check;\r\n\t}\r\n\r\n\tdefine(module) {\r\n\t\tlet windowWidth = window.innerWidth,\r\n\t\t\tresponsive_size = this._checkResponsiveClass(module),\r\n\t\t\tbreakpoints = this.breakpoints,\r\n\t\t\tpoint = Object.keys(breakpoints).find(key => breakpoints[key] === responsive_size);\r\n\r\n\t\tlet keys = Object.keys(breakpoints),\r\n\t\t\tloc = keys.indexOf(point);\r\n\r\n\t\treturn windowWidth >= breakpoints[keys[loc + 1]];\r\n\t}\r\n\r\n\t_checkResponsiveClass(module) {\r\n\t\tlet element = module._element,\r\n\t\t\tparams = module._params,\r\n\t\t\tcurrent_responsive_size = 0;\r\n\r\n\t\tif (element.classList.contains(params.classes.XXXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxxl;\r\n\t\t} else if (element.classList.contains(params.classes.XXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxl;\r\n\t\t} else if (element.classList.contains(params.classes.XL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xl;\r\n\t\t} else if (element.classList.contains(params.classes.LG)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.lg;\r\n\t\t} else if (element.classList.contains(params.classes.MD)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.md;\r\n\t\t} else if (element.classList.contains(params.classes.SM)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.sm;\r\n\t\t} else if (element.classList.contains(params.classes.XS)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t} else {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t}\r\n\r\n\t\treturn current_responsive_size\r\n\t}\r\n}\r\n\r\nexport default Responsive;","import BaseModule from \"../../base-module\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Responsive from \"../../../utils/js/components/responsive\";\r\nimport {getSVG} from \"../../module-fn\";\r\nimport {execute, isDisabled, isVisible, mergeDeepObject, noop, normalizeData} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'nav';\r\nconst NAME_KEY = 'vg.nav';\r\n\r\n/**\r\n * Constants Classes\r\n */\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst SELECTOR_DATA_TOGGLE = '.vg-nav a';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_RESIZE_DATA_API = `resize.${NAME_KEY}.data.api`;\r\n\r\nclass VGNav extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbreakpoint: false,\r\n\t\t\tplacement: 'horizontal',\r\n\t\t\tclasses: {\r\n\t\t\t\thamburgerActive: 'vg-nav-hamburger-active',\r\n\t\t\t\thamburgerAlways: 'vg-nav-hamburger-always',\r\n\t\t\t\thamburger: 'vg-nav-hamburger',\r\n\t\t\t\tcontainer: 'vg-nav-container',\r\n\t\t\t\twrapper: 'vg-nav-wrapper',\r\n\t\t\t\tactive: 'vg-nav-active',\r\n\t\t\t\texpand: 'vg-nav-expand',\r\n\t\t\t\tcloned: 'vg-nav-cloned',\r\n\t\t\t\thover: 'vg-nav-hover',\r\n\t\t\t\tflip: 'vg-nav-flip',\r\n\t\t\t\tXXXL: 'vg-nav-xxxl',\r\n\t\t\t\tXXL: 'vg-nav-xxl',\r\n\t\t\t\tXL: 'vg-nav-xl',\r\n\t\t\t\tLG: 'vg-nav-lg',\r\n\t\t\t\tMD: 'vg-nav-md',\r\n\t\t\t\tSM: 'vg-nav-sm',\r\n\t\t\t\tXS: 'vg-nav-xs'\r\n\t\t\t},\r\n\t\t\texpand: true,\r\n\t\t\thover: false,\r\n\t\t\tposition: true,\r\n\t\t\tcollapse: true,\r\n\t\t\ttoggle: '<span class=\"default\"></span>',\r\n\t\t\thamburger: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\talways: false,\r\n\t\t\t\ttitle: '',\r\n\t\t\t\tbody: null\r\n\t\t\t},\r\n\t\t\tcallback: noop,\r\n\t\t\tanimation: true,\r\n\t\t\ttimeoutAnimation: 300,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._navigation = null;\r\n\t\tthis.navigation = '.' + this._params.classes.wrapper;\r\n\r\n\t\tthis.movedLinks = [];\r\n\t\tthis.$links = Selectors.findAll('.' + this._params.classes.wrapper + ' > li', this.navigation)\r\n\r\n\t\tif (this._params.animation === false) {\r\n\t\t\tthis._params.timeoutAnimation = 10\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tget navigation() {\r\n\t\treturn this._navigation;\r\n\t}\r\n\r\n\tset navigation(el) {\r\n\t\tlet elm = Selectors.find(el, this._element);\r\n\t\tif (!elm) return;\r\n\t\tthis._navigation = elm;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tif (!this.navigation) return;\r\n\r\n\t\tlet params = this._params;\r\n\r\n\t\t// Вешаем основные классы\r\n\t\tthis._element.classList.add(params.classes.container);\r\n\t\tthis._element.classList.add('vg-nav-' + params.placement);\r\n\r\n\t\t// Если нужно оставить список меню или установить медиа точку\r\n\t\tif (!params.breakpoint) {\r\n\t\t\tparams.expand = false;\r\n\t\t}\r\n\r\n\t\tif (!params.hamburger.always) {\r\n\t\t\tif (!params.breakpoint || !params.expand) {\r\n\t\t\t\tthis._element.classList.add(params.classes.expand);\r\n\t\t\t} else if (params.breakpoint !== false) {\r\n\t\t\t\tthis._element.classList.add('vg-nav-' + params.breakpoint);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._element.classList.add(params.classes.hamburgerAlways);\r\n\t\t}\r\n\r\n\t\t// Меню срабатывает при наведении, если это не мобильное устройство\r\n\t\tif (params.hover) {\r\n\t\t\tthis._element.classList.add(params.classes.hover);\r\n\r\n\t\t\tif (Responsive.checkMobileOrTablet()) {\r\n\t\t\t\tthis._element.classList.remove(params.classes.hover);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем гамбургер, если его нет в разметке\r\n\t\tif (params.expand && !params.hamburger.body) {\r\n\t\t\tlet isHamburger = Selectors.find('.' + params.classes.hamburger, this._element);\r\n\r\n\t\t\tif (isHamburger === null) {\r\n\t\t\t\tlet mTitle = '',\r\n\t\t\t\t\thamburger = '<span class=\"' + params.classes.hamburger + '--lines\"><span></span><span></span><span></span></span>';\r\n\r\n\t\t\t\tif (params.hamburger.title) {\r\n\t\t\t\t\tmTitle = '<span class=\"' + params.classes.hamburger + '--title\">'+ params.hamburger.title +'</span>';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (params.hamburger.body !== null) {\r\n\t\t\t\t\thamburger = params.hamburger.body;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._element.insertAdjacentHTML('afterbegin','<a href=\"#sidebar-nav\" class=\"' + params.classes.hamburger + '\" data-vg-toggle=\"sidebar\">' + mTitle + hamburger +'</a>');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем указатель переключателя\r\n\t\tif (params.toggle) {\r\n\t\t\tlet $dropdown_a = [...Selectors.findAll('.dropdown-mega > a, .dropdown > a', this._element)],\r\n\t\t\t\ttoggle = '<span class=\"toggle\">' + params.toggle + '</span>';\r\n\r\n\t\t\tif ($dropdown_a.length) {\r\n\t\t\t\t$dropdown_a.forEach(function (elem) {\r\n\t\t\t\t\tif (!elem.querySelector('.toggle') && !elem.closest('.dots')) {\r\n\t\t\t\t\t\telem.setAttribute('aria-expanded', 'false')\r\n\t\t\t\t\t\telem.insertAdjacentHTML('beforeend', toggle)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (params.collapse && Responsive.check(this) && params.placement !== 'vertical') {\r\n\t\t\tsetCollapse(this);\r\n\t\t}\r\n\r\n\t\tif ('afterInit' in this._params.callback) {\r\n\t\t\texecute(this._params.callback.afterInit, [this]);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Функция сворачивания\r\n\t\t * TODO Придумать что то с мега меню, которое уходит в подменю\r\n\t\t * TODO Так же есть косяки при ресайзе\r\n\t\t */\r\n\t\tfunction setCollapse(_this) {\r\n\t\t\tlet width_navigation_responsive = _this.navigation.clientWidth,\r\n\t\t\t\twidth_all_links_responsive = 0,\r\n\t\t\t\t$dots = Selectors.find('.dots', _this.navigation),\r\n\t\t\t\t_dots = getSVG('dots');\r\n\r\n\t\t\tif (_this.$links.length) {\r\n\t\t\t\tif ($dots) {\r\n\t\t\t\t\twidth_all_links_responsive = $dots.clientWidth\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet $a = Selectors.find('a', _this.$links[0]),\r\n\t\t\t\t\t\t$linkStyle = getComputedStyle($a),\r\n\t\t\t\t\t\tpaddingLeft = normalizeData($linkStyle.paddingLeft.slice(0, -2)),\r\n\t\t\t\t\t\tpaddingRight = normalizeData($linkStyle.paddingRight.slice(0, -2)),\r\n\t\t\t\t\t\tpadding = paddingLeft + paddingRight;\r\n\r\n\t\t\t\t\t// TODO не совсем верно, но мы точно знаем ширину точек в svg - 16px\r\n\t\t\t\t\twidth_all_links_responsive = padding + 16;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let $link of _this.$links) {\r\n\t\t\t\t\tlet width = $link.getBoundingClientRect().width;\r\n\t\t\t\t\twidth_all_links_responsive = width_all_links_responsive + width;\r\n\r\n\t\t\t\t\tif ((width_navigation_responsive) < width_all_links_responsive) {\r\n\t\t\t\t\t\t_this.movedLinks.push($link);\r\n\t\t\t\t\t\t$link.remove();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (_this.movedLinks.length) {\r\n\t\t\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t\t\t_this.navigation.insertBefore(_this.movedLinks[0], $dots)\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_this.navigation.appendChild(_this.movedLinks[0])\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_this.movedLinks.splice(0, 1);\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\tif (_this.movedLinks.length) {\r\n\t\t\t\t\tif (!$dots) {\r\n\t\t\t\t\t\t_this.navigation.insertAdjacentHTML('beforeend','<li class=\"dropdown dots\">' + '<a href=\"#\" aria-expanded=\"false\">'+ _dots +'</a></li>');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t$dots.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet $d = _this.navigation.querySelector('.dots');\r\n\t\t\t\tif ($d && _this.movedLinks.length) {\r\n\t\t\t\t\tlet $dropdown = $d.querySelector('ul');\r\n\t\t\t\t\tif ($dropdown) {\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet $dropdown = document.createElement('ul');\r\n\t\t\t\t\t\t$dropdown.classList.add('dropdown-content');\r\n\t\t\t\t\t\t$dropdown.classList.add('right');\r\n\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$d.appendChild($dropdown);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tlet target = relatedTarget.relatedTarget;\r\n\r\n\t\tif (!target || isDisabled(target)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.closest('.dropdown-content')) {\r\n\t\t\ttarget.classList.add('first');\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(target, EVENT_KEY_SHOW, { relatedTarget });\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tlet drop = Selectors.find('.dropdown-content', target),\r\n\t\t\tlink = target.firstElementChild;\r\n\r\n\t\tif (link) link.setAttribute('aria-expanded', 'true');\r\n\t\tdrop.classList.add(CLASS_NAME_SHOW);\r\n\t\ttarget.classList.add(CLASS_NAME_ACTIVE);\r\n\r\n\t\tsetDropPosition(drop)\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tdrop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(target, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, drop, true, 50);\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @param $drop\r\n\t\t */\r\n\t\tfunction setDropPosition($drop) {\r\n\t\t\tlet {width, right} = $drop.getBoundingClientRect(),\r\n\t\t\t\twindow_width = window.innerWidth;\r\n\r\n\t\t\tlet N_right = window_width - right - width;\r\n\r\n\t\t\t$drop.classList.remove('right');\r\n\t\t\t$drop.classList.remove('left');\r\n\r\n\t\t\tlet $parent = $drop.closest('li'),\r\n\t\t\t\t$ul = $parent.querySelectorAll('ul');\r\n\r\n\t\t\tif (N_right > width) {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('left');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('right');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thide(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet element = relatedTarget.relatedTarget;\r\n\r\n\t\tif ('elm' in relatedTarget && relatedTarget.elm) {\r\n\t\t\telement = relatedTarget.elm\r\n\t\t}\r\n\r\n\t\tif (element) {\r\n\t\t\tconst hideEvent = EventHandler.trigger(element, EVENT_KEY_HIDE);\r\n\t\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\t\telement.classList.remove(CLASS_NAME_ACTIVE);\r\n\r\n\t\t\tif (element.classList.contains('first')) {\r\n\t\t\t\telement.classList.remove('first');\r\n\t\t\t}\r\n\r\n\t\t\t[...Selectors.findAll('.' + CLASS_NAME_SHOW, element)].forEach(function (el, index) {\r\n\t\t\t\tel.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\t\t\tlet parent = el.closest('.dropdown');\r\n\t\t\t\tif (parent.classList.contains(CLASS_NAME_ACTIVE)) {\r\n\t\t\t\t\tparent.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet link = el.previousElementSibling;\r\n\t\t\t\tif (link) link.setAttribute('aria-expanded', 'false');\r\n\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tconst completeCallback = () => {\r\n\t\t\t\t\t\tel.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\t\t\tEventHandler.trigger(el, EVENT_KEY_HIDDEN, relatedTarget)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_this._queueCallback(completeCallback, el, true, 500);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * TODO если на странице несколько навигаций, то есть косяки\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGNav.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\r\n\t\tlet drops = Selectors.findAll('.dropdown', instance._navigation)\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\t[...drops].forEach(function (el) {\r\n\t\t\t\tlet currentElem = null;\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\t\tif (currentElem) return;\r\n\t\t\t\t\tVGNav.hideOpenDrops(event);\r\n\r\n\t\t\t\t\tlet target = event.target.closest('.dropdown');\r\n\t\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\t\tif (!instance.navigation.contains(target)) return;\r\n\t\t\t\t\tcurrentElem = target;\r\n\r\n\t\t\t\t\tlet relatedTarget = {\r\n\t\t\t\t\t\trelatedTarget: target\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinstance.show(relatedTarget);\r\n\t\t\t\t});\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\t\tlet relatedTarget = event.relatedTarget.closest('.dropdown'),\r\n\t\t\t\t\t\telm = currentElem;\r\n\r\n\t\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentElem = null;\r\n\t\t\t\t\tinstance.hide({relatedTarget: relatedTarget, elm: elm});\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\t\t\t\tif (!Manipulator.has(this, 'aria-expanded')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ('click' in instance._params.callback) {\r\n\t\t\t\t\texecute(instance._params.callback.click, [this]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tlet self = this.closest('.vg-nav'),\r\n\t\t\t\t\tisFirst = self.querySelector('.first');\r\n\r\n\t\t\t\tlet target = this.closest('.dropdown');\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (isDisabled(target) && !isVisible(target)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isFirst && this.closest('.first')) {\r\n\t\t\t\t\tif (target.classList.contains('active')) {\r\n\t\t\t\t\t\tinstance.hide({relatedTarget: target});\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t[...Selectors.findAll('.active', self)].forEach(function (el) {\r\n\t\t\t\t\t\tif (el && el !== target) {\r\n\t\t\t\t\t\t\tinstance.hide({relatedTarget: el})\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\tinstance.show({relatedTarget: target});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst vgNavSidebar = document.getElementById('sidebar-nav');\r\n\t\tlet hamburger = instance._element.querySelector('.' + instance._params.classes.hamburger);\r\n\r\n\t\tif (vgNavSidebar && hamburger) {\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.show', function () {\r\n\t\t\t\thamburger.classList.add(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.hide', function () {\r\n\t\t\t\thamburger.classList.remove(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGNav.hideOpenDrops(event)\r\n\t}\r\n\r\n\tstatic hideOpenDrops(event) {\r\n\t\tconst openToggles = Selectors.findAll('.dropdown:not(.disabled):not(:disabled).active');\r\n\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGNav.getInstance(toggle.closest('.vg-nav'));\r\n\t\t\tif (!context) continue;\r\n\r\n\t\t\tif (event.target.closest('.first')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: toggle }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext.hide(relatedTarget)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEventHandler.on(window, EVENT_RESIZE_DATA_API, function () {\r\n\tif (Selectors.find('.vg-nav')) {\r\n\t\tconst instance = VGNav.getOrCreateInstance('.vg-nav', {});\r\n\t\tinstance.build();\r\n\t}\r\n})\r\n\r\nexport default VGNav;","import './scss/vgnav.scss';\r\nimport VGNav from \"./js/vgnav\";\r\n\r\nexport default VGNav;","import BaseModule from \"../../base-module\";\r\nimport {execute, isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'rollup';\r\nconst NAME_KEY = 'vg.rollup';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_HIDE = 'vg-rollup-display--none';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"rollup\"]'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGRollup extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tcontent: 'text',\r\n\t\t\toffset: 0,\r\n\t\t\tcnt: 0,\r\n\t\t\tfade: true,\r\n\t\t\ttransition: false,\r\n\t\t\tnumber: false,\r\n\t\t\theight: 0,\r\n\t\t\tellipsis: {\r\n\t\t\t\tline: null\r\n\t\t\t},\r\n\t\t\tmore: ' еще ',\r\n\t\t\tbutton: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tmore: \"Показать\",\r\n\t\t\t\tless: \"Свернуть\"\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis.classes = {\r\n\t\t\tcontainer: 'vg-rollup',\r\n\t\t\thidden: \"vg-rollup-content--hidden\",\r\n\t\t\tfade: \"vg-rollup-content--fade\",\r\n\t\t\tellipsis: \"vg-rollup-content--ellipsis\",\r\n\t\t\tbutton: \"vg-rollup-content--button\",\r\n\t\t\ttransition: \"vg-rollup-content--transition\"\r\n\t\t};\r\n\r\n\t\tthis.total = 0;\r\n\t\tthis.count = 0;\r\n\t\tthis.offset = 0;\r\n\t\tthis.isOffset = false;\r\n\r\n\t\tif (this._params.offset > 0) {\r\n\t\t\tthis.offset = (this._params.offset + this._params.cnt) || 0;\r\n\t\t\tthis.isOffset = true;\r\n\t\t}\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\tstatic toggle(target, relatedTarget) {\r\n\t\tconst instance = VGRollup.getOrCreateInstance(target);\r\n\t\tlet isShown = instance.isShow();\r\n\r\n\t\tif (!isShown) {\r\n\t\t\tinstance._element.classList.add(CLASS_NAME_SHOW);\r\n\t\t\trelatedTarget.innerHTML = instance._params.button.less;\r\n\r\n\t\t\tif (instance.offset > 0) {\r\n\t\t\t\tif (instance.isOffset) {\r\n\t\t\t\t\trelatedTarget.innerHTML = instance._params.button.more;\r\n\t\t\t\t} else {\r\n\t\t\t\t\trelatedTarget.innerHTML = instance._params.button.less;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tinstance.switch(instance._element, false);\r\n\t\t\tEventHandler.trigger(instance._element, EVENT_KEY_SHOW, { relatedTarget });\r\n\t\t} else {\r\n\t\t\tlet textShowNum = '',\r\n\t\t\t\tisShowNum = instance._params.number;\r\n\r\n\r\n\t\t\tif (isShowNum) {\r\n\t\t\t\tlet sum = (instance.total) - (instance.count);\r\n\r\n\t\t\t\tif (sum > 0) {\r\n\t\t\t\t\ttextShowNum = instance._params.more + sum;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\trelatedTarget.setAttribute(\"aria-expanded\", false);\r\n\t\t\tinstance._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\trelatedTarget.innerHTML = instance._params.button.more + textShowNum;\r\n\t\t\tinstance.switch(instance._element, true);\r\n\r\n\t\t\tEventHandler.trigger(instance._element, EVENT_KEY_HIDE, { relatedTarget });\r\n\t\t}\r\n\t}\r\n\r\n\tbuild(el = null, isButtonAppend = true) {\r\n\t\tlet _this = this,\r\n\t\t\telement = el || _this._element,\r\n\t\t\tself_height = element.clientHeight, set_height = _this._params.height || (self_height / 2);\r\n\r\n\t\telement.classList.add(_this.classes.container)\r\n\r\n\t\tlet isFade = _this._params.fade,\r\n\t\t\tisTransition = _this._params.transition,\r\n\t\t\tisEllipsis = _this._params.ellipsis.line !== null,\r\n\t\t\tisButton = _this._params.button.enable,\r\n\t\t\tisShowNum = _this._params.number;\r\n\r\n\t\tif (!isButtonAppend) _this.switch(element);\r\n\r\n\t\tif (self_height > set_height && _this._params.content === 'text') {\r\n\t\t\telement.classList.add(_this.classes.hidden);\r\n\t\t\telement.style.height = set_height + \"px\";\r\n\r\n\t\t\tellipsis();\r\n\t\t\ttransition();\r\n\t\t\tfade();\r\n\t\t\tbutton();\r\n\t\t} else if (_this._params.content === 'elements') {\r\n\t\t\tlet elementClass = _this._params.elements || 'item',\r\n\t\t\t\titems = element.querySelectorAll('.' + elementClass),\r\n\t\t\t\tcnt = _this._params.cnt || 5,\r\n\t\t\t\ti = 1;\r\n\r\n\t\t\t_this.total = items.length;\r\n\t\t\t_this.count = cnt;\r\n\r\n\t\t\tfor (const item of items) {\r\n\t\t\t\tif (i > cnt) {\r\n\t\t\t\t\titem.classList.add(CLASS_NAME_HIDE)\r\n\t\t\t\t}\r\n\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif (isButton === true) isButton = (i - 1) > cnt;\r\n\r\n\t\t\tellipsis();\r\n\t\t\ttransition();\r\n\t\t\tfade();\r\n\t\t\tbutton();\r\n\t\t}\r\n\r\n\t\tfunction ellipsis() {\r\n\t\t\tif (isEllipsis) {\r\n\t\t\t\tlet line = _this._params.ellipsis.line;\r\n\t\t\t\tisFade = false;\r\n\r\n\t\t\t\tif (line) {\r\n\t\t\t\t\telement.classList.add(_this.classes.ellipsis);\r\n\t\t\t\t\telement.style.webkitLineClamp = line;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log(\"Переменная [data-line] или параметр[line] не должны быть пустыми\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO no work\r\n\t\tfunction transition() {\r\n\t\t\tif (isTransition) {\r\n\t\t\t\telement.classList.add(_this.classes.transition);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction fade() {\r\n\t\t\tif (isFade) {\r\n\t\t\t\telement.classList.add(_this.classes.fade);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction button() {\r\n\t\t\tif (isButtonAppend) {\r\n\t\t\t\telement.setAttribute(\"id\", element.id);\r\n\r\n\t\t\t\tif (isButton) {\r\n\t\t\t\t\tlet textShowNum = '';\r\n\r\n\t\t\t\t\tif (isShowNum) {\r\n\t\t\t\t\t\tlet sum = (_this.total) - (_this.count);\r\n\r\n\t\t\t\t\t\tif (sum > 0) {\r\n\t\t\t\t\t\t\ttextShowNum = _this._params.more + sum;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet btnTextMore = _this._params.button.more;\r\n\t\t\t\t\telement.insertAdjacentHTML(\"afterend\", \"<div class=\\\"\" + _this.classes.button + \"\\\"><a href=\\\"#\\\" aria-expanded=\\\"false\\\" data-vg-toggle=\\\"rollup\\\" data-vg-target=\\\"#\" + element.id + \"\\\">\" + btnTextMore + textShowNum + \"</a></div>\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tswitch(el, switcher = false) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (switcher) {\r\n\t\t\tthis.build(el, false);\r\n\t\t} else {\r\n\t\t\tel.classList.remove(this.classes.hidden);\r\n\t\t\tel.classList.remove(this.classes.ellipsis);\r\n\t\t\tel.classList.remove(this.classes.fade);\r\n\r\n\t\t\tel.removeAttribute(\"style\");\r\n\r\n\t\t\tif (_this._params.content === 'elements') {\r\n\t\t\t\tlet className = _this._params.elements;\r\n\r\n\t\t\t\tlet items = [...el.querySelectorAll('.' + className)];\r\n\t\t\t\tif (items.length) {\r\n\t\t\t\t\tif (_this.offset > 0) {\r\n\t\t\t\t\t\tlet className = _this._params.elements,\r\n\t\t\t\t\t\t\titems = [...el.querySelectorAll('.' + className)];\r\n\r\n\t\t\t\t\t\titems.slice(_this.count, _this.offset).forEach(item => item.classList.remove(CLASS_NAME_HIDE));\r\n\t\t\t\t\t\t_this.offset = _this.offset + _this.settings.offset;\r\n\r\n\t\t\t\t\t\tif (_this.offset > items.length) {\r\n\t\t\t\t\t\t\t_this.isOffset = false;\r\n\t\t\t\t\t\t\t_this.offset = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\titems.forEach((item) => item.classList.remove(CLASS_NAME_HIDE))\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisShow() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t * @param callback\r\n\t */\r\n\tstatic init(element, params = {}, callback) {\r\n\t\tconst instance = VGRollup.getOrCreateInstance(element, params);\r\n\t\texecute(callback, [instance]);\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\tif (!target) return;\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tVGRollup.toggle(target, this);\r\n});\r\n\r\n\r\nexport default VGRollup;","import './scss/vgrollup.scss';\r\nimport VGRollup from \"./js/vgrollup\";\r\n\r\nexport default VGRollup;","import BaseModule from \"../../base-module\";\r\nimport {\r\n\tisDisabled,\r\n\tisEmptyObj, isObject,\r\n\tmergeDeepObject,\r\n\tnoop,\r\n\tnormalizeData,\r\n\ttransliterate\r\n} from \"../../../utils/js/functions\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'select';\r\nconst NAME_KEY = 'vg.select';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst CLASS_NAME_CONTAINER = 'vg-select';\r\nconst CLASS_NAME_DROPDOWN = 'vg-select-dropdown';\r\nconst CLASS_NAME_LIST = 'vg-select-list';\r\nconst CLASS_NAME_OPTION = 'vg-select-list--option';\r\nconst CLASS_NAME_OPTGROUP = 'vg-select-list--optgroup';\r\nconst CLASS_NAME_OPTGROUP_TITLE = 'vg-select-list--optgroup-title';\r\nconst CLASS_NAME_CURRENT = 'vg-select-current';\r\nconst CLASS_NAME_PLACEHOLDER = 'vg-select-current--placeholder';\r\nconst CLASS_NAME_SEARCH = 'vg-select-search';\r\n\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_UP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_RESET_DATA_API = `reset.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_CHANGE = `${NAME_KEY}.change`;\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"select\"]';\r\nconst SELECTOR_OPTION_TOGGLE = '[data-vg-toggle=\"select-option\"]';\r\nconst SELECTOR_SEARCH_TOGGLE = '[name=vg-select-search]';\r\n\r\n\r\nlet observerTimout;\r\n\r\nclass VGSelect extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tsearch: false,\r\n\t\t\tplaceholder: '',\r\n\t\t}, params));\r\n\r\n\t\telement.parentElement.style.position = 'relative';\r\n\r\n\t\tthis._drop = Selectors.find('.' + CLASS_NAME_DROPDOWN, this._element);\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tstatic buildListOptions(selector, drop) {\r\n\t\tlet options = selector.options,\r\n\t\t\tlist = document.createElement('ul');\r\n\r\n\t\tlist.classList.add(CLASS_NAME_LIST);\r\n\r\n\t\tlet optGroup = selector.querySelectorAll('optgroup');\r\n\r\n\t\tif (optGroup.length) {\r\n\t\t\tlet isSelected = false;\r\n\t\t\t[...optGroup].forEach(function (el) {\r\n\t\t\t\tlet olOptGroup = document.createElement('ol');\r\n\t\t\t\tolOptGroup.classList.add(CLASS_NAME_OPTGROUP);\r\n\r\n\t\t\t\tlet liLabel = document.createElement('li');\r\n\t\t\t\tliLabel.innerHTML = el.label.trim();\r\n\t\t\t\tliLabel.classList.add(CLASS_NAME_OPTGROUP_TITLE)\r\n\r\n\t\t\t\tolOptGroup.prepend(liLabel)\r\n\r\n\t\t\t\tlet optGroupOptions = Selectors.findAll('option', el);\r\n\r\n\t\t\t\tcreateLi(optGroupOptions, olOptGroup, isSelected);\r\n\r\n\t\t\t\tlist.append(olOptGroup);\r\n\t\t\t\tisSelected = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tlet isSelected = false;\r\n\t\t\tcreateLi(options, list, isSelected);\r\n\t\t}\r\n\r\n\t\tdrop.append(list);\r\n\r\n\t\treturn list;\r\n\r\n\t\tfunction createLi(options, list, isSelected) {\r\n\t\t\tlet i = 0;\r\n\t\t\tfor (const option of options) {\r\n\t\t\t\tlet li = document.createElement('li');\r\n\r\n\t\t\t\tli.innerHTML = option.innerHTML.trim().replace(/<\\/[^>]+(>|$)/g, \"\")\r\n\t\t\t\tli.dataset.value = Manipulator.get(option, 'value');\r\n\t\t\t\tli.classList.add(CLASS_NAME_OPTION);\r\n\r\n\t\t\t\tManipulator.set(li, 'data-vg-toggle', 'select-option');\r\n\r\n\t\t\t\tlet liData = Manipulator.get(option);\r\n\t\t\t\tif (!isEmptyObj(liData)) {\r\n\t\t\t\t\tfor (const key of Object.keys(liData)) {\r\n\t\t\t\t\t\tManipulator.set(li, 'data-' + key, liData[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (i === selector.selectedIndex && !isSelected) {\r\n\t\t\t\t\tli.classList.add('selected');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (Manipulator.has(option, 'disabled')) li.classList.add('disabled');\r\n\t\t\t\tif (Manipulator.has(option, 'hidden')) li.classList.add('hidden');\r\n\r\n\t\t\t\tlist.append(li);\r\n\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic build(selector, reBuild) {\r\n\t\tlet option_selected,\r\n\t\t\tplaceholder = selector.dataset.placeholder || '',\r\n\t\t\tisSearch = selector.dataset.search || false;\r\n\r\n\t\tif (selector.dataset?.inited === 'true' && !reBuild) {\r\n\t\t\treturn;\r\n\t\t} else if (reBuild) {\r\n\t\t\tVGSelect.destroy(selector);\r\n\t\t}\r\n\r\n\t\tif (placeholder && selector.selectedIndex === 0) {\r\n\t\t\toption_selected = '<span class=\"'+ CLASS_NAME_PLACEHOLDER +'\">' + placeholder + '<span>';\r\n\t\t} else {\r\n\t\t\toption_selected = selector.options[selector.selectedIndex].innerText;\r\n\t\t}\r\n\r\n\t\t// Создаем основной элемент с классами селекта\r\n\t\tlet classes = Manipulator.get(selector,'class'),\r\n\t\t\telement = document.createElement('div');\r\n\r\n\t\tclasses = classes.split(' ');\r\n\r\n\t\tfor (const _class of classes) {\r\n\t\t\telement.classList.add(_class)\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(selector, 'disabled')) element.classList.add('disabled');\r\n\r\n\t\tlet elData = Manipulator.get(selector);\r\n\t\tif (!isEmptyObj(elData)) {\r\n\t\t\tfor (const key of Object.keys(elData)) {\r\n\t\t\t\tManipulator.set(element,'data-' + key, elData[key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Создаем элемент с отображением выбранного варианта\r\n\t\tlet current = document.createElement('div');\r\n\t\tcurrent.classList.add(CLASS_NAME_CURRENT);\r\n\t\tManipulator.set(current, 'data-vg-toggle', 'select');\r\n\t\tManipulator.set(current, 'aria-expanded', 'false');\r\n\t\tcurrent.innerHTML = option_selected.trim();\r\n\t\telement.append(current);\r\n\r\n\t\t// Создаем элемент выпадающего списка\r\n\t\tlet dropdown = document.createElement('div');\r\n\t\tdropdown.classList.add(CLASS_NAME_DROPDOWN);\r\n\t\telement.append(dropdown);\r\n\r\n\t\t// Создаем список и варианты селекта\r\n\t\tVGSelect.buildListOptions(selector, dropdown);\r\n\r\n\t\t// Добавляем все созданный контейнер после селекта\r\n\t\tselector.insertAdjacentElement('afterend', element);\r\n\r\n\t\t// помечаем элемент инициализированным\r\n\t\tselector.dataset.inited = 'true';\r\n\r\n\t\tif (isSearch) {\r\n\t\t\tlet search_container = document.createElement('div');\r\n\t\t\tsearch_container.classList.add(CLASS_NAME_SEARCH);\r\n\r\n\t\t\tlet input = document.createElement('input');\r\n\t\t\tManipulator.set(input, 'name', 'vg-select-search');\r\n\t\t\tManipulator.set(input, 'type', 'text');\r\n\t\t\tManipulator.set(input, 'placeholder', 'Поиск...');\r\n\r\n\t\t\tsearch_container.append(input);\r\n\t\t\tdropdown.prepend(search_container);\r\n\t\t}\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.on(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\r\n\t\tif (this._params.search) {\r\n\t\t\tlet input = Selectors.find('input', this._element);\r\n\t\t\tif (input) input.focus();\r\n\t\t}\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._element.classList.add(CLASS_NAME_ACTIVE);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(completeCallBack, this._drop, true, 50)\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element) || !this._isShown()) return;\r\n\r\n\t\tthis._completeHide();\r\n\t}\r\n\r\n\t_completeHide() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE, {})\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tthis._element.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\tlet toggle = Selectors.find(SELECTOR_DATA_TOGGLE, this._element);\r\n\t\tManipulator.set(toggle, 'aria-expanded', 'false');\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst completeCallback = () => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN, {});\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallback, this._drop, true, 10);\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tconst select = this._element.previousSibling;\r\n\r\n\t\tlet observer = new MutationObserver(() => {\r\n\t\t\tclearTimeout(observerTimout);\r\n\t\t\tobserverTimout = setTimeout(() => {\r\n\t\t\t\tVGSelect.build(select, true);\r\n\t\t\t}, 100);\r\n\t\t});\r\n\r\n\t\tobserver.observe(select, {\r\n\t\t\tattributeFilter: ['disabled', 'required', 'style', 'hidden'],\r\n\t\t\tchildList: true,\r\n\t\t\tsubtree: true,\r\n\t\t\tcharacterDataOldValue: true,\r\n\t\t});\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\tstatic destroy(select) {\r\n\t\tlet element = select.nextElementSibling;\r\n\r\n\t\tif (element) {\r\n\t\t\tif (element.classList.contains(CLASS_NAME_CONTAINER)) {\r\n\t\t\t\telement.remove();\r\n\r\n\t\t\t\tselect.selectedIndex = 0;\r\n\t\t\t\t[...select.querySelectorAll('option')].forEach(function (el, index) {\r\n\t\t\t\t\tif (el.hasAttribute('selected')) {\r\n\t\t\t\t\t\tselect.selectedIndex = index;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic hideOpenToggles(event) {\r\n\t\tconst openToggles = Selectors.findAll('.vg-select:not(.disabled):not(:disabled).show');\r\n\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGSelect.getInstance(toggle);\r\n\t\t\tif (!context) continue;\r\n\r\n\t\t\tif (event.target.closest('.' + CLASS_NAME_CONTAINER) === context._element) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst composedPath = event.composedPath();\r\n\t\t\tif (composedPath.includes(context._element)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: context._element }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext._completeHide(relatedTarget)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGSelect.hideOpenToggles(event)\r\n\t}\r\n\r\n\tstatic changeSelector(select, value, data = {}) {\r\n\t\tif (!isObject(data) && isEmptyObj(data)) return;\r\n\r\n\t\tselect.value = normalizeData(value);\r\n\t\tEventHandler.trigger(select, EVENT_KEY_CHANGE, {data: data});\r\n\t\tEventHandler.trigger(select, 'change', {data: data});\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t * @param isRebuild\r\n\t */\r\n\tstatic init(element, params = {}, isRebuild = false) {\r\n\t\tlet elm = VGSelect.build(element);\r\n\t\tVGSelect.getOrCreateInstance(elm, params);\r\n\t}\r\n}\r\n\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, VGSelect.clearDrops);\r\n\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function () {\r\n\tconst target = this.closest('.' + CLASS_NAME_CONTAINER);\r\n\r\n\tManipulator.set(this, 'aria-expanded', true);\r\n\r\n\tconst alreadyOpen = Selectors.find('.vg-select.show')\r\n\tif (alreadyOpen && alreadyOpen !== target) {\r\n\t\tVGSelect.getInstance(alreadyOpen).hide();\r\n\t}\r\n\r\n\tconst instance = VGSelect.getOrCreateInstance(target);\r\n\tinstance.toggle(this);\r\n});\r\n\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_OPTION_TOGGLE, function (e) {\r\n\tlet el = e.target;\r\n\r\n\tif (!el.classList.contains('disabled')) {\r\n\t\tlet container = el.closest('.' + CLASS_NAME_CONTAINER),\r\n\t\t\toptions = container.querySelectorAll('.' + CLASS_NAME_OPTION);\r\n\r\n\t\tif (options.length) {\r\n\t\t\tfor (const option of options) {\r\n\t\t\t\toption.classList.remove('selected');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.classList.add('selected');\r\n\r\n\t\tcontainer.querySelector('.' + CLASS_NAME_CURRENT).innerText = el.innerText;\r\n\t\tcontainer.classList.remove('show');\r\n\r\n\t\tlet select = container.previousSibling;\r\n\t\tVGSelect.changeSelector(select, el.dataset.value, {value: el.dataset.value, title: el.innerHTML})\r\n\t}\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_UP_DATA_API, SELECTOR_SEARCH_TOGGLE, function (e) {\r\n\tlet el = this;\r\n\r\n\tlet selectList = el?.closest('.' + CLASS_NAME_DROPDOWN).querySelector('.' + CLASS_NAME_LIST);\r\n\tif (selectList) {\r\n\t\tlet options = [...selectList.querySelectorAll('.' + CLASS_NAME_OPTION)],\r\n\t\t\toptionsGroup = [...selectList.querySelectorAll('.' + CLASS_NAME_OPTGROUP)],\r\n\t\t\tvalue = el?.value;\r\n\r\n\t\toptions = options.concat(optionsGroup);\r\n\r\n\t\tfor (const option of options) {\r\n\t\t\tManipulator.show(option);\r\n\t\t}\r\n\r\n\t\tif (value.length) {\r\n\t\t\tvalue = value.trim();\r\n\t\t\tvalue = value.toLowerCase();\r\n\t\t\tvalue = transliterate(value, true);\r\n\r\n\t\t\tfor (const option of options) {\r\n\t\t\t\tlet text = option.innerText.toLowerCase();\r\n\r\n\t\t\t\tif (text.indexOf(value) === -1) Manipulator.hide(option);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nEventHandler.on(document, EVENT_RESET_DATA_API, 'form', function () {\r\n\tSelectors.findAll('select.' + CLASS_NAME_CONTAINER, this).forEach(el => {\r\n\t\tVGSelect.build(el, true)\r\n\t});\r\n});\r\n\r\n\r\nexport default VGSelect;","import './scss/vgselect.scss';\r\nimport VGSelect from \"./js/vgselect\";\r\n\r\nexport default VGSelect;","import BaseModule from \"../../base-module\";\r\nimport {isDisabled, isVisible, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'sidebar';\r\nconst NAME_KEY = 'vg.sidebar';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"sidebar\"]';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_OPEN = 'vg-sidebar-open';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_POPSTATE_DATA_API = `popstate.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_DOM_LOADED_DATA_API = `DOMContentLoaded.${NAME_KEY}.data.api`;\r\n\r\nclass VGSidebar extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\toverflow: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\thash: false,\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: false,\r\n\t\t\t\tin: 'animate__rollIn',\r\n\t\t\t\tout: 'animate__rollOut',\r\n\t\t\t\tdelay: 800,\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGSidebar.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tif (relatedTarget) _this._params = _this._getParams(relatedTarget, _this._params);\r\n\r\n\t\t_this._route(function (status, data) {\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_LOADED, {stats: status, data: data});\r\n\t\t});\r\n\r\n\t\tconst showEvent = EventHandler.trigger(_this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif (_this._params.backdrop) {\r\n\t\t\tBackdrop.show();\r\n\t\t}\r\n\r\n\t\tif (_this._params.overflow) {\r\n\t\t\tOverflow.append();\r\n\t\t}\r\n\r\n\t\tif (this._params.hash) {\r\n\t\t\twindow.history.pushState(null, \"vg-sidebar-open\", \"#\" + this._element.id);\r\n\r\n\t\t\tEventHandler.on(window, EVENT_KEY_POPSTATE_DATA_API, () => {\r\n\t\t\t\tthis.hide();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tEventHandler.on(Selectors.find('.vg-backdrop'), 'mousedown.vg.backdrop', function () {\r\n\t\t\t\t_this.hide();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t}\r\n\t\t_this._queueCallback(completeCallBack, _this._element, true, 50)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t_this._element.setAttribute('aria-expanded', false);\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\t\tconst completeCallback = () => {\r\n\t\t\t\tif (_this._params.backdrop) {\r\n\t\t\t\t\tBackdrop.hide(function () {\r\n\t\t\t\t\t\tif (_this._params.overflow) {\r\n\t\t\t\t\t\t\tOverflow.destroy();\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\tif (_this._params.overflow) {\r\n\t\t\t\t\tOverflow.destroy();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_this._params.hash) {\r\n\t\t\t\t\thistory.pushState(\"\", document.title, window.location.pathname + window.location.search);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t\t}\r\n\t\t\tthis._queueCallback(completeCallback, this._element, true);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(document, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== 'Escape') return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED)\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGSidebar);\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\tthis.setAttribute('aria-expanded', false);\r\n\t})\r\n\r\n\tconst alreadyOpen = Selectors.find('.vg-sidebar.show')\r\n\tif (alreadyOpen && alreadyOpen !== target) {\r\n\t\tVGSidebar.getInstance(alreadyOpen).hide()\r\n\t}\r\n\r\n\tconst data = VGSidebar.getOrCreateInstance(target)\r\n\tdata.toggle(this);\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_DOM_LOADED_DATA_API, function () {\r\n\tlet targetHash = window.location.hash.slice(1);\r\n\tif (targetHash) {\r\n\t\tlet target = Selectors.find('#' + targetHash);\r\n\t\tif (target && target.classList.contains('vg-sidebar')) {\r\n\t\t\tif (isDisabled(target)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst data = VGSidebar.getOrCreateInstance(target)\r\n\t\t\tdata.toggle();\r\n\t\t}\r\n\t}\r\n})\r\n\r\nexport default VGSidebar;\r\n","import './scss/vgsidebar.scss';\r\nimport VGSidebar from \"./js/vgsidebar\";\r\n\r\nexport default VGSidebar;","import BaseModule from \"../../base-module\";\r\nimport {mergeDeepObject, getElement, isDisabled, isVisible} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'spy';\r\nconst NAME_KEY = 'vg.spy';\r\nconst EVENT_KEY = `.${NAME_KEY}`\r\nconst DATA_API_KEY = '.data-api'\r\n\r\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\r\nconst EVENT_CLICK = `click${EVENT_KEY}`\r\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\r\n\r\nconst CLASS_NAME_DROPDOWN_ITEM = 'vg-dropdown-item'\r\nconst CLASS_NAME_ACTIVE = 'active'\r\n\r\nconst SELECTOR_DATA_SPY = '[data-vg-toggle=\"spy\"]'\r\nconst SELECTOR_TARGET_LINKS = '[href]'\r\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\r\nconst SELECTOR_NAV_LINKS = '.nav-link'\r\nconst SELECTOR_NAV_ITEMS = '.nav-item'\r\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\r\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\r\nconst SELECTOR_DROPDOWN = '.vg-dropdown'\r\nconst SELECTOR_DROPDOWN_TOGGLE = '[data-vg-toggle=\"dropdown\"]'\r\n\r\n\r\nclass VGSpy extends BaseModule {\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\toffset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\r\n\t\t\trootMargin: '0px 0px -25%',\r\n\t\t\tsmoothScroll: true,\r\n\t\t\ttarget: this._element,\r\n\t\t\tthreshold: [0.1, 0.5, 1]\r\n\t\t}, params));\r\n\r\n\t\tthis._targetLinks = new Map()\r\n\t\tthis._observableSections = new Map()\r\n\t\tthis._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\r\n\t\tthis._activeTarget = null\r\n\t\tthis._observer = null\r\n\t\tthis._previousScrollData = {\r\n\t\t\tvisibleEntryTop: 0,\r\n\t\t\tparentScrollTop: 0\r\n\t\t}\r\n\t\tthis._params = this._configAfterMerge(this._params);\r\n\t\tconsole.log(this._params)\r\n\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis._initializeTargetsAndObservables()\r\n\t\tthis._maybeEnableSmoothScroll()\r\n\r\n\t\tif (this._observer) {\r\n\t\t\tthis._observer.disconnect()\r\n\t\t} else {\r\n\t\t\tthis._observer = this._getNewObserver()\r\n\t\t}\r\n\r\n\t\tfor (const section of this._observableSections.values()) {\r\n\t\t\tthis._observer.observe(section)\r\n\t\t}\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tthis._observer.disconnect()\r\n\t\tsuper.dispose()\r\n\t}\r\n\r\n\t_configAfterMerge(param) {\r\n\t\tparam.target = getElement(param.target) || document.body\r\n\t\tparam.rootMargin = param.offset ? `${param.offset}px 0px -30%` : param.rootMargin\r\n\r\n\t\tif (typeof param.threshold === 'string') {\r\n\t\t\tparam.threshold = param.threshold.split(',').map(value => Number.parseFloat(value))\r\n\t\t}\r\n\r\n\t\treturn param\r\n\t}\r\n\r\n\t_maybeEnableSmoothScroll() {\r\n\t\tif (!this._params.smoothScroll) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tEventHandler.off(this._params.target, EVENT_CLICK)\r\n\r\n\t\tEventHandler.on(this._params.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\r\n\t\t\tconst observableSection = this._observableSections.get(event.target.hash)\r\n\t\t\tif (observableSection) {\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tconst root = this._rootElement || window\r\n\t\t\t\tconst height = observableSection.offsetTop - this._element.offsetTop\r\n\t\t\t\tif (root.scrollTo) {\r\n\t\t\t\t\troot.scrollTo({ top: height, behavior: 'smooth' })\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\troot.scrollTop = height\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t_getNewObserver() {\r\n\t\tconst options = {\r\n\t\t\troot: this._rootElement,\r\n\t\t\tthreshold: this._params.threshold,\r\n\t\t\trootMargin: this._params.rootMargin\r\n\t\t}\r\n\r\n\t\treturn new IntersectionObserver(entries => this._observerCallback(entries), options)\r\n\t}\r\n\r\n\t_observerCallback(entries) {\r\n\t\tconst targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\r\n\r\n\t\tconst activate = entry => {\r\n\t\t\tthis._previousScrollData.visibleEntryTop = entry.target.offsetTop;\r\n\t\t\tthis._process(targetElement(entry));\r\n\t\t}\r\n\r\n\t\tconst parentScrollTop = (this._rootElement || document.documentElement).scrollTop\r\n\t\tconst userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\r\n\t\tthis._previousScrollData.parentScrollTop = parentScrollTop\r\n\r\n\t\tfor (const entry of entries) {\r\n\t\t\tif (!entry.isIntersecting) {\r\n\t\t\t\tthis._activeTarget = null\r\n\t\t\t\tthis._clearActiveClass(targetElement(entry))\r\n\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\r\n\t\t\tif (userScrollsDown && entryIsLowerThanPrevious) {\r\n\t\t\t\tactivate(entry)\r\n\t\t\t\tif (!parentScrollTop) {\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tif (!userScrollsDown && !entryIsLowerThanPrevious) {\r\n\t\t\t\tactivate(entry)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_initializeTargetsAndObservables() {\r\n\t\tthis._targetLinks = new Map();\r\n\t\tthis._observableSections = new Map();\r\n\r\n\t\tconst targetLinks = Selectors.findAll(SELECTOR_TARGET_LINKS, this._params.target);\r\n\r\n\t\tfor (const anchor of targetLinks) {\r\n\t\t\tif (!anchor.hash || isDisabled(anchor)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst observableSection = Selectors.find(decodeURI(anchor.hash));\r\n\r\n\t\t\tif (isVisible(observableSection)) {\r\n\t\t\t\tthis._targetLinks.set(decodeURI(anchor.hash), anchor)\r\n\t\t\t\tthis._observableSections.set(anchor.hash, observableSection)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_process(target) {\r\n\t\tif (this._activeTarget === target) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis._clearActiveClass(this._params.target)\r\n\t\tthis._activeTarget = target\r\n\t\ttarget.classList.add(CLASS_NAME_ACTIVE)\r\n\t\tthis._activateParents(target)\r\n\r\n\t\tEventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\r\n\t}\r\n\r\n\t_activateParents(target) {\r\n\t\tif (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\r\n\t\t\tSelectors.find(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\r\n\t\t\t\t.classList.add(CLASS_NAME_ACTIVE)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const listGroup of Selectors.parents(target, SELECTOR_NAV_LIST_GROUP)) {\r\n\t\t\tfor (const item of Selectors.prev(listGroup, SELECTOR_LINK_ITEMS)) {\r\n\t\t\t\titem.classList.add(CLASS_NAME_ACTIVE)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_clearActiveClass(parent) {\r\n\t\tparent.classList.remove(CLASS_NAME_ACTIVE)\r\n\r\n\t\tconst activeNodes = Selectors.findAll(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent);\r\n\t\tfor (const node of activeNodes) {\r\n\t\t\tnode.classList.remove(CLASS_NAME_ACTIVE)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\r\n\tfor (const spy of Selectors.findAll(SELECTOR_DATA_SPY)) {\r\n\t\tVGSpy.getOrCreateInstance(spy)\r\n\t}\r\n})\r\n\r\nexport default VGSpy;","import VGSpy from \"./js/vgspy\";\r\n\r\nexport default VGSpy;","import BaseModule from \"../../base-module\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {getNextActiveElement, isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'tabs';\r\nconst NAME_KEY = 'vg.tabs';\r\n\r\nconst EVENT_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEYDOWN = `keydown.${NAME_KEY}`;\r\nconst EVENT_LOAD_DATA_API = `load.${NAME_KEY}`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}`;\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}`;\r\n\r\nconst ARROW_LEFT_KEY = 'ArrowLeft';\r\nconst ARROW_RIGHT_KEY = 'ArrowRight';\r\nconst ARROW_UP_KEY = 'ArrowUp';\r\nconst ARROW_DOWN_KEY = 'ArrowDown';\r\nconst HOME_KEY = 'Home';\r\nconst END_KEY = 'End';\r\n\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst CLASS_NAME_HOVER = 'hover';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_DROPDOWN = 'dropdown';\r\nconst CLASS_SLIDER = 'vg-tabs-slider';\r\nconst CLASS_WITH_SLIDER = 'vg-tabs-with-slider';\r\n\r\nconst SELECTOR_DROPDOWN_TOGGLE = '[data-vg-toggle=\"dropdown\"]';\r\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-content';\r\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\r\n\r\nconst SELECTOR_TAB_CLASS = '.vg-tabs';\r\nconst SELECTOR_TAB_PANEL = '.list-group, .vg-tabs-panel, [role=\"tablist\"]';\r\nconst SELECTOR_OUTER = '.vg-tabs-item, .list-group-item';\r\nconst SELECTOR_INNER = `.vg-tabs-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"tab\"]';\r\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\r\n\r\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-vg-toggle=\"tab\"]`;\r\n\r\nclass VGTabs extends BaseModule {\r\n\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = mergeDeepObject({\r\n\t\t\tslide: false,\r\n\t\t\thash: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: true\r\n\t\t\t},\r\n\t\t}, this._params);\r\n\r\n\t\tthis._parent = this._element.closest(SELECTOR_TAB_PANEL);\r\n\t\tthis._main_parent = this._parent.closest(SELECTOR_TAB_CLASS);\r\n\t\tthis._params = this._getParams(this._main_parent, this._params);\r\n\t\tthis._params = this._getParams(this._element, this._params);\r\n\r\n\t\tif (!this._parent) {\r\n\t\t\tthrow new TypeError(`${element.outerHTML} не имеет родителя ${SELECTOR_INNER_ELEM}`)\r\n\t\t}\r\n\r\n\t\tthis._setInitialAttributes(this._parent, this._getChildren());\r\n\t\tthis._setInitialSlider();\r\n\t\tthis._setTabHash();\r\n\r\n\t\tEventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\tshow() {\r\n\t\tconst innerElem = this._element\r\n\t\tif (this._elemIsActive(innerElem)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst active = this._getActiveElem()\r\n\r\n\t\tconst hideEvent = active ?\r\n\t\t\tEventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\r\n\t\t\tnull\r\n\r\n\t\tconst showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\r\n\r\n\t\tif (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis._deactivate(active, innerElem)\r\n\t\tthis._activate(innerElem, active)\r\n\t}\r\n\r\n\t_elemIsActive(elem) {\r\n\t\treturn elem.classList.contains(CLASS_NAME_ACTIVE)\r\n\t}\r\n\r\n\t_getActiveElem() {\r\n\t\treturn this._getChildren().find(child => this._elemIsActive(child)) || null\r\n\t}\r\n\r\n\t_activate(element, relatedElem) {\r\n\t\tif (!element) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\telement.classList.add(CLASS_NAME_ACTIVE);\r\n\r\n\t\tthis._activate(Selectors.getElementFromSelector(element));\r\n\r\n\t\tconst complete = () => {\r\n\t\t\tif (element.getAttribute('role') !== 'tab') {\r\n\t\t\t\telement.classList.add(CLASS_NAME_SHOW)\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tthis._route((status, data) => {\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_LOADED, {stats: status, data: data});\r\n\t\t\t});\r\n\r\n\t\t\telement.removeAttribute('tabindex')\r\n\t\t\telement.setAttribute('aria-selected', true);\r\n\r\n\t\t\tthis._toggleDropDown(element, true)\r\n\t\t\tEventHandler.trigger(element, EVENT_SHOWN, {\r\n\t\t\t\trelatedTarget: relatedElem\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\r\n\t}\r\n\r\n\t_deactivate(element, relatedElem) {\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telement.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\telement.blur();\r\n\r\n\t\tthis._deactivate(Selectors.getElementFromSelector(element));\r\n\r\n\t\tconst complete = () => {\r\n\t\t\tif (element.getAttribute('role') !== 'tab') {\r\n\t\t\t\telement.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\telement.setAttribute('aria-selected', false);\r\n\t\t\telement.setAttribute('tabindex', '-1');\r\n\t\t\tthis._toggleDropDown(element, false);\r\n\t\t\tEventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem });\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));\r\n\t}\r\n\r\n\t_keydown(event) {\r\n\t\tif (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tevent.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\r\n\t\tevent.preventDefault()\r\n\r\n\t\tconst children = this._getChildren().filter(element => !isDisabled(element))\r\n\t\tlet nextActiveElement\r\n\r\n\t\tif ([HOME_KEY, END_KEY].includes(event.key)) {\r\n\t\t\tnextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\r\n\t\t} else {\r\n\t\t\tconst isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\r\n\t\t\tnextActiveElement = getNextActiveElement(children, event.target, isNext, true)\r\n\t\t}\r\n\r\n\t\tif (nextActiveElement) {\r\n\t\t\tnextActiveElement.focus({ preventScroll: true })\r\n\t\t\tVGTabs.getOrCreateInstance(nextActiveElement).show()\r\n\t\t}\r\n\t}\r\n\r\n\t_setTabHash() {\r\n\t\tif (!this._params.hash) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet url = document.location.toString();\r\n\r\n\t\tif (url.match('#')) {\r\n\t\t\tlet id = url.split('#')[1];\r\n\r\n\t\t\tlet element = Selectors.find('[href=\"#' + id +'\"]', this._parent) || Selectors.find('[data-vg-target=\"#' + id +'\"]', this._element) || null;\r\n\t\t\tif (element) {\r\n\t\t\t\tVGTabs.getOrCreateInstance(element).show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_setInitialSlider() {\r\n\t\tif (!this._params.slide) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet slider = Selectors.find('.' + CLASS_SLIDER, this._main_parent);\r\n\t\tif (!slider) {\r\n\t\t\tslider = document.createElement('span');\r\n\t\t\tslider.classList.add(CLASS_SLIDER);\r\n\t\t\tthis._main_parent.prepend(slider);\r\n\t\t}\r\n\r\n\t\tthis._main_parent.classList.add(CLASS_WITH_SLIDER);\r\n\r\n\t\tlet link_active = Selectors.find('.' + CLASS_NAME_ACTIVE, this._parent),\r\n\t\t\t{width, height} = window.getComputedStyle(link_active);\r\n\r\n\t\tlink_active.classList.add(CLASS_NAME_HOVER);\r\n\r\n\t\tslider.style.width = width;\r\n\t\tslider.style.height = height;\r\n\t\tslider.style.left = link_active.offsetLeft + 'px';\r\n\r\n\t\tEventHandler.on(this._main_parent, EVENT_MOUSEOVER_DATA_API, SELECTOR_DATA_TOGGLE, (event) => {\r\n\t\t\tlet link_target = event.target,\r\n\t\t\t\t{width, height} = window.getComputedStyle(link_target);\r\n\r\n\t\t\tif (['A', 'AREA'].includes(event.target.tagName)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif (isDisabled(link_target)) return;\r\n\r\n\t\t\tlet link_current_hover = Selectors.find('.' + CLASS_NAME_HOVER, this._parent);\r\n\t\t\tif (link_current_hover) link_current_hover.classList.remove(CLASS_NAME_HOVER);\r\n\t\t\tlink_target.classList.add(CLASS_NAME_HOVER);\r\n\r\n\t\t\tslider.style.width = width;\r\n\t\t\tslider.style.height = height;\r\n\t\t\tslider.style.left = link_target.offsetLeft + 'px';\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._main_parent, EVENT_MOUSEOUT_DATA_API, SELECTOR_DATA_TOGGLE, (event) => {\r\n\t\t\tif (['A', 'AREA'].includes(event.target.tagName)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tlet active = Selectors.find('.' + CLASS_NAME_ACTIVE, this._parent),\r\n\t\t\t\t{width, height} = window.getComputedStyle(active);\r\n\r\n\t\t\t[... Selectors.findAll('.' + CLASS_NAME_HOVER, this._parent)].forEach(el => {\r\n\t\t\t\tel.classList.remove(CLASS_NAME_HOVER);\r\n\t\t\t});\r\n\r\n\t\t\tactive.classList.add(CLASS_NAME_HOVER);\r\n\r\n\t\t\tslider.style.width = width;\r\n\t\t\tslider.style.height = height;\r\n\t\t\tslider.style.left = active.offsetLeft + 'px';\r\n\t\t});\r\n\t}\r\n\r\n\t_setInitialAttributes(parent, children) {\r\n\t\tthis._setAttributeIfNotExists(parent, 'role', 'tablist')\r\n\r\n\t\tfor (const child of children) {\r\n\t\t\tthis._setInitialAttributesOnChild(child)\r\n\t\t}\r\n\t}\r\n\r\n\t_setInitialAttributesOnChild(child) {\r\n\t\tchild = this._getInnerElement(child)\r\n\t\tconst isActive = this._elemIsActive(child)\r\n\t\tconst outerElem = this._getOuterElement(child)\r\n\t\tchild.setAttribute('aria-selected', isActive)\r\n\r\n\t\tif (outerElem !== child) {\r\n\t\t\tthis._setAttributeIfNotExists(outerElem, 'role', 'presentation')\r\n\t\t}\r\n\r\n\t\tif (!isActive) {\r\n\t\t\tchild.setAttribute('tabindex', '-1')\r\n\t\t}\r\n\r\n\t\tthis._setAttributeIfNotExists(child, 'role', 'tab')\r\n\t\tthis._setInitialAttributesOnTargetPanel(child)\r\n\t}\r\n\r\n\t_setInitialAttributesOnTargetPanel(child) {\r\n\t\tconst target = Selectors.getElementFromSelector(child)\r\n\r\n\t\tif (!target) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis._setAttributeIfNotExists(target, 'role', 'tabpanel')\r\n\r\n\t\tif (child.id) {\r\n\t\t\tthis._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\r\n\t\t}\r\n\t}\r\n\r\n\t_setAttributeIfNotExists(element, attribute, value) {\r\n\t\tif (!element.hasAttribute(attribute)) {\r\n\t\t\telement.setAttribute(attribute, value)\r\n\t\t}\r\n\t}\r\n\r\n\t_getChildren() {\r\n\t\treturn Selectors.findAll(SELECTOR_INNER_ELEM, this._parent)\r\n\t}\r\n\r\n\t_getInnerElement(elem) {\r\n\t\treturn elem.matches(SELECTOR_INNER_ELEM) ? elem : Selectors.find(SELECTOR_INNER_ELEM, elem)\r\n\t}\r\n\r\n\t_getOuterElement(elem) {\r\n\t\treturn elem.closest(SELECTOR_OUTER) || elem\r\n\t}\r\n\r\n\t_toggleDropDown(element, open) {\r\n\t\tconst outerElem = this._getOuterElement(element)\r\n\t\tif (!outerElem.classList.contains(CLASS_DROPDOWN)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst toggle = (selector, className) => {\r\n\t\t\tconst element = Selectors.find(selector, outerElem)\r\n\t\t\tif (element) {\r\n\t\t\t\telement.classList.toggle(className, open)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttoggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\r\n\t\ttoggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\r\n\t\touterElem.setAttribute('aria-expanded', open)\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault();\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tVGTabs.getOrCreateInstance(this).show();\r\n})\r\n\r\n/**\r\n * Initialize on focus\r\n */\r\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\r\n\tfor (const element of Selectors.findAll(SELECTOR_DATA_TOGGLE_ACTIVE)) {\r\n\t\tVGTabs.getOrCreateInstance(element);\r\n\t}\r\n});\r\n\r\n\r\nexport default VGTabs;\r\n","import './scss/vgtabs.scss'\r\nimport VGTabs from \"./js/vgtabs\";\r\n\r\nexport default VGTabs;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\nimport {execute, isDisabled, makeRandomString, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'toast';\r\nconst NAME_KEY = 'vg.toast';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"toast\"]';\r\n\r\nconst CLASS_NAME_OPEN = 'vg-toast-open';\r\nconst CLASS_NAME_SHOW = 'show';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGToast extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tstatic: true,\r\n\t\t\tplacement: 'bottom center',\r\n\t\t\tautohide: false,\r\n\t\t\tdelay: 3000,\r\n\t\t\tenableClickToast: true,\r\n\t\t\tenableButtonClose: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\ttheme: 'dark',\r\n\t\t\tstack: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tmax: 5\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tin: 'animate__fadeIn',\r\n\t\t\t\tout: 'animate__fadeOut',\r\n\t\t\t\tdelay: 400,\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGToast.NAME_KEY, this._params.animation);\r\n\t\tthis._dismissElement();\r\n\t\tthis._addEventListeners();\r\n\r\n\t\tthis._timeout = null;\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\tstatic run(text, params = {}, callback) {\r\n\t\treturn VGToast.build(text, params, callback);\r\n\t}\r\n\r\n\tstatic build(text, params, callback) {\r\n\t\tparams = mergeDeepObject({\r\n\t\t\tplacement: 'bottom center',\r\n\t\t\tstatic: false,\r\n\t\t\ttheme: 'dark',\r\n\t\t\tstack: {\r\n\t\t\t\tenable: false\r\n\t\t\t}\r\n\t\t}, params);\r\n\r\n\t\tlet target = document.createElement('div');\r\n\t\ttarget.classList.add('vg-toast');\r\n\t\ttarget.id = 'vg-toast-' + makeRandomString();\r\n\r\n\t\tif ('theme' in params) {\r\n\t\t\ttarget.classList.add('vg-toast-' + params.theme);\r\n\t\t}\r\n\r\n\t\tif ('placement' in params) {\r\n\t\t\tparams.placement.split(' ').forEach(val => target.classList.add(val));\r\n\t\t}\r\n\r\n\t\tlet wrapper = document.createElement('div');\r\n\t\twrapper.classList.add('vg-toast-wrapper');\r\n\r\n\t\tif ('type' in params) {\r\n\t\t\tlet icon = document.createElement('div');\r\n\t\t\ticon.classList.add('vg-toast-icon');\r\n\r\n\t\t\twrapper.append(icon);\r\n\t\t}\r\n\r\n\t\tlet content = document.createElement('div');\r\n\t\tcontent.classList.add('vg-toast-content');\r\n\r\n\t\tlet body = document.createElement('div');\r\n\t\tbody.classList.add('vg-toast-body');\r\n\r\n\t\tif (typeof text === 'string') {\r\n\t\t\tbody.innerHTML = text;\r\n\t\t\tcontent.append(body);\r\n\t\t} else if (Array.isArray(text)) {\r\n\t\t\tif (text.length > 1) {\r\n\t\t\t\tlet header = document.createElement('div');\r\n\t\t\t\theader.classList.add('vg-toast-header');\r\n\t\t\t\theader.innerHTML = text[0];\r\n\t\t\t\tcontent.append(header);\r\n\r\n\t\t\t\tbody.innerHTML = text[1];\r\n\t\t\t\tcontent.append(body);\r\n\t\t\t} else {\r\n\t\t\t\tbody.innerHTML = text[0];\r\n\t\t\t\tcontent.append(body);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twrapper.append(content);\r\n\r\n\t\tif ('enableButtonClose' in params && params.enableButtonClose) {\r\n\t\t\tlet button = document.createElement('div');\r\n\t\t\tbutton.classList.add('vg-toast-button');\r\n\t\t\tbutton.innerHTML = '<button class=\"vg-btn-close\" data-vg-dismiss=\"toast\"></button>';\r\n\t\t\twrapper.append(button);\r\n\t\t}\r\n\r\n\t\ttarget.append(wrapper);\r\n\t\tdocument.body.append(target);\r\n\r\n\t\tlet instance = VGToast.getOrCreateInstance(target, params);\r\n\t\texecute(callback, [instance]);\r\n\t\tinstance.show();\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tthis._clearTimeout();\r\n\r\n\t\tthis._params = this._getParams(relatedTarget || {}, this._params);\r\n\t\tthis._route(function (status, data) {\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_LOADED, {stats: status, data: data});\r\n\t\t});\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tthis._setPlacement();\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t\tthis._scheduleHide();\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._element, true, 0);\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._element?.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\t\tconst completeCallback = () => {\r\n\t\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\r\n\t\t\t\tif (this._params.stack.enable) {\r\n\t\t\t\t\tthis._setPlacement();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._params.static) {\r\n\t\t\t\t\tthis.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._queueCallback(completeCallback, this._element, false, this._params.animation.delay);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tthis._clearTimeout();\r\n\t\tif (this._isShown()) {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t}\r\n\r\n\t\tif (!this._params.static) {\r\n\t\t\tthis._element.remove();\r\n\t\t}\r\n\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_scheduleHide() {\r\n\t\tif (!this._params.autohide) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._timeout = setTimeout(() => {\r\n\t\t\tthis.hide();\r\n\t\t}, this._params.delay);\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_setPlacement() {\r\n\t\tlet elms = this._enableStack();\r\n\r\n\t\tif (this._params.stack.enable) {\r\n\t\t\tif (elms.length > this._params.stack.max) {\r\n\t\t\t\tlet elm = elms.shift();\r\n\t\t\t\tVGToast.getInstance(elm.el).hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\telms.forEach(elm => {\r\n\t\t\tlet isPlacementClassTop = elm.el.classList.contains('top'),\r\n\t\t\t\tisPlacementClassBottom = elm.el.classList.contains('bottom'),\r\n\t\t\t\tisPlacementClassLeft = elm.el.classList.contains('left'),\r\n\t\t\t\tisPlacementClassRight = elm.el.classList.contains('right'),\r\n\t\t\t\tisPlacementClassCenter = elm.el.classList.contains('center');\r\n\r\n\t\t\tif (!isPlacementClassTop &&\r\n\t\t\t\t!isPlacementClassBottom &&\r\n\t\t\t\t!isPlacementClassCenter &&\r\n\t\t\t\t!isPlacementClassRight &&\r\n\t\t\t\t!isPlacementClassLeft\r\n\t\t\t) {\r\n\t\t\t\tisPlacementClassBottom = true;\r\n\t\t\t\tisPlacementClassCenter = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (isPlacementClassCenter) {\r\n\t\t\t\tif (isPlacementClassLeft) {\r\n\t\t\t\t\telm.el.style.left = 0;\r\n\t\t\t\t\telm.el.style.bottom = 'calc(50% - ('+ elm.top +'px))';\r\n\t\t\t\t} else if (isPlacementClassRight) {\r\n\t\t\t\t\telm.el.style.right = 0;\r\n\t\t\t\t\telm.el.style.bottom = 'calc(50% - ('+ elm.top +'px))';\r\n\t\t\t\t} else if (isPlacementClassBottom) {\r\n\t\t\t\t\telm.el.style.left = 'calc(50% - ('+ elm.el.clientWidth +'px) / 2)';\r\n\t\t\t\t\telm.el.style.bottom = elm.top + 'px';\r\n\t\t\t\t} else if (isPlacementClassTop) {\r\n\t\t\t\t\telm.el.style.left = 'calc(50% - ('+ elm.el.clientWidth +'px) / 2)';\r\n\t\t\t\t\telm.el.style.top = elm.top + 'px';\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.el.style.left = 'calc(50% - ('+ elm.el.clientHeight +'px) / 2)';\r\n\t\t\t\t\telm.el.style.bottom = 'calc(50% - '+ elm.top +'px)';\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (isPlacementClassLeft) elm.el.style.left = 0;\r\n\t\t\t\tif (isPlacementClassBottom) elm.el.style.bottom = elm.top + 'px';\r\n\t\t\t\tif (isPlacementClassTop) elm.el.style.top = elm.top + 'px';\r\n\t\t\t\tif (isPlacementClassRight) elm.el.style.right = 0;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_enableStack() {\r\n\t\tlet elmsShown = [... Selectors.findAll('.vg-toast.show')], top = 0;\r\n\r\n\t\tif (!this._params.stack.enable) {\r\n\t\t\telmsShown.forEach(el => {\r\n\t\t\t\tif (el !== this._element) {\r\n\t\t\t\t\tVGToast.getInstance(el).hide()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\treturn [{\r\n\t\t\t\tel: this._element,\r\n\t\t\t\ttop: 0,\r\n\t\t\t}];\r\n\t\t}\r\n\r\n\t\telmsShown = elmsShown.map(el => {\r\n\t\t\treturn {\r\n\t\t\t\tel: el,\r\n\t\t\t\ttop: el.clientHeight\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn elmsShown.map(function (value, index) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tel: value.el,\r\n\t\t\t\t\ttop: 0\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttop += value.top\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tel: value.el,\r\n\t\t\t\t\ttop: top\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_clearTimeout() {\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = null;\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(document, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== 'Escape') return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED)\r\n\t\t});\r\n\r\n\t\tif (this._params.enableClickToast) {\r\n\t\t\tthis._element.classList.add('vg-toast-pointer');\r\n\r\n\t\t\tEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, '#' + this._element.id, () => {\r\n\t\t\t\tthis.hide();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGToast);\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\tthis.setAttribute('aria-expanded', false);\r\n\t});\r\n\r\n\tconst data = VGToast.getOrCreateInstance(target);\r\n\tdata.toggle(this);\r\n});\r\n\r\nexport default VGToast;\r\n","import './scss/vgtoast.scss'\r\nimport VGToast from \"./js/vgtoast\";\r\n\r\nexport default VGToast;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isEmptyObj","isElement","object","isObject","nodeType","isDisabled","element","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","isVisible","getClientRects","length","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","normalizeData","Number","toString","JSON","parse","decodeURIComponent","mergeDeepObject","objects","reduce","prev","keys","forEach","pVal","oVal","Array","isArray","concat","execute","possibleCallback","args","defaultValue","TRANSITION_END","reflow","offsetHeight","noop","makeRandomString","result","counter","charAt","Math","floor","characters","random","isRTL","document","documentElement","dir","getSelector","selector","hrefAttribute","includes","startsWith","split","trim","map","sel","window","CSS","escape","replace","match","id","parseSelector","join","Selectors","find","Element","querySelector","findAll","container","querySelectorAll","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","parents","ancestor","push","next","nextElementSibling","matches","previous","previousElementSibling","elementMap","Map","set","instance","has","instanceMap","size","console","error","from","remove","delete","Manipulator","nameAttribute","isRemoveDataName","elmBase","attributes","arr","filter","at","test","name","v","slice","getAttributeNames","acc","setAttribute","removeAttribute","hide","el","style","display","show","state","constructor","params","this","_params","merge","fromElement","mParams","indexOf","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","typeEvent","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","handlers","previousFunction","domElements","target","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","meta","configurable","on","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","evt","Event","bubbles","cancelable","dispatchEvent","getSVG","success","waiting","dots","cross","dismissTrigger","module","method","clickEvent","EVENT_KEY","NAME","tagName","preventDefault","getOrCreateInstance","Ajax","x","XMLHttpRequest","xhr","versions","i","ActiveXObject","e","send","url","callback","data","async","undefined","open","setRequestHeader","onreadystatechange","readyState","status","text","statusText","response","responseText","code","query","encodeURIComponent","post","enable","in","out","delay","duration","classes","animated","_element","_name_key","add","_triggers","Error","_isLoaded","Data","NAME_KEY","_getParams","Params","dispose","propertyName","getOwnPropertyNames","_route","_this","$content","setData","innerHTML","ajax","route","loader","once","_dismissElement","button","insertAdjacentHTML","_queueCallback","isAnimated","timeOutMs","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","setTimeout","triggerTransitionEnd","executeAfterTransition","_animation","Animation","getInstance","DATA_KEY","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE","EVENT_KEY_HIDE","EVENT_KEY_HIDDEN","EVENT_KEY_SHOW","EVENT_KEY_SHOWN","EVENT_KEY_CLICK_DATA_API","VGCollapse","BaseModule","super","toggle","parent","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","activeChildren","_getFirstLevelChildren","defaultPrevented","activeInstance","height","complete","getBoundingClientRect","triggerArray","isOpen","_changeStateButton","children","selected","arg","drop","_getPlacement","_parent","self","overflow","top","left","isFixed","bounds","styles","width","innerWidth","append","body","paddingRight","documentWidth","clientWidth","abs","getWidth","destroy","CLASS_NAME","CLASS_NAME_FADE","Backdrop","_append","_destroy","backdrop","createElement","Overflow","TARGET_CONTAINER","EVENT_KEYUP_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_CLICK_DATA_API","EVENT_MOUSEOVER_DATA_API","EVENT_MOUSEOUT_DATA_API","VGDropdown","defaultParams","offset","keyboard","placement","timeoutAnimation","hover","animation","_drop","_isPlacement","_setPlacement","completeCallBack","_completeHide","completeCallback","Placement","position","transform","paddingTop","init","currentElem","hideOpenToggles","keydownHandler","clearDrops","openToggles","context","composedPath","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","focus","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_OPEN","CLASS_NAME_STATIC","EVENT_KEY_RESIZE","EVENT_KEY_LOADED","EVENT_KEY_KEYDOWN_DISMISS","EVENT_KEY_HIDE_PREVENTED","EVENT_KEY_MOUSEDOWN_DISMISS","EVENT_KEY_CLICK_DISMISS","EVENT_KEY_DOM_LOADED_DATA_API","EVENT_KEY_POPSTATE_DATA_API","VGModal","fields","hash","centered","general","dialog","content","header","title","footer","_button","_dialog","_scrollBar","ScrollBarHelper","_addEventListeners","build","btnClose","modal","stats","history","pushState","_addFieldsInModal","_adjustDialog","_showElement","openedModals","_hideModal","_isAnimatedFade","location","pathname","search","_resetAdjustments","scrollTop","modalBody","transitionComplete","isModalOverflowing","scrollHeight","clientHeight","isBodyOverflowing","property","paddingLeft","_triggerBackdropTransition","event2","initialOverflowY","overflowY","item","elements","elm","showEvent","alreadyOpen","targetHash","TEMPLATES","template","insert","render","tmpl","toHTML","tmplElement","setContent","VGHideShowPass","isShow","Templater","EVENT_SUBMIT_DATA_API","VGFormSender","enabled","errors","message","redirect","validate","submit","timeout","pass","alert","alertCollapse","alertModal","validation","wasValidate","afterInit","afterSuccess","afterError","interceptors","toLowerCase","isBtnText","isJsonParse","isShowPass","parentElement","request","_alertBefore","href","_alertError","_alertSuccess","getElementsByClassName","_statusButton","_jsonParse","btnSubmitText","btnText","$btnText","$btnTextSend","spinner","parserData","_alertModal","_alertCollapse","bootstrap","Modal","mVG","$modal","$body","setDataRelationStatus","$collapse","prepend","collapse","$element","$alert","txt","t","view","icon","checkValidity","FormData","assign","arguments","source","converter","defaultAttributes","expires","Date","now","toUTCString","stringifiedAttributes","attributeName","cookie","write","create","cookies","jar","parts","foundKey","read","withAttributes","withConverter","freeze","path","VGLawCookie","static","storage","sParams","_storage","isCookie","Cookies","localStorage","getItem","setItem","clear","reload","breakpoints","xs","sm","md","lg","xl","xxl","xxxl","check","define","checkMobileOrTablet","a","navigator","userAgent","vendor","opera","windowWidth","responsive_size","_checkResponsiveClass","point","loc","current_responsive_size","XXXL","XXL","XL","LG","MD","SM","XS","CLASS_NAME_ACTIVE","EVENT_RESIZE_DATA_API","VGNav","breakpoint","hamburgerActive","hamburgerAlways","hamburger","wrapper","active","expand","cloned","flip","always","_navigation","navigation","movedLinks","$links","Responsive","mTitle","$dropdown_a","width_navigation_responsive","width_all_links_responsive","$dots","_dots","$a","$linkStyle","$link","insertBefore","appendChild","splice","$d","$dropdown","link","setCollapse","firstElementChild","$drop","right","N_right","$ul","$el","setDropPosition","index","drops","hideOpenDrops","click","isFirst","vgNavSidebar","getElementById","CLASS_NAME_HIDE","VGRollup","cnt","fade","transition","number","ellipsis","line","more","less","hidden","total","count","isOffset","textShowNum","sum","switch","isButtonAppend","self_height","set_height","isFade","isTransition","isEllipsis","isButton","isShowNum","elementClass","items","webkitLineClamp","log","btnTextMore","switcher","className","settings","CLASS_NAME_CONTAINER","CLASS_NAME_DROPDOWN","CLASS_NAME_LIST","CLASS_NAME_OPTION","CLASS_NAME_OPTGROUP","CLASS_NAME_CURRENT","EVENT_KEY_UP_DATA_API","EVENT_RESET_DATA_API","EVENT_KEY_CHANGE","observerTimout","VGSelect","placeholder","refresh","buildListOptions","options","list","optGroup","isSelected","olOptGroup","liLabel","label","createLi","option","li","dataset","liData","selectedIndex","reBuild","option_selected","isSearch","inited","innerText","_class","elData","current","dropdown","insertAdjacentElement","search_container","input","select","previousSibling","MutationObserver","clearTimeout","observe","attributeFilter","childList","subtree","characterDataOldValue","changeSelector","isRebuild","selectList","optionsGroup","ru","en","toUpperCase","transliterate","VGSidebar","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","VGSpy","rootMargin","smoothScroll","threshold","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","_configAfterMerge","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","param","jquery","observableSection","root","offsetTop","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","entry","activate","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","node","spy","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_LOADED","EVENT_KEYDOWN","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_HOVER","CLASS_SLIDER","SELECTOR_DROPDOWN_TOGGLE","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","VGTabs","slide","_main_parent","TypeError","outerHTML","_setInitialAttributes","_getChildren","_setInitialSlider","_setTabHash","_keydown","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","child","relatedElem","_toggleDropDown","blur","nextActiveElement","isNext","getNextActiveElement","activeElement","shouldGetNext","listLength","max","min","preventScroll","slider","link_active","offsetLeft","link_target","link_current_hover","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","attribute","VGToast","autohide","enableClickToast","enableButtonClose","theme","stack","_timeout","run","val","_clearTimeout","_scheduleHide","elms","_enableStack","shift","isPlacementClassTop","isPlacementClassBottom","isPlacementClassLeft","isPlacementClassRight","isPlacementClassCenter","bottom","elmsShown"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"vgapp.js","mappings":"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","sources":["webpack://vg/webpack/bootstrap","webpack://vg/webpack/runtime/define property getters","webpack://vg/webpack/runtime/hasOwnProperty shorthand","webpack://vg/webpack/runtime/make namespace object","webpack://vg/./app/utils/js/functions.js","webpack://vg/./app/utils/js/dom/selectors.js","webpack://vg/./app/utils/js/dom/data.js","webpack://vg/./app/utils/js/dom/manipulator.js","webpack://vg/./app/utils/js/components/params.js","webpack://vg/./app/utils/js/dom/event.js","webpack://vg/./app/modules/module-fn.js","webpack://vg/./app/utils/js/components/animation.js","webpack://vg/./app/modules/base-module.js","webpack://vg/./app/utils/js/components/scrollbar.js","webpack://vg/./app/utils/js/components/overflow.js","webpack://vg/./app/utils/js/components/backdrop.js","webpack://vg/./app/modules/vgmodal/js/vgmodal.js","webpack://vg/./app/modules/vgalert/js/vgalert.js","webpack://vg/./app/modules/vgalert/index.js","webpack://vg/./app/modules/vgcollapse/js/vgcollapse.js","webpack://vg/./app/modules/vgcollapse/index.js","webpack://vg/./app/utils/js/components/placement.js","webpack://vg/./app/modules/vgdropdown/js/vgdropdown.js","webpack://vg/./app/modules/vgdropdown/index.js","webpack://vg/./app/utils/js/components/templater.js","webpack://vg/./app/modules/vgformsender/js/hideshowpass.js","webpack://vg/./app/modules/vgformsender/js/vgformsender.js","webpack://vg/./app/modules/vgformsender/index.js","webpack://vg/./app/utils/js/dom/cookie.js","webpack://vg/./app/modules/vglawcookie/js/vglawcookie.js","webpack://vg/./app/modules/vglawcookie/index.js","webpack://vg/./app/modules/vgmodal/index.js","webpack://vg/./app/utils/js/components/responsive.js","webpack://vg/./app/modules/vgnav/js/vgnav.js","webpack://vg/./app/modules/vgnav/index.js","webpack://vg/./app/modules/vgrollup/js/vgrollup.js","webpack://vg/./app/modules/vgrollup/index.js","webpack://vg/./app/modules/vgselect/js/vgselect.js","webpack://vg/./app/modules/vgselect/index.js","webpack://vg/./app/modules/vgsidebar/js/vgsidebar.js","webpack://vg/./app/modules/vgsidebar/index.js","webpack://vg/./app/modules/vgspy/js/vgspy.js","webpack://vg/./app/modules/vgspy/index.js","webpack://vg/./app/modules/vgtabs/js/vgtabs.js","webpack://vg/./app/modules/vgtabs/index.js","webpack://vg/./app/modules/vgtoast/js/vgtoast.js","webpack://vg/./app/modules/vgtoast/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\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};","/**\r\n * Набор скриптов для широкого применения\r\n */\r\n\r\n/**\r\n * Экранирование селекторов для корректной работы идентификаторов\r\n * @param {string} selector\r\n * @returns {string}\r\n */\r\nconst parseSelector = selector => {\r\n\tif (selector && window.CSS && window.CSS.escape) {\r\n\t\t// document.querySelector needs escaping to handle IDs (html5+) containing for instance /\r\n\t\tselector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\r\n\t}\r\n\r\n\treturn selector\r\n}\r\n\r\n/**\r\n * Если что-нибудь в объекте\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isEmptyObj(obj) {\r\n\tfor (let prop in obj) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(obj, prop)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nconst getElement = object => {\r\n\t// it's a jQuery object or a node element\r\n\tif (isElement(object)) {\r\n\t\treturn object.jquery ? object[0] : object\r\n\t}\r\n\r\n\tif (typeof object === 'string' && object.length > 0) {\r\n\t\treturn document.querySelector(parseSelector(object))\r\n\t}\r\n\r\n\treturn null\r\n}\r\n\r\n/**\r\n * isElement\r\n * @param object\r\n * @returns {boolean}\r\n */\r\nconst isElement = object => {\r\n\tif (!isObject(object)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn typeof object.nodeType !== 'undefined'\r\n}\r\n\r\n/**\r\n * isDisabled\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nconst isDisabled = element => {\r\n\tif (!element || element.nodeType !== Node.ELEMENT_NODE) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (element.classList.contains('disabled')) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (typeof element.disabled !== 'undefined') {\r\n\t\treturn element.disabled\r\n\t}\r\n\r\n\treturn element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\r\n}\r\n\r\n/**\r\n * isVisible\r\n * @param element\r\n * @returns {boolean}\r\n */\r\nfunction isVisible (element) {\r\n\tif (!isElement(element) || element.getClientRects().length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\tconst elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\r\n\tconst closedDetails = element.closest('details:not([open])')\r\n\r\n\tif (!closedDetails) {\r\n\t\treturn elementIsVisible\r\n\t}\r\n\r\n\tif (closedDetails !== element) {\r\n\t\tconst summary = element.closest('summary')\r\n\t\tif (summary && summary.parentNode !== closedDetails) {\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tif (summary === null) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementIsVisible\r\n}\r\n\r\n/**\r\n * isObject\r\n * @param obj\r\n * @returns {boolean}\r\n */\r\nfunction isObject(obj) {\r\n\treturn obj && typeof obj === 'object'\r\n}\r\n\r\n/**\r\n * Приводим в порядок типы данных\r\n * @param value\r\n * @returns {any}\r\n */\r\nfunction normalizeData(value) {\r\n\tif (value === 'true') {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (value === 'false') {\r\n\t\treturn false\r\n\t}\r\n\r\n\tif (value === Number(value).toString()) {\r\n\t\treturn Number(value)\r\n\t}\r\n\r\n\tif (value === '' || value === 'null') {\r\n\t\treturn null\r\n\t}\r\n\r\n\tif (typeof value !== 'string') {\r\n\t\treturn value\r\n\t}\r\n\r\n\ttry {\r\n\t\treturn JSON.parse(decodeURIComponent(value))\r\n\t} catch {\r\n\t\treturn value\r\n\t}\r\n}\r\n\r\n/**\r\n * Удаляем элементы с массива\r\n * @param arr\r\n * @param el\r\n */\r\nfunction removeElementArray(arr, el) {\r\n\treturn arr.filter((item) => !el.includes(item));\r\n}\r\n\r\n/**\r\n * Глубокое объединение объектов\r\n * @param objects\r\n * @returns {*}\r\n */\r\nfunction mergeDeepObject(...objects) {\r\n\tconst isObject = obj => obj && typeof obj === 'object';\r\n\r\n\tif (!isObject) return;\r\n\r\n\treturn objects.reduce((prev, obj) => {\r\n\t\tObject.keys(obj).forEach(key => {\r\n\t\t\tconst pVal = prev[key];\r\n\t\t\tconst oVal = obj[key];\r\n\r\n\t\t\tif (Array.isArray(pVal) && Array.isArray(oVal)) {\r\n\t\t\t\tprev[key] = pVal.concat(...oVal);\r\n\t\t\t}\r\n\t\t\telse if (isObject(pVal) && isObject(oVal)) {\r\n\t\t\t\tprev[key] = mergeDeepObject(pVal, oVal);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tprev[key] = oVal;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn prev;\r\n\t}, {});\r\n}\r\n\r\n/**\r\n * Callback\r\n * @param possibleCallback\r\n * @param args\r\n * @param defaultValue\r\n * @returns {*}\r\n */\r\nfunction execute(possibleCallback, args = [], defaultValue = possibleCallback) {\r\n\treturn typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\r\n}\r\n\r\n/**\r\n * Transition\r\n * @param callback\r\n * @param transitionElement\r\n * @param waitForTransition\r\n */\r\nconst TRANSITION_END = 'transitionend';\r\nconst MILLISECONDS_MULTIPLIER = 1000;\r\n\r\nfunction executeAfterTransition (callback, transitionElement, waitForTransition = true, timeOutMs) {\r\n\tif (!waitForTransition) {\r\n\t\texecute(callback)\r\n\t\treturn\r\n\t}\r\n\r\n\tconst durationPadding = 5\r\n\tconst emulatedDuration = timeOutMs ? timeOutMs : getTransitionDurationFromElement(transitionElement) + durationPadding;\r\n\r\n\tlet called = false\r\n\r\n\tconst handler = ({ target }) => {\r\n\t\tif (target !== transitionElement) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tcalled = true\r\n\t\ttransitionElement.removeEventListener(TRANSITION_END, handler)\r\n\t\texecute(callback)\r\n\t}\r\n\r\n\ttransitionElement.addEventListener(TRANSITION_END, handler)\r\n\tsetTimeout(() => {\r\n\t\tif (!called) {\r\n\t\t\ttriggerTransitionEnd(transitionElement)\r\n\t\t}\r\n\t}, emulatedDuration)\r\n}\r\n\r\nconst getTransitionDurationFromElement = element => {\r\n\tif (!element) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// Get transition-duration of the element\r\n\tlet { transitionDuration, transitionDelay } = window.getComputedStyle(element)\r\n\r\n\tconst floatTransitionDuration = Number.parseFloat(transitionDuration)\r\n\tconst floatTransitionDelay = Number.parseFloat(transitionDelay)\r\n\r\n\t// Return 0 if element or transition duration is not found\r\n\tif (!floatTransitionDuration && !floatTransitionDelay) {\r\n\t\treturn 0\r\n\t}\r\n\r\n\t// If multiple durations are defined, take the first\r\n\ttransitionDuration = transitionDuration.split(',')[0]\r\n\ttransitionDelay = transitionDelay.split(',')[0]\r\n\r\n\treturn (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\r\n}\r\n\r\nconst triggerTransitionEnd = element => {\r\n\telement.dispatchEvent(new Event(TRANSITION_END))\r\n}\r\n\r\n/**\r\n * Трюк для перезапуска анимации элемента\r\n *\r\n * @param {HTMLElement} element\r\n * @return void\r\n *\r\n * @смотри https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\r\n */\r\nconst reflow = element => {\r\n\telement.offsetHeight // eslint-disable-line no-unused-expressions\r\n}\r\n\r\n/**\r\n * Noop\r\n */\r\nconst noop = () => {};\r\n\r\n/**\r\n * Генерация случайной строки\r\n */\r\nfunction makeRandomString(length = 7) {\r\n\tlet result = '';\r\n\tconst characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\tconst charactersLength = characters.length;\r\n\tlet counter = 0;\r\n\twhile (counter < length) {\r\n\t\tresult += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n\t\tcounter += 1;\r\n\t}\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Транслитерация символов с латиницы на кириллицу и обратно\r\n * @param text\r\n * @param enToRu\r\n * @returns {*}\r\n */\r\nfunction transliterate(text, enToRu) {\r\n\tlet ru = \"й ц у к е н г ш щ з х ъ ф ы в а п р о л д ж э я ч с м и т ь б ю\".split(/ +/g);\r\n\tlet en = \"q w e r t y u i o p [ ] a s d f g h j k l ; ' z x c v b n m , .\".split(/ +/g);\r\n\tlet x;\r\n\r\n\tfor (x = 0; x < ru.length; x++) {\r\n\t\ttext = text.split(enToRu ? en[x] : ru[x]).join(enToRu ? ru[x] : en[x]);\r\n\t\ttext = text.split(enToRu ? en[x].toUpperCase() : ru[x].toUpperCase()).join(enToRu ? ru[x].toUpperCase() : en[x].toUpperCase());\r\n\t}\r\n\r\n\treturn text;\r\n}\r\n\r\n/**\r\n * Возвращает предыдущий/следующий элемент списка.\r\n *\r\n * @param {array} list The list of elements\r\n * @param activeElement The active element\r\n * @param shouldGetNext Choose to get next or previous element\r\n * @param isCycleAllowed\r\n * @return {Element|elem} The proper element\r\n */\r\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\r\n\tconst listLength = list.length\r\n\tlet index = list.indexOf(activeElement)\r\n\r\n\t// if the element does not exist in the list return an element\r\n\t// depending on the direction and if cycle is allowed\r\n\tif (index === -1) {\r\n\t\treturn !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\r\n\t}\r\n\r\n\tindex += shouldGetNext ? 1 : -1\r\n\r\n\tif (isCycleAllowed) {\r\n\t\tindex = (index + listLength) % listLength\r\n\t}\r\n\r\n\treturn list[Math.max(0, Math.min(index, listLength - 1))]\r\n}\r\n\r\n/**\r\n *\r\n */\r\nconst isRTL = () => document.documentElement.dir === 'rtl'\r\n\r\nexport {isElement, isVisible, isDisabled, isObject, isEmptyObj, mergeDeepObject, removeElementArray, normalizeData, execute, executeAfterTransition, reflow, noop, makeRandomString, isRTL, transliterate, getElement, getNextActiveElement}","/**\r\n * Работа с DOM\r\n * @param selector\r\n * @returns {*}\r\n */\r\nimport {isElement} from \"../functions\";\r\n\r\nconst parseSelector = selector => {\r\n\tif (selector && window.CSS && window.CSS.escape) {\r\n\t\tselector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\r\n\t}\r\n\r\n\treturn selector\r\n}\r\n\r\nconst getSelector = element => {\r\n\tlet selector = element.getAttribute('data-vg-target');\r\n\r\n\tif (!selector || selector === '#') {\r\n\t\tlet hrefAttribute = element.getAttribute('href');\r\n\t\tif (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\r\n\t\t\threfAttribute = `#${hrefAttribute.split('#')[1]}`;\r\n\t\t}\r\n\r\n\t\tselector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\r\n\t}\r\n\r\n\treturn selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\r\n}\r\n\r\nconst Selectors = {\r\n\tfind(selector, element = document.documentElement) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\treturn selector;\r\n\t\t} else {\r\n\t\t\treturn Element.prototype.querySelector.call(element, selector);\r\n\t\t}\r\n\t},\r\n\r\n\tfindAll(selector, container = document.documentElement) {\r\n\t\treturn [].concat(...Element.prototype.querySelectorAll.call(container, selector));\r\n\t},\r\n\r\n\tgetSelectorFromElement(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\tif (selector) return Selectors.find(selector) ? selector : null\r\n\t\treturn null\r\n\t},\r\n\r\n\tgetElementFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.find(selector) : null\r\n\t},\r\n\r\n\tgetMultipleElementsFromSelector(element) {\r\n\t\tconst selector = getSelector(element);\r\n\t\treturn selector ? Selectors.findAll(selector) : []\r\n\t},\r\n\r\n\tparents(element, selector) {\r\n\t\tconst parents = []\r\n\t\tlet ancestor = element.parentNode.closest(selector)\r\n\r\n\t\twhile (ancestor) {\r\n\t\t\tparents.push(ancestor)\r\n\t\t\tancestor = ancestor.parentNode.closest(selector)\r\n\t\t}\r\n\r\n\t\treturn parents\r\n\t},\r\n\r\n\tnext(element, selector) {\r\n\t\tlet next = element.nextElementSibling\r\n\r\n\t\twhile (next) {\r\n\t\t\tif (next.matches(selector)) {\r\n\t\t\t\treturn [next]\r\n\t\t\t}\r\n\r\n\t\t\tnext = next.nextElementSibling\r\n\t\t}\r\n\r\n\t\treturn []\r\n\t},\r\n\r\n\tprev(element, selector) {\r\n\t\tlet previous = element.previousElementSibling\r\n\r\n\t\twhile (previous) {\r\n\t\t\tif (previous.matches(selector)) {\r\n\t\t\t\treturn [previous]\r\n\t\t\t}\r\n\r\n\t\t\tprevious = previous.previousElementSibling\r\n\t\t}\r\n\r\n\t\treturn []\r\n\t}\r\n}\r\n\r\nexport default Selectors;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap data.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт работает с коллекцией модулей. Подробнее тут https://learn.javascript.ru/map-set\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst elementMap = new Map()\r\n\r\nexport default {\r\n\tset(element, key, instance) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\telementMap.set(element, new Map())\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\t\tif (!instanceMap.has(key) && instanceMap.size !== 0) {\r\n\t\t\tconsole.error(`VGApp не допускает более одного экземпляра для каждого элемента. Связанный экземпляр: ${Array.from(instanceMap.keys())[0]}.`)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tinstanceMap.set(key, instance);\r\n\t},\r\n\r\n\tget(element, key) {\r\n\t\tif (elementMap.has(element)) {\r\n\t\t\treturn elementMap.get(element).get(key) || null\r\n\t\t}\r\n\r\n\t\treturn null\r\n\t},\r\n\r\n\tremove(element, key) {\r\n\t\tif (!elementMap.has(element)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst instanceMap = elementMap.get(element)\r\n\r\n\t\tinstanceMap.delete(key);\r\n\r\n\t\tif (instanceMap.size === 0) {\r\n\t\t\telementMap.delete(element)\r\n\t\t}\r\n\t}\r\n}\r\n","import {isElement, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Манипуляции с атрибутами у элемента:\r\n * get (элемент, имя, флаг - вырезать data-) - метод выбирает значение атрибута по его имени, если в поле имени передать 'data' -> будут выбраны только дата атрибуты, если 'all' -> метод вернет значение всех атрибутов\r\n * has (элемент, имя) - есть ли атрибут у элемента\r\n * set (элемент, имя, значение) - установка у элемента атрибута или его изменение\r\n * remove (элемент, имя) - удаляет атрибут у элемента\r\n */\r\nconst Manipulator = {\r\n\tget(element, nameAttribute = 'data', isRemoveDataName = true) {\r\n\t\tif (!element) {\r\n\t\t\treturn {}\r\n\t\t}\r\n\r\n\t\tif (nameAttribute === 'data') {\r\n\t\t\tlet elmBase = ['data-vg-toggle', 'data-vg-target', 'data-vg-dismiss'],\r\n\t\t\t\tattributes = {};\r\n\r\n\t\t\tlet arr = [].filter.call(element.attributes, function (at) {\r\n\t\t\t\treturn /^data-/.test(at.name);\r\n\t\t\t});\r\n\r\n\t\t\tif (arr.length) {\r\n\t\t\t\tarr.forEach(function (v) {\r\n\t\t\t\t\tlet name = v.name;\r\n\r\n\t\t\t\t\tif (!elmBase.includes(name)) {\r\n\t\t\t\t\t\tif (isRemoveDataName) name = name.slice(5);\r\n\t\t\t\t\t\tattributes[name] = normalizeData(v.value)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn attributes;\r\n\t\t} else if (nameAttribute === 'all') {\r\n\t\t\treturn element.getAttributeNames().reduce((acc, name) => {\r\n\t\t\t\treturn {...acc, [name]: element.getAttribute(name)};\r\n\t\t\t}, {});\r\n\t\t} else {\r\n\t\t\treturn element.getAttribute(nameAttribute);\r\n\t\t}\r\n\t},\r\n\r\n\thas(element, nameAttribute) {\r\n\t\treturn element.hasAttribute(nameAttribute);\r\n\t},\r\n\r\n\tset(element, name, value) {\r\n\t\tif (isElement(element) && name) {\r\n\t\t\telement.setAttribute(name, value);\r\n\t\t}\r\n\t},\r\n\r\n\tremove(element, nameAttribute) {\r\n\t\tif (isElement(element) && nameAttribute) {\r\n\t\t\telement.removeAttribute(nameAttribute);\r\n\t\t}\r\n\t},\r\n\r\n\thide(el) {\r\n\t\tel.style.display = 'none';\r\n\t},\r\n\r\n\tshow(el, state = 'block') {\r\n\t\tel.style.display = state;\r\n\t},\r\n}\r\n\r\nexport {Manipulator}\r\n","import {isElement, mergeDeepObject, normalizeData} from \"../functions\";\r\nimport {Manipulator} from \"../dom/manipulator\";\r\n\r\nclass Params {\r\n\tconstructor(params, element = null) {\r\n\t\tthis._params = this.merge(params, element);\r\n\t}\r\n\r\n\tget() {\r\n\t\treturn this._params;\r\n\t}\r\n\r\n\tfromElement(element) {\r\n\t\treturn isElement(element) ? Manipulator.get(element) : {};\r\n\t}\r\n\r\n\tmerge(params, element) {\r\n\t\tlet mParams = mergeDeepObject(params, this.fromElement(element));\r\n\r\n\t\tfor (let key in mParams) {\r\n\t\t\tif (key.indexOf('-') !== -1) {\r\n\t\t\t\tlet keys = key.split('-'),\r\n\t\t\t\t\tvalue = normalizeData(mParams[key]);\r\n\r\n\t\t\t\tif (keys[0] in mParams) {\r\n\t\t\t\t\tif (keys[1] in mParams[keys[0]]) {\r\n\t\t\t\t\t\tmParams[keys[0]][keys[1]] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete mParams[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ('params' in mParams) {\r\n\t\t\tmParams = mergeDeepObject(mParams, mParams.params);\r\n\t\t\tdelete mParams.params;\r\n\t\t}\r\n\r\n\t\treturn mParams;\r\n\t}\r\n}\r\n\r\nexport default Params;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap event.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * Скрипт для прослушивания события\r\n */\r\n\r\n/**\r\n * Константы\r\n */\r\n\r\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\r\nconst stripNameRegex = /\\..*/\r\nconst stripUidRegex = /::\\d+$/\r\nconst eventRegistry = {} // Events storage\r\nlet uidEvent = 1\r\nconst customEvents = {\r\n\tmouseenter: 'mouseover',\r\n\tmouseleave: 'mouseout'\r\n}\r\n\r\nconst nativeEvents = new Set([\r\n\t'click',\r\n\t'dblclick',\r\n\t'mouseup',\r\n\t'mousedown',\r\n\t'contextmenu',\r\n\t'mousewheel',\r\n\t'DOMMouseScroll',\r\n\t'mouseover',\r\n\t'mouseout',\r\n\t'mousemove',\r\n\t'selectstart',\r\n\t'selectend',\r\n\t'submit',\r\n\t'keydown',\r\n\t'keypress',\r\n\t'keyup',\r\n\t'orientationchange',\r\n\t'touchstart',\r\n\t'touchmove',\r\n\t'touchend',\r\n\t'touchcancel',\r\n\t'pointerdown',\r\n\t'pointermove',\r\n\t'pointerup',\r\n\t'pointerleave',\r\n\t'pointercancel',\r\n\t'popstate',\r\n\t'gesturestart',\r\n\t'gesturechange',\r\n\t'gestureend',\r\n\t'focus',\r\n\t'blur',\r\n\t'change',\r\n\t'reset',\r\n\t'select',\r\n\t'submit',\r\n\t'focusin',\r\n\t'focusout',\r\n\t'load',\r\n\t'unload',\r\n\t'beforeunload',\r\n\t'resize',\r\n\t'move',\r\n\t'DOMContentLoaded',\r\n\t'readystatechange',\r\n\t'error',\r\n\t'abort',\r\n\t'scroll'\r\n])\r\n\r\n/**\r\n * Приватные методы\r\n */\r\n\r\nfunction makeEventUid(element, uid) {\r\n\treturn (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\r\n}\r\n\r\nfunction getElementEvents(element) {\r\n\tconst uid = makeEventUid(element)\r\n\r\n\telement.uidEvent = uid\r\n\teventRegistry[uid] = eventRegistry[uid] || {}\r\n\r\n\treturn eventRegistry[uid]\r\n}\r\n\r\nfunction bootstrapHandler(element, fn) {\r\n\treturn function handler(event) {\r\n\t\thydrateObj(event, { delegateTarget: element })\r\n\r\n\t\tif (handler.oneOff) {\r\n\t\t\tEventHandler.off(element, event.type, fn)\r\n\t\t}\r\n\r\n\t\treturn fn.apply(element, [event])\r\n\t}\r\n}\r\n\r\nfunction bootstrapDelegationHandler(element, selector, fn) {\r\n\treturn function handler(event) {\r\n\t\tconst domElements = element.querySelectorAll(selector)\r\n\r\n\t\tfor (let { target } = event; target && target !== this; target = target.parentNode) {\r\n\t\t\tfor (const domElement of domElements) {\r\n\t\t\t\tif (domElement !== target) {\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\r\n\t\t\t\thydrateObj(event, { delegateTarget: target })\r\n\r\n\t\t\t\tif (handler.oneOff) {\r\n\t\t\t\t\tEventHandler.off(element, event.type, selector, fn)\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn fn.apply(target, [event])\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction findHandler(events, callable, delegationSelector = null) {\r\n\treturn Object.values(events)\r\n\t\t.find(event => event.callable === callable && event.delegationSelector === delegationSelector)\r\n}\r\n\r\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\r\n\tconst isDelegated = typeof handler === 'string'\r\n\t// TODO: выдает \"false\" вместо селектора, поэтому нужно проверить. boot\r\n\tconst callable = isDelegated ? delegationFunction : (handler || delegationFunction)\r\n\tlet typeEvent = getTypeEvent(originalTypeEvent)\r\n\r\n\tif (!nativeEvents.has(typeEvent)) {\r\n\t\ttypeEvent = originalTypeEvent\r\n\t}\r\n\r\n\treturn [isDelegated, callable, typeEvent]\r\n}\r\n\r\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\r\n\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\treturn\r\n\t}\r\n\r\n\tlet [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\r\n\t// in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\r\n\t// this prevents the handler from being dispatched the same way as mouseover or mouseout does\r\n\tif (originalTypeEvent in customEvents) {\r\n\t\tconst wrapFunction = fn => {\r\n\t\t\treturn function (event) {\r\n\t\t\t\tif (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\r\n\t\t\t\t\treturn fn.call(this, event)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcallable = wrapFunction(callable)\r\n\t}\r\n\r\n\tconst events = getElementEvents(element)\r\n\tconst handlers = events[typeEvent] || (events[typeEvent] = {})\r\n\tconst previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\r\n\r\n\tif (previousFunction) {\r\n\t\tpreviousFunction.oneOff = previousFunction.oneOff && oneOff\r\n\r\n\t\treturn\r\n\t}\r\n\r\n\tconst uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\r\n\tconst fn = isDelegated ?\r\n\t\tbootstrapDelegationHandler(element, handler, callable) :\r\n\t\tbootstrapHandler(element, callable)\r\n\r\n\tfn.delegationSelector = isDelegated ? handler : null\r\n\tfn.callable = callable\r\n\tfn.oneOff = oneOff\r\n\tfn.uidEvent = uid\r\n\thandlers[uid] = fn\r\n\r\n\telement.addEventListener(typeEvent, fn, isDelegated)\r\n}\r\n\r\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\r\n\tconst fn = findHandler(events[typeEvent], handler, delegationSelector)\r\n\r\n\tif (!fn) {\r\n\t\treturn\r\n\t}\r\n\r\n\telement.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\r\n\tdelete events[typeEvent][fn.uidEvent]\r\n}\r\n\r\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\r\n\tconst storeElementEvent = events[typeEvent] || {}\r\n\r\n\tfor (const [handlerKey, event] of Object.entries(storeElementEvent)) {\r\n\t\tif (handlerKey.includes(namespace)) {\r\n\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction getTypeEvent(event) {\r\n\t// allow to get the native events from namespaced events ('click.bs.button' --> 'click')\r\n\tevent = event.replace(stripNameRegex, '')\r\n\treturn customEvents[event] || event\r\n}\r\n\r\nfunction hydrateObj(obj, meta = {}) {\r\n\tfor (const [key, value] of Object.entries(meta)) {\r\n\t\ttry {\r\n\t\t\tobj[key] = value\r\n\t\t} catch {\r\n\t\t\tObject.defineProperty(obj, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\tget() {\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\treturn obj\r\n}\r\n\r\n/**\r\n * События\r\n * @type {{one(*, *, *, *): void, trigger(*, *, *): (null|*), off(*, *, *, *): void, on(*, *, *, *): void}}\r\n */\r\nconst EventHandler = {\r\n\t/**\r\n\t * Прослушиватель событий (элемент, событие (полный список смотри в константе nativeEvents, источник события или хендлер, функция обратного вызова))\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\ton(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, false)\r\n\t},\r\n\r\n\t/**\r\n\t * Прослушиватель событий, но замыкается и больше не повторяется на элементе\r\n\t * @param element\r\n\t * @param event\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\tone(element, event, handler, delegationFunction) {\r\n\t\taddHandler(element, event, handler, delegationFunction, true)\r\n\t},\r\n\r\n\t/**\r\n\t * Удаление обработчика\r\n\t * @param element\r\n\t * @param originalTypeEvent\r\n\t * @param handler\r\n\t * @param delegationFunction\r\n\t */\r\n\toff(element, originalTypeEvent, handler, delegationFunction) {\r\n\t\tif (typeof originalTypeEvent !== 'string' || !element) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\r\n\t\tconst inNamespace = typeEvent !== originalTypeEvent\r\n\t\tconst events = getElementEvents(element)\r\n\t\tconst storeElementEvent = events[typeEvent] || {}\r\n\t\tconst isNamespace = originalTypeEvent.startsWith('.')\r\n\r\n\t\tif (typeof callable !== 'undefined') {\r\n\t\t\t// Simplest case: handler is passed, remove that listener ONLY.\r\n\t\t\tif (!Object.keys(storeElementEvent).length) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tremoveHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isNamespace) {\r\n\t\t\tfor (const elementEvent of Object.keys(events)) {\r\n\t\t\t\tremoveNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\r\n\t\t\tconst handlerKey = keyHandlers.replace(stripUidRegex, '')\r\n\r\n\t\t\tif (!inNamespace || originalTypeEvent.includes(handlerKey)) {\r\n\t\t\t\tremoveHandler(element, events, typeEvent, event.callable, event.delegationSelector)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Пользовательские события. Подробнее тут https://learn.javascript.ru/dispatch-events\r\n\t * @param element\r\n\t * @param event\r\n\t * @param args\r\n\t * @returns {*|null}\r\n\t */\r\n\ttrigger(element, event, args) {\r\n\t\tif (typeof event !== 'string' || !element) {\r\n\t\t\treturn null\r\n\t\t}\r\n\r\n\t\tlet bubbles = true;\r\n\t\tlet nativeDispatch = true;\r\n\t\tlet defaultPrevented = false;\r\n\r\n\t\tconst evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\r\n\r\n\t\tif (defaultPrevented) {\r\n\t\t\tevt.preventDefault()\r\n\t\t}\r\n\r\n\t\tif (nativeDispatch) {\r\n\t\t\telement.dispatchEvent(evt)\r\n\t\t}\r\n\r\n\t\treturn evt\r\n\t}\r\n}\r\n\r\nexport default EventHandler\r\n","import EventHandler from \"../utils/js/dom/event\";\r\nimport {isDisabled, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Тут собраны вспомогательные скрипты для работы модулей\r\n */\r\n\r\n/**\r\n * Набор svg элементов\r\n * @param name\r\n * @returns {*|{}}\r\n */\r\nconst getSVG = (name) => {\r\n\tconst svg = {\r\n\t\terror: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-success\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-2\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(252, 191, 191, .5)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-error-circle\" stroke=\"#F74444\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-error-line1\" d=\"M22.244224,22 L60.4279902,60.1837662\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path><path class=\"ui-error-line2\" d=\"M60.755776,21 L23.244224,59.8443492\" id=\"Line\" stroke=\"#F74444\" stroke-width=\"3\" stroke-linecap=\"square\"></path></g></g></svg>',\r\n\t\tsuccess: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-error\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(117, 183, 152, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-success-circle\" id=\"Oval-2\" stroke=\"#A5DC86\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><polyline class=\"ui-success-path\" id=\"Path-2\" stroke=\"#A5DC86\" stroke-width=\"4\" points=\"19 38.8036813 31.1020744 54.8046875 63.299221 28\"></polyline></g></g></svg>',\r\n\t\twaiting: '<svg viewBox=\"0 0 87 87\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><g id=\"ui-waiting\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Group-3\" transform=\"translate(2.000000, 2.000000)\"><circle id=\"Oval-2\" stroke=\"rgba(255, 218, 106, 0.4)\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><circle class=\"ui-waiting-circle\" id=\"Oval-2\" stroke=\"#ffda6a\" stroke-width=\"4\" cx=\"41.5\" cy=\"41.5\" r=\"41.5\"></circle><path class=\"ui-waiting-line1\" d=\"M43 63C54.598 63 64 53.598 64 42C64 30.402 54.598 21 43 21C31.402 21 22 30.402 22 42C22 53.598 31.402 63 43 63Z\" stroke-width=\"3\" stroke=\"#ffda6a\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path class=\"ui-waiting-line2\" d=\"M40.6667 32.6641V44.3307H52.3334\" stroke=\"#ffda6a\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></g></svg>',\r\n\t\tdots: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-three-dots-vertical\" viewBox=\"0 0 16 16\"><path d=\"M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z\"/></svg>',\r\n\t\tcross: '<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 224.512 224.512\" xml:space=\"preserve\"><g><polygon points=\"224.507,6.997 217.521,0 112.256,105.258 6.998,0 0.005,6.997 105.263,112.254 0.005,217.512 6.998,224.512 112.256,119.24 217.521,224.512 224.507,217.512 119.249,112.254 \"/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>'\r\n\t};\r\n\r\n\treturn svg[name] ?? {};\r\n}\r\n\r\n/**\r\n * Вешаем событие \"Закрыть\" на все модалки, сайдбары и т.п.\r\n * @param module\r\n * @param method\r\n */\r\nconst dismissTrigger = (module, method = 'hide') => {\r\n\tconst clickEvent = `click.dismiss.${module.EVENT_KEY}`\r\n\tconst name = module.NAME;\r\n\r\n\tEventHandler.on(document, clickEvent, `[data-vg-dismiss=\"${name}\"]`, function (event) {\r\n\t\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tif (isDisabled(this)) return;\r\n\r\n\t\tconst target = Selectors.getSelectorFromElement(this) || this.closest(`.vg-${name}`);\r\n\t\tconst instance = module.getOrCreateInstance(target);\r\n\r\n\t\tinstance[method]();\r\n\t})\r\n}\r\n\r\n/**\r\n * AJAX REQUEST\r\n * @type {{post: ajax.post, get: ajax.get, x: ((function(): (XMLHttpRequest))|*), send: ajax.send}}\r\n */\r\nconst Ajax = {\r\n\tx: function () {\r\n\t\tif (typeof XMLHttpRequest !== 'undefined') {\r\n\t\t\treturn new XMLHttpRequest();\r\n\t\t}\r\n\t\tlet versions = [\r\n\t\t\t\"MSXML2.XmlHttp.6.0\",\r\n\t\t\t\"MSXML2.XmlHttp.5.0\",\r\n\t\t\t\"MSXML2.XmlHttp.4.0\",\r\n\t\t\t\"MSXML2.XmlHttp.3.0\",\r\n\t\t\t\"MSXML2.XmlHttp.2.0\",\r\n\t\t\t\"Microsoft.XmlHttp\"\r\n\t\t];\r\n\r\n\t\tlet xhr;\r\n\t\tfor (let i = 0; i < versions.length; i++) {\r\n\t\t\ttry {\r\n\t\t\t\txhr = new ActiveXObject(versions[i]);\r\n\t\t\t\tbreak;\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\treturn xhr;\r\n\t},\r\n\r\n\tsend: function (url, callback, method, data, async) {\r\n\t\tif (async === undefined) {\r\n\t\t\tasync = true;\r\n\t\t}\r\n\t\tlet x = Ajax.x();\r\n\t\tx.open(method, url, async);\r\n\t\tx.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\t\tx.onreadystatechange = function () {\r\n\t\t\tif (x.readyState === 4) {\r\n\t\t\t\tswitch (x.status) {\r\n\t\t\t\t\tcase 200:\r\n\t\t\t\t\t\tcallback('success', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tcallback('error', {text: x.statusText, response: x.responseText, code: x.status})\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tx.send(data)\r\n\t},\r\n\r\n\tget: function (url, data, callback, async) {\r\n\t\tlet query = [];\r\n\r\n\t\tif (!isEmptyObj(data)) {\r\n\t\t\tfor (let key of data) {\r\n\t\t\t\tquery.push(encodeURIComponent(key[0]) + '=' + encodeURIComponent(key[1]));\r\n\t\t\t}\r\n\t\t}\r\n\t\tAjax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async)\r\n\t},\r\n\r\n\tpost: function (url, data, callback, async) {\r\n\t\tAjax.send(url, callback, 'POST', data, async)\r\n\t}\r\n};\r\n\r\nexport {\r\n\tdismissTrigger, Ajax, getSVG\r\n}","import {isElement, mergeDeepObject} from \"../functions\";\r\nimport EventHandler from \"../dom/event\";\r\n\r\n/**\r\n * Классы для анимаций смотрим здесь\r\n * https://animate.style/\r\n *\r\n * Работает с модулями у которых есть события show, hide, hidden\r\n */\r\nclass Animation {\r\n\tconstructor(element, key, params = {}) {\r\n\t\tthis._params = mergeDeepObject({\r\n\t\t\tenable: false,\r\n\t\t\tin: 'animate__backInUp',\r\n\t\t\tout: 'animate__backOutUp',\r\n\t\t\tdelay: 0,\r\n\t\t\tduration: 800,\r\n\t\t}, params);\r\n\r\n\t\tthis.classes = {\r\n\t\t\tanimated: 'animate__animated',\r\n\t\t\tduration: 'animate__duration-' + this._params.duration\r\n\t\t}\r\n\r\n\t\tif (!this._params.enable) return;\r\n\t\tif (!isElement(element)) return;\r\n\r\n\t\tthis._element = element;\r\n\t\tthis._name_key = key;\r\n\r\n\t\tif (!this._element.classList.contains(this.classes.animated)) {\r\n\t\t\tthis._element.classList.add(this.classes.animated);\r\n\t\t\tthis._element.classList.add(this.classes.duration);\r\n\t\t}\r\n\r\n\t\tthis._triggers();\r\n\t}\r\n\r\n\t_triggers() {\r\n\t\tEventHandler.on(this._element, this._name_key + '.show', () => {\r\n\t\t\tthis._element.classList.remove(this._params.out);\r\n\t\t\tthis._element.classList.add(this._params.in);\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._element, this._name_key + '.hide', () => {\r\n\t\t\tthis._element.classList.remove(this._params.in);\r\n\t\t\tthis._element.classList.add(this._params.out);\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._element, this._name_key + '.hidden', () => {\r\n\t\t\tthis._element.classList.remove(this._params.out);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport default Animation;","import {execute, executeAfterTransition, isEmptyObj} from \"../utils/js/functions\";\r\nimport Selectors from \"../utils/js/dom/selectors\";\r\nimport Data from \"../utils/js/dom/data\";\r\nimport Params from \"../utils/js/components/params\";\r\nimport EventHandler from \"../utils/js/dom/event\";\r\nimport {Ajax, getSVG} from \"./module-fn\";\r\nimport Animation from \"../utils/js/components/animation\";\r\n\r\nclass BaseModule {\r\n\tconstructor(element) {\r\n\t\tif (!element) return\r\n\r\n\t\tthis._element = Selectors.find(element);\r\n\t\tif (!this._element){\r\n\t\t\tthrow new Error('Товарищ! Первый параметр не должен быть пустым!');\r\n\t\t}\r\n\r\n\t\tthis._params = {};\r\n\t\tthis._isLoaded = false;\r\n\t\tData.set(this._element, this.constructor.NAME_KEY, this);\r\n\t}\r\n\r\n\t_getParams(element, params) {\r\n\t\treturn new Params(params, element).get();\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tData.remove(this._element, this.constructor.NAME_KEY);\r\n\t\tEventHandler.off(this._element, this.constructor.EVENT_KEY)\r\n\r\n\t\tfor (const propertyName of Object.getOwnPropertyNames(this)) {\r\n\t\t\tthis[propertyName] = null\r\n\t\t}\r\n\t}\r\n\r\n\t_route(callback) {\r\n\t\tconst _this = this;\r\n\t\tlet $content = null;\r\n\r\n\t\tif (_this._isLoaded) return;\r\n\r\n\t\tconst setData = (data) => {\r\n\t\t\tif ($content) $content.innerHTML = data;\r\n\t\t};\r\n\r\n\t\tif (!_this._params.hasOwnProperty('ajax')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!_this._params.ajax.route) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!'method' in _this._params.ajax) {\r\n\t\t\t_this._params.ajax.method = 'get';\r\n\t\t}\r\n\r\n\t\tif ('target' in _this._params.ajax && _this._params.ajax.target) {\r\n\t\t\t$content = Selectors.find(_this._params.ajax.target);\r\n\t\t}\r\n\r\n\t\tif ('loader' in _this._params.ajax && _this._params.ajax.loader) {\r\n\t\t\tsetData('<div class=\"vg-loader\"></div>');\r\n\t\t}\r\n\r\n\t\tAjax[_this._params.ajax.method](_this._params.ajax.route, _this._params.ajax.data || {}, function (status, data) {\r\n\t\t\tif ('once' in _this._params.ajax && _this._params.ajax.once) {\r\n\t\t\t\t_this._isLoaded = true;\r\n\t\t\t}\r\n\r\n\t\t\tsetData(data.response);\r\n\t\t\texecute(callback, [status, data]);\r\n\t\t});\r\n\t}\r\n\r\n\t_dismissElement() {\r\n\t\tlet cross = getSVG('cross'),\r\n\t\t\tbutton = this._element.querySelector('.vg-btn-close');\r\n\r\n\t\tif (button) {\r\n\t\t\tlet svg = button.querySelector('svg');\r\n\t\t\tif (!svg) button.insertAdjacentHTML('beforeend', cross);\r\n\t\t}\r\n\t}\r\n\r\n\t_queueCallback(callback, element, isAnimated = true, timeOutMs) {\r\n\t\texecuteAfterTransition(callback, element, isAnimated, timeOutMs);\r\n\t}\r\n\r\n\t_animation(element, key, params = {}) {\r\n\t\tnew Animation(element, key, params);\r\n\t}\r\n\r\n\tstatic getInstance(element) {\r\n\t\treturn Data.get(Selectors.find(element), this.NAME_KEY)\r\n\t}\r\n\r\n\tstatic getOrCreateInstance(element, params = {}) {\r\n\t\treturn this.getInstance(element) || new this(element, !isEmptyObj(params) ? params : {})\r\n\t}\r\n\r\n\tstatic get DATA_KEY() {\r\n\t\treturn `vg.${this.NAME}`\r\n\t}\r\n\r\n\tstatic get EVENT_KEY() {\r\n\t\treturn `.${this.DATA_KEY}`\r\n\t}\r\n}\r\n\r\nexport default BaseModule;","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap util/scrollBar.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n */\r\n\r\nimport {Manipulator} from \"../dom/manipulator\";\r\nimport {isElement} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\n\r\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\r\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\r\nconst PROPERTY_PADDING = 'padding-right'\r\nconst PROPERTY_MARGIN = 'margin-right'\r\n\r\n/**\r\n * Class definition\r\n */\r\n\r\nclass ScrollBarHelper {\r\n\tconstructor() {\r\n\t\tthis._element = document.body\r\n\t}\r\n\r\n\t// Public\r\n\tgetWidth() {\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\r\n\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst width = this.getWidth()\r\n\t\tthis._disableOverFlow()\r\n\t\t// give padding to element to balance the hidden scrollbar width\r\n\t\tthis._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\t// trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\r\n\t\tthis._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\r\n\t\tthis._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis._resetElementAttributes(this._element, 'overflow')\r\n\t\tthis._resetElementAttributes(this._element, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\r\n\t\tthis._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\r\n\t}\r\n\r\n\tisOverflowing() {\r\n\t\treturn this.getWidth() > 0\r\n\t}\r\n\r\n\t// Private\r\n\t_disableOverFlow() {\r\n\t\tthis._saveInitialAttribute(this._element, 'overflow')\r\n\t\tthis._element.style.overflow = 'hidden'\r\n\t}\r\n\r\n\t_setElementAttributes(selector, styleProperty, callback) {\r\n\t\tconst scrollbarWidth = this.getWidth()\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tif (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tthis._saveInitialAttribute(element, styleProperty)\r\n\t\t\tconst calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_saveInitialAttribute(element, styleProperty) {\r\n\t\tconst actualValue = element.style.getPropertyValue(styleProperty)\r\n\t\tif (actualValue) {\r\n\t\t\tManipulator.get(element, styleProperty, actualValue)\r\n\t\t}\r\n\t}\r\n\r\n\t_resetElementAttributes(selector, styleProperty) {\r\n\t\tconst manipulationCallBack = element => {\r\n\t\t\tconst value = Manipulator.get(element, styleProperty)\r\n\t\t\t// We only want to remove the property if the value is `null`; the value can also be zero\r\n\t\t\tif (value === null) {\r\n\t\t\t\telement.style.removeProperty(styleProperty)\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tManipulator.remove(element, styleProperty)\r\n\t\t\telement.style.setProperty(styleProperty, value)\r\n\t\t}\r\n\r\n\t\tthis._applyManipulationCallback(selector, manipulationCallBack)\r\n\t}\r\n\r\n\t_applyManipulationCallback(selector, callBack) {\r\n\t\tif (isElement(selector)) {\r\n\t\t\tcallBack(selector)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const sel of Selectors.findAll(selector, this._element)) {\r\n\t\t\tcallBack(sel)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default ScrollBarHelper","import {Manipulator} from \"../dom/manipulator\";\r\n\r\n/**\r\n * Класс Overflow\r\n * Запрещает скроллинг и убирает его, компенсируя отступом\r\n */\r\n\r\nclass Overflow {\r\n\tstatic append() {\r\n\t\tdocument.body.style.paddingRight = getWidth() + 'px';\r\n\t\tdocument.body.style.overflow = 'hidden';\r\n\r\n\t\tfunction getWidth() {\r\n\t\t\tconst documentWidth = document.documentElement.clientWidth\r\n\t\t\treturn Math.abs(window.innerWidth - documentWidth)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic destroy() {\r\n\t\tdocument.body.style.overflow = '';\r\n\t\tdocument.body.style.paddingRight = '';\r\n\r\n\t\tlet styles = Manipulator.get(document.body, 'style');\r\n\t\tif (!styles) Manipulator.remove(document.body, 'style');\r\n\t}\r\n}\r\n\r\nexport default Overflow;","import {execute} from \"../functions\";\r\nimport Selectors from \"../dom/selectors\";\r\nimport EventHandler from \"../dom/event\";\r\nimport Overflow from \"./overflow\";\r\n\r\nconst NAME = 'backdrop';\r\nconst CLASS_NAME = 'vg-backdrop';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst EVENT_MOUSEDOWN = `mousedown.vg.${NAME}`;\r\n\r\nlet backdrop_delay = 500;\r\n\r\nclass Backdrop {\r\n\tstatic show(callback) {\r\n\t\tBackdrop._append()\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic hide(callback) {\r\n\t\tBackdrop._destroy();\r\n\t\texecute(callback);\r\n\t}\r\n\r\n\tstatic _append() {\r\n\t\tif (Selectors.find('.' + CLASS_NAME)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet backdrop = document.createElement('div');\r\n\t\tbackdrop.classList.add(CLASS_NAME);\r\n\r\n\t\tdocument.body.append(backdrop);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tbackdrop.classList.add(CLASS_NAME_FADE)\r\n\t\t}, 50);\r\n\r\n\t\tEventHandler.on(backdrop, EVENT_MOUSEDOWN, () => {\r\n\t\t\tBackdrop.hide()\r\n\t\t\tOverflow.destroy();\r\n\t\t});\r\n\t}\r\n\r\n\tstatic _destroy() {\r\n\t\tlet element = Selectors.find('.' + CLASS_NAME);\r\n\t\tif (!element) return;\r\n\r\n\t\telement.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\telement.remove();\r\n\t\t}, backdrop_delay);\r\n\t}\r\n}\r\n\r\nexport default Backdrop;","import BaseModule from \"../../base-module\";\r\nimport ScrollBarHelper from \"../../../utils/js/components/scrollbar\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport {execute, isDisabled, isRTL, mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'modal';\r\nconst NAME_KEY = 'vg.modal';\r\n\r\nconst ESCAPE_KEY = 'Escape';\r\n\r\nconst OPEN_SELECTOR = '.vg-modal.show';\r\nconst SELECTOR_DIALOG = '.vg-modal-dialog';\r\nconst SELECTOR_MODAL_BODY = '.vg-modal-body';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"modal\"]';\r\n\r\nconst CLASS_NAME_OPEN = 'vg-modal-open';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_STATIC = 'vg-modal-static';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_RESIZE = `${NAME_KEY}.resize`;\r\nconst EVENT_KEY_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_MOUSEDOWN_DISMISS = `mousedown.dismiss${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DISMISS = `click.dismiss${NAME_KEY}`;\r\nconst EVENT_KEY_DOM_LOADED_DATA_API = `DOMContentLoaded.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_POPSTATE_DATA_API = `popstate.${NAME_KEY}.data.api`;\r\n\r\nclass VGModal extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\tfocus: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tfields: [],\r\n\t\t\thash: false,\r\n\t\t\tcentered: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: false,\r\n\t\t\t\tin: 'animate__rollIn',\r\n\t\t\t\tout: 'animate__rollOut',\r\n\t\t\t\tdelay: 100,\r\n\t\t\t\tduration: 800,\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-modal',\r\n\t\t\t\tdialog: 'vg-modal-dialog',\r\n\t\t\t\tcontent: 'vg-modal-content',\r\n\t\t\t\theader: 'vg-modal-header',\r\n\t\t\t\ttitle: 'vg-modal-title',\r\n\t\t\t\tbody: 'vg-modal-body',\r\n\t\t\t\tfooter: 'vg-modal-footer',\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._button = null;\r\n\t\tthis._dialog = Selectors.find(SELECTOR_DIALOG, this._element);\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = false;\r\n\t\tthis._scrollBar = new ScrollBarHelper();\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGModal.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tstatic init(element, params, callback) {\r\n\t\tVGModal.build(element, params, callback);\r\n\t}\r\n\r\n\tstatic build(id, params, callback) {\r\n\t\tif (typeof id !== \"string\") return;\r\n\r\n\t\tlet _element = document.createElement('div');\r\n\t\t_element.classList.add('vg-modal', 'fade');\r\n\t\t_element.id = id;let dialog = document.createElement('div');\r\n\t\tdialog.classList.add('vg-modal-dialog');\r\n\r\n\t\tif ('centered' in params && params.centered) {\r\n\t\t\tdialog.classList.add('vg-modal-dialog-centered');\r\n\t\t}\r\n\r\n\t\tlet content = document.createElement('div');\r\n\t\tcontent.classList.add('vg-modal-content');\r\n\r\n\t\tlet btnClose = document.createElement('button');\r\n\t\tManipulator.set(btnClose, 'type', 'button');\r\n\t\tManipulator.set(btnClose, 'data-vg-dismiss', 'modal');\r\n\t\tManipulator.set(btnClose, 'data-vg-target', '#' + id);\r\n\t\tManipulator.set(btnClose, 'aria-label', 'close');\r\n\t\tbtnClose.classList.add('vg-btn-close');\r\n\r\n\t\tcontent.append(btnClose);\r\n\r\n\t\tlet body = document.createElement('div');\r\n\t\tbody.classList.add('vg-modal-body');\r\n\r\n\t\tcontent.append(body);\r\n\t\tdialog.append(content);\r\n\t\t_element.append(dialog);\r\n\r\n\t\tdocument.body.append(_element);\r\n\r\n\t\tconst modal = VGModal.getOrCreateInstance(_element, params);\r\n\r\n\t\texecute(callback, [modal]);\r\n\r\n\t\treturn modal;\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tthis._params = this._getParams(relatedTarget, this._params);\r\n\t\t_this._route(function (status, data) {\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_LOADED, {stats: status, data: data});\r\n\t\t});\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = true;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tif (this._params.hash) {\r\n\t\t\twindow.history.pushState(null, \"vg-sidebar-open\", \"#\" + this._element.id);\r\n\r\n\t\t\tEventHandler.on(window, EVENT_KEY_POPSTATE_DATA_API, () => {\r\n\t\t\t\tthis.hide();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._scrollBar.hide();\r\n\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tthis._addFieldsInModal(relatedTarget);\r\n\t\tthis._adjustDialog();\r\n\r\n\t\tBackdrop.show(() => this._showElement(relatedTarget));\r\n\t}\r\n\r\n\thide(openedModals = []) {\r\n\t\tif (!this._isShown || this._isTransitioning) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tthis._isShown = false;\r\n\t\tthis._isTransitioning = true;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\tthis._queueCallback(() => this._hideModal(openedModals), this._element, this._isAnimatedFade());\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\t_hideModal(openedModals) {\r\n\t\tthis._element.style.display = 'none';\r\n\t\tthis._element.setAttribute('aria-hidden', true);\r\n\t\tthis._element.removeAttribute('aria-modal');\r\n\t\tthis._element.removeAttribute('role');\r\n\t\tthis._isTransitioning = false;\r\n\r\n\t\tif (openedModals.length) return;\r\n\r\n\t\tif (this._params.hash) {\r\n\t\t\thistory.pushState(\"\", document.title, window.location.pathname + window.location.search);\r\n\t\t}\r\n\r\n\t\tBackdrop.hide(() => {\r\n\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\tthis._resetAdjustments();\r\n\t\t\tthis._scrollBar.reset();\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t})\r\n\t}\r\n\r\n\t_showElement(relatedTarget) {\r\n\t\tif (!document.body.contains(this._element)) {\r\n\t\t\tdocument.body.append(this._element);\r\n\t\t}\r\n\r\n\t\tthis._element.style.display = 'block';\r\n\t\tthis._element.removeAttribute('aria-hidden');\r\n\t\tthis._element.setAttribute('aria-modal', true);\r\n\t\tthis._element.setAttribute('role', 'dialog');\r\n\t\tthis._element.scrollTop = 0;\r\n\r\n\t\tconst modalBody = Selectors.find(SELECTOR_MODAL_BODY, this._dialog);\r\n\t\tif (modalBody) {\r\n\t\t\tmodalBody.scrollTop = 0;\r\n\t\t}\r\n\r\n\t\treflow(this._element);\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW)\r\n\r\n\t\tconst transitionComplete = () => {\r\n\t\t\tthis._isTransitioning = false;\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, {\r\n\t\t\t\trelatedTarget\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(transitionComplete, this._dialog, this._isAnimatedFade())\r\n\t}\r\n\r\n\t_isAnimatedFade() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_FADE)\r\n\t}\r\n\r\n\t_adjustDialog() {\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\r\n\t\tconst scrollbarWidth = this._scrollBar.getWidth()\r\n\t\tconst isBodyOverflowing = scrollbarWidth > 0\r\n\r\n\t\tif (isBodyOverflowing && !isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingLeft' : 'paddingRight'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\r\n\t\tif (!isBodyOverflowing && isModalOverflowing) {\r\n\t\t\tconst property = isRTL() ? 'paddingRight' : 'paddingLeft'\r\n\t\t\tthis._element.style[property] = `${scrollbarWidth}px`\r\n\t\t}\r\n\t}\r\n\r\n\t_resetAdjustments() {\r\n\t\tthis._element.style.paddingLeft = ''\r\n\t\tthis._element.style.paddingRight = ''\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(this._element, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== ESCAPE_KEY) return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._triggerBackdropTransition();\r\n\t\t});\r\n\r\n\t\tEventHandler.on(window, EVENT_KEY_RESIZE, () => {\r\n\t\t\tif (this._isShown && !this._isTransitioning) this._adjustDialog();\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._element, EVENT_KEY_MOUSEDOWN_DISMISS, event => {\r\n\t\t\tEventHandler.one(this._element, EVENT_KEY_CLICK_DISMISS, event2 => {\r\n\t\t\t\tif (this._element !== event.target || this._element !== event2.target) return;\r\n\r\n\t\t\t\tif (this._params.backdrop === 'static') {\r\n\t\t\t\t\tthis._triggerBackdropTransition();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._params.backdrop) {\r\n\t\t\t\t\tthis.hide();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\t_triggerBackdropTransition() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tconst isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\r\n\t\tconst initialOverflowY = this._element.style.overflowY;\r\n\r\n\t\tif (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) return;\r\n\t\tif (!isModalOverflowing) this._element.style.overflowY = 'hidden';\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_STATIC);\r\n\r\n\t\tthis._queueCallback(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_STATIC);\r\n\t\t\tthis._queueCallback(() => {\r\n\t\t\t\tthis._element.style.overflowY = initialOverflowY;\r\n\t\t\t}, this._dialog);\r\n\t\t}, this._dialog);\r\n\t}\r\n\r\n\t_addFieldsInModal(relatedTarget) {\r\n\t\tthis._params = this._getParams(relatedTarget, this._params);\r\n\r\n\t\tif (!this._params.fields.length) return;\r\n\r\n\t\tthis._params.fields.forEach((item) => {\r\n\t\t\tif (!'name' in item && !'value' in item) return;\r\n\r\n\t\t\tlet elements = Selectors.findAll('[data-' + item.name + ']', this._element);\r\n\t\t\tif (!elements.length) return;\r\n\r\n\t\t\tfor (const elm of elements) {\r\n\t\t\t\tswitch (elm.tagName) {\r\n\t\t\t\t\tcase 'INPUT': elm.value = item.value; break;\r\n\t\t\t\t\tcase 'IMG': Manipulator.set(elm, 'src', item.value); break;\r\n\t\t\t\t\tdefault: elm.innerHTML = item.value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGModal);\r\n\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) event.preventDefault();\r\n\r\n\tEventHandler.one(target, EVENT_KEY_SHOW, showEvent => {\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\t});\r\n\r\n\tconst alreadyOpen = Selectors.find(OPEN_SELECTOR);\r\n\tif (alreadyOpen) VGModal.getInstance(alreadyOpen).hide([alreadyOpen]);\r\n\r\n\tconst data = VGModal.getOrCreateInstance(target);\r\n\tdata.toggle(this);\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_DOM_LOADED_DATA_API, function () {\r\n\tlet targetHash = window.location.hash.slice(1);\r\n\tif (targetHash) {\r\n\t\tlet target = Selectors.find('#' + targetHash);\r\n\t\tif (target && target.classList.contains('vg-modal')) {\r\n\t\t\tif (isDisabled(target)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst data = VGModal.getOrCreateInstance(target)\r\n\t\t\tdata.toggle();\r\n\t\t}\r\n\t}\r\n})\r\n\r\nexport default VGModal;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {isDisabled, makeRandomString, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport VGModal from \"../../vgmodal/js/vgmodal\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'alert';\r\nconst NAME_KEY = 'vg.alert';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"alert\"]';\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nlet IS_PROMISE = false;\r\n\r\nclass VGAlert extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tmodal: {\r\n\t\t\t\tcentered: false,\r\n\t\t\t\tbackdrop: true,\r\n\t\t\t\toverflow: true,\r\n\t\t\t\tkeyboard: true,\r\n\t\t\t\tanimation: {\r\n\t\t\t\t\tenable: false,\r\n\t\t\t\t\tin: 'animate__rollIn',\r\n\t\t\t\t\tout: 'animate__rollOut',\r\n\t\t\t\t\tdelay: 0,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\ttoast: {\r\n\r\n\t\t\t},\r\n\t\t\telements: {\r\n\t\t\t\tbutton: ''\r\n\t\t\t},\r\n\t\t\tdialog: 'modal',\r\n\t\t\tmode: 'alert',\r\n\t\t}, params));\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\tstatic run(... args) {\r\n\r\n\t}\r\n\r\n\ttoggle(event) {\r\n\r\n\t}\r\n\r\n\tpromise(event) {\r\n\r\n\t}\r\n\r\n\t_build() {\r\n\t\tif (this._params.dialog === 'modal') {\r\n\t\t\treturn this._buildModal();\r\n\t\t}\r\n\t\tif (this._params.dialog === 'toast') {\r\n\t\t\treturn this._buildToast();\r\n\t\t}\r\n\t}\r\n\r\n\t_buildModal() {\r\n\t\tlet id = 'vg-alert-' + makeRandomString(),\r\n\t\t\t$modal = Selectors.find('.vg-alert-modal');\r\n\r\n\t\tif ($modal) $modal.remove();\r\n\r\n\t\treturn VGModal.build(id, this._params.modal, (self) => {\r\n\t\t\tlet element = self._element;\r\n\t\t\telement.classList.add('vg-alert-modal');\r\n\r\n\t\t\tlet $body = Selectors.find('.vg-modal-body', element);\r\n\t\t\tif ($body) {\r\n\t\t\t\tlet html = '<div class=\"message\">' + this._params.message + '</div>';\r\n\r\n\t\t\t\thtml += '<div class=\"buttons\">';\r\n\t\t\t\tif (this._params.elements.button) {\r\n\t\t\t\t\thtml += '<a href=\"#\" data-vg-dismiss=\"modal\" class=\"btn btn-primary\">'+ this._params.elements.button +'</a>';\r\n\t\t\t\t}\r\n\t\t\t\thtml += '</div>';\r\n\r\n\t\t\t\t$body.innerHTML = html;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_buildToast() {\r\n\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\r\n});\r\n\r\nwindow.alert = (message) => {\r\n\tVGAlert.run(message);\r\n}\r\n\r\nexport default VGAlert;","// alert\r\nimport \"./scss/vgalert.scss\";\r\nimport VGAlert from \"./js/vgalert\";\r\n\r\nexport default VGAlert;","import BaseModule from \"../../base-module\";\r\nimport {mergeDeepObject, reflow} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'collapse';\r\nconst NAME_KEY = 'vg.collapse';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_COLLAPSE = 'vg-collapse';\r\nconst CLASS_NAME_COLLAPSING = 'vg-collapsing';\r\nconst CLASS_NAME_COLLAPSED = 'vg-collapsed';\r\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\r\n\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"collapse\"]';\r\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGCollapse extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\ttoggle: true,\r\n\t\t\tparent: null,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._isTransitioning = false\r\n\t\tthis._triggerArray = []\r\n\r\n\t\tconst toggleList = Selectors.findAll(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const elem of toggleList) {\r\n\t\t\tconst selector = Selectors.getSelectorFromElement(elem);\r\n\t\t\tconst filterElement = Selectors.findAll(selector).filter(foundElement => foundElement === this._element);\r\n\r\n\t\t\tif (selector !== null && filterElement.length) {\r\n\t\t\t\tthis._triggerArray.push(elem)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._initializeChildren();\r\n\r\n\t\tif (!this._params.parent) {\r\n\t\t\tthis._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\r\n\t\t}\r\n\r\n\t\tif (this._params.toggle) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || _this._isShown()) return;\r\n\r\n\t\tlet activeChildren = [];\r\n\r\n\t\tif (_this._params.parent) {\r\n\t\t\tactiveChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\r\n\t\t\t\t.filter(element => element !== this._element)\r\n\t\t\t\t.map(element => VGCollapse.getOrCreateInstance(element, { toggle: false }));\r\n\t\t}\r\n\r\n\t\tif (activeChildren.length && activeChildren[0]._isTransitioning) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_SHOW);\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\tfor (const activeInstance of activeChildren) {\r\n\t\t\tactiveInstance.hide();\r\n\t\t}\r\n\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE)\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING)\r\n\r\n\t\t_this._element.style.height = 0;\r\n\r\n\t\t_this._addAriaAndCollapsedClass(_this._triggerArray, true);\r\n\t\t_this._isTransitioning = true;\r\n\r\n\t\t_this._route();\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\t\t_this._element.style.height = '';\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_SHOWN);\r\n\t\t}\r\n\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\r\n\t\tconst scrollSize = `scrollHeight`;\r\n\t\t_this._element.style.height = `${_this._element[scrollSize]}px`;\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._isTransitioning || !_this._isShown()) return;\r\n\r\n\t\tconst startEvent = EventHandler.trigger(_this._element, EVENT_KEY_HIDE)\r\n\t\tif (startEvent.defaultPrevented) return;\r\n\r\n\t\t_this._element.style.height = `${this._element.getBoundingClientRect().height}px`;\r\n\t\treflow(_this._element);\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_COLLAPSING);\r\n\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);\r\n\r\n\t\tfor (const trigger of _this._triggerArray) {\r\n\t\t\tconst element = Selectors.getElementFromSelector(trigger);\r\n\r\n\t\t\tif (element && !_this._isShown(element)) {\r\n\t\t\t\t_this._addAriaAndCollapsedClass([trigger], false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t_this._isTransitioning = true\r\n\r\n\t\tconst complete = () => {\r\n\t\t\t_this._isTransitioning = false;\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_COLLAPSING);\r\n\t\t\t_this._element.classList.add(CLASS_NAME_COLLAPSE);\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_HIDDEN);\r\n\t\t}\r\n\r\n\t\t_this._element.style.height = '';\r\n\t\t_this._queueCallback(complete, _this._element, true);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown(element = this._element) {\r\n\t\treturn element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addAriaAndCollapsedClass(triggerArray, isOpen) {\r\n\t\tif (!triggerArray.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const element of triggerArray) {\r\n\t\t\tthis._changeStateButton(element, isOpen);\r\n\t\t}\r\n\t}\r\n\r\n\t_initializeChildren() {\r\n\t\tif (!this._params.parent) return;\r\n\r\n\t\tconst children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);\r\n\r\n\t\tfor (const element of children) {\r\n\t\t\tconst selected = Selectors.getElementFromSelector(element)\r\n\r\n\t\t\tif (selected) {\r\n\t\t\t\tthis._addAriaAndCollapsedClass([element], this._isShown(selected))\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_getFirstLevelChildren(selector) {\r\n\t\tconst children = Selectors.find(CLASS_NAME_DEEPER_CHILDREN, this._params.parent);\r\n\t\treturn Selectors.find(selector, this._params.parent).filter(element => !children.includes(element));\r\n\t}\r\n\r\n\t_changeStateButton(element, isOpen) {\r\n\t\telement.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\r\n\t\telement.setAttribute('aria-expanded', isOpen);\r\n\t\telement.innerHTML = Manipulator.get(element, `data-${isOpen ? 'hide' : 'show'}-text`) || element.innerHTML;\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tSelectors.getMultipleElementsFromSelector(this).forEach(function (element) {\r\n\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).toggle();\r\n\t});\r\n})\r\n\r\nexport default VGCollapse;","import VGCollapse from \"./js/vgcollapse\";\r\n\r\nexport default VGCollapse;","import {mergeDeepObject, normalizeData} from \"../functions\";\r\n\r\n/**\r\n * Класс Placement, определяет и устанавливает местоположение элемента на странице.\r\n * TODO класс не дописан\r\n */\r\n\r\nclass Placement {\r\n\tconstructor(arg = {}) {\r\n\t\tthis.params = mergeDeepObject({\r\n\t\t\telement: null,\r\n\t\t\tdrop: null\r\n\t\t}, arg);\r\n\t}\r\n\r\n\t_getPlacement() {\r\n\t\tconst _this = this;\r\n\t\tconst _parent = (self) => {\r\n\t\t\tlet parent = self.parentNode,\r\n\t\t\t\toverflow = getComputedStyle(parent).overflow;\r\n\r\n\t\t\tif (parent.tagName !== 'BODY') {\r\n\t\t\t\tif (overflow === 'visible') {\r\n\t\t\t\t\t_parent(parent)\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn parent;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet isFixed = false, top, left,\r\n\t\t\tbounds = _this.params.drop.getBoundingClientRect(),\r\n\t\t\tparent = _this.params.element.getBoundingClientRect();\r\n\r\n\t\tif (_parent(_this.params.element)) {\r\n\t\t\tisFixed = true;\r\n\t\t\ttop = bounds.top;\r\n\t\t\tleft = bounds.left;\r\n\t\t} else {\r\n\t\t\tlet styles = getComputedStyle(_this.params.drop);\r\n\t\t\ttop = normalizeData(styles.top.slice(0, -2));\r\n\t\t\tleft = normalizeData(styles.left.slice(0, -2));\r\n\t\t}\r\n\r\n\t\tif ((bounds.left + bounds.width) > window.innerWidth) {\r\n\t\t\tleft = parent.width - bounds.width;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tisFixed: isFixed,\r\n\t\t\ttop: top,\r\n\t\t\tleft: left\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Placement;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {isDisabled, mergeDeepObject, noop} from \"../../../utils/js/functions\";\r\nimport Placement from \"../../../utils/js/components/placement\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\n\r\nconst NAME = 'dropdown';\r\nconst NAME_KEY = 'vg.dropdown';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst TARGET_CONTAINER = 'vg-dropdown-content';\r\nconst PARENT_CONTAINER = 'vg-dropdown';\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"dropdown\"]';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYDOWN_DATA_API = `keydown.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\n\r\nclass VGDropdown extends BaseModule {\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tlet defaultParams = {\r\n\t\t\toffset: [0, 2],\r\n\t\t\tbackdrop: false,\r\n\t\t\toverflow: false,\r\n\t\t\tkeyboard: false,\r\n\t\t\tplacement: 'bottom',\r\n\t\t\ttimeoutAnimation: 350,\r\n\t\t\thover: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: false,\r\n\t\t\t\tin: 'animate__flipInY',\r\n\t\t\t\tout: 'animate__flipOutY',\r\n\t\t\t\tdelay: 800,\r\n\t\t\t},\r\n\t\t}\r\n\r\n\t\tif ('offset' in params && Array.isArray(params.offset)) {\r\n\t\t\tdefaultParams.offset = params.offset;\r\n\t\t}\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject(defaultParams, params));\r\n\r\n\t\tconst target = Selectors.getElementFromSelector(this._element);\r\n\r\n\t\tthis._parent = this._element.parentNode;\r\n\t\tthis._drop = target || Selectors.find('.' + TARGET_CONTAINER, this._parent);\r\n\t\tthis._isPlacement = false;\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._drop, VGDropdown.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\treturn this._isShown() ? this.hide() : this.show();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tif (isDisabled(this._element) || this._isShown()) return;\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, relatedTarget)\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.on(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._route();\r\n\r\n\t\tthis._element.setAttribute('aria-expanded', true);\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._drop.classList.add(CLASS_NAME_SHOW);\r\n\t\tthis._setPlacement();\r\n\r\n\t\tif (this._params.backdrop && !this._params.hover) {\r\n\t\t\tBackdrop.show();\r\n\t\t}\r\n\r\n\t\tif (this._params.overflow) {\r\n\t\t\tOverflow.append();\r\n\t\t\tdocument.body.classList.add('dropdown-open')\r\n\t\t}\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._drop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._drop, true, 50);\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element) || !this._isShown()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst relatedTarget = {\r\n\t\t\trelatedTarget: this._element\r\n\t\t}\r\n\r\n\t\tthis._completeHide(relatedTarget);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\treturn super.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_completeHide(relatedTarget) {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE, relatedTarget)\r\n\t\tif (hideEvent.defaultPrevented) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._drop.classList.remove(CLASS_NAME_FADE);\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\tthis._element.setAttribute('aria-expanded', 'false');\r\n\r\n\t\tif (this._params.backdrop && !this._params.hover) {\r\n\t\t\tconst _this = this;\r\n\t\t\tBackdrop.hide(function () {\r\n\t\t\t\tif (_this._params.overflow) {\r\n\t\t\t\t\tOverflow.destroy();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this._params.overflow) {\r\n\t\t\tOverflow.destroy();\r\n\t\t\tdocument.body.classList.remove('dropdown-open');\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst completeCallback = () => {\r\n\t\t\t\tthis._drop.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN, relatedTarget);\r\n\t\t\t}\r\n\t\t\tthis._queueCallback(completeCallback, this._parent, true, 10);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\t// TODO class Placement isn't done\r\n\t_setPlacement() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._isPlacement) {\r\n\t\t\tlet placement = new Placement({\r\n\t\t\t\telement: this._parent,\r\n\t\t\t\tdrop: this._drop\r\n\t\t\t})._getPlacement();\r\n\r\n\t\t\tif (placement.isFixed) {\r\n\t\t\t\t_this._drop.style.position = 'fixed';\r\n\t\t\t\t_this._drop.style.transform = 'translateY(-20%)'; // todo this is костыль поfixить\r\n\t\t\t}\r\n\r\n\t\t\t_this._drop.style.left = placement.left + 'px';\r\n\t\t\t_this._drop.style.top = placement.top + 'px';\r\n\t\t}\r\n\r\n\t\tif (_this._params.offset) {\r\n\t\t\t_this._drop.style.paddingTop = _this._params.offset[1] + 'px';\r\n\t\t\t_this._drop.style.paddingRight = _this._params.offset[0] + 'px';\r\n\t\t}\r\n\r\n\t\t_this._isPlacement = true;\r\n\t}\r\n\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(element, params);\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\tlet currentElem = null;\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\tif (currentElem) return;\r\n\t\t\t\tVGDropdown.hideOpenToggles(event);\r\n\r\n\t\t\t\tlet target = event.target.closest('.' + PARENT_CONTAINER);\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (!instance._parent.contains(target)) return;\r\n\t\t\t\tcurrentElem = target;\r\n\t\t\t\tinstance.show();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.on(instance._parent, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\tlet relatedTarget = event.relatedTarget;\r\n\r\n\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentElem = null;\r\n\t\t\t\tinstance._completeHide({relatedTarget: instance._element});\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_DATA_TOGGLE, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYDOWN_DATA_API, '.' + TARGET_CONTAINER, VGDropdown.keydownHandler);\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGDropdown.clearDrops);\r\n\t\t\tEventHandler.on(element, EVENT_CLICK_DATA_API, function (event) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tinstance.toggle();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic hideOpenToggles(event) {\r\n\t\tconst openToggles = Selectors.findAll('[data-vg-toggle=\"dropdown\"]:not(.disabled):not(:disabled).show');\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGDropdown.getInstance(toggle);\r\n\t\t\tif (!context) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (event.target.closest('.' + TARGET_CONTAINER) === context._drop) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst composedPath = event.composedPath();\r\n\t\t\tif (composedPath.includes(context._element)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: context._element }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext._completeHide(relatedTarget)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic keydownHandler(event) {\r\n\t\tconst isInput = /input|textarea/i.test(event.target.tagName)\r\n\t\tconst isEscapeEvent = event.key === 'Escape'\r\n\t\tconst isUpOrDownEvent = ['ArrowUp', 'ArrowDown'].includes(event.key)\r\n\r\n\t\tif (!isUpOrDownEvent && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (isInput && !isEscapeEvent) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tevent.preventDefault()\r\n\r\n\t\tconst getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\r\n\t\t\tthis : (Selectors.find(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\r\n\r\n\t\tconst instance = VGDropdown.getOrCreateInstance(getToggleButton)\r\n\r\n\t\tif (isUpOrDownEvent) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.show()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (instance._isShown()) {\r\n\t\t\tevent.stopPropagation()\r\n\t\t\tinstance.hide()\r\n\t\t\tgetToggleButton.focus()\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGDropdown.hideOpenToggles(event)\r\n\t}\r\n}\r\n\r\nexport default VGDropdown;","import './scss/vgdropdown.scss';\r\nimport VGDropdown from \"./js/vgdropdown\";\r\n\r\nexport default VGDropdown;","import {execute, mergeDeepObject} from \"../functions\";\r\n\r\nconst TEMPLATES = [\r\n\t{type: 'pass-open', template: '<span data-vg-toggle=\"vgpass\" class=\"[[classes]]\" title=\"Показать / Скрыть\" data-bs-toggle=\"tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path d=\"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"/></svg></span>'},\r\n\t{type: 'pass-close', template: '<span data-vg-toggle=\"vgpass\" class=\"[[classes]]\" title=\"Показать / Скрыть\" data-bs-toggle=\"tooltip\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d=\"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z\"/></svg></span>'},\r\n]\r\n\r\n\r\nclass Templater {\r\n\tconstructor(el, params = {}) {\r\n\t\tif (!el) {\r\n\t\t\tthrow new Error('Element is required');\r\n\t\t}\r\n\r\n\t\tthis._element = el;\r\n\t\tthis._params = mergeDeepObject({\r\n\t\t\tinsert: 'afterend',\r\n\t\t\tclasses: []\r\n\t\t}, params);\r\n\t}\r\n\r\n\trender(content, callback) {\r\n\t\tlet tmpl = this.toHTML(content, callback);\r\n\r\n\t\tswitch (this._params.insert) {\r\n\t\t\tcase 'afterend':\r\n\t\t\t\tthis._element.insertAdjacentHTML('afterend', tmpl);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\ttoHTML(content = '' | null, callback) {\r\n\t\tlet tmpl = '';\r\n\r\n\t\tfor (const tmplElement of TEMPLATES) {\r\n\t\t\tif (tmplElement.type === this._params.template) {\r\n\t\t\t\ttmpl = tmplElement.template;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!tmpl) return;\r\n\r\n\t\ttmpl = tmpl.replace('[[classes]]', this._params.classes.join(' '));\r\n\t\texecute(callback, [this._element, this._params, tmpl]);\r\n\r\n\t\treturn tmpl;\r\n\t}\r\n\r\n\tsetContent() {\r\n\r\n\t}\r\n}\r\n\r\nexport default Templater;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport {isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport Templater from \"../../../utils/js/components/templater\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'hideshowpass';\r\nconst NAME_KEY = 'vg.hideshowpass';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"vgpass\"]';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGHideShowPass extends BaseModule{\r\n\tconstructor(el, params = {}) {\r\n\t\tsuper(el, params);\r\n\r\n\t\tthis._params = this._getParams(el, mergeDeepObject({}, params));\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide(relatedTarget);\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tif (relatedTarget) this._params = this._getParams(relatedTarget, this._params);\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\trelatedTarget.remove();\r\n\t\tthis.build(true);\r\n\t\tManipulator.set(this._element, 'type', 'text');\r\n\t}\r\n\r\n\thide(relatedTarget) {\r\n\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\trelatedTarget.remove();\r\n\t\tthis.build(false);\r\n\t\tManipulator.set(this._element, 'type', 'password');\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\tstatic init(el, params) {\r\n\t\tlet instance = VGHideShowPass.getOrCreateInstance(el, params);\r\n\t\tinstance.build(false);\r\n\t}\r\n\r\n\tbuild(isShow = false) {\r\n\t\tif (!isShow) {\r\n\t\t\tthis._params.template = 'pass-close';\r\n\t\t} else {\r\n\t\t\tthis._params.template = 'pass-open';\r\n\t\t}\r\n\r\n\t\tnew Templater(this._element, this._params).render();\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.prev(this);\r\n\tif (!target) return;\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\r\n\tconst instance = VGHideShowPass.getOrCreateInstance(target)\r\n\tinstance.toggle(this);\r\n});\r\n\r\nexport default VGHideShowPass","import BaseModule from \"../../base-module\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport VGModal from \"../../vgmodal/js/vgmodal\";\r\nimport {\r\n\texecute,\r\n\tisObject,\r\n\tisVisible,\r\n\tmakeRandomString,\r\n\tmergeDeepObject,\r\n\tnoop,\r\n\tnormalizeData\r\n} from \"../../../utils/js/functions\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport VGCollapse from \"../../vgcollapse/js/vgcollapse\";\r\nimport {getSVG} from \"../../module-fn\";\r\nimport VGHideShowPass from \"./hideshowpass\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'form-sender';\r\nconst NAME_KEY = 'vg.fs';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_SUCCESS = 'vg.fs.success';\r\nconst EVENT_KEY_ERROR = 'vg.fs.error';\r\nconst EVENT_KEY_BEFORE = 'vg.fs.before';\r\n\r\nconst EVENT_SUBMIT_DATA_API = `submit.${NAME_KEY}.data.api`;\r\n\r\nclass VGFormSender extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tresponse: {\r\n\t\t\t\tenabled: false,\r\n\t\t\t\terrors: false,\r\n\t\t\t\ttitle: '',\r\n\t\t\t\tmessage: '',\r\n\t\t\t},\r\n\t\t\tredirect: {\r\n\t\t\t\terror: '',\r\n\t\t\t\tsuccess: ''\r\n\t\t\t},\r\n\t\t\tvalidate: false,\r\n\t\t\tsubmit: false,\r\n\t\t\tfields: [],\r\n\t\t\ttimeout: 50,\r\n\t\t\tpass: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\ttemplate: 'pass-open',\r\n\t\t\t\tclasses: ['vg-form-sender--hide-show-pass'],\r\n\t\t\t\tinsert: 'afterend'\r\n\t\t\t},\r\n\t\t\talert: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\ttype: 'modal',\r\n\t\t\t\terrors: true,\r\n\t\t\t\tdelay: 0\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t},\r\n\t\t\tclasses: {\r\n\t\t\t\tgeneral: 'vg-form-sender',\r\n\t\t\t\talertCollapse: 'vg-form-sender-collapse',\r\n\t\t\t\talertModal: 'vg-form-sender-modal',\r\n\t\t\t\tvalidation: 'needs-validation',\r\n\t\t\t\twasValidate: 'was-validated',\r\n\t\t\t\tcontent: 'vg-form-sender--content'\r\n\t\t\t},\r\n\t\t\tcallback: {\r\n\t\t\t\tafterInit: noop,\r\n\t\t\t\tafterSuccess: noop,\r\n\t\t\t\tafterError: noop,\r\n\t\t\t},\r\n\t\t\tinterceptors: {\r\n\t\t\t\tsuccess: false,\r\n\t\t\t\terror: false\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._params.ajax.route = Manipulator.get(this._element, 'action').toLowerCase();\r\n\t\tthis._params.ajax.method = Manipulator.get(this._element, 'method').toLowerCase();\r\n\t\tthis._button = Selectors.find('[type=\"submit\"]', this._element) || Selectors.find('[form=\"' + this._element.id + '\"]') || null;\r\n\r\n\t\tthis._params.isBtnText = Manipulator.get(this._element, 'data-btn-text') !== 'false';\r\n\t\tthis._params.isJsonParse = Manipulator.get(this._element, 'data-json-parse') !== 'false';\r\n\t\tthis._params.isShowPass = Manipulator.get(this._element, 'data-show-pass') === 'true';\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tthis._element.classList.add(this._params.classes.general);\r\n\r\n\t\t[... Selectors.findAll('input, textarea, select', this._element)].forEach((el) => {\r\n\t\t\tif (isVisible(el)) {\r\n\t\t\t\tel.parentElement.classList.add(this._params.classes.content)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (this._params.validate) {\r\n\t\t\tManipulator.set(this._element, 'novalidate', '');\r\n\t\t\tthis._element.classList.add(this._params.classes.validation);\r\n\t\t}\r\n\r\n\t\tif (this._params.pass.enabled) {\r\n\t\t\t[... Selectors.findAll('input[type=\"password\"]', this._element)].forEach((el) => {\r\n\t\t\t\tVGHideShowPass.init(el, this._params.pass);\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\texecute(this._params.callback.afterInit, [this._element, this]);\r\n\r\n\t\treturn this\r\n\t}\r\n\r\n\trequest(data, event) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._alertBefore();\r\n\r\n\t\t_this._params.ajax.data = data;\r\n\r\n\t\t_this._route(function (status, data) {\r\n\t\t\t_this._element.classList.remove('was-validated');\r\n\r\n\t\t\tif (_this._params.response.enabled) {\r\n\t\t\t\tdata.response = _this._params.response;\r\n\t\t\t}\r\n\r\n\t\t\tif (_this._params.alert.enabled) {\r\n\t\t\t\tif (typeof status === 'string' && status === 'error') {\r\n\t\t\t\t\tif (_this._params.redirect.error) {\r\n\t\t\t\t\t\twindow.location.href = _this._params.redirect.error;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!_this._params.interceptors.error) {\r\n\t\t\t\t\t\t\t_this._alertError(event, data);\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterError, [_this._element, _this, event, data]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterError, [_this._element, _this, event, data]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (typeof status === 'string' && status === 'success') {\r\n\t\t\t\t\tif (_this._params.redirect.success) {\r\n\t\t\t\t\t\twindow.location.href = _this._params.redirect.success;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (!_this._params.interceptors.success) {\r\n\t\t\t\t\t\t\t_this._alertSuccess(event, data);\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterSuccess, [_this._element, _this, event, data]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\texecute(_this._params.callback.afterSuccess, [_this._element, _this, event, data]);\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\t\t});\r\n\t}\r\n\r\n\t_alertBefore() {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t[...document.getElementsByClassName(_this._params.classes.alertCollapse)].forEach(function (element) {\r\n\t\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\t\tVGCollapse.getOrCreateInstance(element, {toggle: false}).hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_this._statusButton('before');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_BEFORE, _this);\r\n\t}\r\n\r\n\t_alertError(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'error');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_ERROR, [event, _this, data]);\r\n\t}\r\n\r\n\t_alertSuccess(event, data) {\r\n\t\tconst _this = this;\r\n\r\n\t\t_this._statusButton('after');\r\n\t\t_this._jsonParse(data, 'success');\r\n\t\tEventHandler.trigger(_this._element, EVENT_KEY_SUCCESS, [event, _this, data]);\r\n\t}\r\n\r\n\t_statusButton(status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (!_this._button) return;\r\n\r\n\t\tlet btnSubmitText = _this._button,\r\n\t\t\tbtnText = {\r\n\t\t\tsend: 'Отправляем...',\r\n\t\t\ttext: 'Отправить'\r\n\t\t};\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-spinner') && status === 'before') {\r\n\t\t\t_this._button.insertAdjacentHTML('afterbegin', '<span class=\"spinner-border spinner-border-sm me-2\"></span>');\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text')) {\r\n\t\t\tbtnText.text = Manipulator.get(_this._button, 'data-text');\r\n\t\t} else {\r\n\t\t\tlet $btnText = _this._button.querySelector('[data-text]');\r\n\t\t\tif ($btnText) {\r\n\t\t\t\tbtnText.text = Manipulator.get($btnText, 'data-text');\r\n\t\t\t\tbtnSubmitText = $btnText;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(_this._button, 'data-text-send')) {\r\n\t\t\tbtnText.send = Manipulator.get(_this._button, 'data-text-send');\r\n\t\t} else {\r\n\t\t\tlet $btnTextSend = _this._button.querySelector('[data-text-send]');\r\n\t\t\tif ($btnTextSend) {\r\n\t\t\t\tbtnText.send = Manipulator.get($btnTextSend, 'data-text-send');\r\n\t\t\t\tbtnSubmitText = $btnTextSend;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (status === 'before') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.send;\r\n\t\t\t}\r\n\t\t\tManipulator.set(_this._button,'disabled', 'disabled');\r\n\t\t}\r\n\r\n\t\tif (status === 'after') {\r\n\t\t\tif (_this._params.isBtnText) {\r\n\t\t\t\tbtnSubmitText.innerHTML = btnText.text;\r\n\t\t\t}\r\n\t\t\tManipulator.remove(_this._button,'disabled');\r\n\r\n\t\t\tlet spinner = _this._button.querySelector('.spinner-border');\r\n\t\t\tif (spinner) spinner.remove();\r\n\t\t}\r\n\t}\r\n\r\n\t_jsonParse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (_this._params.isJsonParse && typeof data === 'string') {\r\n\t\t\tlet parserData = {};\r\n\r\n\t\t\ttry {\r\n\t\t\t\tparserData = JSON.parse(data);\r\n\t\t\t\t_this.alert(parserData, status);\r\n\t\t\t} catch (e) {\r\n\t\t\t\t_this.alert(data, status);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_this.alert(data, status);\r\n\t\t}\r\n\t}\r\n\r\n\talert(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (('code' in data) && data.code && data.code === 200) {\r\n\t\t\t\tif ('response' in data && data.response) {\r\n\t\t\t\t\tlet response = normalizeData(data.response);\r\n\t\t\t\t\tif (typeof response === 'string') {\r\n\t\t\t\t\t\tif (response.indexOf(\"Parse error\") !== -1 || response.indexOf(\"syntax error\") !== -1) {\r\n\t\t\t\t\t\t\tstatus = 'error';\r\n\t\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\t\tresponse: {\r\n\t\t\t\t\t\t\t\t\ttitle: 'Error',\r\n\t\t\t\t\t\t\t\t\tmessage: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\ttext: 'Something went wrong, please repeat later'\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif ('errors' in response && normalizeData(response.errors)) {\r\n\t\t\t\t\t\t\tstatus = normalizeData(response.errors) ? 'error' : 'success';\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\t\t}\r\n\r\n\t\tif (!_this._params.alert.enabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'modal') {\r\n\t\t\t_this._alertModal(data, status)\r\n\t\t}\r\n\r\n\t\tif (_this._params.alert.type === 'collapse') {\r\n\t\t\t_this._alertCollapse(data, status)\r\n\t\t}\r\n\t}\r\n\r\n\t_alertModal(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\t// Есть ли открытые модалки, закрываем\r\n\t\t[...document.getElementsByClassName('modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tlet mBS = bootstrap.Modal.getOrCreateInstance(element);\r\n\t\t\t\tmBS.hide();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t[...document.getElementsByClassName('vg-modal')].forEach(function (element) {\r\n\t\t\tif (element && element.classList.contains('show')) {\r\n\t\t\t\tconst mVG = VGModal.getOrCreateInstance(element);\r\n\t\t\t\tmVG.hide([mVG]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet id = _this._params.classes.general + '-' + makeRandomString(),\r\n\t\t\t$modal = Selectors.find('.' + _this._params.classes.alertModal);\r\n\r\n\t\tif ($modal) $modal.remove();\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tVGModal.init(id, {\r\n\t\t\t\tclasses: {\r\n\t\t\t\t\talert: _this._params.classes.alertModal\r\n\t\t\t\t}\r\n\t\t\t}, function (self) {\r\n\t\t\t\tlet element = self._element;\r\n\t\t\t\telement.classList.add(_this._params.classes.alertModal);\r\n\r\n\t\t\t\tlet $body = Selectors.find('.vg-modal-body', element);\r\n\t\t\t\tif ($body) $body.append(_this.setDataRelationStatus(element, status, data, 'modal'));\r\n\r\n\t\t\t\tself.toggle();\r\n\r\n\t\t\t\tif (_this._params.alert.delay > 0) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tself.hide();\r\n\t\t\t\t\t}, _this._params.alert.delay)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}, _this._params.timeout);\r\n\t}\r\n\r\n\t_alertCollapse(data, status) {\r\n\t\tconst _this = this;\r\n\r\n\t\tlet $collapse = Selectors.find('.' + _this._params.classes.alertCollapse);\r\n\t\tif (!$collapse) {\r\n\t\t\t$collapse = document.createElement('div');\r\n\t\t\t$collapse.classList.add(_this._params.classes.alertCollapse);\r\n\t\t\t$collapse.classList.add('vg-collapse');\r\n\t\t\t$collapse.id = _this._params.classes.general + '-' + makeRandomString();\r\n\t\t\t$collapse.append(_this.setDataRelationStatus($collapse, status, data, 'collapse'));\r\n\r\n\t\t\t_this._element.prepend($collapse);\r\n\t\t}\r\n\r\n\t\tlet collapse = VGCollapse.getOrCreateInstance($collapse, {toggle: false});\r\n\t\tcollapse.toggle();\r\n\r\n\t\tif (_this._params.alert.delay > 0) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tcollapse.hide();\r\n\t\t\t}, _this._params.alert.delay)\r\n\t\t}\r\n\t}\r\n\r\n\tsetDataRelationStatus($element, status, data, type) {\r\n\t\tlet $alert = Selectors.find('.vg-alert-' + status, $element);\r\n\r\n\t\tif (isObject(data)) {\r\n\t\t\tif (status === 'error') {\r\n\t\t\t\tif ('code' in data && data.code !== 200) {\r\n\t\t\t\t\tif ('text' in data && !data.text) {\r\n\t\t\t\t\t\tdata.text = 'Something went wrong, please repeat later';\r\n\r\n\t\t\t\t\t\tswitch (data.code) {\r\n\t\t\t\t\t\t\tcase 400:\r\n\t\t\t\t\t\t\t\tdata.text = 'Bad Request'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 401:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unauthorized'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 413:\r\n\t\t\t\t\t\t\t\tdata.text = 'Forbidden'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 404:\r\n\t\t\t\t\t\t\t\tdata.text = 'Not Found'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 422:\r\n\t\t\t\t\t\t\t\tdata.text = 'Unprocessable Entity'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\t\t\tdata.text = 'Internal Server Error'\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 504:\r\n\t\t\t\t\t\t\t\tdata.text = 'Gateway Timeout'\r\n\t\t\t\t\t\t\t\tbreak;\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 ('response' in data) {\r\n\t\t\t\tlet response = normalizeData(data.response), title = '', txt = '', code = '';\r\n\t\t\t\tif (typeof response !== 'string') {\r\n\t\t\t\t\tif (!('view' in response)) {\r\n\t\t\t\t\t\tif ('title' in response) title = response.title;\r\n\t\t\t\t\t\tif (status === 'error' && data.code !== 200 && this._params.alert.errors) {\r\n\t\t\t\t\t\t\tcode = ' ' + data.text + ' (' + data.code + ')';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!title) txt += '<h4 class=\"vg-alert-content--title\">' + code + '</h4>';\r\n\t\t\t\t\t\telse txt += '<h4 class=\"vg-alert-content--title\">' + title + '</h4>';\r\n\r\n\t\t\t\t\t\tif ('message' in response) {\r\n\t\t\t\t\t\t\ttxt += '<div class=\"vg-alert-content--message\">' + response.message + '</div>'\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ('errors' in response && this._params.alert.errors) {\r\n\t\t\t\t\t\t\tlet errors = normalizeData(response.errors) || null;\r\n\t\t\t\t\t\t\tif (isObject(errors)) {\r\n\t\t\t\t\t\t\t\tfor (const error in errors) {\r\n\t\t\t\t\t\t\t\t\tif (Array.isArray(errors[error])) {\r\n\t\t\t\t\t\t\t\t\t\terrors[error].forEach(function (t) {\r\n\t\t\t\t\t\t\t\t\t\t\ttxt += '<div>'+ t +'</div>';\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\ttxt = '<div>'+ errors[error] +'</div>';\r\n\t\t\t\t\t\t\t\t\t}\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}\r\n\r\n\t\t\t\t\t\tdata = {\r\n\t\t\t\t\t\t\tview: txt\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\tdata.view = response;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!$alert) {\r\n\t\t\t$alert = document.createElement('div');\r\n\t\t\t$alert.classList.add('vg-alert', 'vg-alert-' + status, 'vg-alert-' + type);\r\n\r\n\t\t\tlet content = document.createElement('div');\r\n\t\t\tcontent.classList.add('vg-alert-content');\r\n\r\n\t\t\tlet icon = document.createElement('div');\r\n\t\t\ticon.classList.add('vg-alert-content--icon');\r\n\r\n\t\t\tlet i = document.createElement('i');\r\n\t\t\ti.innerHTML = getSVG(status);\r\n\r\n\t\t\ticon.append(i);\r\n\t\t\tcontent.append(icon);\r\n\r\n\t\t\tlet text = document.createElement('div');\r\n\t\t\ttext.classList.add('vg-alert-content--text');\r\n\t\t\ttext.innerHTML = data.view;\r\n\r\n\t\t\tcontent.append(text);\r\n\t\t\t$alert.append(content);\r\n\t\t} else {\r\n\t\t\tlet text = Selectors.find('.vg-alert-content--text', $alert);\r\n\t\t\ttext.innerHTML = data.view;\r\n\t\t}\r\n\r\n\t\treturn $alert;\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGFormSender.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\t}\r\n}\r\n\r\nEventHandler.on(document, EVENT_SUBMIT_DATA_API, function (event) {\r\n\tif (!Manipulator.has(event.target, 'data-vgformsender')) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst instance = VGFormSender.getOrCreateInstance(event.target, {});\r\n\tif (!instance) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (instance._params.validate) {\r\n\t\tif (!instance._element.checkValidity()) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\tinstance._element.classList.add(instance._params.classes.wasValidate);\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tconst collectData = function(data, fields) {\r\n\t\tfor (let name in fields) {\r\n\t\t\tif (typeof fields[name] === 'object') {\r\n\t\t\t\tfor (let key in fields[name]) {\r\n\t\t\t\t\tlet arr = Object.keys(fields[name][key]).map(function (i) {\r\n\t\t\t\t\t\treturn fields[name][key][i];\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdata.append(name, arr);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdata.append(name, fields[name]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tif (!instance._params.submit) {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tlet data = new FormData(instance._element);\r\n\r\n\t\t// TODO доделать\r\n\t\t/*if (Array.isArray(instance._params.ajax.fields) && instance._params.ajax.fields.length) {\r\n\t\t\tdata = collectData(data, instance._params.ajax.fields);\r\n\t\t}*/\r\n\r\n\t\treturn instance.request(data, event);\r\n\t}\r\n})\r\n\r\nexport default VGFormSender;","import './scss/vgformsender.scss';\r\nimport VGFormSender from \"./js/vgformsender\";\r\n\r\nexport default VGFormSender;","/*! js-cookie v3.0.1 | MIT */\r\n\r\nfunction assign (target) {\r\n\tfor (let i = 1; i < arguments.length; i++) {\r\n\t\tlet source = arguments[i];\r\n\t\tfor (let key in source) {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t}\r\n\t}\r\n\treturn target\r\n}\r\n\r\nlet defaultConverter = {\r\n\tread: function (value) {\r\n\t\tif (value[0] === '\"') {\r\n\t\t\tvalue = value.slice(1, -1);\r\n\t\t}\r\n\t\treturn value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\r\n\t},\r\n\twrite: function (value) {\r\n\t\treturn encodeURIComponent(value).replace(\r\n\t\t\t/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\r\n\t\t\tdecodeURIComponent\r\n\t\t)\r\n\t}\r\n};\r\n\r\nfunction init (converter, defaultAttributes) {\r\n\tfunction set (key, value, attributes) {\r\n\t\tif (typeof document === 'undefined') {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tattributes = assign({}, defaultAttributes, attributes);\r\n\r\n\t\tif (typeof attributes.expires === 'number') {\r\n\t\t\tattributes.expires = new Date(Date.now() + attributes.expires * 864e5);\r\n\t\t}\r\n\t\tif (attributes.expires) {\r\n\t\t\tattributes.expires = attributes.expires.toUTCString();\r\n\t\t}\r\n\r\n\t\tkey = encodeURIComponent(key)\r\n\t\t\t.replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\r\n\t\t\t.replace(/[()]/g, escape);\r\n\r\n\t\tlet stringifiedAttributes = '';\r\n\t\tfor (let attributeName in attributes) {\r\n\t\t\tif (!attributes[attributeName]) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tstringifiedAttributes += '; ' + attributeName;\r\n\r\n\t\t\tif (attributes[attributeName] === true) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\t// Considers RFC 6265 section 5.2:\r\n\t\t\t// ...\r\n\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\r\n\t\t\t// character:\r\n\t\t\t// Consume the characters of the unparsed-attributes up to,\r\n\t\t\t// not including, the first %x3B (\";\") character.\r\n\t\t\t// ...\r\n\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\r\n\t\t}\r\n\r\n\t\treturn (document.cookie =\r\n\t\t\tkey + '=' + converter.write(value, key) + stringifiedAttributes)\r\n\t}\r\n\r\n\tfunction get (key) {\r\n\t\tif (typeof document === 'undefined' || (arguments.length && !key)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// To prevent the for loop in the first place assign an empty array\r\n\t\t// in case there are no cookies at all.\r\n\t\tlet cookies = document.cookie ? document.cookie.split('; ') : [];\r\n\t\tlet jar = {};\r\n\t\tfor (let i = 0; i < cookies.length; i++) {\r\n\t\t\tlet parts = cookies[i].split('=');\r\n\t\t\tlet value = parts.slice(1).join('=');\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet foundKey = decodeURIComponent(parts[0]);\r\n\t\t\t\tjar[foundKey] = converter.read(value, foundKey);\r\n\r\n\t\t\t\tif (key === foundKey) {\r\n\t\t\t\t\tbreak\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\treturn key ? jar[key] : jar\r\n\t}\r\n\r\n\treturn Object.create({\r\n\t\t\tset: set,\r\n\t\t\tget: get,\r\n\t\t\tremove: function (key, attributes) {\r\n\t\t\t\tset(\r\n\t\t\t\t\tkey,\r\n\t\t\t\t\t'',\r\n\t\t\t\t\tassign({}, attributes, {\r\n\t\t\t\t\t\texpires: -1\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t\twithAttributes: function (attributes) {\r\n\t\t\t\treturn init(this.converter, assign({}, this.attributes, attributes))\r\n\t\t\t},\r\n\t\t\twithConverter: function (converter) {\r\n\t\t\t\treturn init(assign({}, this.converter, converter), this.attributes)\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tattributes: { value: Object.freeze(defaultAttributes) },\r\n\t\t\tconverter: { value: Object.freeze(converter) }\r\n\t\t}\r\n\t)\r\n}\r\n\r\nlet api = init(defaultConverter, { path: '/' });\r\n\r\nexport default api;","import BaseModule from \"../../base-module\";\r\nimport {isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Cookies from \"../../../utils/js/dom/cookie\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'lawcookie';\r\nconst NAME_KEY = 'vg.lawcookie';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"lawcookie\"]';\r\nconst SELECTOR_DATA_TOGGLE_CLEAR = '[data-vg-toggle=\"lawcookie-clear\"]';\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGLawCookie extends BaseModule {\r\n\tstatic sParams = {};\r\n\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tstorage: 'local', // cookie or local\r\n\t\t\tdelay: 500,\r\n\t\t\tcookie: {\r\n\t\t\t\tname: 'lawCookie',\r\n\t\t\t\tvalue: 'yes',\r\n\t\t\t\tattributes: {}\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tin: 'animate__fadeInUp',\r\n\t\t\t\tout: 'animate__fadeOutDown',\r\n\t\t\t\tdelay: 800,\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tVGLawCookie.sParams = this._params;\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGLawCookie.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\ttoggle() {\r\n\t\treturn !this._isShown() ? this.show() : this.hide();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this.storage().get();\r\n\t}\r\n\r\n\tshow() {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, {})\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, {});\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._element, true, this._params.delay)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\t\tconst completeCallback = () => EventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t\tthis._queueCallback(completeCallback, this._element, true);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\tstorage() {\r\n\t\tthis._storage = {\r\n\t\t\tisCookie: this._params.storage === 'cookie',\r\n\t\t\tstorage: this._params.storage === 'cookie' ? Cookies : localStorage,\r\n\t\t\tname: this._params.cookie.name,\r\n\t\t\tvalue: this._params.cookie.value,\r\n\t\t\tattributes: this._params.cookie.attributes,\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tget() {\r\n\t\tif (this._storage.isCookie) {\r\n\t\t\treturn this._storage.storage.get(this._storage.name);\r\n\t\t} else {\r\n\t\t\treturn this._storage.storage.getItem(this._storage.name);\r\n\t\t}\r\n\t}\r\n\r\n\tset() {\r\n\t\tif (this._storage.isCookie) {\r\n\t\t\tthis._storage.storage.set(this._storage.name, this._storage.value, this._storage.attributes);\r\n\t\t} else {\r\n\t\t\tthis._storage.storage.setItem(this._storage.name, this._storage.value);\r\n\t\t}\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\tstatic reset() {\r\n\t\tCookies.remove(VGLawCookie.sParams.cookie.name);\r\n\t\tlocalStorage.clear();\r\n\t\tlocation.reload();\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGLawCookie.getOrCreateInstance(element, params);\r\n\t\tinstance.toggle();\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGLawCookie);\r\n\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) return;\r\n\r\n\tconst element = Selectors.find('#vg-lawcookie');\r\n\tif (!element) return;\r\n\r\n\tconst instance = VGLawCookie.getOrCreateInstance(element);\r\n\tinstance.storage().set();\r\n\tinstance.hide();\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CLEAR, function (event) {\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) return;\r\n\r\n\tconst element = Selectors.find('#vg-lawcookie');\r\n\tif (!element) return;\r\n\r\n\tconst instance = VGLawCookie.getOrCreateInstance(element);\r\n\tinstance.dispose();\r\n\r\n\tlocation.reload();\r\n});\r\n\r\nexport default VGLawCookie;","import './scss/vglawcookie.scss';\r\nimport VGLawCookie from \"./js/vglawcookie\";\r\n\r\nexport default VGLawCookie;","import './scss/vgmodal.scss';\r\nimport VGModal from \"./js/vgmodal\";\r\n\r\nexport default VGModal;","/**\r\n * Класс Responsive, работает по таким же медиа точкам, что и bootstrap\r\n * и определяет на тач устройства.\r\n */\r\n\r\nclass Responsive {\r\n\tconstructor() {\r\n\t\tthis.breakpoints = {\r\n\t\t\txs: 0,\r\n\t\t\tsm: 576,\r\n\t\t\tmd: 768,\r\n\t\t\tlg: 992,\r\n\t\t\txl: 1200,\r\n\t\t\txxl: 1400,\r\n\t\t\txxxl: 1600,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Если наша ширина экрана совпадает с диапазоном который указан в модуле выдаем true, иначе false\r\n\t * @param module\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic check(module) {\r\n\t\tlet instance = new this ;\r\n\t\treturn instance.define(module);\r\n\t}\r\n\r\n\t/**\r\n\t * Проверяет на тач устройства. TODO не совсем правильно, надо сделать по-другому\r\n\t * @returns {boolean}\r\n\t */\r\n\tstatic checkMobileOrTablet() {\r\n\t\tlet check = false;\r\n\t\t(function(a) {\r\n\t\t\tif (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.slice(0,4))){\r\n\t\t\t\tcheck = true;\r\n\t\t\t}\r\n\t\t})(navigator.userAgent||navigator.vendor||window.opera);\r\n\r\n\t\treturn check;\r\n\t}\r\n\r\n\tdefine(module) {\r\n\t\tlet windowWidth = window.innerWidth,\r\n\t\t\tresponsive_size = this._checkResponsiveClass(module),\r\n\t\t\tbreakpoints = this.breakpoints,\r\n\t\t\tpoint = Object.keys(breakpoints).find(key => breakpoints[key] === responsive_size);\r\n\r\n\t\tlet keys = Object.keys(breakpoints),\r\n\t\t\tloc = keys.indexOf(point);\r\n\r\n\t\treturn windowWidth >= breakpoints[keys[loc + 1]];\r\n\t}\r\n\r\n\t_checkResponsiveClass(module) {\r\n\t\tlet element = module._element,\r\n\t\t\tparams = module._params,\r\n\t\t\tcurrent_responsive_size = 0;\r\n\r\n\t\tif (element.classList.contains(params.classes.XXXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxxl;\r\n\t\t} else if (element.classList.contains(params.classes.XXL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xxl;\r\n\t\t} else if (element.classList.contains(params.classes.XL)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xl;\r\n\t\t} else if (element.classList.contains(params.classes.LG)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.lg;\r\n\t\t} else if (element.classList.contains(params.classes.MD)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.md;\r\n\t\t} else if (element.classList.contains(params.classes.SM)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.sm;\r\n\t\t} else if (element.classList.contains(params.classes.XS)) {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t} else {\r\n\t\t\tcurrent_responsive_size = this.breakpoints.xs;\r\n\t\t}\r\n\r\n\t\treturn current_responsive_size\r\n\t}\r\n}\r\n\r\nexport default Responsive;","import BaseModule from \"../../base-module\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Responsive from \"../../../utils/js/components/responsive\";\r\nimport {getSVG} from \"../../module-fn\";\r\nimport {execute, isDisabled, isVisible, mergeDeepObject, noop, normalizeData} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'nav';\r\nconst NAME_KEY = 'vg.nav';\r\n\r\n/**\r\n * Constants Classes\r\n */\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst SELECTOR_DATA_TOGGLE = '.vg-nav a';\r\n\r\n/**\r\n * Constants Events\r\n */\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}.data.api`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}.data.api`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEYUP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_RESIZE_DATA_API = `resize.${NAME_KEY}.data.api`;\r\n\r\nclass VGNav extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbreakpoint: false,\r\n\t\t\tplacement: 'horizontal',\r\n\t\t\tclasses: {\r\n\t\t\t\thamburgerActive: 'vg-nav-hamburger-active',\r\n\t\t\t\thamburgerAlways: 'vg-nav-hamburger-always',\r\n\t\t\t\thamburger: 'vg-nav-hamburger',\r\n\t\t\t\tcontainer: 'vg-nav-container',\r\n\t\t\t\twrapper: 'vg-nav-wrapper',\r\n\t\t\t\tactive: 'vg-nav-active',\r\n\t\t\t\texpand: 'vg-nav-expand',\r\n\t\t\t\tcloned: 'vg-nav-cloned',\r\n\t\t\t\thover: 'vg-nav-hover',\r\n\t\t\t\tflip: 'vg-nav-flip',\r\n\t\t\t\tXXXL: 'vg-nav-xxxl',\r\n\t\t\t\tXXL: 'vg-nav-xxl',\r\n\t\t\t\tXL: 'vg-nav-xl',\r\n\t\t\t\tLG: 'vg-nav-lg',\r\n\t\t\t\tMD: 'vg-nav-md',\r\n\t\t\t\tSM: 'vg-nav-sm',\r\n\t\t\t\tXS: 'vg-nav-xs'\r\n\t\t\t},\r\n\t\t\texpand: true,\r\n\t\t\thover: false,\r\n\t\t\tposition: true,\r\n\t\t\tcollapse: true,\r\n\t\t\ttoggle: '<span class=\"default\"></span>',\r\n\t\t\thamburger: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\talways: false,\r\n\t\t\t\ttitle: '',\r\n\t\t\t\tbody: null\r\n\t\t\t},\r\n\t\t\tcallback: noop,\r\n\t\t\tanimation: true,\r\n\t\t\ttimeoutAnimation: 300,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get'\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._navigation = null;\r\n\t\tthis.navigation = '.' + this._params.classes.wrapper;\r\n\r\n\t\tthis.movedLinks = [];\r\n\t\tthis.$links = Selectors.findAll('.' + this._params.classes.wrapper + ' > li', this.navigation)\r\n\r\n\t\tif (this._params.animation === false) {\r\n\t\t\tthis._params.timeoutAnimation = 10\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tget navigation() {\r\n\t\treturn this._navigation;\r\n\t}\r\n\r\n\tset navigation(el) {\r\n\t\tlet elm = Selectors.find(el, this._element);\r\n\t\tif (!elm) return;\r\n\t\tthis._navigation = elm;\r\n\t}\r\n\r\n\tbuild() {\r\n\t\tif (!this.navigation) return;\r\n\r\n\t\tlet params = this._params;\r\n\r\n\t\t// Вешаем основные классы\r\n\t\tthis._element.classList.add(params.classes.container);\r\n\t\tthis._element.classList.add('vg-nav-' + params.placement);\r\n\r\n\t\t// Если нужно оставить список меню или установить медиа точку\r\n\t\tif (!params.breakpoint) {\r\n\t\t\tparams.expand = false;\r\n\t\t}\r\n\r\n\t\tif (!params.hamburger.always) {\r\n\t\t\tif (!params.breakpoint || !params.expand) {\r\n\t\t\t\tthis._element.classList.add(params.classes.expand);\r\n\t\t\t} else if (params.breakpoint !== false) {\r\n\t\t\t\tthis._element.classList.add('vg-nav-' + params.breakpoint);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._element.classList.add(params.classes.hamburgerAlways);\r\n\t\t}\r\n\r\n\t\t// Меню срабатывает при наведении, если это не мобильное устройство\r\n\t\tif (params.hover) {\r\n\t\t\tthis._element.classList.add(params.classes.hover);\r\n\r\n\t\t\tif (Responsive.checkMobileOrTablet()) {\r\n\t\t\t\tthis._element.classList.remove(params.classes.hover);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем гамбургер, если его нет в разметке\r\n\t\tif (params.expand && !params.hamburger.body) {\r\n\t\t\tlet isHamburger = Selectors.find('.' + params.classes.hamburger, this._element);\r\n\r\n\t\t\tif (isHamburger === null) {\r\n\t\t\t\tlet mTitle = '',\r\n\t\t\t\t\thamburger = '<span class=\"' + params.classes.hamburger + '--lines\"><span></span><span></span><span></span></span>';\r\n\r\n\t\t\t\tif (params.hamburger.title) {\r\n\t\t\t\t\tmTitle = '<span class=\"' + params.classes.hamburger + '--title\">'+ params.hamburger.title +'</span>';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (params.hamburger.body !== null) {\r\n\t\t\t\t\thamburger = params.hamburger.body;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._element.insertAdjacentHTML('afterbegin','<a href=\"#sidebar-nav\" class=\"' + params.classes.hamburger + '\" data-vg-toggle=\"sidebar\">' + mTitle + hamburger +'</a>');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Устанавливаем указатель переключателя\r\n\t\tif (params.toggle) {\r\n\t\t\tlet $dropdown_a = [...Selectors.findAll('.dropdown-mega > a, .dropdown > a', this._element)],\r\n\t\t\t\ttoggle = '<span class=\"toggle\">' + params.toggle + '</span>';\r\n\r\n\t\t\tif ($dropdown_a.length) {\r\n\t\t\t\t$dropdown_a.forEach(function (elem) {\r\n\t\t\t\t\tif (!elem.querySelector('.toggle') && !elem.closest('.dots')) {\r\n\t\t\t\t\t\telem.setAttribute('aria-expanded', 'false')\r\n\t\t\t\t\t\telem.insertAdjacentHTML('beforeend', toggle)\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (params.collapse && Responsive.check(this) && params.placement !== 'vertical') {\r\n\t\t\tsetCollapse(this);\r\n\t\t}\r\n\r\n\t\tif ('afterInit' in this._params.callback) {\r\n\t\t\texecute(this._params.callback.afterInit, [this]);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Функция сворачивания\r\n\t\t * TODO Придумать что то с мега меню, которое уходит в подменю\r\n\t\t * TODO Так же есть косяки при ресайзе\r\n\t\t */\r\n\t\tfunction setCollapse(_this) {\r\n\t\t\tlet width_navigation_responsive = _this.navigation.clientWidth,\r\n\t\t\t\twidth_all_links_responsive = 0,\r\n\t\t\t\t$dots = Selectors.find('.dots', _this.navigation),\r\n\t\t\t\t_dots = getSVG('dots');\r\n\r\n\t\t\tif (_this.$links.length) {\r\n\t\t\t\tif ($dots) {\r\n\t\t\t\t\twidth_all_links_responsive = $dots.clientWidth\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet $a = Selectors.find('a', _this.$links[0]),\r\n\t\t\t\t\t\t$linkStyle = getComputedStyle($a),\r\n\t\t\t\t\t\tpaddingLeft = normalizeData($linkStyle.paddingLeft.slice(0, -2)),\r\n\t\t\t\t\t\tpaddingRight = normalizeData($linkStyle.paddingRight.slice(0, -2)),\r\n\t\t\t\t\t\tpadding = paddingLeft + paddingRight;\r\n\r\n\t\t\t\t\t// TODO не совсем верно, но мы точно знаем ширину точек в svg - 16px\r\n\t\t\t\t\twidth_all_links_responsive = padding + 16;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let $link of _this.$links) {\r\n\t\t\t\t\tlet width = $link.getBoundingClientRect().width;\r\n\t\t\t\t\twidth_all_links_responsive = width_all_links_responsive + width;\r\n\r\n\t\t\t\t\tif ((width_navigation_responsive) < width_all_links_responsive) {\r\n\t\t\t\t\t\t_this.movedLinks.push($link);\r\n\t\t\t\t\t\t$link.remove();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (_this.movedLinks.length) {\r\n\t\t\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t\t\t_this.navigation.insertBefore(_this.movedLinks[0], $dots)\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t_this.navigation.appendChild(_this.movedLinks[0])\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t_this.movedLinks.splice(0, 1);\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\tif (_this.movedLinks.length) {\r\n\t\t\t\t\tif (!$dots) {\r\n\t\t\t\t\t\t_this.navigation.insertAdjacentHTML('beforeend','<li class=\"dropdown dots\">' + '<a href=\"#\" aria-expanded=\"false\">'+ _dots +'</a></li>');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($dots) {\r\n\t\t\t\t\t\t$dots.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet $d = _this.navigation.querySelector('.dots');\r\n\t\t\t\tif ($d && _this.movedLinks.length) {\r\n\t\t\t\t\tlet $dropdown = $d.querySelector('ul');\r\n\t\t\t\t\tif ($dropdown) {\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet $dropdown = document.createElement('ul');\r\n\t\t\t\t\t\t$dropdown.classList.add('dropdown-content');\r\n\t\t\t\t\t\t$dropdown.classList.add('right');\r\n\r\n\t\t\t\t\t\tfor (let link of _this.movedLinks) {\r\n\t\t\t\t\t\t\t$dropdown.prepend(link);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$d.appendChild($dropdown);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tlet target = relatedTarget.relatedTarget;\r\n\r\n\t\tif (!target || isDisabled(target)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.closest('.dropdown-content')) {\r\n\t\t\ttarget.classList.add('first');\r\n\t\t}\r\n\r\n\t\tconst showEvent = EventHandler.trigger(target, EVENT_KEY_SHOW, { relatedTarget });\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tlet drop = Selectors.find('.dropdown-content', target),\r\n\t\t\tlink = target.firstElementChild;\r\n\r\n\t\tif (link) link.setAttribute('aria-expanded', 'true');\r\n\t\tdrop.classList.add(CLASS_NAME_SHOW);\r\n\t\ttarget.classList.add(CLASS_NAME_ACTIVE);\r\n\r\n\t\tsetDropPosition(drop)\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tdrop.classList.add(CLASS_NAME_FADE);\r\n\t\t\tEventHandler.trigger(target, EVENT_KEY_SHOWN, relatedTarget)\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, drop, true, 50);\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @param $drop\r\n\t\t */\r\n\t\tfunction setDropPosition($drop) {\r\n\t\t\tlet {width, right} = $drop.getBoundingClientRect(),\r\n\t\t\t\twindow_width = window.innerWidth;\r\n\r\n\t\t\tlet N_right = window_width - right - width;\r\n\r\n\t\t\t$drop.classList.remove('right');\r\n\t\t\t$drop.classList.remove('left');\r\n\r\n\t\t\tlet $parent = $drop.closest('li'),\r\n\t\t\t\t$ul = $parent.querySelectorAll('ul');\r\n\r\n\t\t\tif (N_right > width) {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('left');\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (const $el of $ul) {\r\n\t\t\t\t\t$el.classList.add('right');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\thide(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet element = relatedTarget.relatedTarget;\r\n\r\n\t\tif ('elm' in relatedTarget && relatedTarget.elm) {\r\n\t\t\telement = relatedTarget.elm\r\n\t\t}\r\n\r\n\t\tif (element) {\r\n\t\t\tconst hideEvent = EventHandler.trigger(element, EVENT_KEY_HIDE);\r\n\t\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\t\telement.classList.remove(CLASS_NAME_ACTIVE);\r\n\r\n\t\t\tif (element.classList.contains('first')) {\r\n\t\t\t\telement.classList.remove('first');\r\n\t\t\t}\r\n\r\n\t\t\t[...Selectors.findAll('.' + CLASS_NAME_SHOW, element)].forEach(function (el, index) {\r\n\t\t\t\tel.classList.remove(CLASS_NAME_FADE);\r\n\r\n\t\t\t\tlet parent = el.closest('.dropdown');\r\n\t\t\t\tif (parent.classList.contains(CLASS_NAME_ACTIVE)) {\r\n\t\t\t\t\tparent.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet link = el.previousElementSibling;\r\n\t\t\t\tif (link) link.setAttribute('aria-expanded', 'false');\r\n\r\n\t\t\t\tif (index === 0) {\r\n\t\t\t\t\tconst completeCallback = () => {\r\n\t\t\t\t\t\tel.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\t\t\tEventHandler.trigger(el, EVENT_KEY_HIDDEN, relatedTarget)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_this._queueCallback(completeCallback, el, true, 500);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * TODO если на странице несколько навигаций, то есть косяки\r\n\t * @param element\r\n\t * @param params\r\n\t */\r\n\tstatic init(element, params = {}) {\r\n\t\tconst instance = VGNav.getOrCreateInstance(element, params);\r\n\t\tinstance.build();\r\n\r\n\t\tlet drops = Selectors.findAll('.dropdown', instance._navigation)\r\n\r\n\t\tif (instance._params.hover) {\r\n\t\t\t[...drops].forEach(function (el) {\r\n\t\t\t\tlet currentElem = null;\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOVER_DATA_API, function (event) {\r\n\t\t\t\t\tif (currentElem) return;\r\n\t\t\t\t\tVGNav.hideOpenDrops(event);\r\n\r\n\t\t\t\t\tlet target = event.target.closest('.dropdown');\r\n\t\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\t\tif (!instance.navigation.contains(target)) return;\r\n\t\t\t\t\tcurrentElem = target;\r\n\r\n\t\t\t\t\tlet relatedTarget = {\r\n\t\t\t\t\t\trelatedTarget: target\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinstance.show(relatedTarget);\r\n\t\t\t\t});\r\n\t\t\t\tEventHandler.on(el, EVENT_MOUSEOUT_DATA_API, function (event) {\r\n\t\t\t\t\tif (!currentElem) return;\r\n\r\n\t\t\t\t\tlet relatedTarget = event.relatedTarget.closest('.dropdown'),\r\n\t\t\t\t\t\telm = currentElem;\r\n\r\n\t\t\t\t\twhile (relatedTarget) {\r\n\t\t\t\t\t\tif (relatedTarget === currentElem) return;\r\n\t\t\t\t\t\trelatedTarget = relatedTarget.parentNode;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentElem = null;\r\n\t\t\t\t\tinstance.hide({relatedTarget: relatedTarget, elm: elm});\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tEventHandler.on(document, EVENT_KEYUP_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, VGNav.clearDrops);\r\n\t\t\tEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\t\t\t\tif (!Manipulator.has(this, 'aria-expanded')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ('click' in instance._params.callback) {\r\n\t\t\t\t\texecute(instance._params.callback.click, [this]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tlet self = this.closest('.vg-nav'),\r\n\t\t\t\t\tisFirst = self.querySelector('.first');\r\n\r\n\t\t\t\tlet target = this.closest('.dropdown');\r\n\t\t\t\tif (!target) return;\r\n\r\n\t\t\t\tif (isDisabled(target) && !isVisible(target)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isFirst && this.closest('.first')) {\r\n\t\t\t\t\tif (target.classList.contains('active')) {\r\n\t\t\t\t\t\tinstance.hide({relatedTarget: target});\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t[...Selectors.findAll('.active', self)].forEach(function (el) {\r\n\t\t\t\t\t\tif (el && el !== target) {\r\n\t\t\t\t\t\t\tinstance.hide({relatedTarget: el})\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\tinstance.show({relatedTarget: target});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst vgNavSidebar = document.getElementById('sidebar-nav');\r\n\t\tlet hamburger = instance._element.querySelector('.' + instance._params.classes.hamburger);\r\n\r\n\t\tif (vgNavSidebar && hamburger) {\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.show', function () {\r\n\t\t\t\thamburger.classList.add(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\r\n\t\t\tvgNavSidebar.addEventListener('vg.sidebar.hide', function () {\r\n\t\t\t\thamburger.classList.remove(instance._params.classes.hamburgerActive);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGNav.hideOpenDrops(event)\r\n\t}\r\n\r\n\tstatic hideOpenDrops(event) {\r\n\t\tconst openToggles = Selectors.findAll('.dropdown:not(.disabled):not(:disabled).active');\r\n\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGNav.getInstance(toggle.closest('.vg-nav'));\r\n\t\t\tif (!context) continue;\r\n\r\n\t\t\tif (event.target.closest('.first')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: toggle }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext.hide(relatedTarget)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEventHandler.on(window, EVENT_RESIZE_DATA_API, function () {\r\n\tif (Selectors.find('.vg-nav')) {\r\n\t\tconst instance = VGNav.getOrCreateInstance('.vg-nav', {});\r\n\t\tinstance.build();\r\n\t}\r\n})\r\n\r\nexport default VGNav;","import './scss/vgnav.scss';\r\nimport VGNav from \"./js/vgnav\";\r\n\r\nexport default VGNav;","import BaseModule from \"../../base-module\";\r\nimport {execute, isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'rollup';\r\nconst NAME_KEY = 'vg.rollup';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_HIDE = 'vg-rollup-display--none';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"rollup\"]'\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\n\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGRollup extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tcontent: 'text',\r\n\t\t\toffset: 0,\r\n\t\t\tcnt: 0,\r\n\t\t\tfade: true,\r\n\t\t\ttransition: false,\r\n\t\t\tnumber: false,\r\n\t\t\theight: 0,\r\n\t\t\tellipsis: {\r\n\t\t\t\tline: null\r\n\t\t\t},\r\n\t\t\tmore: ' еще ',\r\n\t\t\tbutton: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tmore: \"Показать\",\r\n\t\t\t\tless: \"Свернуть\"\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis.classes = {\r\n\t\t\tcontainer: 'vg-rollup',\r\n\t\t\thidden: \"vg-rollup-content--hidden\",\r\n\t\t\tfade: \"vg-rollup-content--fade\",\r\n\t\t\tellipsis: \"vg-rollup-content--ellipsis\",\r\n\t\t\tbutton: \"vg-rollup-content--button\",\r\n\t\t\ttransition: \"vg-rollup-content--transition\"\r\n\t\t};\r\n\r\n\t\tthis.total = 0;\r\n\t\tthis.count = 0;\r\n\t\tthis.offset = 0;\r\n\t\tthis.isOffset = false;\r\n\r\n\t\tif (this._params.offset > 0) {\r\n\t\t\tthis.offset = (this._params.offset + this._params.cnt) || 0;\r\n\t\t\tthis.isOffset = true;\r\n\t\t}\r\n\r\n\t\tthis.build();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\tstatic toggle(target, relatedTarget) {\r\n\t\tconst instance = VGRollup.getOrCreateInstance(target);\r\n\t\tlet isShown = instance.isShow();\r\n\r\n\t\tif (!isShown) {\r\n\t\t\tinstance._element.classList.add(CLASS_NAME_SHOW);\r\n\t\t\trelatedTarget.innerHTML = instance._params.button.less;\r\n\r\n\t\t\tif (instance.offset > 0) {\r\n\t\t\t\tif (instance.isOffset) {\r\n\t\t\t\t\trelatedTarget.innerHTML = instance._params.button.more;\r\n\t\t\t\t} else {\r\n\t\t\t\t\trelatedTarget.innerHTML = instance._params.button.less;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tinstance.switch(instance._element, false);\r\n\t\t\tEventHandler.trigger(instance._element, EVENT_KEY_SHOW, { relatedTarget });\r\n\t\t} else {\r\n\t\t\tlet textShowNum = '',\r\n\t\t\t\tisShowNum = instance._params.number;\r\n\r\n\r\n\t\t\tif (isShowNum) {\r\n\t\t\t\tlet sum = (instance.total) - (instance.count);\r\n\r\n\t\t\t\tif (sum > 0) {\r\n\t\t\t\t\ttextShowNum = instance._params.more + sum;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\trelatedTarget.setAttribute(\"aria-expanded\", false);\r\n\t\t\tinstance._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\trelatedTarget.innerHTML = instance._params.button.more + textShowNum;\r\n\t\t\tinstance.switch(instance._element, true);\r\n\r\n\t\t\tEventHandler.trigger(instance._element, EVENT_KEY_HIDE, { relatedTarget });\r\n\t\t}\r\n\t}\r\n\r\n\tbuild(el = null, isButtonAppend = true) {\r\n\t\tlet _this = this,\r\n\t\t\telement = el || _this._element,\r\n\t\t\tself_height = element.clientHeight, set_height = _this._params.height || (self_height / 2);\r\n\r\n\t\telement.classList.add(_this.classes.container)\r\n\r\n\t\tlet isFade = _this._params.fade,\r\n\t\t\tisTransition = _this._params.transition,\r\n\t\t\tisEllipsis = _this._params.ellipsis.line !== null,\r\n\t\t\tisButton = _this._params.button.enable,\r\n\t\t\tisShowNum = _this._params.number;\r\n\r\n\t\tif (!isButtonAppend) _this.switch(element);\r\n\r\n\t\tif (self_height > set_height && _this._params.content === 'text') {\r\n\t\t\telement.classList.add(_this.classes.hidden);\r\n\t\t\telement.style.height = set_height + \"px\";\r\n\r\n\t\t\tellipsis();\r\n\t\t\ttransition();\r\n\t\t\tfade();\r\n\t\t\tbutton();\r\n\t\t} else if (_this._params.content === 'elements') {\r\n\t\t\tlet elementClass = _this._params.elements || 'item',\r\n\t\t\t\titems = element.querySelectorAll('.' + elementClass),\r\n\t\t\t\tcnt = _this._params.cnt || 5,\r\n\t\t\t\ti = 1;\r\n\r\n\t\t\t_this.total = items.length;\r\n\t\t\t_this.count = cnt;\r\n\r\n\t\t\tfor (const item of items) {\r\n\t\t\t\tif (i > cnt) {\r\n\t\t\t\t\titem.classList.add(CLASS_NAME_HIDE)\r\n\t\t\t\t}\r\n\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\r\n\t\t\tif (isButton === true) isButton = (i - 1) > cnt;\r\n\r\n\t\t\tellipsis();\r\n\t\t\ttransition();\r\n\t\t\tfade();\r\n\t\t\tbutton();\r\n\t\t}\r\n\r\n\t\tfunction ellipsis() {\r\n\t\t\tif (isEllipsis) {\r\n\t\t\t\tlet line = _this._params.ellipsis.line;\r\n\t\t\t\tisFade = false;\r\n\r\n\t\t\t\tif (line) {\r\n\t\t\t\t\telement.classList.add(_this.classes.ellipsis);\r\n\t\t\t\t\telement.style.webkitLineClamp = line;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log(\"Переменная [data-line] или параметр[line] не должны быть пустыми\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO no work\r\n\t\tfunction transition() {\r\n\t\t\tif (isTransition) {\r\n\t\t\t\telement.classList.add(_this.classes.transition);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction fade() {\r\n\t\t\tif (isFade) {\r\n\t\t\t\telement.classList.add(_this.classes.fade);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction button() {\r\n\t\t\tif (isButtonAppend) {\r\n\t\t\t\telement.setAttribute(\"id\", element.id);\r\n\r\n\t\t\t\tif (isButton) {\r\n\t\t\t\t\tlet textShowNum = '';\r\n\r\n\t\t\t\t\tif (isShowNum) {\r\n\t\t\t\t\t\tlet sum = (_this.total) - (_this.count);\r\n\r\n\t\t\t\t\t\tif (sum > 0) {\r\n\t\t\t\t\t\t\ttextShowNum = _this._params.more + sum;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet btnTextMore = _this._params.button.more;\r\n\t\t\t\t\telement.insertAdjacentHTML(\"afterend\", \"<div class=\\\"\" + _this.classes.button + \"\\\"><a href=\\\"#\\\" aria-expanded=\\\"false\\\" data-vg-toggle=\\\"rollup\\\" data-vg-target=\\\"#\" + element.id + \"\\\">\" + btnTextMore + textShowNum + \"</a></div>\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tswitch(el, switcher = false) {\r\n\t\tconst _this = this;\r\n\r\n\t\tif (switcher) {\r\n\t\t\tthis.build(el, false);\r\n\t\t} else {\r\n\t\t\tel.classList.remove(this.classes.hidden);\r\n\t\t\tel.classList.remove(this.classes.ellipsis);\r\n\t\t\tel.classList.remove(this.classes.fade);\r\n\r\n\t\t\tel.removeAttribute(\"style\");\r\n\r\n\t\t\tif (_this._params.content === 'elements') {\r\n\t\t\t\tlet className = _this._params.elements;\r\n\r\n\t\t\t\tlet items = [...el.querySelectorAll('.' + className)];\r\n\t\t\t\tif (items.length) {\r\n\t\t\t\t\tif (_this.offset > 0) {\r\n\t\t\t\t\t\tlet className = _this._params.elements,\r\n\t\t\t\t\t\t\titems = [...el.querySelectorAll('.' + className)];\r\n\r\n\t\t\t\t\t\titems.slice(_this.count, _this.offset).forEach(item => item.classList.remove(CLASS_NAME_HIDE));\r\n\t\t\t\t\t\t_this.offset = _this.offset + _this.settings.offset;\r\n\r\n\t\t\t\t\t\tif (_this.offset > items.length) {\r\n\t\t\t\t\t\t\t_this.isOffset = false;\r\n\t\t\t\t\t\t\t_this.offset = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\titems.forEach((item) => item.classList.remove(CLASS_NAME_HIDE))\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisShow() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t * @param callback\r\n\t */\r\n\tstatic init(element, params = {}, callback) {\r\n\t\tconst instance = VGRollup.getOrCreateInstance(element, params);\r\n\t\texecute(callback, [instance]);\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\tif (!target) return;\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tVGRollup.toggle(target, this);\r\n});\r\n\r\n\r\nexport default VGRollup;","import './scss/vgrollup.scss';\r\nimport VGRollup from \"./js/vgrollup\";\r\n\r\nexport default VGRollup;","import BaseModule from \"../../base-module\";\r\nimport {\r\n\tisDisabled,\r\n\tisEmptyObj, isObject,\r\n\tmergeDeepObject,\r\n\tnoop,\r\n\tnormalizeData,\r\n\ttransliterate\r\n} from \"../../../utils/js/functions\";\r\nimport {Manipulator} from \"../../../utils/js/dom/manipulator\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'select';\r\nconst NAME_KEY = 'vg.select';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst CLASS_NAME_CONTAINER = 'vg-select';\r\nconst CLASS_NAME_DROPDOWN = 'vg-select-dropdown';\r\nconst CLASS_NAME_LIST = 'vg-select-list';\r\nconst CLASS_NAME_OPTION = 'vg-select-list--option';\r\nconst CLASS_NAME_OPTGROUP = 'vg-select-list--optgroup';\r\nconst CLASS_NAME_OPTGROUP_TITLE = 'vg-select-list--optgroup-title';\r\nconst CLASS_NAME_CURRENT = 'vg-select-current';\r\nconst CLASS_NAME_PLACEHOLDER = 'vg-select-current--placeholder';\r\nconst CLASS_NAME_SEARCH = 'vg-select-search';\r\n\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_UP_DATA_API = `keyup.${NAME_KEY}.data.api`;\r\nconst EVENT_RESET_DATA_API = `reset.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_CHANGE = `${NAME_KEY}.change`;\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\n\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"select\"]';\r\nconst SELECTOR_OPTION_TOGGLE = '[data-vg-toggle=\"select-option\"]';\r\nconst SELECTOR_SEARCH_TOGGLE = '[name=vg-select-search]';\r\n\r\n\r\nlet observerTimout;\r\n\r\nclass VGSelect extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tsearch: false,\r\n\t\t\tplaceholder: '',\r\n\t\t}, params));\r\n\r\n\t\telement.parentElement.style.position = 'relative';\r\n\r\n\t\tthis._drop = Selectors.find('.' + CLASS_NAME_DROPDOWN, this._element);\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY;\r\n\t}\r\n\r\n\tstatic buildListOptions(selector, drop) {\r\n\t\tlet options = selector.options,\r\n\t\t\tlist = document.createElement('ul');\r\n\r\n\t\tlist.classList.add(CLASS_NAME_LIST);\r\n\r\n\t\tlet optGroup = selector.querySelectorAll('optgroup');\r\n\r\n\t\tif (optGroup.length) {\r\n\t\t\tlet isSelected = false;\r\n\t\t\t[...optGroup].forEach(function (el) {\r\n\t\t\t\tlet olOptGroup = document.createElement('ol');\r\n\t\t\t\tolOptGroup.classList.add(CLASS_NAME_OPTGROUP);\r\n\r\n\t\t\t\tlet liLabel = document.createElement('li');\r\n\t\t\t\tliLabel.innerHTML = el.label.trim();\r\n\t\t\t\tliLabel.classList.add(CLASS_NAME_OPTGROUP_TITLE)\r\n\r\n\t\t\t\tolOptGroup.prepend(liLabel)\r\n\r\n\t\t\t\tlet optGroupOptions = Selectors.findAll('option', el);\r\n\r\n\t\t\t\tcreateLi(optGroupOptions, olOptGroup, isSelected);\r\n\r\n\t\t\t\tlist.append(olOptGroup);\r\n\t\t\t\tisSelected = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tlet isSelected = false;\r\n\t\t\tcreateLi(options, list, isSelected);\r\n\t\t}\r\n\r\n\t\tdrop.append(list);\r\n\r\n\t\treturn list;\r\n\r\n\t\tfunction createLi(options, list, isSelected) {\r\n\t\t\tlet i = 0;\r\n\t\t\tfor (const option of options) {\r\n\t\t\t\tlet li = document.createElement('li');\r\n\r\n\t\t\t\tli.innerHTML = option.innerHTML.trim().replace(/<\\/[^>]+(>|$)/g, \"\")\r\n\t\t\t\tli.dataset.value = Manipulator.get(option, 'value');\r\n\t\t\t\tli.classList.add(CLASS_NAME_OPTION);\r\n\r\n\t\t\t\tManipulator.set(li, 'data-vg-toggle', 'select-option');\r\n\r\n\t\t\t\tlet liData = Manipulator.get(option);\r\n\t\t\t\tif (!isEmptyObj(liData)) {\r\n\t\t\t\t\tfor (const key of Object.keys(liData)) {\r\n\t\t\t\t\t\tManipulator.set(li, 'data-' + key, liData[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (i === selector.selectedIndex && !isSelected) {\r\n\t\t\t\t\tli.classList.add('selected');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (Manipulator.has(option, 'disabled')) li.classList.add('disabled');\r\n\t\t\t\tif (Manipulator.has(option, 'hidden')) li.classList.add('hidden');\r\n\r\n\t\t\t\tlist.append(li);\r\n\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic build(selector, reBuild) {\r\n\t\tlet option_selected,\r\n\t\t\tplaceholder = selector.dataset.placeholder || '',\r\n\t\t\tisSearch = selector.dataset.search || false;\r\n\r\n\t\tif (selector.dataset?.inited === 'true' && !reBuild) {\r\n\t\t\treturn;\r\n\t\t} else if (reBuild) {\r\n\t\t\tVGSelect.destroy(selector);\r\n\t\t}\r\n\r\n\t\tif (placeholder && selector.selectedIndex === 0) {\r\n\t\t\toption_selected = '<span class=\"'+ CLASS_NAME_PLACEHOLDER +'\">' + placeholder + '<span>';\r\n\t\t} else {\r\n\t\t\toption_selected = selector.options[selector.selectedIndex].innerText;\r\n\t\t}\r\n\r\n\t\t// Создаем основной элемент с классами селекта\r\n\t\tlet classes = Manipulator.get(selector,'class'),\r\n\t\t\telement = document.createElement('div');\r\n\r\n\t\tclasses = classes.split(' ');\r\n\r\n\t\tfor (const _class of classes) {\r\n\t\t\telement.classList.add(_class)\r\n\t\t}\r\n\r\n\t\tif (Manipulator.has(selector, 'disabled')) element.classList.add('disabled');\r\n\r\n\t\tlet elData = Manipulator.get(selector);\r\n\t\tif (!isEmptyObj(elData)) {\r\n\t\t\tfor (const key of Object.keys(elData)) {\r\n\t\t\t\tManipulator.set(element,'data-' + key, elData[key]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Создаем элемент с отображением выбранного варианта\r\n\t\tlet current = document.createElement('div');\r\n\t\tcurrent.classList.add(CLASS_NAME_CURRENT);\r\n\t\tManipulator.set(current, 'data-vg-toggle', 'select');\r\n\t\tManipulator.set(current, 'aria-expanded', 'false');\r\n\t\tcurrent.innerHTML = option_selected.trim();\r\n\t\telement.append(current);\r\n\r\n\t\t// Создаем элемент выпадающего списка\r\n\t\tlet dropdown = document.createElement('div');\r\n\t\tdropdown.classList.add(CLASS_NAME_DROPDOWN);\r\n\t\telement.append(dropdown);\r\n\r\n\t\t// Создаем список и варианты селекта\r\n\t\tVGSelect.buildListOptions(selector, dropdown);\r\n\r\n\t\t// Добавляем все созданный контейнер после селекта\r\n\t\tselector.insertAdjacentElement('afterend', element);\r\n\r\n\t\t// помечаем элемент инициализированным\r\n\t\tselector.dataset.inited = 'true';\r\n\r\n\t\tif (isSearch) {\r\n\t\t\tlet search_container = document.createElement('div');\r\n\t\t\tsearch_container.classList.add(CLASS_NAME_SEARCH);\r\n\r\n\t\t\tlet input = document.createElement('input');\r\n\t\t\tManipulator.set(input, 'name', 'vg-select-search');\r\n\t\t\tManipulator.set(input, 'type', 'text');\r\n\t\t\tManipulator.set(input, 'placeholder', 'Поиск...');\r\n\r\n\t\t\tsearch_container.append(input);\r\n\t\t\tdropdown.prepend(search_container);\r\n\t\t}\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.on(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\r\n\t\tif (this._params.search) {\r\n\t\t\tlet input = Selectors.find('input', this._element);\r\n\t\t\tif (input) input.focus();\r\n\t\t}\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._element.classList.add(CLASS_NAME_ACTIVE);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(completeCallBack, this._drop, true, 50)\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element) || !this._isShown()) return;\r\n\r\n\t\tthis._completeHide();\r\n\t}\r\n\r\n\t_completeHide() {\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE, {})\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tthis._element.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\tlet toggle = Selectors.find(SELECTOR_DATA_TOGGLE, this._element);\r\n\t\tManipulator.set(toggle, 'aria-expanded', 'false');\r\n\r\n\t\tif ('ontouchstart' in document.documentElement) {\r\n\t\t\tfor (const element of [].concat(...document.body.children)) {\r\n\t\t\t\tEventHandler.off(element, 'mouseover', noop);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst completeCallback = () => {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN, {});\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallback, this._drop, true, 10);\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tconst select = this._element.previousSibling;\r\n\r\n\t\tlet observer = new MutationObserver(() => {\r\n\t\t\tclearTimeout(observerTimout);\r\n\t\t\tobserverTimout = setTimeout(() => {\r\n\t\t\t\tVGSelect.build(select, true);\r\n\t\t\t}, 100);\r\n\t\t});\r\n\r\n\t\tobserver.observe(select, {\r\n\t\t\tattributeFilter: ['disabled', 'required', 'style', 'hidden'],\r\n\t\t\tchildList: true,\r\n\t\t\tsubtree: true,\r\n\t\t\tcharacterDataOldValue: true,\r\n\t\t});\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\tstatic destroy(select) {\r\n\t\tlet element = select.nextElementSibling;\r\n\r\n\t\tif (element) {\r\n\t\t\tif (element.classList.contains(CLASS_NAME_CONTAINER)) {\r\n\t\t\t\telement.remove();\r\n\r\n\t\t\t\tselect.selectedIndex = 0;\r\n\t\t\t\t[...select.querySelectorAll('option')].forEach(function (el, index) {\r\n\t\t\t\t\tif (el.hasAttribute('selected')) {\r\n\t\t\t\t\t\tselect.selectedIndex = index;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic hideOpenToggles(event) {\r\n\t\tconst openToggles = Selectors.findAll('.vg-select:not(.disabled):not(:disabled).show');\r\n\r\n\t\tfor (const toggle of openToggles) {\r\n\t\t\tconst context = VGSelect.getInstance(toggle);\r\n\t\t\tif (!context) continue;\r\n\r\n\t\t\tif (event.target.closest('.' + CLASS_NAME_CONTAINER) === context._element) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst composedPath = event.composedPath();\r\n\t\t\tif (composedPath.includes(context._element)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst relatedTarget = { relatedTarget: context._element }\r\n\r\n\t\t\tif (event.type === 'click') {\r\n\t\t\t\trelatedTarget.clickEvent = event\r\n\t\t\t}\r\n\r\n\t\t\tcontext._completeHide(relatedTarget)\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearDrops(event) {\r\n\t\tif (event.button === 2 || (event.type === 'keyup' && event.key !== 'Tab')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tVGSelect.hideOpenToggles(event)\r\n\t}\r\n\r\n\tstatic changeSelector(select, value, data = {}) {\r\n\t\tif (!isObject(data) && isEmptyObj(data)) return;\r\n\r\n\t\tselect.value = normalizeData(value);\r\n\t\tEventHandler.trigger(select, EVENT_KEY_CHANGE, {data: data});\r\n\t\tEventHandler.trigger(select, 'change', {data: data});\r\n\t}\r\n\r\n\t/**\r\n\t * Инициализация\r\n\t * @param element\r\n\t * @param params\r\n\t * @param isRebuild\r\n\t */\r\n\tstatic init(element, params = {}, isRebuild = false) {\r\n\t\tlet elm = VGSelect.build(element);\r\n\t\tVGSelect.getOrCreateInstance(elm, params);\r\n\t}\r\n}\r\n\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, VGSelect.clearDrops);\r\n\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function () {\r\n\tconst target = this.closest('.' + CLASS_NAME_CONTAINER);\r\n\r\n\tManipulator.set(this, 'aria-expanded', true);\r\n\r\n\tconst alreadyOpen = Selectors.find('.vg-select.show')\r\n\tif (alreadyOpen && alreadyOpen !== target) {\r\n\t\tVGSelect.getInstance(alreadyOpen).hide();\r\n\t}\r\n\r\n\tconst instance = VGSelect.getOrCreateInstance(target);\r\n\tinstance.toggle(this);\r\n});\r\n\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_OPTION_TOGGLE, function (e) {\r\n\tlet el = e.target;\r\n\r\n\tif (!el.classList.contains('disabled')) {\r\n\t\tlet container = el.closest('.' + CLASS_NAME_CONTAINER),\r\n\t\t\toptions = container.querySelectorAll('.' + CLASS_NAME_OPTION);\r\n\r\n\t\tif (options.length) {\r\n\t\t\tfor (const option of options) {\r\n\t\t\t\toption.classList.remove('selected');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tel.classList.add('selected');\r\n\r\n\t\tcontainer.querySelector('.' + CLASS_NAME_CURRENT).innerText = el.innerText;\r\n\t\tcontainer.classList.remove('show');\r\n\r\n\t\tlet select = container.previousSibling;\r\n\t\tVGSelect.changeSelector(select, el.dataset.value, {value: el.dataset.value, title: el.innerHTML})\r\n\t}\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_UP_DATA_API, SELECTOR_SEARCH_TOGGLE, function (e) {\r\n\tlet el = this;\r\n\r\n\tlet selectList = el?.closest('.' + CLASS_NAME_DROPDOWN).querySelector('.' + CLASS_NAME_LIST);\r\n\tif (selectList) {\r\n\t\tlet options = [...selectList.querySelectorAll('.' + CLASS_NAME_OPTION)],\r\n\t\t\toptionsGroup = [...selectList.querySelectorAll('.' + CLASS_NAME_OPTGROUP)],\r\n\t\t\tvalue = el?.value;\r\n\r\n\t\toptions = options.concat(optionsGroup);\r\n\r\n\t\tfor (const option of options) {\r\n\t\t\tManipulator.show(option);\r\n\t\t}\r\n\r\n\t\tif (value.length) {\r\n\t\t\tvalue = value.trim();\r\n\t\t\tvalue = value.toLowerCase();\r\n\t\t\tvalue = transliterate(value, true);\r\n\r\n\t\t\tfor (const option of options) {\r\n\t\t\t\tlet text = option.innerText.toLowerCase();\r\n\r\n\t\t\t\tif (text.indexOf(value) === -1) Manipulator.hide(option);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nEventHandler.on(document, EVENT_RESET_DATA_API, 'form', function () {\r\n\tSelectors.findAll('select.' + CLASS_NAME_CONTAINER, this).forEach(el => {\r\n\t\tVGSelect.build(el, true)\r\n\t});\r\n});\r\n\r\n\r\nexport default VGSelect;","import './scss/vgselect.scss';\r\nimport VGSelect from \"./js/vgselect\";\r\n\r\nexport default VGSelect;","import BaseModule from \"../../base-module\";\r\nimport {isDisabled, isVisible, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport Backdrop from \"../../../utils/js/components/backdrop\";\r\nimport Overflow from \"../../../utils/js/components/overflow\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'sidebar';\r\nconst NAME_KEY = 'vg.sidebar';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"sidebar\"]';\r\n\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_NAME_OPEN = 'vg-sidebar-open';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_POPSTATE_DATA_API = `popstate.${NAME_KEY}.data.api`;\r\nconst EVENT_KEY_DOM_LOADED_DATA_API = `DOMContentLoaded.${NAME_KEY}.data.api`;\r\n\r\nclass VGSidebar extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tbackdrop: true,\r\n\t\t\toverflow: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\thash: false,\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: false,\r\n\t\t\t\tin: 'animate__rollIn',\r\n\t\t\t\tout: 'animate__rollOut',\r\n\t\t\t\tdelay: 800,\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._addEventListeners();\r\n\t\tthis._dismissElement();\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGSidebar.NAME_KEY, this._params.animation);\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tif (relatedTarget) _this._params = _this._getParams(relatedTarget, _this._params);\r\n\r\n\t\t_this._route(function (status, data) {\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_LOADED, {stats: status, data: data});\r\n\t\t});\r\n\r\n\t\tconst showEvent = EventHandler.trigger(_this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tif (_this._params.backdrop) {\r\n\t\t\tBackdrop.show();\r\n\t\t}\r\n\r\n\t\tif (_this._params.overflow) {\r\n\t\t\tOverflow.append();\r\n\t\t}\r\n\r\n\t\tif (this._params.hash) {\r\n\t\t\twindow.history.pushState(null, \"vg-sidebar-open\", \"#\" + this._element.id);\r\n\r\n\t\t\tEventHandler.on(window, EVENT_KEY_POPSTATE_DATA_API, () => {\r\n\t\t\t\tthis.hide();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_this._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tEventHandler.on(Selectors.find('.vg-backdrop'), 'mousedown.vg.backdrop', function () {\r\n\t\t\t\t_this.hide();\r\n\t\t\t});\r\n\r\n\t\t\tEventHandler.trigger(_this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t}\r\n\t\t_this._queueCallback(completeCallBack, _this._element, true, 50)\r\n\t}\r\n\r\n\thide() {\r\n\t\tconst _this = this;\r\n\t\tif (isDisabled(_this._element)) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\t_this._element.setAttribute('aria-expanded', false);\r\n\t\t\t_this._element.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\t\tconst completeCallback = () => {\r\n\t\t\t\tif (_this._params.backdrop) {\r\n\t\t\t\t\tBackdrop.hide(function () {\r\n\t\t\t\t\t\tif (_this._params.overflow) {\r\n\t\t\t\t\t\t\tOverflow.destroy();\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\tif (_this._params.overflow) {\r\n\t\t\t\t\tOverflow.destroy();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_this._params.hash) {\r\n\t\t\t\t\thistory.pushState(\"\", document.title, window.location.pathname + window.location.search);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\t\t\t}\r\n\t\t\tthis._queueCallback(completeCallback, this._element, true);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(document, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== 'Escape') return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED)\r\n\t\t});\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGSidebar);\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\tthis.setAttribute('aria-expanded', false);\r\n\t})\r\n\r\n\tconst alreadyOpen = Selectors.find('.vg-sidebar.show')\r\n\tif (alreadyOpen && alreadyOpen !== target) {\r\n\t\tVGSidebar.getInstance(alreadyOpen).hide()\r\n\t}\r\n\r\n\tconst data = VGSidebar.getOrCreateInstance(target)\r\n\tdata.toggle(this);\r\n});\r\n\r\nEventHandler.on(document, EVENT_KEY_DOM_LOADED_DATA_API, function () {\r\n\tlet targetHash = window.location.hash.slice(1);\r\n\tif (targetHash) {\r\n\t\tlet target = Selectors.find('#' + targetHash);\r\n\t\tif (target && target.classList.contains('vg-sidebar')) {\r\n\t\t\tif (isDisabled(target)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst data = VGSidebar.getOrCreateInstance(target)\r\n\t\t\tdata.toggle();\r\n\t\t}\r\n\t}\r\n})\r\n\r\nexport default VGSidebar;\r\n","import './scss/vgsidebar.scss';\r\nimport VGSidebar from \"./js/vgsidebar\";\r\n\r\nexport default VGSidebar;","import BaseModule from \"../../base-module\";\r\nimport {mergeDeepObject, getElement, isDisabled, isVisible} from \"../../../utils/js/functions\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'spy';\r\nconst NAME_KEY = 'vg.spy';\r\nconst EVENT_KEY = `.${NAME_KEY}`\r\nconst DATA_API_KEY = '.data-api'\r\n\r\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\r\nconst EVENT_CLICK = `click${EVENT_KEY}`\r\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\r\n\r\nconst CLASS_NAME_DROPDOWN_ITEM = 'vg-dropdown-item'\r\nconst CLASS_NAME_ACTIVE = 'active'\r\n\r\nconst SELECTOR_DATA_SPY = '[data-vg-toggle=\"spy\"]'\r\nconst SELECTOR_TARGET_LINKS = '[href]'\r\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\r\nconst SELECTOR_NAV_LINKS = '.nav-link'\r\nconst SELECTOR_NAV_ITEMS = '.nav-item'\r\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\r\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\r\nconst SELECTOR_DROPDOWN = '.vg-dropdown'\r\nconst SELECTOR_DROPDOWN_TOGGLE = '[data-vg-toggle=\"dropdown\"]'\r\n\r\n\r\nclass VGSpy extends BaseModule {\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\toffset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\r\n\t\t\trootMargin: '0px 0px -25%',\r\n\t\t\tsmoothScroll: true,\r\n\t\t\ttarget: this._element,\r\n\t\t\tthreshold: [0.1, 0.5, 1]\r\n\t\t}, params));\r\n\r\n\t\tthis._targetLinks = new Map()\r\n\t\tthis._observableSections = new Map()\r\n\t\tthis._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\r\n\t\tthis._activeTarget = null\r\n\t\tthis._observer = null\r\n\t\tthis._previousScrollData = {\r\n\t\t\tvisibleEntryTop: 0,\r\n\t\t\tparentScrollTop: 0\r\n\t\t}\r\n\t\tthis._params = this._configAfterMerge(this._params);\r\n\t\tconsole.log(this._params)\r\n\r\n\t\tthis.refresh();\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\trefresh() {\r\n\t\tthis._initializeTargetsAndObservables()\r\n\t\tthis._maybeEnableSmoothScroll()\r\n\r\n\t\tif (this._observer) {\r\n\t\t\tthis._observer.disconnect()\r\n\t\t} else {\r\n\t\t\tthis._observer = this._getNewObserver()\r\n\t\t}\r\n\r\n\t\tfor (const section of this._observableSections.values()) {\r\n\t\t\tthis._observer.observe(section)\r\n\t\t}\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tthis._observer.disconnect()\r\n\t\tsuper.dispose()\r\n\t}\r\n\r\n\t_configAfterMerge(param) {\r\n\t\tparam.target = getElement(param.target) || document.body\r\n\t\tparam.rootMargin = param.offset ? `${param.offset}px 0px -30%` : param.rootMargin\r\n\r\n\t\tif (typeof param.threshold === 'string') {\r\n\t\t\tparam.threshold = param.threshold.split(',').map(value => Number.parseFloat(value))\r\n\t\t}\r\n\r\n\t\treturn param\r\n\t}\r\n\r\n\t_maybeEnableSmoothScroll() {\r\n\t\tif (!this._params.smoothScroll) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tEventHandler.off(this._params.target, EVENT_CLICK)\r\n\r\n\t\tEventHandler.on(this._params.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\r\n\t\t\tconst observableSection = this._observableSections.get(event.target.hash)\r\n\t\t\tif (observableSection) {\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tconst root = this._rootElement || window\r\n\t\t\t\tconst height = observableSection.offsetTop - this._element.offsetTop\r\n\t\t\t\tif (root.scrollTo) {\r\n\t\t\t\t\troot.scrollTo({ top: height, behavior: 'smooth' })\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\troot.scrollTop = height\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t_getNewObserver() {\r\n\t\tconst options = {\r\n\t\t\troot: this._rootElement,\r\n\t\t\tthreshold: this._params.threshold,\r\n\t\t\trootMargin: this._params.rootMargin\r\n\t\t}\r\n\r\n\t\treturn new IntersectionObserver(entries => this._observerCallback(entries), options)\r\n\t}\r\n\r\n\t_observerCallback(entries) {\r\n\t\tconst targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\r\n\r\n\t\tconst activate = entry => {\r\n\t\t\tthis._previousScrollData.visibleEntryTop = entry.target.offsetTop;\r\n\t\t\tthis._process(targetElement(entry));\r\n\t\t}\r\n\r\n\t\tconst parentScrollTop = (this._rootElement || document.documentElement).scrollTop\r\n\t\tconst userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\r\n\t\tthis._previousScrollData.parentScrollTop = parentScrollTop\r\n\r\n\t\tfor (const entry of entries) {\r\n\t\t\tif (!entry.isIntersecting) {\r\n\t\t\t\tthis._activeTarget = null\r\n\t\t\t\tthis._clearActiveClass(targetElement(entry))\r\n\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\r\n\t\t\tif (userScrollsDown && entryIsLowerThanPrevious) {\r\n\t\t\t\tactivate(entry)\r\n\t\t\t\tif (!parentScrollTop) {\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tif (!userScrollsDown && !entryIsLowerThanPrevious) {\r\n\t\t\t\tactivate(entry)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_initializeTargetsAndObservables() {\r\n\t\tthis._targetLinks = new Map();\r\n\t\tthis._observableSections = new Map();\r\n\r\n\t\tconst targetLinks = Selectors.findAll(SELECTOR_TARGET_LINKS, this._params.target);\r\n\r\n\t\tfor (const anchor of targetLinks) {\r\n\t\t\tif (!anchor.hash || isDisabled(anchor)) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\r\n\t\t\tconst observableSection = Selectors.find(decodeURI(anchor.hash));\r\n\r\n\t\t\tif (isVisible(observableSection)) {\r\n\t\t\t\tthis._targetLinks.set(decodeURI(anchor.hash), anchor)\r\n\t\t\t\tthis._observableSections.set(anchor.hash, observableSection)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_process(target) {\r\n\t\tif (this._activeTarget === target) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis._clearActiveClass(this._params.target)\r\n\t\tthis._activeTarget = target\r\n\t\ttarget.classList.add(CLASS_NAME_ACTIVE)\r\n\t\tthis._activateParents(target)\r\n\r\n\t\tEventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\r\n\t}\r\n\r\n\t_activateParents(target) {\r\n\t\tif (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\r\n\t\t\tSelectors.find(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\r\n\t\t\t\t.classList.add(CLASS_NAME_ACTIVE)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tfor (const listGroup of Selectors.parents(target, SELECTOR_NAV_LIST_GROUP)) {\r\n\t\t\tfor (const item of Selectors.prev(listGroup, SELECTOR_LINK_ITEMS)) {\r\n\t\t\t\titem.classList.add(CLASS_NAME_ACTIVE)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_clearActiveClass(parent) {\r\n\t\tparent.classList.remove(CLASS_NAME_ACTIVE)\r\n\r\n\t\tconst activeNodes = Selectors.findAll(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent);\r\n\t\tfor (const node of activeNodes) {\r\n\t\t\tnode.classList.remove(CLASS_NAME_ACTIVE)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\r\n\tfor (const spy of Selectors.findAll(SELECTOR_DATA_SPY)) {\r\n\t\tVGSpy.getOrCreateInstance(spy)\r\n\t}\r\n})\r\n\r\nexport default VGSpy;","import VGSpy from \"./js/vgspy\";\r\n\r\nexport default VGSpy;","import BaseModule from \"../../base-module\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {getNextActiveElement, isDisabled, mergeDeepObject} from \"../../../utils/js/functions\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'tabs';\r\nconst NAME_KEY = 'vg.tabs';\r\n\r\nconst EVENT_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEYDOWN = `keydown.${NAME_KEY}`;\r\nconst EVENT_LOAD_DATA_API = `load.${NAME_KEY}`;\r\nconst EVENT_CLICK_DATA_API = `click.${NAME_KEY}`;\r\nconst EVENT_MOUSEOVER_DATA_API = `mouseover.${NAME_KEY}`;\r\nconst EVENT_MOUSEOUT_DATA_API = `mouseout.${NAME_KEY}`;\r\n\r\nconst ARROW_LEFT_KEY = 'ArrowLeft';\r\nconst ARROW_RIGHT_KEY = 'ArrowRight';\r\nconst ARROW_UP_KEY = 'ArrowUp';\r\nconst ARROW_DOWN_KEY = 'ArrowDown';\r\nconst HOME_KEY = 'Home';\r\nconst END_KEY = 'End';\r\n\r\nconst CLASS_NAME_ACTIVE = 'active';\r\nconst CLASS_NAME_HOVER = 'hover';\r\nconst CLASS_NAME_FADE = 'fade';\r\nconst CLASS_NAME_SHOW = 'show';\r\nconst CLASS_DROPDOWN = 'dropdown';\r\nconst CLASS_SLIDER = 'vg-tabs-slider';\r\nconst CLASS_WITH_SLIDER = 'vg-tabs-with-slider';\r\n\r\nconst SELECTOR_DROPDOWN_TOGGLE = '[data-vg-toggle=\"dropdown\"]';\r\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-content';\r\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\r\n\r\nconst SELECTOR_TAB_CLASS = '.vg-tabs';\r\nconst SELECTOR_TAB_PANEL = '.list-group, .vg-tabs-panel, [role=\"tablist\"]';\r\nconst SELECTOR_OUTER = '.vg-tabs-item, .list-group-item';\r\nconst SELECTOR_INNER = `.vg-tabs-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\r\nconst SELECTOR_DATA_TOGGLE = '[data-vg-toggle=\"tab\"]';\r\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\r\n\r\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-vg-toggle=\"tab\"]`;\r\n\r\nclass VGTabs extends BaseModule {\r\n\r\n\tconstructor(element, params) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = mergeDeepObject({\r\n\t\t\tslide: false,\r\n\t\t\thash: false,\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: true\r\n\t\t\t},\r\n\t\t}, this._params);\r\n\r\n\t\tthis._parent = this._element.closest(SELECTOR_TAB_PANEL);\r\n\t\tthis._main_parent = this._parent.closest(SELECTOR_TAB_CLASS);\r\n\t\tthis._params = this._getParams(this._main_parent, this._params);\r\n\t\tthis._params = this._getParams(this._element, this._params);\r\n\r\n\t\tif (!this._parent) {\r\n\t\t\tthrow new TypeError(`${element.outerHTML} не имеет родителя ${SELECTOR_INNER_ELEM}`)\r\n\t\t}\r\n\r\n\t\tthis._setInitialAttributes(this._parent, this._getChildren());\r\n\t\tthis._setInitialSlider();\r\n\t\tthis._setTabHash();\r\n\r\n\t\tEventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\tshow() {\r\n\t\tconst innerElem = this._element\r\n\t\tif (this._elemIsActive(innerElem)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst active = this._getActiveElem()\r\n\r\n\t\tconst hideEvent = active ?\r\n\t\t\tEventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\r\n\t\t\tnull\r\n\r\n\t\tconst showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\r\n\r\n\t\tif (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis._deactivate(active, innerElem)\r\n\t\tthis._activate(innerElem, active)\r\n\t}\r\n\r\n\t_elemIsActive(elem) {\r\n\t\treturn elem.classList.contains(CLASS_NAME_ACTIVE)\r\n\t}\r\n\r\n\t_getActiveElem() {\r\n\t\treturn this._getChildren().find(child => this._elemIsActive(child)) || null\r\n\t}\r\n\r\n\t_activate(element, relatedElem) {\r\n\t\tif (!element) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\telement.classList.add(CLASS_NAME_ACTIVE);\r\n\r\n\t\tthis._activate(Selectors.getElementFromSelector(element));\r\n\r\n\t\tconst complete = () => {\r\n\t\t\tif (element.getAttribute('role') !== 'tab') {\r\n\t\t\t\telement.classList.add(CLASS_NAME_SHOW)\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tthis._route((status, data) => {\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_LOADED, {stats: status, data: data});\r\n\t\t\t});\r\n\r\n\t\t\telement.removeAttribute('tabindex')\r\n\t\t\telement.setAttribute('aria-selected', true);\r\n\r\n\t\t\tthis._toggleDropDown(element, true)\r\n\t\t\tEventHandler.trigger(element, EVENT_SHOWN, {\r\n\t\t\t\trelatedTarget: relatedElem\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\r\n\t}\r\n\r\n\t_deactivate(element, relatedElem) {\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\telement.classList.remove(CLASS_NAME_ACTIVE);\r\n\t\telement.blur();\r\n\r\n\t\tthis._deactivate(Selectors.getElementFromSelector(element));\r\n\r\n\t\tconst complete = () => {\r\n\t\t\tif (element.getAttribute('role') !== 'tab') {\r\n\t\t\t\telement.classList.remove(CLASS_NAME_SHOW);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\telement.setAttribute('aria-selected', false);\r\n\t\t\telement.setAttribute('tabindex', '-1');\r\n\t\t\tthis._toggleDropDown(element, false);\r\n\t\t\tEventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem });\r\n\t\t}\r\n\r\n\t\tthis._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));\r\n\t}\r\n\r\n\t_keydown(event) {\r\n\t\tif (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tevent.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\r\n\t\tevent.preventDefault()\r\n\r\n\t\tconst children = this._getChildren().filter(element => !isDisabled(element))\r\n\t\tlet nextActiveElement\r\n\r\n\t\tif ([HOME_KEY, END_KEY].includes(event.key)) {\r\n\t\t\tnextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\r\n\t\t} else {\r\n\t\t\tconst isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\r\n\t\t\tnextActiveElement = getNextActiveElement(children, event.target, isNext, true)\r\n\t\t}\r\n\r\n\t\tif (nextActiveElement) {\r\n\t\t\tnextActiveElement.focus({ preventScroll: true })\r\n\t\t\tVGTabs.getOrCreateInstance(nextActiveElement).show()\r\n\t\t}\r\n\t}\r\n\r\n\t_setTabHash() {\r\n\t\tif (!this._params.hash) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet url = document.location.toString();\r\n\r\n\t\tif (url.match('#')) {\r\n\t\t\tlet id = url.split('#')[1];\r\n\r\n\t\t\tlet element = Selectors.find('[href=\"#' + id +'\"]', this._parent) || Selectors.find('[data-vg-target=\"#' + id +'\"]', this._element) || null;\r\n\t\t\tif (element) {\r\n\t\t\t\tVGTabs.getOrCreateInstance(element).show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t_setInitialSlider() {\r\n\t\tif (!this._params.slide) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet slider = Selectors.find('.' + CLASS_SLIDER, this._main_parent);\r\n\t\tif (!slider) {\r\n\t\t\tslider = document.createElement('span');\r\n\t\t\tslider.classList.add(CLASS_SLIDER);\r\n\t\t\tthis._main_parent.prepend(slider);\r\n\t\t}\r\n\r\n\t\tthis._main_parent.classList.add(CLASS_WITH_SLIDER);\r\n\r\n\t\tlet link_active = Selectors.find('.' + CLASS_NAME_ACTIVE, this._parent),\r\n\t\t\t{width, height} = window.getComputedStyle(link_active);\r\n\r\n\t\tlink_active.classList.add(CLASS_NAME_HOVER);\r\n\r\n\t\tslider.style.width = width;\r\n\t\tslider.style.height = height;\r\n\t\tslider.style.left = link_active.offsetLeft + 'px';\r\n\r\n\t\tEventHandler.on(this._main_parent, EVENT_MOUSEOVER_DATA_API, SELECTOR_DATA_TOGGLE, (event) => {\r\n\t\t\tlet link_target = event.target,\r\n\t\t\t\t{width, height} = window.getComputedStyle(link_target);\r\n\r\n\t\t\tif (['A', 'AREA'].includes(event.target.tagName)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tif (isDisabled(link_target)) return;\r\n\r\n\t\t\tlet link_current_hover = Selectors.find('.' + CLASS_NAME_HOVER, this._parent);\r\n\t\t\tif (link_current_hover) link_current_hover.classList.remove(CLASS_NAME_HOVER);\r\n\t\t\tlink_target.classList.add(CLASS_NAME_HOVER);\r\n\r\n\t\t\tslider.style.width = width;\r\n\t\t\tslider.style.height = height;\r\n\t\t\tslider.style.left = link_target.offsetLeft + 'px';\r\n\t\t});\r\n\r\n\t\tEventHandler.on(this._main_parent, EVENT_MOUSEOUT_DATA_API, SELECTOR_DATA_TOGGLE, (event) => {\r\n\t\t\tif (['A', 'AREA'].includes(event.target.tagName)) {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t}\r\n\r\n\t\t\tlet active = Selectors.find('.' + CLASS_NAME_ACTIVE, this._parent),\r\n\t\t\t\t{width, height} = window.getComputedStyle(active);\r\n\r\n\t\t\t[... Selectors.findAll('.' + CLASS_NAME_HOVER, this._parent)].forEach(el => {\r\n\t\t\t\tel.classList.remove(CLASS_NAME_HOVER);\r\n\t\t\t});\r\n\r\n\t\t\tactive.classList.add(CLASS_NAME_HOVER);\r\n\r\n\t\t\tslider.style.width = width;\r\n\t\t\tslider.style.height = height;\r\n\t\t\tslider.style.left = active.offsetLeft + 'px';\r\n\t\t});\r\n\t}\r\n\r\n\t_setInitialAttributes(parent, children) {\r\n\t\tthis._setAttributeIfNotExists(parent, 'role', 'tablist')\r\n\r\n\t\tfor (const child of children) {\r\n\t\t\tthis._setInitialAttributesOnChild(child)\r\n\t\t}\r\n\t}\r\n\r\n\t_setInitialAttributesOnChild(child) {\r\n\t\tchild = this._getInnerElement(child)\r\n\t\tconst isActive = this._elemIsActive(child)\r\n\t\tconst outerElem = this._getOuterElement(child)\r\n\t\tchild.setAttribute('aria-selected', isActive)\r\n\r\n\t\tif (outerElem !== child) {\r\n\t\t\tthis._setAttributeIfNotExists(outerElem, 'role', 'presentation')\r\n\t\t}\r\n\r\n\t\tif (!isActive) {\r\n\t\t\tchild.setAttribute('tabindex', '-1')\r\n\t\t}\r\n\r\n\t\tthis._setAttributeIfNotExists(child, 'role', 'tab')\r\n\t\tthis._setInitialAttributesOnTargetPanel(child)\r\n\t}\r\n\r\n\t_setInitialAttributesOnTargetPanel(child) {\r\n\t\tconst target = Selectors.getElementFromSelector(child)\r\n\r\n\t\tif (!target) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis._setAttributeIfNotExists(target, 'role', 'tabpanel')\r\n\r\n\t\tif (child.id) {\r\n\t\t\tthis._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\r\n\t\t}\r\n\t}\r\n\r\n\t_setAttributeIfNotExists(element, attribute, value) {\r\n\t\tif (!element.hasAttribute(attribute)) {\r\n\t\t\telement.setAttribute(attribute, value)\r\n\t\t}\r\n\t}\r\n\r\n\t_getChildren() {\r\n\t\treturn Selectors.findAll(SELECTOR_INNER_ELEM, this._parent)\r\n\t}\r\n\r\n\t_getInnerElement(elem) {\r\n\t\treturn elem.matches(SELECTOR_INNER_ELEM) ? elem : Selectors.find(SELECTOR_INNER_ELEM, elem)\r\n\t}\r\n\r\n\t_getOuterElement(elem) {\r\n\t\treturn elem.closest(SELECTOR_OUTER) || elem\r\n\t}\r\n\r\n\t_toggleDropDown(element, open) {\r\n\t\tconst outerElem = this._getOuterElement(element)\r\n\t\tif (!outerElem.classList.contains(CLASS_DROPDOWN)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst toggle = (selector, className) => {\r\n\t\t\tconst element = Selectors.find(selector, outerElem)\r\n\t\t\tif (element) {\r\n\t\t\t\telement.classList.toggle(className, open)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttoggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\r\n\t\ttoggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\r\n\t\touterElem.setAttribute('aria-expanded', open)\r\n\t}\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault();\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tVGTabs.getOrCreateInstance(this).show();\r\n})\r\n\r\n/**\r\n * Initialize on focus\r\n */\r\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\r\n\tfor (const element of Selectors.findAll(SELECTOR_DATA_TOGGLE_ACTIVE)) {\r\n\t\tVGTabs.getOrCreateInstance(element);\r\n\t}\r\n});\r\n\r\n\r\nexport default VGTabs;\r\n","import './scss/vgtabs.scss'\r\nimport VGTabs from \"./js/vgtabs\";\r\n\r\nexport default VGTabs;","import BaseModule from \"../../base-module\";\r\nimport EventHandler from \"../../../utils/js/dom/event\";\r\nimport {dismissTrigger} from \"../../module-fn\";\r\nimport {execute, isDisabled, makeRandomString, mergeDeepObject} from \"../../../utils/js/functions\";\r\nimport Selectors from \"../../../utils/js/dom/selectors\";\r\n\r\n/**\r\n * Constants\r\n */\r\nconst NAME = 'toast';\r\nconst NAME_KEY = 'vg.toast';\r\nconst SELECTOR_DATA_TOGGLE= '[data-vg-toggle=\"toast\"]';\r\n\r\nconst CLASS_NAME_OPEN = 'vg-toast-open';\r\nconst CLASS_NAME_SHOW = 'show';\r\n\r\nconst EVENT_KEY_HIDE = `${NAME_KEY}.hide`;\r\nconst EVENT_KEY_HIDDEN = `${NAME_KEY}.hidden`;\r\nconst EVENT_KEY_SHOW = `${NAME_KEY}.show`;\r\nconst EVENT_KEY_SHOWN = `${NAME_KEY}.shown`;\r\nconst EVENT_KEY_LOADED = `${NAME_KEY}.loaded`;\r\n\r\nconst EVENT_KEY_KEYDOWN_DISMISS = `keydown.dismiss.${NAME_KEY}`;\r\nconst EVENT_KEY_HIDE_PREVENTED = `hidePrevented.${NAME_KEY}`;\r\nconst EVENT_KEY_CLICK_DATA_API = `click.${NAME_KEY}.data.api`;\r\n\r\nclass VGToast extends BaseModule {\r\n\tconstructor(element, params = {}) {\r\n\t\tsuper(element, params);\r\n\r\n\t\tthis._params = this._getParams(element, mergeDeepObject({\r\n\t\t\tstatic: true,\r\n\t\t\tplacement: 'bottom center',\r\n\t\t\tautohide: false,\r\n\t\t\tdelay: 3000,\r\n\t\t\tenableClickToast: true,\r\n\t\t\tenableButtonClose: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\ttheme: 'dark',\r\n\t\t\tstack: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tmax: 5\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tenable: true,\r\n\t\t\t\tin: 'animate__fadeIn',\r\n\t\t\t\tout: 'animate__fadeOut',\r\n\t\t\t\tdelay: 400,\r\n\t\t\t},\r\n\t\t\tajax: {\r\n\t\t\t\troute: '',\r\n\t\t\t\ttarget: '',\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tloader: false,\r\n\t\t\t\tonce: false,\r\n\t\t\t}\r\n\t\t}, params));\r\n\r\n\t\tthis._params.animation.delay = !this._params.animation.enable ? 0 : this._params.animation.delay;\r\n\t\tthis._animation(this._element, VGToast.NAME_KEY, this._params.animation);\r\n\t\tthis._dismissElement();\r\n\t\tthis._addEventListeners();\r\n\r\n\t\tthis._timeout = null;\r\n\t}\r\n\r\n\tstatic get NAME() {\r\n\t\treturn NAME;\r\n\t}\r\n\r\n\tstatic get NAME_KEY() {\r\n\t\treturn NAME_KEY\r\n\t}\r\n\r\n\tstatic run(text, params = {}, callback) {\r\n\t\treturn VGToast.build(text, params, callback);\r\n\t}\r\n\r\n\tstatic build(text, params, callback) {\r\n\t\tparams = mergeDeepObject({\r\n\t\t\tplacement: 'bottom center',\r\n\t\t\tstatic: false,\r\n\t\t\ttheme: 'dark',\r\n\t\t\tstack: {\r\n\t\t\t\tenable: false\r\n\t\t\t}\r\n\t\t}, params);\r\n\r\n\t\tlet target = document.createElement('div');\r\n\t\ttarget.classList.add('vg-toast');\r\n\t\ttarget.id = 'vg-toast-' + makeRandomString();\r\n\r\n\t\tif ('theme' in params) {\r\n\t\t\ttarget.classList.add('vg-toast-' + params.theme);\r\n\t\t}\r\n\r\n\t\tif ('placement' in params) {\r\n\t\t\tparams.placement.split(' ').forEach(val => target.classList.add(val));\r\n\t\t}\r\n\r\n\t\tlet wrapper = document.createElement('div');\r\n\t\twrapper.classList.add('vg-toast-wrapper');\r\n\r\n\t\tif ('type' in params) {\r\n\t\t\tlet icon = document.createElement('div');\r\n\t\t\ticon.classList.add('vg-toast-icon');\r\n\r\n\t\t\twrapper.append(icon);\r\n\t\t}\r\n\r\n\t\tlet content = document.createElement('div');\r\n\t\tcontent.classList.add('vg-toast-content');\r\n\r\n\t\tlet body = document.createElement('div');\r\n\t\tbody.classList.add('vg-toast-body');\r\n\r\n\t\tif (typeof text === 'string') {\r\n\t\t\tbody.innerHTML = text;\r\n\t\t\tcontent.append(body);\r\n\t\t} else if (Array.isArray(text)) {\r\n\t\t\tif (text.length > 1) {\r\n\t\t\t\tlet header = document.createElement('div');\r\n\t\t\t\theader.classList.add('vg-toast-header');\r\n\t\t\t\theader.innerHTML = text[0];\r\n\t\t\t\tcontent.append(header);\r\n\r\n\t\t\t\tbody.innerHTML = text[1];\r\n\t\t\t\tcontent.append(body);\r\n\t\t\t} else {\r\n\t\t\t\tbody.innerHTML = text[0];\r\n\t\t\t\tcontent.append(body);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twrapper.append(content);\r\n\r\n\t\tif ('enableButtonClose' in params && params.enableButtonClose) {\r\n\t\t\tlet button = document.createElement('div');\r\n\t\t\tbutton.classList.add('vg-toast-button');\r\n\t\t\tbutton.innerHTML = '<button class=\"vg-btn-close\" data-vg-dismiss=\"toast\"></button>';\r\n\t\t\twrapper.append(button);\r\n\t\t}\r\n\r\n\t\ttarget.append(wrapper);\r\n\t\tdocument.body.append(target);\r\n\r\n\t\tlet instance = VGToast.getOrCreateInstance(target, params);\r\n\t\texecute(callback, [instance]);\r\n\t\tinstance.show();\r\n\t}\r\n\r\n\ttoggle(relatedTarget) {\r\n\t\treturn !this._isShown() ? this.show(relatedTarget) : this.hide();\r\n\t}\r\n\r\n\tshow(relatedTarget) {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tthis._clearTimeout();\r\n\r\n\t\tthis._params = this._getParams(relatedTarget || {}, this._params);\r\n\t\tthis._route(function (status, data) {\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_LOADED, {stats: status, data: data});\r\n\t\t});\r\n\r\n\t\tconst showEvent = EventHandler.trigger(this._element, EVENT_KEY_SHOW, { relatedTarget })\r\n\t\tif (showEvent.defaultPrevented) return;\r\n\r\n\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\tdocument.body.classList.add(CLASS_NAME_OPEN);\r\n\r\n\t\tthis._setPlacement();\r\n\r\n\t\tconst completeCallBack = () => {\r\n\t\t\tthis._element.classList.add(CLASS_NAME_SHOW);\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_SHOWN, { relatedTarget });\r\n\t\t\tthis._scheduleHide();\r\n\t\t}\r\n\t\tthis._queueCallback(completeCallBack, this._element, true, 0);\r\n\t}\r\n\r\n\thide() {\r\n\t\tif (isDisabled(this._element)) return;\r\n\r\n\t\tconst hideEvent = EventHandler.trigger(this._element, EVENT_KEY_HIDE);\r\n\t\tif (hideEvent.defaultPrevented) return;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._element?.classList.remove(CLASS_NAME_SHOW);\r\n\r\n\t\t\tconst completeCallback = () => {\r\n\t\t\t\tdocument.body.classList.remove(CLASS_NAME_OPEN);\r\n\t\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDDEN);\r\n\r\n\t\t\t\tif (this._params.stack.enable) {\r\n\t\t\t\t\tthis._setPlacement();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._params.static) {\r\n\t\t\t\t\tthis.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._queueCallback(completeCallback, this._element, false, this._params.animation.delay);\r\n\t\t}, this._params.animation.delay);\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tthis._clearTimeout();\r\n\t\tif (this._isShown()) {\r\n\t\t\tthis._element.classList.remove(CLASS_NAME_SHOW);\r\n\t\t}\r\n\r\n\t\tif (!this._params.static) {\r\n\t\t\tthis._element.remove();\r\n\t\t}\r\n\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t_scheduleHide() {\r\n\t\tif (!this._params.autohide) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._timeout = setTimeout(() => {\r\n\t\t\tthis.hide();\r\n\t\t}, this._params.delay);\r\n\t}\r\n\r\n\t_isShown() {\r\n\t\treturn this._element.classList.contains(CLASS_NAME_SHOW);\r\n\t}\r\n\r\n\t_setPlacement() {\r\n\t\tlet elms = this._enableStack();\r\n\r\n\t\tif (this._params.stack.enable) {\r\n\t\t\tif (elms.length > this._params.stack.max) {\r\n\t\t\t\tlet elm = elms.shift();\r\n\t\t\t\tVGToast.getInstance(elm.el).hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\telms.forEach(elm => {\r\n\t\t\tlet isPlacementClassTop = elm.el.classList.contains('top'),\r\n\t\t\t\tisPlacementClassBottom = elm.el.classList.contains('bottom'),\r\n\t\t\t\tisPlacementClassLeft = elm.el.classList.contains('left'),\r\n\t\t\t\tisPlacementClassRight = elm.el.classList.contains('right'),\r\n\t\t\t\tisPlacementClassCenter = elm.el.classList.contains('center');\r\n\r\n\t\t\tif (!isPlacementClassTop &&\r\n\t\t\t\t!isPlacementClassBottom &&\r\n\t\t\t\t!isPlacementClassCenter &&\r\n\t\t\t\t!isPlacementClassRight &&\r\n\t\t\t\t!isPlacementClassLeft\r\n\t\t\t) {\r\n\t\t\t\tisPlacementClassBottom = true;\r\n\t\t\t\tisPlacementClassCenter = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (isPlacementClassCenter) {\r\n\t\t\t\tif (isPlacementClassLeft) {\r\n\t\t\t\t\telm.el.style.left = 0;\r\n\t\t\t\t\telm.el.style.bottom = 'calc(50% - ('+ elm.top +'px))';\r\n\t\t\t\t} else if (isPlacementClassRight) {\r\n\t\t\t\t\telm.el.style.right = 0;\r\n\t\t\t\t\telm.el.style.bottom = 'calc(50% - ('+ elm.top +'px))';\r\n\t\t\t\t} else if (isPlacementClassBottom) {\r\n\t\t\t\t\telm.el.style.left = 'calc(50% - ('+ elm.el.clientWidth +'px) / 2)';\r\n\t\t\t\t\telm.el.style.bottom = elm.top + 'px';\r\n\t\t\t\t} else if (isPlacementClassTop) {\r\n\t\t\t\t\telm.el.style.left = 'calc(50% - ('+ elm.el.clientWidth +'px) / 2)';\r\n\t\t\t\t\telm.el.style.top = elm.top + 'px';\r\n\t\t\t\t} else {\r\n\t\t\t\t\telm.el.style.left = 'calc(50% - ('+ elm.el.clientHeight +'px) / 2)';\r\n\t\t\t\t\telm.el.style.bottom = 'calc(50% - '+ elm.top +'px)';\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (isPlacementClassLeft) elm.el.style.left = 0;\r\n\t\t\t\tif (isPlacementClassBottom) elm.el.style.bottom = elm.top + 'px';\r\n\t\t\t\tif (isPlacementClassTop) elm.el.style.top = elm.top + 'px';\r\n\t\t\t\tif (isPlacementClassRight) elm.el.style.right = 0;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_enableStack() {\r\n\t\tlet elmsShown = [... Selectors.findAll('.vg-toast.show')], top = 0;\r\n\r\n\t\tif (!this._params.stack.enable) {\r\n\t\t\telmsShown.forEach(el => {\r\n\t\t\t\tif (el !== this._element) {\r\n\t\t\t\t\tVGToast.getInstance(el).hide()\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\treturn [{\r\n\t\t\t\tel: this._element,\r\n\t\t\t\ttop: 0,\r\n\t\t\t}];\r\n\t\t}\r\n\r\n\t\telmsShown = elmsShown.map(el => {\r\n\t\t\treturn {\r\n\t\t\t\tel: el,\r\n\t\t\t\ttop: el.clientHeight\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn elmsShown.map(function (value, index) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tel: value.el,\r\n\t\t\t\t\ttop: 0\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttop += value.top\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tel: value.el,\r\n\t\t\t\t\ttop: top\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t_clearTimeout() {\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = null;\r\n\t}\r\n\r\n\t_addEventListeners() {\r\n\t\tEventHandler.on(document, EVENT_KEY_KEYDOWN_DISMISS, event => {\r\n\t\t\tif (event.key !== 'Escape') return;\r\n\r\n\t\t\tif (this._params.keyboard) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tEventHandler.trigger(this._element, EVENT_KEY_HIDE_PREVENTED)\r\n\t\t});\r\n\r\n\t\tif (this._params.enableClickToast) {\r\n\t\t\tthis._element.classList.add('vg-toast-pointer');\r\n\r\n\t\t\tEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, '#' + this._element.id, () => {\r\n\t\t\t\tthis.hide();\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n}\r\n\r\ndismissTrigger(VGToast);\r\n\r\n/**\r\n * Data API implementation\r\n */\r\nEventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n\tconst target = Selectors.getElementFromSelector(this);\r\n\r\n\tif (['A', 'AREA'].includes(this.tagName)) {\r\n\t\tevent.preventDefault()\r\n\t}\r\n\r\n\tif (isDisabled(this)) {\r\n\t\treturn\r\n\t}\r\n\r\n\tthis.setAttribute('aria-expanded', true);\r\n\tEventHandler.one(target, EVENT_KEY_HIDDEN, () => {\r\n\t\tthis.setAttribute('aria-expanded', false);\r\n\t});\r\n\r\n\tconst data = VGToast.getOrCreateInstance(target);\r\n\tdata.toggle(this);\r\n});\r\n\r\nexport default VGToast;\r\n","import './scss/vgtoast.scss'\r\nimport VGToast from \"./js/vgtoast\";\r\n\r\nexport default VGToast;"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isEmptyObj","isElement","object","isObject","nodeType","isDisabled","element","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","isVisible","getClientRects","length","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","normalizeData","Number","toString","JSON","parse","decodeURIComponent","mergeDeepObject","objects","reduce","prev","keys","forEach","pVal","oVal","Array","isArray","concat","execute","possibleCallback","args","defaultValue","TRANSITION_END","reflow","offsetHeight","noop","makeRandomString","result","counter","charAt","Math","floor","characters","random","isRTL","document","documentElement","dir","getSelector","selector","hrefAttribute","includes","startsWith","split","trim","map","sel","window","CSS","escape","replace","match","id","parseSelector","join","Selectors","find","Element","querySelector","findAll","container","querySelectorAll","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","parents","ancestor","push","next","nextElementSibling","matches","previous","previousElementSibling","elementMap","Map","set","instance","has","instanceMap","size","console","error","from","remove","delete","Manipulator","nameAttribute","isRemoveDataName","elmBase","attributes","arr","filter","at","test","name","v","slice","getAttributeNames","acc","setAttribute","removeAttribute","hide","el","style","display","show","state","constructor","params","this","_params","merge","fromElement","mParams","indexOf","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","typeEvent","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","handlers","previousFunction","domElements","target","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","meta","configurable","on","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","evt","Event","bubbles","cancelable","dispatchEvent","getSVG","success","waiting","dots","cross","dismissTrigger","module","method","clickEvent","EVENT_KEY","NAME","tagName","preventDefault","getOrCreateInstance","Ajax","x","XMLHttpRequest","xhr","versions","i","ActiveXObject","e","send","url","callback","data","async","undefined","open","setRequestHeader","onreadystatechange","readyState","status","text","statusText","response","responseText","code","query","encodeURIComponent","post","enable","in","out","delay","duration","classes","animated","_element","_name_key","add","_triggers","Error","_isLoaded","Data","NAME_KEY","_getParams","Params","dispose","propertyName","getOwnPropertyNames","_route","_this","$content","setData","innerHTML","ajax","route","loader","once","_dismissElement","button","insertAdjacentHTML","_queueCallback","isAnimated","timeOutMs","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","setTimeout","triggerTransitionEnd","executeAfterTransition","_animation","Animation","getInstance","DATA_KEY","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","body","getWidth","documentWidth","clientWidth","abs","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","append","paddingRight","destroy","CLASS_NAME","CLASS_NAME_FADE","Backdrop","_append","_destroy","backdrop","createElement","Overflow","CLASS_NAME_OPEN","CLASS_NAME_SHOW","CLASS_NAME_STATIC","EVENT_KEY_HIDE","EVENT_KEY_HIDDEN","EVENT_KEY_SHOW","EVENT_KEY_SHOWN","EVENT_KEY_RESIZE","EVENT_KEY_LOADED","EVENT_KEY_KEYDOWN_DISMISS","EVENT_KEY_HIDE_PREVENTED","EVENT_KEY_CLICK_DATA_API","EVENT_KEY_MOUSEDOWN_DISMISS","EVENT_KEY_CLICK_DISMISS","EVENT_KEY_DOM_LOADED_DATA_API","EVENT_KEY_POPSTATE_DATA_API","VGModal","BaseModule","super","focus","keyboard","fields","hash","centered","animation","general","dialog","content","header","title","footer","_button","_dialog","_isShown","_isTransitioning","_scrollBar","ScrollBarHelper","_addEventListeners","init","build","btnClose","modal","toggle","stats","defaultPrevented","history","pushState","_addFieldsInModal","_adjustDialog","_showElement","openedModals","_hideModal","_isAnimatedFade","location","pathname","search","_resetAdjustments","scrollTop","modalBody","transitionComplete","isModalOverflowing","scrollHeight","clientHeight","isBodyOverflowing","property","paddingLeft","_triggerBackdropTransition","event2","initialOverflowY","overflowY","item","elements","elm","showEvent","alreadyOpen","targetHash","VGAlert","toast","mode","run","promise","_build","_buildModal","_buildToast","$modal","self","$body","html","message","alert","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE","VGCollapse","parent","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","activeChildren","_getFirstLevelChildren","activeInstance","height","complete","getBoundingClientRect","triggerArray","isOpen","_changeStateButton","children","selected","arg","drop","_getPlacement","_parent","top","left","isFixed","bounds","styles","TARGET_CONTAINER","EVENT_KEYUP_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_CLICK_DATA_API","EVENT_MOUSEOVER_DATA_API","EVENT_MOUSEOUT_DATA_API","VGDropdown","defaultParams","offset","placement","timeoutAnimation","hover","_drop","_isPlacement","_setPlacement","completeCallBack","_completeHide","completeCallback","Placement","position","transform","paddingTop","currentElem","hideOpenToggles","keydownHandler","clearDrops","openToggles","context","composedPath","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","TEMPLATES","template","insert","render","tmpl","toHTML","tmplElement","setContent","VGHideShowPass","isShow","Templater","EVENT_SUBMIT_DATA_API","VGFormSender","enabled","errors","redirect","validate","submit","timeout","pass","alertCollapse","alertModal","validation","wasValidate","afterInit","afterSuccess","afterError","interceptors","toLowerCase","isBtnText","isJsonParse","isShowPass","parentElement","request","_alertBefore","href","_alertError","_alertSuccess","getElementsByClassName","_statusButton","_jsonParse","btnSubmitText","btnText","$btnText","$btnTextSend","spinner","parserData","_alertModal","_alertCollapse","bootstrap","Modal","mVG","setDataRelationStatus","$collapse","prepend","collapse","$element","$alert","txt","t","view","icon","checkValidity","FormData","assign","arguments","source","converter","defaultAttributes","expires","Date","now","toUTCString","stringifiedAttributes","attributeName","cookie","write","create","cookies","jar","parts","foundKey","read","withAttributes","withConverter","freeze","path","VGLawCookie","static","storage","sParams","_storage","isCookie","Cookies","localStorage","getItem","setItem","clear","reload","breakpoints","xs","sm","md","lg","xl","xxl","xxxl","check","define","checkMobileOrTablet","a","navigator","userAgent","vendor","opera","windowWidth","responsive_size","_checkResponsiveClass","point","loc","current_responsive_size","XXXL","XXL","XL","LG","MD","SM","XS","CLASS_NAME_ACTIVE","EVENT_RESIZE_DATA_API","VGNav","breakpoint","hamburgerActive","hamburgerAlways","hamburger","wrapper","active","expand","cloned","flip","always","_navigation","navigation","movedLinks","$links","Responsive","mTitle","$dropdown_a","width_navigation_responsive","width_all_links_responsive","$dots","_dots","$a","$linkStyle","$link","insertBefore","appendChild","splice","$d","$dropdown","link","setCollapse","firstElementChild","$drop","right","N_right","$ul","$el","setDropPosition","index","drops","hideOpenDrops","click","isFirst","vgNavSidebar","getElementById","CLASS_NAME_HIDE","VGRollup","cnt","fade","transition","number","ellipsis","line","more","less","hidden","total","count","isOffset","textShowNum","sum","switch","isButtonAppend","self_height","set_height","isFade","isTransition","isEllipsis","isButton","isShowNum","elementClass","items","webkitLineClamp","log","btnTextMore","switcher","className","settings","CLASS_NAME_CONTAINER","CLASS_NAME_DROPDOWN","CLASS_NAME_LIST","CLASS_NAME_OPTION","CLASS_NAME_OPTGROUP","CLASS_NAME_CURRENT","EVENT_KEY_UP_DATA_API","EVENT_RESET_DATA_API","EVENT_KEY_CHANGE","observerTimout","VGSelect","placeholder","refresh","buildListOptions","options","list","optGroup","isSelected","olOptGroup","liLabel","label","createLi","option","li","dataset","liData","selectedIndex","reBuild","option_selected","isSearch","inited","innerText","_class","elData","current","dropdown","insertAdjacentElement","search_container","input","select","previousSibling","MutationObserver","clearTimeout","observe","attributeFilter","childList","subtree","characterDataOldValue","changeSelector","isRebuild","selectList","optionsGroup","ru","en","toUpperCase","transliterate","VGSidebar","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","VGSpy","rootMargin","smoothScroll","threshold","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","_configAfterMerge","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","param","jquery","observableSection","root","offsetTop","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","entry","activate","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","node","spy","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_LOADED","EVENT_KEYDOWN","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_HOVER","CLASS_SLIDER","SELECTOR_DROPDOWN_TOGGLE","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","VGTabs","slide","_main_parent","TypeError","outerHTML","_setInitialAttributes","_getChildren","_setInitialSlider","_setTabHash","_keydown","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","child","relatedElem","_toggleDropDown","blur","nextActiveElement","isNext","getNextActiveElement","activeElement","shouldGetNext","listLength","max","min","preventScroll","slider","link_active","offsetLeft","link_target","link_current_hover","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","attribute","VGToast","autohide","enableClickToast","enableButtonClose","theme","stack","_timeout","val","_clearTimeout","_scheduleHide","elms","_enableStack","shift","isPlacementClassTop","isPlacementClassBottom","isPlacementClassLeft","isPlacementClassRight","isPlacementClassCenter","bottom","elmsShown"],"sourceRoot":""}
|