@ozdao/prometheus-framework 0.2.203 → 0.2.205

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 (164) hide show
  1. package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs +24 -15
  2. package/dist/prometheus-framework/src/components/Feed/Feed.vue.cjs.map +1 -1
  3. package/dist/prometheus-framework/src/components/Feed/Feed.vue.js +24 -15
  4. package/dist/prometheus-framework/src/components/Feed/Feed.vue.js.map +1 -1
  5. package/dist/prometheus-framework/src/components/Tab/Tab.vue.cjs +51 -1
  6. package/dist/prometheus-framework/src/components/Tab/Tab.vue.cjs.map +1 -0
  7. package/dist/prometheus-framework/src/components/Tab/Tab.vue.js +37 -22
  8. package/dist/prometheus-framework/src/components/Tab/Tab.vue.js.map +1 -0
  9. package/dist/prometheus-framework/src/components/Tab/Tab.vue2.cjs +8 -6
  10. package/dist/prometheus-framework/src/components/Tab/Tab.vue2.cjs.map +1 -1
  11. package/dist/prometheus-framework/src/components/Tab/Tab.vue2.js +8 -6
  12. package/dist/prometheus-framework/src/components/Tab/Tab.vue2.js.map +1 -1
  13. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +6 -5
  14. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.cjs.map +1 -1
  15. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.js +6 -5
  16. package/dist/prometheus-framework/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  17. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.cjs +6 -5
  18. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.cjs.map +1 -1
  19. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.js +6 -5
  20. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  21. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.cjs +4 -3
  22. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.cjs.map +1 -1
  23. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.js +4 -3
  24. package/dist/prometheus-framework/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  25. package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -1
  26. package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -1
  27. package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.cjs +1 -1
  28. package/dist/prometheus-framework/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
  29. package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  30. package/dist/prometheus-framework/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  31. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs +1 -1
  32. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js +1 -1
  33. package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.cjs +1 -1
  34. package/dist/prometheus-framework/src/modules/community/components/pages/Community.vue.js +1 -1
  35. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  36. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  37. package/dist/prometheus-framework/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
  38. package/dist/prometheus-framework/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
  39. package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  40. package/dist/prometheus-framework/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  41. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  42. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  43. package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  44. package/dist/prometheus-framework/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  45. package/dist/prometheus-framework/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  46. package/dist/prometheus-framework/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  47. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
  48. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  49. package/dist/prometheus-framework/src/modules/globals/globals.client.cjs +4 -1
  50. package/dist/prometheus-framework/src/modules/globals/globals.client.cjs.map +1 -1
  51. package/dist/prometheus-framework/src/modules/globals/globals.client.js +4 -1
  52. package/dist/prometheus-framework/src/modules/globals/globals.client.js.map +1 -1
  53. package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.cjs +29 -29
  54. package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  55. package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js +30 -30
  56. package/dist/prometheus-framework/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  57. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs +109 -102
  58. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
  59. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js +110 -103
  60. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
  61. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.cjs +85 -0
  62. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -0
  63. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.js +85 -0
  64. package/dist/prometheus-framework/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -0
  65. package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.cjs +1 -1
  66. package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.js +1 -1
  67. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  68. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  69. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
  70. package/dist/prometheus-framework/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  71. package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.cjs +3 -3
  72. package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  73. package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.js +3 -3
  74. package/dist/prometheus-framework/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  75. package/dist/prometheus-framework/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +1 -1
  76. package/dist/prometheus-framework/src/modules/orders/components/sections/FormAddCustomer.vue.js +1 -1
  77. package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +1 -1
  78. package/dist/prometheus-framework/src/modules/orders/components/sections/FormCustomerDetails.vue.js +1 -1
  79. package/dist/prometheus-framework/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  80. package/dist/prometheus-framework/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  81. package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  82. package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  83. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  84. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  85. package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
  86. package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.js +2 -2
  87. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs +4 -5
  88. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  89. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js +4 -5
  90. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  91. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  92. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  93. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  94. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  95. package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.cjs +90 -96
  96. package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.cjs.map +1 -1
  97. package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.js +91 -97
  98. package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.js.map +1 -1
  99. package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  100. package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  101. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  102. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  103. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.cjs +3 -3
  104. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  105. package/dist/prometheus-framework/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  106. package/dist/prometheus-framework/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  107. package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
  108. package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  109. package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs +1 -1
  110. package/dist/prometheus-framework/src/modules/products/components/blocks/ImagesThumbnails.vue.js +1 -1
  111. package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.cjs +1 -1
  112. package/dist/prometheus-framework/src/modules/products/components/pages/CategoryEdit.vue.js +1 -1
  113. package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.cjs +2 -2
  114. package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.js +2 -2
  115. package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  116. package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  117. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.cjs +72 -25
  118. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  119. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.js +81 -34
  120. package/dist/prometheus-framework/src/modules/products/components/pages/Products.vue.js.map +1 -1
  121. package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.cjs +1 -1
  122. package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.js +1 -1
  123. package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
  124. package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
  125. package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  126. package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  127. package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs +7 -2
  128. package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
  129. package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js +7 -2
  130. package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  131. package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.cjs +2 -2
  132. package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  133. package/dist/prometheus-framework/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
  134. package/dist/prometheus-framework/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
  135. package/dist/prometheus-framework/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  136. package/dist/prometheus-framework/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  137. package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  138. package/dist/prometheus-framework/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  139. package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.cjs +1 -1
  140. package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.js +1 -1
  141. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  142. package/dist/prometheus-framework/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  143. package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
  144. package/dist/prometheus-framework/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
  145. package/dist/prometheus-framework.cjs.js +14 -14
  146. package/dist/prometheus-framework.es.js +2830 -2823
  147. package/dist/style.css +89 -21
  148. package/package.json +1 -1
  149. package/src/components/Feed/Feed.vue +23 -10
  150. package/src/components/Tab/Tab.vue +10 -7
  151. package/src/modules/auth/views/components/pages/ResetPassword.vue +5 -4
  152. package/src/modules/auth/views/components/pages/SignIn.vue +5 -3
  153. package/src/modules/auth/views/components/pages/SignUp.vue +3 -2
  154. package/src/modules/globals/globals.client.js +5 -2
  155. package/src/modules/globals/views/components/layouts/Client.vue +100 -21
  156. package/src/modules/globals/views/components/partials/Header.vue +18 -29
  157. package/src/modules/globals/views/components/partials/Sidebar.vue +0 -2
  158. package/src/modules/marketplace/components/layouts/Marketplace.vue +16 -9
  159. package/src/modules/orders/components/partials/ShopCart.vue +3 -3
  160. package/src/modules/organizations/components/pages/Organization.vue +9 -6
  161. package/src/modules/organizations/components/sections/DetailsTab.vue +132 -133
  162. package/src/modules/products/components/pages/Products.vue +89 -10
  163. package/src/modules/products/components/sections/FilterProducts.vue +1 -1
  164. package/src/modules/products/components/sections/SectionProduct.vue +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <header \n v-if=\"route.name !== 'Organization'\"\n class=\"mn-b-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n @click=\"$router.push({\n name: 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <Tab \n v-if=\"route.name !== 'Organization'\"\n v-model:selected=\"tabProducts\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Published', value: 'published' },\n { name: 'Unpublished', value: 'unpublished' }, \n { name: 'Archivied', value: 'archivied' } \n ]\"\n class=\"mn-b-small o-hidden h5 radius-big bg-light\"\n />\n\n <div class=\"cols-2-1_3 bg-light pd-thin radius-big gap-thin\">\n\n <FilterProducts\n\n /> \n\n <div>\n <BlockSearch \n @search=\"updateSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-white mn-b-thin\"\n />\n <Feed\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 15,\n organization: route.params._id,\n categories: route.query.categories,\n prices: route.query.prices,\n delivery: route.query.delivery,\n search: route.query.search,\n ...(tabProducts !== 'all' && { status: tabProducts })\n // user: user\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 gap-thin\"\n >\n <CardProduct\n v-for=\"product in items\"\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n class=\"h-max\"\n @click.capture=\"$router.push({\n name: 'Product Organization', \n params: { \n _id: route.params._id, \n product: product._id \n } \n })\" \n />\n </Feed>\n </div>\n </div>\n</div>\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { computed, watch, onMounted, ref } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@pf/src/components/Tab/Tab.vue'\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@pf/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\n\n import CardProduct from '@pf/src/modules/products/components/blocks/CardProduct.vue'\n\n // Accessing router and store\n import * as auth from '@pf/src/modules/auth/views/store/auth';\n import * as products from '@pf/src/modules/products/store/products';\n\n const route = useRoute()\n const router = useRouter()\n\n // Tab logic\n const tabProducts = ref(route.query.tabProducts ? route.query.tabProducts : 'all')\n\n route.query.tabProducts = tabProducts.value\n\n watch(tabProducts, (newValue) => {\n router.replace({ query: { ...route.query, tabProducts: newValue } });\n });\n \n function updateSearch(search) {\n let query = { ...route.query}\n \n query.search = search\n \n router.push({ query });\n }\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","ref","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyGE,UAAM,QAAQA,UAAAA,SAAU;AACxB,UAAM,SAASC,UAAAA,UAAW;AAG1B,UAAM,cAAcC,QAAI,MAAM,MAAM,cAAc,MAAM,MAAM,cAAc,KAAK;AAEjF,UAAM,MAAM,cAAc,YAAY;AAEtCC,cAAM,aAAa,CAAC,aAAa;AAC/B,aAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,aAAa,SAAU,EAAA,CAAE;AAAA,IACvE,CAAG;AAED,aAAS,aAAa,QAAQ;AAC5B,UAAI,QAAQ,EAAE,GAAG,MAAM,MAAK;AAE5B,YAAM,SAAS;AAEf,aAAO,KAAK,EAAE,MAAK,CAAE;AAAA,IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div>\n <header \n v-if=\"route.name !== 'Organization'\"\n class=\"mn-b-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n @click=\"$router.push({\n name: 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <Tab \n v-if=\"route.name !== 'Organization'\"\n v-model:selected=\"tabProducts\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Published', value: 'published' },\n { name: 'Unpublished', value: 'unpublished' }, \n { name: 'Archivied', value: 'archivied' } \n ]\"\n class=\"mn-b-small o-hidden h5 radius-big bg-light\"\n />\n\n <div class=\"cols-2-1_3 bg-light pd-thin radius-big gap-thin\">\n\n <BlockFilter\n v-model:filter=\"marketplace.state.filter\"\n :options=\"marketplace.state.filter.options\"\n class=\"h-100 w-100 desktop-only\"\n />\n\n\n <div class=\"rows-1\">\n <!-- <BlockSearch \n @search=\"updateSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-white mn-b-thin\"\n /> -->\n <Feed\n v-model:filter=\"marketplace.state.filter\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 15,\n organization: route.params._id,\n categories: route.query.categories,\n prices: route.query.prices,\n delivery: route.query.delivery,\n // search: route.query.search,\n ...(tabProducts !== 'all' && { status: tabProducts })\n // user: user\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 gap-thin\"\n >\n <CardProduct\n v-for=\"product in items\"\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n class=\"h-max\"\n @click.capture=\"$router.push({\n name: 'Product Organization', \n params: { \n _id: route.params._id, \n product: product._id \n } \n })\" \n />\n </Feed>\n </div>\n </div>\n</div>\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { computed, watch, onMounted, ref } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@pf/src/components/Tab/Tab.vue'\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@pf/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import BlockFilter from '@pf/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\n import CardProduct from '@pf/src/modules/products/components/blocks/CardProduct.vue'\n\n // Accessing router and store\n import * as auth from '@pf/src/modules/auth/views/store/auth';\n import * as products from '@pf/src/modules/products/store/products';\n import * as marketplace from '@pf/src/modules/marketplace/store/marketplace';\n import * as categories from '@pf/src/modules/products/store/categories';\n\n const route = useRoute()\n const router = useRouter()\n\n // Tab logic\n const tabProducts = ref(route.query.tabProducts ? route.query.tabProducts : 'all')\n\n if (route.name !== 'Organization') route.query.tabProducts = tabProducts.value\n \n if (route.query) {\n const query = route.query;\n\n marketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n marketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n marketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n }\n\n\n watch(tabProducts, (newValue) => {\n if (route.name !== 'Organization') router.replace({ query: { ...route.query, tabProducts: newValue } });\n });\n\n onMounted(async () => {\n let categoriesFilter = await categories.actions.fetchCategories();\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category.url,\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 })\n\n watch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n let query = { ...route.query}\n \n query.sortParam = newSortValue.param\n query.sortOrder = newSortValue.order\n \n // replace the current route\n router.replace({ query });\n }, { deep: true });\n\n\n watch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n\n delete query.options;\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n\n\n\n \n function updateSearch(search) {\n let query = { ...route.query}\n \n query.search = search\n \n router.replace({ query });\n }\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","ref","marketplace.state","watch","onMounted","categories.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiHE,UAAM,QAAQA,UAAAA,SAAU;AACxB,UAAM,SAASC,UAAAA,UAAW;AAG1B,UAAM,cAAcC,QAAI,MAAM,MAAM,cAAc,MAAM,MAAM,cAAc,KAAK;AAEjF,QAAI,MAAM,SAAS,eAAgB,OAAM,MAAM,cAAc,YAAY;AAEzE,QAAI,MAAM,OAAO;AACf,YAAM,QAAQ,MAAM;AAEpBC,kBAAAA,MAAkB,OAAO,SAAS,aAAa,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAA;AAChGA,kBAAAA,MAAkB,OAAO,SAAS,SAAS,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAA;AACpFA,kBAAAA,MAAkB,OAAO,SAAS,WAAW,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAA;AAAA,IAC3F;AAGDC,cAAM,aAAa,CAAC,aAAa;AAC/B,UAAI,MAAM,SAAS,eAAgB,QAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,aAAa,SAAQ,EAAI,CAAA;AAAA,IAC1G,CAAG;AAEDC,QAAAA,UAAU,YAAY;AACpB,UAAI,mBAAmB,MAAMC,mBAAmB;AAEhD,yBAAmB,iBAAiB,IAAI,eAAa;AAAA,QACnD,OAAO,SAAS;AAAA,QAChB,OAAO,SAAS;AAAA,MACjB,EAAC;AAEF,YAAM,QAAQH,kBAAkB,OAAO,QAAQ,UAAU,YAAU,OAAO,UAAU,YAAY;AAEhG,YAAM,iBAAiB;AAAA,QACrB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,MACf;AAEI,UAAI,UAAU,IAAI;AACdA,oBAAAA,MAAkB,OAAO,QAAQ,KAAK,IAAI;AAAA,MAClD,OAAW;AACHA,oBAAAA,MAAkB,OAAO,QAAQ,QAAQ,cAAc;AAAA,MAC1D;AAAA,IACL,CAAG;AAEDC,QAAAA,MAAM,MAAMD,YAAiB,MAAC,MAAM,CAAC,cAAc,iBAAiB;AAClE,UAAI,QAAQ,EAAE,GAAG,MAAM,MAAK;AAE5B,YAAM,YAAY,aAAa;AAC/B,YAAM,YAAY,aAAa;AAG/B,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,KAAI,CAAE;AAGjBC,QAAK,MAAC,MAAMD,YAAAA,MAAkB,OAAO,UAAU,CAAC,gBAAgB,mBAAmB;AAEjF,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACP,CAAK;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACrD;AAEI,aAAO,MAAM;AACb,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,38 +1,82 @@
1
- import { ref, watch, openBlock, createElementBlock, unref, createElementVNode, createCommentVNode, createBlock, createVNode, withCtx, Fragment, renderList } from "vue";
1
+ import { ref, watch, onMounted, openBlock, createElementBlock, unref, createElementVNode, createCommentVNode, createBlock, createVNode, withCtx, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../components/Tab/Tab.vue2.js";
4
- import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
5
- import _sfc_main$2 from "../sections/FilterProducts.vue.js";
6
- import _sfc_main$3 from "../../../globals/views/components/blocks/BlockSearch.vue.js";
7
- import _sfc_main$5 from "../blocks/CardProduct.vue.js";
8
- import { state as state$1 } from "../../../auth/views/store/auth.js";
9
- import { actions, state } from "../../store/products.js";
10
- const _hoisted_1 = { class: "pd-thin" };
11
- const _hoisted_2 = {
4
+ import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
5
+ /* empty css */
6
+ import "vue-i18n";
7
+ import { actions } from "../../store/categories.js";
8
+ import { state } from "../../../marketplace/store/marketplace.js";
9
+ /* empty css */
10
+ /* empty css */
11
+ import _sfc_main$2 from "../../../globals/views/components/blocks/BlockFilter.vue.js";
12
+ import _sfc_main$4 from "../blocks/CardProduct.vue.js";
13
+ import { state as state$2 } from "../../../auth/views/store/auth.js";
14
+ import { actions as actions$1, state as state$1 } from "../../store/products.js";
15
+ const _hoisted_1 = {
12
16
  key: 0,
13
17
  class: "mn-b-medium flex-v-center flex-nowrap flex"
14
18
  };
15
- const _hoisted_3 = /* @__PURE__ */ createElementVNode("h2", { class: "mn-r-medium" }, "Products", -1);
16
- const _hoisted_4 = { class: "cols-2-1_3 bg-light pd-thin radius-big gap-thin" };
19
+ const _hoisted_2 = /* @__PURE__ */ createElementVNode("h2", { class: "mn-r-medium" }, "Products", -1);
20
+ const _hoisted_3 = { class: "cols-2-1_3 bg-light pd-thin radius-big gap-thin" };
21
+ const _hoisted_4 = { class: "rows-1" };
17
22
  const _sfc_main = {
18
23
  __name: "Products",
19
24
  setup(__props) {
20
25
  const route = useRoute();
21
26
  const router = useRouter();
22
27
  const tabProducts = ref(route.query.tabProducts ? route.query.tabProducts : "all");
23
- route.query.tabProducts = tabProducts.value;
28
+ if (route.name !== "Organization") route.query.tabProducts = tabProducts.value;
29
+ if (route.query) {
30
+ const query = route.query;
31
+ state.filter.selected.categories = query.categories ? query.categories.split(",") : [];
32
+ state.filter.selected.prices = query.prices ? query.prices.split(",") : [];
33
+ state.filter.selected.delivery = query.delivery ? query.delivery.split(",") : [];
34
+ }
24
35
  watch(tabProducts, (newValue) => {
25
- router.replace({ query: { ...route.query, tabProducts: newValue } });
36
+ if (route.name !== "Organization") router.replace({ query: { ...route.query, tabProducts: newValue } });
37
+ });
38
+ onMounted(async () => {
39
+ let categoriesFilter = await actions.fetchCategories();
40
+ categoriesFilter = categoriesFilter.map((category) => ({
41
+ value: category.url,
42
+ label: category.name
43
+ }));
44
+ const index = state.filter.options.findIndex((option) => option.value === "categories");
45
+ const categoryOption = {
46
+ title: "Categories",
47
+ value: "categories",
48
+ options: categoriesFilter
49
+ };
50
+ if (index !== -1) {
51
+ state.filter.options[index] = categoryOption;
52
+ } else {
53
+ state.filter.options.unshift(categoryOption);
54
+ }
26
55
  });
27
- function updateSearch(search) {
56
+ watch(() => state.sort, (newSortValue, oldSortValue) => {
28
57
  let query = { ...route.query };
29
- query.search = search;
30
- router.push({ query });
31
- }
58
+ query.sortParam = newSortValue.param;
59
+ query.sortOrder = newSortValue.order;
60
+ router.replace({ query });
61
+ }, { deep: true });
62
+ watch(() => state.filter.selected, (newFilterValue, oldFilterValue) => {
63
+ const query = { ...route.query };
64
+ Object.keys(oldFilterValue).forEach((key) => {
65
+ if (query[key]) {
66
+ delete query[key];
67
+ }
68
+ });
69
+ const newQueryValues = Object.fromEntries(
70
+ Object.entries(newFilterValue).filter(([key, value]) => Array.isArray(value) && value.length > 0).map(([key, value]) => [key, value.join(",")])
71
+ );
72
+ delete query.options;
73
+ Object.assign(query, newQueryValues);
74
+ router.replace({ query });
75
+ }, { deep: true });
32
76
  return (_ctx, _cache) => {
33
- return openBlock(), createElementBlock("div", _hoisted_1, [
34
- unref(route).name !== "Organization" ? (openBlock(), createElementBlock("header", _hoisted_2, [
35
- _hoisted_3,
77
+ return openBlock(), createElementBlock("div", null, [
78
+ unref(route).name !== "Organization" ? (openBlock(), createElementBlock("header", _hoisted_1, [
79
+ _hoisted_2,
36
80
  createElementVNode("button", {
37
81
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({
38
82
  name: "ProductAdd"
@@ -52,15 +96,18 @@ const _sfc_main = {
52
96
  ],
53
97
  class: "mn-b-small o-hidden h5 radius-big bg-light"
54
98
  }, null, 8, ["selected"])) : createCommentVNode("", true),
55
- createElementVNode("div", _hoisted_4, [
56
- createVNode(_sfc_main$2),
57
- createElementVNode("div", null, [
99
+ createElementVNode("div", _hoisted_3, [
100
+ createVNode(_sfc_main$2, {
101
+ filter: state.filter,
102
+ "onUpdate:filter": _cache[2] || (_cache[2] = ($event) => state.filter = $event),
103
+ options: state.filter.options,
104
+ class: "h-100 w-100 desktop-only"
105
+ }, null, 8, ["filter", "options"]),
106
+ createElementVNode("div", _hoisted_4, [
58
107
  createVNode(_sfc_main$3, {
59
- onSearch: updateSearch,
60
- placeholder: "Enter product name",
61
- class: "bg-white mn-b-thin"
62
- }),
63
- createVNode(_sfc_main$4, {
108
+ filter: state.filter,
109
+ "onUpdate:filter": _cache[3] || (_cache[3] = ($event) => state.filter = $event),
110
+ search: true,
64
111
  states: {
65
112
  empty: {
66
113
  title: "No Products Found",
@@ -68,8 +115,8 @@ const _sfc_main = {
68
115
  }
69
116
  },
70
117
  store: {
71
- read: (options) => actions.read(options),
72
- state
118
+ read: (options) => actions$1.read(options),
119
+ state: state$1
73
120
  },
74
121
  options: {
75
122
  limit: 15,
@@ -77,7 +124,7 @@ const _sfc_main = {
77
124
  categories: unref(route).query.categories,
78
125
  prices: unref(route).query.prices,
79
126
  delivery: unref(route).query.delivery,
80
- search: unref(route).query.search,
127
+ // search: route.query.search,
81
128
  ...tabProducts.value !== "all" && { status: tabProducts.value }
82
129
  // user: user
83
130
  },
@@ -87,10 +134,10 @@ const _sfc_main = {
87
134
  items
88
135
  }) => [
89
136
  (openBlock(true), createElementBlock(Fragment, null, renderList(items, (product) => {
90
- return openBlock(), createBlock(_sfc_main$5, {
137
+ return openBlock(), createBlock(_sfc_main$4, {
91
138
  key: product._id,
92
139
  product,
93
- user: state$1.access,
140
+ user: state$2.access,
94
141
  class: "h-max",
95
142
  onClickCapture: ($event) => _ctx.$router.push({
96
143
  name: "Product Organization",
@@ -103,7 +150,7 @@ const _sfc_main = {
103
150
  }), 128))
104
151
  ]),
105
152
  _: 1
106
- }, 8, ["store", "options"])
153
+ }, 8, ["filter", "store", "options"])
107
154
  ])
108
155
  ])
109
156
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Products.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <header \n v-if=\"route.name !== 'Organization'\"\n class=\"mn-b-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n @click=\"$router.push({\n name: 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <Tab \n v-if=\"route.name !== 'Organization'\"\n v-model:selected=\"tabProducts\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Published', value: 'published' },\n { name: 'Unpublished', value: 'unpublished' }, \n { name: 'Archivied', value: 'archivied' } \n ]\"\n class=\"mn-b-small o-hidden h5 radius-big bg-light\"\n />\n\n <div class=\"cols-2-1_3 bg-light pd-thin radius-big gap-thin\">\n\n <FilterProducts\n\n /> \n\n <div>\n <BlockSearch \n @search=\"updateSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-white mn-b-thin\"\n />\n <Feed\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 15,\n organization: route.params._id,\n categories: route.query.categories,\n prices: route.query.prices,\n delivery: route.query.delivery,\n search: route.query.search,\n ...(tabProducts !== 'all' && { status: tabProducts })\n // user: user\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 gap-thin\"\n >\n <CardProduct\n v-for=\"product in items\"\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n class=\"h-max\"\n @click.capture=\"$router.push({\n name: 'Product Organization', \n params: { \n _id: route.params._id, \n product: product._id \n } \n })\" \n />\n </Feed>\n </div>\n </div>\n</div>\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { computed, watch, onMounted, ref } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@pf/src/components/Tab/Tab.vue'\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@pf/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\n\n import CardProduct from '@pf/src/modules/products/components/blocks/CardProduct.vue'\n\n // Accessing router and store\n import * as auth from '@pf/src/modules/auth/views/store/auth';\n import * as products from '@pf/src/modules/products/store/products';\n\n const route = useRoute()\n const router = useRouter()\n\n // Tab logic\n const tabProducts = ref(route.query.tabProducts ? route.query.tabProducts : 'all')\n\n route.query.tabProducts = tabProducts.value\n\n watch(tabProducts, (newValue) => {\n router.replace({ query: { ...route.query, tabProducts: newValue } });\n });\n \n function updateSearch(search) {\n let query = { ...route.query}\n \n query.search = search\n \n router.push({ query });\n }\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAyGE,UAAM,QAAQ,SAAU;AACxB,UAAM,SAAS,UAAW;AAG1B,UAAM,cAAc,IAAI,MAAM,MAAM,cAAc,MAAM,MAAM,cAAc,KAAK;AAEjF,UAAM,MAAM,cAAc,YAAY;AAEtC,UAAM,aAAa,CAAC,aAAa;AAC/B,aAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,aAAa,SAAU,EAAA,CAAE;AAAA,IACvE,CAAG;AAED,aAAS,aAAa,QAAQ;AAC5B,UAAI,QAAQ,EAAE,GAAG,MAAM,MAAK;AAE5B,YAAM,SAAS;AAEf,aAAO,KAAK,EAAE,MAAK,CAAE;AAAA,IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Products.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div>\n <header \n v-if=\"route.name !== 'Organization'\"\n class=\"mn-b-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n @click=\"$router.push({\n name: 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <Tab \n v-if=\"route.name !== 'Organization'\"\n v-model:selected=\"tabProducts\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Published', value: 'published' },\n { name: 'Unpublished', value: 'unpublished' }, \n { name: 'Archivied', value: 'archivied' } \n ]\"\n class=\"mn-b-small o-hidden h5 radius-big bg-light\"\n />\n\n <div class=\"cols-2-1_3 bg-light pd-thin radius-big gap-thin\">\n\n <BlockFilter\n v-model:filter=\"marketplace.state.filter\"\n :options=\"marketplace.state.filter.options\"\n class=\"h-100 w-100 desktop-only\"\n />\n\n\n <div class=\"rows-1\">\n <!-- <BlockSearch \n @search=\"updateSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-white mn-b-thin\"\n /> -->\n <Feed\n v-model:filter=\"marketplace.state.filter\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 15,\n organization: route.params._id,\n categories: route.query.categories,\n prices: route.query.prices,\n delivery: route.query.delivery,\n // search: route.query.search,\n ...(tabProducts !== 'all' && { status: tabProducts })\n // user: user\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 gap-thin\"\n >\n <CardProduct\n v-for=\"product in items\"\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n class=\"h-max\"\n @click.capture=\"$router.push({\n name: 'Product Organization', \n params: { \n _id: route.params._id, \n product: product._id \n } \n })\" \n />\n </Feed>\n </div>\n </div>\n</div>\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { computed, watch, onMounted, ref } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@pf/src/components/Tab/Tab.vue'\n import Feed from '@pf/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@pf/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@pf/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import BlockFilter from '@pf/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\n import CardProduct from '@pf/src/modules/products/components/blocks/CardProduct.vue'\n\n // Accessing router and store\n import * as auth from '@pf/src/modules/auth/views/store/auth';\n import * as products from '@pf/src/modules/products/store/products';\n import * as marketplace from '@pf/src/modules/marketplace/store/marketplace';\n import * as categories from '@pf/src/modules/products/store/categories';\n\n const route = useRoute()\n const router = useRouter()\n\n // Tab logic\n const tabProducts = ref(route.query.tabProducts ? route.query.tabProducts : 'all')\n\n if (route.name !== 'Organization') route.query.tabProducts = tabProducts.value\n \n if (route.query) {\n const query = route.query;\n\n marketplace.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n marketplace.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n marketplace.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n }\n\n\n watch(tabProducts, (newValue) => {\n if (route.name !== 'Organization') router.replace({ query: { ...route.query, tabProducts: newValue } });\n });\n\n onMounted(async () => {\n let categoriesFilter = await categories.actions.fetchCategories();\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category.url,\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 })\n\n watch(() => marketplace.state.sort, (newSortValue, oldSortValue) => {\n let query = { ...route.query}\n \n query.sortParam = newSortValue.param\n query.sortOrder = newSortValue.order\n \n // replace the current route\n router.replace({ query });\n }, { deep: true });\n\n\n watch(() => marketplace.state.filter.selected, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n\n delete query.options;\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n\n\n\n \n function updateSearch(search) {\n let query = { ...route.query}\n \n query.search = search\n \n router.replace({ query });\n }\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["marketplace.state","categories.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiHE,UAAM,QAAQ,SAAU;AACxB,UAAM,SAAS,UAAW;AAG1B,UAAM,cAAc,IAAI,MAAM,MAAM,cAAc,MAAM,MAAM,cAAc,KAAK;AAEjF,QAAI,MAAM,SAAS,eAAgB,OAAM,MAAM,cAAc,YAAY;AAEzE,QAAI,MAAM,OAAO;AACf,YAAM,QAAQ,MAAM;AAEpBA,YAAkB,OAAO,SAAS,aAAa,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAA;AAChGA,YAAkB,OAAO,SAAS,SAAS,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAA;AACpFA,YAAkB,OAAO,SAAS,WAAW,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAA;AAAA,IAC3F;AAGD,UAAM,aAAa,CAAC,aAAa;AAC/B,UAAI,MAAM,SAAS,eAAgB,QAAO,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,aAAa,SAAQ,EAAI,CAAA;AAAA,IAC1G,CAAG;AAED,cAAU,YAAY;AACpB,UAAI,mBAAmB,MAAMC,QAAmB;AAEhD,yBAAmB,iBAAiB,IAAI,eAAa;AAAA,QACnD,OAAO,SAAS;AAAA,QAChB,OAAO,SAAS;AAAA,MACjB,EAAC;AAEF,YAAM,QAAQD,MAAkB,OAAO,QAAQ,UAAU,YAAU,OAAO,UAAU,YAAY;AAEhG,YAAM,iBAAiB;AAAA,QACrB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,SAAS;AAAA,MACf;AAEI,UAAI,UAAU,IAAI;AACdA,cAAkB,OAAO,QAAQ,KAAK,IAAI;AAAA,MAClD,OAAW;AACHA,cAAkB,OAAO,QAAQ,QAAQ,cAAc;AAAA,MAC1D;AAAA,IACL,CAAG;AAED,UAAM,MAAMA,MAAkB,MAAM,CAAC,cAAc,iBAAiB;AAClE,UAAI,QAAQ,EAAE,GAAG,MAAM,MAAK;AAE5B,YAAM,YAAY,aAAa;AAC/B,YAAM,YAAY,aAAa;AAG/B,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,KAAI,CAAE;AAGjB,UAAM,MAAMA,MAAkB,OAAO,UAAU,CAAC,gBAAgB,mBAAmB;AAEjF,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACP,CAAK;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACrD;AAEI,aAAO,MAAM;AACb,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC5B,GAAK,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  ;/* empty css */
5
5
  ;/* empty css */
6
6
  const Field = require("../../../../components/Field/Field.vue2.cjs");
7
- const Select = require("../../../../components/Select/Select.vue2.cjs");
7
+ const Select = require("../../../../components/Select/Select.vue.cjs");
8
8
  const _sfc_main = {
9
9
  __name: "EditProductInfo",
10
10
  props: {
@@ -2,7 +2,7 @@ import { openBlock, createElementBlock, Fragment, createVNode, withCtx } from "v
2
2
  /* empty css */
3
3
  /* empty css */
4
4
  import Field from "../../../../components/Field/Field.vue2.js";
5
- import Select from "../../../../components/Select/Select.vue2.js";
5
+ import Select from "../../../../components/Select/Select.vue.js";
6
6
  const _sfc_main = {
7
7
  __name: "EditProductInfo",
8
8
  props: {
@@ -61,7 +61,7 @@ const _sfc_main = {
61
61
  Object.entries(newFilterValue).filter(([key, value]) => Array.isArray(value) && value.length > 0).map(([key, value]) => [key, value.join(",")])
62
62
  );
63
63
  Object.assign(query, newQueryValues);
64
- router.push({ query });
64
+ router.repalce({ query });
65
65
  }, { deep: true });
66
66
  vue.onMounted(async () => {
67
67
  await categories.actions.fetchCategories(options);
@@ -1 +1 @@
1
- {"version":3,"file":"FilterProducts.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-big\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('categoriesTitle') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(category, index) in categories.state.all\"\n :key=\"index\"\n :label=\"category.name\"\n :value=\"category.url\"\n class=\"w-100 mn-t-small mn-b-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.categories\"\n @update:radio=\"event => marketplace.state.filter.categories = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small t-transp\">\n\n <!-- Prices Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('filters.price.title') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(price, index) in prices\"\n :key=\"index\"\n :label=\"price.label\"\n :value=\"price.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.prices\"\n @update:radio=\"event => marketplace.state.filter.prices = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small\">\n\n <!-- Delivery Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">Delivery</p>\n </template>\n <template #content>\n <Checkbox \n v-for=\"(deliveryOption, index) in deliveryOptions\"\n :key=\"index\"\n :label=\"deliveryOption.label\"\n :value=\"deliveryOption.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.delivery\"\n @update:radio=\"event => marketplace.state.filter.delivery = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-semi\">\n\n <!-- Reset filter -->\n <button @click=\"resetFilters\" class=\"bg-main w-100 button\">{{ t('filters.reset') }}</button>\n </div>\n </template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue'\n\nimport Spoiler from \"@pf/src/components/Spoiler/Spoiler.vue\"\nimport Checkbox from \"@pf/src/components/Checkbox/Checkbox.vue\"\n\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\nconst route = useRoute()\nconst router = useRouter()\n\nimport * as categories from '@pf/src/modules/products/store/categories';\nimport * as marketplace from '@pf/src/modules/marketplace/store/marketplace';\n\nlet options = {\n status: 'published'\n}\n\nlet selectedFilters = ref({\n categories: [],\n prices: [],\n delivery: [],\n extra: []\n})\n\n// Пропсы и данные, которые вы передаёте в компонент\nconst props = defineProps({\n selectedFilters: Object,\n prices: {\n type: Array,\n default: () => [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n },\n deliveryOptions: {\n type: Array,\n default: () => [\n { label: 'Pickup', value: { min: 0, max: 25 } },\n { label: 'Courier', value: { min: 25, max: 50 } },\n { label: 'Post', value: { min: 50, max: 100 } }\n ]\n }\n})\n\nwatch(() => marketplace.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.push({ query });\n}, { deep: true })\n\nonMounted(async () => {\n await categories.actions.fetchCategories(options)\n \n if (route.query) {\n const query = route.query;\n const newFilterValue = {\n categories: query.categories ? query.categories.split(',') : [],\n prices: query.prices ? query.prices.split(',') : [],\n delivery: query.delivery ? query.delivery.split(',') : [],\n // Продолжайте этот паттерн для остальных полей фильтра\n };\n marketplace.state.filter.innerHTML = newFilterValue;\n }\n})\n\nconst emit = defineEmits(['updateFilters', 'resetFilters'])\n\nconst emitFilterChange = (filterType, value) => {\n emit('updateFilters', { filterType, value })\n}\n\nconst resetFilters = () => {\n emit('resetFilters')\n}\nconst text = {\n locale: 'en',\n messages: {\n en: {\n categoriesTitle: 'Category',\n categories: [],\n filters: {\n title: 'Filters',\n price: {\n title: 'Price',\n from: 'From',\n to: 'To'\n },\n filters: [],\n reset: 'Reset Filters'\n }\n },\n ru: {\n categoriesTitle: 'Категория',\n categories: [],\n filters: {\n title: 'Фильтры',\n price: {\n title: 'Цена',\n from: 'От',\n to: 'До'\n },\n filters: [],\n reset: 'Сбросить фильтры',\n }\n }\n }\n }\n\n categories.state.all.forEach( category => {\n category.localization.forEach( localization => {\n text.messages[localization.locale].categories.push(localization.text)\n })\n })\n\n const { t } = useI18n(text)\n \n\n\n// Добавьте свою локализацию и методы t, если они нужны\n</script>\n\n<style>\n/* Ваши стили */\n</style>\n"],"names":["useRoute","useRouter","ref","watch","marketplace.state","onMounted","categories.actions","categories.state","useI18n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQA,UAAAA,SAAU;AACxB,UAAM,SAASC,UAAAA,UAAW;AAK1B,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsBC,QAAAA,IAAI;AAAA,MACxB,YAAY,CAAE;AAAA,MACd,QAAQ,CAAE;AAAA,MACV,UAAU,CAAE;AAAA,MACZ,OAAO,CAAE;AAAA,IACX,CAAC;AAwBDC,QAAK,MAAC,MAAMC,YAAAA,MAAkB,QAAQ,CAAC,gBAAgB,mBAAmB;AAExE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACL,CAAG;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACnD;AACE,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,KAAK,EAAE,MAAK,CAAE;AAAA,IACvB,GAAG,EAAE,MAAM,MAAM;AAEjBC,QAAAA,UAAU,YAAY;AACpB,YAAMC,WAAkB,QAAC,gBAAgB,OAAO;AAEhD,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AACpB,cAAM,iBAAiB;AAAA,UACrB,YAAY,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAE;AAAA,UAC/D,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAE;AAAA,UACnD,UAAU,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAE;AAAA;AAAA,QAE/D;AACIF,0BAAkB,OAAO,YAAY;AAAA,MACtC;AAAA,IACH,CAAC;AAED,UAAM,OAAO;AAMb,UAAM,eAAe,MAAM;AACzB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,QACD,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEDG,qBAAiB,IAAI,QAAS,cAAY;AACxC,eAAS,aAAa,QAAS,kBAAgB;AAC7C,aAAK,SAAS,aAAa,MAAM,EAAE,WAAW,KAAK,aAAa,IAAI;AAAA,MAC1E,CAAK;AAAA,IACL,CAAG;AAED,UAAM,EAAE,EAAC,IAAKC,QAAO,QAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FilterProducts.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-big\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('categoriesTitle') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(category, index) in categories.state.all\"\n :key=\"index\"\n :label=\"category.name\"\n :value=\"category.url\"\n class=\"w-100 mn-t-small mn-b-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.categories\"\n @update:radio=\"event => marketplace.state.filter.categories = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small t-transp\">\n\n <!-- Prices Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('filters.price.title') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(price, index) in prices\"\n :key=\"index\"\n :label=\"price.label\"\n :value=\"price.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.prices\"\n @update:radio=\"event => marketplace.state.filter.prices = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small\">\n\n <!-- Delivery Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">Delivery</p>\n </template>\n <template #content>\n <Checkbox \n v-for=\"(deliveryOption, index) in deliveryOptions\"\n :key=\"index\"\n :label=\"deliveryOption.label\"\n :value=\"deliveryOption.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.delivery\"\n @update:radio=\"event => marketplace.state.filter.delivery = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-semi\">\n\n <!-- Reset filter -->\n <button @click=\"resetFilters\" class=\"bg-main w-100 button\">{{ t('filters.reset') }}</button>\n </div>\n </template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue'\n\nimport Spoiler from \"@pf/src/components/Spoiler/Spoiler.vue\"\nimport Checkbox from \"@pf/src/components/Checkbox/Checkbox.vue\"\n\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\nconst route = useRoute()\nconst router = useRouter()\n\nimport * as categories from '@pf/src/modules/products/store/categories';\nimport * as marketplace from '@pf/src/modules/marketplace/store/marketplace';\n\nlet options = {\n status: 'published'\n}\n\nlet selectedFilters = ref({\n categories: [],\n prices: [],\n delivery: [],\n extra: []\n})\n\n// Пропсы и данные, которые вы передаёте в компонент\nconst props = defineProps({\n selectedFilters: Object,\n prices: {\n type: Array,\n default: () => [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n },\n deliveryOptions: {\n type: Array,\n default: () => [\n { label: 'Pickup', value: { min: 0, max: 25 } },\n { label: 'Courier', value: { min: 25, max: 50 } },\n { label: 'Post', value: { min: 50, max: 100 } }\n ]\n }\n})\n\nwatch(() => marketplace.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.repalce({ query });\n}, { deep: true })\n\nonMounted(async () => {\n await categories.actions.fetchCategories(options)\n \n if (route.query) {\n const query = route.query;\n const newFilterValue = {\n categories: query.categories ? query.categories.split(',') : [],\n prices: query.prices ? query.prices.split(',') : [],\n delivery: query.delivery ? query.delivery.split(',') : [],\n // Продолжайте этот паттерн для остальных полей фильтра\n };\n marketplace.state.filter.innerHTML = newFilterValue;\n }\n})\n\nconst emit = defineEmits(['updateFilters', 'resetFilters'])\n\nconst emitFilterChange = (filterType, value) => {\n emit('updateFilters', { filterType, value })\n}\n\nconst resetFilters = () => {\n emit('resetFilters')\n}\nconst text = {\n locale: 'en',\n messages: {\n en: {\n categoriesTitle: 'Category',\n categories: [],\n filters: {\n title: 'Filters',\n price: {\n title: 'Price',\n from: 'From',\n to: 'To'\n },\n filters: [],\n reset: 'Reset Filters'\n }\n },\n ru: {\n categoriesTitle: 'Категория',\n categories: [],\n filters: {\n title: 'Фильтры',\n price: {\n title: 'Цена',\n from: 'От',\n to: 'До'\n },\n filters: [],\n reset: 'Сбросить фильтры',\n }\n }\n }\n }\n\n categories.state.all.forEach( category => {\n category.localization.forEach( localization => {\n text.messages[localization.locale].categories.push(localization.text)\n })\n })\n\n const { t } = useI18n(text)\n \n\n\n// Добавьте свою локализацию и методы t, если они нужны\n</script>\n\n<style>\n/* Ваши стили */\n</style>\n"],"names":["useRoute","useRouter","ref","watch","marketplace.state","onMounted","categories.actions","categories.state","useI18n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQA,UAAAA,SAAU;AACxB,UAAM,SAASC,UAAAA,UAAW;AAK1B,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsBC,QAAAA,IAAI;AAAA,MACxB,YAAY,CAAE;AAAA,MACd,QAAQ,CAAE;AAAA,MACV,UAAU,CAAE;AAAA,MACZ,OAAO,CAAE;AAAA,IACX,CAAC;AAwBDC,QAAK,MAAC,MAAMC,YAAAA,MAAkB,QAAQ,CAAC,gBAAgB,mBAAmB;AAExE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACL,CAAG;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACnD;AACE,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC1B,GAAG,EAAE,MAAM,MAAM;AAEjBC,QAAAA,UAAU,YAAY;AACpB,YAAMC,WAAkB,QAAC,gBAAgB,OAAO;AAEhD,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AACpB,cAAM,iBAAiB;AAAA,UACrB,YAAY,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAE;AAAA,UAC/D,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAE;AAAA,UACnD,UAAU,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAE;AAAA;AAAA,QAE/D;AACIF,0BAAkB,OAAO,YAAY;AAAA,MACtC;AAAA,IACH,CAAC;AAED,UAAM,OAAO;AAMb,UAAM,eAAe,MAAM;AACzB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,QACD,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEDG,qBAAiB,IAAI,QAAS,cAAY;AACxC,eAAS,aAAa,QAAS,kBAAgB;AAC7C,aAAK,SAAS,aAAa,MAAM,EAAE,WAAW,KAAK,aAAa,IAAI;AAAA,MAC1E,CAAK;AAAA,IACL,CAAG;AAED,UAAM,EAAE,EAAC,IAAKC,QAAO,QAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -59,7 +59,7 @@ const _sfc_main = {
59
59
  Object.entries(newFilterValue).filter(([key, value]) => Array.isArray(value) && value.length > 0).map(([key, value]) => [key, value.join(",")])
60
60
  );
61
61
  Object.assign(query, newQueryValues);
62
- router.push({ query });
62
+ router.repalce({ query });
63
63
  }, { deep: true });
64
64
  onMounted(async () => {
65
65
  await actions.fetchCategories(options);
@@ -1 +1 @@
1
- {"version":3,"file":"FilterProducts.vue.js","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-big\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('categoriesTitle') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(category, index) in categories.state.all\"\n :key=\"index\"\n :label=\"category.name\"\n :value=\"category.url\"\n class=\"w-100 mn-t-small mn-b-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.categories\"\n @update:radio=\"event => marketplace.state.filter.categories = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small t-transp\">\n\n <!-- Prices Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('filters.price.title') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(price, index) in prices\"\n :key=\"index\"\n :label=\"price.label\"\n :value=\"price.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.prices\"\n @update:radio=\"event => marketplace.state.filter.prices = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small\">\n\n <!-- Delivery Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">Delivery</p>\n </template>\n <template #content>\n <Checkbox \n v-for=\"(deliveryOption, index) in deliveryOptions\"\n :key=\"index\"\n :label=\"deliveryOption.label\"\n :value=\"deliveryOption.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.delivery\"\n @update:radio=\"event => marketplace.state.filter.delivery = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-semi\">\n\n <!-- Reset filter -->\n <button @click=\"resetFilters\" class=\"bg-main w-100 button\">{{ t('filters.reset') }}</button>\n </div>\n </template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue'\n\nimport Spoiler from \"@pf/src/components/Spoiler/Spoiler.vue\"\nimport Checkbox from \"@pf/src/components/Checkbox/Checkbox.vue\"\n\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\nconst route = useRoute()\nconst router = useRouter()\n\nimport * as categories from '@pf/src/modules/products/store/categories';\nimport * as marketplace from '@pf/src/modules/marketplace/store/marketplace';\n\nlet options = {\n status: 'published'\n}\n\nlet selectedFilters = ref({\n categories: [],\n prices: [],\n delivery: [],\n extra: []\n})\n\n// Пропсы и данные, которые вы передаёте в компонент\nconst props = defineProps({\n selectedFilters: Object,\n prices: {\n type: Array,\n default: () => [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n },\n deliveryOptions: {\n type: Array,\n default: () => [\n { label: 'Pickup', value: { min: 0, max: 25 } },\n { label: 'Courier', value: { min: 25, max: 50 } },\n { label: 'Post', value: { min: 50, max: 100 } }\n ]\n }\n})\n\nwatch(() => marketplace.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.push({ query });\n}, { deep: true })\n\nonMounted(async () => {\n await categories.actions.fetchCategories(options)\n \n if (route.query) {\n const query = route.query;\n const newFilterValue = {\n categories: query.categories ? query.categories.split(',') : [],\n prices: query.prices ? query.prices.split(',') : [],\n delivery: query.delivery ? query.delivery.split(',') : [],\n // Продолжайте этот паттерн для остальных полей фильтра\n };\n marketplace.state.filter.innerHTML = newFilterValue;\n }\n})\n\nconst emit = defineEmits(['updateFilters', 'resetFilters'])\n\nconst emitFilterChange = (filterType, value) => {\n emit('updateFilters', { filterType, value })\n}\n\nconst resetFilters = () => {\n emit('resetFilters')\n}\nconst text = {\n locale: 'en',\n messages: {\n en: {\n categoriesTitle: 'Category',\n categories: [],\n filters: {\n title: 'Filters',\n price: {\n title: 'Price',\n from: 'From',\n to: 'To'\n },\n filters: [],\n reset: 'Reset Filters'\n }\n },\n ru: {\n categoriesTitle: 'Категория',\n categories: [],\n filters: {\n title: 'Фильтры',\n price: {\n title: 'Цена',\n from: 'От',\n to: 'До'\n },\n filters: [],\n reset: 'Сбросить фильтры',\n }\n }\n }\n }\n\n categories.state.all.forEach( category => {\n category.localization.forEach( localization => {\n text.messages[localization.locale].categories.push(localization.text)\n })\n })\n\n const { t } = useI18n(text)\n \n\n\n// Добавьте свою локализацию и методы t, если они нужны\n</script>\n\n<style>\n/* Ваши стили */\n</style>\n"],"names":["marketplace.state","categories.actions","categories.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQ,SAAU;AACxB,UAAM,SAAS,UAAW;AAK1B,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsB,QAAI;AAAA,MACxB,YAAY,CAAE;AAAA,MACd,QAAQ,CAAE;AAAA,MACV,UAAU,CAAE;AAAA,MACZ,OAAO,CAAE;AAAA,IACX,CAAC;AAwBD,UAAM,MAAMA,MAAkB,QAAQ,CAAC,gBAAgB,mBAAmB;AAExE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACL,CAAG;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACnD;AACE,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,KAAK,EAAE,MAAK,CAAE;AAAA,IACvB,GAAG,EAAE,MAAM,MAAM;AAEjB,cAAU,YAAY;AACpB,YAAMC,QAAmB,gBAAgB,OAAO;AAEhD,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AACpB,cAAM,iBAAiB;AAAA,UACrB,YAAY,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAE;AAAA,UAC/D,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAE;AAAA,UACnD,UAAU,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAE;AAAA;AAAA,QAE/D;AACID,cAAkB,OAAO,YAAY;AAAA,MACtC;AAAA,IACH,CAAC;AAED,UAAM,OAAO;AAMb,UAAM,eAAe,MAAM;AACzB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,QACD,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEDE,YAAiB,IAAI,QAAS,cAAY;AACxC,eAAS,aAAa,QAAS,kBAAgB;AAC7C,aAAK,SAAS,aAAa,MAAM,EAAE,WAAW,KAAK,aAAa,IAAI;AAAA,MAC1E,CAAK;AAAA,IACL,CAAG;AAED,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FilterProducts.vue.js","sources":["../../../../../../../src/modules/products/components/sections/FilterProducts.vue"],"sourcesContent":[" <template>\n <div class=\"pd-medium bg-light radius-big\">\n <!-- Categories Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"true\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('categoriesTitle') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(category, index) in categories.state.all\"\n :key=\"index\"\n :label=\"category.name\"\n :value=\"category.url\"\n class=\"w-100 mn-t-small mn-b-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.categories\"\n @update:radio=\"event => marketplace.state.filter.categories = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small t-transp\">\n\n <!-- Prices Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">{{ t('filters.price.title') }}</p>\n <!-- SVG Icon -->\n </template>\n <template #content>\n <Checkbox \n v-for=\"(price, index) in prices\"\n :key=\"index\"\n :label=\"price.label\"\n :value=\"price.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.prices\"\n @update:radio=\"event => marketplace.state.filter.prices = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-small\">\n\n <!-- Delivery Filter -->\n <Spoiler \n class=\"radius-small o-hidden mn-b-small\"\n :status=\"false\"\n >\n <template #header>\n <p class=\"cursor-pointer mn-r-auto t-medium p-big\">Delivery</p>\n </template>\n <template #content>\n <Checkbox \n v-for=\"(deliveryOption, index) in deliveryOptions\"\n :key=\"index\"\n :label=\"deliveryOption.label\"\n :value=\"deliveryOption.value\"\n class=\"w-100 mn-t-small bg-white radius-small pd-small\"\n :radio=\"marketplace.state.filter.delivery\"\n @update:radio=\"event => marketplace.state.filter.delivery = event\"\n />\n </template>\n </Spoiler>\n\n <hr class=\"mn-b-semi\">\n\n <!-- Reset filter -->\n <button @click=\"resetFilters\" class=\"bg-main w-100 button\">{{ t('filters.reset') }}</button>\n </div>\n </template>\n\n<script setup>\nimport { ref, watch, onMounted } from 'vue'\n\nimport Spoiler from \"@pf/src/components/Spoiler/Spoiler.vue\"\nimport Checkbox from \"@pf/src/components/Checkbox/Checkbox.vue\"\n\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter,onBeforeRouteLeave } from 'vue-router'\n\nconst route = useRoute()\nconst router = useRouter()\n\nimport * as categories from '@pf/src/modules/products/store/categories';\nimport * as marketplace from '@pf/src/modules/marketplace/store/marketplace';\n\nlet options = {\n status: 'published'\n}\n\nlet selectedFilters = ref({\n categories: [],\n prices: [],\n delivery: [],\n extra: []\n})\n\n// Пропсы и данные, которые вы передаёте в компонент\nconst props = defineProps({\n selectedFilters: Object,\n prices: {\n type: Array,\n default: () => [\n { label: 'Under 300฿', value: '<300' },\n { label: '300฿ to 600฿', value: '300-600' },\n { label: '600฿ to 1200฿', value: '600-1200' },\n { label: '$1200 and above', value: '>1200' }\n ]\n },\n deliveryOptions: {\n type: Array,\n default: () => [\n { label: 'Pickup', value: { min: 0, max: 25 } },\n { label: 'Courier', value: { min: 25, max: 50 } },\n { label: 'Post', value: { min: 50, max: 100 } }\n ]\n }\n})\n\nwatch(() => marketplace.state.filter, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.repalce({ query });\n}, { deep: true })\n\nonMounted(async () => {\n await categories.actions.fetchCategories(options)\n \n if (route.query) {\n const query = route.query;\n const newFilterValue = {\n categories: query.categories ? query.categories.split(',') : [],\n prices: query.prices ? query.prices.split(',') : [],\n delivery: query.delivery ? query.delivery.split(',') : [],\n // Продолжайте этот паттерн для остальных полей фильтра\n };\n marketplace.state.filter.innerHTML = newFilterValue;\n }\n})\n\nconst emit = defineEmits(['updateFilters', 'resetFilters'])\n\nconst emitFilterChange = (filterType, value) => {\n emit('updateFilters', { filterType, value })\n}\n\nconst resetFilters = () => {\n emit('resetFilters')\n}\nconst text = {\n locale: 'en',\n messages: {\n en: {\n categoriesTitle: 'Category',\n categories: [],\n filters: {\n title: 'Filters',\n price: {\n title: 'Price',\n from: 'From',\n to: 'To'\n },\n filters: [],\n reset: 'Reset Filters'\n }\n },\n ru: {\n categoriesTitle: 'Категория',\n categories: [],\n filters: {\n title: 'Фильтры',\n price: {\n title: 'Цена',\n from: 'От',\n to: 'До'\n },\n filters: [],\n reset: 'Сбросить фильтры',\n }\n }\n }\n }\n\n categories.state.all.forEach( category => {\n category.localization.forEach( localization => {\n text.messages[localization.locale].categories.push(localization.text)\n })\n })\n\n const { t } = useI18n(text)\n \n\n\n// Добавьте свою локализацию и методы t, если они нужны\n</script>\n\n<style>\n/* Ваши стили */\n</style>\n"],"names":["marketplace.state","categories.actions","categories.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,UAAM,QAAQ,SAAU;AACxB,UAAM,SAAS,UAAW;AAK1B,QAAI,UAAU;AAAA,MACZ,QAAQ;AAAA,IACV;AAEsB,QAAI;AAAA,MACxB,YAAY,CAAE;AAAA,MACd,QAAQ,CAAE;AAAA,MACV,UAAU,CAAE;AAAA,MACZ,OAAO,CAAE;AAAA,IACX,CAAC;AAwBD,UAAM,MAAMA,MAAkB,QAAQ,CAAC,gBAAgB,mBAAmB;AAExE,YAAM,QAAQ,EAAE,GAAG,MAAM,MAAK;AAG9B,aAAO,KAAK,cAAc,EAAE,QAAQ,SAAO;AACzC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,MAAM,GAAG;AAAA,QACjB;AAAA,MACL,CAAG;AAGD,YAAM,iBAAiB,OAAO;AAAA,QAC5B,OAAO,QAAQ,cAAc,EAC1B,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EACjE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MACnD;AACE,aAAO,OAAO,OAAO,cAAc;AAGnC,aAAO,QAAQ,EAAE,MAAK,CAAE;AAAA,IAC1B,GAAG,EAAE,MAAM,MAAM;AAEjB,cAAU,YAAY;AACpB,YAAMC,QAAmB,gBAAgB,OAAO;AAEhD,UAAI,MAAM,OAAO;AACf,cAAM,QAAQ,MAAM;AACpB,cAAM,iBAAiB;AAAA,UACrB,YAAY,MAAM,aAAa,MAAM,WAAW,MAAM,GAAG,IAAI,CAAE;AAAA,UAC/D,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,CAAE;AAAA,UACnD,UAAU,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,CAAE;AAAA;AAAA,QAE/D;AACID,cAAkB,OAAO,YAAY;AAAA,MACtC;AAAA,IACH,CAAC;AAED,UAAM,OAAO;AAMb,UAAM,eAAe,MAAM;AACzB,WAAK,cAAc;AAAA,IACrB;AACA,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,QACD,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,YAAY,CAAE;AAAA,UACd,SAAS;AAAA,YACP,OAAO;AAAA,YACP,OAAO;AAAA,cACL,OAAO;AAAA,cACP,MAAM;AAAA,cACN,IAAI;AAAA,YACL;AAAA,YACD,SAAS,CAAE;AAAA,YACX,OAAO;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEDE,YAAiB,IAAI,QAAS,cAAY;AACxC,eAAS,aAAa,QAAS,kBAAgB;AAC7C,aAAK,SAAS,aAAa,MAAM,EAAE,WAAW,KAAK,aAAa,IAAI;AAAA,MAC1E,CAAK;AAAA,IACL,CAAG;AAED,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -35,6 +35,10 @@ const _hoisted_11 = { class: "cols-2 w-100 gap-small mn-b-semi" };
35
35
  const _hoisted_12 = { class: "w-100 pd-small radius-small bg-grey-transp-10 product-information" };
36
36
  const _hoisted_13 = { class: "t-demi" };
37
37
  const _hoisted_14 = { class: "max-w-33rem mobile-w-100 t-white gap-small cols-2" };
38
+ const _hoisted_15 = {
39
+ key: 1,
40
+ class: "flex-center flex uppercase radius-big t-black w-max pd-small t-medium bg-grey h-3r w-100 mn-r-smallbutton"
41
+ };
38
42
  const _sfc_main = {
39
43
  __name: "SectionProduct",
40
44
  props: {
@@ -133,7 +137,8 @@ const _sfc_main = {
133
137
  }), 256)) : vue.createCommentVNode("", true)
134
138
  ]),
135
139
  vue.createElementVNode("div", _hoisted_14, [
136
- vue.createVNode(Button.default, {
140
+ __props.product.quantity > 0 ? (vue.openBlock(), vue.createBlock(Button.default, {
141
+ key: 0,
137
142
  submit: (a) => addToCart(__props.product),
138
143
  disabled: validateToCard(__props.product),
139
144
  text: {
@@ -146,7 +151,7 @@ const _sfc_main = {
146
151
  vue.createTextVNode(vue.toDisplayString(vue.unref(t)("addtoorder")), 1)
147
152
  ]),
148
153
  _: 1
149
- }, 8, ["submit", "disabled"])
154
+ }, 8, ["submit", "disabled"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_15, " Out of Stock "))
150
155
  ])
151
156
  ])
152
157
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"SectionProduct.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-2-1_2 w-100 gap-thin\">\n\t\t\n\t\t<div class=\"pd-small bg-light radius-big flex-nowrap flex-column flex pos-relative\">\n\t\t\t<div class=\"w-100 bg-light radius-semi o-hidden\">\n\t\t\t\t<!-- PRODUCT IMAGE -->\n\t\t\t\t<Images360\n\t\t\t\t\tv-if=\"product && product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\t:imagePath=\"`/assets/images/products/${product.image3d}`\"\n\t\t\t\t\t:imageCount=\"36\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-auto bg-light w-100\"\n\t\t\t\t\tstyle=\"object-fit: contain;\"\n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + images[0]\"\n\t\t\t\t/>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-if=\"!images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\tstyle=\"object-fit: cover;\"\n\t\t\t\t/>\n\n\t\t\t</div>\n\n\t\t\t<ImagesThumbnails\n\t\t\t\tv-if=\"images.length > 1\"\n\t\t\t\t:images=\"images\"\n\t\t\t\tclass=\"mn-t-thin\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div class=\"pd-big bg-light radius-big pos-relative w-100 h-100 flex-column flex-justify flex col\">\n\n\t\t<!-- <IconEdit\n\t\t\t@click=\"$router.push({\n\t\t\t\tname: 'ProductEdit', \n\t\t\t\tparams: {\n\t\t\t\t\t_id: product.organization,\n\t\t\t\t\tproduct: product._id\n\t\t\t\t}\n\t\t\t})\" \n\t\t\tclass=\"pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t/> -->\n\n\t\t\t<h2 v-if=\"recommendation\" class=\"t-main t-semi p-big\">{{t('airecommend')}}</h2>\n\t\t\t<!-- Name -->\n\t\t\t<h1 class=\"w-100 h1-product mn-b-thin\">{{ product.name }}</h1>\n\t\t\t<!-- Price -->\n\t\t\t<Price :product=\"product\" size=\"big\" class=\"mn-b-semi\" />\n\t\t\t<!-- Modifications -->\n\t\t\t<!-- <div v-if=\"product.modifications.length > 0\" class=\"flex-nojustify flex\">\n\t\t\t\t<SelectElement v-if=\"sizes2.length > 0\" :elements=\"sizes2\" :selected=\"product.selectedSize\" class=\"mn-r-medium\" />\n\t\t\t</div> -->\n\t\t\t<!-- Description -->\n\t\t\t<h3 v-if=\"recommendation\" class=\"mn-b-semi\">\n\t\t\t\t{{ recommendation }}\n\t\t\t</h3>\n\n\n\t\t\t<p v-if=\"product.description && !product.localization < 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ product.description }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"product.localization && product.localization.length > 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ t('description') }}\n\t\t\t</p>\n\n\t\t\t<div \n\t\t\t\tclass=\"cols-2 w-100 gap-small mn-b-semi\"\n\t\t\t>\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"product.information.length > 0\" \n\t\t\t\t\tv-for=\"information in product.information\" \n\t\t\t\t\tclass=\"w-100 pd-small radius-small bg-grey-transp-10 product-information\"\n\t\t\t\t>\n\t\t\t\t\t<p class=\"t-demi\">{{ information.name }}</p>\n\t\t\t\t\t<p>{{ information.value }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Actions -->\n\t\t\t<div class=\"max-w-33rem mobile-w-100 t-white gap-small cols-2\">\n\t\t\t\t<Button\n\t\t\t\t\t:submit=\"a => addToCart(product)\" \n\t\t\t\t\t:disabled=\"validateToCard(product)\" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Button \t\t\t\tfrom '@pf/src/components/Button/Button.vue'\nimport IconEdit from '@pf/src/modules/icons/navigation/IconEdit.vue'\nimport PlaceholderImage from '@pf/src/modules/icons/placeholders/PlaceholderImage.vue'\n\nimport Images360 \tfrom '@pf/src/modules/products/components/blocks/Images360.vue'\nimport ImagesThumbnails from \"@pf/src/modules/products/components/blocks/ImagesThumbnails.vue\";\n\nimport THC from '@pf/src/modules/products/components/elements/THC.vue'\nimport Price from '@pf/src/modules/products/components/elements/Price.vue'\n// import SelectElement \tfrom '@/components/elements/SelectElement.vue'\n\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport * as shopcart from '@pf/src/modules/orders/store/shopcart';\n\n// Props\nconst props = defineProps({\n product: {\n type: Object,\n required: true\n },\n user: {\n type: String,\n },\n recommendation: {\n \ttype: String\n }\n})\n\n// Computed properties\nconst images = computed(() => {\n return props.product.images\n})\n\nconst text = {\n\tmessages: {\n\t en: {\n\t \tairecommend: 'AI Recommends You',\n\t \tdescription: '',\n\t \taddtoorder: 'Add to order',\n\t fastorder: 'Fast Order'\n\t },\n\t ru: {\n\t \tairecommend: 'AI Рекомендует вам',\n\t \tdescription: '',\n\t \taddtoorder: 'Добавить в корзину',\n\t fastorder: 'Быстрый заказ'\n\t }\n\t}\n}\n\n// props.product.localization.forEach(localization => {\n\t// if (localization) text.messages[localization.locale].description = localization.text\n// })\n\n const { t } = useI18n(text)\n\n// Methods\nfunction validateToCard(product) {\n if (product.quantity > 0) {\n return false\n }\n return true\n}\n\nfunction addToCart(product) {\n\tif (shopcart.state.organization !== product.organization) {\n\t\tshopcart.state.positions = []\n\t\tshopcart.state.organization = product.organization\n\t}\n shopcart.actions.addProductToCart(product, product.organization)\n}\n</script>\n"],"names":["computed","useI18n","shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwHA,UAAM,QAAQ;AAcd,UAAM,SAASA,IAAQ,SAAC,MAAM;AAC5B,aAAO,MAAM,QAAQ;AAAA,IACvB,CAAC;AAED,UAAM,OAAO;AAAA,MACZ,UAAU;AAAA,QACR,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,QACD,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAMC,UAAM,EAAE,EAAC,IAAKC,QAAO,QAAC,IAAI;AAG3B,aAAS,eAAe,SAAS;AAC/B,UAAI,QAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACR;AACD,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,SAAS;AAC3B,UAAIC,eAAe,iBAAiB,QAAQ,cAAc;AACzDA,iBAAc,MAAC,YAAY,CAAE;AAC7BA,uBAAe,eAAe,QAAQ;AAAA,MACtC;AACAC,eAAAA,QAAiB,iBAAiB,SAAS,QAAQ,YAAY;AAAA,IACjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SectionProduct.vue.cjs","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-2-1_2 w-100 gap-thin\">\n\t\t\n\t\t<div class=\"pd-small bg-light radius-big flex-nowrap flex-column flex pos-relative\">\n\t\t\t<div class=\"w-100 bg-light radius-semi o-hidden\">\n\t\t\t\t<!-- PRODUCT IMAGE -->\n\t\t\t\t<Images360\n\t\t\t\t\tv-if=\"product && product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\t:imagePath=\"`/assets/images/products/${product.image3d}`\"\n\t\t\t\t\t:imageCount=\"36\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-auto bg-light w-100\"\n\t\t\t\t\tstyle=\"object-fit: contain;\"\n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + images[0]\"\n\t\t\t\t/>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-if=\"!images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\tstyle=\"object-fit: cover;\"\n\t\t\t\t/>\n\n\t\t\t</div>\n\n\t\t\t<ImagesThumbnails\n\t\t\t\tv-if=\"images.length > 1\"\n\t\t\t\t:images=\"images\"\n\t\t\t\tclass=\"mn-t-thin\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div class=\"pd-big bg-light radius-big pos-relative w-100 h-100 flex-column flex-justify flex col\">\n\n\t\t<!-- <IconEdit\n\t\t\t@click=\"$router.push({\n\t\t\t\tname: 'ProductEdit', \n\t\t\t\tparams: {\n\t\t\t\t\t_id: product.organization,\n\t\t\t\t\tproduct: product._id\n\t\t\t\t}\n\t\t\t})\" \n\t\t\tclass=\"pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t/> -->\n\n\t\t\t<h2 v-if=\"recommendation\" class=\"t-main t-semi p-big\">{{t('airecommend')}}</h2>\n\t\t\t<!-- Name -->\n\t\t\t<h1 class=\"w-100 h1-product mn-b-thin\">{{ product.name }}</h1>\n\t\t\t<!-- Price -->\n\t\t\t<Price :product=\"product\" size=\"big\" class=\"mn-b-semi\" />\n\t\t\t<!-- Modifications -->\n\t\t\t<!-- <div v-if=\"product.modifications.length > 0\" class=\"flex-nojustify flex\">\n\t\t\t\t<SelectElement v-if=\"sizes2.length > 0\" :elements=\"sizes2\" :selected=\"product.selectedSize\" class=\"mn-r-medium\" />\n\t\t\t</div> -->\n\t\t\t<!-- Description -->\n\t\t\t<h3 v-if=\"recommendation\" class=\"mn-b-semi\">\n\t\t\t\t{{ recommendation }}\n\t\t\t</h3>\n\n\n\t\t\t<p v-if=\"product.description && !product.localization < 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ product.description }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"product.localization && product.localization.length > 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ t('description') }}\n\t\t\t</p>\n\n\t\t\t<div \n\t\t\t\tclass=\"cols-2 w-100 gap-small mn-b-semi\"\n\t\t\t>\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"product.information.length > 0\" \n\t\t\t\t\tv-for=\"information in product.information\" \n\t\t\t\t\tclass=\"w-100 pd-small radius-small bg-grey-transp-10 product-information\"\n\t\t\t\t>\n\t\t\t\t\t<p class=\"t-demi\">{{ information.name }}</p>\n\t\t\t\t\t<p>{{ information.value }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Actions -->\n\t\t\t<div class=\"max-w-33rem mobile-w-100 t-white gap-small cols-2\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"product.quantity > 0\"\n\t\t\t\t\t:submit=\"a => addToCart(product)\" \n\t\t\t\t\t:disabled=\"validateToCard(product)\" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t\t<div v-else class=\"flex-center flex uppercase radius-big t-black w-max pd-small t-medium bg-grey h-3r w-100 mn-r-smallbutton\">\n\t\t\t\t\tOut of Stock\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Button \t\t\t\tfrom '@pf/src/components/Button/Button.vue'\nimport IconEdit from '@pf/src/modules/icons/navigation/IconEdit.vue'\nimport PlaceholderImage from '@pf/src/modules/icons/placeholders/PlaceholderImage.vue'\n\nimport Images360 \tfrom '@pf/src/modules/products/components/blocks/Images360.vue'\nimport ImagesThumbnails from \"@pf/src/modules/products/components/blocks/ImagesThumbnails.vue\";\n\nimport THC from '@pf/src/modules/products/components/elements/THC.vue'\nimport Price from '@pf/src/modules/products/components/elements/Price.vue'\n// import SelectElement \tfrom '@/components/elements/SelectElement.vue'\n\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport * as shopcart from '@pf/src/modules/orders/store/shopcart';\n\n// Props\nconst props = defineProps({\n product: {\n type: Object,\n required: true\n },\n user: {\n type: String,\n },\n recommendation: {\n \ttype: String\n }\n})\n\n// Computed properties\nconst images = computed(() => {\n return props.product.images\n})\n\nconst text = {\n\tmessages: {\n\t en: {\n\t \tairecommend: 'AI Recommends You',\n\t \tdescription: '',\n\t \taddtoorder: 'Add to order',\n\t fastorder: 'Fast Order'\n\t },\n\t ru: {\n\t \tairecommend: 'AI Рекомендует вам',\n\t \tdescription: '',\n\t \taddtoorder: 'Добавить в корзину',\n\t fastorder: 'Быстрый заказ'\n\t }\n\t}\n}\n\n// props.product.localization.forEach(localization => {\n\t// if (localization) text.messages[localization.locale].description = localization.text\n// })\n\n const { t } = useI18n(text)\n\n// Methods\nfunction validateToCard(product) {\n if (product.quantity > 0) {\n return false\n }\n return true\n}\n\nfunction addToCart(product) {\n\tif (shopcart.state.organization !== product.organization) {\n\t\tshopcart.state.positions = []\n\t\tshopcart.state.organization = product.organization\n\t}\n shopcart.actions.addProductToCart(product, product.organization)\n}\n</script>\n"],"names":["computed","useI18n","shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4HA,UAAM,QAAQ;AAcd,UAAM,SAASA,IAAQ,SAAC,MAAM;AAC5B,aAAO,MAAM,QAAQ;AAAA,IACvB,CAAC;AAED,UAAM,OAAO;AAAA,MACZ,UAAU;AAAA,QACR,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,QACD,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAMC,UAAM,EAAE,EAAC,IAAKC,QAAO,QAAC,IAAI;AAG3B,aAAS,eAAe,SAAS;AAC/B,UAAI,QAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACR;AACD,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,SAAS;AAC3B,UAAIC,eAAe,iBAAiB,QAAQ,cAAc;AACzDA,iBAAc,MAAC,YAAY,CAAE;AAC7BA,uBAAe,eAAe,QAAQ;AAAA,MACtC;AACAC,eAAAA,QAAiB,iBAAiB,SAAS,QAAQ,YAAY;AAAA,IACjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -33,6 +33,10 @@ const _hoisted_11 = { class: "cols-2 w-100 gap-small mn-b-semi" };
33
33
  const _hoisted_12 = { class: "w-100 pd-small radius-small bg-grey-transp-10 product-information" };
34
34
  const _hoisted_13 = { class: "t-demi" };
35
35
  const _hoisted_14 = { class: "max-w-33rem mobile-w-100 t-white gap-small cols-2" };
36
+ const _hoisted_15 = {
37
+ key: 1,
38
+ class: "flex-center flex uppercase radius-big t-black w-max pd-small t-medium bg-grey h-3r w-100 mn-r-smallbutton"
39
+ };
36
40
  const _sfc_main = {
37
41
  __name: "SectionProduct",
38
42
  props: {
@@ -131,7 +135,8 @@ const _sfc_main = {
131
135
  }), 256)) : createCommentVNode("", true)
132
136
  ]),
133
137
  createElementVNode("div", _hoisted_14, [
134
- createVNode(_sfc_main$2, {
138
+ __props.product.quantity > 0 ? (openBlock(), createBlock(_sfc_main$2, {
139
+ key: 0,
135
140
  submit: (a) => addToCart(__props.product),
136
141
  disabled: validateToCard(__props.product),
137
142
  text: {
@@ -144,7 +149,7 @@ const _sfc_main = {
144
149
  createTextVNode(toDisplayString(unref(t)("addtoorder")), 1)
145
150
  ]),
146
151
  _: 1
147
- }, 8, ["submit", "disabled"])
152
+ }, 8, ["submit", "disabled"])) : (openBlock(), createElementBlock("div", _hoisted_15, " Out of Stock "))
148
153
  ])
149
154
  ])
150
155
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"SectionProduct.vue.js","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-2-1_2 w-100 gap-thin\">\n\t\t\n\t\t<div class=\"pd-small bg-light radius-big flex-nowrap flex-column flex pos-relative\">\n\t\t\t<div class=\"w-100 bg-light radius-semi o-hidden\">\n\t\t\t\t<!-- PRODUCT IMAGE -->\n\t\t\t\t<Images360\n\t\t\t\t\tv-if=\"product && product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\t:imagePath=\"`/assets/images/products/${product.image3d}`\"\n\t\t\t\t\t:imageCount=\"36\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-auto bg-light w-100\"\n\t\t\t\t\tstyle=\"object-fit: contain;\"\n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + images[0]\"\n\t\t\t\t/>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-if=\"!images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\tstyle=\"object-fit: cover;\"\n\t\t\t\t/>\n\n\t\t\t</div>\n\n\t\t\t<ImagesThumbnails\n\t\t\t\tv-if=\"images.length > 1\"\n\t\t\t\t:images=\"images\"\n\t\t\t\tclass=\"mn-t-thin\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div class=\"pd-big bg-light radius-big pos-relative w-100 h-100 flex-column flex-justify flex col\">\n\n\t\t<!-- <IconEdit\n\t\t\t@click=\"$router.push({\n\t\t\t\tname: 'ProductEdit', \n\t\t\t\tparams: {\n\t\t\t\t\t_id: product.organization,\n\t\t\t\t\tproduct: product._id\n\t\t\t\t}\n\t\t\t})\" \n\t\t\tclass=\"pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t/> -->\n\n\t\t\t<h2 v-if=\"recommendation\" class=\"t-main t-semi p-big\">{{t('airecommend')}}</h2>\n\t\t\t<!-- Name -->\n\t\t\t<h1 class=\"w-100 h1-product mn-b-thin\">{{ product.name }}</h1>\n\t\t\t<!-- Price -->\n\t\t\t<Price :product=\"product\" size=\"big\" class=\"mn-b-semi\" />\n\t\t\t<!-- Modifications -->\n\t\t\t<!-- <div v-if=\"product.modifications.length > 0\" class=\"flex-nojustify flex\">\n\t\t\t\t<SelectElement v-if=\"sizes2.length > 0\" :elements=\"sizes2\" :selected=\"product.selectedSize\" class=\"mn-r-medium\" />\n\t\t\t</div> -->\n\t\t\t<!-- Description -->\n\t\t\t<h3 v-if=\"recommendation\" class=\"mn-b-semi\">\n\t\t\t\t{{ recommendation }}\n\t\t\t</h3>\n\n\n\t\t\t<p v-if=\"product.description && !product.localization < 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ product.description }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"product.localization && product.localization.length > 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ t('description') }}\n\t\t\t</p>\n\n\t\t\t<div \n\t\t\t\tclass=\"cols-2 w-100 gap-small mn-b-semi\"\n\t\t\t>\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"product.information.length > 0\" \n\t\t\t\t\tv-for=\"information in product.information\" \n\t\t\t\t\tclass=\"w-100 pd-small radius-small bg-grey-transp-10 product-information\"\n\t\t\t\t>\n\t\t\t\t\t<p class=\"t-demi\">{{ information.name }}</p>\n\t\t\t\t\t<p>{{ information.value }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Actions -->\n\t\t\t<div class=\"max-w-33rem mobile-w-100 t-white gap-small cols-2\">\n\t\t\t\t<Button\n\t\t\t\t\t:submit=\"a => addToCart(product)\" \n\t\t\t\t\t:disabled=\"validateToCard(product)\" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Button \t\t\t\tfrom '@pf/src/components/Button/Button.vue'\nimport IconEdit from '@pf/src/modules/icons/navigation/IconEdit.vue'\nimport PlaceholderImage from '@pf/src/modules/icons/placeholders/PlaceholderImage.vue'\n\nimport Images360 \tfrom '@pf/src/modules/products/components/blocks/Images360.vue'\nimport ImagesThumbnails from \"@pf/src/modules/products/components/blocks/ImagesThumbnails.vue\";\n\nimport THC from '@pf/src/modules/products/components/elements/THC.vue'\nimport Price from '@pf/src/modules/products/components/elements/Price.vue'\n// import SelectElement \tfrom '@/components/elements/SelectElement.vue'\n\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport * as shopcart from '@pf/src/modules/orders/store/shopcart';\n\n// Props\nconst props = defineProps({\n product: {\n type: Object,\n required: true\n },\n user: {\n type: String,\n },\n recommendation: {\n \ttype: String\n }\n})\n\n// Computed properties\nconst images = computed(() => {\n return props.product.images\n})\n\nconst text = {\n\tmessages: {\n\t en: {\n\t \tairecommend: 'AI Recommends You',\n\t \tdescription: '',\n\t \taddtoorder: 'Add to order',\n\t fastorder: 'Fast Order'\n\t },\n\t ru: {\n\t \tairecommend: 'AI Рекомендует вам',\n\t \tdescription: '',\n\t \taddtoorder: 'Добавить в корзину',\n\t fastorder: 'Быстрый заказ'\n\t }\n\t}\n}\n\n// props.product.localization.forEach(localization => {\n\t// if (localization) text.messages[localization.locale].description = localization.text\n// })\n\n const { t } = useI18n(text)\n\n// Methods\nfunction validateToCard(product) {\n if (product.quantity > 0) {\n return false\n }\n return true\n}\n\nfunction addToCart(product) {\n\tif (shopcart.state.organization !== product.organization) {\n\t\tshopcart.state.positions = []\n\t\tshopcart.state.organization = product.organization\n\t}\n shopcart.actions.addProductToCart(product, product.organization)\n}\n</script>\n"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwHA,UAAM,QAAQ;AAcd,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO,MAAM,QAAQ;AAAA,IACvB,CAAC;AAED,UAAM,OAAO;AAAA,MACZ,UAAU;AAAA,QACR,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,QACD,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAMC,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;AAG3B,aAAS,eAAe,SAAS;AAC/B,UAAI,QAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACR;AACD,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,SAAS;AAC3B,UAAIA,MAAe,iBAAiB,QAAQ,cAAc;AACzDA,cAAe,YAAY,CAAE;AAC7BA,cAAe,eAAe,QAAQ;AAAA,MACtC;AACAC,cAAiB,iBAAiB,SAAS,QAAQ,YAAY;AAAA,IACjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SectionProduct.vue.js","sources":["../../../../../../../src/modules/products/components/sections/SectionProduct.vue"],"sourcesContent":["<template>\n\t<div class=\"cols-2-1_2 w-100 gap-thin\">\n\t\t\n\t\t<div class=\"pd-small bg-light radius-big flex-nowrap flex-column flex pos-relative\">\n\t\t\t<div class=\"w-100 bg-light radius-semi o-hidden\">\n\t\t\t\t<!-- PRODUCT IMAGE -->\n\t\t\t\t<Images360\n\t\t\t\t\tv-if=\"product && product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\t:imagePath=\"`/assets/images/products/${product.image3d}`\"\n\t\t\t\t\t:imageCount=\"36\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-auto bg-light w-100\"\n\t\t\t\t\tstyle=\"object-fit: contain;\"\n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + images[0]\"\n\t\t\t\t/>\n\n\t\t\t\t<PlaceholderImage\n\t\t\t\t\tv-if=\"!images[0] && !product.image3d\"\n\t\t\t\t\tclass=\"h-100 w-100\"\n\t\t\t\t\tstyle=\"object-fit: cover;\"\n\t\t\t\t/>\n\n\t\t\t</div>\n\n\t\t\t<ImagesThumbnails\n\t\t\t\tv-if=\"images.length > 1\"\n\t\t\t\t:images=\"images\"\n\t\t\t\tclass=\"mn-t-thin\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div class=\"pd-big bg-light radius-big pos-relative w-100 h-100 flex-column flex-justify flex col\">\n\n\t\t<!-- <IconEdit\n\t\t\t@click=\"$router.push({\n\t\t\t\tname: 'ProductEdit', \n\t\t\t\tparams: {\n\t\t\t\t\t_id: product.organization,\n\t\t\t\t\tproduct: product._id\n\t\t\t\t}\n\t\t\t})\" \n\t\t\tclass=\"pos-absolute pos-t-regular pos-r-regular i-regular t-transp\"\n\t\t/> -->\n\n\t\t\t<h2 v-if=\"recommendation\" class=\"t-main t-semi p-big\">{{t('airecommend')}}</h2>\n\t\t\t<!-- Name -->\n\t\t\t<h1 class=\"w-100 h1-product mn-b-thin\">{{ product.name }}</h1>\n\t\t\t<!-- Price -->\n\t\t\t<Price :product=\"product\" size=\"big\" class=\"mn-b-semi\" />\n\t\t\t<!-- Modifications -->\n\t\t\t<!-- <div v-if=\"product.modifications.length > 0\" class=\"flex-nojustify flex\">\n\t\t\t\t<SelectElement v-if=\"sizes2.length > 0\" :elements=\"sizes2\" :selected=\"product.selectedSize\" class=\"mn-r-medium\" />\n\t\t\t</div> -->\n\t\t\t<!-- Description -->\n\t\t\t<h3 v-if=\"recommendation\" class=\"mn-b-semi\">\n\t\t\t\t{{ recommendation }}\n\t\t\t</h3>\n\n\n\t\t\t<p v-if=\"product.description && !product.localization < 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ product.description }}\n\t\t\t</p>\n\n\t\t\t<p v-if=\"product.localization && product.localization.length > 1 && !recommendation\" class=\"w-100 mn-b-medium t-transp\">\n\t\t\t\t{{ t('description') }}\n\t\t\t</p>\n\n\t\t\t<div \n\t\t\t\tclass=\"cols-2 w-100 gap-small mn-b-semi\"\n\t\t\t>\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"product.information.length > 0\" \n\t\t\t\t\tv-for=\"information in product.information\" \n\t\t\t\t\tclass=\"w-100 pd-small radius-small bg-grey-transp-10 product-information\"\n\t\t\t\t>\n\t\t\t\t\t<p class=\"t-demi\">{{ information.name }}</p>\n\t\t\t\t\t<p>{{ information.value }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Actions -->\n\t\t\t<div class=\"max-w-33rem mobile-w-100 t-white gap-small cols-2\">\n\t\t\t\t<Button\n\t\t\t\t\tv-if=\"product.quantity > 0\"\n\t\t\t\t\t:submit=\"a => addToCart(product)\" \n\t\t\t\t\t:disabled=\"validateToCard(product)\" \n\t\t\t\t\t:text=\"{\n\t\t\t\t\t\tsuccess: ' ✔ Added',\n\t\t\t\t\t\terror: 'error'\n\t\t\t\t\t}\"\n\t\t\t\t\tclass=\"h-3r w-100 mn-r-small bg-main button\"\n\t\t\t\t> \n\t\t\t\t\t\t{{ t('addtoorder') }}\n\t\t\t\t</Button>\n\t\t\t\t<div v-else class=\"flex-center flex uppercase radius-big t-black w-max pd-small t-medium bg-grey h-3r w-100 mn-r-smallbutton\">\n\t\t\t\t\tOut of Stock\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\nimport Button \t\t\t\tfrom '@pf/src/components/Button/Button.vue'\nimport IconEdit from '@pf/src/modules/icons/navigation/IconEdit.vue'\nimport PlaceholderImage from '@pf/src/modules/icons/placeholders/PlaceholderImage.vue'\n\nimport Images360 \tfrom '@pf/src/modules/products/components/blocks/Images360.vue'\nimport ImagesThumbnails from \"@pf/src/modules/products/components/blocks/ImagesThumbnails.vue\";\n\nimport THC from '@pf/src/modules/products/components/elements/THC.vue'\nimport Price from '@pf/src/modules/products/components/elements/Price.vue'\n// import SelectElement \tfrom '@/components/elements/SelectElement.vue'\n\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport * as shopcart from '@pf/src/modules/orders/store/shopcart';\n\n// Props\nconst props = defineProps({\n product: {\n type: Object,\n required: true\n },\n user: {\n type: String,\n },\n recommendation: {\n \ttype: String\n }\n})\n\n// Computed properties\nconst images = computed(() => {\n return props.product.images\n})\n\nconst text = {\n\tmessages: {\n\t en: {\n\t \tairecommend: 'AI Recommends You',\n\t \tdescription: '',\n\t \taddtoorder: 'Add to order',\n\t fastorder: 'Fast Order'\n\t },\n\t ru: {\n\t \tairecommend: 'AI Рекомендует вам',\n\t \tdescription: '',\n\t \taddtoorder: 'Добавить в корзину',\n\t fastorder: 'Быстрый заказ'\n\t }\n\t}\n}\n\n// props.product.localization.forEach(localization => {\n\t// if (localization) text.messages[localization.locale].description = localization.text\n// })\n\n const { t } = useI18n(text)\n\n// Methods\nfunction validateToCard(product) {\n if (product.quantity > 0) {\n return false\n }\n return true\n}\n\nfunction addToCart(product) {\n\tif (shopcart.state.organization !== product.organization) {\n\t\tshopcart.state.positions = []\n\t\tshopcart.state.organization = product.organization\n\t}\n shopcart.actions.addProductToCart(product, product.organization)\n}\n</script>\n"],"names":["shopcart.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4HA,UAAM,QAAQ;AAcd,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO,MAAM,QAAQ;AAAA,IACvB,CAAC;AAED,UAAM,OAAO;AAAA,MACZ,UAAU;AAAA,QACR,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,QACD,IAAI;AAAA,UACH,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACX,WAAW;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAMC,UAAM,EAAE,EAAC,IAAK,QAAQ,IAAI;AAG3B,aAAS,eAAe,SAAS;AAC/B,UAAI,QAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACR;AACD,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,SAAS;AAC3B,UAAIA,MAAe,iBAAiB,QAAQ,cAAc;AACzDA,cAAe,YAAY,CAAE;AAC7BA,cAAe,eAAe,QAAQ;AAAA,MACtC;AACAC,cAAiB,iBAAiB,SAAS,QAAQ,YAAY;AAAA,IACjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Popup = require("../../../../components/Popup/Popup.vue2.cjs");
4
+ const Popup = require("../../../../components/Popup/Popup.vue.cjs");
5
5
  const Button = require("../../../../components/Button/Button.vue2.cjs");
6
- const Select = require("../../../../components/Select/Select.vue2.cjs");
6
+ const Select = require("../../../../components/Select/Select.vue.cjs");
7
7
  const reports = require("../../store/reports.cjs");
8
8
  const _hoisted_1 = /* @__PURE__ */ vue.createElementVNode("h3", { class: "mn-b-small" }, " Report Content ", -1);
9
9
  const _hoisted_2 = /* @__PURE__ */ vue.createElementVNode("p", { class: "p-medium mn-b-small" }, " We strive to maintain a safe and comfortable environment for all users. If you encounter content that you believe violates our guidelines, please report it: ", -1);
@@ -1,7 +1,7 @@
1
1
  import { reactive, ref, openBlock, createElementBlock, renderSlot, createVNode, withCtx, createTextVNode, createElementVNode } from "vue";
2
- import _sfc_main$1 from "../../../../components/Popup/Popup.vue2.js";
2
+ import _sfc_main$1 from "../../../../components/Popup/Popup.vue.js";
3
3
  import _sfc_main$2 from "../../../../components/Button/Button.vue2.js";
4
- import Select from "../../../../components/Select/Select.vue2.js";
4
+ import Select from "../../../../components/Select/Select.vue.js";
5
5
  import { actions } from "../../store/reports.js";
6
6
  const _hoisted_1 = /* @__PURE__ */ createElementVNode("h3", { class: "mn-b-small" }, " Report Content ", -1);
7
7
  const _hoisted_2 = /* @__PURE__ */ createElementVNode("p", { class: "p-medium mn-b-small" }, " We strive to maintain a safe and comfortable environment for all users. If you encounter content that you believe violates our guidelines, please report it: ", -1);
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
5
- const Chips = require("../../../../components/Chips/Chips.vue.cjs");
5
+ const Chips = require("../../../../components/Chips/Chips.vue2.cjs");
6
6
  const Map = require("../../../../components/Map/Map.vue.cjs");
7
7
  ;/* empty css */
8
8
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
@@ -1,6 +1,6 @@
1
1
  import { openBlock, createElementBlock, createVNode, createElementVNode, toDisplayString, createBlock, createCommentVNode, pushScopeId, popScopeId } from "vue";
2
2
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
3
- import _sfc_main$2 from "../../../../components/Chips/Chips.vue.js";
3
+ import _sfc_main$2 from "../../../../components/Chips/Chips.vue2.js";
4
4
  import Map from "../../../../components/Map/Map.vue.js";
5
5
  /* empty css */
6
6
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  ;/* empty css */
5
5
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
6
- ;/* empty css */
6
+ ;/* empty css */
7
7
  ;/* empty css */
8
8
  const _hoisted_1 = { class: "br-grey-transp-25 radius-small mn-b-small" };
9
9
  const _hoisted_2 = {
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, resolveComponent, openBlock, createElementBlock, createElementVNode, createBlock, toDisplayString, createCommentVNode } from "vue";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  /* empty css */
6
6
  const _hoisted_1 = { class: "br-grey-transp-25 radius-small mn-b-small" };
7
7
  const _hoisted_2 = {