@ozdao/martyrs 0.2.601 → 0.2.603

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 (717) hide show
  1. package/dist/{abac-BPl9Bmf9.js → abac-Blt8bUTL.js} +3 -3
  2. package/dist/{addUserStatusFields-Cc-JpmPo.js → addUserStatusFields-CjV_sbh7.js} +2 -2
  3. package/dist/auth.server.js +57 -2
  4. package/dist/builder.js +148 -85
  5. package/dist/community.server.js +11 -11
  6. package/dist/core.server.js +2 -2
  7. package/dist/{core.verifier-gPPX_jhf.js → core.verifier-DVB2a21y.js} +6 -3
  8. package/dist/{crud-DpOXTZep.js → crud-BT5FIvQC.js} +2 -3
  9. package/dist/engagement.schema-B-Cc_NsG.js +6 -0
  10. package/dist/events.server.js +3 -3
  11. package/dist/gallery.server.js +1 -1
  12. package/dist/governance.server.js +1632 -0
  13. package/dist/icons.server.js +267 -0
  14. package/dist/inventory.server.js +6 -6
  15. package/dist/martyrs/dist/martyrs.es3.js +116 -0
  16. package/dist/martyrs/dist/martyrs.es3.js.map +1 -0
  17. package/dist/martyrs/dist/martyrs.es39.js +124 -0
  18. package/dist/martyrs/dist/martyrs.es39.js.map +1 -0
  19. package/dist/martyrs/dist/martyrs.es43.js +30 -0
  20. package/dist/martyrs/dist/martyrs.es43.js.map +1 -0
  21. package/dist/martyrs/dist/martyrs.es44.js +28 -0
  22. package/dist/martyrs/dist/martyrs.es44.js.map +1 -0
  23. package/dist/martyrs/dist/martyrs.es46.js +10 -0
  24. package/dist/martyrs/dist/martyrs.es46.js.map +1 -0
  25. package/dist/martyrs/src/components/Address/{Address.vue.js → Address.vue2.js} +2 -2
  26. package/dist/martyrs/src/components/Address/Address.vue2.js.map +1 -0
  27. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  28. package/dist/martyrs/src/components/Block/Block.vue.js.map +1 -1
  29. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +8 -5
  30. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  31. package/dist/martyrs/src/components/EditImages/{EditImages.vue2.js → EditImages.vue.js} +2 -2
  32. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -0
  33. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  34. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
  35. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue.js → LocationMarker.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  38. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  39. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  40. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  41. package/dist/martyrs/src/components/Tab/{Tab.vue2.js → Tab.vue.js} +2 -2
  42. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -0
  43. package/dist/martyrs/src/components/Table/StatusBadge.vue.js +19 -10
  44. package/dist/martyrs/src/components/Table/StatusBadge.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  46. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +2 -2
  48. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +3 -3
  49. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js.map +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +3 -3
  51. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +17 -21
  53. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +13 -13
  55. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  56. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +3 -3
  57. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +42 -4
  58. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +3 -3
  60. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +34 -66
  61. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  62. package/dist/martyrs/src/modules/auth/views/router/users.router.js +0 -53
  63. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  64. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +515 -103
  65. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  66. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +1 -3
  67. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
  68. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +1 -32
  69. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js.map +1 -1
  70. package/dist/martyrs/src/modules/community/community.client.js +49 -8
  71. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  72. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +10 -4
  73. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  74. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +4 -4
  75. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  77. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +28 -17
  79. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  80. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +36 -28
  81. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  82. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  83. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  84. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js +21 -0
  85. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js.map +1 -0
  86. package/dist/martyrs/src/modules/community/router/community.organization.router.js +70 -0
  87. package/dist/martyrs/src/modules/community/router/community.organization.router.js.map +1 -0
  88. package/dist/martyrs/src/modules/community/router/community.router.js +73 -0
  89. package/dist/martyrs/src/modules/community/router/community.router.js.map +1 -0
  90. package/dist/martyrs/src/modules/community/router/community.user.router.js +20 -0
  91. package/dist/martyrs/src/modules/community/router/community.user.router.js.map +1 -0
  92. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  93. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  94. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  95. package/dist/martyrs/src/modules/core/views/classes/core.app.js +5 -3
  96. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  97. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +7 -2
  98. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  99. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js +11 -5
  100. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js.map +1 -1
  101. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js +53 -18
  102. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js.map +1 -1
  103. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  104. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +44 -0
  105. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -0
  106. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +5 -5
  107. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  108. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +9 -6
  109. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
  111. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +15 -15
  113. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  114. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +2 -2
  115. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +27 -28
  116. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +6 -6
  118. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +5 -7
  119. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  120. package/dist/martyrs/src/modules/core/views/components/sections/{Filters.vue2.js → Filters.vue.js} +2 -2
  121. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue.js.map +1 -0
  122. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +28 -18
  123. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  124. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +3 -3
  125. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  126. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +2 -3
  127. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  128. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +10 -0
  129. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  130. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +4 -4
  131. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +2 -2
  132. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
  133. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
  134. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  135. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  136. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -0
  137. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +23 -33
  139. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  140. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +13 -13
  141. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +2 -2
  142. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/events/events.client.js +37 -15
  144. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  145. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js +95 -0
  146. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js.map +1 -0
  147. package/dist/martyrs/src/modules/events/router/events.organization.router.js +95 -0
  148. package/dist/martyrs/src/modules/events/router/events.organization.router.js.map +1 -0
  149. package/dist/martyrs/src/modules/events/router/events.router.js +73 -364
  150. package/dist/martyrs/src/modules/events/router/events.router.js.map +1 -1
  151. package/dist/martyrs/src/modules/events/router/events.user.router.js +65 -0
  152. package/dist/martyrs/src/modules/events/router/events.user.router.js.map +1 -0
  153. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +5 -5
  154. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js +33 -0
  155. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js.map +1 -0
  156. package/dist/martyrs/src/modules/governance/governance.client.js +31 -0
  157. package/dist/martyrs/src/modules/governance/governance.client.js.map +1 -0
  158. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +110 -0
  159. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -0
  160. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +105 -0
  161. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -0
  162. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +110 -0
  163. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -0
  164. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +106 -0
  165. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -0
  166. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js +52 -0
  167. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js.map +1 -0
  168. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js +684 -0
  169. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js.map +1 -0
  170. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js +78 -0
  171. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js.map +1 -0
  172. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js +328 -0
  173. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js.map +1 -0
  174. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +145 -0
  175. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -0
  176. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js +258 -0
  177. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js.map +1 -0
  178. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js +72 -0
  179. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js.map +1 -0
  180. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js +769 -0
  181. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js.map +1 -0
  182. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js +88 -0
  183. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js.map +1 -0
  184. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js +291 -0
  185. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js.map +1 -0
  186. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js +267 -0
  187. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js.map +1 -0
  188. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js +90 -0
  189. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js.map +1 -0
  190. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js +68 -0
  191. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js.map +1 -0
  192. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js +47 -0
  193. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js.map +1 -0
  194. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js +164 -0
  195. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js.map +1 -0
  196. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +39 -0
  197. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -0
  198. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js +112 -0
  199. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js.map +1 -0
  200. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js +187 -0
  201. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js.map +1 -0
  202. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js +555 -0
  203. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js.map +1 -0
  204. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +187 -0
  205. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -0
  206. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +171 -0
  207. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -0
  208. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js +179 -0
  209. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js.map +1 -0
  210. package/dist/martyrs/src/modules/governance/views/router/governance.router.js +502 -0
  211. package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -0
  212. package/dist/martyrs/src/modules/governance/views/store/initiatives.js +119 -0
  213. package/dist/martyrs/src/modules/governance/views/store/initiatives.js.map +1 -0
  214. package/dist/martyrs/src/modules/governance/views/store/sprints.js +99 -0
  215. package/dist/martyrs/src/modules/governance/views/store/sprints.js.map +1 -0
  216. package/dist/martyrs/src/modules/governance/views/store/tasks.js +115 -0
  217. package/dist/martyrs/src/modules/governance/views/store/tasks.js.map +1 -0
  218. package/dist/martyrs/src/modules/governance/views/store/votings.js +155 -0
  219. package/dist/martyrs/src/modules/governance/views/store/votings.js.map +1 -0
  220. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +70 -0
  221. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +1 -0
  222. package/dist/martyrs/src/modules/icons/icons.client.js +1 -1
  223. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  224. package/dist/martyrs/src/modules/icons/{icons.router.js → router/icons.router.js} +1 -1
  225. package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
  226. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +4 -4
  227. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +3 -3
  228. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
  229. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +4 -4
  230. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +6 -6
  231. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  232. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  233. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +9 -9
  234. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +4 -4
  235. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +2 -2
  236. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +4 -4
  237. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +7 -7
  238. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +4 -4
  239. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  240. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +3 -3
  241. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +4 -4
  242. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +4 -4
  243. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  244. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +9 -9
  245. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +13 -13
  246. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +9 -9
  247. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +9 -9
  248. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +16 -16
  249. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  250. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +2 -2
  251. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +4 -4
  252. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +10 -10
  253. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +6 -6
  254. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js +63 -0
  255. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js.map +1 -0
  256. package/dist/martyrs/src/modules/music/music.client.js +29 -25
  257. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  258. package/dist/martyrs/src/modules/music/{music.router.js → router/music.router.js} +16 -16
  259. package/dist/martyrs/src/modules/music/router/music.router.js.map +1 -0
  260. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +26 -27
  261. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  262. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +118 -59
  263. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  264. package/dist/martyrs/src/modules/notifications/notifications.client.js +74 -54
  265. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  266. package/dist/martyrs/src/modules/notifications/{notifications.router.js → router/notifications.router.js} +3 -3
  267. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -0
  268. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +34 -44
  269. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
  270. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +47 -57
  271. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
  272. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +2 -2
  273. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  274. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +2 -2
  275. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  276. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +4 -4
  277. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +6 -6
  278. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +7 -7
  280. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +61 -54
  281. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
  282. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +43 -31
  283. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
  284. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +14 -14
  285. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
  286. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +19 -19
  288. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  289. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +7 -10
  290. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +7 -10
  292. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -3
  294. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  295. package/dist/martyrs/src/modules/orders/orders.client.js +16 -16
  296. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  297. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +11 -4
  298. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  299. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +2 -2
  300. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +2 -2
  301. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +22 -15
  302. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  303. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  304. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +63 -1
  305. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  306. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +9 -3
  307. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  308. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +14 -8
  309. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  310. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +24 -30
  311. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  312. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  313. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  314. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  315. package/dist/martyrs/src/modules/organizations/organizations.client.js +42 -6
  316. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  317. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +20 -0
  318. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -0
  319. package/dist/martyrs/src/modules/organizations/router/organizations.router.js +102 -0
  320. package/dist/martyrs/src/modules/organizations/router/organizations.router.js.map +1 -0
  321. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js +20 -0
  322. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js.map +1 -0
  323. package/dist/martyrs/src/modules/pages/pages.client.js +1 -1
  324. package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
  325. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  326. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +3 -3
  327. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
  328. package/dist/martyrs/src/modules/pages/{pages.router.js → views/router/pages.router.js} +8 -8
  329. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -0
  330. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  331. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  332. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  333. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -7
  334. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  335. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +22 -22
  336. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +5 -5
  337. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  338. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +3 -3
  339. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +4 -4
  340. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +21 -21
  341. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +4 -4
  342. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +4 -4
  343. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +4 -4
  344. package/dist/martyrs/src/modules/rents/rents.client.js +1 -1
  345. package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
  346. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +7 -7
  347. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  348. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +4 -4
  349. package/dist/martyrs/src/modules/rents/{rents.router.js → views/router/rents.router.js} +4 -4
  350. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -0
  351. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +3 -3
  352. package/dist/martyrs/src/modules/reports/reports.client.js +1 -1
  353. package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
  354. package/dist/martyrs/src/modules/reports/{reports.router.js → router/reports.router.js} +1 -1
  355. package/dist/martyrs/src/modules/reports/router/reports.router.js.map +1 -0
  356. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  357. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +2 -2
  358. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +13 -13
  359. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +22 -22
  360. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +68 -0
  361. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -0
  362. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +48 -0
  363. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -0
  364. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +59 -0
  365. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -0
  366. package/dist/martyrs/src/modules/wallet/wallet.client.js +20 -0
  367. package/dist/martyrs/src/modules/wallet/wallet.client.js.map +1 -0
  368. package/dist/martyrs.es.js +84 -41
  369. package/dist/martyrs.es10.js +126 -0
  370. package/dist/martyrs.es100.js +33 -0
  371. package/dist/martyrs.es102.js +39 -0
  372. package/dist/martyrs.es103.js +31 -0
  373. package/dist/martyrs.es105.js +27 -0
  374. package/dist/martyrs.es106.js +8 -0
  375. package/dist/martyrs.es107.js +9 -0
  376. package/dist/martyrs.es108.js +79 -0
  377. package/dist/martyrs.es109.js +7 -0
  378. package/dist/martyrs.es11.js +49 -0
  379. package/dist/{web-n_ivHO3v.js → martyrs.es110.js} +1 -1
  380. package/dist/martyrs.es111.js +327 -0
  381. package/dist/martyrs.es112.js +121 -0
  382. package/dist/martyrs.es115.js +4 -0
  383. package/dist/martyrs.es116.js +25 -0
  384. package/dist/martyrs.es117.js +7 -0
  385. package/dist/martyrs.es118.js +10 -0
  386. package/dist/martyrs.es119.js +169 -0
  387. package/dist/martyrs.es12.js +94 -0
  388. package/dist/martyrs.es120.js +460 -0
  389. package/dist/martyrs.es121.js +42 -0
  390. package/dist/martyrs.es122.js +12 -0
  391. package/dist/martyrs.es123.js +52 -0
  392. package/dist/martyrs.es124.js +14 -0
  393. package/dist/martyrs.es125.js +47 -0
  394. package/dist/martyrs.es126.js +7 -0
  395. package/dist/martyrs.es127.js +131 -0
  396. package/dist/martyrs.es128.js +103 -0
  397. package/dist/martyrs.es129.js +89 -0
  398. package/dist/martyrs.es13.js +48 -0
  399. package/dist/martyrs.es130.js +40 -0
  400. package/dist/martyrs.es131.js +14 -0
  401. package/dist/martyrs.es132.js +42 -0
  402. package/dist/martyrs.es133.js +11 -0
  403. package/dist/martyrs.es134.js +6 -0
  404. package/dist/martyrs.es135.js +119 -0
  405. package/dist/martyrs.es136.js +20 -0
  406. package/dist/martyrs.es137.js +18 -0
  407. package/dist/martyrs.es138.js +35 -0
  408. package/dist/martyrs.es139.js +12 -0
  409. package/dist/martyrs.es14.js +101 -0
  410. package/dist/martyrs.es140.js +23 -0
  411. package/dist/martyrs.es141.js +12 -0
  412. package/dist/martyrs.es142.js +11 -0
  413. package/dist/martyrs.es143.js +47 -0
  414. package/dist/martyrs.es144.js +483 -0
  415. package/dist/martyrs.es145.js +8 -0
  416. package/dist/martyrs.es146.js +4 -0
  417. package/dist/martyrs.es147.js +14 -0
  418. package/dist/martyrs.es148.js +33 -0
  419. package/dist/martyrs.es149.js +19 -0
  420. package/dist/martyrs.es15.js +408 -0
  421. package/dist/martyrs.es150.js +22 -0
  422. package/dist/martyrs.es151.js +31 -0
  423. package/dist/martyrs.es152.js +23 -0
  424. package/dist/martyrs.es16.js +58 -0
  425. package/dist/martyrs.es17.js +44 -0
  426. package/dist/martyrs.es18.js +42 -0
  427. package/dist/martyrs.es19.js +27 -0
  428. package/dist/martyrs.es2.js +88 -0
  429. package/dist/martyrs.es20.js +13 -0
  430. package/dist/martyrs.es21.js +57 -0
  431. package/dist/martyrs.es22.js +104 -0
  432. package/dist/martyrs.es23.js +178 -0
  433. package/dist/martyrs.es24.js +123 -0
  434. package/dist/martyrs.es25.js +139 -0
  435. package/dist/martyrs.es26.js +21 -0
  436. package/dist/martyrs.es27.js +60 -0
  437. package/dist/martyrs.es28.js +75 -0
  438. package/dist/martyrs.es29.js +36 -0
  439. package/dist/martyrs.es3.js +116 -0
  440. package/dist/martyrs.es30.js +348 -0
  441. package/dist/martyrs.es31.js +83 -0
  442. package/dist/martyrs.es32.js +148 -0
  443. package/dist/martyrs.es33.js +175 -0
  444. package/dist/martyrs.es34.js +66 -0
  445. package/dist/martyrs.es35.js +57 -0
  446. package/dist/martyrs.es36.js +76 -0
  447. package/dist/martyrs.es37.js +101 -0
  448. package/dist/martyrs.es38.js +39 -0
  449. package/dist/martyrs.es39.js +124 -0
  450. package/dist/martyrs.es4.js +85 -0
  451. package/dist/martyrs.es40.js +120 -0
  452. package/dist/martyrs.es41.js +229 -0
  453. package/dist/martyrs.es43.js +29 -0
  454. package/dist/martyrs.es44.js +27 -0
  455. package/dist/martyrs.es46.js +9 -0
  456. package/dist/martyrs.es48.js +18 -0
  457. package/dist/martyrs.es5.js +395 -0
  458. package/dist/martyrs.es50.js +42 -0
  459. package/dist/martyrs.es52.js +255 -0
  460. package/dist/martyrs.es54.js +8 -0
  461. package/dist/martyrs.es6.js +70 -0
  462. package/dist/martyrs.es61.js +139 -0
  463. package/dist/martyrs.es65.js +28 -0
  464. package/dist/martyrs.es68.js +33 -0
  465. package/dist/martyrs.es69.js +37 -0
  466. package/dist/martyrs.es7.js +17 -0
  467. package/dist/martyrs.es71.js +114 -0
  468. package/dist/martyrs.es73.js +83 -0
  469. package/dist/martyrs.es74.js +52 -0
  470. package/dist/martyrs.es75.js +75 -0
  471. package/dist/martyrs.es76.js +176 -0
  472. package/dist/martyrs.es77.js +31 -0
  473. package/dist/martyrs.es78.js +38 -0
  474. package/dist/martyrs.es8.js +127 -0
  475. package/dist/martyrs.es81.js +32 -0
  476. package/dist/martyrs.es86.js +37 -0
  477. package/dist/martyrs.es89.js +37 -0
  478. package/dist/martyrs.es9.js +396 -0
  479. package/dist/martyrs.es91.js +63 -0
  480. package/dist/martyrs.es92.js +7 -0
  481. package/dist/martyrs.es93.js +35 -0
  482. package/dist/martyrs.es95.js +41 -0
  483. package/dist/martyrs.es96.js +59 -0
  484. package/dist/martyrs.es97.js +123 -0
  485. package/dist/martyrs.es98.js +43 -0
  486. package/dist/martyrs.es99.js +86 -0
  487. package/dist/music.server.js +11 -11
  488. package/dist/notifications.server.js +16 -6
  489. package/dist/orders.server.js +264 -145
  490. package/dist/organizations.server.js +22 -6
  491. package/dist/products.server.js +7 -7
  492. package/dist/rents.server.js +4 -3
  493. package/dist/style.css +970 -986
  494. package/package.json +13 -6
  495. package/src/builder/modes/ssr.rspack.dev.js +32 -20
  496. package/src/builder/rspack/rspack.config.api.js +3 -0
  497. package/src/builder/rspack/rspack.config.base.js +9 -1
  498. package/src/builder/rspack/rspack.config.ssr.client.js +27 -10
  499. package/src/components/Block/Block.vue +1 -1
  500. package/src/components/Button/Button.vue +4 -4
  501. package/src/components/Table/StatusBadge.vue +24 -18
  502. package/src/components/Text/Text.vue +1 -1
  503. package/src/jit/core.js +72 -35
  504. package/src/jit/plugin.js +4 -3
  505. package/src/jit/rules.js +15 -15
  506. package/src/modules/TASKS.MD +30 -0
  507. package/src/modules/TASK_ACTIVITY.md +60 -0
  508. package/src/modules/TASK_MODULE_ARCH.md +391 -0
  509. package/src/modules/auth/controllers/routes/users.routes.js +8 -0
  510. package/src/modules/auth/controllers/services/users.service.js +51 -1
  511. package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
  512. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +25 -24
  513. package/src/modules/auth/views/components/pages/SignIn.vue +10 -1
  514. package/src/modules/auth/views/components/pages/UserDashboard.vue +35 -62
  515. package/src/modules/auth/views/router/users.router.js +0 -44
  516. package/src/modules/backoffice/components/pages/Dashboard.vue +423 -120
  517. package/src/modules/backoffice/configs/navigation.backoffice.config.js +0 -2
  518. package/src/modules/backoffice/router/backoffice.router.js +0 -25
  519. package/src/modules/community/community.client.js +54 -9
  520. package/src/modules/community/components/blocks/CardBlogpost.vue +10 -3
  521. package/src/modules/community/components/layouts/Community.vue +3 -3
  522. package/src/modules/community/components/pages/BlogPost.vue +1 -1
  523. package/src/modules/community/components/pages/CreateBlogPost.vue +19 -20
  524. package/src/modules/community/components/pages/Posts.vue +43 -28
  525. package/src/modules/community/components/sections/Comment.vue +1 -1
  526. package/src/modules/community/controllers/blog.controller.js +4 -5
  527. package/src/modules/community/models/reaction.model.js +1 -0
  528. package/src/modules/community/router/community.backoffice.router.js +16 -0
  529. package/src/modules/community/router/community.organization.router.js +56 -0
  530. package/src/modules/community/router/community.router.js +58 -106
  531. package/src/modules/community/router/community.user.router.js +15 -0
  532. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  533. package/src/modules/constructor/components/sections/Constructor.vue +1 -1
  534. package/src/modules/core/controllers/classes/core.validator.js +7 -1
  535. package/src/modules/core/controllers/classes/core.verifier.js +0 -2
  536. package/src/modules/core/controllers/classes/crud/crud.controller.js +0 -4
  537. package/src/modules/core/controllers/classes/crud/crud.service.js +1 -0
  538. package/src/modules/core/models/schemas/engagement.schema.js +19 -22
  539. package/src/modules/core/views/classes/core.app.js +6 -4
  540. package/src/modules/core/views/classes/i18n.manager.js +9 -2
  541. package/src/modules/core/views/classes/ws.manager.js +17 -7
  542. package/src/modules/core/views/components/blocks/Card.vue +47 -24
  543. package/src/modules/core/views/components/blocks/CardStat.vue +27 -0
  544. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  545. package/src/modules/core/views/components/layouts/Client.vue +5 -4
  546. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
  547. package/src/modules/core/views/components/partials/Header.vue +2 -2
  548. package/src/modules/core/views/components/partials/Navigation.vue +13 -14
  549. package/src/modules/core/views/components/partials/Sidebar.vue +4 -6
  550. package/src/modules/core/views/components/sections/SectionPageTitle.vue +23 -15
  551. package/src/modules/core/views/mixins/mixins.js +4 -3
  552. package/src/modules/core/views/router/addRoutes.js +1 -2
  553. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  554. package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
  555. package/src/modules/events/components/pages/Events.vue +1 -0
  556. package/src/modules/events/components/pages/EventsBackoffice.vue +23 -48
  557. package/src/modules/events/components/sections/List.vue +2 -2
  558. package/src/modules/events/events.client.js +44 -17
  559. package/src/modules/events/router/events.backoffice.router.js +80 -0
  560. package/src/modules/events/router/events.organization.router.js +80 -0
  561. package/src/modules/events/router/events.router.js +55 -325
  562. package/src/modules/events/router/events.user.router.js +49 -0
  563. package/src/modules/governance/TASK-TRACKER.MD +534 -39
  564. package/src/modules/governance/configs/navigation.initiative.config.js +30 -0
  565. package/src/modules/governance/controllers/routes/initiatives.routes.js +55 -8
  566. package/src/modules/governance/controllers/routes/{milestones.routes.js → sprints.routes.js} +22 -22
  567. package/src/modules/governance/controllers/routes/tasks.routes.js +2 -2
  568. package/src/modules/governance/governance.client.js +1 -4
  569. package/src/modules/governance/governance.server.js +6 -6
  570. package/src/modules/governance/middlewares/initiatives.verifier.js +60 -0
  571. package/src/modules/governance/middlewares/{milestones.verifier.js → sprints.verifier.js} +10 -10
  572. package/src/modules/governance/middlewares/tasks.verifier.js +4 -4
  573. package/src/modules/governance/middlewares/votings.verifier.js +25 -7
  574. package/src/modules/governance/models/{milestone.model.js → sprint.model.js} +11 -11
  575. package/src/modules/governance/models/task.model.js +4 -4
  576. package/src/modules/governance/models/voting.model.js +10 -5
  577. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +8 -13
  578. package/src/modules/governance/views/components/blocks/{CardMilestoneItem.vue → CardSprintItem.vue} +16 -17
  579. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +7 -9
  580. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +7 -9
  581. package/src/modules/governance/views/components/pages/Governance.vue +13 -34
  582. package/src/modules/governance/views/components/pages/Initiative.vue +73 -154
  583. package/src/modules/governance/views/components/pages/InitiativeCreate.vue +44 -7
  584. package/src/modules/governance/views/components/pages/{Roadmap.vue → InitiativeSprints.vue} +70 -69
  585. package/src/modules/governance/views/components/pages/Initiatives.vue +23 -108
  586. package/src/modules/governance/views/components/pages/{Milestone.vue → Sprint.vue} +43 -41
  587. package/src/modules/governance/views/components/pages/SprintCreate.vue +55 -0
  588. package/src/modules/governance/views/components/pages/Task.vue +95 -88
  589. package/src/modules/governance/views/components/pages/TaskCreate.vue +47 -9
  590. package/src/modules/governance/views/components/pages/Tasks.vue +25 -21
  591. package/src/modules/governance/views/components/pages/Voting.vue +84 -68
  592. package/src/modules/governance/views/components/pages/VotingCreate.vue +48 -8
  593. package/src/modules/governance/views/components/pages/Votings.vue +12 -57
  594. package/src/modules/governance/views/components/partials/EmptyState.vue +1 -1
  595. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +23 -11
  596. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
  597. package/src/modules/governance/views/components/partials/VoteForm.vue +3 -3
  598. package/src/modules/governance/views/components/partials/VotingResults.vue +13 -19
  599. package/src/modules/governance/views/components/sections/FormInitiativeDetails.vue +413 -15
  600. package/src/modules/governance/views/components/sections/FormSprintDetails.vue +156 -0
  601. package/src/modules/governance/views/components/sections/FormTaskDetails.vue +125 -21
  602. package/src/modules/governance/views/components/sections/FormVotingDetails.vue +136 -17
  603. package/src/modules/governance/views/components/sections/VoteForm.vue +2 -2
  604. package/src/modules/governance/views/router/governance.router.js +255 -151
  605. package/src/modules/governance/views/store/initiatives.js +23 -2
  606. package/src/modules/governance/views/store/sprints.js +102 -0
  607. package/src/modules/governance/views/store/tasks.js +25 -9
  608. package/src/modules/governance/views/store/votings.js +106 -27
  609. package/src/modules/icons/icons.client.js +1 -1
  610. package/src/modules/inventory/components/pages/InventoryEdit.vue +1 -1
  611. package/src/modules/music/components/sections/PopularTracks.vue +52 -0
  612. package/src/modules/music/music.client.js +8 -1
  613. package/src/modules/music/router/music.router.js +13 -1
  614. package/src/modules/notifications/components/elements/NotificationBadge.vue +8 -33
  615. package/src/modules/notifications/components/sections/NotificationPreferences.vue +110 -48
  616. package/src/modules/notifications/notifications.client.js +78 -57
  617. package/src/modules/notifications/router/notifications.router.js +32 -15
  618. package/src/modules/notifications/services/notification.service.js +15 -6
  619. package/src/modules/notifications/services/web-push.service.js +2 -0
  620. package/src/modules/orders/components/blocks/CardApplication.vue +20 -40
  621. package/src/modules/orders/components/blocks/CardCustomer.vue +35 -55
  622. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -2
  623. package/src/modules/orders/components/blocks/CardOrderUser.vue +2 -2
  624. package/src/modules/orders/components/forms/FormCustomerDetails.vue +2 -2
  625. package/src/modules/orders/components/pages/Applications.vue +59 -57
  626. package/src/modules/orders/components/pages/Customers.vue +40 -27
  627. package/src/modules/orders/components/pages/OrderCreate.vue +1 -1
  628. package/src/modules/orders/components/sections/ApplicationDetails.vue +1 -4
  629. package/src/modules/orders/components/sections/CustomerDetails.vue +1 -4
  630. package/src/modules/orders/controllers/orders.controller.js +113 -0
  631. package/src/modules/orders/middlewares/applications.verifier.js +13 -37
  632. package/src/modules/orders/middlewares/customers.verifier.js +44 -121
  633. package/src/modules/orders/models/customer.model.js +0 -1
  634. package/src/modules/orders/routes/applications.routes.js +108 -50
  635. package/src/modules/orders/routes/orders.routes.js +9 -1
  636. package/src/modules/organizations/components/blocks/CardOrganization.vue +12 -4
  637. package/src/modules/organizations/components/forms/DepartmentForm.vue +9 -4
  638. package/src/modules/organizations/components/pages/Members.vue +62 -1
  639. package/src/modules/organizations/components/pages/Organization.new.vue +17 -17
  640. package/src/modules/organizations/components/pages/Organization.vue +8 -1
  641. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +1 -1
  642. package/src/modules/organizations/components/pages/OrganizationEdit.vue +11 -4
  643. package/src/modules/organizations/components/pages/Organizations.vue +33 -46
  644. package/src/modules/organizations/controllers/invites.controller.js +19 -0
  645. package/src/modules/organizations/controllers/memberships.controller.js +1 -0
  646. package/src/modules/organizations/organizations.client.js +48 -7
  647. package/src/modules/organizations/router/organizations.backoffice.router.js +15 -0
  648. package/src/modules/organizations/router/organizations.router.js +72 -112
  649. package/src/modules/organizations/router/organizations.user.router.js +15 -0
  650. package/src/modules/pages/pages.client.js +1 -1
  651. package/src/modules/pages/views/router/pages.router.js +95 -15
  652. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  653. package/src/modules/products/components/pages/Products.vue +3 -3
  654. package/src/modules/rents/controllers/services/rents.services.js +1 -0
  655. package/src/modules/rents/rents.client.js +1 -1
  656. package/src/modules/rents/views/router/rents.router.js +93 -33
  657. package/src/modules/reports/reports.client.js +1 -1
  658. package/src/modules/wallet/wallet.client.js +1 -1
  659. package/src/styles/theme.scss +5 -3
  660. package/dist/engagement.schema-fh6W1fb_.js +0 -24
  661. package/dist/main-DQm5pwFO.js +0 -8213
  662. package/dist/martyrs/dist/main-DQm5pwFO.js +0 -1080
  663. package/dist/martyrs/dist/main-DQm5pwFO.js.map +0 -1
  664. package/dist/martyrs/dist/web-n_ivHO3v.js +0 -55
  665. package/dist/martyrs/dist/web-n_ivHO3v.js.map +0 -1
  666. package/dist/martyrs/src/components/Address/Address.vue.js.map +0 -1
  667. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  668. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +0 -1
  669. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +0 -1
  670. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  671. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  672. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +0 -1
  673. package/dist/martyrs/src/modules/community/community.router.js +0 -124
  674. package/dist/martyrs/src/modules/community/community.router.js.map +0 -1
  675. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +0 -1
  676. package/dist/martyrs/src/modules/icons/icons.router.js.map +0 -1
  677. package/dist/martyrs/src/modules/music/music.router.js.map +0 -1
  678. package/dist/martyrs/src/modules/notifications/notifications.router.js.map +0 -1
  679. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +0 -200
  680. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +0 -1
  681. package/dist/martyrs/src/modules/organizations/organizations.router.js +0 -145
  682. package/dist/martyrs/src/modules/organizations/organizations.router.js.map +0 -1
  683. package/dist/martyrs/src/modules/pages/pages.router.js.map +0 -1
  684. package/dist/martyrs/src/modules/rents/rents.router.js.map +0 -1
  685. package/dist/martyrs/src/modules/reports/reports.router.js.map +0 -1
  686. package/dist/martyrs.css +0 -1
  687. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/index.js +0 -8
  688. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/index.js.map +0 -1
  689. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/web.js +0 -146
  690. package/dist/node_modules/.pnpm/@capacitor_device@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/device/dist/esm/web.js.map +0 -1
  691. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -18
  692. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +0 -1
  693. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/index.js +0 -9
  694. package/dist/node_modules/.pnpm/@capacitor_keyboard@7.0.1_@capacitor_core@7.4.4/node_modules/@capacitor/keyboard/dist/esm/index.js.map +0 -1
  695. package/dist/node_modules/.pnpm/@capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4/node_modules/@capacitor/push-notifications/dist/esm/index.js +0 -6
  696. package/dist/node_modules/.pnpm/@capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +0 -1
  697. package/src/jit/.claude/settings.local.json +0 -10
  698. package/src/modules/community/community.router.js +0 -107
  699. package/src/modules/governance/governance.router.js +0 -350
  700. package/src/modules/governance/seed-governance.js +0 -348
  701. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +0 -159
  702. package/src/modules/governance/views/router/goverance.router.js +0 -290
  703. package/src/modules/governance/views/store/votes.js +0 -113
  704. package/src/modules/icons/icons.router.js +0 -29
  705. package/src/modules/marketplace/marketplace.router.js +0 -66
  706. package/src/modules/music/.claude/settings.local.json +0 -8
  707. package/src/modules/music/music.router.js +0 -188
  708. package/src/modules/notifications/notifications.router.js +0 -47
  709. package/src/modules/orders/orders.router.js +0 -255
  710. package/src/modules/organizations/organizations.router.js +0 -123
  711. package/src/modules/organizations/router/backoffice.router.js +0 -27
  712. package/src/modules/organizations/router/departments.router.js +0 -15
  713. package/src/modules/organizations/router/members.router.js +0 -20
  714. package/src/modules/pages/pages.router.js +0 -107
  715. package/src/modules/rents/rents.router.js +0 -115
  716. package/src/modules/reports/reports.router.js +0 -33
  717. package/src/modules/wallet/wallet.router.js +0 -45
@@ -1,7 +1,7 @@
1
- import layoutEmpty from "../core/views/components/layouts/Empty.vue.js";
2
- import Navigation from "../core/views/components/partials/Navigation.vue.js";
3
- import { navigationItems } from "../backoffice/configs/navigation.backoffice.config.js";
4
- import _sfc_main from "./views/components/partials/SidebarPages.vue.js";
1
+ import layoutEmpty from "../../../core/views/components/layouts/Empty.vue.js";
2
+ import Navigation from "../../../core/views/components/partials/Navigation.vue.js";
3
+ import { navigationItems } from "../../../backoffice/configs/navigation.backoffice.config.js";
4
+ import _sfc_main from "../components/partials/SidebarPages.vue.js";
5
5
  function createPublicRoutes(options = {}) {
6
6
  return [
7
7
  {
@@ -15,7 +15,7 @@ function createPublicRoutes(options = {}) {
15
15
  },
16
16
  component: () => import(
17
17
  /* webpackChunkName: 'Page' */
18
- "./views/components/pages/Page.vue.js"
18
+ "../components/pages/Page.vue.js"
19
19
  )
20
20
  }
21
21
  ];
@@ -27,7 +27,7 @@ function createBackofficeRoutes(options = {}) {
27
27
  name: "Pages",
28
28
  component: () => import(
29
29
  /* webpackChunkName: 'Pages' */
30
- "./views/components/pages/Pages.vue.js"
30
+ "../components/pages/Pages.vue.js"
31
31
  )
32
32
  },
33
33
  {
@@ -41,7 +41,7 @@ function createBackofficeRoutes(options = {}) {
41
41
  },
42
42
  component: () => import(
43
43
  /* webpackChunkName: 'Pages' */
44
- "./views/components/pages/PageEdit.vue.js"
44
+ "../components/pages/PageEdit.vue.js"
45
45
  )
46
46
  },
47
47
  {
@@ -55,7 +55,7 @@ function createBackofficeRoutes(options = {}) {
55
55
  },
56
56
  component: () => import(
57
57
  /* webpackChunkName: 'Pages' */
58
- "./views/components/pages/PageEdit.vue.js"
58
+ "../components/pages/PageEdit.vue.js"
59
59
  )
60
60
  }
61
61
  ];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.router.js","sources":["../../../../../../../src/modules/pages/views/router/pages.router.js"],"sourcesContent":["import layoutEmpty from '@martyrs/src/modules/core/views/components/layouts/Empty.vue';\nimport Navigation from '@martyrs/src/modules/core/views/components/partials/Navigation.vue';\nimport { navigationItems } from '@martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js';\nimport SidebarPages from '../components/partials/SidebarPages.vue';\n\nfunction createPublicRoutes(options = {}) {\n return [\n {\n path: ':url+',\n name: options.publicRouteName || 'Page',\n meta: {\n title: {\n en: 'Page',\n ru: 'Страница',\n },\n },\n component: () => import(\n /* webpackChunkName: 'Page' */\n '../components/pages/Page.vue'\n ),\n },\n ];\n}\n\nfunction createBackofficeRoutes(options = {}) {\n return [\n {\n path: '',\n name: 'Pages',\n component: () => import(\n /* webpackChunkName: 'Pages' */\n '../components/pages/Pages.vue'\n ),\n },\n {\n path: 'add',\n name: 'Pages Add',\n meta: {\n title: {\n en: 'New Page',\n },\n sidebar: SidebarPages,\n },\n component: () => import(\n /* webpackChunkName: 'Pages' */\n '../components/pages/PageEdit.vue'\n ),\n },\n {\n path: ':url+',\n name: 'Pages Edit',\n meta: {\n title: {\n en: 'Edit Page',\n },\n sidebar: SidebarPages,\n },\n component: () => import(\n /* webpackChunkName: 'Pages' */\n '../components/pages/PageEdit.vue'\n ),\n },\n ];\n}\n\nexport function getRoutes(options = {}) {\n const routes = [];\n const routeHome = options.route?.home || options.routeHome || 'Home';\n const routeBackoffice = options.route?.backoffice || options.routeBackoffice || 'Backoffice Root';\n\n routes.push({\n parentName: routeHome,\n config: {\n basePath: options.publicBasePath || 'pages',\n component: options.publicLayout || layoutEmpty,\n meta: {\n title: {\n en: 'Pages',\n ru: 'Информация',\n },\n },\n routes: createPublicRoutes(options),\n },\n });\n\n if (!options.withBackoffice) {\n routes.push({\n parentName: routeBackoffice,\n config: {\n basePath: options.backofficeBasePath || 'pages',\n routeNamePrefix: options.backofficeRouteNamePrefix || 'Backoffice ',\n meta: {\n title: {\n en: 'Pages',\n },\n sidebar_navigation: Navigation,\n sidebar_navigation_items: navigationItems,\n },\n routes: createBackofficeRoutes(options),\n },\n });\n }\n\n return routes;\n}\n\nexport default { getRoutes };\n"],"names":["SidebarPages"],"mappings":";;;;AAKA,SAAS,mBAAmB,UAAU,IAAI;AACxC,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM,QAAQ,mBAAmB;AAAA,MACjC,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACd;AAAA,MACA;AAAA,MACM,WAAW,MAAM;AAAA;AAAA,QAEf;AAAA,MACR;AAAA,IACA;AAAA,EACA;AACA;AAEA,SAAS,uBAAuB,UAAU,IAAI;AAC5C,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,MAAM;AAAA;AAAA,QAEf;AAAA,MACR;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,QACd;AAAA,QACQ,SAASA;AAAAA,MACjB;AAAA,MACM,WAAW,MAAM;AAAA;AAAA,QAEf;AAAA,MACR;AAAA,IACA;AAAA,IACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,QACd;AAAA,QACQ,SAASA;AAAAA,MACjB;AAAA,MACM,WAAW,MAAM;AAAA;AAAA,QAEf;AAAA,MACR;AAAA,IACA;AAAA,EACA;AACA;AAEO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,SAAS,CAAA;AACf,QAAM,YAAY,QAAQ,OAAO,QAAQ,QAAQ,aAAa;AAC9D,QAAM,kBAAkB,QAAQ,OAAO,cAAc,QAAQ,mBAAmB;AAEhF,SAAO,KAAK;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,UAAU,QAAQ,kBAAkB;AAAA,MACpC,WAAW,QAAQ,gBAAgB;AAAA,MACnC,MAAM;AAAA,QACJ,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,IAAI;AAAA,QACd;AAAA,MACA;AAAA,MACM,QAAQ,mBAAmB,OAAO;AAAA,IACxC;AAAA,EACA,CAAG;AAED,MAAI,CAAC,QAAQ,gBAAgB;AAC3B,WAAO,KAAK;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,QACN,UAAU,QAAQ,sBAAsB;AAAA,QACxC,iBAAiB,QAAQ,6BAA6B;AAAA,QACtD,MAAM;AAAA,UACJ,OAAO;AAAA,YACL,IAAI;AAAA,UAChB;AAAA,UACU,oBAAoB;AAAA,UACpB,0BAA0B;AAAA,QACpC;AAAA,QACQ,QAAQ,uBAAuB,OAAO;AAAA,MAC9C;AAAA,IACA,CAAK;AAAA,EACH;AAEA,SAAO;AACT;"}
@@ -71,7 +71,7 @@ const _sfc_main = {
71
71
  createElementVNode("div", _hoisted_6, [
72
72
  __props.title ? (openBlock(), createElementBlock("span", {
73
73
  key: 0,
74
- class: normalizeClass([__props.title_class, "t-grey d-inline-block fw-demi"])
74
+ class: normalizeClass([__props.title_class, "t-dark d-inline-block fw-demi"])
75
75
  }, toDisplayString(__props.title), 3)) : createCommentVNode("", true),
76
76
  __props.subtitle ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)
77
77
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"CardPosition.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardPosition.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-small pd-small flex-nowrap flex-v-center flex gap-thin\">\n <!-- Thumbnail image -->\n <div v-if=\"showThumbnail\" class=\"aspect-1x1 h-3r flex-child-default radius-small o-hidden\">\n <img\n v-if=\"image && image.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + image\"\n alt=\"Item image\"\n class=\"w-100 h-100 object-fit-cover\"\n />\n <PlaceholderImage v-else class=\"w-100 h-100\" />\n </div>\n \n <!-- Item details -->\n <div class=\"mn-micro-negative flex flex-column w-100 o-hidden\">\n <p class=\"w-100 pd-micro truncate trimmed capitalize fw-medium\">{{ name || 'Unnamed Product' }}</p>\n \n <div class=\"flex pd-micro flex-v-center gap-micro w-max \">\n \t<span v-if=\"title\" :class=\"title_class\" class=\"t-grey d-inline-block fw-demi\">{{title}}</span>\n \t<span v-if=\"subtitle\" class=\"t-transp p-small d-inline-block fw-medium\">{{ subtitle }}</span>\n </div>\n \t<slot></slot>\n </div>\n <!-- <p>\n \n\n <span class=\"p-small t-transp\">\n <template v-if=\"product.quantity\">{{returnCurrency() }}{{product.price}} </template>\n × \n <template v-if=\"product.listing === 'rent' && rentDates.start && rentDates.end\">\n {{ rentalDays }} days\n </template>\n \n <template v-else>\n {{ product.quantity || 0 }} {{ product.unit || 'pcs' }}\n </template>\n </span>\n </p> -->\n \n <!-- Actions -->\n <div class=\"flex gap-thin\">\n <template v-for=\"(action, index) in actions\" :key=\"index\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 cursor-pointer hover:scale-[1.05]\"\n @click=\"() => action.handler(item, index)\"\n >\n <component\n :is=\"action.component\"\n class=\"i-medium\"\n />\n </div>\n </template>\n <slot name=\"actions\"></slot>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { defineProps } from 'vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nconst { formatPrice } = useGlobalMixins();\n\nconst props = defineProps({\n\timage: {\n type: String,\n },\n name: {\n type: String,\n },\n title: {\n type: String,\n },\n title_class: {\n \ttype: Array\n },\n subtitle: {\n type: String,\n },\n showThumbnail: {\n type: Boolean,\n default: true\n },\n actions: {\n type: Array,\n default: () => []\n // Expected format:\n // [\n // {\n // component: IconEdit,\n // handler: (item, index) => {},\n // class: 'bg-light' // optional custom class\n // }\n // ]\n }\n});\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DA,UAAM,EAAE,YAAW,IAAK,gBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardPosition.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardPosition.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-small pd-small flex-nowrap flex-v-center flex gap-thin\">\n <!-- Thumbnail image -->\n <div v-if=\"showThumbnail\" class=\"aspect-1x1 h-3r flex-child-default radius-small o-hidden\">\n <img\n v-if=\"image && image.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + image\"\n alt=\"Item image\"\n class=\"w-100 h-100 object-fit-cover\"\n />\n <PlaceholderImage v-else class=\"w-100 h-100\" />\n </div>\n \n <!-- Item details -->\n <div class=\"mn-micro-negative flex flex-column w-100 o-hidden\">\n <p class=\"w-100 pd-micro truncate trimmed capitalize fw-medium\">{{ name || 'Unnamed Product' }}</p>\n \n <div class=\"flex pd-micro flex-v-center gap-micro w-max \">\n \t<span v-if=\"title\" :class=\"title_class\" class=\"t-dark d-inline-block fw-demi\">{{title}}</span>\n \t<span v-if=\"subtitle\" class=\"t-transp p-small d-inline-block fw-medium\">{{ subtitle }}</span>\n </div>\n \t<slot></slot>\n </div>\n <!-- <p>\n \n\n <span class=\"p-small t-transp\">\n <template v-if=\"product.quantity\">{{returnCurrency() }}{{product.price}} </template>\n × \n <template v-if=\"product.listing === 'rent' && rentDates.start && rentDates.end\">\n {{ rentalDays }} days\n </template>\n \n <template v-else>\n {{ product.quantity || 0 }} {{ product.unit || 'pcs' }}\n </template>\n </span>\n </p> -->\n \n <!-- Actions -->\n <div class=\"flex gap-thin\">\n <template v-for=\"(action, index) in actions\" :key=\"index\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"radius-small pd-small flex-center flex aspect-1x1 cursor-pointer hover:scale-[1.05]\"\n @click=\"() => action.handler(item, index)\"\n >\n <component\n :is=\"action.component\"\n class=\"i-medium\"\n />\n </div>\n </template>\n <slot name=\"actions\"></slot>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { defineProps } from 'vue';\nimport PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nconst { formatPrice } = useGlobalMixins();\n\nconst props = defineProps({\n\timage: {\n type: String,\n },\n name: {\n type: String,\n },\n title: {\n type: String,\n },\n title_class: {\n \ttype: Array\n },\n subtitle: {\n type: String,\n },\n showThumbnail: {\n type: Boolean,\n default: true\n },\n actions: {\n type: Array,\n default: () => []\n // Expected format:\n // [\n // {\n // component: IconEdit,\n // handler: (item, index) => {},\n // class: 'bg-light' // optional custom class\n // }\n // ]\n }\n});\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DA,UAAM,EAAE,YAAW,IAAK,gBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,7 +4,7 @@ import { useStore } from "../../../core/views/store/core.store.js";
4
4
  import { state } from "../../../auth/views/store/auth.js";
5
5
  import { state as state$1, actions } from "../../store/categories.js";
6
6
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
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";
@@ -1,8 +1,8 @@
1
1
  import { ref, onMounted, computed, onUnmounted, createElementBlock, createCommentVNode, openBlock, createBlock, createVNode, withCtx, createElementVNode, toDisplayString, unref, createTextVNode, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$4 from "../../../icons/navigation/IconDelete.vue.js";
4
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
5
- import Select from "../../../../components/Select/Select.vue2.js";
3
+ import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
4
+ import Button from "../../../../components/Button/Button.vue2.js";
5
+ import Select from "../../../../components/Select/Select.vue.js";
6
6
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
7
7
  import Field from "../../../../components/Field/Field.vue.js";
8
8
  import FieldTags from "../../../../components/FieldTags/FieldTags.vue.js";
@@ -15,7 +15,7 @@ import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
15
15
  /* empty css */
16
16
  /* empty css */
17
17
  /* empty css */
18
- /* empty css */
18
+ /* empty css */
19
19
  /* empty css */
20
20
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
21
21
  import { useStore } from "../../../core/views/store/core.store.js";
@@ -123,7 +123,7 @@ const _sfc_main = {
123
123
  }, {
124
124
  default: withCtx(() => [
125
125
  createElementVNode("h1", _hoisted_2, toDisplayString(unref(route).params.category ? "Edit Category" : "Add Category"), 1),
126
- createVNode(_sfc_main$3, {
126
+ createVNode(Button, {
127
127
  submit: onSubmit,
128
128
  class: "pd-small radius-medium bg-main t-black uppercase fw-medium"
129
129
  }, {
@@ -219,7 +219,7 @@ const _sfc_main = {
219
219
  onClick: () => state.current.translations.splice(index, 1),
220
220
  class: "radius-small pd-small flex-center flex aspect-1x1 bg-red"
221
221
  }, [
222
- createVNode(_sfc_main$4, { class: "i-medium" })
222
+ createVNode(_sfc_main$3, { class: "i-medium" })
223
223
  ], 8, _hoisted_5)
224
224
  ]);
225
225
  }), 128))
@@ -259,7 +259,7 @@ const _sfc_main = {
259
259
  onClick: () => state.current.filters.splice(index, 1),
260
260
  class: "radius-small pd-small flex-center flex aspect-1x1 bg-red"
261
261
  }, [
262
- createVNode(_sfc_main$4, { class: "i-medium" })
262
+ createVNode(_sfc_main$3, { class: "i-medium" })
263
263
  ], 8, _hoisted_6)
264
264
  ]);
265
265
  }), 128))
@@ -5,9 +5,9 @@ import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
5
5
  import { state as state$1 } from "../../../auth/views/store/auth.js";
6
6
  import { state, actions } from "../../store/products.js";
7
7
  import { state as state$2, actions as actions$1 } from "../../../orders/store/shopcart.js";
8
- /* empty css */
8
+ /* empty css */
9
9
  /* empty css */
10
- /* empty css */
10
+ /* empty css */
11
11
  /* empty css */
12
12
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
13
13
  import _sfc_main$4 from "../../../icons/navigation/IconInfo.vue.js";
@@ -1,19 +1,19 @@
1
1
  import { ref, onMounted, createElementBlock, createCommentVNode, unref, openBlock, createBlock, createElementVNode, withCtx, createVNode, toDisplayString, createTextVNode, isRef, withModifiers, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
4
- import _sfc_main$3 from "../../../../components/Tab/Tab.vue2.js";
4
+ import _sfc_main$2 from "../../../../components/Tab/Tab.vue.js";
5
5
  import Field from "../../../../components/Field/Field.vue.js";
6
- import Select from "../../../../components/Select/Select.vue2.js";
7
- import _sfc_main$2 from "../../../../components/Button/Button.vue.js";
8
- import _sfc_main$4 from "../../../../components/EditImages/EditImages.vue2.js";
6
+ import Select from "../../../../components/Select/Select.vue.js";
7
+ import Button from "../../../../components/Button/Button.vue2.js";
8
+ import _sfc_main$3 from "../../../../components/EditImages/EditImages.vue.js";
9
9
  import BlockMultiselect from "../../../core/views/components/blocks/BlockMultiselect.vue.js";
10
- import _sfc_main$5 from "../../../icons/navigation/IconCross.vue.js";
11
- import _sfc_main$a from "../../../icons/navigation/IconDelete.vue.js";
12
- import _sfc_main$7 from "../sections/EditVariants.vue.js";
13
- import _sfc_main$6 from "../sections/EditAttributes.vue.js";
14
- import _sfc_main$8 from "../sections/EditDiscounts.vue.js";
10
+ import _sfc_main$4 from "../../../icons/navigation/IconCross.vue.js";
11
+ import _sfc_main$9 from "../../../icons/navigation/IconDelete.vue.js";
12
+ import _sfc_main$6 from "../sections/EditVariants.vue.js";
13
+ import _sfc_main$5 from "../sections/EditAttributes.vue.js";
14
+ import _sfc_main$7 from "../sections/EditDiscounts.vue.js";
15
15
  /* empty css */
16
- import _sfc_main$9 from "../sections/EditRecommended.vue.js";
16
+ import _sfc_main$8 from "../sections/EditRecommended.vue.js";
17
17
  import { useStore, setError } from "../../../core/views/store/core.store.js";
18
18
  import { state as state$2 } from "../../../auth/views/store/auth.js";
19
19
  import { mutations, actions, state } from "../../store/products.js";
@@ -131,7 +131,7 @@ const _sfc_main = {
131
131
  }, {
132
132
  default: withCtx(() => [
133
133
  createElementVNode("h2", _hoisted_2, toDisplayString(unref(route).params.product ? state.current.name : "Create Product"), 1),
134
- unref(route).params.product ? (openBlock(), createBlock(_sfc_main$2, {
134
+ unref(route).params.product ? (openBlock(), createBlock(Button, {
135
135
  key: 0,
136
136
  submit: onDelete,
137
137
  callback: redirectTo,
@@ -142,7 +142,7 @@ const _sfc_main = {
142
142
  ])),
143
143
  _: 1
144
144
  })) : createCommentVNode("", true),
145
- createVNode(_sfc_main$2, {
145
+ createVNode(Button, {
146
146
  submit: onSubmit,
147
147
  callback: redirectTo,
148
148
  class: "w-10 w-max-20r w-min-8r bg-main"
@@ -155,7 +155,7 @@ const _sfc_main = {
155
155
  ]),
156
156
  _: 1
157
157
  })) : createCommentVNode("", true),
158
- unref(route).params.product ? (openBlock(), createBlock(_sfc_main$3, {
158
+ unref(route).params.product ? (openBlock(), createBlock(_sfc_main$2, {
159
159
  key: 1,
160
160
  selected: unref(activeTab),
161
161
  "onUpdate:selected": _cache[0] || (_cache[0] = ($event) => isRef(activeTab) ? activeTab.value = $event : activeTab = $event),
@@ -175,7 +175,7 @@ const _sfc_main = {
175
175
  class: "h-min"
176
176
  }, {
177
177
  default: withCtx(() => [
178
- createVNode(_sfc_main$4, {
178
+ createVNode(_sfc_main$3, {
179
179
  images: state.current.images,
180
180
  uploadPath: "photos",
181
181
  "onUpdate:images": _cache[1] || (_cache[1] = (imagesNew) => {
@@ -233,7 +233,7 @@ const _sfc_main = {
233
233
  onClick: withModifiers(clear, ["stop"]),
234
234
  class: "i-small pd-micro bg-red radius-extra flex-center flex aspect-1x1 hover:scale-[1.05]"
235
235
  }, [
236
- createVNode(_sfc_main$5, { class: "i-micro fill-white" })
236
+ createVNode(_sfc_main$4, { class: "i-micro fill-white" })
237
237
  ], 8, _hoisted_6)
238
238
  ])
239
239
  ]),
@@ -343,22 +343,22 @@ const _sfc_main = {
343
343
  ]),
344
344
  _: 1
345
345
  })) : createCommentVNode("", true),
346
- createVNode(_sfc_main$6, {
346
+ createVNode(_sfc_main$5, {
347
347
  attributes: state.current.attributes,
348
348
  "onUpdate:attributes": _cache[11] || (_cache[11] = ($event) => state.current.attributes = $event)
349
349
  }, null, 8, ["attributes"])
350
350
  ])) : createCommentVNode("", true),
351
- unref(activeTab) === "variants" ? (openBlock(), createBlock(_sfc_main$7, {
351
+ unref(activeTab) === "variants" ? (openBlock(), createBlock(_sfc_main$6, {
352
352
  key: 3,
353
353
  variants: state.current.variants,
354
354
  "onUpdate:variants": _cache[12] || (_cache[12] = ($event) => state.current.variants = $event)
355
355
  }, null, 8, ["variants"])) : createCommentVNode("", true),
356
- unref(activeTab) === "discounts" ? (openBlock(), createBlock(_sfc_main$8, {
356
+ unref(activeTab) === "discounts" ? (openBlock(), createBlock(_sfc_main$7, {
357
357
  key: 4,
358
358
  discounts: state.current.discounts,
359
359
  "onUpdate:discounts": _cache[13] || (_cache[13] = ($event) => state.current.discounts = $event)
360
360
  }, null, 8, ["discounts"])) : createCommentVNode("", true),
361
- unref(activeTab) === "recommended" ? (openBlock(), createBlock(_sfc_main$9, {
361
+ unref(activeTab) === "recommended" ? (openBlock(), createBlock(_sfc_main$8, {
362
362
  key: 5,
363
363
  recommended: state.current.recommended,
364
364
  "onUpdate:recommended": _cache[14] || (_cache[14] = ($event) => state.current.recommended = $event),
@@ -398,7 +398,7 @@ const _sfc_main = {
398
398
  class: "w-100 bg-white radius-small pd-medium"
399
399
  }, null, 8, ["field", "onUpdate:field"]),
400
400
  createElementVNode("div", _hoisted_14, [
401
- createVNode(_sfc_main$a, {
401
+ createVNode(_sfc_main$9, {
402
402
  onClick: () => state.current.translations.splice(index, 1),
403
403
  class: "i-medium"
404
404
  }, null, 8, ["onClick"])
@@ -409,7 +409,7 @@ const _sfc_main = {
409
409
  _: 1
410
410
  }, 8, ["actions"])) : createCommentVNode("", true),
411
411
  createElementVNode("div", _hoisted_15, [
412
- unref(route).params.product ? (openBlock(), createBlock(_sfc_main$2, {
412
+ unref(route).params.product ? (openBlock(), createBlock(Button, {
413
413
  key: 0,
414
414
  submit: onDelete,
415
415
  class: "bg-red t-white w-100"
@@ -419,7 +419,7 @@ const _sfc_main = {
419
419
  ])),
420
420
  _: 1
421
421
  })) : createCommentVNode("", true),
422
- createVNode(_sfc_main$2, {
422
+ createVNode(Button, {
423
423
  submit: onSubmit,
424
424
  class: "w-100 bg-main"
425
425
  }, {
@@ -1,7 +1,7 @@
1
1
  import { ref, computed, onMounted, onUnmounted, resolveComponent, createElementBlock, openBlock, createCommentVNode, createElementVNode, createVNode, unref, toDisplayString, Fragment, renderList, createTextVNode, createBlock, withCtx, normalizeClass, renderSlot } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import { useGlobalMixins } from "../../../core/views/mixins/mixins.js";
4
- /* empty css */
4
+ /* empty css */
5
5
  import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
6
6
  import _sfc_main$2 from "../../../../components/Spoiler/Spoiler.vue2.js";
7
7
  import _sfc_main$3 from "../../../../components/Checkbox/Checkbox.vue.js";
@@ -9,7 +9,7 @@ import "vue-i18n";
9
9
  import { actions as actions$1 } from "../../store/categories.js";
10
10
  /* empty css */
11
11
  import Field from "../../../../components/Field/Field.vue.js";
12
- import Filters from "../../../core/views/components/sections/Filters.vue2.js";
12
+ import Filters from "../../../core/views/components/sections/Filters.vue.js";
13
13
  import Calendar from "../../../../components/Calendar/Calendar.vue2.js";
14
14
  import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
15
15
  import _sfc_main$6 from "../blocks/CardProduct.vue.js";
@@ -22,11 +22,11 @@ import { state as state$1, actions } from "../../store/products.js";
22
22
  const _hoisted_1 = { class: "pos-relative" };
23
23
  const _hoisted_2 = {
24
24
  key: 0,
25
- class: "pd-medium flex-v-center flex-nowrap flex"
25
+ class: "pd-medium br-b-1px br-grey flex-v-center flex-nowrap flex"
26
26
  };
27
27
  const _hoisted_3 = { class: "mn-r-medium" };
28
- const _hoisted_4 = { class: "cols-[1fr_3fr] mobile:cols-1 br-1px br-light z-index-3 pos-relative" };
29
- const _hoisted_5 = { class: "o-y-scroll br-r-1px br-light pd-medium z-index-2 desktop-only h-100 pos-relative" };
28
+ const _hoisted_4 = { class: "cols-[1fr_3fr] mobile:cols-1 z-index-3 pos-relative" };
29
+ const _hoisted_5 = { class: "o-y-scroll br-r-1px br-grey pd-medium z-index-2 desktop-only h-100 pos-relative" };
30
30
  const _hoisted_6 = { class: "w-100 o-y-scroll h-100" };
31
31
  const _hoisted_7 = {
32
32
  key: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"Products.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">{{ currentCategory ? currentCategory.name : 'All Products' }}</h2>\n <button \n v-if=\"route.params._id && hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-[1fr_3fr] mobile:cols-1 br-1px br-light z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r-1px br-light pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-medium\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"cursor-pointer hover:underline mn-b-regular ease\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model:field=\"selectedFilters.price.min\"\n placeholder=\"From\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"selectedFilters.price.max\"\n placeholder=\"To\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n @click=\"() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedFilters?.availability }\"\n class=\"pd-small field-wrapper radius-small bg-light cursor-pointer hover:bg-light ease flex-v-center flex gap-thin\"\n >\n <IconCalendar class=\"i-medium\" />\n <span class=\"h-1r\">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>\n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n @click=\"clearAllFilters\"\n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 flex flex-column pd-thin pos-relative o-hidden\">\n \n <slot></slot>\n\n <div class=\"mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex ws-nowrap pd-medium radius-medium cursor-pointer hover:bg-light ease\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n\n <Feed\n :search=\"true\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n lookup: ['variants','rents','inventory'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n dateStart: selectedFilters.availability?.start,\n dateEnd: selectedFilters.availability?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n \n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n <div class=\"cols-4 mobile:cols-2 z-index-1 pos-relative w-100 rows-1 gap-thin\">\n <router-link\n v-for=\"product in items\"\n :to=\"route.params._id ? `/organizations/${route.params._id}/products/${product._id}` : `/products/${product._id}`\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </div>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium radius-small bg-light\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button w-100 flex-child-full\"\n >\n Apply\n </button>\n \n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/core/views/components/blocks/BlockSearch.vue'\n import Filters from '@martyrs/src/modules/core/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n const { generateFilters, formatDate, hasAccess, returnCurrency } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\n const availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Availability',\n value: 'availability',\n type: 'date'\n }\n ])\n\n const selectedFilters = ref({\n price: { min: '', max: '' },\n availability: null\n })\n\n const showDatePickerPopup = ref(false);\n const tempSelectedDates = ref(null);\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n const filters = [];\n \n // Обрабатываем фильтры категорий\n Object.entries(selectedFilters.value).forEach(([key, value]) => {\n if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно\n \n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n parameter: key,\n values: value,\n caseSensitive: false\n });\n } else if (value && typeof value === 'string' && value.trim() !== '') {\n filters.push({\n parameter: key,\n values: [value],\n caseSensitive: false\n });\n }\n });\n \n return filters.length > 0 ? JSON.stringify(filters) : '';\n });\n\n\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (selectedFilters.value.availability) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n // Очищаем фильтры категории из предыдущей загрузки\n availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Добавляем фильтры категории в availableFilters\n (result[0].filters || []).forEach(filter => {\n availableFilters.value.push({\n title: filter.name,\n value: filter.name,\n type: 'checkbox',\n options: (filter.options || []).map(option => ({\n label: typeof option === 'string' ? option : option.text,\n value: typeof option === 'string' ? option : option.text\n }))\n });\n // Инициализируем массив для фильтра\n if (!selectedFilters.value[filter.name]) {\n selectedFilters.value[filter.name] = [];\n }\n });\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n categoryFilters.value = [];\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n categoryFilters.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedFilters.value.availability = tempSelectedDates.value;\n showDatePickerPopup.value = false;\n };\n \n // Функция очистки всех фильтров\n const clearAllFilters = () => {\n selectedFilters.value.price = { min: '', max: '' };\n selectedFilters.value.availability = null;\n \n // Очищаем фильтры категорий\n categoryFilters.value.forEach(filter => {\n selectedFilters.value[filter.name] = [];\n });\n };\n\n if (route.params?._id) {\n store.core.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\"\n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }];\n }\n\n onMounted(async () => {\n emits('page-loading');\n await loadCategoryData();\n emits('page-loaded');\n });\n\n onUnmounted(() => {\n store.core.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["categories.actions","IconPlus","auth.state"],"mappings":"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"}
1
+ {"version":3,"file":"Products.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Products.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <header \n v-if=\"route.name !== 'Organization' && !MOBILE_APP\"\n class=\"pd-medium br-b-1px br-grey flex-v-center flex-nowrap flex\"\n >\n <h2 class=\"mn-r-medium\">{{ currentCategory ? currentCategory.name : 'All Products' }}</h2>\n <button \n v-if=\"route.params._id && hasAccess(route.params._id, 'products', 'create', auth.state.accesses, auth.state.access.roles)\"\n @click=\"$router.push({\n name: route.params?._id ? 'Organization_ProductAdd' : 'ProductAdd'\n })\" \n class=\"radius-extra i-big hover:scale-[1.05] cursor-pointer t-white bg-second\">\n +\n </button>\n </header>\n\n <div class=\"cols-[1fr_3fr] mobile:cols-1 z-index-3 pos-relative\">\n\n <div class=\"o-y-scroll br-r-1px br-grey pd-medium z-index-2 desktop-only h-100 pos-relative\">\n <div class=\"w-100 o-y-scroll h-100\">\n <!-- Категории -->\n <div class=\"mn-b-medium\" v-if=\"currentCategories.length > 0\">\n <h4 class=\"mn-b-medium\">\n {{ route.params.categoryPath ? 'Subcategories' : 'Categories' }}\n </h4>\n <div class=\"gap-micro\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\"cursor-pointer hover:underline mn-b-regular ease\"\n >\n {{ category.name }}\n <br>\n <span v-for=\"subcategory in category.children\">{{subcategory.name}}</span>\n </div>\n </div>\n </div>\n\n <!-- Фильтры категории -->\n <Spoiler \n v-for=\"filter in categoryFilters\"\n :key=\"filter.name\"\n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">{{ filter.name }}</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <Checkbox \n v-for=\"option in filter.options\"\n :key=\"option.text || option\"\n v-model:radio=\"selectedFilters[filter.name]\"\n :label=\"option.text || option\"\n :value=\"option.text || option\"\n mode=\"checkbox\"\n class=\"mn-b-micro\"\n />\n </div>\n </template>\n </Spoiler>\n \n <!-- Цена за сутки -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\"> Price</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small flex gap-thin\">\n <Field\n v-model:field=\"selectedFilters.price.min\"\n placeholder=\"From\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n <Field\n v-model:field=\"selectedFilters.price.max\"\n placeholder=\"To\"\n type=\"number\"\n :label=\"returnCurrency()\"\n class=\"w-50 bg-light pd-small radius-small\"\n />\n </div>\n </template>\n </Spoiler>\n\n <!-- Доступность -->\n <Spoiler \n class=\"o-hidden mn-b-medium\"\n :status=\"true\"\n >\n <template #header=\"{ isOpen }\">\n <div class=\"cursor-pointer w-100 flex-v-center flex-nowrap flex\">\n <h4 class=\"w-100\">Availability</h4>\n <div class=\"h-2r w-2r flex-child-auto aspect-1x1 flex-center flex bg-light radius-extra\">\n <IconChevronBottom :class=\"{ 'rotate-180deg mn-t-micro-negative': isOpen }\" fill=\"rgb(var(--black))\" class=\"i-medium\"/>\n </div>\n </div>\n </template>\n\n <template #content>\n <div class=\"mn-t-small\">\n <div \n @click=\"() => { tempSelectedDates = selectedFilters.availability; showDatePickerPopup = true; }\"\n :class=\"{ 'bg-light': selectedFilters?.availability }\"\n class=\"pd-small field-wrapper radius-small bg-light cursor-pointer hover:bg-light ease flex-v-center flex gap-thin\"\n >\n <IconCalendar class=\"i-medium\" />\n <span class=\"h-1r\">{{ selectedFilters.availability ? `${formatDate(selectedFilters.availability.start, { dayMonth: true, language: 'en' })} - ${formatDate(selectedFilters.availability.end, { dayMonth: true, language: 'en' })}` : 'Select dates'}}</span>\n </div>\n </div>\n </template>\n </Spoiler>\n\n <!-- Кнопка очистки фильтров -->\n <button \n @click=\"clearAllFilters\"\n class=\"bg-main w-100 button mn-t-medium\"\n >\n Clear Filters\n </button>\n </div>\n </div>\n\n <div class=\"w-100 flex flex-column pd-thin pos-relative o-hidden\">\n \n <slot></slot>\n\n <div class=\"mn-b-thin mobile-only w-100 o-y-scroll scroll-hide scroll-snap-x-mandatory scroll-pd-regular\">\n <div class=\"gap-thin flex-nowrap flex\">\n <div\n v-for=\"category in currentCategories\"\n :key=\"category._id\"\n @click=\"selectCategory(category)\"\n class=\" flex-child-default bg-light flex ws-nowrap pd-medium radius-medium cursor-pointer hover:bg-light ease\"\n >\n {{ category.name }}\n </div>\n </div>\n </div>\n\n <Feed\n :search=\"true\"\n v-model:sort=\"products.state.sort\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => products.actions.read(options),\n state: products.state\n }\"\n :options=\"{\n limit: 16,\n owner: route.name?.includes('Organization') ? route.params._id : null,\n lookup: ['variants','rents','inventory'],\n categories: route.params.categoryPath ? `/${route.params.categoryPath}` : null,\n filters: processedFilters,\n priceMin: selectedFilters.price?.min,\n priceMax: selectedFilters.price?.max,\n dateStart: selectedFilters.availability?.start,\n dateEnd: selectedFilters.availability?.end\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"\"\n \n >\n <div class=\"mn-b-thin mobile-only\">\n <Filters\n v-model:filters=\"availableFilters\"\n v-model:selected=\"selectedFilters\"\n class=\"\"\n />\n </div>\n <div class=\"cols-4 mobile:cols-2 z-index-1 pos-relative w-100 rows-1 gap-thin\">\n <router-link\n v-for=\"product in items\"\n :to=\"route.params._id ? `/organizations/${route.params._id}/products/${product._id}` : `/products/${product._id}`\"\n class=\"pos-relative h-100 w-100\"\n >\n <CardProduct\n :key=\"product._id\"\n :product=\"product\"\n :user=\"auth.state.access\"\n :organization=\"route.params._id\"\n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n class=\"pos-relative h-100 w-100 bg-light\"\n />\n </router-link>\n </div>\n </Feed>\n\n </div>\n </div>\n \n <!-- Date Picker Popup -->\n <Popup\n :isPopupOpen=\"showDatePickerPopup\"\n @close-popup=\"showDatePickerPopup = false\"\n class=\"pd-medium bg-white radius-medium\"\n style=\"min-width: 350px;\"\n >\n <h3 class=\"mn-b-medium\">Select Date Range</h3>\n \n <Calendar\n v-model:date=\"tempSelectedDates\"\n :allowRange=\"true\"\n :disablePastDates=\"true\"\n class=\"mn-b-medium radius-small bg-light\"\n />\n \n <div class=\"flex gap-small\">\n <button \n @click=\"showDatePickerPopup = false\"\n class=\"bg-light button flex-child-full\"\n >\n Cancel\n </button>\n <button \n @click=\"applyDateFilter\"\n class=\"bg-main button w-100 flex-child-full\"\n >\n Apply\n </button>\n \n </div>\n </Popup>\n</div>\n\n</template>\n\n\n<script setup=\"props\">\n // Import libs\n import { ref, computed, watch, onMounted, onUnmounted } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n\n // Import components\n import Tab from '@martyrs/src/components/Tab/Tab.vue'\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n import FilterProducts from '@martyrs/src/modules/products/components/sections/FilterProducts.vue'\n import BlockSearch from '@martyrs/src/modules/core/views/components/blocks/BlockSearch.vue'\n import Filters from '@martyrs/src/modules/core/views/components/sections/Filters.vue'\n import Spoiler from \"@martyrs/src/components/Spoiler/Spoiler.vue\"\n import Field from \"@martyrs/src/components/Field/Field.vue\"\n import Calendar from \"@martyrs/src/components/Calendar/Calendar.vue\"\n import Popup from \"@martyrs/src/components/Popup/Popup.vue\"\n import Checkbox from \"@martyrs/src/components/Checkbox/Checkbox.vue\"\n\n import CardProduct from '@martyrs/src/modules/products/components/blocks/CardProduct.vue'\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n import IconChevronBottom from '@martyrs/src/modules/icons/navigation/IconChevronBottom.vue'\n import IconCalendar from '@martyrs/src/modules/icons/entities/IconCalendar.vue'\n\n\n // Accessing router and store\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n import * as products from '@martyrs/src/modules/products/store/products.js';\n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n const route = useRoute()\n const router = useRouter()\n const store = useStore()\n const { generateFilters, formatDate, hasAccess, returnCurrency } = useGlobalMixins()\n\n // Категории и фильтры\n const currentCategories = ref([]);\n const currentCategory = ref(null);\n const categoryFilters = ref([]);\n // const selectedFilters = ref({});\n\n const availableFilters = ref([\n {\n title: 'Price',\n value: 'price',\n type: 'range',\n minPlaceholder: 'From',\n maxPlaceholder: 'To'\n },\n {\n title: 'Availability',\n value: 'availability',\n type: 'date'\n }\n ])\n\n const selectedFilters = ref({\n price: { min: '', max: '' },\n availability: null\n })\n\n const showDatePickerPopup = ref(false);\n const tempSelectedDates = ref(null);\n\n // Computed property for processed filters\n const processedFilters = computed(() => {\n const filters = [];\n \n // Обрабатываем фильтры категорий\n Object.entries(selectedFilters.value).forEach(([key, value]) => {\n if (key === 'price' || key === 'availability') return; // эти обрабатываются отдельно\n \n if (Array.isArray(value) && value.length > 0) {\n filters.push({\n parameter: key,\n values: value,\n caseSensitive: false\n });\n } else if (value && typeof value === 'string' && value.trim() !== '') {\n filters.push({\n parameter: key,\n values: [value],\n caseSensitive: false\n });\n }\n });\n \n return filters.length > 0 ? JSON.stringify(filters) : '';\n });\n\n\n\n\n const processedLookups = computed(() => {\n const lookups = ['variants'];\n if (selectedFilters.value.availability) {\n lookups.push('rents');\n }\n return lookups;\n });\n\n const loadCategoryData = async () => {\n const categoryPath = route.params.categoryPath;\n \n // Очищаем фильтры категории из предыдущей загрузки\n availableFilters.value = availableFilters.value.filter(f => f.value === 'price' || f.value === 'availability');\n \n try {\n if (categoryPath) {\n // Загружаем категорию и её прямых детей\n const result = await categories.actions.read({ \n url: `/${categoryPath}`,\n depth: 1,\n tree: false\n });\n \n if (result.length > 0) {\n currentCategory.value = result[0];\n currentCategories.value = result[0].children || [];\n categoryFilters.value = result[0].filters || [];\n \n // Добавляем фильтры категории в availableFilters\n (result[0].filters || []).forEach(filter => {\n availableFilters.value.push({\n title: filter.name,\n value: filter.name,\n type: 'checkbox',\n options: (filter.options || []).map(option => ({\n label: typeof option === 'string' ? option : option.text,\n value: typeof option === 'string' ? option : option.text\n }))\n });\n // Инициализируем массив для фильтра\n if (!selectedFilters.value[filter.name]) {\n selectedFilters.value[filter.name] = [];\n }\n });\n }\n } else {\n // Загружаем только корневые категории\n const result = await categories.actions.read({ \n root: true,\n tree: false\n });\n \n currentCategories.value = result;\n categoryFilters.value = [];\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n currentCategories.value = [];\n categoryFilters.value = [];\n }\n };\n\n // Функция для выбора категории\n const selectCategory = (category) => {\n const categoryPath = category.url ? category.url.substring(1) : '';\n \n if (!categoryPath) {\n console.warn('No URL found for category:', category);\n return;\n }\n \n // Переходим к странице категории используя wildcard роут\n if (route.params._id) {\n router.push(`/organizations/${route.params._id}/products/categories/${categoryPath}`);\n } else {\n router.push(`/products/categories/${categoryPath}`);\n }\n };\n\n\n // Функция применения фильтра дат\n const applyDateFilter = () => {\n selectedFilters.value.availability = tempSelectedDates.value;\n showDatePickerPopup.value = false;\n };\n \n // Функция очистки всех фильтров\n const clearAllFilters = () => {\n selectedFilters.value.price = { min: '', max: '' };\n selectedFilters.value.availability = null;\n \n // Очищаем фильтры категорий\n categoryFilters.value.forEach(filter => {\n selectedFilters.value[filter.name] = [];\n });\n };\n\n if (route.params?._id) {\n store.core.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\"\n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Organization_ProductAdd', params: { _id: route.params._id} }) : router.push({ name: 'ProductAdd' })\n }];\n }\n\n onMounted(async () => {\n emits('page-loading');\n await loadCategoryData();\n emits('page-loaded');\n });\n\n onUnmounted(() => {\n store.core.state.navigation_bar.actions = [];\n });\n\n</script>\n\n<style lang=\"scss\">\n\n\n</style>\n"],"names":["categories.actions","IconPlus","auth.state"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { useModel, ref, reactive, createElementBlock, openBlock, Fragment, createVNode, withCtx, createCommentVNode, renderList, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
3
3
  import Field from "../../../../components/Field/Field.vue.js";
4
- import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
4
+ import Button from "../../../../components/Button/Button.vue2.js";
5
5
  import _sfc_main$4 from "../../../../components/Popup/Popup.vue.js";
6
6
  import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
7
7
  import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
@@ -133,7 +133,7 @@ const _sfc_main = {
133
133
  class: "w-100 bg-light radius-small pd-small"
134
134
  }, null, 8, ["field"]),
135
135
  createElementVNode("div", _hoisted_9, [
136
- createVNode(_sfc_main$5, {
136
+ createVNode(Button, {
137
137
  showSuccess: false,
138
138
  showLoader: false,
139
139
  class: "bg-red t-white w-100",
@@ -144,7 +144,7 @@ const _sfc_main = {
144
144
  ])),
145
145
  _: 1
146
146
  }),
147
- createVNode(_sfc_main$5, {
147
+ createVNode(Button, {
148
148
  class: "bg-main w-100",
149
149
  onClick: saveAttribute
150
150
  }, {
@@ -1,9 +1,9 @@
1
1
  import { useModel, ref, reactive, createElementBlock, openBlock, Fragment, createVNode, withCtx, createCommentVNode, renderList, createElementVNode, toDisplayString, createTextVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
3
3
  import Field from "../../../../components/Field/Field.vue.js";
4
- import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
4
+ import Button from "../../../../components/Button/Button.vue2.js";
5
5
  import _sfc_main$4 from "../../../../components/Popup/Popup.vue.js";
6
- import Select from "../../../../components/Select/Select.vue2.js";
6
+ import Select from "../../../../components/Select/Select.vue.js";
7
7
  import _sfc_main$2 from "../../../icons/navigation/IconEdit.vue.js";
8
8
  import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
9
9
  const _hoisted_1 = {
@@ -283,7 +283,7 @@ const _sfc_main = {
283
283
  }, null, 8, ["field"])
284
284
  ]),
285
285
  createElementVNode("div", _hoisted_12, [
286
- createVNode(_sfc_main$5, {
286
+ createVNode(Button, {
287
287
  showSuccess: false,
288
288
  showLoader: false,
289
289
  class: "bg-red t-white w-100",
@@ -294,7 +294,7 @@ const _sfc_main = {
294
294
  ])),
295
295
  _: 1
296
296
  }),
297
- createVNode(_sfc_main$5, {
297
+ createVNode(Button, {
298
298
  class: "bg-main w-100",
299
299
  onClick: saveDiscount
300
300
  }, {