@topvisor/ui 1.0.4 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunks/{datepicker-BJGX0c7G.amd.js → datepicker-CRfiJCmp.amd.js} +2 -2
- package/.chunks/{datepicker-BJGX0c7G.amd.js.map → datepicker-CRfiJCmp.amd.js.map} +1 -1
- package/.chunks/{datepicker-3uPurK_5.es.js → datepicker-CugKFVIH.es.js} +2 -2
- package/.chunks/{datepicker-3uPurK_5.es.js.map → datepicker-CugKFVIH.es.js.map} +1 -1
- package/.chunks/{forms-D9r2-H5Y.es.js → forms-CHiMZ8vg.es.js} +758 -743
- package/.chunks/forms-CHiMZ8vg.es.js.map +1 -0
- package/.chunks/forms-CjYoXTEQ.amd.js +3 -0
- package/.chunks/forms-CjYoXTEQ.amd.js.map +1 -0
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Bdv8YBAk.es.js → listItem.vue_vue_type_script_setup_true_lang-Bb7B8CTJ.es.js} +4 -4
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-Bdv8YBAk.es.js.map → listItem.vue_vue_type_script_setup_true_lang-Bb7B8CTJ.es.js.map} +1 -1
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-BxpjEUsq.amd.js → listItem.vue_vue_type_script_setup_true_lang-CEF3WDJ_.amd.js} +2 -2
- package/.chunks/{listItem.vue_vue_type_script_setup_true_lang-BxpjEUsq.amd.js.map → listItem.vue_vue_type_script_setup_true_lang-CEF3WDJ_.amd.js.map} +1 -1
- package/.chunks/{menu-B0Ul7Kbg.es.js → menu-CHeV29rC.es.js} +2 -2
- package/.chunks/{menu-B0Ul7Kbg.es.js.map → menu-CHeV29rC.es.js.map} +1 -1
- package/.chunks/{menu-CbhB9e4x.amd.js → menu-D1lnYuWU.amd.js} +2 -2
- package/.chunks/{menu-CbhB9e4x.amd.js.map → menu-D1lnYuWU.amd.js.map} +1 -1
- package/.chunks/{popup-pQCswyfj.amd.js → popup-C4Tne4qA.amd.js} +5 -5
- package/.chunks/{popup-pQCswyfj.amd.js.map → popup-C4Tne4qA.amd.js.map} +1 -1
- package/.chunks/{popup-Coq_61yv.es.js → popup-D-G2sXks.es.js} +2 -3
- package/.chunks/{popup-Coq_61yv.es.js.map → popup-D-G2sXks.es.js.map} +1 -1
- package/.chunks/utils-BOlUthaH.es.js +91 -0
- package/.chunks/utils-BOlUthaH.es.js.map +1 -0
- package/.chunks/utils-x88W55mf.amd.js +2 -0
- package/.chunks/utils-x88W55mf.amd.js.map +1 -0
- package/assets/forms.css +1 -1
- package/assets/project.css +1 -1
- package/assets/themes/dark.css +1 -1
- package/assets/themes/light.css +1 -1
- package/components/forms/avatar/avatar.vue.d.ts +3 -33
- package/components/forms/button/button.vue.d.ts +11 -31
- package/components/forms/checkbox/checkbox.vue.d.ts +12 -16
- package/components/forms/controlLabel/controlLabel.vue.d.ts +9 -13
- package/components/forms/hint/hint.vue.d.ts +2 -11
- package/components/forms/input/input.vue.d.ts +13 -31
- package/components/forms/inputDate/inputDate.vue.d.ts +6 -27
- package/components/forms/inputRange/inputRange.vue.d.ts +10 -5
- package/components/forms/loadbar/loadbar.vue.d.ts +2 -2
- package/components/forms/radio/radio.vue.d.ts +12 -16
- package/components/forms/select/select.vue.d.ts +8 -27
- package/components/forms/switcher/switcher.vue.d.ts +12 -16
- package/components/forms/textarea/textarea.vue.d.ts +6 -29
- package/components/formsExt/editArea/editArea.vue.d.ts +9 -38
- package/components/formsExt/editInput/editInput.vue.d.ts +5 -14
- package/components/formsExt/menu/menu.vue.d.ts +6 -27
- package/components/formsExt/radioGroup/radioGroup.vue.d.ts +8 -27
- package/components/formsExt/selector2/api.d.ts +2 -2
- package/components/formsExt/selector2/itemMulti.vue.d.ts +5 -14
- package/components/formsExt/selector2/selector2.vue.d.ts +107 -35
- package/components/popup/alert/alert.vue.d.ts +17 -21
- package/components/popup/confirm/confirm.vue.d.ts +19 -23
- package/components/popup/popup/listItem.vue.d.ts +10 -28
- package/components/popup/popup/opener.vue.d.ts +10 -30
- package/components/popup/popup/popup.vue.d.ts +21 -43
- package/components/popup/popup/widgetInput.vue.d.ts +11 -29
- package/components/popup/prompt/prompt.vue.d.ts +19 -23
- package/components/popup/worker.d.ts +0 -4
- package/components/project/project.d.ts +2 -0
- package/components/project/selectorCompetitors/selectorCompetitors.vue.d.ts +6 -27
- package/components/project/selectorRegion/composables/compare.d.ts +12 -0
- package/components/project/selectorRegion/composables/selectRegion.d.ts +14 -0
- package/components/project/selectorRegion/composables/selectSearcher.d.ts +13 -0
- package/components/project/selectorRegion/composables/selectorRegion.d.ts +25 -0
- package/components/project/selectorRegion/selectorRegion.d.ts +182 -0
- package/components/project/selectorRegion/selectorRegion.vue.d.ts +25 -0
- package/components/project/selectorRegion/stories/searchers.d.ts +3 -0
- package/components/project/selectorRegion/utils/consts.d.ts +20 -0
- package/components/project/selectorRegion/utils/utils.d.ts +23 -0
- package/components/project/utils.d.ts +1 -0
- package/components/tabs/tabs/content.vue.d.ts +9 -13
- package/components/tabs/tabs/tab.vue.d.ts +9 -13
- package/components/tabs/tabs/tabs.vue.d.ts +11 -15
- package/components/tabsView/tabsView/menu.vue.d.ts +17 -20
- package/components/tabsView/tabsView/menuDelimeter.vue.d.ts +2 -2
- package/components/tabsView/tabsView/menuItem.vue.d.ts +11 -29
- package/components/tabsView/tabsView/menuTitle.vue.d.ts +10 -14
- package/components/tabsView/tabsView/store.d.ts +6 -6
- package/components/tabsView/tabsView/tabsView.vue.d.ts +15 -31
- package/core/app.amd.js +1 -1
- package/core/app.amd.js.map +1 -1
- package/core/app.js +2 -2
- package/core/core/core.d.ts +0 -8
- package/core/core.amd.js +1 -1
- package/core/core.js +1 -1
- package/core/utils/date.d.ts +2 -2
- package/core/utils/scroll.d.ts +7 -1
- package/core/utils/searchers.d.ts +40 -0
- package/forms/forms.amd.js +1 -1
- package/forms/forms.js +5 -5
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.js +64 -64
- package/icomoon/Topvisor icons.json +5846 -0
- package/icomoon/demo.html +26 -26
- package/icomoon/fonts/Topvisor-2.svg +12 -12
- package/icomoon/fonts/Topvisor-2.ttf +0 -0
- package/icomoon/fonts/Topvisor-2.woff +0 -0
- package/icomoon/selection.json +1 -1
- package/icomoon/style.css +16 -16
- package/package.json +1 -1
- package/popup/popup.amd.js +1 -1
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.js +14 -14
- package/popup/worker.amd.js +1 -1
- package/popup/worker.d.ts +0 -4
- package/popup/worker.js +3 -4
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.js +366 -45
- package/project/project.js.map +1 -1
- package/project/utils.amd.js +2 -0
- package/project/utils.amd.js.map +1 -0
- package/project/utils.d.ts +2 -0
- package/project/utils.js +6 -0
- package/project/utils.js.map +1 -0
- package/tabs/tabs.amd.js +1 -1
- package/tabs/tabs.js +1 -1
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.amd.js.map +1 -1
- package/tabsView/tabsView.js +150 -143
- package/tabsView/tabsView.js.map +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.js +1 -1
- package/utils/lodash.amd.js +1 -1
- package/utils/lodash.js +4 -4
- package/utils/price.amd.js +1 -1
- package/utils/price.amd.js.map +1 -1
- package/utils/price.js +6 -7
- package/utils/price.js.map +1 -1
- package/utils/scroll.amd.js +1 -1
- package/utils/scroll.amd.js.map +1 -1
- package/utils/scroll.js +10 -8
- package/utils/scroll.js.map +1 -1
- package/utils/searchers.amd.js +2 -0
- package/utils/searchers.amd.js.map +1 -0
- package/utils/searchers.d.ts +2 -0
- package/utils/searchers.js +130 -0
- package/utils/searchers.js.map +1 -0
- package/utils/string.amd.js +1 -1
- package/utils/string.amd.js.map +1 -1
- package/utils/string.js +1 -1
- package/.chunks/forms-BImXJ_ZO.amd.js +0 -3
- package/.chunks/forms-BImXJ_ZO.amd.js.map +0 -1
- package/.chunks/forms-D9r2-H5Y.es.js.map +0 -1
- package/.chunks/i18n-C_OH9IT3.amd.js +0 -2
- package/.chunks/i18n-C_OH9IT3.amd.js.map +0 -1
- package/.chunks/i18n-DuTvft1T.es.js +0 -26
- package/.chunks/i18n-DuTvft1T.es.js.map +0 -1
package/icomoon/style.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
@font-face {
|
|
2
2
|
font-family: 'Topvisor-2';
|
|
3
3
|
src:
|
|
4
|
-
url('fonts/Topvisor-2.ttf?
|
|
5
|
-
url('fonts/Topvisor-2.woff?
|
|
6
|
-
url('fonts/Topvisor-2.svg?
|
|
4
|
+
url('fonts/Topvisor-2.ttf?uywjxm') format('truetype'),
|
|
5
|
+
url('fonts/Topvisor-2.woff?uywjxm') format('woff'),
|
|
6
|
+
url('fonts/Topvisor-2.svg?uywjxm#Topvisor-2') format('svg');
|
|
7
7
|
font-weight: normal;
|
|
8
8
|
font-style: normal;
|
|
9
9
|
font-display: block;
|
|
@@ -73,25 +73,25 @@
|
|
|
73
73
|
content: "\e989";
|
|
74
74
|
}
|
|
75
75
|
.icon2-arrows-expand-horizontal:before {
|
|
76
|
-
content: "\
|
|
76
|
+
content: "\e9e3";
|
|
77
77
|
}
|
|
78
78
|
.icon2-arrows-expand-vertical:before {
|
|
79
|
-
content: "\
|
|
79
|
+
content: "\e9e4";
|
|
80
80
|
}
|
|
81
81
|
.icon2-arrows-in:before {
|
|
82
|
-
content: "\
|
|
82
|
+
content: "\e9e5";
|
|
83
83
|
}
|
|
84
84
|
.icon2-arrows-out:before {
|
|
85
|
-
content: "\
|
|
85
|
+
content: "\e9e6";
|
|
86
86
|
}
|
|
87
87
|
.icon2-arrows-vertical-up:before {
|
|
88
|
-
content: "\
|
|
88
|
+
content: "\e9e7";
|
|
89
89
|
}
|
|
90
90
|
.icon2-chevron-contract:before {
|
|
91
|
-
content: "\
|
|
91
|
+
content: "\e9e9";
|
|
92
92
|
}
|
|
93
93
|
.icon2-chevron-expand:before {
|
|
94
|
-
content: "\
|
|
94
|
+
content: "\e9e8";
|
|
95
95
|
}
|
|
96
96
|
.icon2-select:before {
|
|
97
97
|
content: "\e9ce";
|
|
@@ -184,13 +184,13 @@
|
|
|
184
184
|
content: "\e91b";
|
|
185
185
|
}
|
|
186
186
|
.icon2-circle:before {
|
|
187
|
-
content: "\
|
|
188
|
-
}
|
|
189
|
-
.icon2-filled-circle:before {
|
|
190
|
-
content: "\e9e5";
|
|
187
|
+
content: "\e9ea";
|
|
191
188
|
}
|
|
192
189
|
.icon2-circles:before {
|
|
193
|
-
content: "\
|
|
190
|
+
content: "\e9eb";
|
|
191
|
+
}
|
|
192
|
+
.icon2-filled-circle:before {
|
|
193
|
+
content: "\e9ec";
|
|
194
194
|
}
|
|
195
195
|
.icon2-campaign:before {
|
|
196
196
|
content: "\e9cf";
|
|
@@ -415,7 +415,7 @@
|
|
|
415
415
|
content: "\e9d3";
|
|
416
416
|
}
|
|
417
417
|
.icon2-printer:before {
|
|
418
|
-
content: "\
|
|
418
|
+
content: "\e9ed";
|
|
419
419
|
}
|
|
420
420
|
.icon2-globe:before {
|
|
421
421
|
content: "\e9e2";
|
package/package.json
CHANGED
package/popup/popup.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
define(["require","exports","../.chunks/listItem.vue_vue_type_script_setup_true_lang-CEF3WDJ_.amd","vue","../.chunks/forms-CjYoXTEQ.amd","../require/css.amd!../assets/popup.css"],function(W,i,m,e,r){"use strict";if(typeof e>"u")var e=window.Vue;const y=e.defineComponent({__name:"widgetInput",props:e.mergeModels({modelValue:{},name:{},disabled:{type:Boolean},readonly:{type:Boolean},modificator:{},size:{},isError:{type:Boolean},isLoading:{type:Boolean},icon:{},icon2:{},addCleaner:{type:Boolean,default:!0},title:{},captionType:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(u){const a=e.useModel(u,"modelValue");return(l,o)=>(e.openBlock(),e.createBlock(r.TopInput$1,e.mergeProps(l.$props,{modificator:"popupWidgetInput",modelValue:a.value,"onUpdate:modelValue":o[0]||(o[0]=t=>a.value=t)}),null,16,["modelValue"]))}}),S={$style:{"top-input-popupWidgetInput":"top-input-popupWidgetInput","top-input_input-popupWidgetInput":"top-input_input-popupWidgetInput"}},$=r._export_sfc(y,[["__cssModules",S]]),B=e.defineComponent({__name:"alert",props:{submitText:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{}},emits:["open","close","scrollContentList"],setup(u){const l={...u,submitText:void 0};return delete l.submitText,(o,t)=>(e.openBlock(),e.createBlock(m.Popup,e.mergeProps({class:"top-popupAlert"},l,{onOpen:t[0]||(t[0]=()=>o.$emit("open")),onClose:t[1]||(t[1]=()=>o.$emit("close")),onScrollContentList:t[2]||(t[2]=(...d)=>o.$emit("scrollContentList",...d))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(o.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(o.$slots,"footer"),e.createVNode(r.TopButton,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.submitText||o.$i18n.Common.Close),1)]),_:1})]),_:2},[o.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"header")]),key:"0"}:void 0,o.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),key:"1"}:void 0]),1040))}}),P=e.defineComponent({__name:"confirm",props:{cancelText:{},submitText:{},isWarning:{type:Boolean},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{}},emits:["open","close","scrollContentList","submit"],setup(u,{emit:a}){const l=u,o=a,t=e.ref(!1),d=()=>{t.value=!0,o("submit")},c=()=>{if(t.value){t.value=!1;return}o("close")},f={...l,submitText:void 0,cancelText:void 0,isWarning:void 0};return delete f.submitText,delete f.cancelText,delete f.isWarning,(n,s)=>(e.openBlock(),e.createBlock(m.Popup,e.mergeProps({class:"top-popupConfirm"},f,{onOpen:s[0]||(s[0]=()=>n.$emit("open")),onClose:c,onScrollContentList:s[1]||(s[1]=(...p)=>n.$emit("scrollContentList",...p))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(n.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(n.$slots,"footer"),e.createVNode(r.TopButton,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.cancelText||n.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(r.TopButton,{onClick:d,color:n.isWarning?"red":"blue"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.submitText||n.$i18n.Common.Continue),1)]),_:1},8,["color"])]),_:2},[n.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"header")]),key:"0"}:void 0,n.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),key:"1"}:void 0]),1040))}}),V=e.defineComponent({__name:"prompt",props:{submitText:{},cancelText:{},defaultValue:{},id:{},class:{},transitionDuration:{},footerSupportLink:{},pos:{},notch:{type:Boolean},openByHover:{type:Boolean},posBy:{}},emits:["open","close","scrollContentList","submit"],setup(u,{emit:a}){const l=u,o=a,t=()=>c.value=l.defaultValue??"",d=e.ref(!1),c=e.ref();e.watch(()=>l.defaultValue,()=>t(),{immediate:!0});const f=()=>{d.value=!0},n=()=>{if(d.value){d.value=!1,o("submit",c.value),t();return}t(),o("close")},s={...l,submitText:void 0,cancelText:void 0,defaultValue:void 0};return delete s.submitText,delete s.cancelText,delete s.defaultValue,(p,C)=>(e.openBlock(),e.createBlock(m.Popup,e.mergeProps({class:"top-popupPrompt"},s,{onOpen:C[1]||(C[1]=()=>p.$emit("open")),onClose:n,onScrollContentList:C[2]||(C[2]=(...T)=>p.$emit("scrollContentList",...T))}),e.createSlots({opener:e.withCtx(()=>[e.renderSlot(p.$slots,"opener")]),footer:e.withCtx(()=>[e.renderSlot(p.$slots,"footer"),e.createVNode(r.TopButton,{color:"theme"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.cancelText||p.$i18n.Common.Cancel),1)]),_:1}),e.createVNode(r.TopButton,{onClick:f},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.submitText||p.$i18n.Common.OK),1)]),_:1})]),_:2},[p.$slots.header?{name:"header",fn:e.withCtx(()=>[e.renderSlot(p.$slots,"header")]),key:"0"}:void 0,p.$slots.default?{name:"content",fn:e.withCtx(()=>[e.renderSlot(p.$slots,"default"),e.createVNode($,{modelValue:c.value,"onUpdate:modelValue":C[0]||(C[0]=T=>c.value=T),modelModifiers:{trim:!0}},null,8,["modelValue"])]),key:"1"}:void 0]),1040))}}),v=m.Popup,b=m._sfc_main,g=m._sfc_main$1,k=$,w=B,h=P,L=V;i.TopPopup=v,i.TopPopupAlert=w,i.TopPopupConfirm=h,i.TopPopupListItem=g,i.TopPopupOpener=b,i.TopPopupPrompt=L,i.TopPopupWidgetInput=k,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=popup.amd.js.map
|
package/popup/popup.amd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popup.amd.js","sources":["../../src/components/popup/alert/alert.vue","../../src/components/popup/confirm/confirm.vue","../../src/components/popup/prompt/prompt.vue","../../src/components/popup/popup.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { Emits, Props } from './alert';\r\nimport TopButton from '@/components/forms/button/button.vue';\r\nimport TopPopup from '@/components/popup/popup/popup.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\ndefineEmits<Emits>();\r\n\r\nconst $propsPopup = { ...props, submitText: undefined };\r\ndelete $propsPopup.submitText;\r\n</script>\r\n\r\n<template>\r\n\t<TopPopup\r\n\t\tclass=\"top-popupAlert\"\r\n\t\t:=$propsPopup\r\n\t\t@open=\"() => $emit('open')\"\r\n\t\t@close=\"() => $emit('close')\"\r\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\r\n\t>\r\n\t\t<template #opener>\r\n\t\t\t<!-- @slot Элемент для открытия Popup -->\r\n\t\t\t<slot name=\"opener\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #header v-if=\"$slots.header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #content v-if=\"$slots.default\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #footer>\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\r\n\t\t\t<TopButton>\r\n\t\t\t\t{{ submitText || $i18n.Common.Close }}\r\n\t\t\t</TopButton>\r\n\t\t</template>\r\n\t</TopPopup>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport type { Emits, Props } from './confirm';\r\nimport TopButton from '@/components/forms/button/button.vue';\r\nimport TopPopup from '@/components/popup/popup/popup.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst isSubmit = ref(false);\r\n\r\nconst onSubmit = () => {\r\n\tisSubmit.value = true;\r\n\r\n\temit('submit');\r\n};\r\n\r\nconst onClose = () => {\r\n\tif (isSubmit.value) {\r\n\t\tisSubmit.value = false;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\temit('close');\r\n};\r\n\r\nconst $propsPopup = { ...props, submitText: undefined, cancelText: undefined, isWarning: undefined };\r\ndelete $propsPopup.submitText;\r\ndelete $propsPopup.cancelText;\r\ndelete $propsPopup.isWarning;\r\n</script>\r\n\r\n<template>\r\n\t<TopPopup\r\n\t\tclass=\"top-popupConfirm\"\r\n\t\t:=$propsPopup\r\n\t\t@open=\"() => $emit('open')\"\r\n\t\t@close=\"onClose\"\r\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\r\n\t>\r\n\t\t<template #opener>\r\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\r\n\t\t\t<slot name=\"opener\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #header v-if=\"$slots.header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #content v-if=\"$slots.default\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #footer>\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\r\n\t\t\t<TopButton color=\"theme\">\r\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\r\n\t\t\t</TopButton>\r\n\r\n\t\t\t<TopButton\r\n\t\t\t\t@click=\"onSubmit\"\r\n\t\t\t\t:color=\"isWarning ? 'red' : 'blue'\"\r\n\t\t\t>\r\n\t\t\t\t{{ submitText || $i18n.Common.Continue }}\r\n\t\t\t</TopButton>\r\n\t\t</template>\r\n\t</TopPopup>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { ref, watch } from 'vue';\r\nimport type { Emits, Props } from './prompt';\r\nimport TopButton from '@/components/forms/button/button.vue';\r\nimport TopPopup from '@/components/popup/popup/popup.vue';\r\nimport TopPopupWidgetInput from '@/components/popup/popup/widgetInput.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst reset = () => localValue.value = props.defaultValue ?? '';\r\n\r\nconst isSubmit = ref(false);\r\n\r\nconst localValue = ref();\r\nwatch(() => props.defaultValue, () => reset(), { immediate: true });\r\n\r\nconst onSubmit = () => {\r\n\tisSubmit.value = true;\r\n};\r\n\r\nconst onClose = () => {\r\n\tif (isSubmit.value) {\r\n\t\tisSubmit.value = false;\r\n\r\n\t\temit('submit', localValue.value);\r\n\r\n\t\treset();\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\treset();\r\n\r\n\temit('close');\r\n};\r\n\r\nconst $propsPopup = { ...props, submitText: undefined, cancelText: undefined, defaultValue: undefined };\r\ndelete $propsPopup.submitText;\r\ndelete $propsPopup.cancelText;\r\ndelete $propsPopup.defaultValue;\r\n</script>\r\n\r\n<template>\r\n\t<TopPopup\r\n\t\tclass=\"top-popupPrompt\"\r\n\t\t:=$propsPopup\r\n\t\t@open=\"() => $emit('open')\"\r\n\t\t@close=\"onClose\"\r\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\r\n\t>\r\n\t\t<template #opener>\r\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\r\n\t\t\t<slot name=\"opener\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #header v-if=\"$slots.header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #content v-if=\"$slots.default\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot></slot>\r\n\r\n\t\t\t<TopPopupWidgetInput v-model.trim=\"localValue\"/>\r\n\t\t</template>\r\n\r\n\t\t<template #footer>\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\r\n\t\t\t<TopButton color=\"theme\">\r\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\r\n\t\t\t</TopButton>\r\n\r\n\t\t\t<TopButton @click=\"onSubmit\">\r\n\t\t\t\t{{ submitText || $i18n.Common.OK }}\r\n\t\t\t</TopButton>\r\n\t\t</template>\r\n\t</TopPopup>\r\n</template>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport Popup from './popup/popup.vue';\r\nimport PopupOpener from './popup/opener.vue';\r\nimport PopupListItem from './popup/listItem.vue';\r\nimport PopupWidgetInput from './popup/widgetInput.vue';\r\nimport PopupAlert from './alert/alert.vue';\r\nimport PopupConfirm from './confirm/confirm.vue';\r\nimport PopupPrompt from './prompt/prompt.vue';\r\n\r\nexport const TopPopup = Popup as typeof Popup & ComponentCustomProps;\r\nexport const TopPopupOpener = PopupOpener as typeof PopupOpener & ComponentCustomProps;\r\nexport const TopPopupListItem = PopupListItem as typeof PopupListItem & ComponentCustomProps;\r\nexport const TopPopupWidgetInput = PopupWidgetInput as typeof PopupWidgetInput & ComponentCustomProps;\r\nexport const TopPopupAlert = PopupAlert as typeof PopupAlert & ComponentCustomProps;\r\nexport const TopPopupConfirm = PopupConfirm as typeof PopupConfirm & ComponentCustomProps;\r\nexport const TopPopupPrompt = PopupPrompt as typeof PopupPrompt & ComponentCustomProps;\r\n"],"names":["$propsPopup","__props","props","emit","__emit","isSubmit","vue","reset","localValue","TopPopup","listItem_vue_vue_type_script_setup_true_lang","TopPopupOpener","TopPopupListItem","TopPopupWidgetInput","PopupWidgetInput","TopPopupAlert","_sfc_main$2","TopPopupConfirm","_sfc_main$1","TopPopupPrompt","_sfc_main"],"mappings":"svCASA,MAAAA,EAAA,CAAA,GAJAC,EAIA,WAAA,MAAA,EACA,cAAAD,EAAA,sgCCJA,MAAAE,EAAAD,EAEAE,EAAAC,EAEAC,EAAAC,EAAA,IAAA,EAAA,SAGCD,EAAA,MAAA,GAEAF,EAAA,QAAA,CAAa,SAIb,GAAAE,EAAA,MAAA,CACCA,EAAA,MAAA,GAEA,OAGDF,EAAA,OAAA,CAAY,gEAIb,cAAAH,EAAA,WACA,OAAAA,EAAA,WACA,OAAAA,EAAA,wqCCxBA,MAAAE,EAAAD,EAEAE,EAAAC,EAEAG,EAAA,IAAAC,EAAA,MAAAN,EAAA,cAAA,GAEAG,EAAAC,EAAA,IAAA,EAAA,EAEAE,EAAAF,EAAA,IAAA,EACAA,EAAA,MAAA,IAAAJ,EAAA,aAAA,IAAAK,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,eAGCF,EAAA,MAAA,EAAiB,SAIjB,GAAAA,EAAA,MAAA,CACCA,EAAA,MAAA,2BAMA,WAKDF,EAAA,OAAA,CAAY,mEAIb,cAAAH,EAAA,WACA,OAAAA,EAAA,WACA,OAAAA,EAAA,q+BC/BOS,EAAAC,EAAA,MACAC,EAAAD,EAAA,
|
|
1
|
+
{"version":3,"file":"popup.amd.js","sources":["../../src/components/popup/alert/alert.vue","../../src/components/popup/confirm/confirm.vue","../../src/components/popup/prompt/prompt.vue","../../src/components/popup/popup.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { Emits, Props } from './alert';\r\nimport TopButton from '@/components/forms/button/button.vue';\r\nimport TopPopup from '@/components/popup/popup/popup.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\ndefineEmits<Emits>();\r\n\r\nconst $propsPopup = { ...props, submitText: undefined };\r\ndelete $propsPopup.submitText;\r\n</script>\r\n\r\n<template>\r\n\t<TopPopup\r\n\t\tclass=\"top-popupAlert\"\r\n\t\t:=$propsPopup\r\n\t\t@open=\"() => $emit('open')\"\r\n\t\t@close=\"() => $emit('close')\"\r\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\r\n\t>\r\n\t\t<template #opener>\r\n\t\t\t<!-- @slot Элемент для открытия Popup -->\r\n\t\t\t<slot name=\"opener\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #header v-if=\"$slots.header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #content v-if=\"$slots.default\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #footer>\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\r\n\t\t\t<TopButton>\r\n\t\t\t\t{{ submitText || $i18n.Common.Close }}\r\n\t\t\t</TopButton>\r\n\t\t</template>\r\n\t</TopPopup>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport type { Emits, Props } from './confirm';\r\nimport TopButton from '@/components/forms/button/button.vue';\r\nimport TopPopup from '@/components/popup/popup/popup.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst isSubmit = ref(false);\r\n\r\nconst onSubmit = () => {\r\n\tisSubmit.value = true;\r\n\r\n\temit('submit');\r\n};\r\n\r\nconst onClose = () => {\r\n\tif (isSubmit.value) {\r\n\t\tisSubmit.value = false;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\temit('close');\r\n};\r\n\r\nconst $propsPopup = { ...props, submitText: undefined, cancelText: undefined, isWarning: undefined };\r\ndelete $propsPopup.submitText;\r\ndelete $propsPopup.cancelText;\r\ndelete $propsPopup.isWarning;\r\n</script>\r\n\r\n<template>\r\n\t<TopPopup\r\n\t\tclass=\"top-popupConfirm\"\r\n\t\t:=$propsPopup\r\n\t\t@open=\"() => $emit('open')\"\r\n\t\t@close=\"onClose\"\r\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\r\n\t>\r\n\t\t<template #opener>\r\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\r\n\t\t\t<slot name=\"opener\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #header v-if=\"$slots.header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #content v-if=\"$slots.default\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #footer>\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\r\n\t\t\t<TopButton color=\"theme\">\r\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\r\n\t\t\t</TopButton>\r\n\r\n\t\t\t<TopButton\r\n\t\t\t\t@click=\"onSubmit\"\r\n\t\t\t\t:color=\"isWarning ? 'red' : 'blue'\"\r\n\t\t\t>\r\n\t\t\t\t{{ submitText || $i18n.Common.Continue }}\r\n\t\t\t</TopButton>\r\n\t\t</template>\r\n\t</TopPopup>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { ref, watch } from 'vue';\r\nimport type { Emits, Props } from './prompt';\r\nimport TopButton from '@/components/forms/button/button.vue';\r\nimport TopPopup from '@/components/popup/popup/popup.vue';\r\nimport TopPopupWidgetInput from '@/components/popup/popup/widgetInput.vue';\r\n\r\nconst props = defineProps<Props>();\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst reset = () => localValue.value = props.defaultValue ?? '';\r\n\r\nconst isSubmit = ref(false);\r\n\r\nconst localValue = ref();\r\nwatch(() => props.defaultValue, () => reset(), { immediate: true });\r\n\r\nconst onSubmit = () => {\r\n\tisSubmit.value = true;\r\n};\r\n\r\nconst onClose = () => {\r\n\tif (isSubmit.value) {\r\n\t\tisSubmit.value = false;\r\n\r\n\t\temit('submit', localValue.value);\r\n\r\n\t\treset();\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\treset();\r\n\r\n\temit('close');\r\n};\r\n\r\nconst $propsPopup = { ...props, submitText: undefined, cancelText: undefined, defaultValue: undefined };\r\ndelete $propsPopup.submitText;\r\ndelete $propsPopup.cancelText;\r\ndelete $propsPopup.defaultValue;\r\n</script>\r\n\r\n<template>\r\n\t<TopPopup\r\n\t\tclass=\"top-popupPrompt\"\r\n\t\t:=$propsPopup\r\n\t\t@open=\"() => $emit('open')\"\r\n\t\t@close=\"onClose\"\r\n\t\t@scrollContentList=\"(...args) => $emit('scrollContentList', ...args)\"\r\n\t>\r\n\t\t<template #opener>\r\n\t\t\t<!-- @slot Элемент для открытия TopPopup -->\r\n\t\t\t<slot name=\"opener\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #header v-if=\"$slots.header\">\r\n\t\t\t<!-- @slot Шапка -->\r\n\t\t\t<slot name=\"header\"></slot>\r\n\t\t</template>\r\n\r\n\t\t<template #content v-if=\"$slots.default\">\r\n\t\t\t<!-- @slot Контент в свободной форме -->\r\n\t\t\t<slot></slot>\r\n\r\n\t\t\t<TopPopupWidgetInput v-model.trim=\"localValue\"/>\r\n\t\t</template>\r\n\r\n\t\t<template #footer>\r\n\t\t\t<!-- @slot Футер -->\r\n\t\t\t<slot name=\"footer\"></slot>\r\n\r\n\t\t\t<TopButton color=\"theme\">\r\n\t\t\t\t{{ cancelText || $i18n.Common.Cancel }}\r\n\t\t\t</TopButton>\r\n\r\n\t\t\t<TopButton @click=\"onSubmit\">\r\n\t\t\t\t{{ submitText || $i18n.Common.OK }}\r\n\t\t\t</TopButton>\r\n\t\t</template>\r\n\t</TopPopup>\r\n</template>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport Popup from './popup/popup.vue';\r\nimport PopupOpener from './popup/opener.vue';\r\nimport PopupListItem from './popup/listItem.vue';\r\nimport PopupWidgetInput from './popup/widgetInput.vue';\r\nimport PopupAlert from './alert/alert.vue';\r\nimport PopupConfirm from './confirm/confirm.vue';\r\nimport PopupPrompt from './prompt/prompt.vue';\r\n\r\nexport const TopPopup = Popup as typeof Popup & ComponentCustomProps;\r\nexport const TopPopupOpener = PopupOpener as typeof PopupOpener & ComponentCustomProps;\r\nexport const TopPopupListItem = PopupListItem as typeof PopupListItem & ComponentCustomProps;\r\nexport const TopPopupWidgetInput = PopupWidgetInput as typeof PopupWidgetInput & ComponentCustomProps;\r\nexport const TopPopupAlert = PopupAlert as typeof PopupAlert & ComponentCustomProps;\r\nexport const TopPopupConfirm = PopupConfirm as typeof PopupConfirm & ComponentCustomProps;\r\nexport const TopPopupPrompt = PopupPrompt as typeof PopupPrompt & ComponentCustomProps;\r\n"],"names":["$propsPopup","__props","props","emit","__emit","isSubmit","vue","reset","localValue","TopPopup","listItem_vue_vue_type_script_setup_true_lang","TopPopupOpener","TopPopupListItem","TopPopupWidgetInput","PopupWidgetInput","TopPopupAlert","_sfc_main$2","TopPopupConfirm","_sfc_main$1","TopPopupPrompt","_sfc_main"],"mappings":"svCASA,MAAAA,EAAA,CAAA,GAJAC,EAIA,WAAA,MAAA,EACA,cAAAD,EAAA,sgCCJA,MAAAE,EAAAD,EAEAE,EAAAC,EAEAC,EAAAC,EAAA,IAAA,EAAA,SAGCD,EAAA,MAAA,GAEAF,EAAA,QAAA,CAAa,SAIb,GAAAE,EAAA,MAAA,CACCA,EAAA,MAAA,GAEA,OAGDF,EAAA,OAAA,CAAY,gEAIb,cAAAH,EAAA,WACA,OAAAA,EAAA,WACA,OAAAA,EAAA,wqCCxBA,MAAAE,EAAAD,EAEAE,EAAAC,EAEAG,EAAA,IAAAC,EAAA,MAAAN,EAAA,cAAA,GAEAG,EAAAC,EAAA,IAAA,EAAA,EAEAE,EAAAF,EAAA,IAAA,EACAA,EAAA,MAAA,IAAAJ,EAAA,aAAA,IAAAK,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,eAGCF,EAAA,MAAA,EAAiB,SAIjB,GAAAA,EAAA,MAAA,CACCA,EAAA,MAAA,2BAMA,WAKDF,EAAA,OAAA,CAAY,mEAIb,cAAAH,EAAA,WACA,OAAAA,EAAA,WACA,OAAAA,EAAA,q+BC/BOS,EAAAC,EAAA,MACAC,EAAAD,EAAA,UACAE,EAAAF,EAAA,YACAG,EAAAC,EACAC,EAAAC,EACAC,EAAAC,EACAC,EAAAC"}
|
package/popup/popup.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import k from "../core/core.js";
|
|
2
|
-
import { P as v,
|
|
2
|
+
import { P as v, _ as I, a as M } from "../.chunks/listItem.vue_vue_type_script_setup_true_lang-Bb7B8CTJ.es.js";
|
|
3
3
|
import { defineComponent as y, mergeModels as O, useModel as D, openBlock as b, createBlock as B, mergeProps as V, createSlots as S, withCtx as o, renderSlot as l, createVNode as c, createTextVNode as $, toDisplayString as T, ref as P, watch as w } from "vue";
|
|
4
|
-
import {
|
|
4
|
+
import { v as H, _ as N, T as C } from "../.chunks/forms-CHiMZ8vg.es.js";
|
|
5
5
|
const W = ["../assets/popup.css"].map((i) => import.meta.resolve(i));
|
|
6
6
|
k.insertCSSLinkToPage(W, !0);
|
|
7
7
|
const h = /* @__PURE__ */ y({
|
|
@@ -28,11 +28,11 @@ const h = /* @__PURE__ */ y({
|
|
|
28
28
|
}),
|
|
29
29
|
emits: ["update:modelValue"],
|
|
30
30
|
setup(i) {
|
|
31
|
-
const
|
|
31
|
+
const r = D(i, "modelValue");
|
|
32
32
|
return (p, e) => (b(), B(H, V(p.$props, {
|
|
33
33
|
modificator: "popupWidgetInput",
|
|
34
|
-
modelValue:
|
|
35
|
-
"onUpdate:modelValue": e[0] || (e[0] = (t) =>
|
|
34
|
+
modelValue: r.value,
|
|
35
|
+
"onUpdate:modelValue": e[0] || (e[0] = (t) => r.value = t)
|
|
36
36
|
}), null, 16, ["modelValue"]));
|
|
37
37
|
}
|
|
38
38
|
}), A = {
|
|
@@ -107,8 +107,8 @@ const h = /* @__PURE__ */ y({
|
|
|
107
107
|
posBy: {}
|
|
108
108
|
},
|
|
109
109
|
emits: ["open", "close", "scrollContentList", "submit"],
|
|
110
|
-
setup(i, { emit:
|
|
111
|
-
const p = i, e =
|
|
110
|
+
setup(i, { emit: r }) {
|
|
111
|
+
const p = i, e = r, t = P(!1), a = () => {
|
|
112
112
|
t.value = !0, e("submit");
|
|
113
113
|
}, m = () => {
|
|
114
114
|
if (t.value) {
|
|
@@ -117,10 +117,10 @@ const h = /* @__PURE__ */ y({
|
|
|
117
117
|
}
|
|
118
118
|
e("close");
|
|
119
119
|
}, d = { ...p, submitText: void 0, cancelText: void 0, isWarning: void 0 };
|
|
120
|
-
return delete d.submitText, delete d.cancelText, delete d.isWarning, (n,
|
|
121
|
-
onOpen:
|
|
120
|
+
return delete d.submitText, delete d.cancelText, delete d.isWarning, (n, u) => (b(), B(v, V({ class: "top-popupConfirm" }, d, {
|
|
121
|
+
onOpen: u[0] || (u[0] = () => n.$emit("open")),
|
|
122
122
|
onClose: m,
|
|
123
|
-
onScrollContentList:
|
|
123
|
+
onScrollContentList: u[1] || (u[1] = (...s) => n.$emit("scrollContentList", ...s))
|
|
124
124
|
}), S({
|
|
125
125
|
opener: o(() => [
|
|
126
126
|
l(n.$slots, "opener")
|
|
@@ -177,8 +177,8 @@ const h = /* @__PURE__ */ y({
|
|
|
177
177
|
posBy: {}
|
|
178
178
|
},
|
|
179
179
|
emits: ["open", "close", "scrollContentList", "submit"],
|
|
180
|
-
setup(i, { emit:
|
|
181
|
-
const p = i, e =
|
|
180
|
+
setup(i, { emit: r }) {
|
|
181
|
+
const p = i, e = r, t = () => m.value = p.defaultValue ?? "", a = P(!1), m = P();
|
|
182
182
|
w(() => p.defaultValue, () => t(), { immediate: !0 });
|
|
183
183
|
const d = () => {
|
|
184
184
|
a.value = !0;
|
|
@@ -188,8 +188,8 @@ const h = /* @__PURE__ */ y({
|
|
|
188
188
|
return;
|
|
189
189
|
}
|
|
190
190
|
t(), e("close");
|
|
191
|
-
},
|
|
192
|
-
return delete
|
|
191
|
+
}, u = { ...p, submitText: void 0, cancelText: void 0, defaultValue: void 0 };
|
|
192
|
+
return delete u.submitText, delete u.cancelText, delete u.defaultValue, (s, f) => (b(), B(v, V({ class: "top-popupPrompt" }, u, {
|
|
193
193
|
onOpen: f[1] || (f[1] = () => s.$emit("open")),
|
|
194
194
|
onClose: n,
|
|
195
195
|
onScrollContentList: f[2] || (f[2] = (...g) => s.$emit("scrollContentList", ...g))
|
package/popup/worker.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","../.chunks/forms-
|
|
1
|
+
define(["require","exports","../.chunks/forms-CjYoXTEQ.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 Worker{static noClose=!1;static vueConnectors=new Map;static options={};static getPopup(t){return utils_dom.default.storage(t,"TopPopup")}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(t){if(!(t instanceof HTMLElement))return;const o={};return o.popup=t.dataset.topPopup,o.id=t.dataset.topPopupId,t.dataset.topPopupP&&(o.p=parseInt(t.dataset.topPopupP)),t.dataset.topPopupPos&&(o.p=parseInt(t.dataset.topPopupPos)),t.dataset.topPopupNotch&&(o.notch=t.dataset.topPopupNotch==="true"||t.dataset.topPopupNotch==="1"),t.dataset.topPopupClass&&(o.class=t.dataset.topPopupClass),t.dataset.topPopupPosBy&&(o.posBy=t.dataset.topPopupPosBy),t.dataset.topPopupFront&&(o.frontSelector=t.dataset.topPopupFront),t.dataset.topPopupInvertX&&(o.invertX=t.dataset.topPopupInvertX==="true"||t.dataset.topPopupInvertX==="1"),t.dataset.topPopupOpenByHover&&(o.openByHover=t.dataset.topPopupOpenByHover==="true"||t.dataset.topPopupOpenByHover==="1"),t.dataset.topPopupUseOriginal&&(o.useOriginal=t.dataset.topPopupUseOriginal==="true"||t.dataset.topPopupUseOriginal==="1"),await Worker.open(t,o)}static async open(elOpener,options){elOpener instanceof HTMLElement&&(elOpener.dataset.topPopupOpened="opened");const{default:Popup}=await new Promise((t,o)=>require(["../.chunks/popup-C4Tne4qA.amd"],t,o));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,new Popup(elOpener,options)}static close(t){const o=Worker.getPopup(t);o&&o.close()}static recalcPosition(t){const o=Worker.getPopup(t);o&&o.elPopupBody instanceof HTMLElement&&(o.recalcPosition(),utils_scroll.genHasScroll(o.elPopupBody))}static scrollToActive(t){if(!utils_dom.default.querySelectorVisible(t,"ul.top-popup_content > li > .top-active"))return;const s=t.querySelector("ul.top-popup_content"),a=utils_dom.default.querySelectorAllVisible(t,"ul.top-popup_content > li");t.classList.add("top-popup-wrapper-no_animate"),setTimeout(()=>t.classList.remove("top-popup-wrapper-no_animate"),100);let p=100;for(const e of a){if(e.querySelector(":scope > .top-active"))break;e instanceof HTMLElement&&(p+=e.offsetHeight)}if(s instanceof HTMLElement){const e=s.offsetHeight;p>e?s.scrollTop=p-e:s.scrollTop=0}}static decoratorBeforeOpen(t){this.options.decoratorBeforeOpen&&this.options.decoratorBeforeOpen(t)}static decoratorAfterOpen(t){this.options.decoratorAfterOpen&&this.options.decoratorAfterOpen(t)}static decoratorIsIgnoreOuterClick(t){return this.options.decoratorIsIgnoreOuterClick?this.options.decoratorIsIgnoreOuterClick(t):!1}static regVueComponent(t,o){if(Worker.vueConnectors.get(t))throw"Vue component Popup use duplicated id: "+t;Worker.vueConnectors.set(t,o)}static unregVueComponent(t){Worker.vueConnectors.delete(t)}static genElPopupOpener(t,o,...s){const a=utils_dom.default.genEl(t,{},...s);a.dataset.topPopup="#"+o.id;for(let p in o){const e="topPopup"+p.charAt(0).toUpperCase()+p.slice(1);a.dataset[e]=o[p]}return a}}exports.TopPopupWorker=Worker,Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=worker.amd.js.map
|
package/popup/worker.d.ts
CHANGED
package/popup/worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as Core } from "../.chunks/forms-
|
|
1
|
+
import { C as Core } from "../.chunks/forms-CHiMZ8vg.es.js";
|
|
2
2
|
import DOM from "../utils/dom.js";
|
|
3
3
|
import { genHasScroll } from "../utils/scroll.js";
|
|
4
4
|
class Worker {
|
|
@@ -45,7 +45,7 @@ class Worker {
|
|
|
45
45
|
*/
|
|
46
46
|
static async open(elOpener, options) {
|
|
47
47
|
elOpener instanceof HTMLElement && (elOpener.dataset.topPopupOpened = "opened");
|
|
48
|
-
const { default: Popup } = await import("../.chunks/popup-
|
|
48
|
+
const { default: Popup } = await import("../.chunks/popup-D-G2sXks.es.js");
|
|
49
49
|
if (Core.$) {
|
|
50
50
|
const $elOpener = Core.$(elOpener);
|
|
51
51
|
if ($elOpener.data("aftershow")) {
|
|
@@ -125,7 +125,6 @@ class Worker {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
export {
|
|
128
|
-
Worker as TopPopupWorker
|
|
129
|
-
Worker as default
|
|
128
|
+
Worker as TopPopupWorker
|
|
130
129
|
};
|
|
131
130
|
//# sourceMappingURL=worker.js.map
|
package/project/project.amd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define(["require","exports","vue","../.chunks/forms-BImXJ_ZO.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-BxpjEUsq.amd","../.chunks/menu-CbhB9e4x.amd","../.chunks/i18n-C_OH9IT3.amd","../require/css.amd!../assets/project.css"],function(B,c,e,s,i,p,m){"use strict";if(typeof e>"u")var e=window.Vue;const d={class:"top-selectorCompetitors"},C={class:"top-ellipsis1"},k=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(r){const _=r,o=e.useModel(r,"modelValue"),y=e.computed(()=>{if(_.showSelectAllItem)return{icon:"",title:m.useI18n().Common.Select_all,value:"all",content:""}});return(n,a)=>(e.openBlock(),e.createElementBlock("div",d,[e.unref(s.Core).state.isMobile?(e.openBlock(),e.createBlock(i.Popup,{key:0},{opener:e.withCtx(()=>[e.createVNode(s.TopButton,{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,{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",C,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":a[0]||(a[0]=t=>o.value=t),items:n.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:y.value},null,8,["modelValue","items","selectAllItem"]))]))}}),f={$style:{"top-selectorCompetitors_opener":"top-selectorCompetitors_opener","top-button":"top-button"}},v=s._export_sfc(k,[["__cssModules",f]]);c.TopSelectorCompetitors=v,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
define(["require","exports","vue","../.chunks/forms-CjYoXTEQ.amd","../.chunks/listItem.vue_vue_type_script_setup_true_lang-CEF3WDJ_.amd","../.chunks/menu-D1lnYuWU.amd","../.chunks/utils-x88W55mf.amd","../utils/searchers.amd","../require/css.amd!../assets/project.css"],function(H,K,e,V,M,b,v,w){"use strict";if(typeof e>"u")var e=window.Vue;const q={class:"top-selectorCompetitors"},E={class:"top-ellipsis1"},T=e.defineComponent({__name:"selectorCompetitors",props:e.mergeModels({modelValue:{},items:{},showSelectAllItem:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const s=o,m=e.useModel(o,"modelValue"),t=e.computed(()=>{if(s.showSelectAllItem)return{icon:"",title:V.useI18n().Common.Select_all,value:"all",content:""}});return(n,u)=>(e.openBlock(),e.createElementBlock("div",q,[e.unref(V.Core).state.isMobile?(e.openBlock(),e.createBlock(M.Popup,{key:0},{opener:e.withCtx(()=>[e.createVNode(V.TopButton,{class:"top-selectorCompetitors_opener",color:"theme",icon:"",icon2:""},{default:e.withCtx(()=>{var l;return[e.createTextVNode(e.toDisplayString((l=n.items.find(r=>{var c;return r.value===((c=m.value)==null?void 0:c[0])}))==null?void 0:l.content),1)]}),_:1})]),contentList:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,(l,r)=>{var c;return e.openBlock(),e.createBlock(M._sfc_main$1,{class:e.normalizeClass({"top-active":(c=m.value)==null?void 0:c.includes(l.value)}),"data-top-icon":l.icon,title:l.title,onClick:()=>m.value=[l.value]},{default:e.withCtx(()=>[e.createElementVNode("span",E,e.toDisplayString(l.content),1)]),_:2},1032,["class","data-top-icon","title","onClick"])}),256))]),_:1})):(e.openBlock(),e.createBlock(b.Menu,{key:1,modelValue:m.value,"onUpdate:modelValue":u[0]||(u[0]=l=>m.value=l),items:n.items,isMultiple:!0,styling:"bar",canBeEmptyMultiple:!1,selectAllItem:t.value},null,8,["modelValue","items","selectAllItem"]))]))}}),F={$style:{"top-selectorCompetitors_opener":"top-selectorCompetitors_opener","top-button":"top-button"}},O=V._export_sfc(T,[["__cssModules",F]]),$=(o,s)=>{const m=V.useI18n(),t=e.ref(s.value.keys().next().value??v.dummyIndex),n=e.computed(()=>{const u=new Map;if(s.value.forEach(l=>{let r={value:l.key,title:l.name};o.addSearcherIcon&&(r.icon=w.getSearcherGIcon(l.key)),u.set(l.key,r)}),o.addCompare&&!u.has(v.dummyIndex)){const l={value:"",title:"--------------------",disabled:!0};u.set(l.value,l);const r={value:-1,title:m.Common.Compare};u.set(r.value,r)}return u});return{searcherKey:t,optionBySearcherKey:n}},L=(o,s)=>{var u,l,r;const m=V.useI18n(),t=e.ref(v.dummyIndex);o.modelValue.length===1&&(t.value=o.modelValue[0]),t.value===v.dummyIndex&&(o.forFrequency?t.value=((l=(u=s.value)==null?void 0:u.regionByIndex.values().next().value)==null?void 0:l.key)??v.dummyIndex:t.value=((r=s.value)==null?void 0:r.regionByIndex.keys().next().value)??v.dummyIndex);const n=e.computed(()=>{var g;const c=new Map;return(g=s.value.regionByIndex)==null||g.forEach(i=>{let a=i.name;if(o.forFrequency){const k={value:i.key,title:a};c.has(i.key)||c.set(i.key,k);return}i.device&&(a+=" ("+m.Common["Device_"+i.device]+")");const x=w.getLangLabel(s.value.key||0,i.lang??"");x&&(a+=" / "+x);const f={value:i.index,title:a,icon:i.device?w.getDeviceGIcon(i.device):void 0};c.set(i.index,f)}),c});return e.watch(n,(c,g)=>{var f;if(o.onlySearcher||t.value!==void 0&&c.get(t.value))return;let i=c.keys().next().value;if(t.value===v.dummyIndex||i===v.dummyIndex){t.value=i;return}let a=((f=g==null?void 0:g.get(t.value))==null?void 0:f.title)||"",x=-1;for(const[k,y]of c.entries()){const h=y.title;if(typeof h!="string"||typeof k=="string")break;if(h===a){i=k;break}const I=new RegExp(` \\((${m.Common.Device_1}|${m.Common.Device_2})\\)`);let p=a,B=3;h.indexOf(p)===-1&&(p=a.replace(/^[^a-zа-я]/i,"").replace(I,""),B--),h.indexOf(p)===-1&&(p=a.replace(/ \/.*/,""),B--),h.indexOf(p)===-1&&(p=a.replace(/ \/.*/,""),p=p.replace(/^[^a-zа-я]/i,"").replace(I,""),B--),h.indexOf(p)!==-1&&(B<=x||(x=B,i=k))}t.value=i}),{regionIndex:t,optionByRegionIndex:n}},D=(o,s,m)=>{const t=e.ref([]),n=()=>{if(o.onlySearcher&&s.value){t.value=Array.from(s.value.keys());return}let l=[];if(o.modelValue.length>1)l=[...o.modelValue];else try{l=JSON.parse(localStorage.getItem("ui:project:regionSelector"+o.projectId+":regionsIndexes"))??[]}catch{}l.length&&(l=l.filter(r=>m.value.has(r))),l.length||(l=Array.from(m.value)),t.value=[...l]},u=()=>{t.value.length?localStorage.setItem("ui:project:regionSelector:"+o.projectId+":regionsIndexes",JSON.stringify(t.value)):localStorage.removeItem("ui:project:regionSelector:"+o.projectId+":regionsIndexes")};return e.watch(t,()=>{u()}),o.addCompare&&n(),{regionsIndexes:t}},J=o=>{const s=e.computed(()=>v.genSearcherByKey(o.forFrequency,o.autoRegion,o.searchers)),m=e.computed(()=>s.value.get(n.searcherKey.value)||v.searcherUndefined),t=e.computed(()=>{const a=new Set;return s.value.forEach(x=>{var f;(f=x.regions)==null||f.forEach(k=>{k.index!==-1&&k.index!==v.dummyIndex&&a.add(k.index)})}),a}),n=$(o,s),u=L(o,m),l=D(o,s,t);e.watch(s,()=>{var x,f,k,y,h;if(n.searcherKey.value===-1){l.regionsIndexes.value=l.regionsIndexes.value.filter(I=>t.value.has(I));return}let a=s.value.keys().next().value;s.value.forEach(I=>{var p,B,d;if(u.regionIndex.value&&((p=I.regionByIndex)!=null&&p.has(u.regionIndex.value))&&(a=I.key),!o.onlySearcher){let S;a!==void 0&&(S=(B=s.value.get(a))==null?void 0:B.regionByIndex);const C=(d=s.value.get(I.key))==null?void 0:d.regionByIndex;S!=null&&S.has(v.dummyIndex)&&!(C!=null&&C.has(v.dummyIndex))&&(a=I.key)}}),o.addCompare&&!n.optionBySearcherKey.value.has(v.dummyIndex)&&!u.regionIndex.value&&(x=l.regionsIndexes.value)!=null&&x.length&&(a=-1),o.onlySearcher&&u.regionIndex.value!==v.dummyIndex&&(a=u.regionIndex.value),a!==void 0&&(n.searcherKey.value=a),u.regionIndex.value!==void 0&&!((k=(f=m.value)==null?void 0:f.regionByIndex)!=null&&k.has(u.regionIndex.value))&&(u.regionIndex.value=(h=(y=m.value)==null?void 0:y.regions)==null?void 0:h.keys().next().value)},{immediate:!0});const r=()=>{if(!(n.searcherKey.value===-1||n.searcherKey.value===v.dummyIndex))return n.searcherKey.value},c=()=>{if(o.onlySearcher||u.regionIndex.value===v.dummyIndex)return;let a=u.regionIndex.value;if(o.forFrequency){const x=u.regionIndex.value,f=v.findRegion(o.forFrequency,{searcher_key:r(),key:x},o.searchers);a=f==null?void 0:f.index}return a},g=()=>{const a=r();if(a!==void 0)return s.value.get(a)};return{selectSearcher:n,selectRegion:u,compare:l,searcherByKey:s,allRegionsIndexes:t,getSearcher:g,getRegion:()=>{var x,f;const a=c();if(a!==void 0)return(f=(x=g())==null?void 0:x.regionByIndex)==null?void 0:f.get(a)}}},A=e.defineComponent({__name:"selectorRegion",props:e.mergeModels({projectId:{},searchers:{default:()=>[]},modelValue:{},modelValueSingle:{},addCompare:{type:Boolean},forFrequency:{type:Boolean},autoRegion:{type:Boolean},onlySearcher:{type:Boolean},addChanger:{type:Boolean,default:!0},addSearcherIcon:{type:Boolean,default:!0},addRegionIcon:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{},modelValueSingle:{},modelValueSingleModifiers:{}}),emits:e.mergeModels(["compareRegions"],["update:modelValue","update:modelValueSingle"]),setup(o,{expose:s,emit:m}){const t=o,n=e.useModel(o,"modelValue"),u=e.useModel(o,"modelValueSingle"),l=m,{selectSearcher:r,selectRegion:c,compare:g,searcherByKey:i,allRegionsIndexes:a,getSearcher:x,getRegion:f}=J(t),k=()=>{var y;if(window.fieldTemplates&&((y=window.fieldTemplates)!=null&&y.openSelectorRegions)){window.fieldTemplates.openSelectorRegions(i.value,g.regionsIndexes.value,h=>g.regionsIndexes.value=h);return}l("compareRegions",i.value)};return e.watch([c.regionIndex,r.searcherKey,g.regionsIndexes],()=>{if(r.searcherKey.value===-1&&g.regionsIndexes.value.length){if(JSON.stringify(n.value)===JSON.stringify(g.regionsIndexes.value))return;n.value=[...g.regionsIndexes.value]}else n.value=[t.onlySearcher?r.searcherKey.value:c.regionIndex.value];a.value.size||(r.searcherKey.value=v.dummyIndex)}),u.value&&e.watch(u,()=>{n.value=[u.value]},{immediate:!0}),e.watch(n,()=>{var y,h,I,p,B;if(n.value[0]&&(u.value=n.value[0]),t.onlySearcher){if(!n.value.length||n.value.length===1&&!i.value.has(n.value[0])){let d=i.value.keys().next().value;d!==void 0&&(n.value=[d]);return}if(n.value.length>1&&JSON.stringify(n.value)!==JSON.stringify(g.regionsIndexes.value)){n.value=[...g.regionsIndexes.value];return}}else{let d=[...new Set(n.value)],S=(h=(y=i.value.values().next().value)==null?void 0:y.regionByIndex)==null?void 0:h.keys().next().value;if(t.forFrequency&&(S=(B=(p=(I=i.value.values().next().value)==null?void 0:I.regionByIndex)==null?void 0:p.values().next().value)==null?void 0:B.key),!d.length)S!==void 0&&d.push(S);else if(d.length===1){let C=a.value;t.forFrequency&&(C=new Set,i.value.forEach(N=>{N.regionByIndex.forEach(R=>{R.index!==-1&&R.index!==v.dummyIndex&&C.add(R.key)})})),!C.has(d[0])&&d[0]!==-2&&(d=[],S!==void 0&&d.push(S))}else d=d.filter(C=>a.value.has(C)),!d.length&&S!==void 0&&d.push(S);if(JSON.stringify(n.value)!==JSON.stringify(d)){n.value=d;return}}if(!(n.value.length===1&&n.value[0]===(t.onlySearcher?r.searcherKey.value:c.regionIndex.value)))if(t.onlySearcher){if(n.value.length===1){r.searcherKey.value=n.value[0];return}r.searcherKey.value=-1;return}else if(n.value.length===1&&r.searcherKey.value!==-1){c.regionIndex.value=n.value[0];let d;for(const S of i.value.values()){for(const C of S.regionByIndex.values())if((t.forFrequency?C.key:C.index)===c.regionIndex.value){d=S.key;break}if(d!==void 0)break}d!==void 0&&(r.searcherKey.value=d)}else r.searcherKey.value=-1,g.regionsIndexes.value=[...n.value]},{immediate:!0}),s({getSearcher:x,getRegion:f}),(y,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"top-selectorRegion":!0,"top-selectorRegion-onlySearcher":y.onlySearcher})},[e.createVNode(V.Select,{options:e.unref(r).optionBySearcherKey.value,modelValue:e.unref(r).searcherKey.value,"onUpdate:modelValue":h[0]||(h[0]=I=>e.unref(r).searcherKey.value=I),name:"searcher_key",addChanger:y.addChanger},null,8,["options","modelValue","addChanger"]),!y.onlySearcher&&e.unref(r).searcherKey.value!==-1?(e.openBlock(),e.createBlock(V.Select,{key:0,class:"top-select-region",options:e.unref(c).optionByRegionIndex.value,modelValue:e.unref(c).regionIndex.value,"onUpdate:modelValue":h[1]||(h[1]=I=>e.unref(c).regionIndex.value=I),name:y.forFrequency?"region_key":"region_index",addChanger:y.addChanger,"data-top-icon":y.addRegionIcon?"":void 0},null,8,["options","modelValue","name","addChanger","data-top-icon"])):e.createCommentVNode("",!0),y.addCompare&&!y.onlySearcher&&e.unref(r).searcherKey.value===-1?(e.openBlock(),e.createBlock(V.TopButton,{key:1,name:"compare",onClick:k,"data-count-compare-regions-indexes":e.unref(g).regionsIndexes.value.length},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.$i18n.Common.Selected_regions),1)]),_:1},8,["data-count-compare-regions-indexes"])):e.createCommentVNode("",!0)],2))}}),z={$style:{"top-select-searcher_key":"top-select-searcher_key","top-selectorRegion":"top-selectorRegion","top-select":"top-select","top-select_select":"top-select_select","top-error":"top-error","top-select-region":"top-select-region","top-selectorRegion-onlySearcher":"top-selectorRegion-onlySearcher"}},U=V._export_sfc(A,[["__cssModules",z]]),G=O,P=U;K.TopSelectorCompetitors=G,K.TopSelectorRegion=P,Object.defineProperty(K,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","../../src/components/project/project.ts"],"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\nimport { useI18n } from '@/core/plugins/i18n';\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: useI18n().Common.Select_all,\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>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport SelectorCompetitors from './selectorCompetitors/selectorCompetitors.vue';\r\n\r\nexport const TopSelectorCompetitors = SelectorCompetitors as typeof SelectorCompetitors & ComponentCustomProps;\r\n"],"names":["props","__props","selectAllItem","vue","i18n","TopSelectorCompetitors"],"mappings":"glBAUA,MAAAA,EAAAC,+BAKAC,EAAAC,EAAA,SAAA,IAAA,CACC,GAAAH,EAAA,kBACC,MAAA,UACO,MAAAI,EAAA,QAAA,EAAA,OAAA,iCAGG,CAEX,CAAA,gwCCnBMC"}
|
|
1
|
+
{"version":3,"file":"project.amd.js","sources":["../../src/components/project/selectorCompetitors/selectorCompetitors.vue","../../src/components/project/selectorRegion/composables/selectSearcher.ts","../../src/components/project/selectorRegion/composables/selectRegion.ts","../../src/components/project/selectorRegion/composables/compare.ts","../../src/components/project/selectorRegion/composables/selectorRegion.ts","../../src/components/project/selectorRegion/selectorRegion.vue","../../src/components/project/project.ts"],"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\nimport { useI18n } from '@/core/plugins/i18n';\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: useI18n().Common.Select_all,\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>\r\n","import { computed, type ComputedRef, ref } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\nimport type { Option, Options } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport { getSearcherGIcon } from '@/core/utils/searchers';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора ПС\r\n *\r\n * @param props - входные props компонента\r\n * @param mapSearchers - Map ПС (реактивная)\r\n */\r\nexport const useSelectSearcher = (\r\n\tprops: Props,\r\n\tmapSearchers: ComputedRef<SearcherByKey>,\r\n) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Ключ выбранной поисковой системы\r\n\t */\r\n\tconst searcherKey = ref(mapSearchers.value.keys().next().value ?? dummyIndex);\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора ПС\r\n\t */\r\n\tconst optionBySearcherKey = computed(() => {\r\n\t\tconst res: Options = new Map();\r\n\t\tmapSearchers.value.forEach((searcher) => {\r\n\t\t\tlet option: Option = {\r\n\t\t\t\tvalue: searcher.key,\r\n\t\t\t\ttitle: searcher.name,\r\n\t\t\t};\r\n\r\n\t\t\tif (props.addSearcherIcon) option.icon = getSearcherGIcon(searcher.key);\r\n\r\n\t\t\tres.set(searcher.key, option);\r\n\t\t});\r\n\r\n\t\t// добавить режим сравнения, если есть хотя бы одна ПС\r\n\t\tif (props.addCompare && !res.has(dummyIndex)) {\r\n\t\t\tconst dummyOption: Option = {\r\n\t\t\t\tvalue: '',\r\n\t\t\t\ttitle: '--------------------',\r\n\t\t\t\tdisabled: true,\r\n\t\t\t};\r\n\t\t\tres.set(dummyOption.value, dummyOption);\r\n\r\n\t\t\tconst compareOption: Option = {\r\n\t\t\t\tvalue: -1,\r\n\t\t\t\ttitle: i18n.Common.Compare!,\r\n\t\t\t};\r\n\t\t\tres.set(compareOption.value, compareOption);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t});\r\n\r\n\treturn {\r\n\t\tsearcherKey,\r\n\t\toptionBySearcherKey,\r\n\t};\r\n};\r\n","import { computed, type ComputedRef, ref, watch } from 'vue';\r\nimport { useI18n } from '@/core/plugins/i18n';\r\nimport { getDeviceGIcon, getLangLabel } from '@/core/utils/searchers';\r\nimport type { Option } from '@/components/forms/select/select';\r\nimport { dummyIndex } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для выбора региона\r\n *\r\n * @param props - входные props компонента\r\n * @param activeSearcherIndexed - объект активной поисковой системы (реактивная)\r\n * @param regionsIndexes - входные индексы регионов/ПС\r\n */\r\nexport const useSelectRegion = (props: Props, activeSearcherIndexed: ComputedRef<SearcherIndexed>) => {\r\n\tconst i18n = useI18n();\r\n\r\n\t/**\r\n\t * Индекс выбранного региона\r\n\t */\r\n\tconst regionIndex = ref(dummyIndex);\r\n\r\n\tif (props.modelValue.length === 1) {\r\n\t\tregionIndex.value = props.modelValue[0];\r\n\t}\r\n\r\n\tif (regionIndex.value === dummyIndex) {\r\n\t\tif (props.forFrequency) {\r\n\t\t\t// в качетсве ключа используется region.key, а не region.index\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.values().next().value?.key ?? dummyIndex;\r\n\t\t} else {\r\n\t\t\tregionIndex.value = activeSearcherIndexed.value?.regionByIndex.keys().next().value ?? dummyIndex;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Коллекция опций для выбора региона\r\n\t */\r\n\tconst optionByRegionIndex = computed(() => {\r\n\t\tconst options = new Map<number, Option>();\r\n\r\n\t\tactiveSearcherIndexed.value.regionByIndex?.forEach((region) => {\r\n\t\t\tlet regionLabel = region.name;\r\n\r\n\t\t\t// на частоту в текущей версии устройство и язык не влияют\r\n\t\t\t// обратите внимание, в качетсве ключа используется region.key, а не region.index\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tconst option: Option = {\r\n\t\t\t\t\tvalue: region.key,\r\n\t\t\t\t\ttitle: regionLabel,\r\n\t\t\t\t};\r\n\t\t\t\tif (!options.has(region.key)) options.set(region.key, option);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (region.device) {\r\n\t\t\t\tregionLabel += ' (' + i18n.Common['Device_' + region.device] + ')';\r\n\t\t\t}\r\n\r\n\t\t\tconst langLabel = getLangLabel(activeSearcherIndexed.value.key || 0, region.lang ?? '');\r\n\t\t\tif (langLabel) regionLabel += ' / ' + langLabel;\r\n\r\n\t\t\tconst option: Option = {\r\n\t\t\t\tvalue: region.index,\r\n\t\t\t\ttitle: regionLabel,\r\n\t\t\t\ticon: region.device ? getDeviceGIcon(region.device) : undefined,\r\n\t\t\t};\r\n\r\n\t\t\toptions.set(region.index, option);\r\n\t\t});\r\n\r\n\t\treturn options;\r\n\t});\r\n\r\n\t/**\r\n\t * Выбор максимально похожего региона в новой коллекции регионов\r\n\t */\r\n\twatch(optionByRegionIndex, (optionByRegionIndex, oldOptionByRegionIndex) => {\r\n\t\tif (props.onlySearcher || regionIndex.value !== undefined && optionByRegionIndex.get(regionIndex.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newRegionIndex = optionByRegionIndex.keys().next().value as Region['index'];\r\n\t\tif (regionIndex.value === dummyIndex || newRegionIndex === dummyIndex) {\r\n\t\t\tregionIndex.value = newRegionIndex;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionName = (oldOptionByRegionIndex?.get(regionIndex.value) as Option)?.title || '';\r\n\t\tlet regionMatchLevel = -1;\r\n\t\tfor (const [index, option] of optionByRegionIndex.entries()) {\r\n\t\t\tconst title = (option as Option).title;\r\n\r\n\t\t\tif (typeof title !== 'string' || typeof index === 'string') {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// полное совпадение\r\n\t\t\tif (title === regionName) {\r\n\t\t\t\tnewRegionIndex = index;\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tconst regexpDevice = new RegExp(` \\\\((${i18n.Common['Device_1']}|${i18n.Common['Device_2']})\\\\)`);\r\n\t\t\tlet regionNameCompare = regionName;\r\n\t\t\tlet regionMatchLevelI = 3;\r\n\r\n\t\t\t// без устройства\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\t// без устройства и без языка\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) {\r\n\t\t\t\tregionNameCompare = regionName.replace(/ \\/.*/, '');\r\n\t\t\t\tregionNameCompare = regionNameCompare.replace(/^[^a-zа-я]/i, '').replace(regexpDevice, '');\r\n\r\n\t\t\t\tregionMatchLevelI--;\r\n\t\t\t}\r\n\r\n\t\t\tif (title.indexOf(regionNameCompare) === -1) continue;\r\n\t\t\tif (regionMatchLevelI <= regionMatchLevel) continue;\r\n\r\n\t\t\tregionMatchLevel = regionMatchLevelI;\r\n\t\t\tnewRegionIndex = index;\r\n\t\t}\r\n\r\n\t\tregionIndex.value = newRegionIndex;\r\n\t});\r\n\r\n\treturn {\r\n\t\tregionIndex,\r\n\t\toptionByRegionIndex,\r\n\t};\r\n};\r\n","import { type ComputedRef, ref, watch } from 'vue';\r\nimport type { Props, SearcherByKey } from '../selectorRegion';\r\n\r\n/**\r\n * Создание и управление реактивными переменными для сравнения\r\n *\r\n * @param props - входные props компонента\r\n * @param searcherByKey - Map ПС (реактивная)\r\n * @param allRegionsIndexes - Все доступные индексы регионов (реактивная)\r\n */\r\nexport const useCompare = (props: Props, searcherByKey: ComputedRef<SearcherByKey>, allRegionsIndexes: ComputedRef<Set<number>>) => {\r\n\t/**\r\n\t * Индексы регионов/ПС в сравнение\r\n\t */\r\n\tconst regionsIndexes = ref([] as number[]);\r\n\r\n\t/**\r\n\t * Загрузка индексов регионов для сравнения\r\n\t *\r\n\t * Если в modelValue передано несколько регионов, они будут установлены как выбранные для сравнения\r\n\t */\r\n\tconst compareLoad = () => {\r\n\t\tif (props.onlySearcher && searcherByKey.value) {\r\n\t\t\tregionsIndexes.value = Array.from(searcherByKey.value.keys());\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet regionsIndexesSaved: Props['modelValue'] = [];\r\n\r\n\t\tif (props.modelValue.length > 1) {\r\n\t\t\tregionsIndexesSaved = [...props.modelValue];\r\n\t\t} else {\r\n\t\t\ttry {\r\n\t\t\t\t// загрузить индексы регионов, если они были сохранены\r\n\t\t\t\tregionsIndexesSaved = JSON.parse(\r\n\t\t\t\t\tlocalStorage.getItem('ui:project:regionSelector' + props.projectId + ':regionsIndexes') as string,\r\n\t\t\t\t) ?? [];\r\n\t\t\t} catch (e) {\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// убрать из сравнения регионы, которых нет в props.searchers\r\n\t\tif (regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = regionsIndexesSaved.filter((regionIndex) => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// если не сохранено ни одного региона, выбрать все регионы проекта\r\n\t\tif (!regionsIndexesSaved.length) {\r\n\t\t\tregionsIndexesSaved = Array.from(allRegionsIndexes.value);\r\n\t\t}\r\n\r\n\t\tregionsIndexes.value = [...regionsIndexesSaved];\r\n\t};\r\n\r\n\t/**\r\n\t * Сохранение выбранных регионов\r\n\t */\r\n\tconst compareSave = () => {\r\n\t\tif (regionsIndexes.value.length) {\r\n\t\t\tlocalStorage.setItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes', JSON.stringify(regionsIndexes.value));\r\n\t\t} else {\r\n\t\t\tlocalStorage.removeItem('ui:project:regionSelector:' + props.projectId + ':regionsIndexes');\r\n\t\t}\r\n\t};\r\n\r\n\twatch(regionsIndexes, () => {\r\n\t\tcompareSave();\r\n\t});\r\n\r\n\tif (props.addCompare) {\r\n\t\t// if (props.compareRegionsIndexes?.length) {\r\n\t\t// \tcompareRegionsIndexes.value = [...props.compareRegionsIndexes];\r\n\t\t// } else {\r\n\t\t// \tcompareLoad();\r\n\t\t// }\r\n\r\n\t\tcompareLoad();\r\n\t}\r\n\r\n\treturn {\r\n\t\tregionsIndexes,\r\n\t};\r\n};\r\n","import { computed, watch } from 'vue';\r\nimport { findRegion, genSearcherByKey } from '../utils/utils';\r\nimport { dummyIndex, searcherUndefined } from '../utils/consts';\r\nimport type { Props, Region, SearcherIndexed } from '../selectorRegion';\r\nimport { useSelectSearcher } from './selectSearcher';\r\nimport { useSelectRegion } from './selectRegion';\r\nimport { useCompare } from './compare';\r\n\r\n/**\r\n * Создание и управления рективными переменными компонента\r\n *\r\n * @param props - входные props компонента\r\n */\r\nexport const useSelectorRegion = (props: Props) => {\r\n\tconst searcherByKey = computed(() => {\r\n\t\treturn genSearcherByKey(props.forFrequency, props.autoRegion, props.searchers);\r\n\t});\r\n\r\n\tconst activeSearcherIndexed = computed(() => {\r\n\t\treturn searcherByKey.value.get(selectSearcher.searcherKey.value) || searcherUndefined;\r\n\t});\r\n\r\n\t/**\r\n\t * Все индексы регионов из mapSearchers\r\n\t */\r\n\tconst allRegionsIndexes = computed(() => {\r\n\t\tconst regionsIndexes = new Set<number>();\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\tsearcher.regions?.forEach((region) => {\r\n\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\tregionsIndexes.add(region.index);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn regionsIndexes;\r\n\t});\r\n\r\n\tconst selectSearcher = useSelectSearcher(props, searcherByKey);\r\n\tconst selectRegion = useSelectRegion(props, activeSearcherIndexed);\r\n\tconst compare = useCompare(props, searcherByKey, allRegionsIndexes);\r\n\r\n\t// контроль за внешним изменением списка ПС\r\n\twatch(searcherByKey, () => {\r\n\t\t// возможные значения для сравнения регионов\r\n\t\tif (selectSearcher.searcherKey.value === -1) {\r\n\t\t\tcompare.regionsIndexes.value = compare.regionsIndexes.value.filter(regionIndex => {\r\n\t\t\t\treturn allRegionsIndexes.value.has(regionIndex);\r\n\t\t\t});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newSearcherKey = searcherByKey.value.keys().next().value;\r\n\r\n\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t// определить выбранную ПС\r\n\t\t\tif (\r\n\t\t\t\tselectRegion.regionIndex.value &&\r\n\t\t\t\tsearcher.regionByIndex?.has(selectRegion.regionIndex.value)\r\n\t\t\t) {\r\n\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t}\r\n\r\n\t\t\t// выбрать первую ПС с выбранным регионом\r\n\t\t\tif (!props.onlySearcher) {\r\n\t\t\t\tlet regionsNewSearcher: SearcherIndexed['regionByIndex'] | undefined;\r\n\r\n\t\t\t\tif (newSearcherKey !== undefined) {\r\n\t\t\t\t\tregionsNewSearcher = searcherByKey.value.get(newSearcherKey)?.regionByIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst regionsCurrentSearcher = searcherByKey.value.get(searcher.key)?.regionByIndex;\r\n\t\t\t\tif (\r\n\t\t\t\t\tregionsNewSearcher?.has(dummyIndex) &&\r\n\t\t\t\t\t!regionsCurrentSearcher?.has(dummyIndex)\r\n\t\t\t\t) {\r\n\t\t\t\t\tnewSearcherKey = searcher.key;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (props.addCompare && !selectSearcher.optionBySearcherKey.value.has(dummyIndex)) {\r\n\t\t\tif (!selectRegion.regionIndex.value && compare.regionsIndexes.value?.length) newSearcherKey = -1;\r\n\t\t}\r\n\r\n\t\tif (props.onlySearcher && selectRegion.regionIndex.value !== dummyIndex) newSearcherKey = selectRegion.regionIndex.value;\r\n\r\n\t\tif (newSearcherKey !== undefined) {\r\n\t\t\tselectSearcher.searcherKey.value = newSearcherKey;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tselectRegion.regionIndex.value !== undefined &&\r\n\t\t\t!(activeSearcherIndexed.value?.regionByIndex)?.has(selectRegion.regionIndex.value)\r\n\t\t) {\r\n\t\t\tselectRegion.regionIndex.value = activeSearcherIndexed.value?.regions?.keys().next().value as number;\r\n\t\t}\r\n\t}, { immediate: true });\r\n\r\n\tconst getSearcherKey = () => {\r\n\t\tif (selectSearcher.searcherKey.value === -1 || selectSearcher.searcherKey.value === dummyIndex) return;\r\n\r\n\t\treturn selectSearcher.searcherKey.value;\r\n\t};\r\n\r\n\tconst getRegionIndex = () => {\r\n\t\tif (props.onlySearcher) return;\r\n\r\n\t\tif (selectRegion.regionIndex.value === dummyIndex) return;\r\n\r\n\t\tlet res: Region['index'] | undefined = selectRegion.regionIndex.value;\r\n\r\n\t\t// в качестве ключа используется region.key\r\n\t\tif (props.forFrequency) {\r\n\t\t\tconst regionKey = selectRegion.regionIndex.value;\r\n\t\t\tconst region = findRegion(props.forFrequency, { searcher_key: getSearcherKey(), key: regionKey } as Region, props.searchers);\r\n\r\n\t\t\tres = region?.index;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранную ПС\r\n\t */\r\n\tconst getSearcher = () => {\r\n\t\tconst searcherKey = getSearcherKey();\r\n\t\tif (searcherKey === undefined) return;\r\n\r\n\t\treturn searcherByKey.value.get(searcherKey);\r\n\t};\r\n\r\n\t/**\r\n\t * Получить выбранный регион\r\n\t */\r\n\tconst getRegion = () => {\r\n\t\tconst regionIndex = getRegionIndex();\r\n\t\tif (regionIndex === undefined) return;\r\n\r\n\t\treturn getSearcher()?.regionByIndex?.get(regionIndex);\r\n\t};\r\n\r\n\treturn {\r\n\t\tselectSearcher,\r\n\t\tselectRegion,\r\n\t\tcompare,\r\n\r\n\t\tsearcherByKey,\r\n\t\tallRegionsIndexes,\r\n\r\n\t\tgetSearcher,\r\n\t\tgetRegion,\r\n\t};\r\n};\r\n","<script setup lang=\"ts\">\r\nimport { watch } from 'vue';\r\nimport type { Emits, Props, Region } from './selectorRegion';\r\nimport Select from '@/components/forms/select/select.vue';\r\nimport Button from '@/components/forms/button/button.vue';\r\nimport { useSelectorRegion } from './composables/selectorRegion';\r\nimport { dummyIndex } from './utils/consts';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsearchers: () => [],\r\n\t// compareRegionsIndexes: () => [],\r\n\taddSearcherIcon: true,\r\n\taddRegionIcon: true,\r\n\taddChanger: true,\r\n});\r\n\r\nconst model = defineModel<Props['modelValue']>({ required: true });\r\nconst modelSingle = defineModel<Props['modelValueSingle']>('modelValueSingle');\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst {\r\n\tselectSearcher,\r\n\tselectRegion,\r\n\tcompare,\r\n\r\n\tsearcherByKey,\r\n\tallRegionsIndexes,\r\n\r\n\tgetSearcher,\r\n\tgetRegion,\r\n} = useSelectorRegion(props);\r\n\r\nconst onClickCompare = () => {\r\n\t// ### TODO: сделать выбор регионов через UI (сейчас в UI выбор региона не работает)\r\n\tif (window['fieldTemplates'] && window['fieldTemplates']?.openSelectorRegions) {\r\n\t\twindow['fieldTemplates'].openSelectorRegions(\r\n\t\t\tsearcherByKey.value,\r\n\t\t\tcompare.regionsIndexes.value,\r\n\t\t\t(regionsIndexes: Region['index'][]) => compare.regionsIndexes.value = regionsIndexes,\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\temit('compareRegions', searcherByKey.value);\r\n};\r\n\r\nwatch([selectRegion.regionIndex, selectSearcher.searcherKey, compare.regionsIndexes], () => {\r\n\tif (selectSearcher.searcherKey.value === -1 && compare.regionsIndexes.value.length) {\r\n\t\tif (JSON.stringify(model.value) === JSON.stringify(compare.regionsIndexes.value)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\t} else {\r\n\t\tmodel.value = [props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value];\r\n\t}\r\n\r\n\t// регионов нет\r\n\tif (!allRegionsIndexes.value.size) {\r\n\t\tselectSearcher.searcherKey.value = dummyIndex;\r\n\t}\r\n});\r\n\r\nif (modelSingle.value) {\r\n\twatch(modelSingle, () => {\r\n\t\tmodel.value = [modelSingle.value!];\r\n\t}, { immediate: true });\r\n}\r\n\r\nwatch(model, () => {\r\n\tif (model.value[0]) {\r\n\t\tmodelSingle.value = model.value[0];\r\n\t}\r\n\r\n\t// проверка входных данных v-model на корректность\r\n\tif (props.onlySearcher) {\r\n\t\tif (\r\n\t\t\t!model.value.length ||\r\n\t\t\tmodel.value.length === 1 && !searcherByKey.value.has(model.value[0])\r\n\t\t) {\r\n\t\t\tlet defaultKey: number | undefined = searcherByKey.value.keys().next().value;\r\n\r\n\t\t\tif (defaultKey !== undefined) {\r\n\t\t\t\tmodel.value = [defaultKey];\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tmodel.value.length > 1 &&\r\n\t\t\tJSON.stringify(model.value) !== JSON.stringify(compare.regionsIndexes.value)\r\n\t\t) {\r\n\t\t\tmodel.value = [...compare.regionsIndexes.value];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t} else {\r\n\t\tlet newModel = [...new Set(model.value)];\r\n\r\n\t\tlet defaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.keys().next().value;\r\n\t\tif (props.forFrequency) {\r\n\t\t\tdefaultIndex = searcherByKey.value.values().next().value?.regionByIndex?.values().next().value?.key;\r\n\t\t}\r\n\r\n\t\tif (!newModel.length) {\r\n\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t} else if (newModel.length === 1) {\r\n\t\t\tlet all = allRegionsIndexes.value;\r\n\r\n\t\t\tif (props.forFrequency) {\r\n\t\t\t\tall = new Set();\r\n\t\t\t\tsearcherByKey.value.forEach((searcher) => {\r\n\t\t\t\t\tsearcher.regionByIndex.forEach((region) => {\r\n\t\t\t\t\t\tif (region.index === -1) return;\r\n\t\t\t\t\t\tif (region.index === dummyIndex) return;\r\n\r\n\t\t\t\t\t\tall.add(region.key);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (!all.has(newModel[0]) && newModel[0] !== -2) {\r\n\t\t\t\tnewModel = [];\r\n\t\t\t\tif (defaultIndex !== undefined) {\r\n\t\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnewModel = newModel.filter(index => allRegionsIndexes.value.has(index));\r\n\t\t\tif (!newModel.length && defaultIndex !== undefined) {\r\n\t\t\t\tnewModel.push(defaultIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (JSON.stringify(model.value) !== JSON.stringify(newModel)) {\r\n\t\t\tmodel.value = newModel;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t// входные данные v-model совпадают с внутренними значениями\r\n\tif (\r\n\t\tmodel.value.length === 1 &&\r\n\t\tmodel.value[0] === (props.onlySearcher ? selectSearcher.searcherKey.value : selectRegion.regionIndex.value)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// if (\r\n\t// \tmodel.value.length > 1 &&\r\n\t// \tselectorSearcher.searcherKey.value === -1 &&\r\n\t// \tJSON.stringify(model.value) === JSON.stringify(selectorCompare.regionsIndexes.value)\r\n\t// ) {\r\n\t// \treturn;\r\n\t// }\r\n\r\n\t// обновление regionIndex, searcherKey, selectorCompare.regionsIndexes\r\n\tif (props.onlySearcher) {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1) {\r\n\t\t\tselectSearcher.searcherKey.value = model.value[0];\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselectSearcher.searcherKey.value = -1;\r\n\r\n\t\treturn;\r\n\t} else {\r\n\t\t// if (!model.value.length) {\r\n\t\t// \tselectorSearcher.searcherKey.value = dummyIndex;\r\n\t\t// \tselectorRegion.regionIndex.value = dummyIndex;\r\n\t\t//\r\n\t\t// \treturn;\r\n\t\t// }\r\n\r\n\t\tif (model.value.length === 1 && selectSearcher.searcherKey.value !== -1) {\r\n\t\t\tselectRegion.regionIndex.value = model.value[0];\r\n\r\n\t\t\tlet newSearherKey: number | undefined;\r\n\t\t\tfor (const searcher of searcherByKey.value.values()) {\r\n\t\t\t\tfor (const region of searcher.regionByIndex.values()) {\r\n\t\t\t\t\tconst currentRegionIndex = props.forFrequency ? region.key : region.index;\r\n\t\t\t\t\tif (currentRegionIndex === selectRegion.regionIndex.value) {\r\n\t\t\t\t\t\tnewSearherKey = searcher.key;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newSearherKey !== undefined) {\r\n\t\t\t\tselectSearcher.searcherKey.value = newSearherKey;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tselectSearcher.searcherKey.value = -1;\r\n\t\t\tcompare.regionsIndexes.value = [...model.value];\r\n\t\t}\r\n\t}\r\n}, { immediate: true });\r\n\r\ndefineExpose({\r\n\tgetSearcher,\r\n\tgetRegion,\r\n});\r\n</script>\r\n\r\n<template>\r\n\t<div\r\n\t\t:class=\"{\r\n\t\t\t'top-selectorRegion': true,\r\n\t\t\t'top-selectorRegion-onlySearcher': onlySearcher,\r\n\t\t}\"\r\n\t>\r\n\t\t<Select\r\n\t\t\t:options=\"selectSearcher.optionBySearcherKey.value\"\r\n\t\t\tv-model=\"selectSearcher.searcherKey.value\"\r\n\t\t\tname=\"searcher_key\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t/>\r\n\r\n\t\t<Select\r\n\t\t\tv-if=\"!onlySearcher && selectSearcher.searcherKey.value !== -1\"\r\n\t\t\tclass=\"top-select-region\"\r\n\t\t\t:options=\"selectRegion.optionByRegionIndex.value\"\r\n\t\t\tv-model=\"selectRegion.regionIndex.value\"\r\n\t\t\t:name=\"forFrequency ? 'region_key' : 'region_index'\"\r\n\t\t\t:addChanger=\"addChanger\"\r\n\t\t\t:data-top-icon=\"addRegionIcon ? '' : undefined\"\r\n\t\t/>\r\n\r\n\t\t<Button\r\n\t\t\tv-if=\"addCompare && !onlySearcher && selectSearcher.searcherKey.value === -1\"\r\n\t\t\tname=\"compare\"\r\n\t\t\t@click=\"onClickCompare\"\r\n\t\t\t:data-count-compare-regions-indexes=\"compare.regionsIndexes.value.length\"\r\n\t\t>\r\n\t\t\t{{ $i18n.Common.Selected_regions }}\r\n\t\t</Button>\r\n\t</div>\r\n</template>\r\n\r\n<style module>\r\n@import \"./styles/searcherColors.css\";\r\n\r\n.top-selectorRegion {\r\n\twidth: 320px;\r\n\tdisplay: inline-flex;\r\n\tvertical-align: middle;\r\n}\r\n\r\n.top-selectorRegion > .top-select {\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select:focus-within {\r\n\tz-index: 4;\r\n}\r\n\r\n.top-selectorRegion > .top-select > .top-select_select:hover,\r\n.top-selectorRegion > .top-select > .top-select_select.top-error {\r\n\tz-index: 1;\r\n}\r\n\r\n.top-selectorRegion > .top-select-searcher_key {\r\n\twidth: 120px;\r\n\tmax-width: 140px;\r\n\tmargin-right: -1px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region > select {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region {\r\n\t--top-icon-size: 20px;\r\n\t--top-icon-color: var(--color-text-primary-1);\r\n\r\n\t--top-icon2-size: 20px;\r\n\t--top-icon2-color: var(--color-text-primary-1);\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2] {\r\n\t--top-icon2-size: 16px;\r\n}\r\n\r\n.top-selectorRegion > .top-select-region[data-top-icon][data-top-icon2]:after {\r\n\ttext-indent: -4px;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"] {\r\n\tborder-top-left-radius: 0;\r\n\tborder-bottom-left-radius: 0;\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-selectorRegion > [name=\"compare\"]:after {\r\n\tcontent: \"(\" attr(data-count-compare-regions-indexes) \")\";\r\n\tmargin: 0 0 0 6px;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key > select {\r\n\tborder-top-right-radius: 0;\r\n\tborder-bottom-right-radius: 0;\r\n\tmargin-right: 0;\r\n}\r\n\r\n.top-selectorRegion:not(.top-selectorRegion-onlySearcher) > .top-select-searcher_key[data-value=\"-1\"] > select {\r\n\tborder-right: none;\r\n}\r\n\r\n.top-selectorRegion-onlySearcher {\r\n\twidth: 120px;\r\n}\r\n</style>\r\n","import type { ComponentCustomProps } from 'vue';\r\n\r\nimport SelectorCompetitors from './selectorCompetitors/selectorCompetitors.vue';\r\nimport SelectorRegion from './selectorRegion/selectorRegion.vue';\r\n\r\nexport const TopSelectorCompetitors = SelectorCompetitors as typeof SelectorCompetitors & ComponentCustomProps;\r\nexport const TopSelectorRegion = SelectorRegion as typeof SelectorRegion & ComponentCustomProps;\r\n"],"names":["props","__props","selectAllItem","vue","forms","useSelectSearcher","mapSearchers","i18n","searcherKey","project_utils","optionBySearcherKey","res","searcher","option","utils_searchers","useSelectRegion","activeSearcherIndexed","regionIndex","_c","optionByRegionIndex","options","regionLabel","region","langLabel","newRegionIndex","optionByRegionIndex2","regionName","_a","oldOptionByRegionIndex","regionMatchLevel","index","title","regexpDevice","regionNameCompare","regionMatchLevelI","regionsIndexes","searcherByKey","regionsIndexesSaved","useSelectorRegion","selectSearcher","allRegionsIndexes","compare","newSearcherKey","selectRegion","regionsNewSearcher","_b","regionsCurrentSearcher","_e","_d","getSearcherKey","getSearcher","getRegionIndex","emit","__emit","getRegion","model","modelSingle","defaultKey","newModel","defaultIndex","all","newSearherKey","__expose","TopSelectorCompetitors","SelectorCompetitors","TopSelectorRegion","SelectorRegion"],"mappings":"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"}
|