@topvisor/ui 1.5.10-help.1 → 1.5.10-help.3
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/dialog-B1kB8NLM.es.amd.js +2 -0
- package/.chunks/dialog-B1kB8NLM.es.amd.js.map +1 -0
- package/.chunks/{dialog-WEQO33BZ.es.js → dialog-B1kB8NLM.es.js} +8 -5
- package/.chunks/dialog-B1kB8NLM.es.js.map +1 -0
- package/.chunks/{dialog_regionSelectorRegions-BML7I8Qt.es.amd.js → dialog_regionSelectorRegions-DmewEJc9.es.amd.js} +2 -2
- package/.chunks/{dialog_regionSelectorRegions-BML7I8Qt.es.amd.js.map → dialog_regionSelectorRegions-DmewEJc9.es.amd.js.map} +1 -1
- package/.chunks/{dialog_regionSelectorRegions-BML7I8Qt.es.js → dialog_regionSelectorRegions-DmewEJc9.es.js} +2 -2
- package/.chunks/{dialog_regionSelectorRegions-BML7I8Qt.es.js.map → dialog_regionSelectorRegions-DmewEJc9.es.js.map} +1 -1
- package/.chunks/formsExt-BgtDJL34.es.amd.js.map +1 -1
- package/.chunks/formsExt-BgtDJL34.es.js.map +1 -1
- package/assets/formsExt.css +1 -1
- package/autoload-css-manifest.amd.json +1 -1
- package/autoload-css-manifest.json +1 -1
- package/dialog/dialog.amd.js +1 -1
- package/dialog/dialog.amd.js.map +1 -1
- package/dialog/dialog.js +1 -1
- package/package.json +1 -1
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.js +7 -3
- package/project/project.js.map +1 -1
- package/src/core/utils/string.d.ts +5 -2
- package/utils/string.amd.js +2 -1
- package/utils/string.amd.js.map +1 -1
- package/utils/string.js +1 -1
- package/utils/string.js.map +1 -1
- package/.chunks/dialog-WEQO33BZ.es.amd.js +0 -2
- package/.chunks/dialog-WEQO33BZ.es.amd.js.map +0 -1
- package/.chunks/dialog-WEQO33BZ.es.js.map +0 -1
- package/src/components/dialog/dialog/stories/dialog_example/pages/utils.d.ts +0 -7
- package/src/components/project/groupSelector/stories/mocks/folders.d.ts +0 -4
- package/src/components/project/groupSelector/stories/mocks/groups.d.ts +0 -6
- package/src/components/project/groupSelector/stories/mocks/index.d.ts +0 -8
- package/src/components/project/groupSelector/stories/play/apiEditorMulti.d.ts +0 -2
- package/src/components/project/projectSelector/stories/mocks/index.d.ts +0 -5
- package/src/components/project/projectSelector/stories/mocks/projects.d.ts +0 -3
- package/src/components/schedule/schedule/stories/play/play.d.ts +0 -5
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
define([`require`,`exports`,`./forms-DrY7Q_VD.es.amd`,`./utils-CpxXlmWP.es.amd`,`vue`],function(e,t,n,r,i){"use strict";if(a===void 0)var a=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.t=t.r=t.n=void 0;var o={key:0,style:{display:`none`}},s=[`data-order`,`data-view-page`],c={class:`modal-header`},l={class:`top-title`},u={class:`buttons`},d=[`title`],f=[`title`],p=[`data-order`,`data-view-page`],m={class:`modal-body`},h=(0,i.defineComponent)({__name:`page`,props:{isLoading:{type:Boolean},name:{},order:{default:0},prevName:{},footerFullWith:{type:Boolean},helpUrl:{},helpTitle:{}},setup(e,{slots:t}){let a=e,h=(0,r.r)(),g=(0,i.computed)(()=>({active:h.pageActive?.value===a.name,"i-load-data":a.isLoading||h.isLoadingPage.value})),_=e=>{e.stopPropagation(),!(e.button!==0||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey)&&(e.preventDefault(),n.O.goTo(a.helpUrl))};return(r,a)=>{let v=(0,i.resolveComponent)(`TopButton`),y=(0,i.resolveDirective)(`top-scroll-shadow`);return(0,i.unref)(h).isReady.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,o,[((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`#`+(0,i.unref)(h).idAttr+` .modal-layer-header`,disabled:!(0,i.unref)(h).needShowPage(e.name)},[(0,i.createElementVNode)(`div`,{"data-order":e.order,"data-view-page":e.name,class:(0,i.normalizeClass)(g.value)},[(0,i.createElementVNode)(`div`,c,[(0,i.createElementVNode)(`div`,l,[(0,i.renderSlot)(r.$slots,`header`)]),(0,i.createElementVNode)(`div`,u,[(0,i.renderSlot)(r.$slots,`headerButtons`),e.helpUrl?((0,i.openBlock)(),(0,i.createBlock)(v,{key:0,title:e.helpTitle??r.$i18n.Common.How_to_use,href:e.helpUrl,color:`theme`,icon:``,onClick:_},null,8,[`title`,`href`])):(0,i.createCommentVNode)(``,!0)]),(0,i.unref)(n.O).state.isMobile&&e.prevName?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:0,class:`close`,title:r.$i18n.Common.Back,"data-top-icon":``,onClick:a[0]||=t=>(0,i.unref)(h).open(e.prevName)},null,8,d)):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:1,class:`close`,title:r.$i18n.Common.Close,"data-top-icon":``,"data-action":`top-dialog-close`},null,8,f))])],10,s)],8,[`to`,`disabled`])),((0,i.openBlock)(),(0,i.createBlock)(i.Teleport,{to:`#`+(0,i.unref)(h).idAttr+` .modal-layer-body`,disabled:!(0,i.unref)(h).needShowPage(e.name)},[(0,i.createElementVNode)(`div`,{"data-order":e.order,"data-view-page":e.name,class:(0,i.normalizeClass)([`has_scroll_container`,g.value]),style:(0,i.normalizeStyle)({"--top-dialog-footer-height":t.footer?void 0:`0px`})},[(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`div`,m,[(0,i.renderSlot)(r.$slots,`body`)])),[[y]]),t.footer?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:0,class:(0,i.normalizeClass)([`modal-footer`,{"modal-footer-fullWith":e.footerFullWith}])},[(0,i.renderSlot)(r.$slots,`footer`)],2)):(0,i.createCommentVNode)(``,!0)],14,p)],8,[`to`,`disabled`]))])):(0,i.createCommentVNode)(``,!0)}}}),g={name:{type:String,required:!0},order:{type:Number,required:!0},prevName:String,footerFullWith:Boolean,helpUrl:String,helpTitle:String},_=(0,i.defineComponent)({__name:`pageComponent`,props:{component:{},keepAlive:{type:Boolean,default:!0},props:{},name:{},order:{},prevName:{},footerFullWith:{type:Boolean},helpUrl:{},helpTitle:{}},setup(e){let t=e,n=(0,r.r)(),a=(e,r)=>{if(!r.value){if(e.name!==`AsyncComponentWrapper`){r.value=!0;return}n.needShowPage(t.name)&&(n.isLoadingPage.value=!0,e.__asyncResolved&&(r.value=!0,n.isLoadingPage.value=!1))}};if(t.component.name===`AsyncComponentWrapper`){let e=(0,i.ref)(!1);(0,i.onUpdated)(()=>{a(t.component,e)})}return(r,a)=>((0,i.openBlock)(),(0,i.createBlock)(i.KeepAlive,{include:e.keepAlive?``:`none`},[(0,i.unref)(n).needShowPage(e.name)?((0,i.openBlock)(),(0,i.createBlock)((0,i.resolveDynamicComponent)(e.component),(0,i.mergeProps)({key:0},t,{name:e.name,order:e.order,prevName:e.prevName}),null,16,[`name`,`order`,`prevName`])):(0,i.createCommentVNode)(``,!0)],1032,[`include`]))}});t.r=h,t.n=g,t.t=_});
|
|
2
|
+
//# sourceMappingURL=dialog-B1kB8NLM.es.amd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".chunks/dialog-B1kB8NLM.es.js","../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/types.ts","../../src/components/dialog/dialog/pageComponent/pageComponent.vue"],"names":["vue","exports","S","C","w","T","E","D","O","k","A","j","vue_1","l","u","n","p","utils_CpxXlmWP_es_js_1","h","y","t","forms_DrY7Q_VD_es_js_1","M","N","r","i","s"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-DrY7Q_VD.es.js\", \"./utils-CpxXlmWP.es.js\", \"vue\"], function (require, exports, forms_DrY7Q_VD_es_js_1, utils_CpxXlmWP_es_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.t = exports.r = exports.n = void 0;\n //#region src/components/dialog/dialog/page/page.vue?vue&type=script&setup=true&lang.ts\n var S = {\n key: 0,\n style: { display: \"none\" }\n }, C = [\"data-order\", \"data-view-page\"], w = { class: \"modal-header\" }, T = { class: \"top-title\" }, E = { class: \"buttons\" }, D = [\"title\"], O = [\"title\"], k = [\"data-order\", \"data-view-page\"], A = { class: \"modal-body\" }, j = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"page\",\n props: {\n isLoading: { type: Boolean },\n name: {},\n order: { default: 0 },\n prevName: {},\n footerFullWith: { type: Boolean },\n helpUrl: {},\n helpTitle: {}\n },\n setup(n, { slots: l }) {\n let u = n, p = (0, utils_CpxXlmWP_es_js_1.r)(), h = (0, vue_1.computed)(() => ({\n active: p.pageActive?.value === u.name,\n \"i-load-data\": u.isLoading || p.isLoadingPage.value\n })), y = (t) => {\n t.stopPropagation(), !(t.button !== 0 || t.ctrlKey || t.metaKey || t.shiftKey || t.altKey) && (t.preventDefault(), forms_DrY7Q_VD_es_js_1.O.goTo(u.helpUrl));\n };\n return (t, i) => {\n let u = (0, vue_1.resolveComponent)(\"TopButton\"), j = (0, vue_1.resolveDirective)(\"top-scroll-shadow\");\n return (0, vue_1.unref)(p).isReady.value ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", S, [((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.Teleport, {\n to: \"#\" + (0, vue_1.unref)(p).idAttr + \" .modal-layer-header\",\n disabled: !(0, vue_1.unref)(p).needShowPage(n.name)\n }, [(0, vue_1.createElementVNode)(\"div\", {\n \"data-order\": n.order,\n \"data-view-page\": n.name,\n class: (0, vue_1.normalizeClass)(h.value)\n }, [(0, vue_1.createElementVNode)(\"div\", w, [\n (0, vue_1.createElementVNode)(\"div\", T, [(0, vue_1.renderSlot)(t.$slots, \"header\")]),\n (0, vue_1.createElementVNode)(\"div\", E, [(0, vue_1.renderSlot)(t.$slots, \"headerButtons\"), n.helpUrl ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(u, {\n key: 0,\n title: n.helpTitle ?? t.$i18n.Common.How_to_use,\n href: n.helpUrl,\n color: \"theme\",\n icon: \"\",\n onClick: y\n }, null, 8, [\"title\", \"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0)]),\n (0, vue_1.unref)(forms_DrY7Q_VD_es_js_1.O).state.isMobile && n.prevName ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 0,\n class: \"close\",\n title: t.$i18n.Common.Back,\n \"data-top-icon\": \"\",\n onClick: i[0] ||= (e) => (0, vue_1.unref)(p).open(n.prevName)\n }, null, 8, D)) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 1,\n class: \"close\",\n title: t.$i18n.Common.Close,\n \"data-top-icon\": \"\",\n \"data-action\": \"top-dialog-close\"\n }, null, 8, O))\n ])], 10, C)], 8, [\"to\", \"disabled\"])), ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.Teleport, {\n to: \"#\" + (0, vue_1.unref)(p).idAttr + \" .modal-layer-body\",\n disabled: !(0, vue_1.unref)(p).needShowPage(n.name)\n }, [(0, vue_1.createElementVNode)(\"div\", {\n \"data-order\": n.order,\n \"data-view-page\": n.name,\n class: (0, vue_1.normalizeClass)([\"has_scroll_container\", h.value]),\n style: (0, vue_1.normalizeStyle)({ \"--top-dialog-footer-height\": l.footer ? void 0 : \"0px\" })\n }, [(0, vue_1.withDirectives)(((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", A, [(0, vue_1.renderSlot)(t.$slots, \"body\")])), [[j]]), l.footer ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 0,\n class: (0, vue_1.normalizeClass)([\"modal-footer\", { \"modal-footer-fullWith\": n.footerFullWith }])\n }, [(0, vue_1.renderSlot)(t.$slots, \"footer\")], 2)) : (0, vue_1.createCommentVNode)(\"\", !0)], 14, k)], 8, [\"to\", \"disabled\"]))])) : (0, vue_1.createCommentVNode)(\"\", !0);\n };\n }\n }), M = {\n name: {\n type: String,\n required: !0\n },\n order: {\n type: Number,\n required: !0\n },\n prevName: String,\n footerFullWith: Boolean,\n helpUrl: String,\n helpTitle: String\n }, N = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"pageComponent\",\n props: {\n component: {},\n keepAlive: {\n type: Boolean,\n default: !0\n },\n props: {},\n name: {},\n order: {},\n prevName: {},\n footerFullWith: { type: Boolean },\n helpUrl: {},\n helpTitle: {}\n },\n setup(e) {\n let r = e, i = (0, utils_CpxXlmWP_es_js_1.r)(), s = (e, t) => {\n if (!t.value) {\n if (e.name !== \"AsyncComponentWrapper\") {\n t.value = !0;\n return;\n }\n i.needShowPage(r.name) && (i.isLoadingPage.value = !0, e.__asyncResolved && (t.value = !0, i.isLoadingPage.value = !1));\n }\n };\n if (r.component.name === \"AsyncComponentWrapper\") {\n let e = (0, vue_1.ref)(!1);\n (0, vue_1.onUpdated)(() => {\n s(r.component, e);\n });\n }\n return (t, s) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(vue_1.KeepAlive, { include: e.keepAlive ? \"\" : \"none\" }, [(0, vue_1.unref)(i).needShowPage(e.name) ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.resolveDynamicComponent)(e.component), (0, vue_1.mergeProps)({ key: 0 }, r, {\n name: e.name,\n order: e.order,\n prevName: e.prevName\n }), null, 16, [\n \"name\",\n \"order\",\n \"prevName\"\n ])) : (0, vue_1.createCommentVNode)(\"\", !0)], 1032, [\"include\"]));\n }\n });\n exports.r = j;\n exports.n = M;\n exports.t = N;\n});\n//# sourceMappingURL=dialog-B1kB8NLM.es.js.map\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n\nconst onHelp = (event: MouseEvent) => {\n\tevent.stopPropagation();\n\n\tif (\n\t\tevent.button !== 0\n\t\t|| event.ctrlKey\n\t\t|| event.metaKey\n\t\t|| event.shiftKey\n\t\t|| event.altKey\n\t) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\n\tvoid Core.goTo(props.helpUrl!);\n};\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\n\t\t\t\t\t\t<TopButton\n\t\t\t\t\t\t\tv-if=\"helpUrl\"\n\t\t\t\t\t\t\t:title=\"helpTitle ?? $i18n.Common.How_to_use\"\n\t\t\t\t\t\t\t:href=\"helpUrl\"\n\t\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\t\t@click=\"onHelp\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","export interface Props extends PropsCommon {\n\t/**\n\t * Статус загрузки страницы диалогового окна\n\t *\n\t * При включении взаимодействие со страницей блокируется, отображается анимация загрузки\n\t */\n\tisLoading?: boolean;\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n */\nexport interface PropsCommon {\n\t/**\n\t * Имя страницы для диалогового окна\n\t *\n\t * Имя страницы нужно для навигации между страницами в одном диалоговом окне\n\t */\n\tname: string,\n\n\t/**\n\t * Порядкой номер страницы в диалоговом окне\n\t *\n\t * Одна и та же страница может быть подключена в разные диалоговые окна и иметь разный порядковый номер\n\t */\n\torder: number,\n\n\t/**\n\t * Имя предыдущей страницы\n\t *\n\t * Для кнопки Назад / Закрыть в мобильной версии\n\t */\n\tprevName?: string,\n\n\t/**\n\t * Стиль отображения футера, при котороым элементы растягиваются на всю ширину\n\t *\n\t * Разрешены переносы\n\t */\n\tfooterFullWith?: boolean,\n\n\t/**\n\t * Ссылка на страницу справки\n\t */\n\thelpUrl?: string,\n\n\t/**\n\t * title кнопки открытия справки\n\t */\n\thelpTitle?: string,\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n *\n * Для не SFC компонентов\n */\nexport const propsPageCommon = {\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\n\torder: {\n\t\ttype: Number,\n\t\trequired: true,\n\t},\n\n\tprevName: String,\n\n\tfooterFullWith: Boolean,\n\n\thelpUrl: String,\n\n\thelpTitle: String,\n};\n\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: Record<string, unknown>): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: Record<string, unknown>): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: Record<string, unknown>): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: Record<string, unknown>): any;\n}\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n"]}
|
|
@@ -20,9 +20,11 @@ var S = {
|
|
|
20
20
|
let u = n, p = t(), h = i(() => ({
|
|
21
21
|
active: p.pageActive?.value === u.name,
|
|
22
22
|
"i-load-data": u.isLoading || p.isLoadingPage.value
|
|
23
|
-
}))
|
|
23
|
+
})), y = (t) => {
|
|
24
|
+
t.stopPropagation(), !(t.button !== 0 || t.ctrlKey || t.metaKey || t.shiftKey || t.altKey) && (t.preventDefault(), e.goTo(u.helpUrl));
|
|
25
|
+
};
|
|
24
26
|
return (t, i) => {
|
|
25
|
-
let u = _("TopButton"),
|
|
27
|
+
let u = _("TopButton"), j = v("top-scroll-shadow");
|
|
26
28
|
return b(p).isReady.value ? (m(), s("div", S, [(m(), a(r, {
|
|
27
29
|
to: "#" + b(p).idAttr + " .modal-layer-header",
|
|
28
30
|
disabled: !b(p).needShowPage(n.name)
|
|
@@ -37,7 +39,8 @@ var S = {
|
|
|
37
39
|
title: n.helpTitle ?? t.$i18n.Common.How_to_use,
|
|
38
40
|
href: n.helpUrl,
|
|
39
41
|
color: "theme",
|
|
40
|
-
icon: ""
|
|
42
|
+
icon: "",
|
|
43
|
+
onClick: y
|
|
41
44
|
}, null, 8, ["title", "href"])) : o("", !0)]),
|
|
42
45
|
b(e).state.isMobile && n.prevName ? (m(), s("div", {
|
|
43
46
|
key: 0,
|
|
@@ -60,7 +63,7 @@ var S = {
|
|
|
60
63
|
"data-view-page": n.name,
|
|
61
64
|
class: d(["has_scroll_container", h.value]),
|
|
62
65
|
style: f({ "--top-dialog-footer-height": l.footer ? void 0 : "0px" })
|
|
63
|
-
}, [x((m(), s("div", A, [g(t.$slots, "body")])), [[
|
|
66
|
+
}, [x((m(), s("div", A, [g(t.$slots, "body")])), [[j]]), l.footer ? (m(), s("div", {
|
|
64
67
|
key: 0,
|
|
65
68
|
class: d(["modal-footer", { "modal-footer-fullWith": n.footerFullWith }])
|
|
66
69
|
}, [g(t.$slots, "footer")], 2)) : o("", !0)], 14, k)], 8, ["to", "disabled"]))])) : o("", !0);
|
|
@@ -125,4 +128,4 @@ var S = {
|
|
|
125
128
|
//#endregion
|
|
126
129
|
export { M as n, j as r, N as t };
|
|
127
130
|
|
|
128
|
-
//# sourceMappingURL=dialog-
|
|
131
|
+
//# sourceMappingURL=dialog-B1kB8NLM.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-B1kB8NLM.es.js","names":[],"sources":["../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/page.vue","../../src/components/dialog/dialog/page/types.ts","../../src/components/dialog/dialog/pageComponent/pageComponent.vue","../../src/components/dialog/dialog/pageComponent/pageComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n\nconst onHelp = (event: MouseEvent) => {\n\tevent.stopPropagation();\n\n\tif (\n\t\tevent.button !== 0\n\t\t|| event.ctrlKey\n\t\t|| event.metaKey\n\t\t|| event.shiftKey\n\t\t|| event.altKey\n\t) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\n\tvoid Core.goTo(props.helpUrl!);\n};\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\n\t\t\t\t\t\t<TopButton\n\t\t\t\t\t\t\tv-if=\"helpUrl\"\n\t\t\t\t\t\t\t:title=\"helpTitle ?? $i18n.Common.How_to_use\"\n\t\t\t\t\t\t\t:href=\"helpUrl\"\n\t\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\t\t@click=\"onHelp\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport Core from '@/core/core/core';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props, Slots } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\torder: 0,\n});\n\ndefineSlots<Slots>();\n\nconst dialog = useTopDialogSelf();\n\nconst classes = computed(() => {\n\treturn {\n\t\tactive: dialog.pageActive?.value === props.name,\n\t\t'i-load-data': props.isLoading || dialog.isLoadingPage.value,\n\t};\n});\n\nconst onHelp = (event: MouseEvent) => {\n\tevent.stopPropagation();\n\n\tif (\n\t\tevent.button !== 0\n\t\t|| event.ctrlKey\n\t\t|| event.metaKey\n\t\t|| event.shiftKey\n\t\t|| event.altKey\n\t) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\n\tvoid Core.goTo(props.helpUrl!);\n};\n</script>\n\n<template>\n\t<div\n\t\tstyle=\"display: none\"\n\t\tv-if=\"dialog.isReady.value\"\n\t>\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-header'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\t:class=\"classes\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-header\">\n\t\t\t\t\t<div class=\"top-title\">\n\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t\t<slot name=\"headerButtons\"></slot>\n\n\t\t\t\t\t\t<TopButton\n\t\t\t\t\t\t\tv-if=\"helpUrl\"\n\t\t\t\t\t\t\t:title=\"helpTitle ?? $i18n.Common.How_to_use\"\n\t\t\t\t\t\t\t:href=\"helpUrl\"\n\t\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\t\t@click=\"onHelp\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if=\"Core.state.isMobile && prevName\"\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Back\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"dialog.open(prevName)\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"close\"\n\t\t\t\t\t\t:title=\"$i18n.Common.Close\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\tdata-action=\"top-dialog-close\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\n\t\t<Teleport :to=\"'#' + dialog.idAttr + ' .modal-layer-body'\" :disabled=\"!dialog.needShowPage(name)\">\n\t\t\t<div\n\t\t\t\t:data-order=\"order\"\n\t\t\t\t:data-view-page=\"name\"\n\t\t\t\tclass=\"has_scroll_container\"\n\t\t\t\t:class=\"classes\"\n\t\t\t\t:style=\"{'--top-dialog-footer-height': $slots.footer ? undefined : '0px'}\"\n\t\t\t>\n\t\t\t\t<div class=\"modal-body\" v-top-scroll-shadow>\n\t\t\t\t\t<slot name=\"body\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclass=\"modal-footer\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'modal-footer-fullWith': footerFullWith\n\t\t\t\t\t}\"\n\t\t\t\t\tv-if=\"$slots.footer\"\n\t\t\t\t>\n\t\t\t\t\t<slot name=\"footer\"></slot>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Teleport>\n\t</div>\n</template>\n","export interface Props extends PropsCommon {\n\t/**\n\t * Статус загрузки страницы диалогового окна\n\t *\n\t * При включении взаимодействие со страницей блокируется, отображается анимация загрузки\n\t */\n\tisLoading?: boolean;\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n */\nexport interface PropsCommon {\n\t/**\n\t * Имя страницы для диалогового окна\n\t *\n\t * Имя страницы нужно для навигации между страницами в одном диалоговом окне\n\t */\n\tname: string,\n\n\t/**\n\t * Порядкой номер страницы в диалоговом окне\n\t *\n\t * Одна и та же страница может быть подключена в разные диалоговые окна и иметь разный порядковый номер\n\t */\n\torder: number,\n\n\t/**\n\t * Имя предыдущей страницы\n\t *\n\t * Для кнопки Назад / Закрыть в мобильной версии\n\t */\n\tprevName?: string,\n\n\t/**\n\t * Стиль отображения футера, при котороым элементы растягиваются на всю ширину\n\t *\n\t * Разрешены переносы\n\t */\n\tfooterFullWith?: boolean,\n\n\t/**\n\t * Ссылка на страницу справки\n\t */\n\thelpUrl?: string,\n\n\t/**\n\t * title кнопки открытия справки\n\t */\n\thelpTitle?: string,\n}\n\n/**\n * Общие props для компонентов реализуюущих TopDialogPage\n *\n * Для не SFC компонентов\n */\nexport const propsPageCommon = {\n\tname: {\n\t\ttype: String,\n\t\trequired: true,\n\t},\n\n\torder: {\n\t\ttype: Number,\n\t\trequired: true,\n\t},\n\n\tprevName: String,\n\n\tfooterFullWith: Boolean,\n\n\thelpUrl: String,\n\n\thelpTitle: String,\n};\n\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: Record<string, unknown>): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: Record<string, unknown>): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: Record<string, unknown>): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: Record<string, unknown>): any;\n}\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n","<script setup lang=\"ts\">\nimport { type Component, onUpdated, ref, type Ref } from 'vue';\nimport { useTopDialogSelf } from '@/components/dialog/dialog/composables/utils';\nimport type { Props } from './types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tkeepAlive: true,\n});\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Статус загрузи асинхронного компонента страницы диалогового окна\n */\nconst updateIsLoadingAsyncPage = (component: Component, isLoaded: Ref) => {\n\tif (isLoaded.value) return;\n\n\tif (component.name !== 'AsyncComponentWrapper') {\n\t\tisLoaded.value = true;\n\n\t\treturn;\n\t}\n\n\tif (!dialog.needShowPage(props.name as string)) return;\n\n\tdialog.isLoadingPage.value = true;\n\n\t// @ts-ignore\n\tif (component.__asyncResolved) {\n\t\tisLoaded.value = true;\n\n\t\tdialog.isLoadingPage.value = false;\n\t}\n};\n\nif (props.component.name === 'AsyncComponentWrapper') {\n\tconst isLoaded = ref(false);\n\n\tonUpdated(() => {\n\t\tupdateIsLoadingAsyncPage(props.component, isLoaded);\n\t});\n}\n</script>\n\n<template>\n\t<!-- Teleport внутри при keepAlive размонитроваться не будет, см. TopDialogPage -->\n\t<KeepAlive :include=\"keepAlive ? '' : 'none'\">\n\t\t<Component\n\t\t\t:is=\"component\"\n\t\t\tv-if=\"dialog.needShowPage(name)\"\n\t\t\t:=\"props\"\n\t\t\t:name=\"name\"\n\t\t\t:order=\"order\"\n\t\t\t:prevName=\"prevName\"\n\t\t/>\n\t</KeepAlive>\n</template>\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
define([`require`,`exports`,`./forms-DrY7Q_VD.es.amd`,`./utils-CpxXlmWP.es.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`./dialog-
|
|
2
|
-
//# sourceMappingURL=dialog_regionSelectorRegions-
|
|
1
|
+
define([`require`,`exports`,`./forms-DrY7Q_VD.es.amd`,`./utils-CpxXlmWP.es.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`./dialog-B1kB8NLM.es.amd`,`vue`,`../require/css.amd!../assets/dialog_regionSelectorRegions.css`],function(e,t,n,r,i,a,o,s){"use strict";if(c===void 0)var c=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var l={class:`dialog_regionSelectorRegions_header`},u=[`data-top-icon`],d=[`src`,`alt`],f={class:`top-ellipsis`},p={class:`dialog_regionSelectorRegions_regionAreaName`},m={key:1},h={key:2},g=[`data-top-icon`];t.default=(0,s.defineComponent)({id:`regionSelectorRegions`,__name:`dialog_regionSelectorRegions`,props:{regions:{},regionsIndexes:{},"@update:regionsIndexes":{type:Function}},setup(e){let t=e,c=(0,r.r)(),_=(0,s.ref)([]),v=(0,s.ref)(null),y=(0,s.reactive)({searcher_key:-1,key:-1,name:-1}),b=(0,s.computed)({get(){return _.value.every(e=>e.selected)},set(e){_.value=_.value.map(t=>({...t,selected:e}))}}),x=e=>{y[e]=-y[e],_.value.sort((t,n)=>!t[e]||!n[e]?-1:t[e]>=n[e]?y[e]:-y[e])},S=()=>{if(!_.value.some(e=>e.selected))return;let e=_.value.filter(e=>e.selected).map(e=>e.index);t[`@update:regionsIndexes`]?.(e),c.close()};(0,s.watch)([()=>t.regions,()=>t.regionsIndexes],()=>{if(_.value=[],!t.regions||!t.regionsIndexes)return;let e=[...t.regions],n=new Map(t.regionsIndexes.map((e,t)=>[e,t]));e.sort((e,t)=>(n.get(e.index)??Number.MAX_VALUE)-(n.get(t.index)??Number.MAX_VALUE)),e.forEach(e=>{let n=e.name;e.areaName&&(n+=` (${e.areaName})`);let r=t.regionsIndexes?.includes(e.index)??!1,o=(0,a.getSearcherGIcon)(e.searcher_key),s=e.lang===void 0?void 0:(0,a.getLangLabel)(e.searcher_key??999,e.lang),c=e.device===void 0?void 0:(0,a.getDeviceGIcon)(e.device),l=e.countryCode===void 0?void 0:(0,i.genFlagLinkByCountryCode)(e.countryCode),u={...e,selected:r,title:n,searcherIcon:o,langLabel:s,deviceIcon:c,flagLink:l};_.value.push(u)})});let C=()=>{if(!n.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}v.value&&$(v.value).sortable({distance:10,stop:()=>{let e=[...v.value.children].map(e=>Number(e.getAttribute(`data-region-index`)));_.value.sort((t,n)=>e.indexOf(t.index)-e.indexOf(n.index))}})},w=()=>{n.O.$?.ui.sortable&&v.value&&$(v.value).sortable(`destroy`)};return(e,t)=>{let n=(0,s.resolveComponent)(`TopCheckbox`),i=(0,s.resolveComponent)(`TopButton`);return(0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(r.s),{id:(0,s.unref)(c).id,pageActive:`regions`,class:`dialog_regionSelectorRegions`,height:`600px`,width:`600px`,onOpen:C,onClose:w},{default:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(o.r),{name:`regions`,order:0},{header:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,l,[(0,s.createVNode)(n,{modelValue:b.value,"onUpdate:modelValue":t[0]||=e=>b.value=e},null,8,[`modelValue`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[1]||=e=>x(`searcher_key`),title:e.$i18n.Projects?.Sort_by_search_engine},null,8,[`title`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[2]||=e=>x(`key`),title:e.$i18n.Projects?.Sort_by_yandex_region_code},null,8,[`title`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[3]||=e=>x(`name`),title:e.$i18n.Projects?.Sort_by_alphabetically},null,8,[`title`])])]),body:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,{ref_key:`elRegions`,ref:v},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(_.value,e=>((0,s.openBlock)(),(0,s.createBlock)(n,{key:e.index,modelValue:e.selected,"onUpdate:modelValue":t=>e.selected=t,class:`dialog_regionSelectorRegions_region`,"data-region-index":e.index},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,{class:`dialog_regionSelectorRegions_regionSearcherIcon`,"data-top-icon":e.searcherIcon},null,8,u),e.flagLink?((0,s.openBlock)(),(0,s.createElementBlock)(`img`,{key:0,class:`top-flag`,src:`//topvisor.dev`+e.flagLink,alt:e.countryCode},null,8,d)):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,f,[(0,s.createTextVNode)((0,s.toDisplayString)(e.name)+` `,1),(0,s.createElementVNode)(`span`,p,(0,s.toDisplayString)(e.areaName),1)]),e.langLabel?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,m,` [`+(0,s.toDisplayString)(e.langLabel)+`] `,1)):(0,s.createCommentVNode)(``,!0),e.alt?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,h,(0,s.toDisplayString)(e.alt),1)):(0,s.createCommentVNode)(``,!0),e.deviceIcon?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:3,"data-top-icon":e.deviceIcon},null,8,g)):(0,s.createCommentVNode)(``,!0)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`data-region-index`]))),128))],512)]),footer:(0,s.withCtx)(()=>[(0,s.createVNode)(i,{onClick:S},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(e.$i18n.Common?.Apply),1)]),_:1})]),_:1})]),_:1},8,[`id`])}}})});
|
|
2
|
+
//# sourceMappingURL=dialog_regionSelectorRegions-DmewEJc9.es.amd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[".chunks/dialog_regionSelectorRegions-BML7I8Qt.es.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","N","vue_1","P","g","F","utils_CpxXlmWP_es_js_1","I","L","R","z","B","V","t","n","s","searchers_js_1","c","l","u","string_js_1","d","H","forms_DrY7Q_VD_es_js_1","U","r","dialog_WEQO33BZ_es_js_1"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-DrY7Q_VD.es.js\", \"./utils-CpxXlmWP.es.js\", \"../utils/string.js\", \"../utils/searchers.js\", \"./dialog-WEQO33BZ.es.js\", \"vue\"], function (require, exports, forms_DrY7Q_VD_es_js_1, utils_CpxXlmWP_es_js_1, string_js_1, searchers_js_1, dialog_WEQO33BZ_es_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = void 0;\n //#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts\n var E = { class: \"dialog_regionSelectorRegions_header\" }, D = [\"data-top-icon\"], O = [\"src\", \"alt\"], k = { class: \"top-ellipsis\" }, A = { class: \"dialog_regionSelectorRegions_regionAreaName\" }, j = { key: 1 }, M = { key: 2 }, N = [\"data-top-icon\"], P = /* @__PURE__ */ (0, vue_1.defineComponent)({\n id: \"regionSelectorRegions\",\n __name: \"dialog_regionSelectorRegions\",\n props: {\n regions: {},\n regionsIndexes: {},\n \"@update:regionsIndexes\": { type: Function }\n },\n setup(g) {\n let P = g, F = (0, utils_CpxXlmWP_es_js_1.r)(), I = (0, vue_1.ref)([]), L = (0, vue_1.ref)(null), R = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), z = (0, vue_1.computed)({\n get() {\n return I.value.every((e) => e.selected);\n },\n set(e) {\n I.value = I.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), B = (e) => {\n R[e] = -R[e], I.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? R[e] : -R[e]);\n }, V = () => {\n if (!I.value.some((e) => e.selected))\n return;\n let e = I.value.filter((e) => e.selected).map((e) => e.index);\n P[\"@update:regionsIndexes\"]?.(e), F.close();\n };\n (0, vue_1.watch)([() => P.regions, () => P.regionsIndexes], () => {\n if (I.value = [], !P.regions || !P.regionsIndexes)\n return;\n let e = [...P.regions], t = new Map(P.regionsIndexes.map((e, t) => [e, t]));\n e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {\n let t = e.name;\n e.areaName && (t += ` (${e.areaName})`);\n let n = P.regionsIndexes?.includes(e.index) ?? !1, s = (0, searchers_js_1.getSearcherGIcon)(e.searcher_key), c = e.lang === void 0 ? void 0 : (0, searchers_js_1.getLangLabel)(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : (0, searchers_js_1.getDeviceGIcon)(e.device), u = e.countryCode === void 0 ? void 0 : (0, string_js_1.genFlagLinkByCountryCode)(e.countryCode), d = {\n ...e,\n selected: n,\n title: t,\n searcherIcon: s,\n langLabel: c,\n deviceIcon: l,\n flagLink: u\n };\n I.value.push(d);\n });\n });\n let H = () => {\n if (!forms_DrY7Q_VD_es_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n L.value && $(L.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...L.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n I.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, U = () => {\n forms_DrY7Q_VD_es_js_1.O.$?.ui.sortable && L.value && $(L.value).sortable(\"destroy\");\n };\n return (e, t) => {\n let r = (0, vue_1.resolveComponent)(\"TopCheckbox\"), i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.unref)(utils_CpxXlmWP_es_js_1.s), {\n id: (0, vue_1.unref)(F).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: H,\n onClose: U\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_WEQO33BZ_es_js_1.r), {\n name: \"regions\",\n order: 0\n }, {\n header: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", E, [\n (0, vue_1.createVNode)(r, {\n modelValue: z.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => z.value = e\n }, null, 8, [\"modelValue\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[1] ||= (e) => B(\"searcher_key\"),\n title: e.$i18n.Projects?.Sort_by_search_engine\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[2] ||= (e) => B(\"key\"),\n title: e.$i18n.Projects?.Sort_by_yandex_region_code\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[3] ||= (e) => B(\"name\"),\n title: e.$i18n.Projects?.Sort_by_alphabetically\n }, null, 8, [\"title\"])\n ])]),\n body: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", {\n ref_key: \"elRegions\",\n ref: L\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(I.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: e.index,\n modelValue: e.selected,\n \"onUpdate:modelValue\": (t) => e.selected = t,\n class: \"dialog_regionSelectorRegions_region\",\n \"data-region-index\": e.index\n }, {\n default: (0, vue_1.withCtx)(() => [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"dialog_regionSelectorRegions_regionSearcherIcon\",\n \"data-top-icon\": e.searcherIcon\n }, null, 8, D),\n e.flagLink ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"img\", {\n key: 0,\n class: \"top-flag\",\n src: \"//topvisor.dev\" + e.flagLink,\n alt: e.countryCode\n }, null, 8, O)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createElementVNode)(\"div\", k, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.name) + \" \", 1), (0, vue_1.createElementVNode)(\"span\", A, (0, vue_1.toDisplayString)(e.areaName), 1)]),\n e.langLabel ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", j, \" [\" + (0, vue_1.toDisplayString)(e.langLabel) + \"] \", 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.alt ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", M, (0, vue_1.toDisplayString)(e.alt), 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 3,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, N)) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]),\n _: 2\n }, 1032, [\n \"modelValue\",\n \"onUpdate:modelValue\",\n \"data-region-index\"\n ]))), 128))], 512)]),\n footer: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(i, { onClick: V }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.$i18n.Common?.Apply), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"id\"]);\n };\n }\n });\n exports.default = P;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-BML7I8Qt.es.js.map\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.alt\">\n\t\t\t\t\t\t\t{{ region.alt }}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
|
|
1
|
+
{"version":3,"sources":[".chunks/dialog_regionSelectorRegions-DmewEJc9.es.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","N","vue_1","P","g","F","utils_CpxXlmWP_es_js_1","I","L","R","z","B","V","t","n","s","searchers_js_1","c","l","u","string_js_1","d","H","forms_DrY7Q_VD_es_js_1","U","r","dialog_B1kB8NLM_es_js_1"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-DrY7Q_VD.es.js\", \"./utils-CpxXlmWP.es.js\", \"../utils/string.js\", \"../utils/searchers.js\", \"./dialog-B1kB8NLM.es.js\", \"vue\"], function (require, exports, forms_DrY7Q_VD_es_js_1, utils_CpxXlmWP_es_js_1, string_js_1, searchers_js_1, dialog_B1kB8NLM_es_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.default = void 0;\n //#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts\n var E = { class: \"dialog_regionSelectorRegions_header\" }, D = [\"data-top-icon\"], O = [\"src\", \"alt\"], k = { class: \"top-ellipsis\" }, A = { class: \"dialog_regionSelectorRegions_regionAreaName\" }, j = { key: 1 }, M = { key: 2 }, N = [\"data-top-icon\"], P = /* @__PURE__ */ (0, vue_1.defineComponent)({\n id: \"regionSelectorRegions\",\n __name: \"dialog_regionSelectorRegions\",\n props: {\n regions: {},\n regionsIndexes: {},\n \"@update:regionsIndexes\": { type: Function }\n },\n setup(g) {\n let P = g, F = (0, utils_CpxXlmWP_es_js_1.r)(), I = (0, vue_1.ref)([]), L = (0, vue_1.ref)(null), R = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), z = (0, vue_1.computed)({\n get() {\n return I.value.every((e) => e.selected);\n },\n set(e) {\n I.value = I.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), B = (e) => {\n R[e] = -R[e], I.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? R[e] : -R[e]);\n }, V = () => {\n if (!I.value.some((e) => e.selected))\n return;\n let e = I.value.filter((e) => e.selected).map((e) => e.index);\n P[\"@update:regionsIndexes\"]?.(e), F.close();\n };\n (0, vue_1.watch)([() => P.regions, () => P.regionsIndexes], () => {\n if (I.value = [], !P.regions || !P.regionsIndexes)\n return;\n let e = [...P.regions], t = new Map(P.regionsIndexes.map((e, t) => [e, t]));\n e.sort((e, n) => (t.get(e.index) ?? Number.MAX_VALUE) - (t.get(n.index) ?? Number.MAX_VALUE)), e.forEach((e) => {\n let t = e.name;\n e.areaName && (t += ` (${e.areaName})`);\n let n = P.regionsIndexes?.includes(e.index) ?? !1, s = (0, searchers_js_1.getSearcherGIcon)(e.searcher_key), c = e.lang === void 0 ? void 0 : (0, searchers_js_1.getLangLabel)(e.searcher_key ?? 999, e.lang), l = e.device === void 0 ? void 0 : (0, searchers_js_1.getDeviceGIcon)(e.device), u = e.countryCode === void 0 ? void 0 : (0, string_js_1.genFlagLinkByCountryCode)(e.countryCode), d = {\n ...e,\n selected: n,\n title: t,\n searcherIcon: s,\n langLabel: c,\n deviceIcon: l,\n flagLink: u\n };\n I.value.push(d);\n });\n });\n let H = () => {\n if (!forms_DrY7Q_VD_es_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n L.value && $(L.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...L.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n I.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, U = () => {\n forms_DrY7Q_VD_es_js_1.O.$?.ui.sortable && L.value && $(L.value).sortable(\"destroy\");\n };\n return (e, t) => {\n let r = (0, vue_1.resolveComponent)(\"TopCheckbox\"), i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createBlock)((0, vue_1.unref)(utils_CpxXlmWP_es_js_1.s), {\n id: (0, vue_1.unref)(F).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: H,\n onClose: U\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_B1kB8NLM_es_js_1.r), {\n name: \"regions\",\n order: 0\n }, {\n header: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", E, [\n (0, vue_1.createVNode)(r, {\n modelValue: z.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => z.value = e\n }, null, 8, [\"modelValue\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[1] ||= (e) => B(\"searcher_key\"),\n title: e.$i18n.Projects?.Sort_by_search_engine\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[2] ||= (e) => B(\"key\"),\n title: e.$i18n.Projects?.Sort_by_yandex_region_code\n }, null, 8, [\"title\"]),\n (0, vue_1.createVNode)(i, {\n class: \"dialog_regionSelectorRegions_sortButton\",\n color: \"theme\",\n \"data-top-icon\": \"\",\n onClick: t[3] ||= (e) => B(\"name\"),\n title: e.$i18n.Projects?.Sort_by_alphabetically\n }, null, 8, [\"title\"])\n ])]),\n body: (0, vue_1.withCtx)(() => [(0, vue_1.createElementVNode)(\"div\", {\n ref_key: \"elRegions\",\n ref: L\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(I.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: e.index,\n modelValue: e.selected,\n \"onUpdate:modelValue\": (t) => e.selected = t,\n class: \"dialog_regionSelectorRegions_region\",\n \"data-region-index\": e.index\n }, {\n default: (0, vue_1.withCtx)(() => [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"dialog_regionSelectorRegions_regionSearcherIcon\",\n \"data-top-icon\": e.searcherIcon\n }, null, 8, D),\n e.flagLink ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"img\", {\n key: 0,\n class: \"top-flag\",\n src: \"//topvisor.dev\" + e.flagLink,\n alt: e.countryCode\n }, null, 8, O)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createElementVNode)(\"div\", k, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.name) + \" \", 1), (0, vue_1.createElementVNode)(\"span\", A, (0, vue_1.toDisplayString)(e.areaName), 1)]),\n e.langLabel ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", j, \" [\" + (0, vue_1.toDisplayString)(e.langLabel) + \"] \", 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.alt ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", M, (0, vue_1.toDisplayString)(e.alt), 1)) : (0, vue_1.createCommentVNode)(\"\", !0),\n e.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 3,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, N)) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]),\n _: 2\n }, 1032, [\n \"modelValue\",\n \"onUpdate:modelValue\",\n \"data-region-index\"\n ]))), 128))], 512)]),\n footer: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(i, { onClick: V }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.$i18n.Common?.Apply), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"id\"]);\n };\n }\n });\n exports.default = P;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-DmewEJc9.es.js.map\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.alt\">\n\t\t\t\t\t\t\t{{ region.alt }}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
|
|
@@ -9,7 +9,7 @@ import { O as e } from "./forms-DrY7Q_VD.es.js";
|
|
|
9
9
|
import { r as t, s as n } from "./utils-CpxXlmWP.es.js";
|
|
10
10
|
import { genFlagLinkByCountryCode as r } from "../utils/string.js";
|
|
11
11
|
import { getDeviceGIcon as i, getLangLabel as a, getSearcherGIcon as o } from "../utils/searchers.js";
|
|
12
|
-
import { r as s } from "./dialog-
|
|
12
|
+
import { r as s } from "./dialog-B1kB8NLM.es.js";
|
|
13
13
|
import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, openBlock as _, reactive as v, ref as y, renderList as b, resolveComponent as x, toDisplayString as S, unref as C, watch as w, withCtx as T } from "vue";
|
|
14
14
|
//#region src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue?vue&type=script&setup=true&lang.ts
|
|
15
15
|
var E = { class: "dialog_regionSelectorRegions_header" }, D = ["data-top-icon"], O = ["src", "alt"], k = { class: "top-ellipsis" }, A = { class: "dialog_regionSelectorRegions_regionAreaName" }, j = { key: 1 }, M = { key: 2 }, N = ["data-top-icon"], P = /* @__PURE__ */ g({
|
|
@@ -166,4 +166,4 @@ var E = { class: "dialog_regionSelectorRegions_header" }, D = ["data-top-icon"],
|
|
|
166
166
|
//#endregion
|
|
167
167
|
export { P as default };
|
|
168
168
|
|
|
169
|
-
//# sourceMappingURL=dialog_regionSelectorRegions-
|
|
169
|
+
//# sourceMappingURL=dialog_regionSelectorRegions-DmewEJc9.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog_regionSelectorRegions-BML7I8Qt.es.js","names":[],"sources":["../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.alt\">\n\t\t\t\t\t\t\t{{ region.alt }}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.alt\">\n\t\t\t\t\t\t\t{{ region.alt }}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog_regionSelectorRegions-DmewEJc9.es.js","names":[],"sources":["../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.alt\">\n\t\t\t\t\t\t\t{{ region.alt }}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\n/* global $ */\n\nimport { computed, reactive, ref, watch } from 'vue';\nimport { TopDialog, TopDialogPage, useTopDialogSelf } from '@/components/dialog/dialog';\nimport { genFlagLinkByCountryCode } from '@/core/utils/string';\nimport type { Props, RegionRich } from './types';\nimport { getDeviceGIcon, getLangLabel, getSearcherGIcon } from '@/core/utils/searchers';\nimport Core from '@/core/core/core';\n\ndefineOptions({ id: 'regionSelectorRegions' });\n\nconst props = defineProps<Partial<Props>>();\n\nconst dialog = useTopDialogSelf();\n\n/**\n * Список расширенных регионов для использования в компоненте\n */\nconst regionsRich = ref<RegionRich[]>([]);\n\n/**\n * Ссылка на элемент с регионами\n */\nconst elRegions = ref<null | HTMLElement>(null);\n\n/**\n * Направление сортировки по полю\n */\nconst sortedVectorByField = reactive({\n\tsearcher_key: -1,\n\tkey: -1,\n\tname: -1,\n});\n\n/**\n * Выбраны все регионы\n */\nconst isAllSelected = computed({\n\tget() {\n\t\treturn regionsRich.value.every(region => region.selected);\n\t},\n\n\tset(value) {\n\t\tregionsRich.value = regionsRich.value.map(region => ({ ...region, selected: value }));\n\t},\n});\n\n/**\n * Сортировать регионы по выбранному полю\n * @param sortedField - Поле для сортировки\n */\nconst sort = (sortedField: keyof typeof sortedVectorByField) => {\n\tsortedVectorByField[sortedField] = -sortedVectorByField[sortedField];\n\n\tregionsRich.value.sort((regionA, regionB) => {\n\t\tif (!regionA[sortedField] || !regionB[sortedField]) return -1;\n\n\t\treturn regionA[sortedField] >= regionB[sortedField] ? sortedVectorByField[sortedField] : -sortedVectorByField[sortedField];\n\t});\n};\n\n/**\n * Применить изменения\n *\n * Вызывает callback `props['@update:regionsIndexes']`\n */\nconst onSubmit = () => {\n\tif (!regionsRich.value.some(region => region.selected)) return;\n\n\tconst regionsIndexes = regionsRich.value\n\t\t.filter(region => region.selected)\n\t\t.map(region => region.index);\n\n\tprops['@update:regionsIndexes']?.(regionsIndexes);\n\n\tdialog.close();\n};\n\n// генерация регионов\nwatch([\n\t() => props.regions,\n\t() => props.regionsIndexes,\n], () => {\n\tregionsRich.value = [];\n\n\tif (!props.regions) return;\n\tif (!props.regionsIndexes) return;\n\n\tconst regions = [...props.regions];\n\n\t// отсортировать регионы по входным данным\n\tconst orderByRegionIndex = new Map(props.regionsIndexes.map((index, order) => [index, order]));\n\n\tregions.sort((regionA, regionB) => {\n\t\tconst orderA = orderByRegionIndex.get(regionA.index) ?? Number.MAX_VALUE;\n\t\tconst orderB = orderByRegionIndex.get(regionB.index) ?? Number.MAX_VALUE;\n\n\t\treturn orderA - orderB;\n\t});\n\n\tregions.forEach(region => {\n\t\tlet title = region.name;\n\t\tif (region.areaName) title += ` (${region.areaName})`;\n\n\t\tconst selected = props.regionsIndexes?.includes(region.index) ?? false;\n\t\tconst searcherIcon = getSearcherGIcon(region.searcher_key);\n\t\tconst langLabel = region.lang !== undefined ? getLangLabel(region.searcher_key ?? 999, region.lang) : undefined;\n\t\tconst deviceIcon = region.device !== undefined ? getDeviceGIcon(region.device) : undefined;\n\t\tconst flagLink = region.countryCode !== undefined ? genFlagLinkByCountryCode(region.countryCode) : undefined;\n\n\t\tconst regionRich = {\n\t\t\t...region,\n\t\t\tselected,\n\t\t\ttitle,\n\t\t\tsearcherIcon,\n\t\t\tlangLabel,\n\t\t\tdeviceIcon,\n\t\t\tflagLink,\n\t\t};\n\n\t\tregionsRich.value.push(regionRich);\n\t});\n});\n\n/**\n * Проверить на существование sortable\n */\nconst onOpen = () => {\n\tif (!Core.$?.ui['sortable']) {\n\t\tconsole.info('Для работы сортировки требуется глобальная загрузка jQuery UI Sortable');\n\n\t\treturn;\n\t}\n\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable({\n\t\tdistance: 10,\n\n\t\tstop: () => {\n\t\t\t// Обновляем порядок регионов в массиве regionsRich после сортировки\n\t\t\tconst sortedIndexes = [...elRegions.value!.children].map(el => Number(el.getAttribute('data-region-index')));\n\t\t\tregionsRich.value.sort((a, b) => sortedIndexes.indexOf(a.index) - sortedIndexes.indexOf(b.index));\n\t\t},\n\t});\n};\n\n/**\n * Удаление sortable\n */\nconst onClose = () => {\n\tif (!Core.$?.ui['sortable']) return;\n\tif (!elRegions.value) return;\n\n\t$(elRegions.value).sortable('destroy');\n};\n\n</script>\n\n<template>\n\t<TopDialog\n\t\t:id=\"dialog.id\"\n\t\tpageActive=\"regions\"\n\t\tclass=\"dialog_regionSelectorRegions\"\n\t\theight=\"600px\"\n\t\twidth=\"600px\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\"\n\t>\n\t\t<TopDialogPage name=\"regions\" :order=\"0\">\n\t\t\t<template #header>\n\t\t\t\t<div class=\"dialog_regionSelectorRegions_header\">\n\t\t\t\t\t<TopCheckbox v-model=\"isAllSelected\"></TopCheckbox>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('searcher_key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_search_engine\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('key')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_yandex_region_code\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_sortButton\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\tdata-top-icon=\"\"\n\t\t\t\t\t\t@click=\"sort('name')\"\n\t\t\t\t\t\t:title=\"$i18n.Projects?.Sort_by_alphabetically\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #body>\n\t\t\t\t<div ref=\"elRegions\">\n\t\t\t\t\t<TopCheckbox\n\t\t\t\t\t\tv-for=\"region of regionsRich\"\n\t\t\t\t\t\t:key=\"region.index\"\n\t\t\t\t\t\tv-model=\"region.selected\"\n\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_region\"\n\t\t\t\t\t\t:data-region-index=\"region.index\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"dialog_regionSelectorRegions_regionSearcherIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.searcherIcon\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tv-if=\"region.flagLink\"\n\t\t\t\t\t\t\tclass=\"top-flag\"\n\t\t\t\t\t\t\t:src=\"'//topvisor.dev' + region.flagLink\"\n\t\t\t\t\t\t\t:alt=\"region.countryCode\"\n\t\t\t\t\t\t>\n\n\t\t\t\t\t\t<div class=\"top-ellipsis\">\n\t\t\t\t\t\t\t{{ region.name }}\n\n\t\t\t\t\t\t\t<span class=\"dialog_regionSelectorRegions_regionAreaName\">\n\t\t\t\t\t\t\t\t{{ region.areaName }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.langLabel\">\n\t\t\t\t\t\t\t[{{ region.langLabel }}]\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div v-if=\"region.alt\">\n\t\t\t\t\t\t\t{{ region.alt }}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-if=\"region.deviceIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"region.deviceIcon\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</TopCheckbox>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<TopButton @click=\"onSubmit\">\n\t\t\t\t\t{{ $i18n.Common?.Apply }}\n\t\t\t\t</TopButton>\n\t\t\t</template>\n\t\t</TopDialogPage>\n\t</TopDialog>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":"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"}
|