@ozdao/martyrs 0.2.602 → 0.2.604

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 (729) 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 +130 -81
  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/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  32. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  33. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  34. package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
  35. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +4 -4
  36. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
  37. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  38. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue.js → LocationMarker.vue2.js} +3 -3
  39. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -0
  40. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  41. package/dist/martyrs/src/components/Table/StatusBadge.vue.js +19 -10
  42. package/dist/martyrs/src/components/Table/StatusBadge.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/Text/Text.vue.js +1 -1
  44. package/dist/martyrs/src/components/Text/Text.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  46. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +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 +2 -2
  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/ProfileEdit.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +13 -13
  56. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  57. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  58. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +41 -3
  59. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  60. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  61. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +34 -66
  62. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  63. package/dist/martyrs/src/modules/auth/views/router/users.router.js +0 -53
  64. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  65. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -1
  66. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +515 -103
  67. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  68. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +1 -3
  69. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
  70. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +1 -32
  71. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js.map +1 -1
  72. package/dist/martyrs/src/modules/community/community.client.js +49 -8
  73. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  74. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +10 -4
  75. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  77. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +3 -3
  79. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  80. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +28 -17
  81. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  82. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +36 -28
  83. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  84. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  85. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  86. package/dist/martyrs/src/modules/community/components/sections/Comments.vue.js +1 -1
  87. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js +21 -0
  88. package/dist/martyrs/src/modules/community/router/community.backoffice.router.js.map +1 -0
  89. package/dist/martyrs/src/modules/community/router/community.organization.router.js +70 -0
  90. package/dist/martyrs/src/modules/community/router/community.organization.router.js.map +1 -0
  91. package/dist/martyrs/src/modules/community/router/community.router.js +73 -0
  92. package/dist/martyrs/src/modules/community/router/community.router.js.map +1 -0
  93. package/dist/martyrs/src/modules/community/router/community.user.router.js +20 -0
  94. package/dist/martyrs/src/modules/community/router/community.user.router.js.map +1 -0
  95. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js +1 -1
  96. package/dist/martyrs/src/modules/constructor/components/elements/Textarea.vue2.js.map +1 -1
  97. package/dist/martyrs/src/modules/constructor/components/sections/Constructor.vue.js.map +1 -1
  98. package/dist/martyrs/src/modules/core/views/classes/core.app.js +5 -3
  99. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  100. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +7 -2
  101. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  102. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js +11 -5
  103. package/dist/martyrs/src/modules/core/views/classes/ws.manager.js.map +1 -1
  104. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js +53 -18
  105. package/dist/martyrs/src/modules/core/views/components/blocks/Card.vue.js.map +1 -1
  106. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +2 -2
  107. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +44 -0
  108. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -0
  109. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +6 -6
  110. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +2 -2
  111. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +11 -8
  112. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
  114. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +14 -14
  116. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  117. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +2 -2
  118. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +28 -29
  119. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  120. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +6 -6
  121. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js +5 -7
  122. package/dist/martyrs/src/modules/core/views/components/partials/Sidebar.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +27 -17
  124. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  126. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +3 -3
  127. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  128. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +2 -3
  129. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  130. package/dist/martyrs/src/modules/core/views/store/core.store.js +1 -1
  131. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +10 -0
  132. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  133. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +4 -4
  134. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +2 -2
  135. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +3 -3
  136. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
  137. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  139. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -0
  140. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +23 -33
  142. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +13 -13
  144. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  145. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +3 -3
  146. package/dist/martyrs/src/modules/events/components/sections/List.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/events/events.client.js +37 -15
  148. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  149. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js +95 -0
  150. package/dist/martyrs/src/modules/events/router/events.backoffice.router.js.map +1 -0
  151. package/dist/martyrs/src/modules/events/router/events.organization.router.js +95 -0
  152. package/dist/martyrs/src/modules/events/router/events.organization.router.js.map +1 -0
  153. package/dist/martyrs/src/modules/events/router/events.router.js +73 -364
  154. package/dist/martyrs/src/modules/events/router/events.router.js.map +1 -1
  155. package/dist/martyrs/src/modules/events/router/events.user.router.js +65 -0
  156. package/dist/martyrs/src/modules/events/router/events.user.router.js.map +1 -0
  157. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  158. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js +33 -0
  159. package/dist/martyrs/src/modules/governance/configs/navigation.initiative.config.js.map +1 -0
  160. package/dist/martyrs/src/modules/governance/governance.client.js +31 -0
  161. package/dist/martyrs/src/modules/governance/governance.client.js.map +1 -0
  162. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +110 -0
  163. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -0
  164. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +105 -0
  165. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -0
  166. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +110 -0
  167. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -0
  168. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +106 -0
  169. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -0
  170. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js +52 -0
  171. package/dist/martyrs/src/modules/governance/views/components/pages/Governance.vue.js.map +1 -0
  172. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js +684 -0
  173. package/dist/martyrs/src/modules/governance/views/components/pages/Initiative.vue.js.map +1 -0
  174. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js +78 -0
  175. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeCreate.vue.js.map +1 -0
  176. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js +328 -0
  177. package/dist/martyrs/src/modules/governance/views/components/pages/InitiativeSprints.vue.js.map +1 -0
  178. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +145 -0
  179. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -0
  180. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js +258 -0
  181. package/dist/martyrs/src/modules/governance/views/components/pages/Sprint.vue.js.map +1 -0
  182. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js +72 -0
  183. package/dist/martyrs/src/modules/governance/views/components/pages/SprintCreate.vue.js.map +1 -0
  184. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js +769 -0
  185. package/dist/martyrs/src/modules/governance/views/components/pages/Task.vue.js.map +1 -0
  186. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js +88 -0
  187. package/dist/martyrs/src/modules/governance/views/components/pages/TaskCreate.vue.js.map +1 -0
  188. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js +291 -0
  189. package/dist/martyrs/src/modules/governance/views/components/pages/Tasks.vue.js.map +1 -0
  190. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js +267 -0
  191. package/dist/martyrs/src/modules/governance/views/components/pages/Voting.vue.js.map +1 -0
  192. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js +90 -0
  193. package/dist/martyrs/src/modules/governance/views/components/pages/VotingCreate.vue.js.map +1 -0
  194. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js +68 -0
  195. package/dist/martyrs/src/modules/governance/views/components/pages/Votings.vue.js.map +1 -0
  196. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js +47 -0
  197. package/dist/martyrs/src/modules/governance/views/components/partials/EmptyState.vue.js.map +1 -0
  198. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js +164 -0
  199. package/dist/martyrs/src/modules/governance/views/components/partials/LinkedEntityCard.vue.js.map +1 -0
  200. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +39 -0
  201. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -0
  202. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js +112 -0
  203. package/dist/martyrs/src/modules/governance/views/components/partials/VoteForm.vue.js.map +1 -0
  204. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js +187 -0
  205. package/dist/martyrs/src/modules/governance/views/components/partials/VotingResults.vue.js.map +1 -0
  206. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js +555 -0
  207. package/dist/martyrs/src/modules/governance/views/components/sections/FormInitiativeDetails.vue.js.map +1 -0
  208. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +187 -0
  209. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -0
  210. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +171 -0
  211. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -0
  212. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js +179 -0
  213. package/dist/martyrs/src/modules/governance/views/components/sections/FormVotingDetails.vue.js.map +1 -0
  214. package/dist/martyrs/src/modules/governance/views/router/governance.router.js +502 -0
  215. package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -0
  216. package/dist/martyrs/src/modules/governance/views/store/initiatives.js +119 -0
  217. package/dist/martyrs/src/modules/governance/views/store/initiatives.js.map +1 -0
  218. package/dist/martyrs/src/modules/governance/views/store/sprints.js +99 -0
  219. package/dist/martyrs/src/modules/governance/views/store/sprints.js.map +1 -0
  220. package/dist/martyrs/src/modules/governance/views/store/tasks.js +115 -0
  221. package/dist/martyrs/src/modules/governance/views/store/tasks.js.map +1 -0
  222. package/dist/martyrs/src/modules/governance/views/store/votings.js +155 -0
  223. package/dist/martyrs/src/modules/governance/views/store/votings.js.map +1 -0
  224. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +70 -0
  225. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +1 -0
  226. package/dist/martyrs/src/modules/icons/icons.client.js +1 -1
  227. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  228. package/dist/martyrs/src/modules/icons/{icons.router.js → router/icons.router.js} +1 -1
  229. package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
  230. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  231. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +3 -3
  232. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +2 -2
  233. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  234. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +1 -1
  235. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +6 -6
  236. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  238. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +9 -9
  239. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +4 -4
  240. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +2 -2
  241. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +4 -4
  242. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +7 -7
  243. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  244. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  245. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +3 -3
  246. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +4 -4
  247. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  248. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +3 -3
  249. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +10 -10
  250. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +13 -13
  251. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +11 -11
  252. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +10 -10
  253. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +18 -18
  254. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  255. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +2 -2
  256. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +4 -4
  257. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +10 -10
  258. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +6 -6
  259. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js +63 -0
  260. package/dist/martyrs/src/modules/music/components/sections/PopularTracks.vue.js.map +1 -0
  261. package/dist/martyrs/src/modules/music/music.client.js +29 -25
  262. package/dist/martyrs/src/modules/music/music.client.js.map +1 -1
  263. package/dist/martyrs/src/modules/music/{music.router.js → router/music.router.js} +16 -16
  264. package/dist/martyrs/src/modules/music/router/music.router.js.map +1 -0
  265. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +26 -27
  266. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +119 -60
  268. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/notifications/notifications.client.js +76 -56
  270. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  271. package/dist/martyrs/src/modules/notifications/{notifications.router.js → router/notifications.router.js} +3 -3
  272. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -0
  273. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +1 -1
  274. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +34 -44
  275. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
  276. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +47 -57
  277. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
  278. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +2 -2
  279. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  280. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +2 -2
  281. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  282. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  283. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +5 -5
  284. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +7 -7
  286. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +61 -54
  287. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
  288. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +43 -31
  289. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
  290. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +13 -13
  291. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +3 -3
  292. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +19 -19
  294. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +7 -10
  295. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  296. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +7 -10
  297. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  298. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +4 -4
  299. package/dist/martyrs/src/modules/orders/orders.client.js +16 -16
  300. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  301. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -1
  302. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +11 -4
  303. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  304. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +2 -2
  305. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +2 -2
  306. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +22 -15
  307. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  308. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  309. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +63 -1
  310. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +9 -3
  312. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  313. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +13 -7
  314. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +24 -30
  316. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  318. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  319. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  320. package/dist/martyrs/src/modules/organizations/organizations.client.js +42 -6
  321. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  322. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +20 -0
  323. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -0
  324. package/dist/martyrs/src/modules/organizations/router/organizations.router.js +102 -0
  325. package/dist/martyrs/src/modules/organizations/router/organizations.router.js.map +1 -0
  326. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js +20 -0
  327. package/dist/martyrs/src/modules/organizations/router/organizations.user.router.js.map +1 -0
  328. package/dist/martyrs/src/modules/pages/pages.client.js +1 -1
  329. package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
  330. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  331. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +3 -3
  332. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +2 -2
  333. package/dist/martyrs/src/modules/pages/{pages.router.js → views/router/pages.router.js} +8 -8
  334. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -0
  335. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  336. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  337. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  338. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
  339. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -7
  340. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  341. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +21 -21
  342. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +3 -3
  343. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  344. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +3 -3
  345. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  346. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +20 -20
  347. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +4 -4
  348. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +4 -4
  349. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
  350. package/dist/martyrs/src/modules/rents/rents.client.js +1 -1
  351. package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
  352. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +6 -6
  353. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +4 -4
  354. package/dist/martyrs/src/modules/rents/{rents.router.js → views/router/rents.router.js} +4 -4
  355. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -0
  356. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  357. package/dist/martyrs/src/modules/reports/reports.client.js +1 -1
  358. package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
  359. package/dist/martyrs/src/modules/reports/{reports.router.js → router/reports.router.js} +1 -1
  360. package/dist/martyrs/src/modules/reports/router/reports.router.js.map +1 -0
  361. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  362. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +2 -2
  363. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +11 -11
  364. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +21 -21
  365. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +68 -0
  366. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -0
  367. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +48 -0
  368. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -0
  369. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +59 -0
  370. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -0
  371. package/dist/martyrs/src/modules/wallet/wallet.client.js +20 -0
  372. package/dist/martyrs/src/modules/wallet/wallet.client.js.map +1 -0
  373. package/dist/martyrs.es.js +84 -41
  374. package/dist/martyrs.es10.js +126 -0
  375. package/dist/martyrs.es101.js +39 -0
  376. package/dist/martyrs.es102.js +31 -0
  377. package/dist/martyrs.es104.js +27 -0
  378. package/dist/martyrs.es105.js +8 -0
  379. package/dist/martyrs.es106.js +9 -0
  380. package/dist/martyrs.es107.js +79 -0
  381. package/dist/martyrs.es108.js +7 -0
  382. package/dist/martyrs.es109.js +121 -0
  383. package/dist/martyrs.es11.js +49 -0
  384. package/dist/martyrs.es112.js +4 -0
  385. package/dist/martyrs.es113.js +169 -0
  386. package/dist/martyrs.es114.js +460 -0
  387. package/dist/martyrs.es115.js +42 -0
  388. package/dist/martyrs.es116.js +12 -0
  389. package/dist/martyrs.es117.js +52 -0
  390. package/dist/martyrs.es118.js +14 -0
  391. package/dist/martyrs.es119.js +47 -0
  392. package/dist/martyrs.es12.js +94 -0
  393. package/dist/martyrs.es120.js +7 -0
  394. package/dist/martyrs.es121.js +131 -0
  395. package/dist/martyrs.es122.js +103 -0
  396. package/dist/martyrs.es123.js +89 -0
  397. package/dist/martyrs.es124.js +40 -0
  398. package/dist/martyrs.es125.js +14 -0
  399. package/dist/martyrs.es126.js +42 -0
  400. package/dist/martyrs.es127.js +11 -0
  401. package/dist/martyrs.es128.js +25 -0
  402. package/dist/martyrs.es129.js +7 -0
  403. package/dist/martyrs.es13.js +48 -0
  404. package/dist/martyrs.es130.js +10 -0
  405. package/dist/martyrs.es131.js +119 -0
  406. package/dist/martyrs.es132.js +20 -0
  407. package/dist/martyrs.es133.js +18 -0
  408. package/dist/martyrs.es134.js +6 -0
  409. package/dist/martyrs.es135.js +35 -0
  410. package/dist/martyrs.es136.js +12 -0
  411. package/dist/martyrs.es137.js +23 -0
  412. package/dist/martyrs.es138.js +12 -0
  413. package/dist/martyrs.es139.js +11 -0
  414. package/dist/martyrs.es14.js +101 -0
  415. package/dist/martyrs.es140.js +47 -0
  416. package/dist/martyrs.es141.js +483 -0
  417. package/dist/martyrs.es142.js +8 -0
  418. package/dist/martyrs.es143.js +4 -0
  419. package/dist/martyrs.es144.js +33 -0
  420. package/dist/martyrs.es145.js +14 -0
  421. package/dist/martyrs.es146.js +19 -0
  422. package/dist/martyrs.es147.js +22 -0
  423. package/dist/martyrs.es148.js +31 -0
  424. package/dist/martyrs.es149.js +23 -0
  425. package/dist/martyrs.es15.js +408 -0
  426. package/dist/martyrs.es16.js +58 -0
  427. package/dist/martyrs.es17.js +44 -0
  428. package/dist/martyrs.es18.js +42 -0
  429. package/dist/martyrs.es19.js +27 -0
  430. package/dist/martyrs.es2.js +88 -0
  431. package/dist/martyrs.es20.js +13 -0
  432. package/dist/martyrs.es21.js +57 -0
  433. package/dist/martyrs.es22.js +104 -0
  434. package/dist/martyrs.es23.js +178 -0
  435. package/dist/martyrs.es24.js +123 -0
  436. package/dist/martyrs.es25.js +139 -0
  437. package/dist/martyrs.es26.js +21 -0
  438. package/dist/martyrs.es27.js +60 -0
  439. package/dist/martyrs.es28.js +75 -0
  440. package/dist/martyrs.es29.js +36 -0
  441. package/dist/martyrs.es3.js +116 -0
  442. package/dist/martyrs.es30.js +348 -0
  443. package/dist/martyrs.es31.js +83 -0
  444. package/dist/martyrs.es32.js +148 -0
  445. package/dist/martyrs.es33.js +175 -0
  446. package/dist/martyrs.es34.js +66 -0
  447. package/dist/martyrs.es35.js +57 -0
  448. package/dist/martyrs.es36.js +76 -0
  449. package/dist/martyrs.es37.js +101 -0
  450. package/dist/martyrs.es38.js +39 -0
  451. package/dist/martyrs.es39.js +124 -0
  452. package/dist/martyrs.es4.js +85 -0
  453. package/dist/martyrs.es40.js +120 -0
  454. package/dist/martyrs.es41.js +229 -0
  455. package/dist/martyrs.es43.js +29 -0
  456. package/dist/martyrs.es44.js +27 -0
  457. package/dist/martyrs.es46.js +9 -0
  458. package/dist/martyrs.es48.js +18 -0
  459. package/dist/martyrs.es5.js +395 -0
  460. package/dist/martyrs.es50.js +42 -0
  461. package/dist/martyrs.es52.js +255 -0
  462. package/dist/martyrs.es54.js +8 -0
  463. package/dist/martyrs.es6.js +70 -0
  464. package/dist/martyrs.es61.js +139 -0
  465. package/dist/martyrs.es65.js +28 -0
  466. package/dist/martyrs.es68.js +33 -0
  467. package/dist/martyrs.es69.js +37 -0
  468. package/dist/martyrs.es7.js +17 -0
  469. package/dist/martyrs.es71.js +114 -0
  470. package/dist/martyrs.es73.js +83 -0
  471. package/dist/martyrs.es74.js +52 -0
  472. package/dist/martyrs.es75.js +75 -0
  473. package/dist/martyrs.es76.js +176 -0
  474. package/dist/martyrs.es77.js +31 -0
  475. package/dist/martyrs.es78.js +38 -0
  476. package/dist/martyrs.es8.js +127 -0
  477. package/dist/martyrs.es81.js +32 -0
  478. package/dist/martyrs.es86.js +37 -0
  479. package/dist/martyrs.es89.js +37 -0
  480. package/dist/martyrs.es9.js +396 -0
  481. package/dist/martyrs.es91.js +63 -0
  482. package/dist/martyrs.es92.js +35 -0
  483. package/dist/martyrs.es94.js +41 -0
  484. package/dist/martyrs.es95.js +59 -0
  485. package/dist/martyrs.es96.js +123 -0
  486. package/dist/martyrs.es97.js +43 -0
  487. package/dist/martyrs.es98.js +86 -0
  488. package/dist/martyrs.es99.js +33 -0
  489. package/dist/music.server.js +11 -11
  490. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  491. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +1 -1
  492. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  493. package/dist/node_modules/.pnpm/capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  494. package/dist/notifications.server.js +16 -6
  495. package/dist/orders.server.js +264 -145
  496. package/dist/organizations.server.js +22 -6
  497. package/dist/products.server.js +7 -7
  498. package/dist/rents.server.js +4 -3
  499. package/dist/style.css +970 -986
  500. package/package.json +13 -6
  501. package/src/builder/modes/ssr.rspack.dev.js +32 -20
  502. package/src/builder/rspack/rspack.config.api.js +3 -0
  503. package/src/builder/rspack/rspack.config.base.js +9 -1
  504. package/src/builder/rspack/rspack.config.ssr.client.js +8 -5
  505. package/src/components/Block/Block.vue +1 -1
  506. package/src/components/Button/Button.vue +4 -4
  507. package/src/components/Table/StatusBadge.vue +24 -18
  508. package/src/components/Text/Text.vue +1 -1
  509. package/src/jit/core.js +72 -35
  510. package/src/jit/plugin.js +4 -3
  511. package/src/jit/rules.js +15 -15
  512. package/src/modules/TASKS.MD +30 -0
  513. package/src/modules/TASK_ACTIVITY.md +60 -0
  514. package/src/modules/TASK_MODULE_ARCH.md +391 -0
  515. package/src/modules/auth/controllers/routes/users.routes.js +8 -0
  516. package/src/modules/auth/controllers/services/users.service.js +51 -1
  517. package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
  518. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +25 -24
  519. package/src/modules/auth/views/components/pages/SignIn.vue +10 -1
  520. package/src/modules/auth/views/components/pages/UserDashboard.vue +35 -62
  521. package/src/modules/auth/views/router/users.router.js +0 -44
  522. package/src/modules/backoffice/components/pages/Dashboard.vue +423 -120
  523. package/src/modules/backoffice/configs/navigation.backoffice.config.js +0 -2
  524. package/src/modules/backoffice/router/backoffice.router.js +0 -25
  525. package/src/modules/community/community.client.js +54 -9
  526. package/src/modules/community/components/blocks/CardBlogpost.vue +10 -3
  527. package/src/modules/community/components/layouts/Community.vue +3 -3
  528. package/src/modules/community/components/pages/BlogPost.vue +1 -1
  529. package/src/modules/community/components/pages/CreateBlogPost.vue +19 -20
  530. package/src/modules/community/components/pages/Posts.vue +43 -28
  531. package/src/modules/community/components/sections/Comment.vue +1 -1
  532. package/src/modules/community/controllers/blog.controller.js +4 -5
  533. package/src/modules/community/models/reaction.model.js +1 -0
  534. package/src/modules/community/router/community.backoffice.router.js +16 -0
  535. package/src/modules/community/router/community.organization.router.js +56 -0
  536. package/src/modules/community/router/community.router.js +58 -106
  537. package/src/modules/community/router/community.user.router.js +15 -0
  538. package/src/modules/constructor/components/elements/Textarea.vue +1 -1
  539. package/src/modules/constructor/components/sections/Constructor.vue +1 -1
  540. package/src/modules/core/controllers/classes/core.validator.js +7 -1
  541. package/src/modules/core/controllers/classes/core.verifier.js +0 -2
  542. package/src/modules/core/controllers/classes/crud/crud.controller.js +0 -4
  543. package/src/modules/core/controllers/classes/crud/crud.service.js +1 -0
  544. package/src/modules/core/models/schemas/engagement.schema.js +19 -22
  545. package/src/modules/core/views/classes/core.app.js +6 -4
  546. package/src/modules/core/views/classes/i18n.manager.js +9 -2
  547. package/src/modules/core/views/classes/ws.manager.js +17 -7
  548. package/src/modules/core/views/components/blocks/Card.vue +47 -24
  549. package/src/modules/core/views/components/blocks/CardStat.vue +27 -0
  550. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  551. package/src/modules/core/views/components/layouts/Client.vue +5 -4
  552. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
  553. package/src/modules/core/views/components/partials/Header.vue +2 -2
  554. package/src/modules/core/views/components/partials/Navigation.vue +13 -14
  555. package/src/modules/core/views/components/partials/Sidebar.vue +4 -6
  556. package/src/modules/core/views/components/sections/SectionPageTitle.vue +23 -15
  557. package/src/modules/core/views/mixins/mixins.js +4 -3
  558. package/src/modules/core/views/router/addRoutes.js +1 -2
  559. package/src/modules/core/views/utils/vue-app-renderer.js +12 -0
  560. package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
  561. package/src/modules/events/components/pages/Events.vue +1 -0
  562. package/src/modules/events/components/pages/EventsBackoffice.vue +23 -48
  563. package/src/modules/events/components/sections/List.vue +2 -2
  564. package/src/modules/events/events.client.js +44 -17
  565. package/src/modules/events/router/events.backoffice.router.js +80 -0
  566. package/src/modules/events/router/events.organization.router.js +80 -0
  567. package/src/modules/events/router/events.router.js +55 -325
  568. package/src/modules/events/router/events.user.router.js +49 -0
  569. package/src/modules/governance/TASK-TRACKER.MD +534 -39
  570. package/src/modules/governance/configs/navigation.initiative.config.js +30 -0
  571. package/src/modules/governance/controllers/routes/initiatives.routes.js +55 -8
  572. package/src/modules/governance/controllers/routes/{milestones.routes.js → sprints.routes.js} +22 -22
  573. package/src/modules/governance/controllers/routes/tasks.routes.js +2 -2
  574. package/src/modules/governance/governance.client.js +1 -4
  575. package/src/modules/governance/governance.server.js +6 -6
  576. package/src/modules/governance/middlewares/initiatives.verifier.js +60 -0
  577. package/src/modules/governance/middlewares/{milestones.verifier.js → sprints.verifier.js} +10 -10
  578. package/src/modules/governance/middlewares/tasks.verifier.js +4 -4
  579. package/src/modules/governance/middlewares/votings.verifier.js +25 -7
  580. package/src/modules/governance/models/{milestone.model.js → sprint.model.js} +11 -11
  581. package/src/modules/governance/models/task.model.js +4 -4
  582. package/src/modules/governance/models/voting.model.js +10 -5
  583. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +8 -13
  584. package/src/modules/governance/views/components/blocks/{CardMilestoneItem.vue → CardSprintItem.vue} +16 -17
  585. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +7 -9
  586. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +7 -9
  587. package/src/modules/governance/views/components/pages/Governance.vue +13 -34
  588. package/src/modules/governance/views/components/pages/Initiative.vue +73 -154
  589. package/src/modules/governance/views/components/pages/InitiativeCreate.vue +44 -7
  590. package/src/modules/governance/views/components/pages/{Roadmap.vue → InitiativeSprints.vue} +70 -69
  591. package/src/modules/governance/views/components/pages/Initiatives.vue +23 -108
  592. package/src/modules/governance/views/components/pages/{Milestone.vue → Sprint.vue} +43 -41
  593. package/src/modules/governance/views/components/pages/SprintCreate.vue +55 -0
  594. package/src/modules/governance/views/components/pages/Task.vue +95 -88
  595. package/src/modules/governance/views/components/pages/TaskCreate.vue +47 -9
  596. package/src/modules/governance/views/components/pages/Tasks.vue +25 -21
  597. package/src/modules/governance/views/components/pages/Voting.vue +84 -68
  598. package/src/modules/governance/views/components/pages/VotingCreate.vue +48 -8
  599. package/src/modules/governance/views/components/pages/Votings.vue +12 -57
  600. package/src/modules/governance/views/components/partials/EmptyState.vue +1 -1
  601. package/src/modules/governance/views/components/partials/LinkedEntityCard.vue +23 -11
  602. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
  603. package/src/modules/governance/views/components/partials/VoteForm.vue +3 -3
  604. package/src/modules/governance/views/components/partials/VotingResults.vue +13 -19
  605. package/src/modules/governance/views/components/sections/FormInitiativeDetails.vue +413 -15
  606. package/src/modules/governance/views/components/sections/FormSprintDetails.vue +156 -0
  607. package/src/modules/governance/views/components/sections/FormTaskDetails.vue +125 -21
  608. package/src/modules/governance/views/components/sections/FormVotingDetails.vue +136 -17
  609. package/src/modules/governance/views/components/sections/VoteForm.vue +2 -2
  610. package/src/modules/governance/views/router/governance.router.js +255 -151
  611. package/src/modules/governance/views/store/initiatives.js +23 -2
  612. package/src/modules/governance/views/store/sprints.js +102 -0
  613. package/src/modules/governance/views/store/tasks.js +25 -9
  614. package/src/modules/governance/views/store/votings.js +106 -27
  615. package/src/modules/icons/icons.client.js +1 -1
  616. package/src/modules/inventory/components/pages/InventoryEdit.vue +1 -1
  617. package/src/modules/music/components/sections/PopularTracks.vue +52 -0
  618. package/src/modules/music/music.client.js +8 -1
  619. package/src/modules/music/router/music.router.js +13 -1
  620. package/src/modules/notifications/components/elements/NotificationBadge.vue +8 -33
  621. package/src/modules/notifications/components/sections/NotificationPreferences.vue +110 -48
  622. package/src/modules/notifications/notifications.client.js +78 -57
  623. package/src/modules/notifications/router/notifications.router.js +32 -15
  624. package/src/modules/notifications/services/notification.service.js +15 -6
  625. package/src/modules/notifications/services/web-push.service.js +2 -0
  626. package/src/modules/orders/components/blocks/CardApplication.vue +20 -40
  627. package/src/modules/orders/components/blocks/CardCustomer.vue +35 -55
  628. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -2
  629. package/src/modules/orders/components/blocks/CardOrderUser.vue +2 -2
  630. package/src/modules/orders/components/forms/FormCustomerDetails.vue +2 -2
  631. package/src/modules/orders/components/pages/Applications.vue +59 -57
  632. package/src/modules/orders/components/pages/Customers.vue +40 -27
  633. package/src/modules/orders/components/pages/OrderCreate.vue +1 -1
  634. package/src/modules/orders/components/sections/ApplicationDetails.vue +1 -4
  635. package/src/modules/orders/components/sections/CustomerDetails.vue +1 -4
  636. package/src/modules/orders/controllers/orders.controller.js +113 -0
  637. package/src/modules/orders/middlewares/applications.verifier.js +13 -37
  638. package/src/modules/orders/middlewares/customers.verifier.js +44 -121
  639. package/src/modules/orders/models/customer.model.js +0 -1
  640. package/src/modules/orders/routes/applications.routes.js +108 -50
  641. package/src/modules/orders/routes/orders.routes.js +9 -1
  642. package/src/modules/organizations/components/blocks/CardOrganization.vue +12 -4
  643. package/src/modules/organizations/components/forms/DepartmentForm.vue +9 -4
  644. package/src/modules/organizations/components/pages/Members.vue +62 -1
  645. package/src/modules/organizations/components/pages/Organization.new.vue +17 -17
  646. package/src/modules/organizations/components/pages/Organization.vue +8 -1
  647. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +1 -1
  648. package/src/modules/organizations/components/pages/OrganizationEdit.vue +11 -4
  649. package/src/modules/organizations/components/pages/Organizations.vue +33 -46
  650. package/src/modules/organizations/controllers/invites.controller.js +19 -0
  651. package/src/modules/organizations/controllers/memberships.controller.js +1 -0
  652. package/src/modules/organizations/organizations.client.js +48 -7
  653. package/src/modules/organizations/router/organizations.backoffice.router.js +15 -0
  654. package/src/modules/organizations/router/organizations.router.js +72 -112
  655. package/src/modules/organizations/router/organizations.user.router.js +15 -0
  656. package/src/modules/pages/pages.client.js +1 -1
  657. package/src/modules/pages/views/router/pages.router.js +95 -15
  658. package/src/modules/products/components/blocks/CardPosition.vue +1 -1
  659. package/src/modules/products/components/pages/Products.vue +3 -3
  660. package/src/modules/rents/controllers/services/rents.services.js +1 -0
  661. package/src/modules/rents/rents.client.js +1 -1
  662. package/src/modules/rents/views/router/rents.router.js +93 -33
  663. package/src/modules/reports/reports.client.js +1 -1
  664. package/src/modules/wallet/wallet.client.js +1 -1
  665. package/src/styles/theme.scss +5 -3
  666. package/dist/engagement.schema-fh6W1fb_.js +0 -24
  667. package/dist/main-DQm5pwFO.js +0 -8213
  668. package/dist/martyrs/dist/main-DQm5pwFO.js +0 -1080
  669. package/dist/martyrs/dist/main-DQm5pwFO.js.map +0 -1
  670. package/dist/martyrs/dist/web-n_ivHO3v.js +0 -55
  671. package/dist/martyrs/dist/web-n_ivHO3v.js.map +0 -1
  672. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  673. package/dist/martyrs/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  674. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js +0 -8
  675. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/index.js.map +0 -1
  676. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js +0 -73
  677. package/dist/martyrs/node_modules/.pnpm/@capacitor_preferences@7.0.2_@capacitor_core@7.4.4/node_modules/@capacitor/preferences/dist/esm/web.js.map +0 -1
  678. package/dist/martyrs/src/components/Address/Address.vue.js.map +0 -1
  679. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  680. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +0 -1
  681. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  682. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +0 -1
  683. package/dist/martyrs/src/modules/community/community.router.js +0 -124
  684. package/dist/martyrs/src/modules/community/community.router.js.map +0 -1
  685. package/dist/martyrs/src/modules/icons/icons.router.js.map +0 -1
  686. package/dist/martyrs/src/modules/music/music.router.js.map +0 -1
  687. package/dist/martyrs/src/modules/notifications/notifications.router.js.map +0 -1
  688. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +0 -200
  689. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +0 -1
  690. package/dist/martyrs/src/modules/organizations/organizations.router.js +0 -145
  691. package/dist/martyrs/src/modules/organizations/organizations.router.js.map +0 -1
  692. package/dist/martyrs/src/modules/pages/pages.router.js.map +0 -1
  693. package/dist/martyrs/src/modules/rents/rents.router.js.map +0 -1
  694. package/dist/martyrs/src/modules/reports/reports.router.js.map +0 -1
  695. package/dist/martyrs.css +0 -1
  696. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js +0 -487
  697. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +0 -1
  698. 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
  699. 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
  700. 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
  701. 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
  702. 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
  703. 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
  704. 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
  705. 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
  706. 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
  707. 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
  708. package/dist/web-n_ivHO3v.js +0 -54
  709. package/src/jit/.claude/settings.local.json +0 -10
  710. package/src/modules/community/community.router.js +0 -107
  711. package/src/modules/governance/governance.router.js +0 -350
  712. package/src/modules/governance/seed-governance.js +0 -348
  713. package/src/modules/governance/views/components/pages/InitiativeMilestones.vue +0 -159
  714. package/src/modules/governance/views/router/goverance.router.js +0 -290
  715. package/src/modules/governance/views/store/votes.js +0 -113
  716. package/src/modules/icons/icons.router.js +0 -29
  717. package/src/modules/marketplace/marketplace.router.js +0 -66
  718. package/src/modules/music/.claude/settings.local.json +0 -8
  719. package/src/modules/music/music.router.js +0 -188
  720. package/src/modules/notifications/notifications.router.js +0 -47
  721. package/src/modules/orders/orders.router.js +0 -255
  722. package/src/modules/organizations/organizations.router.js +0 -123
  723. package/src/modules/organizations/router/backoffice.router.js +0 -27
  724. package/src/modules/organizations/router/departments.router.js +0 -15
  725. package/src/modules/organizations/router/members.router.js +0 -20
  726. package/src/modules/pages/pages.router.js +0 -107
  727. package/src/modules/rents/rents.router.js +0 -115
  728. package/src/modules/reports/reports.router.js +0 -33
  729. package/src/modules/wallet/wallet.router.js +0 -45
@@ -1 +1 @@
1
- {"version":3,"file":"CardOrganization.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/CardOrganization.vue"],"sourcesContent":["<template>\n <div\n class=\"o-hidden pos-relative cursor-pointer bg-light \"\n @click=\"$router.push('/organizations/' + organization._id)\"\n >\n <div class=\"h-4r flex pos-relative\">\n\n <img loading=\"lazy\" \n v-if=\"organization.profile.photo && organization.profile.photo.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + organization.profile.photo\" \n class=\"h-4r w-4r radius-extra bg-white\" \n style=\"flex: 0 1 auto\"\n />\n\n <PlaceholderOrganizationPic\n v-else\n class=\"w-4r h-max radius-medium\"\n style=\"flex: 0 1 auto\"\n />\n \n <div class=\"pos-relative w-100 flex-h-center flex flex-column flex-child-1 flex-child mn-l-thin w-100\">\n \n <!-- <Text :text=\"organization.profile.name ? organization.profile.name : ''\" :maxLen=\"18\" class=\"h3 d-block\"/> -->\n <p class=\"h4 truncate w-100\">{{organization.profile.name}}</p>\n <!-- RATING -->\n <!-- <div v-if=\"showRating && organization.rating\" class=\"w-max star-container flex-v-center flex\">\n <img loading=\"lazy\" \n v-for=\"i in 5\"\n class=\"i-small mn-r-thin\"\n :src=\"i <= organization.rating.median ? '/icons/star.svg' : '/icons/star-stroke.svg'\"\n >\n\n <span class=\"p-small fw-semi mn-r-thin\">{{organization.rating.median}}</span>\n <span class=\"p-small\">({{organization.rating.amount}})</span>\n </div> -->\n\n <div v-if=\"showFollowers || showTags\" class=\"mn-t-micro gap-micro flex-nowrap flex\">\n\n <Chips \n v-if=\"showTags && organization.profile.tags?.length > 0\" \n :chips=\"organization.profile.tags.slice(0,3)\"\n class=\"pos-relative t-trimmed\"\n >\n <div v-if=\"showFollowers\" class=\"truncate pos-relative p-regular mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small fw-medium bg-white\">\n <p class=\"truncate\">{{organization.numberOfSubscribers}} followers</p>\n\n <ButtonToggleMembership\n v-if=\"\n user?._id \n && organization.owner !== user._id\n \"\n :user=\"user._id\"\n :type=\"'organization'\" \n :role=\"'subscriber'\" \n :target=\"organization._id\" \n :status=\"organization.isSubscriber\" \n :text=\"{create: '+', remove: '-'}\"\n @updateMembership=\"event => emits('updateMembership', event, 'isSubscriber', 'numberOfSubscribers')\"\n class=\"i-medium\" \n />\n </div>\n </Chips>\n </div>\n\n </div>\n\n </div>\n\n\n <div \n v-if=\"showProducts && organization.products\" \n class=\"mn-b-small ws-nowrap mn-t-small w-100 flex-nowrap flex flex-v-center pd-small bg-white radius-medium\"\n >\n <IconTime class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-micro\">\n {{\n organization.distance ? \n organization.distance > 50 ? \n '3-5 days' : \n Math.ceil((5 + 5 + 3 * organization.distance) / 5) * 5 \n + '-' \n + Math.ceil((15 + 5 + 3 * organization.distance) / 5) * 5 \n + ' MIN' : 'Unavailable' \n }} \n </span>\n\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"t-transp t-grey mn-r-micro\">|</span>\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"mn-r-thin\">{{organization.distance ? organization.distance.toFixed(1) + 'KM' : ''}}</span>\n <!-- <span class=\"mn-r-thin\">{{organization.nearestSpotDistance}}</span> -->\n <!-- <IconPrice class=\"i-medium mn-r-micro\"/> -->\n <!-- <span class=\"mn-r-thin\">{{returnCurrency()}}500 </span> -->\n <IconShopcart class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-thin\"> {{organization.products.length}} products</span>\n </div>\n\n <div v-if=\"showProducts && organization.products?.length > 0\" class=\"w-100 o-scroll scroll-hide radius-medium\">\n <div class=\"w-max flex-nowrap flex gap-thin\">\n <CardOrderItem\n @click.stop=\"$router.push(`/organizations/${organization._id}/products/${product._id}`)\"\n v-for=\"product in organization.products.slice(0,5)\"\n :key=\"product._id\"\n :editable=\"false\"\n :productId=\"product._id\"\n :variantId=\"product.variants?.[0]?._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.variants?.[0]?.quantity || 1\"\n :unit=\"product.variants?.[0]?.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.variants?.[0]?.price\"\n class=\"pd-thin w-15r radius-medium bg-white\"\n\n />\n <button class=\"pd-thin w-15r radius-medium bg-main button\">\n View menu\n </button>\n </div>\n </div>\n\n </div>\n</template>\n\n<script setup>\n import { ref } from 'vue'\n import { useRouter } from 'vue-router'\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n\n import Text from '@martyrs/src/components/Text/Text.vue'\n import Chips from '@martyrs/src/components/Chips/Chips.vue'\n\n import PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\n import IconPrice from '@martyrs/src/modules/icons/entities/IconPrice.vue'\n import IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue'\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n import ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n\n const props = defineProps({\n // Model\n user: String,\n organization: Object,\n // View\n showProducts: {\n type: Boolean,\n default: false\n },\n showFollowers: {\n type: Boolean,\n default: true\n },\n showRating: {\n type: Boolean,\n default: false\n },\n showFeatured: {\n type: Boolean,\n default: true\n },\n showTags: {\n type: Boolean,\n default: true\n },\n });\n\n const emits = defineEmits(['updateMembership'])\n\n const router = useRouter();\n</script>\n\n<style>\n\n.t-trimmed {\n font-size: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsKE,UAAM,QAAQ;AAEC,cAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardOrganization.vue.js","sources":["../../../../../../../src/modules/organizations/components/blocks/CardOrganization.vue"],"sourcesContent":["<template>\n <div\n class=\"o-hidden pos-relative cursor-pointer bg-light \"\n @click=\"$router.push({ name: 'OrganizationProfile', params: { _id: organization._id } })\"\n >\n <div class=\"h-4r flex pos-relative\">\n\n <img loading=\"lazy\" \n v-if=\"organization.profile.photo && organization.profile.photo.length > 0\"\n :src=\"(FILE_SERVER_URL || '') + organization.profile.photo\" \n class=\"h-4r w-4r radius-extra bg-white\" \n style=\"flex: 0 1 auto\"\n />\n\n <PlaceholderOrganizationPic\n v-else\n class=\"w-4r h-max radius-medium\"\n style=\"flex: 0 1 auto\"\n />\n \n <div class=\"pos-relative w-100 flex-h-center flex flex-column flex-child-1 flex-child mn-l-thin w-100\">\n \n <!-- <Text :text=\"organization.profile.name ? organization.profile.name : ''\" :maxLen=\"18\" class=\"h3 d-block\"/> -->\n <p class=\"h4 truncate w-100\">{{organization.profile.name}}</p>\n <!-- RATING -->\n <!-- <div v-if=\"showRating && organization.rating\" class=\"w-max star-container flex-v-center flex\">\n <img loading=\"lazy\" \n v-for=\"i in 5\"\n class=\"i-small mn-r-thin\"\n :src=\"i <= organization.rating.median ? '/icons/star.svg' : '/icons/star-stroke.svg'\"\n >\n\n <span class=\"p-small fw-semi mn-r-thin\">{{organization.rating.median}}</span>\n <span class=\"p-small\">({{organization.rating.amount}})</span>\n </div> -->\n\n <div v-if=\"showFollowers || showTags\" class=\"mn-t-micro gap-micro flex-nowrap flex\">\n\n <Chips \n v-if=\"showTags && organization.profile.tags?.length > 0\" \n :chips=\"organization.profile.tags.slice(0,3)\"\n class=\"pos-relative t-trimmed\"\n >\n <div v-if=\"showFollowers\" class=\"truncate pos-relative p-regular mn-r-nano d-inline-block w-max pd-b-micro pd-t-micro pd-r-thin pd-l-thin radius-small fw-medium bg-white\">\n <p class=\"truncate\">{{organization.numberOfSubscribers}} followers</p>\n\n <ButtonToggleMembership\n v-if=\"\n user?._id \n && organization.owner !== user._id\n \"\n :user=\"user._id\"\n :type=\"'organization'\" \n :role=\"'subscriber'\" \n :target=\"organization._id\" \n :status=\"organization.isSubscriber\" \n :text=\"{create: '+', remove: '-'}\"\n @updateMembership=\"event => emits('updateMembership', event, 'isSubscriber', 'numberOfSubscribers')\"\n class=\"i-medium\" \n />\n </div>\n </Chips>\n </div>\n\n </div>\n\n </div>\n\n\n <div \n v-if=\"showProducts && organization.products\" \n class=\"mn-b-small ws-nowrap mn-t-small w-100 flex-nowrap flex flex-v-center pd-small bg-white radius-medium\"\n >\n <IconTime class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-micro\">\n {{\n organization.distance ? \n organization.distance > 50 ? \n '3-5 days' : \n Math.ceil((5 + 5 + 3 * organization.distance) / 5) * 5 \n + '-' \n + Math.ceil((15 + 5 + 3 * organization.distance) / 5) * 5 \n + ' MIN' : 'Unavailable' \n }} \n </span>\n\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"t-transp t-dark mn-r-micro\">|</span>\n <span v-if=\"organization.distance && organization.distance < 50\" class=\"mn-r-thin\">{{organization.distance ? organization.distance.toFixed(1) + 'KM' : ''}}</span>\n <!-- <span class=\"mn-r-thin\">{{organization.nearestSpotDistance}}</span> -->\n <!-- <IconPrice class=\"i-medium mn-r-micro\"/> -->\n <!-- <span class=\"mn-r-thin\">{{returnCurrency()}}500 </span> -->\n <IconShopcart class=\"i-medium t-transp mn-r-micro\"/>\n <span class=\"mn-r-thin\"> {{organization.products.length}} products</span>\n </div>\n\n <div v-if=\"showProducts && organization.products?.length > 0\" class=\"w-100 o-scroll scroll-hide radius-medium\">\n <div class=\"w-max flex-nowrap flex gap-thin\">\n <CardOrderItem\n @click.stop=\"$router.push(`/organizations/${organization._id}/products/${product._id}`)\"\n v-for=\"product in organization.products.slice(0,5)\"\n :key=\"product._id\"\n :editable=\"false\"\n :productId=\"product._id\"\n :variantId=\"product.variants?.[0]?._id\"\n :images=\"product.images\"\n :name=\"product.name\"\n :quantity=\"product.variants?.[0]?.quantity || 1\"\n :unit=\"product.variants?.[0]?.unit\"\n :dates=\"product.date\"\n :listing=\"product.listing\"\n :price=\"product.variants?.[0]?.price\"\n class=\"pd-thin w-15r radius-medium bg-white\"\n\n />\n <button class=\"pd-thin w-15r radius-medium bg-main button\">\n View menu\n </button>\n </div>\n </div>\n\n </div>\n</template>\n\n<script setup>\n import { ref, computed } from 'vue'\n import { useRoute, useRouter } from 'vue-router'\n import CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue';\n\n import Text from '@martyrs/src/components/Text/Text.vue'\n import Chips from '@martyrs/src/components/Chips/Chips.vue'\n\n import PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\n import IconPrice from '@martyrs/src/modules/icons/entities/IconPrice.vue'\n import IconShopcart from '@martyrs/src/modules/icons/entities/IconShopcart.vue'\n import IconTime from '@martyrs/src/modules/icons/entities/IconTime.vue'\n\n import ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n\n const props = defineProps({\n // Model\n user: String,\n organization: Object,\n // View\n showProducts: {\n type: Boolean,\n default: false\n },\n showFollowers: {\n type: Boolean,\n default: true\n },\n showRating: {\n type: Boolean,\n default: false\n },\n showFeatured: {\n type: Boolean,\n default: true\n },\n showTags: {\n type: Boolean,\n default: true\n },\n });\n\n const emits = defineEmits(['updateMembership'])\n\n const route = useRoute();\n const router = useRouter();\n\n const routePrefix = computed(() => {\n const ctx = route.meta.context\n if (ctx === 'user') return 'User'\n if (ctx === 'backoffice') return 'Backoffice'\n return ''\n })\n</script>\n\n<style>\n\n.t-trimmed {\n font-size: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsKE,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAEJ,aAAS,MAAM;AACjC,YAAM,MAAM,MAAM,KAAK;AACvB,UAAI,QAAQ,OAAQ,QAAO;AAC3B,UAAI,QAAQ,aAAc,QAAO;AACjC,aAAO;AAAA,IACT,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { createBlock, openBlock, withCtx, createTextVNode, toDisplayString } from "vue";
2
- import _sfc_main$1 from "../../../../components/Button/Button.vue.js";
2
+ import Button from "../../../../components/Button/Button.vue2.js";
3
3
  import membershipsStore from "../../store/memberships.store.js";
4
4
  const _sfc_main = {
5
5
  __name: "ButtonToggleMembership",
@@ -82,7 +82,7 @@ const _sfc_main = {
82
82
  }
83
83
  }
84
84
  return (_ctx, _cache) => {
85
- return openBlock(), createBlock(_sfc_main$1, {
85
+ return openBlock(), createBlock(Button, {
86
86
  submit: toggleMembership,
87
87
  showSucces: false,
88
88
  class: "bg-main button-small button"
@@ -1,5 +1,5 @@
1
1
  import { ref, createElementBlock, openBlock, createElementVNode, createVNode, createCommentVNode, withCtx, Fragment, renderList, normalizeClass, createBlock, toDisplayString, createTextVNode } from "vue";
2
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
2
+ import Button from "../../../../components/Button/Button.vue2.js";
3
3
  import _sfc_main$1 from "../../../../components/Feed/Feed.vue.js";
4
4
  import PlaceholderUserpic from "../../../icons/placeholders/PlaceholderUserpic.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/navigation/IconCheck.vue.js";
@@ -176,7 +176,7 @@ const _sfc_main = {
176
176
  selectedUsers.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_10, [
177
177
  createElementVNode("p", _hoisted_11, "Selected: " + toDisplayString(selectedUsers.value.length) + " user(s)", 1)
178
178
  ])) : createCommentVNode("", true),
179
- createVNode(_sfc_main$3, {
179
+ createVNode(Button, {
180
180
  submit: addSelectedUsers,
181
181
  disabled: selectedUsers.value.length === 0,
182
182
  class: "w-100 bg-main"
@@ -1,12 +1,12 @@
1
- import { computed, ref, reactive, createElementBlock, openBlock, createVNode, createElementVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, toDisplayString, createCommentVNode, unref, normalizeClass } from "vue";
1
+ import { computed, ref, reactive, createElementBlock, openBlock, createVNode, createElementVNode, createCommentVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, toDisplayString, unref, normalizeClass } from "vue";
2
2
  import { useRoute } from "vue-router";
3
3
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
4
4
  import Field from "../../../../components/Field/Field.vue.js";
5
5
  import _sfc_main$4 from "../../../../components/Checkbox/Checkbox.vue.js";
6
- import _sfc_main$6 from "../../../../components/Button/Button.vue.js";
7
- import _sfc_main$7 from "../../../../components/Popup/Popup.vue.js";
6
+ import Button from "../../../../components/Button/Button.vue2.js";
7
+ import _sfc_main$6 from "../../../../components/Popup/Popup.vue.js";
8
8
  import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
9
- import _sfc_main$8 from "../../../../components/Feed/Feed.vue.js";
9
+ import _sfc_main$7 from "../../../../components/Feed/Feed.vue.js";
10
10
  import _sfc_main$5 from "../../../../components/Spoiler/Spoiler.vue2.js";
11
11
  import _sfc_main$2 from "../../../auth/views/components/blocks/CardUser.vue.js";
12
12
  import _sfc_main$3 from "../../../icons/navigation/IconDelete.vue.js";
@@ -23,7 +23,11 @@ const _hoisted_7 = { class: "cols-1 gap-thin" };
23
23
  const _hoisted_8 = { class: "cursor-pointer flex-v-center flex gap-thin" };
24
24
  const _hoisted_9 = { class: "t-small" };
25
25
  const _hoisted_10 = { class: "cols-1 gap-thin mn-t-thin" };
26
- const _hoisted_11 = { class: "flex gap-thin mn-t-medium" };
26
+ const _hoisted_11 = {
27
+ key: 0,
28
+ class: "bg-light pd-medium o-hidden radius-medium mn-t-thin"
29
+ };
30
+ const _hoisted_12 = { class: "flex gap-thin mn-t-medium" };
27
31
  const _sfc_main = {
28
32
  __name: "DepartmentForm",
29
33
  props: {
@@ -311,31 +315,34 @@ const _sfc_main = {
311
315
  }), 128))
312
316
  ])
313
317
  ]),
314
- createElementVNode("div", _hoisted_11, [
315
- editingDepartment.value ? (openBlock(), createBlock(_sfc_main$6, {
316
- key: 0,
318
+ editingDepartment.value ? (openBlock(), createElementBlock("div", _hoisted_11, [
319
+ _cache[10] || (_cache[10] = createElementVNode("h3", { class: "mn-b-small" }, "Delete Department", -1)),
320
+ _cache[11] || (_cache[11] = createElementVNode("p", { class: "p-regular mn-b-medium" }, "Once you delete this department, all associated data including members and settings will be permanently removed. This action cannot be undone.", -1)),
321
+ createVNode(Button, {
317
322
  submit: onDelete,
318
323
  showSuccess: true,
319
324
  showLoader: true,
320
325
  class: "bg-red"
321
326
  }, {
322
327
  default: withCtx(() => _cache[9] || (_cache[9] = [
323
- createTextVNode(" Delete ")
328
+ createTextVNode(" Delete Department ")
324
329
  ])),
325
330
  _: 1
326
- })) : createCommentVNode("", true),
327
- createVNode(_sfc_main$6, {
331
+ })
332
+ ])) : createCommentVNode("", true),
333
+ createElementVNode("div", _hoisted_12, [
334
+ createVNode(Button, {
328
335
  showSuccess: false,
329
336
  showLoader: false,
330
337
  class: "bg-grey t-white w-100",
331
338
  onClick: _cache[4] || (_cache[4] = ($event) => _ctx.$emit("close"))
332
339
  }, {
333
- default: withCtx(() => _cache[10] || (_cache[10] = [
340
+ default: withCtx(() => _cache[12] || (_cache[12] = [
334
341
  createTextVNode(" Cancel ")
335
342
  ])),
336
343
  _: 1
337
344
  }),
338
- createVNode(_sfc_main$6, {
345
+ createVNode(Button, {
339
346
  class: "bg-main w-100",
340
347
  submit: saveDepartment
341
348
  }, {
@@ -345,14 +352,14 @@ const _sfc_main = {
345
352
  _: 1
346
353
  })
347
354
  ]),
348
- createVNode(_sfc_main$7, {
355
+ createVNode(_sfc_main$6, {
349
356
  title: "Add member",
350
357
  onClosePopup: closeMemberPopup,
351
358
  isPopupOpen: isOpenAddMemberPopup.value,
352
359
  class: "bg-white w-max-30r radius-medium pd-big"
353
360
  }, {
354
361
  default: withCtx(() => [
355
- createVNode(_sfc_main$8, {
362
+ createVNode(_sfc_main$7, {
356
363
  search: {
357
364
  placeholder: "Search member...",
358
365
  class: "bg-light mn-b-thin"
@@ -1 +1 @@
1
- {"version":3,"file":"DepartmentForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/DepartmentForm.vue"],"sourcesContent":["<template>\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <Block\n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n <div\n class=\"cols-[fit-content(100%)_1fr] mobile:cols-1\"\n >\n <UploadImage \n v-model:photo=\"currentDepartment.profile.photo\"\n :uploadPath=\"'organizations/' + currentDepartment.profile.name + '/departments'\"\n class=\"w-8r aspect-1x1 o-hidden mn-r-small radius-extra\" \n />\n <div class=\"w-100 flex-child-grow-1 flex-child\">\n <Field \n v-model:field=\"currentDepartment.profile.name\" \n label=\"Name\" \n placeholder=\"Department Name\" \n class=\"mn-b-small bg-white radius-small pd-medium\"\n />\n <Field \n v-model:field=\"currentDepartment.profile.description\" \n label=\"Description\" \n placeholder=\"Department description (max 120 symbols)\" \n class=\"bg-white radius-small pd-medium\"\n /> \n </div>\n </div>\n </Block>\n\n <Block\n title=\"Team\"\n placeholder=\"No members added yet\"\n :actions=\"[{\n label: '+',\n function: () => openMemberPopup()\n }]\"\n class=\"cols-1 gap-thin mn-b-thin\"\n > \n <CardUser \n class=\"h-4r bg-white pd-thin radius-medium w-100\" \n v-for=\"(member, index) in currentDepartment.members\" \n :key=\"member._id || index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(member)\n }\"\n />\n </Block>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium mn-b-thin\">\n <h3 class=\"mn-b-semi\">Department Settings</h3>\n \n <p class=\"p-regular mn-b-small\">Please settings for your department:</p>\n <div class=\"cols-1 gap-thin\">\n <Checkbox \n label=\"Hidden department\"\n name=\"hidden\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n @update:radio=\"updated => currentDepartment.hidden = !currentDepartment.hidden\"\n :radio=\"currentDepartment.hidden\"\n />\n </div>\n </div>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium\">\n <h3 class=\"mn-b-semi\">Accesses</h3>\n \n <p class=\"p-regular mn-b-small\">Please select organization accesses for user in department:</p>\n \n <div class=\"cols-1 gap-thin\">\n <div v-for=\"(actions, category) in currentDepartment.accesses\" :key=\"category\" class=\"mn-b-small\">\n <Spoiler :status=\"false\">\n <template #header=\"{ isOpen }\">\n <h4 class=\"cursor-pointer flex-v-center flex gap-thin\">\n {{ category.charAt(0).toUpperCase() + category.slice(1) }}\n <span class=\"t-small\">{{ isOpen ? '▼' : '▶' }}</span>\n </h4>\n </template>\n <template #content>\n <div class=\"cols-1 gap-thin mn-t-thin\">\n <Checkbox\n v-for=\"(value, action) in actions\"\n :key=\"action\"\n :label=\"action\"\n :name=\"action\"\n :radio=\"value\"\n @update:radio=\"updated => (currentDepartment.accesses[category][action] = !value)\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n />\n </div>\n </template>\n </Spoiler>\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"flex gap-thin mn-t-medium\">\n <Button\n v-if=\"editingDepartment\"\n :submit=\"onDelete\"\n :showSuccess=\"true\"\n :showLoader=\"true\"\n class=\"bg-red\"\n >\n Delete\n </Button>\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"bg-grey t-white w-100\"\n @click=\"$emit('close')\"\n >\n Cancel\n </Button>\n <Button\n class=\"bg-main w-100\"\n :submit=\"saveDepartment\"\n >\n {{ editingDepartment ? 'Update Department' : 'Create Department' }}\n </Button>\n </div>\n\n <!-- Member Selection Popup -->\n <Popup \n title=\"Add member\" \n @close-popup=\"closeMemberPopup\" \n :isPopupOpen=\"isOpenAddMemberPopup\"\n class=\"bg-white w-max-30r radius-medium pd-big\"\n >\n <Feed\n :search=\"{\n placeholder: 'Search member...',\n class: 'bg-light mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members in organization.'\n }\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options),\n state: null\n }\"\n :options=\"{\n target: organizationId,\n role: ['member', 'owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"bg-light pd-medium w-min-20r w-max-40r radius-medium h-max-20r o-scroll\"\n >\n <CardUser\n v-for=\"(user, index) in items\" \n :key=\"user._id\"\n :user=\"user.user\"\n :photo=\"user.user.profile?.photo\"\n :name=\"user.user.profile?.name || user.user.phone || user.user.email\"\n :disabled=\"isDuplicateMember(user.user._id)\"\n @click=\"() => addMemberToDepartment(user.user)\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n :class=\"{ 'opacity-50 cursor-not-allowed': isDuplicateMember(user.user._id) }\"\n />\n </Feed>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive, computed } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\nimport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\nconst route = useRoute();\n\nconst props = defineProps({\n department: Object,\n organizationId: String\n});\n\nconst emit = defineEmits(['close', 'saved']);\n\n// State\nconst editingDepartment = computed(() => !!props.department?._id);\nconst isOpenAddMemberPopup = ref(false);\n\n// Create default department structure\nconst createDefaultDepartment = () => ({\n organization: props.organizationId,\n profile: {\n photo: '',\n name: '',\n description: '',\n categories: [],\n },\n address: '',\n location: {\n lat: null,\n lng: null,\n },\n worktime: [],\n delivery: [],\n payment: [],\n members: [],\n subdepartments: [],\n hidden: false,\n accesses: {\n categories: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n rents: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n spots: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n members: {\n read: false,\n edit: false,\n delete: false,\n },\n posts: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n events: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n tickets: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n gallery: {\n read: false,\n create: false,\n edit: false,\n delete: false,\n },\n inventory: {\n read: false,\n edit: false,\n delete: false,\n },\n products: {\n read: false,\n edit: false,\n delete: false,\n },\n orders: {\n read: false,\n confirm: false,\n delete: false,\n },\n departments: {\n read: false,\n edit: false,\n delete: false,\n },\n },\n});\n\n// Current department reactive state - create deep copy to avoid mutating original\nconst currentDepartment = reactive(\n props.department ? JSON.parse(JSON.stringify(props.department)) : createDefaultDepartment()\n);\n\n// Member management\nfunction openMemberPopup() {\n isOpenAddMemberPopup.value = true;\n}\n\nfunction closeMemberPopup() {\n isOpenAddMemberPopup.value = false;\n}\n\nfunction isDuplicateMember(userId) {\n return currentDepartment.members.some(member => \n member.user._id === userId || member._id === userId\n );\n}\n\nfunction addMemberToDepartment(user) {\n if (!isDuplicateMember(user._id)) {\n currentDepartment.members.push({ \n _id: user._id, \n user: user, \n position: 'Member' \n });\n closeMemberPopup();\n } else {\n store.core.actions.setError({ message: 'This user is already a member of this department' });\n }\n}\n\nfunction removeMember(member) {\n if (confirm(\"Are you sure you want to remove this member?\")) {\n const index = currentDepartment.members.findIndex(m => \n (m.user._id === member.user._id) || (m._id === member._id)\n );\n if (index > -1) {\n currentDepartment.members.splice(index, 1);\n }\n }\n}\n\n// Save/Delete operations\nasync function saveDepartment() {\n try {\n // Prepare department data\n const departmentData = {\n ...currentDepartment,\n organization: props.organizationId\n };\n\n let result;\n if (editingDepartment.value) {\n // Update existing department\n result = await departmentsStore.update({\n ...departmentData,\n _id: props.department._id\n });\n } else {\n // Create new department\n result = await departmentsStore.create(departmentData);\n }\n\n emit('saved', result);\n emit('close');\n } catch (error) {\n console.error('Error saving department:', error);\n store.core.actions.setError(error);\n throw error;\n }\n}\n\nasync function onDelete() {\n if (confirm(\"Are you sure you want to delete this department?\")) {\n try {\n await departmentsStore.delete({ _id: props.department._id });\n emit('saved', null);\n emit('close');\n } catch (error) {\n console.error('Error deleting department:', error);\n store.core.actions.setError(error);\n }\n }\n}\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DepartmentForm.vue.js","sources":["../../../../../../../src/modules/organizations/components/forms/DepartmentForm.vue"],"sourcesContent":["<template>\n <div class=\"cols-1 gap-thin o-y-scroll\">\n <Block\n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n <div\n class=\"cols-[fit-content(100%)_1fr] mobile:cols-1\"\n >\n <UploadImage \n v-model:photo=\"currentDepartment.profile.photo\"\n :uploadPath=\"'organizations/' + currentDepartment.profile.name + '/departments'\"\n class=\"w-8r aspect-1x1 o-hidden mn-r-small radius-extra\" \n />\n <div class=\"w-100 flex-child-grow-1 flex-child\">\n <Field \n v-model:field=\"currentDepartment.profile.name\" \n label=\"Name\" \n placeholder=\"Department Name\" \n class=\"mn-b-small bg-white radius-small pd-medium\"\n />\n <Field \n v-model:field=\"currentDepartment.profile.description\" \n label=\"Description\" \n placeholder=\"Department description (max 120 symbols)\" \n class=\"bg-white radius-small pd-medium\"\n /> \n </div>\n </div>\n </Block>\n\n <Block\n title=\"Team\"\n placeholder=\"No members added yet\"\n :actions=\"[{\n label: '+',\n function: () => openMemberPopup()\n }]\"\n class=\"cols-1 gap-thin mn-b-thin\"\n > \n <CardUser \n class=\"h-4r bg-white pd-thin radius-medium w-100\" \n v-for=\"(member, index) in currentDepartment.members\" \n :key=\"member._id || index\" \n :user=\"member.user\" \n :photo=\"member.user.profile.photo\"\n :name=\"member.user.profile.name || member.user.phone || member.user.email || member.user._id\"\n :position=\"member.position\" \n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(member)\n }\"\n />\n </Block>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium mn-b-thin\">\n <h3 class=\"mn-b-semi\">Department Settings</h3>\n \n <p class=\"p-regular mn-b-small\">Please settings for your department:</p>\n <div class=\"cols-1 gap-thin\">\n <Checkbox \n label=\"Hidden department\"\n name=\"hidden\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n @update:radio=\"updated => currentDepartment.hidden = !currentDepartment.hidden\"\n :radio=\"currentDepartment.hidden\"\n />\n </div>\n </div>\n\n <div class=\"bg-light pd-medium o-hidden radius-medium\">\n <h3 class=\"mn-b-semi\">Accesses</h3>\n \n <p class=\"p-regular mn-b-small\">Please select organization accesses for user in department:</p>\n \n <div class=\"cols-1 gap-thin\">\n <div v-for=\"(actions, category) in currentDepartment.accesses\" :key=\"category\" class=\"mn-b-small\">\n <Spoiler :status=\"false\">\n <template #header=\"{ isOpen }\">\n <h4 class=\"cursor-pointer flex-v-center flex gap-thin\">\n {{ category.charAt(0).toUpperCase() + category.slice(1) }}\n <span class=\"t-small\">{{ isOpen ? '▼' : '▶' }}</span>\n </h4>\n </template>\n <template #content>\n <div class=\"cols-1 gap-thin mn-t-thin\">\n <Checkbox\n v-for=\"(value, action) in actions\"\n :key=\"action\"\n :label=\"action\"\n :name=\"action\"\n :radio=\"value\"\n @update:radio=\"updated => (currentDepartment.accesses[category][action] = !value)\"\n class=\"w-100 mn-r-small bg-white radius-small pd-small\"\n />\n </div>\n </template>\n </Spoiler>\n </div>\n </div>\n </div>\n\n <!-- Delete Department -->\n <div v-if=\"editingDepartment\" class=\"bg-light pd-medium o-hidden radius-medium mn-t-thin\">\n <h3 class=\"mn-b-small\">Delete Department</h3>\n <p class=\"p-regular mn-b-medium\">Once you delete this department, all associated data including members and settings will be permanently removed. This action cannot be undone.</p>\n <Button\n :submit=\"onDelete\"\n :showSuccess=\"true\"\n :showLoader=\"true\"\n class=\"bg-red\"\n >\n Delete Department\n </Button>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"flex gap-thin mn-t-medium\">\n <Button\n :showSuccess=\"false\"\n :showLoader=\"false\"\n class=\"bg-grey t-white w-100\"\n @click=\"$emit('close')\"\n >\n Cancel\n </Button>\n <Button\n class=\"bg-main w-100\"\n :submit=\"saveDepartment\"\n >\n {{ editingDepartment ? 'Update Department' : 'Create Department' }}\n </Button>\n </div>\n\n <!-- Member Selection Popup -->\n <Popup \n title=\"Add member\" \n @close-popup=\"closeMemberPopup\" \n :isPopupOpen=\"isOpenAddMemberPopup\"\n class=\"bg-white w-max-30r radius-medium pd-big\"\n >\n <Feed\n :search=\"{\n placeholder: 'Search member...',\n class: 'bg-light mn-b-thin'\n }\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members in organization.'\n }\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options),\n state: null\n }\"\n :options=\"{\n target: organizationId,\n role: ['member', 'owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"bg-light pd-medium w-min-20r w-max-40r radius-medium h-max-20r o-scroll\"\n >\n <CardUser\n v-for=\"(user, index) in items\" \n :key=\"user._id\"\n :user=\"user.user\"\n :photo=\"user.user.profile?.photo\"\n :name=\"user.user.profile?.name || user.user.phone || user.user.email\"\n :disabled=\"isDuplicateMember(user.user._id)\"\n @click=\"() => addMemberToDepartment(user.user)\"\n class=\"h-4r bg-white pd-thin radius-medium w-100 mn-b-thin\"\n :class=\"{ 'opacity-50 cursor-not-allowed': isDuplicateMember(user.user._id) }\"\n />\n </Feed>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, reactive, computed } from 'vue';\nimport { useRoute } from 'vue-router';\n\nimport UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\nimport Block from '@martyrs/src/components/Block/Block.vue';\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Spoiler from '@martyrs/src/components/Spoiler/Spoiler.vue';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\nimport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\nconst route = useRoute();\n\nconst props = defineProps({\n department: Object,\n organizationId: String\n});\n\nconst emit = defineEmits(['close', 'saved']);\n\n// State\nconst editingDepartment = computed(() => !!props.department?._id);\nconst isOpenAddMemberPopup = ref(false);\n\n// Create default department structure\nconst createDefaultDepartment = () => ({\n organization: props.organizationId,\n profile: {\n photo: '',\n name: '',\n description: '',\n categories: [],\n },\n address: '',\n location: {\n lat: null,\n lng: null,\n },\n worktime: [],\n delivery: [],\n payment: [],\n members: [],\n subdepartments: [],\n hidden: false,\n accesses: {\n categories: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n rents: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n spots: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n members: {\n read: false,\n edit: false,\n delete: false,\n },\n posts: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n events: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n tickets: {\n create: false,\n read: false,\n edit: false,\n delete: false,\n },\n gallery: {\n read: false,\n create: false,\n edit: false,\n delete: false,\n },\n inventory: {\n read: false,\n edit: false,\n delete: false,\n },\n products: {\n read: false,\n edit: false,\n delete: false,\n },\n orders: {\n read: false,\n confirm: false,\n delete: false,\n },\n departments: {\n read: false,\n edit: false,\n delete: false,\n },\n },\n});\n\n// Current department reactive state - create deep copy to avoid mutating original\nconst currentDepartment = reactive(\n props.department ? JSON.parse(JSON.stringify(props.department)) : createDefaultDepartment()\n);\n\n// Member management\nfunction openMemberPopup() {\n isOpenAddMemberPopup.value = true;\n}\n\nfunction closeMemberPopup() {\n isOpenAddMemberPopup.value = false;\n}\n\nfunction isDuplicateMember(userId) {\n return currentDepartment.members.some(member => \n member.user._id === userId || member._id === userId\n );\n}\n\nfunction addMemberToDepartment(user) {\n if (!isDuplicateMember(user._id)) {\n currentDepartment.members.push({ \n _id: user._id, \n user: user, \n position: 'Member' \n });\n closeMemberPopup();\n } else {\n store.core.actions.setError({ message: 'This user is already a member of this department' });\n }\n}\n\nfunction removeMember(member) {\n if (confirm(\"Are you sure you want to remove this member?\")) {\n const index = currentDepartment.members.findIndex(m => \n (m.user._id === member.user._id) || (m._id === member._id)\n );\n if (index > -1) {\n currentDepartment.members.splice(index, 1);\n }\n }\n}\n\n// Save/Delete operations\nasync function saveDepartment() {\n try {\n // Prepare department data\n const departmentData = {\n ...currentDepartment,\n organization: props.organizationId\n };\n\n let result;\n if (editingDepartment.value) {\n // Update existing department\n result = await departmentsStore.update({\n ...departmentData,\n _id: props.department._id\n });\n } else {\n // Create new department\n result = await departmentsStore.create(departmentData);\n }\n\n emit('saved', result);\n emit('close');\n } catch (error) {\n console.error('Error saving department:', error);\n store.core.actions.setError(error);\n throw error;\n }\n}\n\nasync function onDelete() {\n if (confirm(\"Are you sure you want to delete this department?\")) {\n try {\n await departmentsStore.delete({ _id: props.department._id });\n emit('saved', null);\n emit('close');\n } catch (error) {\n console.error('Error deleting department:', error);\n store.core.actions.setError(error);\n }\n }\n}\n</script>\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ref, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, Fragment, renderList, withCtx } from "vue";
2
2
  import Field from "../../../../components/Field/Field.vue.js";
3
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
3
+ import Button from "../../../../components/Button/Button.vue2.js";
4
4
  import _sfc_main$2 from "../../../icons/navigation/IconDelete.vue.js";
5
5
  import _sfc_main$1 from "../../../icons/navigation/IconAdd.vue.js";
6
6
  const _hoisted_1 = { class: "mn-b-thin t-transp p-regular" };
@@ -67,7 +67,7 @@ const _sfc_main = {
67
67
  ]);
68
68
  }), 128))
69
69
  ]),
70
- createVNode(_sfc_main$3, {
70
+ createVNode(Button, {
71
71
  submit: submitMembers,
72
72
  class: "w-100 bg-main"
73
73
  }, {
@@ -26,6 +26,7 @@ const _hoisted_4 = { class: "mn-b-medium" };
26
26
  const _hoisted_5 = { class: "cols-1 gap-thin" };
27
27
  const _hoisted_6 = { class: "mn-b-medium" };
28
28
  const _hoisted_7 = ["onClick"];
29
+ const _hoisted_8 = { class: "cols-1 gap-thin" };
29
30
  const _sfc_main = {
30
31
  __name: "Members",
31
32
  setup(__props) {
@@ -34,6 +35,7 @@ const _sfc_main = {
34
35
  useRouter();
35
36
  const organizationData = ref(null);
36
37
  const membersList = ref([]);
38
+ const subscribersList = ref([]);
37
39
  const invitesList = ref([]);
38
40
  const departmentsList = ref([]);
39
41
  const isLoaded = ref(false);
@@ -132,6 +134,12 @@ const _sfc_main = {
132
134
  membershipsStore.removeItem(member, membersList.value);
133
135
  }
134
136
  }
137
+ async function removeSubscriber(index, subscriber) {
138
+ if (confirm("Confirm remove of subscriber") == true) {
139
+ await membershipsStore.delete(subscriber);
140
+ membershipsStore.removeItem(subscriber, subscribersList.value);
141
+ }
142
+ }
135
143
  async function removeInvite(index, invite) {
136
144
  if (confirm("Confirm remove of invite") == true) {
137
145
  await invitesStore.delete(invite);
@@ -140,7 +148,7 @@ const _sfc_main = {
140
148
  }
141
149
  return (_ctx, _cache) => {
142
150
  return openBlock(), createElementBlock("div", _hoisted_1, [
143
- !isLoaded.value ? (openBlock(), createElementBlock("div", _hoisted_2, _cache[3] || (_cache[3] = [
151
+ !isLoaded.value ? (openBlock(), createElementBlock("div", _hoisted_2, _cache[4] || (_cache[4] = [
144
152
  createElementVNode("span", { class: "t-transp" }, "Loading...", -1)
145
153
  ]))) : (openBlock(), createElementBlock("div", _hoisted_3, [
146
154
  createElementVNode("section", _hoisted_4, [
@@ -291,6 +299,60 @@ const _sfc_main = {
291
299
  _: 1
292
300
  }, 8, ["items", "store", "options"])
293
301
  ]),
302
+ createElementVNode("section", null, [
303
+ createVNode(_sfc_main$1, {
304
+ title: "Subscribers",
305
+ class: "mn-b-small bg-light radius-medium pd-medium"
306
+ }),
307
+ createElementVNode("div", _hoisted_8, [
308
+ createVNode(_sfc_main$2, {
309
+ items: subscribersList.value,
310
+ "onUpdate:items": _cache[3] || (_cache[3] = ($event) => subscribersList.value = $event),
311
+ search: true,
312
+ states: {
313
+ empty: {
314
+ title: "No Subscribers",
315
+ description: "Currently, there are no subscribers."
316
+ }
317
+ },
318
+ store: {
319
+ read: (options) => unref(membershipsStore).read(options)
320
+ },
321
+ options: {
322
+ target: unref(route).params._id,
323
+ role: ["subscriber"]
324
+ },
325
+ class: "gap-thin cols-1"
326
+ }, {
327
+ default: withCtx(({
328
+ items
329
+ }) => [
330
+ (openBlock(true), createElementBlock(Fragment, null, renderList(items, (subscriber, index) => {
331
+ return openBlock(), createBlock(_sfc_main$3, {
332
+ key: index,
333
+ user: subscriber,
334
+ _id: subscriber.user._id,
335
+ photo: subscriber.user.profile.photo,
336
+ phone: subscriber.user.phone,
337
+ email: subscriber.user.email,
338
+ name: subscriber.user.profile.name || "No name",
339
+ role: "subscriber",
340
+ onClick: ($event) => _ctx.$router.push({ name: "User Profile", params: { _id: subscriber.user._id } }),
341
+ action: {
342
+ label: {
343
+ is: _sfc_main$4,
344
+ props: { class: "i-medium", fill: "rgb(var(--white)" }
345
+ },
346
+ method: () => removeSubscriber(index, subscriber)
347
+ },
348
+ class: "h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium"
349
+ }, null, 8, ["user", "_id", "photo", "phone", "email", "name", "onClick", "action"]);
350
+ }), 128))
351
+ ]),
352
+ _: 1
353
+ }, 8, ["items", "store", "options"])
354
+ ])
355
+ ]),
294
356
  createVNode(_sfc_main$5, {
295
357
  title: "Invite members",
296
358
  onClosePopup: closeInvitePopup,
@@ -1 +1 @@
1
- {"version":3,"file":"Members.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"t-transp\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: 'Add user to organization' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: 'Add department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover:scale-[1.05]\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: 'Invite members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-min-40r w-max-50r radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n } \n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>\n"],"names":["organization.actions","auth.state"],"mappings":"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"}
1
+ {"version":3,"file":"Members.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Members.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n <div v-if=\"!isLoaded\" class=\"flex-center flex h-20r\">\n <span class=\"t-transp\">Loading...</span>\n </div>\n <div v-else>\n <!-- Members Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n :title=\"`Members ${organizationData?.numberOfMembers ? `(${organizationData.numberOfMembers})` : ''}`\"\n :actions=\"[\n { method: openAddUsersPopup, label: 'Add user to organization' }\n ]\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"membersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Members Found',\n description: 'Currently, there are no members.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['member','owner']\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(member,index) in items\" \n :key=\"index\" \n :user=\"member\"\n :_id=\"member.user._id\"\n :photo=\"member.user.profile.photo\" \n :phone=\"member.user.phone\"\n :email=\"member.user.email\"\n :name=\"member.user.profile.name || 'No name'\"\n :role=\"member.label || member.role\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: member.user._id } })\" \n :action=\" member.role !== 'owner' ? {\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeMember(index, member)\n } : null\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Departments Section -->\n <section class=\"mn-b-medium\">\n <SectionPageTitle\n title=\"Departments\"\n :actions=\"[\n { method: () => openDepartmentPopup(), label: 'Add department' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"departmentsList\"\n :states=\"{\n empty: {\n title: 'No Departments Found',\n description: 'Currently, there are no departments available.'\n }\n }\"\n :store=\"departmentsStore\"\n :options=\"{\n organization: route.params._id,\n user: auth.state.user._id,\n }\"\n v-slot=\"{ \n items \n }\"\n >\n <div\n v-for=\"(department, index) in items\"\n :key=\"department._id\"\n @click=\"() => openDepartmentPopup(department)\"\n class=\"cursor-pointer hover:scale-[1.05]\"\n >\n <CardDepartment\n :department=\"department\"\n :organization=\"route.params._id\"\n class=\"radius-semi bg-light pos-relative mn-b-thin\"\n />\n </div>\n </Feed>\n </section>\n\n <!-- Invites Section -->\n <section>\n <SectionPageTitle\n title=\"Invites\"\n :actions=\"[\n { method: openInvitePopup, label: 'Invite members' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-medium pd-medium\"\n />\n\n <Feed\n v-model:items=\"invitesList\"\n :states=\"{\n empty: {\n title: 'No Invites Found',\n description: 'Currently, there are no pending invites.'\n }\n }\"\n :store=\"{\n read: (options) => invitesStore.read(options)\n }\"\n :options=\"{\n owner: route.params._id\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser \n v-for=\"(invite, index) in items\" \n :key=\"invite._id\" \n :user=\"{ type: 'invite'} \"\n :name=\"invite.email || invite.phone\"\n :role=\"invite.status\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeInvite(index, invite)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </section>\n\n <!-- Subscribers Section -->\n <section>\n <SectionPageTitle\n title=\"Subscribers\"\n class=\"mn-b-small bg-light radius-medium pd-medium\"\n />\n\n <div class=\"cols-1 gap-thin\">\n <Feed\n v-model:items=\"subscribersList\"\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Subscribers',\n description: 'Currently, there are no subscribers.'\n },\n }\"\n :store=\"{\n read: (options) => membershipsStore.read(options)\n }\"\n :options=\"{\n target: route.params._id,\n role: ['subscriber']\n }\"\n v-slot=\"{\n items\n }\"\n class=\"gap-thin cols-1\"\n >\n <CardUser\n v-for=\"(subscriber, index) in items\"\n :key=\"index\"\n :user=\"subscriber\"\n :_id=\"subscriber.user._id\"\n :photo=\"subscriber.user.profile.photo\"\n :phone=\"subscriber.user.phone\"\n :email=\"subscriber.user.email\"\n :name=\"subscriber.user.profile.name || 'No name'\"\n :role=\"'subscriber'\"\n @click=\"$router.push({ name: 'User Profile', params: { _id: subscriber.user._id } })\"\n :action=\"{\n label: {\n is: IconDelete,\n props: { class: 'i-medium', fill: 'rgb(var(--white)' }\n },\n method: () => removeSubscriber(index, subscriber)\n }\"\n class=\"h-4r w-100 bg-light radius-medium flex-nowrap flex pd-medium\"\n />\n </Feed>\n </div>\n </section>\n\n <!-- Invite Members Popup -->\n <Popup \n title=\"Invite members\"\n @close-popup=\"closeInvitePopup\" \n :isPopupOpen=\"isOpenInvitePopup\"\n class=\"bg-white w-min-30r w-max-30r radius-medium pd-medium\"\n >\n <InviteForm \n v-if=\"organizationData\"\n :organization=\"organizationData\"\n @send-invite=\"handleSendInvite\"\n />\n </Popup>\n\n <!-- Add Existing Users Popup -->\n <Popup \n title=\"Add users to organization\"\n @close-popup=\"closeAddUsersPopup\" \n :isPopupOpen=\"isOpenAddUsersPopup\"\n class=\"bg-white w-min-40r w-max-50r radius-medium pd-medium\"\n >\n <AddExistingMembersForm \n :organizationId=\"route.params._id\"\n @users-added=\"handleUsersAdded\"\n />\n </Popup>\n\n <!-- Department Edit Popup -->\n <Popup\n :title=\"editingDepartment ? 'Edit Department' : 'Create Department'\"\n @close-popup=\"closeDepartmentPopup\"\n :isPopupOpen=\"isDepartmentPopupOpen\"\n align=\"center right\"\n class=\"bg-white h-min-100 w-max-50r pd-medium\"\n >\n <DepartmentForm\n :department=\"editingDepartment\"\n :organizationId=\"route.params._id\"\n @close=\"closeDepartmentPopup\"\n @saved=\"handleDepartmentSaved\"\n />\n </Popup>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onMounted } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport Feed from '@martyrs/src/components/Feed/Feed.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nimport SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue';\n\nimport { \n InviteForm,\n AddExistingMembersForm,\n DepartmentForm,\n CardDepartment,\n departmentsStore,\n membershipsStore,\n invitesStore,\n storeOrganizations as organization\n} from '@martyrs/src/modules/organizations/organizations.client.js';\n\nimport CardUser from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js';\n\nconst store = useStore();\n\nconst route = useRoute();\nconst router = useRouter();\n\n// Data\nconst organizationData = ref(null);\nconst membersList = ref([]);\nconst subscribersList = ref([]);\nconst invitesList = ref([]);\nconst departmentsList = ref([]);\nconst isLoaded = ref(false);\n\n// Popups state\nconst isOpenInvitePopup = ref(false);\nconst isOpenAddUsersPopup = ref(false);\nconst isDepartmentPopupOpen = ref(false);\nconst editingDepartment = ref(null);\n\n// Popup functions\nfunction openInvitePopup() {\n isOpenInvitePopup.value = true;\n}\n\nfunction closeInvitePopup() {\n isOpenInvitePopup.value = false;\n}\n\nfunction openAddUsersPopup() {\n isOpenAddUsersPopup.value = true;\n}\n\nfunction closeAddUsersPopup() {\n isOpenAddUsersPopup.value = false;\n}\n\nfunction openDepartmentPopup(department = null) {\n editingDepartment.value = department;\n isDepartmentPopupOpen.value = true;\n}\n\nfunction closeDepartmentPopup() {\n isDepartmentPopupOpen.value = false;\n editingDepartment.value = null;\n}\n\n// Load organization data\nonMounted(async () => {\n try {\n const response = await organization.actions.read({\n _id: route.params._id, \n user: auth.state.user._id\n });\n organizationData.value = response[0];\n isLoaded.value = true;\n } catch (error) {\n console.error('Error loading organization:', error);\n isLoaded.value = true; // Still show the page even if organization load fails\n }\n});\n\n// Handlers\nasync function handleSendInvite(list, resolve, reject) {\n try {\n const response = await invitesStore.create({\n owner: {\n type: 'Organization',\n target: organizationData.value._id\n },\n creator: {\n type: 'User',\n target: auth.state.user._id\n },\n invites: list,\n });\n \n // Assuming the API returns an array of created invites\n if (response.createdInvites) {\n for (let invite of response.createdInvites) {\n invitesStore.addItem(invite, invitesList.value);\n }\n } else if (response._id) {\n // Single invite created\n invitesStore.addItem(response, invitesList.value);\n }\n \n closeInvitePopup();\n resolve();\n } catch (error) {\n reject(error);\n }\n}\n\nfunction handleUsersAdded(addedUsers) {\n closeAddUsersPopup();\n // Add new members to the list\n if (addedUsers && addedUsers.length > 0) {\n addedUsers.forEach(membership => {\n membershipsStore.addItem(membership, membersList.value);\n });\n }\n}\n\nfunction handleDepartmentSaved(department) {\n closeDepartmentPopup();\n \n console.log('handleDepartmentSaved called with:', department);\n console.log('departmentsList before update:', departmentsList.value);\n console.log('editingDepartment:', editingDepartment.value);\n \n if (department) {\n // Update or add department in the list\n if (editingDepartment.value) {\n departmentsStore.updateItem(department, departmentsList.value);\n } else {\n departmentsStore.addItem(department, departmentsList.value);\n }\n } else {\n // Department was deleted\n if (editingDepartment.value) {\n departmentsStore.removeItem(editingDepartment.value, departmentsList.value);\n }\n }\n \n console.log('departmentsList after update:', departmentsList.value);\n}\n\nasync function removeMember(index, member) {\n if (confirm(\"Confirm remove of member\") == true) {\n await membershipsStore.delete(member);\n membershipsStore.removeItem(member, membersList.value);\n }\n}\n\nasync function removeSubscriber(index, subscriber) {\n if (confirm(\"Confirm remove of subscriber\") == true) {\n await membershipsStore.delete(subscriber);\n membershipsStore.removeItem(subscriber, subscribersList.value);\n }\n}\n\nasync function removeInvite(index, invite) {\n if (confirm(\"Confirm remove of invite\") == true) {\n await invitesStore.delete(invite);\n invitesStore.removeItem(invite, invitesList.value);\n }\n}\n</script>\n\n<style scoped>\n</style>\n"],"names":["organization.actions","auth.state"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { ref, onMounted, resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createVNode, createBlock, withCtx, unref, toDisplayString } from "vue";
1
+ import { computed, ref, onMounted, resolveComponent, createElementBlock, createCommentVNode, openBlock, createElementVNode, createVNode, createBlock, withCtx, unref, toDisplayString } from "vue";
2
2
  import { useRouter, useRoute } from "vue-router";
3
3
  import "vue-i18n";
4
4
  /* empty css */
5
5
  /* empty css */
6
- import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.vue2.js";
6
+ import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.vue.js";
7
7
  import _sfc_main$7 from "../../../../components/Chips/Chips.vue.js";
8
8
  /* empty css */
9
9
  import "../../../../components/Menu/MenuItem.vue.js";
@@ -40,6 +40,12 @@ const _sfc_main = {
40
40
  const store = useStore();
41
41
  useRouter();
42
42
  const route = useRoute();
43
+ const routePrefix = computed(() => {
44
+ const ctx = route.meta.context;
45
+ if (ctx === "user") return "User";
46
+ if (ctx === "backoffice") return "Backoffice";
47
+ return "";
48
+ });
43
49
  const organizationData = ref(null);
44
50
  onMounted(async () => {
45
51
  organizationData.value = await actions.read({
@@ -103,7 +109,7 @@ const _sfc_main = {
103
109
  state.user._id === state$1.current.owner ? (openBlock(), createBlock(_component_router_link, {
104
110
  key: 1,
105
111
  to: {
106
- name: "Organization Edit",
112
+ name: routePrefix.value + "OrganizationEdit",
107
113
  params: {
108
114
  _id: state$1.current._id
109
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Organization.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Organization.vue"],"sourcesContent":["<template>\n\t<div v-if=\"organizationData\" class=\"pd-thin for-transition w-100\">\n\n\t\t<!-- <Breadcrumbs class=\"mn-b-thin pd-medium bg-light radius-medium\"/> -->\n\t\t<!-- <pre>{{organization.state.current}}</pre> -->\n\n\t\t<section class=\"flex-center flex flex-column t-center pd-medium radius-medium bg-light mn-b-thin\">\n\n\t\t\t<Dropdown \n\t\t\t\tv-if=\"auth.state.user._id !== organization.state.current.owner\"\n\t\t\t\t:label=\"{ component: IconEllipsis, class: 'i-medium t-transp' }\"\n\t\t\t\t:align=\"'right'\"\n\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-regular pos-t-regular pd-thin radius-extra \"\n\t\t\t>\n\t\t\t\t<section \n\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t>\n\t\t\t\t\t<FormReport \n\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t:type=\"'organization'\" \n\t\t\t\t\t\t:target=\"organization.state.current._id\" \n\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<button \n\t\t\t\t\t\t\tclass=\"w-100 bg-black br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\tv-if=\"auth.state.user._id && auth.state.user._id !== organization.state.current.owner\"\n\t\t\t :user=\"auth.state.user._id\"\n\t\t\t :type=\"'organization'\" \n\t \t:role=\"'blocked'\" \n\t\t\t :target=\"organization.state.current._id\" \n\t\t\t :status=\"organization.state.current.isBlocked\" \n\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t class=\"t-white w-100 mn-t-thin bg-red\" \n\t \t/>\n\t\t\t\t</section>\n\t </Dropdown>\n\n\t <router-link\n\t\t\t\tv-if=\"auth.state.user._id === organization.state.current.owner\"\n\t :to=\"{\n\t\t\t\t\tname: 'Organization Edit', \n\t\t\t\t\tparams: {\n\t\t\t\t\t\t_id: organization.state.current._id\n\t\t\t\t\t}\n\t\t\t\t}\" \n\t class=\"\n\t \tz-index-2\n\t cursor-pointer \n\t pos-absolute pos-t-regular pos-r-regular\n\t radius-extra pd-thin bg-second\n\t \"\n\t >\n\t <IconEdit\n\t class=\"i-medium\"\n\t classes=\"fill-white\"\n\t />\n\t </router-link>\n\n\n\t\t\t<img loading=\"lazy\" \n\t\t\t\tv-if=\"organization.state.current.profile.photo\" \n\t\t\t\t:src=\"(FILE_SERVER_URL || '') + organization.state.current.profile.photo\" \n\t\t\t\tclass=\"radius-medium bg-light flex-center flex mn-b-small w-8r\" \n\t\t\t/>\n\n\t\t\t<PlaceholderOrganizationPic\n\t\t\t\tv-else\n\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t/>\n\n\t <h1\n\t \tclass=\"mn-b-thin\"\n\t >\n\t \t\t{{ organization.state.current.profile.name }}\n\t \t</h1>\n\n\t \t<div class=\"flex-center pd-r-thin pd-l-thin flex-nowrap flex mn-t-thin bg-white radius-extra w-max\">\n\t \t\t<IconFollowing class=\"i-medium mn-r-micro t-transp\"/>\n\n\t <p class=\"mn-t-thin p-regular fw-medium uppercase mn-b-thin\">{{organization.state.current.numberOfSubscribers}} followers</p>\n\n\t <ButtonToggleMembership\n\t v-if=\"\n\t\t \tauth.state.user._id \n\t\t \t&& route.params._id \n\t\t \t&& route.params._id !== auth.state.user._id\n\t\t \t&& organization.state.current.owner !== auth.state.user._id\n\t\t \"\n\t :user=\"auth.state.user._id\"\n\t :type=\"'organization'\" \n\t :role=\"'subscriber'\" \n\t :target=\"organization.state.current._id\" \n\t :status=\"organization.state.current.isSubscriber\" \n\t :text=\"{create: '+', remove: '-'}\"\n\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t class=\" mn-l-thin p-regular fw-medium radius-extra i-medium\" \n\t />\n\t </div>\n\n\t <!-- <p class=\"w-max-50r mn-t-regular mn-b-medium p-medium\">\n\t \t\t<Text :text=\"organization.profile.description || ''\" :showToggleText=\"true\" :maxLen=\"320\" />\n\t \t</p> -->\n\n\t \t<Chips \n\t \tv-if=\"organization.state.current.profile?.tags?.length > 0\" \n\t \t:chips=\"organization.state.current.profile.tags\"\n\t \tclass=\"p-regular\"\n\t \t/>\n\n\n\t <h4 \n\t \tv-if=\"Object.values(organization.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind us in socials\n\t \t</h4>\n\t \t\n\t \t<Socials \n\t \t\t:telegram=\"organization.state.current.socials.telegram\"\n\t \t\t:facebook=\"organization.state.current.socials.facebook\"\n\t \t\t:instagram=\"organization.state.current.socials.instagram\"\n\t \t\t:twitter=\"organization.state.current.socials.twitter\"\n\t \t\t:youtube=\"organization.state.current.socials.youtube\"\n\t \t/>\n\t\t</section>\n\t\t\n\t\t<!-- Backoffice -->\n\t\t<div v-if=\"MOBILE_APP\" @click=\"() => store.core.state.isOpenSidebar = !store.core.state.isOpenSidebar\" class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<p class=\"fw-medium t-black-transp-60\">\n\t\t\t\t\tShow Menu\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Organization Info Section -->\n\t\t<!-- <div class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<h3 class=\"mn-b-small\">About {{ organization.state.current?.profile?.name }}</h3>\n\t\t\t\t<p v-if=\"organization.state.current?.profile?.description\" class=\"fw-medium\">\n\t\t\t\t\t{{ organization.state.current.profile.description }}\n\t\t\t\t</p>\n\t\t\t\t<p v-else class=\"fw-medium t-black-transp-60\">\n\t\t\t\t\tNo description available.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div> -->\n\n\t\t<Products/>\n\t</div>\n</template>\n\n<script setup>\n\timport { computed, reactive, ref, onMounted, watch } from 'vue'\n\timport { useRoute, useRouter } from 'vue-router'\n\t// Import components\n\timport Breadcrumbs \tfrom '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n\timport Block \t\tfrom '@martyrs/src/components/Block/Block.vue'\n\timport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\n\timport Text \t\tfrom '@martyrs/src/components/Text/Text.vue'\n\timport Chips from '@martyrs/src/components/Chips/Chips.vue'\n\t// Mobile Module\n\timport Menu from '@martyrs/src/components/Menu/Menu.vue'\n\timport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n\t// Icons\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\timport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\timport PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\t// Organizations\n\timport { \n\t\tDepartmentSub, \n\t\tButtonToggleMembership, \n\t\tContacts, \n\t\tRating, \n\t\tSocials \n\t} from '@martyrs/src/modules/organizations/organizations.client.js'\n\timport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\t// Report Module\n\timport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue'\n\t// Products modu;e\n\timport Products from '@martyrs/src//modules/products/components/pages/Products.vue'\n\t// Import state\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\nconst store = useStore();\n\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n\timport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\timport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\t// Init router\n\tconst router \t= useRouter()\n\tconst route \t= useRoute()\n\n\tconst organizationData = ref(null)\n\n\tonMounted(async () => {\n\t\t\n\t\torganizationData.value = await organization.actions.read({\n\t\t\t_id: route.params._id, \n\t\t\tuser: auth.state.user._id,\n\t\t\tlookup: ['memberships']\n\t\t})\n\n \t\tawait membershipsStore.read({target: route.params._id})\n\n \t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_organization', {\n\t\t\t\torganization_id: route.params._id,\n\t\t\t\torganization_name: organizationData.value?.profile?.name || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tuser_id: auth.state.user._id || 'anonymous',\n\t\t\t\ttimestamp: new Date().toISOString()\n\t\t\t});\n\t\t}\n\t})\n\n\t// Methods\n\tconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n\t membershipsStore.handleMembershipUpdate(organization.state.current, membership, status, target, statusName, statusNumber)\n\t};\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":["organization.actions","auth.state","organization.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkMA,UAAM,QAAQ,SAAQ;AAML,cAAS;AACzB,UAAM,QAAS,SAAQ;AAEvB,UAAM,mBAAmB,IAAI,IAAI;AAEjC,cAAU,YAAY;AAErB,uBAAiB,QAAQ,MAAMA,QAAqB,KAAK;AAAA,QACxD,KAAK,MAAM,OAAO;AAAA,QAClB,MAAMC,MAAW,KAAK;AAAA,QACtB,QAAQ,CAAC,aAAa;AAAA,MACzB,CAAG;AAEA,YAAM,iBAAiB,KAAK,EAAC,QAAQ,MAAM,OAAO,IAAG,CAAC;AAEtD,UAAI,OAAO,SAAS,YAAY;AAChC,aAAK,SAAS,qBAAqB;AAAA,UAClC,iBAAiB,MAAM,OAAO;AAAA,UAC9B,mBAAmB,iBAAiB,OAAO,SAAS,QAAQ;AAAA,UAC5D,WAAW,OAAO,SAAS;AAAA,UAC3B,SAASA,MAAW,KAAK,OAAO;AAAA,UAChC,YAAW,oBAAI,KAAI,GAAG,YAAW;AAAA,QACrC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;AAGD,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAmB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC1H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Organization.vue.js","sources":["../../../../../../../src/modules/organizations/components/pages/Organization.vue"],"sourcesContent":["<template>\n\t<div v-if=\"organizationData\" class=\"pd-thin for-transition w-100\">\n\n\t\t<!-- <Breadcrumbs class=\"mn-b-thin pd-medium bg-light radius-medium\"/> -->\n\t\t<!-- <pre>{{organization.state.current}}</pre> -->\n\n\t\t<section class=\"flex-center flex flex-column t-center pd-medium radius-medium bg-light mn-b-thin\">\n\n\t\t\t<Dropdown \n\t\t\t\tv-if=\"auth.state.user._id !== organization.state.current.owner\"\n\t\t\t\t:label=\"{ component: IconEllipsis, class: 'i-medium t-transp' }\"\n\t\t\t\t:align=\"'right'\"\n\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-regular pos-t-regular pd-thin radius-extra \"\n\t\t\t>\n\t\t\t\t<section \n\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t>\n\t\t\t\t\t<FormReport \n\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t:type=\"'organization'\" \n\t\t\t\t\t\t:target=\"organization.state.current._id\" \n\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<button \n\t\t\t\t\t\t\tclass=\"w-100 bg-black br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\tv-if=\"auth.state.user._id && auth.state.user._id !== organization.state.current.owner\"\n\t\t\t :user=\"auth.state.user._id\"\n\t\t\t :type=\"'organization'\" \n\t \t:role=\"'blocked'\" \n\t\t\t :target=\"organization.state.current._id\" \n\t\t\t :status=\"organization.state.current.isBlocked\" \n\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t class=\"t-white w-100 mn-t-thin bg-red\" \n\t \t/>\n\t\t\t\t</section>\n\t </Dropdown>\n\n\t <router-link\n\t\t\t\tv-if=\"auth.state.user._id === organization.state.current.owner\"\n\t :to=\"{\n\t\t\t\t\tname: routePrefix + 'OrganizationEdit',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\t_id: organization.state.current._id\n\t\t\t\t\t}\n\t\t\t\t}\" \n\t class=\"\n\t \tz-index-2\n\t cursor-pointer \n\t pos-absolute pos-t-regular pos-r-regular\n\t radius-extra pd-thin bg-second\n\t \"\n\t >\n\t <IconEdit\n\t class=\"i-medium\"\n\t classes=\"fill-white\"\n\t />\n\t </router-link>\n\n\n\t\t\t<img loading=\"lazy\" \n\t\t\t\tv-if=\"organization.state.current.profile.photo\" \n\t\t\t\t:src=\"(FILE_SERVER_URL || '') + organization.state.current.profile.photo\" \n\t\t\t\tclass=\"radius-medium bg-light flex-center flex mn-b-small w-8r\" \n\t\t\t/>\n\n\t\t\t<PlaceholderOrganizationPic\n\t\t\t\tv-else\n\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t/>\n\n\t <h1\n\t \tclass=\"mn-b-thin\"\n\t >\n\t \t\t{{ organization.state.current.profile.name }}\n\t \t</h1>\n\n\t \t<div class=\"flex-center pd-r-thin pd-l-thin flex-nowrap flex mn-t-thin bg-white radius-extra w-max\">\n\t \t\t<IconFollowing class=\"i-medium mn-r-micro t-transp\"/>\n\n\t <p class=\"mn-t-thin p-regular fw-medium uppercase mn-b-thin\">{{organization.state.current.numberOfSubscribers}} followers</p>\n\n\t <ButtonToggleMembership\n\t v-if=\"\n\t\t \tauth.state.user._id \n\t\t \t&& route.params._id \n\t\t \t&& route.params._id !== auth.state.user._id\n\t\t \t&& organization.state.current.owner !== auth.state.user._id\n\t\t \"\n\t :user=\"auth.state.user._id\"\n\t :type=\"'organization'\" \n\t :role=\"'subscriber'\" \n\t :target=\"organization.state.current._id\" \n\t :status=\"organization.state.current.isSubscriber\" \n\t :text=\"{create: '+', remove: '-'}\"\n\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t class=\" mn-l-thin p-regular fw-medium radius-extra i-medium\" \n\t />\n\t </div>\n\n\t <!-- <p class=\"w-max-50r mn-t-regular mn-b-medium p-medium\">\n\t \t\t<Text :text=\"organization.profile.description || ''\" :showToggleText=\"true\" :maxLen=\"320\" />\n\t \t</p> -->\n\n\t \t<Chips \n\t \tv-if=\"organization.state.current.profile?.tags?.length > 0\" \n\t \t:chips=\"organization.state.current.profile.tags\"\n\t \tclass=\"p-regular\"\n\t \t/>\n\n\n\t <h4 \n\t \tv-if=\"Object.values(organization.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind us in socials\n\t \t</h4>\n\t \t\n\t \t<Socials \n\t \t\t:telegram=\"organization.state.current.socials.telegram\"\n\t \t\t:facebook=\"organization.state.current.socials.facebook\"\n\t \t\t:instagram=\"organization.state.current.socials.instagram\"\n\t \t\t:twitter=\"organization.state.current.socials.twitter\"\n\t \t\t:youtube=\"organization.state.current.socials.youtube\"\n\t \t/>\n\t\t</section>\n\t\t\n\t\t<!-- Backoffice -->\n\t\t<div v-if=\"MOBILE_APP\" @click=\"() => store.core.state.isOpenSidebar = !store.core.state.isOpenSidebar\" class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<p class=\"fw-medium t-black-transp-60\">\n\t\t\t\t\tShow Menu\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Organization Info Section -->\n\t\t<!-- <div class=\"pos-relative\">\n\t\t\t<div class=\"bg-light radius-medium pd-medium\">\n\t\t\t\t<h3 class=\"mn-b-small\">About {{ organization.state.current?.profile?.name }}</h3>\n\t\t\t\t<p v-if=\"organization.state.current?.profile?.description\" class=\"fw-medium\">\n\t\t\t\t\t{{ organization.state.current.profile.description }}\n\t\t\t\t</p>\n\t\t\t\t<p v-else class=\"fw-medium t-black-transp-60\">\n\t\t\t\t\tNo description available.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div> -->\n\n\t\t<Products/>\n\t</div>\n</template>\n\n<script setup>\n\timport { computed, reactive, ref, onMounted, watch } from 'vue'\n\timport { useRoute, useRouter } from 'vue-router'\n\t// Import components\n\timport Breadcrumbs \tfrom '@martyrs/src/components/Breadcrumbs/Breadcrumbs.vue'\n\timport Block \t\tfrom '@martyrs/src/components/Block/Block.vue'\n\timport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\n\timport Text \t\tfrom '@martyrs/src/components/Text/Text.vue'\n\timport Chips from '@martyrs/src/components/Chips/Chips.vue'\n\t// Mobile Module\n\timport Menu from '@martyrs/src/components/Menu/Menu.vue'\n\timport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n\t// Icons\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\timport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\timport IconEllipsis from '@martyrs/src/modules/icons/navigation/IconEllipsis.vue'\n\timport PlaceholderOrganizationPic from '@martyrs/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue'\n\t// Organizations\n\timport { \n\t\tDepartmentSub, \n\t\tButtonToggleMembership, \n\t\tContacts, \n\t\tRating, \n\t\tSocials \n\t} from '@martyrs/src/modules/organizations/organizations.client.js'\n\timport User from '@martyrs/src/modules/auth/views/components/blocks/CardUser.vue';\n\t// Report Module\n\timport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue'\n\t// Products modu;e\n\timport Products from '@martyrs/src//modules/products/components/pages/Products.vue'\n\t// Import state\n\timport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\n\timport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\nconst store = useStore();\n\n\timport * as organization from '@martyrs/src/modules/organizations/store/organizations.js';\n\timport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js';\n\timport departmentsStore from '@martyrs/src/modules/organizations/store/departments.store.js';\n\t// Init router\n\tconst router \t= useRouter()\n\tconst route \t= useRoute()\n\n\tconst routePrefix = computed(() => {\n\t\tconst ctx = route.meta.context\n\t\tif (ctx === 'user') return 'User'\n\t\tif (ctx === 'backoffice') return 'Backoffice'\n\t\treturn ''\n\t})\n\n\tconst organizationData = ref(null)\n\n\tonMounted(async () => {\n\t\t\n\t\torganizationData.value = await organization.actions.read({\n\t\t\t_id: route.params._id, \n\t\t\tuser: auth.state.user._id,\n\t\t\tlookup: ['memberships']\n\t\t})\n\n \t\tawait membershipsStore.read({target: route.params._id})\n\n \t\tif (typeof gtag === 'function') {\n\t\t\tgtag('event', 'view_organization', {\n\t\t\t\torganization_id: route.params._id,\n\t\t\t\torganization_name: organizationData.value?.profile?.name || 'unknown',\n\t\t\t\tpage_path: window.location.pathname,\n\t\t\t\tuser_id: auth.state.user._id || 'anonymous',\n\t\t\t\ttimestamp: new Date().toISOString()\n\t\t\t});\n\t\t}\n\t})\n\n\t// Methods\n\tconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n\t membershipsStore.handleMembershipUpdate(organization.state.current, membership, status, target, statusName, statusNumber)\n\t};\n</script>\n\n<style lang=\"scss\">\n</style>\n"],"names":["organization.actions","auth.state","organization.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkMA,UAAM,QAAQ,SAAQ;AAML,cAAS;AACzB,UAAM,QAAS,SAAQ;AAEvB,UAAM,cAAc,SAAS,MAAM;AAClC,YAAM,MAAM,MAAM,KAAK;AACvB,UAAI,QAAQ,OAAQ,QAAO;AAC3B,UAAI,QAAQ,aAAc,QAAO;AACjC,aAAO;AAAA,IACR,CAAC;AAED,UAAM,mBAAmB,IAAI,IAAI;AAEjC,cAAU,YAAY;AAErB,uBAAiB,QAAQ,MAAMA,QAAqB,KAAK;AAAA,QACxD,KAAK,MAAM,OAAO;AAAA,QAClB,MAAMC,MAAW,KAAK;AAAA,QACtB,QAAQ,CAAC,aAAa;AAAA,MACzB,CAAG;AAEA,YAAM,iBAAiB,KAAK,EAAC,QAAQ,MAAM,OAAO,IAAG,CAAC;AAEtD,UAAI,OAAO,SAAS,YAAY;AAChC,aAAK,SAAS,qBAAqB;AAAA,UAClC,iBAAiB,MAAM,OAAO;AAAA,UAC9B,mBAAmB,iBAAiB,OAAO,SAAS,QAAQ;AAAA,UAC5D,WAAW,OAAO,SAAS;AAAA,UAC3B,SAASA,MAAW,KAAK,OAAO;AAAA,UAChC,YAAW,oBAAI,KAAI,GAAG,YAAW;AAAA,QACrC,CAAI;AAAA,MACF;AAAA,IACD,CAAC;AAGD,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAmB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC1H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,9 +5,9 @@ import _sfc_main$1 from "../../../icons/entities/IconGroups.vue.js";
5
5
  import _sfc_main$2 from "../../../icons/entities/IconLock.vue.js";
6
6
  import _sfc_main$3 from "../../../icons/actions/IconShow.vue.js";
7
7
  /* empty css */
8
- /* empty css */
9
- /* empty css */
8
+ /* empty css */
10
9
  /* empty css */
10
+ /* empty css */
11
11
  /* empty css */
12
12
  import Field from "../../../../components/Field/Field.vue.js";
13
13
  /* empty css */
@@ -25,7 +25,7 @@ import _sfc_main$4 from "../../../../components/FieldTags/BlockTags.vue.js";
25
25
  /* empty css */
26
26
  /* empty css */
27
27
  import UploadImage from "../../../../components/UploadImage/UploadImage.vue.js";
28
- import _sfc_main$5 from "../../../../components/Button/Button.vue.js";
28
+ import Button from "../../../../components/Button/Button.vue2.js";
29
29
  import { state as state$1 } from "../../../auth/views/store/auth.js";
30
30
  import { actions, state } from "../../store/organizations.js";
31
31
  const _hoisted_1 = { class: "for-transition pd-thin" };
@@ -36,7 +36,7 @@ const _hoisted_5 = {
36
36
  key: 0,
37
37
  class: "w-[0.5rem] h-[0.5rem] radius-[50%] bg-main"
38
38
  };
39
- const _hoisted_6 = { class: "p-small t-grey dark:t-grey-thin mn-t-micro" };
39
+ const _hoisted_6 = { class: "p-small t-dark dark:t-grey-thin mn-t-micro" };
40
40
  const _hoisted_7 = { class: "mn-b-thin radius-small w-100 h-10r bg-light flex-center flex-column flex" };
41
41
  const _sfc_main = {
42
42
  __name: "OrganizationEdit",
@@ -65,8 +65,14 @@ const _sfc_main = {
65
65
  await actions.create(state.current, state$1.user._id);
66
66
  }
67
67
  }
68
+ const routePrefix = computed(() => {
69
+ const ctx = route.meta.context;
70
+ if (ctx === "user") return "User";
71
+ if (ctx === "backoffice") return "Backoffice";
72
+ return "";
73
+ });
68
74
  function redirectTo() {
69
- router.replace("/organizations/" + state.current._id);
75
+ router.replace({ name: routePrefix.value + "OrganizationProfile", params: { _id: state.current._id } });
70
76
  }
71
77
  return (_ctx, _cache) => {
72
78
  return openBlock(), createElementBlock("div", _hoisted_1, [
@@ -84,7 +90,7 @@ const _sfc_main = {
84
90
  createElementVNode("div", {
85
91
  class: normalizeClass([
86
92
  "pd-thin radius-[50%]",
87
- isTypeSelected(option.value) ? "bg-main t-white" : "bg-light dark:bg-dark-thin t-grey"
93
+ isTypeSelected(option.value) ? "bg-main t-white" : "bg-light dark:bg-dark-thin t-dark"
88
94
  ])
89
95
  }, [
90
96
  (openBlock(), createBlock(resolveDynamicComponent(option.icon), { class: "i-medium" }))
@@ -192,7 +198,7 @@ const _sfc_main = {
192
198
  placeholder: "",
193
199
  class: "mn-b-thin bg-light pd-medium radius-small"
194
200
  }, null, 8, ["field"]),
195
- createVNode(_sfc_main$5, {
201
+ createVNode(Button, {
196
202
  submit: onSubmit,
197
203
  callback: redirectTo,
198
204
  class: "bg-main w-100 mn-b-thin"