@topvisor/ui 0.9.25 → 0.9.26-dev

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 (95) hide show
  1. package/.chunks/datepicker-BMrdz1zd.es.js +277 -0
  2. package/.chunks/datepicker-BMrdz1zd.es.js.map +1 -0
  3. package/.chunks/datepicker-C0rB8tdN.amd.js +234 -0
  4. package/.chunks/datepicker-C0rB8tdN.amd.js.map +1 -0
  5. package/.chunks/{forms-gb7uf2K8.es.js → forms-C4UtO06K.es.js} +230 -230
  6. package/.chunks/forms-C4UtO06K.es.js.map +1 -0
  7. package/.chunks/forms-DujTMzoW.amd.js +3 -0
  8. package/.chunks/forms-DujTMzoW.amd.js.map +1 -0
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Caw4oFU-.es.js → listItem.vue_vue_type_script_setup_true_lang-CHYNz0kA.es.js} +2 -2
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CHYNz0kA.es.js.map +1 -0
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-2TAzIZZA.amd.js → listItem.vue_vue_type_script_setup_true_lang-Ob3185Bq.amd.js} +2 -2
  12. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Ob3185Bq.amd.js.map +1 -0
  13. package/.chunks/{popup-ZmdXZkvb.es.js → popup-B2BoAirk.es.js} +431 -431
  14. package/.chunks/popup-B2BoAirk.es.js.map +1 -0
  15. package/.chunks/{popup-Dfz5hkrQ.amd.js → popup-CyJ0WBUB.amd.js} +386 -386
  16. package/.chunks/popup-CyJ0WBUB.amd.js.map +1 -0
  17. package/.chunks/store-Bl79G7T_.amd.js.map +1 -1
  18. package/.chunks/store-PoMCiuBr.es.js.map +1 -1
  19. package/.chunks/{widgetInput-BxO9y9L7.amd.js → widgetInput-Ce8a61St.amd.js} +2 -2
  20. package/.chunks/widgetInput-Ce8a61St.amd.js.map +1 -0
  21. package/.chunks/{widgetInput-DPOH_qya.es.js → widgetInput-pNYn7i5g.es.js} +2 -2
  22. package/.chunks/widgetInput-pNYn7i5g.es.js.map +1 -0
  23. package/README.md +86 -86
  24. package/assets/forms.css +1 -1
  25. package/assets/formsExt.css +1 -1
  26. package/core/core.amd.js +1 -1
  27. package/core/core.js +1 -1
  28. package/forms/forms.amd.js +1 -1
  29. package/forms/forms.js +1 -1
  30. package/forms/helpers.amd.js.map +1 -1
  31. package/forms/helpers.js.map +1 -1
  32. package/formsExt/formsExt.amd.js +1 -1
  33. package/formsExt/formsExt.amd.js.map +1 -1
  34. package/formsExt/formsExt.js +317 -301
  35. package/formsExt/formsExt.js.map +1 -1
  36. package/icomoon/Read Me.txt +7 -7
  37. package/icomoon/demo-files/demo.css +161 -161
  38. package/icomoon/demo-files/demo.js +30 -30
  39. package/icomoon/demo.html +3225 -3225
  40. package/icomoon/fonts/Topvisor-2.svg +252 -252
  41. package/icomoon/style.css +707 -707
  42. package/package.json +20 -20
  43. package/popup/popup.amd.js +1 -1
  44. package/popup/popup.js +2 -2
  45. package/popup/worker.amd.js +1 -1
  46. package/popup/worker.amd.js.map +1 -1
  47. package/popup/worker.js +47 -47
  48. package/popup/worker.js.map +1 -1
  49. package/require/css.amd.js +11 -11
  50. package/src/components/forms/avatar/avatar.d.ts +9 -0
  51. package/src/components/forms/avatar/avatar.stories.d.ts +24 -0
  52. package/src/components/forms/avatar/avatar.vue.d.ts +12 -0
  53. package/src/components/formsExt/editArea/editArea.d.ts +16 -3
  54. package/src/components/formsExt/editArea/editArea.stories.d.ts +36 -20
  55. package/src/components/formsExt/editArea/editArea.vue.d.ts +12 -4
  56. package/src/components/popup/popup/popup.stories.d.ts +2 -2
  57. package/tabs/tabs.amd.js +1 -1
  58. package/tabs/tabs.js +1 -1
  59. package/tabsView/tabsView.amd.js +1 -1
  60. package/tabsView/tabsView.amd.js.map +1 -1
  61. package/tabsView/tabsView.js +2 -2
  62. package/tabsView/tabsView.js.map +1 -1
  63. package/utils/css.amd.js.map +1 -1
  64. package/utils/css.js.map +1 -1
  65. package/utils/date.amd.js +1 -1
  66. package/utils/date.js +1 -1
  67. package/utils/device.amd.js +1 -1
  68. package/utils/device.js +1 -1
  69. package/utils/dom.amd.js.map +1 -1
  70. package/utils/dom.js.map +1 -1
  71. package/utils/keyboard.amd.js.map +1 -1
  72. package/utils/keyboard.js.map +1 -1
  73. package/utils/route.amd.js.map +1 -1
  74. package/utils/route.js.map +1 -1
  75. package/utils/scroll.amd.js +1 -1
  76. package/utils/scroll.amd.js.map +1 -1
  77. package/utils/scroll.js +1 -1
  78. package/utils/scroll.js.map +1 -1
  79. package/utils/system.amd.js.map +1 -1
  80. package/utils/system.js.map +1 -1
  81. package/utils/window.amd.js +1 -1
  82. package/utils/window.js +1 -1
  83. package/.chunks/datepicker-B9eprAyk.amd.js +0 -234
  84. package/.chunks/datepicker-B9eprAyk.amd.js.map +0 -1
  85. package/.chunks/datepicker-C86O1mQq.es.js +0 -277
  86. package/.chunks/datepicker-C86O1mQq.es.js.map +0 -1
  87. package/.chunks/forms-DkNAMd-D.amd.js +0 -3
  88. package/.chunks/forms-DkNAMd-D.amd.js.map +0 -1
  89. package/.chunks/forms-gb7uf2K8.es.js.map +0 -1
  90. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-2TAzIZZA.amd.js.map +0 -1
  91. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Caw4oFU-.es.js.map +0 -1
  92. package/.chunks/popup-Dfz5hkrQ.amd.js.map +0 -1
  93. package/.chunks/popup-ZmdXZkvb.es.js.map +0 -1
  94. package/.chunks/widgetInput-BxO9y9L7.amd.js.map +0 -1
  95. package/.chunks/widgetInput-DPOH_qya.es.js.map +0 -1
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
- {
2
- "name": "@topvisor/ui",
3
- "private": false,
4
- "version": "0.9.25",
5
- "type": "module",
6
- "description": "Topvisor UI-kit Vue",
7
- "author": "Topvisor",
8
- "keywords": [
9
- "topvisor",
10
- "vue",
11
- "ui framework",
12
- "component framework",
13
- "component library"
14
- ],
15
- "license": "MIT",
16
- "peerDependencies": {
17
- "lodash": "^4.17.21",
18
- "vue": "^3.4.25"
19
- }
20
- }
1
+ {
2
+ "name": "@topvisor/ui",
3
+ "private": false,
4
+ "version": "0.9.26-dev",
5
+ "type": "module",
6
+ "description": "Topvisor UI-kit Vue",
7
+ "author": "Topvisor",
8
+ "keywords": [
9
+ "topvisor",
10
+ "vue",
11
+ "ui framework",
12
+ "component framework",
13
+ "component library"
14
+ ],
15
+ "license": "MIT",
16
+ "peerDependencies": {
17
+ "lodash": "^4.17.21",
18
+ "vue": "^3.4.25"
19
+ }
20
+ }
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-2TAzIZZA.amd","../.chunks/widgetInput-BxO9y9L7.amd"],function(d,n,e,i){"use strict";if(typeof u>"u")var u=window.Vue;n.Popup=e._sfc_main,n.PopupListItem=e._sfc_main$2,n.PopupOpener=e._sfc_main$1,n.PopupWidgetInput=i.PopupWidgetInput,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-Ob3185Bq.amd","../.chunks/widgetInput-Ce8a61St.amd"],function(d,n,e,i){"use strict";if(typeof u>"u")var u=window.Vue;n.Popup=e._sfc_main,n.PopupListItem=e._sfc_main$2,n.PopupOpener=e._sfc_main$1,n.PopupWidgetInput=i.PopupWidgetInput,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=popup.amd.js.map
package/popup/popup.js CHANGED
@@ -1,5 +1,5 @@
1
- import { _ as e, b as t, a } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-Caw4oFU-.es.js";
2
- import { P as s } from "../.chunks/widgetInput-DPOH_qya.es.js";
1
+ import { _ as e, b as t, a } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-CHYNz0kA.es.js";
2
+ import { P as s } from "../.chunks/widgetInput-pNYn7i5g.es.js";
3
3
  export {
4
4
  e as Popup,
5
5
  t as PopupListItem,
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/forms-DkNAMd-D.amd","../utils/dom.amd","../utils/scroll.amd"],function(require,exports,forms,utils_dom,utils_scroll){"use strict";if(typeof vue>"u")var vue=window.Vue;class WorkerEvents{static init(){document.addEventListener("mouseover",t=>{var o;!(t.target instanceof HTMLElement)||!((o=t.target.dataset)!=null&&o.topPopupOpenByHover)||t.target.click()}),document.addEventListener("scroll",()=>{forms.Core.state.isMobile||forms.Core.state.isMobileUA||Worker$1.getAll().forEach(t=>Worker$1.close(t))}),forms.Events.addOnReize(t=>{forms.Core.state.isMobile&&t.topEvent.widthDiff&&Worker$1.getAll().forEach(o=>Worker$1.close(o))}),document.addEventListener("click",this.onclick)}static async onclick(t){var p,a,r,s,n;if(!(t.target instanceof HTMLElement))return;let o;switch(!0){case!!((p=t.target.dataset)!=null&&p.topPopup):o=t.target;break;case!!((a=t.target.parentElement)!=null&&a.dataset.topPopup):o=t.target.parentElement;break;case!!((s=(r=t.target.parentElement)==null?void 0:r.parentElement)!=null&&s.dataset.topPopup):o=(n=t.target.parentElement)==null?void 0:n.parentElement;break}o&&(o.dataset.topPopupDisabled||o.dataset.topPopupOpened||(t.preventDefault(),await Worker$1.openByOpener(o)))}}let decoratorBeforeOpen,decoratorAfterOpen,decoratorIsIgnoreOuterClick,i18n={Close:"Close"};class Worker{static noClose=!1;static vueConnectors=new Map;static onInitApp(e){e&&(decoratorBeforeOpen=e.decoratorBeforeOpen,decoratorAfterOpen=e.decoratorAfterOpen,decoratorIsIgnoreOuterClick=e.decoratorIsIgnoreOuterClick,i18n=e.i18n)}static getPopup(e){return utils_dom.default.storage(e,"Popup")}static getAll(){return utils_dom.default.querySelectorAllArray(document,".top-popup-wrapper")}static getAllVisible(){return utils_dom.default.querySelectorAllVisible(document,".top-popup-wrapper")}static async openByOpener(e){if(!(e instanceof HTMLElement))return;const t={};return t.popup=e.dataset.topPopup,e.dataset.topPopupP&&(t.p=parseInt(e.dataset.topPopupP)),e.dataset.topPopupNotch&&(t.notch=e.dataset.topPopupNotch==="true"),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==="true"),e.dataset.topPopupOpenByHover&&(t.openByHover=e.dataset.topPopupOpenByHover==="true"),e.dataset.topPopupUseOriginal&&(t.useOriginal=e.dataset.topPopupUseOriginal==="true"),await Worker.open(e,t)}static async open(elOpener,options){elOpener instanceof HTMLElement&&(elOpener.dataset.topPopupOpened="opened");const{default:Popup}=await new Promise((e,t)=>require(["../.chunks/popup-Dfz5hkrQ.amd"],e,t));if(forms.Core.$){const $elOpener=forms.Core.$(elOpener);if($elOpener.data("aftershow")){let afterShow=$elOpener.data("aftershow");typeof afterShow=="string"&&(afterShow=eval(afterShow.replace(/\W/g,""))),$elOpener.one("aftershow.top-menu-popup",afterShow)}if($elOpener.data("afterclose")){let afterclose=$elOpener.data("afterclose");typeof afterclose=="string"&&(afterclose=eval(afterclose.replace(/\W/g,""))),$elOpener.one("afterclose.top-menu-popup",afterclose)}}return options.isFullScreen=forms.Core.state.isMobile,options.i18n=i18n,new Popup(elOpener,options)}static close(e){const t=Worker.getPopup(e);t&&t.close()}static recalcPosition(e){const t=Worker.getPopup(e);t&&t.elPopupBody instanceof HTMLElement&&(t.recalcPosition(),utils_scroll.genHasScroll(t.elPopupBody))}static scrollToActive(e){if(!utils_dom.default.querySelectorVisible(e,"ul.top-popup_content > li > .top-active"))return;const o=e.querySelector("ul.top-popup_content"),p=utils_dom.default.querySelectorAllVisible(e,"ul.top-popup_content > li");e.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>e.classList.remove("top-popup-wrapper-no_animate"),100);let a=100;for(const r of p){if(r.querySelector(":scope > .top-active"))break;r instanceof HTMLElement&&(a+=r.offsetHeight)}if(o instanceof HTMLElement){const r=o.offsetHeight;a>r?o.scrollTop=a-r:o.scrollTop=0}}static decoratorBeforeOpen(e){decoratorBeforeOpen&&decoratorBeforeOpen(e)}static decoratorAfterOpen(e){decoratorAfterOpen&&decoratorAfterOpen(e)}static decoratorIsIgnoreOuterClick(e){return decoratorIsIgnoreOuterClick?decoratorIsIgnoreOuterClick(e):!1}static regVueComponent(e,t){if(Worker.vueConnectors.get(e))throw"Vue component Popup use duplicated id: "+e;Worker.vueConnectors.set(e,t)}static unregVueComponent(e){Worker.vueConnectors.delete(e)}}WorkerEvents.init();const Worker$1=Worker;exports.PopupWorker=Worker$1,exports.default=Worker$1,Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ define(["require","exports","../.chunks/forms-DujTMzoW.amd","../utils/dom.amd","../utils/scroll.amd"],function(require,exports,forms,utils_dom,utils_scroll){"use strict";if(typeof vue>"u")var vue=window.Vue;class WorkerEvents{static init(){document.addEventListener("mouseover",t=>{var o;!(t.target instanceof HTMLElement)||!((o=t.target.dataset)!=null&&o.topPopupOpenByHover)||t.target.click()}),document.addEventListener("scroll",()=>{forms.Core.state.isMobile||forms.Core.state.isMobileUA||Worker$1.getAll().forEach(t=>Worker$1.close(t))}),forms.Events.addOnReize(t=>{forms.Core.state.isMobile&&t.topEvent.widthDiff&&Worker$1.getAll().forEach(o=>Worker$1.close(o))}),document.addEventListener("click",this.onclick)}static async onclick(t){var p,a,r,s,n;if(!(t.target instanceof HTMLElement))return;let o;switch(!0){case!!((p=t.target.dataset)!=null&&p.topPopup):o=t.target;break;case!!((a=t.target.parentElement)!=null&&a.dataset.topPopup):o=t.target.parentElement;break;case!!((s=(r=t.target.parentElement)==null?void 0:r.parentElement)!=null&&s.dataset.topPopup):o=(n=t.target.parentElement)==null?void 0:n.parentElement;break}o&&(o.dataset.topPopupDisabled||o.dataset.topPopupOpened||(t.preventDefault(),await Worker$1.openByOpener(o)))}}let decoratorBeforeOpen,decoratorAfterOpen,decoratorIsIgnoreOuterClick,i18n={Close:"Close"};class Worker{static noClose=!1;static vueConnectors=new Map;static onInitApp(e){e&&(decoratorBeforeOpen=e.decoratorBeforeOpen,decoratorAfterOpen=e.decoratorAfterOpen,decoratorIsIgnoreOuterClick=e.decoratorIsIgnoreOuterClick,i18n=e.i18n)}static getPopup(e){return utils_dom.default.storage(e,"Popup")}static getAll(){return utils_dom.default.querySelectorAllArray(document,".top-popup-wrapper")}static getAllVisible(){return utils_dom.default.querySelectorAllVisible(document,".top-popup-wrapper")}static async openByOpener(e){if(!(e instanceof HTMLElement))return;const t={};return t.popup=e.dataset.topPopup,e.dataset.topPopupP&&(t.p=parseInt(e.dataset.topPopupP)),e.dataset.topPopupNotch&&(t.notch=e.dataset.topPopupNotch==="true"||e.dataset.topPopupNotch==="1"),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==="true"||e.dataset.topPopupInvertX==="1"),e.dataset.topPopupOpenByHover&&(t.openByHover=e.dataset.topPopupOpenByHover==="true"||e.dataset.topPopupOpenByHover==="1"),e.dataset.topPopupUseOriginal&&(t.useOriginal=e.dataset.topPopupUseOriginal==="true"||e.dataset.topPopupUseOriginal==="1"),await Worker.open(e,t)}static async open(elOpener,options){elOpener instanceof HTMLElement&&(elOpener.dataset.topPopupOpened="opened");const{default:Popup}=await new Promise((e,t)=>require(["../.chunks/popup-CyJ0WBUB.amd"],e,t));if(forms.Core.$){const $elOpener=forms.Core.$(elOpener);if($elOpener.data("aftershow")){let afterShow=$elOpener.data("aftershow");typeof afterShow=="string"&&(afterShow=eval(afterShow.replace(/\W/g,""))),$elOpener.one("aftershow.top-menu-popup",afterShow)}if($elOpener.data("afterclose")){let afterclose=$elOpener.data("afterclose");typeof afterclose=="string"&&(afterclose=eval(afterclose.replace(/\W/g,""))),$elOpener.one("afterclose.top-menu-popup",afterclose)}}return options.isFullScreen=forms.Core.state.isMobile,options.i18n=i18n,new Popup(elOpener,options)}static close(e){const t=Worker.getPopup(e);t&&t.close()}static recalcPosition(e){const t=Worker.getPopup(e);t&&t.elPopupBody instanceof HTMLElement&&(t.recalcPosition(),utils_scroll.genHasScroll(t.elPopupBody))}static scrollToActive(e){if(!utils_dom.default.querySelectorVisible(e,"ul.top-popup_content > li > .top-active"))return;const o=e.querySelector("ul.top-popup_content"),p=utils_dom.default.querySelectorAllVisible(e,"ul.top-popup_content > li");e.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>e.classList.remove("top-popup-wrapper-no_animate"),100);let a=100;for(const r of p){if(r.querySelector(":scope > .top-active"))break;r instanceof HTMLElement&&(a+=r.offsetHeight)}if(o instanceof HTMLElement){const r=o.offsetHeight;a>r?o.scrollTop=a-r:o.scrollTop=0}}static decoratorBeforeOpen(e){decoratorBeforeOpen&&decoratorBeforeOpen(e)}static decoratorAfterOpen(e){decoratorAfterOpen&&decoratorAfterOpen(e)}static decoratorIsIgnoreOuterClick(e){return decoratorIsIgnoreOuterClick?decoratorIsIgnoreOuterClick(e):!1}static regVueComponent(e,t){if(Worker.vueConnectors.get(e))throw"Vue component Popup use duplicated id: "+e;Worker.vueConnectors.set(e,t)}static unregVueComponent(e){Worker.vueConnectors.delete(e)}}WorkerEvents.init();const Worker$1=Worker;exports.PopupWorker=Worker$1,exports.default=Worker$1,Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
2
2
  //# sourceMappingURL=worker.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.globalEvents.ts","../../src/components/popup/lib/worker.ts"],"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(): void {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!(e.target instanceof HTMLElement) || !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.state.isMobile || Core.state.isMobileUA) {\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 */\r\n\tstatic async onclick(e: Event): Promise<void> {\r\n\t\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\t\tlet elOpener: HTMLElement | null | undefined;\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\r\n\t\t\tcase !!e.target.parentElement?.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement?.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\nimport { genHasScroll } from '@/core/utils/scroll';\r\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\r\n\r\nlet decoratorBeforeOpen: (arg0: Popup) => void;\r\nlet decoratorAfterOpen: (arg0: Popup) => void;\r\nlet decoratorIsIgnoreOuterClick: (arg0: Event) => boolean;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\ninterface Options {\r\n\tdecoratorBeforeOpen: typeof decoratorBeforeOpen,\r\n\tdecoratorAfterOpen: typeof decoratorAfterOpen,\r\n\tdecoratorIsIgnoreOuterClick: typeof decoratorIsIgnoreOuterClick,\r\n\ti18n: typeof i18n\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 */\r\n\tstatic onInitApp(options: Options): void {\r\n\t\tif (options) {\r\n\t\t\tdecoratorBeforeOpen = options.decoratorBeforeOpen;\r\n\t\t\tdecoratorAfterOpen = options.decoratorAfterOpen;\r\n\t\t\tdecoratorIsIgnoreOuterClick = options.decoratorIsIgnoreOuterClick;\r\n\t\t\ti18n = options.i18n;\r\n\t\t}\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup(elPopup: Element): Popup {\r\n\t\treturn DOM.storage(elPopup, 'Popup') as Popup;\r\n\t}\r\n\r\n\tstatic getAll(): Element[] {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible(): Element[] {\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: Element): Promise<Popup | undefined> {\r\n\t\tif (!(elOpener instanceof HTMLElement)) return;\r\n\r\n\t\tconst options: PopupOptions = {};\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 === 'true';\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 as PopupOptions['posBy'];\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 === 'true';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true';\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: Element, options: PopupOptions): Promise<Popup> {\r\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (Core.$) {\r\n\t\t\tconst $elOpener = Core.$(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 new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close(elPopup: Element): void {\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: Element): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tgenHasScroll(popup.elPopupBody);\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive(elPopup: Element): void {\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\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tif (elUl instanceof HTMLElement) {\r\n\t\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\t\tif (top > heightWrapper) {\r\n\t\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t\t} else {\r\n\t\t\t\telUl.scrollTop = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen(popup: Popup): void {\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: Popup): void {\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: Event): boolean {\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 */\r\n\tstatic regVueComponent(id: string, vueConnector: any): void {\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 */\r\n\tstatic unregVueComponent(id: string): void {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init();\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","elPopup","elOpener","_d","_c","options2","elOpener2","popup","top","elLi","elsLi","elUl","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"+MAOA,MAAA,YAAA,+DAIG,EAAAA,EAAA,kBAAA,cAAA,GAAAC,EAAAD,EAAA,OAAA,UAAA,MAAAC,EAAA,sBAIAD,EAAA,OAAA,MAAA,CAAe,CAAA,EAIhB,SAAA,iBAAA,SAAA,IAAA,CACC,MAAA,KAAA,MAAA,UAAA,MAAA,KAAA,MAAA,YAIA,SAAA,OAAA,EAAA,QAAAE,GAAA,SAAA,MAAAA,CAAA,CAAA,CAAwD,CAAA,EAGzD,MAAA,OAAA,WAAAF,GAAA,CAGC,MAAA,KAAA,MAAA,UAAAA,EAAA,SAAA,WACC,SAAA,OAAA,EAAA,QAAAE,GAAA,SAAA,MAAAA,CAAA,CAAA,CACD,CAAA,kDAIF,aAAA,QAAAF,EAAA,eAOC,GAAA,EAAAA,EAAA,kBAAA,aAAwC,aAIxC,OAAA,GAAA,gDAEEG,EAAAH,EAAA,OAEA,mEAGAG,EAAAH,EAAA,OAAA,cAEA,MAAA,IAAA,CAAA,GAAAI,GAAAC,EAAAL,EAAA,OAAA,gBAAA,YAAAK,EAAA,gBAAA,MAAAD,EAAA,QAAA,oEAKA,UAOFD,EAAA,QAAA,kBAKAA,EAAA,QAAA,iBAIAH,EAAA,eAAA,EAEA,MAAA,SAAA,aAAAG,CAAA,IAEF,CC3EA,IAAA,oBACA,mBACA,4BACA,KAAA,cAEA,EASA,MAAA,MAAA,CAAa,OAAA,QAAA,GAGK,OAAA,cAAA,IAAA,IAEc,OAAA,UAAAG,EAAA,KAQ7B,oBAAAA,EAAA,oBACA,mBAAAA,EAAA,mBACA,4BAAAA,EAAA,4BACA,KAAAA,EAAA,MAEF,OAAA,SAAAJ,EAAA,kPAaA,aAAA,aAAAK,EAAA,CAOC,GAAA,EAAAA,aAAA,aAAwC,OAExC,MAAAD,EAAA,CAAA,oCAIAC,EAAA,QAAA,YACCD,EAAA,EAAA,SAAAC,EAAA,QAAA,SAAA,GAGDA,EAAA,QAAA,0DAIAA,EAAA,QAAA,iDAIAA,EAAA,QAAA,iDAIAA,EAAA,QAAA,yDAIAA,EAAA,QAAA,gEAIAA,EAAA,QAAA,4EAIAA,EAAA,QAAA,mGAKD,aAAA,KAAA,SAAA,QAAA,mCAQsC,SAAA,QAAA,eAAA,wGAIrC,GAAA,MAAA,KAAA,EAAA,wCAIC,GAAA,UAAA,KAAA,WAAA,EAAA,2CAEC,OAAA,WAAA,WACC,UAAA,KAAA,UAAA,QAAA,MAAA,EAAA,CAAA,uDAOF,GAAA,UAAA,KAAA,YAAA,EAAA,6CAEC,OAAA,YAAA,WACC,WAAA,KAAA,WAAA,QAAA,MAAA,EAAA,CAAA,gHAQH,QAAA,KAAA,iCAGD,OAAA,MAAAL,EAAA,+BAKEM,EAAA,MAAA,EAEF,OAAA,eAAAN,EAAA,sEAKEM,EAAA,eAAA,EAIA,aAAA,aAAAA,EAAA,WAAA,GAEF,OAAA,eAAAN,EAAA,yFAME,kLAOD,WAAA,IAAAA,EAAA,UAAA,OAAA,8BAAA,EAAA,GAAA,EAEA,IAAAO,EAAA,IACA,UAAAC,KAAAC,EAAA,CACC,GAAAD,EAAA,cAAA,sBAAA,EACC,iCAGgCD,GAAAC,EAAA,cAGlC,GAAAE,aAAA,YAAA,CACC,MAAAC,EAAAD,EAAA,aACAH,EAAAI,EACCD,EAAA,UAAAH,EAAAI,EAEAD,EAAA,UAAA,GAGH,OAAA,oBAAAJ,EAAA,sBAIE,oBAAAA,CAAA,EAEF,OAAA,mBAAAA,EAAA,qBAIE,mBAAAA,CAAA,EAEF,OAAA,4BAAA,EAAA,oCAQE,4BAAA,CAAA,KAIF,OAAA,gBAAAM,EAAAC,EAAA,gCASE,KAAA,0CAAAD,gCAIF,OAAA,kBAAAA,EAAA,iCAWDE,aAAAA,KAAAA,EAEA,MAAA,SAAA"}
1
+ {"version":3,"file":"worker.amd.js","sources":["../../src/components/popup/lib/worker.globalEvents.ts","../../src/components/popup/lib/worker.ts"],"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(): void {\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\n\t\tdocument.addEventListener('mouseover', (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement) || !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.state.isMobile || Core.state.isMobileUA) {\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 */\n\tstatic async onclick(e: Event): Promise<void> {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tlet elOpener: HTMLElement | null | undefined;\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\n\t\t\tcase !!e.target.parentElement?.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement?.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';\nimport { genHasScroll } from '@/core/utils/scroll';\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\n\nlet decoratorBeforeOpen: (arg0: Popup) => void;\nlet decoratorAfterOpen: (arg0: Popup) => void;\nlet decoratorIsIgnoreOuterClick: (arg0: Event) => boolean;\nlet i18n = {\n\tClose: 'Close',\n};\n\ninterface Options {\n\tdecoratorBeforeOpen: typeof decoratorBeforeOpen,\n\tdecoratorAfterOpen: typeof decoratorAfterOpen,\n\tdecoratorIsIgnoreOuterClick: typeof decoratorIsIgnoreOuterClick,\n\ti18n: typeof i18n\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 */\n\tstatic onInitApp(options: Options): void {\n\t\tif (options) {\n\t\t\tdecoratorBeforeOpen = options.decoratorBeforeOpen;\n\t\t\tdecoratorAfterOpen = options.decoratorAfterOpen;\n\t\t\tdecoratorIsIgnoreOuterClick = options.decoratorIsIgnoreOuterClick;\n\t\t\ti18n = options.i18n;\n\t\t}\n\t}\n\n\t// вернуть объект компонента popup, привязанный к элементу\n\tstatic getPopup(elPopup: Element): Popup {\n\t\treturn DOM.storage(elPopup, 'Popup') as Popup;\n\t}\n\n\tstatic getAll(): Element[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\tstatic getAllVisible(): Element[] {\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: Element): Promise<Popup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\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\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\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 as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\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: Element, options: PopupOptions): Promise<Popup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { default: Popup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(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 new Popup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: Element): void {\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: Element): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\n\t\t\t// контроль за состоянием тени скролла\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\n\t\t\tgenHasScroll(popup.elPopupBody);\n\t\t}\n\t}\n\n\t// скролл к активному элементу списка\n\tstatic scrollToActive(elPopup: Element): void {\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\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: Popup): void {\n\t\tif (decoratorBeforeOpen) {\n\t\t\tdecoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: Popup): void {\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: Event): boolean {\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 */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\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 */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n}\n\nGlobalEvents.init();\n\nexport default Worker;\n"],"names":["e","_a","elPopup","elOpener","_d","_c","options2","elOpener2","popup","top","elLi","elsLi","elUl","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
package/popup/worker.js CHANGED
@@ -1,38 +1,38 @@
1
- import { C as Core, E as Events } from "../.chunks/forms-gb7uf2K8.es.js";
1
+ import { C as Core, E as Events } from "../.chunks/forms-C4UtO06K.es.js";
2
2
  import DOM from "../utils/dom.js";
3
3
  import { genHasScroll } from "../utils/scroll.js";
4
4
  class WorkerEvents {
5
5
  static init() {
6
- document.addEventListener("mouseover", (t) => {
6
+ document.addEventListener("mouseover", (e) => {
7
7
  var o;
8
- !(t.target instanceof HTMLElement) || !((o = t.target.dataset) != null && o.topPopupOpenByHover) || t.target.click();
8
+ !(e.target instanceof HTMLElement) || !((o = e.target.dataset) != null && o.topPopupOpenByHover) || e.target.click();
9
9
  }), document.addEventListener("scroll", () => {
10
- Core.state.isMobile || Core.state.isMobileUA || 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));
10
+ Core.state.isMobile || Core.state.isMobileUA || Worker$1.getAll().forEach((e) => Worker$1.close(e));
11
+ }), Events.addOnReize((e) => {
12
+ Core.state.isMobile && e.topEvent.widthDiff && Worker$1.getAll().forEach((o) => Worker$1.close(o));
13
13
  }), document.addEventListener("click", this.onclick);
14
14
  }
15
15
  /**
16
16
  * Глобальный обработчик кликов
17
17
  * обрабатывает клики на открытие Popup
18
18
  */
19
- static async onclick(t) {
20
- var p, a, r, n, s;
21
- if (!(t.target instanceof HTMLElement))
19
+ static async onclick(e) {
20
+ var p, a, r, s, n;
21
+ if (!(e.target instanceof HTMLElement))
22
22
  return;
23
23
  let o;
24
24
  switch (!0) {
25
- case !!((p = t.target.dataset) != null && p.topPopup):
26
- o = t.target;
25
+ case !!((p = e.target.dataset) != null && p.topPopup):
26
+ o = e.target;
27
27
  break;
28
- case !!((a = t.target.parentElement) != null && a.dataset.topPopup):
29
- o = t.target.parentElement;
28
+ case !!((a = e.target.parentElement) != null && a.dataset.topPopup):
29
+ o = e.target.parentElement;
30
30
  break;
31
- case !!((n = (r = t.target.parentElement) == null ? void 0 : r.parentElement) != null && n.dataset.topPopup):
32
- o = (s = t.target.parentElement) == null ? void 0 : s.parentElement;
31
+ case !!((s = (r = e.target.parentElement) == null ? void 0 : r.parentElement) != null && s.dataset.topPopup):
32
+ o = (n = e.target.parentElement) == null ? void 0 : n.parentElement;
33
33
  break;
34
34
  }
35
- o && (o.dataset.topPopupDisabled || o.dataset.topPopupOpened || (t.preventDefault(), await Worker$1.openByOpener(o)));
35
+ o && (o.dataset.topPopupDisabled || o.dataset.topPopupOpened || (e.preventDefault(), await Worker$1.openByOpener(o)));
36
36
  }
37
37
  }
38
38
  let decoratorBeforeOpen, decoratorAfterOpen, decoratorIsIgnoreOuterClick, i18n = {
@@ -46,12 +46,12 @@ class Worker {
46
46
  * Вызывается при инициализаци приложения
47
47
  * устанавливает глобальные статические декортаоры для компонента Popup
48
48
  */
49
- static onInitApp(e) {
50
- e && (decoratorBeforeOpen = e.decoratorBeforeOpen, decoratorAfterOpen = e.decoratorAfterOpen, decoratorIsIgnoreOuterClick = e.decoratorIsIgnoreOuterClick, i18n = e.i18n);
49
+ static onInitApp(t) {
50
+ t && (decoratorBeforeOpen = t.decoratorBeforeOpen, decoratorAfterOpen = t.decoratorAfterOpen, decoratorIsIgnoreOuterClick = t.decoratorIsIgnoreOuterClick, i18n = t.i18n);
51
51
  }
52
52
  // вернуть объект компонента popup, привязанный к элементу
53
- static getPopup(e) {
54
- return DOM.storage(e, "Popup");
53
+ static getPopup(t) {
54
+ return DOM.storage(t, "Popup");
55
55
  }
56
56
  static getAll() {
57
57
  return DOM.querySelectorAllArray(document, ".top-popup-wrapper");
@@ -63,11 +63,11 @@ class Worker {
63
63
  * Открть Popup от указанного elOpener
64
64
  * @param {Element} elOpener - элемент, который должен вызвать открытие Popup
65
65
  */
66
- static async openByOpener(e) {
67
- if (!(e instanceof HTMLElement))
66
+ static async openByOpener(t) {
67
+ if (!(t instanceof HTMLElement))
68
68
  return;
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 === "true"), 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 === "true"), e.dataset.topPopupOpenByHover && (t.openByHover = e.dataset.topPopupOpenByHover === "true"), e.dataset.topPopupUseOriginal && (t.useOriginal = e.dataset.topPopupUseOriginal === "true"), await Worker.open(e, t);
69
+ const e = {};
70
+ return e.popup = t.dataset.topPopup, t.dataset.topPopupP && (e.p = parseInt(t.dataset.topPopupP)), t.dataset.topPopupNotch && (e.notch = t.dataset.topPopupNotch === "true" || t.dataset.topPopupNotch === "1"), t.dataset.topPopupClass && (e.class = t.dataset.topPopupClass), t.dataset.topPopupPosBy && (e.posBy = t.dataset.topPopupPosBy), t.dataset.topPopupFront && (e.frontSelector = t.dataset.topPopupFront), t.dataset.topPopupInvertX && (e.invertX = t.dataset.topPopupInvertX === "true" || t.dataset.topPopupInvertX === "1"), t.dataset.topPopupOpenByHover && (e.openByHover = t.dataset.topPopupOpenByHover === "true" || t.dataset.topPopupOpenByHover === "1"), t.dataset.topPopupUseOriginal && (e.useOriginal = t.dataset.topPopupUseOriginal === "true" || t.dataset.topPopupUseOriginal === "1"), await Worker.open(t, e);
71
71
  }
72
72
  /**
73
73
  * Создать и открыть Popup
@@ -76,7 +76,7 @@ class Worker {
76
76
  */
77
77
  static async open(elOpener, options) {
78
78
  elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = "opened");
79
- const { default: Popup } = await import("../.chunks/popup-ZmdXZkvb.es.js");
79
+ const { default: Popup } = await import("../.chunks/popup-B2BoAirk.es.js");
80
80
  if (Core.$) {
81
81
  const $elOpener = Core.$(elOpener);
82
82
  if ($elOpener.data("aftershow")) {
@@ -90,20 +90,20 @@ class Worker {
90
90
  }
91
91
  return options.isFullScreen = Core.state.isMobile, options.i18n = i18n, new Popup(elOpener, options);
92
92
  }
93
- static close(e) {
94
- const t = Worker.getPopup(e);
95
- t && t.close();
93
+ static close(t) {
94
+ const e = Worker.getPopup(t);
95
+ e && e.close();
96
96
  }
97
- static recalcPosition(e) {
98
- const t = Worker.getPopup(e);
99
- t && t.elPopupBody instanceof HTMLElement && (t.recalcPosition(), genHasScroll(t.elPopupBody));
97
+ static recalcPosition(t) {
98
+ const e = Worker.getPopup(t);
99
+ e && e.elPopupBody instanceof HTMLElement && (e.recalcPosition(), genHasScroll(e.elPopupBody));
100
100
  }
101
101
  // скролл к активному элементу списка
102
- static scrollToActive(e) {
103
- if (!DOM.querySelectorVisible(e, "ul.top-popup_content > li > .top-active"))
102
+ static scrollToActive(t) {
103
+ if (!DOM.querySelectorVisible(t, "ul.top-popup_content > li > .top-active"))
104
104
  return;
105
- const o = e.querySelector("ul.top-popup_content"), p = 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);
105
+ const o = t.querySelector("ul.top-popup_content"), p = DOM.querySelectorAllVisible(t, "ul.top-popup_content > li");
106
+ t.classList.add("top-popup-wrapper-no_animate"), setTimeout(() => t.classList.remove("top-popup-wrapper-no_animate"), 100);
107
107
  let a = 100;
108
108
  for (const r of p) {
109
109
  if (r.querySelector(":scope > .top-active"))
@@ -115,34 +115,34 @@ class Worker {
115
115
  a > r ? o.scrollTop = a - r : o.scrollTop = 0;
116
116
  }
117
117
  }
118
- static decoratorBeforeOpen(e) {
119
- decoratorBeforeOpen && decoratorBeforeOpen(e);
118
+ static decoratorBeforeOpen(t) {
119
+ decoratorBeforeOpen && decoratorBeforeOpen(t);
120
120
  }
121
- static decoratorAfterOpen(e) {
122
- decoratorAfterOpen && decoratorAfterOpen(e);
121
+ static decoratorAfterOpen(t) {
122
+ decoratorAfterOpen && decoratorAfterOpen(t);
123
123
  }
124
124
  /**
125
125
  * Определитель того, что клик вне Popup нужно игнорировать
126
126
  * @returns {boolean} - игнорировать клик, то есть не закрывать Popup
127
127
  */
128
- static decoratorIsIgnoreOuterClick(e) {
129
- return decoratorIsIgnoreOuterClick ? decoratorIsIgnoreOuterClick(e) : !1;
128
+ static decoratorIsIgnoreOuterClick(t) {
129
+ return decoratorIsIgnoreOuterClick ? decoratorIsIgnoreOuterClick(t) : !1;
130
130
  }
131
131
  /**
132
132
  * Зарегистрировать Vue компонент
133
133
  *
134
134
  * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js
135
135
  */
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);
136
+ static regVueComponent(t, e) {
137
+ if (Worker.vueConnectors.get(t))
138
+ throw "Vue component Popup use duplicated id: " + t;
139
+ Worker.vueConnectors.set(t, e);
140
140
  }
141
141
  /**
142
142
  * Снять с регистрации Vue компонент
143
143
  */
144
- static unregVueComponent(e) {
145
- Worker.vueConnectors.delete(e);
144
+ static unregVueComponent(t) {
145
+ Worker.vueConnectors.delete(t);
146
146
  }
147
147
  }
148
148
  WorkerEvents.init();
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.globalEvents.ts","../../src/components/popup/lib/worker.ts"],"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(): void {\r\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\r\n\t\tdocument.addEventListener('mouseover', (e) => {\r\n\t\t\tif (!(e.target instanceof HTMLElement) || !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.state.isMobile || Core.state.isMobileUA) {\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 */\r\n\tstatic async onclick(e: Event): Promise<void> {\r\n\t\tif (!(e.target instanceof HTMLElement)) return;\r\n\r\n\t\tlet elOpener: HTMLElement | null | undefined;\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\r\n\t\t\tcase !!e.target.parentElement?.parentElement?.dataset.topPopup:\r\n\t\t\t\telOpener = e.target.parentElement?.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\nimport { genHasScroll } from '@/core/utils/scroll';\r\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\r\n\r\nlet decoratorBeforeOpen: (arg0: Popup) => void;\r\nlet decoratorAfterOpen: (arg0: Popup) => void;\r\nlet decoratorIsIgnoreOuterClick: (arg0: Event) => boolean;\r\nlet i18n = {\r\n\tClose: 'Close',\r\n};\r\n\r\ninterface Options {\r\n\tdecoratorBeforeOpen: typeof decoratorBeforeOpen,\r\n\tdecoratorAfterOpen: typeof decoratorAfterOpen,\r\n\tdecoratorIsIgnoreOuterClick: typeof decoratorIsIgnoreOuterClick,\r\n\ti18n: typeof i18n\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 */\r\n\tstatic onInitApp(options: Options): void {\r\n\t\tif (options) {\r\n\t\t\tdecoratorBeforeOpen = options.decoratorBeforeOpen;\r\n\t\t\tdecoratorAfterOpen = options.decoratorAfterOpen;\r\n\t\t\tdecoratorIsIgnoreOuterClick = options.decoratorIsIgnoreOuterClick;\r\n\t\t\ti18n = options.i18n;\r\n\t\t}\r\n\t}\r\n\r\n\t// вернуть объект компонента popup, привязанный к элементу\r\n\tstatic getPopup(elPopup: Element): Popup {\r\n\t\treturn DOM.storage(elPopup, 'Popup') as Popup;\r\n\t}\r\n\r\n\tstatic getAll(): Element[] {\r\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\r\n\t}\r\n\r\n\tstatic getAllVisible(): Element[] {\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: Element): Promise<Popup | undefined> {\r\n\t\tif (!(elOpener instanceof HTMLElement)) return;\r\n\r\n\t\tconst options: PopupOptions = {};\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 === 'true';\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 as PopupOptions['posBy'];\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 === 'true';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true';\r\n\t\t}\r\n\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true';\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: Element, options: PopupOptions): Promise<Popup> {\r\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\r\n\r\n\t\tconst { default: Popup } = await import('./popup');\r\n\r\n\t\tif (Core.$) {\r\n\t\t\tconst $elOpener = Core.$(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 new Popup(elOpener, options);\r\n\t}\r\n\r\n\tstatic close(elPopup: Element): void {\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: Element): void {\r\n\t\tconst popup = Worker.getPopup(elPopup);\r\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\r\n\t\t\tpopup.recalcPosition();\r\n\r\n\t\t\t// контроль за состоянием тени скролла\r\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\r\n\t\t\tgenHasScroll(popup.elPopupBody);\r\n\t\t}\r\n\t}\r\n\r\n\t// скролл к активному элементу списка\r\n\tstatic scrollToActive(elPopup: Element): void {\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\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\r\n\t\t}\r\n\r\n\t\tif (elUl instanceof HTMLElement) {\r\n\t\t\tconst heightWrapper = elUl.offsetHeight;\r\n\t\t\tif (top > heightWrapper) {\r\n\t\t\t\telUl.scrollTop = top - heightWrapper;\r\n\t\t\t} else {\r\n\t\t\t\telUl.scrollTop = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic decoratorBeforeOpen(popup: Popup): void {\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: Popup): void {\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: Event): boolean {\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 */\r\n\tstatic regVueComponent(id: string, vueConnector: any): void {\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 */\r\n\tstatic unregVueComponent(id: string): void {\r\n\t\tWorker.vueConnectors.delete(id);\r\n\t}\r\n\r\n}\r\n\r\nGlobalEvents.init();\r\n\r\nexport default Worker;\r\n"],"names":["e","_a","Worker","elPopup","elOpener","_b","_d","_c","_e","options","popup","elUl","elsLi","top","elLi","heightWrapper","id","vueConnector","GlobalEvents"],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sources":["../../src/components/popup/lib/worker.globalEvents.ts","../../src/components/popup/lib/worker.ts"],"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(): void {\n\t\t// автоматическое открытие при наведении мыши, событие глобальное, так как инициализация popup отложена\n\t\tdocument.addEventListener('mouseover', (e) => {\n\t\t\tif (!(e.target instanceof HTMLElement) || !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.state.isMobile || Core.state.isMobileUA) {\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 */\n\tstatic async onclick(e: Event): Promise<void> {\n\t\tif (!(e.target instanceof HTMLElement)) return;\n\n\t\tlet elOpener: HTMLElement | null | undefined;\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\n\t\t\tcase !!e.target.parentElement?.parentElement?.dataset.topPopup:\n\t\t\t\telOpener = e.target.parentElement?.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';\nimport { genHasScroll } from '@/core/utils/scroll';\nimport type { Popup, PopupOptions } from '@/components/popup/lib/popup';\n\nlet decoratorBeforeOpen: (arg0: Popup) => void;\nlet decoratorAfterOpen: (arg0: Popup) => void;\nlet decoratorIsIgnoreOuterClick: (arg0: Event) => boolean;\nlet i18n = {\n\tClose: 'Close',\n};\n\ninterface Options {\n\tdecoratorBeforeOpen: typeof decoratorBeforeOpen,\n\tdecoratorAfterOpen: typeof decoratorAfterOpen,\n\tdecoratorIsIgnoreOuterClick: typeof decoratorIsIgnoreOuterClick,\n\ti18n: typeof i18n\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 */\n\tstatic onInitApp(options: Options): void {\n\t\tif (options) {\n\t\t\tdecoratorBeforeOpen = options.decoratorBeforeOpen;\n\t\t\tdecoratorAfterOpen = options.decoratorAfterOpen;\n\t\t\tdecoratorIsIgnoreOuterClick = options.decoratorIsIgnoreOuterClick;\n\t\t\ti18n = options.i18n;\n\t\t}\n\t}\n\n\t// вернуть объект компонента popup, привязанный к элементу\n\tstatic getPopup(elPopup: Element): Popup {\n\t\treturn DOM.storage(elPopup, 'Popup') as Popup;\n\t}\n\n\tstatic getAll(): Element[] {\n\t\treturn DOM.querySelectorAllArray(document, '.top-popup-wrapper');\n\t}\n\n\tstatic getAllVisible(): Element[] {\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: Element): Promise<Popup | undefined> {\n\t\tif (!(elOpener instanceof HTMLElement)) return;\n\n\t\tconst options: PopupOptions = {};\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\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupNotch) {\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\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 as PopupOptions['posBy'];\n\t\t}\n\n\t\tif (elOpener.dataset.topPopupFront) {\n\t\t\toptions.frontSelector = elOpener.dataset.topPopupFront;\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupInvertX) {\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\n\t\t}\n\n\t\t// '1' - добалено для обратной совместимости\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\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: Element, options: PopupOptions): Promise<Popup> {\n\t\tif (elOpener instanceof HTMLElement) elOpener.dataset.topPopupOpened = 'opened';\n\n\t\tconst { default: Popup } = await import('./popup');\n\n\t\tif (Core.$) {\n\t\t\tconst $elOpener = Core.$(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 new Popup(elOpener, options);\n\t}\n\n\tstatic close(elPopup: Element): void {\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: Element): void {\n\t\tconst popup = Worker.getPopup(elPopup);\n\t\tif (popup && popup.elPopupBody instanceof HTMLElement) {\n\t\t\tpopup.recalcPosition();\n\n\t\t\t// контроль за состоянием тени скролла\n\t\t\t// вызывать после имзенения высоты скролла popup.elPopupBody\n\t\t\tgenHasScroll(popup.elPopupBody);\n\t\t}\n\t}\n\n\t// скролл к активному элементу списка\n\tstatic scrollToActive(elPopup: Element): void {\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\tif (elLi instanceof HTMLElement) top += elLi.offsetHeight;\n\t\t}\n\n\t\tif (elUl instanceof HTMLElement) {\n\t\t\tconst heightWrapper = elUl.offsetHeight;\n\t\t\tif (top > heightWrapper) {\n\t\t\t\telUl.scrollTop = top - heightWrapper;\n\t\t\t} else {\n\t\t\t\telUl.scrollTop = 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic decoratorBeforeOpen(popup: Popup): void {\n\t\tif (decoratorBeforeOpen) {\n\t\t\tdecoratorBeforeOpen(popup);\n\t\t}\n\t};\n\n\tstatic decoratorAfterOpen(popup: Popup): void {\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: Event): boolean {\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 */\n\tstatic regVueComponent(id: string, vueConnector: any): void {\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 */\n\tstatic unregVueComponent(id: string): void {\n\t\tWorker.vueConnectors.delete(id);\n\t}\n\n}\n\nGlobalEvents.init();\n\nexport default Worker;\n"],"names":["_a","Worker","elPopup","elOpener","_b","_d","_c","_e","options","popup","elUl","elsLi","top","elLi","heightWrapper","e","id","vueConnector","GlobalEvents"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- /**
2
- * Плагин requirejs для подгрузки css файлов
3
- */
4
- define({
5
- load: (name, req, onload) => {
6
- req(['../utils/css.amd'], ({ insertToPage }) => {
7
- let cssURL = req.toUrl(name);
8
-
9
- insertToPage([cssURL]).then(onload).catch(onload.error);
10
- });
11
- },
1
+ /**
2
+ * Плагин requirejs для подгрузки css файлов
3
+ */
4
+ define({
5
+ load: (name, req, onload) => {
6
+ req(['../utils/css.amd'], ({ insertToPage }) => {
7
+ let cssURL = req.toUrl(name);
8
+
9
+ insertToPage([cssURL]).then(onload).catch(onload.error);
10
+ });
11
+ },
12
12
  });
@@ -16,6 +16,10 @@ export interface Props {
16
16
  * Время в формате Y-m-d H:i:s, когда пользователь был онлайн
17
17
  */
18
18
  lastActiveTime?: string;
19
+ /**
20
+ * Объект со списком перевода Online и LastSeen
21
+ */
22
+ i18n?: I18n;
19
23
  }
20
24
  /**
21
25
  * Размеры аватара
@@ -27,3 +31,8 @@ export declare const sizes: {
27
31
  readonly 64: 64;
28
32
  };
29
33
  export type Size = typeof sizes[keyof typeof sizes];
34
+ type I18n = {
35
+ Online: string;
36
+ LastSeen: string;
37
+ };
38
+ export {};
@@ -24,6 +24,16 @@ declare const meta: {
24
24
  lastActiveTime: {
25
25
  type: import("vue").PropType<string>;
26
26
  };
27
+ i18n: {
28
+ type: import("vue").PropType<{
29
+ Online: string;
30
+ LastSeen: string;
31
+ }>;
32
+ default: () => {
33
+ Online: string;
34
+ LastSeen: string;
35
+ };
36
+ };
27
37
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
28
38
  image: {
29
39
  type: import("vue").PropType<string>;
@@ -42,8 +52,22 @@ declare const meta: {
42
52
  lastActiveTime: {
43
53
  type: import("vue").PropType<string>;
44
54
  };
55
+ i18n: {
56
+ type: import("vue").PropType<{
57
+ Online: string;
58
+ LastSeen: string;
59
+ }>;
60
+ default: () => {
61
+ Online: string;
62
+ LastSeen: string;
63
+ };
64
+ };
45
65
  }>>, {
46
66
  size: ComponentsConst.Size;
67
+ i18n: {
68
+ Online: string;
69
+ LastSeen: string;
70
+ };
47
71
  }, {}>;
48
72
  tags: string[];
49
73
  args: {
@@ -1,10 +1,22 @@
1
1
  import type { Props } from './avatar';
2
2
  declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
3
3
  size: number;
4
+ i18n: () => {
5
+ Online: string;
6
+ LastSeen: string;
7
+ };
4
8
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
5
9
  size: number;
10
+ i18n: () => {
11
+ Online: string;
12
+ LastSeen: string;
13
+ };
6
14
  }>>>, {
7
15
  size: import("./avatar").Size;
16
+ i18n: {
17
+ Online: string;
18
+ LastSeen: string;
19
+ };
8
20
  }, {}>;
9
21
  export default _default;
10
22
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
@@ -5,16 +5,29 @@ export interface Props extends TextareaProps {
5
5
  *
6
6
  * См. докуменатцию **Textarea**
7
7
  */
8
- modelValue: string;
8
+ defaultValue?: string;
9
9
  title?: string;
10
10
  cancelText?: string;
11
11
  submitText?: string;
12
+ closeText?: string;
13
+ /**
14
+ * Установить фокус на поле ввода при его появлении
15
+ */
16
+ isFocused?: boolean;
17
+ /**
18
+ * Показывать кнопку **Close** пока ничего не введено или не изменено
19
+ */
20
+ forceShowCloseBtn?: boolean;
12
21
  /**
13
22
  * Прикрепить к клавиатуре, прикрепляет форму к нижней части экрана
14
23
  */
15
24
  attachToKeyboard?: boolean;
16
25
  }
17
26
  export interface Emits {
18
- (e: 'update:modelValue', value: string): void;
19
- (e: 'cancel'): void;
27
+ (e: 'submit', value: string): void;
28
+ (e: 'close'): void;
29
+ /**
30
+ * Только если **attachToKeyboard = true**
31
+ */
32
+ (e: 'clickOnTitle'): void;
20
33
  }