@ozdao/martyrs 0.2.519 → 0.2.520

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 (341) hide show
  1. package/dist/chats.server.cjs +198 -1
  2. package/dist/chats.server.js +198 -1
  3. package/dist/{main-Wr1_4rwl.cjs → main-BM3GslOO.cjs} +6 -6
  4. package/dist/{main-DgGUrhjT.js → main-Qcn7YlTx.js} +1832 -1828
  5. package/dist/martyrs/src/components/Address/{Address.vue2.cjs → Address.vue.cjs} +2 -2
  6. package/dist/martyrs/src/components/Address/{Address.vue2.js.map → Address.vue.cjs.map} +1 -1
  7. package/dist/martyrs/src/components/Address/{Address.vue2.js → Address.vue.js} +2 -2
  8. package/dist/martyrs/src/components/Address/Address.vue.js.map +1 -0
  9. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +0 -1
  10. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  11. package/dist/martyrs/src/components/Feed/Feed.vue.js +0 -1
  12. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  13. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.cjs → LocationMarker.vue.cjs} +2 -2
  14. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js.map → LocationMarker.vue.cjs.map} +1 -1
  15. package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js → LocationMarker.vue.js} +2 -2
  16. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +1 -0
  17. package/dist/martyrs/src/components/Select/{Select.vue2.cjs → Select.vue.cjs} +2 -2
  18. package/dist/martyrs/src/components/Select/{Select.vue2.js.map → Select.vue.cjs.map} +1 -1
  19. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  20. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  21. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.cjs +2 -2
  22. package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
  23. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
  24. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
  25. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
  26. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  27. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
  28. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs.map +1 -1
  29. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +4 -4
  30. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
  31. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +40 -50
  32. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  33. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +59 -69
  34. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  35. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +11 -13
  36. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
  37. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +11 -13
  38. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  39. package/dist/martyrs/src/modules/auth/views/store/auth.cjs +9 -0
  40. package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
  41. package/dist/martyrs/src/modules/auth/views/store/auth.js +9 -0
  42. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  43. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs +27 -11
  44. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs.map +1 -1
  45. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +28 -12
  46. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  47. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs +62 -0
  48. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
  49. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +63 -1
  50. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  51. package/dist/martyrs/src/modules/chats/store/chat.store.cjs +60 -1
  52. package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
  53. package/dist/martyrs/src/modules/chats/store/chat.store.js +60 -1
  54. package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
  55. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +3 -3
  56. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
  58. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  59. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  60. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  61. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +50 -368
  62. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -1
  63. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +53 -371
  64. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
  65. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  66. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
  67. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  68. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  69. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +0 -1
  70. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  71. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +0 -1
  72. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  73. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +2 -2
  74. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
  75. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
  76. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  77. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  79. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  81. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  82. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  83. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs +2 -2
  84. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js +2 -2
  85. package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +7 -0
  87. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
  88. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +7 -0
  89. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
  90. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -1
  91. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  93. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  95. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  97. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +180 -19
  98. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  99. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +181 -20
  100. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  101. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  103. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  105. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  107. package/dist/martyrs/src/modules/music/router/music.cjs +0 -1
  108. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  109. package/dist/martyrs/src/modules/music/router/music.js +0 -1
  110. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  111. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs +2 -2
  112. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +2 -2
  114. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  117. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
  118. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  119. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  121. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -3
  122. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  123. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -3
  124. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  127. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +2 -24
  128. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs.map +1 -1
  129. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +5 -27
  130. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
  131. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs +4 -1
  132. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs.map +1 -1
  133. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +4 -1
  134. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
  135. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +3 -3
  136. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
  137. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +3 -3
  138. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +195 -0
  140. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs.map +1 -0
  141. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +195 -0
  142. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -0
  143. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +402 -0
  144. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs.map +1 -0
  145. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +402 -0
  146. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -0
  147. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +86 -0
  148. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs.map +1 -0
  149. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +86 -0
  150. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -0
  151. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +10 -10
  152. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  153. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +11 -11
  154. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  155. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +279 -191
  156. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
  157. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +285 -197
  158. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  159. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +5 -5
  160. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +5 -5
  162. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  164. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  166. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  170. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  173. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +3 -3
  174. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
  175. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  176. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
  177. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs +4 -4
  178. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs.map +1 -1
  179. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js +4 -4
  180. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js.map +1 -1
  181. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +42 -41
  182. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +53 -52
  184. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  185. package/dist/martyrs/src/modules/organizations/organizations.client.cjs +23 -16
  186. package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
  187. package/dist/martyrs/src/modules/organizations/organizations.client.js +35 -28
  188. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  189. package/dist/martyrs/src/modules/organizations/router/departments.router.cjs +0 -18
  190. package/dist/martyrs/src/modules/organizations/router/departments.router.cjs.map +1 -1
  191. package/dist/martyrs/src/modules/organizations/router/departments.router.js +0 -18
  192. package/dist/martyrs/src/modules/organizations/router/departments.router.js.map +1 -1
  193. package/dist/martyrs/src/modules/organizations/store/departments.store.cjs +6 -0
  194. package/dist/martyrs/src/modules/organizations/store/departments.store.cjs.map +1 -0
  195. package/dist/martyrs/src/modules/organizations/store/departments.store.js +6 -0
  196. package/dist/martyrs/src/modules/organizations/store/departments.store.js.map +1 -0
  197. package/dist/martyrs/src/modules/organizations/store/invites.store.cjs +6 -0
  198. package/dist/martyrs/src/modules/organizations/store/invites.store.cjs.map +1 -0
  199. package/dist/martyrs/src/modules/organizations/store/invites.store.js +6 -0
  200. package/dist/martyrs/src/modules/organizations/store/invites.store.js.map +1 -0
  201. package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs +20 -0
  202. package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs.map +1 -0
  203. package/dist/martyrs/src/modules/organizations/store/memberships.store.js +20 -0
  204. package/dist/martyrs/src/modules/organizations/store/memberships.store.js.map +1 -0
  205. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -3
  206. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  207. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -3
  208. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  211. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
  212. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  213. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  214. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  215. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  217. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
  218. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
  219. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  220. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  221. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +2 -2
  222. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
  223. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +2 -2
  224. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  225. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  226. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  227. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +3 -3
  228. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  229. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +60 -272
  230. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -1
  231. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +62 -274
  232. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  233. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  234. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  235. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  236. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  237. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
  238. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  239. package/dist/martyrs.cjs.js +1 -1
  240. package/dist/martyrs.css +1 -1
  241. package/dist/martyrs.es.js +1 -1
  242. package/dist/notifications.server.cjs +0 -24
  243. package/dist/notifications.server.js +0 -24
  244. package/dist/orders.server.cjs +1 -4
  245. package/dist/orders.server.js +1 -4
  246. package/dist/organizations.server.cjs +115 -39
  247. package/dist/organizations.server.js +115 -39
  248. package/dist/style.css +9 -9
  249. package/dist/{web-42I-Howt.cjs → web-B0cfxzgu.cjs} +1 -1
  250. package/dist/{web-ByhZ_fIu.js → web-DVR8m2fm.js} +1 -1
  251. package/package.json +1 -1
  252. package/src/components/Feed/Feed.old.vue +0 -1
  253. package/src/components/Feed/Feed.vue +0 -30
  254. package/src/modules/auth/FIXES.md +2 -26
  255. package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
  256. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  257. package/src/modules/auth/views/components/pages/Invite.vue +2 -2
  258. package/src/modules/auth/views/components/pages/Profile.vue +33 -48
  259. package/src/modules/auth/views/components/sections/SliderFeatures.vue +5 -7
  260. package/src/modules/auth/views/store/auth.js +15 -0
  261. package/src/modules/chats/CLAUDE.md +137 -0
  262. package/src/modules/chats/components/blocks/ChatMessage.vue +12 -0
  263. package/src/modules/chats/components/sections/ChatWindow.vue +84 -2
  264. package/src/modules/chats/controllers/chats.controller.js +187 -0
  265. package/src/modules/chats/models/chat.model.js +21 -0
  266. package/src/modules/chats/routes/chats.routes.js +46 -0
  267. package/src/modules/chats/store/chat.store.js +67 -0
  268. package/src/modules/community/components/layouts/Community.vue +2 -2
  269. package/src/modules/community/components/pages/Posts.vue +3 -328
  270. package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
  271. package/src/modules/events/components/pages/Events.vue +2 -2
  272. package/src/modules/globals/views/mixins/mixins.js +7 -0
  273. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +160 -8
  274. package/src/modules/notifications/controllers/notifications.controller.js +0 -6
  275. package/src/modules/notifications/services/notification.service.js +1 -17
  276. package/src/modules/notifications/services/web-push.service.js +0 -2
  277. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +2 -2
  278. package/src/modules/orders/components/blocks/CardOrderVar1.vue +1 -1
  279. package/src/modules/orders/controllers/orders.controller.js +2 -4
  280. package/src/modules/organizations/CLAUDE.md +259 -0
  281. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -22
  282. package/src/modules/organizations/components/blocks/Socials.vue +1 -1
  283. package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +3 -3
  284. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +191 -0
  285. package/src/modules/organizations/components/forms/DepartmentForm.vue +390 -0
  286. package/src/modules/organizations/components/forms/InviteForm.vue +81 -0
  287. package/src/modules/organizations/components/pages/Department.vue +10 -10
  288. package/src/modules/organizations/components/pages/DepartmentEdit.vue +8 -8
  289. package/src/modules/organizations/components/pages/Members.vue +265 -171
  290. package/src/modules/organizations/components/pages/Organization.new.vue +172 -183
  291. package/src/modules/organizations/components/pages/Organization.vue +6 -6
  292. package/src/modules/organizations/components/pages/OrganizationEdit.vue +1 -1
  293. package/src/modules/organizations/components/pages/Organizations.vue +1 -1
  294. package/src/modules/organizations/components/sections/Organizations.vue +2 -2
  295. package/src/modules/organizations/components/sections/Publics.vue +4 -4
  296. package/src/modules/organizations/configs/navigation.organization.config.js +40 -39
  297. package/src/modules/organizations/controllers/departments.controller.js +53 -34
  298. package/src/modules/organizations/controllers/invites.controller.js +44 -5
  299. package/src/modules/organizations/controllers/memberships.controller.js +43 -4
  300. package/src/modules/organizations/organizations.client.js +24 -15
  301. package/src/modules/organizations/router/departments.router.js +0 -18
  302. package/src/modules/organizations/routes/departments.routes.js +6 -8
  303. package/src/modules/organizations/routes/invites.routes.js +6 -4
  304. package/src/modules/organizations/routes/memberships.routes.js +6 -5
  305. package/src/modules/organizations/store/departments.store.js +5 -0
  306. package/src/modules/organizations/store/invites.store.js +5 -0
  307. package/src/modules/organizations/store/memberships.store.js +23 -0
  308. package/src/modules/products/components/pages/Products.vue +0 -1
  309. package/src/modules/spots/components/blocks/CardSpot.vue +1 -1
  310. package/src/modules/spots/components/pages/Spots.vue +3 -203
  311. package/src/styles/base/all.scss +0 -15
  312. package/src/styles/typography.scss +20 -5
  313. package/dist/martyrs/src/components/Address/Address.vue2.cjs.map +0 -1
  314. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs.map +0 -1
  315. package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +0 -1
  316. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +0 -76
  317. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs.map +0 -1
  318. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +0 -76
  319. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js.map +0 -1
  320. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +0 -280
  321. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs.map +0 -1
  322. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +0 -280
  323. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js.map +0 -1
  324. package/dist/martyrs/src/modules/organizations/store/departments.cjs +0 -121
  325. package/dist/martyrs/src/modules/organizations/store/departments.cjs.map +0 -1
  326. package/dist/martyrs/src/modules/organizations/store/departments.js +0 -121
  327. package/dist/martyrs/src/modules/organizations/store/departments.js.map +0 -1
  328. package/dist/martyrs/src/modules/organizations/store/invites.cjs +0 -64
  329. package/dist/martyrs/src/modules/organizations/store/invites.cjs.map +0 -1
  330. package/dist/martyrs/src/modules/organizations/store/invites.js +0 -64
  331. package/dist/martyrs/src/modules/organizations/store/invites.js.map +0 -1
  332. package/dist/martyrs/src/modules/organizations/store/memberships.cjs +0 -87
  333. package/dist/martyrs/src/modules/organizations/store/memberships.cjs.map +0 -1
  334. package/dist/martyrs/src/modules/organizations/store/memberships.js +0 -87
  335. package/dist/martyrs/src/modules/organizations/store/memberships.js.map +0 -1
  336. package/src/CLAUDE.MD +0 -15
  337. package/src/modules/globals/controllers/classes/globals.websocket.ws.js +0 -102
  338. package/src/modules/globals/views/components/blocks/BlockFilter.vue +0 -60
  339. package/src/modules/organizations/store/departments.js +0 -137
  340. package/src/modules/organizations/store/invites.js +0 -76
  341. package/src/modules/organizations/store/memberships.js +0 -110
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DepartmentForm.vue.cjs","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-2-fit-content\"\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-medium 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-medium 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 * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\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 globals.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 globals.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 globals.actions.setError(error);\n }\n }\n}\n</script>"],"names":["useRoute","computed","ref","reactive","globals.actions","departmentsStore"],"mappings":"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"}
@@ -0,0 +1,402 @@
1
+ import { computed, ref, reactive, createElementBlock, openBlock, createVNode, createElementVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, toDisplayString, createCommentVNode, unref, normalizeClass } from "vue";
2
+ import { useRoute } from "vue-router";
3
+ import _sfc_main$2 from "../../../../components/UploadImage/UploadImage.vue.js";
4
+ import Field from "../../../../components/Field/Field.vue.js";
5
+ import _sfc_main$5 from "../../../../components/Checkbox/Checkbox.vue.js";
6
+ import _sfc_main$7 from "../../../../components/Button/Button.vue.js";
7
+ import _sfc_main$8 from "../../../../components/Popup/Popup.vue.js";
8
+ import _sfc_main$1 from "../../../../components/Block/Block.vue.js";
9
+ import _sfc_main$9 from "../../../../components/Feed/Feed.vue.js";
10
+ import _sfc_main$6 from "../../../../components/Spoiler/Spoiler.vue2.js";
11
+ import _sfc_main$3 from "../../../auth/views/components/blocks/CardUser.vue.js";
12
+ import _sfc_main$4 from "../../../icons/navigation/IconDelete.vue.js";
13
+ import { actions } from "../../../globals/views/store/globals.js";
14
+ import membershipsStore from "../../store/memberships.store.js";
15
+ import departmentsStore from "../../store/departments.store.js";
16
+ const _hoisted_1 = { class: "cols-1 gap-thin o-y-scroll" };
17
+ const _hoisted_2 = { class: "cols-2-fit-content" };
18
+ const _hoisted_3 = { class: "w-100 flex-child-grow-1 flex-child" };
19
+ const _hoisted_4 = { class: "bg-light pd-medium o-hidden radius-medium mn-b-thin" };
20
+ const _hoisted_5 = { class: "cols-1 gap-thin" };
21
+ const _hoisted_6 = { class: "bg-light pd-medium o-hidden radius-medium" };
22
+ const _hoisted_7 = { class: "cols-1 gap-thin" };
23
+ const _hoisted_8 = { class: "cursor-pointer flex-v-center flex gap-thin" };
24
+ const _hoisted_9 = { class: "t-small" };
25
+ const _hoisted_10 = { class: "cols-1 gap-thin mn-t-thin" };
26
+ const _hoisted_11 = { class: "flex gap-thin mn-t-medium" };
27
+ const _sfc_main = {
28
+ __name: "DepartmentForm",
29
+ props: {
30
+ department: Object,
31
+ organizationId: String
32
+ },
33
+ emits: ["close", "saved"],
34
+ setup(__props, { emit: __emit }) {
35
+ useRoute();
36
+ const props = __props;
37
+ const emit = __emit;
38
+ const editingDepartment = computed(() => !!props.department?._id);
39
+ const isOpenAddMemberPopup = ref(false);
40
+ const createDefaultDepartment = () => ({
41
+ organization: props.organizationId,
42
+ profile: {
43
+ photo: "",
44
+ name: "",
45
+ description: "",
46
+ categories: []
47
+ },
48
+ address: "",
49
+ location: {
50
+ lat: null,
51
+ lng: null
52
+ },
53
+ worktime: [],
54
+ delivery: [],
55
+ payment: [],
56
+ members: [],
57
+ subdepartments: [],
58
+ hidden: false,
59
+ accesses: {
60
+ categories: {
61
+ create: false,
62
+ read: false,
63
+ edit: false,
64
+ delete: false
65
+ },
66
+ rents: {
67
+ create: false,
68
+ read: false,
69
+ edit: false,
70
+ delete: false
71
+ },
72
+ spots: {
73
+ create: false,
74
+ read: false,
75
+ edit: false,
76
+ delete: false
77
+ },
78
+ members: {
79
+ read: false,
80
+ edit: false,
81
+ delete: false
82
+ },
83
+ posts: {
84
+ create: false,
85
+ read: false,
86
+ edit: false,
87
+ delete: false
88
+ },
89
+ events: {
90
+ create: false,
91
+ read: false,
92
+ edit: false,
93
+ delete: false
94
+ },
95
+ tickets: {
96
+ create: false,
97
+ read: false,
98
+ edit: false,
99
+ delete: false
100
+ },
101
+ gallery: {
102
+ read: false,
103
+ create: false,
104
+ edit: false,
105
+ delete: false
106
+ },
107
+ inventory: {
108
+ read: false,
109
+ edit: false,
110
+ delete: false
111
+ },
112
+ products: {
113
+ read: false,
114
+ edit: false,
115
+ delete: false
116
+ },
117
+ orders: {
118
+ read: false,
119
+ confirm: false,
120
+ delete: false
121
+ },
122
+ departments: {
123
+ read: false,
124
+ edit: false,
125
+ delete: false
126
+ }
127
+ }
128
+ });
129
+ const currentDepartment = reactive(
130
+ props.department ? JSON.parse(JSON.stringify(props.department)) : createDefaultDepartment()
131
+ );
132
+ function openMemberPopup() {
133
+ isOpenAddMemberPopup.value = true;
134
+ }
135
+ function closeMemberPopup() {
136
+ isOpenAddMemberPopup.value = false;
137
+ }
138
+ function isDuplicateMember(userId) {
139
+ return currentDepartment.members.some(
140
+ (member) => member.user._id === userId || member._id === userId
141
+ );
142
+ }
143
+ function addMemberToDepartment(user) {
144
+ if (!isDuplicateMember(user._id)) {
145
+ currentDepartment.members.push({
146
+ _id: user._id,
147
+ user,
148
+ position: "Member"
149
+ });
150
+ closeMemberPopup();
151
+ } else {
152
+ actions.setError({ message: "This user is already a member of this department" });
153
+ }
154
+ }
155
+ function removeMember(member) {
156
+ if (confirm("Are you sure you want to remove this member?")) {
157
+ const index = currentDepartment.members.findIndex(
158
+ (m) => m.user._id === member.user._id || m._id === member._id
159
+ );
160
+ if (index > -1) {
161
+ currentDepartment.members.splice(index, 1);
162
+ }
163
+ }
164
+ }
165
+ async function saveDepartment() {
166
+ try {
167
+ const departmentData = {
168
+ ...currentDepartment,
169
+ organization: props.organizationId
170
+ };
171
+ let result;
172
+ if (editingDepartment.value) {
173
+ result = await departmentsStore.update({
174
+ ...departmentData,
175
+ _id: props.department._id
176
+ });
177
+ } else {
178
+ result = await departmentsStore.create(departmentData);
179
+ }
180
+ emit("saved", result);
181
+ emit("close");
182
+ } catch (error) {
183
+ console.error("Error saving department:", error);
184
+ actions.setError(error);
185
+ throw error;
186
+ }
187
+ }
188
+ async function onDelete() {
189
+ if (confirm("Are you sure you want to delete this department?")) {
190
+ try {
191
+ await departmentsStore.delete({ _id: props.department._id });
192
+ emit("saved", null);
193
+ emit("close");
194
+ } catch (error) {
195
+ console.error("Error deleting department:", error);
196
+ actions.setError(error);
197
+ }
198
+ }
199
+ }
200
+ return (_ctx, _cache) => {
201
+ return openBlock(), createElementBlock("div", _hoisted_1, [
202
+ createVNode(_sfc_main$1, {
203
+ title: "Profile",
204
+ class: "mn-b-thin"
205
+ }, {
206
+ default: withCtx(() => [
207
+ createElementVNode("div", _hoisted_2, [
208
+ createVNode(_sfc_main$2, {
209
+ photo: currentDepartment.profile.photo,
210
+ "onUpdate:photo": _cache[0] || (_cache[0] = ($event) => currentDepartment.profile.photo = $event),
211
+ uploadPath: "organizations/" + currentDepartment.profile.name + "/departments",
212
+ class: "w-8r aspect-1x1 o-hidden mn-r-small radius-extra"
213
+ }, null, 8, ["photo", "uploadPath"]),
214
+ createElementVNode("div", _hoisted_3, [
215
+ createVNode(Field, {
216
+ field: currentDepartment.profile.name,
217
+ "onUpdate:field": _cache[1] || (_cache[1] = ($event) => currentDepartment.profile.name = $event),
218
+ label: "Name",
219
+ placeholder: "Department Name",
220
+ class: "mn-b-small bg-white radius-small pd-medium"
221
+ }, null, 8, ["field"]),
222
+ createVNode(Field, {
223
+ field: currentDepartment.profile.description,
224
+ "onUpdate:field": _cache[2] || (_cache[2] = ($event) => currentDepartment.profile.description = $event),
225
+ label: "Description",
226
+ placeholder: "Department description (max 120 symbols)",
227
+ class: "bg-white radius-small pd-medium"
228
+ }, null, 8, ["field"])
229
+ ])
230
+ ])
231
+ ]),
232
+ _: 1
233
+ }),
234
+ createVNode(_sfc_main$1, {
235
+ title: "Team",
236
+ placeholder: "No members added yet",
237
+ actions: [{
238
+ label: "+",
239
+ function: () => openMemberPopup()
240
+ }],
241
+ class: "cols-1 gap-thin mn-b-thin"
242
+ }, {
243
+ default: withCtx(() => [
244
+ (openBlock(true), createElementBlock(Fragment, null, renderList(currentDepartment.members, (member, index) => {
245
+ return openBlock(), createBlock(_sfc_main$3, {
246
+ class: "h-4r bg-white pd-thin radius-medium w-100",
247
+ key: member._id || index,
248
+ user: member.user,
249
+ photo: member.user.profile.photo,
250
+ name: member.user.profile.name || member.user.phone || member.user.email || member.user._id,
251
+ position: member.position,
252
+ action: {
253
+ label: {
254
+ is: _sfc_main$4,
255
+ props: { class: "i-medium", fill: "rgb(var(--white)" }
256
+ },
257
+ method: () => removeMember(member)
258
+ }
259
+ }, null, 8, ["user", "photo", "name", "position", "action"]);
260
+ }), 128))
261
+ ]),
262
+ _: 1
263
+ }, 8, ["actions"]),
264
+ createElementVNode("div", _hoisted_4, [
265
+ _cache[5] || (_cache[5] = createElementVNode("h3", { class: "mn-b-semi" }, "Department Settings", -1)),
266
+ _cache[6] || (_cache[6] = createElementVNode("p", { class: "p-medium mn-b-small" }, "Please settings for your department:", -1)),
267
+ createElementVNode("div", _hoisted_5, [
268
+ createVNode(_sfc_main$5, {
269
+ label: "Hidden department",
270
+ name: "hidden",
271
+ class: "w-100 mn-r-small bg-white radius-small pd-small",
272
+ "onUpdate:radio": _cache[3] || (_cache[3] = (updated) => currentDepartment.hidden = !currentDepartment.hidden),
273
+ radio: currentDepartment.hidden
274
+ }, null, 8, ["radio"])
275
+ ])
276
+ ]),
277
+ createElementVNode("div", _hoisted_6, [
278
+ _cache[7] || (_cache[7] = createElementVNode("h3", { class: "mn-b-semi" }, "Accesses", -1)),
279
+ _cache[8] || (_cache[8] = createElementVNode("p", { class: "p-medium mn-b-small" }, "Please select organization accesses for user in department:", -1)),
280
+ createElementVNode("div", _hoisted_7, [
281
+ (openBlock(true), createElementBlock(Fragment, null, renderList(currentDepartment.accesses, (actions2, category) => {
282
+ return openBlock(), createElementBlock("div", {
283
+ key: category,
284
+ class: "mn-b-small"
285
+ }, [
286
+ createVNode(_sfc_main$6, { status: false }, {
287
+ header: withCtx(({ isOpen }) => [
288
+ createElementVNode("h4", _hoisted_8, [
289
+ createTextVNode(toDisplayString(category.charAt(0).toUpperCase() + category.slice(1)) + " ", 1),
290
+ createElementVNode("span", _hoisted_9, toDisplayString(isOpen ? "▼" : "▶"), 1)
291
+ ])
292
+ ]),
293
+ content: withCtx(() => [
294
+ createElementVNode("div", _hoisted_10, [
295
+ (openBlock(true), createElementBlock(Fragment, null, renderList(actions2, (value, action) => {
296
+ return openBlock(), createBlock(_sfc_main$5, {
297
+ key: action,
298
+ label: action,
299
+ name: action,
300
+ radio: value,
301
+ "onUpdate:radio": (updated) => currentDepartment.accesses[category][action] = !value,
302
+ class: "w-100 mn-r-small bg-white radius-small pd-small"
303
+ }, null, 8, ["label", "name", "radio", "onUpdate:radio"]);
304
+ }), 128))
305
+ ])
306
+ ]),
307
+ _: 2
308
+ }, 1024)
309
+ ]);
310
+ }), 128))
311
+ ])
312
+ ]),
313
+ createElementVNode("div", _hoisted_11, [
314
+ editingDepartment.value ? (openBlock(), createBlock(_sfc_main$7, {
315
+ key: 0,
316
+ submit: onDelete,
317
+ showSuccess: true,
318
+ showLoader: true,
319
+ class: "bg-red"
320
+ }, {
321
+ default: withCtx(() => _cache[9] || (_cache[9] = [
322
+ createTextVNode(" Delete ")
323
+ ])),
324
+ _: 1
325
+ })) : createCommentVNode("", true),
326
+ createVNode(_sfc_main$7, {
327
+ showSuccess: false,
328
+ showLoader: false,
329
+ class: "bg-grey t-white w-100",
330
+ onClick: _cache[4] || (_cache[4] = ($event) => _ctx.$emit("close"))
331
+ }, {
332
+ default: withCtx(() => _cache[10] || (_cache[10] = [
333
+ createTextVNode(" Cancel ")
334
+ ])),
335
+ _: 1
336
+ }),
337
+ createVNode(_sfc_main$7, {
338
+ class: "bg-main w-100",
339
+ submit: saveDepartment
340
+ }, {
341
+ default: withCtx(() => [
342
+ createTextVNode(toDisplayString(editingDepartment.value ? "Update Department" : "Create Department"), 1)
343
+ ]),
344
+ _: 1
345
+ })
346
+ ]),
347
+ createVNode(_sfc_main$8, {
348
+ title: "Add member",
349
+ onClosePopup: closeMemberPopup,
350
+ isPopupOpen: isOpenAddMemberPopup.value,
351
+ class: "bg-white w-max-30r radius-medium pd-big"
352
+ }, {
353
+ default: withCtx(() => [
354
+ createVNode(_sfc_main$9, {
355
+ search: {
356
+ placeholder: "Search member...",
357
+ class: "bg-light mn-b-thin"
358
+ },
359
+ states: {
360
+ empty: {
361
+ title: "No Members Found",
362
+ description: "Currently, there are no members in organization."
363
+ }
364
+ },
365
+ store: {
366
+ read: (options) => unref(membershipsStore).read(options),
367
+ state: null
368
+ },
369
+ options: {
370
+ target: __props.organizationId,
371
+ role: ["member", "owner"]
372
+ },
373
+ class: "bg-light pd-medium w-min-20r w-max-40r radius-medium h-max-20r o-scroll"
374
+ }, {
375
+ default: withCtx(({
376
+ items
377
+ }) => [
378
+ (openBlock(true), createElementBlock(Fragment, null, renderList(items, (user, index) => {
379
+ return openBlock(), createBlock(_sfc_main$3, {
380
+ key: user._id,
381
+ user: user.user,
382
+ photo: user.user.profile?.photo,
383
+ name: user.user.profile?.name || user.user.phone || user.user.email,
384
+ disabled: isDuplicateMember(user.user._id),
385
+ onClick: () => addMemberToDepartment(user.user),
386
+ class: normalizeClass(["h-4r bg-white pd-thin radius-medium w-100 mn-b-thin", { "opacity-50 cursor-not-allowed": isDuplicateMember(user.user._id) }])
387
+ }, null, 8, ["user", "photo", "name", "disabled", "onClick", "class"]);
388
+ }), 128))
389
+ ]),
390
+ _: 1
391
+ }, 8, ["store", "options"])
392
+ ]),
393
+ _: 1
394
+ }, 8, ["isPopupOpen"])
395
+ ]);
396
+ };
397
+ }
398
+ };
399
+ export {
400
+ _sfc_main as default
401
+ };
402
+ //# sourceMappingURL=DepartmentForm.vue.js.map
@@ -0,0 +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-2-fit-content\"\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-medium 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-medium 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 * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\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 globals.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 globals.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 globals.actions.setError(error);\n }\n }\n}\n</script>"],"names":["globals.actions"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const vue = require("vue");
4
+ const Field = require("../../../../components/Field/Field.vue.cjs");
5
+ const Button = require("../../../../components/Button/Button.vue.cjs");
6
+ const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
7
+ const IconAdd = require("../../../icons/navigation/IconAdd.vue.cjs");
8
+ const _hoisted_1 = { class: "mn-b-thin t-transp p-medium" };
9
+ const _hoisted_2 = { class: "cols-1 mn-b-small radius-medium pd-semi bg-light pos-relative" };
10
+ const _hoisted_3 = ["onClick"];
11
+ const _sfc_main = {
12
+ __name: "InviteForm",
13
+ props: {
14
+ organization: Object,
15
+ text: {
16
+ type: String,
17
+ default: "Please enter email or phone number to send an invitation link:"
18
+ }
19
+ },
20
+ emits: ["send-invite"],
21
+ setup(__props, { emit: __emit }) {
22
+ const emit = __emit;
23
+ const contactValidation = vue.ref(null);
24
+ const members = vue.ref([{ contact: "" }]);
25
+ async function submitMembers() {
26
+ return new Promise((resolve, reject) => {
27
+ emit("send-invite", members.value, resolve, reject);
28
+ });
29
+ }
30
+ return (_ctx, _cache) => {
31
+ return vue.openBlock(), vue.createElementBlock("div", null, [
32
+ vue.createElementVNode("p", _hoisted_1, vue.toDisplayString(__props.text), 1),
33
+ vue.createElementVNode("section", _hoisted_2, [
34
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(members.value, (member, index) => {
35
+ return vue.openBlock(), vue.createElementBlock("div", {
36
+ key: index,
37
+ class: "br-1px br-solid br-grey-transp-25 flex gap-thin radius-small mn-b-thin"
38
+ }, [
39
+ vue.createVNode(Field.default, {
40
+ field: member.contact,
41
+ "onUpdate:field": ($event) => member.contact = $event,
42
+ placeholder: "Enter email or phone",
43
+ class: "w-100 pd-small radius-small bg-white",
44
+ validation: contactValidation.value
45
+ }, {
46
+ default: vue.withCtx(() => [
47
+ index < 1 ? (vue.openBlock(), vue.createElementBlock("div", {
48
+ key: 0,
49
+ onClick: _cache[0] || (_cache[0] = () => members.value.push({ contact: "" })),
50
+ class: "radius-small h-100 i-big flex-center flex aspect-1x1 bg-green"
51
+ }, [
52
+ vue.createVNode(IconAdd.default, {
53
+ class: "i-medium",
54
+ fill: "rgb(var(--white)"
55
+ })
56
+ ])) : (vue.openBlock(), vue.createElementBlock("div", {
57
+ key: 1,
58
+ onClick: () => members.value.splice(index, 1),
59
+ class: "radius-small h-100 i-big flex-center flex aspect-1x1 bg-red"
60
+ }, [
61
+ vue.createVNode(IconDelete.default, {
62
+ class: "i-medium",
63
+ fill: "rgb(var(--white)"
64
+ })
65
+ ], 8, _hoisted_3))
66
+ ]),
67
+ _: 2
68
+ }, 1032, ["field", "onUpdate:field", "validation"])
69
+ ]);
70
+ }), 128))
71
+ ]),
72
+ vue.createVNode(Button.default, {
73
+ submit: submitMembers,
74
+ class: "w-100 bg-main"
75
+ }, {
76
+ default: vue.withCtx(() => _cache[1] || (_cache[1] = [
77
+ vue.createElementVNode("span", null, "Send invitations", -1)
78
+ ])),
79
+ _: 1
80
+ })
81
+ ]);
82
+ };
83
+ }
84
+ };
85
+ exports.default = _sfc_main;
86
+ //# sourceMappingURL=InviteForm.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InviteForm.vue.cjs","sources":["../../../../../../../src/modules/organizations/components/forms/InviteForm.vue"],"sourcesContent":["<template>\n <div>\n <p class=\"mn-b-thin t-transp p-medium\">{{ text }}</p> \n\n <section class=\"cols-1 mn-b-small radius-medium pd-semi bg-light pos-relative\">\n <div\n v-for=\"(member, index) in members\" \n :key=\"index\" \n class=\"br-1px br-solid br-grey-transp-25 flex gap-thin radius-small mn-b-thin\"\n >\n <Field \n v-model:field=\"member.contact\" \n placeholder=\"Enter email or phone\" \n class=\"w-100 pd-small radius-small bg-white\"\n :validation=\"contactValidation\"\n >\n <div \n v-if=\"index < 1\" \n @click=\"() => members.push({contact: ''})\" \n class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-green\"\n >\n <IconAdd \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n\n <div \n v-else \n @click=\"() => members.splice(index, 1)\" \n class=\"radius-small h-100 i-big flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n :fill=\"'rgb(var(--white)'\"\n />\n </div>\n </Field>\n </div>\n </section>\n\n <Button \n :submit=\"submitMembers\" \n class=\"w-100 bg-main\"\n >\n <span>Send invitations</span>\n </Button>\n </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\n\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Button from '@martyrs/src/components/Button/Button.vue';\n\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';\n\nconst props = defineProps({\n organization: Object,\n text: {\n type: String,\n default: 'Please enter email or phone number to send an invitation link:'\n }\n});\n\nconst emit = defineEmits(['send-invite']);\n\n// Validation\nconst contactValidation = ref(null);\n\n// Members list\nconst members = ref([{ contact: '' }]);\n\nasync function submitMembers() {\n return new Promise((resolve, reject) => {\n emit('send-invite', members.value, resolve, reject);\n });\n}\n</script>"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmEA,UAAM,OAAO;AAGb,UAAM,oBAAoBA,IAAAA,IAAI,IAAI;AAGlC,UAAM,UAAUA,IAAAA,IAAI,CAAC,EAAE,SAAS,GAAE,CAAE,CAAC;AAErC,mBAAe,gBAAgB;AAC7B,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,aAAK,eAAe,QAAQ,OAAO,SAAS,MAAM;AAAA,MACpD,CAAC;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,86 @@
1
+ import { ref, createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, Fragment, renderList, withCtx } from "vue";
2
+ import Field from "../../../../components/Field/Field.vue.js";
3
+ import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
4
+ import _sfc_main$2 from "../../../icons/navigation/IconDelete.vue.js";
5
+ import _sfc_main$1 from "../../../icons/navigation/IconAdd.vue.js";
6
+ const _hoisted_1 = { class: "mn-b-thin t-transp p-medium" };
7
+ const _hoisted_2 = { class: "cols-1 mn-b-small radius-medium pd-semi bg-light pos-relative" };
8
+ const _hoisted_3 = ["onClick"];
9
+ const _sfc_main = {
10
+ __name: "InviteForm",
11
+ props: {
12
+ organization: Object,
13
+ text: {
14
+ type: String,
15
+ default: "Please enter email or phone number to send an invitation link:"
16
+ }
17
+ },
18
+ emits: ["send-invite"],
19
+ setup(__props, { emit: __emit }) {
20
+ const emit = __emit;
21
+ const contactValidation = ref(null);
22
+ const members = ref([{ contact: "" }]);
23
+ async function submitMembers() {
24
+ return new Promise((resolve, reject) => {
25
+ emit("send-invite", members.value, resolve, reject);
26
+ });
27
+ }
28
+ return (_ctx, _cache) => {
29
+ return openBlock(), createElementBlock("div", null, [
30
+ createElementVNode("p", _hoisted_1, toDisplayString(__props.text), 1),
31
+ createElementVNode("section", _hoisted_2, [
32
+ (openBlock(true), createElementBlock(Fragment, null, renderList(members.value, (member, index) => {
33
+ return openBlock(), createElementBlock("div", {
34
+ key: index,
35
+ class: "br-1px br-solid br-grey-transp-25 flex gap-thin radius-small mn-b-thin"
36
+ }, [
37
+ createVNode(Field, {
38
+ field: member.contact,
39
+ "onUpdate:field": ($event) => member.contact = $event,
40
+ placeholder: "Enter email or phone",
41
+ class: "w-100 pd-small radius-small bg-white",
42
+ validation: contactValidation.value
43
+ }, {
44
+ default: withCtx(() => [
45
+ index < 1 ? (openBlock(), createElementBlock("div", {
46
+ key: 0,
47
+ onClick: _cache[0] || (_cache[0] = () => members.value.push({ contact: "" })),
48
+ class: "radius-small h-100 i-big flex-center flex aspect-1x1 bg-green"
49
+ }, [
50
+ createVNode(_sfc_main$1, {
51
+ class: "i-medium",
52
+ fill: "rgb(var(--white)"
53
+ })
54
+ ])) : (openBlock(), createElementBlock("div", {
55
+ key: 1,
56
+ onClick: () => members.value.splice(index, 1),
57
+ class: "radius-small h-100 i-big flex-center flex aspect-1x1 bg-red"
58
+ }, [
59
+ createVNode(_sfc_main$2, {
60
+ class: "i-medium",
61
+ fill: "rgb(var(--white)"
62
+ })
63
+ ], 8, _hoisted_3))
64
+ ]),
65
+ _: 2
66
+ }, 1032, ["field", "onUpdate:field", "validation"])
67
+ ]);
68
+ }), 128))
69
+ ]),
70
+ createVNode(_sfc_main$3, {
71
+ submit: submitMembers,
72
+ class: "w-100 bg-main"
73
+ }, {
74
+ default: withCtx(() => _cache[1] || (_cache[1] = [
75
+ createElementVNode("span", null, "Send invitations", -1)
76
+ ])),
77
+ _: 1
78
+ })
79
+ ]);
80
+ };
81
+ }
82
+ };
83
+ export {
84
+ _sfc_main as default
85
+ };
86
+ //# sourceMappingURL=InviteForm.vue.js.map