@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,63 +0,0 @@
1
- function buildMarketplaceTree(options = {}) {
2
- const layoutComponent = options.layoutComponent || (() => import(
3
- /* webpackChunkName: 'marketplace-layout' */
4
- "./views/components/layouts/Marketplace.vue.js"
5
- ));
6
- const catalogComponent = options.catalogComponent || (() => import(
7
- /* webpackChunkName: 'marketplace-catalog' */
8
- "./views/components/pages/Catalog.vue.js"
9
- ));
10
- const buildName = (suffix) => {
11
- const prefix = options.routeNamePrefix || "";
12
- return suffix ? `${prefix}${suffix}` : prefix || void 0;
13
- };
14
- return [
15
- {
16
- path: "",
17
- name: buildName("Marketplace") || "Marketplace",
18
- component: layoutComponent,
19
- meta: {
20
- title: {
21
- en: "Marketplace",
22
- ru: "Маркетплейс"
23
- }
24
- },
25
- children: [
26
- {
27
- path: ":country?",
28
- component: catalogComponent,
29
- children: [
30
- {
31
- path: ":state?",
32
- name: buildName("State") || "State",
33
- component: catalogComponent,
34
- children: [
35
- {
36
- path: ":city?",
37
- name: buildName("City") || "City",
38
- component: catalogComponent
39
- }
40
- ]
41
- }
42
- ]
43
- }
44
- ]
45
- }
46
- ];
47
- }
48
- function getRoutes(options = {}) {
49
- const route = options.route || "Home";
50
- const routes = [];
51
- routes.push({
52
- parentName: route,
53
- config: {
54
- basePath: options.basePath || "marketplace",
55
- routes: buildMarketplaceTree(options)
56
- }
57
- });
58
- return routes;
59
- }
60
- export {
61
- getRoutes
62
- };
63
- //# sourceMappingURL=marketplace.router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketplace.router.js","sources":["../../../../../src/modules/marketplace/marketplace.router.js"],"sourcesContent":["function buildMarketplaceTree(options = {}) {\n const layoutComponent = options.layoutComponent || (() => import(\n /* webpackChunkName: 'marketplace-layout' */\n './views/components/layouts/Marketplace.vue'\n ));\n const catalogComponent = options.catalogComponent || (() => import(\n /* webpackChunkName: 'marketplace-catalog' */\n './views/components/pages/Catalog.vue'\n ));\n\n const buildName = (suffix) => {\n const prefix = options.routeNamePrefix || '';\n return suffix ? `${prefix}${suffix}` : prefix || undefined;\n };\n\n return [\n {\n path: '',\n name: buildName('Marketplace') || 'Marketplace',\n component: layoutComponent,\n meta: {\n title: {\n en: 'Marketplace',\n ru: 'Маркетплейс',\n },\n },\n children: [\n {\n path: ':country?',\n component: catalogComponent,\n children: [\n {\n path: ':state?',\n name: buildName('State') || 'State',\n component: catalogComponent,\n children: [\n {\n path: ':city?',\n name: buildName('City') || 'City',\n component: catalogComponent,\n },\n ],\n },\n ],\n },\n ],\n },\n ];\n}\n\nexport function getRoutes(options = {}) {\n const route = options.route || 'Home';\n const routes = [];\n\n routes.push({\n parentName: route,\n config: {\n basePath: options.basePath || 'marketplace',\n routes: buildMarketplaceTree(options),\n },\n });\n\n return routes;\n}\n\nexport default { getRoutes };\n"],"names":[],"mappings":"AAAA,SAAS,qBAAqB,UAAU,IAAI;AAC1C,QAAM,kBAAkB,QAAQ,oBAAoB,MAAM;AAAA;AAAA,IAExD;AAAA,EACJ;AACE,QAAM,mBAAmB,QAAQ,qBAAqB,MAAM;AAAA;AAAA,IAE1D;AAAA,EACJ;AAEE,QAAM,YAAY,CAAC,WAAW;AAC5B,UAAM,SAAS,QAAQ,mBAAmB;AAC1C,WAAO,SAAS,GAAG,MAAM,GAAG,MAAM,KAAK,UAAU;AAAA,EACnD;AAEA,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM,UAAU,aAAa,KAAK;AAAA,MAClC,WAAW;AAAA,MACX,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACd;AAAA,MACA;AAAA,MACM,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,WAAW;AAAA,UACX,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,MAAM,UAAU,OAAO,KAAK;AAAA,cAC5B,WAAW;AAAA,cACX,UAAU;AAAA,gBACR;AAAA,kBACE,MAAM;AAAA,kBACN,MAAM,UAAU,MAAM,KAAK;AAAA,kBAC3B,WAAW;AAAA,gBAC7B;AAAA,cACA;AAAA,YACA;AAAA,UACA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA;AAEO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,SAAS,CAAA;AAEf,SAAO,KAAK;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,UAAU,QAAQ,YAAY;AAAA,MAC9B,QAAQ,qBAAqB,OAAO;AAAA,IAC1C;AAAA,EACA,CAAG;AAED,SAAO;AACT;"}
@@ -1,326 +0,0 @@
1
- import { ref, onMounted, watch, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, Fragment, renderList, withCtx, createBlock, normalizeClass, createTextVNode, resolveDynamicComponent } from "vue";
2
- import { useRoute, useRouter } from "vue-router";
3
- import { useI18n } from "vue-i18n";
4
- import _sfc_main$1 from "../../../../../components/Spoiler/Spoiler.vue.js";
5
- import Field from "../../../../../components/Field/Field.vue.js";
6
- import _sfc_main$2 from "../../../../../components/Checkbox/Checkbox.vue.js";
7
- import IconChevronBottom from "../../../../icons/navigation/IconChevronBottom.vue.js";
8
- import { useStore } from "../../../../core/views/store/core.store.js";
9
- import { actions } from "../../../../products/store/categories.js";
10
- import { state } from "../../store/marketplace.js";
11
- const _hoisted_1 = { class: "cols-2-1_3 z-index-3 pos-relative radius-big" };
12
- const _hoisted_2 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
13
- const _hoisted_3 = { class: "w-100 o-y-scroll h-100" };
14
- const _hoisted_4 = {
15
- key: 0,
16
- class: "mn-b-medium"
17
- };
18
- const _hoisted_5 = { class: "mn-b-small" };
19
- const _hoisted_6 = { class: "gap-micro" };
20
- const _hoisted_7 = ["onClick"];
21
- const _hoisted_8 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
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" };
34
- const _sfc_main = {
35
- __name: "Marketplace",
36
- setup(__props) {
37
- const core = useStore();
38
- const route = useRoute();
39
- const router = useRouter();
40
- const localPosition = ref({
41
- city: null,
42
- state: null,
43
- country: null
44
- });
45
- ref(null);
46
- const currentCategories = ref([]);
47
- const searchLocation = ref("");
48
- const selectedLocation = ref("All");
49
- const locationOptions = ref(["All", "Phuket", "Bangkok", "Chiang Mai", "Pattaya"]);
50
- const deliveryOptions = ref([
51
- { label: "Pickup", value: "pickup" },
52
- { label: "Delivery", value: "delivery" },
53
- { label: "Dine-in", value: "dinein" }
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
- }
75
- if (route.params) {
76
- let newState = {
77
- country: denormalizeUrlParam(route.params.country),
78
- state: denormalizeUrlParam(route.params.state),
79
- city: denormalizeUrlParam(route.params.city)
80
- };
81
- localPosition.value = newState;
82
- }
83
- if (route.query) {
84
- const query = route.query;
85
- state.filter.selected.categories = query.categories ? query.categories.split(",") : [];
86
- state.filter.selected.prices = query.prices ? query.prices.split(",") : [];
87
- state.filter.selected.delivery = query.delivery ? query.delivery.split(",") : [];
88
- }
89
- if (route.query.sortParam) state.sort.param = route.query.sortParam;
90
- if (route.query.sortOrder) state.sort.order = route.query.sortOrder;
91
- onMounted(async () => {
92
- let options = {
93
- status: "published",
94
- rootOnly: true
95
- };
96
- let categoriesFilter = await actions.read(options);
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
- });
113
- watch(() => state.sort, (newSortValue, oldSortValue) => {
114
- let query = { ...route.query };
115
- query.sortParam = newSortValue.param;
116
- query.sortOrder = newSortValue.order;
117
- router.replace({ query });
118
- }, { deep: true });
119
- watch(() => state.filter.selected, (newFilterValue, oldFilterValue) => {
120
- const query = { ...route.query };
121
- Object.keys(oldFilterValue).forEach((key) => {
122
- if (query[key]) {
123
- delete query[key];
124
- }
125
- });
126
- const newQueryValues = Object.fromEntries(
127
- Object.entries(newFilterValue).filter(([key, value]) => Array.isArray(value) && value.length > 0).map(([key, value]) => [key, value.join(",")])
128
- );
129
- delete query.options;
130
- Object.assign(query, newQueryValues);
131
- router.replace({ query });
132
- }, { deep: true });
133
- const text = {
134
- locale: "en",
135
- messages: {
136
- en: {
137
- meta: {
138
- title: "Marketplace – Shop Our Wide Selection of Quality Weed for Delivery",
139
- 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."
140
- }
141
- },
142
- ru: {
143
- meta: {
144
- title: "Маркетплейс – Выбирайте из нашего ассортимента качественной травки для доставки",
145
- description: "Маркетплейс – Изучите наши продукты высокого качества и выбирайте из различных вариантов доставки. Закажите сейчас и получите свои любимые сорта на дом. Безопасно, быстро и надежно."
146
- }
147
- }
148
- }
149
- };
150
- const { t } = useI18n(text);
151
- return (_ctx, _cache) => {
152
- const _component_router_view = resolveComponent("router-view");
153
- return openBlock(), createElementBlock("div", _hoisted_1, [
154
- createElementVNode("div", _hoisted_2, [
155
- createElementVNode("div", _hoisted_3, [
156
- currentCategories.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
157
- createElementVNode("h4", _hoisted_5, toDisplayString(unref(route).params.categoryPath ? "Subcategories" : "Categories"), 1),
158
- createElementVNode("div", _hoisted_6, [
159
- (openBlock(true), createElementBlock(Fragment, null, renderList(currentCategories.value, (category) => {
160
- return openBlock(), createElementBlock("div", {
161
- key: category._id,
162
- onClick: ($event) => selectCategory(category),
163
- class: "pd-small radius-small cursor-pointer hover-bg-light transition-all"
164
- }, toDisplayString(category.name), 9, _hoisted_7);
165
- }), 128))
166
- ])
167
- ])) : createCommentVNode("", true),
168
- createVNode(_sfc_main$1, {
169
- class: "o-hidden mn-b-medium",
170
- status: true
171
- }, {
172
- header: withCtx(({ isOpen }) => [
173
- createElementVNode("div", _hoisted_8, [
174
- _cache[6] || (_cache[6] = createElementVNode("h4", { class: "w-100" }, "Location", -1)),
175
- createElementVNode("div", _hoisted_9, [
176
- createVNode(IconChevronBottom, {
177
- class: normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-medium"]),
178
- fill: "rgb(var(--black))"
179
- }, null, 8, ["class"])
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"]);
234
- }), 128))
235
- ])
236
- ]),
237
- _: 1
238
- }),
239
- createVNode(_sfc_main$1, {
240
- class: "o-hidden mn-b-medium",
241
- status: true
242
- }, {
243
- header: withCtx(({ isOpen }) => [
244
- createElementVNode("div", _hoisted_14, [
245
- _cache[8] || (_cache[8] = createElementVNode("h4", { class: "w-100" }, "Payment Options", -1)),
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"))
304
- ])
305
- ]),
306
- createElementVNode("div", _hoisted_20, [
307
- createVNode(_component_router_view, null, {
308
- default: withCtx(({ Component, route: route2 }) => [
309
- (openBlock(), createBlock(resolveDynamicComponent(Component), {
310
- ref: "page",
311
- key: route2,
312
- localPosition: localPosition.value
313
- }, null, 8, ["localPosition"]))
314
- ]),
315
- _: 1
316
- })
317
- ])
318
- ])
319
- ]);
320
- };
321
- }
322
- };
323
- export {
324
- _sfc_main as default
325
- };
326
- //# sourceMappingURL=Marketplace.vue.js.map
@@ -1 +0,0 @@
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,74 +0,0 @@
1
- import { onMounted, createBlock, openBlock, unref, withCtx, createElementBlock, Fragment, renderList } from "vue";
2
- import { useRoute } from "vue-router";
3
- import _sfc_main$1 from "../../../../../components/Feed/Feed.vue.js";
4
- import { actions } from "../../../../organizations/store/organizations.js";
5
- import { useStore } from "../../../../core/views/store/core.store.js";
6
- import _sfc_main$2 from "../../../../organizations/components/blocks/CardOrganization.vue.js";
7
- import { state } from "../../store/marketplace.js";
8
- const _sfc_main = {
9
- __name: "Catalog",
10
- setup(__props) {
11
- const core = useStore();
12
- const route = useRoute();
13
- onMounted(() => {
14
- if (typeof gtag === "function") {
15
- gtag("event", "view_marketplace", {
16
- location: core.state.position?.location || "unknown",
17
- page_path: window.location.pathname,
18
- marketplace_id: route.params.id || "main"
19
- });
20
- }
21
- });
22
- return (_ctx, _cache) => {
23
- return openBlock(), createBlock(_sfc_main$1, {
24
- sort: state.sort,
25
- "onUpdate:sort": _cache[0] || (_cache[0] = ($event) => state.sort = $event),
26
- filter: state.filter,
27
- "onUpdate:filter": _cache[1] || (_cache[1] = ($event) => state.filter = $event),
28
- search: true,
29
- showLoadMore: false,
30
- states: {
31
- empty: {
32
- title: "No Shops Found",
33
- description: "Currently, there are no shops."
34
- }
35
- },
36
- store: {
37
- read: (options) => actions.read(options)
38
- },
39
- options: {
40
- country: unref(route).params.country,
41
- state: unref(route).params.state,
42
- city: unref(route).params.city,
43
- categories: unref(route).query.categories,
44
- prices: unref(route).query.prices,
45
- delivery: unref(route).query.delivery,
46
- location: unref(core).state.position?.location,
47
- lookup: ["products", "spots"],
48
- contain: ["products"]
49
- },
50
- class: "rows-1 gap-thin"
51
- }, {
52
- default: withCtx(({
53
- items
54
- }) => [
55
- (openBlock(true), createElementBlock(Fragment, null, renderList(items, (organization) => {
56
- return openBlock(), createBlock(_sfc_main$2, {
57
- key: organization._id,
58
- organization,
59
- showRating: true,
60
- showFollowers: false,
61
- showProducts: true,
62
- class: "bg-light w-100 o-hidden radius-medium pd-small"
63
- }, null, 8, ["organization"]);
64
- }), 128))
65
- ]),
66
- _: 1
67
- }, 8, ["sort", "filter", "store", "options"]);
68
- };
69
- }
70
- };
71
- export {
72
- _sfc_main as default
73
- };
74
- //# sourceMappingURL=Catalog.vue.js.map
@@ -1 +0,0 @@
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) => organization.actions.read(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: 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 core = useStore()\n\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport * as marketplace from '../../store/marketplace';\n\t\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: 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,OAAO,SAAQ;AAMrB,UAAM,QAAQ,SAAQ;AAEtB,cAAU,MAAM;AAEf,UAAI,OAAO,SAAS,YAAY;AAC/B,aAAK,SAAS,oBAAoB;AAAA,UACjC,UAAU,KAAK,MAAM,UAAU,YAAY;AAAA,UAC3C,WAAW,OAAO,SAAS;AAAA,UAC3B,gBAAgB,MAAM,OAAO,MAAM;AAAA,QACvC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,81 +0,0 @@
1
- <!-- filters/FilterPrice.vue -->
2
- <template>
3
- <div class="filter-price">
4
- <div class="flex gap-thin align-center">
5
- <Field
6
- type="number"
7
- v-model:field="localValue.min"
8
- placeholder="Min"
9
- class="flex-1 bg-light pd-medium radius-small"
10
- @blur="updateValue"
11
- />
12
- <span class="t-small">—</span>
13
- <Field
14
- type="number"
15
- v-model:field="localValue.max"
16
- placeholder="Max"
17
- class="flex-1 bg-light pd-medium radius-small"
18
- @blur="updateValue"
19
- />
20
- </div>
21
-
22
- <div v-if="config?.presets" class="mt-thin">
23
- <button
24
- v-for="preset in config.presets"
25
- :key="preset.label"
26
- @click="applyPreset(preset)"
27
- class="btn btn-small mr-thin mb-thin"
28
- :class="isPresetActive(preset) ? 'btn-primary' : 'btn-secondary'"
29
- >
30
- {{ preset.label }}
31
- </button>
32
- </div>
33
- </div>
34
- </template>
35
-
36
- <script setup>
37
- import { ref, watch } from 'vue'
38
- import Field from '@martyrs/src/components/Field/Field.vue';
39
-
40
- const props = defineProps({
41
- config: {
42
- type: Object,
43
- default: () => ({})
44
- }
45
- })
46
-
47
- const model = defineModel({
48
- type: Object,
49
- default: () => ({ min: null, max: null })
50
- })
51
-
52
- const localValue = ref({
53
- min: model.value?.min || null,
54
- max: model.value?.max || null
55
- })
56
-
57
- watch(model, (val) => {
58
- if (val) {
59
- localValue.value = {
60
- min: val.min || null,
61
- max: val.max || null
62
- }
63
- }
64
- }, { deep: true })
65
-
66
- const updateValue = () => {
67
- model.value = { ...localValue.value }
68
- }
69
-
70
- const applyPreset = (preset) => {
71
- localValue.value = {
72
- min: preset.min || null,
73
- max: preset.max || null
74
- }
75
- updateValue()
76
- }
77
-
78
- const isPresetActive = (preset) => {
79
- return localValue.value.min === preset.min && localValue.value.max === preset.max
80
- }
81
- </script>