@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,7 +2,7 @@ import { computed, ref, onMounted, createBlock, createCommentVNode, openBlock, w
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../../components/Block/Block.vue.js";
4
4
  import _sfc_main$3 from "../../../../../components/Popup/Popup.vue.js";
5
- import _sfc_main$5 from "../../../../../components/Button/Button.vue.js";
5
+ import _sfc_main$5 from "../../../../../components/Button/Button.vue2.js";
6
6
  import _sfc_main$4 from "../../../../constructor/components/sections/Constructor.vue.js";
7
7
  import _sfc_main$2 from "../blocks/CardPage.vue.js";
8
8
  import { actions } from "../../store/pages.js";
@@ -37,7 +37,7 @@ const _sfc_main = {
37
37
  name: "Category Edit",
38
38
  params: {
39
39
  _id: vue.unref(route).params._id,
40
- category: __props.category.url
40
+ category: __props.category._id
41
41
  }
42
42
  },
43
43
  class: "i-semi cursor-pointer card-page-actions radius-extra pd-micro bg-second flex-child-default"
@@ -1 +1 @@
1
- {"version":3,"file":"CardCategory.vue.cjs","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle word-break t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n :to=\"{\n name: 'Category Edit', \n params: { \n _id: route.params._id,\n category: category.url\n } \n }\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\" \n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n @click=\"deleteCategory(category)\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":["useRoute","useRouter"],"mappings":";;;;;;;;;;;;;;;;;;AAwEA,UAAM,QAAQ;AAEd,UAAM,QAAQA,UAAAA,SAAQ;AACPC,cAAAA,UAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardCategory.vue.cjs","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle word-break t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n :to=\"{\n name: 'Category Edit', \n params: { \n _id: route.params._id,\n category: category._id\n } \n }\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\" \n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n @click=\"deleteCategory(category)\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":["useRoute","useRouter"],"mappings":";;;;;;;;;;;;;;;;;;AAwEA,UAAM,QAAQ;AAEd,UAAM,QAAQA,UAAAA,SAAQ;AACPC,cAAAA,UAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -35,7 +35,7 @@ const _sfc_main = {
35
35
  name: "Category Edit",
36
36
  params: {
37
37
  _id: unref(route).params._id,
38
- category: __props.category.url
38
+ category: __props.category._id
39
39
  }
40
40
  },
41
41
  class: "i-semi cursor-pointer card-page-actions radius-extra pd-micro bg-second flex-child-default"
@@ -1 +1 @@
1
- {"version":3,"file":"CardCategory.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle word-break t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n :to=\"{\n name: 'Category Edit', \n params: { \n _id: route.params._id,\n category: category.url\n } \n }\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\" \n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n @click=\"deleteCategory(category)\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAwEA,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardCategory.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle word-break t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n :to=\"{\n name: 'Category Edit', \n params: { \n _id: route.params._id,\n category: category._id\n } \n }\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\" \n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n @click=\"deleteCategory(category)\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAwEA,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -87,7 +87,7 @@ const _sfc_main = {
87
87
  vue.createVNode(Popup.default, {
88
88
  onClosePopup: closePopup,
89
89
  isPopupOpen: isPopupVisible.value,
90
- class: "radius-zero o-hidden"
90
+ class: "radius-zero w-100 o-hidden"
91
91
  }, {
92
92
  default: vue.withCtx(() => [
93
93
  vue.createVNode(PhotoViewer.default, {
@@ -101,6 +101,6 @@ const _sfc_main = {
101
101
  };
102
102
  }
103
103
  };
104
- const ProductImages = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-38ae846b"]]);
104
+ const ProductImages = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-eddb4b2b"]]);
105
105
  exports.default = ProductImages;
106
106
  //# sourceMappingURL=ProductImages.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductImages.vue.cjs","sources":["../../../../../../../src/modules/products/components/blocks/ProductImages.vue"],"sourcesContent":["<template>\n <div class=\"w-100 bs-heavy h-max mobile:pos-relative tablet:pos-relative pos-sticky pos-t-0 pd-medium o-hidden bg-light radius-medium gap-small flex-nowrap flex-row mobile:flex-column flex pos-relative\">\n <!-- Main image container -->\n <div class=\"order-1 w-100 bg-light radius-small o-hidden\" @click=\"openPopup(currentImageIndex)\">\n <Image360\n v-if=\"product && product.image3d\"\n class=\"h-100 w-100\"\n :imagePath=\"`/assets/images/products/${product.image3d}`\"\n :imageCount=\"36\"\n />\n <img\n loading=\"lazy\"\n v-if=\"images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 flex-child-default bg-white radius-small w-100\"\n style=\"object-fit: contain;\"\n :src=\"(FILE_SERVER_URL || '') + images[currentImageIndex]\"\n />\n <PlaceholderImage\n v-if=\"!images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 w-100\"\n style=\"object-fit: cover;\"\n />\n </div>\n \n <!-- Thumbnails -->\n <div v-if=\"images.length > 1\" class=\"mobile:order-1 order-0 w-5r mobile:w-100\">\n <div class=\"w-100 mobile:flex-row flex-column flex flex-nowrap gap-thin\">\n <img loading=\"lazy\" \n v-for=\"(image, index) in images.slice(0, 5)\"\n :key=\"index\"\n :src=\"(FILE_SERVER_URL || '') + image\" \n @click=\"currentImageIndex = index\"\n class=\"aspect-1x1 radius-small bg-white o-hidden thumbnail\"\n :class=\"{ 'active': currentImageIndex === index }\"\n />\n <div\n v-if=\"images.length > 5\"\n @click=\"openPopup(5)\"\n class=\"aspect-1x1 radius-small o-hidden thumbnail flex flex-center t-medium t-black bg-white \"\n >\n +{{ images.length - 5 }}\n </div>\n </div>\n </div>\n \n <!-- Popup with photo viewer -->\n <Popup @close-popup=\"closePopup\" :isPopupOpen=\"isPopupVisible\" class=\"radius-zero o-hidden\">\n <PhotoViewer\n :photos=\"images.map(img => (FILE_SERVER_URL || '') + img)\"\n :initialIndex=\"selectedImageIndex\"\n />\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref } from \"vue\";\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport PhotoViewer from '@martyrs/src/components/PhotoViewer/PhotoViewer.vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\nimport Image360 from '@martyrs/src/modules/products/components/elements/Image360.vue'\n\nconst props = defineProps({\n images: {\n type: Array,\n required: true,\n },\n product: {\n type: Object,\n default: () => ({})\n },\n});\n\nconst isPopupVisible = ref(false);\nconst selectedImageIndex = ref(0);\nconst currentImageIndex = ref(0);\n\nconst openPopup = (index) => {\n if (!props.images.length) return;\n selectedImageIndex.value = index;\n isPopupVisible.value = true;\n};\n\nconst closePopup = () => {\n selectedImageIndex.value = 0;\n isPopupVisible.value = false;\n};\n</script>\n\n<style scoped>\n.thumbnail {\n width: 100%;\n object-fit: cover;\n cursor: pointer;\n}\n.thumbnail.active {\n border: 1px solid rgb(var(--second));\n}\n</style>"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,UAAM,QAAQ;AAWd,UAAM,iBAAiBA,IAAAA,IAAI,KAAK;AAChC,UAAM,qBAAqBA,IAAAA,IAAI,CAAC;AAChC,UAAM,oBAAoBA,IAAAA,IAAI,CAAC;AAE/B,UAAM,YAAY,CAAC,UAAU;AAC3B,UAAI,CAAC,MAAM,OAAO,OAAQ;AAC1B,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;AAEA,UAAM,aAAa,MAAM;AACvB,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ProductImages.vue.cjs","sources":["../../../../../../../src/modules/products/components/blocks/ProductImages.vue"],"sourcesContent":["<template>\n <div class=\"w-100 bs-heavy h-max mobile:pos-relative tablet:pos-relative pos-sticky pos-t-0 pd-medium o-hidden bg-light radius-medium gap-small flex-nowrap flex-row mobile:flex-column flex pos-relative\">\n <!-- Main image container -->\n <div class=\"order-1 w-100 bg-light radius-small o-hidden\" @click=\"openPopup(currentImageIndex)\">\n <Image360\n v-if=\"product && product.image3d\"\n class=\"h-100 w-100\"\n :imagePath=\"`/assets/images/products/${product.image3d}`\"\n :imageCount=\"36\"\n />\n <img\n loading=\"lazy\"\n v-if=\"images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 flex-child-default bg-white radius-small w-100\"\n style=\"object-fit: contain;\"\n :src=\"(FILE_SERVER_URL || '') + images[currentImageIndex]\"\n />\n <PlaceholderImage\n v-if=\"!images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 w-100\"\n style=\"object-fit: cover;\"\n />\n </div>\n \n <!-- Thumbnails -->\n <div v-if=\"images.length > 1\" class=\"mobile:order-1 order-0 w-5r mobile:w-100\">\n <div class=\"w-100 mobile:flex-row flex-column flex flex-nowrap gap-thin\">\n <img loading=\"lazy\" \n v-for=\"(image, index) in images.slice(0, 5)\"\n :key=\"index\"\n :src=\"(FILE_SERVER_URL || '') + image\" \n @click=\"currentImageIndex = index\"\n class=\"aspect-1x1 radius-small bg-white o-hidden thumbnail\"\n :class=\"{ 'active': currentImageIndex === index }\"\n />\n <div\n v-if=\"images.length > 5\"\n @click=\"openPopup(5)\"\n class=\"aspect-1x1 radius-small o-hidden thumbnail flex flex-center t-medium t-black bg-white \"\n >\n +{{ images.length - 5 }}\n </div>\n </div>\n </div>\n \n <!-- Popup with photo viewer -->\n <Popup @close-popup=\"closePopup\" :isPopupOpen=\"isPopupVisible\" class=\"radius-zero w-100 o-hidden\">\n <PhotoViewer\n :photos=\"images.map(img => (FILE_SERVER_URL || '') + img)\"\n :initialIndex=\"selectedImageIndex\"\n />\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref } from \"vue\";\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport PhotoViewer from '@martyrs/src/components/PhotoViewer/PhotoViewer.vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\nimport Image360 from '@martyrs/src/modules/products/components/elements/Image360.vue'\n\nconst props = defineProps({\n images: {\n type: Array,\n required: true,\n },\n product: {\n type: Object,\n default: () => ({})\n },\n});\n\nconst isPopupVisible = ref(false);\nconst selectedImageIndex = ref(0);\nconst currentImageIndex = ref(0);\n\nconst openPopup = (index) => {\n if (!props.images.length) return;\n selectedImageIndex.value = index;\n isPopupVisible.value = true;\n};\n\nconst closePopup = () => {\n selectedImageIndex.value = 0;\n isPopupVisible.value = false;\n};\n</script>\n\n<style scoped>\n.thumbnail {\n width: 100%;\n object-fit: cover;\n cursor: pointer;\n}\n.thumbnail.active {\n border: 1px solid rgb(var(--second));\n}\n</style>"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,UAAM,QAAQ;AAWd,UAAM,iBAAiBA,IAAAA,IAAI,KAAK;AAChC,UAAM,qBAAqBA,IAAAA,IAAI,CAAC;AAChC,UAAM,oBAAoBA,IAAAA,IAAI,CAAC;AAE/B,UAAM,YAAY,CAAC,UAAU;AAC3B,UAAI,CAAC,MAAM,OAAO,OAAQ;AAC1B,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;AAEA,UAAM,aAAa,MAAM;AACvB,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -85,7 +85,7 @@ const _sfc_main = {
85
85
  createVNode(_sfc_main$1, {
86
86
  onClosePopup: closePopup,
87
87
  isPopupOpen: isPopupVisible.value,
88
- class: "radius-zero o-hidden"
88
+ class: "radius-zero w-100 o-hidden"
89
89
  }, {
90
90
  default: withCtx(() => [
91
91
  createVNode(PhotoViewer, {
@@ -99,7 +99,7 @@ const _sfc_main = {
99
99
  };
100
100
  }
101
101
  };
102
- const ProductImages = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-38ae846b"]]);
102
+ const ProductImages = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-eddb4b2b"]]);
103
103
  export {
104
104
  ProductImages as default
105
105
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ProductImages.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/ProductImages.vue"],"sourcesContent":["<template>\n <div class=\"w-100 bs-heavy h-max mobile:pos-relative tablet:pos-relative pos-sticky pos-t-0 pd-medium o-hidden bg-light radius-medium gap-small flex-nowrap flex-row mobile:flex-column flex pos-relative\">\n <!-- Main image container -->\n <div class=\"order-1 w-100 bg-light radius-small o-hidden\" @click=\"openPopup(currentImageIndex)\">\n <Image360\n v-if=\"product && product.image3d\"\n class=\"h-100 w-100\"\n :imagePath=\"`/assets/images/products/${product.image3d}`\"\n :imageCount=\"36\"\n />\n <img\n loading=\"lazy\"\n v-if=\"images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 flex-child-default bg-white radius-small w-100\"\n style=\"object-fit: contain;\"\n :src=\"(FILE_SERVER_URL || '') + images[currentImageIndex]\"\n />\n <PlaceholderImage\n v-if=\"!images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 w-100\"\n style=\"object-fit: cover;\"\n />\n </div>\n \n <!-- Thumbnails -->\n <div v-if=\"images.length > 1\" class=\"mobile:order-1 order-0 w-5r mobile:w-100\">\n <div class=\"w-100 mobile:flex-row flex-column flex flex-nowrap gap-thin\">\n <img loading=\"lazy\" \n v-for=\"(image, index) in images.slice(0, 5)\"\n :key=\"index\"\n :src=\"(FILE_SERVER_URL || '') + image\" \n @click=\"currentImageIndex = index\"\n class=\"aspect-1x1 radius-small bg-white o-hidden thumbnail\"\n :class=\"{ 'active': currentImageIndex === index }\"\n />\n <div\n v-if=\"images.length > 5\"\n @click=\"openPopup(5)\"\n class=\"aspect-1x1 radius-small o-hidden thumbnail flex flex-center t-medium t-black bg-white \"\n >\n +{{ images.length - 5 }}\n </div>\n </div>\n </div>\n \n <!-- Popup with photo viewer -->\n <Popup @close-popup=\"closePopup\" :isPopupOpen=\"isPopupVisible\" class=\"radius-zero o-hidden\">\n <PhotoViewer\n :photos=\"images.map(img => (FILE_SERVER_URL || '') + img)\"\n :initialIndex=\"selectedImageIndex\"\n />\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref } from \"vue\";\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport PhotoViewer from '@martyrs/src/components/PhotoViewer/PhotoViewer.vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\nimport Image360 from '@martyrs/src/modules/products/components/elements/Image360.vue'\n\nconst props = defineProps({\n images: {\n type: Array,\n required: true,\n },\n product: {\n type: Object,\n default: () => ({})\n },\n});\n\nconst isPopupVisible = ref(false);\nconst selectedImageIndex = ref(0);\nconst currentImageIndex = ref(0);\n\nconst openPopup = (index) => {\n if (!props.images.length) return;\n selectedImageIndex.value = index;\n isPopupVisible.value = true;\n};\n\nconst closePopup = () => {\n selectedImageIndex.value = 0;\n isPopupVisible.value = false;\n};\n</script>\n\n<style scoped>\n.thumbnail {\n width: 100%;\n object-fit: cover;\n cursor: pointer;\n}\n.thumbnail.active {\n border: 1px solid rgb(var(--second));\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,UAAM,QAAQ;AAWd,UAAM,iBAAiB,IAAI,KAAK;AAChC,UAAM,qBAAqB,IAAI,CAAC;AAChC,UAAM,oBAAoB,IAAI,CAAC;AAE/B,UAAM,YAAY,CAAC,UAAU;AAC3B,UAAI,CAAC,MAAM,OAAO,OAAQ;AAC1B,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;AAEA,UAAM,aAAa,MAAM;AACvB,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ProductImages.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/ProductImages.vue"],"sourcesContent":["<template>\n <div class=\"w-100 bs-heavy h-max mobile:pos-relative tablet:pos-relative pos-sticky pos-t-0 pd-medium o-hidden bg-light radius-medium gap-small flex-nowrap flex-row mobile:flex-column flex pos-relative\">\n <!-- Main image container -->\n <div class=\"order-1 w-100 bg-light radius-small o-hidden\" @click=\"openPopup(currentImageIndex)\">\n <Image360\n v-if=\"product && product.image3d\"\n class=\"h-100 w-100\"\n :imagePath=\"`/assets/images/products/${product.image3d}`\"\n :imageCount=\"36\"\n />\n <img\n loading=\"lazy\"\n v-if=\"images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 flex-child-default bg-white radius-small w-100\"\n style=\"object-fit: contain;\"\n :src=\"(FILE_SERVER_URL || '') + images[currentImageIndex]\"\n />\n <PlaceholderImage\n v-if=\"!images[currentImageIndex] && !product?.image3d\"\n class=\"h-100 w-100\"\n style=\"object-fit: cover;\"\n />\n </div>\n \n <!-- Thumbnails -->\n <div v-if=\"images.length > 1\" class=\"mobile:order-1 order-0 w-5r mobile:w-100\">\n <div class=\"w-100 mobile:flex-row flex-column flex flex-nowrap gap-thin\">\n <img loading=\"lazy\" \n v-for=\"(image, index) in images.slice(0, 5)\"\n :key=\"index\"\n :src=\"(FILE_SERVER_URL || '') + image\" \n @click=\"currentImageIndex = index\"\n class=\"aspect-1x1 radius-small bg-white o-hidden thumbnail\"\n :class=\"{ 'active': currentImageIndex === index }\"\n />\n <div\n v-if=\"images.length > 5\"\n @click=\"openPopup(5)\"\n class=\"aspect-1x1 radius-small o-hidden thumbnail flex flex-center t-medium t-black bg-white \"\n >\n +{{ images.length - 5 }}\n </div>\n </div>\n </div>\n \n <!-- Popup with photo viewer -->\n <Popup @close-popup=\"closePopup\" :isPopupOpen=\"isPopupVisible\" class=\"radius-zero w-100 o-hidden\">\n <PhotoViewer\n :photos=\"images.map(img => (FILE_SERVER_URL || '') + img)\"\n :initialIndex=\"selectedImageIndex\"\n />\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref } from \"vue\";\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport PhotoViewer from '@martyrs/src/components/PhotoViewer/PhotoViewer.vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'\nimport Image360 from '@martyrs/src/modules/products/components/elements/Image360.vue'\n\nconst props = defineProps({\n images: {\n type: Array,\n required: true,\n },\n product: {\n type: Object,\n default: () => ({})\n },\n});\n\nconst isPopupVisible = ref(false);\nconst selectedImageIndex = ref(0);\nconst currentImageIndex = ref(0);\n\nconst openPopup = (index) => {\n if (!props.images.length) return;\n selectedImageIndex.value = index;\n isPopupVisible.value = true;\n};\n\nconst closePopup = () => {\n selectedImageIndex.value = 0;\n isPopupVisible.value = false;\n};\n</script>\n\n<style scoped>\n.thumbnail {\n width: 100%;\n object-fit: cover;\n cursor: pointer;\n}\n.thumbnail.active {\n border: 1px solid rgb(var(--second));\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,UAAM,QAAQ;AAWd,UAAM,iBAAiB,IAAI,KAAK;AAChC,UAAM,qBAAqB,IAAI,CAAC;AAChC,UAAM,oBAAoB,IAAI,CAAC;AAE/B,UAAM,YAAY,CAAC,UAAU;AAC3B,UAAI,CAAC,MAAM,OAAO,OAAQ;AAC1B,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;AAEA,UAAM,aAAa,MAAM;AACvB,yBAAmB,QAAQ;AAC3B,qBAAe,QAAQ;AAAA,IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,7 +6,7 @@ const globals = require("../../../globals/views/store/globals.cjs");
6
6
  const auth = require("../../../auth/views/store/auth.cjs");
7
7
  const categories = require("../../store/categories.cjs");
8
8
  ;/* empty css */
9
- ;/* empty css */
9
+ ;/* empty css */
10
10
  const Block = require("../../../../components/Block/Block.vue.cjs");
11
11
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
12
12
  const Tree = require("../../../../components/Tree/Tree.vue.cjs");
@@ -46,25 +46,31 @@ const _sfc_main = {
46
46
  });
47
47
  vue.onMounted(async () => {
48
48
  });
49
- function flattenCategoryTree(categories2) {
49
+ function flattenTreeForAPI(treeData, parentUrl = "") {
50
50
  let flatCategories = [];
51
- function flatten(category) {
52
- const { children, ...categoryWithoutChildren } = category;
53
- flatCategories.push(categoryWithoutChildren);
54
- if (children && Array.isArray(children)) {
55
- children.forEach((child) => flatten(child));
51
+ function processNode(node, index, parentUrl2) {
52
+ const { children, ...nodeData } = node;
53
+ flatCategories.push({
54
+ _id: nodeData._id,
55
+ order: index,
56
+ ...nodeData.parent && { parent: nodeData.parent }
57
+ });
58
+ if (children && children.length > 0) {
59
+ children.forEach((child, childIndex) => {
60
+ processNode(child, childIndex, nodeData.url);
61
+ });
56
62
  }
57
63
  }
58
- categories2.forEach((category) => flatten(category));
64
+ treeData.forEach((node, index) => {
65
+ processNode(node, index);
66
+ });
59
67
  return flatCategories;
60
68
  }
61
- async function updateCategoriesOrder(updatedCategories) {
62
- alert("helo");
69
+ async function updateCategoriesOrder(event) {
70
+ console.log("updateCategoriesOrder called with event:", event);
63
71
  try {
64
- const flattenedCategories = flattenCategoryTree(categories.state.all);
65
- console.log(flattenedCategories);
66
- console.log(categories.state.all);
67
- await categories.actions.updateOrder(flattenedCategories);
72
+ const flatCategories = flattenTreeForAPI(categories.state.all);
73
+ await categories.actions.updateOrder(flatCategories);
68
74
  console.log("Categories order updated successfully");
69
75
  } catch (error) {
70
76
  console.error("Error updating categories order:", error);
@@ -74,9 +80,7 @@ const _sfc_main = {
74
80
  async function deleteCategory(category) {
75
81
  const isConfirmed = confirm(`Are you sure you want to delete the category "${category.name}"?`);
76
82
  if (isConfirmed) {
77
- await categories.actions.delete(category.url);
78
- } else {
79
- alert("Category deletion cancelled");
83
+ await categories.actions.delete(category._id);
80
84
  }
81
85
  }
82
86
  return (_ctx, _cache) => {
@@ -121,8 +125,7 @@ const _sfc_main = {
121
125
  },
122
126
  options: {
123
127
  user: auth.state.user._id,
124
- rootOnly: true,
125
- excludeChildren: false
128
+ tree: true
126
129
  },
127
130
  sort: vue.unref(sort),
128
131
  "onUpdate:sort": _cache[0] || (_cache[0] = ($event) => vue.isRef(sort) ? sort.value = $event : sort = $event),
@@ -1 +1 @@
1
- {"version":3,"file":"Categories.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\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) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n rootOnly: true,\n excludeChildren: false\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\" \n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js'; \n\n const route = useRoute();\n const router = useRouter();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\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: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для преобразования иерархического дерева категорий в плоский массив\n function flattenCategoryTree(categories) {\n let flatCategories = [];\n \n function flatten(category) {\n const { children, ...categoryWithoutChildren } = category;\n flatCategories.push(categoryWithoutChildren);\n \n if (children && Array.isArray(children)) {\n children.forEach(child => flatten(child));\n }\n }\n \n categories.forEach(category => flatten(category));\n return flatCategories;\n }\n\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(updatedCategories) {\n alert('helo')\n try {\n // Преобразуем категории в плоский массив\n const flattenedCategories = flattenCategoryTree(categories.state.all);\n \n console.log(flattenedCategories)\n console.log( categories.state.all)\n await categories.actions.updateOrder(flattenedCategories);\n \n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category.url);\n } else {\n alert('Category deletion cancelled'); \n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["useRoute","useRouter","ref","reactive","globals.state","IconPlus","auth.state","onUnmounted","onMounted","categories","categories.state","categories.actions"],"mappings":";;;;;;;;;;;;;;;;;;;AAyEE,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAWXC,QAAAA,IAAI,IAAI;AAErB,QAAI,OAAOC,IAAAA,SAAS;AAAA,MAClB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,CAAK;AAAA,IACL,CAAG;AAEDC,kBAAc,eAAe,UAAU,CAAC;AAAA,MACtC,WAAWC,SAAAA;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,KAAAA,MAAW,QAAQA,KAAAA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,gBAAgB,QAAQ,EAAE,KAAK,MAAM,OAAO,IAAG,EAAC,CAAE,IAAI,OAAO,KAAK,EAAE,MAAM,eAAc,CAAE;AAAA,IACnJ,CAAG,GAEDC,IAAAA,YAAY,MAAM;AAChBH,oBAAc,eAAe,UAAU,CAAA;AAAA,IACzC,CAAC;AAEDI,QAAAA,UAAU,YAAY;AAAA,IAEtB,CAAC;AAGD,aAAS,oBAAoBC,aAAY;AACvC,UAAI,iBAAiB,CAAA;AAErB,eAAS,QAAQ,UAAU;AACzB,cAAM,EAAE,UAAU,GAAG,wBAAuB,IAAK;AACjD,uBAAe,KAAK,uBAAuB;AAE3C,YAAI,YAAY,MAAM,QAAQ,QAAQ,GAAG;AACvC,mBAAS,QAAQ,WAAS,QAAQ,KAAK,CAAC;AAAA,QAC1C;AAAA,MACF;AAEA,MAAAA,YAAW,QAAQ,cAAY,QAAQ,QAAQ,CAAC;AAChD,aAAO;AAAA,IACT;AAIA,mBAAe,sBAAsB,mBAAmB;AACtD,YAAM,MAAM;AACZ,UAAI;AAEF,cAAM,sBAAsB,oBAAoBC,WAAAA,MAAiB,GAAG;AAEpE,gBAAQ,IAAI,mBAAmB;AAC/B,gBAAQ,IAAKA,WAAAA,MAAiB,GAAG;AACjC,cAAMC,WAAAA,QAAmB,YAAY,mBAAmB;AAExD,gBAAQ,IAAI,uCAAuC;AAAA,MACrD,SAAS,OAAO;AACd,gBAAQ,MAAM,oCAAoC,KAAK;AACvD,cAAM;AAAA,MACR;AAAA,IACF;AAEA,mBAAe,eAAe,UAAU;AAEtC,YAAM,cAAc,QAAQ,iDAAiD,SAAS,IAAI,IAAI;AAG9F,UAAI,aAAa;AACf,cAAMA,mBAAmB,OAAO,SAAS,GAAG;AAAA,MAC9C,OAAO;AACL,cAAM,6BAA6B;AAAA,MACrC;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Categories.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\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) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n tree: true\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\" \n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js'; \n\n const route = useRoute();\n const router = useRouter();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\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: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для преобразования дерева в плоский массив для API (materialised path)\n function flattenTreeForAPI(treeData, parentUrl = '') {\n let flatCategories = [];\n \n function processNode(node, index, parentUrl) {\n const { children, ...nodeData } = node;\n \n // Для materialised path отправляем order и parent (если есть)\n flatCategories.push({\n _id: nodeData._id,\n order: index,\n ...(nodeData.parent && { parent: nodeData.parent })\n });\n \n if (children && children.length > 0) {\n children.forEach((child, childIndex) => {\n processNode(child, childIndex, nodeData.url);\n });\n }\n }\n \n treeData.forEach((node, index) => {\n processNode(node, index, parentUrl);\n });\n \n return flatCategories;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n // Игнорируем события drag-and-drop, используем актуальное состояние\n const flatCategories = flattenTreeForAPI(categories.state.all);\n \n await categories.actions.updateOrder(flatCategories);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["useRoute","useRouter","ref","reactive","globals.state","IconPlus","auth.state","onUnmounted","onMounted","parentUrl","categories.state","categories.actions"],"mappings":";;;;;;;;;;;;;;;;;;;AAwEE,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAWXC,QAAAA,IAAI,IAAI;AAErB,QAAI,OAAOC,IAAAA,SAAS;AAAA,MAClB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,CAAK;AAAA,IACL,CAAG;AAEDC,kBAAc,eAAe,UAAU,CAAC;AAAA,MACtC,WAAWC,SAAAA;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,KAAAA,MAAW,QAAQA,KAAAA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,gBAAgB,QAAQ,EAAE,KAAK,MAAM,OAAO,IAAG,EAAC,CAAE,IAAI,OAAO,KAAK,EAAE,MAAM,eAAc,CAAE;AAAA,IACnJ,CAAG,GAEDC,IAAAA,YAAY,MAAM;AAChBH,oBAAc,eAAe,UAAU,CAAA;AAAA,IACzC,CAAC;AAEDI,QAAAA,UAAU,YAAY;AAAA,IAEtB,CAAC;AAGD,aAAS,kBAAkB,UAAU,YAAY,IAAI;AACnD,UAAI,iBAAiB,CAAA;AAErB,eAAS,YAAY,MAAM,OAAOC,YAAW;AAC3C,cAAM,EAAE,UAAU,GAAG,SAAQ,IAAK;AAGlC,uBAAe,KAAK;AAAA,UAClB,KAAK,SAAS;AAAA,UACd,OAAO;AAAA,UACP,GAAI,SAAS,UAAU,EAAE,QAAQ,SAAS,OAAM;AAAA,QACxD,CAAO;AAED,YAAI,YAAY,SAAS,SAAS,GAAG;AACnC,mBAAS,QAAQ,CAAC,OAAO,eAAe;AACtC,wBAAY,OAAO,YAAY,SAAS,GAAG;AAAA,UAC7C,CAAC;AAAA,QACH;AAAA,MACF;AAEA,eAAS,QAAQ,CAAC,MAAM,UAAU;AAChC,oBAAY,MAAM,KAAgB;AAAA,MACpC,CAAC;AAED,aAAO;AAAA,IACT;AAGA,mBAAe,sBAAsB,OAAO;AAC1C,cAAQ,IAAI,4CAA4C,KAAK;AAE7D,UAAI;AAEF,cAAM,iBAAiB,kBAAkBC,WAAAA,MAAiB,GAAG;AAE7D,cAAMC,WAAAA,QAAmB,YAAY,cAAc;AACnD,gBAAQ,IAAI,uCAAuC;AAAA,MACrD,SAAS,OAAO;AACd,gBAAQ,MAAM,oCAAoC,KAAK;AACvD,cAAM;AAAA,MACR;AAAA,IACF;AAEA,mBAAe,eAAe,UAAU;AAEtC,YAAM,cAAc,QAAQ,iDAAiD,SAAS,IAAI,IAAI;AAG9F,UAAI,aAAa;AACf,cAAMA,mBAAmB,OAAO,SAAS,GAAG;AAAA,MAC9C;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,7 +4,7 @@ import { state as state$1 } from "../../../globals/views/store/globals.js";
4
4
  import { state } from "../../../auth/views/store/auth.js";
5
5
  import { state as state$2, actions } from "../../store/categories.js";
6
6
  /* empty css */
7
- /* empty css */
7
+ /* empty css */
8
8
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
9
9
  import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
10
10
  import _sfc_main$4 from "../../../../components/Tree/Tree.vue.js";
@@ -44,25 +44,31 @@ const _sfc_main = {
44
44
  });
45
45
  onMounted(async () => {
46
46
  });
47
- function flattenCategoryTree(categories) {
47
+ function flattenTreeForAPI(treeData, parentUrl = "") {
48
48
  let flatCategories = [];
49
- function flatten(category) {
50
- const { children, ...categoryWithoutChildren } = category;
51
- flatCategories.push(categoryWithoutChildren);
52
- if (children && Array.isArray(children)) {
53
- children.forEach((child) => flatten(child));
49
+ function processNode(node, index, parentUrl2) {
50
+ const { children, ...nodeData } = node;
51
+ flatCategories.push({
52
+ _id: nodeData._id,
53
+ order: index,
54
+ ...nodeData.parent && { parent: nodeData.parent }
55
+ });
56
+ if (children && children.length > 0) {
57
+ children.forEach((child, childIndex) => {
58
+ processNode(child, childIndex, nodeData.url);
59
+ });
54
60
  }
55
61
  }
56
- categories.forEach((category) => flatten(category));
62
+ treeData.forEach((node, index) => {
63
+ processNode(node, index);
64
+ });
57
65
  return flatCategories;
58
66
  }
59
- async function updateCategoriesOrder(updatedCategories) {
60
- alert("helo");
67
+ async function updateCategoriesOrder(event) {
68
+ console.log("updateCategoriesOrder called with event:", event);
61
69
  try {
62
- const flattenedCategories = flattenCategoryTree(state$2.all);
63
- console.log(flattenedCategories);
64
- console.log(state$2.all);
65
- await actions.updateOrder(flattenedCategories);
70
+ const flatCategories = flattenTreeForAPI(state$2.all);
71
+ await actions.updateOrder(flatCategories);
66
72
  console.log("Categories order updated successfully");
67
73
  } catch (error) {
68
74
  console.error("Error updating categories order:", error);
@@ -72,9 +78,7 @@ const _sfc_main = {
72
78
  async function deleteCategory(category) {
73
79
  const isConfirmed = confirm(`Are you sure you want to delete the category "${category.name}"?`);
74
80
  if (isConfirmed) {
75
- await actions.delete(category.url);
76
- } else {
77
- alert("Category deletion cancelled");
81
+ await actions.delete(category._id);
78
82
  }
79
83
  }
80
84
  return (_ctx, _cache) => {
@@ -119,8 +123,7 @@ const _sfc_main = {
119
123
  },
120
124
  options: {
121
125
  user: state.user._id,
122
- rootOnly: true,
123
- excludeChildren: false
126
+ tree: true
124
127
  },
125
128
  sort: unref(sort),
126
129
  "onUpdate:sort": _cache[0] || (_cache[0] = ($event) => isRef(sort) ? sort.value = $event : sort = $event),
@@ -1 +1 @@
1
- {"version":3,"file":"Categories.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\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) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n rootOnly: true,\n excludeChildren: false\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\" \n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js'; \n\n const route = useRoute();\n const router = useRouter();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\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: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для преобразования иерархического дерева категорий в плоский массив\n function flattenCategoryTree(categories) {\n let flatCategories = [];\n \n function flatten(category) {\n const { children, ...categoryWithoutChildren } = category;\n flatCategories.push(categoryWithoutChildren);\n \n if (children && Array.isArray(children)) {\n children.forEach(child => flatten(child));\n }\n }\n \n categories.forEach(category => flatten(category));\n return flatCategories;\n }\n\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(updatedCategories) {\n alert('helo')\n try {\n // Преобразуем категории в плоский массив\n const flattenedCategories = flattenCategoryTree(categories.state.all);\n \n console.log(flattenedCategories)\n console.log( categories.state.all)\n await categories.actions.updateOrder(flattenedCategories);\n \n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category.url);\n } else {\n alert('Category deletion cancelled'); \n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["globals.state","IconPlus","auth.state","categories.state","categories.actions"],"mappings":";;;;;;;;;;;;;;;;;AAyEE,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAWX,QAAI,IAAI;AAErB,QAAI,OAAO,SAAS;AAAA,MAClB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,CAAK;AAAA,IACL,CAAG;AAEDA,YAAc,eAAe,UAAU,CAAC;AAAA,MACtC,WAAWC;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,MAAW,QAAQA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,gBAAgB,QAAQ,EAAE,KAAK,MAAM,OAAO,IAAG,EAAC,CAAE,IAAI,OAAO,KAAK,EAAE,MAAM,eAAc,CAAE;AAAA,IACnJ,CAAG,GAED,YAAY,MAAM;AAChBF,cAAc,eAAe,UAAU,CAAA;AAAA,IACzC,CAAC;AAED,cAAU,YAAY;AAAA,IAEtB,CAAC;AAGD,aAAS,oBAAoB,YAAY;AACvC,UAAI,iBAAiB,CAAA;AAErB,eAAS,QAAQ,UAAU;AACzB,cAAM,EAAE,UAAU,GAAG,wBAAuB,IAAK;AACjD,uBAAe,KAAK,uBAAuB;AAE3C,YAAI,YAAY,MAAM,QAAQ,QAAQ,GAAG;AACvC,mBAAS,QAAQ,WAAS,QAAQ,KAAK,CAAC;AAAA,QAC1C;AAAA,MACF;AAEA,iBAAW,QAAQ,cAAY,QAAQ,QAAQ,CAAC;AAChD,aAAO;AAAA,IACT;AAIA,mBAAe,sBAAsB,mBAAmB;AACtD,YAAM,MAAM;AACZ,UAAI;AAEF,cAAM,sBAAsB,oBAAoBG,QAAiB,GAAG;AAEpE,gBAAQ,IAAI,mBAAmB;AAC/B,gBAAQ,IAAKA,QAAiB,GAAG;AACjC,cAAMC,QAAmB,YAAY,mBAAmB;AAExD,gBAAQ,IAAI,uCAAuC;AAAA,MACrD,SAAS,OAAO;AACd,gBAAQ,MAAM,oCAAoC,KAAK;AACvD,cAAM;AAAA,MACR;AAAA,IACF;AAEA,mBAAe,eAAe,UAAU;AAEtC,YAAM,cAAc,QAAQ,iDAAiD,SAAS,IAAI,IAAI;AAG9F,UAAI,aAAa;AACf,cAAMA,QAAmB,OAAO,SAAS,GAAG;AAAA,MAC9C,OAAO;AACL,cAAM,6BAA6B;AAAA,MACrC;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Categories.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\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) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n tree: true\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\" \n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js'; \n\n const route = useRoute();\n const router = useRouter();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\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: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для преобразования дерева в плоский массив для API (materialised path)\n function flattenTreeForAPI(treeData, parentUrl = '') {\n let flatCategories = [];\n \n function processNode(node, index, parentUrl) {\n const { children, ...nodeData } = node;\n \n // Для materialised path отправляем order и parent (если есть)\n flatCategories.push({\n _id: nodeData._id,\n order: index,\n ...(nodeData.parent && { parent: nodeData.parent })\n });\n \n if (children && children.length > 0) {\n children.forEach((child, childIndex) => {\n processNode(child, childIndex, nodeData.url);\n });\n }\n }\n \n treeData.forEach((node, index) => {\n processNode(node, index, parentUrl);\n });\n \n return flatCategories;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n // Игнорируем события drag-and-drop, используем актуальное состояние\n const flatCategories = flattenTreeForAPI(categories.state.all);\n \n await categories.actions.updateOrder(flatCategories);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["globals.state","IconPlus","auth.state","parentUrl","categories.state","categories.actions"],"mappings":";;;;;;;;;;;;;;;;;AAwEE,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAWX,QAAI,IAAI;AAErB,QAAI,OAAO,SAAS;AAAA,MAClB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,GAAM;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACb,CAAK;AAAA,IACL,CAAG;AAEDA,YAAc,eAAe,UAAU,CAAC;AAAA,MACtC,WAAWC;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,MAAW,QAAQA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,MAAM,OAAO,MAAM,OAAO,KAAK,EAAE,MAAM,gBAAgB,QAAQ,EAAE,KAAK,MAAM,OAAO,IAAG,EAAC,CAAE,IAAI,OAAO,KAAK,EAAE,MAAM,eAAc,CAAE;AAAA,IACnJ,CAAG,GAED,YAAY,MAAM;AAChBF,cAAc,eAAe,UAAU,CAAA;AAAA,IACzC,CAAC;AAED,cAAU,YAAY;AAAA,IAEtB,CAAC;AAGD,aAAS,kBAAkB,UAAU,YAAY,IAAI;AACnD,UAAI,iBAAiB,CAAA;AAErB,eAAS,YAAY,MAAM,OAAOG,YAAW;AAC3C,cAAM,EAAE,UAAU,GAAG,SAAQ,IAAK;AAGlC,uBAAe,KAAK;AAAA,UAClB,KAAK,SAAS;AAAA,UACd,OAAO;AAAA,UACP,GAAI,SAAS,UAAU,EAAE,QAAQ,SAAS,OAAM;AAAA,QACxD,CAAO;AAED,YAAI,YAAY,SAAS,SAAS,GAAG;AACnC,mBAAS,QAAQ,CAAC,OAAO,eAAe;AACtC,wBAAY,OAAO,YAAY,SAAS,GAAG;AAAA,UAC7C,CAAC;AAAA,QACH;AAAA,MACF;AAEA,eAAS,QAAQ,CAAC,MAAM,UAAU;AAChC,oBAAY,MAAM,KAAgB;AAAA,MACpC,CAAC;AAED,aAAO;AAAA,IACT;AAGA,mBAAe,sBAAsB,OAAO;AAC1C,cAAQ,IAAI,4CAA4C,KAAK;AAE7D,UAAI;AAEF,cAAM,iBAAiB,kBAAkBC,QAAiB,GAAG;AAE7D,cAAMC,QAAmB,YAAY,cAAc;AACnD,gBAAQ,IAAI,uCAAuC;AAAA,MACrD,SAAS,OAAO;AACd,gBAAQ,MAAM,oCAAoC,KAAK;AACvD,cAAM;AAAA,MACR;AAAA,IACF;AAEA,mBAAe,eAAe,UAAU;AAEtC,YAAM,cAAc,QAAQ,iDAAiD,SAAS,IAAI,IAAI;AAG9F,UAAI,aAAa;AACf,cAAMA,QAAmB,OAAO,SAAS,GAAG;AAAA,MAC9C;AAAA,IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,18 +3,18 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
6
- const Button = require("../../../../components/Button/Button.vue.cjs");
6
+ const Button = require("../../../../components/Button/Button.vue2.cjs");
7
7
  const Select = require("../../../../components/Select/Select.vue.cjs");
8
8
  const UploadImage = require("../../../../components/UploadImage/UploadImage.vue.cjs");
9
9
  const Field = require("../../../../components/Field/Field.vue.cjs");
10
+ const FieldTags = require("../../../../components/FieldTags/FieldTags.vue.cjs");
10
11
  ;/* empty css */
11
12
  ;/* empty css */
12
13
  ;/* empty css */
13
14
  ;/* empty css */
14
15
  const IconCheckmark = require("../../../icons/navigation/IconCheckmark.vue.cjs");
15
- ;/* empty css */
16
+ ;/* empty css */
16
17
  ;/* empty css */
17
- ;/* empty css */
18
18
  ;/* empty css */
19
19
  ;/* empty css */
20
20
  const Block = require("../../../../components/Block/Block.vue.cjs");
@@ -42,7 +42,7 @@ const _sfc_main = {
42
42
  vue.onMounted(async () => {
43
43
  emits("page-loading");
44
44
  if (route.params.category) {
45
- await categories.actions.read({ url: route.params.category });
45
+ await categories.actions.read({ _id: route.params.category });
46
46
  } else {
47
47
  categories.actions.clean();
48
48
  }
@@ -66,11 +66,11 @@ const _sfc_main = {
66
66
  categories.state.current.creator = {
67
67
  type: categories.state.current.creator.type,
68
68
  hidden: categories.state.current.creator.hidden,
69
- target: categories.state.current.creator.target._id
69
+ target: typeof categories.state.current.creator.target === "object" ? categories.state.current.creator.target._id : categories.state.current.creator.target
70
70
  };
71
71
  categories.state.current.owner = {
72
72
  type: categories.state.current.owner.type,
73
- target: categories.state.current.owner.target._id
73
+ target: typeof categories.state.current.owner.target === "object" ? categories.state.current.owner.target._id : categories.state.current.owner.target
74
74
  };
75
75
  await categories.actions.update(categories.state.current);
76
76
  redirectTo();
@@ -109,7 +109,7 @@ const _sfc_main = {
109
109
  submit: onSubmit,
110
110
  class: "pd-small radius-medium bg-main t-black uppercase t-medium"
111
111
  }, {
112
- default: vue.withCtx(() => _cache[5] || (_cache[5] = [
112
+ default: vue.withCtx(() => _cache[6] || (_cache[6] = [
113
113
  vue.createTextVNode(" Save Category ")
114
114
  ])),
115
115
  _: 1
@@ -146,16 +146,25 @@ const _sfc_main = {
146
146
  class: "w-40 bg-white radius-small pd-medium"
147
147
  }, null, 8, ["field"]),
148
148
  vue.createVNode(Field.default, {
149
- field: categories.state.current.url,
150
- "onUpdate:field": _cache[3] || (_cache[3] = ($event) => categories.state.current.url = $event),
151
- label: "URL",
152
- placeholder: "Enter category URL",
149
+ field: categories.state.current.slug,
150
+ "onUpdate:field": _cache[3] || (_cache[3] = ($event) => categories.state.current.slug = $event),
151
+ label: "Slug",
152
+ placeholder: "Enter category slug",
153
+ disabled: vue.unref(route).params.category ? true : false,
153
154
  class: "w-100 bg-white radius-small pd-medium"
154
- }, null, 8, ["field"])
155
+ }, null, 8, ["field", "disabled"])
155
156
  ]),
157
+ vue.unref(route).params.category ? (vue.openBlock(), vue.createBlock(Field.default, {
158
+ key: 0,
159
+ field: categories.state.current.url,
160
+ "onUpdate:field": _cache[4] || (_cache[4] = ($event) => categories.state.current.url = $event),
161
+ label: "URL Path",
162
+ disabled: true,
163
+ class: "w-100 bg-white radius-small pd-medium mn-b-thin"
164
+ }, null, 8, ["field"])) : vue.createCommentVNode("", true),
156
165
  vue.createVNode(Select.default, {
157
166
  select: categories.state.current.status,
158
- "onUpdate:select": _cache[4] || (_cache[4] = ($event) => categories.state.current.status = $event),
167
+ "onUpdate:select": _cache[5] || (_cache[5] = ($event) => categories.state.current.status = $event),
159
168
  label: "Status",
160
169
  options: [
161
170
  "draft",
@@ -199,7 +208,7 @@ const _sfc_main = {
199
208
  placeholder: "No filters added yet",
200
209
  actions: [{
201
210
  label: "+",
202
- function: () => categories.state.current.filters.push({ name: "", url: "" })
211
+ function: () => categories.state.current.filters.push({ name: "", options: [] })
203
212
  }]
204
213
  }, {
205
214
  default: vue.withCtx(() => [
@@ -214,12 +223,12 @@ const _sfc_main = {
214
223
  placeholder: "Filter name",
215
224
  class: "w-100 bg-white radius-small pd-medium"
216
225
  }, null, 8, ["field", "onUpdate:field"]),
217
- vue.createVNode(Field.default, {
218
- field: item.options,
219
- "onUpdate:field": ($event) => item.options = $event,
220
- placeholder: "Filter options divided by ,",
226
+ vue.createVNode(FieldTags.default, {
227
+ tags: item.options,
228
+ "onUpdate:tags": ($event) => item.options = $event,
229
+ placeholder: "Add filter options",
221
230
  class: "w-100 bg-white radius-small pd-medium"
222
- }, null, 8, ["field", "onUpdate:field"]),
231
+ }, null, 8, ["tags", "onUpdate:tags"]),
223
232
  vue.createElementVNode("div", {
224
233
  onClick: () => categories.state.current.filters.splice(index, 1),
225
234
  class: "radius-small pd-small flex-center flex aspect-1x1 bg-red"
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryEdit.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/CategoryEdit.vue"],"sourcesContent":["<template>\n <div v-if=\"!isLoading\" class=\"rows-auto pd-thin bg-white for-transition w-100\">\n <Block v-if=\"!MOBILE_APP\" class=\"radius-medium mn-b-thin flex-nowrap flex-v-center flex\">\n <h1 class=\"mn-r-auto\">\n {{route.params.category ? 'Edit Category' : 'Add Category'}}\n </h1>\n\n <Button \n :submit=\"onSubmit\"\n class=\"pd-small radius-medium bg-main t-black uppercase t-medium\"\n >\n Save Category \n </Button>\n </Block>\n \n <Block \n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n <div class=\"cols-auto-1fr mn-b-thin w-100 \">\n <UploadImage \n v-model:photo=\"categories.state.current.photo\"\n :uploadPath=\"'categories'\"\n class=\"aspect-1x1 h-100 o-hidden mn-r-small radius-extra\" \n />\n <Field\n v-model:field=\"categories.state.current.name\"\n label=\"Name\"\n placeholder=\"Enter category name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n </div>\n\n <div class=\"mn-b-thin w-100 flex-nowrap gap-thin flex\">\n\n\n <Field\n v-model:field=\"categories.state.current.order\"\n label=\"Order\"\n :disabled=\"true\"\n class=\"w-40 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"categories.state.current.url\"\n label=\"URL\"\n placeholder=\"Enter category URL\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n \n </div>\n\n <Select \n v-model:select=\"categories.state.current.status\"\n label=\"Status\"\n :options=\"[\n 'draft', \n 'internal',\n 'published',\n 'removed'\n ]\"\n placeholder=\"Select category\"\n class=\"pos-relative w-100 bg-white radius-small pd-medium\"\n />\n\n <!-- <div class=\"flex-v-center flex-nowrap flex\">\n <h4 class=\"mn-r-thin t-medium\">Localization</h4>\n \n <button \n @click=\"() => categories.state.current.translations.push({locale: '', text: ''})\" \n class=\"i-small pd-thin button-delete button\"\n >\n +\n </button>\n </div> -->\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.translations\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.locale\"\n placeholder=\"Locale\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.text\"\n placeholder=\"Text\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.translations.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n\n \n </Block>\n <!-- Filters -->\n <Block\n title=\"Filters\"\n placeholder=\"No filters added yet\"\n :actions=\"[{\n label: '+',\n function: () => categories.state.current.filters.push({name: '', url: ''})\n }]\"\n >\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.filters\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Filter name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.options\"\n placeholder=\"Filter options divided by ,\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.filters.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div> \n </Block>\n </div>\n \n</template>\n\n<script setup>\n // Import libs\n import { computed, onUnmounted, onMounted, ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n \n import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Select from \"@martyrs/src/components/Select/Select.vue\";\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Field from \"@martyrs/src/components/Field/Field.vue\";\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import IconCheckmark from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue'\n\n // Import the new store structure\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n const route = useRoute()\n const router = useRouter()\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n\n // Data prefetching\n const isLoading = ref(true)\n onMounted(async () => {\n emits('page-loading');\n if (route.params.category) {\n await categories.actions.read({url: route.params.category})\n } else {\n categories.actions.clean() // Adjusted based on the new store's method to reset the category state\n }\n\n emits('page-loaded');\n isLoading.value = false\n })\n\n // Accessing state\n const category = computed(() => categories.state.current)\n const routePath = computed(() => route.name)\n\n // Navigation Bar\n globals.state.navigation_bar.actions = [{\n component: IconCheckmark,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => onSubmit()\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n\n\n // Functions\n async function onSubmit() {\n if (route.params.category) {\n\n categories.state.current.creator = {\n type: categories.state.current.creator.type,\n hidden: categories.state.current.creator.hidden,\n target: categories.state.current.creator.target._id\n }\n\n categories.state.current.owner = {\n type: categories.state.current.owner.type,\n target: categories.state.current.owner.target._id\n }\n\n await categories.actions.update(categories.state.current)\n\n redirectTo()\n } else {\n\n categories.state.current.creator = {\n type: 'user',\n hidden: false,\n target: auth.state.user._id\n }\n\n categories.state.current.owner = {\n type: route.params._id ? 'organization' : 'platform',\n hidden: false,\n target: route.params._id ? route.params._id : null\n }\n\n await categories.actions.create(categories.state.current)\n redirectTo()\n }\n }\n\n function redirectTo () {\n router.push({\n name: 'Categories', \n params: { \n _id: route.params._id\n } \n })\n }\n</script>\n\n<style lang=\"scss\">\n.container {\n max-width: 100%;\n margin: auto;\n}\n\n.grid {\n \n}\n\n.square {\n aspect-ratio: 1 / 1;\n height: 100%;\n background: #ccc;\n}\n</style>\n"],"names":["useRoute","useRouter","ref","onMounted","categories.actions","computed","categories.state","globals.state","IconCheckmark","auth.state","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkKE,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,UAAM,QAAQ;AAGd,UAAM,YAAYC,IAAAA,IAAI,IAAI;AAC1BC,QAAAA,UAAU,YAAY;AACpB,YAAM,cAAc;AACpB,UAAI,MAAM,OAAO,UAAU;AACzB,cAAMC,WAAAA,QAAmB,KAAK,EAAC,KAAK,MAAM,OAAO,SAAQ,CAAC;AAAA,MAC5D,OAAO;AACLA,mBAAAA,QAAmB,MAAK;AAAA,MAC1B;AAEA,YAAM,aAAa;AACnB,gBAAU,QAAQ;AAAA,IACpB,CAAC;AAGgBC,QAAAA,SAAS,MAAMC,WAAAA,MAAiB,OAAO;AACtCD,QAAAA,SAAS,MAAM,MAAM,IAAI;AAG3CE,kBAAc,eAAe,UAAU,CAAC;AAAA,MACtC,WAAWC,cAAAA;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,KAAAA,MAAW,QAAQA,KAAAA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,SAAQ;AAAA,IAC1B,CAAG,GAEFC,IAAAA,YAAY,MAAM;AACfH,oBAAc,eAAe,UAAU,CAAA;AAAA,IACzC,CAAC;AAKD,mBAAe,WAAW;AACxB,UAAI,MAAM,OAAO,UAAU;AAEzBD,mBAAAA,MAAiB,QAAQ,UAAU;AAAA,UACjC,MAAMA,WAAAA,MAAiB,QAAQ,QAAQ;AAAA,UACvC,QAAQA,WAAAA,MAAiB,QAAQ,QAAQ;AAAA,UACzC,QAAQA,WAAAA,MAAiB,QAAQ,QAAQ,OAAO;AAAA,QACxD;AAEMA,mBAAAA,MAAiB,QAAQ,QAAQ;AAAA,UAC/B,MAAMA,WAAAA,MAAiB,QAAQ,MAAM;AAAA,UACrC,QAAQA,WAAAA,MAAiB,QAAQ,MAAM,OAAO;AAAA,QACtD;AAEM,cAAMF,WAAAA,QAAmB,OAAOE,WAAAA,MAAiB,OAAO;AAExD,mBAAU;AAAA,MACZ,OAAO;AAELA,mBAAAA,MAAiB,QAAQ,UAAU;AAAA,UACjC,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,QAAQG,KAAAA,MAAW,KAAK;AAAA,QAChC;AAEMH,mBAAAA,MAAiB,QAAQ,QAAQ;AAAA,UAC/B,MAAM,MAAM,OAAO,MAAM,iBAAiB;AAAA,UAC1C,QAAQ;AAAA,UACR,QAAQ,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM;AAAA,QACtD;AAEM,cAAMF,WAAAA,QAAmB,OAAOE,WAAAA,MAAiB,OAAO;AACxD,mBAAU;AAAA,MACZ;AAAA,IACF;AAEA,aAAS,aAAc;AACrB,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,KAAK,MAAM,OAAO;AAAA,QAC1B;AAAA,MACA,CAAK;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CategoryEdit.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/CategoryEdit.vue"],"sourcesContent":["<template>\n <div v-if=\"!isLoading\" class=\"rows-auto pd-thin bg-white for-transition w-100\">\n <Block v-if=\"!MOBILE_APP\" class=\"radius-medium mn-b-thin flex-nowrap flex-v-center flex\">\n <h1 class=\"mn-r-auto\">\n {{route.params.category ? 'Edit Category' : 'Add Category'}}\n </h1>\n\n <Button \n :submit=\"onSubmit\"\n class=\"pd-small radius-medium bg-main t-black uppercase t-medium\"\n >\n Save Category \n </Button>\n </Block>\n \n <Block \n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n <div class=\"cols-auto-1fr mn-b-thin w-100 \">\n <UploadImage \n v-model:photo=\"categories.state.current.photo\"\n :uploadPath=\"'categories'\"\n class=\"aspect-1x1 h-100 o-hidden mn-r-small radius-extra\" \n />\n <Field\n v-model:field=\"categories.state.current.name\"\n label=\"Name\"\n placeholder=\"Enter category name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n </div>\n\n <div class=\"mn-b-thin w-100 flex-nowrap gap-thin flex\">\n <Field\n v-model:field=\"categories.state.current.order\"\n label=\"Order\"\n :disabled=\"true\"\n class=\"w-40 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"categories.state.current.slug\"\n label=\"Slug\"\n placeholder=\"Enter category slug\"\n :disabled=\"route.params.category ? true : false\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n </div>\n \n <Field\n v-if=\"route.params.category\"\n v-model:field=\"categories.state.current.url\"\n label=\"URL Path\"\n :disabled=\"true\"\n class=\"w-100 bg-white radius-small pd-medium mn-b-thin\"\n />\n\n <Select \n v-model:select=\"categories.state.current.status\"\n label=\"Status\"\n :options=\"[\n 'draft', \n 'internal',\n 'published',\n 'removed'\n ]\"\n placeholder=\"Select category\"\n class=\"pos-relative w-100 bg-white radius-small pd-medium\"\n />\n\n <!-- <div class=\"flex-v-center flex-nowrap flex\">\n <h4 class=\"mn-r-thin t-medium\">Localization</h4>\n \n <button \n @click=\"() => categories.state.current.translations.push({locale: '', text: ''})\" \n class=\"i-small pd-thin button-delete button\"\n >\n +\n </button>\n </div> -->\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.translations\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.locale\"\n placeholder=\"Locale\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.text\"\n placeholder=\"Text\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.translations.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n\n \n </Block>\n <!-- Filters -->\n <Block\n title=\"Filters\"\n placeholder=\"No filters added yet\"\n :actions=\"[{\n label: '+',\n function: () => categories.state.current.filters.push({name: '', options: []})\n }]\"\n >\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.filters\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Filter name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <FieldTags\n v-model:tags=\"item.options\"\n placeholder=\"Add filter options\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.filters.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div> \n </Block>\n </div>\n \n</template>\n\n<script setup>\n // Import libs\n import { computed, onUnmounted, onMounted, ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n \n import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Select from \"@martyrs/src/components/Select/Select.vue\";\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Field from \"@martyrs/src/components/Field/Field.vue\";\n import FieldTags from \"@martyrs/src/components/FieldTags/FieldTags.vue\";\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import IconCheckmark from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue'\n\n // Import the new store structure\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n const route = useRoute()\n const router = useRouter()\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n\n // Data prefetching\n const isLoading = ref(true)\n onMounted(async () => {\n emits('page-loading');\n if (route.params.category) {\n await categories.actions.read({_id: route.params.category})\n } else {\n categories.actions.clean() // Adjusted based on the new store's method to reset the category state\n }\n\n emits('page-loaded');\n isLoading.value = false\n })\n\n // Accessing state\n const category = computed(() => categories.state.current)\n const routePath = computed(() => route.name)\n\n // Navigation Bar\n globals.state.navigation_bar.actions = [{\n component: IconCheckmark,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => onSubmit()\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n\n\n // Functions\n async function onSubmit() {\n if (route.params.category) {\n\n categories.state.current.creator = {\n type: categories.state.current.creator.type,\n hidden: categories.state.current.creator.hidden,\n target: typeof categories.state.current.creator.target === 'object' \n ? categories.state.current.creator.target._id \n : categories.state.current.creator.target\n }\n\n categories.state.current.owner = {\n type: categories.state.current.owner.type,\n target: typeof categories.state.current.owner.target === 'object' \n ? categories.state.current.owner.target._id \n : categories.state.current.owner.target\n }\n\n await categories.actions.update(categories.state.current)\n\n redirectTo()\n } else {\n\n categories.state.current.creator = {\n type: 'user',\n hidden: false,\n target: auth.state.user._id\n }\n\n categories.state.current.owner = {\n type: route.params._id ? 'organization' : 'platform',\n hidden: false,\n target: route.params._id ? route.params._id : null\n }\n\n await categories.actions.create(categories.state.current)\n redirectTo()\n }\n }\n\n function redirectTo () {\n router.push({\n name: 'Categories', \n params: { \n _id: route.params._id\n } \n })\n }\n</script>\n\n<style lang=\"scss\">\n.container {\n max-width: 100%;\n margin: auto;\n}\n\n.grid {\n \n}\n\n.square {\n aspect-ratio: 1 / 1;\n height: 100%;\n background: #ccc;\n}\n</style>\n"],"names":["useRoute","useRouter","ref","onMounted","categories.actions","computed","categories.state","globals.state","IconCheckmark","auth.state","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyKE,UAAM,QAAQA,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,UAAM,QAAQ;AAGd,UAAM,YAAYC,IAAAA,IAAI,IAAI;AAC1BC,QAAAA,UAAU,YAAY;AACpB,YAAM,cAAc;AACpB,UAAI,MAAM,OAAO,UAAU;AACzB,cAAMC,WAAAA,QAAmB,KAAK,EAAC,KAAK,MAAM,OAAO,SAAQ,CAAC;AAAA,MAC5D,OAAO;AACLA,mBAAAA,QAAmB,MAAK;AAAA,MAC1B;AAEA,YAAM,aAAa;AACnB,gBAAU,QAAQ;AAAA,IACpB,CAAC;AAGgBC,QAAAA,SAAS,MAAMC,WAAAA,MAAiB,OAAO;AACtCD,QAAAA,SAAS,MAAM,MAAM,IAAI;AAG3CE,kBAAc,eAAe,UAAU,CAAC;AAAA,MACtC,WAAWC,cAAAA;AAAAA,MACX,OAAO;AAAA,QACL,MAAM;AAAA,MACZ;AAAA,MACI,WAAW,MAAMC,KAAAA,MAAW,QAAQA,KAAAA,MAAW,KAAK;AAAA,MACpD,QAAQ,MAAM,SAAQ;AAAA,IAC1B,CAAG,GAEFC,IAAAA,YAAY,MAAM;AACfH,oBAAc,eAAe,UAAU,CAAA;AAAA,IACzC,CAAC;AAKD,mBAAe,WAAW;AACxB,UAAI,MAAM,OAAO,UAAU;AAEzBD,mBAAAA,MAAiB,QAAQ,UAAU;AAAA,UACjC,MAAMA,WAAAA,MAAiB,QAAQ,QAAQ;AAAA,UACvC,QAAQA,WAAAA,MAAiB,QAAQ,QAAQ;AAAA,UACzC,QAAQ,OAAOA,WAAAA,MAAiB,QAAQ,QAAQ,WAAW,WACvDA,WAAAA,MAAiB,QAAQ,QAAQ,OAAO,MACxCA,WAAAA,MAAiB,QAAQ,QAAQ;AAAA,QAC7C;AAEMA,mBAAAA,MAAiB,QAAQ,QAAQ;AAAA,UAC/B,MAAMA,WAAAA,MAAiB,QAAQ,MAAM;AAAA,UACrC,QAAQ,OAAOA,WAAAA,MAAiB,QAAQ,MAAM,WAAW,WACrDA,WAAAA,MAAiB,QAAQ,MAAM,OAAO,MACtCA,WAAAA,MAAiB,QAAQ,MAAM;AAAA,QAC3C;AAEM,cAAMF,WAAAA,QAAmB,OAAOE,WAAAA,MAAiB,OAAO;AAExD,mBAAU;AAAA,MACZ,OAAO;AAELA,mBAAAA,MAAiB,QAAQ,UAAU;AAAA,UACjC,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,QAAQG,KAAAA,MAAW,KAAK;AAAA,QAChC;AAEMH,mBAAAA,MAAiB,QAAQ,QAAQ;AAAA,UAC/B,MAAM,MAAM,OAAO,MAAM,iBAAiB;AAAA,UAC1C,QAAQ;AAAA,UACR,QAAQ,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM;AAAA,QACtD;AAEM,cAAMF,WAAAA,QAAmB,OAAOE,WAAAA,MAAiB,OAAO;AACxD,mBAAU;AAAA,MACZ;AAAA,IACF;AAEA,aAAS,aAAc;AACrB,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,KAAK,MAAM,OAAO;AAAA,QAC1B;AAAA,MACA,CAAK;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}