@ozdao/martyrs 0.2.561 → 0.2.563

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 (197) hide show
  1. package/dist/{abac-DC2x92Pa.js → abac-DYoheWuc.js} +2 -1
  2. package/dist/{core.logger-VRHh-WUW.js → core.cache-DALYFDdy.js} +10 -59
  3. package/dist/core.logger-C3q8A9dl.js +51 -0
  4. package/dist/core.server.js +1 -1
  5. package/dist/{crud-DFFgLl09.js → crud-C7FSTUes.js} +2 -1
  6. package/dist/inventory.server.js +4 -3
  7. package/dist/{main-DQtUY5ma.js → main-CmjWiDVF.js} +2837 -2548
  8. package/dist/marketplace.server.js +389 -0
  9. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +3 -3
  10. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  11. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
  12. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  13. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  14. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  15. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  16. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  17. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  19. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.js.map +1 -0
  20. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  21. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  22. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  23. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  24. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  25. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  26. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  27. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  28. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  29. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  30. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  31. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  32. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  33. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  34. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +1 -1
  35. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -6
  36. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  37. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +3 -3
  38. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  39. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +1 -1
  40. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  41. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js +59 -171
  42. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +1 -1
  43. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js +64 -0
  44. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterCheckbox.vue2.js.map +1 -0
  45. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js +160 -0
  46. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterDateRange.vue2.js.map +1 -0
  47. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js +46 -0
  48. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterOptions.vue.js.map +1 -0
  49. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +105 -0
  50. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js.map +1 -0
  51. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js +166 -0
  52. package/dist/martyrs/src/modules/core/views/components/sections/filters/FiltersGroup.vue.js.map +1 -0
  53. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +4 -0
  54. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  55. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  56. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  57. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  58. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  59. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -0
  60. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
  62. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  63. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  64. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  65. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  66. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  67. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +2 -2
  68. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js +1 -1
  69. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js.map +1 -1
  70. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  71. package/dist/martyrs/src/modules/marketplace/marketplace.client.js +5 -9
  72. package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
  73. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +242 -0
  74. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js.map +1 -0
  75. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js +39 -0
  76. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js.map +1 -0
  77. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +65 -2
  78. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
  79. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  80. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  81. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  82. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  83. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  84. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  85. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  86. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  87. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  88. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  89. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  90. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  91. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  92. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  93. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  94. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  96. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  97. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  98. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  99. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  100. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  101. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  102. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  103. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  104. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -0
  105. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  106. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  107. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  108. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +4 -4
  109. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  111. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  112. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  113. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  114. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
  115. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  116. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  117. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  118. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  119. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  120. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  121. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  122. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  123. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  124. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  125. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -2
  126. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  128. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  129. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  130. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  131. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  132. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  133. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  134. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  135. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  136. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  137. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  138. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  139. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  140. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  141. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  142. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  143. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  144. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  145. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  146. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  147. package/dist/martyrs.css +1 -1
  148. package/dist/martyrs.es.js +1 -1
  149. package/dist/music.server.js +4 -3
  150. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  151. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  152. package/dist/orders.server.js +2 -2
  153. package/dist/organizations.server.js +10 -215
  154. package/dist/products.server.js +4 -3
  155. package/dist/queryProcessorOrganizations-BB11WFpc.js +221 -0
  156. package/dist/rents.server.js +2 -1
  157. package/dist/style.css +10 -1
  158. package/dist/{web-Cyc6i_pv.js → web-cNKIl_cL.js} +1 -1
  159. package/package.json +1 -1
  160. package/src/components/Button/Button.vue +1 -1
  161. package/src/components/Checkbox/Checkbox.vue +1 -1
  162. package/src/modules/core/views/components/layouts/Client.vue +7 -11
  163. package/src/modules/core/views/components/partials/Header.vue +1 -1
  164. package/src/modules/core/views/components/sections/Filters.vue +47 -161
  165. package/src/modules/core/views/components/sections/filters/FilterCheckbox.vue +12 -31
  166. package/src/modules/core/views/components/sections/filters/FilterDateRange.vue +15 -15
  167. package/src/modules/core/views/components/sections/filters/FilterOptions.vue +12 -43
  168. package/src/modules/core/views/components/sections/filters/FilterRange.vue +59 -36
  169. package/src/modules/core/views/components/sections/filters/FiltersGroup.vue +177 -0
  170. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  171. package/src/modules/landing/components/sections/SectionFeatures.vue +1 -1
  172. package/src/modules/marketplace/controllers/marketplace.controller.js +123 -0
  173. package/src/modules/marketplace/controllers/utils/lookupConfigs.js +130 -0
  174. package/src/modules/marketplace/controllers/utils/queryProcessorMarketplace.js +211 -0
  175. package/src/modules/marketplace/marketplace.client.js +3 -10
  176. package/src/modules/marketplace/marketplace.server.js +22 -0
  177. package/src/modules/marketplace/routes/marketplace.routes.js +34 -0
  178. package/src/modules/marketplace/views/components/pages/Marketplace.vue +273 -0
  179. package/src/modules/marketplace/views/router/marketplace.router.js +37 -30
  180. package/src/modules/marketplace/views/store/marketplace.js +74 -3
  181. package/src/modules/organizations/components/blocks/CardOrganization.vue +8 -8
  182. package/src/modules/organizations/controllers/organizations.controller.js +1 -1
  183. package/src/modules/organizations/controllers/utils/queryProcessorOrganizations.js +8 -1
  184. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  185. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  186. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  187. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  188. package/dist/martyrs/src/modules/marketplace/marketplace.router.js +0 -63
  189. package/dist/martyrs/src/modules/marketplace/marketplace.router.js.map +0 -1
  190. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +0 -326
  191. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +0 -1
  192. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +0 -74
  193. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +0 -1
  194. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +0 -81
  195. package/src/modules/marketplace/marketplace.router.js +0 -66
  196. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +0 -363
  197. package/src/modules/marketplace/views/components/pages/Catalog.vue +0 -73
@@ -1,66 +0,0 @@
1
- function buildMarketplaceTree(options = {}) {
2
- const layoutComponent = options.layoutComponent || (() => import(
3
- /* webpackChunkName: 'marketplace-layout' */
4
- './views/components/layouts/Marketplace.vue'
5
- ));
6
- const catalogComponent = options.catalogComponent || (() => import(
7
- /* webpackChunkName: 'marketplace-catalog' */
8
- './views/components/pages/Catalog.vue'
9
- ));
10
-
11
- const buildName = (suffix) => {
12
- const prefix = options.routeNamePrefix || '';
13
- return suffix ? `${prefix}${suffix}` : prefix || undefined;
14
- };
15
-
16
- return [
17
- {
18
- path: '',
19
- name: buildName('Marketplace') || 'Marketplace',
20
- component: layoutComponent,
21
- meta: {
22
- title: {
23
- en: 'Marketplace',
24
- ru: 'Маркетплейс',
25
- },
26
- },
27
- children: [
28
- {
29
- path: ':country?',
30
- component: catalogComponent,
31
- children: [
32
- {
33
- path: ':state?',
34
- name: buildName('State') || 'State',
35
- component: catalogComponent,
36
- children: [
37
- {
38
- path: ':city?',
39
- name: buildName('City') || 'City',
40
- component: catalogComponent,
41
- },
42
- ],
43
- },
44
- ],
45
- },
46
- ],
47
- },
48
- ];
49
- }
50
-
51
- export function getRoutes(options = {}) {
52
- const route = options.route || 'Home';
53
- const routes = [];
54
-
55
- routes.push({
56
- parentName: route,
57
- config: {
58
- basePath: options.basePath || 'marketplace',
59
- routes: buildMarketplaceTree(options),
60
- },
61
- });
62
-
63
- return routes;
64
- }
65
-
66
- export default { getRoutes };
@@ -1,363 +0,0 @@
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>
153
- </template>
154
-
155
-
156
- <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) {
235
- // Загружаем новые значения из параметров маршрута в состояние
236
- let newState = {
237
- country: denormalizeUrlParam(route.params.country),
238
- state: denormalizeUrlParam(route.params.state),
239
- city: denormalizeUrlParam(route.params.city),
240
- };
241
-
242
- // Обновляем глобальное состояние
243
- localPosition.value = newState;
244
- }
245
-
246
- if (route.query) {
247
- const query = route.query;
248
-
249
- marketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];
250
- marketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];
251
- marketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];
252
- }
253
-
254
- if (route.query.sortParam) marketplace.state.sort.param = route.query.sortParam
255
- if (route.query.sortOrder) marketplace.state.sort.order = route.query.sortOrder
256
-
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
- };
277
-
278
- if (index !== -1) {
279
- marketplace.state.filter.options[index] = categoryOption;
280
- } else {
281
- marketplace.state.filter.options.unshift(categoryOption);
282
- }
283
- })
284
-
285
- watch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {
286
- let query = { ...route.query}
287
-
288
- query.sortParam = newSortValue.param
289
- query.sortOrder = newSortValue.order
290
-
291
- // replace the current route
292
- router.replace({ query });
293
- }, { deep: true });
294
-
295
-
296
- watch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {
297
- // Переводим фильтр в формат query
298
- const query = { ...route.query };
299
-
300
- // Удаляем старые значения фильтра из query
301
- Object.keys(oldFilterValue).forEach(key => {
302
- if (query[key]) {
303
- delete query[key];
304
- }
305
- });
306
-
307
- // Добавляем новые значения фильтра в query
308
- const newQueryValues = Object.fromEntries(
309
- Object.entries(newFilterValue)
310
- .filter(([key, value]) => Array.isArray(value) && value.length > 0)
311
- .map(([key, value]) => [key, value.join(',')])
312
- );
313
-
314
- delete query.options;
315
- Object.assign(query, newQueryValues);
316
-
317
- // Обновляем маршрут с новым query
318
- router.replace({ query });
319
- }, { deep: true })
320
-
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
- // };
331
-
332
- // // update route params
333
- // currentRoute.params = newParams;
334
-
335
- // // replace the current route
336
- // router.replace(currentRoute);
337
- // }, { deep: true });
338
-
339
- const text = {
340
- locale: 'en',
341
- messages: {
342
- en: {
343
- meta: {
344
- title: "Marketplace – Shop Our Wide Selection of Quality Weed for Delivery",
345
- 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
- }
347
- },
348
- ru: {
349
- meta: {
350
- title: "Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки",
351
- description: "Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно.",
352
- }
353
- }
354
- }
355
- }
356
-
357
- const { t } = useI18n(text)
358
- </script>
359
-
360
- <style lang="scss">
361
-
362
-
363
- </style>
@@ -1,73 +0,0 @@
1
- <template>
2
- <Feed
3
- v-model:sort="marketplace.state.sort"
4
- v-model:filter="marketplace.state.filter"
5
- :search="true"
6
- :showLoadMore="false"
7
- :states="{
8
- empty: {
9
- title: 'No Shops Found',
10
- description: 'Currently, there are no shops.'
11
- },
12
- }"
13
- :store="{
14
- read: (options) => organization.actions.read(options)
15
- }"
16
- :options="{
17
- country: route.params.country,
18
- state: route.params.state,
19
- city: route.params.city,
20
- categories: route.query.categories,
21
- prices: route.query.prices,
22
- delivery: route.query.delivery,
23
- location: core.state.position?.location,
24
- lookup: ['products','spots'],
25
- contain: ['products'],
26
- }"
27
- v-slot="{
28
- items
29
- }"
30
- class="rows-1 gap-thin"
31
- >
32
- <CardOrganization
33
- v-for="organization in items"
34
- :key="organization._id"
35
- :organization="organization"
36
- :showRating="true"
37
- :showFollowers="false"
38
- :showProducts="true"
39
- class="bg-light w-100 o-hidden radius-medium pd-small "
40
- />
41
- </Feed>
42
- </template>
43
-
44
- <script setup>
45
- import { computed,reactive,ref, onMounted,watch } from 'vue'
46
- import { useRoute } from 'vue-router'
47
-
48
- import Feed from '@martyrs/src/components/Feed/Feed.vue'
49
-
50
- import * as organization from '@martyrs/src/modules/organizations/store/organizations.js'
51
- import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
52
- const core = useStore()
53
-
54
- import CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'
55
-
56
- import * as marketplace from '../../store/marketplace';
57
-
58
- const route = useRoute()
59
-
60
- onMounted(() => {
61
- // Добавление Google Analytics event на открытие маркетплейса
62
- if (typeof gtag === 'function') {
63
- gtag('event', 'view_marketplace', {
64
- location: core.state.position?.location || 'unknown',
65
- page_path: window.location.pathname,
66
- marketplace_id: route.params.id || 'main',
67
- });
68
- }
69
- })
70
- </script>
71
-
72
- <style lang="scss">
73
- </style>