@ozdao/martyrs 0.2.542 → 0.2.544

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 (346) hide show
  1. package/dist/builder.cjs +10 -2
  2. package/dist/builder.js +10 -2
  3. package/dist/{main-Czyu-VcC.cjs → main-8f945Ngn.cjs} +7 -7
  4. package/dist/{main-ByKkD9qa.js → main-d9n_ibdE.js} +2621 -2622
  5. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
  6. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
  7. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  8. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  9. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +4 -2
  10. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -1
  11. package/dist/martyrs/src/components/Feed/Carousel.vue.js +5 -3
  12. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
  13. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs → Feed.vue2.cjs} +7 -5
  14. package/dist/martyrs/src/components/Feed/Feed.vue2.cjs.map +1 -0
  15. package/dist/martyrs/src/components/Feed/{Feed.vue.js → Feed.vue2.js} +7 -5
  16. package/dist/martyrs/src/components/Feed/Feed.vue2.js.map +1 -0
  17. package/dist/martyrs/src/components/Field/{Field.vue.cjs → Field.vue2.cjs} +2 -2
  18. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +1 -0
  19. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  20. package/dist/martyrs/src/components/Field/{Field.vue.cjs.map → Field.vue2.js.map} +1 -1
  21. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  22. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  23. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs → BlockTags.vue2.cjs} +2 -2
  24. package/dist/martyrs/src/components/FieldTags/BlockTags.vue2.cjs.map +1 -0
  25. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.js → BlockTags.vue2.js} +2 -2
  26. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs.map → BlockTags.vue2.js.map} +1 -1
  27. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  28. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  29. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  30. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  31. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs +3 -1
  32. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -1
  33. package/dist/martyrs/src/components/Tab/Tab.vue2.js +4 -2
  34. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -1
  35. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.cjs → UploadImage.vue2.cjs} +7 -7
  36. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs.map +1 -0
  37. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.js → UploadImage.vue2.js} +7 -7
  38. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js.map +1 -0
  39. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  40. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +3 -3
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  59. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -1
  60. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -1
  61. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +2 -7
  62. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  63. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +2 -7
  64. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  65. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +2 -13
  66. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  67. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +2 -13
  68. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  69. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  71. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js +1 -1
  73. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +3 -3
  74. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +3 -3
  75. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +1 -1
  77. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +2 -2
  78. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +2 -2
  79. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  81. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +4 -4
  82. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  83. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +2 -2
  84. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  85. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +7 -5
  86. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +7 -5
  88. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  90. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  91. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  93. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js +1 -1
  95. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
  98. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  99. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs +38 -30
  100. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js +39 -31
  102. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js.map +1 -1
  103. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +1 -1
  105. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  107. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  109. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +3 -1
  110. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
  111. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +3 -1
  112. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  115. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +7 -7
  116. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -1
  117. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +8 -8
  118. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -1
  119. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +1 -0
  120. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  122. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
  123. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +21 -1
  124. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  125. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +21 -1
  126. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  127. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +1 -1
  129. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  131. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  133. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +3 -3
  134. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +2 -2
  135. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +3 -3
  136. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
  137. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +2 -2
  138. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs.map +1 -1
  139. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  140. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +1 -1
  143. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +1 -1
  145. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +2 -2
  146. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  147. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  148. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  149. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +2 -2
  150. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  151. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +2 -2
  152. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  153. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +2 -2
  154. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  155. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +1 -1
  157. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  159. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +2 -2
  160. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  161. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +2 -2
  162. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs +7 -5
  164. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +8 -6
  166. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  169. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
  170. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  171. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  173. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +1 -1
  174. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +1 -1
  175. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +1 -1
  176. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +1 -1
  177. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +5 -3
  178. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  179. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +5 -3
  180. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  181. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +4 -4
  182. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +4 -4
  184. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  185. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +8 -6
  186. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs.map +1 -1
  187. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +8 -6
  188. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs +3 -1
  190. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  191. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +3 -1
  192. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  193. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +3 -3
  194. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -3
  195. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +7 -7
  196. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +7 -7
  197. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  198. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  199. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +3 -3
  200. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +3 -3
  201. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +1 -1
  202. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  203. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +7 -7
  204. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +7 -7
  205. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +7 -7
  206. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +7 -7
  207. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +6 -6
  208. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +6 -6
  209. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  211. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +3 -3
  212. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  213. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  215. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  217. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +2 -2
  218. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  219. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  220. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  221. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  222. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  223. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  224. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  225. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  226. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  227. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
  228. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
  230. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +1 -1
  233. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +4 -2
  234. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  235. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +5 -3
  236. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +4 -2
  238. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  239. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +5 -3
  240. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  241. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.cjs → THC.vue2.cjs} +2 -2
  242. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.cjs.map +1 -0
  243. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.js → THC.vue2.js} +2 -2
  244. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.js.map +1 -0
  245. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +5 -2
  246. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  247. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +5 -2
  248. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +4 -4
  250. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
  251. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  252. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  253. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +8 -8
  254. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  255. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +8 -8
  256. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  257. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  258. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  259. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  260. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  261. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
  262. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
  263. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +1 -1
  264. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  265. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +5 -3
  266. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  267. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +5 -3
  268. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  270. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  271. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  272. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  273. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  274. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  275. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +2 -2
  276. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +2 -2
  277. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  278. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  279. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +2 -2
  280. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  281. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  282. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  283. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +1 -1
  284. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +1 -1
  285. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  286. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  287. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  288. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  289. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  290. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  291. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.cjs +1 -1
  292. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
  293. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  294. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  295. package/dist/martyrs.cjs.js +1 -1
  296. package/dist/martyrs.css +1 -1
  297. package/dist/martyrs.es.js +1 -1
  298. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  299. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  300. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  301. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  302. package/dist/style.css +23 -23
  303. package/dist/{web-BklgIiYr.js → web-BkaOiiSn.js} +1 -1
  304. package/dist/{web-CQBm7C6L.cjs → web-CROHFHoW.cjs} +1 -1
  305. package/package.json +1 -1
  306. package/src/builder/modes/ssr.prod.js +2 -0
  307. package/src/builder/modes/ssr.rspack.dev.js +2 -0
  308. package/src/builder/templates/page.js +4 -0
  309. package/src/builder/templates/screen.js +4 -0
  310. package/src/components/Feed/Carousel.vue +3 -0
  311. package/src/components/Feed/Feed.vue +3 -0
  312. package/src/components/Tab/Tab.vue +2 -0
  313. package/src/components/UploadImage/UploadImage.vue +4 -4
  314. package/src/modules/community/components/blocks/CardBlogpost.vue +2 -7
  315. package/src/modules/community/components/blocks/FooterBlogpost.vue +2 -13
  316. package/src/modules/events/components/pages/Event.vue +2 -0
  317. package/src/modules/globals/TASK.MD +105 -1
  318. package/src/modules/globals/views/classes/globals.app.js +76 -48
  319. package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +2 -0
  320. package/src/modules/globals/views/components/sections/Filters.vue +1 -1
  321. package/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  322. package/src/modules/globals/views/utils/vue-app-renderer.js +25 -1
  323. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  324. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -0
  325. package/src/modules/orders/components/blocks/CardOrderVar1.vue +12 -1
  326. package/src/modules/orders/components/pages/OrderBackoffice.vue +2 -0
  327. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +1 -1
  328. package/src/modules/orders/components/pages/Orders.vue +2 -0
  329. package/src/modules/orders/components/partials/ShopCart.vue +2 -0
  330. package/src/modules/products/components/blocks/CardCategory.vue +6 -0
  331. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -0
  332. package/src/modules/products/components/elements/Price.vue +3 -0
  333. package/src/modules/products/components/pages/Categories.vue +4 -1
  334. package/src/modules/products/components/pages/Products.vue +1 -1
  335. package/src/modules/products/components/sections/EditVariants.vue +2 -0
  336. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
  337. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +0 -1
  338. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +0 -1
  339. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  340. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +0 -1
  341. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  342. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  343. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +0 -1
  344. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +0 -1
  345. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs.map +0 -1
  346. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCreateBackoffice.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreateBackoffice.vue"],"sourcesContent":["<template>\n <div class=\"flex flex-column pd-thin\">\n <Block class=\"mn-b-thin\">\n <header class=\"flex-v-center flex-nowrap flex\">\n <h2 class=\"mn-r-auto\">Create Order</h2>\n <Button \n :submit=\"onSubmit\"\n :callback=\"redirectTo\"\n class=\"pd-small radius-big bg-main t-black uppercase t-medium\"\n >\n Add Order \n </Button>\n </header>\n </Block>\n\n <Tab \n v-model:selected=\"tabOrderCreate\"\n :tabs=\"[\n {name: 'Positions', value: 'positions'},\n {name: 'Customer', value: 'customer'},\n {name: 'Delivery', value: 'delivery'},\n {name: 'Payment', value: 'payment'}\n ]\"\n class=\"t-medium radius-medium bg-light mn-b-small\"\n />\n\n <Popup \n @close-popup=\"closeProductsPopup\" \n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white flex flex-column radius-big pd-medium pos-relative\"\n >\n\n <h3 class=\"mn-b-small\">Add to order</h3>\n\n <div class=\"bg-light h-max-100 mn-b-thin o-scroll pd-medium radius-big\">\n <Feed\n :showLoadMore=\"false\"\n :search=\"{\n placeholder: 'Search products...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n },\n skeleton: {\n hide: true\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\" \n :key=\"`${product._id}_${index}`\"\n :editable=\"false\" \n :productId=\"product._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </div>\n </Popup>\n\n <!-- Popup for selecting variant of the product -->\n <Popup \n title=\"Select variant\" \n @close-popup=\"closeVariantsPopup\" \n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct?._id,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div \n v-for=\"(variant, index) in items\" \n :key=\"index\"\n @click=\"addVariantToOrder(variant)\"\n class=\"w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img \n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\" \n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"t-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.price || variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block\n v-if=\"tabOrderCreate === 'positions'\"\n title=\"Positions\"\n :actions=\"[{\n label: '+',\n function: () => openProductsPopup()\n }]\"\n class=\"mn-b-small\"\n >\n <span \n v-if=\"orders.state.current.positions.length === 0\" \n class=\"w-100\"\n >\n No positions added yet\n </span> \n\n <CardOrderItem\n v-for=\"(product, index) in orders.state.current.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => incrementOrderItemQuantity(product._id, product.variant)\"\n :decrease=\"() => decrementOrderItemQuantity(product._id, product.variant)\"\n :remove=\"() => removeOrderItem(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => updateOrderRentDates(productId, variantId, dates)\"\n class=\"mn-b-thin pd-thin radius-medium bg-white\"\n /> \n </Block>\n\n <FormSelectCustomer\n v-if=\"tabOrderCreate === 'customer'\"\n v-model:customer=\"orders.state.current.customer\"\n class=\"mn-b-semi\"\n />\n\n <FormDelivery \n v-if=\"tabOrderCreate === 'delivery'\" \n :order=\"orders.state.current\"\n :organization=\"orderOrganization[0]\" \n />\n\n <FormPayment \n v-if=\"tabOrderCreate === 'payment'\"\n :order=\"orders.state.current\" \n :organization=\"orderOrganization[0]\" \n />\n\n\n <Block\n class=\"mn-b-semi\"\n >\n <div class=\"h3 flex\">\n <span class=\"mn-r-auto t-transp\">In total</span>\n <span>{{ cartTotalPrice }} {{returnCurrency()}} </span >\n </div>\n </Block>\n</div>\n\n\n</template>\n\n<script setup=\"props\">\n import { computed, ref, defineProps, onMounted, reactive, toRefs, watch, getCurrentInstance } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n\n import Field from '@martyrs/src/components/Field/Field.vue'\n import Button from \"@martyrs/src/components/Button/Button.vue\"; \n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\timport Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n import CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\n import CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue'\n\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n\n import FormSelectCustomer from '@martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue'\n import FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\n import FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n\n // Import your store\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import variants from '@martyrs/src/modules/products/store/variants.store.js';\n\n import customers from '@martyrs/src/modules/orders/store/customers.store';\n \n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\t\n // Accessing router\n const route = useRoute()\n const router = useRouter()\n const { proxy } = getCurrentInstance()\n const { formatPrice } = useGlobalMixins()\n\n orders.mutations.resetOrder(orders.state.current)\n\n let cartTotalPrice = computed(() => {\n return Number(orders.state.current.positions.reduce((total, product) => {\n if (product.listing === 'rent' && product.date?.start && product.date?.end) {\n const start = new Date(product.date.start);\n const end = new Date(product.date.end);\n const days = Math.ceil(Math.abs(end - start) / (1000 * 60 * 60 * 24)) + 1;\n return total + product.price * product.quantity * days;\n } else {\n return total + product.price * product.quantity;\n }\n }, 0));\n })\n\n // Tab\n const tabOrderCreate = ref('positions')\n\n // Popup\n const isOpenProductsPopup = ref(false);\n const isVariantsPopupOpen = ref(false);\n const selectedProduct = ref(null);\n\n function openProductsPopup() {\n isOpenProductsPopup.value = true;\n }\n\n function closeProductsPopup() {\n isOpenProductsPopup.value = false;\n }\n\n function closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = null;\n }\n\n function selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n \n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToOrder(product.variants[0]);\n return;\n }\n \n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n }\n\n function formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n return attrs?.length\n ? `${product.name} / ${attrs.join(' / ')}`\n : `${product.name} / ${variant.name}`;\n }\n\n async function addVariantToOrder(variant) {\n try {\n let selectedDates = null;\n \n // Если товар для аренды, сначала выбираем даты\n if (selectedProduct.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n selectedProduct.value._id,\n variant._id,\n 1,\n variant.price || selectedProduct.value.price\n );\n \n if (!selectedDates) {\n // Если отменили выбор дат, возвращаемся к выбору вариантов\n return;\n }\n }\n \n const position = {\n _id: selectedProduct.value._id,\n images: variant.images?.length > 0 ? variant.images : selectedProduct.value.images,\n name: formatProductName(selectedProduct.value, variant),\n listing: selectedProduct.value.listing,\n price: variant.price || selectedProduct.value.price,\n quantity: 1,\n unit: variant.unit || selectedProduct.value.unit,\n date: selectedDates,\n variant: variant._id,\n org_id: route.params._id\n };\n \n globals.actions.add(orders.state.current.positions, position);\n closeVariantsPopup();\n } catch (error) {\n console.error('Error adding variant to order:', error);\n }\n }\n\n\n // Функции управления позициями заказа\n function incrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity++;\n }\n }\n\n function decrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity--;\n \n if (orderItem.quantity < 1) {\n removeOrderItem(productId, variantId);\n }\n }\n }\n\n function removeOrderItem(productId, variantId) {\n const itemIndex = orders.state.current.positions.findIndex(item => \n item._id === productId && item.variant === variantId\n );\n \n if (itemIndex > -1) {\n orders.state.current.positions.splice(itemIndex, 1);\n }\n }\n\n function updateOrderRentDates(productId, variantId, dates) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.date = dates;\n }\n }\n\n // Data\n let order = ref(null)\n\n async function onSubmit() {\n\n orders.state.current.creator = {\n type: 'User',\n target: auth.state.user._id\n }\n\n orders.state.current.owner = {\n type: 'Organization',\n target: route.params._id,\n }\n\n orders.state.current.customer = {\n type: 'Customer',\n target: orders.state.current.customer._id || null,\n }\n\n order.value = await orders.actions.create(orders.state.current)\n }\n\n function redirectTo () {\n router.push({\n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit',\n params: { \n order: order.value._id,\n _id: route.params._id\n } \n })\n }\n\n const orderOrganization = ref({})\n\n\n\n onMounted(async() => {\n\n orderOrganization.value = await organizations.actions.read({\n _id: route.params._id,\n lookup: ['spots']\n })\n\n // await orders.actions.fetchOrder(route.params.id) // Implement this action in your store\n\n // order.value = orders.state.current\n })\n\n</script>\n\n\n<style lang=\"scss\">\n\n.vue-select {\n width: inherit;\n\n margin-right: 1rem;\n}\n.vue-select-header {\n height: 3rem;\n}\n</style>\n"],"names":["useRoute","useRouter","getCurrentInstance","useGlobalMixins","orders.mutations","orders.state","computed","ref","globals.actions","auth.state","orders.actions","onMounted","organizations.actions"],"mappings":"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"}
1
+ {"version":3,"file":"OrderCreateBackoffice.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreateBackoffice.vue"],"sourcesContent":["<template>\n <div class=\"flex flex-column pd-thin\">\n <Block class=\"mn-b-thin\">\n <header class=\"flex-v-center flex-nowrap flex\">\n <h2 class=\"mn-r-auto\">Create Order</h2>\n <Button \n :submit=\"onSubmit\"\n :callback=\"redirectTo\"\n class=\"pd-small radius-big bg-main t-black uppercase t-medium\"\n >\n Add Order \n </Button>\n </header>\n </Block>\n\n <Tab \n v-model:selected=\"tabOrderCreate\"\n :tabs=\"[\n {name: 'Positions', value: 'positions'},\n {name: 'Customer', value: 'customer'},\n {name: 'Delivery', value: 'delivery'},\n {name: 'Payment', value: 'payment'}\n ]\"\n class=\"t-medium radius-medium bg-light mn-b-small\"\n />\n\n <Popup \n @close-popup=\"closeProductsPopup\" \n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white flex flex-column radius-big pd-medium pos-relative\"\n >\n\n <h3 class=\"mn-b-small\">Add to order</h3>\n\n <div class=\"bg-light h-max-100 mn-b-thin o-scroll pd-medium radius-big\">\n <Feed\n :showLoadMore=\"false\"\n :search=\"{\n placeholder: 'Search products...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n },\n skeleton: {\n hide: true\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\" \n :key=\"`${product._id}_${index}`\"\n :editable=\"false\" \n :productId=\"product._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </div>\n </Popup>\n\n <!-- Popup for selecting variant of the product -->\n <Popup \n title=\"Select variant\" \n @close-popup=\"closeVariantsPopup\" \n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct?._id,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div \n v-for=\"(variant, index) in items\" \n :key=\"index\"\n @click=\"addVariantToOrder(variant)\"\n class=\"w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img \n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\" \n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"t-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.price || variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block\n v-if=\"tabOrderCreate === 'positions'\"\n title=\"Positions\"\n :actions=\"[{\n label: '+',\n function: () => openProductsPopup()\n }]\"\n class=\"mn-b-small\"\n >\n <span \n v-if=\"orders.state.current.positions.length === 0\" \n class=\"w-100\"\n >\n No positions added yet\n </span> \n\n <CardOrderItem\n v-for=\"(product, index) in orders.state.current.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => incrementOrderItemQuantity(product._id, product.variant)\"\n :decrease=\"() => decrementOrderItemQuantity(product._id, product.variant)\"\n :remove=\"() => removeOrderItem(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => updateOrderRentDates(productId, variantId, dates)\"\n class=\"mn-b-thin pd-thin radius-medium bg-white\"\n /> \n </Block>\n\n <FormSelectCustomer\n v-if=\"tabOrderCreate === 'customer'\"\n v-model:customer=\"orders.state.current.customer\"\n class=\"mn-b-semi\"\n />\n\n <FormDelivery \n v-if=\"tabOrderCreate === 'delivery'\" \n :order=\"orders.state.current\"\n :organization=\"orderOrganization[0]\" \n />\n\n <FormPayment \n v-if=\"tabOrderCreate === 'payment'\"\n :order=\"orders.state.current\" \n :organization=\"orderOrganization[0]\" \n />\n\n\n <Block\n class=\"mn-b-semi\"\n >\n <div class=\"h3 flex\">\n <span class=\"mn-r-auto t-transp\">In total</span>\n <span>{{ cartTotalPrice }} {{returnCurrency()}} </span >\n </div>\n </Block>\n</div>\n\n\n</template>\n\n<script setup=\"props\">\n import { computed, ref, defineProps, onMounted, reactive, toRefs, watch, getCurrentInstance } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n\n import Field from '@martyrs/src/components/Field/Field.vue'\n import Button from \"@martyrs/src/components/Button/Button.vue\"; \n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\timport Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n import CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\n import CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue'\n\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n\n import FormSelectCustomer from '@martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue'\n import FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\n import FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n\n // Import your store\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import variants from '@martyrs/src/modules/products/store/variants.store.js';\n\n import customers from '@martyrs/src/modules/orders/store/customers.store';\n \n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\t\n // Accessing router\n const route = useRoute()\n const router = useRouter()\n const { proxy } = getCurrentInstance()\n const { formatPrice, returnCurrency } = useGlobalMixins()\n\n orders.mutations.resetOrder(orders.state.current)\n\n let cartTotalPrice = computed(() => {\n return Number(orders.state.current.positions.reduce((total, product) => {\n if (product.listing === 'rent' && product.date?.start && product.date?.end) {\n const start = new Date(product.date.start);\n const end = new Date(product.date.end);\n const days = Math.ceil(Math.abs(end - start) / (1000 * 60 * 60 * 24)) + 1;\n return total + product.price * product.quantity * days;\n } else {\n return total + product.price * product.quantity;\n }\n }, 0));\n })\n\n // Tab\n const tabOrderCreate = ref('positions')\n\n // Popup\n const isOpenProductsPopup = ref(false);\n const isVariantsPopupOpen = ref(false);\n const selectedProduct = ref(null);\n\n function openProductsPopup() {\n isOpenProductsPopup.value = true;\n }\n\n function closeProductsPopup() {\n isOpenProductsPopup.value = false;\n }\n\n function closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = null;\n }\n\n function selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n \n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToOrder(product.variants[0]);\n return;\n }\n \n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n }\n\n function formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n return attrs?.length\n ? `${product.name} / ${attrs.join(' / ')}`\n : `${product.name} / ${variant.name}`;\n }\n\n async function addVariantToOrder(variant) {\n try {\n let selectedDates = null;\n \n // Если товар для аренды, сначала выбираем даты\n if (selectedProduct.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n selectedProduct.value._id,\n variant._id,\n 1,\n variant.price || selectedProduct.value.price\n );\n \n if (!selectedDates) {\n // Если отменили выбор дат, возвращаемся к выбору вариантов\n return;\n }\n }\n \n const position = {\n _id: selectedProduct.value._id,\n images: variant.images?.length > 0 ? variant.images : selectedProduct.value.images,\n name: formatProductName(selectedProduct.value, variant),\n listing: selectedProduct.value.listing,\n price: variant.price || selectedProduct.value.price,\n quantity: 1,\n unit: variant.unit || selectedProduct.value.unit,\n date: selectedDates,\n variant: variant._id,\n org_id: route.params._id\n };\n \n globals.actions.add(orders.state.current.positions, position);\n closeVariantsPopup();\n } catch (error) {\n console.error('Error adding variant to order:', error);\n }\n }\n\n\n // Функции управления позициями заказа\n function incrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity++;\n }\n }\n\n function decrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity--;\n \n if (orderItem.quantity < 1) {\n removeOrderItem(productId, variantId);\n }\n }\n }\n\n function removeOrderItem(productId, variantId) {\n const itemIndex = orders.state.current.positions.findIndex(item => \n item._id === productId && item.variant === variantId\n );\n \n if (itemIndex > -1) {\n orders.state.current.positions.splice(itemIndex, 1);\n }\n }\n\n function updateOrderRentDates(productId, variantId, dates) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.date = dates;\n }\n }\n\n // Data\n let order = ref(null)\n\n async function onSubmit() {\n\n orders.state.current.creator = {\n type: 'User',\n target: auth.state.user._id\n }\n\n orders.state.current.owner = {\n type: 'Organization',\n target: route.params._id,\n }\n\n orders.state.current.customer = {\n type: 'Customer',\n target: orders.state.current.customer._id || null,\n }\n\n order.value = await orders.actions.create(orders.state.current)\n }\n\n function redirectTo () {\n router.push({\n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit',\n params: { \n order: order.value._id,\n _id: route.params._id\n } \n })\n }\n\n const orderOrganization = ref({})\n\n\n\n onMounted(async() => {\n\n orderOrganization.value = await organizations.actions.read({\n _id: route.params._id,\n lookup: ['spots']\n })\n\n // await orders.actions.fetchOrder(route.params.id) // Implement this action in your store\n\n // order.value = orders.state.current\n })\n\n</script>\n\n\n<style lang=\"scss\">\n\n.vue-select {\n width: inherit;\n\n margin-right: 1rem;\n}\n.vue-select-header {\n height: 3rem;\n}\n</style>\n"],"names":["useRoute","useRouter","getCurrentInstance","useGlobalMixins","orders.mutations","orders.state","computed","ref","globals.actions","auth.state","orders.actions","onMounted","organizations.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwOE,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AACxB,UAAM,EAAE,MAAK,IAAKC,IAAAA,mBAAkB;AACpC,UAAM,EAAE,aAAa,eAAc,IAAKC,OAAAA,gBAAe;AAEtDC,qBAAiB,WAAWC,OAAAA,MAAa,OAAO;AAEjD,QAAI,iBAAiBC,IAAAA,SAAS,MAAM;AAClC,aAAO,OAAOD,OAAAA,MAAa,QAAQ,UAAU,OAAO,CAAC,OAAO,YAAY;AACtE,YAAI,QAAQ,YAAY,UAAU,QAAQ,MAAM,SAAS,QAAQ,MAAM,KAAK;AAC1E,gBAAM,QAAQ,IAAI,KAAK,QAAQ,KAAK,KAAK;AACzC,gBAAM,MAAM,IAAI,KAAK,QAAQ,KAAK,GAAG;AACrC,gBAAM,OAAO,KAAK,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,MAAO,KAAK,KAAK,GAAG,IAAI;AACxE,iBAAO,QAAQ,QAAQ,QAAQ,QAAQ,WAAW;AAAA,QACpD,OAAO;AACL,iBAAO,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,QACzC;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP,CAAC;AAGD,UAAM,iBAAiBE,IAAAA,IAAI,WAAW;AAGtC,UAAM,sBAAsBA,IAAAA,IAAI,KAAK;AACrC,UAAM,sBAAsBA,IAAAA,IAAI,KAAK;AACrC,UAAM,kBAAkBA,IAAAA,IAAI,IAAI;AAEhC,aAAS,oBAAoB;AAC3B,0BAAoB,QAAQ;AAAA,IAC9B;AAEA,aAAS,qBAAqB;AAC5B,0BAAoB,QAAQ;AAAA,IAC9B;AAEA,aAAS,qBAAqB;AAC5B,0BAAoB,QAAQ;AAC5B,sBAAgB,QAAQ;AAAA,IAC1B;AAEA,aAAS,cAAc,SAAS;AAC9B,sBAAgB,QAAQ;AACxB,yBAAkB;AAGlB,UAAI,QAAQ,YAAY,QAAQ,SAAS,WAAW,GAAG;AACrD,0BAAkB,QAAQ,SAAS,CAAC,CAAC;AACrC;AAAA,MACF;AAGA,0BAAoB,QAAQ;AAAA,IAC9B;AAEA,aAAS,kBAAkB,SAAS,SAAS;AAC3C,UAAI,CAAC,WAAW,QAAQ,UAAU,WAAW,KAAK,CAAE,QAAQ,YAAY;AACtE,eAAO,QAAQ;AAEjB,YAAM,QAAQ,QAAQ,YAAY,IAAI,OAAK,EAAE,KAAK,EAAE,OAAO,OAAO;AAClE,aAAO,OAAO,SACV,GAAG,QAAQ,IAAI,MAAM,MAAM,KAAK,KAAK,CAAC,KACtC,GAAG,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvC;AAEA,mBAAe,kBAAkB,SAAS;AACxC,UAAI;AACF,YAAI,gBAAgB;AAGpB,YAAI,gBAAgB,MAAM,YAAY,QAAQ;AAC5C,0BAAgB,MAAM,MAAM;AAAA,YAC1B,gBAAgB,MAAM;AAAA,YACtB,QAAQ;AAAA,YACR;AAAA,YACA,QAAQ,SAAS,gBAAgB,MAAM;AAAA,UACjD;AAEQ,cAAI,CAAC,eAAe;AAElB;AAAA,UACF;AAAA,QACF;AAEA,cAAM,WAAW;AAAA,UACf,KAAK,gBAAgB,MAAM;AAAA,UAC3B,QAAQ,QAAQ,QAAQ,SAAS,IAAI,QAAQ,SAAS,gBAAgB,MAAM;AAAA,UAC5E,MAAM,kBAAkB,gBAAgB,OAAO,OAAO;AAAA,UACtD,SAAS,gBAAgB,MAAM;AAAA,UAC/B,OAAO,QAAQ,SAAS,gBAAgB,MAAM;AAAA,UAC9C,UAAU;AAAA,UACV,MAAM,QAAQ,QAAQ,gBAAgB,MAAM;AAAA,UAC5C,MAAM;AAAA,UACN,SAAS,QAAQ;AAAA,UACjB,QAAQ,MAAM,OAAO;AAAA,QAC7B;AAEMC,gBAAAA,QAAgB,IAAIH,OAAAA,MAAa,QAAQ,WAAW,QAAQ;AAC5D,2BAAkB;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,kCAAkC,KAAK;AAAA,MACvD;AAAA,IACF;AAIA,aAAS,2BAA2B,WAAW,WAAW;AACxD,YAAM,YAAYA,OAAAA,MAAa,QAAQ,UAAU;AAAA,QAAK,UACpD,KAAK,QAAQ,aAAa,KAAK,YAAY;AAAA,MACjD;AAEI,UAAI,WAAW;AACb,kBAAU;AAAA,MACZ;AAAA,IACF;AAEA,aAAS,2BAA2B,WAAW,WAAW;AACxD,YAAM,YAAYA,OAAAA,MAAa,QAAQ,UAAU;AAAA,QAAK,UACpD,KAAK,QAAQ,aAAa,KAAK,YAAY;AAAA,MACjD;AAEI,UAAI,WAAW;AACb,kBAAU;AAEV,YAAI,UAAU,WAAW,GAAG;AAC1B,0BAAgB,WAAW,SAAS;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAEA,aAAS,gBAAgB,WAAW,WAAW;AAC7C,YAAM,YAAYA,OAAAA,MAAa,QAAQ,UAAU;AAAA,QAAU,UACzD,KAAK,QAAQ,aAAa,KAAK,YAAY;AAAA,MACjD;AAEI,UAAI,YAAY,IAAI;AAClBA,eAAAA,MAAa,QAAQ,UAAU,OAAO,WAAW,CAAC;AAAA,MACpD;AAAA,IACF;AAEA,aAAS,qBAAqB,WAAW,WAAW,OAAO;AACzD,YAAM,YAAYA,OAAAA,MAAa,QAAQ,UAAU;AAAA,QAAK,UACpD,KAAK,QAAQ,aAAa,KAAK,YAAY;AAAA,MACjD;AAEI,UAAI,WAAW;AACb,kBAAU,OAAO;AAAA,MACnB;AAAA,IACF;AAGA,QAAI,QAAQE,IAAAA,IAAI,IAAI;AAEpB,mBAAe,WAAW;AAExBF,aAAAA,MAAa,QAAQ,UAAU;AAAA,QAC7B,MAAM;AAAA,QACN,QAAQI,KAAAA,MAAW,KAAK;AAAA,MAC9B;AAEIJ,aAAAA,MAAa,QAAQ,QAAQ;AAAA,QAC3B,MAAM;AAAA,QACN,QAAQ,MAAM,OAAO;AAAA,MAC3B;AAEIA,aAAAA,MAAa,QAAQ,WAAW;AAAA,QAC9B,MAAM;AAAA,QACN,QAAQA,OAAAA,MAAa,QAAQ,SAAS,OAAO;AAAA,MACnD;AAEI,YAAM,QAAQ,MAAMK,OAAAA,QAAe,OAAOL,OAAAA,MAAa,OAAO;AAAA,IAChE;AAEA,aAAS,aAAc;AACrB,aAAO,KAAK;AAAA,QACV,MAAM,MAAM,KAAK,YAAY,eAAe,wBAAwB;AAAA,QACpE,QAAQ;AAAA,UACN,OAAO,MAAM,MAAM;AAAA,UACnB,KAAK,MAAM,OAAO;AAAA,QAC1B;AAAA,MACA,CAAK;AAAA,IACH;AAEA,UAAM,oBAAoBE,IAAAA,IAAI,CAAA,CAAE;AAIhCI,QAAAA,UAAU,YAAW;AAEnB,wBAAkB,QAAQ,MAAMC,cAAAA,QAAsB,KAAK;AAAA,QACzD,KAAK,MAAM,OAAO;AAAA,QAClB,QAAQ,CAAC,OAAO;AAAA,MACtB,CAAK;AAAA,IAKH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,11 +1,11 @@
1
1
  import { getCurrentInstance, computed, ref, onMounted, createElementBlock, openBlock, createVNode, createBlock, createCommentVNode, withCtx, createElementVNode, createTextVNode, unref, Fragment, renderList, toDisplayString } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
5
5
  import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
6
6
  import _sfc_main$4 from "../../../../components/Popup/Popup.vue.js";
7
7
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
8
- import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
8
+ import _sfc_main$5 from "../../../../components/Feed/Feed.vue2.js";
9
9
  import _sfc_main$6 from "../blocks/CardOrderItem.vue.js";
10
10
  import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
11
11
  import _sfc_main$7 from "../forms/FormSelectCustomer.vue.js";
@@ -45,7 +45,7 @@ const _sfc_main = {
45
45
  const route = useRoute();
46
46
  const router = useRouter();
47
47
  const { proxy } = getCurrentInstance();
48
- const { formatPrice } = useGlobalMixins();
48
+ const { formatPrice, returnCurrency } = useGlobalMixins();
49
49
  mutations.resetOrder(state.current);
50
50
  let cartTotalPrice = computed(() => {
51
51
  return Number(state.current.positions.reduce((total, product) => {
@@ -379,7 +379,7 @@ const _sfc_main = {
379
379
  default: withCtx(() => [
380
380
  createElementVNode("div", _hoisted_12, [
381
381
  _cache[6] || (_cache[6] = createElementVNode("span", { class: "mn-r-auto t-transp" }, "In total", -1)),
382
- createElementVNode("span", null, toDisplayString(unref(cartTotalPrice)) + " " + toDisplayString(_ctx.returnCurrency()), 1)
382
+ createElementVNode("span", null, toDisplayString(unref(cartTotalPrice)) + " " + toDisplayString(unref(returnCurrency)()), 1)
383
383
  ])
384
384
  ]),
385
385
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCreateBackoffice.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreateBackoffice.vue"],"sourcesContent":["<template>\n <div class=\"flex flex-column pd-thin\">\n <Block class=\"mn-b-thin\">\n <header class=\"flex-v-center flex-nowrap flex\">\n <h2 class=\"mn-r-auto\">Create Order</h2>\n <Button \n :submit=\"onSubmit\"\n :callback=\"redirectTo\"\n class=\"pd-small radius-big bg-main t-black uppercase t-medium\"\n >\n Add Order \n </Button>\n </header>\n </Block>\n\n <Tab \n v-model:selected=\"tabOrderCreate\"\n :tabs=\"[\n {name: 'Positions', value: 'positions'},\n {name: 'Customer', value: 'customer'},\n {name: 'Delivery', value: 'delivery'},\n {name: 'Payment', value: 'payment'}\n ]\"\n class=\"t-medium radius-medium bg-light mn-b-small\"\n />\n\n <Popup \n @close-popup=\"closeProductsPopup\" \n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white flex flex-column radius-big pd-medium pos-relative\"\n >\n\n <h3 class=\"mn-b-small\">Add to order</h3>\n\n <div class=\"bg-light h-max-100 mn-b-thin o-scroll pd-medium radius-big\">\n <Feed\n :showLoadMore=\"false\"\n :search=\"{\n placeholder: 'Search products...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n },\n skeleton: {\n hide: true\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\" \n :key=\"`${product._id}_${index}`\"\n :editable=\"false\" \n :productId=\"product._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </div>\n </Popup>\n\n <!-- Popup for selecting variant of the product -->\n <Popup \n title=\"Select variant\" \n @close-popup=\"closeVariantsPopup\" \n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct?._id,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div \n v-for=\"(variant, index) in items\" \n :key=\"index\"\n @click=\"addVariantToOrder(variant)\"\n class=\"w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img \n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\" \n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"t-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.price || variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block\n v-if=\"tabOrderCreate === 'positions'\"\n title=\"Positions\"\n :actions=\"[{\n label: '+',\n function: () => openProductsPopup()\n }]\"\n class=\"mn-b-small\"\n >\n <span \n v-if=\"orders.state.current.positions.length === 0\" \n class=\"w-100\"\n >\n No positions added yet\n </span> \n\n <CardOrderItem\n v-for=\"(product, index) in orders.state.current.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => incrementOrderItemQuantity(product._id, product.variant)\"\n :decrease=\"() => decrementOrderItemQuantity(product._id, product.variant)\"\n :remove=\"() => removeOrderItem(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => updateOrderRentDates(productId, variantId, dates)\"\n class=\"mn-b-thin pd-thin radius-medium bg-white\"\n /> \n </Block>\n\n <FormSelectCustomer\n v-if=\"tabOrderCreate === 'customer'\"\n v-model:customer=\"orders.state.current.customer\"\n class=\"mn-b-semi\"\n />\n\n <FormDelivery \n v-if=\"tabOrderCreate === 'delivery'\" \n :order=\"orders.state.current\"\n :organization=\"orderOrganization[0]\" \n />\n\n <FormPayment \n v-if=\"tabOrderCreate === 'payment'\"\n :order=\"orders.state.current\" \n :organization=\"orderOrganization[0]\" \n />\n\n\n <Block\n class=\"mn-b-semi\"\n >\n <div class=\"h3 flex\">\n <span class=\"mn-r-auto t-transp\">In total</span>\n <span>{{ cartTotalPrice }} {{returnCurrency()}} </span >\n </div>\n </Block>\n</div>\n\n\n</template>\n\n<script setup=\"props\">\n import { computed, ref, defineProps, onMounted, reactive, toRefs, watch, getCurrentInstance } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n\n import Field from '@martyrs/src/components/Field/Field.vue'\n import Button from \"@martyrs/src/components/Button/Button.vue\"; \n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\timport Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n import CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\n import CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue'\n\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n\n import FormSelectCustomer from '@martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue'\n import FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\n import FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n\n // Import your store\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import variants from '@martyrs/src/modules/products/store/variants.store.js';\n\n import customers from '@martyrs/src/modules/orders/store/customers.store';\n \n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\t\n // Accessing router\n const route = useRoute()\n const router = useRouter()\n const { proxy } = getCurrentInstance()\n const { formatPrice } = useGlobalMixins()\n\n orders.mutations.resetOrder(orders.state.current)\n\n let cartTotalPrice = computed(() => {\n return Number(orders.state.current.positions.reduce((total, product) => {\n if (product.listing === 'rent' && product.date?.start && product.date?.end) {\n const start = new Date(product.date.start);\n const end = new Date(product.date.end);\n const days = Math.ceil(Math.abs(end - start) / (1000 * 60 * 60 * 24)) + 1;\n return total + product.price * product.quantity * days;\n } else {\n return total + product.price * product.quantity;\n }\n }, 0));\n })\n\n // Tab\n const tabOrderCreate = ref('positions')\n\n // Popup\n const isOpenProductsPopup = ref(false);\n const isVariantsPopupOpen = ref(false);\n const selectedProduct = ref(null);\n\n function openProductsPopup() {\n isOpenProductsPopup.value = true;\n }\n\n function closeProductsPopup() {\n isOpenProductsPopup.value = false;\n }\n\n function closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = null;\n }\n\n function selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n \n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToOrder(product.variants[0]);\n return;\n }\n \n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n }\n\n function formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n return attrs?.length\n ? `${product.name} / ${attrs.join(' / ')}`\n : `${product.name} / ${variant.name}`;\n }\n\n async function addVariantToOrder(variant) {\n try {\n let selectedDates = null;\n \n // Если товар для аренды, сначала выбираем даты\n if (selectedProduct.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n selectedProduct.value._id,\n variant._id,\n 1,\n variant.price || selectedProduct.value.price\n );\n \n if (!selectedDates) {\n // Если отменили выбор дат, возвращаемся к выбору вариантов\n return;\n }\n }\n \n const position = {\n _id: selectedProduct.value._id,\n images: variant.images?.length > 0 ? variant.images : selectedProduct.value.images,\n name: formatProductName(selectedProduct.value, variant),\n listing: selectedProduct.value.listing,\n price: variant.price || selectedProduct.value.price,\n quantity: 1,\n unit: variant.unit || selectedProduct.value.unit,\n date: selectedDates,\n variant: variant._id,\n org_id: route.params._id\n };\n \n globals.actions.add(orders.state.current.positions, position);\n closeVariantsPopup();\n } catch (error) {\n console.error('Error adding variant to order:', error);\n }\n }\n\n\n // Функции управления позициями заказа\n function incrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity++;\n }\n }\n\n function decrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity--;\n \n if (orderItem.quantity < 1) {\n removeOrderItem(productId, variantId);\n }\n }\n }\n\n function removeOrderItem(productId, variantId) {\n const itemIndex = orders.state.current.positions.findIndex(item => \n item._id === productId && item.variant === variantId\n );\n \n if (itemIndex > -1) {\n orders.state.current.positions.splice(itemIndex, 1);\n }\n }\n\n function updateOrderRentDates(productId, variantId, dates) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.date = dates;\n }\n }\n\n // Data\n let order = ref(null)\n\n async function onSubmit() {\n\n orders.state.current.creator = {\n type: 'User',\n target: auth.state.user._id\n }\n\n orders.state.current.owner = {\n type: 'Organization',\n target: route.params._id,\n }\n\n orders.state.current.customer = {\n type: 'Customer',\n target: orders.state.current.customer._id || null,\n }\n\n order.value = await orders.actions.create(orders.state.current)\n }\n\n function redirectTo () {\n router.push({\n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit',\n params: { \n order: order.value._id,\n _id: route.params._id\n } \n })\n }\n\n const orderOrganization = ref({})\n\n\n\n onMounted(async() => {\n\n orderOrganization.value = await organizations.actions.read({\n _id: route.params._id,\n lookup: ['spots']\n })\n\n // await orders.actions.fetchOrder(route.params.id) // Implement this action in your store\n\n // order.value = orders.state.current\n })\n\n</script>\n\n\n<style lang=\"scss\">\n\n.vue-select {\n width: inherit;\n\n margin-right: 1rem;\n}\n.vue-select-header {\n height: 3rem;\n}\n</style>\n"],"names":["orders.mutations","orders.state","globals.actions","auth.state","orders.actions","organizations.actions"],"mappings":"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"}
1
+ {"version":3,"file":"OrderCreateBackoffice.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreateBackoffice.vue"],"sourcesContent":["<template>\n <div class=\"flex flex-column pd-thin\">\n <Block class=\"mn-b-thin\">\n <header class=\"flex-v-center flex-nowrap flex\">\n <h2 class=\"mn-r-auto\">Create Order</h2>\n <Button \n :submit=\"onSubmit\"\n :callback=\"redirectTo\"\n class=\"pd-small radius-big bg-main t-black uppercase t-medium\"\n >\n Add Order \n </Button>\n </header>\n </Block>\n\n <Tab \n v-model:selected=\"tabOrderCreate\"\n :tabs=\"[\n {name: 'Positions', value: 'positions'},\n {name: 'Customer', value: 'customer'},\n {name: 'Delivery', value: 'delivery'},\n {name: 'Payment', value: 'payment'}\n ]\"\n class=\"t-medium radius-medium bg-light mn-b-small\"\n />\n\n <Popup \n @close-popup=\"closeProductsPopup\" \n :isPopupOpen=\"isOpenProductsPopup\"\n class=\"bg-white flex flex-column radius-big pd-medium pos-relative\"\n >\n\n <h3 class=\"mn-b-small\">Add to order</h3>\n\n <div class=\"bg-light h-max-100 mn-b-thin o-scroll pd-medium radius-big\">\n <Feed\n :showLoadMore=\"false\"\n :search=\"{\n placeholder: 'Search products...',\n class: 'bg-white mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no such products available.'\n },\n skeleton: {\n hide: true\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: null\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n >\n <CardOrderItem\n v-for=\"(product, index) in items\" \n :key=\"`${product._id}_${index}`\"\n :editable=\"false\" \n :productId=\"product._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n @click=\"() => selectProduct(product)\"\n class=\"bg-white pd-thin radius-medium w-100 mn-b-thin\"\n />\n </Feed>\n </div>\n </Popup>\n\n <!-- Popup for selecting variant of the product -->\n <Popup \n title=\"Select variant\" \n @close-popup=\"closeVariantsPopup\" \n :isPopupOpen=\"isVariantsPopupOpen\"\n class=\"bg-white w-100 w-max-30r radius-medium pd-medium\"\n >\n <Feed\n :store=\"variants\"\n :options=\"{\n product: selectedProduct?._id,\n }\"\n :skeleton=\"{\n structure: [\n { block: 'text', size: 'small' },\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'small' }\n ]\n }\"\n :states=\"{\n empty: {\n title: 'No variants',\n description: 'Create your first variant'\n }\n }\"\n v-slot=\"{ items }\"\n >\n <div class=\"gap-thin flex flex-column\">\n <div \n v-for=\"(variant, index) in items\" \n :key=\"index\"\n @click=\"addVariantToOrder(variant)\"\n class=\"w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin\"\n >\n <div v-if=\"variant.images && variant.images.length\" class=\"aspect-1x1 h-3r radius-small o-hidden\">\n <img \n :src=\"(FILE_SERVER_URL || '') + variant.images[0]\" \n class=\"w-100 h-100 object-fit-cover\"\n />\n </div>\n <div>\n <p class=\"t-medium\">{{ variant.name || 'Default variant' }}</p>\n <p v-if=\"variant.attributes && variant.attributes.length\" class=\"t-small t-transp\">\n {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}\n </p>\n </div>\n <p class=\"mn-l-auto\">{{ formatPrice(variant.price || variant.cost) }}</p>\n </div>\n </div>\n </Feed>\n </Popup>\n\n <Block\n v-if=\"tabOrderCreate === 'positions'\"\n title=\"Positions\"\n :actions=\"[{\n label: '+',\n function: () => openProductsPopup()\n }]\"\n class=\"mn-b-small\"\n >\n <span \n v-if=\"orders.state.current.positions.length === 0\" \n class=\"w-100\"\n >\n No positions added yet\n </span> \n\n <CardOrderItem\n v-for=\"(product, index) in orders.state.current.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\"\n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => incrementOrderItemQuantity(product._id, product.variant)\"\n :decrease=\"() => decrementOrderItemQuantity(product._id, product.variant)\"\n :remove=\"() => removeOrderItem(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => updateOrderRentDates(productId, variantId, dates)\"\n class=\"mn-b-thin pd-thin radius-medium bg-white\"\n /> \n </Block>\n\n <FormSelectCustomer\n v-if=\"tabOrderCreate === 'customer'\"\n v-model:customer=\"orders.state.current.customer\"\n class=\"mn-b-semi\"\n />\n\n <FormDelivery \n v-if=\"tabOrderCreate === 'delivery'\" \n :order=\"orders.state.current\"\n :organization=\"orderOrganization[0]\" \n />\n\n <FormPayment \n v-if=\"tabOrderCreate === 'payment'\"\n :order=\"orders.state.current\" \n :organization=\"orderOrganization[0]\" \n />\n\n\n <Block\n class=\"mn-b-semi\"\n >\n <div class=\"h3 flex\">\n <span class=\"mn-r-auto t-transp\">In total</span>\n <span>{{ cartTotalPrice }} {{returnCurrency()}} </span >\n </div>\n </Block>\n</div>\n\n\n</template>\n\n<script setup=\"props\">\n import { computed, ref, defineProps, onMounted, reactive, toRefs, watch, getCurrentInstance } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n\n import Field from '@martyrs/src/components/Field/Field.vue'\n import Button from \"@martyrs/src/components/Button/Button.vue\"; \n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Popup from '@martyrs/src/components/Popup/Popup.vue';\n\timport Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n import CardPosition from '@martyrs/src/modules/products/components/blocks/CardPosition.vue';\n import CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue'\n\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n\n import FormSelectCustomer from '@martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue'\n import FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\n import FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n\n // Import your store\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as organizations from '@martyrs/src/modules/organizations/store/organizations.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import variants from '@martyrs/src/modules/products/store/variants.store.js';\n\n import customers from '@martyrs/src/modules/orders/store/customers.store';\n \n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\t\n // Accessing router\n const route = useRoute()\n const router = useRouter()\n const { proxy } = getCurrentInstance()\n const { formatPrice, returnCurrency } = useGlobalMixins()\n\n orders.mutations.resetOrder(orders.state.current)\n\n let cartTotalPrice = computed(() => {\n return Number(orders.state.current.positions.reduce((total, product) => {\n if (product.listing === 'rent' && product.date?.start && product.date?.end) {\n const start = new Date(product.date.start);\n const end = new Date(product.date.end);\n const days = Math.ceil(Math.abs(end - start) / (1000 * 60 * 60 * 24)) + 1;\n return total + product.price * product.quantity * days;\n } else {\n return total + product.price * product.quantity;\n }\n }, 0));\n })\n\n // Tab\n const tabOrderCreate = ref('positions')\n\n // Popup\n const isOpenProductsPopup = ref(false);\n const isVariantsPopupOpen = ref(false);\n const selectedProduct = ref(null);\n\n function openProductsPopup() {\n isOpenProductsPopup.value = true;\n }\n\n function closeProductsPopup() {\n isOpenProductsPopup.value = false;\n }\n\n function closeVariantsPopup() {\n isVariantsPopupOpen.value = false;\n selectedProduct.value = null;\n }\n\n function selectProduct(product) {\n selectedProduct.value = product;\n closeProductsPopup();\n \n // If product has only one variant, add it directly without showing popup\n if (product.variants && product.variants.length === 1) {\n addVariantToOrder(product.variants[0]);\n return;\n }\n \n // If product has multiple variants or no variants defined, show popup\n isVariantsPopupOpen.value = true;\n }\n\n function formatProductName(product, variant) {\n if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))\n return product.name;\n\n const attrs = variant.attributes?.map(a => a.value).filter(Boolean);\n return attrs?.length\n ? `${product.name} / ${attrs.join(' / ')}`\n : `${product.name} / ${variant.name}`;\n }\n\n async function addVariantToOrder(variant) {\n try {\n let selectedDates = null;\n \n // Если товар для аренды, сначала выбираем даты\n if (selectedProduct.value.listing === 'rent') {\n selectedDates = await proxy.$dateSelector(\n selectedProduct.value._id,\n variant._id,\n 1,\n variant.price || selectedProduct.value.price\n );\n \n if (!selectedDates) {\n // Если отменили выбор дат, возвращаемся к выбору вариантов\n return;\n }\n }\n \n const position = {\n _id: selectedProduct.value._id,\n images: variant.images?.length > 0 ? variant.images : selectedProduct.value.images,\n name: formatProductName(selectedProduct.value, variant),\n listing: selectedProduct.value.listing,\n price: variant.price || selectedProduct.value.price,\n quantity: 1,\n unit: variant.unit || selectedProduct.value.unit,\n date: selectedDates,\n variant: variant._id,\n org_id: route.params._id\n };\n \n globals.actions.add(orders.state.current.positions, position);\n closeVariantsPopup();\n } catch (error) {\n console.error('Error adding variant to order:', error);\n }\n }\n\n\n // Функции управления позициями заказа\n function incrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity++;\n }\n }\n\n function decrementOrderItemQuantity(productId, variantId) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.quantity--;\n \n if (orderItem.quantity < 1) {\n removeOrderItem(productId, variantId);\n }\n }\n }\n\n function removeOrderItem(productId, variantId) {\n const itemIndex = orders.state.current.positions.findIndex(item => \n item._id === productId && item.variant === variantId\n );\n \n if (itemIndex > -1) {\n orders.state.current.positions.splice(itemIndex, 1);\n }\n }\n\n function updateOrderRentDates(productId, variantId, dates) {\n const orderItem = orders.state.current.positions.find(item => \n item._id === productId && item.variant === variantId\n );\n \n if (orderItem) {\n orderItem.date = dates;\n }\n }\n\n // Data\n let order = ref(null)\n\n async function onSubmit() {\n\n orders.state.current.creator = {\n type: 'User',\n target: auth.state.user._id\n }\n\n orders.state.current.owner = {\n type: 'Organization',\n target: route.params._id,\n }\n\n orders.state.current.customer = {\n type: 'Customer',\n target: orders.state.current.customer._id || null,\n }\n\n order.value = await orders.actions.create(orders.state.current)\n }\n\n function redirectTo () {\n router.push({\n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit',\n params: { \n order: order.value._id,\n _id: route.params._id\n } \n })\n }\n\n const orderOrganization = ref({})\n\n\n\n onMounted(async() => {\n\n orderOrganization.value = await organizations.actions.read({\n _id: route.params._id,\n lookup: ['spots']\n })\n\n // await orders.actions.fetchOrder(route.params.id) // Implement this action in your store\n\n // order.value = orders.state.current\n })\n\n</script>\n\n\n<style lang=\"scss\">\n\n.vue-select {\n width: inherit;\n\n margin-right: 1rem;\n}\n.vue-select-header {\n height: 3rem;\n}\n</style>\n"],"names":["orders.mutations","orders.state","globals.actions","auth.state","orders.actions","organizations.actions"],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
+ const mixins = require("../../../globals/views/mixins/mixins.cjs");
5
6
  ;/* empty css */
6
7
  const Block = require("../../../../components/Block/Block.vue.cjs");
7
8
  const orders = require("../../store/orders.cjs");
@@ -10,7 +11,7 @@ const auth = require("../../../auth/views/store/auth.cjs");
10
11
  const CardOrderUser = require("../blocks/CardOrderUser.vue.cjs");
11
12
  const CardOrderBackoffice = require("../blocks/CardOrderBackoffice.vue.cjs");
12
13
  const SectionPageTitle = require("../../../globals/views/components/sections/SectionPageTitle.vue.cjs");
13
- const Feed = require("../../../../components/Feed/Feed.vue.cjs");
14
+ const Feed = require("../../../../components/Feed/Feed.vue2.cjs");
14
15
  const _hoisted_1 = { class: "mobile:pd-thin pd-medium" };
15
16
  const _hoisted_2 = { class: "gap-micro flex-nowrap flex" };
16
17
  const _hoisted_3 = { class: "w-100 bg-white radius-small pd-small" };
@@ -21,6 +22,7 @@ const _sfc_main = {
21
22
  setup(__props) {
22
23
  const route = vueRouter.useRoute();
23
24
  vueRouter.useRouter();
25
+ const { returnCurrency, formatPrice, formatDate } = mixins.useGlobalMixins();
24
26
  vue.ref(false);
25
27
  const tab = vue.ref("all");
26
28
  const totalPrice = vue.computed(() => {
@@ -65,15 +67,15 @@ const _sfc_main = {
65
67
  vue.createElementVNode("div", _hoisted_2, [
66
68
  vue.createElementVNode("div", _hoisted_3, [
67
69
  _cache[0] || (_cache[0] = vue.createElementVNode("p", { class: "mn-b-thin" }, "Total", -1)),
68
- vue.createElementVNode("h3", null, vue.toDisplayString(_ctx.formatPrice(totalPrice.value)), 1)
70
+ vue.createElementVNode("h3", null, vue.toDisplayString(vue.unref(formatPrice)(totalPrice.value)), 1)
69
71
  ]),
70
72
  vue.createElementVNode("div", _hoisted_4, [
71
73
  _cache[1] || (_cache[1] = vue.createElementVNode("p", { class: "mn-b-thin" }, "Paid", -1)),
72
- vue.createElementVNode("h3", null, vue.toDisplayString(_ctx.formatPrice(totalPriceUnpaid.value)), 1)
74
+ vue.createElementVNode("h3", null, vue.toDisplayString(vue.unref(formatPrice)(totalPriceUnpaid.value)), 1)
73
75
  ]),
74
76
  vue.createElementVNode("div", _hoisted_5, [
75
77
  _cache[2] || (_cache[2] = vue.createElementVNode("p", { class: "mn-b-thin" }, "Unpaid", -1)),
76
- vue.createElementVNode("h3", null, vue.toDisplayString(_ctx.formatPrice(totalPrice.value)), 1)
78
+ vue.createElementVNode("h3", null, vue.toDisplayString(vue.unref(formatPrice)(totalPrice.value)), 1)
77
79
  ])
78
80
  ])
79
81
  ]),
@@ -112,9 +114,9 @@ const _sfc_main = {
112
114
  vue.createVNode(CardOrderBackoffice.default, {
113
115
  order,
114
116
  user: auth.state.user,
115
- formatDate: _ctx.formatDate,
117
+ formatDate: vue.unref(formatDate),
116
118
  getTotal: orders.getters.getTotal,
117
- currency: _ctx.returnCurrency()
119
+ currency: vue.unref(returnCurrency)()
118
120
  }, null, 8, ["order", "user", "formatDate", "getTotal", "currency"])
119
121
  ]),
120
122
  _: 2
@@ -1 +1 @@
1
- {"version":3,"file":"Orders.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/Orders.vue"],"sourcesContent":["<template>\n <div class=\"mobile:pd-thin pd-medium\"> \n <SectionPageTitle\n v-if=\"!MOBILE_APP\"\n title=\"Orders\"\n :actions=\"[\n route.meta.context === 'backoffice' && { to: { name: 'BackofficeAdminCreateOrder' }, label: 'Create Order' },\n route.meta.context === 'organization' && { to: { name: 'OrganizationAdminCreateOrder', params: { _id: route.params._id}}, label: 'Create Order' }\n ].filter(Boolean)\"\n class=\"mn-b-small\"\n />\n\n <Block\n v-if=\"route.meta.context !== 'user'\"\n title=\"Balance\"\n class=\"mn-b-small\"\n >\n <div class=\"gap-micro flex-nowrap flex\">\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Total</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Paid</p>\n <h3>{{formatPrice(totalPriceUnpaid)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Unpaid</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n </div>\n\n </Block>\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Orders Found',\n description: 'Currently, there are no orders.'\n }\n }\"\n :store=\"{\n read: (options) => orders.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n ...(route.meta.context === 'organization' && { owner: route.params._id }),\n ...(route.meta.context === 'user' && { customer: route.params._id }),\n ...(tab !== 'all' && { status: tab })\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-3 mobile:cols-1\"\n >\n <router-link \n v-if=\"route.meta.context !== 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit', \n params: route.meta.context === 'backoffice' \n ? { order: order._id } \n : { order: order._id, organization: order.owner.target || order.owner._id }\n }\" \n >\n <CardOrderBackoffice \n :order=\"order\"\n :user=\"auth.state.user\"\n :formatDate=\"formatDate\"\n :getTotal=\"orders.getters.getTotal\"\n :currency=\"returnCurrency()\"\n />\n </router-link>\n\n <router-link \n v-if=\"route.meta.context === 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: 'UserOrder', \n params: { \n order: order._id \n }\n }\" \n >\n <CardOrderUser\n :orderId=\"order._id\"\n :status=\"order.status\"\n :createdAt=\"order.createdAt\"\n :updatedAt=\"order.updatedAt\"\n :positions=\"order.positions\"\n :total=\"orders.getters.getTotal(order.positions)\"\n />\n </router-link>\n </Feed>\n </div>\n</template>\n\n<script setup>\n import { computed, onMounted, reactive, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n import CardOrder from '@martyrs/src/modules/orders/components/blocks/CardOrder.vue'\n\n import CardOrderUser from '@martyrs/src/modules/orders/components/blocks/CardOrderUser.vue'\n import CardOrderBackoffice from '@martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue'\n\n import SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n const route = useRoute();\n const router = useRouter();\n\n const spoiler = ref(false)\n\n // Tab logic\n const tab = ref('all')\n\n const totalPrice = computed(() => {\n return calculateTotalSum(orders.state.all)\n });\n\n const totalPriceUnpaid = computed(() => {\n return calculateSum(orders.state.all,'unpaid')\n });\n\n \n function calculateTotalSum(orders) {\n return orders.reduce((totalSum, item) => {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }, 0);\n }\n\n function calculateSum(orders, status) {\n return orders.reduce((totalSum, item) => {\n if (item.payment.status === status) {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }\n return totalSum;\n }, 0);\n }\n\n\n onMounted(async () => {\n \n });\n</script>\n"],"names":["useRoute","useRouter","ref","computed","orders.state","orders","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuHE,UAAM,QAAQA,UAAAA,SAAQ;AACPC,cAAAA,UAAS;AAERC,QAAAA,IAAI,KAAK;AAGzB,UAAM,MAAMA,IAAAA,IAAI,KAAK;AAErB,UAAM,aAAaC,IAAAA,SAAS,MAAM;AAChC,aAAO,kBAAkBC,OAAAA,MAAa,GAAG;AAAA,IAC3C,CAAC;AAEA,UAAM,mBAAmBD,IAAAA,SAAS,MAAM;AACvC,aAAO,aAAaC,aAAa,KAAI,QAAQ;AAAA,IAC/C,CAAC;AAGD,aAAS,kBAAkBC,SAAQ;AACjC,aAAOA,QAAO,OAAO,CAAC,UAAU,SAAS;AACvC,eAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,MACpF,GAAG,CAAC;AAAA,IACN;AAEA,aAAS,aAAaA,SAAQ,QAAQ;AACpC,aAAOA,QAAO,OAAO,CAAC,UAAU,SAAS;AACvC,YAAI,KAAK,QAAQ,WAAW,QAAQ;AAClC,iBAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,QACpF;AACA,eAAO;AAAA,MACT,GAAG,CAAC;AAAA,IACN;AAGAC,QAAAA,UAAU,YAAY;AAAA,IAEtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Orders.vue.cjs","sources":["../../../../../../../src/modules/orders/components/pages/Orders.vue"],"sourcesContent":["<template>\n <div class=\"mobile:pd-thin pd-medium\"> \n <SectionPageTitle\n v-if=\"!MOBILE_APP\"\n title=\"Orders\"\n :actions=\"[\n route.meta.context === 'backoffice' && { to: { name: 'BackofficeAdminCreateOrder' }, label: 'Create Order' },\n route.meta.context === 'organization' && { to: { name: 'OrganizationAdminCreateOrder', params: { _id: route.params._id}}, label: 'Create Order' }\n ].filter(Boolean)\"\n class=\"mn-b-small\"\n />\n\n <Block\n v-if=\"route.meta.context !== 'user'\"\n title=\"Balance\"\n class=\"mn-b-small\"\n >\n <div class=\"gap-micro flex-nowrap flex\">\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Total</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Paid</p>\n <h3>{{formatPrice(totalPriceUnpaid)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Unpaid</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n </div>\n\n </Block>\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Orders Found',\n description: 'Currently, there are no orders.'\n }\n }\"\n :store=\"{\n read: (options) => orders.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n ...(route.meta.context === 'organization' && { owner: route.params._id }),\n ...(route.meta.context === 'user' && { customer: route.params._id }),\n ...(tab !== 'all' && { status: tab })\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-3 mobile:cols-1\"\n >\n <router-link \n v-if=\"route.meta.context !== 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit', \n params: route.meta.context === 'backoffice' \n ? { order: order._id } \n : { order: order._id, organization: order.owner.target || order.owner._id }\n }\" \n >\n <CardOrderBackoffice \n :order=\"order\"\n :user=\"auth.state.user\"\n :formatDate=\"formatDate\"\n :getTotal=\"orders.getters.getTotal\"\n :currency=\"returnCurrency()\"\n />\n </router-link>\n\n <router-link \n v-if=\"route.meta.context === 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: 'UserOrder', \n params: { \n order: order._id \n }\n }\" \n >\n <CardOrderUser\n :orderId=\"order._id\"\n :status=\"order.status\"\n :createdAt=\"order.createdAt\"\n :updatedAt=\"order.updatedAt\"\n :positions=\"order.positions\"\n :total=\"orders.getters.getTotal(order.positions)\"\n />\n </router-link>\n </Feed>\n </div>\n</template>\n\n<script setup>\n import { computed, onMounted, reactive, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n import CardOrder from '@martyrs/src/modules/orders/components/blocks/CardOrder.vue'\n\n import CardOrderUser from '@martyrs/src/modules/orders/components/blocks/CardOrderUser.vue'\n import CardOrderBackoffice from '@martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue'\n\n import SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'\n\n const route = useRoute();\n const router = useRouter();\n const { returnCurrency, formatPrice, formatDate } = useGlobalMixins()\n\n const spoiler = ref(false)\n\n // Tab logic\n const tab = ref('all')\n\n const totalPrice = computed(() => {\n return calculateTotalSum(orders.state.all)\n });\n\n const totalPriceUnpaid = computed(() => {\n return calculateSum(orders.state.all,'unpaid')\n });\n\n \n function calculateTotalSum(orders) {\n return orders.reduce((totalSum, item) => {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }, 0);\n }\n\n function calculateSum(orders, status) {\n return orders.reduce((totalSum, item) => {\n if (item.payment.status === status) {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }\n return totalSum;\n }, 0);\n }\n\n\n onMounted(async () => {\n \n });\n</script>\n"],"names":["useRoute","useRouter","useGlobalMixins","ref","computed","orders.state","orders","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAwHE,UAAM,QAAQA,UAAAA,SAAQ;AACPC,cAAAA,UAAS;AACxB,UAAM,EAAE,gBAAgB,aAAa,WAAU,IAAKC,OAAAA,gBAAe;AAEnDC,QAAAA,IAAI,KAAK;AAGzB,UAAM,MAAMA,IAAAA,IAAI,KAAK;AAErB,UAAM,aAAaC,IAAAA,SAAS,MAAM;AAChC,aAAO,kBAAkBC,OAAAA,MAAa,GAAG;AAAA,IAC3C,CAAC;AAEA,UAAM,mBAAmBD,IAAAA,SAAS,MAAM;AACvC,aAAO,aAAaC,aAAa,KAAI,QAAQ;AAAA,IAC/C,CAAC;AAGD,aAAS,kBAAkBC,SAAQ;AACjC,aAAOA,QAAO,OAAO,CAAC,UAAU,SAAS;AACvC,eAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,MACpF,GAAG,CAAC;AAAA,IACN;AAEA,aAAS,aAAaA,SAAQ,QAAQ;AACpC,aAAOA,QAAO,OAAO,CAAC,UAAU,SAAS;AACvC,YAAI,KAAK,QAAQ,WAAW,QAAQ;AAClC,iBAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,QACpF;AACA,eAAO;AAAA,MACT,GAAG,CAAC;AAAA,IACN;AAGAC,QAAAA,UAAU,YAAY;AAAA,IAEtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { ref, computed, onMounted, resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createVNode, unref, withCtx, createElementVNode, toDisplayString, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
+ import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
3
4
  /* empty css */
4
5
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
5
6
  import { state, actions, getters } from "../../store/orders.js";
@@ -8,7 +9,7 @@ import { state as state$1 } from "../../../auth/views/store/auth.js";
8
9
  import CardOrderUser from "../blocks/CardOrderUser.vue.js";
9
10
  import _sfc_main$4 from "../blocks/CardOrderBackoffice.vue.js";
10
11
  import _sfc_main$1 from "../../../globals/views/components/sections/SectionPageTitle.vue.js";
11
- import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
12
+ import _sfc_main$3 from "../../../../components/Feed/Feed.vue2.js";
12
13
  const _hoisted_1 = { class: "mobile:pd-thin pd-medium" };
13
14
  const _hoisted_2 = { class: "gap-micro flex-nowrap flex" };
14
15
  const _hoisted_3 = { class: "w-100 bg-white radius-small pd-small" };
@@ -19,6 +20,7 @@ const _sfc_main = {
19
20
  setup(__props) {
20
21
  const route = useRoute();
21
22
  useRouter();
23
+ const { returnCurrency, formatPrice, formatDate } = useGlobalMixins();
22
24
  ref(false);
23
25
  const tab = ref("all");
24
26
  const totalPrice = computed(() => {
@@ -63,15 +65,15 @@ const _sfc_main = {
63
65
  createElementVNode("div", _hoisted_2, [
64
66
  createElementVNode("div", _hoisted_3, [
65
67
  _cache[0] || (_cache[0] = createElementVNode("p", { class: "mn-b-thin" }, "Total", -1)),
66
- createElementVNode("h3", null, toDisplayString(_ctx.formatPrice(totalPrice.value)), 1)
68
+ createElementVNode("h3", null, toDisplayString(unref(formatPrice)(totalPrice.value)), 1)
67
69
  ]),
68
70
  createElementVNode("div", _hoisted_4, [
69
71
  _cache[1] || (_cache[1] = createElementVNode("p", { class: "mn-b-thin" }, "Paid", -1)),
70
- createElementVNode("h3", null, toDisplayString(_ctx.formatPrice(totalPriceUnpaid.value)), 1)
72
+ createElementVNode("h3", null, toDisplayString(unref(formatPrice)(totalPriceUnpaid.value)), 1)
71
73
  ]),
72
74
  createElementVNode("div", _hoisted_5, [
73
75
  _cache[2] || (_cache[2] = createElementVNode("p", { class: "mn-b-thin" }, "Unpaid", -1)),
74
- createElementVNode("h3", null, toDisplayString(_ctx.formatPrice(totalPrice.value)), 1)
76
+ createElementVNode("h3", null, toDisplayString(unref(formatPrice)(totalPrice.value)), 1)
75
77
  ])
76
78
  ])
77
79
  ]),
@@ -110,9 +112,9 @@ const _sfc_main = {
110
112
  createVNode(_sfc_main$4, {
111
113
  order,
112
114
  user: state$1.user,
113
- formatDate: _ctx.formatDate,
115
+ formatDate: unref(formatDate),
114
116
  getTotal: getters.getTotal,
115
- currency: _ctx.returnCurrency()
117
+ currency: unref(returnCurrency)()
116
118
  }, null, 8, ["order", "user", "formatDate", "getTotal", "currency"])
117
119
  ]),
118
120
  _: 2
@@ -1 +1 @@
1
- {"version":3,"file":"Orders.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/Orders.vue"],"sourcesContent":["<template>\n <div class=\"mobile:pd-thin pd-medium\"> \n <SectionPageTitle\n v-if=\"!MOBILE_APP\"\n title=\"Orders\"\n :actions=\"[\n route.meta.context === 'backoffice' && { to: { name: 'BackofficeAdminCreateOrder' }, label: 'Create Order' },\n route.meta.context === 'organization' && { to: { name: 'OrganizationAdminCreateOrder', params: { _id: route.params._id}}, label: 'Create Order' }\n ].filter(Boolean)\"\n class=\"mn-b-small\"\n />\n\n <Block\n v-if=\"route.meta.context !== 'user'\"\n title=\"Balance\"\n class=\"mn-b-small\"\n >\n <div class=\"gap-micro flex-nowrap flex\">\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Total</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Paid</p>\n <h3>{{formatPrice(totalPriceUnpaid)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Unpaid</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n </div>\n\n </Block>\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Orders Found',\n description: 'Currently, there are no orders.'\n }\n }\"\n :store=\"{\n read: (options) => orders.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n ...(route.meta.context === 'organization' && { owner: route.params._id }),\n ...(route.meta.context === 'user' && { customer: route.params._id }),\n ...(tab !== 'all' && { status: tab })\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-3 mobile:cols-1\"\n >\n <router-link \n v-if=\"route.meta.context !== 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit', \n params: route.meta.context === 'backoffice' \n ? { order: order._id } \n : { order: order._id, organization: order.owner.target || order.owner._id }\n }\" \n >\n <CardOrderBackoffice \n :order=\"order\"\n :user=\"auth.state.user\"\n :formatDate=\"formatDate\"\n :getTotal=\"orders.getters.getTotal\"\n :currency=\"returnCurrency()\"\n />\n </router-link>\n\n <router-link \n v-if=\"route.meta.context === 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: 'UserOrder', \n params: { \n order: order._id \n }\n }\" \n >\n <CardOrderUser\n :orderId=\"order._id\"\n :status=\"order.status\"\n :createdAt=\"order.createdAt\"\n :updatedAt=\"order.updatedAt\"\n :positions=\"order.positions\"\n :total=\"orders.getters.getTotal(order.positions)\"\n />\n </router-link>\n </Feed>\n </div>\n</template>\n\n<script setup>\n import { computed, onMounted, reactive, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n import CardOrder from '@martyrs/src/modules/orders/components/blocks/CardOrder.vue'\n\n import CardOrderUser from '@martyrs/src/modules/orders/components/blocks/CardOrderUser.vue'\n import CardOrderBackoffice from '@martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue'\n\n import SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n const route = useRoute();\n const router = useRouter();\n\n const spoiler = ref(false)\n\n // Tab logic\n const tab = ref('all')\n\n const totalPrice = computed(() => {\n return calculateTotalSum(orders.state.all)\n });\n\n const totalPriceUnpaid = computed(() => {\n return calculateSum(orders.state.all,'unpaid')\n });\n\n \n function calculateTotalSum(orders) {\n return orders.reduce((totalSum, item) => {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }, 0);\n }\n\n function calculateSum(orders, status) {\n return orders.reduce((totalSum, item) => {\n if (item.payment.status === status) {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }\n return totalSum;\n }, 0);\n }\n\n\n onMounted(async () => {\n \n });\n</script>\n"],"names":["orders.state"],"mappings":";;;;;;;;;;;;;;;;;;;AAuHE,UAAM,QAAQ,SAAQ;AACP,cAAS;AAER,QAAI,KAAK;AAGzB,UAAM,MAAM,IAAI,KAAK;AAErB,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,kBAAkBA,MAAa,GAAG;AAAA,IAC3C,CAAC;AAEA,UAAM,mBAAmB,SAAS,MAAM;AACvC,aAAO,aAAaA,MAAa,KAAI,QAAQ;AAAA,IAC/C,CAAC;AAGD,aAAS,kBAAkB,QAAQ;AACjC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,eAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,MACpF,GAAG,CAAC;AAAA,IACN;AAEA,aAAS,aAAa,QAAQ,QAAQ;AACpC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,YAAI,KAAK,QAAQ,WAAW,QAAQ;AAClC,iBAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,QACpF;AACA,eAAO;AAAA,MACT,GAAG,CAAC;AAAA,IACN;AAGA,cAAU,YAAY;AAAA,IAEtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Orders.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/Orders.vue"],"sourcesContent":["<template>\n <div class=\"mobile:pd-thin pd-medium\"> \n <SectionPageTitle\n v-if=\"!MOBILE_APP\"\n title=\"Orders\"\n :actions=\"[\n route.meta.context === 'backoffice' && { to: { name: 'BackofficeAdminCreateOrder' }, label: 'Create Order' },\n route.meta.context === 'organization' && { to: { name: 'OrganizationAdminCreateOrder', params: { _id: route.params._id}}, label: 'Create Order' }\n ].filter(Boolean)\"\n class=\"mn-b-small\"\n />\n\n <Block\n v-if=\"route.meta.context !== 'user'\"\n title=\"Balance\"\n class=\"mn-b-small\"\n >\n <div class=\"gap-micro flex-nowrap flex\">\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Total</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Paid</p>\n <h3>{{formatPrice(totalPriceUnpaid)}}</h3>\n </div>\n <div class=\"w-100 bg-white radius-small pd-small\">\n <p class=\"mn-b-thin\">Unpaid</p>\n <h3>{{formatPrice(totalPrice)}}</h3>\n </div>\n </div>\n\n </Block>\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Orders Found',\n description: 'Currently, there are no orders.'\n }\n }\"\n :store=\"{\n read: (options) => orders.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n ...(route.meta.context === 'organization' && { owner: route.params._id }),\n ...(route.meta.context === 'user' && { customer: route.params._id }),\n ...(tab !== 'all' && { status: tab })\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-3 mobile:cols-1\"\n >\n <router-link \n v-if=\"route.meta.context !== 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: route.meta.context === 'backoffice' ? 'BackofficeOrderEdit' : 'OrganizationOrderEdit', \n params: route.meta.context === 'backoffice' \n ? { order: order._id } \n : { order: order._id, organization: order.owner.target || order.owner._id }\n }\" \n >\n <CardOrderBackoffice \n :order=\"order\"\n :user=\"auth.state.user\"\n :formatDate=\"formatDate\"\n :getTotal=\"orders.getters.getTotal\"\n :currency=\"returnCurrency()\"\n />\n </router-link>\n\n <router-link \n v-if=\"route.meta.context === 'user'\"\n v-for=\"order in items\" \n :to=\"{ \n name: 'UserOrder', \n params: { \n order: order._id \n }\n }\" \n >\n <CardOrderUser\n :orderId=\"order._id\"\n :status=\"order.status\"\n :createdAt=\"order.createdAt\"\n :updatedAt=\"order.updatedAt\"\n :positions=\"order.positions\"\n :total=\"orders.getters.getTotal(order.positions)\"\n />\n </router-link>\n </Feed>\n </div>\n</template>\n\n<script setup>\n import { computed, onMounted, reactive, ref } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import * as orders from '@martyrs/src/modules/orders/store/orders.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\n import CardOrder from '@martyrs/src/modules/orders/components/blocks/CardOrder.vue'\n\n import CardOrderUser from '@martyrs/src/modules/orders/components/blocks/CardOrderUser.vue'\n import CardOrderBackoffice from '@martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue'\n\n import SectionPageTitle from '@martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue'\n\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'\n\n const route = useRoute();\n const router = useRouter();\n const { returnCurrency, formatPrice, formatDate } = useGlobalMixins()\n\n const spoiler = ref(false)\n\n // Tab logic\n const tab = ref('all')\n\n const totalPrice = computed(() => {\n return calculateTotalSum(orders.state.all)\n });\n\n const totalPriceUnpaid = computed(() => {\n return calculateSum(orders.state.all,'unpaid')\n });\n\n \n function calculateTotalSum(orders) {\n return orders.reduce((totalSum, item) => {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }, 0);\n }\n\n function calculateSum(orders, status) {\n return orders.reduce((totalSum, item) => {\n if (item.payment.status === status) {\n return totalSum + item.positions.reduce((sum, position) => sum + position.price, 0);\n }\n return totalSum;\n }, 0);\n }\n\n\n onMounted(async () => {\n \n });\n</script>\n"],"names":["orders.state"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwHE,UAAM,QAAQ,SAAQ;AACP,cAAS;AACxB,UAAM,EAAE,gBAAgB,aAAa,WAAU,IAAK,gBAAe;AAEnD,QAAI,KAAK;AAGzB,UAAM,MAAM,IAAI,KAAK;AAErB,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,kBAAkBA,MAAa,GAAG;AAAA,IAC3C,CAAC;AAEA,UAAM,mBAAmB,SAAS,MAAM;AACvC,aAAO,aAAaA,MAAa,KAAI,QAAQ;AAAA,IAC/C,CAAC;AAGD,aAAS,kBAAkB,QAAQ;AACjC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,eAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,MACpF,GAAG,CAAC;AAAA,IACN;AAEA,aAAS,aAAa,QAAQ,QAAQ;AACpC,aAAO,OAAO,OAAO,CAAC,UAAU,SAAS;AACvC,YAAI,KAAK,QAAQ,WAAW,QAAQ;AAClC,iBAAO,WAAW,KAAK,UAAU,OAAO,CAAC,KAAK,aAAa,MAAM,SAAS,OAAO,CAAC;AAAA,QACpF;AACA,eAAO;AAAA,MACT,GAAG,CAAC;AAAA,IACN;AAGA,cAAU,YAAY;AAAA,IAEtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,6 +9,7 @@ const IconCross = require("../../../icons/navigation/IconCross.vue.cjs");
9
9
  const globals = require("../../../globals/views/store/globals.cjs");
10
10
  const auth = require("../../../auth/views/store/auth.cjs");
11
11
  const shopcart = require("../../store/shopcart.cjs");
12
+ const mixins = require("../../../globals/views/mixins/mixins.cjs");
12
13
  ;/* empty css */
13
14
  const _hoisted_1 = { class: "pd-big mobile:pd-medium pd-b-zero mobile:pd-b-zero flex-nowrap flex" };
14
15
  const _hoisted_2 = { class: "mn-b-medium w-100" };
@@ -29,6 +30,7 @@ const _sfc_main = {
29
30
  setup(__props) {
30
31
  vueRouter.useRoute();
31
32
  const router = vueRouter.useRouter();
33
+ const { returnCurrency } = mixins.useGlobalMixins();
32
34
  const cartTotalPrice = shopcart.getters.cartTotalPrice;
33
35
  const StoreCartAmount = shopcart.getters.cartTotalAmount;
34
36
  const text = {
@@ -98,7 +100,7 @@ const _sfc_main = {
98
100
  shopcart.state.positions.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
99
101
  vue.createVNode(PriceTotal.default, {
100
102
  totalPrice: vue.unref(cartTotalPrice),
101
- currency: _ctx.returnCurrency(),
103
+ currency: vue.unref(returnCurrency)(),
102
104
  showFees: globals.state.options?.orders.showFees,
103
105
  feesRate: globals.state.options?.orders.feesRate,
104
106
  showVat: globals.state.options?.orders.showVat,
@@ -1 +1 @@
1
- {"version":3,"file":"ShopCart.vue.cjs","sources":["../../../../../../../src/modules/orders/components/partials/ShopCart.vue"],"sourcesContent":["<template>\n\t<section class=\"z-index-5 flex flex-column transition-ease-in-out bg-white shop-cart\" :class=\"{'shop-cart-active':shopcart.state.currentState === true}\">\n <!-- ---------------------------------------------------------------- -->\n <!-- 01. Popup Header -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big mobile:pd-medium pd-b-zero mobile:pd-b-zero flex-nowrap flex\">\n <div class=\"mn-b-medium w-100\">\n <h4 class=\"mn-b-thin p-semi\">{{t('title')}}</h4>\n <p class=\"t-transp p-small\">{{t('subtitle')}} {{ t('positions', { count: StoreCartAmount }) }}</p>\n </div>\n <IconCross @click=\"shopcart.actions.toggleShopcart\" class=\"cursor-pointer i-medium button-icon\"/>\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 02. Popup Content -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big pd-t-zero mobile:pd-t-zero mobile:pd-medium h-70 flex flex-column w-100 pos-relative o-x-hidden o-y-scroll gap-small shopcart-content\">\n <!-- Empty State -->\n <p v-if=\"!(shopcart.state.positions.length > 0)\" class=\"mn-t-medium\"><i>{{t('emptystate')}}</i></p>\n <!-- Shopcart positions -->\n <CardOrderItem \n v-for=\"(product, index) in shopcart.state.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n />\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 03. Footer -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"h-30 transition-ease-in-out pd-b-medium pd-t-medium pd-big transition-cubic bg-light t-black\">\n <div v-if=\"shopcart.state.positions.length > 0\" class=\"mn-b-small total-price\">\n <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate\"\n />\n </div>\n <button v-if=\"shopcart.state.positions.length > 0\" @click=\"openOrder()\" class=\"bg-main t-black w-100 button\">{{ t('fastorder') }}</button>\n </div> \n\n <!-- ---------------------------------------------------------------- -->\n <!-- 04. Color Overlay -->\n <!-- ---------------------------------------------------------------- -->\n <transition name=\"fade\">\n <teleport to=\"#app-wrapper\" v-if=\"shopcart.state.currentState\">\n\n <div \n v-if=\"shopcart.state.currentState\"\n @click=\"() => shopcart.state.currentState = false\"\n class=\"color-overlay z-index-3\"\n :class=\"{'active':shopcart.state.currentState === true}\"\n >\n </div>\n </teleport>\n </transition>\n </section>\n</template>\n\n\n<script setup>\n /////////////////////////////\n // COMPONENT DEPENDENCIES\n /////////////////////////////\n\timport { computed,onMounted } from 'vue'\n // Route\n import { useRouter,useRoute } from 'vue-router'\n // i18n\n import { useI18n } from 'vue-i18n'\n // Components\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n import PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n import IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\n /////////////////////////////\n // CREATED\n /////////////////////////////\n const route = useRoute()\n const router = useRouter()\n // Accessing state\n const cartTotalPrice = shopcart.getters.cartTotalPrice\n const StoreCartAmount = shopcart.getters.cartTotalAmount\n // \n // router.beforeEach((to, from, next) => {\n // if (shopcart.state.currentState === true) {\n // shopcart.actions.toggleShopcart();\n // }\n // next(); // Убедитесь, что вызываете next() для продолжения перехода по роуту\n // });\n\n /////////////////////////////\n // LOCALIZATION\n /////////////////////////////\n const text = {\n messages: {\n en: {\n title: 'Your order',\n subtitle: 'You have',\n positions: 'no products in shop cart | 1 product in shop cart | {count} products in shop card',\n emptystate: \"You don't have any positions in your shop cart yet. Maybe something needs to be added?\",\n intotal: 'In total',\n fastorder: 'Checkout'\n },\n ru: {\n title: 'Ваш заказ',\n subtitle: 'У вас',\n positions: 'нет товаров в корзине | 1 товар в корзине | {count} товаров в корзине',\n emptystate: \"У вас еще нет товаров в корзине. Может стоит что-нибудь добавить?\",\n intotal: 'Итого',\n fastorder: 'Подтвердить заказ'\n }\n }\n }\n\n const { t } = useI18n(text)\n /////////////////////////////\n // MOUNTED\n /////////////////////////////\n function openOrder() {\n // store.dispatch(\"shopcart/toggleShopCart\");\n // store.dispatch(\"shopcart/setSearch\");\n !globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id ? router.push({name: 'Sign In', query: { returnUrl: '/orders/form'}}) : router.push({name: 'CreateOrder'}) \n shopcart.actions.toggleShopcart();\n }\n</script>\n\n<style lang=\"scss\">\n.shop-cart {\n display: block;\n position: fixed;\n\n right: -33%;\n top: 0;\n\n height: 100%;\n width: 33%;\n\n overflow-y: scroll; \n}\n\n.shop-cart-active {\n right: 0;\n\n}\n\n@media screen and (max-width: 1025px) {\n .shop-cart {\n width: 100%;\n right: -100%;\n\n .shopcart-footer {\n width: 100%;\n right: -100%;\n }\n\n &-active {\n right: 0;\n\n .shopcart-footer {\n right: 0;\n }\n }\n }\n}\n</style>\n\n\n"],"names":["useRoute","useRouter","shopcart.getters","useI18n","globals.state","auth.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FgBA,cAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,UAAM,iBAAiBC,SAAAA,QAAiB;AACxC,UAAM,kBAAkBA,SAAAA,QAAiB;AAYzC,UAAM,OAAO;AAAA,MACX,UAAU;AAAA,QACR,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,QACM,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,MACA;AAAA,IACA;AAEE,UAAM,EAAE,MAAMC,QAAAA,QAAQ,IAAI;AAI1B,aAAS,YAAY;AAGnB,OAACC,cAAc,QAAQ,OAAO,8BAA8B,CAACC,WAAW,KAAK,MAAO,OAAO,KAAK,EAAC,MAAM,WAAW,OAAO,EAAE,WAAW,eAAc,EAAC,CAAC,IAAM,OAAO,KAAK,EAAC,MAAM,cAAa,CAAC;AAC7LC,eAAAA,QAAiB,eAAc;AAAA,IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ShopCart.vue.cjs","sources":["../../../../../../../src/modules/orders/components/partials/ShopCart.vue"],"sourcesContent":["<template>\n\t<section class=\"z-index-5 flex flex-column transition-ease-in-out bg-white shop-cart\" :class=\"{'shop-cart-active':shopcart.state.currentState === true}\">\n <!-- ---------------------------------------------------------------- -->\n <!-- 01. Popup Header -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big mobile:pd-medium pd-b-zero mobile:pd-b-zero flex-nowrap flex\">\n <div class=\"mn-b-medium w-100\">\n <h4 class=\"mn-b-thin p-semi\">{{t('title')}}</h4>\n <p class=\"t-transp p-small\">{{t('subtitle')}} {{ t('positions', { count: StoreCartAmount }) }}</p>\n </div>\n <IconCross @click=\"shopcart.actions.toggleShopcart\" class=\"cursor-pointer i-medium button-icon\"/>\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 02. Popup Content -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big pd-t-zero mobile:pd-t-zero mobile:pd-medium h-70 flex flex-column w-100 pos-relative o-x-hidden o-y-scroll gap-small shopcart-content\">\n <!-- Empty State -->\n <p v-if=\"!(shopcart.state.positions.length > 0)\" class=\"mn-t-medium\"><i>{{t('emptystate')}}</i></p>\n <!-- Shopcart positions -->\n <CardOrderItem \n v-for=\"(product, index) in shopcart.state.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n />\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 03. Footer -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"h-30 transition-ease-in-out pd-b-medium pd-t-medium pd-big transition-cubic bg-light t-black\">\n <div v-if=\"shopcart.state.positions.length > 0\" class=\"mn-b-small total-price\">\n <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate\"\n />\n </div>\n <button v-if=\"shopcart.state.positions.length > 0\" @click=\"openOrder()\" class=\"bg-main t-black w-100 button\">{{ t('fastorder') }}</button>\n </div> \n\n <!-- ---------------------------------------------------------------- -->\n <!-- 04. Color Overlay -->\n <!-- ---------------------------------------------------------------- -->\n <transition name=\"fade\">\n <teleport to=\"#app-wrapper\" v-if=\"shopcart.state.currentState\">\n\n <div \n v-if=\"shopcart.state.currentState\"\n @click=\"() => shopcart.state.currentState = false\"\n class=\"color-overlay z-index-3\"\n :class=\"{'active':shopcart.state.currentState === true}\"\n >\n </div>\n </teleport>\n </transition>\n </section>\n</template>\n\n\n<script setup>\n /////////////////////////////\n // COMPONENT DEPENDENCIES\n /////////////////////////////\n\timport { computed,onMounted } from 'vue'\n // Route\n import { useRouter,useRoute } from 'vue-router'\n // i18n\n import { useI18n } from 'vue-i18n'\n // Components\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n import PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n import IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n /////////////////////////////\n // CREATED\n /////////////////////////////\n const route = useRoute()\n const router = useRouter()\n const { returnCurrency } = useGlobalMixins()\n // Accessing state\n const cartTotalPrice = shopcart.getters.cartTotalPrice\n const StoreCartAmount = shopcart.getters.cartTotalAmount\n // \n // router.beforeEach((to, from, next) => {\n // if (shopcart.state.currentState === true) {\n // shopcart.actions.toggleShopcart();\n // }\n // next(); // Убедитесь, что вызываете next() для продолжения перехода по роуту\n // });\n\n /////////////////////////////\n // LOCALIZATION\n /////////////////////////////\n const text = {\n messages: {\n en: {\n title: 'Your order',\n subtitle: 'You have',\n positions: 'no products in shop cart | 1 product in shop cart | {count} products in shop card',\n emptystate: \"You don't have any positions in your shop cart yet. Maybe something needs to be added?\",\n intotal: 'In total',\n fastorder: 'Checkout'\n },\n ru: {\n title: 'Ваш заказ',\n subtitle: 'У вас',\n positions: 'нет товаров в корзине | 1 товар в корзине | {count} товаров в корзине',\n emptystate: \"У вас еще нет товаров в корзине. Может стоит что-нибудь добавить?\",\n intotal: 'Итого',\n fastorder: 'Подтвердить заказ'\n }\n }\n }\n\n const { t } = useI18n(text)\n /////////////////////////////\n // MOUNTED\n /////////////////////////////\n function openOrder() {\n // store.dispatch(\"shopcart/toggleShopCart\");\n // store.dispatch(\"shopcart/setSearch\");\n !globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id ? router.push({name: 'Sign In', query: { returnUrl: '/orders/form'}}) : router.push({name: 'CreateOrder'}) \n shopcart.actions.toggleShopcart();\n }\n</script>\n\n<style lang=\"scss\">\n.shop-cart {\n display: block;\n position: fixed;\n\n right: -33%;\n top: 0;\n\n height: 100%;\n width: 33%;\n\n overflow-y: scroll; \n}\n\n.shop-cart-active {\n right: 0;\n\n}\n\n@media screen and (max-width: 1025px) {\n .shop-cart {\n width: 100%;\n right: -100%;\n\n .shopcart-footer {\n width: 100%;\n right: -100%;\n }\n\n &-active {\n right: 0;\n\n .shopcart-footer {\n right: 0;\n }\n }\n }\n}\n</style>\n\n\n"],"names":["useRoute","useRouter","useGlobalMixins","shopcart.getters","useI18n","globals.state","auth.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGgBA,cAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AACxB,UAAM,EAAE,eAAc,IAAKC,OAAAA,gBAAe;AAE1C,UAAM,iBAAiBC,SAAAA,QAAiB;AACxC,UAAM,kBAAkBA,SAAAA,QAAiB;AAYzC,UAAM,OAAO;AAAA,MACX,UAAU;AAAA,QACR,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,QACM,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,MACA;AAAA,IACA;AAEE,UAAM,EAAE,MAAMC,QAAAA,QAAQ,IAAI;AAI1B,aAAS,YAAY;AAGnB,OAACC,cAAc,QAAQ,OAAO,8BAA8B,CAACC,WAAW,KAAK,MAAO,OAAO,KAAK,EAAC,MAAM,WAAW,OAAO,EAAE,WAAW,eAAc,EAAC,CAAC,IAAM,OAAO,KAAK,EAAC,MAAM,cAAa,CAAC;AAC7LC,eAAAA,QAAiB,eAAc;AAAA,IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -7,6 +7,7 @@ import _sfc_main$1 from "../../../icons/navigation/IconCross.vue.js";
7
7
  import { state as state$1 } from "../../../globals/views/store/globals.js";
8
8
  import { state as state$2 } from "../../../auth/views/store/auth.js";
9
9
  import { getters, state, actions } from "../../store/shopcart.js";
10
+ import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
10
11
  /* empty css */
11
12
  const _hoisted_1 = { class: "pd-big mobile:pd-medium pd-b-zero mobile:pd-b-zero flex-nowrap flex" };
12
13
  const _hoisted_2 = { class: "mn-b-medium w-100" };
@@ -27,6 +28,7 @@ const _sfc_main = {
27
28
  setup(__props) {
28
29
  useRoute();
29
30
  const router = useRouter();
31
+ const { returnCurrency } = useGlobalMixins();
30
32
  const cartTotalPrice = getters.cartTotalPrice;
31
33
  const StoreCartAmount = getters.cartTotalAmount;
32
34
  const text = {
@@ -96,7 +98,7 @@ const _sfc_main = {
96
98
  state.positions.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_8, [
97
99
  createVNode(_sfc_main$3, {
98
100
  totalPrice: unref(cartTotalPrice),
99
- currency: _ctx.returnCurrency(),
101
+ currency: unref(returnCurrency)(),
100
102
  showFees: state$1.options?.orders.showFees,
101
103
  feesRate: state$1.options?.orders.feesRate,
102
104
  showVat: state$1.options?.orders.showVat,
@@ -1 +1 @@
1
- {"version":3,"file":"ShopCart.vue.js","sources":["../../../../../../../src/modules/orders/components/partials/ShopCart.vue"],"sourcesContent":["<template>\n\t<section class=\"z-index-5 flex flex-column transition-ease-in-out bg-white shop-cart\" :class=\"{'shop-cart-active':shopcart.state.currentState === true}\">\n <!-- ---------------------------------------------------------------- -->\n <!-- 01. Popup Header -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big mobile:pd-medium pd-b-zero mobile:pd-b-zero flex-nowrap flex\">\n <div class=\"mn-b-medium w-100\">\n <h4 class=\"mn-b-thin p-semi\">{{t('title')}}</h4>\n <p class=\"t-transp p-small\">{{t('subtitle')}} {{ t('positions', { count: StoreCartAmount }) }}</p>\n </div>\n <IconCross @click=\"shopcart.actions.toggleShopcart\" class=\"cursor-pointer i-medium button-icon\"/>\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 02. Popup Content -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big pd-t-zero mobile:pd-t-zero mobile:pd-medium h-70 flex flex-column w-100 pos-relative o-x-hidden o-y-scroll gap-small shopcart-content\">\n <!-- Empty State -->\n <p v-if=\"!(shopcart.state.positions.length > 0)\" class=\"mn-t-medium\"><i>{{t('emptystate')}}</i></p>\n <!-- Shopcart positions -->\n <CardOrderItem \n v-for=\"(product, index) in shopcart.state.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n />\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 03. Footer -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"h-30 transition-ease-in-out pd-b-medium pd-t-medium pd-big transition-cubic bg-light t-black\">\n <div v-if=\"shopcart.state.positions.length > 0\" class=\"mn-b-small total-price\">\n <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate\"\n />\n </div>\n <button v-if=\"shopcart.state.positions.length > 0\" @click=\"openOrder()\" class=\"bg-main t-black w-100 button\">{{ t('fastorder') }}</button>\n </div> \n\n <!-- ---------------------------------------------------------------- -->\n <!-- 04. Color Overlay -->\n <!-- ---------------------------------------------------------------- -->\n <transition name=\"fade\">\n <teleport to=\"#app-wrapper\" v-if=\"shopcart.state.currentState\">\n\n <div \n v-if=\"shopcart.state.currentState\"\n @click=\"() => shopcart.state.currentState = false\"\n class=\"color-overlay z-index-3\"\n :class=\"{'active':shopcart.state.currentState === true}\"\n >\n </div>\n </teleport>\n </transition>\n </section>\n</template>\n\n\n<script setup>\n /////////////////////////////\n // COMPONENT DEPENDENCIES\n /////////////////////////////\n\timport { computed,onMounted } from 'vue'\n // Route\n import { useRouter,useRoute } from 'vue-router'\n // i18n\n import { useI18n } from 'vue-i18n'\n // Components\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n import PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n import IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\n /////////////////////////////\n // CREATED\n /////////////////////////////\n const route = useRoute()\n const router = useRouter()\n // Accessing state\n const cartTotalPrice = shopcart.getters.cartTotalPrice\n const StoreCartAmount = shopcart.getters.cartTotalAmount\n // \n // router.beforeEach((to, from, next) => {\n // if (shopcart.state.currentState === true) {\n // shopcart.actions.toggleShopcart();\n // }\n // next(); // Убедитесь, что вызываете next() для продолжения перехода по роуту\n // });\n\n /////////////////////////////\n // LOCALIZATION\n /////////////////////////////\n const text = {\n messages: {\n en: {\n title: 'Your order',\n subtitle: 'You have',\n positions: 'no products in shop cart | 1 product in shop cart | {count} products in shop card',\n emptystate: \"You don't have any positions in your shop cart yet. Maybe something needs to be added?\",\n intotal: 'In total',\n fastorder: 'Checkout'\n },\n ru: {\n title: 'Ваш заказ',\n subtitle: 'У вас',\n positions: 'нет товаров в корзине | 1 товар в корзине | {count} товаров в корзине',\n emptystate: \"У вас еще нет товаров в корзине. Может стоит что-нибудь добавить?\",\n intotal: 'Итого',\n fastorder: 'Подтвердить заказ'\n }\n }\n }\n\n const { t } = useI18n(text)\n /////////////////////////////\n // MOUNTED\n /////////////////////////////\n function openOrder() {\n // store.dispatch(\"shopcart/toggleShopCart\");\n // store.dispatch(\"shopcart/setSearch\");\n !globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id ? router.push({name: 'Sign In', query: { returnUrl: '/orders/form'}}) : router.push({name: 'CreateOrder'}) \n shopcart.actions.toggleShopcart();\n }\n</script>\n\n<style lang=\"scss\">\n.shop-cart {\n display: block;\n position: fixed;\n\n right: -33%;\n top: 0;\n\n height: 100%;\n width: 33%;\n\n overflow-y: scroll; \n}\n\n.shop-cart-active {\n right: 0;\n\n}\n\n@media screen and (max-width: 1025px) {\n .shop-cart {\n width: 100%;\n right: -100%;\n\n .shopcart-footer {\n width: 100%;\n right: -100%;\n }\n\n &-active {\n right: 0;\n\n .shopcart-footer {\n right: 0;\n }\n }\n }\n}\n</style>\n\n\n"],"names":["shopcart.getters","globals.state","auth.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FgB,aAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,iBAAiBA,QAAiB;AACxC,UAAM,kBAAkBA,QAAiB;AAYzC,UAAM,OAAO;AAAA,MACX,UAAU;AAAA,QACR,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,QACM,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,MACA;AAAA,IACA;AAEE,UAAM,EAAE,MAAM,QAAQ,IAAI;AAI1B,aAAS,YAAY;AAGnB,OAACC,QAAc,QAAQ,OAAO,8BAA8B,CAACC,QAAW,KAAK,MAAO,OAAO,KAAK,EAAC,MAAM,WAAW,OAAO,EAAE,WAAW,eAAc,EAAC,CAAC,IAAM,OAAO,KAAK,EAAC,MAAM,cAAa,CAAC;AAC7LC,cAAiB,eAAc;AAAA,IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ShopCart.vue.js","sources":["../../../../../../../src/modules/orders/components/partials/ShopCart.vue"],"sourcesContent":["<template>\n\t<section class=\"z-index-5 flex flex-column transition-ease-in-out bg-white shop-cart\" :class=\"{'shop-cart-active':shopcart.state.currentState === true}\">\n <!-- ---------------------------------------------------------------- -->\n <!-- 01. Popup Header -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big mobile:pd-medium pd-b-zero mobile:pd-b-zero flex-nowrap flex\">\n <div class=\"mn-b-medium w-100\">\n <h4 class=\"mn-b-thin p-semi\">{{t('title')}}</h4>\n <p class=\"t-transp p-small\">{{t('subtitle')}} {{ t('positions', { count: StoreCartAmount }) }}</p>\n </div>\n <IconCross @click=\"shopcart.actions.toggleShopcart\" class=\"cursor-pointer i-medium button-icon\"/>\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 02. Popup Content -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"pd-big pd-t-zero mobile:pd-t-zero mobile:pd-medium h-70 flex flex-column w-100 pos-relative o-x-hidden o-y-scroll gap-small shopcart-content\">\n <!-- Empty State -->\n <p v-if=\"!(shopcart.state.positions.length > 0)\" class=\"mn-t-medium\"><i>{{t('emptystate')}}</i></p>\n <!-- Shopcart positions -->\n <CardOrderItem \n v-for=\"(product, index) in shopcart.state.positions\" \n :key=\"`${product._id}_${product.variant || 'no-variant'}_${index}`\" \n :editable=\"true\" \n :productId=\"product._id\"\n :variantId=\"product.variant\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.quantity\"\n :unit=\"product.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.price\"\n :increase=\"() => shopcart.actions.incrementItemQuantity(product._id, product.variant)\"\n :decrease=\"() => shopcart.actions.decrementItemQuantity(product._id, product.variant)\"\n :remove=\"() => shopcart.actions.removeProduct(product._id, product.variant)\"\n @updateRentDates=\"(productId, variantId, dates) => shopcart.actions.updateRentDates({ productId, variantId, dates })\"\n />\n </div>\n <!-- ---------------------------------------------------------------- -->\n <!-- 03. Footer -->\n <!-- ---------------------------------------------------------------- -->\n <div class=\"h-30 transition-ease-in-out pd-b-medium pd-t-medium pd-big transition-cubic bg-light t-black\">\n <div v-if=\"shopcart.state.positions.length > 0\" class=\"mn-b-small total-price\">\n <PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate\"\n />\n </div>\n <button v-if=\"shopcart.state.positions.length > 0\" @click=\"openOrder()\" class=\"bg-main t-black w-100 button\">{{ t('fastorder') }}</button>\n </div> \n\n <!-- ---------------------------------------------------------------- -->\n <!-- 04. Color Overlay -->\n <!-- ---------------------------------------------------------------- -->\n <transition name=\"fade\">\n <teleport to=\"#app-wrapper\" v-if=\"shopcart.state.currentState\">\n\n <div \n v-if=\"shopcart.state.currentState\"\n @click=\"() => shopcart.state.currentState = false\"\n class=\"color-overlay z-index-3\"\n :class=\"{'active':shopcart.state.currentState === true}\"\n >\n </div>\n </teleport>\n </transition>\n </section>\n</template>\n\n\n<script setup>\n /////////////////////////////\n // COMPONENT DEPENDENCIES\n /////////////////////////////\n\timport { computed,onMounted } from 'vue'\n // Route\n import { useRouter,useRoute } from 'vue-router'\n // i18n\n import { useI18n } from 'vue-i18n'\n // Components\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n import PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\n import IconCross from '@martyrs/src/modules/icons/navigation/IconCross.vue';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as shopcart from '@martyrs/src/modules/orders/store/shopcart.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n /////////////////////////////\n // CREATED\n /////////////////////////////\n const route = useRoute()\n const router = useRouter()\n const { returnCurrency } = useGlobalMixins()\n // Accessing state\n const cartTotalPrice = shopcart.getters.cartTotalPrice\n const StoreCartAmount = shopcart.getters.cartTotalAmount\n // \n // router.beforeEach((to, from, next) => {\n // if (shopcart.state.currentState === true) {\n // shopcart.actions.toggleShopcart();\n // }\n // next(); // Убедитесь, что вызываете next() для продолжения перехода по роуту\n // });\n\n /////////////////////////////\n // LOCALIZATION\n /////////////////////////////\n const text = {\n messages: {\n en: {\n title: 'Your order',\n subtitle: 'You have',\n positions: 'no products in shop cart | 1 product in shop cart | {count} products in shop card',\n emptystate: \"You don't have any positions in your shop cart yet. Maybe something needs to be added?\",\n intotal: 'In total',\n fastorder: 'Checkout'\n },\n ru: {\n title: 'Ваш заказ',\n subtitle: 'У вас',\n positions: 'нет товаров в корзине | 1 товар в корзине | {count} товаров в корзине',\n emptystate: \"У вас еще нет товаров в корзине. Может стоит что-нибудь добавить?\",\n intotal: 'Итого',\n fastorder: 'Подтвердить заказ'\n }\n }\n }\n\n const { t } = useI18n(text)\n /////////////////////////////\n // MOUNTED\n /////////////////////////////\n function openOrder() {\n // store.dispatch(\"shopcart/toggleShopCart\");\n // store.dispatch(\"shopcart/setSearch\");\n !globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id ? router.push({name: 'Sign In', query: { returnUrl: '/orders/form'}}) : router.push({name: 'CreateOrder'}) \n shopcart.actions.toggleShopcart();\n }\n</script>\n\n<style lang=\"scss\">\n.shop-cart {\n display: block;\n position: fixed;\n\n right: -33%;\n top: 0;\n\n height: 100%;\n width: 33%;\n\n overflow-y: scroll; \n}\n\n.shop-cart-active {\n right: 0;\n\n}\n\n@media screen and (max-width: 1025px) {\n .shop-cart {\n width: 100%;\n right: -100%;\n\n .shopcart-footer {\n width: 100%;\n right: -100%;\n }\n\n &-active {\n right: 0;\n\n .shopcart-footer {\n right: 0;\n }\n }\n }\n}\n</style>\n\n\n"],"names":["shopcart.getters","globals.state","auth.state","shopcart.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGgB,aAAQ;AACtB,UAAM,SAAS,UAAS;AACxB,UAAM,EAAE,eAAc,IAAK,gBAAe;AAE1C,UAAM,iBAAiBA,QAAiB;AACxC,UAAM,kBAAkBA,QAAiB;AAYzC,UAAM,OAAO;AAAA,MACX,UAAU;AAAA,QACR,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,QACM,IAAI;AAAA,UACF,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,WAAW;AAAA,QACnB;AAAA,MACA;AAAA,IACA;AAEE,UAAM,EAAE,MAAM,QAAQ,IAAI;AAI1B,aAAS,YAAY;AAGnB,OAACC,QAAc,QAAQ,OAAO,8BAA8B,CAACC,QAAW,KAAK,MAAO,OAAO,KAAK,EAAC,MAAM,WAAW,OAAO,EAAE,WAAW,eAAc,EAAC,CAAC,IAAM,OAAO,KAAK,EAAC,MAAM,cAAa,CAAC;AAC7LC,cAAiB,eAAc;AAAA,IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}