@ozdao/martyrs 0.2.564 → 0.2.566

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 (366) hide show
  1. package/dist/abac-BPl9Bmf9.js +1527 -0
  2. package/dist/builder.js +51 -39
  3. package/dist/{common.schema-GFSlNJo7.js → common.schema-DswiUXKB.js} +1 -1
  4. package/dist/community.server.js +48 -9
  5. package/dist/core.server.js +6 -4
  6. package/dist/{crud-C7FSTUes.js → crud-q1ye5IhV.js} +7 -7
  7. package/dist/events.server.js +3 -3
  8. package/dist/gallery.server.js +2 -2
  9. package/dist/inventory.server.js +4 -6
  10. package/dist/{main-CmjWiDVF.js → main-B9o1iBAZ.js} +1279 -1287
  11. package/dist/marketplace.server.js +1 -1
  12. package/dist/martyrs/dist/main-B9o1iBAZ.js +943 -0
  13. package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
  14. package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
  15. package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
  16. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
  17. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +36 -45
  19. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  20. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  21. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  22. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  23. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  25. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  26. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +3 -4
  28. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  30. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  31. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  34. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  35. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  38. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  40. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  42. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +13 -13
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  57. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  59. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +4 -4
  60. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  62. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  63. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  64. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  65. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  66. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  67. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  68. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  69. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  70. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  71. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  72. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  73. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  75. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  76. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  77. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -2
  78. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  80. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  81. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  82. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +1 -1
  83. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  84. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  85. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  86. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +2 -2
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  90. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  91. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  92. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +2 -2
  93. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  94. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  95. package/dist/martyrs/src/modules/events/events.client.js +15 -12
  96. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  98. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  99. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  100. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  101. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  103. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  105. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  106. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
  107. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
  108. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -3
  109. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +25 -25
  111. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  115. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  116. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  117. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  118. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  119. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
  120. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +121 -206
  122. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  124. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
  125. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  126. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  127. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +167 -246
  128. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  130. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +136 -221
  131. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
  134. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
  135. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +32 -154
  136. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
  138. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
  139. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
  140. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
  142. package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
  143. package/dist/martyrs/src/modules/music/store/albums.js +8 -2
  144. package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
  145. package/dist/martyrs/src/modules/music/store/player.js +83 -65
  146. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  147. package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
  148. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  150. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  152. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  153. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  155. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  156. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  157. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  158. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  159. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  160. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  161. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  162. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  164. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  165. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  167. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  168. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  169. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  170. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  171. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  172. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  173. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +3 -3
  175. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  176. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  177. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  178. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  179. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  180. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  181. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  183. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  185. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +10 -7
  186. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -6
  188. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  190. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  192. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  193. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  194. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  195. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  196. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  197. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  198. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  199. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  200. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  202. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +211 -61
  203. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  205. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  206. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  207. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +4 -4
  208. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  210. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  211. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  212. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  213. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  214. package/dist/martyrs.css +1 -1
  215. package/dist/martyrs.es.js +1 -1
  216. package/dist/music.server.js +44 -18
  217. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
  218. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
  219. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  220. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  221. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
  222. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
  223. package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  224. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  225. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  226. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  227. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  228. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  229. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  230. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  231. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  232. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  233. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  234. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  235. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  236. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  237. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  238. package/dist/notifications.server.js +0 -3
  239. package/dist/orders.server.js +5 -6
  240. package/dist/organizations.server.js +9 -10
  241. package/dist/products.server.js +27 -26
  242. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  243. package/dist/rents.server.js +2 -3
  244. package/dist/spots.server.js +1 -1
  245. package/dist/style.css +252 -161
  246. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  247. package/package.json +1 -1
  248. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  249. package/src/builder/rspack/rspack.config.api.js +15 -4
  250. package/src/builder/rspack/rspack.config.base.js +3 -3
  251. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  252. package/src/builder/templates/page.js +2 -2
  253. package/src/components/BottomSheet/BottomSheet.vue +4 -4
  254. package/src/components/Button/Button.vue +50 -37
  255. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  256. package/src/components/Loader/Loader.vue +1 -1
  257. package/src/components/Tree/Tree.vue +6 -3
  258. package/src/modules/LAYOUT.MD +767 -0
  259. package/src/modules/PROCESS.md +0 -0
  260. package/src/modules/TASKS.MD +17 -0
  261. package/src/modules/auth/auth.client.js +11 -7
  262. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  263. package/src/modules/auth/views/router/auth.router.js +94 -0
  264. package/src/modules/auth/views/router/users.router.js +153 -0
  265. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  266. package/src/modules/community/community.server.js +8 -0
  267. package/src/modules/community/policies/blog.policies.js +55 -0
  268. package/src/modules/community/routes/blog.routes.js +1 -1
  269. package/src/modules/community/routes/comments.routes.js +1 -1
  270. package/src/modules/community/routes/reactions.routes.js +1 -4
  271. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  272. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  273. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  274. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  275. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  276. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  277. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  278. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  279. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  280. package/src/modules/core/core.server.js +1 -0
  281. package/src/modules/core/locales/en.js +45 -0
  282. package/src/modules/core/locales/ru.js +45 -0
  283. package/src/modules/core/models/schemas/common.schema.js +1 -1
  284. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  285. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  286. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  287. package/src/modules/core/views/mixins/mixins.js +1 -2
  288. package/src/modules/core/views/router/addRoutes.js +6 -1
  289. package/src/modules/events/events.client.js +3 -0
  290. package/src/modules/events/routes/events.routes.js +1 -1
  291. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  292. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  293. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  294. package/src/modules/marketplace/marketplace.router.js +66 -0
  295. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  296. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  297. package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
  298. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  299. package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
  300. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
  301. package/src/modules/music/components/pages/Album.vue +55 -67
  302. package/src/modules/music/components/pages/MusicHome.vue +4 -6
  303. package/src/modules/music/components/pages/Playlist.vue +61 -70
  304. package/src/modules/music/components/pages/Track.vue +54 -71
  305. package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
  306. package/src/modules/music/components/player/MusicPlayer.vue +21 -216
  307. package/src/modules/music/components/player/PlayerControls.vue +112 -0
  308. package/src/modules/music/components/player/Visualizer.vue +151 -0
  309. package/src/modules/music/components/player/VolumeControl.vue +75 -23
  310. package/src/modules/music/components/player/tonar.png +0 -0
  311. package/src/modules/music/controllers/stream.controller.js +1 -1
  312. package/src/modules/music/music.server.js +1 -1
  313. package/src/modules/music/policies/music.policies.js +3 -2
  314. package/src/modules/music/router/library.router.js +26 -0
  315. package/src/modules/music/router/music.router.js +176 -0
  316. package/src/modules/music/routes/albums.routes.js +13 -12
  317. package/src/modules/music/routes/tracks.routes.js +39 -0
  318. package/src/modules/music/store/albums.js +10 -2
  319. package/src/modules/music/store/player.js +101 -89
  320. package/src/modules/music/store/tracks.js +5 -21
  321. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  322. package/src/modules/notifications/notifications.server.js +1 -3
  323. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  324. package/src/modules/orders/orders.server.js +0 -1
  325. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  326. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  327. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  328. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  329. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  330. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  331. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  332. package/src/modules/products/components/pages/Categories.vue +9 -6
  333. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  334. package/src/modules/products/components/pages/Product.vue +11 -5
  335. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  336. package/src/modules/products/controllers/categories.controller.js +32 -27
  337. package/src/modules/products/routes/categories.routes.js +1 -1
  338. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  339. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  340. package/src/modules/spots/components/pages/Map.vue +2 -2
  341. package/src/styles/config.scss +6 -6
  342. package/dist/abac-DYoheWuc.js +0 -1031
  343. package/dist/core.abac-DUPBnlk6.js +0 -298
  344. package/dist/core.logger-C3q8A9dl.js +0 -51
  345. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  346. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  347. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  348. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  349. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  350. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  351. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  352. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  353. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
  354. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
  355. package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  356. package/src/modules/auth/auth.router.js +0 -262
  357. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  358. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  359. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  360. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  361. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  362. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  363. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  364. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  365. package/src/modules/governance/reactcode/eslint.config.js +0 -28
  366. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
@@ -1,11 +1,13 @@
1
1
  import Cache from '@martyrs/src/modules/core/controllers/classes/core.cache.js';
2
2
  import Logger from '@martyrs/src/modules/core/controllers/classes/core.logger.js';
3
3
  import globalsQuery from '@martyrs/src/modules/core/controllers/utils/queryProcessor.js';
4
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
4
5
 
5
6
  const controllerFactory = db => {
6
7
  const Category = db.category;
7
8
  const logger = new Logger(db);
8
9
  const cache = new Cache();
10
+ const abac = coreabac.getInstance(db);
9
11
 
10
12
  // Генерация уникального slug
11
13
  const generateSlug = async (name, parentId = null) => {
@@ -174,17 +176,30 @@ const controllerFactory = db => {
174
176
  const depthNum = parseInt(depth, 10);
175
177
  const isTree = tree === 'true' || tree === true;
176
178
  const isRoot = root === 'true' || root === true;
177
-
178
- console.log('🚀 Read categories params:', { url, depth: depthNum, tree: isTree, root });
179
-
180
- const cacheKey = JSON.stringify(req.query);
179
+
180
+ const cacheKey = JSON.stringify({ query: req.query, userId: req.userId });
181
181
  const cached = await cache.get(cacheKey);
182
182
  if (cached) return res.json(cached);
183
183
 
184
+ // Проверка прав на просмотр всех статусов
185
+ let canViewAllStatuses = false;
186
+ if (req.userId) {
187
+ const accessCheck = await abac.checkAccess({
188
+ user: req.userId,
189
+ resource: 'category',
190
+ action: 'read',
191
+ data: {
192
+ body: owner ? { owner: { type: 'organization', target: owner } } : {}
193
+ }
194
+ });
195
+
196
+ canViewAllStatuses = accessCheck.allow;
197
+ }
198
+
184
199
  // Базовая фильтрация
185
200
  const match = {
186
201
  ...(_id && { _id: new db.mongoose.Types.ObjectId(_id) }),
187
- ...(status && { status }),
202
+ ...(status !== undefined ? { status } : (canViewAllStatuses ? {} : { status: 'published' })),
188
203
  ...(search && { name: { $regex: search, $options: 'i' } }),
189
204
  ...(type && { 'owner.type': type }),
190
205
  ...(owner && { 'owner.target': new db.mongoose.Types.ObjectId(owner) }),
@@ -214,19 +229,13 @@ const controllerFactory = db => {
214
229
  match.url = { $regex: '^/[^/]+$' };
215
230
  }
216
231
 
217
- console.log('🔎 Match object:', JSON.stringify(match, null, 2));
218
-
219
232
  const pipeline = [
220
233
  { $match: match },
221
234
  ...globalsQuery.getSortingOptions(sortParam, sortOrder),
222
- // ...(skip || limit ? globalsQuery.getPaginationOptions(skip, limit) : []),
235
+ ...(!isTree && (skip || limit) ? globalsQuery.getPaginationOptions(skip, limit) : []),
223
236
  ];
224
-
225
- console.log('🔧 Pipeline:', JSON.stringify(pipeline, null, 2));
226
237
 
227
238
  let results = await Category.aggregate(pipeline);
228
- console.log('🔍 Aggregate results:', results.length, 'categories found');
229
- console.log('🔍 Results URLs:', results.map(r => r.url));
230
239
 
231
240
  // Фильтрация по глубине если указан depth > 1 и url
232
241
  if (url && depthNum > 1) {
@@ -235,31 +244,28 @@ const controllerFactory = db => {
235
244
  const catLevel = cat.url.split('/').filter(Boolean).length;
236
245
  return cat.url === url || catLevel <= maxLevel;
237
246
  });
238
- console.log('🔍 After depth filter:', results.length, 'categories');
239
247
  }
240
248
 
241
249
  // Построение дерева
242
250
  if (isTree && results.length > 0) {
243
- console.log('🌳 Building tree from results');
244
251
  results = buildTreeFromUrl(results, sortParam, sortOrder);
252
+
253
+ // Пагинация корневых элементов
254
+ const skipNum = parseInt(skip, 10) || 0;
255
+ const limitNum = parseInt(limit, 10) || 0;
256
+ if (limitNum > 0) {
257
+ results = results.slice(skipNum, skipNum + limitNum);
258
+ }
245
259
  } else if (!isTree && depthNum === 1 && url && results.length > 0) {
246
- console.log('📋 Processing tree=false, depth=1');
247
- console.log('📋 Looking for main category with url:', url);
248
-
249
260
  const mainCategory = results.find(c => c.url === url);
250
- console.log('📋 Main category found:', !!mainCategory, mainCategory?.url);
251
-
261
+
252
262
  if (mainCategory) {
253
- const children = results.filter(c =>
263
+ const children = results.filter(c =>
254
264
  c.url !== url && c.url.startsWith(url + '/')
255
265
  );
256
- console.log('📋 Children found:', children.length, children.map(c => c.url));
257
-
266
+
258
267
  mainCategory.children = children;
259
268
  results = [mainCategory];
260
- console.log('📋 Final result with children:', results[0].url, 'children:', results[0].children.length);
261
- } else {
262
- console.log('❌ Main category not found in results!');
263
269
  }
264
270
  }
265
271
 
@@ -267,8 +273,7 @@ const controllerFactory = db => {
267
273
  const tags = ['categories'];
268
274
  if (owner) tags.push(`organization_${owner}`);
269
275
  await cache.setWithTags(cacheKey, results, tags);
270
-
271
- console.log('✅ Final results count:', results.length);
276
+
272
277
  res.json(results);
273
278
  } catch (err) {
274
279
  logger.error(`Error reading categories: ${err.message}`);
@@ -1,5 +1,5 @@
1
1
  import jwtFactory from '@martyrs/src/modules/auth/controllers/middlewares/authJwt.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
2
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
3
3
  import controllerFactory from '../controllers/categories.controller.js';
4
4
  import verifierFactory from '../middlewares/categories.verifier.js';
5
5
  const { getInstance } = coreabac;
@@ -1,5 +1,5 @@
1
1
  import middlewareFactoryAuth from '@martyrs/src/modules/auth/controllers/middlewares/index.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
2
+ import coreabac from '@martyrs/src/modules/core/controllers/classes/abac/abac.js';
3
3
  import controllerFactory from '../services/rents.services.js';
4
4
  // const middlewareFactoryRents = require('../middlewares/rent');
5
5
  // ABAC
@@ -4,30 +4,102 @@
4
4
  <h2>{{ route.params._id ? 'Edit' : 'Add' }} Rent</h2>
5
5
  </header>
6
6
 
7
- <Popup
8
- title="Add Product to Rent"
9
- @close-popup="closeProductsPopup"
7
+ <Popup
8
+ title="Add Product to Rent"
9
+ @close-popup="closeProductsPopup"
10
10
  :isPopupOpen="isOpenProductsPopup"
11
- class="bg-white w-min-30r w-max-30r radius-big pd-medium"
11
+ class="bg-white w-100 w-max-30r radius-medium pd-medium"
12
12
  >
13
- <div class="bg-light mn-b-thin h-min-20r h-max-20r o-scroll pd-medium radius-big">
14
- <Feed
15
- :search="true"
16
- :states="{ empty: { title: 'No Products Found', description: 'No products available for rent.' } }"
17
- :store="{ read: (options) => products.actions.read(options) }"
18
- :options="{ organization: route.params._id, listing: 'rent' }"
19
- v-slot="{ items }"
20
- >
21
- <CardOrderItem
22
- v-for="product in items"
23
- :key="product._id"
24
- :editable="false"
25
- :product="product"
26
- @click="addProduct(product)"
27
- class="bg-white pd-thin radius-medium w-100 mn-b-thin"
28
- />
29
- </Feed>
30
- </div>
13
+ <Feed
14
+ :search="{
15
+ class: 'bg-light radius-small'
16
+ }"
17
+ :states="{
18
+ empty: {
19
+ title: 'No Products Found',
20
+ description: 'No products available for rent.'
21
+ }
22
+ }"
23
+ :store="{
24
+ read: (options) => products.actions.read(options),
25
+ state: null
26
+ }"
27
+ :options="{
28
+ owner: route.params._id,
29
+ listing: 'rent'
30
+ }"
31
+ v-slot="{ items }"
32
+ class="flex-column flex gap-thin h-max-20r o-scroll"
33
+ >
34
+ <CardOrderItem
35
+ v-for="(product, index) in items"
36
+ :key="`${product._id}_${product.variant || 'no-variant'}_${index}`"
37
+ :editable="false"
38
+ :productId="product._id"
39
+ :variantId="product.variant"
40
+ :images="product.images"
41
+ :name="product.name"
42
+ :quantity="product.quantity || 1"
43
+ :unit="product.unit"
44
+ :dates="product.date"
45
+ :listing="product.listing"
46
+ :price="product.price"
47
+ @click="() => selectProduct(product)"
48
+ class="bg-light pd-small radius-small w-100"
49
+ />
50
+ </Feed>
51
+ </Popup>
52
+
53
+ <!-- Popup for selecting variant of the product -->
54
+ <Popup
55
+ title="Select variant"
56
+ @close-popup="closeVariantsPopup"
57
+ :isPopupOpen="isVariantsPopupOpen"
58
+ class="bg-white w-100 w-max-30r radius-medium pd-medium"
59
+ >
60
+ <Feed
61
+ :store="variants"
62
+ :options="{
63
+ product: selectedProduct._id,
64
+ }"
65
+ :skeleton="{
66
+ structure: [
67
+ { block: 'text', size: 'small' },
68
+ { block: 'text', size: 'medium' },
69
+ { block: 'text', size: 'small' }
70
+ ]
71
+ }"
72
+ :states="{
73
+ empty: {
74
+ title: 'No variants',
75
+ description: 'Create your first variant'
76
+ }
77
+ }"
78
+ v-slot="{ items }"
79
+ >
80
+ <div class="gap-thin flex flex-column">
81
+ <div
82
+ v-for="(variant, index) in items"
83
+ :key="index"
84
+ @click="addVariantToRent(variant)"
85
+ class="w-100 cursor-pointer hover-scale-1 bg-light pd-small radius-small flex-v-center flex-nowrap flex gap-thin"
86
+ >
87
+ <div v-if="variant.images && variant.images.length" class="aspect-1x1 h-3r radius-small o-hidden">
88
+ <img
89
+ :src="(FILE_SERVER_URL || '') + variant.images[0]"
90
+ class="w-100 h-100 object-fit-cover"
91
+ />
92
+ </div>
93
+ <div>
94
+ <p class="t-medium">{{ variant.name || 'Default variant' }}</p>
95
+ <p v-if="variant.attributes && variant.attributes.length" class="t-small t-transp">
96
+ {{ variant.attributes.map(attr => `${attr.name}: ${attr.value}`).join(', ') }}
97
+ </p>
98
+ </div>
99
+ <p class="mn-l-auto">{{ formatPrice(variant.price || variant.cost) }}</p>
100
+ </div>
101
+ </div>
102
+ </Feed>
31
103
  </Popup>
32
104
 
33
105
  <Block title="Rent Period" class="mn-b-semi">
@@ -38,24 +110,27 @@
38
110
  </Block>
39
111
 
40
112
  <Block
41
- title="Rented Products"
42
- :actions="[{ label: '+', function: openProductsPopup }]"
113
+ title="Rented Product"
114
+ :actions="rents.state.current.product ? [] : [{ label: '+', function: openProductsPopup }]"
43
115
  placeholder="No products added yet"
44
116
  class="mn-b-semi"
45
117
  >
46
118
  <CardOrderItem
47
119
  v-if="rents.state.current.product"
48
- :key="rents.state.current.product._id"
120
+ :key="rents.state.current.product._id"
49
121
  :productId="rents.state.current.product._id"
50
122
  :variantId="rents.state.current.product.variant"
51
123
  :images="rents.state.current.product.images"
52
124
  :name="rents.state.current.product.name"
53
125
  :quantity="rents.state.current.product.quantity || 1"
54
126
  :unit="rents.state.current.product.unit"
55
- :dates="rents.state.current.product.date"
127
+ :dates="{
128
+ start: rents.state.current.startDate,
129
+ end: rents.state.current.endDate
130
+ }"
56
131
  :listing="rents.state.current.product.listing"
57
132
  :price="rents.state.current.product.price"
58
- :editable="false"
133
+ :editable="false"
59
134
  @click="() => rents.state.current.product = null"
60
135
  class="mn-b-small radius-medium bg-white pd-small"
61
136
  />
@@ -68,9 +143,28 @@
68
143
  <Block>
69
144
  <section class="gap-thin flex-v-center flex-nojustify flex">
70
145
  <h3 class="mn-r-auto">Total Days: {{ totalDays }}</h3>
71
- <a @click="onSubmit" class="bg-main button">Save</a>
72
- <a @click="onReset" class="t-white bg-second button">Reset</a>
73
- <a v-if="route.params._id" @click="onDelete" class="t-white bg-red button">Delete</a>
146
+
147
+ <Button
148
+ :submit="onSubmit"
149
+ class="pd-small radius-medium bg-main t-black uppercase t-medium"
150
+ >
151
+ Save
152
+ </Button>
153
+
154
+ <Button
155
+ :submit="onReset"
156
+ class="pd-small radius-medium t-white bg-second uppercase t-medium"
157
+ >
158
+ Reset
159
+ </Button>
160
+
161
+ <Button
162
+ v-if="route.params._id"
163
+ :submit="onDelete"
164
+ class="pd-small radius-medium t-white bg-red uppercase t-medium"
165
+ >
166
+ Delete
167
+ </Button>
74
168
  </section>
75
169
  </Block>
76
170
  </div>
@@ -78,6 +172,7 @@
78
172
 
79
173
  <script setup>
80
174
  import Block from '@martyrs/src/components/Block/Block.vue';
175
+ import Button from '@martyrs/src/components/Button/Button.vue';
81
176
  import Field from '@martyrs/src/components/Field/Field.vue';
82
177
  import Feed from '@martyrs/src/components/Feed/Feed.vue';
83
178
  import Popup from '@martyrs/src/components/Popup/Popup.vue';
@@ -86,15 +181,21 @@ import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrd
86
181
 
87
182
  import { computed, onMounted, ref } from 'vue';
88
183
  import { useRoute, useRouter } from 'vue-router';
184
+ import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';
185
+
89
186
  import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';
90
187
  import * as rents from '@martyrs/src/modules/rents/views/store/rents.store';
91
188
  import * as products from '@martyrs/src/modules/products/store/products.js';
189
+ import variants from '@martyrs/src/modules/products/store/variants.store.js';
92
190
 
93
191
  const route = useRoute();
94
192
  const router = useRouter();
193
+ const { formatPrice } = useGlobalMixins();
95
194
 
96
195
  const Products = ref(products.state.all);
97
196
  const isOpenProductsPopup = ref(false);
197
+ const isVariantsPopupOpen = ref(false);
198
+ const selectedProduct = ref({});
98
199
 
99
200
  const totalDays = computed(() => {
100
201
  const start = new Date(rents.state.current.startDate);
@@ -104,12 +205,60 @@ const totalDays = computed(() => {
104
205
  return Math.ceil(diffTime / (1000 * 60 * 60 * 24));
105
206
  });
106
207
 
107
- function openProductsPopup() { isOpenProductsPopup.value = true; }
108
- function closeProductsPopup() { isOpenProductsPopup.value = false; }
208
+ function openProductsPopup() {
209
+ isOpenProductsPopup.value = true;
210
+ }
211
+
212
+ function closeProductsPopup() {
213
+ isOpenProductsPopup.value = false;
214
+ }
109
215
 
110
- function addProduct(product) {
111
- rents.state.current.product = product
216
+ function closeVariantsPopup() {
217
+ isVariantsPopupOpen.value = false;
218
+ selectedProduct.value = {};
219
+ }
220
+
221
+ function selectProduct(product) {
222
+ selectedProduct.value = product;
112
223
  closeProductsPopup();
224
+
225
+ // If product has only one variant, add it directly without showing popup
226
+ if (product.variants && product.variants.length === 1) {
227
+ addVariantToRent(product.variants[0]);
228
+ return;
229
+ }
230
+
231
+ // If product has multiple variants or no variants defined, show popup
232
+ isVariantsPopupOpen.value = true;
233
+ }
234
+
235
+ function formatProductName(product, variant) {
236
+ if (!variant || product.variants?.length === 1 && !(variant.attributes?.length))
237
+ return product.name;
238
+
239
+ const attrs = variant.attributes?.map(a => a.value).filter(Boolean);
240
+ if (attrs?.length) {
241
+ return `${product.name} / ${attrs.join(' / ')}`;
242
+ }
243
+
244
+ // Если variant.name уже содержит product.name, не дублируем
245
+ return variant.name || product.name;
246
+ }
247
+
248
+ function addVariantToRent(variant) {
249
+ // Create product object with variant information
250
+ rents.state.current.product = {
251
+ _id: selectedProduct.value._id,
252
+ variant: variant._id,
253
+ name: formatProductName(selectedProduct.value, variant),
254
+ images: variant.images || selectedProduct.value.images || [],
255
+ price: variant.price || variant.cost || 0,
256
+ unit: variant.unit || 'pcs',
257
+ quantity: 1,
258
+ listing: 'rent'
259
+ };
260
+
261
+ closeVariantsPopup();
113
262
  }
114
263
 
115
264
  function updateItem(index, updatedItem) {
@@ -132,7 +281,7 @@ onMounted(async () => {
132
281
  rents.mutations.clean();
133
282
  }
134
283
 
135
- await products.actions.read({ organization: route.params._id, listing: 'rent', limit: 100 });
284
+ await products.actions.read({ owner: route.params._id, listing: 'rent', limit: 100 });
136
285
  Products.value = products.state.all;
137
286
  } catch (error) {
138
287
  console.error('Ошибка при загрузке данных:', error);
@@ -142,22 +291,32 @@ onMounted(async () => {
142
291
  async function onSubmit() {
143
292
  try {
144
293
  if (route.params.rent) {
145
- let newProduct = rents.state.current
146
- newProduct.product = rents.state.current.product._id
147
- newProduct.startDate = new Date(rents.state.current.startDate);
148
- newProduct.endDate = new Date(rents.state.current.endDate);
149
- await rents.actions.update(newProduct);
294
+ // Update existing rent
295
+ const rentData = {
296
+ _id: rents.state.current._id,
297
+ product: rents.state.current.product._id,
298
+ variant: rents.state.current.product.variant,
299
+ startDate: new Date(rents.state.current.startDate),
300
+ endDate: new Date(rents.state.current.endDate),
301
+ comment: rents.state.current.comment,
302
+ status: rents.state.current.status
303
+ };
304
+ await rents.actions.update(rentData);
150
305
  } else {
151
- rents.state.current.creator = { type: 'user', target: auth.state.user._id };
152
- rents.state.current.owner = { type: 'organization', target: route.params._id };
153
- rents.state.current.owner = { type: 'organization', target: route.params._id };
154
- let newProduct = rents.state.current
155
- newProduct.product = rents.state.current.product._id
156
- newProduct.startDate = new Date(rents.state.current.startDate);
157
- newProduct.endDate = new Date(rents.state.current.endDate);
158
- await rents.actions.create(newProduct);
306
+ // Create new rent - БЕЗ _id!
307
+ const rentData = {
308
+ product: rents.state.current.product._id,
309
+ variant: rents.state.current.product.variant,
310
+ startDate: new Date(rents.state.current.startDate),
311
+ endDate: new Date(rents.state.current.endDate),
312
+ comment: rents.state.current.comment || '',
313
+ status: rents.state.current.status || 'active',
314
+ creator: { type: 'user', target: auth.state.user._id },
315
+ owner: { type: 'organization', target: route.params._id }
316
+ };
317
+ await rents.actions.create(rentData);
159
318
  }
160
- // router.push({ name: 'Rents', params: { _id: route.params._id } });
319
+ router.push({ name: 'Rents', params: { _id: route.params._id } });
161
320
  } catch (error) {
162
321
  console.error('Ошибка при отправке данных:', error);
163
322
  }
@@ -495,7 +495,7 @@ onMounted(async () => {
495
495
 
496
496
  // Add click listener to the marker
497
497
  marker.addListener('click', () => {
498
- router.push({name: 'Organization', params: {_id: org._id}});
498
+ router.push('/organizations/' + org._id);
499
499
  });
500
500
 
501
501
  return marker;
@@ -568,7 +568,7 @@ const searchInCurrentLocation = async () => {
568
568
 
569
569
  // Add click listener to the marker
570
570
  marker.addListener('click', () => {
571
- router.push({ name: 'Organization', params: { _id: org._id } });
571
+ router.push('/organizations/' + org._id);
572
572
  });
573
573
 
574
574
  return marker;
@@ -406,12 +406,12 @@ $order: (
406
406
  );
407
407
 
408
408
  $cols: (
409
- '1': 1fr,
410
- '2': 1fr 1fr,
411
- '3': 1fr 1fr 1fr,
412
- '4': 1fr 1fr 1fr 1fr,
413
- '5': 1fr 1fr 1fr 1fr 1fr,
414
- '6': 1fr 1fr 1fr 1fr 1fr 1fr,
409
+ '1': minmax(0, 1fr),
410
+ '2': minmax(0, 1fr) minmax(0, 1fr),
411
+ '3': minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr),
412
+ '4': minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr),
413
+ '5': minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr),
414
+ '6': minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr),
415
415
  );
416
416
 
417
417
  body {