@topvisor/ui 0.9.30 → 0.9.32

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 (175) hide show
  1. package/.chunks/datepicker-5QMJRJn-.amd.js +247 -0
  2. package/.chunks/datepicker-5QMJRJn-.amd.js.map +1 -0
  3. package/.chunks/datepicker-D1JLNEmV.es.js +289 -0
  4. package/.chunks/datepicker-D1JLNEmV.es.js.map +1 -0
  5. package/.chunks/{forms-0MQ_zU80.amd.js → forms-B2NcBl7S.amd.js} +3 -3
  6. package/.chunks/forms-B2NcBl7S.amd.js.map +1 -0
  7. package/.chunks/{forms-BkBLBZBn.es.js → forms-S36M7cBH.es.js} +68 -69
  8. package/.chunks/forms-S36M7cBH.es.js.map +1 -0
  9. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-CmrUY2go.es.js → listItem.vue_vue_type_script_setup_true_lang-BfCj7kQR.es.js} +20 -20
  10. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-BfCj7kQR.es.js.map +1 -0
  11. package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Cr9e1nzK.amd.js → listItem.vue_vue_type_script_setup_true_lang-C7tg-67i.amd.js} +2 -2
  12. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-C7tg-67i.amd.js.map +1 -0
  13. package/.chunks/{menu-BGUYnOx6.amd.js → menu-S1Hk7D3W.amd.js} +2 -2
  14. package/.chunks/menu-S1Hk7D3W.amd.js.map +1 -0
  15. package/.chunks/{menu-DMBqYUnZ.es.js → menu-v5knQbeF.es.js} +9 -9
  16. package/.chunks/menu-v5knQbeF.es.js.map +1 -0
  17. package/.chunks/{popup-CTCFSYwA.es.js → popup-BK3xlBZm.es.js} +485 -431
  18. package/.chunks/popup-BK3xlBZm.es.js.map +1 -0
  19. package/.chunks/{popup-CcxDRowY.amd.js → popup-DncRq57t.amd.js} +440 -386
  20. package/.chunks/popup-DncRq57t.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-Crf7T-Na.es.js → widgetInput-Br5COpvG.es.js} +3 -3
  24. package/.chunks/widgetInput-Br5COpvG.es.js.map +1 -0
  25. package/.chunks/{widgetInput-DfOBj0qz.amd.js → widgetInput-CrrUoVPc.amd.js} +2 -2
  26. package/.chunks/widgetInput-CrrUoVPc.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 +6 -5
  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 +3379 -3239
  51. package/icomoon/fonts/Topvisor-2.svg +263 -253
  52. package/icomoon/fonts/Topvisor-2.ttf +0 -0
  53. package/icomoon/fonts/Topvisor-2.woff +0 -0
  54. package/icomoon/selection.json +1 -1
  55. package/icomoon/style.css +740 -710
  56. package/package.json +24 -24
  57. package/popup/popup.amd.js +1 -1
  58. package/popup/popup.js +2 -2
  59. package/popup/worker.amd.js +1 -1
  60. package/popup/worker.amd.js.map +1 -1
  61. package/popup/worker.js +2 -2
  62. package/popup/worker.js.map +1 -1
  63. package/project/project.amd.js +1 -1
  64. package/project/project.amd.js.map +1 -1
  65. package/project/project.js +38 -40
  66. package/project/project.js.map +1 -1
  67. package/require/css.amd.js +11 -17
  68. package/src/components/forms/button/button.stories.d.ts +3 -3
  69. package/src/components/forms/button/button.vue.d.ts +7 -5
  70. package/src/components/forms/checkbox/checkbox.stories.d.ts +8 -7
  71. package/src/components/forms/checkbox/checkbox.vue.d.ts +10 -6
  72. package/src/components/forms/controlLabel/controlLabel.stories.d.ts +3 -3
  73. package/src/components/forms/controlLabel/controlLabel.vue.d.ts +4 -2
  74. package/src/components/forms/hint/hint.stories.d.ts +12 -76
  75. package/src/components/forms/input/input.stories.d.ts +3 -3
  76. package/src/components/forms/input/input.vue.d.ts +6 -4
  77. package/src/components/forms/inputDate/datepicker.d.ts +0 -2
  78. package/src/components/forms/inputRange/inputRange.stories.d.ts +15 -47
  79. package/src/components/forms/inputRange/inputRange.vue.d.ts +4 -2
  80. package/src/components/forms/radio/radio.stories.d.ts +3 -3
  81. package/src/components/forms/radio/radio.vue.d.ts +6 -4
  82. package/src/components/forms/select/select.stories.d.ts +2 -2
  83. package/src/components/forms/select/select.vue.d.ts +4 -2
  84. package/src/components/forms/switcher/switcher.stories.d.ts +3 -3
  85. package/src/components/forms/switcher/switcher.vue.d.ts +6 -4
  86. package/src/components/formsExt/editInput/editInput.stories.d.ts +3 -3
  87. package/src/components/formsExt/editInput/editInput.vue.d.ts +6 -4
  88. package/src/components/formsExt/menu/menu.stories.d.ts +1 -1
  89. package/src/components/formsExt/menu/menu.vue.d.ts +1 -1
  90. package/src/components/formsExt/selector2/api.d.ts +3 -3
  91. package/src/components/formsExt/selector2/selector2.stories.d.ts +36 -35
  92. package/src/components/formsExt/selector2/selector2.vue.d.ts +19 -17
  93. package/src/components/popup/popup/listItem.vue.d.ts +7 -5
  94. package/src/components/popup/popup/opener.vue.d.ts +6 -4
  95. package/src/components/popup/popup/popup.stories.d.ts +21 -85
  96. package/src/components/popup/popup/popup.vue.d.ts +11 -9
  97. package/src/components/project/selectorCompetitors/composables.d.ts +5 -0
  98. package/src/components/project/selectorCompetitors/selectorCompetitors.d.ts +4 -2
  99. package/src/components/project/selectorCompetitors/selectorCompetitors.stories.d.ts +2 -2
  100. package/src/components/project/selectorCompetitors/selectorCompetitors.vue.d.ts +4 -2
  101. package/src/components/project/selectorCompetitors/stories/items.d.ts +2 -4
  102. package/src/components/project/selectorCompetitors/types/competitor.d.ts +7 -0
  103. package/src/components/tabs/tabs/content.vue.d.ts +4 -2
  104. package/src/components/tabs/tabs/tab.vue.d.ts +4 -2
  105. package/src/components/tabs/tabs/tabs.stories.d.ts +27 -91
  106. package/src/components/tabs/tabs/tabs.vue.d.ts +4 -2
  107. package/src/components/tabsView/tabsView/menu.vue.d.ts +6 -4
  108. package/src/components/tabsView/tabsView/menuItem.vue.d.ts +6 -4
  109. package/src/components/tabsView/tabsView/menuTitle.vue.d.ts +4 -2
  110. package/src/components/tabsView/tabsView/store.d.ts +18 -18
  111. package/src/components/tabsView/tabsView/tabsView.stories.d.ts +12 -12
  112. package/src/components/tabsView/tabsView/tabsView.vue.d.ts +6 -4
  113. package/src/components/tabsView/tabsView//320/255/320/273/320/265/320/274/320/265/320/275/321/202/321/213/MenuItem.stories.d.ts +9 -9
  114. package/src/components/tabsView/tabsView//320/255/320/273/320/265/320/274/320/265/320/275/321/202/321/213/MenuTitle.stories.d.ts +9 -9
  115. package/src/core/core/core.d.ts +1 -1
  116. package/src/core/utils/common.d.ts +1 -1
  117. package/src/core/utils/css.d.ts +2 -3
  118. package/src/core/utils/device.d.ts +0 -3
  119. package/src/core/utils/dom.d.ts +1 -1
  120. package/src/core/utils/price.d.ts +1 -1
  121. package/src/core/utils/store/localStorage.d.ts +1 -1
  122. package/src/core/utils/store/store.d.ts +2 -2
  123. package/src/core/utils/string.d.ts +1 -1
  124. package/tabs/tabs.amd.js +1 -1
  125. package/tabs/tabs.js +2 -2
  126. package/tabsView/tabsView.amd.js +1 -1
  127. package/tabsView/tabsView.amd.js.map +1 -1
  128. package/tabsView/tabsView.js +3 -3
  129. package/tabsView/tabsView.js.map +1 -1
  130. package/utils/check.amd.js.map +1 -1
  131. package/utils/check.js.map +1 -1
  132. package/utils/common.amd.js.map +1 -1
  133. package/utils/common.js.map +1 -1
  134. package/utils/css.amd.js +1 -1
  135. package/utils/css.amd.js.map +1 -1
  136. package/utils/css.js +33 -24
  137. package/utils/css.js.map +1 -1
  138. package/utils/date.amd.js +1 -1
  139. package/utils/date.js +1 -1
  140. package/utils/device.amd.js +1 -1
  141. package/utils/device.js +1 -1
  142. package/utils/dom.amd.js.map +1 -1
  143. package/utils/dom.js.map +1 -1
  144. package/utils/keyboard.amd.js.map +1 -1
  145. package/utils/keyboard.js.map +1 -1
  146. package/utils/price.amd.js.map +1 -1
  147. package/utils/price.js.map +1 -1
  148. package/utils/route.amd.js.map +1 -1
  149. package/utils/route.js.map +1 -1
  150. package/utils/scroll.amd.js +1 -1
  151. package/utils/scroll.amd.js.map +1 -1
  152. package/utils/scroll.js +1 -1
  153. package/utils/scroll.js.map +1 -1
  154. package/utils/string.amd.js.map +1 -1
  155. package/utils/string.js.map +1 -1
  156. package/utils/system.amd.js.map +1 -1
  157. package/utils/system.js.map +1 -1
  158. package/utils/url.amd.js.map +1 -1
  159. package/utils/url.js.map +1 -1
  160. package/utils/window.amd.js +1 -1
  161. package/utils/window.js +1 -1
  162. package/.chunks/datepicker-C5qdwKuQ.es.js +0 -276
  163. package/.chunks/datepicker-C5qdwKuQ.es.js.map +0 -1
  164. package/.chunks/datepicker-CCrqadMd.amd.js +0 -234
  165. package/.chunks/datepicker-CCrqadMd.amd.js.map +0 -1
  166. package/.chunks/forms-0MQ_zU80.amd.js.map +0 -1
  167. package/.chunks/forms-BkBLBZBn.es.js.map +0 -1
  168. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-CmrUY2go.es.js.map +0 -1
  169. package/.chunks/listItem.vue_vue_type_script_setup_true_lang-Cr9e1nzK.amd.js.map +0 -1
  170. package/.chunks/menu-BGUYnOx6.amd.js.map +0 -1
  171. package/.chunks/menu-DMBqYUnZ.es.js.map +0 -1
  172. package/.chunks/popup-CTCFSYwA.es.js.map +0 -1
  173. package/.chunks/popup-CcxDRowY.amd.js.map +0 -1
  174. package/.chunks/widgetInput-Crf7T-Na.es.js.map +0 -1
  175. package/.chunks/widgetInput-DfOBj0qz.amd.js.map +0 -1
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
- {
2
- "name": "@topvisor/ui",
3
- "private": false,
4
- "version": "0.9.30",
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
- "engines": {
17
- "npm": ">=10.0.0",
18
- "node": ">=22.0.0"
19
- },
20
- "peerDependencies": {
21
- "lodash": "^4.17.21",
22
- "vue": "^3.4.31"
23
- }
24
- }
1
+ {
2
+ "name": "@topvisor/ui",
3
+ "private": false,
4
+ "version": "0.9.32",
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
+ "engines": {
17
+ "npm": ">=10.0.0",
18
+ "node": ">=22.0.0"
19
+ },
20
+ "peerDependencies": {
21
+ "lodash": "^4.17.21",
22
+ "vue": "^3.4.31"
23
+ }
24
+ }
@@ -1,2 +1,2 @@
1
- define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-Cr9e1nzK.amd","../.chunks/widgetInput-DfOBj0qz.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-C7tg-67i.amd","../.chunks/widgetInput-CrrUoVPc.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-CmrUY2go.es.js";
2
- import { P as s } from "../.chunks/widgetInput-Crf7T-Na.es.js";
1
+ import { _ as e, b as t, a } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-BfCj7kQR.es.js";
2
+ import { P as s } from "../.chunks/widgetInput-Br5COpvG.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-0MQ_zU80.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-CcxDRowY.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-B2NcBl7S.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-DncRq57t.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-BkBLBZBn.es.js";
1
+ import { C as Core, E as Events } from "../.chunks/forms-S36M7cBH.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-CTCFSYwA.es.js");
77
+ const { default: Popup } = await import("../.chunks/popup-BK3xlBZm.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-0MQ_zU80.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-Cr9e1nzK.amd","../.chunks/menu-BGUYnOx6.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-B2NcBl7S.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-C7tg-67i.amd","../.chunks/menu-S1Hk7D3W.amd","../require/css.amd!../assets/project.css"],function(y,c,e,s,i,p){"use strict";if(typeof e>"u")var e=window.Vue;const d={class:"top-selectorCompetitors"},m={class:"top-ellipsis1"},f=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(a){const C=a,o=e.useModel(a,"modelValue"),_=e.computed(()=>{if(C.showSelectAllItem)return{icon:"",title:"Select all",value:"all",content:""}});return(n,r)=>(e.openBlock(),e.createElementBlock("div",d,[e.unref(s.Core).state.isMobile?(e.openBlock(),e.createBlock(i._sfc_main,{key:0},{opener:e.withCtx(()=>[e.createVNode(s.Button,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var t;return[e.createTextVNode(e.toDisplayString((t=n.items.find(u=>{var l;return u.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(n.items,(t,u)=>{var l;return e.openBlock(),e.createBlock(i._sfc_main$2,{class:e.normalizeClass({"top-active":(l=o.value)==null?void 0:l.includes(t.value)}),"data-top-icon":t.icon,title:t.title,onClick:()=>o.value=[t.value]},{default:e.withCtx(()=>[e.createElementVNode("span",m,e.toDisplayString(t.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(p.Menu,{key:1,modelValue:o.value,"onUpdate:modelValue":r[0]||(r[0]=t=>o.value=t),items:n.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:_.value},null,8,["modelValue","items","selectAllItem"]))]))}}),k={$style:{"top-selectorCompetitors_opener":"top-selectorCompetitors_opener","top-button":"top-button"}},v=s._export_sfc(f,[["__cssModules",k]]);c.SelectorCompetitors=v,Object.defineProperty(c,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: 'Select all', // ### TODO: translate\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 class=\"top-selectorCompetitors\">\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\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\ticon2=\"\"\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'top-active': model?.includes(item.value)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon=\"item.icon\"\r\n\t\t\t\t\t:title=\"item.title\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"top-ellipsis1\">\r\n\t\t\t\t\t\t{{ item.content }}\r\n\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\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":"+iBASA,MAAAA,EAAAC,+BAKAC,EAAAC,EAAA,SAAA,IAAA,CACC,GAAAH,EAAA,kBACC,MAAA,mDAIU,CAEX,CAAA"}
@@ -1,14 +1,11 @@
1
1
  import { insertToPage as f } from "../utils/css.js";
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 A, B as N, a as w } from "../.chunks/forms-BkBLBZBn.es.js";
4
- import { _ as E, b as T } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-CmrUY2go.es.js";
5
- import { M as $ } from "../.chunks/menu-DMBqYUnZ.es.js";
6
- const _ = ["../assets/project.css"].map((l) => import.meta.resolve(l));
7
- f(_);
8
- const L = {
9
- key: 0,
10
- class: "top-selectorCompetitors"
11
- }, P = { class: "top-ellipsis" }, U = /* @__PURE__ */ C({
2
+ import { defineComponent as C, mergeModels as v, useModel as M, computed as V, openBlock as l, createElementBlock as m, unref as y, createBlock as r, withCtx as a, createVNode as k, createTextVNode as B, toDisplayString as p, Fragment as S, renderList as g, normalizeClass as I, createElementVNode as b } from "vue";
3
+ import { C as h, B as A, a as N } from "../.chunks/forms-S36M7cBH.es.js";
4
+ import { _ as w, b as x } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-BfCj7kQR.es.js";
5
+ import { M as E } from "../.chunks/menu-v5knQbeF.es.js";
6
+ const _ = ["../assets/project.css"].map((s) => import.meta.resolve(s));
7
+ f(_, !0);
8
+ const T = { class: "top-selectorCompetitors" }, $ = { class: "top-ellipsis1" }, L = /* @__PURE__ */ C({
12
9
  __name: "selectorCompetitors",
13
10
  props: /* @__PURE__ */ v({
14
11
  modelValue: {},
@@ -19,75 +16,76 @@ const L = {
19
16
  modelModifiers: {}
20
17
  }),
21
18
  emits: ["update:modelValue"],
22
- setup(l) {
23
- const u = l, t = V(l, "modelValue"), d = M(() => {
19
+ setup(s) {
20
+ const u = s, t = M(s, "modelValue"), d = V(() => {
24
21
  if (u.showSelectAllItem)
25
22
  return {
26
23
  icon: "",
27
- title: "Выбрать все",
28
- // ### TODO: сделать перевод
24
+ title: "Select all",
25
+ // ### TODO: translate
29
26
  value: "all",
30
27
  content: ""
31
28
  };
32
29
  });
33
- return (a, m) => a.items.length > 1 ? (s(), c("div", L, [
34
- y(A).state.isMobile ? (s(), i(E, { key: 0 }, {
35
- opener: r(() => [
36
- k(N, {
37
- class: "top-selectorCompetitors_opener top-select_arrow",
30
+ return (n, i) => (l(), m("div", T, [
31
+ y(h).state.isMobile ? (l(), r(w, { key: 0 }, {
32
+ opener: a(() => [
33
+ k(A, {
34
+ class: "top-selectorCompetitors_opener",
38
35
  color: "theme",
39
- icon: ""
36
+ icon: "",
37
+ icon2: ""
40
38
  }, {
41
- default: r(() => {
39
+ default: a(() => {
42
40
  var e;
43
41
  return [
44
- g(p((e = a.items.find((n) => {
42
+ B(p((e = n.items.find((c) => {
45
43
  var o;
46
- return n.value === ((o = t.value) == null ? void 0 : o[0]);
44
+ return c.value === ((o = t.value) == null ? void 0 : o[0]);
47
45
  })) == null ? void 0 : e.content), 1)
48
46
  ];
49
47
  }),
50
48
  _: 1
51
49
  })
52
50
  ]),
53
- contentList: r(() => [
54
- (s(!0), c(B, null, h(a.items, (e, n) => {
51
+ contentList: a(() => [
52
+ (l(!0), m(S, null, g(n.items, (e, c) => {
55
53
  var o;
56
- return s(), i(T, {
54
+ return l(), r(x, {
57
55
  class: I({
58
- "top-ellipsis": !0,
59
56
  "top-active": (o = t.value) == null ? void 0 : o.includes(e.value)
60
57
  }),
61
- "data-top-icon2": n === 0 ? "" : "",
58
+ "data-top-icon": e.icon,
59
+ title: e.title,
62
60
  onClick: () => t.value = [e.value]
63
61
  }, {
64
- default: r(() => [
65
- S("span", P, p(e.content), 1)
62
+ default: a(() => [
63
+ b("span", $, p(e.content), 1)
66
64
  ]),
67
65
  _: 2
68
- }, 1032, ["class", "data-top-icon2", "onClick"]);
66
+ }, 1032, ["class", "data-top-icon", "title", "onClick"]);
69
67
  }), 256))
70
68
  ]),
71
69
  _: 1
72
- })) : (s(), i($, {
70
+ })) : (l(), r(E, {
73
71
  key: 1,
74
72
  modelValue: t.value,
75
- "onUpdate:modelValue": m[0] || (m[0] = (e) => t.value = e),
76
- items: a.items,
73
+ "onUpdate:modelValue": i[0] || (i[0] = (e) => t.value = e),
74
+ items: n.items,
77
75
  isMultiple: !0,
78
76
  styling: "bar",
79
77
  canBeEmptyMultiple: !1,
80
78
  selectAllItem: d.value
81
79
  }, null, 8, ["modelValue", "items", "selectAllItem"]))
82
- ])) : b("", !0);
80
+ ]));
83
81
  }
84
- }), j = {
82
+ }), P = {
85
83
  "top-selectorCompetitors_opener": "top-selectorCompetitors_opener",
86
84
  "top-button": "top-button"
87
- }, x = {
88
- $style: j
89
- }, H = /* @__PURE__ */ w(U, [["__cssModules", x]]);
85
+ }, U = {
86
+ $style: P
87
+ }, G = /* @__PURE__ */ N(L, [["__cssModules", U]]);
90
88
  export {
91
- H as SelectorCompetitors
89
+ G as SelectorCompetitors
92
90
  };
93
91
  //# sourceMappingURL=project.js.map
@@ -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: 'Select all', // ### TODO: translate\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 class=\"top-selectorCompetitors\">\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\"\r\n\t\t\t\t\tcolor=\"theme\"\r\n\t\t\t\t\ticon=\"\"\r\n\t\t\t\t\ticon2=\"\"\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'top-active': model?.includes(item.value)\r\n\t\t\t\t\t}\"\r\n\t\t\t\t\t:data-top-icon=\"item.icon\"\r\n\t\t\t\t\t:title=\"item.title\"\r\n\t\t\t\t\t@click=\"() => model = [item.value]\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"top-ellipsis1\">\r\n\t\t\t\t\t\t{{ item.content }}\r\n\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\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,18 +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
- try {
10
- insertToPage([cssURL]);
11
-
12
- onload();
13
- } catch (e) {
14
- onload.error(e);
15
- }
16
- });
17
- },
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
+ },
18
12
  });
@@ -139,9 +139,9 @@ declare const meta: {
139
139
  color: ComponentsConst.Color;
140
140
  styling: ComponentsConst.Style;
141
141
  }>;
142
- __isFragment?: undefined;
143
- __isTeleport?: undefined;
144
- __isSuspense?: undefined;
142
+ __isFragment?: never;
143
+ __isTeleport?: never;
144
+ __isSuspense?: never;
145
145
  } & import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
146
146
  icon: {
147
147
  type: import('vue').PropType<string>;
@@ -1,6 +1,10 @@
1
1
  import { Props } from './button';
2
2
 
3
- declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
3
+ declare function __VLS_template(): {
4
+ default?(_: {}): any;
5
+ html?(_: {}): any;
6
+ };
7
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
4
8
  color: string;
5
9
  styling: string;
6
10
  size: string;
@@ -12,10 +16,8 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__
12
16
  size: import('../helpers').Size;
13
17
  color: import('./button').Color;
14
18
  styling: import('./button').Style;
15
- }, {}>, {
16
- default?(_: {}): any;
17
- html?(_: {}): any;
18
- }>;
19
+ }, {}>;
20
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
19
21
  export default _default;
20
22
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
21
23
  type __VLS_TypePropsToRuntimeProps<T> = {
@@ -1,9 +1,10 @@
1
1
  import { StoryObj } from '@storybook/vue3';
2
2
 
3
+ import * as ComponentsConst from './checkbox';
3
4
  declare const meta: {
4
5
  component: {
5
6
  new (...args: any[]): import('vue').CreateComponentPublicInstance<Readonly<import('vue').ExtractPropTypes<{
6
- modelValue: import('vue').PropType<boolean | string[] | Set<string> | undefined>;
7
+ modelValue: import('vue').PropType<ComponentsConst.Props["modelValue"]>;
7
8
  name: {
8
9
  type: import('vue').PropType<string>;
9
10
  };
@@ -23,7 +24,7 @@ declare const meta: {
23
24
  type: import('vue').PropType<boolean>;
24
25
  };
25
26
  }>>, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & Readonly<import('vue').ExtractPropTypes<{
26
- modelValue: import('vue').PropType<boolean | string[] | Set<string> | undefined>;
27
+ modelValue: import('vue').PropType<ComponentsConst.Props["modelValue"]>;
27
28
  name: {
28
29
  type: import('vue').PropType<string>;
29
30
  };
@@ -50,7 +51,7 @@ declare const meta: {
50
51
  M: {};
51
52
  Defaults: {};
52
53
  }, Readonly<import('vue').ExtractPropTypes<{
53
- modelValue: import('vue').PropType<boolean | string[] | Set<string> | undefined>;
54
+ modelValue: import('vue').PropType<ComponentsConst.Props["modelValue"]>;
54
55
  name: {
55
56
  type: import('vue').PropType<string>;
56
57
  };
@@ -70,11 +71,11 @@ declare const meta: {
70
71
  type: import('vue').PropType<boolean>;
71
72
  };
72
73
  }>>, {}, {}, {}, {}, {}>;
73
- __isFragment?: undefined;
74
- __isTeleport?: undefined;
75
- __isSuspense?: undefined;
74
+ __isFragment?: never;
75
+ __isTeleport?: never;
76
+ __isSuspense?: never;
76
77
  } & import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
77
- modelValue: import('vue').PropType<boolean | string[] | Set<string> | undefined>;
78
+ modelValue: import('vue').PropType<ComponentsConst.Props["modelValue"]>;
78
79
  name: {
79
80
  type: import('vue').PropType<string>;
80
81
  };
@@ -1,5 +1,10 @@
1
- declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
2
- modelValue: import('vue').PropType<boolean | string[] | Set<string> | undefined>;
1
+ import { Props } from './checkbox';
2
+
3
+ declare function __VLS_template(): {
4
+ default?(_: {}): any;
5
+ };
6
+ declare const __VLS_component: import('vue').DefineComponent<{
7
+ modelValue: import('vue').PropType<Props["modelValue"]>;
3
8
  name: {
4
9
  type: import('vue').PropType<string>;
5
10
  };
@@ -19,7 +24,7 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
19
24
  type: import('vue').PropType<boolean>;
20
25
  };
21
26
  }, {}, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
22
- modelValue: import('vue').PropType<boolean | string[] | Set<string> | undefined>;
27
+ modelValue: import('vue').PropType<Props["modelValue"]>;
23
28
  name: {
24
29
  type: import('vue').PropType<string>;
25
30
  };
@@ -38,9 +43,8 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
38
43
  isError: {
39
44
  type: import('vue').PropType<boolean>;
40
45
  };
41
- }>>, {}, {}>, {
42
- default?(_: {}): any;
43
- }>;
46
+ }>>, {}, {}>;
47
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
44
48
  export default _default;
45
49
  type __VLS_WithTemplateSlots<T, S> = T & {
46
50
  new (): {
@@ -37,9 +37,9 @@ declare const meta: {
37
37
  type: import('vue').PropType<boolean>;
38
38
  };
39
39
  }>>, {}, {}, {}, {}, {}>;
40
- __isFragment?: undefined;
41
- __isTeleport?: undefined;
42
- __isSuspense?: undefined;
40
+ __isFragment?: never;
41
+ __isTeleport?: never;
42
+ __isSuspense?: never;
43
43
  } & import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
44
44
  description: {
45
45
  type: import('vue').PropType<string>;