@ozdao/martyrs 0.2.561 → 0.2.562
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/{main-DQtUY5ma.js → main-TV4u6Jux.js} +2915 -2626
- package/dist/martyrs/src/components/Button/Button.vue.js +2 -2
- package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
- package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
- package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +2 -2
- package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
- package/dist/martyrs/src/components/Field/Field.vue2.js.map +1 -0
- package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
- package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
- package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
- package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
- package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
- package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
- package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
- package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
- package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.js.map +1 -0
- package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
- package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -0
- package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
- package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
- package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -6
- 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/Header.vue.js.map +1 -1
- package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +60 -172
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +1 -1
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +64 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +160 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js +46 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +105 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js +168 -0
- package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js.map +1 -0
- package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +4 -0
- package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +5 -3
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
- 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/landing/components/sections/SectionGuide.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +159 -239
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +5 -6
- package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +65 -2
- package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +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 +2 -2
- package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
- package/dist/martyrs/src/modules/notifications/components/pages/Notifications.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/forms/FormSelectCustomer.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +5 -3
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -3
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +4 -4
- package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
- 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/products/components/sections/FilterProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
- package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/organizations.server.js +7 -2
- package/dist/style.css +10 -1
- package/dist/{web-Cyc6i_pv.js → web-Cq5tyhkl.js} +1 -1
- package/package.json +1 -1
- package/src/components/Button/Button.vue +1 -1
- package/src/components/Checkbox/Checkbox.vue +1 -1
- package/src/modules/core/views/components/layouts/Client.vue +7 -11
- package/src/modules/core/views/components/partials/Header.vue +1 -1
- package/src/modules/core/views/components/sections/Filters.vue +47 -161
- package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +12 -31
- package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +15 -15
- package/src/modules/core/views/components/sections/filters/FilterOptions.vue +12 -43
- package/src/modules/core/views/components/sections/filters/FilterRange.vue +59 -36
- package/src/modules/core/views/components/sections/filters/FiltersGroup.vue +178 -0
- package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
- package/src/modules/marketplace/controllers/marketplace.controller.js +123 -0
- package/src/modules/marketplace/controllers/utils/lookupConfigs.js +130 -0
- package/src/modules/marketplace/controllers/utils/queryProcessorMarketplace.js +211 -0
- package/src/modules/marketplace/marketplace.server.js +22 -0
- package/src/modules/marketplace/routes/marketplace.routes.js +34 -0
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +194 -275
- package/src/modules/marketplace/views/components/pages/Catalog.vue +6 -5
- package/src/modules/marketplace/views/router/marketplace.router.js +43 -28
- package/src/modules/marketplace/views/store/marketplace.js +74 -3
- package/src/modules/organizations/components/blocks/CardOrganization.vue +8 -8
- package/src/modules/organizations/controllers/organizations.controller.js +1 -1
- package/src/modules/organizations/controllers/utils/queryProcessorOrganizations.js +8 -1
- package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
- package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
- package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
- package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
- package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
- package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
- package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
- package/src/modules/core/views/components/sections/filters/FilterPrice.vue +0 -81
|
@@ -1,77 +1,46 @@
|
|
|
1
|
-
import { ref,
|
|
1
|
+
import { ref, watch, createElementBlock, openBlock, createElementVNode, unref, createCommentVNode, Fragment, createTextVNode, toDisplayString, createVNode, renderList, withCtx, createBlock } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
3
|
import { useI18n } from "vue-i18n";
|
|
4
|
-
import _sfc_main$
|
|
5
|
-
import
|
|
6
|
-
import _sfc_main$
|
|
7
|
-
import
|
|
4
|
+
import _sfc_main$2 from "../../../../../components/Feed/Feed.vue.js";
|
|
5
|
+
import Filters from "../../../../core/views/components/sections/Filters.vue2.js";
|
|
6
|
+
import _sfc_main$1 from "../../../../core/views/components/sections/filters/FiltersGroup.vue.js";
|
|
7
|
+
import Field from "../../../../../components/Field/Field.vue2.js";
|
|
8
|
+
import _sfc_main$3 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
|
|
8
9
|
import { useStore } from "../../../../core/views/store/core.store.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
const _hoisted_1 = { class: "
|
|
12
|
-
const _hoisted_2 = { class: "
|
|
13
|
-
const _hoisted_3 = { class: "
|
|
14
|
-
const _hoisted_4 = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const _hoisted_9 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
23
|
-
const _hoisted_10 = { class: "mn-t-small" };
|
|
24
|
-
const _hoisted_11 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
25
|
-
const _hoisted_12 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
26
|
-
const _hoisted_13 = { class: "mn-t-small" };
|
|
27
|
-
const _hoisted_14 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
|
|
28
|
-
const _hoisted_15 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
|
|
29
|
-
const _hoisted_16 = { class: "mn-t-small" };
|
|
30
|
-
const _hoisted_17 = { class: "pd-thin" };
|
|
31
|
-
const _hoisted_18 = { class: "pd-medium radius-medium bg-light mn-b-thin" };
|
|
32
|
-
const _hoisted_19 = { class: "" };
|
|
33
|
-
const _hoisted_20 = { class: "rows-1" };
|
|
10
|
+
import { state, marketplaceStore } from "../../store/marketplace.js";
|
|
11
|
+
import { useGlobalMixins } from "../../../../core/views/mixins/mixins.js";
|
|
12
|
+
const _hoisted_1 = { class: "pos-relative" };
|
|
13
|
+
const _hoisted_2 = { class: "pd-medium mn-b-thin" };
|
|
14
|
+
const _hoisted_3 = { class: "" };
|
|
15
|
+
const _hoisted_4 = { class: "cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative" };
|
|
16
|
+
const _hoisted_5 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
|
|
17
|
+
const _hoisted_6 = { class: "w-100 o-y-scroll h-100" };
|
|
18
|
+
const _hoisted_7 = { class: "mn-b-medium" };
|
|
19
|
+
const _hoisted_8 = { class: "gap-micro" };
|
|
20
|
+
const _hoisted_9 = ["onClick"];
|
|
21
|
+
const _hoisted_10 = { class: "w-100 rows-1 pd-thin pos-relative o-hidden" };
|
|
22
|
+
const _hoisted_11 = { class: "mn-b-thin mobile-only" };
|
|
34
23
|
const _sfc_main = {
|
|
35
24
|
__name: "Marketplace",
|
|
36
25
|
setup(__props) {
|
|
37
|
-
const core = useStore();
|
|
38
26
|
const route = useRoute();
|
|
39
27
|
const router = useRouter();
|
|
28
|
+
const store = useStore();
|
|
29
|
+
const { returnCurrency } = useGlobalMixins();
|
|
40
30
|
const localPosition = ref({
|
|
41
31
|
city: null,
|
|
42
32
|
state: null,
|
|
43
33
|
country: null
|
|
44
34
|
});
|
|
45
|
-
ref(null);
|
|
46
|
-
const currentCategories = ref([]);
|
|
35
|
+
const localLocation = ref(null);
|
|
47
36
|
const searchLocation = ref("");
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const selectedDeliveryOptions = ref([]);
|
|
56
|
-
const paymentOptions = ref([
|
|
57
|
-
{ label: "Cash", value: "cash" },
|
|
58
|
-
{ label: "Card", value: "card" },
|
|
59
|
-
{ label: "Crypto", value: "crypto" },
|
|
60
|
-
{ label: "Bank Transfer", value: "transfer" }
|
|
61
|
-
]);
|
|
62
|
-
const selectedPaymentOptions = ref([]);
|
|
63
|
-
const selectCategory = (category) => {
|
|
64
|
-
console.log("Category selected:", category);
|
|
65
|
-
};
|
|
66
|
-
const clearFilters = () => {
|
|
67
|
-
selectedLocation.value = "All";
|
|
68
|
-
selectedDeliveryOptions.value = [];
|
|
69
|
-
selectedPaymentOptions.value = [];
|
|
70
|
-
searchLocation.value = "";
|
|
71
|
-
};
|
|
72
|
-
function denormalizeUrlParam(param) {
|
|
73
|
-
return param.replace(/-/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
|
|
74
|
-
}
|
|
37
|
+
const selectedFilters = ref({
|
|
38
|
+
price: { min: null, max: null },
|
|
39
|
+
delivery: [],
|
|
40
|
+
payment: [],
|
|
41
|
+
availabilityDate: null,
|
|
42
|
+
rating: null
|
|
43
|
+
});
|
|
75
44
|
if (route.params) {
|
|
76
45
|
let newState = {
|
|
77
46
|
country: denormalizeUrlParam(route.params.country),
|
|
@@ -88,35 +57,19 @@ const _sfc_main = {
|
|
|
88
57
|
}
|
|
89
58
|
if (route.query.sortParam) state.sort.param = route.query.sortParam;
|
|
90
59
|
if (route.query.sortOrder) state.sort.order = route.query.sortOrder;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
categoriesFilter = categoriesFilter.map((category) => ({
|
|
98
|
-
value: category._id,
|
|
99
|
-
label: category.name
|
|
100
|
-
}));
|
|
101
|
-
const index = state.filter.options.findIndex((option) => option.value === "categories");
|
|
102
|
-
const categoryOption = {
|
|
103
|
-
title: "Categories",
|
|
104
|
-
value: "categories",
|
|
105
|
-
options: categoriesFilter
|
|
106
|
-
};
|
|
107
|
-
if (index !== -1) {
|
|
108
|
-
state.filter.options[index] = categoryOption;
|
|
109
|
-
} else {
|
|
110
|
-
state.filter.options.unshift(categoryOption);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
60
|
+
function denormalizeUrlParam(param) {
|
|
61
|
+
return param.replace(/-/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
|
|
62
|
+
}
|
|
63
|
+
function normalizeUrlParam(param) {
|
|
64
|
+
return param.toLowerCase().replace(/ /g, "-").replace(/[^a-z0-9-]/g, "");
|
|
65
|
+
}
|
|
113
66
|
watch(() => state.sort, (newSortValue, oldSortValue) => {
|
|
114
67
|
let query = { ...route.query };
|
|
115
68
|
query.sortParam = newSortValue.param;
|
|
116
69
|
query.sortOrder = newSortValue.order;
|
|
117
70
|
router.replace({ query });
|
|
118
71
|
}, { deep: true });
|
|
119
|
-
watch(() => state.filter.
|
|
72
|
+
watch(() => state.filter.selectedFilters, (newFilterValue, oldFilterValue) => {
|
|
120
73
|
const query = { ...route.query };
|
|
121
74
|
Object.keys(oldFilterValue).forEach((key) => {
|
|
122
75
|
if (query[key]) {
|
|
@@ -130,6 +83,22 @@ const _sfc_main = {
|
|
|
130
83
|
Object.assign(query, newQueryValues);
|
|
131
84
|
router.replace({ query });
|
|
132
85
|
}, { deep: true });
|
|
86
|
+
watch(() => store.core.state.position, (newPosition) => {
|
|
87
|
+
const currentRoute = { ...router.currentRoute.value };
|
|
88
|
+
let newParams = {
|
|
89
|
+
country: normalizeUrlParam(newPosition.country),
|
|
90
|
+
state: normalizeUrlParam(newPosition.state),
|
|
91
|
+
city: normalizeUrlParam(newPosition.city)
|
|
92
|
+
};
|
|
93
|
+
let newState = {
|
|
94
|
+
country: denormalizeUrlParam(newPosition.country),
|
|
95
|
+
state: denormalizeUrlParam(newPosition.state),
|
|
96
|
+
city: denormalizeUrlParam(newPosition.city)
|
|
97
|
+
};
|
|
98
|
+
localPosition.value = newState;
|
|
99
|
+
currentRoute.params = newParams;
|
|
100
|
+
router.replace(currentRoute);
|
|
101
|
+
}, { deep: true });
|
|
133
102
|
const text = {
|
|
134
103
|
locale: "en",
|
|
135
104
|
messages: {
|
|
@@ -149,171 +118,122 @@ const _sfc_main = {
|
|
|
149
118
|
};
|
|
150
119
|
const { t } = useI18n(text);
|
|
151
120
|
return (_ctx, _cache) => {
|
|
152
|
-
const _component_router_view = resolveComponent("router-view");
|
|
153
121
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
154
|
-
createElementVNode("
|
|
155
|
-
createElementVNode("
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
])
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
122
|
+
createElementVNode("header", _hoisted_2, [
|
|
123
|
+
createElementVNode("h2", _hoisted_3, [
|
|
124
|
+
_cache[7] || (_cache[7] = createElementVNode("span", { class: "" }, "Weed Deliveries in ", -1)),
|
|
125
|
+
localPosition.value.city || localPosition.value.state || localPosition.value.country ? (openBlock(), createElementBlock("span", {
|
|
126
|
+
key: 0,
|
|
127
|
+
onClick: _cache[0] || (_cache[0] = (a) => {
|
|
128
|
+
unref(store).core.state.isOpenLocationPopup = true;
|
|
129
|
+
}),
|
|
130
|
+
class: "t-main t-semi cursor-pointer"
|
|
131
|
+
}, [
|
|
132
|
+
localPosition.value.city ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
133
|
+
createTextVNode(toDisplayString(localPosition.value.city) + ", ", 1)
|
|
134
|
+
], 64)) : createCommentVNode("", true),
|
|
135
|
+
localPosition.value.state ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
136
|
+
createTextVNode(toDisplayString(localPosition.value.state) + ", ", 1)
|
|
137
|
+
], 64)) : createCommentVNode("", true),
|
|
138
|
+
localPosition.value.country ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
|
|
139
|
+
createTextVNode(toDisplayString(localPosition.value.country), 1)
|
|
140
|
+
], 64)) : createCommentVNode("", true)
|
|
141
|
+
])) : (openBlock(), createElementBlock("span", {
|
|
142
|
+
key: 1,
|
|
143
|
+
onClick: _cache[1] || (_cache[1] = (a) => {
|
|
144
|
+
unref(store).core.state.isOpenLocationPopup = true;
|
|
145
|
+
}),
|
|
146
|
+
class: "t-main t-semi cursor-pointer"
|
|
147
|
+
}, "The World"))
|
|
148
|
+
])
|
|
149
|
+
]),
|
|
150
|
+
createElementVNode("div", _hoisted_4, [
|
|
151
|
+
createElementVNode("div", _hoisted_5, [
|
|
152
|
+
createElementVNode("div", _hoisted_6, [
|
|
153
|
+
createElementVNode("div", _hoisted_7, [
|
|
154
|
+
_cache[8] || (_cache[8] = createElementVNode("h4", { class: "mn-b-small" }, "Location", -1)),
|
|
155
|
+
createVNode(Field, {
|
|
156
|
+
modelValue: searchLocation.value,
|
|
157
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => searchLocation.value = $event),
|
|
158
|
+
placeholder: "Search location...",
|
|
159
|
+
type: "text",
|
|
160
|
+
class: "w-100 bg-light pd-small radius-small mn-b-small"
|
|
161
|
+
}, null, 8, ["modelValue"]),
|
|
173
162
|
createElementVNode("div", _hoisted_8, [
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
},
|
|
180
|
-
])
|
|
181
|
-
])
|
|
182
|
-
]),
|
|
183
|
-
content: withCtx(() => [
|
|
184
|
-
createElementVNode("div", _hoisted_10, [
|
|
185
|
-
createVNode(Field, {
|
|
186
|
-
modelValue: searchLocation.value,
|
|
187
|
-
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchLocation.value = $event),
|
|
188
|
-
placeholder: "Search location...",
|
|
189
|
-
type: "text",
|
|
190
|
-
class: "w-100 bg-light pd-small radius-small mn-b-small"
|
|
191
|
-
}, null, 8, ["modelValue"]),
|
|
192
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(locationOptions.value, (location) => {
|
|
193
|
-
return openBlock(), createBlock(_sfc_main$2, {
|
|
194
|
-
key: location,
|
|
195
|
-
radio: selectedLocation.value,
|
|
196
|
-
"onUpdate:radio": _cache[1] || (_cache[1] = ($event) => selectedLocation.value = $event),
|
|
197
|
-
label: location,
|
|
198
|
-
value: location,
|
|
199
|
-
mode: "radio",
|
|
200
|
-
class: "mn-b-micro"
|
|
201
|
-
}, null, 8, ["radio", "label", "value"]);
|
|
202
|
-
}), 128))
|
|
203
|
-
])
|
|
204
|
-
]),
|
|
205
|
-
_: 1
|
|
206
|
-
}),
|
|
207
|
-
createVNode(_sfc_main$1, {
|
|
208
|
-
class: "o-hidden mn-b-medium",
|
|
209
|
-
status: true
|
|
210
|
-
}, {
|
|
211
|
-
header: withCtx(({ isOpen }) => [
|
|
212
|
-
createElementVNode("div", _hoisted_11, [
|
|
213
|
-
_cache[7] || (_cache[7] = createElementVNode("h4", { class: "w-100" }, "Delivery Options", -1)),
|
|
214
|
-
createElementVNode("div", _hoisted_12, [
|
|
215
|
-
createVNode(IconChevronBottom, {
|
|
216
|
-
class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-medium"]),
|
|
217
|
-
fill: "rgb(var(--black))"
|
|
218
|
-
}, null, 8, ["class"])
|
|
219
|
-
])
|
|
220
|
-
])
|
|
221
|
-
]),
|
|
222
|
-
content: withCtx(() => [
|
|
223
|
-
createElementVNode("div", _hoisted_13, [
|
|
224
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(deliveryOptions.value, (option) => {
|
|
225
|
-
return openBlock(), createBlock(_sfc_main$2, {
|
|
226
|
-
key: option.value,
|
|
227
|
-
checkbox: selectedDeliveryOptions.value,
|
|
228
|
-
"onUpdate:checkbox": _cache[2] || (_cache[2] = ($event) => selectedDeliveryOptions.value = $event),
|
|
229
|
-
label: option.label,
|
|
230
|
-
value: option.value,
|
|
231
|
-
mode: "checkbox",
|
|
232
|
-
class: "mn-b-micro"
|
|
233
|
-
}, null, 8, ["checkbox", "label", "value"]);
|
|
163
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(state.locationOptions, (location) => {
|
|
164
|
+
return openBlock(), createElementBlock("div", {
|
|
165
|
+
key: location.label,
|
|
166
|
+
onClick: ($event) => unref(router).push(location.path),
|
|
167
|
+
class: "cursor-pointer hover-t-underline mn-b-regular transition-all"
|
|
168
|
+
}, toDisplayString(location.label), 9, _hoisted_9);
|
|
234
169
|
}), 128))
|
|
235
170
|
])
|
|
236
171
|
]),
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
createElementVNode("div", _hoisted_15, [
|
|
247
|
-
createVNode(IconChevronBottom, {
|
|
248
|
-
class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-medium"]),
|
|
249
|
-
fill: "rgb(var(--black))"
|
|
250
|
-
}, null, 8, ["class"])
|
|
251
|
-
])
|
|
252
|
-
])
|
|
253
|
-
]),
|
|
254
|
-
content: withCtx(() => [
|
|
255
|
-
createElementVNode("div", _hoisted_16, [
|
|
256
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(paymentOptions.value, (option) => {
|
|
257
|
-
return openBlock(), createBlock(_sfc_main$2, {
|
|
258
|
-
key: option.value,
|
|
259
|
-
checkbox: selectedPaymentOptions.value,
|
|
260
|
-
"onUpdate:checkbox": _cache[3] || (_cache[3] = ($event) => selectedPaymentOptions.value = $event),
|
|
261
|
-
label: option.label,
|
|
262
|
-
value: option.value,
|
|
263
|
-
mode: "checkbox",
|
|
264
|
-
class: "mn-b-micro"
|
|
265
|
-
}, null, 8, ["checkbox", "label", "value"]);
|
|
266
|
-
}), 128))
|
|
267
|
-
])
|
|
268
|
-
]),
|
|
269
|
-
_: 1
|
|
270
|
-
}),
|
|
271
|
-
createElementVNode("button", {
|
|
272
|
-
onClick: clearFilters,
|
|
273
|
-
class: "bg-main w-100 button mn-t-medium"
|
|
274
|
-
}, " Clear Filters ")
|
|
275
|
-
])
|
|
276
|
-
]),
|
|
277
|
-
createElementVNode("div", _hoisted_17, [
|
|
278
|
-
createElementVNode("header", _hoisted_18, [
|
|
279
|
-
createElementVNode("h2", _hoisted_19, [
|
|
280
|
-
_cache[9] || (_cache[9] = createElementVNode("span", { class: "" }, "Weed Deliveries in ", -1)),
|
|
281
|
-
localPosition.value.city || localPosition.value.state || localPosition.value.country ? (openBlock(), createElementBlock("span", {
|
|
282
|
-
key: 0,
|
|
283
|
-
onClick: _cache[4] || (_cache[4] = (a) => {
|
|
284
|
-
unref(core).state.isOpenLocationPopup = true;
|
|
285
|
-
}),
|
|
286
|
-
class: "t-main t-semi cursor-pointer"
|
|
287
|
-
}, [
|
|
288
|
-
localPosition.value.city ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
289
|
-
createTextVNode(toDisplayString(localPosition.value.city) + ", ", 1)
|
|
290
|
-
], 64)) : createCommentVNode("", true),
|
|
291
|
-
localPosition.value.state ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
292
|
-
createTextVNode(toDisplayString(localPosition.value.state) + ", ", 1)
|
|
293
|
-
], 64)) : createCommentVNode("", true),
|
|
294
|
-
localPosition.value.country ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
|
|
295
|
-
createTextVNode(toDisplayString(localPosition.value.country), 1)
|
|
296
|
-
], 64)) : createCommentVNode("", true)
|
|
297
|
-
])) : (openBlock(), createElementBlock("span", {
|
|
298
|
-
key: 1,
|
|
299
|
-
onClick: _cache[5] || (_cache[5] = (a) => {
|
|
300
|
-
unref(core).state.isOpenLocationPopup = true;
|
|
301
|
-
}),
|
|
302
|
-
class: "t-main t-semi cursor-pointer"
|
|
303
|
-
}, "The World"))
|
|
172
|
+
createVNode(_sfc_main$1, {
|
|
173
|
+
filters: state.filter.options,
|
|
174
|
+
selected: selectedFilters.value,
|
|
175
|
+
"onUpdate:selected": _cache[3] || (_cache[3] = ($event) => selectedFilters.value = $event),
|
|
176
|
+
immediate: true,
|
|
177
|
+
showHeader: false,
|
|
178
|
+
showApplyButton: false,
|
|
179
|
+
showResetButton: true
|
|
180
|
+
}, null, 8, ["filters", "selected"])
|
|
304
181
|
])
|
|
305
182
|
]),
|
|
306
|
-
createElementVNode("div",
|
|
307
|
-
createVNode(
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
183
|
+
createElementVNode("div", _hoisted_10, [
|
|
184
|
+
createVNode(_sfc_main$2, {
|
|
185
|
+
search: true,
|
|
186
|
+
sort: state.sort,
|
|
187
|
+
"onUpdate:sort": _cache[6] || (_cache[6] = ($event) => state.sort = $event),
|
|
188
|
+
showLoadMore: false,
|
|
189
|
+
states: {
|
|
190
|
+
empty: {
|
|
191
|
+
title: "No Shops Found",
|
|
192
|
+
description: "Currently, there are no shops."
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
store: {
|
|
196
|
+
read: (options) => unref(marketplaceStore).readCatalog(options)
|
|
197
|
+
},
|
|
198
|
+
options: {
|
|
199
|
+
country: localPosition.value.country,
|
|
200
|
+
state: localPosition.value.state,
|
|
201
|
+
city: localPosition.value.city,
|
|
202
|
+
location: localLocation.value?.location,
|
|
203
|
+
lookup: ["products", "spots"],
|
|
204
|
+
contain: ["products"],
|
|
205
|
+
priceMin: selectedFilters.value.price?.min,
|
|
206
|
+
priceMax: selectedFilters.value.price?.max,
|
|
207
|
+
delivery: selectedFilters.value.delivery?.length > 0 ? selectedFilters.value.delivery.join(",") : void 0,
|
|
208
|
+
payment: selectedFilters.value.payment?.length > 0 ? selectedFilters.value.payment.join(",") : void 0
|
|
209
|
+
},
|
|
210
|
+
class: "rows-1 gap-thin"
|
|
211
|
+
}, {
|
|
212
|
+
default: withCtx(({
|
|
213
|
+
items
|
|
214
|
+
}) => [
|
|
215
|
+
createElementVNode("div", _hoisted_11, [
|
|
216
|
+
createVNode(Filters, {
|
|
217
|
+
filters: state.filter.options,
|
|
218
|
+
"onUpdate:filters": _cache[4] || (_cache[4] = ($event) => state.filter.options = $event),
|
|
219
|
+
selected: selectedFilters.value,
|
|
220
|
+
"onUpdate:selected": _cache[5] || (_cache[5] = ($event) => selectedFilters.value = $event),
|
|
221
|
+
class: ""
|
|
222
|
+
}, null, 8, ["filters", "selected"])
|
|
223
|
+
]),
|
|
224
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(items, (organization) => {
|
|
225
|
+
return openBlock(), createBlock(_sfc_main$3, {
|
|
226
|
+
key: organization._id,
|
|
227
|
+
organization,
|
|
228
|
+
showRating: true,
|
|
229
|
+
showFollowers: false,
|
|
230
|
+
showProducts: true,
|
|
231
|
+
class: "bg-light w-100 o-hidden radius-medium pd-small"
|
|
232
|
+
}, null, 8, ["organization"]);
|
|
233
|
+
}), 128))
|
|
314
234
|
]),
|
|
315
235
|
_: 1
|
|
316
|
-
})
|
|
236
|
+
}, 8, ["sort", "store", "options"])
|
|
317
237
|
])
|
|
318
238
|
])
|
|
319
239
|
]);
|
package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Marketplace.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/layouts/Marketplace.vue"],"sourcesContent":["<template>\n\t <div class=\"cols-2-1_3 z-index-3 pos-relative radius-big\">\n\n\t\t<div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n\t\t\t<div class=\"w-100 o-y-scroll h-100\">\n\t\t\t\t<!-- Categories -->\n\t\t\t\t<div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n\t\t\t\t\t<h4 class=\"mn-b-small\">\n\t\t\t\t\t\t{{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n\t\t\t\t\t</h4>\n\t\t\t\t\t<div class=\"gap-micro\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"category in currentCategories\"\n\t\t\t\t\t\t\t:key=\"category._id\"\n\t\t\t\t\t\t\t@click=\"selectCategory(category)\"\n\t\t\t\t\t\t\tclass=\"pd-small radius-small cursor-pointer hover-bg-light transition-all\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ category.name }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Location Filter -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Location</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Field\n\t\t\t\t\t\t\t\tv-model=\"searchLocation\"\n\t\t\t\t\t\t\t\tplaceholder=\"Search location...\"\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"w-100 bg-light pd-small radius-small mn-b-small\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"location in locationOptions\"\n\t\t\t\t\t\t\t\t:key=\"location\"\n\t\t\t\t\t\t\t\tv-model:radio=\"selectedLocation\"\n\t\t\t\t\t\t\t\t:label=\"location\"\n\t\t\t\t\t\t\t\t:value=\"location\"\n\t\t\t\t\t\t\t\tmode=\"radio\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Delivery Options -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Delivery Options</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"option in deliveryOptions\"\n\t\t\t\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t\t\t\tv-model:checkbox=\"selectedDeliveryOptions\"\n\t\t\t\t\t\t\t\t:label=\"option.label\"\n\t\t\t\t\t\t\t\t:value=\"option.value\"\n\t\t\t\t\t\t\t\tmode=\"checkbox\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Payment Options -->\n\t\t\t\t<Spoiler \n\t\t\t\t\tclass=\"o-hidden mn-b-medium\"\n\t\t\t\t\t:status=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<template #header=\"{ isOpen }\">\n\t\t\t\t\t\t<div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n\t\t\t\t\t\t\t<h4 class=\"w-100\">Payment Options</h4>\n\t\t\t\t\t\t\t<div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n\t\t\t\t\t\t\t\t<IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div class=\"mn-t-small\">\n\t\t\t\t\t\t\t<Checkbox \n\t\t\t\t\t\t\t\tv-for=\"option in paymentOptions\"\n\t\t\t\t\t\t\t\t:key=\"option.value\"\n\t\t\t\t\t\t\t\tv-model:checkbox=\"selectedPaymentOptions\"\n\t\t\t\t\t\t\t\t:label=\"option.label\"\n\t\t\t\t\t\t\t\t:value=\"option.value\"\n\t\t\t\t\t\t\t\tmode=\"checkbox\"\n\t\t\t\t\t\t\t\tclass=\"mn-b-micro\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</Spoiler>\n\n\t\t\t\t<!-- Clear Filters Button -->\n\t\t\t\t<button \n\t\t\t\t\t@click=\"clearFilters\"\n\t\t\t\t\tclass=\"bg-main w-100 button mn-t-medium\"\n\t\t\t\t>\n\t\t\t\t\tClear Filters\n\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Catalog wrapper -->\n\t\t<div class=\"pd-thin\">\n\t\t\t<header class=\"pd-medium radius-medium bg-light mn-b-thin\">\n\t \t<h2 class=\"\">\n\t \t\t<span class=\"\">Weed Deliveries in </span>\n\n\t \t\t<span \n\t \t\t\tv-if=\"localPosition.city || localPosition.state || localPosition.country\"\n\t \t\t\t@click=\"a => { core.state.isOpenLocationPopup = true }\" \n\t \t\t\tclass=\"t-main t-semi cursor-pointer \"\n\t \t\t>\n\t \t\t\t\t<template v-if=\"localPosition.city\">{{localPosition.city}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.state\">{{localPosition.state}}, </template>\n\t \t\t\t\t<template v-if=\"localPosition.country\">{{localPosition.country}}</template>\n\t \t\t</span>\n\n\t \t\t<span v-else @click=\"a => { core.state.isOpenLocationPopup = true }\" class=\"t-main t-semi cursor-pointer\">The World</span>\n\t \t</h2>\n\t\t\t</header>\n\n\t\t\t<div class=\"rows-1\">\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<component ref=\"page\" :key=\"route\" :localPosition=\"localPosition\" :is=\"Component\" />\n\t\t\t\t</router-view>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script setup=\"props\">\n\t// Import libs\n\timport { computed, onMounted, watch, ref } from 'vue'\n\timport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\timport { useI18n } from 'vue-i18n'\n\n\timport Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n\timport Field from \"@martyrs/src/components/Field/Field.vue\"\n\timport Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\timport IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\tconst core = useStore()\n\n\n\timport * as marketplace from '../../store/marketplace';\n\n\t// Accessing router and store\n\tconst route = useRoute()\n\tconst router = useRouter()\n\n\tconst localPosition = ref({\n\t\tcity: null,\n\t\tstate: null,\n\t\tcountry: null\n\t});\n\n\tconst desktopFilters = ref(null)\n\n\t// Categories\n\tconst currentCategories = ref([]);\n\tconst searchLocation = ref('');\n\tconst selectedLocation = ref('All');\n\tconst locationOptions = ref(['All', 'Phuket', 'Bangkok', 'Chiang Mai', 'Pattaya']);\n\n\t// Delivery options\n\tconst deliveryOptions = ref([\n\t\t{ label: 'Pickup', value: 'pickup' },\n\t\t{ label: 'Delivery', value: 'delivery' },\n\t\t{ label: 'Dine-in', value: 'dinein' }\n\t]);\n\tconst selectedDeliveryOptions = ref([]);\n\n\t// Payment options\n\tconst paymentOptions = ref([\n\t\t{ label: 'Cash', value: 'cash' },\n\t\t{ label: 'Card', value: 'card' },\n\t\t{ label: 'Crypto', value: 'crypto' },\n\t\t{ label: 'Bank Transfer', value: 'transfer' }\n\t]);\n\tconst selectedPaymentOptions = ref([]);\n\n\tconst selectCategory = (category) => {\n\t\t// Implementation for category selection\n\t\tconsole.log('Category selected:', category);\n\t};\n\n\tconst clearFilters = () => {\n\t\tselectedLocation.value = 'All';\n\t\tselectedDeliveryOptions.value = [];\n\t\tselectedPaymentOptions.value = [];\n\t\tsearchLocation.value = '';\n\t};\n\n\tfunction denormalizeUrlParam(param) {\n\t return param\n\t .replace(/-/g, ' ') // Замена дефисов на пробелы\n\t .replace(/\\b\\w/g, l => l.toUpperCase()); // Преобразование первой буквы каждого слова в заглавную\n\t}\n\n\tfunction normalizeUrlParam(param) {\n\t return param\n\t .toLowerCase()\n\t .replace(/ /g, '-')\n\t .replace(/[^a-z0-9-]/g, '');\n\t}\n\n\tif (route.params) {\n // Загружаем новые значения из параметров маршрута в состояние\n let newState = {\n country: denormalizeUrlParam(route.params.country),\n state: denormalizeUrlParam(route.params.state),\n city: denormalizeUrlParam(route.params.city),\n };\n\n\t // Обновляем глобальное состояние\n\t localPosition.value = newState;\n\t}\n\n\tif (route.query) {\n\t \tconst query = route.query;\n\n\t\tmarketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n\t\tmarketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n\t\tmarketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n\t}\n\n\tif (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam\n\tif (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder\n\n\tonMounted(async () => {\n\t let options = {\n status: 'published',\n rootOnly: true\n }\n\n let categoriesFilter = await categories.actions.read(options);\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category._id,\n label: category.name\n }));\n\n const index = marketplace.state.filter.options.findIndex(option => option.value === 'categories');\n\n const categoryOption = {\n title: 'Categories',\n value: 'categories',\n options: categoriesFilter\n };\n\n if (index !== -1) {\n marketplace.state.filter.options[index] = categoryOption;\n } else {\n marketplace.state.filter.options.unshift(categoryOption);\n }\n\t})\n\n\twatch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n\t\tlet query = { ...route.query}\n\t\t\n\t\tquery.sortParam = newSortValue.param\n\t\tquery.sortOrder = newSortValue.order\n\t \n\t // replace the current route\n\t router.replace({ query });\n\t}, { deep: true });\n\n\n\twatch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {\n\t // Переводим фильтр в формат query\n\t const query = { ...route.query };\n\n\t // Удаляем старые значения фильтра из query\n\t Object.keys(oldFilterValue).forEach(key => {\n\t if (query[key]) {\n\t delete query[key];\n\t }\n\t });\n\n\t // Добавляем новые значения фильтра в query\n\t const newQueryValues = Object.fromEntries(\n\t Object.entries(newFilterValue)\n\t .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n\t .map(([key, value]) => [key, value.join(',')])\n\t );\n\n\t delete query.options;\n\t Object.assign(query, newQueryValues);\n\n\t // Обновляем маршрут с новым query\n\t router.replace({ query });\n\t}, { deep: true })\n\n\t// watch(() => core.state.position, (newPosition) => {\n\t// // get the current route\n\t// const currentRoute = { ...router.currentRoute.value };\n\t \n\t// // create new parameters based on globals state position\n\t// let newParams = {\n\t// country: normalizeUrlParam(newPosition.country),\n\t// state: normalizeUrlParam(newPosition.state),\n\t// city: normalizeUrlParam(newPosition.city),\n\t// };\n\t \n\t// // update route params\n\t// currentRoute.params = newParams;\n\t \n\t// // replace the current route\n\t// router.replace(currentRoute);\n\t// }, { deep: true });\n\n const text = {\n locale: 'en',\n messages: {\n en: {\n\t \tmeta: {\n title: \"Marketplace – Shop Our Wide Selection of Quality Weed for Delivery\",\n description: \"Browse our marketplace of top-grade weed strains and choose from a variety of delivery options. Order now and have your favorite strains delivered straight to your door. Safe, fast, and reliable.\",\n }\n },\n ru: {\n\t meta: {\n title: \"Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки\",\n description: \"Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.\",\n }\n }\n }\n }\n\n \tconst { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["marketplace.state","categories.actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Marketplace.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/layouts/Marketplace.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header class=\"pd-medium mn-b-thin\">\n <h2 class=\"\">\n <span class=\"\">Weed Deliveries in </span>\n\n <span\n v-if=\"localPosition.city || localPosition.state || localPosition.country\"\n @click=\"a => { store.core.state.isOpenLocationPopup = true }\"\n class=\"t-main t-semi cursor-pointer \"\n >\n <template v-if=\"localPosition.city\">{{localPosition.city}}, </template>\n <template v-if=\"localPosition.state\">{{localPosition.state}}, </template>\n <template v-if=\"localPosition.country\">{{localPosition.country}}</template>\n </span>\n\n <span v-else @click=\"a => { store.core.state.isOpenLocationPopup = true }\" class=\"t-main t-semi cursor-pointer\">The World</span>\n </h2>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Location Filter -->\n <div class=\"mn-b-medium\">\n <h4 class=\"mn-b-small\">Location</h4>\n <Field\n v-model=\"searchLocation\"\n placeholder=\"Search location...\"\n type=\"text\"\n class=\"w-100 bg-light pd-small radius-small mn-b-small\"\n />\n <div class=\"gap-micro\">\n <div\n v-for=\"location in marketplace.state.locationOptions\"\n :key=\"location.label\"\n @click=\"router.push(location.path)\"\n class=\"cursor-pointer hover-t-underline mn-b-regular transition-all\"\n >\n {{ location.label }}\n </div>\n </div>\n </div>\n\n <!-- Filters Group -->\n <FiltersGroup\n :filters=\"marketplace.state.filter.options\"\n v-model:selected=\"selectedFilters\"\n :immediate=\"true\"\n :showHeader=\"false\"\n :showApplyButton=\"false\"\n :showResetButton=\"true\"\n />\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Feed\n :search=\"true\"\n v-model:sort=\"marketplace.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n }\n }\"\n :store=\"{\n read: (options) => marketplaceStore.readCatalog(options)\n }\"\n :options=\"{\n country: localPosition.country,\n state: localPosition.state,\n city: localPosition.city,\n location: localLocation?.location,\n lookup: ['products','spots'],\n contain: ['products'],\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n delivery: selectedFilters.delivery?.length > 0 ? selectedFilters.delivery.join(',') : undefined,\n payment: selectedFilters.payment?.length > 0 ? selectedFilters.payment.join(',') : undefined\n }\"\n v-slot=\"{\n items\n }\"\n class=\"rows-1 gap-thin\"\n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"marketplace.state.filter.options\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n\n <CardOrganization\n v-for=\"organization in items\"\n :key=\"organization._id\"\n :organization=\"organization\"\n :showRating=\"true\"\n :showFollowers=\"false\"\n :showProducts=\"true\"\n class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n />\n </Feed>\n\n </div>\n </div>\n </div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { onMounted, watch, ref } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n import { useI18n } from 'vue-i18n'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Filters from '@martyrs/src/modules/core/views/components/sections/Filters.vue'\n import FiltersGroup from '@martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue'\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n\n import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'\n import * as marketplace from '../../store/marketplace'\n import marketplaceStore from '../../store/marketplace'\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\n\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n const { returnCurrency } = useGlobalMixins()\n\n const localPosition = ref({\n city: null,\n state: null,\n country: null\n });\n\n const localLocation = ref(null);\n // Location filter\n const searchLocation = ref('');\n\n const selectedFilters = ref({\n price: { min: null, max: null },\n delivery: [],\n payment: [],\n availabilityDate: null,\n rating: null\n })\n\n\n if (route.params) {\n // Загружаем новые значения из параметров маршрута в состояние\n let newState = {\n country: denormalizeUrlParam(route.params.country),\n state: denormalizeUrlParam(route.params.state),\n city: denormalizeUrlParam(route.params.city),\n };\n\n\t // Обновляем глобальное состояние\n\t localPosition.value = newState;\n\t}\n\n\tif (route.query) {\n\t \tconst query = route.query;\n\n\t\tmarketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n\t\tmarketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n\t\tmarketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n\t}\n\n\tif (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam\n\tif (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder\n\n function denormalizeUrlParam(param) {\n return param\n .replace(/-/g, ' ')\n .replace(/\\b\\w/g, l => l.toUpperCase());\n }\n\n function normalizeUrlParam(param) {\n return param\n .toLowerCase()\n .replace(/ /g, '-')\n .replace(/[^a-z0-9-]/g, '');\n }\n\n\twatch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n\t\tlet query = { ...route.query}\n\t\t\n\t\tquery.sortParam = newSortValue.param\n\t\tquery.sortOrder = newSortValue.order\n\t \n\t // replace the current route\n\t router.replace({ query });\n\t}, { deep: true });\n\n\n\twatch(() => marketplace.state.filter.selectedFilters, (newFilterValue, oldFilterValue) => {\n\t // Переводим фильтр в формат query\n\t const query = { ...route.query };\n\n\t // Удаляем старые значения фильтра из query\n\t Object.keys(oldFilterValue).forEach(key => {\n\t if (query[key]) {\n\t delete query[key];\n\t }\n\t });\n\n\t // Добавляем новые значения фильтра в query\n\t const newQueryValues = Object.fromEntries(\n\t Object.entries(newFilterValue)\n\t .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n\t .map(([key, value]) => [key, value.join(',')])\n\t );\n\n\t delete query.options;\n\t Object.assign(query, newQueryValues);\n\n\t // Обновляем маршрут с новым query\n\t router.replace({ query });\n\t}, { deep: true })\n\n\twatch(() => store.core.state.position, (newPosition) => {\n // get the current route\n const currentRoute = { ...router.currentRoute.value };\n\t \n // create new parameters based on globals state position\n let newParams = {\n country: normalizeUrlParam(newPosition.country),\n state: normalizeUrlParam(newPosition.state),\n city: normalizeUrlParam(newPosition.city),\n };\n\n let newState = {\n country: denormalizeUrlParam(newPosition.country),\n state: denormalizeUrlParam(newPosition.state),\n city: denormalizeUrlParam(newPosition.city),\n };\n \n // update route params\n localPosition.value = newState;\n currentRoute.params = newParams;\n\n \n // replace the current route\n router.replace(currentRoute);\n\t}, { deep: true });\n\n const text = {\n locale: 'en',\n messages: {\n en: {\n meta: {\n title: \"Marketplace – Shop Our Wide Selection of Quality Weed for Delivery\",\n description: \"Browse our marketplace of top-grade weed strains and choose from a variety of delivery options. Order now and have your favorite strains delivered straight to your door. Safe, fast, and reliable.\",\n }\n },\n ru: {\n meta: {\n title: \"Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки\",\n description: \"Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.\",\n }\n }\n }\n }\n\n const { t } = useI18n(text)\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n\n\n"],"names":["marketplace.state"],"mappings":"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"}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { onMounted, createBlock, openBlock, unref, withCtx, createElementBlock, Fragment, renderList } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
3
|
import _sfc_main$1 from "../../../../../components/Feed/Feed.vue.js";
|
|
4
|
-
import { actions } from "../../../../organizations/store/organizations.js";
|
|
5
4
|
import { useStore } from "../../../../core/views/store/core.store.js";
|
|
6
5
|
import _sfc_main$2 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
|
|
7
|
-
import { state } from "../../store/marketplace.js";
|
|
6
|
+
import { state, marketplaceStore } from "../../store/marketplace.js";
|
|
8
7
|
const _sfc_main = {
|
|
9
8
|
__name: "Catalog",
|
|
10
9
|
setup(__props) {
|
|
11
|
-
const
|
|
10
|
+
const store = useStore();
|
|
12
11
|
const route = useRoute();
|
|
13
12
|
onMounted(() => {
|
|
14
13
|
if (typeof gtag === "function") {
|
|
15
14
|
gtag("event", "view_marketplace", {
|
|
16
|
-
location: core.state.position?.location || "unknown",
|
|
15
|
+
location: store.core.state.position?.location || "unknown",
|
|
17
16
|
page_path: window.location.pathname,
|
|
18
17
|
marketplace_id: route.params.id || "main"
|
|
19
18
|
});
|
|
@@ -34,7 +33,7 @@ const _sfc_main = {
|
|
|
34
33
|
}
|
|
35
34
|
},
|
|
36
35
|
store: {
|
|
37
|
-
read: (options) =>
|
|
36
|
+
read: (options) => unref(marketplaceStore).readCatalog(options)
|
|
38
37
|
},
|
|
39
38
|
options: {
|
|
40
39
|
country: unref(route).params.country,
|
|
@@ -43,7 +42,7 @@ const _sfc_main = {
|
|
|
43
42
|
categories: unref(route).query.categories,
|
|
44
43
|
prices: unref(route).query.prices,
|
|
45
44
|
delivery: unref(route).query.delivery,
|
|
46
|
-
location: unref(
|
|
45
|
+
location: unref(store).core.state.position?.location,
|
|
47
46
|
lookup: ["products", "spots"],
|
|
48
47
|
contain: ["products"]
|
|
49
48
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Catalog.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/pages/Catalog.vue"],"sourcesContent":["<template>\n\t<Feed\n\t\tv-model:sort=\"marketplace.state.sort\"\n\t\tv-model:filter=\"marketplace.state.filter\"\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n },\n }\"\n :store=\"{\n read: (options) =>
|
|
1
|
+
{"version":3,"file":"Catalog.vue.js","sources":["../../../../../../../../src/modules/marketplace/views/components/pages/Catalog.vue"],"sourcesContent":["<template>\n\t<Feed\n\t\tv-model:sort=\"marketplace.state.sort\"\n\t\tv-model:filter=\"marketplace.state.filter\"\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Shops Found',\n description: 'Currently, there are no shops.'\n },\n }\"\n :store=\"{\n read: (options) => marketplaceStore.readCatalog(options)\n }\"\n :options=\"{\n country: route.params.country,\n\t state: route.params.state,\n\t city: route.params.city,\n\t categories: route.query.categories,\n\t prices: route.query.prices,\n\t delivery: route.query.delivery,\n\t location: store.core.state.position?.location,\n\t lookup: ['products','spots'],\n\t contain: ['products'],\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <CardOrganization \n\t v-for=\"organization in items\" \n\t :key=\"organization._id\"\n\t :organization=\"organization\"\n\t :showRating=\"true\"\n\t :showFollowers=\"false\"\n\t :showProducts=\"true\"\n\t class=\"bg-light w-100 o-hidden radius-medium pd-small \"\n\t />\n </Feed>\n</template>\n\n<script setup>\n\timport { computed,reactive,ref, onMounted,watch } from 'vue'\n\timport { useRoute } from 'vue-router'\n\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\t\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js'\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\tconst store = useStore()\n\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport * as marketplace from '../../store/marketplace';\n\timport marketplaceStore from '../../store/marketplace';\n\n\tconst route = useRoute()\n\n\tonMounted(() => {\n\t\t// Добавление Google Analytics event на открытие маркетплейса\n\t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_marketplace', {\n\t\t\t\tlocation: store.core.state.position?.location || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tmarketplace_id: route.params.id || 'main',\n\t\t\t});\n\t\t}\n\t})\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":[],"mappings":";;;;;;;;;AAmDC,UAAM,QAAQ,SAAQ;AAOtB,UAAM,QAAQ,SAAQ;AAEtB,cAAU,MAAM;AAEf,UAAI,OAAO,SAAS,YAAY;AAC/B,aAAK,SAAS,oBAAoB;AAAA,UACjC,UAAU,MAAM,KAAK,MAAM,UAAU,YAAY;AAAA,UACjD,WAAW,OAAO,SAAS;AAAA,UAC3B,gBAAgB,MAAM,OAAO,MAAM;AAAA,QACvC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createTextVNode, Transition, withCtx, Fragment, renderList, createBlock, createCommentVNode, normalizeClass, toDisplayString } from "vue";
|
|
2
|
-
import Loader from "../../../../../components/Loader/Loader.
|
|
2
|
+
import Loader from "../../../../../components/Loader/Loader.vue2.js";
|
|
3
3
|
import { useRouter } from "vue-router";
|
|
4
4
|
import { useI18n } from "vue-i18n";
|
|
5
5
|
import { actions as actions$1 } from "../../../../products/store/categories.js";
|