@topvisor/ui 0.9.27-dev → 0.9.29-0

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 (137) hide show
  1. package/.chunks/datepicker-BWFx68Rc.amd.js +247 -0
  2. package/.chunks/datepicker-BWFx68Rc.amd.js.map +1 -0
  3. package/.chunks/datepicker-BfPBssvK.es.js +289 -0
  4. package/.chunks/datepicker-BfPBssvK.es.js.map +1 -0
  5. package/.chunks/{forms-1ZAO_mt8.es.js → forms-BScWgSrn.es.js} +116 -124
  6. package/.chunks/forms-BScWgSrn.es.js.map +1 -0
  7. package/.chunks/forms-DBYpY73Z.amd.js +3 -0
  8. package/.chunks/forms-DBYpY73Z.amd.js.map +1 -0
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-DsAW8MMm.es.js → listItem.vue_vue_type_script_setup_true_lang-BzEj4QFY.es.js} +2 -2
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-BzEj4QFY.es.js.map +1 -0
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-HVMrwfs6.amd.js → listItem.vue_vue_type_script_setup_true_lang-D-5F2CnX.amd.js} +2 -2
  12. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-D-5F2CnX.amd.js.map +1 -0
  13. package/.chunks/{menu-C-SkDk9B.amd.js → menu-BWyv8Yuu.amd.js} +2 -2
  14. package/.chunks/menu-BWyv8Yuu.amd.js.map +1 -0
  15. package/.chunks/{menu-CBKYqQZZ.es.js → menu-DbC1zr5j.es.js} +2 -2
  16. package/.chunks/menu-DbC1zr5j.es.js.map +1 -0
  17. package/.chunks/{popup-D0tRWEp2.es.js → popup-B4tgc-1X.es.js} +438 -431
  18. package/.chunks/popup-B4tgc-1X.es.js.map +1 -0
  19. package/.chunks/{popup-7Bt5JEDW.amd.js → popup-DPzeQf9t.amd.js} +393 -386
  20. package/.chunks/popup-DPzeQf9t.amd.js.map +1 -0
  21. package/.chunks/store-Bl79G7T_.amd.js.map +1 -1
  22. package/.chunks/store-PoMCiuBr.es.js.map +1 -1
  23. package/.chunks/{widgetInput-CmVe9G3z.es.js → widgetInput-DCXTtndM.es.js} +2 -2
  24. package/.chunks/widgetInput-DCXTtndM.es.js.map +1 -0
  25. package/.chunks/{widgetInput-CeUAGCKd.amd.js → widgetInput-L8yGX3-T.amd.js} +2 -2
  26. package/.chunks/widgetInput-L8yGX3-T.amd.js.map +1 -0
  27. package/README.md +86 -86
  28. package/assets/core.css +1 -1
  29. package/assets/dark.css +1 -1
  30. package/assets/forms.css +1 -1
  31. package/assets/formsExt.css +1 -1
  32. package/assets/light.css +1 -1
  33. package/assets/menu.css +1 -1
  34. package/assets/tabs.css +1 -1
  35. package/assets/tabsView.css +1 -1
  36. package/assets/widgetInput.css +1 -1
  37. package/core/core.amd.js +1 -1
  38. package/core/core.js +1 -1
  39. package/forms/forms.amd.js +1 -1
  40. package/forms/forms.js +1 -1
  41. package/forms/helpers.amd.js.map +1 -1
  42. package/forms/helpers.js.map +1 -1
  43. package/formsExt/formsExt.amd.js +1 -1
  44. package/formsExt/formsExt.amd.js.map +1 -1
  45. package/formsExt/formsExt.js +53 -52
  46. package/formsExt/formsExt.js.map +1 -1
  47. package/icomoon/Read Me.txt +7 -7
  48. package/icomoon/demo-files/demo.css +161 -161
  49. package/icomoon/demo-files/demo.js +30 -30
  50. package/icomoon/demo.html +3239 -3239
  51. package/icomoon/fonts/Topvisor-2.svg +253 -253
  52. package/icomoon/style.css +710 -710
  53. package/package.json +20 -20
  54. package/popup/popup.amd.js +1 -1
  55. package/popup/popup.js +2 -2
  56. package/popup/worker.amd.js +1 -1
  57. package/popup/worker.amd.js.map +1 -1
  58. package/popup/worker.js +2 -2
  59. package/popup/worker.js.map +1 -1
  60. package/project/project.amd.js +1 -1
  61. package/project/project.amd.js.map +1 -1
  62. package/project/project.js +3 -3
  63. package/project/project.js.map +1 -1
  64. package/require/css.amd.js +11 -11
  65. package/src/core/core/core.d.ts +0 -1
  66. package/src/core/core/page.d.ts +0 -4
  67. package/src/core/core/state.d.ts +0 -4
  68. package/src/core/utils/common.d.ts +21 -0
  69. package/src/core/utils/string.d.ts +0 -4
  70. package/tabs/tabs.amd.js +1 -1
  71. package/tabs/tabs.js +1 -1
  72. package/tabsView/tabsView.amd.js +1 -1
  73. package/tabsView/tabsView.amd.js.map +1 -1
  74. package/tabsView/tabsView.js +2 -2
  75. package/tabsView/tabsView.js.map +1 -1
  76. package/utils/check.amd.js.map +1 -1
  77. package/utils/check.js.map +1 -1
  78. package/utils/common.amd.js +2 -0
  79. package/utils/common.amd.js.map +1 -0
  80. package/utils/common.d.ts +1 -0
  81. package/utils/common.js +21 -0
  82. package/utils/common.js.map +1 -0
  83. package/utils/css.amd.js.map +1 -1
  84. package/utils/css.js.map +1 -1
  85. package/utils/date.amd.js +1 -1
  86. package/utils/date.js +1 -1
  87. package/utils/device.amd.js +1 -1
  88. package/utils/device.js +1 -1
  89. package/utils/dom.amd.js.map +1 -1
  90. package/utils/dom.js.map +1 -1
  91. package/utils/keyboard.amd.js.map +1 -1
  92. package/utils/keyboard.js.map +1 -1
  93. package/utils/price.amd.js.map +1 -1
  94. package/utils/price.js.map +1 -1
  95. package/utils/route.amd.js.map +1 -1
  96. package/utils/route.js.map +1 -1
  97. package/utils/scroll.amd.js +1 -1
  98. package/utils/scroll.amd.js.map +1 -1
  99. package/utils/scroll.js +1 -1
  100. package/utils/scroll.js.map +1 -1
  101. package/utils/string.amd.js +1 -1
  102. package/utils/string.amd.js.map +1 -1
  103. package/utils/string.js +13 -20
  104. package/utils/string.js.map +1 -1
  105. package/utils/system.amd.js.map +1 -1
  106. package/utils/system.js.map +1 -1
  107. package/utils/url.amd.js.map +1 -1
  108. package/utils/url.js.map +1 -1
  109. package/utils/window.amd.js +1 -1
  110. package/utils/window.js +1 -1
  111. package/.chunks/datepicker-34kJtztn.amd.js +0 -234
  112. package/.chunks/datepicker-34kJtztn.amd.js.map +0 -1
  113. package/.chunks/datepicker-DwZTG-k0.es.js +0 -276
  114. package/.chunks/datepicker-DwZTG-k0.es.js.map +0 -1
  115. package/.chunks/forms-1ZAO_mt8.es.js.map +0 -1
  116. package/.chunks/forms-D_IeAEJM.amd.js +0 -3
  117. package/.chunks/forms-D_IeAEJM.amd.js.map +0 -1
  118. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-DsAW8MMm.es.js.map +0 -1
  119. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-HVMrwfs6.amd.js.map +0 -1
  120. package/.chunks/menu-C-SkDk9B.amd.js.map +0 -1
  121. package/.chunks/menu-CBKYqQZZ.es.js.map +0 -1
  122. package/.chunks/popup-7Bt5JEDW.amd.js.map +0 -1
  123. package/.chunks/popup-D0tRWEp2.es.js.map +0 -1
  124. package/.chunks/widgetInput-CeUAGCKd.amd.js.map +0 -1
  125. package/.chunks/widgetInput-CmVe9G3z.es.js.map +0 -1
  126. package/src/core/utils/image.d.ts +0 -6
  127. package/src/core/utils/number.d.ts +0 -7
  128. package/utils/image.amd.js +0 -2
  129. package/utils/image.amd.js.map +0 -1
  130. package/utils/image.d.ts +0 -1
  131. package/utils/image.js +0 -8
  132. package/utils/image.js.map +0 -1
  133. package/utils/number.amd.js +0 -2
  134. package/utils/number.amd.js.map +0 -1
  135. package/utils/number.d.ts +0 -1
  136. package/utils/number.js +0 -9
  137. package/utils/number.js.map +0 -1
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
- {
2
- "name": "@topvisor/ui",
3
- "private": false,
4
- "version": "0.9.27-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.31"
19
- }
20
- }
1
+ {
2
+ "name": "@topvisor/ui",
3
+ "private": false,
4
+ "version": "0.9.29-0",
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.31"
19
+ }
20
+ }
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-HVMrwfs6.amd","../.chunks/widgetInput-CeUAGCKd.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-D-5F2CnX.amd","../.chunks/widgetInput-L8yGX3-T.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-DsAW8MMm.es.js";
2
- import { P as s } from "../.chunks/widgetInput-CmVe9G3z.es.js";
1
+ import { _ as e, b as t, a } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-BzEj4QFY.es.js";
2
+ import { P as s } from "../.chunks/widgetInput-DCXTtndM.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-D_IeAEJM.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-7Bt5JEDW.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-DBYpY73Z.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-DPzeQf9t.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';\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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"}
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\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\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\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\r\n\t\t}\r\n\r\n\t\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\r\n\t\t}\r\n\r\n\t\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\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":"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"}
package/popup/worker.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as Core, E as Events } from "../.chunks/forms-1ZAO_mt8.es.js";
1
+ import { C as Core, E as Events } from "../.chunks/forms-BScWgSrn.es.js";
2
2
  import DOM from "../utils/dom.js";
3
3
  import { genHasScroll } from "../utils/scroll.js";
4
4
  class WorkerEvents {
@@ -74,7 +74,7 @@ class Worker {
74
74
  */
75
75
  static async open(elOpener, options) {
76
76
  elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = "opened");
77
- const { default: Popup } = await import("../.chunks/popup-D0tRWEp2.es.js");
77
+ const { default: Popup } = await import("../.chunks/popup-B4tgc-1X.es.js");
78
78
  if (Core.$) {
79
79
  const $elOpener = Core.$(elOpener);
80
80
  if ($elOpener.data("aftershow")) {
@@ -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';\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":";;;AAOA,MAAM,aAAa;AAAA,EAClB,OAAO,OAAa;AAEV,aAAA,iBAAiB,aAAa,CAAC,MAAM;;AACzC,MAAA,EAAE,EAAE,kBAAkB,gBAAgB,GAACA,IAAA,EAAE,OAAO,YAAT,QAAAA,EAAkB,wBAI7D,EAAE,OAAO;IAAM,CACf,GAGQ,SAAA,iBAAiB,UAAU,MAAM;AACzC,MAAI,KAAK,MAAM,YAAY,KAAK,MAAM,cAItCC,SAAO,OAAS,EAAA,QAAQ,OAAWA,SAAO,MAAMC,CAAO,CAAC;AAAA,IAAA,CACxD,GAED,OAAO,WAAW,CAAK,MAAA;AAGtB,MAAI,KAAK,MAAM,YAAY,EAAE,SAAS,aACrCD,SAAO,OAAS,EAAA,QAAQ,OAAWA,SAAO,MAAMC,CAAO,CAAC;AAAA,IACzD,CACA,GAEQ,SAAA,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,QAAQ,GAAyB;;AACzC,QAAA,EAAE,EAAE,kBAAkB,aAAc;AAEpC,QAAAC;AAEJ,YAAQ,IAAM;AAAA,MACb,KAAK,CAAC,GAACH,IAAA,EAAE,OAAO,YAAT,QAAAA,EAAkB;AACxB,QAAAG,IAAW,EAAE;AAEb;AAAA,MAED,KAAK,CAAC,GAACC,IAAA,EAAE,OAAO,kBAAT,QAAAA,EAAwB,QAAQ;AACtC,QAAAD,IAAW,EAAE,OAAO;AAEpB;AAAA,MAED,KAAK,CAAC,GAACE,KAAAC,IAAA,EAAE,OAAO,kBAAT,gBAAAA,EAAwB,kBAAxB,QAAAD,EAAuC,QAAQ;AAC1C,QAAAF,KAAAI,IAAA,EAAE,OAAO,kBAAT,gBAAAA,EAAwB;AAEnC;AAAA,IACF;AAEA,IAAKJ,MAIDA,EAAS,QAAQ,oBAKjBA,EAAS,QAAQ,mBAIrB,EAAE,eAAe,GAEX,MAAAF,SAAO,aAAaE,CAAQ;AAAA,EACnC;AACD;AC3EA,IAAI,qBACA,oBACA,6BACA,OAAO;AAAA,EACV,OAAO;AACR;AASA,MAAM,OAAO;AAAA;AAAA,EAGZ,OAAO,UAAU;AAAA,EAEjB,OAAO,gBAAgB,oBAAI;;;;;EAM3B,OAAO,UAAUK,GAAwB;AACxC,IAAIA,MACH,sBAAsBA,EAAQ,qBAC9B,qBAAqBA,EAAQ,oBAC7B,8BAA8BA,EAAQ,6BACtC,OAAOA,EAAQ;AAAA,EAEjB;AAAA;AAAA,EAGA,OAAO,SAASN,GAAyB;AACjC,WAAA,IAAI,QAAQA,GAAS,OAAO;AAAA,EACpC;AAAA,EAEA,OAAO,SAAoB;AACnB,WAAA,IAAI,sBAAsB,UAAU,oBAAoB;AAAA,EAChE;AAAA,EAEA,OAAO,gBAA2B;AAC1B,WAAA,IAAI,wBAAwB,UAAU,oBAAoB;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,aAAaC,GAA+C;AACpE,QAAA,EAAEA,aAAoB,aAAc;AAExC,UAAMK,IAAwB,CAAA;AAE9BA,WAAAA,EAAQ,QAAQL,EAAS,QAAQ,UAE7BA,EAAS,QAAQ,cACpBK,EAAQ,IAAI,SAASL,EAAS,QAAQ,SAAS,IAI5CA,EAAS,QAAQ,kBACpBK,EAAQ,QAAQL,EAAS,QAAQ,kBAAkB,UAAUA,EAAS,QAAQ,kBAAkB,MAG7FA,EAAS,QAAQ,kBACpBK,EAAQ,QAAQL,EAAS,QAAQ,gBAG9BA,EAAS,QAAQ,kBACpBK,EAAQ,QAAQL,EAAS,QAAQ,gBAG9BA,EAAS,QAAQ,kBACpBK,EAAQ,gBAAgBL,EAAS,QAAQ,gBAItCA,EAAS,QAAQ,oBACpBK,EAAQ,UAAUL,EAAS,QAAQ,oBAAoB,UAAUA,EAAS,QAAQ,oBAAoB,MAInGA,EAAS,QAAQ,wBACpBK,EAAQ,cAAcL,EAAS,QAAQ,wBAAwB,UAAUA,EAAS,QAAQ,wBAAwB,MAI/GA,EAAS,QAAQ,wBACpBK,EAAQ,cAAcL,EAAS,QAAQ,wBAAwB,UAAUA,EAAS,QAAQ,wBAAwB,MAG5G,MAAM,OAAO,KAAKA,GAAUK,CAAO;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,KAAK,UAAmB,SAAuC;AAC3E,IAAI,oBAAoB,gBAAsB,SAAA,QAAQ,iBAAiB;AAEvE,UAAM,EAAE,SAAS,MAAU,IAAA,MAAM,OAAO,iCAAS;AAEjD,QAAI,KAAK,GAAG;AACL,YAAA,YAAY,KAAK,EAAE,QAAQ;AAG7B,UAAA,UAAU,KAAK,WAAW,GAAG;AAC5B,YAAA,YAAY,UAAU,KAAK,WAAW;AACtC,QAAA,OAAQ,aAAc,aACzB,YAAY,KAAK,UAAU,QAAQ,OAAO,EAAE,CAAC,IAGpC,UAAA,IAAI,4BAA4B,SAAS;AAAA,MACpD;AAGI,UAAA,UAAU,KAAK,YAAY,GAAG;AAC7B,YAAA,aAAa,UAAU,KAAK,YAAY;AACxC,QAAA,OAAQ,cAAe,aAC1B,aAAa,KAAK,WAAW,QAAQ,OAAO,EAAE,CAAC,IAGtC,UAAA,IAAI,6BAA6B,UAAU;AAAA,MACtD;AAAA,IACD;AAEQ,mBAAA,eAAe,KAAK,MAAM,UAClC,QAAQ,OAAO,MAER,IAAI,MAAM,UAAU,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,MAAMN,GAAwB;AAC9B,UAAAO,IAAQ,OAAO,SAASP,CAAO;AACrC,IAAIO,KACHA,EAAM,MAAM;AAAA,EAEd;AAAA,EAEA,OAAO,eAAeP,GAAwB;AACvC,UAAAO,IAAQ,OAAO,SAASP,CAAO;AACjC,IAAAO,KAASA,EAAM,uBAAuB,gBACzCA,EAAM,eAAe,GAIrB,aAAaA,EAAM,WAAW;AAAA,EAEhC;AAAA;AAAA,EAGA,OAAO,eAAeP,GAAwB;AAE7C,QAAI,CADiB,IAAI,qBAAqBA,GAAS,yCAAyC;AAE/F;AAGK,UAAAQ,IAAOR,EAAQ,cAAc,sBAAsB,GACnDS,IAAQ,IAAI,wBAAwBT,GAAS,2BAA2B;AAEtE,IAAAA,EAAA,UAAU,IAAI,8BAA8B,GACpD,WAAW,MAAMA,EAAQ,UAAU,OAAO,8BAA8B,GAAG,GAAG;AAE9E,QAAIU,IAAM;AACV,eAAWC,KAAQF,GAAO;AACrB,UAAAE,EAAK,cAAc,sBAAsB;AAC5C;AAGG,MAAAA,aAAgB,gBAAaD,KAAOC,EAAK;AAAA,IAC9C;AAEA,QAAIH,aAAgB,aAAa;AAChC,YAAMI,IAAgBJ,EAAK;AAC3B,MAAIE,IAAME,IACTJ,EAAK,YAAYE,IAAME,IAEvBJ,EAAK,YAAY;AAAA,IAEnB;AAAA,EACD;AAAA,EAEA,OAAO,oBAAoBD,GAAoB;AAC9C,IAAI,uBACH,oBAAoBA,CAAK;AAAA,EAE3B;AAAA,EAEA,OAAO,mBAAmBA,GAAoB;AAC7C,IAAI,sBACH,mBAAmBA,CAAK;AAAA,EAE1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,4BAA4BM,GAAmB;AACrD,WAAI,8BACI,4BAA4BA,CAAC,IAG9B;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,gBAAgBC,GAAYC,GAAyB;AAC3D,QAAI,OAAO,cAAc,IAAID,CAAE;AAC9B,YAAM,4CAA4CA;AAG5C,WAAA,cAAc,IAAIA,GAAIC,CAAY;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,kBAAkBD,GAAkB;AACnC,WAAA,cAAc,OAAOA,CAAE;AAAA,EAC/B;AAED;AAEAE,aAAa,KAAK;AAElB,MAAA,WAAe;"}
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\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupNotch) {\r\n\t\t\toptions.notch = elOpener.dataset.topPopupNotch === 'true' || elOpener.dataset.topPopupNotch === '1';\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\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupInvertX) {\r\n\t\t\toptions.invertX = elOpener.dataset.topPopupInvertX === 'true' || elOpener.dataset.topPopupInvertX === '1';\r\n\t\t}\r\n\r\n\t\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupOpenByHover) {\r\n\t\t\toptions.openByHover = elOpener.dataset.topPopupOpenByHover === 'true' || elOpener.dataset.topPopupOpenByHover === '1';\r\n\t\t}\r\n\r\n\t\t// '1' - добалено для обратной совместимости\r\n\t\tif (elOpener.dataset.topPopupUseOriginal) {\r\n\t\t\toptions.useOriginal = elOpener.dataset.topPopupUseOriginal === 'true' || elOpener.dataset.topPopupUseOriginal === '1';\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":["_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,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-D_IeAEJM.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-HVMrwfs6.amd","../.chunks/menu-C-SkDk9B.amd","../require/css.amd!../assets/project.css"],function(y,r,e,n,a,m){"use strict";if(typeof e>"u")var e=window.Vue;const p={key:0,class:"top-selectorCompetitors"},d={class:"top-ellipsis"},f=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(i){const C=i,o=e.useModel(i,"modelValue"),_=e.computed(()=>{if(C.showSelectAllItem)return{icon:"",title:"Выбрать все",value:"all",content:""}});return(s,u)=>s.items.length>1?(e.openBlock(),e.createElementBlock("div",p,[e.unref(n.Core).state.isMobile?(e.openBlock(),e.createBlock(a._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(n.Button,{class:"top-selectorCompetitors_opener top-select_arrow",color:"theme",icon:""},{default:e.withCtx(()=>{var t;return[e.createTextVNode(e.toDisplayString((t=s.items.find(c=>{var l;return c.value===((l=o.value)==null?void 0:l[0])}))==null?void 0:t.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,(t,c)=>{var l;return e.openBlock(),e.createBlock(a._sfc_main$2,{class:e.normalizeClass({"top-ellipsis":!0,"top-active":(l=o.value)==null?void 0:l.includes(t.value)}),"data-top-icon2":c===0?"":"",onClick:()=>o.value=[t.value]},{default:e.withCtx(()=>[e.createElementVNode("span",d,e.toDisplayString(t.content),1)]),_:2},1032,["class","data-top-icon2","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(m.Menu,{key:1,modelValue:o.value,"onUpdate:modelValue":u[0]||(u[0]=t=>o.value=t),items:s.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:_.value},null,8,["modelValue","items","selectAllItem"]))])):e.createCommentVNode("",!0)}}),k={$style:{"top-selectorCompetitors_opener":"top-selectorCompetitors_opener","top-button":"top-button"}},v=n._export_sfc(f,[["__cssModules",k]]);r.SelectorCompetitors=v,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../.chunks/forms-DBYpY73Z.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-D-5F2CnX.amd","../.chunks/menu-BWyv8Yuu.amd","../require/css.amd!../assets/project.css"],function(y,r,e,n,a,m){"use strict";if(typeof e>"u")var e=window.Vue;const p={key:0,class:"top-selectorCompetitors"},d={class:"top-ellipsis"},f=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(i){const C=i,o=e.useModel(i,"modelValue"),_=e.computed(()=>{if(C.showSelectAllItem)return{icon:"",title:"Выбрать все",value:"all",content:""}});return(s,u)=>s.items.length>1?(e.openBlock(),e.createElementBlock("div",p,[e.unref(n.Core).state.isMobile?(e.openBlock(),e.createBlock(a._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(n.Button,{class:"top-selectorCompetitors_opener top-select_arrow",color:"theme",icon:""},{default:e.withCtx(()=>{var t;return[e.createTextVNode(e.toDisplayString((t=s.items.find(c=>{var l;return c.value===((l=o.value)==null?void 0:l[0])}))==null?void 0:t.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,(t,c)=>{var l;return e.openBlock(),e.createBlock(a._sfc_main$2,{class:e.normalizeClass({"top-ellipsis":!0,"top-active":(l=o.value)==null?void 0:l.includes(t.value)}),"data-top-icon2":c===0?"":"",onClick:()=>o.value=[t.value]},{default:e.withCtx(()=>[e.createElementVNode("span",d,e.toDisplayString(t.content),1)]),_:2},1032,["class","data-top-icon2","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(m.Menu,{key:1,modelValue:o.value,"onUpdate:modelValue":u[0]||(u[0]=t=>o.value=t),items:s.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:_.value},null,8,["modelValue","items","selectAllItem"]))])):e.createCommentVNode("",!0)}}),k={$style:{"top-selectorCompetitors_opener":"top-selectorCompetitors_opener","top-button":"top-button"}},v=n._export_sfc(f,[["__cssModules",k]]);r.SelectorCompetitors=v,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=project.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.amd.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props } from './selectorCompetitors';\nimport Core from '@/core/core/core';\nimport Button from '@/components/forms/button/button.vue';\nimport Popup from '@/components/popup/popup/popup.vue';\nimport ListItem from '@/components/popup/popup/listItem.vue';\nimport Menu from '@/components/formsExt/menu/menu.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tshowSelectAllItem: true,\n});\nconst model = defineModel<Props['modelValue']>();\n\nconst selectAllItem = computed(() => {\n\tif (props.showSelectAllItem) {\n\t\treturn {\n\t\t\ticon: '',\n\t\t\ttitle: 'Выбрать все', // ### TODO: сделать перевод\n\t\t\tvalue: 'all',\n\t\t\tcontent: '',\n\t\t};\n\t}\n});\n</script>\n\n<template>\n\t<div\n\t\tv-if=\"items.length > 1\"\n\t\tclass=\"top-selectorCompetitors\"\n\t>\n\t\t<Popup v-if=\"Core.state.isMobile\">\n\t\t\t<template #opener>\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener top-select_arrow\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t>\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\n\t\t\t\t</Button>\n\t\t\t</template>\n\n\t\t\t<template #contentList>\n\t\t\t\t<ListItem\n\t\t\t\t\tv-for=\"(item, index) in items\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'top-ellipsis': true,\n\t\t\t\t\t\t\t'top-active': model?.includes(item.value)\n\t\t\t\t\t\t}\"\n\t\t\t\t\t:data-top-icon2=\"index === 0 ? '' : ''\"\n\t\t\t\t\t@click=\"() => model = [item.value]\"\n\t\t\t\t>\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t</span>\n\t\t\t\t</ListItem>\n\t\t\t</template>\n\t\t</Popup>\n\t\t<Menu\n\t\t\tv-else\n\t\t\tv-model=\"model\"\n\t\t\t:items=\"items\"\n\t\t\t:isMultiple=\"true\"\n\t\t\tstyling=\"bar\"\n\t\t\t:canBeEmptyMultiple=\"false\"\n\t\t\t:selectAllItem=\"selectAllItem\"\n\t\t/>\n\t</div>\n</template>\n\n<style module>\n.top-selectorCompetitors_opener.top-button {\n\twidth: 100%;\n}\n</style>"],"names":["props","__props","selectAllItem","vue"],"mappings":"ojBASA,MAAAA,EAAAC,+BAKAC,EAAAC,EAAA,SAAA,IAAA,CACC,GAAAH,EAAA,kBACC,MAAA,oDAIU,CAEX,CAAA"}
1
+ {"version":3,"file":"project.amd.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './selectorCompetitors';\r\nimport Core from '@/core/core/core';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport Popup from '@/components/popup/popup/popup.vue';\r\nimport ListItem from '@/components/popup/popup/listItem.vue';\r\nimport Menu from '@/components/formsExt/menu/menu.vue';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowSelectAllItem: true,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst selectAllItem = computed(() => {\r\n\tif (props.showSelectAllItem) {\r\n\t\treturn {\r\n\t\t\ticon: '',\r\n\t\t\ttitle: 'Выбрать все', // ### TODO: сделать перевод\r\n\t\t\tvalue: 'all',\r\n\t\t\tcontent: '',\r\n\t\t};\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tv-if=\"items.length > 1\"\r\n\t\tclass=\"top-selectorCompetitors\"\r\n\t>\r\n\t\t<Popup v-if=\"Core.state.isMobile\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener top-select_arrow\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\r\n\t\t\t\t</Button>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<ListItem\r\n\t\t\t\t\tv-for=\"(item, index) in items\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t\t'top-ellipsis': true,\r\n\t\t\t\t\t\t\t'top-active': model?.includes(item.value)\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon2=\"index === 0 ? '' : ''\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\r\n\t\t\t\t\t\t\t{{ item.content }}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</template>\r\n\t\t</Popup>\r\n\t\t<Menu\r\n\t\t\tv-else\r\n\t\t\tv-model=\"model\"\r\n\t\t\t:items=\"items\"\r\n\t\t\t:isMultiple=\"true\"\r\n\t\t\tstyling=\"bar\"\r\n\t\t\t:canBeEmptyMultiple=\"false\"\r\n\t\t\t:selectAllItem=\"selectAllItem\"\r\n\t\t/>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-selectorCompetitors_opener.top-button {\r\n\twidth: 100%;\r\n}\r\n</style>"],"names":["props","__props","selectAllItem","vue"],"mappings":"ojBASA,MAAAA,EAAAC,+BAKAC,EAAAC,EAAA,SAAA,IAAA,CACC,GAAAH,EAAA,kBACC,MAAA,oDAIU,CAEX,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import { insertToPage as f } from "../utils/css.js";
2
2
  import { defineComponent as C, mergeModels as v, useModel as V, computed as M, openBlock as s, createElementBlock as c, unref as y, createBlock as i, withCtx as r, createVNode as k, createTextVNode as g, toDisplayString as p, Fragment as B, renderList as h, normalizeClass as I, createElementVNode as S, createCommentVNode as b } from "vue";
3
- import { C as w, B as A, a as N } from "../.chunks/forms-1ZAO_mt8.es.js";
4
- import { _ as E, b as T } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-DsAW8MMm.es.js";
5
- import { M as $ } from "../.chunks/menu-CBKYqQZZ.es.js";
3
+ import { C as w, B as A, a as N } from "../.chunks/forms-BScWgSrn.es.js";
4
+ import { _ as E, b as T } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-BzEj4QFY.es.js";
5
+ import { M as $ } from "../.chunks/menu-DbC1zr5j.es.js";
6
6
  const _ = ["../assets/project.css"].map((l) => import.meta.resolve(l));
7
7
  await f(_);
8
8
  const L = {
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props } from './selectorCompetitors';\nimport Core from '@/core/core/core';\nimport Button from '@/components/forms/button/button.vue';\nimport Popup from '@/components/popup/popup/popup.vue';\nimport ListItem from '@/components/popup/popup/listItem.vue';\nimport Menu from '@/components/formsExt/menu/menu.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tshowSelectAllItem: true,\n});\nconst model = defineModel<Props['modelValue']>();\n\nconst selectAllItem = computed(() => {\n\tif (props.showSelectAllItem) {\n\t\treturn {\n\t\t\ticon: '',\n\t\t\ttitle: 'Выбрать все', // ### TODO: сделать перевод\n\t\t\tvalue: 'all',\n\t\t\tcontent: '',\n\t\t};\n\t}\n});\n</script>\n\n<template>\n\t<div\n\t\tv-if=\"items.length > 1\"\n\t\tclass=\"top-selectorCompetitors\"\n\t>\n\t\t<Popup v-if=\"Core.state.isMobile\">\n\t\t\t<template #opener>\n\t\t\t\t<Button\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener top-select_arrow\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t>\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\n\t\t\t\t</Button>\n\t\t\t</template>\n\n\t\t\t<template #contentList>\n\t\t\t\t<ListItem\n\t\t\t\t\tv-for=\"(item, index) in items\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'top-ellipsis': true,\n\t\t\t\t\t\t\t'top-active': model?.includes(item.value)\n\t\t\t\t\t\t}\"\n\t\t\t\t\t:data-top-icon2=\"index === 0 ? '' : ''\"\n\t\t\t\t\t@click=\"() => model = [item.value]\"\n\t\t\t\t>\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ item.content }}\n\t\t\t\t\t\t</span>\n\t\t\t\t</ListItem>\n\t\t\t</template>\n\t\t</Popup>\n\t\t<Menu\n\t\t\tv-else\n\t\t\tv-model=\"model\"\n\t\t\t:items=\"items\"\n\t\t\t:isMultiple=\"true\"\n\t\t\tstyling=\"bar\"\n\t\t\t:canBeEmptyMultiple=\"false\"\n\t\t\t:selectAllItem=\"selectAllItem\"\n\t\t/>\n\t</div>\n</template>\n\n<style module>\n.top-selectorCompetitors_opener.top-button {\n\twidth: 100%;\n}\n</style>"],"names":["props","__props","model","useModel","selectAllItem","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AASA,UAAAA,IAAAC,GAGAC,IAAAC,EAAAF,GAAA,YAAA,GAEAG,IAAAC,EAAA,MAAA;AACC,UAAAL,EAAA;AACC,eAAA;AAAA,UAAO,MAAA;AAAA,UACA,OAAA;AAAA;AAAA,UACC,OAAA;AAAA,UACA,SAAA;AAAA,QACE;AAAA,IAEX,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"project.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './selectorCompetitors';\r\nimport Core from '@/core/core/core';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport Popup from '@/components/popup/popup/popup.vue';\r\nimport ListItem from '@/components/popup/popup/listItem.vue';\r\nimport Menu from '@/components/formsExt/menu/menu.vue';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tshowSelectAllItem: true,\r\n});\r\nconst model = defineModel<Props['modelValue']>();\r\n\r\nconst selectAllItem = computed(() => {\r\n\tif (props.showSelectAllItem) {\r\n\t\treturn {\r\n\t\t\ticon: '',\r\n\t\t\ttitle: 'Выбрать все', // ### TODO: сделать перевод\r\n\t\t\tvalue: 'all',\r\n\t\t\tcontent: '',\r\n\t\t};\r\n\t}\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\tv-if=\"items.length > 1\"\r\n\t\tclass=\"top-selectorCompetitors\"\r\n\t>\r\n\t\t<Popup v-if=\"Core.state.isMobile\">\r\n\t\t\t<template #opener>\r\n\t\t\t\t<Button\r\n\t\t\t\t\tclass=\"top-selectorCompetitors_opener top-select_arrow\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ items.find((item) => item.value === model?.[0])?.content }}\r\n\t\t\t\t</Button>\r\n\t\t\t</template>\r\n\r\n\t\t\t<template #contentList>\r\n\t\t\t\t<ListItem\r\n\t\t\t\t\tv-for=\"(item, index) in items\"\r\n\t\t\t\t\t:class=\"{\r\n\t\t\t\t\t\t\t'top-ellipsis': true,\r\n\t\t\t\t\t\t\t'top-active': model?.includes(item.value)\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon2=\"index === 0 ? '' : ''\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t\t<span class=\"top-ellipsis\">\r\n\t\t\t\t\t\t\t{{ item.content }}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t</ListItem>\r\n\t\t\t</template>\r\n\t\t</Popup>\r\n\t\t<Menu\r\n\t\t\tv-else\r\n\t\t\tv-model=\"model\"\r\n\t\t\t:items=\"items\"\r\n\t\t\t:isMultiple=\"true\"\r\n\t\t\tstyling=\"bar\"\r\n\t\t\t:canBeEmptyMultiple=\"false\"\r\n\t\t\t:selectAllItem=\"selectAllItem\"\r\n\t\t/>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n.top-selectorCompetitors_opener.top-button {\r\n\twidth: 100%;\r\n}\r\n</style>"],"names":["props","__props","model","useModel","selectAllItem","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AASA,UAAAA,IAAAC,GAGAC,IAAAC,EAAAF,GAAA,YAAA,GAEAG,IAAAC,EAAA,MAAA;AACC,UAAAL,EAAA;AACC,eAAA;AAAA,UAAO,MAAA;AAAA,UACA,OAAA;AAAA;AAAA,UACC,OAAA;AAAA,UACA,SAAA;AAAA,QACE;AAAA,IAEX,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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
  });
@@ -24,7 +24,6 @@ declare class Core {
24
24
  size: number;
25
25
  dateFormat: string;
26
26
  gmt: string | undefined;
27
- isHidden: boolean;
28
27
  };
29
28
  static matchMediaIsMobile?: MediaQueryList;
30
29
  static $: JQueryStatic | undefined;
@@ -1,7 +1,3 @@
1
1
  declare class Page {
2
- /**
3
- * Проверить скрыта страница или нет
4
- */
5
- static isHidden: () => boolean;
6
2
  }
7
3
  export default Page;
@@ -30,9 +30,5 @@ declare const state: {
30
30
  size: number;
31
31
  dateFormat: string;
32
32
  gmt: string | undefined;
33
- /**
34
- * true, если страница скрыта
35
- */
36
- isHidden: boolean;
37
33
  };
38
34
  export default state;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Получить случайную строку
3
+ */
4
+ export declare const getRandomHash: (length?: number) => string;
5
+ /**
6
+ * Посчитать процент от числа (сколько процентов составляет part от full)
7
+ * @param part - первое число
8
+ * @param full - второе число
9
+ * @param precision - точность (колличество знаков после запятой)
10
+ */
11
+ export declare const percentOfNumber: (part: '--' | number, full?: number, precision?: number) => '--' | number;
12
+ /**
13
+ * Проверить скрыта страница или нет
14
+ */
15
+ export declare const isPageHidden: () => boolean;
16
+ /**
17
+ * Скачать изображение, переданное в виде строки
18
+ * @param imageStr - адресс картинки
19
+ * @param imageName - имя файла при загрузке, по умолчанию download
20
+ */
21
+ export declare const downloadImageFromString: (imageStr: string, imageName?: string) => void;
@@ -74,7 +74,3 @@ export declare const addLinkTags: (text: string) => string;
74
74
  * Перевести первую букву строки в верхний регистр
75
75
  */
76
76
  export declare const toCapitalize: (str: string) => string;
77
- /**
78
- * Получить случайную строку
79
- */
80
- export declare const getRandomHash: (length?: number) => string;
package/tabs/tabs.amd.js CHANGED
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../.chunks/forms-D_IeAEJM.amd","../require/css.amd!../assets/tabs.css"],function(k,s,e,o){"use strict";if(typeof e>"u")var e=window.Vue;const l={class:e.normalizeClass({"top-tabs":!0})},d={key:0,class:"top-tabs_header"},c={class:"top-tabs_contents"},r=e.defineComponent({__name:"tabs",props:{id:{}},setup(a){return(t,n)=>(e.openBlock(),e.createElementBlock("div",l,[e.renderSlot(t.$slots,"buttons"),t.$slots.header?(e.openBlock(),e.createElementBlock("div",d,[e.renderSlot(t.$slots,"header")])):e.createCommentVNode("",!0),e.createElementVNode("div",c,[e.renderSlot(t.$slots,"contents")])]))}}),b={$style:{"top-tabs":"top-tabs","top-tabs_header":"top-tabs_header","top-tabs_contents":"top-tabs_contents","top-tabs_tabInput":"top-tabs_tabInput","top-tabs_content":"top-tabs_content"}},p=o._export_sfc(r,[["__cssModules",b]]),_=["id","name","value","checked","disabled"],i=["for"],u=e.defineComponent({__name:"tab",props:{tabsId:{},name:{},title:{},active:{type:Boolean},disabled:{type:Boolean}},setup(a){return(t,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("input",{type:"radio",class:"top-tabs_tabInput top-unvisible",id:t.tabsId+t.name,name:t.tabsId,value:t.name,checked:t.active,disabled:t.disabled},null,8,_),e.createElementVNode("label",{class:e.normalizeClass({"top-tabs_tabLabel":!0,"top-forms-focusable":!0,"top-disabled":t.disabled}),for:t.tabsId+t.name},[e.renderSlot(t.$slots,"default")],10,i)],64))}}),m={$style:{"top-tabs_tabLabel":"top-tabs_tabLabel","top-tabs_tabInput":"top-tabs_tabInput","top-disabled":"top-disabled"}},f=o._export_sfc(u,[["__cssModules",m]]),$=["data-tabs-name"],h=e.defineComponent({__name:"content",props:{name:{}},setup(a){return(t,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tabs_content":!0}),"data-tabs-name":t.name},[e.renderSlot(t.$slots,"default")],8,$))}}),y={$style:{"top-tabs_content":"top-tabs_content"}},v=o._export_sfc(h,[["__cssModules",y]]);s.Tabs=p,s.TabsContent=v,s.TabsTab=f,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../.chunks/forms-DBYpY73Z.amd","../require/css.amd!../assets/tabs.css"],function(k,s,e,o){"use strict";if(typeof e>"u")var e=window.Vue;const l={class:e.normalizeClass({"top-tabs":!0})},d={key:0,class:"top-tabs_header"},c={class:"top-tabs_contents"},r=e.defineComponent({__name:"tabs",props:{id:{}},setup(a){return(t,n)=>(e.openBlock(),e.createElementBlock("div",l,[e.renderSlot(t.$slots,"buttons"),t.$slots.header?(e.openBlock(),e.createElementBlock("div",d,[e.renderSlot(t.$slots,"header")])):e.createCommentVNode("",!0),e.createElementVNode("div",c,[e.renderSlot(t.$slots,"contents")])]))}}),b={$style:{"top-tabs":"top-tabs","top-tabs_header":"top-tabs_header","top-tabs_contents":"top-tabs_contents","top-tabs_tabInput":"top-tabs_tabInput","top-tabs_content":"top-tabs_content"}},p=o._export_sfc(r,[["__cssModules",b]]),_=["id","name","value","checked","disabled"],i=["for"],u=e.defineComponent({__name:"tab",props:{tabsId:{},name:{},title:{},active:{type:Boolean},disabled:{type:Boolean}},setup(a){return(t,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("input",{type:"radio",class:"top-tabs_tabInput top-unvisible",id:t.tabsId+t.name,name:t.tabsId,value:t.name,checked:t.active,disabled:t.disabled},null,8,_),e.createElementVNode("label",{class:e.normalizeClass({"top-tabs_tabLabel":!0,"top-forms-focusable":!0,"top-disabled":t.disabled}),for:t.tabsId+t.name},[e.renderSlot(t.$slots,"default")],10,i)],64))}}),m={$style:{"top-tabs_tabLabel":"top-tabs_tabLabel","top-tabs_tabInput":"top-tabs_tabInput","top-disabled":"top-disabled"}},f=o._export_sfc(u,[["__cssModules",m]]),$=["data-tabs-name"],h=e.defineComponent({__name:"content",props:{name:{}},setup(a){return(t,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tabs_content":!0}),"data-tabs-name":t.name},[e.renderSlot(t.$slots,"default")],8,$))}}),y={$style:{"top-tabs_content":"top-tabs_content"}},v=o._export_sfc(h,[["__cssModules",y]]);s.Tabs=p,s.TabsContent=v,s.TabsTab=f,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=tabs.amd.js.map
package/tabs/tabs.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { insertToPage as c } from "../utils/css.js";
2
2
  import { defineComponent as b, openBlock as a, createElementBlock as o, renderSlot as s, createCommentVNode as _, createElementVNode as n, normalizeClass as l, Fragment as i } from "vue";
3
- import { a as p } from "../.chunks/forms-1ZAO_mt8.es.js";
3
+ import { a as p } from "../.chunks/forms-BScWgSrn.es.js";
4
4
  const r = ["../assets/tabs.css"].map((e) => import.meta.resolve(e));
5
5
  await c(r);
6
6
  const u = {
@@ -1,2 +1,2 @@
1
- define(["require","exports","vue","../utils/route.amd","../.chunks/forms-D_IeAEJM.amd","../.chunks/store-Bl79G7T_.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-HVMrwfs6.amd","../popup/worker.amd","../utils/system.amd","../require/css.amd!../assets/tabsView.css"],function(ee,_,e,b,p,v,w,te,I){"use strict";if(typeof e>"u")var e=window.Vue;const h=(o,n)=>`top:${String(o)}:${n}`,y={loadLocalStorge:(o,n)=>{if(!n.$id)return;const t=h(o,n.$id);try{const a=JSON.parse(localStorage.getItem(t));typeof a==typeof n[o]&&(n[o]=a)}catch{console.warn(new Error(`В localStorage[${t}] не корректный json`))}},addSaverLocalStorge:(o,n)=>{if(!n.$id)return;const t=h(o,n.$id);e.watch(()=>n[o],()=>{localStorage.setItem(t,JSON.stringify(n[o]))},{immediate:!0})}},S=Symbol(),B=(o,n)=>{const t=v.defineStore(S,()=>{const a=e.computed(()=>o.showMenuInPopup??p.Core.state.isMobile),l=e.computed(()=>o.pageMod),u=e.ref(!1),s=e.ref(void 0),r=e.ref(!0);return{showMenuInPopup:a,pageMod:l,isShort:u,activeItemName:n,component:s,scrollable:r}},o.idState);if(o.isShortable){const a="isShort";y.loadLocalStorge(a,t),y.addSaverLocalStorge(a,t)}return t},V=()=>v.useStore(S),N={key:1,class:"top-ellipsis"},L=e.defineComponent({__name:"menuItem",props:{name:{},href:{},icon:{},disabled:{type:Boolean},component:{default:void 0},scrollable:{type:Boolean,default:!0}},setup(o){const n=o,t=V(),a=e.computed(()=>n.name&&t.$id?b.genHash(t.$id,n.name):n.href),l=e.computed(()=>t.showMenuInPopup?w._sfc_main$2:a?"a":"button"),u=s=>{!n.href&&a.value&&s.preventDefault(),n.name&&(t.activeItemName=n.name)};return(s,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.value),{target:"_self",class:e.normalizeClass({"top-tabsView_menuItem":!e.unref(t).showMenuInPopup,"top-active":s.name&&e.unref(t).activeItemName===s.name,"top-disabled":s.disabled,"top-spa-disabled":!0}),href:a.value,"data-top-icon":s.icon||void 0,disabled:s.disabled||void 0,onClick:u},{default:e.withCtx(()=>[e.unref(t).showMenuInPopup?e.renderSlot(s.$slots,"default",{key:0}):s.$slots.default&&!e.unref(t).isShort?(e.openBlock(),e.createElementBlock("span",N,[e.renderSlot(s.$slots,"default")])):e.createCommentVNode("",!0)]),_:3},8,["class","href","data-top-icon","disabled"]))}}),C={$style:{"top-tabsView_menuItem":"top-tabsView_menuItem","top-active":"top-active","top-forms-option":"top-forms-option","top-formsCaption":"top-formsCaption","top-disabled":"top-disabled"}},m=p._export_sfc(L,[["__cssModules",C]]),g=o=>(o==null?void 0:o.name)==="AsyncComponentWrapper"&&!(o!=null&&o.__asyncResolved),P=async(o,n)=>{(o==null?void 0:o.name)==="AsyncComponentWrapper"&&(o!=null&&o.__asyncResolved||(o.__asyncLoader(),await I.sleepWhile(()=>n()&&g(o),200)))},T={class:"top-tabsView_menuOpener"},E=["data-top-icon"],O={class:"top-ellipsis"},D=e.createElementVNode("div",{class:"top-tabsView_menuOpenerIcon","data-top-icon":""},null,-1),z={class:"top-tabsView_menuList"},R={key:0,class:"top-tabsView_menuFooter"},A=e.defineComponent({__name:"menu",props:e.mergeModels({isShortable:{type:Boolean},isLoading:{type:Boolean}},{isLoading:{},isLoadingModifiers:{}}),emits:["update:isLoading"],setup(o){const n=e.useModel(o,"isLoading"),t=V(),a=e.useSlots(),l=new Map,u=()=>{if(!a.default)return;const c=a.default().find(i=>i.key==="_menu");c&&c.children.forEach(i=>{var M,$;if(i.type.__name!==m.__name||!i.props.name||i.props.disabled)return;const k={title:(($=(M=i.children).default)==null?void 0:$.call(M)[0].children).trim(),icon:i.props.icon,component:i.props.component?e.markRaw(i.props.component):m.props.component.default,scrollable:i.props.scrollable??m.props.scrollable.default};l.set(i.props.name,k)})},s=e.ref(null);let r=0;e.watch(()=>t.activeItemName,async()=>{const c=++r;if(l.size===0&&u(),l.size===0){t.activeItemName="";return}if(s.value=l.get(t.activeItemName)??null,!s.value&&t.$id){const i=b.getHash(t.$id);if(s.value=l.get(i)??null,s.value){t.activeItemName=i;return}}if(!s.value){t.activeItemName=l.keys().next().value;return}if(s.value.component===t.component){n.value=!1;return}t.$id&&b.setHash(t.$id,t.activeItemName,!0),n.value=!0,await P(s.value.component,()=>c===r),c===r&&(t.scrollable=s.value.scrollable,t.component=s.value.component,s.value&&!t.component&&console.warn(`Компонент вкладки ${t.activeItemName} не найден. Добавьте props.component для пункта меню ${t.activeItemName}.`))},{immediate:!0});const d=e.ref();let f;return e.onMounted(()=>{f=new ResizeObserver(()=>{d.value.parentElement.style.setProperty("--top-tabsView-contents-offset-top",d.value.offsetHeight+"px")}),f.observe(d.value)}),e.onUnmounted(()=>{f.disconnect()}),(c,i)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:d,class:e.normalizeClass({"top-tabsView_menu":!0,"top-tabsView_menu-inPopup_0":!e.unref(t).showMenuInPopup,"top-tabsView_menu-inPopup_1":e.unref(t).showMenuInPopup,"top-tabsView_menu-short":e.unref(t).isShort&&!e.unref(t).showMenuInPopup})},[e.unref(t).showMenuInPopup?(e.openBlock(),e.createBlock(e.unref(w._sfc_main),{key:0},{opener:e.withCtx(()=>[e.createElementVNode("div",T,[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-tabsView_menuOpenerActiveItem","data-top-icon":s.value.icon},[e.createElementVNode("span",O,e.toDisplayString(s.value.title),1)],8,E)):e.createCommentVNode("",!0),D])]),contentList:e.withCtx(()=>[e.renderSlot(c.$slots,"default")]),_:3})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",z,[e.renderSlot(c.$slots,"default")]),c.isShortable?(e.openBlock(),e.createElementBlock("div",R,[c.isShortable?(e.openBlock(),e.createBlock(m,{key:0,icon:e.unref(t).isShort?"":"",onClick:i[0]||(i[0]=k=>e.unref(t).isShort=!e.unref(t).isShort)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(t).isShort?"":"Свернуть"),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],64))],2))}}),H={$style:{"top-tabsView-pageMod":"top-tabsView-pageMod","top-tabsView_menu":"top-tabsView_menu","top-tabsView_menu-inPopup_0":"top-tabsView_menu-inPopup_0","top-tabsView_menu-inPopup_1":"top-tabsView_menu-inPopup_1","top-tabsView_menu-short":"top-tabsView_menu-short","top-tabsView_menuOpener":"top-tabsView_menuOpener","top-tabsView_menuOpenerIcon":"top-tabsView_menuOpenerIcon","top-tabsView_menuOpenerActiveItem":"top-tabsView_menuOpenerActiveItem","top-tabsView_menuList":"top-tabsView_menuList","top-tabsView_menuFooter":"top-tabsView_menuFooter","top-tabsView_menuItem":"top-tabsView_menuItem"}},K=p._export_sfc(A,[["__cssModules",H]]),F=e.defineComponent({__name:"tabsView",props:e.mergeModels({modelValue:{},pageMod:{type:Boolean},showMenuInPopup:{type:Boolean,default:void 0},isShortable:{type:Boolean,default:!1},idState:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const n=o,t=e.useModel(o,"modelValue"),a=B(n,t),l=r=>{document.documentElement.classList.toggle("top-hasTabsViewPageMod",r)};n.pageMod&&l(!0),e.onUnmounted(()=>{n.pageMod&&l(!1),a.$id&&b.delHash(a.$id,a.activeItemName,!0)});const u=e.ref(),s=e.ref(!1);return e.watch([u,()=>a.component],()=>{s.value=g(a.component)},{immediate:!0}),(r,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tabsView":!0,"top-tabsView-pageMod":n.pageMod,"top-tabsView-inPopup":e.unref(a).showMenuInPopup})},[e.createVNode(K,{isShortable:r.isShortable,isLoading:s.value,"onUpdate:isLoading":d[0]||(d[0]=f=>s.value=f)},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"menu")]),_:3},8,["isShortable","isLoading"]),e.createElementVNode("div",{class:e.normalizeClass({"top-tabsView_contents":!0,"top-tabsView_contents-isLoading":s.value,"top-tabsView_contents-noScrollable":!e.unref(a).scrollable})},[s.value?(e.openBlock(),e.createBlock(e.unref(p.Loadbar),{key:0})):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.KeepAlive,null,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(a).component),{ref_key:"componentRef",ref:u},null,512))],1024))],2)],2))}}),j={$style:{"top-tabsView":"top-tabsView","top-tabsView_contents":"top-tabsView_contents","top-tabsView_contents-isLoading":"top-tabsView_contents-isLoading","top-tabsView_contents-noScrollable":"top-tabsView_contents-noScrollable","top-tabsView-inPopup":"top-tabsView-inPopup"}},q=p._export_sfc(F,[["__cssModules",j]]),U={"top-tabsView_menuDelimeter":"top-tabsView_menuDelimeter"},W={},J={class:"top-tabsView_menuDelimeter"};function x(o,n){return e.openBlock(),e.createElementBlock("div",J)}const G={$style:U},Q=p._export_sfc(W,[["render",x],["__cssModules",G]]),X=e.defineComponent({__name:"menuTitle",props:{isSubtitle:{type:Boolean}},setup(o){const n=V();return(t,a)=>e.unref(n).showMenuInPopup?(e.openBlock(),e.createBlock(e.unref(w._sfc_main$2),{key:0,type:"title"},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3})):e.unref(n).isShort?(e.openBlock(),e.createBlock(Q,{key:1})):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass({"top-tabsView_menuTitle":!0,"top-tabsView_menuTitle-subtitle":t.isSubtitle})},[e.renderSlot(t.$slots,"default")],2))}}),Y={$style:{"top-tabsView_menuTitle":"top-tabsView_menuTitle","top-tabsView_menuTitle-subtitle":"top-tabsView_menuTitle-subtitle"}},Z=p._export_sfc(X,[["__cssModules",Y]]);_.TabsView=q,_.TabsViewMenuItem=m,_.TabsViewMenuTitle=Z,Object.defineProperty(_,Symbol.toStringTag,{value:"Module"})});
1
+ define(["require","exports","vue","../utils/route.amd","../.chunks/forms-DBYpY73Z.amd","../.chunks/store-Bl79G7T_.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-D-5F2CnX.amd","../popup/worker.amd","../utils/system.amd","../require/css.amd!../assets/tabsView.css"],function(ee,_,e,b,p,v,w,te,I){"use strict";if(typeof e>"u")var e=window.Vue;const h=(o,n)=>`top:${String(o)}:${n}`,y={loadLocalStorge:(o,n)=>{if(!n.$id)return;const t=h(o,n.$id);try{const a=JSON.parse(localStorage.getItem(t));typeof a==typeof n[o]&&(n[o]=a)}catch{console.warn(new Error(`В localStorage[${t}] не корректный json`))}},addSaverLocalStorge:(o,n)=>{if(!n.$id)return;const t=h(o,n.$id);e.watch(()=>n[o],()=>{localStorage.setItem(t,JSON.stringify(n[o]))},{immediate:!0})}},S=Symbol(),B=(o,n)=>{const t=v.defineStore(S,()=>{const a=e.computed(()=>o.showMenuInPopup??p.Core.state.isMobile),l=e.computed(()=>o.pageMod),u=e.ref(!1),s=e.ref(void 0),r=e.ref(!0);return{showMenuInPopup:a,pageMod:l,isShort:u,activeItemName:n,component:s,scrollable:r}},o.idState);if(o.isShortable){const a="isShort";y.loadLocalStorge(a,t),y.addSaverLocalStorge(a,t)}return t},V=()=>v.useStore(S),N={key:1,class:"top-ellipsis"},L=e.defineComponent({__name:"menuItem",props:{name:{},href:{},icon:{},disabled:{type:Boolean},component:{default:void 0},scrollable:{type:Boolean,default:!0}},setup(o){const n=o,t=V(),a=e.computed(()=>n.name&&t.$id?b.genHash(t.$id,n.name):n.href),l=e.computed(()=>t.showMenuInPopup?w._sfc_main$2:a?"a":"button"),u=s=>{!n.href&&a.value&&s.preventDefault(),n.name&&(t.activeItemName=n.name)};return(s,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.value),{target:"_self",class:e.normalizeClass({"top-tabsView_menuItem":!e.unref(t).showMenuInPopup,"top-active":s.name&&e.unref(t).activeItemName===s.name,"top-disabled":s.disabled,"top-spa-disabled":!0}),href:a.value,"data-top-icon":s.icon||void 0,disabled:s.disabled||void 0,onClick:u},{default:e.withCtx(()=>[e.unref(t).showMenuInPopup?e.renderSlot(s.$slots,"default",{key:0}):s.$slots.default&&!e.unref(t).isShort?(e.openBlock(),e.createElementBlock("span",N,[e.renderSlot(s.$slots,"default")])):e.createCommentVNode("",!0)]),_:3},8,["class","href","data-top-icon","disabled"]))}}),C={$style:{"top-tabsView_menuItem":"top-tabsView_menuItem","top-active":"top-active","top-forms-option":"top-forms-option","top-formsCaption":"top-formsCaption","top-disabled":"top-disabled"}},m=p._export_sfc(L,[["__cssModules",C]]),g=o=>(o==null?void 0:o.name)==="AsyncComponentWrapper"&&!(o!=null&&o.__asyncResolved),P=async(o,n)=>{(o==null?void 0:o.name)==="AsyncComponentWrapper"&&(o!=null&&o.__asyncResolved||(o.__asyncLoader(),await I.sleepWhile(()=>n()&&g(o),200)))},T={class:"top-tabsView_menuOpener"},E=["data-top-icon"],O={class:"top-ellipsis"},D=e.createElementVNode("div",{class:"top-tabsView_menuOpenerIcon","data-top-icon":""},null,-1),z={class:"top-tabsView_menuList"},R={key:0,class:"top-tabsView_menuFooter"},A=e.defineComponent({__name:"menu",props:e.mergeModels({isShortable:{type:Boolean},isLoading:{type:Boolean}},{isLoading:{},isLoadingModifiers:{}}),emits:["update:isLoading"],setup(o){const n=e.useModel(o,"isLoading"),t=V(),a=e.useSlots(),l=new Map,u=()=>{if(!a.default)return;const c=a.default().find(i=>i.key==="_menu");c&&c.children.forEach(i=>{var M,$;if(i.type.__name!==m.__name||!i.props.name||i.props.disabled)return;const k={title:(($=(M=i.children).default)==null?void 0:$.call(M)[0].children).trim(),icon:i.props.icon,component:i.props.component?e.markRaw(i.props.component):m.props.component.default,scrollable:i.props.scrollable??m.props.scrollable.default};l.set(i.props.name,k)})},s=e.ref(null);let r=0;e.watch(()=>t.activeItemName,async()=>{const c=++r;if(l.size===0&&u(),l.size===0){t.activeItemName="";return}if(s.value=l.get(t.activeItemName)??null,!s.value&&t.$id){const i=b.getHash(t.$id);if(s.value=l.get(i)??null,s.value){t.activeItemName=i;return}}if(!s.value){t.activeItemName=l.keys().next().value;return}if(s.value.component===t.component){n.value=!1;return}t.$id&&b.setHash(t.$id,t.activeItemName,!0),n.value=!0,await P(s.value.component,()=>c===r),c===r&&(t.scrollable=s.value.scrollable,t.component=s.value.component,s.value&&!t.component&&console.warn(`Компонент вкладки ${t.activeItemName} не найден. Добавьте props.component для пункта меню ${t.activeItemName}.`))},{immediate:!0});const d=e.ref();let f;return e.onMounted(()=>{f=new ResizeObserver(()=>{d.value.parentElement.style.setProperty("--top-tabsView-contents-offset-top",d.value.offsetHeight+"px")}),f.observe(d.value)}),e.onUnmounted(()=>{f.disconnect()}),(c,i)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:d,class:e.normalizeClass({"top-tabsView_menu":!0,"top-tabsView_menu-inPopup_0":!e.unref(t).showMenuInPopup,"top-tabsView_menu-inPopup_1":e.unref(t).showMenuInPopup,"top-tabsView_menu-short":e.unref(t).isShort&&!e.unref(t).showMenuInPopup})},[e.unref(t).showMenuInPopup?(e.openBlock(),e.createBlock(e.unref(w._sfc_main),{key:0},{opener:e.withCtx(()=>[e.createElementVNode("div",T,[s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"top-tabsView_menuOpenerActiveItem","data-top-icon":s.value.icon},[e.createElementVNode("span",O,e.toDisplayString(s.value.title),1)],8,E)):e.createCommentVNode("",!0),D])]),contentList:e.withCtx(()=>[e.renderSlot(c.$slots,"default")]),_:3})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",z,[e.renderSlot(c.$slots,"default")]),c.isShortable?(e.openBlock(),e.createElementBlock("div",R,[c.isShortable?(e.openBlock(),e.createBlock(m,{key:0,icon:e.unref(t).isShort?"":"",onClick:i[0]||(i[0]=k=>e.unref(t).isShort=!e.unref(t).isShort)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(t).isShort?"":"Свернуть"),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],64))],2))}}),H={$style:{"top-tabsView-pageMod":"top-tabsView-pageMod","top-tabsView_menu":"top-tabsView_menu","top-tabsView_menu-inPopup_0":"top-tabsView_menu-inPopup_0","top-tabsView_menu-inPopup_1":"top-tabsView_menu-inPopup_1","top-tabsView_menu-short":"top-tabsView_menu-short","top-tabsView_menuOpener":"top-tabsView_menuOpener","top-tabsView_menuOpenerIcon":"top-tabsView_menuOpenerIcon","top-tabsView_menuOpenerActiveItem":"top-tabsView_menuOpenerActiveItem","top-tabsView_menuList":"top-tabsView_menuList","top-tabsView_menuFooter":"top-tabsView_menuFooter","top-tabsView_menuItem":"top-tabsView_menuItem"}},K=p._export_sfc(A,[["__cssModules",H]]),F=e.defineComponent({__name:"tabsView",props:e.mergeModels({modelValue:{},pageMod:{type:Boolean},showMenuInPopup:{type:Boolean,default:void 0},isShortable:{type:Boolean,default:!1},idState:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const n=o,t=e.useModel(o,"modelValue"),a=B(n,t),l=r=>{document.documentElement.classList.toggle("top-hasTabsViewPageMod",r)};n.pageMod&&l(!0),e.onUnmounted(()=>{n.pageMod&&l(!1),a.$id&&b.delHash(a.$id,a.activeItemName,!0)});const u=e.ref(),s=e.ref(!1);return e.watch([u,()=>a.component],()=>{s.value=g(a.component)},{immediate:!0}),(r,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-tabsView":!0,"top-tabsView-pageMod":n.pageMod,"top-tabsView-inPopup":e.unref(a).showMenuInPopup})},[e.createVNode(K,{isShortable:r.isShortable,isLoading:s.value,"onUpdate:isLoading":d[0]||(d[0]=f=>s.value=f)},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"menu")]),_:3},8,["isShortable","isLoading"]),e.createElementVNode("div",{class:e.normalizeClass({"top-tabsView_contents":!0,"top-tabsView_contents-isLoading":s.value,"top-tabsView_contents-noScrollable":!e.unref(a).scrollable})},[s.value?(e.openBlock(),e.createBlock(e.unref(p.Loadbar),{key:0})):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.KeepAlive,null,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(a).component),{ref_key:"componentRef",ref:u},null,512))],1024))],2)],2))}}),j={$style:{"top-tabsView":"top-tabsView","top-tabsView_contents":"top-tabsView_contents","top-tabsView_contents-isLoading":"top-tabsView_contents-isLoading","top-tabsView_contents-noScrollable":"top-tabsView_contents-noScrollable","top-tabsView-inPopup":"top-tabsView-inPopup"}},q=p._export_sfc(F,[["__cssModules",j]]),U={"top-tabsView_menuDelimeter":"top-tabsView_menuDelimeter"},W={},J={class:"top-tabsView_menuDelimeter"};function x(o,n){return e.openBlock(),e.createElementBlock("div",J)}const G={$style:U},Q=p._export_sfc(W,[["render",x],["__cssModules",G]]),X=e.defineComponent({__name:"menuTitle",props:{isSubtitle:{type:Boolean}},setup(o){const n=V();return(t,a)=>e.unref(n).showMenuInPopup?(e.openBlock(),e.createBlock(e.unref(w._sfc_main$2),{key:0,type:"title"},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3})):e.unref(n).isShort?(e.openBlock(),e.createBlock(Q,{key:1})):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass({"top-tabsView_menuTitle":!0,"top-tabsView_menuTitle-subtitle":t.isSubtitle})},[e.renderSlot(t.$slots,"default")],2))}}),Y={$style:{"top-tabsView_menuTitle":"top-tabsView_menuTitle","top-tabsView_menuTitle-subtitle":"top-tabsView_menuTitle-subtitle"}},Z=p._export_sfc(X,[["__cssModules",Y]]);_.TabsView=q,_.TabsViewMenuItem=m,_.TabsViewMenuTitle=Z,Object.defineProperty(_,Symbol.toStringTag,{value:"Module"})});
2
2
  //# sourceMappingURL=tabsView.amd.js.map