@topvisor/ui 0.0.38 → 0.0.41

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.
Files changed (36) hide show
  1. package/.chunks/{datepicker-778ddcc5.es.js → datepicker-7f54fd80.es.js} +2 -2
  2. package/.chunks/{datepicker-778ddcc5.es.js.map → datepicker-7f54fd80.es.js.map} +1 -1
  3. package/.chunks/{datepicker-80599025.amd.js → datepicker-858c1cb6.amd.js} +2 -2
  4. package/.chunks/{datepicker-80599025.amd.js.map → datepicker-858c1cb6.amd.js.map} +1 -1
  5. package/.chunks/{forms-779fee37.es.js → forms-7f061546.es.js} +100 -99
  6. package/.chunks/forms-7f061546.es.js.map +1 -0
  7. package/.chunks/forms-b9e5edd2.amd.js +3 -0
  8. package/.chunks/forms-b9e5edd2.amd.js.map +1 -0
  9. package/.chunks/{popup-672d6531.es.js → popup-05538243.es.js} +2 -2
  10. package/.chunks/{popup-672d6531.es.js.map → popup-05538243.es.js.map} +1 -1
  11. package/.chunks/{popup-d53450b6.amd.js → popup-a531e9ad.amd.js} +2 -2
  12. package/.chunks/{popup-d53450b6.amd.js.map → popup-a531e9ad.amd.js.map} +1 -1
  13. package/README.md +34 -16
  14. package/assets/forms.css +1 -1
  15. package/core/core.amd.js +1 -1
  16. package/core/core.js +1 -1
  17. package/forms/forms.amd.js +1 -1
  18. package/forms/forms.js +1 -1
  19. package/formsExt/formsExt.amd.js +1 -1
  20. package/formsExt/formsExt.js +1 -1
  21. package/package.json +1 -1
  22. package/popup/popup.amd.js +1 -1
  23. package/popup/popup.js +1 -1
  24. package/popup/worker.amd.js +1 -1
  25. package/popup/worker.js +2 -2
  26. package/tabs/tabs.amd.js +1 -1
  27. package/tabs/tabs.js +1 -1
  28. package/utils/date.amd.js +1 -1
  29. package/utils/date.js +1 -1
  30. package/utils/device.amd.js +1 -1
  31. package/utils/device.js +1 -1
  32. package/utils/dom.amd.js +1 -1
  33. package/utils/dom.js +1 -1
  34. package/.chunks/forms-58420e52.amd.js +0 -3
  35. package/.chunks/forms-58420e52.amd.js.map +0 -1
  36. package/.chunks/forms-779fee37.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"popup-d53450b6.amd.js","sources":["../../src/components/component.ts","../../src/components/popup/lib/popup.globalEvents.js","../../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.js"],"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: Element | undefined; // элемент, связанный с компонентом\n\toptions = {}; // параметры компонента\n\n\tunmountEls: Element[] = [];\n\tunmountEvents: any[] = [];\n\n\t// переопредлять нельзя\n\t// если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()\n\t// используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса\n\tinit (componentName: string, el: Element, 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: Element, componentName: string): any {\n\t\treturn DOM.storage(el, '#' + componentName);\n\t}\n\n\t// устанвоить компонент\n\t_setComponent (el: Element) {\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: Element): void {\n\t\tthis.unmountEls.push(el);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\taddEventListenerWithUnmount (\n\t\tel: Element | Document,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: Element, 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: Element | Document,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: Element, 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: Element): 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;","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\tstatic init () {\n\t\tdocument.addEventListener('click', this.onclick);\n\t\tdocument.addEventListener('keydown', this.onkeydown);\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t * обрабатывает клики внутри Popup\n\t * @param {Event} e\n\t */\n\tstatic onclick (e) {\n\t\t// элементы меню, клик по которым должен его закрыть\n\t\tconst elCloser = e.target.closest('.closer, a, .a, .top-button');\n\t\tif (elCloser) {\n\t\t\t// меню\n\t\t\tconst elPopup = e.target.closest('.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('ul');\n\n\t\t\t\t// элемент меню, по которому был сделан клик\n\t\t\t\tconst elItem = e.target.closest('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 * @param {Event} e\n\t */\n\tstatic onkeydown (e) {\n\t\tconst elPopup = e.target.closest('.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('ul.top-popup_content');\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\t// PopupWorker.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\tconst elBtn = elPopup.querySelector('.top-popup_footer .go, .top-popup_footer [data-action]');\n\t\t\t\t\tif (elBtn) {\n\t\t\t\t\t\telBtn.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) {\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('li > .top-active');\n\t\t\t\tif (elItem) {\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(elPopup, 'ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore');\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('ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active')?.parentElement;\n\n\t\t\t\tconsole.log(elItemActive);\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('[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('.top-active > .top-popup_listMore');\n\t\t\t\t\tif (elMore) {\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\tlet index = elsLiVisible.indexOf(elItemActive);\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;","export default \":root{\\n\\t--top-popup-background-color: var(--color-bg-3);\\n\\t--top-popup-background-color-hover: var(--color-theme-75);\\n\\t--top-popup-background-color-active: var(--color-theme-100);\\n\\n\\t--top-popup-border-color: var(--color-line-2-opacity);\\n\\t--top-popup-title-background-color: var(--color-theme-50);\\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.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: 8px;\\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 > *{ opacity: 0; transition: opacity 100ms linear, transform 100ms linear; }\\n.top-popup-wrapper.p0 > *{ transform: translateY(-8px); }\\n.top-popup-wrapper.p1 > *{ transform: translateY(8px); }\\n.top-popup-wrapper.p2 > *{ transform: translateX(8px); }\\n.top-popup-wrapper.p3 > *{ transform: translateY(8px); }\\n.top-popup-wrapper.p4 > *{ transform: translateX(-8px); }\\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.top-popup-wrapper.p1 > .top-popup{ bottom: calc(100% + 8px); }\\n.top-popup-wrapper.p2 > .top-popup{ left: calc(100% + 8px); }\\n.top-popup-wrapper.p3 > .top-popup{ top: calc(100% + 8px); }\\n.top-popup-wrapper.p4 > .top-popup{ right: calc(100% + 8px); }\\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.top-popup-wrapper.p2.with_notch > .top-popup{ margin-left: 5px; }\\n.top-popup-wrapper.p3.with_notch > .top-popup{ margin-top: 5px; }\\n.top-popup-wrapper.p4.with_notch > .top-popup{ margin-right: 5px; }\\n\\n.top-popup-wrapper.invert-x > .top-popup{ right: 0; }\\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(--content-background-color); margin: 0 0 7.4px -7.4px; bottom: 100%; left: 50% }\\n.top-popup-wrapper.p2 > .notch{ border-left: 0; border-right: 7.4px solid var(--content-background-color); margin: 0 0 -7.4px 7.4px; bottom: 50%; left: 100%; }\\n.top-popup-wrapper.p3 > .notch{ border-top: 0; border-bottom: 7.4px solid var(--content-background-color); margin: 7.4px 0 0 -7.4px; top: 100%; left: 50%; }\\n.top-popup-wrapper.p4 > .notch{ border-right: 0; border-left: 7.4px solid var(--content-background-color); 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.top-popup-wrapper.p2 > .notch-border{ border-right-color: rgba(0,0,0,0.05); margin-left: 6px; }\\n.top-popup-wrapper.p3 > .notch-border{ border-bottom-color: rgba(0,0,0,0.05); margin-top: 6px; }\\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.top-popup_header,\\n.top-popup_footer{ display: flex; align-items: center; justify-content: space-between; }\\n\\n/* header */\\n.top-popup_header{\\n\\tborder-bottom: 1px solid var(--top-popup-border-color);\\n\\tpadding: var(--top-padding-3);\\n\\tfont-weight: 600;\\n}\\n.top-popup_header > *{ font-weight: 400; }\\n.top-popup_header > .a{ cursor: pointer; color: var(--color-blue-450); }\\n.top-popup_header > .a:hover{ color: var(--color-blue-350); }\\n\\n.top-popup_headerButton{ width: 60px; }\\n\\n/* content */\\n.top-popup_content{\\n\\tmargin: 0;\\n\\tline-height:1 !important;\\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\\t/* has_scroll */\\n\\t--scroll-padding-top: var(--top-popup-content-padding);\\n\\t--scroll-padding-bottom: var(--top-popup-content-padding);\\n\\n\\tpadding: var(--top-popup-content-padding);\\n}\\ndiv.top-popup_content > *{ flex-shrink: 0; }\\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\\t--scroll-padding-top: var(--top-popup-list-padding);\\n\\t--scroll-padding-bottom: var(--top-popup-list-padding);\\n\\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}\\n\\nul.top-popup_content li{ margin: 0; list-style:none; display: flex; position: relative }\\nul.top-popup_content li > *{ flex-grow: 1; }\\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) !important; font-size: 14px; font-weight: normal !important; text-decoration:none !important; font-style: normal;\\n\\tdisplay:flex; flex: 1 1 100%; align-items: center;\\n\\ttransition: background-color 0.1s ease-in-out;\\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); }\\nul.top-popup_content li > a:not(.top-button).top-active,\\nul.top-popup_content li > .a.top-active{ background: var(--top-popup-background-color-active); }\\n\\n.top-popup_content + .top-popup_content{ padding-top: 0; }\\n\\n/* listTitle */\\n.top-popup_listItem-title{\\n\\tbackground: var(--top-popup-title-background-color);\\n\\tcolor: var(--color-text-2); 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\\tmargin: calc(0px - var(--top-popup-listItem-padding)) 0;\\n}\\n\\nul.top-popup_content li > .a.top-popup_listMore{\\n\\theight: auto; padding-right: 4px; padding-left: 4px;\\n\\tfont-size: 24px; line-height: 17px; text-align: center;\\n\\tflex-basis: 10px;\\n}\\nul.top-popup_content li > .a.top-popup_listMore:before{ color: var(--color-gray-500); }\\nul.top-popup_content li > * > .top-popup_listMore{\\n\\tpadding: 0 var(--top-popup-listItem-padding); margin-left: auto;\\n\\tcolor: var(--color-gray-500);\\n\\tfont-size: 14px;\\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-blue-500); }\\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):before{\\n\\t--top-icon-color: var(--color-text-3);\\n\\t--top-icon-size: 20px;\\n\\t--top-icon-width: 20px;\\n\\n\\theight: 1rem; margin-right: 8px; transition: color 0.1s;\\n}\\nul.top-popup_content li:hover > [data-top-icon]:not(.top-button):before,\\nul.top-popup_content li > [data-top-icon]:not(.top-button).top-active:before{\\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/* Виджеты */\\n.top-popup > [data-widget]{ padding: 0 var(--top-popup-list-padding); }\\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; }\\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-cyan); padding: 8px; display: inline-block; }\\n.top-popup li .check_all:hover,\\n.top-popup li .clear_all:hover{ text-decoration: underline; }\\n.top-popup li .clear_all{ display: none; }\\n\\n/* table */\\n.top-popup_content table{ margin: -9px 0; }\\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.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.top-popup_footer [class*=btn]:not(.btn-transparent){ min-width: 100px; padding: 5px 14px; margin-left: 10px; }\\n.top-popup_footer [class*=btn]:first-child{ margin-left: 0; }\\n.top-popup_footer .btn.full_width{ margin: 0; flex-grow: 1; }\"","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) - 12px); margin: 0 !important;\\n\\ttop: auto !important; right: 0 !important; bottom: 0 !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) !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/* content */\\nul.top-popup_content{\\n\\t--scroll-padding-top: 0px;\\n\\t--scroll-padding-bottom: var(--scroll-padding-top);\\n\\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_xl);\\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); }\"","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) - 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; }\"","// добавляет jQuery события на this.el, если jQuery загружен:\n// aftershow.top-menu-popup\n// afterclose.top-menu-popup\n\nimport 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';\n\nCore.appendStyle(css);\nCore.appendStyle(cssM, 'm');\nCore.appendStyle(cssPC, 'pc');\n\n/**\n * @property {Element} el - элемент, вызвавший открытие Popup\n * @property {Element} elPopup - Popup .top-popup-wrapper\n * @property {Element} elPopupInner - контентная часть Popup .top-popup\n * @property {Element} elPopupHeader\n * @property {Element} elPopupBody\n * @property {Element} elPopupFooter\n */\nclass Popup extends Component {\n\n\tstatic componentName = 'Popup';\n\n\tel; // элемент, вызвавший открытие Popup\n\telActiveByDefault; // элемент уже имеет класс top-active перед открытием окна\n\telPopup;\n\telPopupInner;\n\telPopupHeader;\n\telPopupBody;\n\telPopupFooter;\n\telFront;\n\n\tpopupParent;\n\n\t$; // только, если есть jQuery\n\n\telStartPosition; // используется для useOriginal\n\tshift = {\n\t\ttop: 0,\n\t\tleft: 0,\n\t};\n\tisClosed = false; // флаг того, что меню закрыто\n\tisFirstClick = true;\n\ttype; // selector или html\n\n\toptions = {\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\tisFullScreen: false,\n\t\ti18n: {},\n\t};\n\n\tevents = {};\n\n\t// el - элемент, открывающий меню\n\tconstructor(el, options) {\n\t\tsuper();\n\n\t\treturn this.init(Popup.componentName, el, options);\n\t}\n\n\tasync mount() {\n\t\tconst vueConnector = this.vueGetComponent();\n\n\t\tthis.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(`${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(`${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(), 300);\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(`${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('.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);\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 => el.dataset.topPopupPosBy = 'fixed');\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}\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('.top-popup_header');\n\t\tthis.elPopupBody = this.elPopupInner.querySelector('.top-popup_content');\n\t\tthis.elPopupFooter = this.elPopupInner.querySelector('.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\tif (!this.elPopupHeader) {\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' }, this.options.i18n.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', this);\n\n\t\tif (this.options.frontSelector) {\n\t\t\tthis.elFront = document.querySelector(this.options.frontSelector);\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = this.el.closest('.top-popup-front');\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = document.body;\n\t\t}\n\n\t\tthis.elPopup.style.width = this.el.offsetWidth + 'px';\n\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\t\tthis.elPopup.style.top = this.el.offsetTop + 'px';\n\t\tthis.elPopup.style.right = parseInt(this.el.style.right || 0) + 'px';\n\t\tthis.elPopup.style.bottom = parseInt(this.el.style.bottom || 0) + 'px';\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\tthis.elPopup.style.top = parseInt(this.elPopup.style.top || '0') + this.shift.top + 'px';\n\t\t\tthis.elPopup.style.left = parseInt(this.elPopup.style.left || '0') + this.shift.left + 'px';\n\t\t}\n\n\t\tif (this.$) {\n\t\t\tthis.$.trigger('aftershow.top-menu-popup', [jQuery(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 (typeof (jQuery) !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$ = jQuery(this.el);\n\t}\n\n\t/**\n\t * Выполнить фокусировку на нужный элемент после открытия окна\n\t */\n\tfocus() {\n\t\tlet el = DOM.querySelectorVisible(this.elPopup, '.top-popup-autofocus');\n\n\t\t// поле ввода\n\t\tif (!el) {\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, ':read-write, select:not(:disabled)');\n\t\t}\n\n\t\t// кнопка\n\t\tif (!el) {\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup_footer .top-button');\n\t\t}\n\n\t\tif (!el) {\n\t\t\tel = this.elPopup;\n\t\t}\n\n\t\tel.focus();\n\t}\n\n\tmountEvents() {\n\t\t// закрытие при клике вне контекстного меню\n\t\tthis.addEventListenerWithUnmount(document, 'mousedown', (e) => this.onMousedown(e));\n\n\t\t// закрыть другие меню\n\t\tthis.addEventListenerWithUnmount(this.elPopup, 'focus', (e) => this.onFocus(e));\n\n\t\t// автоматическое закрытие при отведении мыши\n\t\tif (this.options.openByHover) {\n\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'mouseleave', (e) => this.onMouseleave(e));\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupInner, 'mouseleave', (e) => this.onMouseleave(e));\n\t\t}\n\n\t\t// не скроллить страницу\n\t\tif (this.options.isFullScreen) {\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupBody, 'touchmove', (e) => this.onTouchmove(e));\n\t\t}\n\t}\n\n\t/**\n\t * Обработка клика вне окна\n\t * @param {Event} e\n\t */\n\tonMousedown(e) {\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) {\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.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\telPopupOpened = DOM.querySelectorVisibleLast(e.target.closest('.top-popup-front'), ':scope > .top-popup-wrapper');\n\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\treturn;\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 * @param {Event} e\n\t */\n\tonFocus(e) {\n\t\tif (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 * @param {Event} _e\n\t */\n\tonMouseleave(_e) {\n\t\tsetTimeout(() => {\n\t\t\tif (this.elPopupInner.matches(':hover')) {\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\tonResize() {\n\t\t// на android при вызове метода append сбрасывается фокус с input внутри this.elPopup\n\t\tif (this.elPopup.parentElement !== document.body) {\n\t\t\tdocument.body.append(this.elPopup);\n\t\t}\n\n\t\tthis.elPopup.style.top = DOM.offset(this.el).top + 'px';\n\t\tthis.elPopup.style.left = DOM.offset(this.el).left + 'px';\n\t}\n\n\tunmount() {\n\t\tsuper.unmount();\n\n\t\tthis.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() {\n\t\tlet p = this.options.p;\n\t\tlet leftPos;\n\n\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\n\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\tthis.elPopup.classList.add('p' + p);\n\n\t\tswitch (this.options.posBy) {\n\t\t\tcase 'left':\n\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || 0);\n\t\t\t\tleftPos += this.shift.left;\n\t\t\t\tthis.elPopup.style.left = leftPos + 'px';\n\n\t\t\t\tbreak;\n\t\t\tcase 'right':\n\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || 0);\n\t\t\t\tthis.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - leftPos + 'px';\n\n\t\t\t\tbreak;\n\t\t\tcase 'fixed':\n\t\t\t\tthis.addEventListenerWithUnmount(window, 'resize', () => this.onResize());\n\n\t\t\t\tthis.onResize();\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.options.posBy.append(this.elPopup);\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\tthis.elPopupInner.style.maxWidth = 'unset';\n\t\tthis.elPopupInner.style.maxHeight = 'unset';\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\tconst contentRight = window.innerWidth - contentBoundingClientRect.right;\n\t\tconst contentBottom = window.innerHeight - contentBoundingClientRect.bottom;\n\n\t\tconst margin = 8;\n\n\t\tif (contentBoundingClientRect.top < margin) {\n\t\t\toutTop = true;\n\t\t}\n\n\t\tif (contentRight < margin) {\n\t\t\toutRight = true;\n\t\t}\n\n\t\tif (contentBottom < margin) {\n\t\t\toutBottom = true;\n\t\t}\n\n\t\tif (contentBoundingClientRect.left < margin) {\n\t\t\toutLeft = true;\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\tthis.elPopupInner.style.maxWidth = '';\n\t\tthis.elPopupInner.style.maxHeight = '';\n\n\t\tWorker.scrollToActive(this.elPopup);\n\t};\n\n\tonTouchmove(e) {\n\t\t// разрешить горизональный скролл\n\t\tlet hasScrollX = e.currentTarget.scrollWidth > e.currentTarget.offsetWidth;\n\t\tif (hasScrollX) {\n\t\t\treturn;\n\t\t}\n\n\t\t// разрешить горизональный скролл\n\t\tlet hasScrollX2 = e.target.parentElement.scrollWidth > e.target.parentElement.offsetWidth;\n\t\tif (hasScrollX2) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!e.currentTarget.matches('.has_scroll')) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tclose() {\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isClosed = true;\n\n\t\tif (this.$) {\n\t\t\tthis.$.trigger('afterclose.top-menu-popup', [jQuery(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.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}, 300);\n\t}\n\n\tasync vueOpen() {\n\t\tawait this.vueGetComponent()?.onOpen(this);\n\t}\n\n\tvueClose() {\n\t\tthis.vueGetComponent()?.onClose(this);\n\t}\n\n\t// получить vueConnectors компонента Popup\n\tvueGetComponent() {\n\t\treturn Worker.vueConnectors.get(this.el.dataset.topPopupId);\n\t}\n}\n\nGlobalEvents.init();\n\nexport default Popup;"],"names":["Component","componentName","el","options","component","forms","eventData","type","listener","nodes","node","_a","GlobalEvents","e","elCloser","elUl","popup_worker","elPopup","elBtn","elItem","elItemActive","elMore","countLi","elsLiVisible","index","css","cssM","cssPC","Core","Popup","vueConnector","classes","existsWidgetSearch","fromTop","elPopupOpened","p","leftPos","boundingClientRect","outTop","outRight","outBottom","outLeft","usefulInvertX","usefulInvertY","margin","contentBoundingClientRect","contentRight","contentBottom","elsPopups","elPopupLast"],"mappings":"kJAKA,MAAAA,CAAA,CAAgB,OAAA,cAAA,MAEQ,cAEvB,UACA,IACA,6CAKwB,KAAAC,EAAAC,EAAAC,EAAA,OAOtB,MAAAF,EAAA,qDAMA,OAAAG,EAAA,OAAAD,CAAA,IAKD,KAAA,cAAAF,wHAIA,KAAA,cAAAC,CAAA,EACA,KAAA,GAAAA,EACA,KAAA,GAAA,UAAA,IAAA,KAAA,SAAA,EACA,KAAA,QAAA,OAAA,OAAA,KAAA,QAAAC,CAAA,EAEA,KAAA,MAAA,EACD,OAAA,aAAAD,EAAAD,EAAA,gDASCI,EAAA,IAAA,QAAAH,EAAA,IAAA,KAAA,cAAA,IAAA,EACD,OAAA,CAIC,KAAA,4CAAA,KAAA,cACD,SAAA,CAICG,EAAA,IAAA,QAAA,KAAA,GAAA,IAAA,KAAA,cAAA,IAAA,8BAGCH,EAAA,OAAA,CAAU,CAAA,EAGX,KAAA,WAAA,CAAA,iCAGCI,EAAA,GAAA,oBAAAA,EAAA,KAAAA,EAAA,SAAAA,EAAA,OAAA,CAAsF,CAAA,EAGvF,KAAA,cAAA,CAAA,iHAiBA,KAAA,wBAAAJ,EAAAK,EAAAC,EAAAL,CAAA,4CAUkB,GAAAD,EACjB,KAAAK,EACA,SAAAC,EACA,QAAAL,CACA,uCAQD,KAAA,6CAAA,KAAA,cACD,OAAA,OAAAM,EAAA,OAOC,GAAAA,EAAA,QACCA,EAAA,QAAAC,GAAA,OAAA,OAAAC,EAAAD,EAAA,gBAAA,YAAAC,EAAA,YAAAD,GAAA,MAAmE,CAEnE,MAAAR,EAAAO,+CAKH,CCzHA,MAAAG,CAAA,mHAWA,OAAA,QAAAC,EAAA,oHAaA,OAAAC,EAAA,QAAA,qBAAA,EACA,wCAKAD,EAAA,eAAA,wGAaAF,EAAAI,EAAA,cAAA,6BAAA,IAAA,MAAAJ,EAAA,UAAA,OAAA,gDAOA,OAIAK,EAAA,MAAAC,CAAA,6CAKA,MAAAA,EAAAJ,EAAA,OAEAG,EAAA,MAAAC,CAAA,GAQA,OAAA,UAAAJ,EAAA,4DAKA,qEAMA,IAAA,SAGA,MAEA,IAAA,6DAIA,2FAKAK,EAAA,MAAA,EAGA,oEAQAL,EAAA,eAAA,uFAQAM,EAAA,MAAA,EAGA,qDAMA,IAAA,kBAEA,MAGAN,EAAA,MAAA,cAAAA,EAAA,MAAA,0IAGAA,EAAA,eAAA,EAGAA,EAAA,eAAA,wIAKA,QAAA,IAAAO,CAAA,6FAWA,OAAAC,EAAA,MAAA,sGAKAC,EAAAC,EAAA,6BAIAV,EAAA,MAAA,WAAAA,EAAA,MAAA,iFASA,OAGAG,EAAA,MAAAC,CAAA,iCAKA,OAGAO,EAAA,IACAA,EAAAF,EAAA,GAGAE,EAAAF,EAAA,oHAKAC,EAAAC,CAAA,EAAA,cAAA,yBAAA,EAAA,UAAA,IAAA,YAAA,EAEAR,EAAA,eAAAC,CAAA,EAEA,OAIA,CC5MA,MAAAQ,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;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;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,+DCAAC,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;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,6HCAAC,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;AAAA;AAAA,uFCcAC,EAAAA,KAAAA,YAAAA,CAAAA,EACAA,EAAAA,KAAAA,YAAAA,EAAAA,GAAAA,EACAA,EAAAA,KAAAA,YAAAA,EAAAA,IAAAA,oBAYA,OAAA,cAAA,QAEA,GACA,kBACA,QACA,aACA,cACA,YACA,cACA,QAEA,YAEA,EAEA,gBACA,MAAA,aAGA,8BAGA,KAEA,QAAA,8HAgBA,YAKA,YAAA1B,EAAAC,EAAA,gBAGA,KAAA,KAAA0B,EAAA,cAAA3B,EAAAC,CAAA,gBAIA,MAAA2B,EAAA,KAAA,gBAAA,KAEA,KAAA,YAAAd,EAAA,SAAA,KAAA,GAAA,QAAA,oBAAA,CAAA,EAEA,MAAA,KAAA,YAAA,EAEAX,EAAA,IAAA,IAAA,KAAA,GAAA,UAAA,IAAA,wFAKA,KAAA,kBAAA,KAAA,GAAA,UAAA,SAAA,YAAA,wCAKA,KAAA,KAAA,MAEA,KAAA,QAAA,MAAA,GACA,KAAA,QAAAA,EAAA,IAAA,MAAA,MAAA,CAAA,EAAA,KAAA,QAAA,KAAA,UACA,KAAA,QAAA,MAAA,MAAA,OAAA,EAEA,KAAA,KAAA,WAEA,KAAA,QAAA,SAAA,cAAA,GAAA,KAAA,QAAA,KAAA,WAAA,MACA,CAIA,GAFA,KAAA,KAAA,OAEA,KAAA,QAAA,qEAIA,KAAA,QAAAA,EAAA,IAAA,MAAA,MAAA,CAAA,EAAA,KAAA,QAAA,KAAA,uFAaA,GANAyB,GAAA,MAAAA,EAAA,oCAGA,KAAA,QAAA,SAAA,cAAA,GAAA,KAAA,QAAA,KAAA,0BAAA,EAGA,KAAA,QAAA,mCAGA,KAAA,iHASA,uEAOA,KAAA,QAAA,SAAA,cAAA,GAAA,KAAA,QAAA,KAAA,0BAAA,EAGA,GAAA,CAAA,KAAA,QACA,OA+CA,IA5CA,KAAA,QAAA,aACA,KAAA,gBAAA,KAAA,QAAA,QAAA,8BAAA,EACA,KAAA,kBACA,KAAA,gBAAAzB,EAAA,IAAA,KAAA,KAAA,QAAA,GAAA,EACA,KAAA,gBAAA,UAAA,IAAA,8BAAA,QAAA,KAGA,KAAA,QAAA,KAAA,QAAA,UAAA,EAAA,EAGA,KAAA,OAAA,YAAA,CAAA,KAAA,QAAA,QAAA,WAAA,uJAOA,KAAA,QAAAA,EAAA,IAAA,KAAA,KAAA,QAAA,KAAA,GAGA,KAAA,OAAA,qHAIA,KAAA,QAAAA,EAAA,IAAA,KAAA,KAAA,QAAA,KAAA,KAKA,KAAA,OAAA,YAAA,CAAA,KAAA,QAAA,QAAA,WAAA,GAAA,KAAA,OAAA,QAAA,KAAA,OAAA,0MAMAW,EAAA,oBAAA,IAAA,2FAOA,KAAA,aAAA,UAAA,IAAA,iBAAA,WAAA,EAEA,KAAA,QAAA,YACA,KAAA,aAAA,YAAA,KAAA,QAAA,UAAA,EAOA,0FAAA,KAAA,QAAA,MAAA,CACA,MAAAe,EAAA,KAAA,QAAA,MAAA,MAAA,GAAA,mCAIA,KAAA,QAAA,yJAKA,MAAA,KAAA,QAAA,EAEA,KAAA,cAAA,KAAA,aAAA,cAAA,mBAAA,EACA,KAAA,YAAA,KAAA,aAAA,cAAA,oBAAA,EACA,KAAA,cAAA,KAAA,aAAA,cAAA,mBAAA,EAEA,MAAAC,EAAA,CAAA,CAAA,KAAA,QAAA,cAAA,wBAAA,kCAGA,KAAA,gBACA,KAAA,cAAA3B,EAAA,IAAA,MAAA,IAAA,CAAA,MAAA,kBAAA,CAAA,wIAIA,KAAA,cAAA,OAAAA,EAAA,IAAA,MAAA,IAAA,CAAA,MAAA,wBAAA,CAAA,CAAA,IAIAA,EAAA,IAAA,QAAA,KAAA,QAAA,QAAA,IAAA,EAEA,KAAA,QAAA,gBACA,KAAA,QAAA,SAAA,cAAA,KAAA,QAAA,aAAA,GAEA,KAAA,UACA,KAAA,QAAA,KAAA,GAAA,QAAA,kBAAA,GAEA,KAAA,UACA,KAAA,QAAA,SAAA,MAGA,KAAA,QAAA,MAAA,MAAA,KAAA,GAAA,YAAA,KACA,KAAA,QAAA,MAAA,OAAA,KAAA,GAAA,aAAA,KACA,KAAA,QAAA,MAAA,IAAA,KAAA,GAAA,UAAA,qIAIA,KAAA,GAAA,cAAA,aAAA,KAAA,QAAA,KAAA,EAAA,4CAGA,KAAA,QAAA,gDAIA,IAAA4B,EAAA,CAAA,CAAA,KAAA,GAAA,QAAA,eAAA,MAEAA,EAAA,CAAA,CAAA,KAAA,GAAA,QAAA,YAAA,OAGAA,EAAA,CAAA,CAAA,KAAA,GAAA,QAAA,aAAA,+CAOA,WAAA,IAAA,KAAA,QAAA,UAAA,IAAA,yBAAA,CAAA,EAEA,KAAA,SAAA,CAAA,KAAA,QAAA,QAAA,MAAA,sCAGA,KAAA,MAAA,IAAA5B,EAAA,IAAA,OAAA,KAAA,EAAA,EAAA,IAAA,KAAA,GAAA,UAAAA,EAAA,IAAA,OAAA,KAAA,OAAA,EAAA,IACA,KAAA,MAAA,KAAAA,EAAA,IAAA,OAAA,KAAA,EAAA,EAAA,KAAA,KAAA,GAAA,WAAAA,EAAA,IAAA,OAAA,KAAA,OAAA,EAAA,KAGA,KAAA,MAAA,KAAA,SAAA,KAAA,GAAA,MAAA,YAAA,GAAA,CAAA,EACA,KAAA,MAAA,MAAA,SAAA,KAAA,GAAA,MAAA,aAAA,GAAA,CAAA,EAEA,KAAA,QAAA,MAAA,IAAA,SAAA,KAAA,QAAA,MAAA,KAAA,GAAA,EAAA,KAAA,MAAA,IAAA,KACA,KAAA,QAAA,MAAA,KAAA,SAAA,KAAA,QAAA,MAAA,MAAA,GAAA,EAAA,KAAA,MAAA,KAAA,MAGA,KAAA,GACA,KAAA,EAAA,QAAA,2BAAA,CAAA,OAAA,KAAA,OAAA,CAAA,CAAA,EAGA,KAAA,eAAA,0CAGA,KAAA,MAAA,EAEAW,EAAA,mBAAA,IAAA,EAEA,KAAA,YAAA,sBAIA,OAAA,QAAA,qCAUA,OAAA,CACA,IAAAd,EAAAG,EAAA,IAAA,qBAAA,KAAA,QAAA,sBAAA,MAIAH,EAAAG,EAAA,IAAA,qBAAA,KAAA,QAAA,oCAAA,OAKAH,EAAAG,EAAA,IAAA,qBAAA,KAAA,QAAA,+BAAA,OAIAH,EAAA,KAAA,SAGAA,EAAA,MAAA,EAGA,aAAA,CAEA,KAAA,4BAAA,SAAA,YAAAW,GAAA,KAAA,YAAAA,CAAA,CAAA,4EAMA,KAAA,QAAA,4LAMA,KAAA,QAAA,mHA6BA,GAbA,CAAA,KAAA,SAKA,CAAA,KAAA,eAIA,KAAA,aAAA,wCAIAA,EAAA,SAAA,GACA,OAIA,IAAAqB,EAAA7B,EAAA,IAAA,yBAAA,SAAA,KAAA,6BAAA,wBAMA6B,EAAA7B,EAAA,IAAA,yBAAAQ,EAAA,OAAA,QAAA,kBAAA,EAAA,6BAAA,4DAWA,KAAA,QAAA,QAAA,YAAA,GAAA,CAAAA,EAAA,OAAA,QAAA,YAAA,GAIAG,EAAA,4BAAAH,CAAA,sCAsBA,8BAAA,KAAA,SACA,OAGAG,EAAA,cAAA,EACA,QAAAC,GAAA,uCASAN,EAAA,KAAA,cAAA,YAAAA,EAAA,WAAAM,qFAMAD,EAAA,MAAAC,CAAA,CACA,CAAA,mGAoBA,UAAA,8LAUA,SAAA,CACA,MAAA,QAAA,oCAGA,KAAA,uKAYA,gBAAA,wBASA,OALA,KAAA,QAAA,MAAA,OAAA,KAAA,GAAA,aAAA,KAEA,KAAA,QAAA,UAAA,OAAA,KAAA,KAAA,KAAA,KAAA,IAAA,EACA,KAAA,QAAA,UAAA,IAAA,IAAAkB,CAAA,EAEA,KAAA,QAAA,MAAA,CACA,IAAA,sEAEAC,GAAA,KAAA,MAAA,oCAGA,MACA,IAAA,4JAIA,MACA,IAAA,QACA,KAAA,4BAAA,OAAA,SAAA,IAAA,KAAA,SAAA,CAAA,EAEA,KAAA,SAAA,EAEA,cAEA,KAAA,QAAA,MAAA,OAAA,KAAA,OAAA,+CAKA,KAAA,QAAA,MAAA,YAAA,qBAAA,KAAA,QAAA,aAAA,IAAA,EACA,KAAA,QAAA,MAAA,YAAA,6BAAAC,EAAA,MAAA,IAAA,EACA,KAAA,QAAA,MAAA,YAAA,8BAAAA,EAAA,OAAA,IAAA,EACA,KAAA,QAAA,MAAA,YAAA,kBAAAA,EAAA,IAAA,IAAA,EACA,KAAA,QAAA,MAAA,YAAA,mBAAAA,EAAA,KAAA,IAAA,qFAKA,IAAAC,EAAA,GACAC,EAAA,GACAC,EAAA,GACAC,EAAA,GAGAC,EAAAL,EAAA,KAAA,OAAA,WAAA,EACAM,EAAAN,EAAA,IAAA,OAAA,YAAA,EAEAF,IAAA,IACAO,EAAA,CAAAA,GAGAP,IAAA,IACAQ,EAAA,CAAAA,+GAOAC,EAAA,EAEAC,EAAA,IAAAD,UAIAE,EAAAF,UAIAG,EAAAH,UAIAC,EAAA,KAAAD,UAIAN,IAAAH,IAAA,GAAAA,IAAA,IAAAQ,kEAgBAJ,IAAAJ,IAAA,GAAAA,IAAA,GAAAA,IAAA,2CAIAK,IAAAL,IAAA,GAAAA,IAAA,IAAAQ,IAEAR,IAAA,GAAA,CAAAO,0CAKAP,IAAA,GAAA,CAAAO,oFASA,KAAA,QAAA,UAAA,OAAA,KAAA,KAAA,KAAA,KAAA,IAAA,EACA,KAAA,QAAA,UAAA,IAAA,IAAAP,CAAA,yHAUAtB,EAAA,cAAA,YAAAA,EAAA,cAAA,aAMAA,EAAA,OAAA,cAAA,YAAAA,EAAA,OAAA,cAAA,qDAMAA,EAAA,eAAA,EAIA,OAAA,CACA,KAAA,WAIA,KAAA,SAAA,GAEA,KAAA,GACA,KAAA,EAAA,QAAA,4BAAA,CAAA,OAAA,KAAA,OAAA,CAAA,CAAA,EAGA,CAAAG,EAAA,UAIA,KAAA,QAAA,mFAKA,KAAA,SAAA,EAEA,KAAA,QAAA,mDAEA,KAAA,QAAA,UAAA,OAAA,0BAAA,0BAAA,oFAIAL,EAAA,KAAA,QAAA,cAAA,kCAAA,IAAA,MAAAA,EAAA,UAAA,OAAA,2IAIA,KAAA,aAAA,YAAA,GAAA,KAAA,aAAA,UAAA,sEAMA,KAAA,QAAA,OAAA,EACA,OAAA,KAAA,SAGA,MAAAqC,EAAAhC,EAAA,cAAA,EACAiC,EAAAD,EAAA,QAAAA,EAAAA,EAAA,OAAA,CAAA,8KAcA,UAAA,yDAKA,iBAAA,CACA,OAAAhC,EAAA,cAAA,IAAA,KAAA,GAAA,QAAA,UAAA"}
1
+ {"version":3,"file":"popup-a531e9ad.amd.js","sources":["../../src/components/component.ts","../../src/components/popup/lib/popup.globalEvents.js","../../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.js"],"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: Element | undefined; // элемент, связанный с компонентом\n\toptions = {}; // параметры компонента\n\n\tunmountEls: Element[] = [];\n\tunmountEvents: any[] = [];\n\n\t// переопредлять нельзя\n\t// если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()\n\t// используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса\n\tinit (componentName: string, el: Element, 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: Element, componentName: string): any {\n\t\treturn DOM.storage(el, '#' + componentName);\n\t}\n\n\t// устанвоить компонент\n\t_setComponent (el: Element) {\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: Element): void {\n\t\tthis.unmountEls.push(el);\n\t}\n\n\t// указание новые события, которые должны будут удалиться после unmount\n\taddEventListenerWithUnmount (\n\t\tel: Element | Document,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: Element, 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: Element | Document,\n\t\ttype: keyof GlobalEventHandlersEventMap,\n\t\tlistener: (this: Element, 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: Element): 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;","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\tstatic init () {\n\t\tdocument.addEventListener('click', this.onclick);\n\t\tdocument.addEventListener('keydown', this.onkeydown);\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t * обрабатывает клики внутри Popup\n\t * @param {Event} e\n\t */\n\tstatic onclick (e) {\n\t\t// элементы меню, клик по которым должен его закрыть\n\t\tconst elCloser = e.target.closest('.closer, a, .a, .top-button');\n\t\tif (elCloser) {\n\t\t\t// меню\n\t\t\tconst elPopup = e.target.closest('.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('ul');\n\n\t\t\t\t// элемент меню, по которому был сделан клик\n\t\t\t\tconst elItem = e.target.closest('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 * @param {Event} e\n\t */\n\tstatic onkeydown (e) {\n\t\tconst elPopup = e.target.closest('.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('ul.top-popup_content');\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\t// PopupWorker.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\tconst elBtn = elPopup.querySelector('.top-popup_footer .go, .top-popup_footer [data-action]');\n\t\t\t\t\tif (elBtn) {\n\t\t\t\t\t\telBtn.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) {\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('li > .top-active');\n\t\t\t\tif (elItem) {\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(elPopup, 'ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active > .top-popup_listMore');\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('ul.top-popup_content > li:not(.top-popup_liNoSelectable) > .top-active')?.parentElement;\n\n\t\t\t\tconsole.log(elItemActive);\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('[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('.top-active > .top-popup_listMore');\n\t\t\t\t\tif (elMore) {\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\tlet index = elsLiVisible.indexOf(elItemActive);\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;","export default \":root{\\n\\t--top-popup-background-color: var(--color-bg-3);\\n\\t--top-popup-background-color-hover: var(--color-theme-75);\\n\\t--top-popup-background-color-active: var(--color-theme-100);\\n\\n\\t--top-popup-border-color: var(--color-line-2-opacity);\\n\\t--top-popup-title-background-color: var(--color-theme-50);\\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.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: 8px;\\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 > *{ opacity: 0; transition: opacity 100ms linear, transform 100ms linear; }\\n.top-popup-wrapper.p0 > *{ transform: translateY(-8px); }\\n.top-popup-wrapper.p1 > *{ transform: translateY(8px); }\\n.top-popup-wrapper.p2 > *{ transform: translateX(8px); }\\n.top-popup-wrapper.p3 > *{ transform: translateY(8px); }\\n.top-popup-wrapper.p4 > *{ transform: translateX(-8px); }\\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.top-popup-wrapper.p1 > .top-popup{ bottom: calc(100% + 8px); }\\n.top-popup-wrapper.p2 > .top-popup{ left: calc(100% + 8px); }\\n.top-popup-wrapper.p3 > .top-popup{ top: calc(100% + 8px); }\\n.top-popup-wrapper.p4 > .top-popup{ right: calc(100% + 8px); }\\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.top-popup-wrapper.p2.with_notch > .top-popup{ margin-left: 5px; }\\n.top-popup-wrapper.p3.with_notch > .top-popup{ margin-top: 5px; }\\n.top-popup-wrapper.p4.with_notch > .top-popup{ margin-right: 5px; }\\n\\n.top-popup-wrapper.invert-x > .top-popup{ right: 0; }\\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(--content-background-color); margin: 0 0 7.4px -7.4px; bottom: 100%; left: 50% }\\n.top-popup-wrapper.p2 > .notch{ border-left: 0; border-right: 7.4px solid var(--content-background-color); margin: 0 0 -7.4px 7.4px; bottom: 50%; left: 100%; }\\n.top-popup-wrapper.p3 > .notch{ border-top: 0; border-bottom: 7.4px solid var(--content-background-color); margin: 7.4px 0 0 -7.4px; top: 100%; left: 50%; }\\n.top-popup-wrapper.p4 > .notch{ border-right: 0; border-left: 7.4px solid var(--content-background-color); 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.top-popup-wrapper.p2 > .notch-border{ border-right-color: rgba(0,0,0,0.05); margin-left: 6px; }\\n.top-popup-wrapper.p3 > .notch-border{ border-bottom-color: rgba(0,0,0,0.05); margin-top: 6px; }\\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.top-popup_header,\\n.top-popup_footer{ display: flex; align-items: center; justify-content: space-between; }\\n\\n/* header */\\n.top-popup_header{\\n\\tborder-bottom: 1px solid var(--top-popup-border-color);\\n\\tpadding: var(--top-padding-3);\\n\\tfont-weight: 600;\\n}\\n.top-popup_header > *{ font-weight: 400; }\\n.top-popup_header > .a{ cursor: pointer; color: var(--color-blue-450); }\\n.top-popup_header > .a:hover{ color: var(--color-blue-350); }\\n\\n.top-popup_headerButton{ width: 60px; }\\n\\n/* content */\\n.top-popup_content{\\n\\tmargin: 0;\\n\\tline-height:1 !important;\\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\\t/* has_scroll */\\n\\t--scroll-padding-top: var(--top-popup-content-padding);\\n\\t--scroll-padding-bottom: var(--top-popup-content-padding);\\n\\n\\tpadding: var(--top-popup-content-padding);\\n}\\ndiv.top-popup_content > *{ flex-shrink: 0; }\\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\\t--scroll-padding-top: var(--top-popup-list-padding);\\n\\t--scroll-padding-bottom: var(--top-popup-list-padding);\\n\\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}\\n\\nul.top-popup_content li{ margin: 0; list-style:none; display: flex; position: relative }\\nul.top-popup_content li > *{ flex-grow: 1; }\\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) !important; font-size: 14px; font-weight: normal !important; text-decoration:none !important; font-style: normal;\\n\\tdisplay:flex; flex: 1 1 100%; align-items: center;\\n\\ttransition: background-color 0.1s ease-in-out;\\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); }\\nul.top-popup_content li > a:not(.top-button).top-active,\\nul.top-popup_content li > .a.top-active{ background: var(--top-popup-background-color-active); }\\n\\n.top-popup_content + .top-popup_content{ padding-top: 0; }\\n\\n/* listTitle */\\n.top-popup_listItem-title{\\n\\tbackground: var(--top-popup-title-background-color);\\n\\tcolor: var(--color-text-2); 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\\tmargin: calc(0px - var(--top-popup-listItem-padding)) 0;\\n}\\n\\nul.top-popup_content li > .a.top-popup_listMore{\\n\\theight: auto; padding-right: 4px; padding-left: 4px;\\n\\tfont-size: 24px; line-height: 17px; text-align: center;\\n\\tflex-basis: 10px;\\n}\\nul.top-popup_content li > .a.top-popup_listMore:before{ color: var(--color-gray-500); }\\nul.top-popup_content li > * > .top-popup_listMore{\\n\\tpadding: 0 var(--top-popup-listItem-padding); margin-left: auto;\\n\\tcolor: var(--color-gray-500);\\n\\tfont-size: 14px;\\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-blue-500); }\\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):before{\\n\\t--top-icon-color: var(--color-text-3);\\n\\t--top-icon-size: 20px;\\n\\t--top-icon-width: 20px;\\n\\n\\theight: 1rem; margin-right: 8px; transition: color 0.1s;\\n}\\nul.top-popup_content li:hover > [data-top-icon]:not(.top-button):before,\\nul.top-popup_content li > [data-top-icon]:not(.top-button).top-active:before{\\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/* Виджеты */\\n.top-popup > [data-widget]{ padding: 0 var(--top-popup-list-padding); }\\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; }\\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-cyan); padding: 8px; display: inline-block; }\\n.top-popup li .check_all:hover,\\n.top-popup li .clear_all:hover{ text-decoration: underline; }\\n.top-popup li .clear_all{ display: none; }\\n\\n/* table */\\n.top-popup_content table{ margin: -9px 0; }\\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.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.top-popup_footer [class*=btn]:not(.btn-transparent){ min-width: 100px; padding: 5px 14px; margin-left: 10px; }\\n.top-popup_footer [class*=btn]:first-child{ margin-left: 0; }\\n.top-popup_footer .btn.full_width{ margin: 0; flex-grow: 1; }\"","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) - 12px); margin: 0 !important;\\n\\ttop: auto !important; right: 0 !important; bottom: 0 !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) !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/* content */\\nul.top-popup_content{\\n\\t--scroll-padding-top: 0px;\\n\\t--scroll-padding-bottom: var(--scroll-padding-top);\\n\\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_xl);\\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); }\"","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) - 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; }\"","// добавляет jQuery события на this.el, если jQuery загружен:\n// aftershow.top-menu-popup\n// afterclose.top-menu-popup\n\nimport 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';\n\nCore.appendStyle(css);\nCore.appendStyle(cssM, 'm');\nCore.appendStyle(cssPC, 'pc');\n\n/**\n * @property {Element} el - элемент, вызвавший открытие Popup\n * @property {Element} elPopup - Popup .top-popup-wrapper\n * @property {Element} elPopupInner - контентная часть Popup .top-popup\n * @property {Element} elPopupHeader\n * @property {Element} elPopupBody\n * @property {Element} elPopupFooter\n */\nclass Popup extends Component {\n\n\tstatic componentName = 'Popup';\n\n\tel; // элемент, вызвавший открытие Popup\n\telActiveByDefault; // элемент уже имеет класс top-active перед открытием окна\n\telPopup;\n\telPopupInner;\n\telPopupHeader;\n\telPopupBody;\n\telPopupFooter;\n\telFront;\n\n\tpopupParent;\n\n\t$; // только, если есть jQuery\n\n\telStartPosition; // используется для useOriginal\n\tshift = {\n\t\ttop: 0,\n\t\tleft: 0,\n\t};\n\tisClosed = false; // флаг того, что меню закрыто\n\tisFirstClick = true;\n\ttype; // selector или html\n\n\toptions = {\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\tisFullScreen: false,\n\t\ti18n: {},\n\t};\n\n\tevents = {};\n\n\t// el - элемент, открывающий меню\n\tconstructor(el, options) {\n\t\tsuper();\n\n\t\treturn this.init(Popup.componentName, el, options);\n\t}\n\n\tasync mount() {\n\t\tconst vueConnector = this.vueGetComponent();\n\n\t\tthis.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(`${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(`${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(), 300);\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(`${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('.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);\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 => el.dataset.topPopupPosBy = 'fixed');\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}\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('.top-popup_header');\n\t\tthis.elPopupBody = this.elPopupInner.querySelector('.top-popup_content');\n\t\tthis.elPopupFooter = this.elPopupInner.querySelector('.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\tif (!this.elPopupHeader) {\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' }, this.options.i18n.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', this);\n\n\t\tif (this.options.frontSelector) {\n\t\t\tthis.elFront = document.querySelector(this.options.frontSelector);\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = this.el.closest('.top-popup-front');\n\t\t}\n\t\tif (!this.elFront) {\n\t\t\tthis.elFront = document.body;\n\t\t}\n\n\t\tthis.elPopup.style.width = this.el.offsetWidth + 'px';\n\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\t\tthis.elPopup.style.top = this.el.offsetTop + 'px';\n\t\tthis.elPopup.style.right = parseInt(this.el.style.right || 0) + 'px';\n\t\tthis.elPopup.style.bottom = parseInt(this.el.style.bottom || 0) + 'px';\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\tthis.elPopup.style.top = parseInt(this.elPopup.style.top || '0') + this.shift.top + 'px';\n\t\t\tthis.elPopup.style.left = parseInt(this.elPopup.style.left || '0') + this.shift.left + 'px';\n\t\t}\n\n\t\tif (this.$) {\n\t\t\tthis.$.trigger('aftershow.top-menu-popup', [jQuery(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 (typeof (jQuery) !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$ = jQuery(this.el);\n\t}\n\n\t/**\n\t * Выполнить фокусировку на нужный элемент после открытия окна\n\t */\n\tfocus() {\n\t\tlet el = DOM.querySelectorVisible(this.elPopup, '.top-popup-autofocus');\n\n\t\t// поле ввода\n\t\tif (!el) {\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, ':read-write, select:not(:disabled)');\n\t\t}\n\n\t\t// кнопка\n\t\tif (!el) {\n\t\t\tel = DOM.querySelectorVisible(this.elPopup, '.top-popup_footer .top-button');\n\t\t}\n\n\t\tif (!el) {\n\t\t\tel = this.elPopup;\n\t\t}\n\n\t\tel.focus();\n\t}\n\n\tmountEvents() {\n\t\t// закрытие при клике вне контекстного меню\n\t\tthis.addEventListenerWithUnmount(document, 'mousedown', (e) => this.onMousedown(e));\n\n\t\t// закрыть другие меню\n\t\tthis.addEventListenerWithUnmount(this.elPopup, 'focus', (e) => this.onFocus(e));\n\n\t\t// автоматическое закрытие при отведении мыши\n\t\tif (this.options.openByHover) {\n\t\t\tthis.addEventListenerWithUnmount(this.elPopup, 'mouseleave', (e) => this.onMouseleave(e));\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupInner, 'mouseleave', (e) => this.onMouseleave(e));\n\t\t}\n\n\t\t// не скроллить страницу\n\t\tif (this.options.isFullScreen) {\n\t\t\tthis.addEventListenerWithUnmount(this.elPopupBody, 'touchmove', (e) => this.onTouchmove(e));\n\t\t}\n\t}\n\n\t/**\n\t * Обработка клика вне окна\n\t * @param {Event} e\n\t */\n\tonMousedown(e) {\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) {\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.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\telPopupOpened = DOM.querySelectorVisibleLast(e.target.closest('.top-popup-front'), ':scope > .top-popup-wrapper');\n\t\tif (elPopupOpened && elPopupOpened !== this.elPopup) {\n\t\t\treturn;\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 * @param {Event} e\n\t */\n\tonFocus(e) {\n\t\tif (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 * @param {Event} _e\n\t */\n\tonMouseleave(_e) {\n\t\tsetTimeout(() => {\n\t\t\tif (this.elPopupInner.matches(':hover')) {\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\tonResize() {\n\t\t// на android при вызове метода append сбрасывается фокус с input внутри this.elPopup\n\t\tif (this.elPopup.parentElement !== document.body) {\n\t\t\tdocument.body.append(this.elPopup);\n\t\t}\n\n\t\tthis.elPopup.style.top = DOM.offset(this.el).top + 'px';\n\t\tthis.elPopup.style.left = DOM.offset(this.el).left + 'px';\n\t}\n\n\tunmount() {\n\t\tsuper.unmount();\n\n\t\tthis.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() {\n\t\tlet p = this.options.p;\n\t\tlet leftPos;\n\n\t\tthis.elPopup.style.height = this.el.offsetHeight + 'px';\n\n\t\tthis.elPopup.classList.remove('p0', 'p1', 'p2', 'p3', 'p4');\n\t\tthis.elPopup.classList.add('p' + p);\n\n\t\tswitch (this.options.posBy) {\n\t\t\tcase 'left':\n\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || 0);\n\t\t\t\tleftPos += this.shift.left;\n\t\t\t\tthis.elPopup.style.left = leftPos + 'px';\n\n\t\t\t\tbreak;\n\t\t\tcase 'right':\n\t\t\t\tleftPos = this.el.offsetLeft + parseInt(this.el.style['margin-left'] || 0);\n\t\t\t\tthis.elPopup.style.right = this.el.offsetParent.offsetWidth - this.el.offsetWidth - leftPos + 'px';\n\n\t\t\t\tbreak;\n\t\t\tcase 'fixed':\n\t\t\t\tthis.addEventListenerWithUnmount(window, 'resize', () => this.onResize());\n\n\t\t\t\tthis.onResize();\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.options.posBy.append(this.elPopup);\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\tthis.elPopupInner.style.maxWidth = 'unset';\n\t\tthis.elPopupInner.style.maxHeight = 'unset';\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\tconst contentRight = window.innerWidth - contentBoundingClientRect.right;\n\t\tconst contentBottom = window.innerHeight - contentBoundingClientRect.bottom;\n\n\t\tconst margin = 8;\n\n\t\tif (contentBoundingClientRect.top < margin) {\n\t\t\toutTop = true;\n\t\t}\n\n\t\tif (contentRight < margin) {\n\t\t\toutRight = true;\n\t\t}\n\n\t\tif (contentBottom < margin) {\n\t\t\toutBottom = true;\n\t\t}\n\n\t\tif (contentBoundingClientRect.left < margin) {\n\t\t\toutLeft = true;\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\tthis.elPopupInner.style.maxWidth = '';\n\t\tthis.elPopupInner.style.maxHeight = '';\n\n\t\tWorker.scrollToActive(this.elPopup);\n\t};\n\n\tonTouchmove(e) {\n\t\t// разрешить горизональный скролл\n\t\tlet hasScrollX = e.currentTarget.scrollWidth > e.currentTarget.offsetWidth;\n\t\tif (hasScrollX) {\n\t\t\treturn;\n\t\t}\n\n\t\t// разрешить горизональный скролл\n\t\tlet hasScrollX2 = e.target.parentElement.scrollWidth > e.target.parentElement.offsetWidth;\n\t\tif (hasScrollX2) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!e.currentTarget.matches('.has_scroll')) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tclose() {\n\t\tif (this.isClosed) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isClosed = true;\n\n\t\tif (this.$) {\n\t\t\tthis.$.trigger('afterclose.top-menu-popup', [jQuery(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.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}, 300);\n\t}\n\n\tasync vueOpen() {\n\t\tawait this.vueGetComponent()?.onOpen(this);\n\t}\n\n\tvueClose() {\n\t\tthis.vueGetComponent()?.onClose(this);\n\t}\n\n\t// получить vueConnectors компонента Popup\n\tvueGetComponent() {\n\t\treturn Worker.vueConnectors.get(this.el.dataset.topPopupId);\n\t}\n}\n\nGlobalEvents.init();\n\nexport default Popup;"],"names":["Component","componentName","el","options","component","forms","eventData","type","listener","nodes","node","_a","GlobalEvents","e","elCloser","elUl","popup_worker","elPopup","elBtn","elItem","elItemActive","elMore","countLi","elsLiVisible","index","css","cssM","cssPC","Core","Popup","vueConnector","classes","existsWidgetSearch","fromTop","elPopupOpened","p","leftPos","boundingClientRect","outTop","outRight","outBottom","outLeft","usefulInvertX","usefulInvertY","margin","contentBoundingClientRect","contentRight","contentBottom","elsPopups","elPopupLast"],"mappings":"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"}
package/README.md CHANGED
@@ -7,54 +7,72 @@
7
7
  - amd (requirejs)
8
8
  - es
9
9
 
10
- Компоненты делятся на разные модули и доступны через импорт этих модулей.
10
+ Компоненты делятся на разные библиотеки и доступны через импорт этих библиотек.
11
11
 
12
- Каждый модуль находится в отдельной папке, соответствующей имени модулю.
12
+ Каждая библиотека находится в отдельной папке, соответствующей имени библиотеки.
13
13
 
14
- Все стили модулей находятся в корневой папке в файлах соответствующих имени модулю.
14
+ Все стили модулей находятся в папке /assets/ в файлах соответствующих имени библиотеки.
15
+ В этой же папке располагаются стили для асинхронно загружаемых компонентов.
16
+ Все стили грузятся автоматически вместе с загрузкой компонента.
15
17
 
16
- Список всех компонентов см. на [npmjs](https://www.npmjs.com/package/topvisor-ui?activeTab=code).
18
+ Список доступных библиотек компонентов см. на [npmjs](https://www.npmjs.com/package/@topvisor/ui?activeTab=code).
17
19
 
18
- ## Другие ресурсы
20
+ ## Общие стили UI
19
21
 
20
- - [core.css](core.css) - основная палитра цветов и стили компонентов
21
- - [light.css](light.css) - светлая тема
22
- - [dark.css](dark.css) - темная тема
22
+ - /assets/core.css - основная палитра цветов и общие стили и модификаторы компонентов
23
+ - /assets/light.css - светлая тема
24
+ - /assets/dark.css - темная тема
23
25
 
24
26
  ## Подключение стилей
25
27
 
26
28
  Стили компонентов подгружаются автоматически.
27
29
 
28
- Стили core.css необходимо подгрузить на страницу.
30
+ Стили UI core.css необходимо подгрузить на страницу вручную.
29
31
 
30
32
  ```js
31
- import '@topvisor/ui/core.css';
33
+ import '@topvisor/ui/assets/core.css';
32
34
  ```
33
35
 
34
- Стили темы необходимо подгрузить на страницу.
36
+ ```html
37
+ <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/assets/core.css" rel="stylesheet">
38
+ ```
39
+
40
+ ## Подключение стилей темы
35
41
 
36
- Для смены темы необходимо подгрузить файл стилей необходимой темы и сразу отключить стили предыдущей темы.
42
+ Стили темы необходимо подгрузить на страницу вручную.
43
+
44
+ Для смены темы необходимо подгрузить файл стилей необходимой темы и отключить стили предыдущей темы.
37
45
 
38
46
  ```js
39
- import '@topvisor/ui/light.css';
47
+ import '@topvisor/ui/assets/light.css';
48
+ ```
49
+
50
+ ```html
51
+ <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/assets/light.css" rel="stylesheet">
40
52
  ```
41
53
 
42
- Стили icomoon необходимо подгрузить на страницу.
54
+ ## Внешние зависимсоти
55
+
56
+ Стили icomoon добавлены в пакет и их необходимо подгрузить на страницу вручную.
43
57
 
44
58
  ```js
45
59
  import '@topvisor/ui/icomoon/style.css';
46
60
  ```
47
61
 
62
+ ```html
63
+ <link href="https://cdn.jsdelivr.net/npm/@topvisor/ui/icomoon/style.css" rel="stylesheet">
64
+ ```
65
+
48
66
  ## Подключение компонентов
49
67
 
50
68
  Пример подключения библиотеки Forms и компонента Button:
51
69
 
52
70
  ```javascript
53
- requirejs(['@topvisor/ui/forms/forms.amd'], ({Button}) => {
71
+ require(['@topvisor/ui/forms/forms.amd'], ({ Button }) => {
54
72
  console.log(Button);
55
73
  });
56
74
 
57
- requirejs(['@topvisor/ui/forms/forms.amd'], Forms => {
75
+ require(['@topvisor/ui/forms/forms.amd'], Forms => {
58
76
  const { Button } = Forms;
59
77
 
60
78
  console.log(Forms);
package/assets/forms.css CHANGED
@@ -1 +1 @@
1
- .top-avatar{display:flex;height:var(--9f3c0670);left:0;position:relative;top:0;width:var(--9f3c0670)}.top-avatar_image{border-radius:50%;height:100%;width:100%}.top-avatar_status{background-color:var(--color-green-500);border:2px solid var(--content-background-color);border-radius:50%;bottom:0;height:25%;position:absolute;right:0;width:25%}.top-button{cursor:pointer;box-sizing:border-box;box-shadow:var(--top-button-box-shadow);border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);background-color:var(--top-button-background-color);height:var(--top-forms-base-height);padding:0 var(--top-forms-padding);color:var(--top-button-color);line-height:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background-color .15s,border-color .15s,box-shadow .15s}.top-button:hover{box-shadow:var(--top-button-box-shadow-hover);background-color:var(--top-button-background-color-hover)}.top-button:active{box-shadow:var(--top-button-box-shadow-active);background-color:var(--top-button-background-color-active)}.top-button.top-active{box-shadow:var(--top-button-box-shadow-selected);background-color:var(--top-button-background-color-selected)}.top-button.top-button-progress{cursor:help;box-shadow:inset #00000080 0 0 64px;background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-size:32px 32px;animation:_progress_1hqxk_1 1s linear infinite}@keyframes _progress_1hqxk_1{0%{background-position-x:0px}to{background-position-x:32px}}a.top-button,button.top-button{min-width:100px;text-decoration:none}a.top-button,a.top-button:hover{min-width:var(--top-forms-base-height);text-decoration:none}.top-button[data-top-icon]:not(:empty),.top-button[data-top-icon2]:not(:empty){justify-content:flex-start;text-align:left}.top-button[data-top-icon]{padding-left:0}.top-button[data-top-icon2]{padding-right:var(--top-select_arrow-width)}.top-button[data-top-icon2]:after{margin-left:auto}.top-button:empty{min-width:var(--top-forms-base-height)}.top-button[data-top-icon]:empty,.top-button[data-top-icon2]:empty{padding:0}.top-button.top-color_blue{--top-button-background-color: var(--color-blue-500)}.top-button.top-color_green{--top-button-background-color: var(--color-green-500)}.top-button.top-color_orange{--top-button-background-color: var(--color-orange-500)}.top-button.top-color_red{--top-button-background-color: var(--color-red-500)}.top-button.top-color_pink{--top-button-background-color: var(--color-pink-500)}.top-button.top-color_theme{--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-color: var(--color-text-1);--top-button-background-color: transparent;--top-button-background-color-hover: var(--color-secondary-opacity);--top-button-background-color-active: var(--color-secondary-2-opacity);--top-button-background-color-selected: var(--color-secondary-2-opacity)}.top-button.top-color_theme.top-active{--top-icon-color: var(--color-text-2)}.top-button.top-style_outline{--top-button-box-shadow: none;--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-forms-border-color: var(--top-style_outline-color);--top-style_outline-color: var(--color-steel-400);--top-button-color: var(--top-style_outline-color);--top-button-background-color: var(--content-background-color);--top-button-background-color-hover: var(--color-theme-100);--top-button-background-color-active: var(--color-theme-150);--top-button-background-color-selected: var(--color-theme-125);--top-forms-border-width: 1px}.top-button.top-style_outline.top-color_theme{--top-button-color: var(--color-text)}.top-button.top-style_outline.top-color_blue{--top-style_outline-color: var(--color-blue-500)}.top-button.top-style_outline.top-color_green{--top-style_outline-color: var(--color-green-500)}.top-button.top-style_outline.top-color_orange{--top-style_outline-color: var(--color-orange-500)}.top-button.top-style_outline.top-color_red{--top-style_outline-color: var(--color-red-500)}.top-button.top-style_outline.top-color_pink{--top-style_outline-color: var(--color-pink-500)}.top-button.top-style_soft{--top-shadow-darken: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: var(--color-secondary-opacity);--top-button-background-color-hover: var(--color-secondary-2-opacity);--top-button-background-color-active: var(--color-secondary-3-opacity);--top-button-background-color-selected: var(--color-secondary-3-opacity)}.top-button.top-style_soft.top-color_blue{--top-button-color: var(--color-blue-550)}.top-button.top-style_soft.top-color_orange{--top-button-color: var(--color-orange-500)}.top-button.top-style_soft.top-color_green{--top-button-color: var(--color-green-500)}.top-button.top-style_soft.top-color_red{--top-button-color: var(--color-red-500)}.top-button.top-style_soft.top-color_pink{--top-button-color: var(--color-pink-500)}.top-button.top-style_transparent{--top-shadow-darken: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: transparent;--top-button-background-color-hover: transparent;--top-button-background-color-active: transparent;--top-button-background-color-selected: var(--color-steel-200)}.top-button.top-style_transparent:hover{opacity:.8}.top-button.top-style_transparent.top-color_blue{--top-button-color: var(--color-blue-450)}.top-button.top-style_transparent.top-color_green{--top-button-color: var(--color-green-450)}.top-button.top-style_transparent.top-color_orange{--top-button-color: var(--color-orange-450)}.top-button.top-style_transparent.top-color_red{--top-button-color: var(--color-red-450)}.top-button.top-style_transparent.top-color_pink{--top-button-color: var(--color-pink-450)}.top-button{--top-button-color: var(--color-white);--top-button-background-color: transparent;--top-button-background-color-hover: var(--top-button-background-color);--top-button-background-color-active: var(--top-button-background-color-hover);--top-button-background-color-selected: var(--top-button-background-color-hover);--top-button-box-shadow: none;--top-button-box-shadow-hover: var(--top-shadow-darken-2);--top-button-box-shadow-active: var(--top-shadow-darken-3);--top-button-box-shadow-selected: var(--top-shadow-darken-3);--top-forms-border-width: 0px;--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding))}.top-button.top-size_l{--top-forms-padding: var(--top-forms-padding_l);--top-forms-base-height: var(--top-forms-base-height_l)}.top-button.top-size_xl{--top-forms-padding: var(--top-forms-padding_xl);--top-forms-base-height: var(--top-forms-base-height_xl)}.top-forms-optionLabel{flex-grow:1}.top-forms-optionLabel_title{min-height:var(--top-forms-option-height);display:flex;align-items:center}.top-forms-optionLabel_title-disabled{color:var(--color-text-3)}.top-forms-optionLabel_description{color:var(--color-text-2);font-size:.85em;line-height:var(--top-forms-option-height)}.top-forms-optionLabel_description-disabled{color:var(--color-text-3)}.top-checkbox{cursor:pointer;display:inline-flex}.top-checkbox_input{cursor:inherit;border-radius:4px;background:var(--content-background-color);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-checkbox_input:before{content:" ";color:#fff;font-family:Topvisor-2;font-size:16px}.top-checkbox_input:hover{border-color:var(--top-forms-option-color);background:var(--color-theme-50)}.top-checkbox_input:checked,.top-checkbox_input:indeterminate{border-color:var(--top-forms-option-color);background:var(--top-forms-option-color)}.top-checkbox_input:checked:before{content:""}.top-checkbox_input:indeterminate:before{content:""}.top-checkbox_input:checked:hover,.top-checkbox_input:indeterminate:hover{border-color:var(--top-forms-option-color-hover);background:var(--top-forms-option-color-hover)}.top-checkbox_input:disabled{border-color:var(--color-line-1-opacity);background:var(--color-theme-50)}.top-checkbox_input:checked:disabled,.top-checkbox_input:indeterminate:disabled{border-color:transparent;background:var(--color-theme-400)}.top-checkbox_input.top-error{border-color:var(--color-negative)}.top-checkbox_input.top-error:hover{border-color:var(--color-negative-2)}.top-checkbox_input:checked.top-error,.top-checkbox_input:indeterminate.top-error{background:var(--color-negative)}.top-checkbox_input:checked.top-error:hover,.top-checkbox_input:indeterminate.top-error:hover{background:var(--color-negative-2)}.top-hint{--top-icon-size: 16px;--top-icon-width: var(--top-icon-size);border-radius:50%;background:var(--content-background-color);padding:1px;color:var(--color-text-4);line-height:1;z-index:1;pointer-events:all}.top-hint:hover{color:var(--color-text-3)}.top-input{--top-forms_clear-width: 0px;width:180px;position:relative;display:inline-flex;align-items:center;gap:var(--top-gap-1)}.top-input_input{background:var(--top-forms-background-color);height:var(--top-forms-base-height);padding:0;padding-right:max(var(--top-forms-padding),calc(var(--top-icon2-width) + var(--top-forms_clear-width)));padding-left:max(var(--top-forms-padding),var(--top-icon-width))}.top-input_input:hover{background:var(--top-forms-background-color-hover)}.top-input_input:focus{outline-color:var(--color-theme-75);outline-offset:0}.top-input[data-top-icon]:before,.top-input[data-top-icon2]:after{--top-icon-color: var(--color-text-secondary);--top-icon2-color: var(--color-text-secondary);position:absolute;z-index:3}.top-input[data-top-icon]:before{left:0}.top-input[data-top-icon2]:after{right:0}.top-input-withCleaner{--top-forms_clear-width: 24px}.top-input_cleaner{--top-icon-size: 20px;--top-icon-width: 20px;--top-icon-color: var(--color-text-3);cursor:pointer;border-radius:50%;width:24px;height:24px;position:absolute;right:calc(var(--top-forms-border-width) + max(var(--top-icon2-width),var(--top-forms-padding) / 2));z-index:1;display:flex;align-items:center;justify-content:center}.top-input_cleaner:hover{--top-icon-color: var(--color-text-2)}.top-input_input{width:50%;flex-grow:1}.top-input-datepicker{width:calc(105px + var(--top-icon-width) + var(--top-icon2-width))}.top-input_input-date{opacity:0;position:absolute;inset:0;z-index:-1}.top-input_input-date::-webkit-inner-spin-button{display:none}.top-input_input-date::-webkit-calendar-picker-indicator{opacity:0}.top-inputRange{max-width:320px;vertical-align:baseline;display:inline-flex;gap:8px}.top-inputRange_dash{height:var(--top-forms-base-height);color:var(--color-text-4);align-self:flex-end;display:inline-flex;align-items:center}.top-inputRange>.top-input{flex-grow:1}:root{--top-radio-background-color: var(--content-background-color);--top-radio-background-color-hover: var(--top-radio-background-color);--top-radio-background-color-active: var(--top-radio-background-color)}.top-radio{cursor:pointer}.top-radio_input{border-radius:50%;background:var(--content-background-color);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-radio_input:hover{border-color:var(--top-forms-option-color);background:var(--color-theme-50)}.top-radio_input:checked{border-color:var(--top-forms-option-color);border-width:5px}.top-radio_input:checked:hover{border-color:var(--top-forms-option-color-hover)}.top-radio_input:disabled{border-color:var(--color-line-1-opacity);background:var(--color-theme-50)}.top-radio_input:checked:disabled{border-color:var(--color-theme-400)}.top-radio_input.top-error{border-color:var(--color-negative)}.top-radio_input.top-error:hover{border-color:var(--color-negative-2)}.top-checkboxSwitcher{cursor:pointer;display:inline-flex;gap:4px}.top-checkboxSwitcher_input{border-radius:9px;border:none;background:var(--color-theme-100);width:36px;height:18px;position:relative}.top-checkboxSwitcher_input:before{content:"";border-radius:50%;background:var(--color-white);width:12px;height:12px;margin:3px;position:absolute;top:0;left:0;transition:left .1s}.top-checkboxSwitcher_input:hover{background:var(--color-theme-150)}.top-checkboxSwitcher_input:checked{background:var(--top-forms-option-color)}.top-checkboxSwitcher_input:checked:hover{background:var(--top-forms-option-color-hover)}.top-checkboxSwitcher_input:checked:before{left:50%}.top-checkboxSwitcher_input:disabled{background:var(--color-theme-400)}.top-checkboxSwitcher_input.top-error{background:var(--color-negative)}.top-checkboxSwitcher_input.top-error:hover{background:var(--color-negative-2)}.top-textarea{width:180px;display:inline-flex;align-items:center;position:relative}.top-textarea_textarea{background:var(--top-forms-background-color);width:100%;padding:var(--top-forms-padding);resize:none}.top-textarea_textarea:hover{background:var(--top-forms-background-color-hover)}.top-textarea_textarea:focus{outline-color:var(--color-theme-75);outline-offset:0px}.top-textarea_textarea.top-textarea_textarea-expandable{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0}.top-textarea_pseudoContent{box-sizing:border-box;min-height:var(--c35baa86);padding:var(--top-forms-padding);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;z-index:-1}.top-textarea_hint{position:absolute;top:2px;right:2px}.top-select{--top-icon-color: var(--color-text-3);--top-icon2-color: var(--color-text-2);align-items:center;width:180px;max-width:100%;display:inline-flex}.top-select-error{--top-icon-color: var(--color-negative);--top-icon2-color: var(--color-negative)}.top-select_select{background-color:var(--top-forms-background-color);padding-left:var(--top-forms-padding);text-indent:clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)));width:100%;height:var(--top-forms-base-height);text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.top-select_select:focus{outline-color:var(--color-theme-75);outline-offset:0}.top-select_select:disabled{background:var(--color-theme-50)}.top-select optgroup{color:var(--color-text-1);font-style:normal}.top-select option{background:var(--content-background-color);color:var(--color-text-1)}@-moz-document url-prefix(){.top-select_select{text-indent:calc(clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)))/2)}}@media only screen and (min-width: 900px){.top-changer{cursor:pointer;border-radius:100%;width:0;transform:translate(-44px);color:var(--color-text-secondary-2);font-size:16px;line-height:1;display:none;z-index:2;order:4}.top-changer:hover{color:var(--color-primary)}.top-changer:after{content:"";background-color:var(--top-forms-background-color);font-family:Topvisor-2}*:hover>.top-changer{display:block}}
1
+ .top-avatar{display:flex;height:var(--9f3c0670);left:0;position:relative;top:0;width:var(--9f3c0670)}.top-avatar_image{border-radius:50%;height:100%;width:100%}.top-avatar_status{background-color:var(--color-green-500);border:2px solid var(--content-background-color);border-radius:50%;bottom:0;height:25%;position:absolute;right:0;width:25%}.top-button{cursor:pointer;box-sizing:border-box;box-shadow:var(--top-button-box-shadow);border-radius:var(--top-forms-radius);border:var(--top-forms-border-width) solid var(--top-forms-border-color);background-color:var(--top-button-background-color);height:var(--top-forms-base-height);padding:0 var(--top-forms-padding);color:var(--top-button-color);line-height:1;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s,box-shadow .15s}.top-button:hover{box-shadow:var(--top-button-box-shadow-hover);background-color:var(--top-button-background-color-hover)}.top-button:active{box-shadow:var(--top-button-box-shadow-active);background-color:var(--top-button-background-color-active)}.top-button.top-active{box-shadow:var(--top-button-box-shadow-selected);background-color:var(--top-button-background-color-selected)}.top-button.top-button-progress{cursor:help;box-shadow:inset #00000080 0 0 64px;background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);background-size:32px 32px;animation:_progress_tkkz7_1 1s linear infinite}@keyframes _progress_tkkz7_1{0%{background-position-x:0px}to{background-position-x:32px}}a.top-button,button.top-button{min-width:100px;text-decoration:none}a.top-button,a.top-button:hover{min-width:var(--top-forms-base-height);text-decoration:none}.top-button[data-top-icon]:not(:empty),.top-button[data-top-icon2]:not(:empty){justify-content:flex-start;text-align:left}.top-button[data-top-icon]{padding-left:0}.top-button[data-top-icon2]{padding-right:var(--top-select_arrow-width)}.top-button[data-top-icon2]:after{margin-left:auto}.top-button:empty{min-width:var(--top-forms-base-height)}.top-button[data-top-icon]:empty,.top-button[data-top-icon2]:empty{padding:0}.top-button.top-color_blue{--top-button-background-color: var(--color-blue-500)}.top-button.top-color_green{--top-button-background-color: var(--color-green-500)}.top-button.top-color_orange{--top-button-background-color: var(--color-orange-500)}.top-button.top-color_red{--top-button-background-color: var(--color-red-500)}.top-button.top-color_pink{--top-button-background-color: var(--color-pink-500)}.top-button.top-color_theme{--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-icon-color: var(--color-text-2);--top-icon2-color: var(--color-text-2);--top-button-color: var(--color-text-1);--top-button-background-color: transparent;--top-button-background-color-hover: var(--color-secondary-opacity);--top-button-background-color-active: var(--color-secondary-2-opacity);--top-button-background-color-selected: var(--color-secondary-2-opacity)}.top-button.top-color_theme.top-active{--top-icon-color: var(--color-text-2)}.top-button.top-style_outline{--top-button-box-shadow: none;--top-button-box-shadow-hover: none;--top-button-box-shadow-active: none;--top-button-box-shadow-selected: none;--top-forms-border-color: var(--top-style_outline-color);--top-style_outline-color: var(--color-steel-400);--top-button-color: var(--top-style_outline-color);--top-button-background-color: var(--content-background-color);--top-button-background-color-hover: var(--color-theme-100);--top-button-background-color-active: var(--color-theme-150);--top-button-background-color-selected: var(--color-theme-125);--top-forms-border-width: 1px}.top-button.top-style_outline.top-color_theme{--top-button-color: var(--color-text)}.top-button.top-style_outline.top-color_blue{--top-style_outline-color: var(--color-blue-500)}.top-button.top-style_outline.top-color_green{--top-style_outline-color: var(--color-green-500)}.top-button.top-style_outline.top-color_orange{--top-style_outline-color: var(--color-orange-500)}.top-button.top-style_outline.top-color_red{--top-style_outline-color: var(--color-red-500)}.top-button.top-style_outline.top-color_pink{--top-style_outline-color: var(--color-pink-500)}.top-button.top-style_soft{--top-shadow-darken: none;--top-shadow-darken-2: none;--top-shadow-darken-3: none;--top-button-color: var(--color-text);--top-button-background-color: var(--color-secondary-opacity);--top-button-background-color-hover: var(--color-secondary-2-opacity);--top-button-background-color-active: var(--color-secondary-3-opacity);--top-button-background-color-selected: var(--color-secondary-3-opacity)}.top-button.top-style_soft.top-color_blue{--top-button-color: var(--color-blue-550)}.top-button.top-style_soft.top-color_orange{--top-button-color: var(--color-orange-500)}.top-button.top-style_soft.top-color_green{--top-button-color: var(--color-green-500)}.top-button.top-style_soft.top-color_red{--top-button-color: var(--color-red-500)}.top-button.top-style_soft.top-color_pink{--top-button-color: var(--color-pink-500)}.top-button{--top-button-color: var(--color-white);--top-button-background-color: transparent;--top-button-background-color-hover: var(--top-button-background-color);--top-button-background-color-active: var(--top-button-background-color-hover);--top-button-background-color-selected: var(--top-button-background-color-hover);--top-button-box-shadow: none;--top-button-box-shadow-hover: var(--top-shadow-darken-2);--top-button-box-shadow-active: var(--top-shadow-darken-3);--top-button-box-shadow-selected: var(--top-shadow-darken-3);--top-forms-border-width: 0px;--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding))}.top-button.top-size_l{--top-forms-padding: var(--top-forms-padding_l);--top-forms-base-height: var(--top-forms-base-height_l)}.top-button.top-size_xl{--top-forms-padding: var(--top-forms-padding_xl);--top-forms-base-height: var(--top-forms-base-height_xl)}.top-forms-optionLabel{flex-grow:1}.top-forms-optionLabel_title{min-height:var(--top-forms-option-height);display:flex;align-items:center}.top-forms-optionLabel_title-disabled{color:var(--color-text-3)}.top-forms-optionLabel_description{color:var(--color-text-2);font-size:.85em;line-height:var(--top-forms-option-height)}.top-forms-optionLabel_description-disabled{color:var(--color-text-3)}.top-checkbox{cursor:pointer;display:inline-flex}.top-checkbox_input{cursor:inherit;border-radius:4px;background:var(--content-background-color);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-checkbox_input:before{content:" ";color:#fff;font-family:Topvisor-2;font-size:16px}.top-checkbox_input:hover{border-color:var(--top-forms-option-color);background:var(--color-theme-50)}.top-checkbox_input:checked,.top-checkbox_input:indeterminate{border-color:var(--top-forms-option-color);background:var(--top-forms-option-color)}.top-checkbox_input:checked:before{content:""}.top-checkbox_input:indeterminate:before{content:""}.top-checkbox_input:checked:hover,.top-checkbox_input:indeterminate:hover{border-color:var(--top-forms-option-color-hover);background:var(--top-forms-option-color-hover)}.top-checkbox_input:disabled{border-color:var(--color-line-1-opacity);background:var(--color-theme-50)}.top-checkbox_input:checked:disabled,.top-checkbox_input:indeterminate:disabled{border-color:transparent;background:var(--color-theme-400)}.top-checkbox_input.top-error{border-color:var(--color-negative)}.top-checkbox_input.top-error:hover{border-color:var(--color-negative-2)}.top-checkbox_input:checked.top-error,.top-checkbox_input:indeterminate.top-error{background:var(--color-negative)}.top-checkbox_input:checked.top-error:hover,.top-checkbox_input:indeterminate.top-error:hover{background:var(--color-negative-2)}.top-hint{--top-icon-size: 16px;--top-icon-width: var(--top-icon-size);border-radius:50%;background:var(--content-background-color);padding:1px;color:var(--color-text-4);line-height:1;z-index:1;pointer-events:all}.top-hint:hover{color:var(--color-text-3)}.top-input{--top-forms_clear-width: 0px;width:180px;position:relative;display:inline-flex;align-items:center;gap:var(--top-gap-1)}.top-input_input{background:var(--top-forms-background-color);height:var(--top-forms-base-height);padding:0;padding-right:max(var(--top-forms-padding),calc(var(--top-icon2-width) + var(--top-forms_clear-width)));padding-left:max(var(--top-forms-padding),var(--top-icon-width))}.top-input_input:hover{background:var(--top-forms-background-color-hover)}.top-input_input:focus{outline-color:var(--color-theme-75);outline-offset:0}.top-input[data-top-icon]:before,.top-input[data-top-icon2]:after{--top-icon-color: var(--color-text-secondary);--top-icon2-color: var(--color-text-secondary);position:absolute;z-index:3}.top-input[data-top-icon]:before{left:0}.top-input[data-top-icon2]:after{right:0}.top-input-withCleaner{--top-forms_clear-width: 24px}.top-input_cleaner{--top-icon-size: 20px;--top-icon-width: 20px;--top-icon-color: var(--color-text-3);cursor:pointer;border-radius:50%;width:24px;height:24px;position:absolute;right:calc(var(--top-forms-border-width) + max(var(--top-icon2-width),var(--top-forms-padding) / 2));z-index:1;display:flex;align-items:center;justify-content:center}.top-input_cleaner:hover{--top-icon-color: var(--color-text-2)}.top-input_input{width:50%;flex-grow:1}.top-input-datepicker{width:calc(105px + var(--top-icon-width) + var(--top-icon2-width))}.top-input_input-date{opacity:0;position:absolute;inset:0;z-index:-1}.top-input_input-date::-webkit-inner-spin-button{display:none}.top-input_input-date::-webkit-calendar-picker-indicator{opacity:0}.top-inputRange{max-width:320px;vertical-align:baseline;display:inline-flex;gap:8px}.top-inputRange_dash{height:var(--top-forms-base-height);color:var(--color-text-4);align-self:flex-end;display:inline-flex;align-items:center}.top-inputRange>.top-input{flex-grow:1}:root{--top-radio-background-color: var(--content-background-color);--top-radio-background-color-hover: var(--top-radio-background-color);--top-radio-background-color-active: var(--top-radio-background-color)}.top-radio{cursor:pointer}.top-radio_input{border-radius:50%;background:var(--content-background-color);border:1px solid var(--top-forms-border-color);width:calc(var(--top-forms-option-height) - 3px * 2);height:calc(var(--top-forms-option-height) - 3px * 2)}.top-radio_input:hover{border-color:var(--top-forms-option-color);background:var(--color-theme-50)}.top-radio_input:checked{border-color:var(--top-forms-option-color);border-width:5px}.top-radio_input:checked:hover{border-color:var(--top-forms-option-color-hover)}.top-radio_input:disabled{border-color:var(--color-line-1-opacity);background:var(--color-theme-50)}.top-radio_input:checked:disabled{border-color:var(--color-theme-400)}.top-radio_input.top-error{border-color:var(--color-negative)}.top-radio_input.top-error:hover{border-color:var(--color-negative-2)}.top-checkboxSwitcher{cursor:pointer;display:inline-flex;gap:4px}.top-checkboxSwitcher_input{border-radius:9px;border:none;background:var(--color-theme-100);width:36px;height:18px;position:relative}.top-checkboxSwitcher_input:before{content:"";border-radius:50%;background:var(--color-white);width:12px;height:12px;margin:3px;position:absolute;top:0;left:0;transition:left .1s}.top-checkboxSwitcher_input:hover{background:var(--color-theme-150)}.top-checkboxSwitcher_input:checked{background:var(--top-forms-option-color)}.top-checkboxSwitcher_input:checked:hover{background:var(--top-forms-option-color-hover)}.top-checkboxSwitcher_input:checked:before{left:50%}.top-checkboxSwitcher_input:disabled{background:var(--color-theme-400)}.top-checkboxSwitcher_input.top-error{background:var(--color-negative)}.top-checkboxSwitcher_input.top-error:hover{background:var(--color-negative-2)}.top-textarea{width:180px;display:inline-flex;align-items:center;position:relative}.top-textarea_textarea{background:var(--top-forms-background-color);width:100%;padding:var(--top-forms-padding);resize:none}.top-textarea_textarea:hover{background:var(--top-forms-background-color-hover)}.top-textarea_textarea:focus{outline-color:var(--color-theme-75);outline-offset:0px}.top-textarea_textarea.top-textarea_textarea-expandable{width:100%;height:100%;overflow:hidden;position:absolute;top:0;left:0}.top-textarea_pseudoContent{box-sizing:border-box;min-height:var(--c35baa86);padding:var(--top-forms-padding);font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;z-index:-1}.top-textarea_hint{position:absolute;top:2px;right:2px}.top-select{--top-icon-color: var(--color-text-3);--top-icon2-color: var(--color-text-2);align-items:center;width:180px;max-width:100%;display:inline-flex}.top-select-error{--top-icon-color: var(--color-negative);--top-icon2-color: var(--color-negative)}.top-select_select{background-color:var(--top-forms-background-color);padding-left:var(--top-forms-padding);text-indent:clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)));width:100%;height:var(--top-forms-base-height);text-overflow:ellipsis;white-space:nowrap;flex-grow:1;overflow:hidden}.top-select_select:focus{outline-color:var(--color-theme-75);outline-offset:0}.top-select_select:disabled{background:var(--color-theme-50)}.top-select optgroup{color:var(--color-text-1);font-style:normal}.top-select option{background:var(--content-background-color);color:var(--color-text-1)}@-moz-document url-prefix(){.top-select_select{text-indent:calc(clamp(0px,calc(var(--top-icon-both-width) - var(--top-forms-padding)),calc(var(--top-icon-both-width) - var(--top-forms-padding)))/2)}}@media only screen and (min-width: 900px){.top-changer{cursor:pointer;border-radius:100%;width:0;transform:translate(-44px);color:var(--color-text-secondary-2);font-size:16px;line-height:1;display:none;z-index:2;order:4}.top-changer:hover{color:var(--color-primary)}.top-changer:after{content:"";background-color:var(--top-forms-background-color);font-family:Topvisor-2}*:hover>.top-changer{display:block}}
package/core/core.amd.js CHANGED
@@ -1,2 +1,2 @@
1
- define(["require","vue","../.chunks/forms-58420e52.amd"],function(r,e,u){"use strict";if(typeof e>"u")var e=window.Vue;return u.Core});
1
+ define(["require","vue","../.chunks/forms-b9e5edd2.amd"],function(r,e,u){"use strict";if(typeof e>"u")var e=window.Vue;return u.Core});
2
2
  //# sourceMappingURL=core.amd.js.map
package/core/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "vue";
2
- import { C as a } from "../.chunks/forms-779fee37.es.js";
2
+ import { C as a } from "../.chunks/forms-7f061546.es.js";
3
3
  export {
4
4
  a as default
5
5
  };
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-58420e52.amd","vue"],function(t,e,n,a){"use strict";if(typeof a>"u")var a=window.Vue;e.Avatar=n.avatar,e.Button=n.Button,e.Checkbox=n.checkbox,e.ControlLabel=n.ControlLabel,e.Hint=n.Hint,e.Input=n.Input,e.InputDate=n.inputDate,e.InputRange=n.inputRange,e.Radio=n.radio,e.Select=n.select,e.Switcher=n.switcher,e.Textarea=n.Textarea,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","../.chunks/forms-b9e5edd2.amd","vue"],function(t,e,n,a){"use strict";if(typeof a>"u")var a=window.Vue;e.Avatar=n.avatar,e.Button=n.Button,e.Checkbox=n.checkbox,e.ControlLabel=n.ControlLabel,e.Hint=n.Hint,e.Input=n.Input,e.InputDate=n.inputDate,e.InputRange=n.inputRange,e.Radio=n.radio,e.Select=n.select,e.Switcher=n.switcher,e.Textarea=n.Textarea,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=forms.amd.js.map
package/forms/forms.js CHANGED
@@ -1,4 +1,4 @@
1
- import { b as e, B as o, c as r, d as n, H as i, I as p, i as c, e as u, r as I, f as b, s as l, T as x } from "../.chunks/forms-779fee37.es.js";
1
+ import { b as e, B as o, c as r, d as n, H as i, I as p, i as c, e as u, r as I, f as b, s as l, T as x } from "../.chunks/forms-7f061546.es.js";
2
2
  import "vue";
3
3
  export {
4
4
  e as Avatar,
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-58420e52.amd"],function(V,y,e,p){"use strict";V(["../core/core.amd"],c=>{const m=["../assets/formsExt.css"].map(a=>V.toUrl(a));c.Page.addCss(m)});const b={key:0,class:"top-editArea_title"},f={class:"top-editArea_footer"},h=e.defineComponent({__name:"editArea",props:{modelValue:{},title:{},cancelText:{default:"Отмена"},submitText:{default:"Отправить"},attachToKeyboard:{type:Boolean},name:{},placeholder:{},rows:{},minHeight:{},expandable:{type:Boolean,default:!0},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{}},emits:["update:modelValue","cancel"],setup(c,{emit:m}){const a=c,d=m,n=e.ref(""),r=e.ref(a.modelValue);e.watch(e.toRef(a,"modelValue"),()=>{r.value=a.modelValue});const o=e.computed(()=>r.value!==a.modelValue),s=t=>{d("update:modelValue",t)},l=()=>{d("cancel"),r.value=a.modelValue};return(t,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-editArea":!0,"top-editArea-attachedToKeyboard":t.attachToKeyboard})},[t.title?(e.openBlock(),e.createElementBlock("div",b,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass({"top-editArea_form":!0,"top-error":t.isError,"top-focus":n.value=="focus"})},[e.createVNode(p.Textarea,{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=u=>r.value=u),name:t.name,placeholder:t.placeholder,rows:t.rows,minHeight:t.minHeight,expandable:t.expandable,disabled:t.disabled,readonly:t.readonly,isError:t.isError,hint:t.hint,class:"top-editArea_element",onFocus:i[1]||(i[1]=u=>n.value="focus"),onBlur:i[2]||(i[2]=u=>n.value=""),onKeyup:[e.withKeys(l,["esc"]),i[3]||(i[3]=e.withKeys(e.withModifiers(u=>s(r.value),["ctrl"]),["enter"]))]},null,8,["modelValue","name","placeholder","rows","minHeight","expandable","disabled","readonly","isError","hint","onKeyup"]),e.createElementVNode("div",f,[o.value&&(!t.attachToKeyboard||t.modelValue)?(e.openBlock(),e.createBlock(p.Button,{key:0,class:"top-editArea_button",color:"theme",icon:t.attachToKeyboard?"":"",onClick:l},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.attachToKeyboard?"":t.cancelText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),e.createVNode(p.Button,{class:"top-editArea_button",icon:t.attachToKeyboard?"":"",onClick:i[4]||(i[4]=u=>s(r.value))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.attachToKeyboard?"":t.submitText),1)]),_:1},8,["icon"])])],2)],2))}}),B={$style:{"top-editArea":"top-editArea","top-editArea_title":"top-editArea_title","top-editArea_form":"top-editArea_form","top-textarea":"top-textarea","top-editArea_element":"top-editArea_element","top-textarea_textarea":"top-textarea_textarea","top-editArea_footer":"top-editArea_footer","top-editArea-attachedToKeyboard":"top-editArea-attachedToKeyboard"}},k=p._export_sfc(h,[["__cssModules",B]]),_={class:"top-editInput"},A=e.defineComponent({__name:"editInput",props:{modelValue:{},input:{},button:{}},emits:["update:modelValue"],setup(c,{emit:m}){const a=c,d=e.ref(a.modelValue);e.watch(e.toRef(a.modelValue),()=>{d.value=a.modelValue});const n=m,r=()=>{n("update:modelValue",d.value)};return(o,s)=>(e.openBlock(),e.createElementBlock("div",_,[e.createVNode(p.Input,e.mergeProps(o.input,{onKeydownCapture:s[0]||(s[0]=e.withKeys(e.withModifiers(l=>d.value=o.modelValue,["stop"]),["esc"])),onKeydown:e.withKeys(e.withModifiers(r,["stop"]),["enter"]),modelValue:d.value,"onUpdate:modelValue":s[1]||(s[1]=l=>d.value=l)}),null,16,["onKeydown","modelValue"]),d.value!==o.modelValue?(e.openBlock(),e.createBlock(p.Button,e.mergeProps({key:0,icon:"",styling:"soft"},o.button,{onClick:r}),{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},16)):e.createCommentVNode("",!0)]))}}),C={$style:{"top-editInput":"top-editInput","top-input":"top-input"}},w=p._export_sfc(A,[["__cssModules",C]]),$=["data-top-icon","onClick"],g={key:0,class:"top-radioGroup_circle"},E=["value","disabled"],K=e.defineComponent({__name:"radioGroup",props:{modelValue:{},radiosProps:{},showIndicator:{type:Boolean},size:{default:"s"},isError:{type:Boolean}},emits:["update:modelValue"],setup(c,{emit:m}){const a=c,d=m,n=e.computed({get(){return a.modelValue},set(o){d("update:modelValue",o)}}),r="radioGroup-"+Math.random();return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-radioGroup":!0,"top-scrollBarXHidding":!0,["top-size_"+o.size]:!!o.size,"top-error":o.isError})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.radiosProps,l=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-radioGroup_item-selected":l.value===n.value,"top-radioGroup_item":!0,"top-forms-focusable":!0,"top-disabled":l.disabled}),"data-top-icon":l.icon,onClick:t=>n.value=l.value},[e.createTextVNode(e.toDisplayString(l.title)+" ",1),o.showIndicator?(e.openBlock(),e.createElementBlock("span",g)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":s[0]||(s[0]=t=>n.value=t),name:r,type:"radio",class:e.normalizeClass({"top-unvisible":!0}),value:l.value,disabled:l.disabled},null,8,E),[[e.vModelRadio,n.value]])],10,$))),256))],2))}}),T={$style:{"top-scrollBarXHidding":"top-scrollBarXHidding","top-radioGroup":"top-radioGroup","top-radioGroup_item":"top-radioGroup_item","top-radioGroup_item-selected":"top-radioGroup_item-selected","top-radioGroup_circle":"top-radioGroup_circle","top-disabled":"top-disabled","top-error":"top-error"}},G=p._export_sfc(K,[["__cssModules",T]]);y.EditArea=k,y.EditInput=w,y.RadioGroup=G,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../.chunks/forms-b9e5edd2.amd"],function(V,y,e,p){"use strict";V(["../core/core.amd"],c=>{const m=["../assets/formsExt.css"].map(a=>V.toUrl(a));c.Page.addCss(m)});const b={key:0,class:"top-editArea_title"},f={class:"top-editArea_footer"},h=e.defineComponent({__name:"editArea",props:{modelValue:{},title:{},cancelText:{default:"Отмена"},submitText:{default:"Отправить"},attachToKeyboard:{type:Boolean},name:{},placeholder:{},rows:{},minHeight:{},expandable:{type:Boolean,default:!0},disabled:{type:Boolean},readonly:{type:Boolean},isError:{type:Boolean},hint:{}},emits:["update:modelValue","cancel"],setup(c,{emit:m}){const a=c,d=m,n=e.ref(""),r=e.ref(a.modelValue);e.watch(e.toRef(a,"modelValue"),()=>{r.value=a.modelValue});const o=e.computed(()=>r.value!==a.modelValue),s=t=>{d("update:modelValue",t)},l=()=>{d("cancel"),r.value=a.modelValue};return(t,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-editArea":!0,"top-editArea-attachedToKeyboard":t.attachToKeyboard})},[t.title?(e.openBlock(),e.createElementBlock("div",b,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass({"top-editArea_form":!0,"top-error":t.isError,"top-focus":n.value=="focus"})},[e.createVNode(p.Textarea,{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=u=>r.value=u),name:t.name,placeholder:t.placeholder,rows:t.rows,minHeight:t.minHeight,expandable:t.expandable,disabled:t.disabled,readonly:t.readonly,isError:t.isError,hint:t.hint,class:"top-editArea_element",onFocus:i[1]||(i[1]=u=>n.value="focus"),onBlur:i[2]||(i[2]=u=>n.value=""),onKeyup:[e.withKeys(l,["esc"]),i[3]||(i[3]=e.withKeys(e.withModifiers(u=>s(r.value),["ctrl"]),["enter"]))]},null,8,["modelValue","name","placeholder","rows","minHeight","expandable","disabled","readonly","isError","hint","onKeyup"]),e.createElementVNode("div",f,[o.value&&(!t.attachToKeyboard||t.modelValue)?(e.openBlock(),e.createBlock(p.Button,{key:0,class:"top-editArea_button",color:"theme",icon:t.attachToKeyboard?"":"",onClick:l},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.attachToKeyboard?"":t.cancelText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),e.createVNode(p.Button,{class:"top-editArea_button",icon:t.attachToKeyboard?"":"",onClick:i[4]||(i[4]=u=>s(r.value))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.attachToKeyboard?"":t.submitText),1)]),_:1},8,["icon"])])],2)],2))}}),B={$style:{"top-editArea":"top-editArea","top-editArea_title":"top-editArea_title","top-editArea_form":"top-editArea_form","top-textarea":"top-textarea","top-editArea_element":"top-editArea_element","top-textarea_textarea":"top-textarea_textarea","top-editArea_footer":"top-editArea_footer","top-editArea-attachedToKeyboard":"top-editArea-attachedToKeyboard"}},k=p._export_sfc(h,[["__cssModules",B]]),_={class:"top-editInput"},A=e.defineComponent({__name:"editInput",props:{modelValue:{},input:{},button:{}},emits:["update:modelValue"],setup(c,{emit:m}){const a=c,d=e.ref(a.modelValue);e.watch(e.toRef(a.modelValue),()=>{d.value=a.modelValue});const n=m,r=()=>{n("update:modelValue",d.value)};return(o,s)=>(e.openBlock(),e.createElementBlock("div",_,[e.createVNode(p.Input,e.mergeProps(o.input,{onKeydownCapture:s[0]||(s[0]=e.withKeys(e.withModifiers(l=>d.value=o.modelValue,["stop"]),["esc"])),onKeydown:e.withKeys(e.withModifiers(r,["stop"]),["enter"]),modelValue:d.value,"onUpdate:modelValue":s[1]||(s[1]=l=>d.value=l)}),null,16,["onKeydown","modelValue"]),d.value!==o.modelValue?(e.openBlock(),e.createBlock(p.Button,e.mergeProps({key:0,icon:"",styling:"soft"},o.button,{onClick:r}),{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3},16)):e.createCommentVNode("",!0)]))}}),C={$style:{"top-editInput":"top-editInput","top-input":"top-input"}},w=p._export_sfc(A,[["__cssModules",C]]),$=["data-top-icon","onClick"],g={key:0,class:"top-radioGroup_circle"},E=["value","disabled"],K=e.defineComponent({__name:"radioGroup",props:{modelValue:{},radiosProps:{},showIndicator:{type:Boolean},size:{default:"s"},isError:{type:Boolean}},emits:["update:modelValue"],setup(c,{emit:m}){const a=c,d=m,n=e.computed({get(){return a.modelValue},set(o){d("update:modelValue",o)}}),r="radioGroup-"+Math.random();return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-radioGroup":!0,"top-scrollBarXHidding":!0,["top-size_"+o.size]:!!o.size,"top-error":o.isError})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.radiosProps,l=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass({"top-radioGroup_item-selected":l.value===n.value,"top-radioGroup_item":!0,"top-forms-focusable":!0,"top-disabled":l.disabled}),"data-top-icon":l.icon,onClick:t=>n.value=l.value},[e.createTextVNode(e.toDisplayString(l.title)+" ",1),o.showIndicator?(e.openBlock(),e.createElementBlock("span",g)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":s[0]||(s[0]=t=>n.value=t),name:r,type:"radio",class:e.normalizeClass({"top-unvisible":!0}),value:l.value,disabled:l.disabled},null,8,E),[[e.vModelRadio,n.value]])],10,$))),256))],2))}}),T={$style:{"top-scrollBarXHidding":"top-scrollBarXHidding","top-radioGroup":"top-radioGroup","top-radioGroup_item":"top-radioGroup_item","top-radioGroup_item-selected":"top-radioGroup_item-selected","top-radioGroup_circle":"top-radioGroup_circle","top-disabled":"top-disabled","top-error":"top-error"}},G=p._export_sfc(K,[["__cssModules",T]]);y.EditArea=k,y.EditInput=w,y.RadioGroup=G,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=formsExt.amd.js.map
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as G, ref as f, watch as w, toRef as k, computed as C, openBlock as n, createElementBlock as m, normalizeClass as v, toDisplayString as y, createCommentVNode as b, createElementVNode as h, createVNode as A, withKeys as V, withModifiers as _, createBlock as E, withCtx as $, createTextVNode as T, mergeProps as g, renderSlot as I, Fragment as M, renderList as H, withDirectives as z, vModelRadio as N } from "vue";
2
- import { T as P, B, _ as K, I as R } from "../.chunks/forms-779fee37.es.js";
2
+ import { T as P, B, _ as K, I as R } from "../.chunks/forms-7f061546.es.js";
3
3
  import("../core/core.js").then((u) => {
4
4
  const p = ["../assets/formsExt.css"].map((t) => import.meta.resolve(t));
5
5
  u.default.Page.addCss(p);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "0.0.38",
4
+ "version": "0.0.41",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-58420e52.amd","./worker.amd"],function(i,d,e,m,f){"use strict";i(["../core/core.amd"],l=>{const t=["../assets/popup.css"].map(n=>i.toUrl(n));l.Page.addCss(t)});const y=e.defineComponent({__name:"opener",props:{id:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},setup(l){const t=l,n=t.id||Math.random()+"";let s;function c(p){setTimeout(()=>{s=p.nextElementSibling,s&&r(s)})}e.onUpdated(()=>{s&&r(s)});function r(p){p.dataset.topPopup="vue-"+n,p.dataset.topPopupId=n,p.dataset.topPopupP=t.pos,p.dataset.topPopupPosBy=t.posBy,p.dataset.topPopupNotch=t.notch?"true":"",p.dataset.topPopupOpenByHover=t.openByHover?"true":""}return(p,$)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("template",{ref:c}),e.renderSlot(p.$slots,"default")],64))}}),S="",u={key:0,class:"top-popup_header"},B={key:0,class:"top-as-a closer"},k={key:1,class:"top-popup_content"},C={key:2,class:"top-popup_content"},_={key:3,class:"top-popup_footer"},h=e.defineComponent({__name:"popup",props:{id:{default:""},class:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},emits:["open","close"],setup(l,{emit:t}){const n=l,s=t,c=n.id||Math.random()+"",r=e.ref(null),a={onOpen:async o=>{o.elPopupInner.innerText="",r.value=o.elPopupInner,a.opened=!0,a.popup=o,s("open")},onClose:o=>{r.value=null,a.opened=!1,a.popup=null,s("close")},classRef:e.toRef(n,"class"),opened:!1,popup:null};return f.regVueComponent(c,a),e.onUnmounted(()=>{f.unregVueComponent(c)}),(o,b)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[o.$slots.opener?(e.openBlock(),e.createBlock(y,{key:0,id:e.unref(c),pos:o.pos,posBy:o.posBy,notch:o.notch,openByHover:o.openByHover},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),_:3},8,["id","pos","posBy","notch","openByHover"])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(e.Teleport,{key:1,to:r.value},[o.$slots.header||e.unref(m.Core).state.isMobile?(e.openBlock(),e.createElementBlock("div",u,[e.unref(m.Core).state.isMobile?(e.openBlock(),e.createElementBlock("span",B,e.toDisplayString(a.popup.options.i18n.Close),1)):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"header")])):e.createCommentVNode("",!0),o.$slots.content?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(o.$slots,"content")])):e.createCommentVNode("",!0),o.$slots.contentList?(e.openBlock(),e.createElementBlock("ul",C,[e.renderSlot(o.$slots,"contentList")])):e.createCommentVNode("",!0),o.$slots.footer?(e.openBlock(),e.createElementBlock("div",_,[e.renderSlot(o.$slots,"footer")])):e.createCommentVNode("",!0)],8,["to"])):e.createCommentVNode("",!0)],64))}}),P=e.defineComponent({inheritAttrs:!1,__name:"listItem",props:{type:{default:"button"},closeByClick:{type:Boolean,default:!0}},setup(l){const t=l;return(n,s)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass({"top-popup_liNoSelectable":t.type!=="button"&&t.type!=="link"})},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.$attrs.href?"a":"div"),e.mergeProps({class:{"top-popup_listItem":!0,"top-popup_listItem-button":t.type==="button"||t.type==="link",a:t.type==="button"||t.type==="link","top-popup_listItem-title":t.type==="title","top-popup_listItem-delimiter":t.type==="delimiter","top-popup-noCloser":!n.closeByClick}},n.$attrs),{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},16,["class"]))],2))}});d.Popup=h,d.PopupListItem=P,d.PopupOpener=y,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../.chunks/forms-b9e5edd2.amd","./worker.amd"],function(i,d,e,m,f){"use strict";i(["../core/core.amd"],l=>{const t=["../assets/popup.css"].map(n=>i.toUrl(n));l.Page.addCss(t)});const y=e.defineComponent({__name:"opener",props:{id:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},setup(l){const t=l,n=t.id||Math.random()+"";let s;function c(p){setTimeout(()=>{s=p.nextElementSibling,s&&r(s)})}e.onUpdated(()=>{s&&r(s)});function r(p){p.dataset.topPopup="vue-"+n,p.dataset.topPopupId=n,p.dataset.topPopupP=t.pos,p.dataset.topPopupPosBy=t.posBy,p.dataset.topPopupNotch=t.notch?"true":"",p.dataset.topPopupOpenByHover=t.openByHover?"true":""}return(p,$)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("template",{ref:c}),e.renderSlot(p.$slots,"default")],64))}}),S="",u={key:0,class:"top-popup_header"},B={key:0,class:"top-as-a closer"},k={key:1,class:"top-popup_content"},C={key:2,class:"top-popup_content"},_={key:3,class:"top-popup_footer"},h=e.defineComponent({__name:"popup",props:{id:{default:""},class:{},pos:{default:"3"},notch:{type:Boolean,default:!0},openByHover:{type:Boolean},posBy:{default:"fixed"}},emits:["open","close"],setup(l,{emit:t}){const n=l,s=t,c=n.id||Math.random()+"",r=e.ref(null),a={onOpen:async o=>{o.elPopupInner.innerText="",r.value=o.elPopupInner,a.opened=!0,a.popup=o,s("open")},onClose:o=>{r.value=null,a.opened=!1,a.popup=null,s("close")},classRef:e.toRef(n,"class"),opened:!1,popup:null};return f.regVueComponent(c,a),e.onUnmounted(()=>{f.unregVueComponent(c)}),(o,b)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[o.$slots.opener?(e.openBlock(),e.createBlock(y,{key:0,id:e.unref(c),pos:o.pos,posBy:o.posBy,notch:o.notch,openByHover:o.openByHover},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),_:3},8,["id","pos","posBy","notch","openByHover"])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createBlock(e.Teleport,{key:1,to:r.value},[o.$slots.header||e.unref(m.Core).state.isMobile?(e.openBlock(),e.createElementBlock("div",u,[e.unref(m.Core).state.isMobile?(e.openBlock(),e.createElementBlock("span",B,e.toDisplayString(a.popup.options.i18n.Close),1)):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"header")])):e.createCommentVNode("",!0),o.$slots.content?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(o.$slots,"content")])):e.createCommentVNode("",!0),o.$slots.contentList?(e.openBlock(),e.createElementBlock("ul",C,[e.renderSlot(o.$slots,"contentList")])):e.createCommentVNode("",!0),o.$slots.footer?(e.openBlock(),e.createElementBlock("div",_,[e.renderSlot(o.$slots,"footer")])):e.createCommentVNode("",!0)],8,["to"])):e.createCommentVNode("",!0)],64))}}),P=e.defineComponent({inheritAttrs:!1,__name:"listItem",props:{type:{default:"button"},closeByClick:{type:Boolean,default:!0}},setup(l){const t=l;return(n,s)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass({"top-popup_liNoSelectable":t.type!=="button"&&t.type!=="link"})},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.$attrs.href?"a":"div"),e.mergeProps({class:{"top-popup_listItem":!0,"top-popup_listItem-button":t.type==="button"||t.type==="link",a:t.type==="button"||t.type==="link","top-popup_listItem-title":t.type==="title","top-popup_listItem-delimiter":t.type==="delimiter","top-popup-noCloser":!n.closeByClick}},n.$attrs),{default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:3},16,["class"]))],2))}});d.Popup=h,d.PopupListItem=P,d.PopupOpener=y,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=popup.amd.js.map
package/popup/popup.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as f, onUpdated as k, openBlock as s, createElementBlock as l, Fragment as B, createElementVNode as P, renderSlot as i, ref as $, toRef as b, onUnmounted as I, createBlock as y, unref as m, withCtx as v, createCommentVNode as u, Teleport as g, toDisplayString as H, normalizeClass as N, resolveDynamicComponent as M, mergeProps as S } from "vue";
2
- import { C as _ } from "../.chunks/forms-779fee37.es.js";
2
+ import { C as _ } from "../.chunks/forms-7f061546.es.js";
3
3
  import h from "./worker.js";
4
4
  import("../core/core.js").then((a) => {
5
5
  const o = ["../assets/popup.css"].map((t) => import.meta.resolve(t));