@topvisor/ui 1.0.0-rc-3 → 1.0.1-colors-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/.chunks/{datepicker-CS24dmLk.es.js → datepicker-DUKbIc5P.es.js} +29 -29
- package/.chunks/datepicker-DUKbIc5P.es.js.map +1 -0
- package/.chunks/{datepicker-DsMs2YKL.amd.js → datepicker-Dr2CKlYv.amd.js} +13 -13
- package/.chunks/datepicker-Dr2CKlYv.amd.js.map +1 -0
- package/.chunks/{forms-DKL0e9tp.amd.js → forms-CQJeARc0.amd.js} +3 -3
- package/.chunks/forms-CQJeARc0.amd.js.map +1 -0
- package/.chunks/{forms-DT_fsN6V.es.js → forms-UyeTiEcX.es.js} +5 -5
- package/.chunks/forms-UyeTiEcX.es.js.map +1 -0
- package/.chunks/i18n-C_OH9IT3.amd.js.map +1 -1
- package/.chunks/i18n-DuTvft1T.es.js.map +1 -1
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-B3E-SDdg.es.js → listItem.vue_vue_type_script_setup_true_lang-BJPv6Rkm.es.js} +2 -2
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-B3E-SDdg.es.js.map → listItem.vue_vue_type_script_setup_true_lang-BJPv6Rkm.es.js.map} +1 -1
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-uKhci19t.amd.js → listItem.vue_vue_type_script_setup_true_lang-CHhCooGV.amd.js} +2 -2
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-uKhci19t.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-CHhCooGV.amd.js.map} +1 -1
- package/.chunks/{menu-CcyqVSfg.es.js → menu-BR766pdp.es.js} +2 -2
- package/.chunks/{menu-CcyqVSfg.es.js.map → menu-BR766pdp.es.js.map} +1 -1
- package/.chunks/{menu-DTbsTDGK.amd.js → menu-C7wWX96K.amd.js} +2 -2
- package/.chunks/{menu-DTbsTDGK.amd.js.map → menu-C7wWX96K.amd.js.map} +1 -1
- package/.chunks/{popup-DAruCfQv.amd.js → popup-Bcbpecn1.amd.js} +20 -20
- package/.chunks/popup-Bcbpecn1.amd.js.map +1 -0
- package/.chunks/{popup-C5yk4q8p.es.js → popup-CRwjKDwT.es.js} +24 -24
- package/.chunks/popup-CRwjKDwT.es.js.map +1 -0
- package/assets/core.css +1 -1
- package/assets/forms.css +1 -1
- package/assets/formsExt.css +1 -1
- package/assets/menu.css +1 -1
- package/assets/popup.css +1 -1
- package/assets/tabs.css +1 -1
- package/assets/tabsView.css +1 -1
- package/assets/themes/dark.css +1 -0
- package/assets/themes/light.css +1 -0
- package/components/forms/select/select.d.ts +1 -2
- package/core/app.amd.js +1 -1
- package/core/app.js +1 -1
- package/core/core.amd.js +1 -1
- package/core/core.js +1 -1
- package/core/plugins/i18n.d.ts +2 -2
- package/forms/forms.amd.js +1 -1
- package/forms/forms.js +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.js +4 -4
- package/formsExt/formsExt.js.map +1 -1
- package/package.json +2 -1
- package/popup/popup.amd.js +1 -1
- package/popup/popup.js +2 -2
- package/popup/popup.js.map +1 -1
- package/popup/worker.amd.js +1 -1
- package/popup/worker.js +2 -2
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.js +17 -17
- package/project/project.js.map +1 -1
- package/tabs/tabs.amd.js +1 -1
- package/tabs/tabs.amd.js.map +1 -1
- package/tabs/tabs.js +7 -8
- package/tabs/tabs.js.map +1 -1
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.amd.js.map +1 -1
- package/tabsView/tabsView.js +1 -1
- package/tabsView/tabsView.js.map +1 -1
- package/test/themes/themes/dark-positions.amd.js +2 -0
- package/test/themes/themes/dark-positions.amd.js.map +1 -0
- package/test/themes/themes/dark-positions.d.ts +1 -0
- package/test/themes/themes/dark-positions.js +2 -0
- package/test/themes/themes/dark-positions.js.map +1 -0
- package/test/themes/themes/dark.amd.js +2 -0
- package/test/themes/themes/dark.amd.js.map +1 -0
- package/test/themes/themes/dark.d.ts +1 -0
- package/test/themes/themes/dark.js +4 -0
- package/test/themes/themes/dark.js.map +1 -0
- package/test/themes/themes/light-positions.amd.js +2 -0
- package/test/themes/themes/light-positions.amd.js.map +1 -0
- package/test/themes/themes/light-positions.d.ts +1 -0
- package/test/themes/themes/light-positions.js +2 -0
- package/test/themes/themes/light-positions.js.map +1 -0
- package/test/themes/themes/light.amd.js +2 -0
- package/test/themes/themes/light.amd.js.map +1 -0
- package/test/themes/themes/light.d.ts +1 -0
- package/test/themes/themes/light.js +4 -0
- package/test/themes/themes/light.js.map +1 -0
- package/utils/date.amd.js +1 -1
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.js +1 -1
- package/utils/price.amd.js +1 -1
- package/utils/price.js +1 -1
- package/.chunks/datepicker-CS24dmLk.es.js.map +0 -1
- package/.chunks/datepicker-DsMs2YKL.amd.js.map +0 -1
- package/.chunks/forms-DKL0e9tp.amd.js.map +0 -1
- package/.chunks/forms-DT_fsN6V.es.js.map +0 -1
- package/.chunks/popup-C5yk4q8p.es.js.map +0 -1
- package/.chunks/popup-DAruCfQv.amd.js.map +0 -1
- package/assets/dark.css +0 -1
- package/assets/light.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-DTbsTDGK.amd.js","sources":["../../src/components/formsExt/menu/menu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, onUpdated, ref } from 'vue';\nimport type { Item, Props } from './menu';\nimport Core from '@/core/core/core';\nimport { isSafari } from '@/core/utils/device';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n});\n\nconst model = defineModel({\n\trequired: true,\n});\n\nconst el = ref();\n\n// валидация типа modelValue без возможности выбора нескольких значений (ожидается строка)\nif (!props.isMultiple && !(typeof (model.value) === 'string' || model.value instanceof String)) {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected String: ' + typeof (model.value));\n}\n\n// валидация типа modelValue с возможностью выбора нескольких значений (ожидается массив)\nif (props.isMultiple && !Array.isArray(model.value)) {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected Array: ' + typeof (model.value));\n}\n\n// для множественного выбора без пустого множества\n// если ничего не выбрано, присваиваем 1-ое значение\nif (props.isMultiple && !props.canBeEmptyMultiple && Array.isArray(model.value) && !model.value.length) {\n\tmodel.value = [props.items[0].href ?? props.items[0].value];\n}\n\nconst itemIsActive = (item: Item) => {\n\tif (!Array.isArray(model.value)) {\n\t\treturn item.value === model.value;\n\t}\n\n\treturn model.value.includes(item.value);\n};\n\n/**\n * Выбрать элемент\n * @param item\n * @param toggle - добавить или исключить элемент, для isMultiple\n */\nconst select = (item: Item, toggle = false) => {\n\tif (Array.isArray(model.value)) {\n\t\tlet modelNew = model.value.slice();\n\n\t\tif (toggle) {\n\t\t\tif (!modelNew.length) modelNew = props.items.map(item => item.value);\n\n\t\t\tconst index = modelNew.indexOf(item.value);\n\t\t\tif (index === -1) {\n\t\t\t\tmodelNew.push(item.value);\n\t\t\t} else {\n\t\t\t\tmodelNew.splice(index, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (modelNew.length === 1 && modelNew[0] === item.value) {\n\t\t\t\tmodelNew = [];\n\t\t\t} else {\n\t\t\t\tmodelNew = [item.value];\n\t\t\t}\n\t\t}\n\n\t\tif (!props.canBeEmptyMultiple && !modelNew.length) modelNew = [item.value];\n\n\t\tmodel.value = modelNew;\n\n\t\treturn;\n\t}\n\n\tmodel.value = item.value;\n};\n\n// вертикальный скролл в горизонтальный скролл\nconst onWheel = (event: WheelEvent) => {\n\tif (el.value.scrollWidth <= el.value.offsetWidth) return;\n\tif (event.shiftKey) return;\n\tif (Math.abs(event.deltaY) < 50) return; // устройство с высокой точностью, например тачпад\n\n\tevent.preventDefault();\n\n\tconst delta = event.deltaY > 0 ? 30 : -30;\n\tel.value.scrollLeft = el.value.scrollLeft + delta;\n};\n\n/**\n * Замена стандартному scrollIntoView, который меняет скролл документа\n *\n * Выравнивание по ближнему краю элемента\n *\n * Выравнивается таким образом, чтобы был виден соседний элемент\n */\nconst scrollIntoView = (isSmooth = true) => {\n\tconst elBtn = el.value.querySelector('.top-active');\n\tif (!elBtn) return;\n\n\tconst gap = 24;\n\n\t// левая и правая координаты элемента\n\tconst leftMargin = elBtn.offsetLeft - el.value.offsetLeft - gap;\n\tconst rightMargin = elBtn.offsetLeft - el.value.offsetLeft + elBtn.clientWidth + gap;\n\n\t// левая и правая границы видимой части меню\n\tconst leftMarginParent = el.value.scrollLeft;\n\tconst rightMarginParent = el.value.clientWidth + el.value.scrollLeft;\n\n\tlet scrollLeft: number | undefined = undefined;\n\n\t// левую границу элемента к левой границе меню\n\tif (leftMargin < leftMarginParent) scrollLeft = leftMargin;\n\n\t// правую границу элемента к правой границе меню\n\tif (rightMargin > rightMarginParent) scrollLeft = rightMargin - el.value.clientWidth;\n\n\tif (scrollLeft !== undefined) {\n\t\tif (isSafari()) {\n\t\t\tCore.$?.(el.value).animate({ scrollLeft: scrollLeft }, isSmooth ? 200 : 0);\n\t\t} else {\n\t\t\tel.value.scrollTo({ left: scrollLeft, behavior: isSmooth ? 'smooth' : 'auto' });\n\t\t}\n\t}\n};\n\n/**\n * Выбрать все элементы в меню\n */\nconst selectAll = () => {\n\tif (!Array.isArray(model.value)) return;\n\n\tif (model.value.length === props.items.length) {\n\t\tmodel.value = [props.items[0].href ?? props.items[0].value];\n\t\treturn;\n\t}\n\n\tmodel.value = props.items.map(item => item.href ?? item.value);\n};\n\nonMounted(() => scrollIntoView(false));\nonUpdated(() => scrollIntoView(true));\n\n</script>\n\n<template>\n\t<div\n\t\tref=\"el\"\n\t\t:class=\"{\n\t\t\t'top-menu': true,\n\t\t\t['top-style_' + styling]: true,\n\t\t\t// ['top-unwrap-x']: styling === 'default',\n\t\t}\"\n\t\t@wheel=\"onWheel\"\n\t>\n\t\t<TopButton\n\t\t\tv-for=\"item in items\"\n\t\t\t:=\"item\"\n\t\t\tclass=\"top-menu_item\"\n\t\t\tcolor=\"theme\"\n\t\t\t@click=\"select(item, $event.ctrlKey)\"\n\t\t\t:isActive=\"itemIsActive(item)\"\n\t\t>\n\t\t\t<template #default v-if=\"item.content\">\n\t\t\t\t{{ item.content }}\n\t\t\t</template>\n\t\t</TopButton>\n\n\t\t<div\n\t\t\tv-if=\"Array.isArray(model) && selectAllItem\"\n\t\t\tclass=\"top-menu_selectAll\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\t:=\"selectAllItem\"\n\t\t\t\tclass=\"top-menu_item\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\tstyling=\"\"\n\t\t\t\t@click=\"selectAll()\"\n\t\t\t\t:isActive=\"model.length === items.length\"\n\t\t\t>\n\t\t\t\t<template #default v-if=\"selectAllItem.content\">\n\t\t\t\t\t{{ selectAllItem.content }}\n\t\t\t\t</template>\n\t\t\t</TopButton>\n\t\t</div>\n\t</div>\n</template>\n\n<style module>\n.top-menu {\n\t--scroll-thumb-color: var(--color-line-1);\n\t--scroll-thumb-color-hover: var(--color-line-2);\n\t--scroll-thumb-color-active: var(--color-line-3);\n\n\tmax-width: 100%;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: var(--top-gap-2);\n\toverflow-x: auto;\n\tscrollbar-width: none; /* firefox */\n\n\t/* предотвратить натинвые события браузера (назад / вперед) */\n\toverscroll-behavior-x: contain;\n}\n\n.top-menu::-webkit-scrollbar { display: none; }\n\n.top-menu .top-menu_item {\n\t--top-button-color: var(--color-text-2);\n\n\toutline-offset: -2px !important;\n\tmin-width: 0;\n\tmargin: 0;\n\tflex-shrink: 0;\n}\n\n.top-menu .top-menu_item[data-top-icon] {\n\t--top-icon-color: var(--color-text-2);\n}\n\n.top-menu_selectAll {\n\tposition: sticky;\n\tright: 0;\n\tbackground: var(--content-background-color);\n\tborder-left: 1px solid var(--color-line-1-opacity);\n\tpadding-left: var(--top-padding-1);\n\tbox-shadow: var(--content-background-color) var(--top-padding-2) 0px;\n}\n\n/* style default */\n.top-menu.top-style_default .top-menu_item {\n\t--top-forms-radius: 0;\n\t--top-forms-border-color: transparent;\n\t--top-forms-border-width: 2px;\n\n\tfilter: none;\n\tbox-shadow: none;\n\tborder: none;\n\tborder-bottom: var(--top-forms-border-width) solid var(--top-forms-border-color);\n\tbackground: none;\n}\n\n.top-style_default > .top-menu_item > [data-top-badge] {\n\tmargin-top: 0;\n}\n\n.top-menu.top-style_default .top-menu_item:hover {\n\t--top-icon-color: var(--color-text-1);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-2-opacity);\n}\n\n.top-menu.top-style_default .top-menu_item:active,\n.top-menu.top-style_default .top-menu_item.top-active {\n\t--top-icon-color: var(--color-icon-primary-2);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-primary-1);\n}\n\n.top-menu.top-style_default .top-menu_selectAll {\n\tpadding-left: var(--top-padding-2);\n}\n\n/* style bar */\n.top-menu.top-style_bar {\n\tborder-radius: var(--top-radius-3);\n\tborder: 1px solid var(--color-line-2-opacity);\n\tpadding: var(--top-padding-1);\n\tgap: 3px;\n}\n.top-menu.top-style_bar .top-menu_item {\n\t--top-button-background-color-hover: var(--color-layer-secondary-1);\n\t--top-button-background-color-active: var(--color-layer-secondary-2);\n\t--top-button-background-color-selected: var(--color-layer-primary-1);\n\n\tposition: relative;\n}\n\n.top-menu.top-style_bar .top-menu_item:hover {\n\t--top-icon-color: var(--color-icon-1);\n\t--top-button-color: var(--color-text-1);\n}\n\n.top-menu.top-style_bar .top-menu_item.top-active {\n\t--top-icon-color: var(--color-icon-primary-2);\n\t--top-button-color: var(--color-text-primary-1);\n}\n\n/* разделители кнопок в баре */\n.top-menu.top-style_bar .top-menu_item:not(:first-child):not(.top-active):not(:hover):after {\n\tcontent: \"\";\n\tbackground: var(--color-line-1-opacity);\n\twidth: 1px;\n\theight: 60%;\n\tdisplay: block;\n\tposition: absolute;\n\tleft: -2px;\n}\n.top-menu.top-style_bar .top-menu_item.top-active + .top-menu_item:after,\n.top-menu.top-style_bar .top-menu_item:hover + .top-menu_item:after {\n\tcontent: none !important;\n}\n\n/*\n.top-style_bar > .top-menu_item > [data-top-badge] {\n\tmargin-top: -3px;\n}\n*/\n\n/** TODO: .top-unwrap-x надо вынести глобально в UI или добавить в стили для storybook */\n/*\n.top-menu.top-unwrap-x {\n\tpadding-right: var(--top-unwrap-x);\n\tpadding-left: var(--top-unwrap-x);\n\tmargin-right: calc(0px - var(--top-unwrap-x));\n\tmargin-left: calc(0px - var(--top-unwrap-x));\n}\n*/\n</style>\n"],"names":["props","__props","el","vue","model","itemIsActive","item","index","modelNew","onWheel","event","delta","scrollIntoView","isSmooth","elBtn","gap","leftMargin","rightMargin","rightMarginParent","scrollLeft"],"mappings":"ydAOA,MAAAA,EAAAC,+BAQAC,EAAAC,EAAA,IAAA,mKAQAH,EAAA,YAAA,CAAA,MAAA,QAAAI,EAAA,KAAA,wNAUA,MAAAC,EAAAC,2MAqBGC,IAAA,gCAIA,MAEAC,EAAA,SAAA,GAAAA,EAAA,CAAA,IAAAF,EAAA,WAGCE,EAAA,CAAAF,EAAA,KAAA,EAIF,CAAAN,EAAA,oBAAA,CAAAQ,EAAA,SAAAA,EAAA,CAAAF,EAAA,KAAA,GAEAF,EAAA,MAAAI,EAEA,OAGDJ,EAAA,MAAAE,EAAA,KAAmB,EAIpBG,EAAAC,GAAA,CAGC,GAFAR,EAAA,MAAA,aAAAA,EAAA,MAAA,aACAQ,EAAA,UACA,KAAA,IAAAA,EAAA,MAAA,EAAA,GAAA,OAEAA,EAAA,eAAA,EAEA,MAAAC,EAAAD,EAAA,OAAA,EAAA,GAAA,IACAR,EAAA,MAAA,WAAAA,EAAA,MAAA,WAAAS,CAA4C,EAU7CC,EAAA,CAAAC,EAAA,KAAA,sDAEC,GAAA,CAAAC,EAAA,OAEA,MAAAC,EAAA,GAGAC,EAAAF,EAAA,WAAAZ,EAAA,MAAA,WAAAa,EACAE,EAAAH,EAAA,WAAAZ,EAAA,MAAA,WAAAY,EAAA,YAAAC,uBAIAG,EAAAhB,EAAA,MAAA,YAAAA,EAAA,MAAA,WAEA,IAAAiB,aAMAF,EAAAC,IAAAC,EAAAF,EAAAf,EAAA,MAAA,aAEAiB,IAAA,sJAMA,mCASA,IAAAf,EAAA,MAAA,SAAAJ,EAAA,MAAA,OAAA,6CAEC,+CAG4D"}
|
|
1
|
+
{"version":3,"file":"menu-C7wWX96K.amd.js","sources":["../../src/components/formsExt/menu/menu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, onUpdated, ref } from 'vue';\nimport type { Item, Props } from './menu';\nimport Core from '@/core/core/core';\nimport { isSafari } from '@/core/utils/device';\nimport TopButton from '@/components/forms/button/button.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tstyling: 'default',\n});\n\nconst model = defineModel({\n\trequired: true,\n});\n\nconst el = ref();\n\n// валидация типа modelValue без возможности выбора нескольких значений (ожидается строка)\nif (!props.isMultiple && !(typeof (model.value) === 'string' || model.value instanceof String)) {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected String: ' + typeof (model.value));\n}\n\n// валидация типа modelValue с возможностью выбора нескольких значений (ожидается массив)\nif (props.isMultiple && !Array.isArray(model.value)) {\n\tconsole.warn('Type check failed for prop \"modelValue\". Expected Array: ' + typeof (model.value));\n}\n\n// для множественного выбора без пустого множества\n// если ничего не выбрано, присваиваем 1-ое значение\nif (props.isMultiple && !props.canBeEmptyMultiple && Array.isArray(model.value) && !model.value.length) {\n\tmodel.value = [props.items[0].href ?? props.items[0].value];\n}\n\nconst itemIsActive = (item: Item) => {\n\tif (!Array.isArray(model.value)) {\n\t\treturn item.value === model.value;\n\t}\n\n\treturn model.value.includes(item.value);\n};\n\n/**\n * Выбрать элемент\n * @param item\n * @param toggle - добавить или исключить элемент, для isMultiple\n */\nconst select = (item: Item, toggle = false) => {\n\tif (Array.isArray(model.value)) {\n\t\tlet modelNew = model.value.slice();\n\n\t\tif (toggle) {\n\t\t\tif (!modelNew.length) modelNew = props.items.map(item => item.value);\n\n\t\t\tconst index = modelNew.indexOf(item.value);\n\t\t\tif (index === -1) {\n\t\t\t\tmodelNew.push(item.value);\n\t\t\t} else {\n\t\t\t\tmodelNew.splice(index, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (modelNew.length === 1 && modelNew[0] === item.value) {\n\t\t\t\tmodelNew = [];\n\t\t\t} else {\n\t\t\t\tmodelNew = [item.value];\n\t\t\t}\n\t\t}\n\n\t\tif (!props.canBeEmptyMultiple && !modelNew.length) modelNew = [item.value];\n\n\t\tmodel.value = modelNew;\n\n\t\treturn;\n\t}\n\n\tmodel.value = item.value;\n};\n\n// вертикальный скролл в горизонтальный скролл\nconst onWheel = (event: WheelEvent) => {\n\tif (el.value.scrollWidth <= el.value.offsetWidth) return;\n\tif (event.shiftKey) return;\n\tif (Math.abs(event.deltaY) < 50) return; // устройство с высокой точностью, например тачпад\n\n\tevent.preventDefault();\n\n\tconst delta = event.deltaY > 0 ? 30 : -30;\n\tel.value.scrollLeft = el.value.scrollLeft + delta;\n};\n\n/**\n * Замена стандартному scrollIntoView, который меняет скролл документа\n *\n * Выравнивание по ближнему краю элемента\n *\n * Выравнивается таким образом, чтобы был виден соседний элемент\n */\nconst scrollIntoView = (isSmooth = true) => {\n\tconst elBtn = el.value.querySelector('.top-active');\n\tif (!elBtn) return;\n\n\tconst gap = 24;\n\n\t// левая и правая координаты элемента\n\tconst leftMargin = elBtn.offsetLeft - el.value.offsetLeft - gap;\n\tconst rightMargin = elBtn.offsetLeft - el.value.offsetLeft + elBtn.clientWidth + gap;\n\n\t// левая и правая границы видимой части меню\n\tconst leftMarginParent = el.value.scrollLeft;\n\tconst rightMarginParent = el.value.clientWidth + el.value.scrollLeft;\n\n\tlet scrollLeft: number | undefined = undefined;\n\n\t// левую границу элемента к левой границе меню\n\tif (leftMargin < leftMarginParent) scrollLeft = leftMargin;\n\n\t// правую границу элемента к правой границе меню\n\tif (rightMargin > rightMarginParent) scrollLeft = rightMargin - el.value.clientWidth;\n\n\tif (scrollLeft !== undefined) {\n\t\tif (isSafari()) {\n\t\t\tCore.$?.(el.value).animate({ scrollLeft: scrollLeft }, isSmooth ? 200 : 0);\n\t\t} else {\n\t\t\tel.value.scrollTo({ left: scrollLeft, behavior: isSmooth ? 'smooth' : 'auto' });\n\t\t}\n\t}\n};\n\n/**\n * Выбрать все элементы в меню\n */\nconst selectAll = () => {\n\tif (!Array.isArray(model.value)) return;\n\n\tif (model.value.length === props.items.length) {\n\t\tmodel.value = [props.items[0].href ?? props.items[0].value];\n\t\treturn;\n\t}\n\n\tmodel.value = props.items.map(item => item.href ?? item.value);\n};\n\nonMounted(() => scrollIntoView(false));\nonUpdated(() => scrollIntoView(true));\n\n</script>\n\n<template>\n\t<div\n\t\tref=\"el\"\n\t\t:class=\"{\n\t\t\t'top-menu': true,\n\t\t\t['top-style_' + styling]: true,\n\t\t\t// ['top-unwrap-x']: styling === 'default',\n\t\t}\"\n\t\t@wheel=\"onWheel\"\n\t>\n\t\t<TopButton\n\t\t\tv-for=\"item in items\"\n\t\t\t:=\"item\"\n\t\t\tclass=\"top-menu_item\"\n\t\t\tcolor=\"theme\"\n\t\t\t@click=\"select(item, $event.ctrlKey)\"\n\t\t\t:isActive=\"itemIsActive(item)\"\n\t\t>\n\t\t\t<template #default v-if=\"item.content\">\n\t\t\t\t{{ item.content }}\n\t\t\t</template>\n\t\t</TopButton>\n\n\t\t<div\n\t\t\tv-if=\"Array.isArray(model) && selectAllItem\"\n\t\t\tclass=\"top-menu_selectAll\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\t:=\"selectAllItem\"\n\t\t\t\tclass=\"top-menu_item\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\tstyling=\"\"\n\t\t\t\t@click=\"selectAll()\"\n\t\t\t\t:isActive=\"model.length === items.length\"\n\t\t\t>\n\t\t\t\t<template #default v-if=\"selectAllItem.content\">\n\t\t\t\t\t{{ selectAllItem.content }}\n\t\t\t\t</template>\n\t\t\t</TopButton>\n\t\t</div>\n\t</div>\n</template>\n\n<style module>\n.top-menu {\n\t--scroll-thumb-color: var(--color-line-1);\n\t--scroll-thumb-color-hover: var(--color-line-2);\n\t--scroll-thumb-color-active: var(--color-line-3);\n\n\tmax-width: 100%;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: var(--top-gap-2);\n\toverflow-x: auto;\n\tscrollbar-width: none; /* firefox */\n\n\t/* предотвратить натинвые события браузера (назад / вперед) */\n\toverscroll-behavior-x: contain;\n}\n\n.top-menu::-webkit-scrollbar { display: none; }\n\n.top-menu .top-menu_item {\n\t--top-button-color: var(--color-text-2);\n\n\toutline-offset: -2px !important;\n\tmin-width: 0;\n\tmargin: 0;\n\tflex-shrink: 0;\n}\n\n.top-menu .top-menu_item[data-top-icon] {\n\t--top-icon-color: var(--color-text-2);\n}\n\n.top-menu_selectAll {\n\tposition: sticky;\n\tright: 0;\n\tbackground: var(--color-layout-front);\n\tborder-left: 1px solid var(--color-line-1);\n\tpadding-left: var(--top-padding-1);\n\tbox-shadow: var(--color-layout-front) var(--top-padding-2) 0px;\n}\n\n/* style default */\n.top-menu.top-style_default .top-menu_item {\n\t--top-forms-radius: 0;\n\t--top-forms-border-color: transparent;\n\t--top-forms-border-width: 2px;\n\n\tfilter: none;\n\tbox-shadow: none;\n\tborder: none;\n\tborder-bottom: var(--top-forms-border-width) solid var(--top-forms-border-color);\n\tbackground: none;\n}\n\n.top-style_default > .top-menu_item > [data-top-badge] {\n\tmargin-top: 0;\n}\n\n.top-menu.top-style_default .top-menu_item:hover {\n\t--top-icon-color: var(--color-text-1);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-2);\n}\n\n.top-menu.top-style_default .top-menu_item:active,\n.top-menu.top-style_default .top-menu_item.top-active {\n\t--top-icon-color: var(--color-text-primary);\n\t--top-button-color: var(--color-text-1);\n\t--top-forms-border-color: var(--color-line-primary-1);\n}\n\n.top-menu.top-style_default .top-menu_selectAll {\n\tpadding-left: var(--top-padding-2);\n}\n\n/* style bar */\n.top-menu.top-style_bar {\n\tborder-radius: var(--top-radius-3);\n\tborder: 1px solid var(--color-line-2);\n\tpadding: var(--top-padding-1);\n\tgap: 3px;\n}\n.top-menu.top-style_bar .top-menu_item {\n\t--top-button-background-color-hover: var(--color-layer-1);\n\t--top-button-background-color-active: var(--color-layer-2);\n\t--top-button-background-color-selected: var(--color-layer-primary-1);\n\n\tposition: relative;\n}\n\n.top-menu.top-style_bar .top-menu_item:hover {\n\t--top-icon-color: var(--color-text-1);\n\t--top-button-color: var(--color-text-1);\n}\n\n.top-menu.top-style_bar .top-menu_item.top-active {\n\t--top-icon-color: var(--color-text-primary);\n\t--top-button-color: var(--color-text-primary);\n}\n\n/* разделители кнопок в баре */\n.top-menu.top-style_bar .top-menu_item:not(:first-child):not(.top-active):not(:hover):after {\n\tcontent: \"\";\n\tbackground: var(--color-line-1-opacity);\n\twidth: 1px;\n\theight: 60%;\n\tdisplay: block;\n\tposition: absolute;\n\tleft: -2px;\n}\n.top-menu.top-style_bar .top-menu_item.top-active + .top-menu_item:after,\n.top-menu.top-style_bar .top-menu_item:hover + .top-menu_item:after {\n\tcontent: none !important;\n}\n\n/*\n.top-style_bar > .top-menu_item > [data-top-badge] {\n\tmargin-top: -3px;\n}\n*/\n\n/** TODO: .top-unwrap-x надо вынести глобально в UI или добавить в стили для storybook */\n/*\n.top-menu.top-unwrap-x {\n\tpadding-right: var(--top-unwrap-x);\n\tpadding-left: var(--top-unwrap-x);\n\tmargin-right: calc(0px - var(--top-unwrap-x));\n\tmargin-left: calc(0px - var(--top-unwrap-x));\n}\n*/\n</style>\n"],"names":["props","__props","el","vue","model","itemIsActive","item","index","modelNew","onWheel","event","delta","scrollIntoView","isSmooth","elBtn","gap","leftMargin","rightMargin","rightMarginParent","scrollLeft"],"mappings":"ydAOA,MAAAA,EAAAC,+BAQAC,EAAAC,EAAA,IAAA,mKAQAH,EAAA,YAAA,CAAA,MAAA,QAAAI,EAAA,KAAA,wNAUA,MAAAC,EAAAC,2MAqBGC,IAAA,gCAIA,MAEAC,EAAA,SAAA,GAAAA,EAAA,CAAA,IAAAF,EAAA,WAGCE,EAAA,CAAAF,EAAA,KAAA,EAIF,CAAAN,EAAA,oBAAA,CAAAQ,EAAA,SAAAA,EAAA,CAAAF,EAAA,KAAA,GAEAF,EAAA,MAAAI,EAEA,OAGDJ,EAAA,MAAAE,EAAA,KAAmB,EAIpBG,EAAAC,GAAA,CAGC,GAFAR,EAAA,MAAA,aAAAA,EAAA,MAAA,aACAQ,EAAA,UACA,KAAA,IAAAA,EAAA,MAAA,EAAA,GAAA,OAEAA,EAAA,eAAA,EAEA,MAAAC,EAAAD,EAAA,OAAA,EAAA,GAAA,IACAR,EAAA,MAAA,WAAAA,EAAA,MAAA,WAAAS,CAA4C,EAU7CC,EAAA,CAAAC,EAAA,KAAA,sDAEC,GAAA,CAAAC,EAAA,OAEA,MAAAC,EAAA,GAGAC,EAAAF,EAAA,WAAAZ,EAAA,MAAA,WAAAa,EACAE,EAAAH,EAAA,WAAAZ,EAAA,MAAA,WAAAY,EAAA,YAAAC,uBAIAG,EAAAhB,EAAA,MAAA,YAAAA,EAAA,MAAA,WAEA,IAAAiB,aAMAF,EAAAC,IAAAC,EAAAF,EAAAf,EAAA,MAAA,aAEAiB,IAAA,sJAMA,mCASA,IAAAf,EAAA,MAAA,SAAAJ,EAAA,MAAA,OAAA,6CAEC,+CAG4D"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
define(["require","exports","./forms-
|
|
1
|
+
define(["require","exports","./forms-CQJeARc0.amd","../utils/dom.amd","../popup/worker.amd","./i18n-C_OH9IT3.amd"],function(T,P,d,e,s,w){"use strict";if(typeof y>"u")var y=window.Vue;class x{static componentName="Top";componentName;className;uid;el;options={};unmountEls=[];unmountEvents=[];init(t,p,o){if(!p)throw t+": el is undefined";const n=x.getComponent(p,t);if(n)return n.reInit(o),n;this.componentName=t,this.className="top"+t[0].toUpperCase()+t.substring(1),this.uid=this.componentName+(Math.random()+"").replace(".",""),this._setComponent(p),this.el=p,this.el.classList.add(this.className),this.options=Object.assign(this.options,o),this.mount()}static getComponent(t,p){return e.default.storage(t,"#"+p)}_setComponent(t){e.default.storage(t,"#"+this.componentName,this)}mount(){throw"Please, add method mount() to component: "+this.componentName}unmount(){e.default.storage(this.el,"#"+this.componentName,null),this.unmountEls.forEach(t=>{t.remove()}),this.unmountEls=[],this.unmountEvents.forEach(t=>{t.el.removeEventListener(t.type,t.listener,t.options)}),this.unmountEvents=[]}registerElForUnmount(t){this.unmountEls.push(t)}addEventListenerWithUnmount(t,p,o,n){t.addEventListener(p,o,n),this.registerEventForUnmount(t,p,o,n)}registerEventForUnmount(t,p,o,n){const r={el:t,type:p,listener:o,options:n};this.unmountEvents.push(r)}reInit(t){throw"Please, add method reInit() to component: "+this.componentName}static detach(t){var p;if(t.forEach)t.forEach(o=>{var n;return(n=o.parentElement)==null?void 0:n.removeChild(o)});else{const o=t;(p=o.parentElement)==null||p.removeChild(o)}}}class _{static isInited=!1;static init(){this.isInited||(this.isInited=!0,document.addEventListener("click",this.onclick),document.addEventListener("keydown",this.onkeydown))}static onclick(t){var o;if(!(t.target instanceof HTMLElement))return;const p=t.target.closest(".closer, a, .a, .top-button");if(p){const n=t.target.closest(".top-popup-wrapper");if(!n||p.matches(".top-popup-noCloser"))return;if(p.getAttribute("href")==="."&&t.preventDefault(),t.target.matches("[data-top-popup]")){const r=t.target.closest("ul"),i=t.target.closest("a, .a");r&&((o=r.querySelector("a.top-active, .a.top-active"))==null||o.classList.remove("top-active")),i&&i.classList.add("top-active");return}s.TopPopupWorker.close(n)}if(t.target.matches(".top-popup-wrapper")){const n=t.target;s.TopPopupWorker.close(n)}}static onkeydown(t){var n,r;if(!(t.target instanceof HTMLElement))return;const p=t.target.closest(".top-popup-wrapper");if(!p)return;const o=p.querySelector("ul.top-popup_content");switch(t.key){case"Escape":s.TopPopupWorker.close(p);break;case"Enter":if(!o){if(e.default.querySelectorVisible(p,".preloader"))break;const c=e.default.querySelectorVisible(p,".top-popup_footer .go, .top-popup_footer [data-action]");if(c instanceof HTMLElement){c.click();break}const g=e.default.querySelectorVisibleLast(p,".top-popup_footer .top-button");g instanceof HTMLElement&&g.click();break}const i=e.default.querySelectorVisible(p,"li > a.top-active");i&&i.getAttribute("href")&&(t.preventDefault(),location.href=i.getAttribute("href"));const u=p.querySelector("li > .top-active");u instanceof HTMLElement&&u.click();break;case"ArrowUp":case"ArrowRight":case"ArrowDown":case"ArrowLeft":if(!o)break;t.key==="ArrowRight"||t.key==="ArrowLeft"?e.default.querySelectorVisible(p,"ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore")&&t.preventDefault():t.preventDefault();const l=(n=p.querySelector("ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active"))==null?void 0:n.parentElement;if(t.key==="ArrowRight"&&l){const c=l.querySelector(".top-active > .top-popup_listMore");if(c instanceof HTMLElement)return c.click()}const f=e.default.querySelectorAllVisible(p,"ul.top-popup_content > li:not(.top-popup_liNoSelectable)"),h=f.length;if(!h)return;let a=-1;if(l&&(a=f.indexOf(l)),t.key==="ArrowUp"||t.key==="ArrowLeft"?a--:a++,t.key==="ArrowLeft"&&a===-1)return t.target.matches("input")?void 0:s.TopPopupWorker.close(p);if(t.key==="ArrowRight"&&a===h)return;a<0&&(a=h-1),a>h-1&&(a=0),p.querySelectorAll("ul.top-popup_content > li > .top-active").forEach(c=>c.classList.remove("top-active")),(r=f[a].querySelector(":scope > a, :scope > .a"))==null||r.classList.add("top-active"),s.TopPopupWorker.scrollToActive(p);break}}}const L=`:root {
|
|
2
2
|
--top-popup-z-index: 200000;
|
|
3
3
|
--top-popup-transition-delay: 100ms;
|
|
4
4
|
|
|
5
|
-
--top-popup-background-color: var(--color-
|
|
6
|
-
--top-popup-background-color-hover: var(--color-
|
|
7
|
-
--top-popup-background-color-active: var(--color-
|
|
5
|
+
--top-popup-background-color: var(--color-layout-front);
|
|
6
|
+
--top-popup-background-color-hover: var(--color-layout-over-2);
|
|
7
|
+
--top-popup-background-color-active: var(--color-layout-over-4);
|
|
8
8
|
|
|
9
9
|
--top-popup-border-color: var(--color-line-2-opacity);
|
|
10
|
-
--top-popup-title-background-color: var(--color-layer-
|
|
10
|
+
--top-popup-title-background-color: var(--color-layer-1);
|
|
11
11
|
|
|
12
12
|
/* суммарный отсуп от каря popup до элемента */
|
|
13
13
|
--top-popup-content-padding: calc(var(--top-popup-list-padding) + var(--top-popup-listItem-padding));
|
|
@@ -93,13 +93,13 @@ define(["require","exports","./forms-DKL0e9tp.amd","../utils/dom.amd","../popup/
|
|
|
93
93
|
/* notch */
|
|
94
94
|
.top-popup-wrapper > .notch { border: 7.4px solid transparent; position: absolute; display: block; }
|
|
95
95
|
|
|
96
|
-
.top-popup-wrapper.p1 > .notch { border-bottom: 0; border-top: 7.4px solid var(--
|
|
96
|
+
.top-popup-wrapper.p1 > .notch { border-bottom: 0; border-top: 7.4px solid var(--color-layout-front); margin: 0 0 7.4px -7.4px; bottom: 100%; left: 50% }
|
|
97
97
|
|
|
98
|
-
.top-popup-wrapper.p2 > .notch { border-left: 0; border-right: 7.4px solid var(--
|
|
98
|
+
.top-popup-wrapper.p2 > .notch { border-left: 0; border-right: 7.4px solid var(--color-layout-front); margin: 0 0 -7.4px 7.4px; bottom: 50%; left: 100%; }
|
|
99
99
|
|
|
100
|
-
.top-popup-wrapper.p3 > .notch { border-top: 0; border-bottom: 7.4px solid var(--
|
|
100
|
+
.top-popup-wrapper.p3 > .notch { border-top: 0; border-bottom: 7.4px solid var(--color-layout-front); margin: 7.4px 0 0 -7.4px; top: 100%; left: 50%; }
|
|
101
101
|
|
|
102
|
-
.top-popup-wrapper.p4 > .notch { border-right: 0; border-left: 7.4px solid var(--
|
|
102
|
+
.top-popup-wrapper.p4 > .notch { border-right: 0; border-left: 7.4px solid var(--color-layout-front); margin: 0 7.4px -7.4px 0; bottom: 50%; right: 100%; }
|
|
103
103
|
|
|
104
104
|
.top-popup-wrapper.p1 > .notch-border { border-top-color: rgba(0, 0, 0, 0.05); margin-bottom: 6px; }
|
|
105
105
|
|
|
@@ -129,7 +129,7 @@ define(["require","exports","./forms-DKL0e9tp.amd","../utils/dom.amd","../popup/
|
|
|
129
129
|
|
|
130
130
|
.top-popup_header > .a { cursor: pointer;}
|
|
131
131
|
|
|
132
|
-
.top-popup_header > .a:hover { color: var(--color-text-primary
|
|
132
|
+
.top-popup_header > .a:hover { color: var(--color-text-primary); }
|
|
133
133
|
|
|
134
134
|
.top-popup_headerButton { width: 60px; }
|
|
135
135
|
|
|
@@ -204,7 +204,7 @@ ul.top-popup_content li > .a:hover { background: var(--top-popup-background-colo
|
|
|
204
204
|
|
|
205
205
|
ul.top-popup_content li > a:not(.top-button).top-active,
|
|
206
206
|
ul.top-popup_content li > .a.top-active {
|
|
207
|
-
--top-icon-color: var(--color-
|
|
207
|
+
--top-icon-color: var(--color-text-primary) !important;
|
|
208
208
|
|
|
209
209
|
background: var(--top-popup-background-color-active);
|
|
210
210
|
}
|
|
@@ -213,7 +213,7 @@ ul.top-popup_content li > .a.top-active {
|
|
|
213
213
|
|
|
214
214
|
/* listTitle */
|
|
215
215
|
.top-popup_listItem-title {
|
|
216
|
-
background: var(--color-layer-
|
|
216
|
+
background: var(--color-layer-1);
|
|
217
217
|
color: var(--color-text-1); font-size: 12px;
|
|
218
218
|
}
|
|
219
219
|
|
|
@@ -239,16 +239,16 @@ ul.top-popup_content li > .a.top-popup_listMore {
|
|
|
239
239
|
flex-basis: 10px;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
ul.top-popup_content li > .a.top-popup_listMore:before { color: var(--color-
|
|
242
|
+
ul.top-popup_content li > .a.top-popup_listMore:before { color: var(--color-text-2); }
|
|
243
243
|
|
|
244
244
|
ul.top-popup_content li > * > .top-popup_listMore {
|
|
245
245
|
margin-left: auto;
|
|
246
|
-
color: var(--color-layer-
|
|
246
|
+
color: var(--color-layer-4);
|
|
247
247
|
font-size: 14px;
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
ul.top-popup_content li > * > i.top-popup_listMore:hover,
|
|
251
|
-
ul.top-popup_content li > * > i.top-popup_listMore.top-active { color: var(--color-text-primary
|
|
251
|
+
ul.top-popup_content li > * > i.top-popup_listMore.top-active { color: var(--color-text-primary); }
|
|
252
252
|
|
|
253
253
|
ul.top-popup_content li > * > i.top-popup_listMore:before {
|
|
254
254
|
transform: rotate(90deg);
|
|
@@ -263,7 +263,7 @@ ul.top-popup_content li a.close { background: none !important; }
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
ul.top-popup_content li > [data-top-icon]:not(.top-button) {
|
|
266
|
-
--top-icon-color: var(--color-
|
|
266
|
+
--top-icon-color: var(--color-text-3);
|
|
267
267
|
--top-icon-size: 20px;
|
|
268
268
|
--top-icon-width: 20px;
|
|
269
269
|
}
|
|
@@ -273,7 +273,7 @@ ul.top-popup_content li > [data-top-icon]:not(.top-button):before {
|
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
ul.top-popup_content li:hover > [data-top-icon]:not(.top-button) {
|
|
276
|
-
--top-icon-color: var(--color-
|
|
276
|
+
--top-icon-color: var(--color-text-2);
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
/* footer */
|
|
@@ -310,7 +310,7 @@ html .top-popup .top-popup_content li > .top-button {
|
|
|
310
310
|
}
|
|
311
311
|
|
|
312
312
|
.top-popup li .check_all,
|
|
313
|
-
.top-popup li .clear_all { cursor: pointer; color: var(--color-text-primary
|
|
313
|
+
.top-popup li .clear_all { cursor: pointer; color: var(--color-text-primary); padding: 8px; display: inline-block; }
|
|
314
314
|
|
|
315
315
|
.top-popup li .check_all:hover,
|
|
316
316
|
.top-popup li .clear_all:hover { text-decoration: underline; }
|
|
@@ -443,5 +443,5 @@ ul.top-popup_content li > * > i.top-popup_listMore { visibility: hidden; transit
|
|
|
443
443
|
ul.top-popup_content li:hover > * > i.top-popup_listMore,
|
|
444
444
|
ul.top-popup_content li > *.top-active > i.top-popup_listMore,
|
|
445
445
|
ul.top-popup_content li > * > i.top-popup_listMore.top-active { visibility: visible; }
|
|
446
|
-
`;d.Core.insertStyleToPage(L),d.Core.insertStyleToPage(E,"m"),d.Core.insertStyleToPage(k,"pc");class m extends b{static componentName="TopPopup";elActiveByDefault;elPopup;elPopupInner;elPopupHeader;elPopupWidget;elPopupBody;elPopupFooter;elFront;popupParent;$;elStartPosition;shift={top:0,left:0};isClosed=!1;isFirstClick=!0;type;options={popup:"",p:0,notch:!1,class:"",posBy:"left",frontSelector:"",invertX:!1,openByHover:!1,useOriginal:!1,transitionDuration:100,isFullScreen:!1};events={};constructor(t,p){super(),this.init(m.componentName,t,p)}async mount(){var n,r;if(!(this.el instanceof HTMLElement))return;const t=this.vueGetComponent();if(this.el.closest(".top-popup-wrapper")&&(this.popupParent=s.TopPopupWorker.getPopup(this.el.closest(".top-popup-wrapper"))),await this.mountJQuery(),e.default.css(this.el,"position")!=="absolute"&&(this.el.style.position="relative"),this.el.dataset.topPopupOpened="opened",this.elActiveByDefault=this.el.classList.contains("top-active"),this.el.classList.add("top-active"),t)this.type="vue",this.options.popup="",this.elPopup=e.default.genEl("div",{},this.options.popup);else if((n=this.options.popup)!=null&&n.match(/^[#.]/))this.type="selector",this.elPopup=document.querySelector(`${this.options.popup}.template`);else{if(this.type="html",this.options.useOriginal)throw"Option useOriginal not allowed for text templates";this.elPopup=e.default.genEl("div",{},this.options.popup??"")}if(!this.elPopup||t!=null&&t.opened){if(this.options.useOriginal||t!=null&&t.opened){if(t!=null&&t.opened?this.elPopup=t.popup.elPopup:this.elPopup=document.querySelector(`${this.options.popup}.top-popup-wrapper-shown`),this.elPopup){this.el.dataset.topPopupOpened="",this.elActiveByDefault||this.el.classList.remove("top-active"),s.TopPopupWorker.close(this.elPopup),setTimeout(()=>this.mount(),this.options.transitionDuration);return}throw"Option useOriginal state allowed only elements .template"}this.elPopup=document.querySelector(`${this.options.popup}:not(.top-popup-wrapper)`)}if(!this.elPopup)return;for(this.options.useOriginal?(this.elStartPosition=this.elPopup.closest(".top-popup-el-start-position"),this.elStartPosition||(this.elStartPosition=e.default.wrap(this.elPopup,"i"),this.elStartPosition.classList.add("top-popup-el-start-position","hidden"))):(this.elPopup=this.elPopup.cloneNode(!0),this.type==="selector"&&!this.elPopup.matches(".template")&&(this.elPopup.classList.remove("hidden"),this.elPopup.querySelector(":scope > .top-popup_content")||this.elPopup.classList.add("top-popup_content"),this.elPopup=e.default.wrap(this.elPopup,"div")),this.type==="html"&&(this.elPopup.querySelector(":scope > .top-popup_content")||(this.elPopup.classList.add("top-popup_content"),this.elPopup=e.default.wrap(this.elPopup,"div"))),(this.type==="selector"&&!this.elPopup.matches(".template")||this.type==="html"||this.type==="vue")&&(e.default.querySelectorAllArray(this.elPopup,"[data-top-popup]").forEach(i=>{i instanceof HTMLElement&&(i.dataset.topPopupPosBy="fixed")}),e.default.querySelectorAllArray(this.elPopup,".top-popup-wrapper").forEach(i=>i.remove()))),s.TopPopupWorker.decoratorBeforeOpen(this),t&&(this.options.class=t.classRef.value,t.transitionDurationRef.value!==void 0&&(this.options.transitionDuration=t.transitionDurationRef.value,this.elPopup instanceof HTMLElement&&this.elPopup.style.setProperty("--top-popup-transition-delay",this.options.transitionDuration+"ms"))),this.elPopupInner=document.createElement("div"),this.elPopupInner.classList.add("top-popupPanel","top-popup");this.elPopup.firstChild;)this.elPopupInner.appendChild(this.elPopup.firstChild);if(this.elPopup.append(this.elPopupInner),this.elPopup.classList.add("top-popup-wrapper"),this.options.class){const i=this.options.class.split(" ");this.elPopup.classList.add(...i)}this.options.notch&&(this.elPopup.classList.add("with_notch"),this.elPopup.insertAdjacentHTML("beforeend",'<i class="notch notch-border"></i><i class="notch"></i>')),await this.vueOpen(),this.elPopupHeader=this.elPopupInner.querySelector(".top-popup_header"),this.elPopupWidget=this.elPopupInner.querySelector(".top-popup_widget"),this.elPopupBody=this.elPopupInner.querySelector(".top-popup_content"),this.elPopupFooter=this.elPopupInner.querySelector(".top-popup_footer");const p=!!this.elPopup.querySelector('[data-widget="search"]');if(this.options.isFullScreen&&!p){const i=w.useI18n();!this.elPopupHeader&&i.Common.Close&&(this.elPopupHeader=e.default.genEl("i",{class:"top-popup_header"}),this.elPopupInner.prepend(this.elPopupHeader),this.elPopupHeader.prepend(e.default.genEl("i",{class:"a closer"},i.Common.Close)),this.elPopupHeader.append(e.default.genEl("i",{class:"top-popup_headerButton"})))}e.default.storage(this.elPopup,m.componentName,this),this.options.frontSelector&&(this.elFront=document.querySelector(this.options.frontSelector)),this.elFront||(this.elFront=this.el.closest(".top-popup-front")),this.elFront||(this.elFront=document.body),this.elPopup instanceof HTMLElement&&(this.elPopup.style.width=this.el.offsetWidth+"px",this.elPopup.style.height=this.el.offsetHeight+"px",this.elPopup.style.top=this.el.offsetTop+"px",this.elPopup.style.right=parseInt(this.el.style.right||"0")+"px",this.elPopup.style.bottom=parseInt(this.el.style.bottom||"0")+"px"),(r=this.el.parentElement)==null||r.insertBefore(this.elPopup,this.el),this.elPopup.classList.remove("template"),this.options.invertX&&this.elPopup.classList.add("invert-x");let o=!!this.el.closest(".modal-header");o||(o=!!this.el.closest("#top_panel")),o||(o=!!this.el.closest("#secondmenu")),o&&this.elPopup.classList.add("p-from-top"),setTimeout(()=>{var i;return(i=this.elPopup)==null?void 0:i.classList.add("top-popup-wrapper-shown")}),this.elFront&&!this.elFront.matches("body")&&(this.elFront.append(this.elPopup),this.shift.top=e.default.offset(this.el).top-this.el.offsetTop-e.default.offset(this.elFront).top,this.shift.left=e.default.offset(this.el).left-this.el.offsetLeft-e.default.offset(this.elFront).left,this.shift.top-=parseInt(this.el.style["margin-top"]||0),this.shift.left-=parseInt(this.el.style["margin-left"]||0),this.elPopup instanceof HTMLElement&&(this.elPopup.style.top=parseInt(this.elPopup.style.top||"0")+this.shift.top+"px",this.elPopup.style.left=parseInt(this.elPopup.style.left||"0")+this.shift.left+"px")),this.$&&d.Core.$&&this.$.trigger("aftershow.top-menu-popup",[d.Core.$(this.elPopup)]),this.recalcPosition(),this.elPopup.setAttribute("tabindex","0"),this.focus(),s.TopPopupWorker.decoratorAfterOpen(this),this.mountEvents()}async mountJQuery(){d.Core.$&&(this.$=d.Core.$(this.el))}focus(){let t;this.elPopup&&(t=e.default.querySelectorVisible(this.elPopup,".top-popup-autofocus"),t||(t=e.default.querySelectorVisible(this.elPopup,":read-write, select:not(:disabled)")),t||(t=e.default.querySelectorVisible(this.elPopup,".top-popup_footer .top-button")),t||(t=this.elPopup),t instanceof HTMLElement&&t.focus(),setTimeout(()=>{t instanceof HTMLElement&&t.focus()},this.options.transitionDuration))}mountEvents(){this.addEventListenerWithUnmount(document,"mousedown",t=>this.onMousedown(t)),this.elPopup&&this.elPopupInner&&(this.addEventListenerWithUnmount(this.elPopup,"focus",t=>this.onFocus(t)),this.options.openByHover&&(this.addEventListenerWithUnmount(this.elPopup,"mouseleave",t=>this.onMouseleave(t)),this.addEventListenerWithUnmount(this.elPopupInner,"mouseleave",t=>this.onMouseleave(t)))),this.options.isFullScreen&&this.elPopupBody&&this.addEventListenerWithUnmount(this.elPopupBody,"touchmove",t=>this.onTouchmove(t))}onMousedown(t){if(!this.elPopup||!(t.target instanceof Element)||!this.isFirstClick||(this.isFirstClick=!1,setTimeout(()=>this.isFirstClick=!0),t instanceof MouseEvent&&t.button!==0))return;let p=e.default.querySelectorVisibleLast(document.body,":scope > .top-popup-wrapper");p&&p!==this.elPopup||t.target.closest(".top-popup-front")&&(p=e.default.querySelectorVisibleLast(t.target.closest(".top-popup-front"),":scope > .top-popup-wrapper"),p&&p!==this.elPopup)||this.elPopup.contains(t.target)||this.elPopup.closest(".ui-dialog")&&!t.target.closest(".ui-dialog")||s.TopPopupWorker.decoratorIsIgnoreOuterClick(t)||s.TopPopupWorker.close(this.elPopup)}onFocus(t){if(t.target instanceof Element&&t.target.matches("input")||this.isClosed)return;s.TopPopupWorker.getAllVisible().forEach(o=>{var n,r,i,u;(n=this.elPopup)!=null&&n.contains(o)||((r=this.popupParent)==null?void 0:r.elPopup)===o||((u=(i=this.popupParent)==null?void 0:i.popupParent)==null?void 0:u.elPopup)===o||s.TopPopupWorker.close(o)})}onMouseleave(t){setTimeout(()=>{this.elPopupInner&&this.elPopupInner.matches(":hover")||!this.elPopup||s.TopPopupWorker.close(this.elPopup)},100)}onResize(){this.elPopup&&this.elPopup.parentElement!==document.body&&document.body.append(this.elPopup),this.elPopup instanceof HTMLElement&&(this.elPopup.style.top=e.default.offset(this.el).top+"px",this.elPopup.style.left=e.default.offset(this.el).left+"px")}unmount(){super.unmount(),this.el instanceof HTMLElement&&(this.el.dataset.topPopupOpened=""),this.elActiveByDefault||this.el.classList.remove("top-active");let t=this.el.getAttribute("style");t&&(t=t.replace(/position:[^;]*;?/g,""),this.el.setAttribute("style",t))}recalcPosition(){var g,x;if(!(this.elPopup instanceof HTMLElement))return;let t=this.options.p,p;if(this.el instanceof HTMLElement)switch(this.elPopup.style.height=this.el.offsetHeight+"px",this.elPopup.classList.remove("p0","p1","p2","p3","p4"),this.elPopup.classList.add("p"+t),this.options.posBy){case"left":p=this.el.offsetLeft+parseInt(this.el.style["margin-left"]||"0"),p+=this.shift.left,this.elPopup.style.left=p+"px";break;case"right":if(!(this.el.offsetParent instanceof HTMLElement))break;p=this.el.offsetLeft+parseInt(this.el.style["margin-left"]||"0"),this.elPopup.style.right=this.el.offsetParent.offsetWidth-this.el.offsetWidth-p+"px";break;case"fixed":this.addEventListenerWithUnmount(window,"resize",()=>this.onResize()),this.onResize();break;default:(g=this.options.posBy)==null||g.append(this.elPopup)}const o=this.elPopup.getBoundingClientRect();this.elPopup.style.setProperty("--top-popup-height",this.elPopup.offsetHeight+"px"),this.elPopup.style.setProperty("--top-popup-right-bounding",o.right+"px"),this.elPopup.style.setProperty("--top-popup-bottom-bounding",o.bottom+"px"),this.elPopup.style.setProperty("--top-popup-top",o.top+"px"),this.elPopup.style.setProperty("--top-popup-left",o.left+"px"),this.elPopupInner instanceof HTMLElement&&(this.elPopupInner.style.maxWidth="unset",this.elPopupInner.style.maxHeight="unset");let n=!1,r=!1,i=!1,u=!1,l=o.left>window.innerWidth/2,f=o.top>window.innerHeight/2;t===4&&(l=!l),t===1&&(f=!f);const h=(x=this.elPopupInner)==null?void 0:x.getBoundingClientRect();let a,c;if(h){a=window.innerWidth-h.right,c=window.innerHeight-h.bottom;const v=8;h.top<v&&(n=!0),a<v&&(r=!0),c<v&&(i=!0),h.left<v&&(u=!0)}n&&(t===0||t===1)&&f&&(t=3),i&&t===3&&f&&(t=1),r&&t===2&&l&&(t=4),u&&t===4&&l&&(t=2),r&&(t===0||t===1||t===3)&&this.elPopup.classList.add("invert-x"),i&&(t===2||t===4)&&f&&(t===2&&!l&&this.elPopup.classList.add("invert-y"),t===4&&!l&&this.elPopup.classList.add("invert-x"),this.elPopup.matches(".invert-y")||(t=1)),this.elPopup.classList.remove("p0","p1","p2","p3","p4"),this.elPopup.classList.add("p"+t),this.elPopupInner instanceof HTMLElement&&(this.elPopupInner.style.maxWidth="",this.elPopupInner.style.maxHeight=""),s.TopPopupWorker.scrollToActive(this.elPopup)}onTouchmove(t){var p,o,n;if(t.currentTarget instanceof HTMLElement&&t.target instanceof HTMLElement){if(t.currentTarget.scrollWidth>t.currentTarget.offsetWidth||(p=t.target.parentElement)!=null&&p.scrollWidth&&((o=t.target.parentElement)!=null&&o.offsetWidth)&&t.target.parentElement.scrollWidth>((n=t.target.parentElement)==null?void 0:n.offsetWidth))return;t.currentTarget.matches(".has_scroll")||t.preventDefault()}}close(){var t;this.isClosed||(this.isClosed=!0,this.$&&d.Core.$&&this.elPopup&&this.$.trigger("afterclose.top-menu-popup",[d.Core.$(this.elPopup)]),!s.TopPopupWorker.noClose&&(this.unmount(),(t=this.elPopup)==null||t.classList.add("top-popup-wrapper-closed"),setTimeout(()=>{var n,r,i,u,l;if(this.vueClose(),!this.elPopup)return;this.options.useOriginal?(this.elPopup.removeAttribute("style"),this.elPopup.classList.remove("top-popup-wrapper-shown","top-popup-wrapper-closed"),this.elPopup.classList.add("template"),(n=this.elStartPosition)==null||n.append(this.elPopup),(r=this.elPopup.querySelector("div.top-popup_content.top-column"))==null||r.classList.remove("top-column"),(i=this.elPopup.querySelector(".notch-border"))==null||i.remove(),(u=this.elPopup.querySelector(".notch"))==null||u.remove(),(l=this.elPopupInner)==null||l.replaceWith(...this.elPopupInner.childNodes),e.default.storageClear(this.elPopup)):(e.default.storageClear(this.elPopup),this.elPopup.remove(),delete this.elPopup);const p=s.TopPopupWorker.getAllVisible(),o=p.length&&p[p.length-1];o?s.TopPopupWorker.getPopup(o).focus():document.documentElement.classList.remove("with_popup")},this.options.transitionDuration)))}async vueOpen(){var t;await((t=this.vueGetComponent())==null?void 0:t.onOpen(this))}vueClose(){var t;(t=this.vueGetComponent())==null||t.onClose(this)}vueGetComponent(){if(this.el instanceof HTMLElement&&this.options.id)return s.TopPopupWorker.vueConnectors.get(this.options.id)}}_.init(),P.Popup=m,P.default=m,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});
|
|
447
|
-
//# sourceMappingURL=popup-
|
|
446
|
+
`;d.Core.insertStyleToPage(L),d.Core.insertStyleToPage(E,"m"),d.Core.insertStyleToPage(k,"pc");class m extends x{static componentName="TopPopup";elActiveByDefault;elPopup;elPopupInner;elPopupHeader;elPopupWidget;elPopupBody;elPopupFooter;elFront;popupParent;$;elStartPosition;shift={top:0,left:0};isClosed=!1;isFirstClick=!0;type;options={popup:"",p:0,notch:!1,class:"",posBy:"left",frontSelector:"",invertX:!1,openByHover:!1,useOriginal:!1,transitionDuration:100,isFullScreen:!1};events={};constructor(t,p){super(),this.init(m.componentName,t,p)}async mount(){var n,r;if(!(this.el instanceof HTMLElement))return;const t=this.vueGetComponent();if(this.el.closest(".top-popup-wrapper")&&(this.popupParent=s.TopPopupWorker.getPopup(this.el.closest(".top-popup-wrapper"))),await this.mountJQuery(),e.default.css(this.el,"position")!=="absolute"&&(this.el.style.position="relative"),this.el.dataset.topPopupOpened="opened",this.elActiveByDefault=this.el.classList.contains("top-active"),this.el.classList.add("top-active"),t)this.type="vue",this.options.popup="",this.elPopup=e.default.genEl("div",{},this.options.popup);else if((n=this.options.popup)!=null&&n.match(/^[#.]/))this.type="selector",this.elPopup=document.querySelector(`${this.options.popup}.template`);else{if(this.type="html",this.options.useOriginal)throw"Option useOriginal not allowed for text templates";this.elPopup=e.default.genEl("div",{},this.options.popup??"")}if(!this.elPopup||t!=null&&t.opened){if(this.options.useOriginal||t!=null&&t.opened){if(t!=null&&t.opened?this.elPopup=t.popup.elPopup:this.elPopup=document.querySelector(`${this.options.popup}.top-popup-wrapper-shown`),this.elPopup){this.el.dataset.topPopupOpened="",this.elActiveByDefault||this.el.classList.remove("top-active"),s.TopPopupWorker.close(this.elPopup),setTimeout(()=>this.mount(),this.options.transitionDuration);return}throw"Option useOriginal state allowed only elements .template"}this.elPopup=document.querySelector(`${this.options.popup}:not(.top-popup-wrapper)`)}if(!this.elPopup)return;for(this.options.useOriginal?(this.elStartPosition=this.elPopup.closest(".top-popup-el-start-position"),this.elStartPosition||(this.elStartPosition=e.default.wrap(this.elPopup,"i"),this.elStartPosition.classList.add("top-popup-el-start-position","hidden"))):(this.elPopup=this.elPopup.cloneNode(!0),this.type==="selector"&&!this.elPopup.matches(".template")&&(this.elPopup.classList.remove("hidden"),this.elPopup.querySelector(":scope > .top-popup_content")||this.elPopup.classList.add("top-popup_content"),this.elPopup=e.default.wrap(this.elPopup,"div")),this.type==="html"&&(this.elPopup.querySelector(":scope > .top-popup_content")||(this.elPopup.classList.add("top-popup_content"),this.elPopup=e.default.wrap(this.elPopup,"div"))),(this.type==="selector"&&!this.elPopup.matches(".template")||this.type==="html"||this.type==="vue")&&(e.default.querySelectorAllArray(this.elPopup,"[data-top-popup]").forEach(i=>{i instanceof HTMLElement&&(i.dataset.topPopupPosBy="fixed")}),e.default.querySelectorAllArray(this.elPopup,".top-popup-wrapper").forEach(i=>i.remove()))),s.TopPopupWorker.decoratorBeforeOpen(this),t&&(this.options.class=t.classRef.value,t.transitionDurationRef.value!==void 0&&(this.options.transitionDuration=t.transitionDurationRef.value,this.elPopup instanceof HTMLElement&&this.elPopup.style.setProperty("--top-popup-transition-delay",this.options.transitionDuration+"ms"))),this.elPopupInner=document.createElement("div"),this.elPopupInner.classList.add("top-popupPanel","top-popup");this.elPopup.firstChild;)this.elPopupInner.appendChild(this.elPopup.firstChild);if(this.elPopup.append(this.elPopupInner),this.elPopup.classList.add("top-popup-wrapper"),this.options.class){const i=this.options.class.split(" ");this.elPopup.classList.add(...i)}this.options.notch&&(this.elPopup.classList.add("with_notch"),this.elPopup.insertAdjacentHTML("beforeend",'<i class="notch notch-border"></i><i class="notch"></i>')),await this.vueOpen(),this.elPopupHeader=this.elPopupInner.querySelector(".top-popup_header"),this.elPopupWidget=this.elPopupInner.querySelector(".top-popup_widget"),this.elPopupBody=this.elPopupInner.querySelector(".top-popup_content"),this.elPopupFooter=this.elPopupInner.querySelector(".top-popup_footer");const p=!!this.elPopup.querySelector('[data-widget="search"]');if(this.options.isFullScreen&&!p){const i=w.useI18n();!this.elPopupHeader&&i.Common.Close&&(this.elPopupHeader=e.default.genEl("i",{class:"top-popup_header"}),this.elPopupInner.prepend(this.elPopupHeader),this.elPopupHeader.prepend(e.default.genEl("i",{class:"a closer"},i.Common.Close)),this.elPopupHeader.append(e.default.genEl("i",{class:"top-popup_headerButton"})))}e.default.storage(this.elPopup,m.componentName,this),this.options.frontSelector&&(this.elFront=document.querySelector(this.options.frontSelector)),this.elFront||(this.elFront=this.el.closest(".top-popup-front")),this.elFront||(this.elFront=document.body),this.elPopup instanceof HTMLElement&&(this.elPopup.style.width=this.el.offsetWidth+"px",this.elPopup.style.height=this.el.offsetHeight+"px",this.elPopup.style.top=this.el.offsetTop+"px",this.elPopup.style.right=parseInt(this.el.style.right||"0")+"px",this.elPopup.style.bottom=parseInt(this.el.style.bottom||"0")+"px"),(r=this.el.parentElement)==null||r.insertBefore(this.elPopup,this.el),this.elPopup.classList.remove("template"),this.options.invertX&&this.elPopup.classList.add("invert-x");let o=!!this.el.closest(".modal-header");o||(o=!!this.el.closest("#top_panel")),o||(o=!!this.el.closest("#secondmenu")),o&&this.elPopup.classList.add("p-from-top"),setTimeout(()=>{var i;return(i=this.elPopup)==null?void 0:i.classList.add("top-popup-wrapper-shown")}),this.elFront&&!this.elFront.matches("body")&&(this.elFront.append(this.elPopup),this.shift.top=e.default.offset(this.el).top-this.el.offsetTop-e.default.offset(this.elFront).top,this.shift.left=e.default.offset(this.el).left-this.el.offsetLeft-e.default.offset(this.elFront).left,this.shift.top-=parseInt(this.el.style["margin-top"]||0),this.shift.left-=parseInt(this.el.style["margin-left"]||0),this.elPopup instanceof HTMLElement&&(this.elPopup.style.top=parseInt(this.elPopup.style.top||"0")+this.shift.top+"px",this.elPopup.style.left=parseInt(this.elPopup.style.left||"0")+this.shift.left+"px")),this.$&&d.Core.$&&this.$.trigger("aftershow.top-menu-popup",[d.Core.$(this.elPopup)]),this.recalcPosition(),this.elPopup.setAttribute("tabindex","0"),this.focus(),s.TopPopupWorker.decoratorAfterOpen(this),this.mountEvents()}async mountJQuery(){d.Core.$&&(this.$=d.Core.$(this.el))}focus(){let t;this.elPopup&&(t=e.default.querySelectorVisible(this.elPopup,".top-popup-autofocus"),t||(t=e.default.querySelectorVisible(this.elPopup,":read-write, select:not(:disabled)")),t||(t=e.default.querySelectorVisible(this.elPopup,".top-popup_footer .top-button")),t||(t=this.elPopup),t instanceof HTMLElement&&t.focus(),setTimeout(()=>{t instanceof HTMLElement&&t.focus()},this.options.transitionDuration))}mountEvents(){this.addEventListenerWithUnmount(document,"mousedown",t=>this.onMousedown(t)),this.elPopup&&this.elPopupInner&&(this.addEventListenerWithUnmount(this.elPopup,"focus",t=>this.onFocus(t)),this.options.openByHover&&(this.addEventListenerWithUnmount(this.elPopup,"mouseleave",t=>this.onMouseleave(t)),this.addEventListenerWithUnmount(this.elPopupInner,"mouseleave",t=>this.onMouseleave(t)))),this.options.isFullScreen&&this.elPopupBody&&this.addEventListenerWithUnmount(this.elPopupBody,"touchmove",t=>this.onTouchmove(t))}onMousedown(t){if(!this.elPopup||!(t.target instanceof Element)||!this.isFirstClick||(this.isFirstClick=!1,setTimeout(()=>this.isFirstClick=!0),t instanceof MouseEvent&&t.button!==0))return;let p=e.default.querySelectorVisibleLast(document.body,":scope > .top-popup-wrapper");p&&p!==this.elPopup||t.target.closest(".top-popup-front")&&(p=e.default.querySelectorVisibleLast(t.target.closest(".top-popup-front"),":scope > .top-popup-wrapper"),p&&p!==this.elPopup)||this.elPopup.contains(t.target)||this.elPopup.closest(".ui-dialog")&&!t.target.closest(".ui-dialog")||s.TopPopupWorker.decoratorIsIgnoreOuterClick(t)||s.TopPopupWorker.close(this.elPopup)}onFocus(t){if(t.target instanceof Element&&t.target.matches("input")||this.isClosed)return;s.TopPopupWorker.getAllVisible().forEach(o=>{var n,r,i,u;(n=this.elPopup)!=null&&n.contains(o)||((r=this.popupParent)==null?void 0:r.elPopup)===o||((u=(i=this.popupParent)==null?void 0:i.popupParent)==null?void 0:u.elPopup)===o||s.TopPopupWorker.close(o)})}onMouseleave(t){setTimeout(()=>{this.elPopupInner&&this.elPopupInner.matches(":hover")||!this.elPopup||s.TopPopupWorker.close(this.elPopup)},100)}onResize(){this.elPopup&&this.elPopup.parentElement!==document.body&&document.body.append(this.elPopup),this.elPopup instanceof HTMLElement&&(this.elPopup.style.top=e.default.offset(this.el).top+"px",this.elPopup.style.left=e.default.offset(this.el).left+"px")}unmount(){super.unmount(),this.el instanceof HTMLElement&&(this.el.dataset.topPopupOpened=""),this.elActiveByDefault||this.el.classList.remove("top-active");let t=this.el.getAttribute("style");t&&(t=t.replace(/position:[^;]*;?/g,""),this.el.setAttribute("style",t))}recalcPosition(){var g,b;if(!(this.elPopup instanceof HTMLElement))return;let t=this.options.p,p;if(this.el instanceof HTMLElement)switch(this.elPopup.style.height=this.el.offsetHeight+"px",this.elPopup.classList.remove("p0","p1","p2","p3","p4"),this.elPopup.classList.add("p"+t),this.options.posBy){case"left":p=this.el.offsetLeft+parseInt(this.el.style["margin-left"]||"0"),p+=this.shift.left,this.elPopup.style.left=p+"px";break;case"right":if(!(this.el.offsetParent instanceof HTMLElement))break;p=this.el.offsetLeft+parseInt(this.el.style["margin-left"]||"0"),this.elPopup.style.right=this.el.offsetParent.offsetWidth-this.el.offsetWidth-p+"px";break;case"fixed":this.addEventListenerWithUnmount(window,"resize",()=>this.onResize()),this.onResize();break;default:(g=this.options.posBy)==null||g.append(this.elPopup)}const o=this.elPopup.getBoundingClientRect();this.elPopup.style.setProperty("--top-popup-height",this.elPopup.offsetHeight+"px"),this.elPopup.style.setProperty("--top-popup-right-bounding",o.right+"px"),this.elPopup.style.setProperty("--top-popup-bottom-bounding",o.bottom+"px"),this.elPopup.style.setProperty("--top-popup-top",o.top+"px"),this.elPopup.style.setProperty("--top-popup-left",o.left+"px"),this.elPopupInner instanceof HTMLElement&&(this.elPopupInner.style.maxWidth="unset",this.elPopupInner.style.maxHeight="unset");let n=!1,r=!1,i=!1,u=!1,l=o.left>window.innerWidth/2,f=o.top>window.innerHeight/2;t===4&&(l=!l),t===1&&(f=!f);const h=(b=this.elPopupInner)==null?void 0:b.getBoundingClientRect();let a,c;if(h){a=window.innerWidth-h.right,c=window.innerHeight-h.bottom;const v=8;h.top<v&&(n=!0),a<v&&(r=!0),c<v&&(i=!0),h.left<v&&(u=!0)}n&&(t===0||t===1)&&f&&(t=3),i&&t===3&&f&&(t=1),r&&t===2&&l&&(t=4),u&&t===4&&l&&(t=2),r&&(t===0||t===1||t===3)&&this.elPopup.classList.add("invert-x"),i&&(t===2||t===4)&&f&&(t===2&&!l&&this.elPopup.classList.add("invert-y"),t===4&&!l&&this.elPopup.classList.add("invert-x"),this.elPopup.matches(".invert-y")||(t=1)),this.elPopup.classList.remove("p0","p1","p2","p3","p4"),this.elPopup.classList.add("p"+t),this.elPopupInner instanceof HTMLElement&&(this.elPopupInner.style.maxWidth="",this.elPopupInner.style.maxHeight=""),s.TopPopupWorker.scrollToActive(this.elPopup)}onTouchmove(t){var p,o,n;if(t.currentTarget instanceof HTMLElement&&t.target instanceof HTMLElement){if(t.currentTarget.scrollWidth>t.currentTarget.offsetWidth||(p=t.target.parentElement)!=null&&p.scrollWidth&&((o=t.target.parentElement)!=null&&o.offsetWidth)&&t.target.parentElement.scrollWidth>((n=t.target.parentElement)==null?void 0:n.offsetWidth))return;t.currentTarget.matches(".has_scroll")||t.preventDefault()}}close(){var t;this.isClosed||(this.isClosed=!0,this.$&&d.Core.$&&this.elPopup&&this.$.trigger("afterclose.top-menu-popup",[d.Core.$(this.elPopup)]),!s.TopPopupWorker.noClose&&(this.unmount(),(t=this.elPopup)==null||t.classList.add("top-popup-wrapper-closed"),setTimeout(()=>{var n,r,i,u,l;if(this.vueClose(),!this.elPopup)return;this.options.useOriginal?(this.elPopup.removeAttribute("style"),this.elPopup.classList.remove("top-popup-wrapper-shown","top-popup-wrapper-closed"),this.elPopup.classList.add("template"),(n=this.elStartPosition)==null||n.append(this.elPopup),(r=this.elPopup.querySelector("div.top-popup_content.top-column"))==null||r.classList.remove("top-column"),(i=this.elPopup.querySelector(".notch-border"))==null||i.remove(),(u=this.elPopup.querySelector(".notch"))==null||u.remove(),(l=this.elPopupInner)==null||l.replaceWith(...this.elPopupInner.childNodes),e.default.storageClear(this.elPopup)):(e.default.storageClear(this.elPopup),this.elPopup.remove(),delete this.elPopup);const p=s.TopPopupWorker.getAllVisible(),o=p.length&&p[p.length-1];o?s.TopPopupWorker.getPopup(o).focus():document.documentElement.classList.remove("with_popup")},this.options.transitionDuration)))}async vueOpen(){var t;await((t=this.vueGetComponent())==null?void 0:t.onOpen(this))}vueClose(){var t;(t=this.vueGetComponent())==null||t.onClose(this)}vueGetComponent(){if(this.el instanceof HTMLElement&&this.options.id)return s.TopPopupWorker.vueConnectors.get(this.options.id)}}_.init(),P.Popup=m,P.default=m,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});
|
|
447
|
+
//# sourceMappingURL=popup-Bcbpecn1.amd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popup-Bcbpecn1.amd.js","sources":["../../src/components/component.ts","../../src/components/popup/lib/popup.globalEvents.ts","../../src/components/popup/popup/style/popup.css?raw","../../src/components/popup/popup/style/popup.m.css?raw","../../src/components/popup/popup/style/popup.pc.css?raw","../../src/components/popup/lib/popup.ts"],"sourcesContent":["import DOM from '@/core/utils/dom';\n\n/**\n * Базовый компонент для js компонентов, не имеет отношения к Vue\n */\nclass Component {\n\n\tstatic componentName = 'Top';\n\n\tcomponentName: string | undefined; // имя класса компонента\n\tclassName: string | undefined; // имя css класса компонента\n\tuid: string | undefined; // уникальный id компонента\n\tel: HTMLElement | undefined; // элемент, связанный с компонентом\n\toptions = {}; // параметры компонента\n\n\tunmountEls: HTMLElement[] = [];\n\tunmountEvents: any[] = [];\n\n\t// переопредлять нельзя\n\t// если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()\n\t// используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса\n\tinit(componentName: string, el: HTMLElement, options: object): Component | void {\n\t\tif (!el) {\n\t\t\tthrow componentName + ': el is undefined';\n\t\t}\n\n\t\tconst component = Component.getComponent(el, componentName);\n\n\t\tif (component) {\n\t\t\tcomponent.reInit(options);\n\n\t\t\treturn component;\n\t\t}\n\n\t\tthis.componentName = componentName;\n\t\tthis.className = 'top' + componentName[0].toUpperCase() + componentName.substring(1);\n\t\tthis.uid = this.componentName + (Math.random() + '').replace('.', '');\n\n\t\tthis._setComponent(el);\n\t\tthis.el = el;\n\t\tthis.el.classList.add(this.className);\n\t\tthis.options = Object.assign(this.options, options);\n\n\t\tthis.mount();\n\t}\n\n\t// получить инициированный компонент\n\tstatic getComponent(el: HTMLElement, componentName: string): any {\n\t\treturn DOM.storage(el, '#' + componentName);\n\t}\n\n\t// устанвоить компонент\n\t_setComponent(el: HTMLElement) {\n\t\tDOM.storage(el, '#' + this.componentName, this);\n\t}\n\n\t// функция подключения компонента\n\tmount(): void {\n\t\tthrow 'Please, add method mount() to component: ' + this.componentName;\n\t}\n\n\t// функция отключения компонента\n\tunmount(): void {\n\t\tDOM.storage(this.el, '#' + this.componentName, null);\n\n\t\tthis.unmountEls.forEach((el) => {\n\t\t\tel.remove();\n\t\t});\n\n\t\tthis.unmountEls = [];\n\n\t\tthis.unmountEvents.forEach((eventData) => {\n\t\t\teventData.el.removeEventListener(eventData.type, eventData.listener, eventData.options);\n\t\t});\n\n\t\tthis.unmountEvents = [];\n\t}\n\n\t// указание новые элементы, которые должны будут удалиться после unmount\n\tregisterElForUnmount(el: HTMLElement): void {\n\t\tthis.unmountEls.push(el);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\taddEventListenerWithUnmount(\n\t\tel: HTMLElement | Document | Window,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: HTMLElement, e: Event) => any,\n\t\toptions?: any,\n\t): void {\n\t\tel.addEventListener(type, listener, options);\n\n\t\tthis.registerEventForUnmount(el, type, listener, options);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\tregisterEventForUnmount(\n\t\tel: HTMLElement | Document | Window,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: HTMLElement, e: Event) => any,\n\t\toptions?: any,\n\t): void {\n\t\tconst eventData = {\n\t\t\tel: el,\n\t\t\ttype: type,\n\t\t\tlistener: listener,\n\t\t\toptions: options,\n\t\t};\n\n\t\tthis.unmountEvents.push(eventData);\n\t}\n\n\t// функция перенастройки уже подключенного компонента\n\treInit(_options: object): void {\n\t\tthrow 'Please, add method reInit() to component: ' + this.componentName;\n\t}\n\n\tstatic detach(nodes: Node[]): void\n\tstatic detach(nodes: HTMLElement): void\n\n\t// удалить элементы из DOM, но не из памяти\n\tstatic detach(nodes: any): void {\n\t\tif (nodes.forEach) {\n\t\t\tnodes.forEach((node: Node) => node.parentElement?.removeChild(node));\n\t\t} else {\n\t\t\tconst el = nodes;\n\t\t\tel.parentElement?.removeChild(el);\n\t\t}\n\t}\n\n}\n\nexport default Component;\n","import Worker from '@/components/popup/lib/worker';\nimport DOM from '@/core/utils/dom';\n\n/**\n * Глобальные события, для реализации Popup\n * Автоматически инициируется при первой загрузке, не является выгружаемым модулем\n *\n * Если в меню встречает класс .preloader, то событие нажатия на кнопку через enter будет остановлено\n */\nclass GlobalEvents {\n\n\tprivate static isInited = false;\n\n\t/**\n\t * Добавить глобальные обработчики\n\t *\n\t * Добавляются на страницу один раз и навсегда\n\t */\n\tstatic init(): void {\n\t\tif (this.isInited) return;\n\n\t\tthis.isInited = true;\n\n\t\tdocument.addEventListener('click', this.onclick);\n\t\tdocument.addEventListener('keydown', this.onkeydown);\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t *\n\t * Обрабатывает клики внутри Popup\n\t */\n\tprivate static onclick(e: Event): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\t// элементы меню, клик по которым должен его закрыть\n\t\tconst elCloser = e.target.closest<HTMLElement>('.closer, a, .a, .top-button');\n\t\tif (elCloser) {\n\t\t\t// меню\n\t\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\t\t// клик вне меню\n\t\t\tif (!elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// элемент имеет модификатор, запрещаюущий закрытие меню по клику на него\n\t\t\tif (elCloser.matches('.top-popup-noCloser')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// deprecated, ссылки с href=\".\" запрещены, они должны быть заменены на .top-popup_listItem-button\n\t\t\tif (elCloser.getAttribute('href') === '.') {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\t// клик по кнопке открытия другого меню\n\t\t\tif (e.target.matches('[data-top-popup]')) {\n\t\t\t\t// список меню, в котором был сделан клик\n\t\t\t\tconst elUl = e.target.closest<HTMLElement>('ul');\n\n\t\t\t\t// элемент меню, по которому был сделан клик\n\t\t\t\tconst elItem = e.target.closest<HTMLElement>('a, .a');\n\n\t\t\t\t// сделать элемент меню, по которому сделан клик активным\n\t\t\t\tif (elUl) {\n\t\t\t\t\telUl.querySelector('a.top-active, .a.top-active')?.classList.remove('top-active');\n\t\t\t\t}\n\n\t\t\t\tif (elItem) {\n\t\t\t\t\telItem.classList.add('top-active');\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// закрыть меню\n\t\t\tWorker.close(elPopup);\n\t\t}\n\n\t\t// клик по фону меню\n\t\tif (e.target.matches('.top-popup-wrapper')) {\n\t\t\tconst elPopup = e.target;\n\n\t\t\tWorker.close(elPopup);\n\t\t}\n\t}\n\n\t/**\n\t * Глобальный обработчик нажатия кнопки на клавиатуре\n\t */\n\tprivate static onkeydown(e: KeyboardEvent): void {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tconst elPopup = e.target.closest<HTMLElement>('.top-popup-wrapper');\n\n\t\t// нажатие не в меню\n\t\tif (!elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector<HTMLElement>('ul.top-popup_content');\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tWorker.close(elPopup);\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\t// атоматическое нажатие кнопок при нажатии Enter\n\t\t\t\tif (!elUl) {\n\t\t\t\t\tif (DOM.querySelectorVisible(elPopup, '.preloader')) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// deprecated, старый код на сайте\n\t\t\t\t\tconst elBtn = DOM.querySelectorVisible(elPopup, '.top-popup_footer .go, .top-popup_footer [data-action]');\n\t\t\t\t\tif (elBtn instanceof HTMLElement) {\n\t\t\t\t\t\telBtn.click();\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Запуск клика последней кнопки, расположенной в footer'е Popup'а, нажатием клавиши Enter\n\t\t\t\t\tconst elFooterLastBtn = DOM.querySelectorVisibleLast(elPopup, '.top-popup_footer .top-button');\n\t\t\t\t\tif (elFooterLastBtn instanceof HTMLElement) {\n\t\t\t\t\t\telFooterLastBtn.click();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// перейти по ссылке по нажатию на Enter\n\t\t\t\t// данный функуционал игнорирует SPA\n\t\t\t\tconst elLink = DOM.querySelectorVisible(elPopup, 'li > a.top-active');\n\t\t\t\tif (elLink && elLink.getAttribute('href')) {\n\t\t\t\t\t// фокус может находиться на другой ссылке\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tlocation.href = elLink.getAttribute('href')!;\n\t\t\t\t}\n\n\t\t\t\t// кликнуть по элементу меню по нажатию на Enter\n\t\t\t\tconst elItem = elPopup.querySelector<HTMLElement>('li > .top-active');\n\t\t\t\tif (elItem instanceof HTMLElement) {\n\t\t\t\t\telItem.click();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\t// управление стрелками\n\t\t\tcase 'ArrowUp':\n\t\t\tcase 'ArrowRight':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tif (!elUl) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n\t\t\t\t\tconst elMoreVisible = DOM.querySelectorVisible(\n\t\t\t\t\t\telPopup,\n\t\t\t\t\t\t'ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore',\n\t\t\t\t\t);\n\t\t\t\t\tif (elMoreVisible) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tconst elItemActive = elPopup.querySelector<HTMLElement>('ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active')?.parentElement;\n\n\t\t\t\t// есть подменю\n\t\t\t\tif (e.key === 'ArrowRight' && elItemActive) {\n\t\t\t\t\t// const elItemMoreActive = elItemActive.querySelector<HTMLElement>('[data-top-popup].top-active');\n\t\t\t\t\t// if (elItemMoreActive) {\n\t\t\t\t\t// \treturn elItemMoreActive.click();\n\t\t\t\t\t// }\n\n\t\t\t\t\tconst elMore = elItemActive.querySelector<HTMLElement>('.top-active > .top-popup_listMore');\n\t\t\t\t\tif (elMore instanceof HTMLElement) {\n\t\t\t\t\t\treturn elMore.click();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst elsLiVisible = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li:not(.top-popup_liNoSelectable)');\n\t\t\t\tconst countLi = elsLiVisible.length;\n\n\t\t\t\tif (!countLi) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet index = -1;\n\t\t\t\tif (elItemActive) {\n\t\t\t\t\tindex = elsLiVisible.indexOf(elItemActive);\n\t\t\t\t}\n\n\t\t\t\tif (e.key === 'ArrowUp' || e.key === 'ArrowLeft') {\n\t\t\t\t\tindex--;\n\t\t\t\t} else {\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\n\t\t\t\t// это первый элемен, \"Назад\" должен закрывать окно\n\t\t\t\tif (e.key === 'ArrowLeft' && index === -1) {\n\t\t\t\t\tif (e.target.matches('input')) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Worker.close(elPopup);\n\t\t\t\t}\n\n\t\t\t\t// это последний элемен, \"Вперед\" не должен ни чего делать\n\t\t\t\tif (e.key === 'ArrowRight' && index === countLi) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (index < 0) {\n\t\t\t\t\tindex = countLi - 1;\n\t\t\t\t}\n\n\t\t\t\tif (index > countLi - 1) {\n\t\t\t\t\tindex = 0;\n\t\t\t\t}\n\n\t\t\t\telPopup.querySelectorAll('ul.top-popup_content > li > .top-active').forEach(el => el.classList.remove('top-active'));\n\t\t\t\telsLiVisible[index].querySelector(':scope > a, :scope > .a')?.classList.add('top-active');\n\n\t\t\t\tWorker.scrollToActive(elPopup);\n\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n}\n\nexport default GlobalEvents;\n","export default \":root {\\n\\t--top-popup-z-index: 200000;\\n\\t--top-popup-transition-delay: 100ms;\\n\\n\\t--top-popup-background-color: var(--color-layout-front);\\n\\t--top-popup-background-color-hover: var(--color-layout-over-2);\\n\\t--top-popup-background-color-active: var(--color-layout-over-4);\\n\\n\\t--top-popup-border-color: var(--color-line-2-opacity);\\n\\t--top-popup-title-background-color: var(--color-layer-1);\\n\\n\\t/* суммарный отсуп от каря popup до элемента */\\n\\t--top-popup-content-padding: calc(var(--top-popup-list-padding) + var(--top-popup-listItem-padding));\\n\\n\\t/* списки */\\n\\t--top-popup-list-padding: var(--top-padding-2);\\n\\n\\t--top-popup-listItem-radius: var(--top-radius-2);\\n\\t--top-popup-listItem-padding: var(--top-padding-2);\\n}\\n\\n.top-popup-front { position: relative; }\\n\\n.top-popup-wrapper {\\n\\t/* см. recalcPosition() */\\n\\t--top-popup-height: 0px;\\n\\t--top-popup-right-bounding: 0px;\\n\\t--top-popup-bottom-bounding: 0px;\\n\\t--top-popup-top: 0px;\\n\\t--top-popup-right: calc(100vw - var(--top-popup-right-bounding));\\n\\t--top-popup-bottom: calc(var(--100vh) - var(--top-popup-bottom-bounding));\\n\\t--top-popup-left: 0px;\\n\\n\\ttext-align: initial; white-space: normal; word-break: normal;\\n\\tposition: absolute; z-index: 200000;\\n}\\n\\n.top-popup-wrapper:not(.top-popup-wrapper-shown) { overflow: hidden; }\\n\\n/* top-popupPanel */\\n.top-popupPanel {\\n\\tcursor: default;\\n\\tbox-shadow: var(--top-shadow-b);\\n\\tborder-radius: 14px;\\n\\tbackground: var(--top-popup-background-color);\\n\\tposition: absolute; overflow: hidden;\\n\\tdisplay: flex; flex-direction: column;\\n}\\n\\n/* position */\\n.top-popup-wrapper > * {\\n\\topacity: 0;\\n\\ttransition: opacity var(--top-popup-transition-delay) linear, transform var(--top-popup-transition-delay) linear;\\n}\\n\\n.top-popup-wrapper.p0 > * { transform: translateY(-8px); }\\n\\n.top-popup-wrapper.p1 > * { transform: translateY(8px); }\\n\\n.top-popup-wrapper.p2 > * { transform: translateX(8px); }\\n\\n.top-popup-wrapper.p3 > * { transform: translateY(8px); }\\n\\n.top-popup-wrapper.p4 > * { transform: translateX(-8px); }\\n\\n.top-popup-wrapper-shown:not(.top-popup-wrapper-closed) > * {opacity: 1;transform: translate(0, 0) !important;}\\n\\n.top-popup-wrapper.p0 > .top-popup { top: calc(-16px); left: calc(0px - 8px); }\\n\\n.top-popup-wrapper.p1 > .top-popup { bottom: calc(100% + 8px); }\\n\\n.top-popup-wrapper.p2 > .top-popup { left: calc(100% + 8px); }\\n\\n.top-popup-wrapper.p3 > .top-popup { top: calc(100% + 8px); }\\n\\n.top-popup-wrapper.p4 > .top-popup { right: calc(100% + 8px); }\\n\\n.top-popup-wrapper.p2 > .top-popup,\\n.top-popup-wrapper.p4 > .top-popup { margin-top: -10px; }\\n\\n.top-popup-wrapper.p1.with_notch > .top-popup { margin-bottom: 5px; }\\n\\n.top-popup-wrapper.p2.with_notch > .top-popup { margin-left: 5px; }\\n\\n.top-popup-wrapper.p3.with_notch > .top-popup { margin-top: 5px; }\\n\\n.top-popup-wrapper.p4.with_notch > .top-popup { margin-right: 5px; }\\n\\n.top-popup-wrapper.invert-x > .top-popup { right: 0; }\\n\\n.top-popup-wrapper.invert-y > .top-popup { bottom: 0; }\\n\\n/* notch */\\n.top-popup-wrapper > .notch { border: 7.4px solid transparent; position: absolute; display: block; }\\n\\n.top-popup-wrapper.p1 > .notch { border-bottom: 0; border-top: 7.4px solid var(--color-layout-front); margin: 0 0 7.4px -7.4px; bottom: 100%; left: 50% }\\n\\n.top-popup-wrapper.p2 > .notch { border-left: 0; border-right: 7.4px solid var(--color-layout-front); margin: 0 0 -7.4px 7.4px; bottom: 50%; left: 100%; }\\n\\n.top-popup-wrapper.p3 > .notch { border-top: 0; border-bottom: 7.4px solid var(--color-layout-front); margin: 7.4px 0 0 -7.4px; top: 100%; left: 50%; }\\n\\n.top-popup-wrapper.p4 > .notch { border-right: 0; border-left: 7.4px solid var(--color-layout-front); margin: 0 7.4px -7.4px 0; bottom: 50%; right: 100%; }\\n\\n.top-popup-wrapper.p1 > .notch-border { border-top-color: rgba(0, 0, 0, 0.05); margin-bottom: 6px; }\\n\\n.top-popup-wrapper.p2 > .notch-border { border-right-color: rgba(0, 0, 0, 0.05); margin-left: 6px; }\\n\\n.top-popup-wrapper.p3 > .notch-border { border-bottom-color: rgba(0, 0, 0, 0.05); margin-top: 6px; }\\n\\n.top-popup-wrapper.p4 > .notch-border { border-left-color: rgba(0, 0, 0, 0.05); margin-right: 6px; }\\n\\n/* common */\\n.top-popup_header,\\n.top-popup_content,\\n.top-popup_footer { font-size: 14px; }\\n\\n.top-popup_header,\\n.top-popup_footer { display: flex; align-items: center; justify-content: space-between; }\\n\\n/* header */\\n.top-popup_header {\\n\\tcolor: var(--color-text-1);\\n\\tborder-bottom: 1px solid var(--top-popup-border-color);\\n\\tpadding: var(--top-padding-3);\\n\\tfont-weight: 600;\\n}\\n\\n.top-popup_header > * { font-weight: 400; }\\n\\n.top-popup_header > .a { cursor: pointer;}\\n\\n.top-popup_header > .a:hover { color: var(--color-text-primary); }\\n\\n.top-popup_headerButton { width: 60px; }\\n\\n/* widget */\\n.top-popup_widget {\\n\\tpadding: var(--top-padding-2) var(--top-padding-2) 0 var(--top-padding-2);\\n}\\n\\n/* content */\\n.top-popup_content {\\n\\tmargin: 0;\\n\\tflex-grow: 1;\\n\\toverflow-y: auto;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: var(--top-gap-4);\\n\\n\\t-webkit-overflow-scrolling: touch;\\n}\\n\\ndiv.top-popup_content {\\n\\tcolor: var(--color-text-1);\\n\\tpadding: var(--top-popup-content-padding);\\n}\\n\\ndiv.top-popup_content > * { flex-shrink: 0; }\\n\\ndiv.top-popup_content > .top-button { margin: 0; }\\n\\ndiv.top-popup_content .top-unwrap {\\n\\t--top-unwrap-x: var(--top-popup-content-padding);\\n}\\n\\nul.top-popup_content {\\n\\tcolor: var(--color-text-1);\\n\\tpadding: var(--top-popup-list-padding);\\n\\tgap: 2px;\\n}\\n\\nul.top-popup_content .top-unwrap {\\n\\t--top-unwrap-x: var(--top-popup-list-padding);\\n}\\n\\n.top-popup_listItem {\\n\\tborder-radius: var(--top-popup-listItem-radius);\\n\\tpadding: var(--top-popup-listItem-padding);\\n\\tline-height: 1 !important;\\n}\\n\\nul.top-popup_content li { margin: 0; list-style: none; display: flex; position: relative }\\n\\nul.top-popup_content li > * { flex-grow: 1; }\\n\\nul.top-popup_content li > a:not(.top-button),\\nul.top-popup_content li > .a {\\n\\tcursor: pointer;\\n\\tbox-sizing: border-box;\\n\\tborder-radius: var(--top-popup-listItem-radius);\\n\\tbackground: var(--top-popup-background-color);\\n\\tpadding: var(--top-popup-listItem-padding);\\n\\tcolor: var(--color-text-1) !important; font-size: 14px; font-weight: normal !important; text-decoration: none !important; font-style: normal;\\n\\tline-height: 1 !important;\\n\\tdisplay: flex; flex: 1 1 100%; align-items: center;\\n\\ttransition: background-color 0.1s ease-in-out;\\n}\\n\\n.top-popup-wrapper-no_animate ul.top-popup_content li > a:not(.top-button),\\n.top-popup-wrapper-no_animate ul.top-popup_content li > .a { transition: none; }\\n\\nul.top-popup_content li > a:not(.top-button):hover,\\nul.top-popup_content li > .a:hover { background: var(--top-popup-background-color-hover); }\\n\\nul.top-popup_content li > a:not(.top-button).top-active,\\nul.top-popup_content li > .a.top-active {\\n\\t--top-icon-color: var(--color-text-primary) !important;\\n\\n\\tbackground: var(--top-popup-background-color-active);\\n}\\n\\n.top-popup_content + .top-popup_content { padding-top: 0; }\\n\\n/* listTitle */\\n.top-popup_listItem-title {\\n\\tbackground: var(--color-layer-1);\\n\\tcolor: var(--color-text-1); font-size: 12px;\\n}\\n\\n/* listDelimiter */\\n.top-popup_listItem-delimiter {\\n\\tborder-radius: 3px;\\n\\tbackground: var(--top-popup-border-color);\\n\\theight: 1px;\\n\\tpadding: 0;\\n\\tmargin: 4px;\\n}\\n\\n/* listMore */\\n.top-popup_listMore {\\n\\tfont-size: 20px;\\n\\tmargin: calc(0px - var(--top-popup-listItem-padding)) calc(0px - var(--top-popup-listItem-padding) / 2) calc(0px - var(--top-popup-listItem-padding)) 0;\\n}\\n\\n.top-popup_listMore.top-button { margin: 0; }\\n\\nul.top-popup_content li > .a.top-popup_listMore {\\n\\ttext-align: center;\\n\\tflex-basis: 10px;\\n}\\n\\nul.top-popup_content li > .a.top-popup_listMore:before { color: var(--color-text-2); }\\n\\nul.top-popup_content li > * > .top-popup_listMore {\\n\\tmargin-left: auto;\\n\\tcolor: var(--color-layer-4);\\n\\tfont-size: 14px;\\n}\\n\\nul.top-popup_content li > * > i.top-popup_listMore:hover,\\nul.top-popup_content li > * > i.top-popup_listMore.top-active { color: var(--color-text-primary); }\\n\\nul.top-popup_content li > * > i.top-popup_listMore:before {\\n\\ttransform: rotate(90deg);\\n\\tdisplay: block;\\n}\\n\\nul.top-popup_content li a.close { background: none !important; }\\n\\n/* data-top-icon */\\n.top-popup_content > [data-top-icon]:before {\\n\\t--top-icon-size: 20px;\\n}\\n\\nul.top-popup_content li > [data-top-icon]:not(.top-button) {\\n\\t--top-icon-color: var(--color-text-3);\\n\\t--top-icon-size: 20px;\\n\\t--top-icon-width: 20px;\\n}\\n\\nul.top-popup_content li > [data-top-icon]:not(.top-button):before {\\n\\theight: 1rem; margin-right: 8px; transition: color 0.1s;\\n}\\n\\nul.top-popup_content li:hover > [data-top-icon]:not(.top-button) {\\n\\t--top-icon-color: var(--color-text-2);\\n}\\n\\n/* footer */\\n.top-popup_footer {\\n\\tpadding: var(--top-popup-list-padding);\\n\\tborder-top: 1px solid var(--top-popup-border-color);\\n\\tdisplay: flex;\\n\\tgap: var(--top-gap-2);\\n\\tjustify-content: flex-end;\\n}\\n\\n/* footerSupportLink */\\n.top-popup_footerSupportLink {\\n\\tmargin-right: auto;\\n}\\n\\n/* Виджеты */\\n.top-popup > [data-widget] { padding: 0 var(--top-popup-list-padding); }\\n\\n.top-popup > [data-widget] + hr { margin: 0 var(--top-popup-list-padding); }\\n\\n.top-popup .placeholder {\\n\\tborder: 1px solid #E0D9D9 !important; border-right: none !important; border-left: none !important; background: #F9F9F9 !important; margin: -1px 0; z-index: 1;\\n\\tposition: relative;\\n}\\n\\n/* компоненты */\\n.top-popup-wrapper.simple_list > .top-popup { min-width: 0; white-space: nowrap; }\\n\\n.top-popup_content .top-column { display: flex; flex-direction: column; gap: 4px; }\\n\\nhtml .top-popup .top-popup_content li > .top-button {\\n\\tmargin: calc(var(--top-popup-listItem-padding) / 2) var(--top-popup-listItem-padding);\\n}\\n\\n.top-popup li .check_all,\\n.top-popup li .clear_all { cursor: pointer; color: var(--color-text-primary); padding: 8px; display: inline-block; }\\n\\n.top-popup li .check_all:hover,\\n.top-popup li .clear_all:hover { text-decoration: underline; }\\n\\n.top-popup li .clear_all { display: none; }\\n\\n/* table */\\n.top-popup_content table { margin: -9px 0; }\\n\\n.top-popup_content table td,\\n.top-popup_content table th { padding: 9px var(--top-popup-listItem-padding) 9px 0; vertical-align: top; }\\n\\n.top-popup_content table th { width: 40%; font-weight: 600; white-space: nowrap; }\\n\\n/* формы */\\nul.top-popup_content .a > [type=\\\"checkbox\\\"],\\nul.top-popup_content .a > [type=\\\"radio\\\"] { margin: -8px 0 -8px auto; }\\n\\n/* deprecated */\\nul.top-popup_content a > [class*=icon],\\nul.top-popup_content i.a > [class*=icon] {\\n\\ttransition: 0.1s;\\n}\\n\\n.top-popup .buttons { border-radius: 0 0 4px 4px; border-top: 1px solid #BDC3C7; background: #ECF0F1; padding: 10px 15px; margin: 10px -15px -10px -15px; white-space: nowrap; }\\n\\n.top-popup_footer [class*=btn]:not(.btn-transparent) { min-width: 100px; padding: 5px 14px; margin-left: 10px; }\\n\\n.top-popup_footer [class*=btn]:first-child { margin-left: 0; }\\n\\n.top-popup_footer .btn.full_width { margin: 0; flex-grow: 1; }\\n\"","export default \":root {\\n\\t--top-popup-list-padding: 0px;\\n\\n\\t--top-popup-listItem-radius: 0px;\\n\\t--top-popup-listItem-padding: var(--top-padding-4);\\n}\\n\\nhtml.with_popup { background: #808080; }\\n\\n.top-popup-wrapper {\\n\\t--top-popup-footer-offset: 25px;\\n\\n\\twidth: auto !important; height: auto !important;\\n\\tposition: fixed; top: 0 !important; right: 0 !important; left: 0 !important; overflow: hidden;\\n\\ttransition: background 0.3s;\\n}\\n\\n.top-popup-wrapper-shown:not(.top-popup-wrapper-closed) { background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(1px); }\\n.top-popup-wrapper-shown:not(.top-popup-wrapper-closed) > .top-popup { opacity: 1 !important; }\\n\\n.top-popup {\\n\\tborder-radius: 8px 8px 0 0; width: auto !important; max-height: calc(100% - var(--header-height, 0px) - var(--toolbar-height, 0px) - 12px); margin: 0 !important;\\n\\ttop: auto !important; right: 0 !important; bottom: var(--toolbar-height, 0px) !important; left: 0 !important;\\n\\tdisplay: flex; flex-direction: column;\\n\\n\\t/* невозможно опустить элемент вниз за экран на 100%, fix: opacity и translateY(80%) */\\n\\ttransform: translateY(80%);\\n\\n\\ttransition: opacity 0.3s, transform 0.3s;\\n}\\n\\n/* from top */\\n.top-popup-wrapper.p-from-top {\\n\\t--top-popup-footer-offset: 0px;\\n\\n\\ttop: var(--header-height, 0px) !important;\\n}\\n.with_dialog .top-popup-wrapper.p-from-top { top: 50px !important; }\\n.top-popup-wrapper.p-from-top > .top-popup {\\n\\tborder-radius: 0 0 8px 8px; max-height: calc(100% - 24px); top: 0 !important; bottom: auto !important;\\n\\ttransform: translateY(calc(-100% - 24px));\\n}\\n\\n/* widget */\\n.top-popup_widget { padding: var(--top-padding-2);}\\n.top-popup_widget:not(.p-from-top) { order: 10; }\\n\\n/* content */\\nul.top-popup_content {\\n\\tgap: 0;\\n}\\nul.top-popup_content li:not(:last-child) { border-bottom: 1px solid var(--top-popup-border-color); }\\n\\n.top-popup-wrapper.top-style_alt > .top-popup > ul > li { border-bottom: none; }\\n\\n/* footer */\\n.top-popup_footer {\\n\\tflex-direction: column-reverse;\\n}\\n.top-popup_footer > .top-button {\\n\\t--top-forms-base-height: var(--top-forms-base-height_l);\\n\\n\\twidth: 100%;\\n}\\n\\n/* listTitle */\\nul.top-popup_content .top-popup_listItem-title {\\n\\t--top-popup-padding-v: 12px;\\n}\\n\\n/* listDelimiter */\\nul.top-popup_content .top-popup_listItem-delimiter { background: var(--color-line-1-opacity); height: 4px; margin: 0; }\\nul.top-popup_content li:first-child > .top-popup_listItem-delimiter { border-top: 1px solid var(--top-popup-border-color); }\\n\"","export default \"html:not(.with_dialog) { margin-right: 0 !important; }\\n\\n.top-popup { min-width: 250px; max-width: calc(100vw - var(--top-popup-left) - 16px); max-height: calc(var(--top-popup-bottom) + var(--top-popup-height)); }\\n.top-popup-wrapper.invert-x > .top-popup { max-width: calc(100vw - var(--top-popup-right) - 16px); }\\n.top-popup-wrapper.invert-y > .top-popup { max-height: calc(100vh - var(--top-popup-bottom) - 16px); }\\n\\n/* position */\\n.top-popup-wrapper.p1 > .top-popup { max-height: calc(var(--top-popup-top) - var(--header-height, 0px) - 16px); }\\n.top-popup-wrapper.p3 > .top-popup { max-height: calc(var(--top-popup-bottom) - 16px); }\\n.top-popup-wrapper.p2 > .top-popup { max-width: calc(var(--top-popup-right) - 16px); }\\n.top-popup-wrapper.p4 > .top-popup { max-width: calc(var(--top-popup-left) - 16px); }\\n\\n/* notch */\\n.top-popup-wrapper.p1.with_notch > .top-popup,\\n.top-popup-wrapper.p3.with_notch > .top-popup { margin-left: -16px !important; }\\n.top-popup-wrapper.p1.with_notch > .notch,\\n.top-popup-wrapper.p3.with_notch > .notch { margin-left: -8px !important; }\\n\\n.top-popup-wrapper.p1.with_notch.invert-x,\\n.top-popup-wrapper.p3.with_notch.invert-x { margin-left: 3px !important; }\\n.top-popup-wrapper.p1.with_notch.invert-x > .notch,\\n.top-popup-wrapper.p3.with_notch.invert-x > .notch { margin-left: -9px !important; }\\n\\n/* listMore */\\nul.top-popup_content li > * > i.top-popup_listMore { visibility: hidden; transition: none; }\\nul.top-popup_content li:hover > * > i.top-popup_listMore,\\nul.top-popup_content li > *.top-active > i.top-popup_listMore,\\nul.top-popup_content li > * > i.top-popup_listMore.top-active { visibility: visible; }\\n\"","import Core from '@/core/core/core';\nimport Component from '@/components/component';\nimport DOM from '@/core/utils/dom';\nimport Worker from '@/components/popup/lib/worker';\nimport GlobalEvents from '@/components/popup/lib/popup.globalEvents';\n\nimport css from '@/components/popup/popup/style/popup.css?raw';\nimport cssM from '@/components/popup/popup/style/popup.m.css?raw';\nimport cssPC from '@/components/popup/popup/style/popup.pc.css?raw';\nimport { useI18n } from '@/core/plugins/i18n';\n\nCore.insertStyleToPage(css);\nCore.insertStyleToPage(cssM, 'm');\nCore.insertStyleToPage(cssPC, 'pc');\n\nexport interface PopupOptions {\n\tpopup?: string,\n\tid?: string,\n\tp?: number,\n\tnotch?: boolean,\n\tclass?: string,\n\tposBy?: 'left' | 'right' | 'fixed' | Element,\n\tfrontSelector?: string,\n\tinvertX?: boolean,\n\topenByHover?: boolean,\n\tuseOriginal?: boolean,\n\ttransitionDuration?: number,\n\tisFullScreen?: boolean,\n}\n\n/**\n * Основной объект js компонента TopPopup\n *\n * Добавляет jQuery события на this.el, если jQuery загружен:\n *\n * - aftershow.top-menu-popup\n * - afterclose.top-menu-popup\n */\nexport class Popup extends Component {\n\n\tstatic componentName = 'TopPopup';\n\n\tdeclare el: HTMLElement; // элемент, вызвавший открытие Popup\n\telActiveByDefault: boolean | undefined; // элемент уже имеет класс top-active перед открытием окна\n\telPopup: HTMLElement | undefined | null; // Popup .top-popup-wrapper\n\telPopupInner: HTMLElement | undefined; // контентная часть Popup .top-popup\n\telPopupHeader: HTMLElement | undefined | null;\n\telPopupWidget: HTMLElement | undefined | null;\n\telPopupBody: HTMLElement | undefined | null;\n\telPopupFooter: HTMLElement | undefined | null;\n\telFront: HTMLElement | undefined | null;\n\n\tpopupParent: Popup | undefined;\n\n\t$: JQuery<HTMLElement> | undefined; // только, если есть jQuery\n\n\telStartPosition: HTMLElement | undefined | null; // используется для useOriginal\n\tshift = {\n\t\ttop: 0,\n\t\tleft: 0,\n\t};\n\tisClosed = false; // флаг того, что меню закрыто\n\tisFirstClick = true;\n\ttype: string | undefined; // selector или html\n\n\toptions: PopupOptions = {\n\t\tpopup: '', // selector, text\n\t\tp: 0, // положение меню (0 - над элементом, 1 - сверху, 2 - справа, 3 - снизу, 4 слева)\n\t\tnotch: false, // отображать ли клювик\n\n\t\tclass: '', // класс, добавляемый меню\n\n\t\tposBy: 'left', // способ привязки позиционирования меню (left/right - левый/правый край родителя, fixed - по окну)\n\t\tfrontSelector: '',\n\t\tinvertX: false, // базовая ордината - правая граница элемента, а не левая\n\t\topenByHover: false, // открывать при наведении\n\n\t\tuseOriginal: false, // использовать оригинальный шаблон, без клонирвоания (для сохранения состояния меню)\n\n\t\ttransitionDuration: 100, // значение прописано в css\n\n\t\tisFullScreen: false,\n\t};\n\n\tevents = {};\n\n\t/**\n\t * Создать Popup\n\t * @param el - элемент, открывающий меню\n\t * @param options\n\t */\n\tconstructor(el: HTMLElement, options: PopupOptions) {\n\t\tsuper();\n\n\t\tthis.init(Popup.componentName, el, options);\n\t}\n\n\tasync mount(): Promise<void> {\n\t\tif (!(this.el instanceof HTMLElement)) return;\n\t\tconst vueConnector = this.vueGetComponent();\n\n\t\tif (this.el.closest('.top-popup-wrapper')) this.popupParent = Worker.getPopup(this.el.closest('.top-popup-wrapper')!);\n\n\t\tawait this.mountJQuery();\n\n\t\tif (DOM.css(this.el, 'position') !== 'absolute') {\n\t\t\tthis.el.style.position = 'relative';\n\t\t}\n\n\t\tthis.el.dataset.topPopupOpened = 'opened';\n\t\tthis.elActiveByDefault = this.el.classList.contains('top-active');\n\t\tthis.el.classList.add('top-active');\n\n\t\tif (vueConnector) {\n\t\t\t// компонент vue Popup\n\t\t\tthis.type = 'vue';\n\n\t\t\tthis.options.popup = '';\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup);\n\t\t} else if (this.options.popup?.match(/^[#.]/)) {\n\t\t\t// selector\n\t\t\tthis.type = 'selector';\n\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}.template`);\n\t\t} else {\n\t\t\t// html\n\t\t\tthis.type = 'html';\n\n\t\t\tif (this.options.useOriginal) {\n\t\t\t\tthrow ('Option useOriginal not allowed for text templates');\n\t\t\t}\n\n\t\t\tthis.elPopup = DOM.genEl('div', {}, this.options.popup ?? '');\n\t\t}\n\n\t\tif (!this.elPopup || vueConnector?.opened) {\n\t\t\t// возможно шаблон не найден, так как он используется в уже открытом меню\n\t\t\tif (this.options.useOriginal || vueConnector?.opened) {\n\t\t\t\t// закрыть открытое меню\n\t\t\t\tif (vueConnector?.opened) {\n\t\t\t\t\tthis.elPopup = vueConnector.popup.elPopup;\n\t\t\t\t} else {\n\t\t\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}.top-popup-wrapper-shown`);\n\t\t\t\t}\n\n\t\t\t\tif (this.elPopup) {\n\t\t\t\t\tthis.el.dataset.topPopupOpened = '';\n\n\t\t\t\t\tif (!this.elActiveByDefault) {\n\t\t\t\t\t\tthis.el.classList.remove('top-active');\n\t\t\t\t\t}\n\n\t\t\t\t\tWorker.close(this.elPopup);\n\n\t\t\t\t\t// повторит попытку открыть меню\n\t\t\t\t\tsetTimeout(() => this.mount(), this.options.transitionDuration);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthrow ('Option useOriginal state allowed only elements .template');\n\t\t\t}\n\n\t\t\t// возможно вместо шаблона используется другой элемент\n\t\t\tthis.elPopup = document.querySelector<HTMLElement>(`${this.options.popup}:not(.top-popup-wrapper)`);\n\t\t}\n\n\t\tif (!this.elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.useOriginal) {\n\t\t\tthis.elStartPosition = this.elPopup.closest<HTMLElement>('.top-popup-el-start-position');\n\t\t\tif (!this.elStartPosition) {\n\t\t\t\tthis.elStartPosition = DOM.wrap(this.elPopup, 'i');\n\t\t\t\tthis.elStartPosition.classList.add('top-popup-el-start-position', 'hidden');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.elPopup = this.elPopup.cloneNode(true) as HTMLElement;\n\n\t\t\t// вывод в меню копии произвольного элемента\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template')) {\n\t\t\t\tthis.elPopup.classList.remove('hidden');\n\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\n\t\t\t\t}\n\n\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\n\t\t\t}\n\n\t\t\tif (this.type === 'html') {\n\t\t\t\tif (!this.elPopup.querySelector(':scope > .top-popup_content')) {\n\t\t\t\t\tthis.elPopup.classList.add('top-popup_content');\n\n\t\t\t\t\tthis.elPopup = DOM.wrap(this.elPopup, 'div');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// вложенный Popup\n\t\t\tif (this.type === 'selector' && !this.elPopup.matches('.template') || this.type === 'html' || this.type === 'vue') {\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '[data-top-popup]').forEach(el => {\n\t\t\t\t\tif (el instanceof HTMLElement) el.dataset.topPopupPosBy = 'fixed';\n\t\t\t\t});\n\t\t\t\tDOM.querySelectorAllArray(this.elPopup, '.top-popup-wrapper').forEach(el => el.remove());\n\t\t\t}\n\t\t}\n\n\t\tWorker.decoratorBeforeOpen(this);\n\n\t\tif (vueConnector) {\n\t\t\tthis.options.class = vueConnector.classRef.value;\n\t\t\tif (vueConnector.transitionDurationRef.value !== undefined) {\n\t\t\t\tthis.options.transitionDuration = vueConnector.transitionDurationRef.value;\n\n\t\t\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\t\t\tthis.elPopup.style.setProperty(\n\t\t\t\t\t\t'--top-popup-transition-delay',\n\t\t\t\t\t\tthis.options.transitionDuration + 'ms',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.elPopupInner = document.createElement('div');\n\t\tthis.elPopupInner.classList.add('top-popupPanel', 'top-popup');\n\n\t\twhile (this.elPopup.firstChild) {\n\t\t\tthis.elPopupInner.appendChild(this.elPopup.firstChild);\n\t\t}\n\n\t\tthis.elPopup.append(this.elPopupInner);\n\n\t\tthis.elPopup.classList.add('top-popup-wrapper');\n\n\t\tif (this.options.class) {\n\t\t\tconst classes = this.options.class.split(' ');\n\t\t\tthis.elPopup.classList.add(...classes);\n\t\t}\n\n\t\tif (this.options.notch) {\n\t\t\tthis.elPopup.classList.add('with_notch');\n\t\t\tthis.elPopup.insertAdjacentHTML('beforeend', '<i class=\"notch notch-border\"></i><i class=\"notch\"></i>');\n\t\t}\n\n\t\tawait this.vueOpen();\n\n\t\tthis.elPopupHeader = this.elPopupInner.querySelector<HTMLElement>('.top-popup_header');\n\t\tthis.elPopupWidget = this.elPopupInner.querySelector<HTMLElement>('.top-popup_widget');\n\t\tthis.elPopupBody = this.elPopupInner.querySelector<HTMLElement>('.top-popup_content');\n\t\tthis.elPopupFooter = this.elPopupInner.querySelector<HTMLElement>('.top-popup_footer');\n\n\t\tconst existsWidgetSearch = !!this.elPopup.querySelector('[data-widget=\"search\"]');\n\n\t\tif (this.options.isFullScreen && !existsWidgetSearch) {\n\t\t\tconst i18n = useI18n();\n\n\t\t\tif (!this.elPopupHeader && i18n.Common.Close) {\n\t\t\t\tthis.elPopupHeader = DOM.genEl('i', { class: 'top-popup_header' });\n\t\t\t\tthis.elPopupInner.prepend(this.elPopupHeader);\n\n\t\t\t\tthis.elPopupHeader.prepend(DOM.genEl('i', { class: 'a closer' }, i18n.Common.Close));\n\t\t\t\tthis.elPopupHeader.append(DOM.genEl('i', { class: 'top-popup_headerButton' }));\n\t\t\t}\n\t\t}\n\n\t\tDOM.storage(this.elPopup, Popup.componentName, this);\n\n\t\tif (this.options.frontSelector) {\n\t\t\tthis.elFront = document.querySelector<HTMLElement>(this.options.frontSelector);\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = this.el.closest<HTMLElement>('.top-popup-front');\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = document.body;\n\t\t}\n\n\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.width = this.el.offsetWidth + 'px';\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\t\t\tthis.elPopup.style.top = this.el.offsetTop + 'px';\n\t\t\tthis.elPopup.style.right = parseInt(this.el.style.right || '0') + 'px';\n\t\t\tthis.elPopup.style.bottom = parseInt(this.el.style.bottom || '0') + 'px';\n\t\t}\n\n\t\tthis.el.parentElement?.insertBefore(this.elPopup, this.el);\n\t\tthis.elPopup.classList.remove('template');\n\n\t\tif (this.options.invertX) {\n\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t}\n\n\t\tlet fromTop = !!this.el.closest('.modal-header');\n\t\tif (!fromTop) {\n\t\t\tfromTop = !!this.el.closest('#top_panel');\n\t\t}\n\t\tif (!fromTop) {\n\t\t\tfromTop = !!this.el.closest('#secondmenu');\n\t\t}\n\t\tif (fromTop) {\n\t\t\tthis.elPopup.classList.add('p-from-top');\n\t\t}\n\n\t\t// появление с анимацией\n\t\tsetTimeout(() => this.elPopup?.classList.add('top-popup-wrapper-shown'));\n\n\t\tif (this.elFront && !this.elFront.matches('body')) {\n\t\t\tthis.elFront.append(this.elPopup);\n\n\t\t\tthis.shift.top = DOM.offset(this.el).top - this.el.offsetTop - DOM.offset(this.elFront).top;\n\t\t\tthis.shift.left = DOM.offset(this.el).left - this.el.offsetLeft - DOM.offset(this.elFront).left;\n\n\t\t\t// position() не учитывает margin, замечено для flex\n\t\t\tthis.shift.top -= parseInt(this.el.style['margin-top'] || 0);\n\t\t\tthis.shift.left -= parseInt(this.el.style['margin-left'] || 0);\n\n\t\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\t\tthis.elPopup.style.top = parseInt(this.elPopup.style.top || '0') + this.shift.top + 'px';\n\t\t\t\tthis.elPopup.style.left = parseInt(this.elPopup.style.left || '0') + this.shift.left + 'px';\n\t\t\t}\n\t\t}\n\n\t\tif (this.$ && Core.$) {\n\t\t\tthis.$.trigger('aftershow.top-menu-popup', [Core.$(this.elPopup)]);\n\t\t}\n\n\t\tthis.recalcPosition();\n\n\t\tthis.elPopup.setAttribute('tabindex', '0');\n\t\tthis.focus();\n\n\t\tWorker.decoratorAfterOpen(this);\n\n\t\tthis.mountEvents();\n\t}\n\n\tasync mountJQuery() {\n\t\tif (!Core.$) return;\n\n\t\tthis.$ = Core.$(this.el);\n\t}\n\n\t/**\n\t * Выполнить фокусировку на нужный элемент после открытия окна\n\t */\n\tfocus(): void {\n\t\tlet el: Element | null;\n\n\t\tif (this.elPopup) {\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup-autofocus');\n\n\t\t\t// поле ввода\n\t\t\tif (!el) {\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, ':read-write, select:not(:disabled)');\n\t\t\t}\n\n\t\t\t// кнопка\n\t\t\tif (!el) {\n\t\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup_footer .top-button');\n\t\t\t}\n\n\t\t\tif (!el) {\n\t\t\t\tel = this.elPopup;\n\t\t\t}\n\n\t\t\t// выполнить фокусировку сразу, для применения необъодимых стилей\n\t\t\tif (el instanceof HTMLElement) el.focus();\n\n\t\t\t// выполнить фокусировку после завершения анимации открытия popup\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (el instanceof HTMLElement) el.focus();\n\t\t\t}, this.options.transitionDuration);\n\t\t}\n\t}\n\n\tmountEvents(): void {\n\t\t// закрытие при клике вне контекстного меню\n\t\tthis.addEventListenerWithUnmount(document, 'mousedown', (e) => this.onMousedown(e as MouseEvent));\n\n\t\tif (this.elPopup && this.elPopupInner) {\n\t\t\t// закрыть другие меню\n\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'focus', (e) => this.onFocus(e as FocusEvent));\n\n\t\t\t// автоматическое закрытие при отведении мыши\n\t\t\tif (this.options.openByHover) {\n\t\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\n\t\t\t\tthis.addEventListenerWithUnmount(this.elPopupInner, 'mouseleave', (e) => this.onMouseleave(e as MouseEvent));\n\t\t\t}\n\t\t}\n\n\t\t// не скроллить страницу\n\t\tif (this.options.isFullScreen && this.elPopupBody) {\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupBody, 'touchmove', (e) => this.onTouchmove(e as TouchEvent));\n\t\t}\n\t}\n\n\t/**\n\t * Обработка клика вне окна\n\t */\n\tprivate onMousedown(e: MouseEvent): void {\n\t\t// // не оригинальное событие\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\n\t\t// \treturn;\n\t\t// }\n\n\t\t// Popup уже закрыт\n\t\tif (!this.elPopup || !(e.target instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик на внешнем элементе\n\t\tif (!this.isFirstClick) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isFirstClick = false;\n\t\tsetTimeout(() => this.isFirstClick = true);\n\n\t\t// клик не основной кнопкой мыши\n\t\tif (e instanceof MouseEvent && e.button !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// открыто другое меню с posBy = fixed, сначала должно быть закрыто оно\n\t\tlet elPopupOpened = DOM.querySelectorVisibleLast(document.body, ':scope > .top-popup-wrapper');\n\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\treturn;\n\t\t}\n\n\t\t// открыто другое меню в top-popup-front, сначала должно быть закрыто оно\n\t\tif (e.target.closest('.top-popup-front')) {\n\t\t\telPopupOpened = DOM.querySelectorVisibleLast(e.target.closest('.top-popup-front')!, ':scope > .top-popup-wrapper');\n\n\t\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// клик внутри этого меню\n\t\tif (this.elPopup.contains(e.target)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// клик вне родительского диалогового окна\n\t\tif (this.elPopup.closest('.ui-dialog') && !e.target.closest('.ui-dialog')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Worker.decoratorIsIgnoreOuterClick(e)) {\n\t\t\treturn;\n\t\t}\n\n\t\tWorker.close(this.elPopup);\n\t}\n\n\t/**\n\t * Закрыть другие Popup при фокусе на элемент формы в текущем\n\t */\n\tprivate onFocus(e: FocusEvent): void {\n\t\tif (e.target instanceof Element && e.target.matches('input')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// // не оригинальное событие\n\t\t// if (!e || !e.originalEvent || !e.originalEvent.isTrusted) {\n\t\t// \treturn;\n\t\t// }\n\n\t\t// это окно уже закрывается\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elsPopups = Worker.getAllVisible();\n\t\telsPopups.forEach(elPopup => {\n\t\t\t// фокус внутри этого окна\n\t\t\tif (this.elPopup?.contains(elPopup)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// это Popup из которого был открыт Popup с фокусом\n\t\t\t// глубина вложенности: до 3 подменю\n\t\t\tif (\n\t\t\t\tthis.popupParent?.elPopup === elPopup ||\n\t\t\t\tthis.popupParent?.popupParent?.elPopup === elPopup\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.close(elPopup);\n\t\t});\n\t}\n\n\t/**\n\t * Закрыть Popup при отведении мыши\n\t */\n\tprivate onMouseleave(_e: MouseEvent): void {\n\t\tsetTimeout(() => {\n\t\t\tif (this.elPopupInner && this.elPopupInner.matches(':hover') || !this.elPopup) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.close(this.elPopup);\n\t\t}, 100);\n\t}\n\n\t/**\n\t * Контроль положения Popup при fixed позиционировании\n\t */\n\tprivate onResize(): void {\n\t\t// на android при вызове метода append сбрасывается фокус с input внутри this.elPopup\n\t\tif (this.elPopup && this.elPopup.parentElement !== document.body) {\n\t\t\tdocument.body.append(this.elPopup);\n\t\t}\n\n\t\tif (this.elPopup instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.top = DOM.offset(this.el).top + 'px';\n\t\t\tthis.elPopup.style.left = DOM.offset(this.el).left + 'px';\n\t\t}\n\t}\n\n\tunmount(): void {\n\t\tsuper.unmount();\n\n\t\tif (this.el instanceof HTMLElement) this.el.dataset.topPopupOpened = '';\n\t\tif (!this.elActiveByDefault) {\n\t\t\tthis.el.classList.remove('top-active');\n\t\t}\n\n\t\tlet style = this.el.getAttribute('style');\n\t\tif (style) {\n\t\t\tstyle = style.replace(/position:[^;]*;?/g, '');\n\t\t\tthis.el.setAttribute('style', style);\n\t\t}\n\t}\n\n\t// контроль за положением Popup, чтобы оно не вылезало за пределы документа\n\trecalcPosition(): void {\n\t\tif (!(this.elPopup instanceof HTMLElement)) return;\n\n\t\tlet p = this.options.p;\n\t\tlet leftPos: number;\n\n\t\tif (this.el instanceof HTMLElement) {\n\t\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\n\t\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\t\tthis.elPopup.classList.add('p' + p);\n\n\t\t\tswitch (this.options.posBy) {\n\t\t\t\tcase 'left':\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\n\t\t\t\t\tleftPos += this.shift.left;\n\t\t\t\t\tthis.elPopup.style.left = leftPos + 'px';\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'right':\n\t\t\t\t\tif (!(this.el.offsetParent instanceof HTMLElement)) break;\n\n\t\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || '0');\n\t\t\t\t\tthis.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - leftPos + 'px';\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'fixed':\n\t\t\t\t\tthis.addEventListenerWithUnmount(window, 'resize', () => this.onResize());\n\n\t\t\t\t\tthis.onResize();\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.options.posBy?.append(this.elPopup);\n\t\t\t}\n\t\t}\n\n\t\t// контроль за пложением Popup, чтобы оно не вылезало за пределы документа\n\t\tconst boundingClientRect = this.elPopup.getBoundingClientRect();\n\t\tthis.elPopup.style.setProperty('--top-popup-height', this.elPopup.offsetHeight + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-right-bounding', boundingClientRect.right + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-bottom-bounding', boundingClientRect.bottom + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-top', boundingClientRect.top + 'px');\n\t\tthis.elPopup.style.setProperty('--top-popup-left', boundingClientRect.left + 'px');\n\n\t\tif (this.elPopupInner instanceof HTMLElement) {\n\t\t\tthis.elPopupInner.style.maxWidth = 'unset';\n\t\t\tthis.elPopupInner.style.maxHeight = 'unset';\n\t\t}\n\n\t\tlet outTop = false;\n\t\tlet outRight = false;\n\t\tlet outBottom = false;\n\t\tlet outLeft = false;\n\n\t\t// имеет ли смысл прикреплять окно к другой стороне кнопки\n\t\tlet usefulInvertX = boundingClientRect.left > window.innerWidth / 2;\n\t\tlet usefulInvertY = boundingClientRect.top > window.innerHeight / 2;\n\n\t\tif (p === 4) {\n\t\t\tusefulInvertX = !usefulInvertX;\n\t\t}\n\n\t\tif (p === 1) {\n\t\t\tusefulInvertY = !usefulInvertY;\n\t\t}\n\n\t\tconst contentBoundingClientRect = this.elPopupInner?.getBoundingClientRect();\n\t\tlet contentRight: number;\n\t\tlet contentBottom: number;\n\n\t\tif (contentBoundingClientRect) {\n\t\t\tcontentRight = window.innerWidth - contentBoundingClientRect.right;\n\t\t\tcontentBottom = window.innerHeight - contentBoundingClientRect.bottom;\n\n\t\t\tconst margin = 8;\n\n\t\t\tif (contentBoundingClientRect.top < margin) {\n\t\t\t\toutTop = true;\n\t\t\t}\n\n\t\t\tif (contentRight < margin) {\n\t\t\t\toutRight = true;\n\t\t\t}\n\n\t\t\tif (contentBottom < margin) {\n\t\t\t\toutBottom = true;\n\t\t\t}\n\n\t\t\tif (contentBoundingClientRect.left < margin) {\n\t\t\t\toutLeft = true;\n\t\t\t}\n\t\t}\n\n\t\tif (outTop && (p === 0 || p === 1) && usefulInvertY) {\n\t\t\tp = 3;\n\t\t}\n\n\t\tif (outBottom && p === 3 && usefulInvertY) {\n\t\t\tp = 1;\n\t\t}\n\n\t\tif (outRight && p === 2 && usefulInvertX) {\n\t\t\tp = 4;\n\t\t}\n\n\t\tif (outLeft && p === 4 && usefulInvertX) {\n\t\t\tp = 2;\n\t\t}\n\n\t\tif (outRight && (p === 0 || p === 1 || p === 3)) {\n\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t}\n\n\t\tif (outBottom && (p === 2 || p === 4) && usefulInvertY) {\n\t\t\t// меню справа может перемещаться вверх, толкьо если есть место слева\n\t\t\tif (p === 2 && !usefulInvertX) {\n\t\t\t\tthis.elPopup.classList.add('invert-y');\n\t\t\t}\n\n\t\t\t// меню слева перемещаясь вверх, должно открываться влево\n\t\t\tif (p === 4 && !usefulInvertX) {\n\t\t\t\tthis.elPopup.classList.add('invert-x');\n\t\t\t}\n\n\t\t\tif (!this.elPopup.matches('.invert-y')) {\n\t\t\t\tp = 1;\n\t\t\t}\n\t\t}\n\n\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\tthis.elPopup.classList.add('p' + p);\n\n\t\tif (this.elPopupInner instanceof HTMLElement) {\n\t\t\tthis.elPopupInner.style.maxWidth = '';\n\t\t\tthis.elPopupInner.style.maxHeight = '';\n\t\t}\n\n\t\tWorker.scrollToActive(this.elPopup);\n\t};\n\n\tonTouchmove(e: TouchEvent): void {\n\t\tif (e.currentTarget instanceof HTMLElement && e.target instanceof HTMLElement) {\n\t\t\t// разрешить горизональный скролл\n\t\t\tlet hasScrollX = e.currentTarget.scrollWidth > e.currentTarget.offsetWidth;\n\t\t\tif (hasScrollX) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.target.parentElement?.scrollWidth && e.target.parentElement?.offsetWidth) {\n\t\t\t\t// разрешить горизональный скролл\n\t\t\t\tlet hasScrollX2 = e.target.parentElement.scrollWidth > e.target.parentElement?.offsetWidth;\n\t\t\t\tif (hasScrollX2) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!e.currentTarget.matches('.has_scroll')) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isClosed = true;\n\n\t\tif (this.$ && Core.$ && this.elPopup) {\n\t\t\tthis.$.trigger('afterclose.top-menu-popup', [Core.$(this.elPopup)]);\n\t\t}\n\n\t\tif (Worker.noClose) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.unmount();\n\n\t\tthis.elPopup?.classList.add('top-popup-wrapper-closed');\n\n\t\tsetTimeout(() => {\n\t\t\tthis.vueClose();\n\n\t\t\tif (!this.elPopup) return;\n\n\t\t\tif (this.options.useOriginal) {\n\t\t\t\tthis.elPopup.removeAttribute('style');\n\t\t\t\tthis.elPopup.classList.remove('top-popup-wrapper-shown', 'top-popup-wrapper-closed');\n\t\t\t\tthis.elPopup.classList.add('template');\n\t\t\t\tthis.elStartPosition?.append(this.elPopup);\n\n\t\t\t\tthis.elPopup.querySelector('div.top-popup_content.top-column')?.classList.remove('top-column');\n\t\t\t\tthis.elPopup.querySelector('.notch-border')?.remove();\n\t\t\t\tthis.elPopup.querySelector('.notch')?.remove();\n\n\t\t\t\tthis.elPopupInner?.replaceWith(...this.elPopupInner.childNodes);\n\n\t\t\t\tDOM.storageClear(this.elPopup);\n\t\t\t} else {\n\t\t\t\tDOM.storageClear(this.elPopup);\n\n\t\t\t\tthis.elPopup.remove();\n\t\t\t\tdelete this.elPopup;\n\t\t\t}\n\n\t\t\tconst elsPopups = Worker.getAllVisible();\n\t\t\tconst elPopupLast = elsPopups.length && elsPopups[elsPopups.length - 1];\n\n\t\t\tif (elPopupLast) {\n\t\t\t\tWorker.getPopup(elPopupLast).focus();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement.classList.remove('with_popup');\n\t\t\t}\n\t\t}, this.options.transitionDuration);\n\t}\n\n\tasync vueOpen(): Promise<void> {\n\t\tawait this.vueGetComponent()?.onOpen(this);\n\t}\n\n\tvueClose(): void {\n\t\tthis.vueGetComponent()?.onClose(this);\n\t}\n\n\t// получить vueConnectors компонента Popup\n\tvueGetComponent() {\n\t\tif (this.el instanceof HTMLElement && this.options.id) return Worker.vueConnectors.get(this.options.id);\n\t}\n}\n\nGlobalEvents.init();\n\nexport default Popup;\n"],"names":["Component","componentName","el","options","component","utils_dom","eventData","type","listener","nodes","node","_a","GlobalEvents","e","elCloser","elUl","popup_worker","elPopup","elBtn","elFooterLastBtn","elItem","elMore","countLi","elsLiVisible","index","_b","css","cssM","cssPC","Core","Popup","vueConnector","classes","existsWidgetSearch","i18n$1","i18n","fromTop","forms","elPopupOpened","_d","_c","p","leftPos","boundingClientRect","outTop","outRight","outBottom","outLeft","usefulInvertX","usefulInvertY","margin","contentBoundingClientRect","contentRight","contentBottom","_e","elsPopups","elPopupLast"],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECAAC,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as f } from "./forms-
|
|
1
|
+
import { C as f } from "./forms-UyeTiEcX.es.js";
|
|
2
2
|
import n from "../utils/dom.js";
|
|
3
3
|
import { TopPopupWorker as s } from "../popup/worker.js";
|
|
4
4
|
import { a as P } from "./i18n-DuTvft1T.es.js";
|
|
5
|
-
class
|
|
5
|
+
class x {
|
|
6
6
|
static componentName = "Top";
|
|
7
7
|
componentName;
|
|
8
8
|
// имя класса компонента
|
|
@@ -22,7 +22,7 @@ class b {
|
|
|
22
22
|
init(t, p, o) {
|
|
23
23
|
if (!p)
|
|
24
24
|
throw t + ": el is undefined";
|
|
25
|
-
const e =
|
|
25
|
+
const e = x.getComponent(p, t);
|
|
26
26
|
if (e)
|
|
27
27
|
return e.reInit(o), e;
|
|
28
28
|
this.componentName = t, this.className = "top" + t[0].toUpperCase() + t.substring(1), this.uid = this.componentName + (Math.random() + "").replace(".", ""), this._setComponent(p), this.el = p, this.el.classList.add(this.className), this.options = Object.assign(this.options, o), this.mount();
|
|
@@ -183,12 +183,12 @@ const y = `:root {
|
|
|
183
183
|
--top-popup-z-index: 200000;
|
|
184
184
|
--top-popup-transition-delay: 100ms;
|
|
185
185
|
|
|
186
|
-
--top-popup-background-color: var(--color-
|
|
187
|
-
--top-popup-background-color-hover: var(--color-
|
|
188
|
-
--top-popup-background-color-active: var(--color-
|
|
186
|
+
--top-popup-background-color: var(--color-layout-front);
|
|
187
|
+
--top-popup-background-color-hover: var(--color-layout-over-2);
|
|
188
|
+
--top-popup-background-color-active: var(--color-layout-over-4);
|
|
189
189
|
|
|
190
190
|
--top-popup-border-color: var(--color-line-2-opacity);
|
|
191
|
-
--top-popup-title-background-color: var(--color-layer-
|
|
191
|
+
--top-popup-title-background-color: var(--color-layer-1);
|
|
192
192
|
|
|
193
193
|
/* суммарный отсуп от каря popup до элемента */
|
|
194
194
|
--top-popup-content-padding: calc(var(--top-popup-list-padding) + var(--top-popup-listItem-padding));
|
|
@@ -274,13 +274,13 @@ const y = `:root {
|
|
|
274
274
|
/* notch */
|
|
275
275
|
.top-popup-wrapper > .notch { border: 7.4px solid transparent; position: absolute; display: block; }
|
|
276
276
|
|
|
277
|
-
.top-popup-wrapper.p1 > .notch { border-bottom: 0; border-top: 7.4px solid var(--
|
|
277
|
+
.top-popup-wrapper.p1 > .notch { border-bottom: 0; border-top: 7.4px solid var(--color-layout-front); margin: 0 0 7.4px -7.4px; bottom: 100%; left: 50% }
|
|
278
278
|
|
|
279
|
-
.top-popup-wrapper.p2 > .notch { border-left: 0; border-right: 7.4px solid var(--
|
|
279
|
+
.top-popup-wrapper.p2 > .notch { border-left: 0; border-right: 7.4px solid var(--color-layout-front); margin: 0 0 -7.4px 7.4px; bottom: 50%; left: 100%; }
|
|
280
280
|
|
|
281
|
-
.top-popup-wrapper.p3 > .notch { border-top: 0; border-bottom: 7.4px solid var(--
|
|
281
|
+
.top-popup-wrapper.p3 > .notch { border-top: 0; border-bottom: 7.4px solid var(--color-layout-front); margin: 7.4px 0 0 -7.4px; top: 100%; left: 50%; }
|
|
282
282
|
|
|
283
|
-
.top-popup-wrapper.p4 > .notch { border-right: 0; border-left: 7.4px solid var(--
|
|
283
|
+
.top-popup-wrapper.p4 > .notch { border-right: 0; border-left: 7.4px solid var(--color-layout-front); margin: 0 7.4px -7.4px 0; bottom: 50%; right: 100%; }
|
|
284
284
|
|
|
285
285
|
.top-popup-wrapper.p1 > .notch-border { border-top-color: rgba(0, 0, 0, 0.05); margin-bottom: 6px; }
|
|
286
286
|
|
|
@@ -310,7 +310,7 @@ const y = `:root {
|
|
|
310
310
|
|
|
311
311
|
.top-popup_header > .a { cursor: pointer;}
|
|
312
312
|
|
|
313
|
-
.top-popup_header > .a:hover { color: var(--color-text-primary
|
|
313
|
+
.top-popup_header > .a:hover { color: var(--color-text-primary); }
|
|
314
314
|
|
|
315
315
|
.top-popup_headerButton { width: 60px; }
|
|
316
316
|
|
|
@@ -385,7 +385,7 @@ ul.top-popup_content li > .a:hover { background: var(--top-popup-background-colo
|
|
|
385
385
|
|
|
386
386
|
ul.top-popup_content li > a:not(.top-button).top-active,
|
|
387
387
|
ul.top-popup_content li > .a.top-active {
|
|
388
|
-
--top-icon-color: var(--color-
|
|
388
|
+
--top-icon-color: var(--color-text-primary) !important;
|
|
389
389
|
|
|
390
390
|
background: var(--top-popup-background-color-active);
|
|
391
391
|
}
|
|
@@ -394,7 +394,7 @@ ul.top-popup_content li > .a.top-active {
|
|
|
394
394
|
|
|
395
395
|
/* listTitle */
|
|
396
396
|
.top-popup_listItem-title {
|
|
397
|
-
background: var(--color-layer-
|
|
397
|
+
background: var(--color-layer-1);
|
|
398
398
|
color: var(--color-text-1); font-size: 12px;
|
|
399
399
|
}
|
|
400
400
|
|
|
@@ -420,16 +420,16 @@ ul.top-popup_content li > .a.top-popup_listMore {
|
|
|
420
420
|
flex-basis: 10px;
|
|
421
421
|
}
|
|
422
422
|
|
|
423
|
-
ul.top-popup_content li > .a.top-popup_listMore:before { color: var(--color-
|
|
423
|
+
ul.top-popup_content li > .a.top-popup_listMore:before { color: var(--color-text-2); }
|
|
424
424
|
|
|
425
425
|
ul.top-popup_content li > * > .top-popup_listMore {
|
|
426
426
|
margin-left: auto;
|
|
427
|
-
color: var(--color-layer-
|
|
427
|
+
color: var(--color-layer-4);
|
|
428
428
|
font-size: 14px;
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
ul.top-popup_content li > * > i.top-popup_listMore:hover,
|
|
432
|
-
ul.top-popup_content li > * > i.top-popup_listMore.top-active { color: var(--color-text-primary
|
|
432
|
+
ul.top-popup_content li > * > i.top-popup_listMore.top-active { color: var(--color-text-primary); }
|
|
433
433
|
|
|
434
434
|
ul.top-popup_content li > * > i.top-popup_listMore:before {
|
|
435
435
|
transform: rotate(90deg);
|
|
@@ -444,7 +444,7 @@ ul.top-popup_content li a.close { background: none !important; }
|
|
|
444
444
|
}
|
|
445
445
|
|
|
446
446
|
ul.top-popup_content li > [data-top-icon]:not(.top-button) {
|
|
447
|
-
--top-icon-color: var(--color-
|
|
447
|
+
--top-icon-color: var(--color-text-3);
|
|
448
448
|
--top-icon-size: 20px;
|
|
449
449
|
--top-icon-width: 20px;
|
|
450
450
|
}
|
|
@@ -454,7 +454,7 @@ ul.top-popup_content li > [data-top-icon]:not(.top-button):before {
|
|
|
454
454
|
}
|
|
455
455
|
|
|
456
456
|
ul.top-popup_content li:hover > [data-top-icon]:not(.top-button) {
|
|
457
|
-
--top-icon-color: var(--color-
|
|
457
|
+
--top-icon-color: var(--color-text-2);
|
|
458
458
|
}
|
|
459
459
|
|
|
460
460
|
/* footer */
|
|
@@ -491,7 +491,7 @@ html .top-popup .top-popup_content li > .top-button {
|
|
|
491
491
|
}
|
|
492
492
|
|
|
493
493
|
.top-popup li .check_all,
|
|
494
|
-
.top-popup li .clear_all { cursor: pointer; color: var(--color-text-primary
|
|
494
|
+
.top-popup li .clear_all { cursor: pointer; color: var(--color-text-primary); padding: 8px; display: inline-block; }
|
|
495
495
|
|
|
496
496
|
.top-popup li .check_all:hover,
|
|
497
497
|
.top-popup li .clear_all:hover { text-decoration: underline; }
|
|
@@ -628,7 +628,7 @@ ul.top-popup_content li > * > i.top-popup_listMore.top-active { visibility: visi
|
|
|
628
628
|
f.insertStyleToPage(y);
|
|
629
629
|
f.insertStyleToPage(_, "m");
|
|
630
630
|
f.insertStyleToPage(L, "pc");
|
|
631
|
-
class v extends
|
|
631
|
+
class v extends x {
|
|
632
632
|
static componentName = "TopPopup";
|
|
633
633
|
// элемент, вызвавший открытие Popup
|
|
634
634
|
elActiveByDefault;
|
|
@@ -792,7 +792,7 @@ class v extends b {
|
|
|
792
792
|
}
|
|
793
793
|
// контроль за положением Popup, чтобы оно не вылезало за пределы документа
|
|
794
794
|
recalcPosition() {
|
|
795
|
-
var m,
|
|
795
|
+
var m, b;
|
|
796
796
|
if (!(this.elPopup instanceof HTMLElement)) return;
|
|
797
797
|
let t = this.options.p, p;
|
|
798
798
|
if (this.el instanceof HTMLElement)
|
|
@@ -814,7 +814,7 @@ class v extends b {
|
|
|
814
814
|
this.elPopup.style.setProperty("--top-popup-height", this.elPopup.offsetHeight + "px"), this.elPopup.style.setProperty("--top-popup-right-bounding", o.right + "px"), this.elPopup.style.setProperty("--top-popup-bottom-bounding", o.bottom + "px"), this.elPopup.style.setProperty("--top-popup-top", o.top + "px"), this.elPopup.style.setProperty("--top-popup-left", o.left + "px"), this.elPopupInner instanceof HTMLElement && (this.elPopupInner.style.maxWidth = "unset", this.elPopupInner.style.maxHeight = "unset");
|
|
815
815
|
let e = !1, r = !1, i = !1, u = !1, l = o.left > window.innerWidth / 2, d = o.top > window.innerHeight / 2;
|
|
816
816
|
t === 4 && (l = !l), t === 1 && (d = !d);
|
|
817
|
-
const h = (
|
|
817
|
+
const h = (b = this.elPopupInner) == null ? void 0 : b.getBoundingClientRect();
|
|
818
818
|
let a, c;
|
|
819
819
|
if (h) {
|
|
820
820
|
a = window.innerWidth - h.right, c = window.innerHeight - h.bottom;
|
|
@@ -859,4 +859,4 @@ export {
|
|
|
859
859
|
v as Popup,
|
|
860
860
|
v as default
|
|
861
861
|
};
|
|
862
|
-
//# sourceMappingURL=popup-
|
|
862
|
+
//# sourceMappingURL=popup-CRwjKDwT.es.js.map
|