@ozdao/martyrs 0.2.506 → 0.2.507

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 (574) hide show
  1. package/dist/auth.server.cjs +1 -1
  2. package/dist/auth.server.js +1 -1
  3. package/dist/builder.cjs +52 -60
  4. package/dist/builder.js +52 -60
  5. package/dist/chats.server.cjs +1 -1
  6. package/dist/chats.server.js +1 -1
  7. package/dist/events.server.cjs +1 -1
  8. package/dist/events.server.js +1 -1
  9. package/dist/{mailing-q7sR8gCV.cjs → mailing-Bs9ThyVZ.cjs} +1 -24
  10. package/dist/{mailing-C11EYWm-.js → mailing-DzlhsxCC.js} +1 -24
  11. package/dist/main-AWSb_d2P.cjs +11 -0
  12. package/dist/{main-DC__VS5b.js → main-Dq-UfO4G.js} +2562 -2477
  13. package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
  14. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
  15. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  16. package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
  17. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +3 -3
  18. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  19. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +3 -3
  20. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  21. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
  22. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  23. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
  24. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  25. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
  26. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  27. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
  28. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  29. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +14 -45
  30. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  31. package/dist/martyrs/src/components/Feed/Feed.vue.js +21 -52
  32. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  33. package/dist/martyrs/src/components/Field/Field.vue.cjs +14 -6
  34. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  35. package/dist/martyrs/src/components/Field/Field.vue.js +14 -6
  36. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  37. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +58 -11
  38. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  39. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +60 -13
  40. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  41. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +2 -2
  42. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
  43. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  44. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
  46. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
  47. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  48. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
  49. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
  50. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
  51. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  52. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
  56. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  57. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  58. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  60. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  62. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  63. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +42 -10
  64. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  65. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +44 -12
  66. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +12 -16
  68. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +22 -26
  70. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +13 -17
  72. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +34 -38
  74. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +13 -9
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +13 -9
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +2 -2
  80. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  81. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +2 -2
  82. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  83. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +2 -2
  84. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  85. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  87. package/dist/martyrs/src/modules/auth/views/router/users.cjs +0 -4
  88. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  89. package/dist/martyrs/src/modules/auth/views/router/users.js +0 -4
  90. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  91. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  93. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  95. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +431 -0
  96. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -0
  97. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +431 -0
  98. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -0
  99. package/dist/martyrs/src/modules/community/router/blogposts.cjs +17 -0
  100. package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/community/router/blogposts.js +17 -0
  102. package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
  103. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  105. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  107. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  108. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  109. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  111. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -3
  112. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -3
  114. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  117. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  118. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  119. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs +4 -6
  120. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js +4 -6
  122. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
  123. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +1 -1
  125. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +5 -2
  126. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
  127. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +6 -3
  128. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  131. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
  133. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  135. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +2 -3
  136. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  137. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +2 -3
  138. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  140. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  141. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  143. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  145. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +324 -0
  146. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
  147. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +324 -0
  148. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
  149. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  151. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs +32 -0
  152. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs.map +1 -0
  153. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js +32 -0
  154. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js.map +1 -0
  155. package/dist/martyrs/src/modules/icons/icons.client.cjs +2 -0
  156. package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
  157. package/dist/martyrs/src/modules/icons/icons.client.js +116 -114
  158. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  159. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +5 -3
  160. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +117 -115
  162. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  165. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +1 -1
  166. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  167. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +11 -36
  168. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +11 -36
  170. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/landing/landing.client.cjs +3 -0
  172. package/dist/martyrs/src/modules/landing/landing.client.cjs.map +1 -1
  173. package/dist/martyrs/src/modules/landing/landing.client.js +3 -0
  174. package/dist/martyrs/src/modules/landing/landing.client.js.map +1 -1
  175. package/dist/martyrs/src/modules/landing/locales/en.cjs +12 -0
  176. package/dist/martyrs/src/modules/landing/locales/en.cjs.map +1 -0
  177. package/dist/martyrs/src/modules/landing/locales/en.js +12 -0
  178. package/dist/martyrs/src/modules/landing/locales/en.js.map +1 -0
  179. package/dist/martyrs/src/modules/landing/locales/index.cjs +10 -0
  180. package/dist/martyrs/src/modules/landing/locales/index.cjs.map +1 -0
  181. package/dist/martyrs/src/modules/landing/locales/index.js +10 -0
  182. package/dist/martyrs/src/modules/landing/locales/index.js.map +1 -0
  183. package/dist/martyrs/src/modules/landing/locales/ru.cjs +12 -0
  184. package/dist/martyrs/src/modules/landing/locales/ru.cjs.map +1 -0
  185. package/dist/martyrs/src/modules/landing/locales/ru.js +12 -0
  186. package/dist/martyrs/src/modules/landing/locales/ru.js.map +1 -0
  187. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  189. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +1 -1
  190. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  191. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +1 -1
  192. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  193. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  195. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
  196. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  197. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  198. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  199. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  201. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +1 -1
  202. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  203. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
  204. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  205. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +2 -2
  206. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  207. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  208. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  211. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  212. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  213. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +2 -2
  214. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  215. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  216. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  218. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  219. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +2 -2
  220. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  222. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  224. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  225. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +1 -1
  226. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  227. package/dist/martyrs/src/modules/music/router/music.cjs +2 -4
  228. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/music/router/music.js +2 -4
  230. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  231. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  233. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs +86 -0
  234. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs.map +1 -0
  235. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +86 -0
  236. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -0
  237. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs +103 -0
  238. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs.map +1 -0
  239. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +103 -0
  240. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -0
  241. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +194 -0
  242. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -0
  243. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +194 -0
  244. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -0
  245. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +138 -0
  246. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs.map +1 -0
  247. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +138 -0
  248. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -0
  249. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +189 -0
  250. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -0
  251. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +189 -0
  252. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -0
  253. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +173 -0
  254. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs.map +1 -0
  255. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +173 -0
  256. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -0
  257. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +233 -0
  258. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs.map +1 -0
  259. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +233 -0
  260. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -0
  261. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +234 -0
  262. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs.map +1 -0
  263. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +234 -0
  264. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -0
  265. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  266. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  267. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +10 -9
  268. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  269. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +10 -9
  270. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +9 -83
  272. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +10 -84
  274. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  276. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  277. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +119 -0
  278. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs.map +1 -0
  279. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +119 -0
  280. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -0
  281. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +139 -0
  282. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs.map +1 -0
  283. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +139 -0
  284. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -0
  285. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -3
  286. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  287. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -3
  288. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  289. package/dist/martyrs/src/modules/orders/locales/en.cjs +38 -0
  290. package/dist/martyrs/src/modules/orders/locales/en.cjs.map +1 -0
  291. package/dist/martyrs/src/modules/orders/locales/en.js +38 -0
  292. package/dist/martyrs/src/modules/orders/locales/en.js.map +1 -0
  293. package/dist/martyrs/src/modules/orders/locales/index.cjs +10 -0
  294. package/dist/martyrs/src/modules/orders/locales/index.cjs.map +1 -0
  295. package/dist/martyrs/src/modules/orders/locales/index.js +10 -0
  296. package/dist/martyrs/src/modules/orders/locales/index.js.map +1 -0
  297. package/dist/martyrs/src/modules/orders/locales/ru.cjs +38 -0
  298. package/dist/martyrs/src/modules/orders/locales/ru.cjs.map +1 -0
  299. package/dist/martyrs/src/modules/orders/locales/ru.js +38 -0
  300. package/dist/martyrs/src/modules/orders/locales/ru.js.map +1 -0
  301. package/dist/martyrs/src/modules/orders/orders.client.cjs +78 -3
  302. package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
  303. package/dist/martyrs/src/modules/orders/orders.client.js +80 -5
  304. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  305. package/dist/martyrs/src/modules/orders/router/applications.router.cjs +17 -0
  306. package/dist/martyrs/src/modules/orders/router/applications.router.cjs.map +1 -0
  307. package/dist/martyrs/src/modules/orders/router/applications.router.js +17 -0
  308. package/dist/martyrs/src/modules/orders/router/applications.router.js.map +1 -0
  309. package/dist/martyrs/src/modules/orders/router/customers.router.cjs +18 -0
  310. package/dist/martyrs/src/modules/orders/router/customers.router.cjs.map +1 -0
  311. package/dist/martyrs/src/modules/orders/router/customers.router.js +18 -0
  312. package/dist/martyrs/src/modules/orders/router/customers.router.js.map +1 -0
  313. package/dist/martyrs/src/modules/orders/store/applications.cjs +4 -42
  314. package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
  315. package/dist/martyrs/src/modules/orders/store/applications.js +3 -41
  316. package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
  317. package/dist/martyrs/src/modules/orders/store/models/application.cjs +20 -0
  318. package/dist/martyrs/src/modules/orders/store/models/application.cjs.map +1 -0
  319. package/dist/martyrs/src/modules/orders/store/models/application.js +20 -0
  320. package/dist/martyrs/src/modules/orders/store/models/application.js.map +1 -0
  321. package/dist/martyrs/src/modules/orders/store/models/customer.cjs +13 -1
  322. package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
  323. package/dist/martyrs/src/modules/orders/store/models/customer.js +13 -1
  324. package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
  325. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +1 -1
  326. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  327. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  328. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  329. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +1 -1
  330. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
  331. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  332. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  333. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  334. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  335. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +16 -192
  336. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  337. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +17 -193
  338. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  339. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  340. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  341. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  342. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  343. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -11
  344. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +1 -1
  345. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +6 -15
  346. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  348. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  349. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  350. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  351. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  352. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  353. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +85 -89
  354. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  355. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +92 -96
  356. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  357. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +4 -0
  358. package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
  359. package/dist/martyrs/src/modules/organizations/router/organizations.js +4 -0
  360. package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
  361. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  362. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  363. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs +3 -6
  364. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
  365. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +3 -6
  366. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  367. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  368. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  369. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  370. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  371. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +1 -1
  372. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  373. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  374. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  375. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +2 -2
  376. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
  377. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +2 -2
  378. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  379. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +22 -19
  380. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  381. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +22 -19
  382. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  383. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +28 -19
  384. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  385. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +28 -19
  386. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  387. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  388. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  389. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +3 -3
  390. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +3 -3
  391. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +360 -105
  392. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  393. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +378 -123
  394. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  395. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  396. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  397. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  398. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  399. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
  400. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  401. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
  402. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  403. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  404. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  405. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +33 -3
  406. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  407. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +34 -4
  408. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +2 -2
  410. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +2 -2
  411. package/dist/martyrs/src/modules/products/router/products.router.cjs +15 -0
  412. package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
  413. package/dist/martyrs/src/modules/products/router/products.router.js +15 -0
  414. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  415. package/dist/martyrs/src/modules/products/store/categories.cjs +25 -7
  416. package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
  417. package/dist/martyrs/src/modules/products/store/categories.js +25 -7
  418. package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
  419. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +2 -2
  420. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
  421. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  422. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  423. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  424. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  425. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  426. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  427. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  428. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  429. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +1 -1
  430. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  431. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  432. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  433. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +345 -0
  434. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -0
  435. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +345 -0
  436. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -0
  437. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  438. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  439. package/dist/martyrs/src/modules/spots/router/spots.cjs +17 -0
  440. package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
  441. package/dist/martyrs/src/modules/spots/router/spots.js +17 -0
  442. package/dist/martyrs/src/modules/spots/router/spots.js.map +1 -1
  443. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  444. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  445. package/dist/martyrs.cjs.js +1 -1
  446. package/dist/martyrs.css +1 -1
  447. package/dist/martyrs.es.js +1 -1
  448. package/dist/notifications.server.cjs +1 -1
  449. package/dist/notifications.server.js +1 -1
  450. package/dist/orders.server.cjs +459 -201
  451. package/dist/orders.server.js +459 -201
  452. package/dist/organizations.server.cjs +1 -1
  453. package/dist/organizations.server.js +1 -1
  454. package/dist/products.server.cjs +428 -255
  455. package/dist/products.server.js +428 -255
  456. package/dist/style.css +115 -139
  457. package/dist/{tickets.controller-DQQcjyui.js → tickets.controller-C56OvH6v.js} +1 -1
  458. package/dist/{tickets.controller-D0V0gJCA.cjs → tickets.controller-DdnndM6c.cjs} +1 -1
  459. package/dist/wallet.server.cjs +1 -1
  460. package/dist/wallet.server.js +1 -1
  461. package/dist/{web-B1bEJ1W9.js → web-BXajFCU2.js} +1 -1
  462. package/dist/{web-D5i9k2Vv.cjs → web-DaBwwCQ5.cjs} +1 -1
  463. package/package.json +1 -1
  464. package/src/builder/modes/ssr.dev.js +10 -10
  465. package/src/builder/rspack/rspack.config.ssr.client.js +50 -50
  466. package/src/components/Checkbox/Checkbox.vue +3 -4
  467. package/src/components/Feed/Feed.old.vue +522 -0
  468. package/src/components/Feed/Feed.vue +4 -4
  469. package/src/components/Field/Field.vue +7 -1
  470. package/src/components/FieldBig/FieldBig.vue +62 -8
  471. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  472. package/src/modules/STYLES.MD +198 -0
  473. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  474. package/src/modules/auth/views/components/pages/ProfileEdit.vue +42 -8
  475. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +9 -11
  476. package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +9 -11
  477. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +7 -4
  478. package/src/modules/auth/views/router/users.js +0 -4
  479. package/src/modules/community/components/pages/Posts.vue +444 -0
  480. package/src/modules/community/router/blogposts.js +15 -0
  481. package/src/modules/globals/views/classes/globals.websocket.js +7 -8
  482. package/src/modules/globals/views/components/blocks/Card.vue +2 -1
  483. package/src/modules/globals/views/components/layouts/Client.vue +1 -2
  484. package/src/modules/globals/views/components/partials/FooterAlt.vue +161 -188
  485. package/src/modules/globals/views/components/sections/Filters.vue +261 -121
  486. package/src/modules/globals/views/components/sections/filters/FilterCheckbox.vue +78 -0
  487. package/src/modules/globals/views/components/sections/filters/FilterDateRange.vue +177 -0
  488. package/src/modules/globals/views/components/sections/filters/FilterRange.vue +51 -50
  489. package/src/modules/icons/entities/IconLock.vue +14 -0
  490. package/src/modules/icons/icons.client.js +2 -1
  491. package/src/modules/icons/pages/IconsPage.vue +4 -2
  492. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +11 -61
  493. package/src/modules/landing/landing.client.js +6 -0
  494. package/src/modules/landing/locales/en.js +9 -0
  495. package/src/modules/landing/locales/index.js +7 -0
  496. package/src/modules/landing/locales/ru.js +9 -0
  497. package/src/modules/music/components/pages/Album.vue +1 -1
  498. package/src/modules/music/components/pages/Playlist.vue +1 -1
  499. package/src/modules/music/components/pages/Track.vue +1 -1
  500. package/src/modules/orders/components/blocks/CardApplication.vue +74 -0
  501. package/src/modules/orders/components/blocks/CardCustomer.vue +90 -0
  502. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +199 -0
  503. package/src/modules/orders/components/forms/FormApplicationDetails.vue +117 -0
  504. package/src/modules/orders/components/forms/FormCustomerDetails.vue +165 -0
  505. package/src/modules/orders/components/forms/FormSelectCustomer.vue +172 -0
  506. package/src/modules/orders/components/pages/Applications.vue +240 -0
  507. package/src/modules/orders/components/pages/Customers.vue +239 -0
  508. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  509. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -75
  510. package/src/modules/orders/components/sections/ApplicationDetails.vue +91 -0
  511. package/src/modules/orders/components/sections/CustomerDetails.vue +107 -0
  512. package/src/modules/orders/locales/en.js +35 -0
  513. package/src/modules/orders/locales/index.js +7 -0
  514. package/src/modules/orders/locales/ru.js +35 -0
  515. package/src/modules/orders/middlewares/applications.verifier.js +189 -0
  516. package/src/modules/orders/middlewares/customers.verifier.js +251 -0
  517. package/src/modules/orders/models/application.model.js +21 -0
  518. package/src/modules/orders/models/customer.model.js +26 -0
  519. package/src/modules/orders/orders.client.js +86 -1
  520. package/src/modules/orders/orders.server.js +3 -1
  521. package/src/modules/orders/router/applications.router.js +15 -0
  522. package/src/modules/orders/router/customers.router.js +17 -0
  523. package/src/modules/orders/routes/applications.routes.js +124 -12
  524. package/src/modules/orders/routes/customers.routes.js +43 -0
  525. package/src/modules/orders/store/applications.js +3 -159
  526. package/src/modules/orders/store/models/application.js +18 -0
  527. package/src/modules/orders/store/models/customer.js +12 -0
  528. package/src/modules/organizations/components/pages/Organization.new.vue +593 -0
  529. package/src/modules/organizations/components/pages/Organization.vue +10 -201
  530. package/src/modules/organizations/components/sections/DetailsTabSection.vue +2 -2
  531. package/src/modules/organizations/configs/navigation.organization.config.js +69 -85
  532. package/src/modules/organizations/router/organizations.js +5 -0
  533. package/src/modules/pages/views/components/pages/Page.vue +1 -1
  534. package/src/modules/products/TASKS.MD +157 -0
  535. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  536. package/src/modules/products/components/blocks/ProductImages.vue +1 -1
  537. package/src/modules/products/components/pages/Categories.vue +27 -22
  538. package/src/modules/products/components/pages/CategoryEdit.vue +24 -13
  539. package/src/modules/products/components/pages/Products.vue +414 -173
  540. package/src/modules/products/components/sections/ProductsRecommended.vue +46 -2
  541. package/src/modules/products/controllers/categories.controller.js +321 -282
  542. package/src/modules/products/controllers/configs/products.lookup.config.js +9 -0
  543. package/src/modules/products/controllers/products.controller.js +2 -1
  544. package/src/modules/products/controllers/queries/products.queries.js +183 -11
  545. package/src/modules/products/middlewares/categories.verifier.js +58 -15
  546. package/src/modules/products/migrations/categories-to-materialized-path.js +433 -0
  547. package/src/modules/products/migrations/path-to-url.js +27 -0
  548. package/src/modules/products/models/category.model.js +8 -23
  549. package/src/modules/products/router/products.router.js +12 -0
  550. package/src/modules/products/store/categories.js +26 -7
  551. package/src/modules/rents/TASK.MD +161 -0
  552. package/src/modules/spots/components/pages/Spots.vue +342 -0
  553. package/src/modules/spots/router/spots.js +15 -0
  554. package/src/styles/base/all.scss +2 -3
  555. package/src/styles/layout.scss +16 -0
  556. package/dist/main-w3rPUBVh.cjs +0 -11
  557. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs +0 -96
  558. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs.map +0 -1
  559. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +0 -96
  560. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +0 -1
  561. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  562. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  563. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  564. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +0 -155
  565. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +0 -1
  566. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +0 -155
  567. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +0 -1
  568. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +0 -81
  569. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs.map +0 -1
  570. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js +0 -81
  571. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js.map +0 -1
  572. package/src/modules/orders/components/sections/FormAddCustomer.vue +0 -152
  573. package/src/modules/orders/components/sections/FormCustomerDetails.vue +0 -67
  574. package/src/modules/orders/controllers/applications.controller.js +0 -122
@@ -2,46 +2,202 @@
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 Tab = require("../../../../components/Tab/Tab.vue.cjs");
5
+ ;/* empty css */
6
6
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
7
- ;/* empty css */
7
+ const Spoiler = require("../../../../components/Spoiler/Spoiler.vue2.cjs");
8
+ const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
8
9
  require("vue-i18n");
9
10
  const categories = require("../../store/categories.cjs");
10
11
  require("../../../marketplace/views/store/marketplace.cjs");
11
12
  ;/* empty css */
12
- const BlockSearch = require("../../../globals/views/components/blocks/BlockSearch.vue.cjs");
13
- const BlockFilter = require("../../../globals/views/components/blocks/BlockFilter.vue.cjs");
13
+ const Field = require("../../../../components/Field/Field.vue.cjs");
14
+ const IconChevronBottom = require("../../../icons/navigation/IconChevronBottom.vue.cjs");
15
+ const Filters = require("../../../globals/views/components/sections/Filters.vue2.cjs");
16
+ const Calendar = require("../../../../components/Calendar/Calendar.vue2.cjs");
17
+ const Popup = require("../../../../components/Popup/Popup.vue.cjs");
14
18
  const CardProduct = require("../blocks/CardProduct.vue.cjs");
15
19
  const IconPlus = require("../../../icons/navigation/IconPlus.vue.cjs");
16
20
  const auth = require("../../../auth/views/store/auth.cjs");
17
21
  const globals = require("../../../globals/views/store/globals.cjs");
18
22
  const products = require("../../store/products.cjs");
23
+ const mixins = require("../../../globals/views/mixins/mixins.cjs");
19
24
  const _hoisted_1 = { class: "pos-relative" };
20
25
  const _hoisted_2 = {
21
26
  key: 0,
22
27
  class: "pd-medium flex-v-center flex-nowrap flex"
23
28
  };
24
- const _hoisted_3 = { class: "cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative radius-medium" };
29
+ const _hoisted_3 = { class: "cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative" };
25
30
  const _hoisted_4 = { class: "o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
26
- const _hoisted_5 = { class: "w-100 pd-thin h-max pos-relative o-hidden" };
27
- const _hoisted_6 = { class: "pos-relative w-100 z-index-3 radius-tl-big radius-tr-big" };
31
+ const _hoisted_5 = { class: "w-100 o-y-scroll h-100" };
32
+ const _hoisted_6 = {
33
+ key: 0,
34
+ class: "mn-b-medium"
35
+ };
36
+ const _hoisted_7 = { class: "mn-b-small" };
37
+ const _hoisted_8 = { class: "gap-micro" };
38
+ const _hoisted_9 = ["onClick"];
39
+ const _hoisted_10 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
40
+ const _hoisted_11 = { class: "w-100" };
41
+ const _hoisted_12 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
42
+ const _hoisted_13 = { class: "mn-t-small" };
43
+ const _hoisted_14 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
44
+ const _hoisted_15 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
45
+ const _hoisted_16 = { class: "mn-t-small flex gap-thin" };
46
+ const _hoisted_17 = { class: "cursor-pointer w-100 flex-v-center flex-nowrap flex" };
47
+ const _hoisted_18 = { class: "h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra" };
48
+ const _hoisted_19 = { class: "mn-t-small" };
49
+ const _hoisted_20 = ["onClick"];
50
+ const _hoisted_21 = { class: "w-100 rows-1 pd-thin pos-relative o-hidden" };
51
+ const _hoisted_22 = { class: "mn-b-thin w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular" };
52
+ const _hoisted_23 = { class: "gap-thin flex-nowrap flex" };
53
+ const _hoisted_24 = ["onClick"];
54
+ const _hoisted_25 = { class: "flex gap-small" };
28
55
  const _sfc_main = {
29
56
  __name: "Products",
30
57
  setup(__props) {
31
58
  const route = vueRouter.useRoute();
32
59
  const router = vueRouter.useRouter();
33
- const tabProducts = vue.ref(route.query.tabProducts ? route.query.tabProducts : "all");
34
- if (route.name !== "Organization") route.query.tabProducts = tabProducts.value;
35
- if (route.query) {
36
- const query = route.query;
37
- products.state.filter.selected.categories = query.categories ? query.categories.split(",") : [];
38
- products.state.filter.selected.prices = query.prices ? query.prices.split(",") : [];
39
- products.state.filter.selected.delivery = query.delivery ? query.delivery.split(",") : [];
40
- products.state.filter.selected.brand = query.brand ? query.brand.split(",") : [];
41
- }
42
- vue.watch(tabProducts, (newValue) => {
43
- if (route.name !== "Organization") router.replace({ query: { ...route.query, tabProducts: newValue } });
60
+ const { generateFilters, formatDate } = mixins.useGlobalMixins();
61
+ const currentCategories = vue.ref([]);
62
+ const currentCategory = vue.ref(null);
63
+ const categoryFilters = vue.ref([]);
64
+ const availableFilters = vue.ref([
65
+ {
66
+ title: "Price",
67
+ value: "price",
68
+ type: "range",
69
+ minPlaceholder: "From",
70
+ maxPlaceholder: "To"
71
+ },
72
+ {
73
+ title: "Delivery",
74
+ value: "delivery",
75
+ type: "checkbox",
76
+ options: [
77
+ { label: "Pickup", value: "pickup" },
78
+ { label: "Courier", value: "courier" },
79
+ { label: "Post", value: "post" }
80
+ ]
81
+ },
82
+ {
83
+ title: "Status",
84
+ value: "status",
85
+ type: "radio",
86
+ options: [
87
+ { label: "Available", value: "available" },
88
+ { label: "Out of Stock", value: "out_of_stock" },
89
+ { label: "Coming Soon", value: "coming_soon" }
90
+ ]
91
+ }
92
+ ]);
93
+ const selectedFilters = vue.ref({
94
+ price: { min: "", max: "" },
95
+ delivery: [],
96
+ status: null
97
+ });
98
+ const availabilityOptions = vue.ref([
99
+ { label: "Available today", value: "today" },
100
+ { label: "This week", value: "week" },
101
+ { label: "This month", value: "month" }
102
+ ]);
103
+ const selectedAvailability = vue.ref("all");
104
+ const showDatePickerPopup = vue.ref(false);
105
+ vue.ref(null);
106
+ const selectedDates = vue.ref(null);
107
+ const tempSelectedDates = vue.ref(null);
108
+ const priceRange = vue.ref({
109
+ min: "",
110
+ max: ""
111
+ });
112
+ const processedFilters = vue.computed(() => {
113
+ return generateFilters(selectedFilters.value);
44
114
  });
115
+ const processedPrices = vue.computed(() => {
116
+ return priceRange.value.min || priceRange.value.max ? `${priceRange.value.min || 0}-${priceRange.value.max || 999999}` : null;
117
+ });
118
+ vue.computed(() => {
119
+ const lookups = ["variants"];
120
+ if (processedDates.value) {
121
+ lookups.push("rents");
122
+ }
123
+ return lookups;
124
+ });
125
+ const loadCategoryData = async () => {
126
+ const categoryPath = route.params.categoryPath;
127
+ try {
128
+ if (categoryPath) {
129
+ const result = await categories.actions.read({
130
+ url: `/${categoryPath}`,
131
+ depth: 1,
132
+ tree: false
133
+ });
134
+ if (result.length > 0) {
135
+ currentCategory.value = result[0];
136
+ currentCategories.value = result[0].children || [];
137
+ categoryFilters.value = result[0].filters || [];
138
+ const filtersObj = {};
139
+ (result[0].filters || []).forEach((filter) => {
140
+ filtersObj[filter.name] = [];
141
+ });
142
+ selectedFilters.value = filtersObj;
143
+ }
144
+ } else {
145
+ const result = await categories.actions.read({
146
+ root: true,
147
+ tree: false
148
+ });
149
+ currentCategories.value = result;
150
+ }
151
+ } catch (error) {
152
+ console.error("Error loading categories:", error);
153
+ currentCategories.value = [];
154
+ }
155
+ };
156
+ const selectCategory = (category) => {
157
+ const categoryPath = category.url ? category.url.substring(1) : "";
158
+ if (!categoryPath) {
159
+ console.warn("No URL found for category:", category);
160
+ return;
161
+ }
162
+ if (route.params._id) {
163
+ router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);
164
+ } else {
165
+ router.push(`/products/categories/${categoryPath}`);
166
+ }
167
+ };
168
+ const selectAvailabilityOption = (value) => {
169
+ selectedAvailability.value = value;
170
+ const today = /* @__PURE__ */ new Date();
171
+ switch (value) {
172
+ case "today":
173
+ selectedDates.value = {
174
+ start: today,
175
+ end: today
176
+ };
177
+ break;
178
+ case "week":
179
+ const weekEnd = new Date(today);
180
+ weekEnd.setDate(today.getDate() + 7);
181
+ selectedDates.value = {
182
+ start: today,
183
+ end: weekEnd
184
+ };
185
+ break;
186
+ case "month":
187
+ const monthEnd = new Date(today);
188
+ monthEnd.setMonth(today.getMonth() + 1);
189
+ selectedDates.value = {
190
+ start: today,
191
+ end: monthEnd
192
+ };
193
+ break;
194
+ }
195
+ };
196
+ const applyDateFilter = () => {
197
+ selectedDates.value = tempSelectedDates.value;
198
+ selectedAvailability.value = "custom";
199
+ showDatePickerPopup.value = false;
200
+ };
45
201
  globals.state.navigation_bar.actions = [{
46
202
  component: IconPlus.default,
47
203
  props: {
@@ -50,63 +206,16 @@ const _sfc_main = {
50
206
  condition: () => auth.state.user && auth.state.user._id,
51
207
  action: () => route.params._id ? router.push({ name: "Organization_ProductAdd", params: { _id: route.params._id } }) : router.push({ name: "ProductAdd" })
52
208
  }], vue.onMounted(async () => {
53
- let categoriesFilter = await categories.actions.read({ rootOnly: true });
54
- categoriesFilter = categoriesFilter.map((category) => ({
55
- value: category._id,
56
- label: category.name
57
- }));
58
- const index = products.state.filter.options.findIndex((option) => option.value === "categories");
59
- const categoryOption = {
60
- title: "Categories",
61
- value: "categories",
62
- options: categoriesFilter
63
- };
64
- if (index !== -1) {
65
- products.state.filter.options[index] = categoryOption;
66
- } else {
67
- products.state.filter.options.unshift(categoryOption);
68
- }
209
+ await loadCategoryData();
69
210
  });
70
211
  vue.onUnmounted(() => {
71
212
  globals.state.navigation_bar.actions = [];
72
213
  });
73
- vue.watch(() => products.state.sort, (newSortValue, oldSortValue) => {
74
- let query = { ...route.query };
75
- query.sortParam = newSortValue.param;
76
- query.sortOrder = newSortValue.order;
77
- router.replace({ query });
78
- }, { deep: true });
79
- vue.watch(() => products.state.filter.selected, (newFilterValue, oldFilterValue) => {
80
- const query = { ...route.query };
81
- Object.keys(oldFilterValue).forEach((key) => {
82
- if (query[key]) {
83
- delete query[key];
84
- }
85
- });
86
- const newQueryValues = Object.fromEntries(
87
- Object.entries(newFilterValue).filter(([key, value]) => Array.isArray(value) && value.length > 0).map(([key, value]) => [key, value.join(",")])
88
- );
89
- delete query.options;
90
- Object.assign(query, newQueryValues);
91
- router.replace({ query });
92
- }, { deep: true });
93
- function debounce(fn, delay) {
94
- let timeoutId = null;
95
- return (...args) => {
96
- clearTimeout(timeoutId);
97
- timeoutId = setTimeout(() => fn(...args), delay);
98
- };
99
- }
100
- const debouncedSearch = debounce((search) => {
101
- let query = { ...route.query };
102
- query.search = search;
103
- router.replace({ query });
104
- }, 500);
105
214
  return (_ctx, _cache) => {
106
215
  const _component_router_link = vue.resolveComponent("router-link");
107
216
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
108
217
  vue.unref(route).name !== "Organization" && !_ctx.MOBILE_APP ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2, [
109
- _cache[4] || (_cache[4] = vue.createElementVNode("h2", { class: "mn-r-medium" }, "Products", -1)),
218
+ _cache[11] || (_cache[11] = vue.createElementVNode("h2", { class: "mn-r-medium" }, "Products", -1)),
110
219
  _ctx.hasAccess(vue.unref(route).params._id, "products", "create", auth.state.accesses, auth.state.access.roles) ? (vue.openBlock(), vue.createElementBlock("button", {
111
220
  key: 0,
112
221
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$router.push({
@@ -115,41 +224,160 @@ const _sfc_main = {
115
224
  class: "radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second"
116
225
  }, " + ")) : vue.createCommentVNode("", true)
117
226
  ])) : vue.createCommentVNode("", true),
118
- vue.unref(route).name !== "Organization" && _ctx.isAdmin ? (vue.openBlock(), vue.createBlock(Tab.default, {
119
- key: 1,
120
- selected: tabProducts.value,
121
- "onUpdate:selected": _cache[1] || (_cache[1] = ($event) => tabProducts.value = $event),
122
- tabs: [
123
- { name: "All", value: "all" },
124
- { name: "Published", value: "published" },
125
- { name: "Unpublished", value: "unpublished" },
126
- { name: "Archivied", value: "archivied" }
127
- ],
128
- style: { "flex": "0 0 auto" },
129
- class: "p-medium br-t br-solid br-light bg-white gap-micro pd-medium pd-t-thin pd-b-thin z-index-1",
130
- classTab: "bg-light uppercase pd-small radius-small w-100"
131
- }, null, 8, ["selected"])) : vue.createCommentVNode("", true),
132
227
  vue.createElementVNode("div", _hoisted_3, [
133
228
  vue.createElementVNode("div", _hoisted_4, [
134
- vue.createVNode(BlockFilter.default, {
135
- filter: products.state.filter,
136
- "onUpdate:filter": _cache[2] || (_cache[2] = ($event) => products.state.filter = $event),
137
- options: products.state.filter.options,
138
- class: "h-100 w-100"
139
- }, null, 8, ["filter", "options"])
229
+ vue.createElementVNode("div", _hoisted_5, [
230
+ currentCategories.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
231
+ vue.createElementVNode("h4", _hoisted_7, vue.toDisplayString(vue.unref(route).params.categoryPath ? "Subcategories" : "Categories"), 1),
232
+ vue.createElementVNode("div", _hoisted_8, [
233
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(currentCategories.value, (category) => {
234
+ return vue.openBlock(), vue.createElementBlock("div", {
235
+ key: category._id,
236
+ onClick: ($event) => selectCategory(category),
237
+ class: "pd-small radius-small cursor-pointer hover-bg-light transition-all"
238
+ }, [
239
+ vue.createTextVNode(vue.toDisplayString(category.name) + " ", 1),
240
+ _cache[12] || (_cache[12] = vue.createElementVNode("br", null, null, -1)),
241
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(category.children, (subcategory) => {
242
+ return vue.openBlock(), vue.createElementBlock("span", null, vue.toDisplayString(subcategory.name), 1);
243
+ }), 256))
244
+ ], 8, _hoisted_9);
245
+ }), 128))
246
+ ])
247
+ ])) : vue.createCommentVNode("", true),
248
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(categoryFilters.value, (filter) => {
249
+ return vue.openBlock(), vue.createBlock(Spoiler.default, {
250
+ key: filter.name,
251
+ class: "o-hidden mn-b-medium",
252
+ status: true
253
+ }, {
254
+ header: vue.withCtx(({ isOpen }) => [
255
+ vue.createElementVNode("div", _hoisted_10, [
256
+ vue.createElementVNode("h4", _hoisted_11, vue.toDisplayString(filter.name), 1),
257
+ vue.createElementVNode("div", _hoisted_12, [
258
+ vue.createVNode(IconChevronBottom.default, {
259
+ class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
260
+ fill: "rgb(var(--black))"
261
+ }, null, 8, ["class"])
262
+ ])
263
+ ])
264
+ ]),
265
+ content: vue.withCtx(() => [
266
+ vue.createElementVNode("div", _hoisted_13, [
267
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filter.options, (option) => {
268
+ return vue.openBlock(), vue.createBlock(Checkbox.default, {
269
+ key: option.text || option,
270
+ radio: selectedFilters.value[filter.name],
271
+ "onUpdate:radio": ($event) => selectedFilters.value[filter.name] = $event,
272
+ label: option.text || option,
273
+ value: option.text || option,
274
+ mode: "checkbox",
275
+ class: "mn-b-micro"
276
+ }, null, 8, ["radio", "onUpdate:radio", "label", "value"]);
277
+ }), 128))
278
+ ])
279
+ ]),
280
+ _: 2
281
+ }, 1024);
282
+ }), 128)),
283
+ vue.createVNode(Spoiler.default, {
284
+ class: "o-hidden mn-b-medium",
285
+ status: true
286
+ }, {
287
+ header: vue.withCtx(({ isOpen }) => [
288
+ vue.createElementVNode("div", _hoisted_14, [
289
+ _cache[13] || (_cache[13] = vue.createElementVNode("h4", { class: "w-100" }, " Price", -1)),
290
+ vue.createElementVNode("div", _hoisted_15, [
291
+ vue.createVNode(IconChevronBottom.default, {
292
+ class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
293
+ fill: "rgb(var(--black))"
294
+ }, null, 8, ["class"])
295
+ ])
296
+ ])
297
+ ]),
298
+ content: vue.withCtx(() => [
299
+ vue.createElementVNode("div", _hoisted_16, [
300
+ vue.createVNode(Field.default, {
301
+ modelValue: priceRange.value.min,
302
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => priceRange.value.min = $event),
303
+ placeholder: "From",
304
+ type: "number",
305
+ class: "w-50 bg-light pd-small radius-small"
306
+ }, null, 8, ["modelValue"]),
307
+ vue.createVNode(Field.default, {
308
+ modelValue: priceRange.value.max,
309
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => priceRange.value.max = $event),
310
+ placeholder: "To",
311
+ type: "number",
312
+ class: "w-50 bg-light pd-small radius-small"
313
+ }, null, 8, ["modelValue"])
314
+ ])
315
+ ]),
316
+ _: 1
317
+ }),
318
+ vue.createVNode(Spoiler.default, {
319
+ class: "o-hidden mn-b-medium",
320
+ status: true
321
+ }, {
322
+ header: vue.withCtx(({ isOpen }) => [
323
+ vue.createElementVNode("div", _hoisted_17, [
324
+ _cache[14] || (_cache[14] = vue.createElementVNode("h4", { class: "w-100" }, "Availability", -1)),
325
+ vue.createElementVNode("div", _hoisted_18, [
326
+ vue.createVNode(IconChevronBottom.default, {
327
+ class: vue.normalizeClass([{ "rotate-180 mn-t-micro-negative": isOpen }, "i-regular"]),
328
+ fill: "rgb(var(--black))"
329
+ }, null, 8, ["class"])
330
+ ])
331
+ ])
332
+ ]),
333
+ content: vue.withCtx(() => [
334
+ vue.createElementVNode("div", _hoisted_19, [
335
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(availabilityOptions.value, (option) => {
336
+ return vue.openBlock(), vue.createElementBlock("div", {
337
+ key: option.value,
338
+ onClick: ($event) => selectAvailabilityOption(option.value),
339
+ class: vue.normalizeClass([{ "bg-light": selectedAvailability.value === option.value }, "pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"])
340
+ }, vue.toDisplayString(option.label), 11, _hoisted_20);
341
+ }), 128)),
342
+ vue.createElementVNode("div", {
343
+ onClick: _cache[3] || (_cache[3] = () => {
344
+ tempSelectedDates.value = selectedDates.value;
345
+ showDatePickerPopup.value = true;
346
+ }),
347
+ class: vue.normalizeClass([{ "bg-light": selectedAvailability.value === "custom" }, "pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro"])
348
+ }, vue.toDisplayString(selectedDates.value ? `${vue.unref(formatDate)(selectedDates.value.start, { dayMonth: true, language: "en" })} - ${vue.unref(formatDate)(selectedDates.value.end, { dayMonth: true, language: "en" })}` : "Select dates"), 3)
349
+ ])
350
+ ]),
351
+ _: 1
352
+ }),
353
+ _cache[15] || (_cache[15] = vue.createElementVNode("button", { class: "bg-main w-100 button mn-t-medium" }, " Clear Filters ", -1))
354
+ ])
140
355
  ]),
141
- vue.createElementVNode("div", _hoisted_5, [
356
+ vue.createElementVNode("div", _hoisted_21, [
357
+ vue.createVNode(Filters.default, {
358
+ filters: availableFilters.value,
359
+ "onUpdate:filters": _cache[4] || (_cache[4] = ($event) => availableFilters.value = $event),
360
+ selected: selectedFilters.value,
361
+ "onUpdate:selected": _cache[5] || (_cache[5] = ($event) => selectedFilters.value = $event)
362
+ }, null, 8, ["filters", "selected"]),
142
363
  vue.renderSlot(_ctx.$slots, "default"),
143
- vue.createElementVNode("div", _hoisted_6, [
144
- vue.createVNode(BlockSearch.default, {
145
- onSearch: vue.unref(debouncedSearch),
146
- placeholder: "Enter product name",
147
- class: "bg-light mn-b-thin h-4r"
148
- }, null, 8, ["onSearch"])
364
+ vue.createElementVNode("div", _hoisted_22, [
365
+ vue.createElementVNode("div", _hoisted_23, [
366
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(currentCategories.value, (category) => {
367
+ return vue.openBlock(), vue.createElementBlock("div", {
368
+ key: category._id,
369
+ onClick: ($event) => selectCategory(category),
370
+ class: "flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all"
371
+ }, vue.toDisplayString(category.name), 9, _hoisted_24);
372
+ }), 128))
373
+ ])
149
374
  ]),
150
375
  vue.createVNode(Feed.default, {
376
+ search: true,
151
377
  filter: products.state.filter,
152
- "onUpdate:filter": _cache[3] || (_cache[3] = ($event) => products.state.filter = $event),
378
+ "onUpdate:filter": _cache[6] || (_cache[6] = ($event) => products.state.filter = $event),
379
+ sort: products.state.sort,
380
+ "onUpdate:sort": _cache[7] || (_cache[7] = ($event) => products.state.sort = $event),
153
381
  showLoadMore: false,
154
382
  states: {
155
383
  empty: {
@@ -163,15 +391,14 @@ const _sfc_main = {
163
391
  },
164
392
  options: {
165
393
  limit: 16,
166
- owner: vue.unref(route).params._id,
167
- categories: vue.unref(route).query.categories,
168
- filters: _ctx.generateFilters(products.state.filter.selected),
169
- prices: vue.unref(route).query.prices,
170
- delivery: vue.unref(route).query.delivery,
394
+ owner: vue.unref(route).name?.includes("Organization") ? vue.unref(route).params._id : null,
171
395
  search: vue.unref(route).query.search,
172
- ...tabProducts.value !== "all" && { status: tabProducts.value },
173
- lookup: ["variants"]
174
- // user: user
396
+ lookup: ["variants", "rents"],
397
+ categories: vue.unref(route).params.categoryPath ? `/${vue.unref(route).params.categoryPath}` : null,
398
+ filters: processedFilters.value,
399
+ prices: processedPrices.value,
400
+ dateStart: selectedDates.value?.start,
401
+ dateEnd: selectedDates.value?.end
175
402
  },
176
403
  class: "cols-4 pos-relative w-100 rows-1 gap-thin"
177
404
  }, {
@@ -198,9 +425,37 @@ const _sfc_main = {
198
425
  }), 256))
199
426
  ]),
200
427
  _: 1
201
- }, 8, ["filter", "store", "options"])
428
+ }, 8, ["filter", "sort", "store", "options"])
202
429
  ])
203
- ])
430
+ ]),
431
+ vue.createVNode(Popup.default, {
432
+ isPopupOpen: showDatePickerPopup.value,
433
+ onClosePopup: _cache[10] || (_cache[10] = ($event) => showDatePickerPopup.value = false),
434
+ class: "pd-medium bg-white radius-medium",
435
+ style: { "min-width": "350px" }
436
+ }, {
437
+ default: vue.withCtx(() => [
438
+ _cache[16] || (_cache[16] = vue.createElementVNode("h3", { class: "mn-b-medium" }, "Select Date Range", -1)),
439
+ vue.createVNode(Calendar.default, {
440
+ date: tempSelectedDates.value,
441
+ "onUpdate:date": _cache[8] || (_cache[8] = ($event) => tempSelectedDates.value = $event),
442
+ allowRange: true,
443
+ disablePastDates: true,
444
+ class: "mn-b-medium"
445
+ }, null, 8, ["date"]),
446
+ vue.createElementVNode("div", _hoisted_25, [
447
+ vue.createElementVNode("button", {
448
+ onClick: applyDateFilter,
449
+ class: "bg-main button flex-child-full"
450
+ }, " Apply "),
451
+ vue.createElementVNode("button", {
452
+ onClick: _cache[9] || (_cache[9] = ($event) => showDatePickerPopup.value = false),
453
+ class: "bg-light button flex-child-full"
454
+ }, " Cancel ")
455
+ ])
456
+ ]),
457
+ _: 1
458
+ }, 8, ["isPopupOpen"])
204
459
  ]);
205
460
  };
206
461
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <Tab \n v-if=\"route.name !== 'Organization' && isAdmin\"\n v-model:selected=\"tabProducts\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Published', value: 'published' },\n { name: 'Unpublished', value: 'unpublished' }, \n { name: 'Archivied', value: 'archivied' } \n ]\"\n style=\"flex: 0 0 auto\"\n class=\"\n\n p-medium\n br-t br-solid br-light \n bg-white\n gap-micro pd-medium pd-t-thin pd-b-thin\n z-index-1\n\n \"\n classTab=\"bg-light uppercase pd-small radius-small w-100\"\n />\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative radius-medium\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <BlockFilter\n v-model:filter=\"products.state.filter\"\n :options=\"products.state.filter.options\"\n class=\"h-100 w-100\"\n />\n </div>\n\n <div class=\"w-100 pd-thin h-max pos-relative o-hidden\">\n <slot></slot>\n <div class=\"pos-relative w-100 z-index-3 radius-tl-big radius-tr-big\">\n <BlockSearch \n @search=\"debouncedSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-light mn-b-thin h-4r\"\n />\n </div>\n <Feed\n v-model:filter=\"products.state.filter\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.params._id,\n categories: route.query.categories,\n filters: generateFilters(products.state.filter.selected),\n prices: route.query.prices,\n delivery: route.query.delivery,\n search: route.query.search,\n ...(tabProducts !== 'all' && { status: tabProducts }),\n lookup: ['variants']\n // user: user\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 pos-relative w-100 rows-1 gap-thin\"\n \n >\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </Feed>\n\n </div>\n </div>\n</div>\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue'\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as marketplace from '@martyrs/src/modules/marketplace/views/store/marketplace.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n const route = useRoute()\n const router = useRouter()\n\n // Tab logic\n const tabProducts = ref(route.query.tabProducts ? route.query.tabProducts : 'all')\n\n if (route.name !== 'Organization') route.query.tabProducts = tabProducts.value\n \n if (route.query) {\n const query = route.query;\n\n products.state.filter.selected.categories = query.categories ? query.categories.split(',') : [];\n products.state.filter.selected.prices = query.prices ? query.prices.split(',') : [];\n products.state.filter.selected.delivery = query.delivery ? query.delivery.split(',') : [];\n products.state.filter.selected.brand = query.brand ? query.brand.split(',') : [];\n }\n\n\n watch(tabProducts, (newValue) => {\n if (route.name !== 'Organization') router.replace({ query: { ...route.query, tabProducts: newValue } });\n });\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }],\n\n onMounted(async () => {\n let categoriesFilter = await categories.actions.read({rootOnly:true});\n\n categoriesFilter = categoriesFilter.map(category => ({\n value: category._id,\n label: category.name\n }));\n\n const index = products.state.filter.options.findIndex(option => option.value === 'categories');\n\n const categoryOption = {\n title: 'Categories',\n value: 'categories',\n options: categoriesFilter\n };\n\n if (index !== -1) {\n products.state.filter.options[index] = categoryOption;\n } else {\n products.state.filter.options.unshift(categoryOption);\n }\n })\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n watch(() => products.state.sort, (newSortValue, oldSortValue) => {\n let query = { ...route.query}\n \n query.sortParam = newSortValue.param\n query.sortOrder = newSortValue.order\n \n // replace the current route\n router.replace({ query });\n }, { deep: true });\n\n\n watch(() => products.state.filter.selected, (newFilterValue, oldFilterValue) => {\n // Переводим фильтр в формат query\n const query = { ...route.query };\n\n // Удаляем старые значения фильтра из query\n Object.keys(oldFilterValue).forEach(key => {\n if (query[key]) {\n delete query[key];\n }\n });\n\n // Добавляем новые значения фильтра в query\n const newQueryValues = Object.fromEntries(\n Object.entries(newFilterValue)\n .filter(([key, value]) => Array.isArray(value) && value.length > 0)\n .map(([key, value]) => [key, value.join(',')])\n );\n\n delete query.options;\n Object.assign(query, newQueryValues);\n\n // Обновляем маршрут с новым query\n router.replace({ query });\n }, { deep: true })\n\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((search) => {\n let query = { ...route.query}\n \n query.search = search\n \n router.replace({ query });\n}, 500);\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","ref","products.state","watch","globals.state","IconPlus","auth.state","onMounted","categories.actions","onUnmounted"],"mappings":"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"}
1
+ {"version":3,"file":"Products.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">Products</h2>\n <button \n v-if=\"hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-100 i-big hover-scale-1 cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-2-1_3 br-1px br-solid br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r br-solid br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-small\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"pd-small radius-small cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n\n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model=\"priceRange.min\"\n placeholder=\"From\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model=\"priceRange.max\"\n placeholder=\"To\"\n type=\"number\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180 mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-regular\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n v-for=\"option in availabilityOptions\"\n :key=\"option.value\"\n @click=\"selectAvailabilityOption(option.value)\"\n :class=\"{ 'bg-light': selectedAvailability === option.value }\"\n class=\"pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro\"\n >\n {{ option.label }}\n </div>\n \n <div \n @click=\"() => { tempSelectedDates = selectedDates; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedAvailability === 'custom' }\"\n class=\"pd-small radius-small cursor-pointer hover-bg-light transition-all mn-b-micro\"\n >\n {{ selectedDates ? `${formatDate(selectedDates.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedDates.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}} \n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 rows-1 pd-thin pos-relative o-hidden\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n />\n <slot></slot>\n <!-- <div class=\"pos-relative w-100 z-index-3 radius-tl-big radius-tr-big\">\n <BlockSearch \n @search=\"debouncedSearch\"\n placeholder=\"Enter product name\"\n class=\"bg-light mn-b-thin h-4r\"\n />\n </div> -->\n <div class=\"mn-b-thin w-100 o-y-scroll scroll-hide scroll-snap-type-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex t-nowrap pd-medium radius-medium cursor-pointer hover-bg-light transition-all\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n <Feed\n :search=\"true\"\n v-model:filter=\"products.state.filter\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n search: route.query.search,\n lookup: ['variants','rents'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n prices: processedPrices,\n dateStart: selectedDates?.start,\n dateEnd: selectedDates?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"cols-4 pos-relative w-100 rows-1 gap-thin\"\n \n >\n <router-link \n v-for=\"product in items\" \n :to=\"route.params._id ? { name: 'Organization_Product', params: { _id: route.params._id, product: product._id } } : { name: 'Product', params: { product: product._id } }\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button flex-child-full\"\n >\n Apply\n </button>\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\n import BlockFilter from '@martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue'\n import Filters from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\n const route = useRoute()\n const router = useRouter()\n const { generateFilters, formatDate } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\nconst availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Delivery',\n value: 'delivery',\n type: 'checkbox',\n options: [\n { label: 'Pickup', value: 'pickup' },\n { label: 'Courier', value: 'courier' },\n { label: 'Post', value: 'post' }\n ]\n },\n {\n title: 'Status',\n value: 'status',\n type: 'radio',\n options: [\n { label: 'Available', value: 'available' },\n { label: 'Out of Stock', value: 'out_of_stock' },\n { label: 'Coming Soon', value: 'coming_soon' }\n ]\n }\n])\n\nconst selectedFilters = ref({\n price: { min: '', max: '' },\n delivery: [],\n status: null\n})\n\n \n // Переменные фильтров\n const availabilityOptions = ref([\n { label: 'Available today', value: 'today' },\n { label: 'This week', value: 'week' },\n { label: 'This month', value: 'month' }\n ]);\n \n const selectedAvailability = ref('all');\n const showDatePickerPopup = ref(false);\n const selectedPeriod = ref(null);\n const selectedDates = ref(null);\n const tempSelectedDates = ref(null);\n \n const priceRange = ref({\n min: '',\n max: ''\n });\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n return generateFilters(selectedFilters.value);\n });\n\n const processedPrices = computed(() => {\n return priceRange.value.min || priceRange.value.max ? `${priceRange.value.min || 0}-${priceRange.value.max || 999999}` : null;\n });\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (processedDates.value) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Initialize selected filters object\n const filtersObj = {};\n (result[0].filters || []).forEach(filter => {\n filtersObj[filter.name] = [];\n });\n selectedFilters.value = filtersObj;\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n // Функция выбора опции доступности\n const selectAvailabilityOption = (value) => {\n selectedAvailability.value = value;\n const today = new Date();\n \n switch(value) {\n case 'today':\n selectedDates.value = {\n start: today,\n end: today\n };\n break;\n case 'week':\n const weekEnd = new Date(today);\n weekEnd.setDate(today.getDate() + 7);\n selectedDates.value = {\n start: today,\n end: weekEnd\n };\n break;\n case 'month':\n const monthEnd = new Date(today);\n monthEnd.setMonth(today.getMonth() + 1);\n selectedDates.value = {\n start: today,\n end: monthEnd\n };\n break;\n }\n };\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedDates.value = tempSelectedDates.value;\n selectedAvailability.value = 'custom';\n showDatePickerPopup.value = false;\n };\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }],\n\n onMounted(async () => {\n await loadCategoryData();\n })\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["useRoute","useRouter","useGlobalMixins","ref","computed","categories.actions","globals.state","IconPlus","auth.state","onMounted","onUnmounted"],"mappings":"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"}