@topvisor/ui 0.0.17 → 0.0.33

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 (86) hide show
  1. package/.chunks/datepicker-48f2fa8d.es.js +275 -0
  2. package/.chunks/datepicker-48f2fa8d.es.js.map +1 -0
  3. package/.chunks/datepicker-f94ba423.amd.js +234 -0
  4. package/.chunks/datepicker-f94ba423.amd.js.map +1 -0
  5. package/.chunks/forms-6c397f5a.es.js +935 -0
  6. package/.chunks/forms-6c397f5a.es.js.map +1 -0
  7. package/.chunks/forms-cab135c7.amd.js +3 -0
  8. package/.chunks/forms-cab135c7.amd.js.map +1 -0
  9. package/.chunks/popup-04c385e0.es.js +701 -0
  10. package/.chunks/popup-04c385e0.es.js.map +1 -0
  11. package/.chunks/popup-33f53a1c.amd.js +342 -0
  12. package/.chunks/popup-33f53a1c.amd.js.map +1 -0
  13. package/README.md +62 -62
  14. package/common/common.amd.js +1 -21
  15. package/common/common.amd.js.map +1 -1
  16. package/common/common.js +1 -20
  17. package/common/common.js.map +1 -1
  18. package/core/core.amd.js +1 -4
  19. package/core/core.amd.js.map +1 -1
  20. package/core/core.js +2 -3
  21. package/core/core.js.map +1 -1
  22. package/core.css +1 -648
  23. package/dark.css +1 -136
  24. package/forms/forms.amd.js +1 -12
  25. package/forms/forms.amd.js.map +1 -1
  26. package/forms/forms.js +11 -9
  27. package/forms/helpers.amd.js +1 -5
  28. package/forms/helpers.amd.js.map +1 -1
  29. package/forms/helpers.js +6 -3
  30. package/forms/helpers.js.map +1 -1
  31. package/forms.css +1 -505
  32. package/formsExt/formsExt.amd.js +3 -0
  33. package/formsExt/formsExt.amd.js.map +1 -0
  34. package/formsExt/formsExt.js +152 -0
  35. package/formsExt/formsExt.js.map +1 -0
  36. package/formsExt.css +1 -0
  37. package/icomoon/demo-files/demo.css +161 -161
  38. package/icomoon/demo-files/demo.js +30 -30
  39. package/icomoon/demo.html +2945 -2945
  40. package/icomoon/fonts/Topvisor-2.svg +232 -232
  41. package/icomoon/style.css +647 -647
  42. package/light.css +1 -136
  43. package/package.json +19 -19
  44. package/popup/popup.amd.js +2 -197
  45. package/popup/popup.amd.js.map +1 -1
  46. package/popup/popup.js +104 -158
  47. package/popup/popup.js.map +1 -1
  48. package/popup/worker.amd.js +1 -233
  49. package/popup/worker.amd.js.map +1 -1
  50. package/popup/worker.js +60 -143
  51. package/popup/worker.js.map +1 -1
  52. package/popup.css +1 -19
  53. package/tabs/tabs.amd.js +2 -122
  54. package/tabs/tabs.amd.js.map +1 -1
  55. package/tabs/tabs.js +63 -86
  56. package/tabs/tabs.js.map +1 -1
  57. package/tabs.css +1 -60
  58. package/utils/date.amd.js +2 -0
  59. package/utils/date.amd.js.map +1 -0
  60. package/utils/date.js +6 -0
  61. package/utils/date.js.map +1 -0
  62. package/utils/device.amd.js +1 -41
  63. package/utils/device.amd.js.map +1 -1
  64. package/utils/device.js +3 -38
  65. package/utils/device.js.map +1 -1
  66. package/utils/dom.amd.js +1 -94
  67. package/utils/dom.amd.js.map +1 -1
  68. package/utils/dom.js +47 -77
  69. package/utils/dom.js.map +1 -1
  70. package/.chunks/core-0b2c7817.es.js +0 -152
  71. package/.chunks/core-0b2c7817.es.js.map +0 -1
  72. package/.chunks/core-51f7b679.amd.js +0 -151
  73. package/.chunks/core-51f7b679.amd.js.map +0 -1
  74. package/.chunks/forms-245e3bc0.es.js +0 -565
  75. package/.chunks/forms-245e3bc0.es.js.map +0 -1
  76. package/.chunks/forms-f7b7b259.amd.js +0 -568
  77. package/.chunks/forms-f7b7b259.amd.js.map +0 -1
  78. package/.chunks/popup-8f650530.amd.js +0 -728
  79. package/.chunks/popup-8f650530.amd.js.map +0 -1
  80. package/.chunks/popup-d240ed19.es.js +0 -731
  81. package/.chunks/popup-d240ed19.es.js.map +0 -1
  82. package/editArea/editArea.amd.js +0 -126
  83. package/editArea/editArea.amd.js.map +0 -1
  84. package/editArea/editArea.js +0 -123
  85. package/editArea/editArea.js.map +0 -1
  86. package/editArea.css +0 -61
@@ -1 +1 @@
1
- {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\nimport Events from '@/core/core/events';\nimport Worker from '@/components/popup/lib/worker';\n\n/**\n * Глобальные события, для реализации Popup\n */\nclass WorkerEvents {\n\tstatic init () {\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\n\t\tdocument.addEventListener('mouseover', (e) => {\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.target.click();\n\t\t});\n\n\t\t// при скролле страницы убирать закрыть Popup\n\t\tdocument.addEventListener('scroll', () => {\n\t\t\tif (Core.isMobile) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t});\n\n\t\tEvents.addOnReize(e => {\n\t\t\t// закрыть popup при повороте экрана телефона\n\t\t\t// если была отображена ПК версия, она будет закрыта\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t\t}\n\t\t});\n\n\t\tdocument.addEventListener('click', this.onclick);\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t * обрабатывает клики на открытие Popup\n\t * @param {Event} e\n\t */\n\tstatic async onclick (e) {\n\t\tlet elOpener;\n\n\t\tswitch (true) {\n\t\t\tcase !!e.target.dataset?.topPopup:\n\t\t\t\telOpener = e.target;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement;\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (!elOpener) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// меню уже открыто\n\t\tif (elOpener.dataset.topPopupOpened) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tawait Worker.openByOpener(elOpener);\n\t}\n}\n\nexport default WorkerEvents;\n","import Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\n\nlet decoratorBeforeOpen;\nlet decoratorAfterOpen;\nlet decoratorIsIgnoreOuterClick;\nlet i18n = {\n\tClose: 'Close',\n};\n\nclass Worker {\n\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\n\tstatic noClose = false;\n\n\tstatic vueConnectors = new Map();\n\n\t/**\n\t * Вызывается при инициализаци приложения\n\t * устанавливает глобальные статические декортаоры для компонента Popup\n\t * @param {{\n\t * \tdecoratorBeforeOpen: (object) => void\n\t * \tdecoratorAfterOpen: (object) => void,\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\n\t * \ti18n: {Close: string}\n\t * }} options\n\t */\n\tstatic onInitApp (options) {\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\n\t\ti18n = options?.i18n;\n\t}\n\n\t// вернуть объект компонента popup, привязанный к элементу\n\tstatic getPopup (elPopup) {\n\t\treturn DOM.storage(elPopup, 'Popup');\n\t}\n\n\tstatic getAll () {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\tstatic getAllVisible () {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открть Popup от указанного elOpener\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener (elOpener) {\n\t\tconst options = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\n\t * @param {object} options - опции Popup\n\t */\n\tstatic async open (elOpener, options) {\n\t\telOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { default: Popup } = await import('./popup');\n\n\t\tif (typeof (jQuery) === 'function') {\n\t\t\tconst $elOpener = jQuery(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\t\toptions.i18n = i18n;\n\n\t\treturn await new Popup(elOpener, options);\n\t}\n\n\tstatic close (elPopup) {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup) {\n\t\t\tpopup.close();\n\t\t}\n\t}\n\n\tstatic recalcPosition (elPopup) {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup) {\n\t\t\tpopup.recalcPosition();\n\n\t\t\t// контроль за состоянием тени скролла\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\n\t\t}\n\t}\n\n\t// скролл к активному элементу списка\n\tstatic scrollToActive (elPopup) {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttop += elLi.offsetHeight;\n\t\t}\n\n\t\tconst heightWrapper = elUl.offsetHeight;\n\t\tif (top > heightWrapper) {\n\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t} else {\n\t\t\telUl.scrollTop = 0;\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen (popup) {\n\t\tif (decoratorBeforeOpen) {\n\t\t\tdecoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen (popup) {\n\t\tif (decoratorAfterOpen) {\n\t\t\tdecoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\n\t */\n\tstatic decoratorIsIgnoreOuterClick (e) {\n\t\tif (decoratorIsIgnoreOuterClick) {\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t * @param {string} id\n\t * @param {any} vueConnector\n\t */\n\tstatic regVueComponent (id, vueConnector) {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t * @param {string} id\n\t */\n\tstatic unregVueComponent (id) {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n}\n\nGlobalEvents.init(Worker, Core);\n\nexport default Worker;\n"],"names":["Core","Worker","Events","elOpener","options","DOM","GlobalEvents"],"mappings":"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"}
1
+ {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\r\nimport Events from '@/core/core/events';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\n/**\r\n * Глобальные события, для реализации Popup\r\n */\r\nclass WorkerEvents {\r\n\tstatic init () {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.target.click();\r\n\t\t});\r\n\r\n\t\t// при скролле страницы убирать закрыть Popup\r\n\t\tdocument.addEventListener('scroll', () => {\r\n\t\t\tif (Core.isMobile) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t});\r\n\r\n\t\tEvents.addOnReize(e => {\r\n\t\t\t// закрыть popup при повороте экрана телефона\r\n\t\t\t// если была отображена ПК версия, она будет закрыта\r\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\r\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', this.onclick);\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик кликов\r\n\t * обрабатывает клики на открытие Popup\r\n\t * @param {Event} e\r\n\t */\r\n\tstatic async onclick (e) {\r\n\t\tlet elOpener;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase !!e.target.dataset?.topPopup:\r\n\t\t\t\telOpener = e.target;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement;\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (!elOpener) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// меню уже открыто\r\n\t\tif (elOpener.dataset.topPopupOpened) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tawait Worker.openByOpener(elOpener);\r\n\t}\r\n}\r\n\r\nexport default WorkerEvents;\r\n","import Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\r\n\r\nlet decoratorBeforeOpen;\r\nlet decoratorAfterOpen;\r\nlet decoratorIsIgnoreOuterClick;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\nclass Worker {\r\n\r\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\r\n\tstatic noClose = false;\r\n\r\n\tstatic vueConnectors = new Map();\r\n\r\n\t/**\r\n\t * Вызывается при инициализаци приложения\r\n\t * устанавливает глобальные статические декортаоры для компонента Popup\r\n\t * @param {{\r\n\t * \tdecoratorBeforeOpen: (object) => void\r\n\t * \tdecoratorAfterOpen: (object) => void,\r\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\r\n\t * \ti18n: {Close: string}\r\n\t * }} options\r\n\t */\r\n\tstatic onInitApp (options) {\r\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\r\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\r\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\r\n\t\ti18n = options?.i18n;\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup (elPopup) {\r\n\t\treturn DOM.storage(elPopup, 'Popup');\r\n\t}\r\n\r\n\tstatic getAll () {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible () {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener (elOpener) {\r\n\t\tconst options = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\r\n\t * @param {object} options - опции Popup\r\n\t */\r\n\tstatic async open (elOpener, options) {\r\n\t\telOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (typeof (jQuery) === 'function') {\r\n\t\t\tconst $elOpener = jQuery(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\t\toptions.i18n = i18n;\r\n\r\n\t\treturn await new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive (elPopup) {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\ttop += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\tif (top > heightWrapper) {\r\n\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t} else {\r\n\t\t\telUl.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen (popup) {\r\n\t\tif (decoratorBeforeOpen) {\r\n\t\t\tdecoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen (popup) {\r\n\t\tif (decoratorAfterOpen) {\r\n\t\t\tdecoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\r\n\t */\r\n\tstatic decoratorIsIgnoreOuterClick (e) {\r\n\t\tif (decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t * @param {string} id\r\n\t * @param {any} vueConnector\r\n\t */\r\n\tstatic regVueComponent (id, vueConnector) {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t * @param {string} id\r\n\t */\r\n\tstatic unregVueComponent (id) {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init(Worker, Core);\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","Core","Worker","elPopup","Events","elOpener","_b","options","DOM","resolve","reject","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
package/popup/worker.js CHANGED
@@ -1,67 +1,42 @@
1
- import { C as Core, E as Events } from "../.chunks/core-0b2c7817.es.js";
1
+ import { C as Core, E as Events } from "../.chunks/forms-6c397f5a.es.js";
2
2
  import DOM from "../utils/dom.js";
3
3
  import "vue";
4
- import "../utils/device.js";
5
4
  class WorkerEvents {
6
5
  static init() {
7
- document.addEventListener("mouseover", (e) => {
8
- var _a;
9
- if (!((_a = e.target.dataset) == null ? void 0 : _a.topPopupOpenByHover)) {
10
- return;
11
- }
12
- e.target.click();
13
- });
14
- document.addEventListener("scroll", () => {
15
- if (Core.isMobile) {
16
- return;
17
- }
18
- Worker$1.getAll().forEach((elPopup) => Worker$1.close(elPopup));
19
- });
20
- Events.addOnReize((e) => {
21
- if (Core.state.isMobile && e.topEvent.widthDiff) {
22
- Worker$1.getAll().forEach((elPopup) => Worker$1.close(elPopup));
23
- }
24
- });
25
- document.addEventListener("click", this.onclick);
6
+ document.addEventListener("mouseover", (t) => {
7
+ var o;
8
+ (o = t.target.dataset) != null && o.topPopupOpenByHover && t.target.click();
9
+ }), document.addEventListener("scroll", () => {
10
+ Core.isMobile || Worker$1.getAll().forEach((t) => Worker$1.close(t));
11
+ }), Events.addOnReize((t) => {
12
+ Core.state.isMobile && t.topEvent.widthDiff && Worker$1.getAll().forEach((o) => Worker$1.close(o));
13
+ }), document.addEventListener("click", this.onclick);
26
14
  }
27
15
  /**
28
16
  * Глобальный обработчик кликов
29
17
  * обрабатывает клики на открытие Popup
30
18
  * @param {Event} e
31
19
  */
32
- static async onclick(e) {
33
- var _a, _b;
34
- let elOpener2;
35
- switch (true) {
36
- case !!((_a = e.target.dataset) == null ? void 0 : _a.topPopup):
37
- elOpener2 = e.target;
20
+ static async onclick(t) {
21
+ var a, r;
22
+ let o;
23
+ switch (!0) {
24
+ case !!((a = t.target.dataset) != null && a.topPopup):
25
+ o = t.target;
38
26
  break;
39
- case !!((_b = e.target.parentElement) == null ? void 0 : _b.dataset.topPopup):
40
- elOpener2 = e.target.parentElement;
27
+ case !!((r = t.target.parentElement) != null && r.dataset.topPopup):
28
+ o = t.target.parentElement;
41
29
  break;
42
30
  }
43
- if (!elOpener2) {
44
- return;
45
- }
46
- if (elOpener2.dataset.topPopupDisabled) {
47
- return;
48
- }
49
- if (elOpener2.dataset.topPopupOpened) {
50
- return;
51
- }
52
- e.preventDefault();
53
- await Worker$1.openByOpener(elOpener2);
31
+ o && (o.dataset.topPopupDisabled || o.dataset.topPopupOpened || (t.preventDefault(), await Worker$1.openByOpener(o)));
54
32
  }
55
33
  }
56
- let decoratorBeforeOpen;
57
- let decoratorAfterOpen;
58
- let decoratorIsIgnoreOuterClick;
59
- let i18n = {
34
+ let decoratorBeforeOpen, decoratorAfterOpen, decoratorIsIgnoreOuterClick, i18n = {
60
35
  Close: "Close"
61
36
  };
62
37
  class Worker {
63
38
  // глобальное выключение закрытия меню, используется при различных оверлеях
64
- static noClose = false;
39
+ static noClose = !1;
65
40
  static vueConnectors = /* @__PURE__ */ new Map();
66
41
  /**
67
42
  * Вызывается при инициализаци приложения
@@ -73,15 +48,12 @@ class Worker {
73
48
  * i18n: {Close: string}
74
49
  * }} options
75
50
  */
76
- static onInitApp(options2) {
77
- decoratorBeforeOpen = options2 == null ? void 0 : options2.decoratorBeforeOpen;
78
- decoratorAfterOpen = options2 == null ? void 0 : options2.decoratorAfterOpen;
79
- decoratorIsIgnoreOuterClick = options2 == null ? void 0 : options2.decoratorIsIgnoreOuterClick;
80
- i18n = options2 == null ? void 0 : options2.i18n;
51
+ static onInitApp(e) {
52
+ decoratorBeforeOpen = e == null ? void 0 : e.decoratorBeforeOpen, decoratorAfterOpen = e == null ? void 0 : e.decoratorAfterOpen, decoratorIsIgnoreOuterClick = e == null ? void 0 : e.decoratorIsIgnoreOuterClick, i18n = e == null ? void 0 : e.i18n;
81
53
  }
82
54
  // вернуть объект компонента popup, привязанный к элементу
83
- static getPopup(elPopup) {
84
- return DOM.storage(elPopup, "Popup");
55
+ static getPopup(e) {
56
+ return DOM.storage(e, "Popup");
85
57
  }
86
58
  static getAll() {
87
59
  return DOM.querySelectorAllArray(document, ".top-popup-wrapper");
@@ -93,34 +65,9 @@ class Worker {
93
65
  * Открть Popup от указанного elOpener
94
66
  * @param {Element} elOpener - элемент, который должен вызвать открытие Popup
95
67
  */
96
- static async openByOpener(elOpener2) {
97
- const options2 = {};
98
- options2.popup = elOpener2.dataset.topPopup;
99
- if (elOpener2.dataset.topPopupP) {
100
- options2.p = parseInt(elOpener2.dataset.topPopupP);
101
- }
102
- if (elOpener2.dataset.topPopupNotch) {
103
- options2.notch = elOpener2.dataset.topPopupNotch;
104
- }
105
- if (elOpener2.dataset.topPopupClass) {
106
- options2.class = elOpener2.dataset.topPopupClass;
107
- }
108
- if (elOpener2.dataset.topPopupPosBy) {
109
- options2.posBy = elOpener2.dataset.topPopupPosBy;
110
- }
111
- if (elOpener2.dataset.topPopupFront) {
112
- options2.frontSelector = elOpener2.dataset.topPopupFront;
113
- }
114
- if (elOpener2.dataset.topPopupInvertX) {
115
- options2.invertX = elOpener2.dataset.topPopupInvertX;
116
- }
117
- if (elOpener2.dataset.topPopupOpenByHover) {
118
- options2.openByHover = elOpener2.dataset.topPopupOpenByHover;
119
- }
120
- if (elOpener2.dataset.topPopupUseOriginal) {
121
- options2.useOriginal = elOpener2.dataset.topPopupUseOriginal;
122
- }
123
- return await Worker.open(elOpener2, options2);
68
+ static async openByOpener(e) {
69
+ const t = {};
70
+ return t.popup = e.dataset.topPopup, e.dataset.topPopupP && (t.p = parseInt(e.dataset.topPopupP)), e.dataset.topPopupNotch && (t.notch = e.dataset.topPopupNotch), e.dataset.topPopupClass && (t.class = e.dataset.topPopupClass), e.dataset.topPopupPosBy && (t.posBy = e.dataset.topPopupPosBy), e.dataset.topPopupFront && (t.frontSelector = e.dataset.topPopupFront), e.dataset.topPopupInvertX && (t.invertX = e.dataset.topPopupInvertX), e.dataset.topPopupOpenByHover && (t.openByHover = e.dataset.topPopupOpenByHover), e.dataset.topPopupUseOriginal && (t.useOriginal = e.dataset.topPopupUseOriginal), await Worker.open(e, t);
124
71
  }
125
72
  /**
126
73
  * Создать и открыть Popup
@@ -129,84 +76,55 @@ class Worker {
129
76
  */
130
77
  static async open(elOpener, options) {
131
78
  elOpener.dataset.topPopupOpened = "opened";
132
- const { default: Popup } = await import("../.chunks/popup-d240ed19.es.js");
133
- if (typeof jQuery === "function") {
79
+ const { default: Popup } = await import("../.chunks/popup-04c385e0.es.js");
80
+ if (typeof jQuery == "function") {
134
81
  const $elOpener = jQuery(elOpener);
135
82
  if ($elOpener.data("aftershow")) {
136
83
  let afterShow = $elOpener.data("aftershow");
137
- if (typeof afterShow == "string") {
138
- afterShow = eval(afterShow.replace(/\W/g, ""));
139
- }
140
- $elOpener.one("aftershow.top-menu-popup", afterShow);
84
+ typeof afterShow == "string" && (afterShow = eval(afterShow.replace(/\W/g, ""))), $elOpener.one("aftershow.top-menu-popup", afterShow);
141
85
  }
142
86
  if ($elOpener.data("afterclose")) {
143
87
  let afterclose = $elOpener.data("afterclose");
144
- if (typeof afterclose == "string") {
145
- afterclose = eval(afterclose.replace(/\W/g, ""));
146
- }
147
- $elOpener.one("afterclose.top-menu-popup", afterclose);
88
+ typeof afterclose == "string" && (afterclose = eval(afterclose.replace(/\W/g, ""))), $elOpener.one("afterclose.top-menu-popup", afterclose);
148
89
  }
149
90
  }
150
- options.isFullScreen = Core.state.isMobile;
151
- options.i18n = i18n;
152
- return await new Popup(elOpener, options);
153
- }
154
- static close(elPopup) {
155
- const popup = Worker.getPopup(elPopup);
156
- if (popup) {
157
- popup.close();
158
- }
91
+ return options.isFullScreen = Core.state.isMobile, options.i18n = i18n, await new Popup(elOpener, options);
159
92
  }
160
- static recalcPosition(elPopup) {
161
- const popup = Worker.getPopup(elPopup);
162
- if (popup) {
163
- popup.recalcPosition();
164
- HelperCommon.genHasScroll($(popup.elPopupBody));
165
- }
93
+ static close(e) {
94
+ const t = Worker.getPopup(e);
95
+ t && t.close();
96
+ }
97
+ static recalcPosition(e) {
98
+ const t = Worker.getPopup(e);
99
+ t && (t.recalcPosition(), HelperCommon.genHasScroll($(t.elPopupBody)));
166
100
  }
167
101
  // скролл к активному элементу списка
168
- static scrollToActive(elPopup) {
169
- const elItemActive = DOM.querySelectorVisible(elPopup, "ul.top-popup_content > li > .top-active");
170
- if (!elItemActive) {
102
+ static scrollToActive(e) {
103
+ if (!DOM.querySelectorVisible(e, "ul.top-popup_content > li > .top-active"))
171
104
  return;
172
- }
173
- const elUl = elPopup.querySelector("ul.top-popup_content");
174
- const elsLi = DOM.querySelectorAllVisible(elPopup, "ul.top-popup_content > li");
175
- elPopup.classList.add("top-popup-wrapper-no_animate");
176
- setTimeout(() => elPopup.classList.remove("top-popup-wrapper-no_animate"), 100);
177
- let top = 100;
178
- for (const elLi of elsLi) {
179
- if (elLi.querySelector(":scope > .top-active")) {
105
+ const o = e.querySelector("ul.top-popup_content"), a = DOM.querySelectorAllVisible(e, "ul.top-popup_content > li");
106
+ e.classList.add("top-popup-wrapper-no_animate"), setTimeout(() => e.classList.remove("top-popup-wrapper-no_animate"), 100);
107
+ let r = 100;
108
+ for (const s of a) {
109
+ if (s.querySelector(":scope > .top-active"))
180
110
  break;
181
- }
182
- top += elLi.offsetHeight;
183
- }
184
- const heightWrapper = elUl.offsetHeight;
185
- if (top > heightWrapper) {
186
- elUl.scrollTop = top - heightWrapper;
187
- } else {
188
- elUl.scrollTop = 0;
111
+ r += s.offsetHeight;
189
112
  }
113
+ const p = o.offsetHeight;
114
+ r > p ? o.scrollTop = r - p : o.scrollTop = 0;
190
115
  }
191
- static decoratorBeforeOpen(popup) {
192
- if (decoratorBeforeOpen) {
193
- decoratorBeforeOpen(popup);
194
- }
116
+ static decoratorBeforeOpen(e) {
117
+ decoratorBeforeOpen && decoratorBeforeOpen(e);
195
118
  }
196
- static decoratorAfterOpen(popup) {
197
- if (decoratorAfterOpen) {
198
- decoratorAfterOpen(popup);
199
- }
119
+ static decoratorAfterOpen(e) {
120
+ decoratorAfterOpen && decoratorAfterOpen(e);
200
121
  }
201
122
  /**
202
123
  * Определитель того, что клик вне Popup нужно игнорировать
203
124
  * @returns {boolean} - игнорировать клик, то есть не закрывать Popup
204
125
  */
205
126
  static decoratorIsIgnoreOuterClick(e) {
206
- if (decoratorIsIgnoreOuterClick) {
207
- return decoratorIsIgnoreOuterClick(e);
208
- }
209
- return false;
127
+ return decoratorIsIgnoreOuterClick ? decoratorIsIgnoreOuterClick(e) : !1;
210
128
  }
211
129
  /**
212
130
  * Зарегистрировать Vue компонент
@@ -215,18 +133,17 @@ class Worker {
215
133
  * @param {string} id
216
134
  * @param {any} vueConnector
217
135
  */
218
- static regVueComponent(id, vueConnector) {
219
- if (Worker.vueConnectors.get(id)) {
220
- throw "Vue component Popup use duplicated id: " + id;
221
- }
222
- Worker.vueConnectors.set(id, vueConnector);
136
+ static regVueComponent(e, t) {
137
+ if (Worker.vueConnectors.get(e))
138
+ throw "Vue component Popup use duplicated id: " + e;
139
+ Worker.vueConnectors.set(e, t);
223
140
  }
224
141
  /**
225
142
  * Снять с регистрации Vue компонент
226
143
  * @param {string} id
227
144
  */
228
- static unregVueComponent(id) {
229
- Worker.vueConnectors.delete(id);
145
+ static unregVueComponent(e) {
146
+ Worker.vueConnectors.delete(e);
230
147
  }
231
148
  }
232
149
  WorkerEvents.init(Worker, Core);
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\nimport Events from '@/core/core/events';\nimport Worker from '@/components/popup/lib/worker';\n\n/**\n * Глобальные события, для реализации Popup\n */\nclass WorkerEvents {\n\tstatic init () {\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\n\t\tdocument.addEventListener('mouseover', (e) => {\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.target.click();\n\t\t});\n\n\t\t// при скролле страницы убирать закрыть Popup\n\t\tdocument.addEventListener('scroll', () => {\n\t\t\tif (Core.isMobile) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t});\n\n\t\tEvents.addOnReize(e => {\n\t\t\t// закрыть popup при повороте экрана телефона\n\t\t\t// если была отображена ПК версия, она будет закрыта\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\n\t\t\t}\n\t\t});\n\n\t\tdocument.addEventListener('click', this.onclick);\n\t}\n\n\t/**\n\t * Глобальный обработчик кликов\n\t * обрабатывает клики на открытие Popup\n\t * @param {Event} e\n\t */\n\tstatic async onclick (e) {\n\t\tlet elOpener;\n\n\t\tswitch (true) {\n\t\t\tcase !!e.target.dataset?.topPopup:\n\t\t\t\telOpener = e.target;\n\n\t\t\t\tbreak;\n\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement;\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (!elOpener) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// меню уже открыто\n\t\tif (elOpener.dataset.topPopupOpened) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tawait Worker.openByOpener(elOpener);\n\t}\n}\n\nexport default WorkerEvents;\n","import Core from '@/core/core/core';\nimport DOM from '@/core/utils/dom';\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\n\nlet decoratorBeforeOpen;\nlet decoratorAfterOpen;\nlet decoratorIsIgnoreOuterClick;\nlet i18n = {\n\tClose: 'Close',\n};\n\nclass Worker {\n\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\n\tstatic noClose = false;\n\n\tstatic vueConnectors = new Map();\n\n\t/**\n\t * Вызывается при инициализаци приложения\n\t * устанавливает глобальные статические декортаоры для компонента Popup\n\t * @param {{\n\t * \tdecoratorBeforeOpen: (object) => void\n\t * \tdecoratorAfterOpen: (object) => void,\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\n\t * \ti18n: {Close: string}\n\t * }} options\n\t */\n\tstatic onInitApp (options) {\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\n\t\ti18n = options?.i18n;\n\t}\n\n\t// вернуть объект компонента popup, привязанный к элементу\n\tstatic getPopup (elPopup) {\n\t\treturn DOM.storage(elPopup, 'Popup');\n\t}\n\n\tstatic getAll () {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\tstatic getAllVisible () {\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\n\t}\n\n\t/**\n\t * Открть Popup от указанного elOpener\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\n\t */\n\tstatic async openByOpener (elOpener) {\n\t\tconst options = {};\n\n\t\toptions.popup = elOpener.dataset.topPopup;\n\n\t\tif (elOpener.dataset.topPopupP) {\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupClass) {\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupPosBy) {\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\n\t\t}\n\n\t\treturn await Worker.open(elOpener, options);\n\t}\n\n\t/**\n\t * Создать и открыть Popup\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\n\t * @param {object} options - опции Popup\n\t */\n\tstatic async open (elOpener, options) {\n\t\telOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { default: Popup } = await import('./popup');\n\n\t\tif (typeof (jQuery) === 'function') {\n\t\t\tconst $elOpener = jQuery(elOpener);\n\n\t\t\t// deprecated, используется aftershow.top-menu-popup\n\t\t\tif ($elOpener.data('aftershow')) {\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\n\t\t\t\tif (typeof (afterShow) == 'string') {\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\n\t\t\t}\n\n\t\t\t// deprecated, используется afterclose.top-menu-popup\n\t\t\tif ($elOpener.data('afterclose')) {\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\n\t\t\t\tif (typeof (afterclose) == 'string') {\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\n\t\t\t\t}\n\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\n\t\t\t}\n\t\t}\n\n\t\toptions.isFullScreen = Core.state.isMobile;\n\t\toptions.i18n = i18n;\n\n\t\treturn await new Popup(elOpener, options);\n\t}\n\n\tstatic close (elPopup) {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup) {\n\t\t\tpopup.close();\n\t\t}\n\t}\n\n\tstatic recalcPosition (elPopup) {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup) {\n\t\t\tpopup.recalcPosition();\n\n\t\t\t// контроль за состоянием тени скролла\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\n\t\t}\n\t}\n\n\t// скролл к активному элементу списка\n\tstatic scrollToActive (elPopup) {\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\n\t\tif (!elItemActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\n\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\n\n\t\tlet top = 100;\n\t\tfor (const elLi of elsLi) {\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttop += elLi.offsetHeight;\n\t\t}\n\n\t\tconst heightWrapper = elUl.offsetHeight;\n\t\tif (top > heightWrapper) {\n\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t} else {\n\t\t\telUl.scrollTop = 0;\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen (popup) {\n\t\tif (decoratorBeforeOpen) {\n\t\t\tdecoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen (popup) {\n\t\tif (decoratorAfterOpen) {\n\t\t\tdecoratorAfterOpen(popup);\n\t\t}\n\t};\n\n\t/**\n\t * Определитель того, что клик вне Popup нужно игнорировать\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\n\t */\n\tstatic decoratorIsIgnoreOuterClick (e) {\n\t\tif (decoratorIsIgnoreOuterClick) {\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Зарегистрировать Vue компонент\n\t *\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\n\t * @param {string} id\n\t * @param {any} vueConnector\n\t */\n\tstatic regVueComponent (id, vueConnector) {\n\t\tif (Worker.vueConnectors.get(id)) {\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\n\t\t}\n\n\t\tWorker.vueConnectors.set(id, vueConnector);\n\t}\n\n\t/**\n\t * Снять с регистрации Vue компонент\n\t * @param {string} id\n\t */\n\tstatic unregVueComponent (id) {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n}\n\nGlobalEvents.init(Worker, Core);\n\nexport default Worker;\n"],"names":["Worker","elOpener","options","GlobalEvents"],"mappings":";;;;AAOA,MAAM,aAAa;AAAA,EAClB,OAAO,OAAQ;AAEd,aAAS,iBAAiB,aAAa,CAAC,MAAM;;AAC7C,UAAI,GAAC,OAAE,OAAO,YAAT,mBAAkB,sBAAqB;AAC3C;AAAA,MACA;AAED,QAAE,OAAO;IACZ,CAAG;AAGD,aAAS,iBAAiB,UAAU,MAAM;AACzC,UAAI,KAAK,UAAU;AAClB;AAAA,MACA;AAEDA,eAAO,OAAQ,EAAC,QAAQ,aAAWA,SAAO,MAAM,OAAO,CAAC;AAAA,IAC3D,CAAG;AAED,WAAO,WAAW,OAAK;AAGtB,UAAI,KAAK,MAAM,YAAY,EAAE,SAAS,WAAW;AAChDA,iBAAO,OAAQ,EAAC,QAAQ,aAAWA,SAAO,MAAM,OAAO,CAAC;AAAA,MACxD;AAAA,IACJ,CAAG;AAED,aAAS,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,aAAa,QAAS,GAAG;;AACxB,QAAIC;AAEJ,YAAQ,MAAI;AAAA,MACX,KAAK,CAAC,GAAC,OAAE,OAAO,YAAT,mBAAkB;AACxB,QAAAA,YAAW,EAAE;AAEb;AAAA,MAED,KAAK,CAAC,GAAC,OAAE,OAAO,kBAAT,mBAAwB,QAAQ;AACtC,QAAAA,YAAW,EAAE,OAAO;AAEpB;AAAA,IACD;AAED,QAAI,CAACA,WAAU;AACd;AAAA,IACA;AAED,QAAIA,UAAS,QAAQ,kBAAkB;AACtC;AAAA,IACA;AAGD,QAAIA,UAAS,QAAQ,gBAAgB;AACpC;AAAA,IACA;AAED,MAAE,eAAc;AAEhB,UAAMD,SAAO,aAAaC,SAAQ;AAAA,EAClC;AACF;ACvEA,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI,OAAO;AAAA,EACV,OAAO;AACR;AAEA,MAAM,OAAO;AAAA;AAAA,EAGZ,OAAO,UAAU;AAAA,EAEjB,OAAO,gBAAgB,oBAAI;;;;;;;;;;;EAY3B,OAAO,UAAWC,UAAS;AAC1B,0BAAsBA,YAAA,gBAAAA,SAAS;AAC/B,yBAAqBA,YAAA,gBAAAA,SAAS;AAC9B,kCAA8BA,YAAA,gBAAAA,SAAS;AACvC,WAAOA,YAAA,gBAAAA,SAAS;AAAA,EAChB;AAAA;AAAA,EAGD,OAAO,SAAU,SAAS;AACzB,WAAO,IAAI,QAAQ,SAAS,OAAO;AAAA,EACnC;AAAA,EAED,OAAO,SAAU;AAChB,WAAO,IAAI,sBAAsB,UAAU,oBAAoB;AAAA,EAC/D;AAAA,EAED,OAAO,gBAAiB;AACvB,WAAO,IAAI,wBAAwB,UAAU,oBAAoB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,aAAa,aAAcD,WAAU;AACpC,UAAMC,WAAU,CAAA;AAEhB,IAAAA,SAAQ,QAAQD,UAAS,QAAQ;AAEjC,QAAIA,UAAS,QAAQ,WAAW;AAC/B,MAAAC,SAAQ,IAAI,SAASD,UAAS,QAAQ,SAAS;AAAA,IAC/C;AAED,QAAIA,UAAS,QAAQ,eAAe;AACnC,MAAAC,SAAQ,QAAQD,UAAS,QAAQ;AAAA,IACjC;AAED,QAAIA,UAAS,QAAQ,eAAe;AACnC,MAAAC,SAAQ,QAAQD,UAAS,QAAQ;AAAA,IACjC;AAED,QAAIA,UAAS,QAAQ,eAAe;AACnC,MAAAC,SAAQ,QAAQD,UAAS,QAAQ;AAAA,IACjC;AAED,QAAIA,UAAS,QAAQ,eAAe;AACnC,MAAAC,SAAQ,gBAAgBD,UAAS,QAAQ;AAAA,IACzC;AAED,QAAIA,UAAS,QAAQ,iBAAiB;AACrC,MAAAC,SAAQ,UAAUD,UAAS,QAAQ;AAAA,IACnC;AAED,QAAIA,UAAS,QAAQ,qBAAqB;AACzC,MAAAC,SAAQ,cAAcD,UAAS,QAAQ;AAAA,IACvC;AAED,QAAIA,UAAS,QAAQ,qBAAqB;AACzC,MAAAC,SAAQ,cAAcD,UAAS,QAAQ;AAAA,IACvC;AAED,WAAO,MAAM,OAAO,KAAKA,WAAUC,QAAO;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,aAAa,KAAM,UAAU,SAAS;AACrC,aAAS,QAAQ,iBAAiB;AAElC,UAAM,EAAE,SAAS,MAAO,IAAG,MAAM,OAAO,iCAAS;AAEjD,QAAI,OAAQ,WAAY,YAAY;AACnC,YAAM,YAAY,OAAO,QAAQ;AAGjC,UAAI,UAAU,KAAK,WAAW,GAAG;AAChC,YAAI,YAAY,UAAU,KAAK,WAAW;AAC1C,YAAI,OAAQ,aAAc,UAAU;AACnC,sBAAY,KAAK,UAAU,QAAQ,OAAO,EAAE,CAAC;AAAA,QAC7C;AAED,kBAAU,IAAI,4BAA4B,SAAS;AAAA,MACnD;AAGD,UAAI,UAAU,KAAK,YAAY,GAAG;AACjC,YAAI,aAAa,UAAU,KAAK,YAAY;AAC5C,YAAI,OAAQ,cAAe,UAAU;AACpC,uBAAa,KAAK,WAAW,QAAQ,OAAO,EAAE,CAAC;AAAA,QAC/C;AAED,kBAAU,IAAI,6BAA6B,UAAU;AAAA,MACrD;AAAA,IACD;AAED,YAAQ,eAAe,KAAK,MAAM;AAClC,YAAQ,OAAO;AAEf,WAAO,MAAM,IAAI,MAAM,UAAU,OAAO;AAAA,EACxC;AAAA,EAED,OAAO,MAAO,SAAS;AACtB,UAAM,QAAQ,OAAO,SAAS,OAAO;AACrC,QAAI,OAAO;AACV,YAAM,MAAK;AAAA,IACX;AAAA,EACD;AAAA,EAED,OAAO,eAAgB,SAAS;AAC/B,UAAM,QAAQ,OAAO,SAAS,OAAO;AACrC,QAAI,OAAO;AACV,YAAM,eAAc;AAIpB,mBAAa,aAAa,EAAE,MAAM,WAAW,CAAC;AAAA,IAC9C;AAAA,EACD;AAAA;AAAA,EAGD,OAAO,eAAgB,SAAS;AAC/B,UAAM,eAAe,IAAI,qBAAqB,SAAS,yCAAyC;AAChG,QAAI,CAAC,cAAc;AAClB;AAAA,IACA;AAED,UAAM,OAAO,QAAQ,cAAc,sBAAsB;AACzD,UAAM,QAAQ,IAAI,wBAAwB,SAAS,2BAA2B;AAE9E,YAAQ,UAAU,IAAI,8BAA8B;AACpD,eAAW,MAAM,QAAQ,UAAU,OAAO,8BAA8B,GAAG,GAAG;AAE9E,QAAI,MAAM;AACV,eAAW,QAAQ,OAAO;AACzB,UAAI,KAAK,cAAc,sBAAsB,GAAG;AAC/C;AAAA,MACA;AAED,aAAO,KAAK;AAAA,IACZ;AAED,UAAM,gBAAgB,KAAK;AAC3B,QAAI,MAAM,eAAe;AACxB,WAAK,YAAY,MAAM;AAAA,IAC1B,OAAS;AACN,WAAK,YAAY;AAAA,IACjB;AAAA,EACD;AAAA,EAED,OAAO,oBAAqB,OAAO;AAClC,QAAI,qBAAqB;AACxB,0BAAoB,KAAK;AAAA,IACzB;AAAA,EACD;AAAA,EAED,OAAO,mBAAoB,OAAO;AACjC,QAAI,oBAAoB;AACvB,yBAAmB,KAAK;AAAA,IACxB;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO,4BAA6B,GAAG;AACtC,QAAI,6BAA6B;AAChC,aAAO,4BAA4B,CAAC;AAAA,IACpC;AAED,WAAO;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,OAAO,gBAAiB,IAAI,cAAc;AACzC,QAAI,OAAO,cAAc,IAAI,EAAE,GAAG;AACjC,YAAM,4CAA4C;AAAA,IAClD;AAED,WAAO,cAAc,IAAI,IAAI,YAAY;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,OAAO,kBAAmB,IAAI;AAC7B,WAAO,cAAc,OAAO,EAAE;AAAA,EAC9B;AAEF;AAEAC,aAAa,KAAK,QAAQ,IAAI;AAE9B,MAAA,WAAe;"}
1
+ {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.globalEvents.js","../../src/components/popup/lib/worker.js"],"sourcesContent":["import Core from '@/core/core/core';\r\nimport Events from '@/core/core/events';\r\nimport Worker from '@/components/popup/lib/worker';\r\n\r\n/**\r\n * Глобальные события, для реализации Popup\r\n */\r\nclass WorkerEvents {\r\n\tstatic init () {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!e.target.dataset?.topPopupOpenByHover) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\te.target.click();\r\n\t\t});\r\n\r\n\t\t// при скролле страницы убирать закрыть Popup\r\n\t\tdocument.addEventListener('scroll', () => {\r\n\t\t\tif (Core.isMobile) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t});\r\n\r\n\t\tEvents.addOnReize(e => {\r\n\t\t\t// закрыть popup при повороте экрана телефона\r\n\t\t\t// если была отображена ПК версия, она будет закрыта\r\n\t\t\tif (Core.state.isMobile && e.topEvent.widthDiff) {\r\n\t\t\t\tWorker.getAll().forEach(elPopup => Worker.close(elPopup));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdocument.addEventListener('click', this.onclick);\r\n\t}\r\n\r\n\t/**\r\n\t * Глобальный обработчик кликов\r\n\t * обрабатывает клики на открытие Popup\r\n\t * @param {Event} e\r\n\t */\r\n\tstatic async onclick (e) {\r\n\t\tlet elOpener;\r\n\r\n\t\tswitch (true) {\r\n\t\t\tcase !!e.target.dataset?.topPopup:\r\n\t\t\t\telOpener = e.target;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase !!e.target.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement;\r\n\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (!elOpener) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupDisabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// меню уже открыто\r\n\t\tif (elOpener.dataset.topPopupOpened) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tawait Worker.openByOpener(elOpener);\r\n\t}\r\n}\r\n\r\nexport default WorkerEvents;\r\n","import Core from '@/core/core/core';\r\nimport DOM from '@/core/utils/dom';\r\nimport GlobalEvents from '@/components/popup/lib/worker.globalEvents';\r\n\r\nlet decoratorBeforeOpen;\r\nlet decoratorAfterOpen;\r\nlet decoratorIsIgnoreOuterClick;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\nclass Worker {\r\n\r\n\t// глобальное выключение закрытия меню, используется при различных оверлеях\r\n\tstatic noClose = false;\r\n\r\n\tstatic vueConnectors = new Map();\r\n\r\n\t/**\r\n\t * Вызывается при инициализаци приложения\r\n\t * устанавливает глобальные статические декортаоры для компонента Popup\r\n\t * @param {{\r\n\t * \tdecoratorBeforeOpen: (object) => void\r\n\t * \tdecoratorAfterOpen: (object) => void,\r\n\t * \tdecoratorIsIgnoreOuterClick: (e) => void,\r\n\t * \ti18n: {Close: string}\r\n\t * }} options\r\n\t */\r\n\tstatic onInitApp (options) {\r\n\t\tdecoratorBeforeOpen = options?.decoratorBeforeOpen;\r\n\t\tdecoratorAfterOpen = options?.decoratorAfterOpen;\r\n\t\tdecoratorIsIgnoreOuterClick = options?.decoratorIsIgnoreOuterClick;\r\n\t\ti18n = options?.i18n;\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup (elPopup) {\r\n\t\treturn DOM.storage(elPopup, 'Popup');\r\n\t}\r\n\r\n\tstatic getAll () {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible () {\r\n\t\treturn DOM.querySelectorAllVisible(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\t/**\r\n\t * Открть Popup от указанного elOpener\r\n\t * @param {Element} elOpener - элемент, который должен вызвать открытие Popup\r\n\t */\r\n\tstatic async openByOpener (elOpener) {\r\n\t\tconst options = {};\r\n\r\n\t\toptions.popup = elOpener.dataset.topPopup;\r\n\r\n\t\tif (elOpener.dataset.topPopupP) {\r\n\t\t\toptions.p = parseInt(elOpener.dataset.topPopupP);\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupClass) {\r\n\t\t\toptions.class = elOpener.dataset.topPopupClass;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupPosBy) {\r\n\t\t\toptions.posBy = elOpener.dataset.topPopupPosBy;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupFront) {\r\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover;\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal;\r\n\t\t}\r\n\r\n\t\treturn await Worker.open(elOpener, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Создать и открыть Popup\r\n\t * @param {Element} elOpener - элемент, вызвавший открытие Popup\r\n\t * @param {object} options - опции Popup\r\n\t */\r\n\tstatic async open (elOpener, options) {\r\n\t\telOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (typeof (jQuery) === 'function') {\r\n\t\t\tconst $elOpener = jQuery(elOpener);\r\n\r\n\t\t\t// deprecated, используется aftershow.top-menu-popup\r\n\t\t\tif ($elOpener.data('aftershow')) {\r\n\t\t\t\tlet afterShow = $elOpener.data('aftershow');\r\n\t\t\t\tif (typeof (afterShow) == 'string') {\r\n\t\t\t\t\tafterShow = eval(afterShow.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('aftershow.top-menu-popup', afterShow);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated, используется afterclose.top-menu-popup\r\n\t\t\tif ($elOpener.data('afterclose')) {\r\n\t\t\t\tlet afterclose = $elOpener.data('afterclose');\r\n\t\t\t\tif (typeof (afterclose) == 'string') {\r\n\t\t\t\t\tafterclose = eval(afterclose.replace(/\\W/g, ''));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$elOpener.one('afterclose.top-menu-popup', afterclose);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions.isFullScreen = Core.state.isMobile;\r\n\t\toptions.i18n = i18n;\r\n\r\n\t\treturn await new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.close();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic recalcPosition (elPopup) {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tHelperCommon.genHasScroll($(popup.elPopupBody));\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive (elPopup) {\r\n\t\tconst elItemActive = DOM.querySelectorVisible(elPopup, 'ul.top-popup_content > li > .top-active');\r\n\t\tif (!elItemActive) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst elUl = elPopup.querySelector('ul.top-popup_content');\r\n\t\tconst elsLi = DOM.querySelectorAllVisible(elPopup, 'ul.top-popup_content > li');\r\n\r\n\t\telPopup.classList.add('top-popup-wrapper-no_animate');\r\n\t\tsetTimeout(() => elPopup.classList.remove('top-popup-wrapper-no_animate'), 100);\r\n\r\n\t\tlet top = 100;\r\n\t\tfor (const elLi of elsLi) {\r\n\t\t\tif (elLi.querySelector(':scope > .top-active')) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\ttop += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\tif (top > heightWrapper) {\r\n\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t} else {\r\n\t\t\telUl.scrollTop = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen (popup) {\r\n\t\tif (decoratorBeforeOpen) {\r\n\t\t\tdecoratorBeforeOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\tstatic decoratorAfterOpen (popup) {\r\n\t\tif (decoratorAfterOpen) {\r\n\t\t\tdecoratorAfterOpen(popup);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Определитель того, что клик вне Popup нужно игнорировать\r\n\t * @returns {boolean} - игнорировать клик, то есть не закрывать Popup\r\n\t */\r\n\tstatic decoratorIsIgnoreOuterClick (e) {\r\n\t\tif (decoratorIsIgnoreOuterClick) {\r\n\t\t\treturn decoratorIsIgnoreOuterClick(e);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Зарегистрировать Vue компонент\r\n\t *\r\n\t * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js\r\n\t * @param {string} id\r\n\t * @param {any} vueConnector\r\n\t */\r\n\tstatic regVueComponent (id, vueConnector) {\r\n\t\tif (Worker.vueConnectors.get(id)) {\r\n\t\t\tthrow 'Vue component Popup use duplicated id: ' + id;\r\n\t\t}\r\n\r\n\t\tWorker.vueConnectors.set(id, vueConnector);\r\n\t}\r\n\r\n\t/**\r\n\t * Снять с регистрации Vue компонент\r\n\t * @param {string} id\r\n\t */\r\n\tstatic unregVueComponent (id) {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init(Worker, Core);\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","Worker","elPopup","elOpener","_b","options","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
package/popup.css CHANGED
@@ -1,19 +1 @@
1
-
2
- h3[data-top-popup],
3
- div[data-top-popup],
4
- i[data-top-popup]:not(.btn):not(.g_btn),
5
- b[data-top-popup]:not(.btn):not(.g_btn) {
6
- cursor: pointer;
7
- user-select: none;
8
- font-style: normal;
9
- text-decoration: none;
10
- display: inline-flex;
11
- align-items: center;
12
- }
13
- [data-top-popup][data-top-popup-disabled] {
14
- pointer-events: none;
15
- cursor: auto !important;
16
- }
17
- i[contenteditable] {
18
- cursor: text !important;
19
- }
1
+ h3[data-top-popup],div[data-top-popup],i[data-top-popup]:not(.btn):not(.g_btn),b[data-top-popup]:not(.btn):not(.g_btn){cursor:pointer;-webkit-user-select:none;user-select:none;font-style:normal;text-decoration:none;display:inline-flex;align-items:center}[data-top-popup][data-top-popup-disabled]{pointer-events:none;cursor:auto!important}i[contenteditable]{cursor:text!important}
package/tabs/tabs.amd.js CHANGED
@@ -1,123 +1,3 @@
1
- define(["exports", "vue", "../.chunks/forms-f7b7b259.amd"], function(exports, vue, forms) {
2
- "use strict"; if(typeof vue === "undefined") var vue = window.Vue;
3
- var __vite_style__ = document.createElement("style");
4
- __vite_style__.textContent = "\n.top-tabs {\n background: var(--content-background-color);\n border-radius: 8px;\n border: 1px solid var(--color-line-2-opacity);\n padding: 0;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n}\n.top-tabs_header {\n padding: 6px;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n/* Содержимое вкладок */\n.top-tabs_contents {\n border-top: 1px solid var(--color-line-2-opacity);\n width: 100%;\n margin-top: -1px;\n}\n\n/* Состояние открытости вкладок */\n.top-tabs_tabInput:checked:nth-child(1) ~ .top-tabs_contents > .top-tabs_content:nth-child(1),\n.top-tabs_tabInput:checked:nth-child(3) ~ .top-tabs_contents > .top-tabs_content:nth-child(2),\n.top-tabs_tabInput:checked:nth-child(5) ~ .top-tabs_contents > .top-tabs_content:nth-child(3),\n.top-tabs_tabInput:checked:nth-child(7) ~ .top-tabs_contents > .top-tabs_content:nth-child(4),\n.top-tabs_tabInput:checked:nth-child(9) ~ .top-tabs_contents > .top-tabs_content:nth-child(5),\n.top-tabs_tabInput:checked:nth-child(11) ~ .top-tabs_contents > .top-tabs_content:nth-child(6) {\n display: block;\n}\n\n.top-tabs_tabLabel {\n cursor: pointer;\n border-bottom: 2px solid transparent;\n padding: 14px 20px;\n position: relative;\n display: flex;\n align-items: center;\n}\n.top-tabs_tabLabel:hover {\n border-color: var(--color-line-3-opacity);\n}\n.top-tabs_tabInput:checked + .top-tabs_tabLabel {\n border-color: var(--color-primary);\n color: var(--color-primary);\n}\n.top-tabs_tabLabel.top-disabled {\n color: var(--color-text-3);\n}\n\n.top-tabs_content {\n padding: 14px;\n overflow: auto;\n display: none;\n}\n";
5
- document.head.appendChild(__vite_style__);
6
- const _hoisted_1$2 = {
7
- class: /* @__PURE__ */ vue.normalizeClass({
8
- "top-tabs": true
9
- })
10
- };
11
- const _hoisted_2$1 = {
12
- key: 0,
13
- class: "top-tabs_header"
14
- };
15
- const _hoisted_3 = { class: "top-tabs_contents" };
16
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
17
- __name: "tabs",
18
- props: {
19
- id: {}
20
- },
21
- setup(__props) {
22
- return (_ctx, _cache) => {
23
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
24
- vue.renderSlot(_ctx.$slots, "buttons"),
25
- _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$1, [
26
- vue.renderSlot(_ctx.$slots, "header")
27
- ])) : vue.createCommentVNode("", true),
28
- vue.createElementVNode("div", _hoisted_3, [
29
- vue.renderSlot(_ctx.$slots, "contents")
30
- ])
31
- ]);
32
- };
33
- }
34
- });
35
- const style0$2 = {
36
- "top-tabs": "top-tabs",
37
- "top-tabs_header": "top-tabs_header",
38
- "top-tabs_contents": "top-tabs_contents",
39
- "top-tabs_tabInput": "top-tabs_tabInput",
40
- "top-tabs_content": "top-tabs_content"
41
- };
42
- const cssModules$2 = {
43
- "$style": style0$2
44
- };
45
- const tabs = /* @__PURE__ */ forms._export_sfc(_sfc_main$2, [["__cssModules", cssModules$2]]);
46
- const _hoisted_1$1 = ["id", "name", "value", "checked", "disabled"];
47
- const _hoisted_2 = ["for"];
48
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
49
- __name: "tab",
50
- props: {
51
- tabsId: {},
52
- name: {},
53
- title: {},
54
- active: { type: Boolean },
55
- disabled: { type: Boolean }
56
- },
57
- setup(__props) {
58
- return (_ctx, _cache) => {
59
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
60
- vue.createElementVNode("input", {
61
- type: "radio",
62
- class: "top-tabs_tabInput top-unvisible",
63
- id: _ctx.tabsId + _ctx.name,
64
- name: _ctx.tabsId,
65
- value: _ctx.name,
66
- checked: _ctx.active,
67
- disabled: _ctx.disabled
68
- }, null, 8, _hoisted_1$1),
69
- vue.createElementVNode("label", {
70
- class: vue.normalizeClass({
71
- "top-tabs_tabLabel": true,
72
- "top-forms-focusable": true,
73
- "top-disabled": _ctx.disabled
74
- }),
75
- for: _ctx.tabsId + _ctx.name
76
- }, [
77
- vue.renderSlot(_ctx.$slots, "default")
78
- ], 10, _hoisted_2)
79
- ], 64);
80
- };
81
- }
82
- });
83
- const style0$1 = {
84
- "top-tabs_tabLabel": "top-tabs_tabLabel",
85
- "top-tabs_tabInput": "top-tabs_tabInput",
86
- "top-disabled": "top-disabled"
87
- };
88
- const cssModules$1 = {
89
- "$style": style0$1
90
- };
91
- const tab = /* @__PURE__ */ forms._export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
92
- const _hoisted_1 = ["data-tabs-name"];
93
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
94
- __name: "content",
95
- props: {
96
- name: {}
97
- },
98
- setup(__props) {
99
- return (_ctx, _cache) => {
100
- return vue.openBlock(), vue.createElementBlock("div", {
101
- class: vue.normalizeClass({
102
- "top-tabs_content": true
103
- }),
104
- "data-tabs-name": _ctx.name
105
- }, [
106
- vue.renderSlot(_ctx.$slots, "default")
107
- ], 8, _hoisted_1);
108
- };
109
- }
110
- });
111
- const style0 = {
112
- "top-tabs_content": "top-tabs_content"
113
- };
114
- const cssModules = {
115
- "$style": style0
116
- };
117
- const content = /* @__PURE__ */ forms._export_sfc(_sfc_main, [["__cssModules", cssModules]]);
118
- exports.Tabs = tabs;
119
- exports.TabsContent = content;
120
- exports.TabsTab = tab;
121
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
122
- });
1
+ define(["exports","vue","../.chunks/forms-cab135c7.amd"],function(o,t,a){"use strict"; if(typeof vue === "undefined") var vue = window.Vue;var s=document.createElement("style");s.textContent=`.top-tabs{background:var(--content-background-color);border-radius:8px;border:1px solid var(--color-line-2-opacity);padding:0;display:flex;flex-wrap:wrap;align-items:stretch}.top-tabs_header{padding:6px;margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.top-tabs_contents{border-top:1px solid var(--color-line-2-opacity);width:100%;margin-top:-1px}.top-tabs_tabInput:checked:nth-child(1)~.top-tabs_contents>.top-tabs_content:nth-child(1),.top-tabs_tabInput:checked:nth-child(3)~.top-tabs_contents>.top-tabs_content:nth-child(2),.top-tabs_tabInput:checked:nth-child(5)~.top-tabs_contents>.top-tabs_content:nth-child(3),.top-tabs_tabInput:checked:nth-child(7)~.top-tabs_contents>.top-tabs_content:nth-child(4),.top-tabs_tabInput:checked:nth-child(9)~.top-tabs_contents>.top-tabs_content:nth-child(5),.top-tabs_tabInput:checked:nth-child(11)~.top-tabs_contents>.top-tabs_content:nth-child(6){display:block}.top-tabs_tabLabel{cursor:pointer;border-bottom:2px solid transparent;padding:14px 20px;position:relative;display:flex;align-items:center}.top-tabs_tabLabel:hover{border-color:var(--color-line-2-opacity)}.top-tabs_tabInput:checked+.top-tabs_tabLabel{border-color:var(--color-primary);color:var(--color-primary)}.top-tabs_tabLabel.top-disabled{color:var(--color-text-3)}.top-tabs_content{padding:14px;overflow:auto;display:none}
2
+ `,document.head.appendChild(s);const c={class:t.normalizeClass({"top-tabs":!0})},p={key:0,class:"top-tabs_header"},d={class:"top-tabs_contents"},r=t.defineComponent({__name:"tabs",props:{id:{}},setup(n){return(e,l)=>(t.openBlock(),t.createElementBlock("div",c,[t.renderSlot(e.$slots,"buttons"),e.$slots.header?(t.openBlock(),t.createElementBlock("div",p,[t.renderSlot(e.$slots,"header")])):t.createCommentVNode("",!0),t.createElementVNode("div",d,[t.renderSlot(e.$slots,"contents")])]))}}),b={$style:{"top-tabs":"top-tabs","top-tabs_header":"top-tabs_header","top-tabs_contents":"top-tabs_contents","top-tabs_tabInput":"top-tabs_tabInput","top-tabs_content":"top-tabs_content"}},i=a._export_sfc(r,[["__cssModules",b]]),_=["id","name","value","checked","disabled"],h=["for"],m=t.defineComponent({__name:"tab",props:{tabsId:{},name:{},title:{},active:{type:Boolean},disabled:{type:Boolean}},setup(n){return(e,l)=>(t.openBlock(),t.createElementBlock(t.Fragment,null,[t.createElementVNode("input",{type:"radio",class:"top-tabs_tabInput top-unvisible",id:e.tabsId+e.name,name:e.tabsId,value:e.name,checked:e.active,disabled:e.disabled},null,8,_),t.createElementVNode("label",{class:t.normalizeClass({"top-tabs_tabLabel":!0,"top-forms-focusable":!0,"top-disabled":e.disabled}),for:e.tabsId+e.name},[t.renderSlot(e.$slots,"default")],10,h)],64))}}),u={$style:{"top-tabs_tabLabel":"top-tabs_tabLabel","top-tabs_tabInput":"top-tabs_tabInput","top-disabled":"top-disabled"}},y=a._export_sfc(m,[["__cssModules",u]]),f=["data-tabs-name"],k=t.defineComponent({__name:"content",props:{name:{}},setup(n){return(e,l)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass({"top-tabs_content":!0}),"data-tabs-name":e.name},[t.renderSlot(e.$slots,"default")],8,f))}}),$={$style:{"top-tabs_content":"top-tabs_content"}},I=a._export_sfc(k,[["__cssModules",$]]);o.Tabs=i,o.TabsContent=I,o.TabsTab=y,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
123
3
  //# sourceMappingURL=tabs.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"tabs.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}