@topvisor/ui 1.5.7-0 → 1.5.7-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/{api-DupNAJPm.amd.js → api-7QFznvLR.amd.js} +2 -2
- package/.chunks/{api-DupNAJPm.amd.js.map → api-7QFznvLR.amd.js.map} +1 -1
- package/.chunks/{api-DupNAJPm.esm.js → api-7QFznvLR.esm.js} +2 -2
- package/.chunks/{api-DupNAJPm.esm.js.map → api-7QFznvLR.esm.js.map} +1 -1
- package/.chunks/{app-DinkodXi.amd.js → app-BI7BuMMX.amd.js} +2 -2
- package/.chunks/{app-DinkodXi.amd.js.map → app-BI7BuMMX.amd.js.map} +1 -1
- package/.chunks/{app-DinkodXi.esm.js → app-BI7BuMMX.esm.js} +5 -5
- package/.chunks/{app-DinkodXi.esm.js.map → app-BI7BuMMX.esm.js.map} +1 -1
- package/.chunks/{datepicker-bozIEbDA.amd.js → datepicker-DYdxOiJC.amd.js} +2 -2
- package/.chunks/{datepicker-bozIEbDA.amd.js.map → datepicker-DYdxOiJC.amd.js.map} +1 -1
- package/.chunks/{datepicker-bozIEbDA.esm.js → datepicker-DYdxOiJC.esm.js} +2 -2
- package/.chunks/{datepicker-bozIEbDA.esm.js.map → datepicker-DYdxOiJC.esm.js.map} +1 -1
- package/.chunks/{dialog-BCDVMWG1.amd.js → dialog-YkK3k6Ei.amd.js} +2 -2
- package/.chunks/{dialog-BCDVMWG1.amd.js.map → dialog-YkK3k6Ei.amd.js.map} +1 -1
- package/.chunks/{dialog-BCDVMWG1.esm.js → dialog-YkK3k6Ei.esm.js} +3 -3
- package/.chunks/{dialog-BCDVMWG1.esm.js.map → dialog-YkK3k6Ei.esm.js.map} +1 -1
- package/.chunks/{dialog_regionSelectorRegions-0M1fMu1a.amd.js → dialog_regionSelectorRegions-BGboPhrg.amd.js} +2 -2
- package/.chunks/{dialog_regionSelectorRegions-0M1fMu1a.amd.js.map → dialog_regionSelectorRegions-BGboPhrg.amd.js.map} +1 -1
- package/.chunks/{dialog_regionSelectorRegions-0M1fMu1a.esm.js → dialog_regionSelectorRegions-BGboPhrg.esm.js} +4 -4
- package/.chunks/{dialog_regionSelectorRegions-0M1fMu1a.esm.js.map → dialog_regionSelectorRegions-BGboPhrg.esm.js.map} +1 -1
- package/.chunks/{forms-CY5MOh7a.amd.js → forms-3EhjGbIm.amd.js} +2 -2
- package/.chunks/forms-3EhjGbIm.amd.js.map +1 -0
- package/.chunks/{forms-CY5MOh7a.esm.js → forms-3EhjGbIm.esm.js} +6 -6
- package/.chunks/{forms-CY5MOh7a.esm.js.map → forms-3EhjGbIm.esm.js.map} +1 -1
- package/.chunks/formsExt-Bwe_GFoI.amd.js +2 -0
- package/.chunks/formsExt-Bwe_GFoI.amd.js.map +1 -0
- package/.chunks/{formsExt-DzXSTWaT.esm.js → formsExt-Bwe_GFoI.esm.js} +34 -26
- package/.chunks/formsExt-Bwe_GFoI.esm.js.map +1 -0
- package/.chunks/{notice-bro62vCA.amd.js → notice-CAZoT0RU.amd.js} +2 -2
- package/.chunks/{notice-bro62vCA.amd.js.map → notice-CAZoT0RU.amd.js.map} +1 -1
- package/.chunks/{notice-bro62vCA.esm.js → notice-CAZoT0RU.esm.js} +2 -2
- package/.chunks/{notice-bro62vCA.esm.js.map → notice-CAZoT0RU.esm.js.map} +1 -1
- package/.chunks/{popup-3cwJ8Hev.amd.js → popup-DhySIsg9.amd.js} +2 -2
- package/.chunks/popup-DhySIsg9.amd.js.map +1 -0
- package/.chunks/{popup-3cwJ8Hev.esm.js → popup-DhySIsg9.esm.js} +4 -4
- package/.chunks/{popup-3cwJ8Hev.esm.js.map → popup-DhySIsg9.esm.js.map} +1 -1
- package/.chunks/{popup-CzhBQhVH.amd.js → popup-w1mbbfr8.amd.js} +2 -2
- package/.chunks/{popup-CzhBQhVH.amd.js.map → popup-w1mbbfr8.amd.js.map} +1 -1
- package/.chunks/{popup-CzhBQhVH.esm.js → popup-w1mbbfr8.esm.js} +3 -3
- package/.chunks/{popup-CzhBQhVH.esm.js.map → popup-w1mbbfr8.esm.js.map} +1 -1
- package/.chunks/{utils-ds_g-L_r.amd.js → utils-D3lUe-RP.amd.js} +2 -2
- package/.chunks/{utils-ds_g-L_r.amd.js.map → utils-D3lUe-RP.amd.js.map} +1 -1
- package/.chunks/{utils-ds_g-L_r.esm.js → utils-D3lUe-RP.esm.js} +4 -4
- package/.chunks/{utils-ds_g-L_r.esm.js.map → utils-D3lUe-RP.esm.js.map} +1 -1
- package/.chunks/{utils-Be-ScFyj.amd.js → utils-Db5TDjU8.amd.js} +2 -2
- package/.chunks/{utils-Be-ScFyj.amd.js.map → utils-Db5TDjU8.amd.js.map} +1 -1
- package/.chunks/{utils-Be-ScFyj.esm.js → utils-Db5TDjU8.esm.js} +3 -3
- package/.chunks/{utils-Be-ScFyj.esm.js.map → utils-Db5TDjU8.esm.js.map} +1 -1
- package/.chunks/{worker-Bv_yPPMv.amd.js → worker-DNQ_Rvpj.amd.js} +2 -2
- package/.chunks/{worker-Bv_yPPMv.amd.js.map → worker-DNQ_Rvpj.amd.js.map} +1 -1
- package/.chunks/{worker-Bv_yPPMv.esm.js → worker-DNQ_Rvpj.esm.js} +3 -3
- package/.chunks/{worker-Bv_yPPMv.esm.js.map → worker-DNQ_Rvpj.esm.js.map} +1 -1
- package/api/index.amd.js +1 -1
- package/api/index.amd.js.map +1 -1
- package/api/index.js +1 -1
- package/autoload-css-manifest.amd.json +4 -4
- package/autoload-css-manifest.json +4 -4
- package/charts/charts.amd.js +1 -1
- package/charts/charts.amd.js.map +1 -1
- package/charts/charts.js +1 -1
- package/core/app.amd.js +1 -1
- package/core/app.amd.js.map +1 -1
- package/core/app.js +3 -3
- package/dialog/dialog.amd.js +1 -1
- package/dialog/dialog.amd.js.map +1 -1
- package/dialog/dialog.js +2 -2
- package/extra/extra.amd.js +1 -1
- package/extra/extra.amd.js.map +1 -1
- package/extra/extra.js +2 -0
- package/extra/extra.js.map +1 -1
- package/forms/forms.amd.js +1 -1
- package/forms/forms.amd.js.map +1 -1
- package/forms/forms.js +1 -1
- package/formsExt/formsExt.amd.js +1 -1
- package/formsExt/formsExt.amd.js.map +1 -1
- package/formsExt/formsExt.js +1 -1
- package/layout/layout.amd.js +1 -1
- package/layout/layout.amd.js.map +1 -1
- package/layout/layout.js +1 -1
- package/package.json +3 -2
- package/popup/popup.amd.js +1 -1
- package/popup/popup.amd.js.map +1 -1
- package/popup/popup.js +1 -1
- package/popup/worker.amd.js +1 -1
- package/popup/worker.amd.js.map +1 -1
- package/popup/worker.js +1 -1
- package/project/project.amd.js +1 -1
- package/project/project.amd.js.map +1 -1
- package/project/project.js +12 -12
- package/project/project.js.map +1 -1
- package/schedule/schedule.amd.js +1 -1
- package/schedule/schedule.amd.js.map +1 -1
- package/schedule/schedule.js +42 -42
- package/schedule/schedule.js.map +1 -1
- package/src/components/formsExt/selector2/composables/useMenu.d.ts +2 -0
- package/src/components/formsExt/selector2/types.d.ts +8 -0
- package/src/components/project/regionSelector/utils/utils.d.ts +2 -2
- package/src/components/schedule/schedule/compoents/calendar/types.d.ts +9 -3
- package/src/components/schedule/schedule/compoents/email/types.d.ts +3 -0
- package/src/components/schedule/schedule/compoents/reportSend/types.d.ts +9 -0
- package/src/components/schedule/schedule/compoents/timeSelector/types.d.ts +12 -6
- package/src/components/schedule/schedule/compoents/timeSelectors/types.d.ts +3 -0
- package/src/core/plugins/core.d.ts +2 -2
- package/tabsView/tabsView.amd.js +1 -1
- package/tabsView/tabsView.amd.js.map +1 -1
- package/tabsView/tabsView.js +3 -3
- package/tabsView/tabsView.js.map +1 -1
- package/utils/clipboard.amd.js +1 -1
- package/utils/clipboard.amd.js.map +1 -1
- package/utils/clipboard.js +1 -1
- package/utils/date.amd.js +1 -1
- package/utils/date.amd.js.map +1 -1
- package/utils/date.js +1 -1
- package/utils/device.amd.js +1 -1
- package/utils/device.amd.js.map +1 -1
- package/utils/device.js +1 -1
- package/utils/lodash.amd.js +1 -1
- package/utils/lodash.amd.js.map +1 -1
- package/utils/lodash.js +1 -1
- package/utils/price.amd.js +1 -1
- package/utils/price.amd.js.map +1 -1
- package/utils/price.js +1 -1
- package/utils/searchers.amd.js +1 -1
- package/utils/searchers.amd.js.map +1 -1
- package/utils/searchers.js +1 -1
- package/utils/string.amd.js +1 -1
- package/utils/string.amd.js.map +1 -1
- package/utils/string.js +1 -1
- package/.chunks/forms-CY5MOh7a.amd.js.map +0 -1
- package/.chunks/formsExt-DzXSTWaT.amd.js +0 -2
- package/.chunks/formsExt-DzXSTWaT.amd.js.map +0 -1
- package/.chunks/formsExt-DzXSTWaT.esm.js.map +0 -1
- package/.chunks/popup-3cwJ8Hev.amd.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-BCDVMWG1.esm.js","names":["$i18n","$slots"],"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</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\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</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\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\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\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: {}): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: {}): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: {}): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: {}): 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
|
+
{"version":3,"file":"dialog-YkK3k6Ei.esm.js","names":["$i18n","$slots"],"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</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\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</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\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\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\nexport interface Slots {\n\t/**\n\t * Шапка страницы\n\t */\n\theader(props: {}): any;\n\n\t/**\n\t * Кнопки для шапки страницы\n\t */\n\theaderButtons?(props: {}): any;\n\n\t/**\n\t * Контент страницы\n\t */\n\tbody(props: {}): any;\n\n\t/**\n\t * Футер страницы\n\t */\n\tfooter?(props: {}): 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-
|
|
2
|
-
//# sourceMappingURL=dialog_regionSelectorRegions-
|
|
1
|
+
define([`require`,`exports`,`./forms-3EhjGbIm.amd`,`./utils-Db5TDjU8.amd`,`../utils/string.amd`,`../utils/searchers.amd`,`./dialog-YkK3k6Ei.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=[`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)(),g=(0,s.ref)([]),_=(0,s.ref)(null),v=(0,s.reactive)({searcher_key:-1,key:-1,name:-1}),y=(0,s.computed)({get(){return g.value.every(e=>e.selected)},set(e){g.value=g.value.map(t=>({...t,selected:e}))}}),b=e=>{v[e]=-v[e],g.value.sort((t,n)=>!t[e]||!n[e]?-1:t[e]>=n[e]?v[e]:-v[e])},x=()=>{if(!g.value.some(e=>e.selected))return;let e=g.value.filter(e=>e.selected).map(e=>e.index);t[`@update:regionsIndexes`]?.(e),c.close()};(0,s.watch)([()=>t.regions,()=>t.regionsIndexes],()=>{if(g.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};g.value.push(u)})});let S=()=>{if(!n.O.$?.ui.sortable){console.info(`Для работы сортировки требуется глобальная загрузка jQuery UI Sortable`);return}_.value&&$(_.value).sortable({distance:10,stop:()=>{let e=[..._.value.children].map(e=>Number(e.getAttribute(`data-region-index`)));g.value.sort((t,n)=>e.indexOf(t.index)-e.indexOf(n.index))}})},C=()=>{n.O.$?.ui.sortable&&_.value&&$(_.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:S,onClose:C},{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:y.value,"onUpdate:modelValue":t[0]||=e=>y.value=e},null,8,[`modelValue`]),(0,s.createVNode)(i,{class:`dialog_regionSelectorRegions_sortButton`,color:`theme`,"data-top-icon":``,onClick:t[1]||=e=>b(`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=>b(`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=>b(`name`),title:e.$i18n.Projects?.Sort_by_alphabetically},null,8,[`title`])])]),body:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`div`,{ref_key:`elRegions`,ref:_},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(g.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.deviceIcon?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:2,"data-top-icon":e.deviceIcon},null,8,h)):(0,s.createCommentVNode)(``,!0)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`data-region-index`]))),128))],512)]),footer:(0,s.withCtx)(()=>[(0,s.createVNode)(i,{onClick:x},{default:(0,s.withCtx)(()=>[(0,s.createTextVNode)((0,s.toDisplayString)(e.$i18n.Common?.Apply),1)]),_:1})]),_:1})]),_:1},8,[`id`])}}})});
|
|
2
|
+
//# sourceMappingURL=dialog_regionSelectorRegions-BGboPhrg.amd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[".chunks/dialog_regionSelectorRegions-0M1fMu1a.esm.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","vue_1","N","g","P","utils_Be_ScFyj_esm_js_1","F","I","L","R","z","B","t","n","s","searchers_js_1","c","l","u","string_js_1","d","V","forms_CY5MOh7a_esm_js_1","H","r","dialog_BCDVMWG1_esm_js_1"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-CY5MOh7a.esm.js\", \"./utils-Be-ScFyj.esm.js\", \"../utils/string.js\", \"../utils/searchers.js\", \"./dialog-BCDVMWG1.esm.js\", \"vue\"], function (require, exports, forms_CY5MOh7a_esm_js_1, utils_Be_ScFyj_esm_js_1, string_js_1, searchers_js_1, dialog_BCDVMWG1_esm_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 = [\"data-top-icon\"], N = /* @__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 N = g, P = (0, utils_Be_ScFyj_esm_js_1.r)(), F = (0, vue_1.ref)([]), I = (0, vue_1.ref)(null), L = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), R = (0, vue_1.computed)({\n get() {\n return F.value.every((e) => e.selected);\n },\n set(e) {\n F.value = F.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), z = (e) => {\n L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);\n }, B = () => {\n if (!F.value.some((e) => e.selected))\n return;\n let e = F.value.filter((e) => e.selected).map((e) => e.index);\n N[\"@update:regionsIndexes\"]?.(e), P.close();\n };\n (0, vue_1.watch)([() => N.regions, () => N.regionsIndexes], () => {\n if (F.value = [], !N.regions || !N.regionsIndexes)\n return;\n let e = [...N.regions], t = new Map(N.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 = N.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 F.value.push(d);\n });\n });\n let V = () => {\n if (!forms_CY5MOh7a_esm_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n I.value && $(I.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...I.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, H = () => {\n forms_CY5MOh7a_esm_js_1.O.$?.ui.sortable && I.value && $(I.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_Be_ScFyj_esm_js_1.s), {\n id: (0, vue_1.unref)(P).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: V,\n onClose: H\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_BCDVMWG1_esm_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: R.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => R.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) => z(\"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) => z(\"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) => z(\"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: I\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(F.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.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 2,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, M)) : (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: B }, {\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 = N;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-0M1fMu1a.esm.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\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-BGboPhrg.esm.js","../../src/components/project/regionSelector/dialog_regionSelectorRegions/dialog_regionSelectorRegions.vue"],"names":["vue","exports","E","D","O","k","A","j","M","vue_1","N","g","P","utils_Db5TDjU8_esm_js_1","F","I","L","R","z","B","t","n","s","searchers_js_1","c","l","u","string_js_1","d","V","forms_3EhjGbIm_esm_js_1","H","r","dialog_YkK3k6Ei_esm_js_1"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"./forms-3EhjGbIm.esm.js\", \"./utils-Db5TDjU8.esm.js\", \"../utils/string.js\", \"../utils/searchers.js\", \"./dialog-YkK3k6Ei.esm.js\", \"vue\"], function (require, exports, forms_3EhjGbIm_esm_js_1, utils_Db5TDjU8_esm_js_1, string_js_1, searchers_js_1, dialog_YkK3k6Ei_esm_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 = [\"data-top-icon\"], N = /* @__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 N = g, P = (0, utils_Db5TDjU8_esm_js_1.r)(), F = (0, vue_1.ref)([]), I = (0, vue_1.ref)(null), L = (0, vue_1.reactive)({\n searcher_key: -1,\n key: -1,\n name: -1\n }), R = (0, vue_1.computed)({\n get() {\n return F.value.every((e) => e.selected);\n },\n set(e) {\n F.value = F.value.map((t) => ({\n ...t,\n selected: e\n }));\n }\n }), z = (e) => {\n L[e] = -L[e], F.value.sort((t, n) => !t[e] || !n[e] ? -1 : t[e] >= n[e] ? L[e] : -L[e]);\n }, B = () => {\n if (!F.value.some((e) => e.selected))\n return;\n let e = F.value.filter((e) => e.selected).map((e) => e.index);\n N[\"@update:regionsIndexes\"]?.(e), P.close();\n };\n (0, vue_1.watch)([() => N.regions, () => N.regionsIndexes], () => {\n if (F.value = [], !N.regions || !N.regionsIndexes)\n return;\n let e = [...N.regions], t = new Map(N.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 = N.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 F.value.push(d);\n });\n });\n let V = () => {\n if (!forms_3EhjGbIm_esm_js_1.O.$?.ui.sortable) {\n console.info(\"Для работы сортировки требуется глобальная загрузка jQuery UI Sortable\");\n return;\n }\n I.value && $(I.value).sortable({\n distance: 10,\n stop: () => {\n let e = [...I.value.children].map((e) => Number(e.getAttribute(\"data-region-index\")));\n F.value.sort((t, n) => e.indexOf(t.index) - e.indexOf(n.index));\n }\n });\n }, H = () => {\n forms_3EhjGbIm_esm_js_1.O.$?.ui.sortable && I.value && $(I.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_Db5TDjU8_esm_js_1.s), {\n id: (0, vue_1.unref)(P).id,\n pageActive: \"regions\",\n class: \"dialog_regionSelectorRegions\",\n height: \"600px\",\n width: \"600px\",\n onOpen: V,\n onClose: H\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)((0, vue_1.unref)(dialog_YkK3k6Ei_esm_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: R.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => R.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) => z(\"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) => z(\"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) => z(\"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: I\n }, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(F.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.deviceIcon ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: 2,\n \"data-top-icon\": e.deviceIcon\n }, null, 8, M)) : (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: B }, {\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 = N;\n});\n//# sourceMappingURL=dialog_regionSelectorRegions-BGboPhrg.esm.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\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"]}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
_autoloadCSSCore.insertCSSLinkToPage(fileNames, true);
|
|
6
6
|
/* end import css */
|
|
7
7
|
|
|
8
|
-
import { O as e } from "./forms-
|
|
9
|
-
import { r as t, s as n } from "./utils-
|
|
8
|
+
import { O as e } from "./forms-3EhjGbIm.esm.js";
|
|
9
|
+
import { r as t, s as n } from "./utils-Db5TDjU8.esm.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-YkK3k6Ei.esm.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 = ["data-top-icon"], N = /* @__PURE__ */ g({
|
|
@@ -165,4 +165,4 @@ var E = { class: "dialog_regionSelectorRegions_header" }, D = ["data-top-icon"],
|
|
|
165
165
|
//#endregion
|
|
166
166
|
export { N as default };
|
|
167
167
|
|
|
168
|
-
//# sourceMappingURL=dialog_regionSelectorRegions-
|
|
168
|
+
//# sourceMappingURL=dialog_regionSelectorRegions-BGboPhrg.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog_regionSelectorRegions-0M1fMu1a.esm.js","names":["$i18n"],"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\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\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-BGboPhrg.esm.js","names":["$i18n"],"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\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\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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"}
|