@ozdao/martyrs 0.2.508 → 0.2.510

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 (317) hide show
  1. package/dist/{main-Dq-UfO4G.js → main-DrpgUZcn.js} +2808 -2615
  2. package/dist/main-XJQJFmgj.cjs +11 -0
  3. package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
  4. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
  5. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  6. package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
  7. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +1 -1
  8. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  9. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
  10. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  11. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +4 -3
  12. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -1
  13. package/dist/martyrs/src/components/Feed/Carousel.vue.js +5 -4
  14. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
  15. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +1 -1
  16. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  17. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  18. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  19. package/dist/martyrs/src/components/Field/Field.vue.cjs +1 -1
  20. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  21. package/dist/martyrs/src/components/Field/Field.vue.js +1 -1
  22. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  23. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +3 -3
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  25. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +3 -3
  26. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/Tab/{Tab.vue2.cjs → Tab.vue.cjs} +2 -2
  28. package/dist/martyrs/src/components/Tab/{Tab.vue2.js.map → Tab.vue.cjs.map} +1 -1
  29. package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
  30. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
  31. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
  32. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  33. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
  34. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  35. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  36. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  37. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  38. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  39. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +17 -11
  40. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  41. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +18 -12
  42. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +1 -1
  46. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +2 -2
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  49. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +2 -2
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  53. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  55. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  57. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  59. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  60. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  61. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  62. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  63. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  64. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  65. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  66. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  67. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -0
  68. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  69. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -0
  70. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  71. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  73. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  74. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  75. package/dist/martyrs/src/modules/globals/globals.client.js +15 -15
  76. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  77. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  79. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
  81. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  82. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  83. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +8 -3
  84. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  85. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +8 -3
  86. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  87. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs +121 -107
  88. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.cjs.map +1 -1
  89. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js +131 -117
  90. package/dist/martyrs/src/modules/globals/views/components/partials/Footer.vue.js.map +1 -1
  91. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +2 -2
  92. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
  93. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +2 -2
  94. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
  95. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  97. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +112 -49
  98. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -1
  99. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +121 -58
  100. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -1
  101. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  103. package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs +3 -3
  104. package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js +3 -3
  105. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +136 -134
  106. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs.map +1 -1
  107. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +136 -134
  108. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  109. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  111. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +1 -1
  112. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  115. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  117. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  119. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  121. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  123. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  125. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  127. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  129. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  131. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  135. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  137. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  138. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  139. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
  140. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  141. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  143. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  145. package/dist/martyrs/src/modules/music/router/music.cjs +2 -1
  146. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  147. package/dist/martyrs/src/modules/music/router/music.js +2 -1
  148. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  151. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  153. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +61 -9
  154. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -1
  155. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +61 -9
  156. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  157. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  159. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  160. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  161. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  163. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +2 -2
  164. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  165. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  166. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  167. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  169. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +1 -1
  170. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  171. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -1
  172. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  173. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -1
  174. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  175. package/dist/martyrs/src/modules/orders/orders.client.cjs +36 -44
  176. package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
  177. package/dist/martyrs/src/modules/orders/orders.client.js +36 -44
  178. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  179. package/dist/martyrs/src/modules/orders/store/models/customer.cjs +7 -0
  180. package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
  181. package/dist/martyrs/src/modules/orders/store/models/customer.js +7 -0
  182. package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
  183. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  184. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  185. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  186. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  187. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  189. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  190. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  191. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  192. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  193. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  195. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  196. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  197. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  198. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  199. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +17 -28
  200. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  201. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +17 -28
  202. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  203. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  204. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  205. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  206. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  207. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  208. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  209. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +9 -1
  210. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -1
  211. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +9 -1
  212. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  215. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +3 -2
  216. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  217. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +3 -2
  218. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +3 -3
  220. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +3 -3
  222. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  224. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  225. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +118 -135
  226. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  227. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +123 -140
  228. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  229. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  230. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  231. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  233. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +3 -5
  234. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs.map +1 -1
  235. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +4 -6
  236. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
  238. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  239. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  240. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  241. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs +10 -5
  242. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.cjs.map +1 -1
  243. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js +10 -5
  244. package/dist/martyrs/src/modules/products/components/sections/ProductsPopular.vue.js.map +1 -1
  245. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +6 -3
  246. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  247. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +6 -3
  248. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +2 -2
  250. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +2 -2
  251. package/dist/martyrs/src/modules/products/store/products.cjs +5 -5
  252. package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
  253. package/dist/martyrs/src/modules/products/store/products.js +5 -5
  254. package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
  255. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +2 -2
  256. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
  257. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  258. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  259. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  260. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  261. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  262. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  263. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  264. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  265. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  266. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  267. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  268. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  269. package/dist/martyrs.cjs.js +1 -1
  270. package/dist/martyrs.css +1 -1
  271. package/dist/martyrs.es.js +1 -1
  272. package/dist/orders.server.cjs +58 -0
  273. package/dist/orders.server.js +58 -0
  274. package/dist/products.server.cjs +79 -45
  275. package/dist/products.server.js +79 -45
  276. package/dist/style.css +44 -52
  277. package/dist/{web-BXajFCU2.js → web-C5cmb1FH.js} +1 -1
  278. package/dist/{web-DaBwwCQ5.cjs → web-d40xcY_Y.cjs} +1 -1
  279. package/package.json +1 -1
  280. package/src/components/Checkbox/Checkbox.vue +1 -1
  281. package/src/components/Feed/Carousel.vue +3 -1
  282. package/src/components/Feed/Feed.vue +1 -1
  283. package/src/components/Field/Field.vue +5 -0
  284. package/src/components/FieldBig/FieldBig.vue +2 -2
  285. package/src/modules/auth/views/components/pages/ProfileEdit.vue +17 -10
  286. package/src/modules/globals/views/components/layouts/Client.vue +12 -1
  287. package/src/modules/globals/views/components/partials/Footer.centered.vue +338 -0
  288. package/src/modules/globals/views/components/partials/Footer.vue +104 -99
  289. package/src/modules/globals/views/components/partials/Header.vue +1 -1
  290. package/src/modules/globals/views/components/sections/Filters.vue +73 -15
  291. package/src/modules/icons/logos/Logotype.vue +1 -1
  292. package/src/modules/inventory/components/pages/Inventory.vue +126 -119
  293. package/src/modules/orders/components/forms/FormCustomerDetails.vue +51 -0
  294. package/src/modules/orders/middlewares/customers.verifier.js +60 -0
  295. package/src/modules/orders/models/customer.model.js +18 -0
  296. package/src/modules/orders/orders.client.js +36 -44
  297. package/src/modules/orders/store/models/customer.js +7 -0
  298. package/src/modules/organizations/configs/navigation.organization.config.js +17 -26
  299. package/src/modules/products/TASKS.MD +1 -157
  300. package/src/modules/products/components/elements/QuantitySelector.vue +17 -9
  301. package/src/modules/products/components/pages/Product.vue +1 -1
  302. package/src/modules/products/components/pages/Products.vue +148 -175
  303. package/src/modules/products/components/sections/EditRecommended.vue +1 -3
  304. package/src/modules/products/components/sections/ProductsPopular.vue +9 -5
  305. package/src/modules/products/components/sections/ProductsRecommended.vue +4 -1
  306. package/src/modules/products/controllers/configs/products.lookup.config.js +31 -4
  307. package/src/modules/products/controllers/products.controller.js +14 -2
  308. package/src/modules/products/controllers/queries/products.queries.js +46 -43
  309. package/src/modules/products/models/product.model.js +4 -0
  310. package/src/modules/products/store/products.js +5 -5
  311. package/src/styles/base/all.scss +9 -4
  312. package/src/styles/config.scss +10 -0
  313. package/src/styles/responsive.scss +2 -1
  314. package/src/styles/typography.scss +0 -5
  315. package/dist/main-AWSb_d2P.cjs +0 -11
  316. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  317. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +0 -1
@@ -1,157 +1 @@
1
- теперь добавь фильтрацию по выбранному периоду на фронте и беке. На фронте в lookups надо добавить rents в случае если есть период (чтобы не грузить лишний раз), в products.lookup.config
2
- добавить rents и добавить в product.query фильтрацию по доступности с учетом quantityЖ Для фильтрации доступных товаров при агрегации на основе аренд, вам нужно использовать $lookup для
3
- проверки пересечений с активными арендами. Вот пример агрегации:
4
-
5
- javascript
6
- const checkAvailability = async (startDate, endDate) => {
7
- const pipeline = [
8
- // Фильтр по нужным критериям товаров
9
- {
10
- $match: {
11
- listing: 'rent',
12
- status: 'active' // или другие условия
13
- }
14
- },
15
-
16
- // Присоединяем аренды для каждого товара
17
- {
18
- $lookup: {
19
- from: 'rents',
20
- let: { productId: '$_id' },
21
- pipeline: [
22
- {
23
- $match: {
24
- $expr: {
25
- $and: [
26
- { $eq: ['$product', '$productId'] },
27
- // Только активные аренды
28
- { $in: ['$status', ['confirmed', 'active']] },
29
- // Проверка пересечения дат
30
- {
31
- $or: [
32
- // Аренда начинается в запрашиваемый период
33
- {
34
- $and: [
35
- { $gte: ['$startDate', new Date(startDate)] },
36
- { $lte: ['$startDate', new Date(endDate)] }
37
- ]
38
- },
39
- // Аренда заканчивается в запрашиваемый период
40
- {
41
- $and: [
42
- { $gte: ['$endDate', new Date(startDate)] },
43
- { $lte: ['$endDate', new Date(endDate)] }
44
- ]
45
- },
46
- // Аренда полностью покрывает запрашиваемый период
47
- {
48
- $and: [
49
- { $lte: ['$startDate', new Date(startDate)] },
50
- { $gte: ['$endDate', new Date(endDate)] }
51
- ]
52
- }
53
- ]
54
- }
55
- ]
56
- }
57
- }
58
- }
59
- ],
60
- as: 'activeRents'
61
- }
62
- },
63
-
64
- // Фильтруем только доступные товары
65
- {
66
- $match: {
67
- activeRents: { $size: 0 } // Нет активных аренд в этот период
68
- }
69
- },
70
-
71
- // Убираем поле activeRents из результата
72
- {
73
- $project: {
74
- activeRents: 0
75
- }
76
- }
77
- ];
78
-
79
- return await Product.aggregate(pipeline);
80
- };
81
- Если у вас товары могут иметь количество (например, несколько единиц одного товара), то нужно модифицировать логику:
82
-
83
- javascript
84
- const checkAvailabilityWithQuantity = async (startDate, endDate, requestedQuantity = 1) => {
85
- const pipeline = [
86
- {
87
- $match: {
88
- listing: 'rent',
89
- status: 'active'
90
- }
91
- },
92
-
93
- {
94
- $lookup: {
95
- from: 'rents',
96
- let: { productId: '$_id' },
97
- pipeline: [
98
- {
99
- $match: {
100
- $expr: {
101
- $and: [
102
- { $eq: ['$product', '$productId'] },
103
- { $in: ['$status', ['confirmed', 'active']] },
104
- // Проверка пересечения дат (та же логика)
105
- ]
106
- }
107
- }
108
- },
109
- // Суммируем количество в активных арендах
110
- {
111
- $group: {
112
- _id: null,
113
- totalRented: { $sum: '$quantity' }
114
- }
115
- }
116
- ],
117
- as: 'rentInfo'
118
- }
119
- },
120
-
121
- // Добавляем поле с доступным количеством
122
- {
123
- $addFields: {
124
- rentedQuantity: {
125
- $ifNull: [{ $arrayElemAt: ['$rentInfo.totalRented', 0] }, 0]
126
- },
127
- availableQuantity: {
128
- $subtract: [
129
- { $ifNull: ['$quantity', 1] }, // quantity товара или 1 по умолчанию
130
- { $ifNull: [{ $arrayElemAt: ['$rentInfo.totalRented', 0] }, 0] }
131
- ]
132
- }
133
- }
134
- },
135
-
136
- // Фильтруем товары с достаточным количеством
137
- {
138
- $match: {
139
- availableQuantity: { $gte: requestedQuantity }
140
- }
141
- },
142
-
143
- // Убираем временные поля
144
- {
145
- $project: {
146
- rentInfo: 0,
147
- rentedQuantity: 0
148
- }
149
- }
150
- ];
151
-
152
- return await Product.aggregate(pipeline);
153
- };
154
-
155
-
156
-
157
- сделать нужно минималистично и ничего кроме этого
1
+ ПРОВЕРИТЬ РАБОТУ ИНГРЕДИЕНТОВ НА БЕКЕНДЕ И ФРОНТЕНДЕ
@@ -8,15 +8,15 @@
8
8
  >
9
9
  <span class="i-regular">-</span>
10
10
  </button>
11
-
12
11
  <div class="radius-small br-solid br-1px br-light w-3r pd-small">
13
- <input
14
- type="number"
15
- v-model.number="modelValue"
16
- class="w-100 h-1r t-center"
17
- :min="1"
18
- :max="maxValue"
19
- />
12
+ <input
13
+ type="number"
14
+ v-model.number="modelValue"
15
+ @input="validateInput"
16
+ class="w-100 h-1r t-center"
17
+ :min="1"
18
+ :max="maxValue"
19
+ />
20
20
  </div>
21
21
  <button
22
22
  @click="incrementQuantity"
@@ -38,6 +38,14 @@ const props = defineProps({
38
38
 
39
39
  const modelValue = defineModel();
40
40
 
41
+ function validateInput() {
42
+ if (modelValue.value < 1) {
43
+ modelValue.value = 1;
44
+ } else if (modelValue.value > props.maxValue) {
45
+ modelValue.value = props.maxValue;
46
+ }
47
+ }
48
+
41
49
  function incrementQuantity() {
42
50
  if (modelValue.value < props.maxValue) {
43
51
  modelValue.value++;
@@ -49,4 +57,4 @@ function decrementQuantity() {
49
57
  modelValue.value--;
50
58
  }
51
59
  }
52
- </script>
60
+ </script>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div v-if="products.state.current" class="w-100 mobile:pd-thin pd-small bg-white">
3
- <div class="cols-2 mobile:cols-1 w-100 gap-medium">
3
+ <div class="cols-2 mobile:cols-1 tablet:cols-1 w-100 gap-medium">
4
4
 
5
5
  <ProductImages
6
6
  :images="currentImages"
@@ -21,7 +21,7 @@
21
21
  <div class="w-100 o-y-scroll h-100">
22
22
  <!-- Категории -->
23
23
  <div class="mn-b-medium" v-if="currentCategories.length > 0">
24
- <h4 class="mn-b-small">
24
+ <h4 class="mn-b-medium">
25
25
  {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}
26
26
  </h4>
27
27
  <div class="gap-micro">
@@ -29,7 +29,7 @@
29
29
  v-for="category in currentCategories"
30
30
  :key="category._id"
31
31
  @click="selectCategory(category)"
32
- class="pd-small radius-small cursor-pointer hover-bg-light transition-all"
32
+ class="cursor-pointer hover-t-underline mn-b-regular transition-all"
33
33
  >
34
34
  {{ category.name }}
35
35
  <br>
@@ -69,7 +69,6 @@
69
69
  </template>
70
70
  </Spoiler>
71
71
 
72
-
73
72
  <!-- Цена за сутки -->
74
73
  <Spoiler
75
74
  class="o-hidden mn-b-medium"
@@ -87,15 +86,17 @@
87
86
  <template #content>
88
87
  <div class="mn-t-small flex gap-thin">
89
88
  <Field
90
- v-model="priceRange.min"
89
+ v-model:field="selectedFilters.price.min"
91
90
  placeholder="From"
92
91
  type="number"
92
+ :label="returnCurrency()"
93
93
  class="w-50 bg-light pd-small radius-small"
94
94
  />
95
95
  <Field
96
- v-model="priceRange.max"
96
+ v-model:field="selectedFilters.price.max"
97
97
  placeholder="To"
98
98
  type="number"
99
+ :label="returnCurrency()"
99
100
  class="w-50 bg-light pd-small radius-small"
100
101
  />
101
102
  </div>
@@ -119,21 +120,12 @@
119
120
  <template #content>
120
121
  <div class="mn-t-small">
121
122
  <div
122
- v-for="option in availabilityOptions"
123
- :key="option.value"
124
- @click="selectAvailabilityOption(option.value)"
125
- :class="{ 'bg-light': selectedAvailability === option.value }"
126
- class="pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"
127
- >
128
- {{ option.label }}
129
- </div>
130
-
131
- <div
132
- @click="() => { tempSelectedDates = selectedDates; showDatePickerPopup = true; }"
133
- :class="{ 'bg-light': selectedAvailability === 'custom' }"
134
- class="pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"
123
+ @click="() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }"
124
+ :class="{ 'bg-light': selectedFilters?.availability }"
125
+ class="pd-small field-wrapper radius-small bg-light cursor-pointer hover-bg-light transition-all flex-v-center flex gap-thin"
135
126
  >
136
- {{ selectedDates ? `${formatDate(selectedDates.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedDates.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}
127
+ <IconCalendar class="i-regular" />
128
+ <span class="h-1r">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>
137
129
  </div>
138
130
  </div>
139
131
  </template>
@@ -141,6 +133,7 @@
141
133
 
142
134
  <!-- Кнопка очистки фильтров -->
143
135
  <button
136
+ @click="clearAllFilters"
144
137
  class="bg-main w-100 button mn-t-medium"
145
138
  >
146
139
  Clear Filters
@@ -148,72 +141,67 @@
148
141
  </div>
149
142
  </div>
150
143
 
151
- <div class="w-100 rows-1 pd-thin pos-relative o-hidden">
152
- <Filters
153
- v-model:filters="availableFilters"
154
- v-model:selected="selectedFilters"
155
- class="mn-b-thin mobile-only"
156
- />
157
- <slot></slot>
158
- <!-- <div class="pos-relative w-100 z-index-3 radius-tl-big radius-tr-big">
159
- <BlockSearch
160
- @search="debouncedSearch"
161
- placeholder="Enter product name"
162
- class="bg-light mn-b-thin h-4r"
163
- />
164
- </div> -->
165
-
166
- <div class="mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular">
167
- <div class="gap-thin flex-nowrap flex">
168
- <div
169
- v-for="category in currentCategories"
170
- :key="category._id"
171
- @click="selectCategory(category)"
172
- class=" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all"
173
- >
174
- {{ category.name }}
175
- </div>
144
+ <div class="w-100 rows-1 pd-thin pos-relative o-hidden">
145
+
146
+ <slot></slot>
147
+
148
+ <div class="mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular">
149
+ <div class="gap-thin flex-nowrap flex">
150
+ <div
151
+ v-for="category in currentCategories"
152
+ :key="category._id"
153
+ @click="selectCategory(category)"
154
+ class=" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all"
155
+ >
156
+ {{ category.name }}
176
157
  </div>
177
158
  </div>
178
-
179
-
180
- <Feed
181
- :search="true"
182
- v-model:filter="products.state.filter"
183
- v-model:sort="products.state.sort"
184
- :showLoadMore="false"
185
- :states="{
186
- empty: {
187
- title: 'No Products Found',
188
- description: 'Currently, there are no products available.'
189
- }
190
- }"
191
- :store="{
192
- read: (options) => products.actions.read(options),
193
- state: products.state
194
- }"
195
- :options="{
196
- limit: 16,
197
- owner: route.name?.includes('Organization') ? route.params._id : null,
198
- search: route.query.search,
199
- lookup: ['variants','rents'],
200
- categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,
201
- filters: processedFilters,
202
- prices: processedPrices,
203
- dateStart: selectedDates?.start,
204
- dateEnd: selectedDates?.end
205
- }"
206
- v-slot="{
207
- items
208
- }"
209
- class="cols-4 pos-relative w-100 rows-1 gap-thin"
210
-
211
- >
159
+ </div>
160
+ <Feed
161
+ :search="true"
162
+ v-model:sort="products.state.sort"
163
+ :showLoadMore="false"
164
+ :states="{
165
+ empty: {
166
+ title: 'No Products Found',
167
+ description: 'Currently, there are no products available.'
168
+ }
169
+ }"
170
+ :store="{
171
+ read: (options) => products.actions.read(options),
172
+ state: products.state
173
+ }"
174
+ :options="{
175
+ limit: 16,
176
+ owner: route.name?.includes('Organization') ? route.params._id : null,
177
+ search: route.query.search,
178
+ lookup: ['variants','rents'],
179
+ categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,
180
+ filters: processedFilters,
181
+ priceMin: selectedFilters.price?.min,
182
+ priceMax: selectedFilters.price?.max,
183
+ dateStart: selectedFilters.availability?.start,
184
+ dateEnd: selectedFilters.availability?.end
185
+ }"
186
+ v-slot="{
187
+ items
188
+ }"
189
+ class=""
190
+
191
+ >
192
+ <div class="mn-b-thin mobile-only">
193
+ <Filters
194
+ v-model:filters="availableFilters"
195
+ v-model:selected="selectedFilters"
196
+ class=""
197
+ />
198
+ </div>
199
+ <div class="cols-4 pos-relative w-100 rows-1 gap-thin">
212
200
  <router-link
213
201
  v-for="product in items"
214
202
  :to="route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }"
215
- class="pos-relative h-100 w-100"
216
- >
203
+ class="pos-relative h-100 w-100"
204
+ >
217
205
  <CardProduct
218
206
  :key="product._id"
219
207
  :product="product"
@@ -223,9 +211,10 @@
223
211
  class="pos-relative h-100 w-100 bg-light"
224
212
  />
225
213
  </router-link>
226
- </Feed>
214
+ </div>
215
+ </Feed>
227
216
 
228
- </div>
217
+ </div>
229
218
  </div>
230
219
 
231
220
  <!-- Date Picker Popup -->
@@ -241,7 +230,7 @@
241
230
  v-model:date="tempSelectedDates"
242
231
  :allowRange="true"
243
232
  :disablePastDates="true"
244
- class="mn-b-medium"
233
+ class="mn-b-medium bg-light"
245
234
  />
246
235
 
247
236
  <div class="flex gap-small">
@@ -287,6 +276,8 @@
287
276
 
288
277
  import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'
289
278
  import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'
279
+ import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'
280
+
290
281
 
291
282
  // Accessing router and store
292
283
  import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';
@@ -305,74 +296,61 @@
305
296
  const categoryFilters = ref([]);
306
297
  // const selectedFilters = ref({});
307
298
 
308
- const availableFilters = ref([
309
- {
310
- title: 'Price',
311
- value: 'price',
312
- type: 'range',
313
- minPlaceholder: 'From',
314
- maxPlaceholder: 'To'
315
- },
316
- {
317
- title: 'Delivery',
318
- value: 'delivery',
319
- type: 'checkbox',
320
- options: [
321
- { label: 'Pickup', value: 'pickup' },
322
- { label: 'Courier', value: 'courier' },
323
- { label: 'Post', value: 'post' }
324
- ]
325
- },
326
- {
327
- title: 'Status',
328
- value: 'status',
329
- type: 'radio',
330
- options: [
331
- { label: 'Available', value: 'available' },
332
- { label: 'Out of Stock', value: 'out_of_stock' },
333
- { label: 'Coming Soon', value: 'coming_soon' }
334
- ]
335
- }
336
- ])
337
-
338
- const selectedFilters = ref({
339
- price: { min: '', max: '' },
340
- delivery: [],
341
- status: null
342
- })
299
+ const availableFilters = ref([
300
+ {
301
+ title: 'Price',
302
+ value: 'price',
303
+ type: 'range',
304
+ minPlaceholder: 'From',
305
+ maxPlaceholder: 'To'
306
+ },
307
+ {
308
+ title: 'Availability',
309
+ value: 'availability',
310
+ type: 'date'
311
+ }
312
+ ])
313
+
314
+ const selectedFilters = ref({
315
+ price: { min: '', max: '' },
316
+ availability: null
317
+ })
343
318
 
344
-
345
- // Переменные фильтров
346
- const availabilityOptions = ref([
347
- { label: 'Available today', value: 'today' },
348
- { label: 'This week', value: 'week' },
349
- { label: 'This month', value: 'month' }
350
- ]);
351
-
352
- const selectedAvailability = ref('all');
353
319
  const showDatePickerPopup = ref(false);
354
- const selectedPeriod = ref(null);
355
- const selectedDates = ref(null);
356
320
  const tempSelectedDates = ref(null);
357
-
358
- const priceRange = ref({
359
- min: '',
360
- max: ''
361
- });
362
321
 
363
322
  // Computed property for processed filters
364
323
  const processedFilters = computed(() => {
365
- return generateFilters(selectedFilters.value);
324
+ const filters = [];
325
+
326
+ // Обрабатываем фильтры категорий
327
+ Object.entries(selectedFilters.value).forEach(([key, value]) => {
328
+ if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно
329
+
330
+ if (Array.isArray(value) && value.length > 0) {
331
+ filters.push({
332
+ parameter: key,
333
+ values: value,
334
+ caseSensitive: false
335
+ });
336
+ } else if (value && typeof value === 'string' && value.trim() !== '') {
337
+ filters.push({
338
+ parameter: key,
339
+ values: [value],
340
+ caseSensitive: false
341
+ });
342
+ }
343
+ });
344
+
345
+ return filters.length > 0 ? JSON.stringify(filters) : '';
366
346
  });
367
347
 
368
- const processedPrices = computed(() => {
369
- return priceRange.value.min || priceRange.value.max ? `${priceRange.value.min || 0}-${priceRange.value.max || 999999}` : null;
370
- });
348
+
371
349
 
372
350
 
373
351
  const processedLookups = computed(() => {
374
352
  const lookups = ['variants'];
375
- if (processedDates.value) {
353
+ if (selectedFilters.value.availability) {
376
354
  lookups.push('rents');
377
355
  }
378
356
  return lookups;
@@ -381,6 +359,9 @@ const selectedFilters = ref({
381
359
  const loadCategoryData = async () => {
382
360
  const categoryPath = route.params.categoryPath;
383
361
 
362
+ // Очищаем фильтры категории из предыдущей загрузки
363
+ availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');
364
+
384
365
  try {
385
366
  if (categoryPath) {
386
367
  // Загружаем категорию и её прямых детей
@@ -395,12 +376,22 @@ const selectedFilters = ref({
395
376
  currentCategories.value = result[0].children || [];
396
377
  categoryFilters.value = result[0].filters || [];
397
378
 
398
- // Initialize selected filters object
399
- const filtersObj = {};
379
+ // Добавляем фильтры категории в availableFilters
400
380
  (result[0].filters || []).forEach(filter => {
401
- filtersObj[filter.name] = [];
381
+ availableFilters.value.push({
382
+ title: filter.name,
383
+ value: filter.name,
384
+ type: 'checkbox',
385
+ options: (filter.options || []).map(option => ({
386
+ label: typeof option === 'string' ? option : option.text,
387
+ value: typeof option === 'string' ? option : option.text
388
+ }))
389
+ });
390
+ // Инициализируем массив для фильтра
391
+ if (!selectedFilters.value[filter.name]) {
392
+ selectedFilters.value[filter.name] = [];
393
+ }
402
394
  });
403
- selectedFilters.value = filtersObj;
404
395
  }
405
396
  } else {
406
397
  // Загружаем только корневые категории
@@ -410,10 +401,12 @@ const selectedFilters = ref({
410
401
  });
411
402
 
412
403
  currentCategories.value = result;
404
+ categoryFilters.value = [];
413
405
  }
414
406
  } catch (error) {
415
407
  console.error('Error loading categories:', error);
416
408
  currentCategories.value = [];
409
+ categoryFilters.value = [];
417
410
  }
418
411
  };
419
412
 
@@ -434,43 +427,23 @@ const selectedFilters = ref({
434
427
  }
435
428
  };
436
429
 
437
- // Функция выбора опции доступности
438
- const selectAvailabilityOption = (value) => {
439
- selectedAvailability.value = value;
440
- const today = new Date();
441
-
442
- switch(value) {
443
- case 'today':
444
- selectedDates.value = {
445
- start: today,
446
- end: today
447
- };
448
- break;
449
- case 'week':
450
- const weekEnd = new Date(today);
451
- weekEnd.setDate(today.getDate() + 7);
452
- selectedDates.value = {
453
- start: today,
454
- end: weekEnd
455
- };
456
- break;
457
- case 'month':
458
- const monthEnd = new Date(today);
459
- monthEnd.setMonth(today.getMonth() + 1);
460
- selectedDates.value = {
461
- start: today,
462
- end: monthEnd
463
- };
464
- break;
465
- }
466
- };
467
430
 
468
431
  // Функция применения фильтра дат
469
432
  const applyDateFilter = () => {
470
- selectedDates.value = tempSelectedDates.value;
471
- selectedAvailability.value = 'custom';
433
+ selectedFilters.value.availability = tempSelectedDates.value;
472
434
  showDatePickerPopup.value = false;
473
435
  };
436
+
437
+ // Функция очистки всех фильтров
438
+ const clearAllFilters = () => {
439
+ selectedFilters.value.price = { min: '', max: '' };
440
+ selectedFilters.value.availability = null;
441
+
442
+ // Очищаем фильтры категорий
443
+ categoryFilters.value.forEach(filter => {
444
+ selectedFilters.value[filter.name] = [];
445
+ });
446
+ };
474
447
 
475
448
  globals.state.navigation_bar.actions = [{
476
449
  component: IconPlus,