@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.
Files changed (179) hide show
  1. package/dist/{main-DQtUY5ma.js → main-TV4u6Jux.js} +2915 -2626
  2. package/dist/martyrs/src/components/Button/Button.vue.js +2 -2
  3. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -1
  4. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
  5. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  6. package/dist/martyrs/src/components/EditImages/{EditImages.vue.js → EditImages.vue2.js} +2 -2
  7. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -0
  8. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  9. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  10. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  11. package/dist/martyrs/src/components/Field/Field.vue2.js.map +1 -0
  12. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  13. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +2 -2
  14. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
  15. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  16. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  17. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  18. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  19. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue2.js → SelectMulti.vue.js} +2 -2
  20. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +1 -0
  21. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  22. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.js.map +1 -0
  23. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  24. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -0
  25. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  26. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  27. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  28. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  29. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  30. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  31. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  32. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  33. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  34. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  35. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  36. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  37. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  38. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
  39. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  40. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  41. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  42. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  43. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  44. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  45. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  46. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -6
  47. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  48. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +1 -1
  49. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  50. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +1 -1
  51. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue.js → Filters.vue2.js} +60 -172
  52. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -0
  53. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +1 -1
  54. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +64 -0
  55. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -0
  56. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +160 -0
  57. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -0
  58. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js +46 -0
  59. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js.map +1 -0
  60. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +105 -0
  61. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -0
  62. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js +168 -0
  63. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js.map +1 -0
  64. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +4 -0
  65. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  66. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  67. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  68. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +5 -3
  69. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  70. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  71. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
  72. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  73. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  74. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  75. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  76. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  77. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  78. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  79. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +159 -239
  80. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  81. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +5 -6
  82. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  84. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +65 -2
  85. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
  86. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  87. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  88. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  89. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  90. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  91. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  92. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  93. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  94. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  96. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  97. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  98. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  99. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  100. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  101. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  102. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +5 -3
  103. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  105. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +4 -4
  106. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  107. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  108. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  109. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
  110. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  111. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  112. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  113. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  114. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  115. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  116. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  117. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  118. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  119. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  120. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  121. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +5 -3
  122. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  124. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  125. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  126. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +4 -4
  127. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  128. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  129. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  130. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  131. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  132. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  133. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  134. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  135. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  136. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  137. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  138. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  139. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  140. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  141. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  142. package/dist/martyrs.css +1 -1
  143. package/dist/martyrs.es.js +1 -1
  144. package/dist/organizations.server.js +7 -2
  145. package/dist/style.css +10 -1
  146. package/dist/{web-Cyc6i_pv.js → web-Cq5tyhkl.js} +1 -1
  147. package/package.json +1 -1
  148. package/src/components/Button/Button.vue +1 -1
  149. package/src/components/Checkbox/Checkbox.vue +1 -1
  150. package/src/modules/core/views/components/layouts/Client.vue +7 -11
  151. package/src/modules/core/views/components/partials/Header.vue +1 -1
  152. package/src/modules/core/views/components/sections/Filters.vue +47 -161
  153. package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +12 -31
  154. package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +15 -15
  155. package/src/modules/core/views/components/sections/filters/FilterOptions.vue +12 -43
  156. package/src/modules/core/views/components/sections/filters/FilterRange.vue +59 -36
  157. package/src/modules/core/views/components/sections/filters/FiltersGroup.vue +178 -0
  158. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  159. package/src/modules/marketplace/controllers/marketplace.controller.js +123 -0
  160. package/src/modules/marketplace/controllers/utils/lookupConfigs.js +130 -0
  161. package/src/modules/marketplace/controllers/utils/queryProcessorMarketplace.js +211 -0
  162. package/src/modules/marketplace/marketplace.server.js +22 -0
  163. package/src/modules/marketplace/routes/marketplace.routes.js +34 -0
  164. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +194 -275
  165. package/src/modules/marketplace/views/components/pages/Catalog.vue +6 -5
  166. package/src/modules/marketplace/views/router/marketplace.router.js +43 -28
  167. package/src/modules/marketplace/views/store/marketplace.js +74 -3
  168. package/src/modules/organizations/components/blocks/CardOrganization.vue +8 -8
  169. package/src/modules/organizations/controllers/organizations.controller.js +1 -1
  170. package/src/modules/organizations/controllers/utils/queryProcessorOrganizations.js +8 -1
  171. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +0 -1
  172. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  173. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
  174. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  175. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +0 -1
  176. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  177. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  178. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +0 -1
  179. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +0 -81
@@ -1,237 +1,161 @@
1
1
  <template>
2
- <div class="cols-2-1_3 z-index-3 pos-relative radius-big">
3
-
4
- <div class="o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative">
5
- <div class="w-100 o-y-scroll h-100">
6
- <!-- Categories -->
7
- <div class="mn-b-medium" v-if="currentCategories.length > 0">
8
- <h4 class="mn-b-small">
9
- {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}
10
- </h4>
11
- <div class="gap-micro">
12
- <div
13
- v-for="category in currentCategories"
14
- :key="category._id"
15
- @click="selectCategory(category)"
16
- class="pd-small radius-small cursor-pointer hover-bg-light transition-all"
17
- >
18
- {{ category.name }}
19
- </div>
20
- </div>
21
- </div>
22
-
23
- <!-- Location Filter -->
24
- <Spoiler
25
- class="o-hidden mn-b-medium"
26
- :status="true"
27
- >
28
- <template #header="{ isOpen }">
29
- <div class="cursor-pointer w-100 flex-v-center flex-nowrap flex">
30
- <h4 class="w-100">Location</h4>
31
- <div class="h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra">
32
- <IconChevronBottom :class="{ 'rotate-180 mn-t-micro-negative': isOpen }" fill="rgb(var(--black))" class="i-medium"/>
33
- </div>
34
- </div>
35
- </template>
36
-
37
- <template #content>
38
- <div class="mn-t-small">
39
- <Field
40
- v-model="searchLocation"
41
- placeholder="Search location..."
42
- type="text"
43
- class="w-100 bg-light pd-small radius-small mn-b-small"
44
- />
45
- <Checkbox
46
- v-for="location in locationOptions"
47
- :key="location"
48
- v-model:radio="selectedLocation"
49
- :label="location"
50
- :value="location"
51
- mode="radio"
52
- class="mn-b-micro"
53
- />
54
- </div>
55
- </template>
56
- </Spoiler>
57
-
58
- <!-- Delivery Options -->
59
- <Spoiler
60
- class="o-hidden mn-b-medium"
61
- :status="true"
62
- >
63
- <template #header="{ isOpen }">
64
- <div class="cursor-pointer w-100 flex-v-center flex-nowrap flex">
65
- <h4 class="w-100">Delivery Options</h4>
66
- <div class="h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra">
67
- <IconChevronBottom :class="{ 'rotate-180 mn-t-micro-negative': isOpen }" fill="rgb(var(--black))" class="i-medium"/>
68
- </div>
69
- </div>
70
- </template>
71
-
72
- <template #content>
73
- <div class="mn-t-small">
74
- <Checkbox
75
- v-for="option in deliveryOptions"
76
- :key="option.value"
77
- v-model:checkbox="selectedDeliveryOptions"
78
- :label="option.label"
79
- :value="option.value"
80
- mode="checkbox"
81
- class="mn-b-micro"
82
- />
83
- </div>
84
- </template>
85
- </Spoiler>
86
-
87
- <!-- Payment Options -->
88
- <Spoiler
89
- class="o-hidden mn-b-medium"
90
- :status="true"
91
- >
92
- <template #header="{ isOpen }">
93
- <div class="cursor-pointer w-100 flex-v-center flex-nowrap flex">
94
- <h4 class="w-100">Payment Options</h4>
95
- <div class="h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra">
96
- <IconChevronBottom :class="{ 'rotate-180 mn-t-micro-negative': isOpen }" fill="rgb(var(--black))" class="i-medium"/>
97
- </div>
98
- </div>
99
- </template>
100
-
101
- <template #content>
102
- <div class="mn-t-small">
103
- <Checkbox
104
- v-for="option in paymentOptions"
105
- :key="option.value"
106
- v-model:checkbox="selectedPaymentOptions"
107
- :label="option.label"
108
- :value="option.value"
109
- mode="checkbox"
110
- class="mn-b-micro"
111
- />
112
- </div>
113
- </template>
114
- </Spoiler>
115
-
116
- <!-- Clear Filters Button -->
117
- <button
118
- @click="clearFilters"
119
- class="bg-main w-100 button mn-t-medium"
120
- >
121
- Clear Filters
122
- </button>
123
- </div>
124
- </div>
125
-
126
- <!-- Catalog wrapper -->
127
- <div class="pd-thin">
128
- <header class="pd-medium radius-medium bg-light mn-b-thin">
129
- <h2 class="">
130
- <span class="">Weed Deliveries in </span>
131
-
132
- <span
133
- v-if="localPosition.city || localPosition.state || localPosition.country"
134
- @click="a => { core.state.isOpenLocationPopup = true }"
135
- class="t-main t-semi cursor-pointer "
136
- >
137
- <template v-if="localPosition.city">{{localPosition.city}}, </template>
138
- <template v-if="localPosition.state">{{localPosition.state}}, </template>
139
- <template v-if="localPosition.country">{{localPosition.country}}</template>
140
- </span>
141
-
142
- <span v-else @click="a => { core.state.isOpenLocationPopup = true }" class="t-main t-semi cursor-pointer">The World</span>
143
- </h2>
144
- </header>
145
-
146
- <div class="rows-1">
147
- <router-view v-slot="{ Component, route }">
148
- <component ref="page" :key="route" :localPosition="localPosition" :is="Component" />
149
- </router-view>
150
- </div>
151
- </div>
152
- </div>
2
+ <div class="pos-relative">
3
+ <header class="pd-medium mn-b-thin">
4
+ <h2 class="">
5
+ <span class="">Weed Deliveries in </span>
6
+
7
+ <span
8
+ v-if="localPosition.city || localPosition.state || localPosition.country"
9
+ @click="a => { store.core.state.isOpenLocationPopup = true }"
10
+ class="t-main t-semi cursor-pointer "
11
+ >
12
+ <template v-if="localPosition.city">{{localPosition.city}}, </template>
13
+ <template v-if="localPosition.state">{{localPosition.state}}, </template>
14
+ <template v-if="localPosition.country">{{localPosition.country}}</template>
15
+ </span>
16
+
17
+ <span v-else @click="a => { store.core.state.isOpenLocationPopup = true }" class="t-main t-semi cursor-pointer">The World</span>
18
+ </h2>
19
+ </header>
20
+
21
+ <div class="cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative">
22
+
23
+ <div class="o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative">
24
+ <div class="w-100 o-y-scroll h-100">
25
+ <!-- Location Filter -->
26
+ <div class="mn-b-medium">
27
+ <h4 class="mn-b-small">Location</h4>
28
+ <Field
29
+ v-model="searchLocation"
30
+ placeholder="Search location..."
31
+ type="text"
32
+ class="w-100 bg-light pd-small radius-small mn-b-small"
33
+ />
34
+ <div class="gap-micro">
35
+ <div
36
+ v-for="location in marketplace.state.locationOptions"
37
+ :key="location.label"
38
+ @click="router.push(location.path)"
39
+ class="cursor-pointer hover-t-underline mn-b-regular transition-all"
40
+ >
41
+ {{ location.label }}
42
+ </div>
43
+ </div>
44
+ </div>
45
+
46
+ <!-- Filters Group -->
47
+ <FiltersGroup
48
+ :filters="marketplace.state.filter.options"
49
+ v-model:selected="selectedFilters"
50
+ :immediate="true"
51
+ :showHeader="false"
52
+ :showApplyButton="false"
53
+ :showResetButton="true"
54
+ />
55
+ </div>
56
+ </div>
57
+
58
+ <div class="w-100 rows-1 pd-thin pos-relative o-hidden">
59
+ <Feed
60
+ :search="true"
61
+ v-model:sort="marketplace.state.sort"
62
+ :showLoadMore="false"
63
+ :states="{
64
+ empty: {
65
+ title: 'No Shops Found',
66
+ description: 'Currently, there are no shops.'
67
+ }
68
+ }"
69
+ :store="{
70
+ read: (options) => marketplaceStore.readCatalog(options)
71
+ }"
72
+ :options="{
73
+ country: localPosition.country,
74
+ state: localPosition.state,
75
+ city: localPosition.city,
76
+ location: localLocation?.location,
77
+ lookup: ['products','spots'],
78
+ contain: ['products'],
79
+ priceMin: selectedFilters.price?.min,
80
+ priceMax: selectedFilters.price?.max,
81
+ delivery: selectedFilters.delivery?.length > 0 ? selectedFilters.delivery.join(',') : undefined,
82
+ payment: selectedFilters.payment?.length > 0 ? selectedFilters.payment.join(',') : undefined
83
+ }"
84
+ v-slot="{
85
+ items
86
+ }"
87
+ class="rows-1 gap-thin"
88
+ >
89
+ <div class="mn-b-thin mobile-only">
90
+ <Filters
91
+ v-model:filters="marketplace.state.filter.options"
92
+ v-model:selected="selectedFilters"
93
+ class=""
94
+ />
95
+ </div>
96
+
97
+ <CardOrganization
98
+ v-for="organization in items"
99
+ :key="organization._id"
100
+ :organization="organization"
101
+ :showRating="true"
102
+ :showFollowers="false"
103
+ :showProducts="true"
104
+ class="bg-light w-100 o-hidden radius-medium pd-small "
105
+ />
106
+ </Feed>
107
+
108
+ </div>
109
+ </div>
110
+ </div>
111
+
153
112
  </template>
154
113
 
155
114
 
156
115
  <script setup="props">
157
- // Import libs
158
- import { computed, onMounted, watch, ref } from 'vue'
159
- import { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'
160
- import { useI18n } from 'vue-i18n'
161
-
162
- import Spoiler from "@martyrs/src/components/Spoiler/Spoiler.vue"
163
- import Field from "@martyrs/src/components/Field/Field.vue"
164
- import Checkbox from "@martyrs/src/components/Checkbox/Checkbox.vue"
165
- import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'
166
-
167
- import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
168
- import * as categories from '@martyrs/src/modules/products/store/categories.js';
169
- const core = useStore()
170
-
171
-
172
- import * as marketplace from '../../store/marketplace';
173
-
174
- // Accessing router and store
175
- const route = useRoute()
176
- const router = useRouter()
177
-
178
- const localPosition = ref({
179
- city: null,
180
- state: null,
181
- country: null
182
- });
183
-
184
- const desktopFilters = ref(null)
185
-
186
- // Categories
187
- const currentCategories = ref([]);
188
- const searchLocation = ref('');
189
- const selectedLocation = ref('All');
190
- const locationOptions = ref(['All', 'Phuket', 'Bangkok', 'Chiang Mai', 'Pattaya']);
191
-
192
- // Delivery options
193
- const deliveryOptions = ref([
194
- { label: 'Pickup', value: 'pickup' },
195
- { label: 'Delivery', value: 'delivery' },
196
- { label: 'Dine-in', value: 'dinein' }
197
- ]);
198
- const selectedDeliveryOptions = ref([]);
199
-
200
- // Payment options
201
- const paymentOptions = ref([
202
- { label: 'Cash', value: 'cash' },
203
- { label: 'Card', value: 'card' },
204
- { label: 'Crypto', value: 'crypto' },
205
- { label: 'Bank Transfer', value: 'transfer' }
206
- ]);
207
- const selectedPaymentOptions = ref([]);
208
-
209
- const selectCategory = (category) => {
210
- // Implementation for category selection
211
- console.log('Category selected:', category);
212
- };
213
-
214
- const clearFilters = () => {
215
- selectedLocation.value = 'All';
216
- selectedDeliveryOptions.value = [];
217
- selectedPaymentOptions.value = [];
218
- searchLocation.value = '';
219
- };
220
-
221
- function denormalizeUrlParam(param) {
222
- return param
223
- .replace(/-/g, ' ') // Замена дефисов на пробелы
224
- .replace(/\b\w/g, l => l.toUpperCase()); // Преобразование первой буквы каждого слова в заглавную
225
- }
226
-
227
- function normalizeUrlParam(param) {
228
- return param
229
- .toLowerCase()
230
- .replace(/ /g, '-')
231
- .replace(/[^a-z0-9-]/g, '');
232
- }
233
-
234
- if (route.params) {
116
+ // Import libs
117
+ import { onMounted, watch, ref } from 'vue'
118
+ import { useRoute, useRouter } from 'vue-router'
119
+ import { useI18n } from 'vue-i18n'
120
+
121
+ import Feed from '@martyrs/src/components/Feed/Feed.vue'
122
+ import Filters from '@martyrs/src/modules/core/views/components/sections/Filters.vue'
123
+ import FiltersGroup from '@martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue'
124
+ import Field from "@martyrs/src/components/Field/Field.vue"
125
+
126
+ import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'
127
+
128
+ import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
129
+ import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'
130
+ import * as marketplace from '../../store/marketplace'
131
+ import marketplaceStore from '../../store/marketplace'
132
+ import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'
133
+
134
+ const route = useRoute()
135
+ const router = useRouter()
136
+ const store = useStore()
137
+ const { returnCurrency } = useGlobalMixins()
138
+
139
+ const localPosition = ref({
140
+ city: null,
141
+ state: null,
142
+ country: null
143
+ });
144
+
145
+ const localLocation = ref(null);
146
+ // Location filter
147
+ const searchLocation = ref('');
148
+
149
+ const selectedFilters = ref({
150
+ price: { min: null, max: null },
151
+ delivery: [],
152
+ payment: [],
153
+ availabilityDate: null,
154
+ rating: null
155
+ })
156
+
157
+
158
+ if (route.params) {
235
159
  // Загружаем новые значения из параметров маршрута в состояние
236
160
  let newState = {
237
161
  country: denormalizeUrlParam(route.params.country),
@@ -254,33 +178,18 @@
254
178
  if (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam
255
179
  if (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder
256
180
 
257
- onMounted(async () => {
258
- let options = {
259
- status: 'published',
260
- rootOnly: true
261
- }
262
-
263
- let categoriesFilter = await categories.actions.read(options);
264
-
265
- categoriesFilter = categoriesFilter.map(category => ({
266
- value: category._id,
267
- label: category.name
268
- }));
269
-
270
- const index = marketplace.state.filter.options.findIndex(option => option.value === 'categories');
271
-
272
- const categoryOption = {
273
- title: 'Categories',
274
- value: 'categories',
275
- options: categoriesFilter
276
- };
181
+ function denormalizeUrlParam(param) {
182
+ return param
183
+ .replace(/-/g, ' ')
184
+ .replace(/\b\w/g, l => l.toUpperCase());
185
+ }
277
186
 
278
- if (index !== -1) {
279
- marketplace.state.filter.options[index] = categoryOption;
280
- } else {
281
- marketplace.state.filter.options.unshift(categoryOption);
282
- }
283
- })
187
+ function normalizeUrlParam(param) {
188
+ return param
189
+ .toLowerCase()
190
+ .replace(/ /g, '-')
191
+ .replace(/[^a-z0-9-]/g, '');
192
+ }
284
193
 
285
194
  watch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {
286
195
  let query = { ...route.query}
@@ -293,7 +202,7 @@
293
202
  }, { deep: true });
294
203
 
295
204
 
296
- watch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {
205
+ watch(() => marketplace.state.filter.selectedFilters, (newFilterValue, oldFilterValue) => {
297
206
  // Переводим фильтр в формат query
298
207
  const query = { ...route.query };
299
208
 
@@ -318,35 +227,43 @@
318
227
  router.replace({ query });
319
228
  }, { deep: true })
320
229
 
321
- // watch(() => core.state.position, (newPosition) => {
322
- // // get the current route
323
- // const currentRoute = { ...router.currentRoute.value };
324
-
325
- // // create new parameters based on globals state position
326
- // let newParams = {
327
- // country: normalizeUrlParam(newPosition.country),
328
- // state: normalizeUrlParam(newPosition.state),
329
- // city: normalizeUrlParam(newPosition.city),
330
- // };
230
+ watch(() => store.core.state.position, (newPosition) => {
231
+ // get the current route
232
+ const currentRoute = { ...router.currentRoute.value };
331
233
 
332
- // // update route params
333
- // currentRoute.params = newParams;
334
-
335
- // // replace the current route
336
- // router.replace(currentRoute);
337
- // }, { deep: true });
234
+ // create new parameters based on globals state position
235
+ let newParams = {
236
+ country: normalizeUrlParam(newPosition.country),
237
+ state: normalizeUrlParam(newPosition.state),
238
+ city: normalizeUrlParam(newPosition.city),
239
+ };
240
+
241
+ let newState = {
242
+ country: denormalizeUrlParam(newPosition.country),
243
+ state: denormalizeUrlParam(newPosition.state),
244
+ city: denormalizeUrlParam(newPosition.city),
245
+ };
246
+
247
+ // update route params
248
+ localPosition.value = newState;
249
+ currentRoute.params = newParams;
250
+
251
+
252
+ // replace the current route
253
+ router.replace(currentRoute);
254
+ }, { deep: true });
338
255
 
339
256
  const text = {
340
257
  locale: 'en',
341
258
  messages: {
342
259
  en: {
343
- meta: {
260
+ meta: {
344
261
  title: "Marketplace – Shop Our Wide Selection of Quality Weed for Delivery",
345
262
  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.",
346
263
  }
347
264
  },
348
265
  ru: {
349
- meta: {
266
+ meta: {
350
267
  title: "Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки",
351
268
  description: "Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.",
352
269
  }
@@ -354,10 +271,12 @@
354
271
  }
355
272
  }
356
273
 
357
- const { t } = useI18n(text)
274
+ const { t } = useI18n(text)
358
275
  </script>
359
276
 
360
277
  <style lang="scss">
361
278
 
362
279
 
363
280
  </style>
281
+
282
+
@@ -11,7 +11,7 @@
11
11
  },
12
12
  }"
13
13
  :store="{
14
- read: (options) => organization.actions.read(options)
14
+ read: (options) => marketplaceStore.readCatalog(options)
15
15
  }"
16
16
  :options="{
17
17
  country: route.params.country,
@@ -20,7 +20,7 @@
20
20
  categories: route.query.categories,
21
21
  prices: route.query.prices,
22
22
  delivery: route.query.delivery,
23
- location: core.state.position?.location,
23
+ location: store.core.state.position?.location,
24
24
  lookup: ['products','spots'],
25
25
  contain: ['products'],
26
26
  }"
@@ -49,19 +49,20 @@
49
49
 
50
50
  import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'
51
51
  import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
52
- const core = useStore()
52
+ const store = useStore()
53
53
 
54
54
  import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'
55
55
 
56
56
  import * as marketplace from '../../store/marketplace';
57
-
57
+ import marketplaceStore from '../../store/marketplace';
58
+
58
59
  const route = useRoute()
59
60
 
60
61
  onMounted(() => {
61
62
  // Добавление Google Analytics event на открытие маркетплейса
62
63
  if (typeof gtag === 'function') {
63
64
  gtag('event', 'view_marketplace', {
64
- location: core.state.position?.location || 'unknown',
65
+ location: store.core.state.position?.location || 'unknown',
65
66
  page_path: window.location.pathname,
66
67
  marketplace_id: route.params.id || 'main',
67
68
  });
@@ -1,35 +1,50 @@
1
1
  import layoutMarketplace from '../components/layouts/Marketplace.vue';
2
2
 
3
- const marketplace = {
4
- path: 'marketplace',
5
- component: layoutMarketplace,
6
- name: 'Marketplace',
7
- meta: {
8
- title: {
9
- en: 'Marketplace',
10
- ru: 'Маркетплейс',
3
+ const marketplace = [
4
+ {
5
+ path: 'marketplace',
6
+ name: 'Marketplace',
7
+ component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
8
+ meta: {
9
+ title: {
10
+ en: 'Marketplace',
11
+ ru: 'Маркетплейс',
12
+ },
11
13
  },
12
14
  },
13
- children: [
14
- {
15
- path: ':country?',
16
- component: () => import(/* webpackChunkName: 'Deliveries' */ '../components/pages/Catalog.vue'),
17
- children: [
18
- {
19
- path: ':state?',
20
- name: 'State',
21
- component: () => import(/* webpackChunkName: 'Deliveries' */ '../components/pages/Catalog.vue'),
22
- children: [
23
- {
24
- path: ':city?',
25
- name: 'City',
26
- component: () => import(/* webpackChunkName: 'Deliveries' */ '../components/pages/Catalog.vue'),
27
- },
28
- ],
29
- },
30
- ],
15
+ {
16
+ path: 'marketplace/:country',
17
+ name: 'MarketplaceCountry',
18
+ component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
19
+ meta: {
20
+ title: {
21
+ en: 'Marketplace',
22
+ ru: 'Маркетплейс',
23
+ },
31
24
  },
32
- ],
33
- };
25
+ },
26
+ {
27
+ path: 'marketplace/:country/:state',
28
+ name: 'MarketplaceState',
29
+ component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
30
+ meta: {
31
+ title: {
32
+ en: 'Marketplace',
33
+ ru: 'Маркетплейс',
34
+ },
35
+ },
36
+ },
37
+ {
38
+ path: 'marketplace/:country/:state/:city',
39
+ name: 'MarketplaceCity',
40
+ component: () => import(/* webpackChunkName: 'layoutMarketplace' */ '../components/layouts/Marketplace.vue'),
41
+ meta: {
42
+ title: {
43
+ en: 'Marketplace',
44
+ ru: 'Маркетплейс',
45
+ },
46
+ },
47
+ },
48
+ ];
34
49
 
35
50
  export default marketplace;