@topvisor/ui 0.0.16 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/core-0b2c7817.es.js +152 -0
- package/.chunks/{core-c3afa109.es.js.map → core-0b2c7817.es.js.map} +1 -1
- package/.chunks/core-51f7b679.amd.js +151 -0
- package/.chunks/{core-97b070be.amd.js.map → core-51f7b679.amd.js.map} +1 -1
- package/.chunks/forms-245e3bc0.es.js +565 -0
- package/.chunks/forms-245e3bc0.es.js.map +1 -0
- package/.chunks/forms-f7b7b259.amd.js +568 -0
- package/.chunks/forms-f7b7b259.amd.js.map +1 -0
- package/.chunks/popup-8f650530.amd.js +728 -0
- package/.chunks/{popup-6d1d8097.amd.js.map → popup-8f650530.amd.js.map} +1 -1
- package/.chunks/popup-d240ed19.es.js +731 -0
- package/.chunks/{popup-95d27020.es.js.map → popup-d240ed19.es.js.map} +1 -1
- package/common/common.amd.js +21 -1
- package/common/common.amd.js.map +1 -1
- package/common/common.js +11 -8
- package/common/common.js.map +1 -1
- package/core/core.amd.js +4 -1
- package/core/core.amd.js.map +1 -1
- package/core/core.js +2 -2
- package/core.css +648 -1
- package/dark.css +136 -1
- package/editArea/editArea.amd.js +125 -2
- package/editArea/editArea.amd.js.map +1 -1
- package/editArea/editArea.js +88 -76
- package/editArea/editArea.js.map +1 -1
- package/editArea.css +61 -1
- package/forms/forms.amd.js +12 -1
- package/forms/forms.amd.js.map +1 -1
- package/forms/forms.js +9 -9
- package/forms/helpers.amd.js +5 -1
- package/forms/helpers.amd.js.map +1 -1
- package/forms/helpers.js +2 -2
- package/forms.css +505 -1
- package/icomoon/demo.html +15 -1
- package/icomoon/fonts/Topvisor-2.svg +1 -0
- package/icomoon/fonts/Topvisor-2.ttf +0 -0
- package/icomoon/fonts/Topvisor-2.woff +0 -0
- package/icomoon/selection.json +1 -1
- package/icomoon/style.css +6 -3
- package/light.css +136 -1
- package/package.json +1 -1
- package/popup/popup.amd.js +197 -2
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.js +157 -105
- package/popup/popup.js.map +1 -1
- package/popup/worker.amd.js +233 -1
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.js +146 -67
- package/popup/worker.js.map +1 -1
- package/popup.css +19 -1
- package/tabs/tabs.amd.js +123 -0
- package/tabs/tabs.amd.js.map +1 -0
- package/tabs/tabs.js +120 -0
- package/tabs/tabs.js.map +1 -0
- package/tabs.css +60 -0
- package/utils/device.amd.js +41 -1
- package/utils/device.amd.js.map +1 -1
- package/utils/device.js +13 -6
- package/utils/device.js.map +1 -1
- package/utils/dom.amd.js +94 -1
- package/utils/dom.amd.js.map +1 -1
- package/utils/dom.js +77 -47
- package/utils/dom.js.map +1 -1
- package/.chunks/core-97b070be.amd.js +0 -2
- package/.chunks/core-c3afa109.es.js +0 -121
- package/.chunks/forms-6a6b0b80.es.js +0 -436
- package/.chunks/forms-6a6b0b80.es.js.map +0 -1
- package/.chunks/forms-7119886a.amd.js +0 -3
- package/.chunks/forms-7119886a.amd.js.map +0 -1
- package/.chunks/popup-6d1d8097.amd.js +0 -342
- package/.chunks/popup-95d27020.es.js +0 -720
- package/icomoon/demo-files/Read Me.txt +0 -7
package/popup/worker.amd.js.map
CHANGED
|
@@ -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":["e","_a","Core","Worker","elPopup","Events","elOpener","_b","options","DOM","resolve","reject","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","__publicField","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';\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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"}
|
package/popup/worker.js
CHANGED
|
@@ -1,44 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
var i = (e, t, o) => t in e ? n(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o;
|
|
3
|
-
var p = (e, t, o) => (i(e, typeof t != "symbol" ? t + "" : t, o), o);
|
|
4
|
-
import { C as Core, E as Events } from "../.chunks/core-c3afa109.es.js";
|
|
1
|
+
import { C as Core, E as Events } from "../.chunks/core-0b2c7817.es.js";
|
|
5
2
|
import DOM from "../utils/dom.js";
|
|
6
3
|
import "vue";
|
|
7
4
|
import "../utils/device.js";
|
|
8
5
|
class WorkerEvents {
|
|
9
6
|
static init() {
|
|
10
|
-
document.addEventListener("mouseover", (
|
|
11
|
-
var
|
|
12
|
-
(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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);
|
|
18
26
|
}
|
|
19
27
|
/**
|
|
20
28
|
* Глобальный обработчик кликов
|
|
21
29
|
* обрабатывает клики на открытие Popup
|
|
22
30
|
* @param {Event} e
|
|
23
31
|
*/
|
|
24
|
-
static async onclick(
|
|
25
|
-
var
|
|
26
|
-
let
|
|
27
|
-
switch (
|
|
28
|
-
case !!((
|
|
29
|
-
|
|
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;
|
|
30
38
|
break;
|
|
31
|
-
case !!((
|
|
32
|
-
|
|
39
|
+
case !!((_b = e.target.parentElement) == null ? void 0 : _b.dataset.topPopup):
|
|
40
|
+
elOpener2 = e.target.parentElement;
|
|
33
41
|
break;
|
|
34
42
|
}
|
|
35
|
-
|
|
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);
|
|
36
54
|
}
|
|
37
55
|
}
|
|
38
|
-
let decoratorBeforeOpen
|
|
56
|
+
let decoratorBeforeOpen;
|
|
57
|
+
let decoratorAfterOpen;
|
|
58
|
+
let decoratorIsIgnoreOuterClick;
|
|
59
|
+
let i18n = {
|
|
39
60
|
Close: "Close"
|
|
40
61
|
};
|
|
41
|
-
|
|
62
|
+
class Worker {
|
|
63
|
+
// глобальное выключение закрытия меню, используется при различных оверлеях
|
|
64
|
+
static noClose = false;
|
|
65
|
+
static vueConnectors = /* @__PURE__ */ new Map();
|
|
42
66
|
/**
|
|
43
67
|
* Вызывается при инициализаци приложения
|
|
44
68
|
* устанавливает глобальные статические декортаоры для компонента Popup
|
|
@@ -49,12 +73,15 @@ const _Worker = class _Worker {
|
|
|
49
73
|
* i18n: {Close: string}
|
|
50
74
|
* }} options
|
|
51
75
|
*/
|
|
52
|
-
static onInitApp(
|
|
53
|
-
decoratorBeforeOpen =
|
|
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;
|
|
54
81
|
}
|
|
55
82
|
// вернуть объект компонента popup, привязанный к элементу
|
|
56
|
-
static getPopup(
|
|
57
|
-
return DOM.storage(
|
|
83
|
+
static getPopup(elPopup) {
|
|
84
|
+
return DOM.storage(elPopup, "Popup");
|
|
58
85
|
}
|
|
59
86
|
static getAll() {
|
|
60
87
|
return DOM.querySelectorAllArray(document, ".top-popup-wrapper");
|
|
@@ -66,9 +93,34 @@ const _Worker = class _Worker {
|
|
|
66
93
|
* Открть Popup от указанного elOpener
|
|
67
94
|
* @param {Element} elOpener - элемент, который должен вызвать открытие Popup
|
|
68
95
|
*/
|
|
69
|
-
static async openByOpener(
|
|
70
|
-
const
|
|
71
|
-
|
|
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);
|
|
72
124
|
}
|
|
73
125
|
/**
|
|
74
126
|
* Создать и открыть Popup
|
|
@@ -77,55 +129,84 @@ const _Worker = class _Worker {
|
|
|
77
129
|
*/
|
|
78
130
|
static async open(elOpener, options) {
|
|
79
131
|
elOpener.dataset.topPopupOpened = "opened";
|
|
80
|
-
const { default: Popup } = await import("../.chunks/popup-
|
|
81
|
-
if (typeof jQuery
|
|
132
|
+
const { default: Popup } = await import("../.chunks/popup-d240ed19.es.js");
|
|
133
|
+
if (typeof jQuery === "function") {
|
|
82
134
|
const $elOpener = jQuery(elOpener);
|
|
83
135
|
if ($elOpener.data("aftershow")) {
|
|
84
136
|
let afterShow = $elOpener.data("aftershow");
|
|
85
|
-
typeof afterShow == "string"
|
|
137
|
+
if (typeof afterShow == "string") {
|
|
138
|
+
afterShow = eval(afterShow.replace(/\W/g, ""));
|
|
139
|
+
}
|
|
140
|
+
$elOpener.one("aftershow.top-menu-popup", afterShow);
|
|
86
141
|
}
|
|
87
142
|
if ($elOpener.data("afterclose")) {
|
|
88
143
|
let afterclose = $elOpener.data("afterclose");
|
|
89
|
-
typeof afterclose == "string"
|
|
144
|
+
if (typeof afterclose == "string") {
|
|
145
|
+
afterclose = eval(afterclose.replace(/\W/g, ""));
|
|
146
|
+
}
|
|
147
|
+
$elOpener.one("afterclose.top-menu-popup", afterclose);
|
|
90
148
|
}
|
|
91
149
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
+
}
|
|
97
159
|
}
|
|
98
|
-
static recalcPosition(
|
|
99
|
-
const
|
|
100
|
-
|
|
160
|
+
static recalcPosition(elPopup) {
|
|
161
|
+
const popup = Worker.getPopup(elPopup);
|
|
162
|
+
if (popup) {
|
|
163
|
+
popup.recalcPosition();
|
|
164
|
+
HelperCommon.genHasScroll($(popup.elPopupBody));
|
|
165
|
+
}
|
|
101
166
|
}
|
|
102
167
|
// скролл к активному элементу списка
|
|
103
|
-
static scrollToActive(
|
|
104
|
-
|
|
168
|
+
static scrollToActive(elPopup) {
|
|
169
|
+
const elItemActive = DOM.querySelectorVisible(elPopup, "ul.top-popup_content > li > .top-active");
|
|
170
|
+
if (!elItemActive) {
|
|
105
171
|
return;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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")) {
|
|
111
180
|
break;
|
|
112
|
-
|
|
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;
|
|
113
189
|
}
|
|
114
|
-
const s = o.offsetHeight;
|
|
115
|
-
r > s ? o.scrollTop = r - s : o.scrollTop = 0;
|
|
116
190
|
}
|
|
117
|
-
static decoratorBeforeOpen(
|
|
118
|
-
|
|
191
|
+
static decoratorBeforeOpen(popup) {
|
|
192
|
+
if (decoratorBeforeOpen) {
|
|
193
|
+
decoratorBeforeOpen(popup);
|
|
194
|
+
}
|
|
119
195
|
}
|
|
120
|
-
static decoratorAfterOpen(
|
|
121
|
-
|
|
196
|
+
static decoratorAfterOpen(popup) {
|
|
197
|
+
if (decoratorAfterOpen) {
|
|
198
|
+
decoratorAfterOpen(popup);
|
|
199
|
+
}
|
|
122
200
|
}
|
|
123
201
|
/**
|
|
124
202
|
* Определитель того, что клик вне Popup нужно игнорировать
|
|
125
203
|
* @returns {boolean} - игнорировать клик, то есть не закрывать Popup
|
|
126
204
|
*/
|
|
127
205
|
static decoratorIsIgnoreOuterClick(e) {
|
|
128
|
-
|
|
206
|
+
if (decoratorIsIgnoreOuterClick) {
|
|
207
|
+
return decoratorIsIgnoreOuterClick(e);
|
|
208
|
+
}
|
|
209
|
+
return false;
|
|
129
210
|
}
|
|
130
211
|
/**
|
|
131
212
|
* Зарегистрировать Vue компонент
|
|
@@ -134,22 +215,20 @@ const _Worker = class _Worker {
|
|
|
134
215
|
* @param {string} id
|
|
135
216
|
* @param {any} vueConnector
|
|
136
217
|
*/
|
|
137
|
-
static regVueComponent(
|
|
138
|
-
if (
|
|
139
|
-
throw "Vue component Popup use duplicated id: " +
|
|
140
|
-
|
|
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);
|
|
141
223
|
}
|
|
142
224
|
/**
|
|
143
225
|
* Снять с регистрации Vue компонент
|
|
144
226
|
* @param {string} id
|
|
145
227
|
*/
|
|
146
|
-
static unregVueComponent(
|
|
147
|
-
|
|
228
|
+
static unregVueComponent(id) {
|
|
229
|
+
Worker.vueConnectors.delete(id);
|
|
148
230
|
}
|
|
149
|
-
}
|
|
150
|
-
// глобальное выключение закрытия меню, используется при различных оверлеях
|
|
151
|
-
p(_Worker, "noClose", !1), p(_Worker, "vueConnectors", /* @__PURE__ */ new Map());
|
|
152
|
-
let Worker = _Worker;
|
|
231
|
+
}
|
|
153
232
|
WorkerEvents.init(Worker, Core);
|
|
154
233
|
const Worker$1 = Worker;
|
|
155
234
|
export {
|
package/popup/worker.js.map
CHANGED
|
@@ -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":["e","_a","Worker","elPopup","elOpener","_b","options","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","__publicField","GlobalEvents"],"mappings":"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"}
|
|
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":"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"}
|
package/popup.css
CHANGED
|
@@ -1 +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
|
+
}
|
package/tabs/tabs.amd.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
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
|
+
});
|
|
123
|
+
//# sourceMappingURL=tabs.amd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|