@ozdao/martyrs 0.2.594 → 0.2.596
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/dist/builder.js +2 -2
- package/dist/martyrs/src/components/EditImages/{EditImages.vue2.js → EditImages.vue.js} +2 -2
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -0
- package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -2
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +2 -2
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
- package/dist/style.css +12 -12
- package/package.json +1 -1
- package/src/jit/variants.js +2 -2
- package/src/modules/core/views/components/layouts/Client.vue +1 -1
- package/src/modules/core/views/components/partials/Navigation.vue +2 -2
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
package/dist/builder.js
CHANGED
|
@@ -1517,11 +1517,11 @@ const variants = [
|
|
|
1517
1517
|
// ========================================
|
|
1518
1518
|
{
|
|
1519
1519
|
name: "dark",
|
|
1520
|
-
wrapper: (selector, css) => `@media (prefers-color-scheme: dark) { .${selector} { ${css} } }`
|
|
1520
|
+
wrapper: (selector, css) => `@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .${selector} { ${css} } }`
|
|
1521
1521
|
},
|
|
1522
1522
|
{
|
|
1523
1523
|
name: "light",
|
|
1524
|
-
wrapper: (selector, css) => `@media (prefers-color-scheme: light) { .${selector} { ${css} } }`
|
|
1524
|
+
wrapper: (selector, css) => `@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) .${selector} { ${css} } }`
|
|
1525
1525
|
},
|
|
1526
1526
|
// ========================================
|
|
1527
1527
|
// GROUP VARIANTS
|
|
@@ -2,7 +2,7 @@ import { ref, watchEffect, createElementBlock, openBlock, createBlock, createCom
|
|
|
2
2
|
import { VueDraggableNext } from "../../../../node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js";
|
|
3
3
|
import _sfc_main$2 from "../UploadImageMultiple/UploadImageMultiple.vue.js";
|
|
4
4
|
import _sfc_main$1 from "../../modules/icons/navigation/IconCross.vue.js";
|
|
5
|
-
/* empty css
|
|
5
|
+
/* empty css */
|
|
6
6
|
const _hoisted_1 = { class: "flex-nowrap flex gap-small" };
|
|
7
7
|
const _hoisted_2 = { class: "pos-relative" };
|
|
8
8
|
const _hoisted_3 = ["src"];
|
|
@@ -92,4 +92,4 @@ const _sfc_main = {
|
|
|
92
92
|
export {
|
|
93
93
|
_sfc_main as default
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=EditImages.
|
|
95
|
+
//# sourceMappingURL=EditImages.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditImages.vue.js","sources":["../../../../../src/components/EditImages/EditImages.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex gap-small\">\n <VueDraggableNext v-if=\"localImages.length > 0\" class=\"gap-small flex dragArea list-group w-full\" v-model=\"localImages\" @change=\"emitChanges\">\n\t\t\t<div v-for=\"(image, index) in localImages\" class=\"pos-relative\">\n\t\t\t\t<img loading=\"lazy\" class=\"i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden\" :src=\"(FILE_SERVER_URL || '') + image\" />\n\t\t\t\t\n <IconCross \n @click=\"deleteImage(index)\" \n class=\"cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro\"\n />\n\t\t\t</div>\n\t\t</VueDraggableNext>\n <div\n v-if=\"localImages.length > 0\" \n class=\"i-extra uppercase flex-center flex radius-small o-hidden br-main br-2px pd-small\"\n >\n <UploadImageMultiple \n @update:images=\"onImagesUpdate\"\n text=\"Add\"\n :options=\"{\n showText: false\n }\"\n :uploadPath=\"'photos'\"\n class=\"radius-big\"\n />\n </div>\n\n\n\t\t<UploadImageMultiple \t\n v-if=\"localImages.length < 1\" \n @update:images=\"onImagesUpdate\"\n :uploadPath=\"props.uploadPath\"\n :text=\"props.text\"\n :options=\"props.options\"\n class=\"w-100 pd-medium\"\n />\n\t</div>\t\n</template>\n\n<script setup>\nimport { ref, defineProps, watchEffect } from 'vue';\nimport { VueDraggableNext } from 'vue-draggable-next'\nimport UploadImageMultiple from \"@martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue\";\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n images: Array,\n text: Object,\n options: Object,\n uploadPath: {\n type: Object,\n default: 'unsorted'\n }\n});\n\nconst emit = defineEmits(['update:images'])\n\nconst localImages = ref([...props.images])\n\nwatchEffect(() => {\n localImages.value = [...props.images]; // Обновление localImages при изменении props.images\n});\n\nconst emitChanges = () => {\n emit('update:images', localImages.value)\n}\n\nconst onImagesUpdate = (newImages) => {\n localImages.value = [...localImages.value, ...newImages]\n emitChanges()\n}\n\nconst deleteImage = (index) => {\n localImages.value.splice(index, 1)\n emitChanges()\n}\n</script>\n\n<style lang=\"scss\">\n// Your styles here\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAEb,UAAM,cAAc,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;AAEzC,gBAAY,MAAM;AAChB,kBAAY,QAAQ,CAAC,GAAG,MAAM,MAAM;AAAA,IACtC,CAAC;AAED,UAAM,cAAc,MAAM;AACxB,WAAK,iBAAiB,YAAY,KAAK;AAAA,IACzC;AAEA,UAAM,iBAAiB,CAAC,cAAc;AACpC,kBAAY,QAAQ,CAAC,GAAG,YAAY,OAAO,GAAG,SAAS;AACvD,kBAAW;AAAA,IACb;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,kBAAY,MAAM,OAAO,OAAO,CAAC;AACjC,kBAAW;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, computed, watch, createElementBlock, openBlock, Fragment, withDirectives, createVNode, normalizeClass, withModifiers, createCommentVNode, createElementVNode, toDisplayString, Transition, withCtx, renderList, vShow, unref, nextTick } from "vue";
|
|
2
2
|
import clickOutside from "../FieldPhone/click-outside.js";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
5
5
|
const _hoisted_1 = {
|
|
6
6
|
key: 0,
|
|
@@ -131,4 +131,4 @@ const Select = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-af5
|
|
|
131
131
|
export {
|
|
132
132
|
Select as default
|
|
133
133
|
};
|
|
134
|
-
//# sourceMappingURL=Select.
|
|
134
|
+
//# sourceMappingURL=Select.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.vue.js","sources":["../../../../../src/components/Select/Select.vue"],"sourcesContent":["<template>\n <!-- Input Wrapper -->\n <div \n ref=\"fieldWrapper\"\n tabindex=\"0\"\n @click.stop=\"toggleMenu\" \n v-click-outside=\"clickedOutside\" \n :class=\"$attrs.class\" \n class=\"cursor-pointer field-wrapper flex-v-center flex-nowrap flex pos-relative\"\n >\n <!-- Label -->\n <span v-if=\"label\" class=\"t-transp mn-r-small\">{{label}}</span>\n \n <!-- Input -->\n <span>\n {{ optionsSelected ? (optionsSelected.name || optionsSelected[props.value] || optionsSelected) : placeholder }}\n </span>\n <!-- Dropdown menu -->\n <transition mode=\"out-in\" name=\"TransitionTranslateY\">\n <ul \n v-show=\"showMenu\" \n class=\"bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100\"\n style=\"min-width: max-content;\"\n >\n <li @click.stop=\"selectOption(option)\" v-for=\"option in optionsListed\" class=\"radius-thin hover:bg-light pd-thin text-box-trim\">\n <span v-if=\"option\" class=\"w-100\">\n {{ option.name || option[props.value] || option }}\n </span>\n </li>\n </ul>\n </transition>\n </div>\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<script setup>\nimport { ref, computed, watch, nextTick } from 'vue'\nimport clickOutside from '../FieldPhone/click-outside.js';\nlet vClickOutside = clickOutside\nconst emit = defineEmits([\n 'update:select', \n 'focus', \n 'blur'\n])\nconst props = defineProps({\n label: String,\n placeholder: { type: String, default: 'Please select an item' },\n select: [String, Object],\n property: String,\n value: String,\n options: { type: Array, default: () => [] },\n validation: Boolean,\n})\nconst showMenu = ref(false)\nconst fieldWrapper = ref(null)\nconst optionsSelected = ref(\n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select\n)\nconst optionsListed = computed(() => {\n return props.select \n ? props.options.filter(option => option !== props.select) \n : props.options\n})\nwatch(() => props.select, (newSelect) => {\n optionsSelected.value = \n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select;\n});\nconst toggleMenu = async () => {\n showMenu.value = !showMenu.value\n \n if (showMenu.value) {\n await nextTick()\n fieldWrapper.value?.focus()\n emit('focus')\n } else {\n emit('blur')\n }\n}\nfunction clickedOutside () {\n showMenu.value = false\n}\nconst selectOption = option => {\n optionsSelected.value = option\n \n toggleMenu()\n if (props.property) { \n emit('update:select', optionsSelected.value[props.property])\n } else {\n emit('update:select', optionsSelected.value)\n }\n}\nfunction findObjectByValue (value, property, objects) {\n for (const object of objects) {\n if (object[property] === value || object === value) {\n return object;\n }\n }\n return null;\n}\n</script>\n<style lang=\"scss\" scoped>\n li {\n list-style-type: none;\n }\n ul li {\n line-height: 2;\n }\n .field-wrapper:focus {\n outline: none;\n }\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,QAAI,gBAAgB;AACpB,UAAM,OAAO;AAKb,UAAM,QAAQ;AASd,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,kBAAkB;AAAA,MACtB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV;AACA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,SACX,MAAM,QAAQ,OAAO,YAAU,WAAW,MAAM,MAAM,IACtD,MAAM;AAAA,IACV,CAAC;AACD,UAAM,MAAM,MAAM,QAAQ,CAAC,cAAc;AACvC,sBAAgB,QAChB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV,CAAC;AACD,UAAM,aAAa,YAAY;AAC7B,eAAS,QAAQ,CAAC,SAAS;AAE3B,UAAI,SAAS,OAAO;AAClB,cAAM,SAAQ;AACd,qBAAa,OAAO,MAAK;AACzB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,iBAAkB;AACzB,eAAS,QAAQ;AAAA,IACnB;AACA,UAAM,eAAe,YAAU;AAC7B,sBAAgB,QAAQ;AAExB,iBAAU;AACV,UAAI,MAAM,UAAU;AAClB,aAAK,iBAAiB,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7D,OAAO;AACL,aAAK,iBAAiB,gBAAgB,KAAK;AAAA,MAC7C;AAAA,IACF;AACA,aAAS,kBAAmB,OAAO,UAAU,SAAS;AACpD,iBAAW,UAAU,SAAS;AAC5B,YAAI,OAAO,QAAQ,MAAM,SAAS,WAAW,OAAO;AAClD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, unref, createBlock, normalizeClass, createTextVNode, withCtx, Transition, resolveDynamicComponent, Fragment, renderList } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
|
-
import Select from "../../../../components/Select/Select.
|
|
3
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
4
4
|
import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
|
|
5
5
|
import _sfc_main$6 from "../../../organizations/components/blocks/CardOrganization.vue.js";
|
|
6
6
|
import _sfc_main$1 from "../../../icons/entities/IconFeatured.vue.js";
|
|
@@ -301,8 +301,9 @@ const _sfc_main = {
|
|
|
301
301
|
footer: withCtx(() => [
|
|
302
302
|
unref(route).meta?.sidebar_footer_component ? (openBlock(), createBlock(resolveDynamicComponent(unref(route).meta.sidebar_footer_component), {
|
|
303
303
|
key: 0,
|
|
304
|
-
theme: headerTheme.value
|
|
305
|
-
|
|
304
|
+
theme: headerTheme.value,
|
|
305
|
+
stateSidebar: unref(store).core.state.isOpenSidebar
|
|
306
|
+
}, null, 8, ["theme", "stateSidebar"])) : createCommentVNode("", true)
|
|
306
307
|
]),
|
|
307
308
|
default: withCtx(() => [
|
|
308
309
|
createVNode(Transition, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.vue.js","sources":["../../../../../../../../src/modules/core/views/components/layouts/Client.vue"],"sourcesContent":["<template>\n <div\n class=\"flex flex-column h-100 w-100 pos-relative o-hidden\"\n id=\"app-wrapper\"\n :class=\"{\n [(route.name ? route.name.replace(/\\s+/g, '_') : route.path.replace(/\\W+/g, '_')).toLowerCase()]: true,\n 'pd-t-big': MOBILE_APP === 'ios',\n 'bg-white': headerTheme === 'light',\n 'bg-black': headerTheme === 'dark',\n }\"\n >\n <transition name=\"moveFromTop\" appear>\n <Loader class=\"pos-fixed z-index-10\" v-if=\"!page || store.core.state.loading\" :centered=\"true\" />\n </transition>\n\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <section class=\"w-100 h-100\" v-if=\"FirstUse && route.meta.walkthrough\">\n <component class=\"tab\" :is=\"route.meta.walkthrough\" name=\"Walkthrough\" @updateFirstUse=\"updateFirstUse\" :slides=\"[1, 2, 3]\"> </component>\n </section>\n </transition>\n \n <transition name=\"moveFromTop\" mode=\"out-in\">\n <Status class=\"z-index-10\" v-if=\"store.core.state.error.show\" :data=\"store.core.state.error\" @close=\"store.core.state.error.show = false\" />\n </transition>\n\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <Snack\n class=\"z-index-10\"\n v-if=\"store.core.state.snack.show\"\n :type=\"store.core.state.snack.type\"\n :message=\"store.core.state.snack.message\"\n :show=\"store.core.state.snack.show\"\n @close=\"store.core.state.snack.show = false\"\n />\n </transition>\n\n\n <component\n v-if=\"!MOBILE_APP && route.meta.header\"\n ref=\"header\"\n :is=\"route.meta.header\"\n :theme=\"headerTheme\"\n :logotype=\"route.meta.logotype\"\n :location=\"route.meta.location\"\n :headerClass=\"computedHeaderClass\"\n :showCart=\"route.meta.header_show_cart ?? true\"\n :showProfile=\"route.meta.header_show_profile ?? true\"\n :showNotifications=\"route.meta.header_show_notifications ?? true\"\n >\n <component\n v-if=\"route.meta?.header_navigation\"\n :is=\"route.meta.header_navigation\"\n :horizontal=\"true\"\n :navigationItems=\"route.meta.header_navigation_items\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n :theme=\"headerTheme\"\n />\n <template #right>\n <component v-if=\"route.meta?.header_right_component\" :is=\"route.meta.header_right_component\" :theme=\"headerTheme\" />\n </template>\n </component>\n\n\n <transition name=\"moveFromTop\" mode=\"out-in\" appear>\n <component\n v-if=\"MOBILE_APP && !route.meta.hideNavigationBar\"\n :is=\"route.meta.navigationbar\"\n :logotype=\"route.meta.logotype\"\n :navigationItems=\"route.meta.sidebar_navigation_items\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n />\n </transition>\n\n <Popup class=\"bg-white pd-semi w-m-33r radius-big\" @close-popup=\"closeLocationPopup\" :isPopupOpen=\"store.core.state.isOpenLocationPopup\">\n <LocationSelection />\n </Popup>\n\n <!-- class=\"flex flex-nowrap ease-in-out o-hidden pos-relative\" -->\n <section\n class=\"flex flex-nowrap h-100 pos-relative o-hidden ease-in-out\"\n id=\"screen\"\n ref=\"screen\"\n :class=\"{\n '': MOBILE_APP === 'ios',\n }\"\n >\n <ShopCart\n :class=\"{\n 'mobile:pd-t-extra': MOBILE_APP === 'ios',\n }\"\n />\n <component\n v-if=\"route.meta?.sidebar\"\n :is=\"route.meta.sidebar\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n :widthHidden=\"route.meta?.sidebar_width_hidden\"\n :width=\"route.meta?.sidebar_width\"\n :theme=\"headerTheme\"\n @closeSidebar=\"() => (store.core.state.isOpenSidebar = false)\"\n >\n <!-- Header slot -->\n <template #header>\n <component v-if=\"route.meta?.sidebar_header_component\" :is=\"route.meta.sidebar_header_component\" :theme=\"headerTheme\" />\n </template>\n\n <!-- Navigation (default slot) -->\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <component\n v-if=\"route.meta?.sidebar_navigation\"\n :is=\"route.meta.sidebar_navigation\"\n :key=\"route.meta.sidebar_navigation\"\n :navigationItems=\"route.meta.sidebar_navigation_items\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n :theme=\"headerTheme\"\n />\n </transition>\n\n <!-- Footer slot -->\n <template #footer>\n <component v-if=\"route.meta?.sidebar_footer_component\" :is=\"route.meta.sidebar_footer_component\" :theme=\"headerTheme\" />\n </template>\n </component>\n\t \n <div class=\"rows-[minmax(0,1fr)] z-index-1 pos-relative w-100 h-100\">\n <div class=\"o-y-scroll o-x-hidden h-100\" id=\"scrollview\" ref=\"scrollview\" @scroll=\"handleScroll\">\n <div class=\"h-min-100 pos-relative w-100\">\n <!-- <section v-if=\"!route.meta?.breadcrumbs?.hide\" class=\"pd-thin pd-b-zero\">\n\t\t\t\t<Breadcrumbs \n\t\t\t\t\tv-if=\"!MOBILE_APP\"\n\t\t\t\t\tclass=\"bg-light pd-small radius-small\"\n\t\t\t\t/>\n\t\t\t</section> -->\n\n <Suspense @resolve=\"onSuspenseResolved\">\n <router-view\n class=\"h-min-100 pos-relative w-100\"\n id=\"view\"\n v-slot=\"{ Component, route }\"\n :class=\"{\n 'scroll-hide': MOBILE_APP,\n }\"\n >\n <transition @before-enter=\"scrollTop\" name=\"scaleTransition\" mode=\"out-in\" appear>\n <div class=\"w-100 h-min-100\" :key=\"componentKey\">\n <component class=\"w-100 h-min-100\" ref=\"page\" :is=\"Component\" @page-loading=\"handlePageLoading\" @page-loaded=\"handlePageLoaded\" />\n <component\n v-if=\"!MOBILE_APP && route.meta.footer && !route.meta.hideFooter\"\n ref=\"footer\"\n :is=\"route.meta.footer\"\n :theme=\"route.meta.footer_theme || 'light'\"\n :logotype=\"route.meta.logotype\"\n :location=\"route.meta.location\"\n />\n </div>\n </transition>\n </router-view>\n </Suspense>\n </div>\n\n <component class=\"z-index-2\" id=\"player-wrapper\" v-if=\"route.meta.player\" :is=\"route.meta.player\" />\n </div>\n </div>\n </section>\n\n <router-view v-slot=\"{ Component, route }\" name=\"defaultBottom\">\n <component :is=\"Component\" />\n </router-view>\n\n <component class=\"z-index-2\" v-if=\"MOBILE_APP && route.meta.title_hide\" :is=\"route.meta.bottombar\" />\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, onMounted } from 'vue';\n// Router\nimport { useRoute } from 'vue-router';\n// Store\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n// Partials\nimport Status from '@martyrs/src/components/Status/Status.vue';\nimport Snack from '@martyrs/src/components/Status/Snack.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\n\nimport NavigationBar from '@martyrs/src/modules/core/views/components/partials/NavigationBar.vue';\nimport LocationSelection from '@martyrs/src/modules/core/views/components/partials/LocationSelection.vue';\n\nimport ShopCart from '@martyrs/src/modules/orders/components/partials/ShopCart.vue';\n// PROPS\nconst props = defineProps({\n env: {\n type: Object,\n required: true,\n },\n app: {\n type: Object,\n required: true,\n },\n modules: {\n type: Object,\n required: true,\n },\n});\n\nconst store = useStore();\n\n/////////////////////////////\n// LOADING\n/////////////////////////////\n// State\nlet show = ref(false);\n// Preloader\nconst page = ref(null);\nconst scrollview = ref(null);\n\n// isPageLoading убран - используем core.state.loading\n\n// Обработчики событий загрузки\nfunction handlePageLoading() {\n store.core.state.loading = true;\n}\n\nfunction handlePageLoaded() {\n store.core.state.loading = false;\n}\n\n// Обработка события разрешения Suspense (когда async setup компонента завершается)\nfunction onSuspenseResolved() {\n // Если страница не отправляет событие page-loaded, этот обработчик\n // может служить запасным вариантом для отключения лоадера\n // Можно оставить закомментированным, если все страницы будут явно вызывать handlePageLoaded\n store.core.state.loading = false;\n}\n/////////////////////////////\n// CREATED\n/////////////////////////////\nconst route = useRoute();\n// const router = useRouter()\n\n// Инициализация sidebar для SSR + первая загрузка\nif (route.meta?.sidebarOpenOnEnter === true) {\n store.core.state.isOpenSidebar = true;\n}\n\n// Ref Code\nconst referalCode = ref(route.query.referalCode);\n/////////////////////////////\n// Methods\n/////////////////////////////\nfunction closeLocationPopup() {\n store.core.state.isOpenLocationPopup = false;\n}\nfunction scrollTop() {\n if (scrollview.value) scrollview.value.scrollTop = 0;\n}\n// Scrolling header\nconst scrollOffset = ref(0);\nconst header = ref(null);\n\n// Режим → классы позиционирования\nconst modeClasses = {\n static: 'pos-relative',\n sticky: 'pos-sticky pos-t-0',\n fixed: 'pos-fixed pos-t-0 w-100',\n overlay: 'pos-absolute pos-t-0 w-100'\n};\n\n// isScrolled\nconst isScrolled = computed(() =>\n scrollOffset.value > (route.meta.header_scroll_threshold ?? 50)\n);\n\n// headerTheme с учётом скролла\nconst headerTheme = computed(() => {\n if (isScrolled.value && route.meta.header_scroll_theme) {\n return route.meta.header_scroll_theme;\n }\n return route.meta.header_theme || 'light';\n});\n\n// headerModeClass (overlay → fixed после скролла)\nconst headerModeClass = computed(() => {\n const mode = route.meta.header_mode || 'static';\n if (mode === 'overlay' && isScrolled.value) {\n return 'pos-fixed pos-t-0 w-100';\n }\n return modeClasses[mode];\n});\n\n// headerAppearanceClass\nconst headerAppearanceClass = computed(() => {\n const config = isScrolled.value\n ? route.meta.header_scroll_class\n : route.meta.header_class;\n\n if (config && typeof config === 'object') {\n return config[headerTheme.value];\n }\n return config;\n});\n\n// Autohide\nconst isHidden = ref(false);\nlet lastScrollY = 0;\n\n// computedHeaderClass для передачи в Header\nconst computedHeaderClass = computed(() => [\n headerModeClass.value,\n headerAppearanceClass.value,\n { 'header--hidden': isHidden.value }\n]);\n\nconst handleScroll = (event) => {\n const scrollY = event.target.scrollTop;\n scrollOffset.value = scrollY;\n\n // Autohide логика\n if (route.meta.header_autohide) {\n if (scrollY > lastScrollY && scrollY > 200) {\n isHidden.value = true;\n } else if (scrollY < lastScrollY) {\n isHidden.value = false;\n }\n lastScrollY = scrollY;\n }\n};\n/////////////////////////////\n// FIRST USE\n/////////////////////////////\nconst FirstUse = ref(false);\n\nimport { Preferences } from '@capacitor/preferences';\n\nasync function getFirstUse() {\n const ret = await Preferences.get({ key: 'first-use' });\n FirstUse.value = ret.value ? JSON.parse(ret.value) : true;\n}\n\nconst updateFirstUse = value => {\n FirstUse.value = value;\n};\n\nconst { isPhone, isTablet } = useGlobalMixins();\n\nonMounted(async () => {\n await getFirstUse();\n\n // Закрываем sidebar на mobile (CSS уже скрыл визуально)\n if ((isPhone() || isTablet()) && store.core.state.isOpenSidebar) {\n store.core.state.isOpenSidebar = false;\n }\n\n // Регистрация единого Service Worker (PWA + push notifications)\n if ('serviceWorker' in navigator && !window.__MOBILE_APP__) {\n window.addEventListener('load', () => {\n navigator.serviceWorker\n .register('/sw.js')\n .then(registration => {\n console.log('Unified SW registered: ', registration);\n })\n .catch(registrationError => {\n console.log('SW registration failed: ', registrationError);\n });\n });\n }\n\n if (!store.core.state.position && route.meta.location) {\n store.core.state.isOpenLocationPopup = true;\n } else {\n store.core.state.isOpenLocationPopup = false;\n }\n\n if (referalCode.value) {\n localStorage.setItem('referalCode', referalCode.value);\n }\n\n if (page.value) show.value = true;\n});\n\nconst componentKey = computed(() => {\n // Собираем только значимые параметры (ID сущностей)\n const significantParams = ['_id', 'product', 'organization', 'categoryPath', 'country', 'state', 'city']\n .map(param => route.params[param])\n .filter(Boolean)\n .join('-');\n\n return significantParams || route.meta.layoutKey || route.name;\n});\n</script>\n\n<style lang=\"scss\">\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.5s;\n}\n\n.fade-enter,\n.fade-leave-to\n\n/* .fade-leave-active в версии 2.1.8+ */ {\n opacity: 0;\n}\n\n.fade-move,\n.fade-enter-active,\n.fade-leave-active {\n transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1);\n}\n\n/* 2. declare enter from and leave to state */\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n transform: translate(30px, 0);\n}\n\n/* 3. ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.fade-leave-active {\n position: absolute;\n}\n\n.moveFromTop-enter-active,\n.moveFromTop-leave-active {\n transition:\n all 0.3s ease,\n max-height 0.2s ease;\n overflow: hidden;\n}\n\n.moveFromTop-enter-from,\n.moveFromTop-leave-to {\n transform: translateY(-1rem);\n opacity: 0;\n // max-height: 0;\n}\n\n.moveFromTop-enter-to,\n.moveFromTop-leave-from {\n // max-height: 100vh;\n}\n\n.moveFromTopAbsolute-enter-active,\n.moveFromTopAbsolute-leave-active {\n transform: translateY(0);\n opacity: 1;\n transition: all 0.5s ease;\n}\n\n.moveFromTopAbsolute-enter-from,\n.moveFromTopAbsolute-leave-to {\n position: absolute;\n transform: translateY(-1rem);\n opacity: 0;\n transition: all 0.5s ease;\n}\n\n.ScaleOut-enter-active,\n.ScaleOut-leave-active {\n opacity: 1;\n transform: scale(1);\n transition: all 0.3s ease;\n}\n\n.ScaleOut-enter-from,\n.ScaleOut-leave-to {\n opacity: 0;\n transform: scale(0.9);\n transition: all 0.3s ease;\n}\n\n.slide-fade-enter-active {\n // min-height: 100vh;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.slide-fade-leave-active {\n // min-height: 100vh;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.slide-fade-enter-from,\n.slide-fade-leave-to {\n min-height: 0;\n transform: translateX(20px);\n opacity: 0;\n left: 0;\n top: 0;\n}\n\n.scaleTransition-5px-enter-active,\n.scaleTransition-5px-leave-active {\n transform: translateY(0px);\n opacity: 1;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.scaleTransition-5px-enter-from,\n.scaleTransition-5px-leave-to {\n opacity: 0;\n z-index: 0;\n position: absolute;\n transform: translateY(-30px);\n transition: all 0.2s ease;\n}\n\n.scaleTransition-enter-from,\n.scaleTransition-leave-to {\n opacity: 0;\n z-index: 0;\n position: absolute;\n width: inherit;\n height: inherit;\n display: block;\n transform: translateY(30px);\n transition: all 0.5s ease;\n}\n\n.scaleTransition-enter-active,\n.scaleTransition-leave-active {\n transform: translateY(0px);\n opacity: 1;\n z-index: 1;\n transition: all 0.5s ease;\n}\n\n.scaleTransition-enter-from,\n.scaleTransition-leave-to {\n opacity: 0;\n z-index: 0;\n position: absolute;\n width: inherit;\n height: inherit;\n display: block;\n transform: translateY(30px);\n transition: all 0.5s ease;\n}\n\n.scaleIn-enter-active,\n.scaleIn-leave-active {\n // background: red;\n transition: all 0.5s ease;\n\n > section,\n div {\n transform-origin: 0 0;\n transform: translateZ(0px);\n transition: all 0.5s ease;\n }\n}\n\n.scaleIn-enter-from,\n.scaleIn-leave-to {\n opacity: 0;\n transform: scale(0.95);\n\n > section,\n div {\n transform: translateZ(-30px);\n transition: all 0.5s ease;\n }\n}\n</style>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Client.vue.js","sources":["../../../../../../../../src/modules/core/views/components/layouts/Client.vue"],"sourcesContent":["<template>\n <div\n class=\"flex flex-column h-100 w-100 pos-relative o-hidden\"\n id=\"app-wrapper\"\n :class=\"{\n [(route.name ? route.name.replace(/\\s+/g, '_') : route.path.replace(/\\W+/g, '_')).toLowerCase()]: true,\n 'pd-t-big': MOBILE_APP === 'ios',\n 'bg-white': headerTheme === 'light',\n 'bg-black': headerTheme === 'dark',\n }\"\n >\n <transition name=\"moveFromTop\" appear>\n <Loader class=\"pos-fixed z-index-10\" v-if=\"!page || store.core.state.loading\" :centered=\"true\" />\n </transition>\n\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <section class=\"w-100 h-100\" v-if=\"FirstUse && route.meta.walkthrough\">\n <component class=\"tab\" :is=\"route.meta.walkthrough\" name=\"Walkthrough\" @updateFirstUse=\"updateFirstUse\" :slides=\"[1, 2, 3]\"> </component>\n </section>\n </transition>\n \n <transition name=\"moveFromTop\" mode=\"out-in\">\n <Status class=\"z-index-10\" v-if=\"store.core.state.error.show\" :data=\"store.core.state.error\" @close=\"store.core.state.error.show = false\" />\n </transition>\n\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <Snack\n class=\"z-index-10\"\n v-if=\"store.core.state.snack.show\"\n :type=\"store.core.state.snack.type\"\n :message=\"store.core.state.snack.message\"\n :show=\"store.core.state.snack.show\"\n @close=\"store.core.state.snack.show = false\"\n />\n </transition>\n\n\n <component\n v-if=\"!MOBILE_APP && route.meta.header\"\n ref=\"header\"\n :is=\"route.meta.header\"\n :theme=\"headerTheme\"\n :logotype=\"route.meta.logotype\"\n :location=\"route.meta.location\"\n :headerClass=\"computedHeaderClass\"\n :showCart=\"route.meta.header_show_cart ?? true\"\n :showProfile=\"route.meta.header_show_profile ?? true\"\n :showNotifications=\"route.meta.header_show_notifications ?? true\"\n >\n <component\n v-if=\"route.meta?.header_navigation\"\n :is=\"route.meta.header_navigation\"\n :horizontal=\"true\"\n :navigationItems=\"route.meta.header_navigation_items\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n :theme=\"headerTheme\"\n />\n <template #right>\n <component v-if=\"route.meta?.header_right_component\" :is=\"route.meta.header_right_component\" :theme=\"headerTheme\" />\n </template>\n </component>\n\n\n <transition name=\"moveFromTop\" mode=\"out-in\" appear>\n <component\n v-if=\"MOBILE_APP && !route.meta.hideNavigationBar\"\n :is=\"route.meta.navigationbar\"\n :logotype=\"route.meta.logotype\"\n :navigationItems=\"route.meta.sidebar_navigation_items\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n />\n </transition>\n\n <Popup class=\"bg-white pd-semi w-m-33r radius-big\" @close-popup=\"closeLocationPopup\" :isPopupOpen=\"store.core.state.isOpenLocationPopup\">\n <LocationSelection />\n </Popup>\n\n <!-- class=\"flex flex-nowrap ease-in-out o-hidden pos-relative\" -->\n <section\n class=\"flex flex-nowrap h-100 pos-relative o-hidden ease-in-out\"\n id=\"screen\"\n ref=\"screen\"\n :class=\"{\n '': MOBILE_APP === 'ios',\n }\"\n >\n <ShopCart\n :class=\"{\n 'mobile:pd-t-extra': MOBILE_APP === 'ios',\n }\"\n />\n <component\n v-if=\"route.meta?.sidebar\"\n :is=\"route.meta.sidebar\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n :widthHidden=\"route.meta?.sidebar_width_hidden\"\n :width=\"route.meta?.sidebar_width\"\n :theme=\"headerTheme\"\n @closeSidebar=\"() => (store.core.state.isOpenSidebar = false)\"\n >\n <!-- Header slot -->\n <template #header>\n <component v-if=\"route.meta?.sidebar_header_component\" :is=\"route.meta.sidebar_header_component\" :theme=\"headerTheme\" />\n </template>\n\n <!-- Navigation (default slot) -->\n <transition name=\"moveFromTop\" mode=\"out-in\">\n <component\n v-if=\"route.meta?.sidebar_navigation\"\n :is=\"route.meta.sidebar_navigation\"\n :key=\"route.meta.sidebar_navigation\"\n :navigationItems=\"route.meta.sidebar_navigation_items\"\n :stateSidebar=\"store.core.state.isOpenSidebar\"\n :theme=\"headerTheme\"\n />\n </transition>\n\n <!-- Footer slot -->\n <template #footer>\n <component v-if=\"route.meta?.sidebar_footer_component\" :is=\"route.meta.sidebar_footer_component\" :theme=\"headerTheme\" :stateSidebar=\"store.core.state.isOpenSidebar\" />\n </template>\n </component>\n\t \n <div class=\"rows-[minmax(0,1fr)] z-index-1 pos-relative w-100 h-100\">\n <div class=\"o-y-scroll o-x-hidden h-100\" id=\"scrollview\" ref=\"scrollview\" @scroll=\"handleScroll\">\n <div class=\"h-min-100 pos-relative w-100\">\n <!-- <section v-if=\"!route.meta?.breadcrumbs?.hide\" class=\"pd-thin pd-b-zero\">\n\t\t\t\t<Breadcrumbs \n\t\t\t\t\tv-if=\"!MOBILE_APP\"\n\t\t\t\t\tclass=\"bg-light pd-small radius-small\"\n\t\t\t\t/>\n\t\t\t</section> -->\n\n <Suspense @resolve=\"onSuspenseResolved\">\n <router-view\n class=\"h-min-100 pos-relative w-100\"\n id=\"view\"\n v-slot=\"{ Component, route }\"\n :class=\"{\n 'scroll-hide': MOBILE_APP,\n }\"\n >\n <transition @before-enter=\"scrollTop\" name=\"scaleTransition\" mode=\"out-in\" appear>\n <div class=\"w-100 h-min-100\" :key=\"componentKey\">\n <component class=\"w-100 h-min-100\" ref=\"page\" :is=\"Component\" @page-loading=\"handlePageLoading\" @page-loaded=\"handlePageLoaded\" />\n <component\n v-if=\"!MOBILE_APP && route.meta.footer && !route.meta.hideFooter\"\n ref=\"footer\"\n :is=\"route.meta.footer\"\n :theme=\"route.meta.footer_theme || 'light'\"\n :logotype=\"route.meta.logotype\"\n :location=\"route.meta.location\"\n />\n </div>\n </transition>\n </router-view>\n </Suspense>\n </div>\n\n <component class=\"z-index-2\" id=\"player-wrapper\" v-if=\"route.meta.player\" :is=\"route.meta.player\" />\n </div>\n </div>\n </section>\n\n <router-view v-slot=\"{ Component, route }\" name=\"defaultBottom\">\n <component :is=\"Component\" />\n </router-view>\n\n <component class=\"z-index-2\" v-if=\"MOBILE_APP && route.meta.title_hide\" :is=\"route.meta.bottombar\" />\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, onMounted } from 'vue';\n// Router\nimport { useRoute } from 'vue-router';\n// Store\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n// Partials\nimport Status from '@martyrs/src/components/Status/Status.vue';\nimport Snack from '@martyrs/src/components/Status/Snack.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Breadcrumbs from '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\n\nimport NavigationBar from '@martyrs/src/modules/core/views/components/partials/NavigationBar.vue';\nimport LocationSelection from '@martyrs/src/modules/core/views/components/partials/LocationSelection.vue';\n\nimport ShopCart from '@martyrs/src/modules/orders/components/partials/ShopCart.vue';\n// PROPS\nconst props = defineProps({\n env: {\n type: Object,\n required: true,\n },\n app: {\n type: Object,\n required: true,\n },\n modules: {\n type: Object,\n required: true,\n },\n});\n\nconst store = useStore();\n\n/////////////////////////////\n// LOADING\n/////////////////////////////\n// State\nlet show = ref(false);\n// Preloader\nconst page = ref(null);\nconst scrollview = ref(null);\n\n// isPageLoading убран - используем core.state.loading\n\n// Обработчики событий загрузки\nfunction handlePageLoading() {\n store.core.state.loading = true;\n}\n\nfunction handlePageLoaded() {\n store.core.state.loading = false;\n}\n\n// Обработка события разрешения Suspense (когда async setup компонента завершается)\nfunction onSuspenseResolved() {\n // Если страница не отправляет событие page-loaded, этот обработчик\n // может служить запасным вариантом для отключения лоадера\n // Можно оставить закомментированным, если все страницы будут явно вызывать handlePageLoaded\n store.core.state.loading = false;\n}\n/////////////////////////////\n// CREATED\n/////////////////////////////\nconst route = useRoute();\n// const router = useRouter()\n\n// Инициализация sidebar для SSR + первая загрузка\nif (route.meta?.sidebarOpenOnEnter === true) {\n store.core.state.isOpenSidebar = true;\n}\n\n// Ref Code\nconst referalCode = ref(route.query.referalCode);\n/////////////////////////////\n// Methods\n/////////////////////////////\nfunction closeLocationPopup() {\n store.core.state.isOpenLocationPopup = false;\n}\nfunction scrollTop() {\n if (scrollview.value) scrollview.value.scrollTop = 0;\n}\n// Scrolling header\nconst scrollOffset = ref(0);\nconst header = ref(null);\n\n// Режим → классы позиционирования\nconst modeClasses = {\n static: 'pos-relative',\n sticky: 'pos-sticky pos-t-0',\n fixed: 'pos-fixed pos-t-0 w-100',\n overlay: 'pos-absolute pos-t-0 w-100'\n};\n\n// isScrolled\nconst isScrolled = computed(() =>\n scrollOffset.value > (route.meta.header_scroll_threshold ?? 50)\n);\n\n// headerTheme с учётом скролла\nconst headerTheme = computed(() => {\n if (isScrolled.value && route.meta.header_scroll_theme) {\n return route.meta.header_scroll_theme;\n }\n return route.meta.header_theme || 'light';\n});\n\n// headerModeClass (overlay → fixed после скролла)\nconst headerModeClass = computed(() => {\n const mode = route.meta.header_mode || 'static';\n if (mode === 'overlay' && isScrolled.value) {\n return 'pos-fixed pos-t-0 w-100';\n }\n return modeClasses[mode];\n});\n\n// headerAppearanceClass\nconst headerAppearanceClass = computed(() => {\n const config = isScrolled.value\n ? route.meta.header_scroll_class\n : route.meta.header_class;\n\n if (config && typeof config === 'object') {\n return config[headerTheme.value];\n }\n return config;\n});\n\n// Autohide\nconst isHidden = ref(false);\nlet lastScrollY = 0;\n\n// computedHeaderClass для передачи в Header\nconst computedHeaderClass = computed(() => [\n headerModeClass.value,\n headerAppearanceClass.value,\n { 'header--hidden': isHidden.value }\n]);\n\nconst handleScroll = (event) => {\n const scrollY = event.target.scrollTop;\n scrollOffset.value = scrollY;\n\n // Autohide логика\n if (route.meta.header_autohide) {\n if (scrollY > lastScrollY && scrollY > 200) {\n isHidden.value = true;\n } else if (scrollY < lastScrollY) {\n isHidden.value = false;\n }\n lastScrollY = scrollY;\n }\n};\n/////////////////////////////\n// FIRST USE\n/////////////////////////////\nconst FirstUse = ref(false);\n\nimport { Preferences } from '@capacitor/preferences';\n\nasync function getFirstUse() {\n const ret = await Preferences.get({ key: 'first-use' });\n FirstUse.value = ret.value ? JSON.parse(ret.value) : true;\n}\n\nconst updateFirstUse = value => {\n FirstUse.value = value;\n};\n\nconst { isPhone, isTablet } = useGlobalMixins();\n\nonMounted(async () => {\n await getFirstUse();\n\n // Закрываем sidebar на mobile (CSS уже скрыл визуально)\n if ((isPhone() || isTablet()) && store.core.state.isOpenSidebar) {\n store.core.state.isOpenSidebar = false;\n }\n\n // Регистрация единого Service Worker (PWA + push notifications)\n if ('serviceWorker' in navigator && !window.__MOBILE_APP__) {\n window.addEventListener('load', () => {\n navigator.serviceWorker\n .register('/sw.js')\n .then(registration => {\n console.log('Unified SW registered: ', registration);\n })\n .catch(registrationError => {\n console.log('SW registration failed: ', registrationError);\n });\n });\n }\n\n if (!store.core.state.position && route.meta.location) {\n store.core.state.isOpenLocationPopup = true;\n } else {\n store.core.state.isOpenLocationPopup = false;\n }\n\n if (referalCode.value) {\n localStorage.setItem('referalCode', referalCode.value);\n }\n\n if (page.value) show.value = true;\n});\n\nconst componentKey = computed(() => {\n // Собираем только значимые параметры (ID сущностей)\n const significantParams = ['_id', 'product', 'organization', 'categoryPath', 'country', 'state', 'city']\n .map(param => route.params[param])\n .filter(Boolean)\n .join('-');\n\n return significantParams || route.meta.layoutKey || route.name;\n});\n</script>\n\n<style lang=\"scss\">\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.5s;\n}\n\n.fade-enter,\n.fade-leave-to\n\n/* .fade-leave-active в версии 2.1.8+ */ {\n opacity: 0;\n}\n\n.fade-move,\n.fade-enter-active,\n.fade-leave-active {\n transition: all 0.5s cubic-bezier(0.55, 0, 0.1, 1);\n}\n\n/* 2. declare enter from and leave to state */\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n transform: translate(30px, 0);\n}\n\n/* 3. ensure leaving items are taken out of layout flow so that moving\n animations can be calculated correctly. */\n.fade-leave-active {\n position: absolute;\n}\n\n.moveFromTop-enter-active,\n.moveFromTop-leave-active {\n transition:\n all 0.3s ease,\n max-height 0.2s ease;\n overflow: hidden;\n}\n\n.moveFromTop-enter-from,\n.moveFromTop-leave-to {\n transform: translateY(-1rem);\n opacity: 0;\n // max-height: 0;\n}\n\n.moveFromTop-enter-to,\n.moveFromTop-leave-from {\n // max-height: 100vh;\n}\n\n.moveFromTopAbsolute-enter-active,\n.moveFromTopAbsolute-leave-active {\n transform: translateY(0);\n opacity: 1;\n transition: all 0.5s ease;\n}\n\n.moveFromTopAbsolute-enter-from,\n.moveFromTopAbsolute-leave-to {\n position: absolute;\n transform: translateY(-1rem);\n opacity: 0;\n transition: all 0.5s ease;\n}\n\n.ScaleOut-enter-active,\n.ScaleOut-leave-active {\n opacity: 1;\n transform: scale(1);\n transition: all 0.3s ease;\n}\n\n.ScaleOut-enter-from,\n.ScaleOut-leave-to {\n opacity: 0;\n transform: scale(0.9);\n transition: all 0.3s ease;\n}\n\n.slide-fade-enter-active {\n // min-height: 100vh;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.slide-fade-leave-active {\n // min-height: 100vh;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.slide-fade-enter-from,\n.slide-fade-leave-to {\n min-height: 0;\n transform: translateX(20px);\n opacity: 0;\n left: 0;\n top: 0;\n}\n\n.scaleTransition-5px-enter-active,\n.scaleTransition-5px-leave-active {\n transform: translateY(0px);\n opacity: 1;\n z-index: 1;\n transition: all 0.2s ease;\n}\n\n.scaleTransition-5px-enter-from,\n.scaleTransition-5px-leave-to {\n opacity: 0;\n z-index: 0;\n position: absolute;\n transform: translateY(-30px);\n transition: all 0.2s ease;\n}\n\n.scaleTransition-enter-from,\n.scaleTransition-leave-to {\n opacity: 0;\n z-index: 0;\n position: absolute;\n width: inherit;\n height: inherit;\n display: block;\n transform: translateY(30px);\n transition: all 0.5s ease;\n}\n\n.scaleTransition-enter-active,\n.scaleTransition-leave-active {\n transform: translateY(0px);\n opacity: 1;\n z-index: 1;\n transition: all 0.5s ease;\n}\n\n.scaleTransition-enter-from,\n.scaleTransition-leave-to {\n opacity: 0;\n z-index: 0;\n position: absolute;\n width: inherit;\n height: inherit;\n display: block;\n transform: translateY(30px);\n transition: all 0.5s ease;\n}\n\n.scaleIn-enter-active,\n.scaleIn-leave-active {\n // background: red;\n transition: all 0.5s ease;\n\n > section,\n div {\n transform-origin: 0 0;\n transform: translateZ(0px);\n transition: all 0.5s ease;\n }\n}\n\n.scaleIn-enter-from,\n.scaleIn-leave-to {\n opacity: 0;\n transform: scale(0.95);\n\n > section,\n div {\n transform: translateZ(-30px);\n transition: all 0.5s ease;\n }\n}\n</style>\n"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { actions, getters } from "../../../../orders/store/shopcart.js";
|
|
|
6
6
|
import { state } from "../../../../auth/views/store/auth.js";
|
|
7
7
|
import NotificationBadge from "../../../../notifications/components/elements/NotificationBadge.vue.js";
|
|
8
8
|
import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
|
|
9
|
-
import Select from "../../../../../components/Select/Select.
|
|
9
|
+
import Select from "../../../../../components/Select/Select.vue.js";
|
|
10
10
|
import _sfc_main$4 from "../../../../icons/entities/IconShopcart.vue.js";
|
|
11
11
|
import _sfc_main$5 from "../../../../icons/entities/IconProfile.vue.js";
|
|
12
12
|
import _sfc_main$3 from "../../../../icons/navigation/IconSearch.vue.js";
|
|
@@ -180,7 +180,7 @@ const _sfc_main = {
|
|
|
180
180
|
!item.iconComponent ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(item.icon), 1)) : createCommentVNode("", true)
|
|
181
181
|
])) : createCommentVNode("", true),
|
|
182
182
|
createElementVNode("span", {
|
|
183
|
-
class: normalizeClass(["
|
|
183
|
+
class: normalizeClass(["ease-quint-out w-100 t-left fw-medium", { "pd-small": !__props.horizontal, "hidden": !__props.stateSidebar && !__props.horizontal, "visible": __props.stateSidebar || __props.horizontal }])
|
|
184
184
|
}, toDisplayString(item.title), 3),
|
|
185
185
|
item.subItems && __props.stateSidebar && !__props.horizontal ? (openBlock(), createElementBlock("span", {
|
|
186
186
|
key: 1,
|
|
@@ -240,7 +240,7 @@ const _sfc_main = {
|
|
|
240
240
|
};
|
|
241
241
|
}
|
|
242
242
|
};
|
|
243
|
-
const Navigation = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
243
|
+
const Navigation = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0f5220e0"]]);
|
|
244
244
|
export {
|
|
245
245
|
Navigation as default
|
|
246
246
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navigation.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Navigation.vue"],"sourcesContent":["<script setup>\nimport { ref, watch, computed } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\n\nimport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\nconst store = useStore()\nconst router = useRouter()\nconst route = useRoute()\n\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue'\n\nconst props = defineProps({\n navigationItems: Array,\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: Boolean,\n default: false\n }\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst expandedSections = ref([])\n\nconst toggleSection = (title) => {\n if (!props.stateSidebar) {\n if (menuItems.value.flatMap(section => section.items).find(item => item.title === title && item.subItems)) {\n emits('closeSidebar')\n setTimeout(() => {\n expandedSections.value.push(title)\n }, 50)\n }\n return\n }\n \n const index = expandedSections.value.indexOf(title)\n\n if (index === -1) {\n expandedSections.value.push(title)\n } else {\n expandedSections.value.splice(index, 1)\n }\n}\n\nconst isSectionExpanded = (title) => {\n return expandedSections.value.includes(title)\n}\n\n// Process route functions with auth data and route\nconst processRoute = (routeFn) => {\n if (typeof routeFn === 'function') {\n return routeFn(auth.state, route)\n }\n return routeFn\n}\n\n</script>\n\n<template>\n <nav\n class=\"ease-quint-out\"\n :class=\"[\n stateSidebar ? 'pd-small' : 'pd-micro',\n horizontal ? 'w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible o-x-visible' : 'gap-medium flex flex-column',\n ]\"\n >\n <div \n v-for=\"section in props.navigationItems\" \n v-show=\"!section.visible || (typeof section.visible === 'function' ? section.visible(auth.state, route) : true)\"\n :key=\"section.category\" \n class=\"ease-quint-out\"\n :class=\"[\n horizontal ? 'w-max flex-child-default flex flex-nowrap' : '',\n stateSidebar && !horizontal ? '' : '',\n ]\"\n >\n <div\n v-if=\"section.category && stateSidebar && !horizontal\"\n class=\"uppercase fw-medium t-transp p-small\"\n :class=\"{\n 't-black': theme === 'light',\n 't-white': theme === 'dark'\n }\"\n >\n {{ section.category }}\n </div>\n\n <ul \n :class=\"[\n horizontal ? 'w-100 gap-micro flex flex-nowrap' : 'flex flex-column gap-micro',\n ]\"\n >\n <li\n v-for=\"item in section.items\"\n v-show=\"!item.visible || (typeof item.visible === 'function' ? item.visible(auth.state, route) : true)\"\n class=\"w-100 pos-relative\"\n :key=\"item.title\"\n\n >\n <Dropdown\n v-if=\"item.subItems && horizontal\"\n class=\"w-100\"\n align=\"left\"\n trigger=\"hover\"\n >\n <template #label>\n <button\n class=\"ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center pd-thin\"\n @click=\"item.route ? router.push(processRoute(item.route)) : null\"\n :class=\"[\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span class=\"fw-medium\">{{ item.title }}</span>\n <!-- <IconChevronBottom :fill=\"theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small mn-l-thin\"/> -->\n </button>\n </template>\n <ul class=\"dropdown-submenu\">\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n <a\n @click=\"subItem.route ? router.push(processRoute(subItem.route)) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </Dropdown>\n <button\n v-else\n class=\"group ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center\"\n @click=\"item.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(item.route) ? router.push(processRoute(item.route)) : null) : null\"\n :class=\"[\n horizontal ? 'pd-thin' : '',\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <div v-if=\"!horizontal && (item.iconComponent || item.icon)\" class=\"w-100 flex-child-default w-max-big flex flex-center aspect-1x1\">\n <component\n v-if=\"item.iconComponent\"\n :is=\"item.iconComponent\"\n class=\"i-medium flex-child-default ease-quint-out t-black-transp-25 group-hover:t-main\"\n />\n <span\n v-if=\"!item.iconComponent \"\n class=\"p-regular\"\n >\n {{ item.icon }}\n </span>\n </div>\n\n <span\n class=\"pd-small ease-quint-out w-100 t-left fw-medium\"\n :class=\"{ 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }\"\n >\n {{ item.title }}\n </span>\n\n <span\n v-if=\"item.subItems && stateSidebar && !horizontal\"\n class=\"mn-l-auto mn-r-small sidebar-dropdown-icon\"\n :class=\"{ 'rotate-180deg': isSectionExpanded(item.title) }\"\n @click.stop=\"toggleSection(item.title)\"\n >\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" :fill=\" theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small\"/>\n </span>\n </button>\n <transition\n enter-active-class=\"dropdown-enter\"\n leave-active-class=\"dropdown-leave\"\n enter-from-class=\"dropdown-enter-from\"\n enter-to-class=\"dropdown-enter-to\"\n leave-from-class=\"dropdown-leave-from\"\n leave-to-class=\"dropdown-leave-to\"\n >\n <ul\n v-if=\"item.subItems && isSectionExpanded(item.title) && stateSidebar && !horizontal\"\n class=\"mn-l-small mn-t-thin\"\n >\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n\n <a\n @click=\"subItem.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(subItem.route) ? router.push(processRoute(subItem.route)) : null) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </transition>\n </li>\n </ul>\n </div>\n </nav>\n</template>\n\n<style scoped>\n\n.rotate-180deg {\n transform: rotate(180deg);\n}\n\n.hidden {\n/* opacity: 0;*/\n width: 0;\n display: none;\n}\n\n.visible {\n/* opacity: 1;*/\n display: block;\n}\n\n/* Dropdown animations */\n.dropdown-enter, .dropdown-leave {\n transition: all 0.3s ease-in-out;\n}\n\n.dropdown-enter-from, .dropdown-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.dropdown-enter-to, .dropdown-leave-from {\n opacity: 1;\n transform: translateY(0);\n}\n\n/* Horizontal dropdown submenu */\n.dropdown-submenu {\n list-style: none;\n padding: 0.5rem;\n margin: 0;\n min-width: 12rem;\n}\n\n.dropdown-submenu li {\n width: 100%;\n}\n\n.dropdown-submenu a {\n display: flex;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Transition for horizontal dropdown */\n:deep(.TransitionTranslateY-enter-active),\n:deep(.TransitionTranslateY-leave-active) {\n transition: translateY 0.2s ease;\n transition: opacity 0.2s ease;\n}\n\n:deep(.TransitionTranslateY-enter-from),\n:deep(.TransitionTranslateY-leave-to) {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n:deep(.TransitionTranslateY-enter-to),\n:deep(.TransitionTranslateY-leave-from) {\n opacity: 1;\n transform: translateY(0);\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASc,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAKtB,UAAM,QAAQ;AAgBd,UAAM,QAAQ;AAId,UAAM,mBAAmB,IAAI,CAAA,CAAE;AAE/B,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,MAAM,cAAc;AACvB,YAAI,UAAU,MAAM,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,UAAU,SAAS,KAAK,QAAQ,GAAG;AACzG,gBAAM,cAAc;AACpB,qBAAW,MAAM;AACf,6BAAiB,MAAM,KAAK,KAAK;AAAA,UACnC,GAAG,EAAE;AAAA,QACP;AACA;AAAA,MACF;AAEA,YAAM,QAAQ,iBAAiB,MAAM,QAAQ,KAAK;AAElD,UAAI,UAAU,IAAI;AAChB,yBAAiB,MAAM,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,yBAAiB,MAAM,OAAO,OAAO,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,aAAO,iBAAiB,MAAM,SAAS,KAAK;AAAA,IAC9C;AAGA,UAAM,eAAe,CAAC,YAAY;AAChC,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,QAAQA,OAAY,KAAK;AAAA,MAClC;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Navigation.vue.js","sources":["../../../../../../../../src/modules/core/views/components/partials/Navigation.vue"],"sourcesContent":["<script setup>\nimport { ref, watch, computed } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\n\nimport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n\nconst store = useStore()\nconst router = useRouter()\nconst route = useRoute()\n\nimport Dropdown from '@martyrs/src/components/Dropdown/Dropdown.vue'\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue'\n\nconst props = defineProps({\n navigationItems: Array,\n theme: {\n type: String,\n default: \"light\"\n },\n stateSidebar: {\n type: Boolean,\n default: false\n },\n horizontal: {\n type: Boolean,\n default: false\n }\n})\n\nconst emits = defineEmits([\n 'closeSidebar'\n])\n\nconst expandedSections = ref([])\n\nconst toggleSection = (title) => {\n if (!props.stateSidebar) {\n if (menuItems.value.flatMap(section => section.items).find(item => item.title === title && item.subItems)) {\n emits('closeSidebar')\n setTimeout(() => {\n expandedSections.value.push(title)\n }, 50)\n }\n return\n }\n \n const index = expandedSections.value.indexOf(title)\n\n if (index === -1) {\n expandedSections.value.push(title)\n } else {\n expandedSections.value.splice(index, 1)\n }\n}\n\nconst isSectionExpanded = (title) => {\n return expandedSections.value.includes(title)\n}\n\n// Process route functions with auth data and route\nconst processRoute = (routeFn) => {\n if (typeof routeFn === 'function') {\n return routeFn(auth.state, route)\n }\n return routeFn\n}\n\n</script>\n\n<template>\n <nav\n class=\"ease-quint-out\"\n :class=\"[\n stateSidebar ? 'pd-small' : 'pd-micro',\n horizontal ? 'w-100 desktop-only gap-thin flex flex-center flex-nowrap o-y-visible o-x-visible' : 'gap-medium flex flex-column',\n ]\"\n >\n <div \n v-for=\"section in props.navigationItems\" \n v-show=\"!section.visible || (typeof section.visible === 'function' ? section.visible(auth.state, route) : true)\"\n :key=\"section.category\" \n class=\"ease-quint-out\"\n :class=\"[\n horizontal ? 'w-max flex-child-default flex flex-nowrap' : '',\n stateSidebar && !horizontal ? '' : '',\n ]\"\n >\n <div\n v-if=\"section.category && stateSidebar && !horizontal\"\n class=\"uppercase fw-medium t-transp p-small\"\n :class=\"{\n 't-black': theme === 'light',\n 't-white': theme === 'dark'\n }\"\n >\n {{ section.category }}\n </div>\n\n <ul \n :class=\"[\n horizontal ? 'w-100 gap-micro flex flex-nowrap' : 'flex flex-column gap-micro',\n ]\"\n >\n <li\n v-for=\"item in section.items\"\n v-show=\"!item.visible || (typeof item.visible === 'function' ? item.visible(auth.state, route) : true)\"\n class=\"w-100 pos-relative\"\n :key=\"item.title\"\n\n >\n <Dropdown\n v-if=\"item.subItems && horizontal\"\n class=\"w-100\"\n align=\"left\"\n trigger=\"hover\"\n >\n <template #label>\n <button\n class=\"ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center pd-thin\"\n @click=\"item.route ? router.push(processRoute(item.route)) : null\"\n :class=\"[\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <span class=\"fw-medium\">{{ item.title }}</span>\n <!-- <IconChevronBottom :fill=\"theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small mn-l-thin\"/> -->\n </button>\n </template>\n <ul class=\"dropdown-submenu\">\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n <a\n @click=\"subItem.route ? router.push(processRoute(subItem.route)) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </Dropdown>\n <button\n v-else\n class=\"group ease-quint-out w-100 flex radius-small flex-nowrap cursor-pointer flex-v-center\"\n @click=\"item.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(item.route) ? router.push(processRoute(item.route)) : null) : null\"\n :class=\"[\n horizontal ? 'pd-thin' : '',\n item.route && route.path === processRoute(item.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <div v-if=\"!horizontal && (item.iconComponent || item.icon)\" class=\"w-100 flex-child-default w-max-big flex flex-center aspect-1x1\">\n <component\n v-if=\"item.iconComponent\"\n :is=\"item.iconComponent\"\n class=\"i-medium flex-child-default ease-quint-out t-black-transp-25 group-hover:t-main\"\n />\n <span\n v-if=\"!item.iconComponent \"\n class=\"p-regular\"\n >\n {{ item.icon }}\n </span>\n </div>\n\n <span\n class=\"ease-quint-out w-100 t-left fw-medium\"\n :class=\"{ 'pd-small': !horizontal, 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }\"\n >\n {{ item.title }}\n </span>\n\n <span\n v-if=\"item.subItems && stateSidebar && !horizontal\"\n class=\"mn-l-auto mn-r-small sidebar-dropdown-icon\"\n :class=\"{ 'rotate-180deg': isSectionExpanded(item.title) }\"\n @click.stop=\"toggleSection(item.title)\"\n >\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" :fill=\" theme === 'dark' ? 'rgb(var(--white))': 'rgb(var(--black))'\" class=\"i-small\"/>\n </span>\n </button>\n <transition\n enter-active-class=\"dropdown-enter\"\n leave-active-class=\"dropdown-leave\"\n enter-from-class=\"dropdown-enter-from\"\n enter-to-class=\"dropdown-enter-to\"\n leave-from-class=\"dropdown-leave-from\"\n leave-to-class=\"dropdown-leave-to\"\n >\n <ul\n v-if=\"item.subItems && isSectionExpanded(item.title) && stateSidebar && !horizontal\"\n class=\"mn-l-small mn-t-thin\"\n >\n <li v-for=\"subItem in item.subItems\" :key=\"subItem.title\">\n\n <a\n @click=\"subItem.route ? (isPhone ? (stateSidebar = false) : null, route.path !== processRoute(subItem.route) ? router.push(processRoute(subItem.route)) : null) : null\"\n href=\"#\"\n class=\"group ease-quint-out flex flex-v-center flex-nowrap gap-thin pd-thin radius-small\"\n :class=\"[\n subItem.route && route.path === processRoute(subItem.route) ? theme === 'light' ? 'bg-light' : 'bg-dark' : '',\n theme === 'light' ? 'hover:bg-light' : 'hover:bg-dark'\n ]\"\n >\n <component\n v-if=\"subItem.iconComponent\"\n :is=\"subItem.iconComponent\"\n class=\"i-medium t-black-transp-25 group-hover:t-main\"\n />\n <span v-else class=\"\">{{ subItem.icon }}</span>\n <span class=\"w-100\">{{ subItem.title }}</span>\n </a>\n </li>\n </ul>\n </transition>\n </li>\n </ul>\n </div>\n </nav>\n</template>\n\n<style scoped>\n\n.rotate-180deg {\n transform: rotate(180deg);\n}\n\n.hidden {\n/* opacity: 0;*/\n width: 0;\n display: none;\n}\n\n.visible {\n/* opacity: 1;*/\n display: block;\n}\n\n/* Dropdown animations */\n.dropdown-enter, .dropdown-leave {\n transition: all 0.3s ease-in-out;\n}\n\n.dropdown-enter-from, .dropdown-leave-to {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n.dropdown-enter-to, .dropdown-leave-from {\n opacity: 1;\n transform: translateY(0);\n}\n\n/* Horizontal dropdown submenu */\n.dropdown-submenu {\n list-style: none;\n padding: 0.5rem;\n margin: 0;\n min-width: 12rem;\n}\n\n.dropdown-submenu li {\n width: 100%;\n}\n\n.dropdown-submenu a {\n display: flex;\n text-decoration: none;\n white-space: nowrap;\n}\n\n/* Transition for horizontal dropdown */\n:deep(.TransitionTranslateY-enter-active),\n:deep(.TransitionTranslateY-leave-active) {\n transition: translateY 0.2s ease;\n transition: opacity 0.2s ease;\n}\n\n:deep(.TransitionTranslateY-enter-from),\n:deep(.TransitionTranslateY-leave-to) {\n opacity: 0;\n transform: translateY(-0.5rem);\n}\n\n:deep(.TransitionTranslateY-enter-to),\n:deep(.TransitionTranslateY-leave-from) {\n opacity: 1;\n transform: translateY(0);\n}\n</style>"],"names":["auth.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASc,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,QAAQ,SAAQ;AAKtB,UAAM,QAAQ;AAgBd,UAAM,QAAQ;AAId,UAAM,mBAAmB,IAAI,CAAA,CAAE;AAE/B,UAAM,gBAAgB,CAAC,UAAU;AAC/B,UAAI,CAAC,MAAM,cAAc;AACvB,YAAI,UAAU,MAAM,QAAQ,aAAW,QAAQ,KAAK,EAAE,KAAK,UAAQ,KAAK,UAAU,SAAS,KAAK,QAAQ,GAAG;AACzG,gBAAM,cAAc;AACpB,qBAAW,MAAM;AACf,6BAAiB,MAAM,KAAK,KAAK;AAAA,UACnC,GAAG,EAAE;AAAA,QACP;AACA;AAAA,MACF;AAEA,YAAM,QAAQ,iBAAiB,MAAM,QAAQ,KAAK;AAElD,UAAI,UAAU,IAAI;AAChB,yBAAiB,MAAM,KAAK,KAAK;AAAA,MACnC,OAAO;AACL,yBAAiB,MAAM,OAAO,OAAO,CAAC;AAAA,MACxC;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,UAAU;AACnC,aAAO,iBAAiB,MAAM,SAAS,KAAK;AAAA,IAC9C;AAGA,UAAM,eAAe,CAAC,YAAY;AAChC,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,QAAQA,OAAY,KAAK;AAAA,MAClC;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -13,7 +13,7 @@ import "axios";
|
|
|
13
13
|
/* empty css */
|
|
14
14
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
15
15
|
/* empty css */
|
|
16
|
-
/* empty css
|
|
16
|
+
/* empty css */
|
|
17
17
|
import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
|
|
18
18
|
import _sfc_main$a from "../../../../components/Button/Button.vue.js";
|
|
19
19
|
import _sfc_main$7 from "../../../core/views/components/blocks/Card.vue.js";
|
|
@@ -2,7 +2,7 @@ import { ref, createElementBlock, openBlock, createVNode, unref, isRef, withCtx,
|
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import _sfc_main$8 from "../../../../components/Button/Button.vue.js";
|
|
5
|
-
/* empty css
|
|
5
|
+
/* empty css */
|
|
6
6
|
import _sfc_main$4 from "../../../../components/Chips/Chips.vue.js";
|
|
7
7
|
/* empty css */
|
|
8
8
|
import _sfc_main$5 from "../../../../components/Popup/Popup.vue.js";
|
|
@@ -12,7 +12,7 @@ import { state } from "../../../auth/views/store/auth.js";
|
|
|
12
12
|
import gallery from "../../store/gallery.js";
|
|
13
13
|
import _sfc_main$3 from "../../../core/views/components/blocks/CardHeader.vue.js";
|
|
14
14
|
import _sfc_main$1 from "../../../core/views/components/sections/SectionPageTitle.vue.js";
|
|
15
|
-
import _sfc_main$6 from "../../../../components/EditImages/EditImages.
|
|
15
|
+
import _sfc_main$6 from "../../../../components/EditImages/EditImages.vue.js";
|
|
16
16
|
import _sfc_main$7 from "../../../../components/FieldTags/BlockTags.vue.js";
|
|
17
17
|
const _hoisted_1 = { class: "cols-1 gap-thin pd-thin" };
|
|
18
18
|
const _hoisted_2 = { class: "pos-relative" };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, Fragment, renderList, normalizeClass, createBlock, resolveDynamicComponent, toDisplayString, withCtx, createTextVNode } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
|
-
import Select from "../../../../components/Select/Select.
|
|
4
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
6
6
|
import { state } from "../../../auth/views/store/auth.js";
|
|
7
7
|
import { actions } from "../../../spots/store/spots.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, computed, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
|
-
import Select from "../../../../components/Select/Select.
|
|
4
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
|
|
6
6
|
import { state } from "../../../auth/views/store/auth.js";
|
|
7
7
|
import { actions } from "../../../spots/store/spots.js";
|
|
@@ -3,7 +3,7 @@ import _sfc_main$4 from "../../../../components/Block/Block.vue.js";
|
|
|
3
3
|
import _sfc_main$7 from "../../../../components/Button/Button.vue.js";
|
|
4
4
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
6
|
-
/* empty css
|
|
6
|
+
/* empty css */
|
|
7
7
|
/* empty css */
|
|
8
8
|
import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
|
|
9
9
|
import _sfc_main$3 from "../../../orders/components/blocks/CardOrderItem.vue.js";
|
|
@@ -3,7 +3,7 @@ import { useRouter, useRoute } from "vue-router";
|
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
5
5
|
import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
|
|
6
|
-
import Select from "../../../../components/Select/Select.
|
|
6
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
7
7
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
8
8
|
import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
|
|
9
9
|
import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
|
|
@@ -4,7 +4,7 @@ import Field from "../../../../components/Field/Field.vue.js";
|
|
|
4
4
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
5
5
|
import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
7
|
-
import Select from "../../../../components/Select/Select.
|
|
7
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
8
8
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
9
9
|
/* empty css */
|
|
10
10
|
import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
|
|
@@ -4,7 +4,7 @@ import Field from "../../../../components/Field/Field.vue.js";
|
|
|
4
4
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
5
5
|
import _sfc_main$4 from "../../../../components/Button/Button.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
7
|
-
import Select from "../../../../components/Select/Select.
|
|
7
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
8
8
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
9
9
|
import Upload from "../../../../components/Upload/Upload.vue2.js";
|
|
10
10
|
import _sfc_main$2 from "../../../icons/navigation/IconCross.vue.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mergeModels, useModel, ref, watch, createBlock, openBlock, withCtx, createVNode, createElementVNode, unref, isRef, createTextVNode, toDisplayString } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
|
-
import Select from "../../../../components/Select/Select.
|
|
4
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
6
6
|
const _hoisted_1 = { class: "gap-thin flex mn-t-small" };
|
|
7
7
|
const _sfc_main = {
|
|
@@ -2,7 +2,7 @@ import { mergeModels, useModel, ref, watch, createBlock, openBlock, withCtx, cre
|
|
|
2
2
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$2 from "../../../../components/FieldPhone/FieldPhone.vue.js";
|
|
5
|
-
import Select from "../../../../components/Select/Select.
|
|
5
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
|
|
7
7
|
const _hoisted_1 = { class: "gap-thin mn-b-thin flex-justify-between flex-nowrap flex" };
|
|
8
8
|
const _hoisted_2 = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, onMounted, computed, createElementBlock, createCommentVNode, openBlock, createVNode, createElementVNode, createTextVNode, toDisplayString, Fragment, renderList, unref, normalizeClass, withCtx, createBlock } from "vue";
|
|
2
2
|
import { useRouter, useRoute } from "vue-router";
|
|
3
3
|
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
4
|
-
import Select from "../../../../components/Select/Select.
|
|
4
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
5
5
|
import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
|
|
6
6
|
import IconTime from "../../../icons/entities/IconTime.vue.js";
|
|
7
7
|
import _sfc_main$3 from "../blocks/CardOrderItem.vue.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed, createBlock, openBlock, withCtx, createElementVNode, createVNode } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
3
|
-
import Select from "../../../../components/Select/Select.
|
|
3
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
4
4
|
const _hoisted_1 = { class: "mn-b-small flex-nowrap flex" };
|
|
5
5
|
const _sfc_main = {
|
|
6
6
|
__name: "FormPayment",
|
|
@@ -22,7 +22,7 @@ import "vue-i18n";
|
|
|
22
22
|
/* empty css */
|
|
23
23
|
import _sfc_main$4 from "../../../../components/FieldTags/BlockTags.vue.js";
|
|
24
24
|
/* empty css */
|
|
25
|
-
/* empty css
|
|
25
|
+
/* empty css */
|
|
26
26
|
/* empty css */
|
|
27
27
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
28
28
|
import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, resolveDirective, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withDirectives, createCommentVNode, isRef, unref, withCtx, Fragment, renderList, createBlock } from "vue";
|
|
2
2
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
import _sfc_main$6 from "../../../../components/Button/Button.vue.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
6
6
|
import _sfc_main$1 from "../../../core/views/components/blocks/BlockSearch.vue.js";
|
|
@@ -3,7 +3,7 @@ import { useRouter, useRoute } from "vue-router";
|
|
|
3
3
|
import "../../../../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
|
-
/* empty css
|
|
6
|
+
/* empty css */
|
|
7
7
|
/* empty css */
|
|
8
8
|
import _sfc_main$2 from "../blocks/CardOrganization.vue.js";
|
|
9
9
|
import _sfc_main$1 from "../blocks/EmptyState.vue.js";
|
|
@@ -2,7 +2,7 @@ import { ref, onMounted, computed, onUnmounted, createElementBlock, createCommen
|
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
3
|
import _sfc_main$4 from "../../../icons/navigation/IconDelete.vue.js";
|
|
4
4
|
import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
|
|
5
|
-
import Select from "../../../../components/Select/Select.
|
|
5
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
6
6
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
7
7
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
8
8
|
import FieldTags from "../../../../components/FieldTags/FieldTags.vue.js";
|
|
@@ -3,9 +3,9 @@ import { useRoute, useRouter } from "vue-router";
|
|
|
3
3
|
import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
4
4
|
import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
|
|
5
5
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
6
|
-
import Select from "../../../../components/Select/Select.
|
|
6
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
7
7
|
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
8
|
-
import _sfc_main$4 from "../../../../components/EditImages/EditImages.
|
|
8
|
+
import _sfc_main$4 from "../../../../components/EditImages/EditImages.vue.js";
|
|
9
9
|
import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
|
|
10
10
|
import _sfc_main$5 from "../../../icons/navigation/IconCross.vue.js";
|
|
11
11
|
import _sfc_main$a from "../../../icons/navigation/IconDelete.vue.js";
|
|
@@ -3,7 +3,7 @@ import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
4
|
import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
|
|
5
5
|
import _sfc_main$4 from "../../../../components/Popup/Popup.vue.js";
|
|
6
|
-
import Select from "../../../../components/Select/Select.
|
|
6
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
7
7
|
import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
|
|
8
8
|
import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
|
|
9
9
|
const _hoisted_1 = {
|
|
@@ -7,9 +7,9 @@ import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
|
7
7
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
8
8
|
import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
|
|
9
9
|
import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
|
|
10
|
-
import Select from "../../../../components/Select/Select.
|
|
10
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
11
11
|
import _sfc_main$2 from "../../../../components/Feed/Feed.vue.js";
|
|
12
|
-
import _sfc_main$9 from "../../../../components/EditImages/EditImages.
|
|
12
|
+
import _sfc_main$9 from "../../../../components/EditImages/EditImages.vue.js";
|
|
13
13
|
import _sfc_main$8 from "./EditIngredients.vue.js";
|
|
14
14
|
import PlaceholderImage from "../../../icons/placeholders/PlaceholderImage.vue.js";
|
|
15
15
|
import _sfc_main$5 from "../../../icons/navigation/IconEdit.vue.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { reactive, ref, createElementBlock, openBlock, renderSlot, createVNode, withCtx, createElementVNode, createTextVNode } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
|
|
3
3
|
import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
|
|
4
|
-
import Select from "../../../../components/Select/Select.
|
|
4
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
5
5
|
import { actions } from "../../store/reports.js";
|
|
6
6
|
const _sfc_main = {
|
|
7
7
|
__name: "FormReport",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, computed, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createBlock, toDisplayString } from "vue";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
/* empty css
|
|
4
|
+
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
6
|
const _hoisted_1 = { class: "br-grey-transp-25 radius-small mn-b-small" };
|
|
7
7
|
const _hoisted_2 = {
|
|
@@ -4,7 +4,7 @@ import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
|
|
|
4
4
|
import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
|
|
5
5
|
/* empty css */
|
|
6
6
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
7
|
-
import Select from "../../../../components/Select/Select.
|
|
7
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
8
8
|
import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
9
9
|
import _sfc_main$4 from "../../../../components/Address/Address.vue.js";
|
|
10
10
|
import _sfc_main$5 from "../../../../components/LocationMarker/LocationMarker.vue.js";
|
|
@@ -2,7 +2,7 @@ import { mergeModels, useModel, ref, computed, onMounted, createElementBlock, op
|
|
|
2
2
|
import { useI18n } from "vue-i18n";
|
|
3
3
|
import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
|
|
4
4
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
5
|
-
import Select from "../../../../components/Select/Select.
|
|
5
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
7
7
|
import _sfc_main$2 from "../../../../components/Popup/Popup.vue.js";
|
|
8
8
|
/* empty css */
|
package/dist/style.css
CHANGED
|
@@ -1604,58 +1604,58 @@ to {
|
|
|
1604
1604
|
overflow: hidden;
|
|
1605
1605
|
transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
1606
1606
|
}
|
|
1607
|
-
.rotate-180deg[data-v-
|
|
1607
|
+
.rotate-180deg[data-v-0f5220e0] {
|
|
1608
1608
|
transform: rotate(180deg);
|
|
1609
1609
|
}
|
|
1610
|
-
.hidden[data-v-
|
|
1610
|
+
.hidden[data-v-0f5220e0] {
|
|
1611
1611
|
/* opacity: 0;*/
|
|
1612
1612
|
width: 0;
|
|
1613
1613
|
display: none;
|
|
1614
1614
|
}
|
|
1615
|
-
.visible[data-v-
|
|
1615
|
+
.visible[data-v-0f5220e0] {
|
|
1616
1616
|
/* opacity: 1;*/
|
|
1617
1617
|
display: block;
|
|
1618
1618
|
}
|
|
1619
1619
|
|
|
1620
1620
|
/* Dropdown animations */
|
|
1621
|
-
.dropdown-enter[data-v-
|
|
1621
|
+
.dropdown-enter[data-v-0f5220e0], .dropdown-leave[data-v-0f5220e0] {
|
|
1622
1622
|
transition: all 0.3s ease-in-out;
|
|
1623
1623
|
}
|
|
1624
|
-
.dropdown-enter-from[data-v-
|
|
1624
|
+
.dropdown-enter-from[data-v-0f5220e0], .dropdown-leave-to[data-v-0f5220e0] {
|
|
1625
1625
|
opacity: 0;
|
|
1626
1626
|
transform: translateY(-0.5rem);
|
|
1627
1627
|
}
|
|
1628
|
-
.dropdown-enter-to[data-v-
|
|
1628
|
+
.dropdown-enter-to[data-v-0f5220e0], .dropdown-leave-from[data-v-0f5220e0] {
|
|
1629
1629
|
opacity: 1;
|
|
1630
1630
|
transform: translateY(0);
|
|
1631
1631
|
}
|
|
1632
1632
|
|
|
1633
1633
|
/* Horizontal dropdown submenu */
|
|
1634
|
-
.dropdown-submenu[data-v-
|
|
1634
|
+
.dropdown-submenu[data-v-0f5220e0] {
|
|
1635
1635
|
list-style: none;
|
|
1636
1636
|
padding: 0.5rem;
|
|
1637
1637
|
margin: 0;
|
|
1638
1638
|
min-width: 12rem;
|
|
1639
1639
|
}
|
|
1640
|
-
.dropdown-submenu li[data-v-
|
|
1640
|
+
.dropdown-submenu li[data-v-0f5220e0] {
|
|
1641
1641
|
width: 100%;
|
|
1642
1642
|
}
|
|
1643
|
-
.dropdown-submenu a[data-v-
|
|
1643
|
+
.dropdown-submenu a[data-v-0f5220e0] {
|
|
1644
1644
|
display: flex;
|
|
1645
1645
|
text-decoration: none;
|
|
1646
1646
|
white-space: nowrap;
|
|
1647
1647
|
}
|
|
1648
1648
|
|
|
1649
1649
|
/* Transition for horizontal dropdown */
|
|
1650
|
-
[data-v-
|
|
1650
|
+
[data-v-0f5220e0] .TransitionTranslateY-enter-active,[data-v-0f5220e0] .TransitionTranslateY-leave-active {
|
|
1651
1651
|
transition: translateY 0.2s ease;
|
|
1652
1652
|
transition: opacity 0.2s ease;
|
|
1653
1653
|
}
|
|
1654
|
-
[data-v-
|
|
1654
|
+
[data-v-0f5220e0] .TransitionTranslateY-enter-from,[data-v-0f5220e0] .TransitionTranslateY-leave-to {
|
|
1655
1655
|
opacity: 0;
|
|
1656
1656
|
transform: translateY(-0.5rem);
|
|
1657
1657
|
}
|
|
1658
|
-
[data-v-
|
|
1658
|
+
[data-v-0f5220e0] .TransitionTranslateY-enter-to,[data-v-0f5220e0] .TransitionTranslateY-leave-from {
|
|
1659
1659
|
opacity: 1;
|
|
1660
1660
|
transform: translateY(0);
|
|
1661
1661
|
}
|
package/package.json
CHANGED
package/src/jit/variants.js
CHANGED
|
@@ -95,13 +95,13 @@ export const variants = [
|
|
|
95
95
|
{
|
|
96
96
|
name: 'dark',
|
|
97
97
|
wrapper: (selector, css) =>
|
|
98
|
-
`@media (prefers-color-scheme: dark) { .${selector} { ${css} } }`
|
|
98
|
+
`@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .${selector} { ${css} } }`
|
|
99
99
|
},
|
|
100
100
|
|
|
101
101
|
{
|
|
102
102
|
name: 'light',
|
|
103
103
|
wrapper: (selector, css) =>
|
|
104
|
-
`@media (prefers-color-scheme: light) { .${selector} { ${css} } }`
|
|
104
|
+
`@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) .${selector} { ${css} } }`
|
|
105
105
|
},
|
|
106
106
|
|
|
107
107
|
// ========================================
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
|
|
118
118
|
<!-- Footer slot -->
|
|
119
119
|
<template #footer>
|
|
120
|
-
<component v-if="route.meta?.sidebar_footer_component" :is="route.meta.sidebar_footer_component" :theme="headerTheme" />
|
|
120
|
+
<component v-if="route.meta?.sidebar_footer_component" :is="route.meta.sidebar_footer_component" :theme="headerTheme" :stateSidebar="store.core.state.isOpenSidebar" />
|
|
121
121
|
</template>
|
|
122
122
|
</component>
|
|
123
123
|
|
|
@@ -177,8 +177,8 @@ const processRoute = (routeFn) => {
|
|
|
177
177
|
</div>
|
|
178
178
|
|
|
179
179
|
<span
|
|
180
|
-
class="
|
|
181
|
-
:class="{ 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }"
|
|
180
|
+
class="ease-quint-out w-100 t-left fw-medium"
|
|
181
|
+
:class="{ 'pd-small': !horizontal, 'hidden': !stateSidebar && !horizontal, 'visible': stateSidebar || horizontal }"
|
|
182
182
|
>
|
|
183
183
|
{{ item.title }}
|
|
184
184
|
</span>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EditImages.vue2.js","sources":["../../../../../src/components/EditImages/EditImages.vue"],"sourcesContent":["<template>\n\t<div class=\"flex-nowrap flex gap-small\">\n <VueDraggableNext v-if=\"localImages.length > 0\" class=\"gap-small flex dragArea list-group w-full\" v-model=\"localImages\" @change=\"emitChanges\">\n\t\t\t<div v-for=\"(image, index) in localImages\" class=\"pos-relative\">\n\t\t\t\t<img loading=\"lazy\" class=\"i-extra object-fit-contain bg-black-transp-5 pd-nano radius-small o-hidden\" :src=\"(FILE_SERVER_URL || '') + image\" />\n\t\t\t\t\n <IconCross \n @click=\"deleteImage(index)\" \n class=\"cursor-pointer pos-absolute t-center flex-center flex radius-extra i-medium bg-red pos-t-10-negative pos-r-10-negative pd-micro\"\n />\n\t\t\t</div>\n\t\t</VueDraggableNext>\n <div\n v-if=\"localImages.length > 0\" \n class=\"i-extra uppercase flex-center flex radius-small o-hidden br-main br-2px pd-small\"\n >\n <UploadImageMultiple \n @update:images=\"onImagesUpdate\"\n text=\"Add\"\n :options=\"{\n showText: false\n }\"\n :uploadPath=\"'photos'\"\n class=\"radius-big\"\n />\n </div>\n\n\n\t\t<UploadImageMultiple \t\n v-if=\"localImages.length < 1\" \n @update:images=\"onImagesUpdate\"\n :uploadPath=\"props.uploadPath\"\n :text=\"props.text\"\n :options=\"props.options\"\n class=\"w-100 pd-medium\"\n />\n\t</div>\t\n</template>\n\n<script setup>\nimport { ref, defineProps, watchEffect } from 'vue';\nimport { VueDraggableNext } from 'vue-draggable-next'\nimport UploadImageMultiple from \"@martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue\";\nimport IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\nconst props = defineProps({\n images: Array,\n text: Object,\n options: Object,\n uploadPath: {\n type: Object,\n default: 'unsorted'\n }\n});\n\nconst emit = defineEmits(['update:images'])\n\nconst localImages = ref([...props.images])\n\nwatchEffect(() => {\n localImages.value = [...props.images]; // Обновление localImages при изменении props.images\n});\n\nconst emitChanges = () => {\n emit('update:images', localImages.value)\n}\n\nconst onImagesUpdate = (newImages) => {\n localImages.value = [...localImages.value, ...newImages]\n emitChanges()\n}\n\nconst deleteImage = (index) => {\n localImages.value.splice(index, 1)\n emitChanges()\n}\n</script>\n\n<style lang=\"scss\">\n// Your styles here\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,UAAM,QAAQ;AAUd,UAAM,OAAO;AAEb,UAAM,cAAc,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC;AAEzC,gBAAY,MAAM;AAChB,kBAAY,QAAQ,CAAC,GAAG,MAAM,MAAM;AAAA,IACtC,CAAC;AAED,UAAM,cAAc,MAAM;AACxB,WAAK,iBAAiB,YAAY,KAAK;AAAA,IACzC;AAEA,UAAM,iBAAiB,CAAC,cAAc;AACpC,kBAAY,QAAQ,CAAC,GAAG,YAAY,OAAO,GAAG,SAAS;AACvD,kBAAW;AAAA,IACb;AAEA,UAAM,cAAc,CAAC,UAAU;AAC7B,kBAAY,MAAM,OAAO,OAAO,CAAC;AACjC,kBAAW;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Select.vue2.js","sources":["../../../../../src/components/Select/Select.vue"],"sourcesContent":["<template>\n <!-- Input Wrapper -->\n <div \n ref=\"fieldWrapper\"\n tabindex=\"0\"\n @click.stop=\"toggleMenu\" \n v-click-outside=\"clickedOutside\" \n :class=\"$attrs.class\" \n class=\"cursor-pointer field-wrapper flex-v-center flex-nowrap flex pos-relative\"\n >\n <!-- Label -->\n <span v-if=\"label\" class=\"t-transp mn-r-small\">{{label}}</span>\n \n <!-- Input -->\n <span>\n {{ optionsSelected ? (optionsSelected.name || optionsSelected[props.value] || optionsSelected) : placeholder }}\n </span>\n <!-- Dropdown menu -->\n <transition mode=\"out-in\" name=\"TransitionTranslateY\">\n <ul \n v-show=\"showMenu\" \n class=\"bs-black pos-absolute pos-t-100 pos-l-0 z-index-5 pd-small radius-small bg-white mn-t-thin w-100\"\n style=\"min-width: max-content;\"\n >\n <li @click.stop=\"selectOption(option)\" v-for=\"option in optionsListed\" class=\"radius-thin hover:bg-light pd-thin text-box-trim\">\n <span v-if=\"option\" class=\"w-100\">\n {{ option.name || option[props.value] || option }}\n </span>\n </li>\n </ul>\n </transition>\n </div>\n <!-- Validation -->\n <transition mode=\"out-in\" name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<script setup>\nimport { ref, computed, watch, nextTick } from 'vue'\nimport clickOutside from '../FieldPhone/click-outside.js';\nlet vClickOutside = clickOutside\nconst emit = defineEmits([\n 'update:select', \n 'focus', \n 'blur'\n])\nconst props = defineProps({\n label: String,\n placeholder: { type: String, default: 'Please select an item' },\n select: [String, Object],\n property: String,\n value: String,\n options: { type: Array, default: () => [] },\n validation: Boolean,\n})\nconst showMenu = ref(false)\nconst fieldWrapper = ref(null)\nconst optionsSelected = ref(\n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select\n)\nconst optionsListed = computed(() => {\n return props.select \n ? props.options.filter(option => option !== props.select) \n : props.options\n})\nwatch(() => props.select, (newSelect) => {\n optionsSelected.value = \n props.property \n ? findObjectByValue(props.select, props.property, props.options) \n : props.select;\n});\nconst toggleMenu = async () => {\n showMenu.value = !showMenu.value\n \n if (showMenu.value) {\n await nextTick()\n fieldWrapper.value?.focus()\n emit('focus')\n } else {\n emit('blur')\n }\n}\nfunction clickedOutside () {\n showMenu.value = false\n}\nconst selectOption = option => {\n optionsSelected.value = option\n \n toggleMenu()\n if (props.property) { \n emit('update:select', optionsSelected.value[props.property])\n } else {\n emit('update:select', optionsSelected.value)\n }\n}\nfunction findObjectByValue (value, property, objects) {\n for (const object of objects) {\n if (object[property] === value || object === value) {\n return object;\n }\n }\n return null;\n}\n</script>\n<style lang=\"scss\" scoped>\n li {\n list-style-type: none;\n }\n ul li {\n line-height: 2;\n }\n .field-wrapper:focus {\n outline: none;\n }\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,QAAI,gBAAgB;AACpB,UAAM,OAAO;AAKb,UAAM,QAAQ;AASd,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,eAAe,IAAI,IAAI;AAC7B,UAAM,kBAAkB;AAAA,MACtB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV;AACA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,SACX,MAAM,QAAQ,OAAO,YAAU,WAAW,MAAM,MAAM,IACtD,MAAM;AAAA,IACV,CAAC;AACD,UAAM,MAAM,MAAM,QAAQ,CAAC,cAAc;AACvC,sBAAgB,QAChB,MAAM,WACJ,kBAAkB,MAAM,QAAQ,MAAM,UAAU,MAAM,OAAO,IAC7D,MAAM;AAAA,IACV,CAAC;AACD,UAAM,aAAa,YAAY;AAC7B,eAAS,QAAQ,CAAC,SAAS;AAE3B,UAAI,SAAS,OAAO;AAClB,cAAM,SAAQ;AACd,qBAAa,OAAO,MAAK;AACzB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,iBAAkB;AACzB,eAAS,QAAQ;AAAA,IACnB;AACA,UAAM,eAAe,YAAU;AAC7B,sBAAgB,QAAQ;AAExB,iBAAU;AACV,UAAI,MAAM,UAAU;AAClB,aAAK,iBAAiB,gBAAgB,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7D,OAAO;AACL,aAAK,iBAAiB,gBAAgB,KAAK;AAAA,MAC7C;AAAA,IACF;AACA,aAAS,kBAAmB,OAAO,UAAU,SAAS;AACpD,iBAAW,UAAU,SAAS;AAC5B,YAAI,OAAO,QAAQ,MAAM,SAAS,WAAW,OAAO;AAClD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|