@ozdao/martyrs 0.2.604 → 0.2.605

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 (833) hide show
  1. package/README.md +2 -2
  2. package/dist/_virtual/dayjs.min.js +1 -1
  3. package/dist/_virtual/weekOfYear.js +1 -1
  4. package/dist/{abac-Blt8bUTL.js → abac-kz5xI99l.js} +1 -0
  5. package/dist/auth.server.js +52 -12
  6. package/dist/builder.js +67 -2
  7. package/dist/chats.server.js +2 -2
  8. package/dist/community.server.js +3 -3
  9. package/dist/core.server.js +2 -2
  10. package/dist/{core.websocket-Cl76z2wT.js → core.websocket-B2FA8gGl.js} +0 -2
  11. package/dist/{crud-BT5FIvQC.js → crud-Cwn0frBP.js} +8 -2
  12. package/dist/events.server.js +4 -4
  13. package/dist/files.server.js +1 -1
  14. package/dist/gallery.server.js +2 -2
  15. package/dist/governance.server.js +10 -10
  16. package/dist/{index-kvBwwb0w.js → index-CPACC651.js} +1 -1
  17. package/dist/inventory.server.js +4 -4
  18. package/dist/{mailing-DT7nbNjZ.js → mailing-BBCidXGr.js} +38 -2
  19. package/dist/marketplace.server.js +2 -2
  20. package/dist/martyrs/dist/martyrs.es3.js +1 -1
  21. package/dist/martyrs/dist/martyrs.es3.js.map +1 -1
  22. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/dayjs.min.js +1 -1
  23. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/dayjs.min.js.map +1 -1
  24. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  25. package/dist/{node_modules/.pnpm/dayjs@1.11.13 → martyrs/node_modules/.pnpm/dayjs@1.11.19}/node_modules/dayjs/plugin/weekOfYear.js.map +1 -1
  26. package/dist/{node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_ → martyrs/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.7_vue@3.5.13}/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js +305 -268
  27. package/dist/martyrs/node_modules/.pnpm/vue-draggable-next@2.3.0_sortablejs@1.15.7_vue@3.5.13/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +1 -0
  28. package/dist/martyrs/src/components/Address/Address.vue2.js +13 -13
  29. package/dist/martyrs/src/components/Address/Address.vue2.js.map +1 -1
  30. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  31. package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
  32. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
  33. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js +150 -143
  34. package/dist/martyrs/src/components/Calendar/Calendar.vue2.js.map +1 -1
  35. package/dist/martyrs/src/components/Chart/Chart.vue.js +296 -0
  36. package/dist/martyrs/src/components/Chart/Chart.vue.js.map +1 -0
  37. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +1 -1
  38. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/Chips/Chips.vue.js +5 -6
  40. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -1
  41. package/dist/martyrs/src/components/Countdown/Countdown.vue.js +5 -5
  42. package/dist/martyrs/src/components/Countdown/Countdown.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js +2 -2
  44. package/dist/martyrs/src/components/DatePicker/DatePicker.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/EditImages/{EditImages.vue2.js → EditImages.vue.js} +6 -6
  46. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -0
  47. package/dist/martyrs/src/components/EmptyState/EmptyState.vue.js +1 -1
  48. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  49. package/dist/martyrs/src/components/Field/Field.vue.js +4 -4
  50. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  51. package/dist/martyrs/src/components/FieldDate/FieldDate.vue.js +3 -3
  52. package/dist/martyrs/src/components/FieldDate/FieldDate.vue.js.map +1 -1
  53. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +27 -21
  54. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js.map +1 -1
  55. package/dist/martyrs/src/components/Map/Map.vue.js +20 -16
  56. package/dist/martyrs/src/components/Map/Map.vue.js.map +1 -1
  57. package/dist/martyrs/src/components/Popup/Popup.vue.js +3 -4
  58. package/dist/martyrs/src/components/Popup/Popup.vue.js.map +1 -1
  59. package/dist/martyrs/src/components/Radio/Radio.vue.js +12 -10
  60. package/dist/martyrs/src/components/Radio/Radio.vue.js.map +1 -1
  61. package/dist/martyrs/src/components/Select/Select.vue.js +2 -2
  62. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
  63. package/dist/martyrs/src/components/Status/Snack.vue.js +1 -1
  64. package/dist/martyrs/src/components/Status/Snack.vue.js.map +1 -1
  65. package/dist/martyrs/src/components/Status/Status.vue.js +1 -1
  66. package/dist/martyrs/src/components/Status/Status.vue.js.map +1 -1
  67. package/dist/martyrs/src/components/Table/Table.vue.js +21 -4
  68. package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
  69. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
  70. package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
  71. package/dist/martyrs/src/components/Tree/Tree.vue.js +1 -1
  72. package/dist/martyrs/src/components/Upload/Upload.vue2.js +2 -2
  73. package/dist/martyrs/src/components/Upload/Upload.vue2.js.map +1 -1
  74. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +2 -2
  75. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +1 -1
  76. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  77. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/auth/auth.client.js +14 -2
  79. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  80. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +4 -4
  81. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js.map +1 -1
  82. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js +1 -1
  83. package/dist/martyrs/src/modules/auth/views/components/blocks/PopupAuth.vue.js.map +1 -1
  84. package/dist/martyrs/src/modules/auth/views/components/blocks/SidebarUserCard.vue.js +96 -0
  85. package/dist/martyrs/src/modules/auth/views/components/blocks/SidebarUserCard.vue.js.map +1 -0
  86. package/dist/martyrs/src/modules/auth/views/components/pages/BackofficeUsers.vue.js +337 -0
  87. package/dist/martyrs/src/modules/auth/views/components/pages/BackofficeUsers.vue.js.map +1 -0
  88. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  89. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
  90. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  91. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  92. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +32 -18
  93. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  94. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +76 -40
  95. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  96. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +6 -5
  97. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -1
  98. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +4 -4
  99. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  100. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +3 -1
  101. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  102. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +3 -3
  103. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js +28 -16
  105. package/dist/martyrs/src/modules/auth/views/components/pages/UserDashboard.vue.js.map +1 -1
  106. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js +1 -1
  107. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  108. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +1 -1
  109. package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js +6 -2
  111. package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js.map +1 -1
  112. package/dist/martyrs/src/modules/auth/views/router/users.backoffice.router.js +53 -0
  113. package/dist/martyrs/src/modules/auth/views/router/users.backoffice.router.js.map +1 -0
  114. package/dist/martyrs/src/modules/auth/views/store/auth.js +2 -2
  115. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  116. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +179 -253
  117. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  118. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js +105 -44
  119. package/dist/martyrs/src/modules/backoffice/configs/navigation.backoffice.config.js.map +1 -1
  120. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js +11 -5
  121. package/dist/martyrs/src/modules/backoffice/router/backoffice.router.js.map +1 -1
  122. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +1 -1
  123. package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
  124. package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/community/community.client.js +4 -4
  126. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  127. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  128. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +4 -4
  130. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  131. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  132. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  133. package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js +1 -1
  134. package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js.map +1 -1
  135. package/dist/martyrs/src/modules/core/core.client.js +18 -16
  136. package/dist/martyrs/src/modules/core/core.client.js.map +1 -1
  137. package/dist/martyrs/src/modules/core/views/classes/core.app.js +25 -6
  138. package/dist/martyrs/src/modules/core/views/classes/core.app.js.map +1 -1
  139. package/dist/martyrs/src/modules/core/views/classes/module.manager.js +4 -2
  140. package/dist/martyrs/src/modules/core/views/classes/module.manager.js.map +1 -1
  141. package/dist/martyrs/src/modules/core/views/components/blocks/AlertDialog.vue.js +1 -1
  142. package/dist/martyrs/src/modules/core/views/components/blocks/AlertDialog.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  144. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js.map +1 -1
  145. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSlider.vue.js +132 -0
  146. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSlider.vue.js.map +1 -0
  147. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +3 -3
  148. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  149. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js +6 -28
  150. package/dist/martyrs/src/modules/core/views/components/blocks/CardStat.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/{auth → core}/views/components/blocks/CardUser.vue.js +29 -11
  152. package/dist/martyrs/src/modules/{auth → core}/views/components/blocks/CardUser.vue.js.map +1 -1
  153. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js +2 -2
  154. package/dist/martyrs/src/modules/core/views/components/blocks/HelpCard.vue.js.map +1 -1
  155. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +41 -26
  156. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  157. package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js +1 -1
  158. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +2 -1
  159. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  160. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js +2 -2
  161. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js.map +1 -1
  162. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js +5 -5
  163. package/dist/martyrs/src/modules/core/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  164. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js +2 -2
  165. package/dist/martyrs/src/modules/core/views/components/partials/CitySelection.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js +2 -2
  167. package/dist/martyrs/src/modules/core/views/components/partials/Footer.vue.js.map +1 -1
  168. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +4 -4
  169. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js.map +1 -1
  170. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js +1 -1
  171. package/dist/martyrs/src/modules/core/views/components/partials/LocationSelection.vue.js.map +1 -1
  172. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js +2 -2
  173. package/dist/martyrs/src/modules/core/views/components/partials/Navigation.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js +3 -3
  175. package/dist/martyrs/src/modules/core/views/components/sections/Filters.vue2.js.map +1 -1
  176. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js +2 -2
  177. package/dist/martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue.js.map +1 -1
  178. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +6 -6
  179. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js.map +1 -1
  180. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +14 -1
  181. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  182. package/dist/martyrs/src/modules/core/views/plugins/date-picker.plugin.js +8 -5
  183. package/dist/martyrs/src/modules/core/views/plugins/date-picker.plugin.js.map +1 -1
  184. package/dist/martyrs/src/modules/core/views/store/core.store.js +4 -0
  185. package/dist/martyrs/src/modules/core/views/store/core.store.js.map +1 -1
  186. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js +3 -0
  187. package/dist/martyrs/src/modules/core/views/utils/vue-app-renderer.js.map +1 -1
  188. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  189. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +9 -9
  190. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  192. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  193. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
  194. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js.map +1 -1
  195. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js +1 -1
  196. package/dist/martyrs/src/modules/events/components/sections/SelectDate.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/events/events.client.js +4 -4
  198. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  199. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  200. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/gallery/router/gallery.router.js +3 -3
  202. package/dist/martyrs/src/modules/gallery/router/gallery.router.js.map +1 -1
  203. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js +3 -3
  204. package/dist/martyrs/src/modules/governance/views/components/blocks/CardInitiativeItem.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js +4 -4
  206. package/dist/martyrs/src/modules/governance/views/components/blocks/CardSprintItem.vue.js.map +1 -1
  207. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js +2 -2
  208. package/dist/martyrs/src/modules/governance/views/components/blocks/CardTaskItem.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js +3 -3
  210. package/dist/martyrs/src/modules/governance/views/components/blocks/CardVotingItem.vue.js.map +1 -1
  211. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js +3 -3
  212. package/dist/martyrs/src/modules/governance/views/components/pages/Initiatives.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js +1 -1
  214. package/dist/martyrs/src/modules/governance/views/components/partials/TaskStatusBadge.vue.js.map +1 -1
  215. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js +1 -1
  216. package/dist/martyrs/src/modules/governance/views/components/sections/FormSprintDetails.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js +1 -1
  218. package/dist/martyrs/src/modules/governance/views/components/sections/FormTaskDetails.vue.js.map +1 -1
  219. package/dist/martyrs/src/modules/governance/views/router/governance.router.js +3 -3
  220. package/dist/martyrs/src/modules/governance/views/router/governance.router.js.map +1 -1
  221. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +2 -2
  222. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/icons/entities/IconApplications.vue.js +32 -0
  224. package/dist/martyrs/src/modules/icons/entities/IconApplications.vue.js.map +1 -0
  225. package/dist/martyrs/src/modules/icons/entities/IconCustomers.vue.js +32 -0
  226. package/dist/martyrs/src/modules/icons/entities/IconCustomers.vue.js.map +1 -0
  227. package/dist/martyrs/src/modules/icons/entities/IconUsers.vue.js +32 -0
  228. package/dist/martyrs/src/modules/icons/entities/IconUsers.vue.js.map +1 -0
  229. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  230. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +2 -2
  232. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js.map +1 -1
  233. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  234. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  236. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +290 -173
  238. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  240. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  241. package/dist/martyrs/src/modules/inventory/inventory.client.js +4 -4
  242. package/dist/martyrs/src/modules/inventory/inventory.client.js.map +1 -1
  243. package/dist/martyrs/src/modules/inventory/router/inventory.router.js +15 -0
  244. package/dist/martyrs/src/modules/inventory/router/inventory.router.js.map +1 -1
  245. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js +4 -4
  246. package/dist/martyrs/src/modules/landing/components/sections/SectionEarn.vue.js.map +1 -1
  247. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js +1 -1
  248. package/dist/martyrs/src/modules/landing/components/sections/SectionFeatures.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js +3 -3
  250. package/dist/martyrs/src/modules/landing/components/sections/SectionFeaturesImages.vue.js.map +1 -1
  251. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  252. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  253. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js +1 -1
  254. package/dist/martyrs/src/modules/landing/components/sections/SectionHeroToken.vue.js.map +1 -1
  255. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js +2 -2
  256. package/dist/martyrs/src/modules/landing/components/sections/SectionMobileApp.vue.js.map +1 -1
  257. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js +1 -1
  258. package/dist/martyrs/src/modules/landing/components/sections/SectionOverview.vue.js.map +1 -1
  259. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js +2 -2
  260. package/dist/martyrs/src/modules/landing/components/sections/SectionRoadmap.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +1 -1
  262. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  263. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +3 -3
  264. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  265. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +2 -2
  266. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  267. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js +2 -2
  268. package/dist/martyrs/src/modules/music/components/cards/ArtistCard.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +2 -2
  270. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +2 -2
  272. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js.map +1 -1
  273. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +6 -6
  274. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  276. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js.map +1 -1
  277. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  278. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js.map +1 -1
  279. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +5 -5
  280. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  282. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js.map +1 -1
  283. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +8 -8
  284. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  285. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +5 -5
  286. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js.map +1 -1
  287. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +11 -11
  288. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  289. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +3 -3
  290. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js.map +1 -1
  291. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +11 -11
  292. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  293. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +4 -4
  294. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -1
  295. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js +2 -2
  296. package/dist/martyrs/src/modules/music/components/player/TrackProgress.vue.js.map +1 -1
  297. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +162 -68
  298. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js.map +1 -1
  299. package/dist/martyrs/src/modules/notifications/notifications.client.js +181 -17
  300. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  301. package/dist/martyrs/src/modules/notifications/router/notifications.backoffice.router.js +21 -0
  302. package/dist/martyrs/src/modules/notifications/router/notifications.backoffice.router.js.map +1 -0
  303. package/dist/martyrs/src/modules/notifications/router/notifications.router.js +13 -42
  304. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -1
  305. package/dist/martyrs/src/modules/notifications/store/notifications.store.js +66 -1
  306. package/dist/martyrs/src/modules/notifications/store/notifications.store.js.map +1 -1
  307. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +9 -7
  308. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -1
  309. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +11 -9
  310. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -1
  311. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js +9 -9
  312. package/dist/martyrs/src/modules/orders/components/blocks/CardOrder.vue.js.map +1 -1
  313. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +66 -19
  314. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
  315. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +29 -27
  316. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +7 -12
  318. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js.map +1 -1
  319. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +1 -1
  320. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  321. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js +4 -4
  322. package/dist/martyrs/src/modules/orders/components/elements/PriceTotal.vue.js.map +1 -1
  323. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  324. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -1
  325. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +46 -25
  326. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +2 -2
  328. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -1
  329. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +54 -38
  330. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -1
  331. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +454 -139
  332. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  333. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +2 -1
  334. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  335. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +141 -68
  336. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  337. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +38 -32
  338. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  339. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +1 -1
  340. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  341. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +4 -4
  342. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -1
  343. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js +1 -1
  344. package/dist/martyrs/src/modules/orders/components/sections/AskToLogin.vue.js.map +1 -1
  345. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +167 -95
  346. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/orders/orders.client.js +22 -20
  348. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  349. package/dist/martyrs/src/modules/orders/store/orders.js +3 -5
  350. package/dist/martyrs/src/modules/orders/store/orders.js.map +1 -1
  351. package/dist/martyrs/src/modules/orders/store/shopcart.js +5 -5
  352. package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
  353. package/dist/martyrs/src/modules/orders/utils/rent-price.js +60 -0
  354. package/dist/martyrs/src/modules/orders/utils/rent-price.js.map +1 -0
  355. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +2 -2
  356. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +45 -55
  357. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  358. package/dist/martyrs/src/modules/organizations/components/blocks/EmptyState.vue.js +1 -1
  359. package/dist/martyrs/src/modules/organizations/components/blocks/Rating.vue.js +1 -1
  360. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +2 -2
  361. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
  362. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  363. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
  364. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +3 -3
  365. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -1
  366. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
  367. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -1
  368. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  369. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -1
  370. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +2 -2
  371. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  372. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +8 -8
  373. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  374. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +216 -83
  375. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  376. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +35 -25
  377. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  378. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +3 -2
  379. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  380. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +2 -2
  381. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  382. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  383. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  384. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +20 -18
  385. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  386. package/dist/martyrs/src/modules/organizations/organizations.client.js +39 -33
  387. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  388. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js +81 -0
  389. package/dist/martyrs/src/modules/organizations/router/organizations.backoffice.router.js.map +1 -1
  390. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  391. package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js +1 -1
  392. package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js.map +1 -1
  393. package/dist/martyrs/src/modules/pages/views/router/pages.router.js +2 -2
  394. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -1
  395. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +1 -1
  396. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  397. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +2 -2
  398. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  399. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +3 -3
  400. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  401. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +2 -2
  402. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  403. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +3 -3
  404. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -1
  405. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +2 -2
  406. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  407. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +9 -25
  408. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +34 -17
  410. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  411. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +96 -96
  412. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  413. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  414. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -1
  415. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  416. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -1
  417. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +22 -9
  418. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  419. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  420. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  421. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  422. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -1
  423. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +3 -3
  424. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  425. package/dist/martyrs/src/modules/products/router/categories.router.js +2 -2
  426. package/dist/martyrs/src/modules/products/router/categories.router.js.map +1 -1
  427. package/dist/martyrs/src/modules/products/router/products.router.js +17 -3
  428. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  429. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js +11 -10
  430. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttBar.vue.js.map +1 -1
  431. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js +197 -81
  432. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttChart.vue.js.map +1 -1
  433. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js +2 -2
  434. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue.js.map +1 -1
  435. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
  436. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js.map +1 -1
  437. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +685 -80
  438. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js.map +1 -1
  439. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +68 -18
  440. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  441. package/dist/martyrs/src/modules/rents/views/router/rents.router.js +3 -3
  442. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -1
  443. package/dist/martyrs/src/modules/rents/views/store/rents.store.js +1 -1
  444. package/dist/martyrs/src/modules/rents/views/store/rents.store.js.map +1 -1
  445. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js +3 -3
  446. package/dist/martyrs/src/modules/reports/components/pages/BackofficeReports.vue.js.map +1 -1
  447. package/dist/martyrs/src/modules/reports/router/reports.router.js +1 -1
  448. package/dist/martyrs/src/modules/reports/router/reports.router.js.map +1 -1
  449. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +5 -5
  450. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  451. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  452. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +3 -3
  453. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js.map +1 -1
  454. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +9 -7
  455. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  456. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +29 -37
  457. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
  458. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +8 -8
  459. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -1
  460. package/dist/martyrs/src/modules/spots/router/spots.router.js +3 -3
  461. package/dist/martyrs/src/modules/spots/router/spots.router.js.map +1 -1
  462. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js +3 -3
  463. package/dist/martyrs/src/modules/wallet/views/components/elements/ConnectMetamask.vue.js.map +1 -1
  464. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
  465. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js.map +1 -1
  466. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js +1 -1
  467. package/dist/martyrs/src/modules/wallet/views/router/wallet.router.js.map +1 -1
  468. package/dist/martyrs.es10.js +59 -57
  469. package/dist/martyrs.es106.js +2 -2
  470. package/dist/martyrs.es11.js +31 -30
  471. package/dist/martyrs.es113.js +22 -166
  472. package/dist/martyrs.es114.js +4 -457
  473. package/dist/martyrs.es115.js +8 -40
  474. package/dist/martyrs.es116.js +166 -9
  475. package/dist/martyrs.es117.js +451 -43
  476. package/dist/martyrs.es118.js +38 -10
  477. package/dist/martyrs.es119.js +9 -44
  478. package/dist/martyrs.es12.js +8 -9
  479. package/dist/martyrs.es120.js +49 -4
  480. package/dist/martyrs.es121.js +10 -127
  481. package/dist/martyrs.es122.js +42 -98
  482. package/dist/martyrs.es123.js +4 -86
  483. package/dist/martyrs.es124.js +120 -29
  484. package/dist/martyrs.es125.js +99 -10
  485. package/dist/martyrs.es126.js +71 -24
  486. package/dist/martyrs.es127.js +37 -8
  487. package/dist/martyrs.es128.js +11 -22
  488. package/dist/martyrs.es129.js +39 -4
  489. package/dist/martyrs.es13.js +22 -19
  490. package/dist/martyrs.es130.js +9 -8
  491. package/dist/martyrs.es131.js +7 -7
  492. package/dist/martyrs.es132.js +2 -2
  493. package/dist/martyrs.es133.js +1 -1
  494. package/dist/martyrs.es135.js +1 -1
  495. package/dist/martyrs.es137.js +1 -1
  496. package/dist/martyrs.es138.js +7 -8
  497. package/dist/martyrs.es139.js +8 -7
  498. package/dist/martyrs.es14.js +2 -2
  499. package/dist/martyrs.es140.js +2 -2
  500. package/dist/martyrs.es144.js +10 -29
  501. package/dist/martyrs.es145.js +29 -10
  502. package/dist/martyrs.es146.js +2 -2
  503. package/dist/martyrs.es147.js +2 -2
  504. package/dist/martyrs.es149.js +1 -1
  505. package/dist/martyrs.es2.js +31 -30
  506. package/dist/martyrs.es22.js +16 -16
  507. package/dist/martyrs.es23.js +8 -8
  508. package/dist/martyrs.es24.js +9 -9
  509. package/dist/martyrs.es26.js +9 -11
  510. package/dist/martyrs.es27.js +9 -9
  511. package/dist/martyrs.es28.js +1 -1
  512. package/dist/martyrs.es29.js +5 -5
  513. package/dist/martyrs.es3.js +1 -1
  514. package/dist/martyrs.es38.js +1 -1
  515. package/dist/martyrs.es4.js +12 -12
  516. package/dist/martyrs.es41.js +34 -224
  517. package/dist/martyrs.es5.js +251 -238
  518. package/dist/martyrs.es61.js +33 -26
  519. package/dist/martyrs.es74.js +7 -7
  520. package/dist/martyrs.es76.js +12 -12
  521. package/dist/martyrs.es8.js +31 -31
  522. package/dist/music.server.js +3 -3
  523. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@2.0.2/node_modules/@googlemaps/js-api-loader/dist/index.js +90 -0
  524. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@2.0.2/node_modules/@googlemaps/js-api-loader/dist/index.js.map +1 -0
  525. package/dist/notifications.server.js +255 -23
  526. package/dist/orders.server.js +674 -136
  527. package/dist/organizations.server.js +11 -6
  528. package/dist/products.server.js +68 -7
  529. package/dist/{queryProcessor-C_5Iipam.js → queryProcessor-B2FCngFP.js} +3 -2
  530. package/dist/rents.server.js +183 -7
  531. package/dist/{socials.schema-DxnnaBgO.js → socials.schema-C3RjkqJv.js} +4 -0
  532. package/dist/spots.server.js +1 -1
  533. package/dist/style.css +292 -204
  534. package/dist/{tickets.controller-DdF85W-i.js → tickets.controller-Dpzf4kQx.js} +1 -1
  535. package/dist/wallet.server.js +2 -2
  536. package/package.json +5 -3
  537. package/src/builder/modes/ssr.rspack.dev.js +2 -0
  538. package/src/builder/rspack/rspack.config.ssr.client.js +58 -1
  539. package/src/builder/ssr/asset-resolver.js +1 -1
  540. package/src/builder/templates/page.js +2 -0
  541. package/src/components/Address/Address.vue +16 -16
  542. package/src/components/Button/Button.vue +0 -1
  543. package/src/components/ButtonSegmented/ButtonSegmented.vue +1 -1
  544. package/src/components/Calendar/Calendar.vue +141 -118
  545. package/src/components/Chart/Chart.vue +216 -0
  546. package/src/components/Checkbox/Checkbox.vue +1 -1
  547. package/src/components/Chips/Chips.vue +4 -5
  548. package/src/components/Countdown/Countdown.vue +5 -5
  549. package/src/components/DatePicker/DatePicker.vue +2 -2
  550. package/src/components/EditImages/EditImages.vue +3 -3
  551. package/src/components/EmptyState/EmptyState.vue +1 -1
  552. package/src/components/Feed/Feed.vue +5 -0
  553. package/src/components/Field/Field.vue +3 -3
  554. package/src/components/FieldDate/FieldDate.vue +2 -2
  555. package/src/components/LocationMarker/LocationMarker.vue +28 -21
  556. package/src/components/Map/Map.vue +20 -15
  557. package/src/components/Popup/Popup.vue +3 -3
  558. package/src/components/Radio/Radio.vue +2 -2
  559. package/src/components/Select/Select.vue +1 -1
  560. package/src/components/Status/Snack.vue +1 -1
  561. package/src/components/Status/Status.vue +1 -1
  562. package/src/components/Table/Table.vue +16 -1
  563. package/src/components/Upload/Upload.vue +1 -1
  564. package/src/components/UploadImage/UploadImage.vue +1 -1
  565. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +1 -1
  566. package/src/jit/rules.js +4 -0
  567. package/src/modules/TASKS.MD +16 -3
  568. package/src/modules/auth/auth.client.js +18 -3
  569. package/src/modules/auth/controllers/routes/users.routes.js +18 -0
  570. package/src/modules/auth/controllers/services/auth.service.js +3 -3
  571. package/src/modules/auth/controllers/services/users.service.js +34 -5
  572. package/src/modules/auth/views/components/blocks/OtpDialog.vue +4 -4
  573. package/src/modules/auth/views/components/blocks/PopupAuth.vue +1 -1
  574. package/src/modules/auth/views/components/blocks/SidebarUserCard.vue +95 -0
  575. package/src/modules/auth/views/components/pages/BackofficeUsers.vue +337 -0
  576. package/src/modules/auth/views/components/pages/Invite.vue +1 -1
  577. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  578. package/src/modules/auth/views/components/pages/ProfileEdit.vue +23 -14
  579. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +45 -26
  580. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +8 -7
  581. package/src/modules/auth/views/components/pages/ResetPassword.vue +4 -4
  582. package/src/modules/auth/views/components/pages/SignUp.vue +3 -3
  583. package/src/modules/auth/views/components/pages/UserDashboard.vue +8 -5
  584. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  585. package/src/modules/auth/views/components/sections/SliderFeatures.vue +1 -1
  586. package/src/modules/auth/views/middlewares/auth.validation.js +7 -2
  587. package/src/modules/auth/views/router/users.backoffice.router.js +39 -0
  588. package/src/modules/auth/views/store/auth.js +2 -2
  589. package/src/modules/backoffice/components/admin/Backcalls.vue +2 -2
  590. package/src/modules/backoffice/components/admin/Dashboard.sublime-workspace +1 -1
  591. package/src/modules/backoffice/components/admin/FastOrders.vue +3 -3
  592. package/src/modules/backoffice/components/admin/UserEdit.vue +1 -1
  593. package/src/modules/backoffice/components/pages/Dashboard.vue +102 -139
  594. package/src/modules/backoffice/configs/navigation.backoffice.config.js +91 -29
  595. package/src/modules/backoffice/router/backoffice.router.js +7 -1
  596. package/src/modules/chats/components/blocks/ChatMessage.vue +1 -1
  597. package/src/modules/chats/components/sections/ChatWindow.vue +1 -1
  598. package/src/modules/community/community.client.js +4 -4
  599. package/src/modules/community/components/blocks/CardBlogpost.vue +1 -1
  600. package/src/modules/community/components/layouts/Community.vue +4 -4
  601. package/src/modules/community/components/sections/Comment.vue +1 -1
  602. package/src/modules/constructor/components/elements/ImageUpload.vue +1 -1
  603. package/src/modules/core/TASK.MD +2 -2
  604. package/src/modules/core/controllers/classes/abac/abac.core.js +1 -0
  605. package/src/modules/core/controllers/classes/core.websocket.js +0 -2
  606. package/src/modules/core/controllers/classes/crud/crud.core.js +6 -0
  607. package/src/modules/core/controllers/classes/crud/crud.service.js +6 -0
  608. package/src/modules/core/controllers/utils/mailing.js +35 -26
  609. package/src/modules/core/controllers/utils/queryProcessor.js +4 -2
  610. package/src/modules/core/core.client.js +1 -0
  611. package/src/modules/core/models/schemas/embedding.schema.js +8 -0
  612. package/src/modules/core/models/schemas/socials.schema.js +4 -0
  613. package/src/modules/core/sw.js +448 -0
  614. package/src/modules/core/views/classes/core.app.js +37 -13
  615. package/src/modules/core/views/classes/module.manager.js +3 -1
  616. package/src/modules/core/views/components/blocks/AlertDialog.vue +1 -1
  617. package/src/modules/core/views/components/blocks/BlockSearch.vue +1 -1
  618. package/src/modules/core/views/components/blocks/BlockSlider.vue +96 -0
  619. package/src/modules/core/views/components/blocks/CardHeader.vue +2 -2
  620. package/src/modules/core/views/components/blocks/CardStat.vue +4 -18
  621. package/src/modules/{auth → core}/views/components/blocks/CardUser.vue +45 -20
  622. package/src/modules/core/views/components/blocks/HelpCard.vue +1 -1
  623. package/src/modules/core/views/components/blocks/PopupAuth.vue +1 -1
  624. package/src/modules/core/views/components/blocks/PopupDateSelector.vue +41 -24
  625. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  626. package/src/modules/core/views/components/pages/404.vue +5 -5
  627. package/src/modules/core/views/components/partials/BottomNavigationBar.vue +5 -5
  628. package/src/modules/core/views/components/partials/CitySelection.vue +2 -2
  629. package/src/modules/core/views/components/partials/Footer.centered.vue +2 -2
  630. package/src/modules/core/views/components/partials/Footer.vue +2 -2
  631. package/src/modules/core/views/components/partials/Header.vue +3 -3
  632. package/src/modules/core/views/components/partials/LocationSelection.vue +1 -1
  633. package/src/modules/core/views/components/partials/Navigation.vue +1 -1
  634. package/src/modules/core/views/components/sections/Filters.vue +2 -2
  635. package/src/modules/core/views/components/sections/SectionPageTitle.vue +2 -2
  636. package/src/modules/core/views/components/sections/Walkthrough.vue +6 -6
  637. package/src/modules/core/views/mixins/mixins.js +17 -0
  638. package/src/modules/core/views/plugins/date-picker.plugin.js +8 -5
  639. package/src/modules/core/views/store/core.store.js +5 -0
  640. package/src/modules/core/views/utils/vue-app-renderer.js +5 -0
  641. package/src/modules/events/components/pages/EditEventTickets.vue +9 -9
  642. package/src/modules/events/components/pages/Event.vue +2 -2
  643. package/src/modules/events/components/sections/EditTickets.vue +1 -1
  644. package/src/modules/events/components/sections/SelectDate.vue +1 -1
  645. package/src/modules/events/events.client.js +4 -4
  646. package/src/modules/gallery/components/sections/BackofficeGallery.vue +1 -1
  647. package/src/modules/gallery/router/gallery.router.js +3 -3
  648. package/src/modules/governance/middlewares/sprints.verifier.js +3 -3
  649. package/src/modules/governance/middlewares/tasks.verifier.js +3 -3
  650. package/src/modules/governance/models/sprint.model.js +1 -1
  651. package/src/modules/governance/models/task.model.js +1 -1
  652. package/src/modules/governance/reactcode/src/components/TaskStatusBadge.tsx +1 -1
  653. package/src/modules/governance/views/components/blocks/CardInitiativeItem.vue +3 -3
  654. package/src/modules/governance/views/components/blocks/CardSprintItem.vue +4 -4
  655. package/src/modules/governance/views/components/blocks/CardTaskItem.vue +2 -2
  656. package/src/modules/governance/views/components/blocks/CardVotingItem.vue +3 -3
  657. package/src/modules/governance/views/components/pages/Initiatives.vue +3 -3
  658. package/src/modules/governance/views/components/partials/TaskStatusBadge.vue +1 -1
  659. package/src/modules/governance/views/components/sections/FormSprintDetails.vue +1 -1
  660. package/src/modules/governance/views/components/sections/FormTaskDetails.vue +1 -1
  661. package/src/modules/governance/views/router/governance.router.js +3 -3
  662. package/src/modules/icons/components/IconSearchPopup.vue +1 -1
  663. package/src/modules/icons/entities/IconApplications.vue +14 -0
  664. package/src/modules/icons/entities/IconCustomers.vue +14 -0
  665. package/src/modules/icons/entities/IconUsers.vue +14 -0
  666. package/src/modules/inventory/components/forms/AdjustmentForm.vue +2 -2
  667. package/src/modules/inventory/components/forms/ColumnSettingsMenu.vue +2 -2
  668. package/src/modules/inventory/components/forms/HistoryView.vue +1 -1
  669. package/src/modules/inventory/components/forms/StockAlertsForm.vue +3 -3
  670. package/src/modules/inventory/components/pages/Inventory.vue +278 -159
  671. package/src/modules/inventory/components/pages/InventoryEdit.vue +2 -2
  672. package/src/modules/inventory/inventory.client.js +4 -4
  673. package/src/modules/inventory/models/stock.audit.model.js +1 -1
  674. package/src/modules/inventory/router/inventory.router.js +12 -0
  675. package/src/modules/landing/components/sections/SectionEarn.vue +3 -3
  676. package/src/modules/landing/components/sections/SectionFeature.vue +1 -1
  677. package/src/modules/landing/components/sections/SectionFeatures.vue +1 -1
  678. package/src/modules/landing/components/sections/SectionFeaturesImages.vue +2 -2
  679. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  680. package/src/modules/landing/components/sections/SectionHeroToken.vue +1 -1
  681. package/src/modules/landing/components/sections/SectionHeroVideo.vue +1 -1
  682. package/src/modules/landing/components/sections/SectionMobileApp.vue +2 -2
  683. package/src/modules/landing/components/sections/SectionOverview.vue +1 -1
  684. package/src/modules/landing/components/sections/SectionRoadmap.vue +1 -1
  685. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +1 -1
  686. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
  687. package/src/modules/music/components/SidebarMusic.vue +1 -1
  688. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  689. package/src/modules/music/components/cards/ArtistCard.vue +1 -1
  690. package/src/modules/music/components/cards/ArtistCardSmall.vue +1 -1
  691. package/src/modules/music/components/cards/PlaylistCard.vue +1 -1
  692. package/src/modules/music/components/cards/TrackListCard.vue +6 -6
  693. package/src/modules/music/components/forms/AlbumForm.vue +2 -2
  694. package/src/modules/music/components/forms/ArtistForm.vue +1 -1
  695. package/src/modules/music/components/forms/PlaylistForm.vue +5 -5
  696. package/src/modules/music/components/forms/TrackForm.vue +3 -3
  697. package/src/modules/music/components/pages/Album.vue +8 -8
  698. package/src/modules/music/components/pages/Artist.vue +5 -5
  699. package/src/modules/music/components/pages/Playlist.vue +11 -11
  700. package/src/modules/music/components/pages/SearchResults.vue +2 -2
  701. package/src/modules/music/components/pages/Track.vue +11 -11
  702. package/src/modules/music/components/player/FullscreenPlayer.vue +3 -3
  703. package/src/modules/music/components/player/TrackProgress.vue +1 -1
  704. package/src/modules/notifications/components/sections/NotificationPreferences.vue +182 -52
  705. package/src/modules/notifications/controllers/notifications.controller.js +242 -17
  706. package/src/modules/notifications/models/notification-preference.model.js +4 -0
  707. package/src/modules/notifications/notifications.client.js +213 -20
  708. package/src/modules/notifications/router/notifications.backoffice.router.js +16 -0
  709. package/src/modules/notifications/router/notifications.router.js +13 -45
  710. package/src/modules/notifications/routes/notifications.routes.js +9 -0
  711. package/src/modules/notifications/services/notification.service.js +33 -9
  712. package/src/modules/notifications/services/telegram.service.js +2 -2
  713. package/src/modules/notifications/services/web-push.service.js +6 -2
  714. package/src/modules/notifications/store/notifications.store.js +69 -0
  715. package/src/modules/orders/components/blocks/CardApplication.vue +9 -6
  716. package/src/modules/orders/components/blocks/CardCustomer.vue +10 -7
  717. package/src/modules/orders/components/blocks/CardOrder.vue +8 -8
  718. package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +58 -12
  719. package/src/modules/orders/components/blocks/CardOrderItem.vue +31 -28
  720. package/src/modules/orders/components/blocks/CardOrderUser.vue +7 -12
  721. package/src/modules/orders/components/blocks/CardOrderVar1.vue +3 -3
  722. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +1 -1
  723. package/src/modules/orders/components/elements/PriceTotal.vue +4 -4
  724. package/src/modules/orders/components/forms/FormApplicationDetails.vue +1 -1
  725. package/src/modules/orders/components/forms/FormSelectCustomer.vue +48 -25
  726. package/src/modules/orders/components/pages/Applications.vue +2 -2
  727. package/src/modules/orders/components/pages/Customers.vue +35 -23
  728. package/src/modules/orders/components/pages/OrderBackoffice.vue +780 -393
  729. package/src/modules/orders/components/pages/OrderCreate.vue +5 -4
  730. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +112 -42
  731. package/src/modules/orders/components/pages/Orders.vue +20 -19
  732. package/src/modules/orders/components/pages/Orders_refact.vue +3 -3
  733. package/src/modules/orders/components/partials/ShopCart.vue +1 -1
  734. package/src/modules/orders/components/sections/ApplicationDetails.vue +2 -2
  735. package/src/modules/orders/components/sections/AskToLogin.vue +1 -1
  736. package/src/modules/orders/components/sections/CustomerDetails.vue +130 -64
  737. package/src/modules/orders/controllers/orders.controller.js +463 -134
  738. package/src/modules/orders/middlewares/applications.verifier.js +3 -3
  739. package/src/modules/orders/middlewares/customers.verifier.js +4 -0
  740. package/src/modules/orders/middlewares/orders.verifier.js +187 -0
  741. package/src/modules/orders/models/customer.model.js +2 -0
  742. package/src/modules/orders/models/order.model.js +20 -2
  743. package/src/modules/orders/orders.client.js +21 -19
  744. package/src/modules/orders/routes/applications.routes.js +13 -3
  745. package/src/modules/orders/routes/customers.routes.js +2 -0
  746. package/src/modules/orders/routes/orders.routes.js +46 -4
  747. package/src/modules/orders/store/orders.js +4 -7
  748. package/src/modules/orders/store/shopcart.js +6 -7
  749. package/src/modules/orders/utils/rent-price.js +90 -0
  750. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  751. package/src/modules/organizations/components/blocks/CardOrganization.vue +30 -33
  752. package/src/modules/organizations/components/blocks/EmptyState.vue +1 -1
  753. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  754. package/src/modules/organizations/components/blocks/Socials.vue +2 -2
  755. package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +1 -1
  756. package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +3 -3
  757. package/src/modules/organizations/components/forms/DepartmentForm.vue +1 -1
  758. package/src/modules/organizations/components/forms/InviteForm.vue +1 -1
  759. package/src/modules/organizations/components/pages/Department.vue +2 -2
  760. package/src/modules/organizations/components/pages/DepartmentEdit.vue +1 -1
  761. package/src/modules/organizations/components/pages/Members.vue +8 -8
  762. package/src/modules/organizations/components/pages/Organization.vue +232 -124
  763. package/src/modules/organizations/components/pages/OrganizationCreate.vue +3 -3
  764. package/src/modules/organizations/components/pages/OrganizationDocuments.vue +1 -1
  765. package/src/modules/organizations/components/pages/OrganizationEdit.vue +15 -6
  766. package/src/modules/organizations/components/pages/Organizations.vue +3 -2
  767. package/src/modules/organizations/components/sections/Documents.vue +1 -1
  768. package/src/modules/organizations/components/sections/MembersAdd.vue +2 -2
  769. package/src/modules/organizations/configs/navigation.organization.config.js +34 -26
  770. package/src/modules/organizations/controllers/organizations.controller.js +8 -3
  771. package/src/modules/organizations/models/organization.model.js +1 -0
  772. package/src/modules/organizations/organizations.client.js +39 -33
  773. package/src/modules/organizations/router/organizations.backoffice.router.js +67 -0
  774. package/src/modules/pages/views/components/pages/Pages.vue +1 -1
  775. package/src/modules/pages/views/router/pages.router.js +2 -2
  776. package/src/modules/products/components/blocks/CardPosition.vue +2 -2
  777. package/src/modules/products/components/blocks/CardProduct.vue +2 -2
  778. package/src/modules/products/components/blocks/ProductDiscounts.vue +1 -1
  779. package/src/modules/products/components/blocks/ProductImages.vue +1 -1
  780. package/src/modules/products/components/blocks/ProductVariants.vue +3 -3
  781. package/src/modules/products/components/elements/Price.vue +2 -2
  782. package/src/modules/products/components/forms/ColumnSettingsMenu.vue +2 -2
  783. package/src/modules/products/components/forms/ReorderSettingsForm.vue +3 -3
  784. package/src/modules/products/components/forms/StockAuditForm.vue +2 -2
  785. package/src/modules/products/components/forms/StockHistoryView.vue +1 -1
  786. package/src/modules/products/components/pages/Categories.vue +9 -20
  787. package/src/modules/products/components/pages/ProductEdit.vue +19 -3
  788. package/src/modules/products/components/pages/Products.vue +20 -19
  789. package/src/modules/products/components/sections/EditAttributes.vue +1 -1
  790. package/src/modules/products/components/sections/EditCategories.vue +1 -1
  791. package/src/modules/products/components/sections/EditDiscounts.vue +2 -2
  792. package/src/modules/products/components/sections/EditVariants.vue +14 -2
  793. package/src/modules/products/components/sections/FilterProducts.vue +1 -1
  794. package/src/modules/products/components/sections/ProductConfigurator.vue +1 -1
  795. package/src/modules/products/components/sections/SectionProduct.vue +3 -3
  796. package/src/modules/products/controllers/products.controller.js +50 -5
  797. package/src/modules/products/experiments/product-recommendation/components/HeroRecommendation.vue +2 -2
  798. package/src/modules/products/models/product.model.js +7 -0
  799. package/src/modules/products/models/variant.model.js +4 -0
  800. package/src/modules/products/router/categories.router.js +2 -2
  801. package/src/modules/products/router/products.router.js +14 -3
  802. package/src/modules/rents/controllers/routes/rents.routes.js +11 -0
  803. package/src/modules/rents/controllers/services/rents.services.js +193 -2
  804. package/src/modules/rents/models/rent.model.js +9 -0
  805. package/src/modules/rents/views/components/pages/Gant/GanttBar.vue +28 -11
  806. package/src/modules/rents/views/components/pages/Gant/GanttChart.vue +200 -40
  807. package/src/modules/rents/views/components/pages/Gant/GanttHeaderCell.vue +2 -2
  808. package/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue +2 -2
  809. package/src/modules/rents/views/components/pages/Rents.vue +641 -142
  810. package/src/modules/rents/views/components/pages/RentsEdit.vue +44 -4
  811. package/src/modules/rents/views/router/rents.router.js +3 -3
  812. package/src/modules/rents/views/store/rents.store.js +1 -1
  813. package/src/modules/reports/components/pages/BackofficeReports.vue +3 -3
  814. package/src/modules/reports/router/reports.router.js +1 -1
  815. package/src/modules/spots/components/blocks/CardSpot.vue +6 -6
  816. package/src/modules/spots/components/pages/Spot.vue +2 -2
  817. package/src/modules/spots/components/pages/SpotEdit.vue +8 -6
  818. package/src/modules/spots/components/pages/Spots.vue +18 -24
  819. package/src/modules/spots/components/sections/WorktimeEdit.vue +7 -7
  820. package/src/modules/spots/router/spots.router.js +3 -3
  821. package/src/modules/wallet/views/components/blocks/CashDeposit.vue +1 -1
  822. package/src/modules/wallet/views/components/elements/ConnectMetamask.vue +3 -3
  823. package/src/modules/wallet/views/components/pages/Payments.vue +1 -1
  824. package/src/modules/wallet/views/components/pages/Wallet.vue +4 -4
  825. package/src/modules/wallet/views/router/wallet.router.js +1 -1
  826. package/src/styles/layout.scss +1 -1
  827. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +0 -1
  828. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +0 -1
  829. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js +0 -70
  830. package/dist/martyrs/src/modules/icons/entities/IconCash.vue.js.map +0 -1
  831. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js +0 -336
  832. package/dist/node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js.map +0 -1
  833. package/dist/node_modules/.pnpm/vue-draggable-next@2.2.1_sortablejs@1.15.6_vue@3.5.13_typescript@5.8.3_/node_modules/vue-draggable-next/dist/vue-draggable-next.esm-bundler.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WorktimeEdit.vue.js","sources":["../../../../../../../src/modules/spots/components/sections/WorktimeEdit.vue"],"sourcesContent":["<template>\n <div class=\"working-hours-editor w-100\">\n <div class=\"mn-b-small flex flex-nowrap flex-v-center\">\n <h4 class=\"mn-r-auto\">{{ t('workingHours.title') }}</h4>\n <Button \n class=\"bg-main\"\n :submit=\"addRegularDay\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addRegularDay') }}\n </Button>\n </div>\n\n <!-- Таблица для регулярных часов работы -->\n <div class=\"bg-white radius-small pd-small mn-b-medium\">\n <h5 class=\"mn-b-small\">{{ t('workingHours.regularSchedule') }}</h5>\n \n <div v-if=\"worktime.regular && worktime.regular.length > 0\" class=\"regular-schedule mn-b-small\">\n <div \n v-for=\"(day, index) in worktime.regular\" \n :key=\"`regular-${index}`\" \n class=\"schedule-item pd-small mn-b-small flex flex-v-center flex-nowrap\"\n :class=\"index % 2 === 0 ? 'bg-light' : ''\"\n >\n <div class=\"day-info flex-child-1\">\n <div class=\"day-name fw-semi\">{{ getWeekdayName(day.dayOfWeek) }}</div>\n <div class=\"day-hours\" v-if=\"day.isOpen && day.periods && day.periods.length > 0\">\n <template v-for=\"(period, pIndex) in day.periods\" :key=\"`period-${pIndex}`\">\n <span class=\"period t-small t-transp\">\n {{ period.open }} - {{ period.close }}\n </span>\n <span v-if=\"pIndex < day.periods.length - 1\" class=\"t-small t-transp\">, </span>\n </template>\n </div>\n <div v-else class=\"day-hours t-small t-transp t-red\">\n {{ t('workingHours.closed') }}\n </div>\n </div>\n <div class=\"day-actions flex-nowrap flex gap-small\">\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"() => editRegularDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.edit') }}\n </Button>\n <Button \n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeRegularDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n </div>\n <div v-else class=\"empty-schedule bg-light pd-medium radius-small t-center mn-b-small\">\n {{ t('workingHours.noRegularSchedule') }}\n </div>\n </div>\n\n <!-- Таблица для особых дней -->\n <div class=\"bg-white radius-small pd-small mn-b-small\">\n <div class=\"mn-b-small flex flex-nowrap flex-v-center\">\n <h5 class=\"mn-r-auto\">{{ t('workingHours.specialDays') }}</h5>\n <Button \n class=\"bg-light mn-l-small\"\n :submit=\"addSpecialDay\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addSpecialDay') }}\n </Button>\n </div>\n <div v-if=\"worktime.special && worktime.special.length > 0\" class=\"special-schedule mn-b-small\">\n <div \n v-for=\"(day, index) in worktime.special\" \n :key=\"`special-${index}`\" \n class=\"schedule-item pd-small mn-b-small flex flex-v-center flex-nowrap\"\n :class=\"index % 2 === 0 ? 'bg-light' : ''\"\n >\n <div class=\"day-info flex-child-1\">\n <div class=\"flex flex-nowrap flex-v-center\">\n <div class=\"day-name fw-semi\">{{ formatDate(day.date) }}</div>\n <div v-if=\"day.description\" class=\"t-small t-transp mn-l-small\">({{ day.description }})</div>\n </div>\n <div class=\"day-hours\" v-if=\"day.isOpen && day.periods && day.periods.length > 0\">\n <template v-for=\"(period, pIndex) in day.periods\" :key=\"`special-period-${pIndex}`\">\n <span class=\"period t-small t-transp\">\n {{ period.open }} - {{ period.close }}\n </span>\n <span v-if=\"pIndex < day.periods.length - 1\" class=\"t-small t-transp\">, </span>\n </template>\n </div>\n <div v-else class=\"day-hours t-small t-transp t-red\">\n {{ t('workingHours.closed') }}\n </div>\n </div>\n <div class=\"day-actions flex-nowrap flex gap-small\">\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"() => editSpecialDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.edit') }}\n </Button>\n <Button \n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeSpecialDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n </div>\n <div v-else class=\"empty-schedule bg-light pd-medium radius-small t-center\">\n {{ t('workingHours.noSpecialDays') }}\n </div>\n </div>\n\n <!-- Модальное окно для добавления/редактирования регулярного дня -->\n <Popup \n :isPopupOpen=\"showRegularDayModal\" \n @close-popup=\"showRegularDayModal = false\"\n :title=\"editingRegularIndex !== null ? t('workingHours.editRegularDay') : t('workingHours.addRegularDay')\"\n class=\"bg-white pd-semi w-m-33r radius-big\"\n >\n <div class=\"schedule-editor\">\n <Select \n v-model:select=\"currentRegularDay.dayOfWeek\"\n value=\"text\"\n :options=\"availableWeekdays\"\n property=\"value\"\n class=\"pos-relative w-100 mn-b-small bg-light radius-small pd-medium\"\n />\n\n <Checkbox \n :label=\"t('workingHours.isOpen')\"\n name=\"isOpenRegular\"\n :value=\"true\"\n :radio=\"currentRegularDay.isOpen\"\n @update:radio=\"val => currentRegularDay.isOpen = val\"\n class=\"w-100 mn-b-small bg-light radius-small pd-small\"\n />\n \n <div v-if=\"currentRegularDay.isOpen\">\n <div class=\"flex flex-nowrap flex-v-center mn-b-small\">\n <h5 class=\"mn-r-auto\">{{ t('workingHours.periods') }}</h5>\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"addPeriodToRegular\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addPeriod') }}\n </Button>\n </div>\n \n <div v-if=\"validationErrors.overlappingPeriods\" class=\"error-message mn-b-small pd-small radius-small bg-fourth-nano\">\n {{ t('workingHours.errorOverlappingPeriods') }}\n </div>\n \n <div \n v-for=\"(period, pIndex) in currentRegularDay.periods\" \n :key=\"`edit-period-${pIndex}`\"\n class=\"period-row mn-b-small flex flex-nowrap gap-small\"\n >\n <div class=\"flex-child-1 time-inputs cols-2 mobile:cols-1 gap-small\">\n <Field \n v-model:field=\"period.open\"\n :label=\"t('workingHours.opens')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n <Field \n v-model:field=\"period.close\"\n :label=\"t('workingHours.closes')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n </div>\n <Button \n v-if=\"currentRegularDay.periods.length > 1\"\n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeRegularPeriod(pIndex)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n \n <div class=\"button-group flex flex-nowrap gap-small mn-t-medium\">\n <Button \n class=\"w-100 bg-light\"\n :submit=\"() => showRegularDayModal = false\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.cancel') }}\n </Button>\n <Button \n class=\"w-100 bg-main\"\n :submit=\"saveRegularDay\"\n :showSucces=\"false\"\n :disabled=\"!isValidRegularDay\"\n >\n {{ t('workingHours.save') }}\n </Button>\n </div>\n </div>\n </Popup>\n\n <!-- Модальное окно для добавления/редактирования особого дня -->\n <Popup \n :isPopupOpen=\"showSpecialDayModal\" \n @close-popup=\"showSpecialDayModal = false\"\n :title=\"editingSpecialIndex !== null ? t('workingHours.editSpecialDay') : t('workingHours.addSpecialDay')\"\n class=\"bg-white pd-semi w-m-33r radius-big\"\n >\n <div class=\"schedule-editor\">\n <Field \n v-model:field=\"currentSpecialDay.dateInput\"\n :label=\"t('workingHours.date')\"\n type=\"date\"\n class=\"bg-light radius-small pd-medium mn-b-small\"\n @blur=\"validateSpecialDate\"\n />\n \n <div v-if=\"validationErrors.duplicateDate\" class=\"error-message mn-b-small pd-small radius-small bg-fourth-nano\">\n {{ t('workingHours.errorDuplicateDate') }}\n </div>\n \n <Field \n v-model:field=\"currentSpecialDay.description\"\n :label=\"t('workingHours.description')\"\n :placeholder=\"t('workingHours.descriptionPlaceholder')\"\n class=\"bg-light radius-small pd-medium mn-b-small\"\n />\n\n <Checkbox \n :label=\"t('workingHours.isOpen')\"\n name=\"isOpenSpecial\"\n :value=\"true\"\n :radio=\"currentSpecialDay.isOpen\"\n @update:radio=\"val => currentSpecialDay.isOpen = val\"\n class=\"w-100 mn-b-small bg-white radius-small pd-small\"\n />\n \n <div v-if=\"currentSpecialDay.isOpen\">\n <div class=\"flex flex-nowrap flex-v-center mn-b-small\">\n <h5 class=\"mn-r-auto\">{{ t('workingHours.periods') }}</h5>\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"addPeriodToSpecial\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addPeriod') }}\n </Button>\n </div>\n \n <div v-if=\"validationErrors.overlappingPeriods\" class=\"error-message mn-b-small pd-small radius-small bg-fourth-nano\">\n {{ t('workingHours.errorOverlappingPeriods') }}\n </div>\n \n <div \n v-for=\"(period, pIndex) in currentSpecialDay.periods\" \n :key=\"`edit-special-period-${pIndex}`\"\n class=\"period-row mn-b-small flex flex-nowrap gap-small\"\n >\n <div class=\"flex-child-1 time-inputs cols-2 mobile:cols-1 gap-small\">\n <Field \n v-model:field=\"period.open\"\n :label=\"t('workingHours.opens')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n <Field \n v-model:field=\"period.close\"\n :label=\"t('workingHours.closes')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n </div>\n <Button \n v-if=\"currentSpecialDay.periods.length > 1\"\n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeSpecialPeriod(pIndex)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n \n <div class=\"button-group flex flex-nowrap gap-small mn-t-medium\">\n <Button \n class=\"w-100 bg-light\"\n :submit=\"() => showSpecialDayModal = false\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.cancel') }}\n </Button>\n <Button \n class=\"w-100 bg-main\"\n :submit=\"saveSpecialDay\"\n :showSucces=\"false\"\n :disabled=\"!isValidSpecialDay\"\n >\n {{ t('workingHours.save') }}\n </Button>\n </div>\n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Select from '@martyrs/src/components/Select/Select.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nconst worktime = defineModel('worktime')\nconst emit = defineEmits(['update:worktime']);\n\n// i18n\nconst { t, locale } = useI18n({\n messages: {\n en: {\n workingHours: {\n title: 'Working Hours',\n regularSchedule: 'Regular Schedule',\n specialDays: 'Special Days',\n addRegularDay: 'Add Day',\n addSpecialDay: 'Add Day',\n editRegularDay: 'Edit Regular Day',\n editSpecialDay: 'Edit Special Day',\n save: 'Save',\n cancel: 'Cancel',\n edit: 'Edit',\n remove: 'Remove',\n weekday: 'Weekday',\n date: 'Date',\n isOpen: 'Open on this day',\n description: 'Description',\n descriptionPlaceholder: 'Holiday, Special event, etc.',\n periods: 'Operating Hours',\n addPeriod: 'Add Period',\n opens: 'Opens at',\n closes: 'Closes at',\n closed: 'Closed',\n noRegularSchedule: 'No regular schedule set. Add working days to define your regular hours.',\n noSpecialDays: 'No special days set. Add special days for holidays or events.',\n errorDuplicateDate: 'This date already exists in special days.',\n errorOverlappingPeriods: 'Time periods cannot overlap.',\n selectDate: 'Please select a date.',\n errorInvalidPeriod: 'Invalid time period. Closing time must be after opening time.'\n }\n },\n ru: {\n workingHours: {\n title: 'Часы работы',\n regularSchedule: 'Регулярное расписание',\n specialDays: 'Особые дни',\n addRegularDay: 'Добавить день',\n addSpecialDay: 'Добавить особый день',\n editRegularDay: 'Изменить рабочий день',\n editSpecialDay: 'Изменить особый день',\n save: 'Сохранить',\n cancel: 'Отмена',\n edit: 'Изменить',\n remove: 'Удалить',\n weekday: 'День недели',\n date: 'Дата',\n isOpen: 'Открыто в этот день',\n description: 'Описание',\n descriptionPlaceholder: 'Праздник, особое событие и т.д.',\n periods: 'Часы работы',\n addPeriod: 'Добавить период',\n opens: 'Открывается в',\n closes: 'Закрывается в',\n closed: 'Закрыто',\n noRegularSchedule: 'Регулярное расписание не установлено. Добавьте рабочие дни для определения регулярных часов.',\n noSpecialDays: 'Особые дни не установлены. Добавьте особые дни для праздников или событий.',\n errorDuplicateDate: 'Эта дата уже существует в особых днях.',\n errorOverlappingPeriods: 'Временные периоды не могут пересекаться.',\n selectDate: 'Пожалуйста, выберите дату.',\n errorInvalidPeriod: 'Недопустимый временной период. Время закрытия должно быть после времени открытия.'\n }\n }\n }\n});\n\n// Форматирование даты с использованием браузерных API\nconst formatDate = (date) => {\n if (!date) return '';\n const dateObj = new Date(date);\n return new Intl.DateTimeFormat(locale.value, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n }).format(dateObj);\n};\n\n// Получение названия дня недели по номеру\nconst getWeekdayName = (dayNumber) => {\n if (dayNumber === undefined || dayNumber === null) return '';\n \n // Создаем дату с известным начальным днем недели (1 января 2023 - воскресенье)\n const date = new Date(2023, 0, 1 + dayNumber);\n \n return new Intl.DateTimeFormat(locale.value, { weekday: 'long' }).format(date);\n};\n\n// Состояние для модальных окон\nconst showRegularDayModal = ref(false);\nconst showSpecialDayModal = ref(false);\n\n// Индексы для редактирования\nconst editingRegularIndex = ref(null);\nconst editingSpecialIndex = ref(null);\n\n// Валидация\nconst validationErrors = ref({\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n});\n\n// Текущие значения для редактирования\nconst currentRegularDay = ref({\n dayOfWeek: 1, // Понедельник по умолчанию\n isOpen: true,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n});\n\nconst currentSpecialDay = ref({\n dateInput: '', // Для ввода даты в формате YYYY-MM-DD\n date: null,\n description: '',\n isOpen: false,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n});\n\n// Список доступных дней недели (0-6)\nconst weekdays = [0, 1, 2, 3, 4, 5, 6];\n\n// Получаем доступные дни недели (исключая те, которые уже добавлены)\nconst availableWeekdays = computed(() => {\n const usedDays = new Set((worktime.value?.regular || []).map(d => d.dayOfWeek));\n \n // Фильтруем дни, которые еще не добавлены или это текущий редактируемый день\n return weekdays\n .filter(day => \n !usedDays.has(day) || \n (editingRegularIndex.value !== null && \n worktime.value?.regular[editingRegularIndex.value]?.dayOfWeek === day)\n )\n .map(day => ({\n text: getWeekdayName(day),\n value: day\n }));\n});\n\n// Проверка валидности текущего состояния\nconst isValidRegularDay = computed(() => {\n return !validationErrors.value.overlappingPeriods && !validationErrors.value.invalidPeriod;\n});\n\nconst isValidSpecialDay = computed(() => {\n return !validationErrors.value.duplicateDate && \n !validationErrors.value.overlappingPeriods && \n !validationErrors.value.invalidPeriod && \n !!currentSpecialDay.value.dateInput;\n});\n\n// Функции добавления дней\nconst addRegularDay = () => {\n editingRegularIndex.value = null;\n currentRegularDay.value = {\n dayOfWeek: availableWeekdays.value[0]?.value ?? 1,\n isOpen: true,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n };\n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n showRegularDayModal.value = true;\n};\n\nconst addSpecialDay = () => {\n editingSpecialIndex.value = null;\n // Устанавливаем текущую дату по умолчанию\n const today = new Date();\n const todayFormatted = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`;\n \n currentSpecialDay.value = {\n dateInput: todayFormatted,\n date: today,\n description: '',\n isOpen: false,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n };\n \n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n \n showSpecialDayModal.value = true;\n \n // Сразу проверяем на дублирование даты\n validateSpecialDate();\n};\n\n// Валидация периодов (проверка на пересечение)\nconst validatePeriods = () => {\n const periods = showRegularDayModal.value ? \n currentRegularDay.value.periods : \n currentSpecialDay.value.periods;\n \n if (!periods || periods.length <= 1) {\n validationErrors.value.overlappingPeriods = false;\n validationErrors.value.invalidPeriod = false;\n return;\n }\n \n // Проверка на недопустимые периоды (конец раньше начала)\n validationErrors.value.invalidPeriod = periods.some(period => \n period.open >= period.close\n );\n \n if (validationErrors.value.invalidPeriod) {\n return;\n }\n \n // Сортируем периоды по времени начала\n const sortedPeriods = [...periods].sort((a, b) => a.open.localeCompare(b.open));\n \n // Проверяем пересечения\n for (let i = 0; i < sortedPeriods.length - 1; i++) {\n if (sortedPeriods[i].close > sortedPeriods[i + 1].open) {\n validationErrors.value.overlappingPeriods = true;\n return;\n }\n }\n \n validationErrors.value.overlappingPeriods = false;\n};\n\n// Валидация даты для особого дня (проверка на дублирование)\nconst validateSpecialDate = () => {\n if (!currentSpecialDay.value.dateInput) {\n validationErrors.value.duplicateDate = false;\n return;\n }\n \n const newDateObj = new Date(currentSpecialDay.value.dateInput);\n newDateObj.setHours(0, 0, 0, 0); // Нормализуем время\n \n const isDuplicate = worktime.value.special.some((specialDay, index) => {\n if (editingSpecialIndex.value === index) return false; // Пропускаем текущий редактируемый день\n \n const existingDate = new Date(specialDay.date);\n existingDate.setHours(0, 0, 0, 0); // Нормализуем время\n \n return existingDate.getTime() === newDateObj.getTime();\n });\n \n validationErrors.value.duplicateDate = isDuplicate;\n};\n\n// Методы для работы с регулярными днями\nconst editRegularDay = (index) => {\n editingRegularIndex.value = index;\n const day = JSON.parse(JSON.stringify(worktime.value.regular[index]));\n \n // Если нет периодов, добавляем пустой\n if (!day.periods || day.periods.length === 0) {\n day.periods = [{\n open: '09:00',\n close: '18:00'\n }];\n }\n \n currentRegularDay.value = day;\n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n showRegularDayModal.value = true;\n \n // Валидируем периоды\n validatePeriods();\n};\n\nconst removeRegularDay = (index) => {\n const updatedWorktime = { ...worktime.value };\n updatedWorktime.regular.splice(index, 1);\n emit('update:worktime', updatedWorktime);\n};\n\nconst saveRegularDay = () => {\n // Проверяем валидность\n validatePeriods();\n if (!isValidRegularDay.value) {\n return;\n }\n \n // Копируем текущее значение модели\n const updatedWorktime = JSON.parse(JSON.stringify(worktime.value));\n \n // Убеждаемся, что regular существует\n if (!updatedWorktime.regular) {\n updatedWorktime.regular = [];\n }\n \n // Копируем текущий день\n const dayToSave = { ...currentRegularDay.value };\n \n // Если день закрыт, удаляем периоды\n if (!dayToSave.isOpen) {\n dayToSave.periods = [];\n }\n \n // Обновляем или добавляем\n if (editingRegularIndex.value !== null) {\n updatedWorktime.regular[editingRegularIndex.value] = dayToSave;\n } else {\n updatedWorktime.regular.push(dayToSave);\n }\n \n // Сортируем по дням недели\n updatedWorktime.regular.sort((a, b) => a.dayOfWeek - b.dayOfWeek);\n \n // Обновляем модель\n worktime.value = updatedWorktime\n emit('update:worktime', updatedWorktime);\n showRegularDayModal.value = false;\n};\n\nconst addPeriodToRegular = () => {\n currentRegularDay.value.periods.push({\n open: '09:00',\n close: '18:00'\n });\n validatePeriods();\n};\n\nconst removeRegularPeriod = (index) => {\n currentRegularDay.value.periods.splice(index, 1);\n validatePeriods();\n};\n\n// Методы для работы с особыми днями\nconst editSpecialDay = (index) => {\n editingSpecialIndex.value = index;\n const day = JSON.parse(JSON.stringify(worktime.value.special[index]));\n \n // Форматируем дату для поля ввода\n const date = new Date(day.date);\n const dateForInput = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n \n // Если нет периодов, добавляем пустой\n if (!day.periods || day.periods.length === 0) {\n day.periods = [{\n open: '09:00',\n close: '18:00'\n }];\n }\n \n currentSpecialDay.value = {\n ...day,\n dateInput: dateForInput\n };\n \n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n showSpecialDayModal.value = true;\n \n // Валидируем периоды\n validatePeriods();\n};\n\nconst removeSpecialDay = (index) => {\n const updatedWorktime = { ...worktime.value };\n updatedWorktime.special.splice(index, 1);\n emit('update:worktime', updatedWorktime);\n};\n\nconst saveSpecialDay = () => {\n // Проверяем валидность\n validateSpecialDate();\n validatePeriods();\n \n if (!isValidSpecialDay.value) {\n if (!currentSpecialDay.value.dateInput) {\n alert(t('workingHours.selectDate'));\n }\n return;\n }\n \n // Копируем текущее значение модели\n const updatedWorktime = JSON.parse(JSON.stringify(worktime.value));\n \n // Убеждаемся, что special существует\n if (!updatedWorktime.special) {\n updatedWorktime.special = [];\n }\n \n // Преобразуем дату из input в объект Date\n const dateParts = currentSpecialDay.value.dateInput.split('-');\n const specialDate = new Date(\n parseInt(dateParts[0]), \n parseInt(dateParts[1]) - 1, \n parseInt(dateParts[2])\n );\n \n // Копируем текущий день и обновляем дату\n const dayToSave = { \n ...currentSpecialDay.value,\n date: specialDate\n };\n \n // Удаляем вспомогательное поле\n delete dayToSave.dateInput;\n \n // Если день закрыт, удаляем периоды\n if (!dayToSave.isOpen) {\n dayToSave.periods = [];\n }\n \n // Обновляем или добавляем\n if (editingSpecialIndex.value !== null) {\n updatedWorktime.special[editingSpecialIndex.value] = dayToSave;\n } else {\n updatedWorktime.special.push(dayToSave);\n }\n \n // Сортируем по датам\n updatedWorktime.special.sort((a, b) => new Date(a.date) - new Date(b.date));\n \n // Обновляем модель\n emit('update:worktime', updatedWorktime);\n showSpecialDayModal.value = false;\n};\n\nconst addPeriodToSpecial = () => {\n currentSpecialDay.value.periods.push({\n open: '09:00',\n close: '18:00'\n });\n validatePeriods();\n};\n\nconst removeSpecialPeriod = (index) => {\n currentSpecialDay.value.periods.splice(index, 1);\n validatePeriods();\n};\n\n// Инициализация значений при монтировании\nonMounted(() => {\n // Проверяем, что начальное значение модели имеет правильную структуру\n if (!worktime.value.regular || !worktime.value.special ) worktime.value = {\n regular: [],\n special: []\n }\n // emit('update:worktime', worktime.value);\n});\n</script>\n\n<style scoped>\n.working-hours-editor {\n border-radius: 8px;\n}\n\n.schedule-item {\n transition: all 0.3s ease;\n border-bottom: 1px solid rgba(var(--grey), 0.1);\n}\n\n.schedule-item:last-child {\n border-bottom: none;\n}\n\n.period {\n display: inline-block;\n}\n\n.empty-schedule {\n color: rgba(var(--dark), 0.6);\n}\n\n.period-row {\n align-items: center;\n}\n\n.error-message {\n color: white;\n}\n</style>"],"names":["_useModel"],"mappings":"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"}
1
+ {"version":3,"file":"WorktimeEdit.vue.js","sources":["../../../../../../../src/modules/spots/components/sections/WorktimeEdit.vue"],"sourcesContent":["<template>\n <div class=\"working-hours-editor w-100\">\n <div class=\"mn-b-small flex flex-nowrap flex-v-center\">\n <h4 class=\"mn-r-auto\">{{ t('workingHours.title') }}</h4>\n <Button \n class=\"bg-main\"\n :submit=\"addRegularDay\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addRegularDay') }}\n </Button>\n </div>\n\n <!-- Таблица для регулярных часов работы -->\n <div class=\"bg-white radius-small pd-small mn-b-medium\">\n <h5 class=\"mn-b-small\">{{ t('workingHours.regularSchedule') }}</h5>\n \n <div v-if=\"worktime.regular && worktime.regular.length > 0\" class=\"regular-schedule mn-b-small\">\n <div \n v-for=\"(day, index) in worktime.regular\" \n :key=\"`regular-${index}`\" \n class=\"schedule-item pd-small mn-b-small flex flex-v-center flex-nowrap\"\n :class=\"index % 2 === 0 ? 'bg-light' : ''\"\n >\n <div class=\"day-info flex-child-1\">\n <div class=\"day-name fw-semi\">{{ getWeekdayName(day.dayOfWeek) }}</div>\n <div class=\"day-hours\" v-if=\"day.isOpen && day.periods && day.periods.length > 0\">\n <template v-for=\"(period, pIndex) in day.periods\" :key=\"`period-${pIndex}`\">\n <span class=\"period t-small opacity-50\">\n {{ period.open }} - {{ period.close }}\n </span>\n <span v-if=\"pIndex < day.periods.length - 1\" class=\"t-small opacity-50\">, </span>\n </template>\n </div>\n <div v-else class=\"day-hours t-small opacity-50 t-red\">\n {{ t('workingHours.closed') }}\n </div>\n </div>\n <div class=\"day-actions flex-nowrap flex gap-small\">\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"() => editRegularDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.edit') }}\n </Button>\n <Button \n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeRegularDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n </div>\n <div v-else class=\"empty-schedule bg-light pd-medium radius-small t-center mn-b-small\">\n {{ t('workingHours.noRegularSchedule') }}\n </div>\n </div>\n\n <!-- Таблица для особых дней -->\n <div class=\"bg-white radius-small pd-small mn-b-small\">\n <div class=\"mn-b-small flex flex-nowrap flex-v-center\">\n <h5 class=\"mn-r-auto\">{{ t('workingHours.specialDays') }}</h5>\n <Button \n class=\"bg-light mn-l-small\"\n :submit=\"addSpecialDay\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addSpecialDay') }}\n </Button>\n </div>\n <div v-if=\"worktime.special && worktime.special.length > 0\" class=\"special-schedule mn-b-small\">\n <div \n v-for=\"(day, index) in worktime.special\" \n :key=\"`special-${index}`\" \n class=\"schedule-item pd-small mn-b-small flex flex-v-center flex-nowrap\"\n :class=\"index % 2 === 0 ? 'bg-light' : ''\"\n >\n <div class=\"day-info flex-child-1\">\n <div class=\"flex flex-nowrap flex-v-center\">\n <div class=\"day-name fw-semi\">{{ formatDate(day.date) }}</div>\n <div v-if=\"day.description\" class=\"t-small opacity-50 mn-l-small\">({{ day.description }})</div>\n </div>\n <div class=\"day-hours\" v-if=\"day.isOpen && day.periods && day.periods.length > 0\">\n <template v-for=\"(period, pIndex) in day.periods\" :key=\"`special-period-${pIndex}`\">\n <span class=\"period t-small opacity-50\">\n {{ period.open }} - {{ period.close }}\n </span>\n <span v-if=\"pIndex < day.periods.length - 1\" class=\"t-small opacity-50\">, </span>\n </template>\n </div>\n <div v-else class=\"day-hours t-small opacity-50 t-red\">\n {{ t('workingHours.closed') }}\n </div>\n </div>\n <div class=\"day-actions flex-nowrap flex gap-small\">\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"() => editSpecialDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.edit') }}\n </Button>\n <Button \n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeSpecialDay(index)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n </div>\n <div v-else class=\"empty-schedule bg-light pd-medium radius-small t-center\">\n {{ t('workingHours.noSpecialDays') }}\n </div>\n </div>\n\n <!-- Модальное окно для добавления/редактирования регулярного дня -->\n <Popup \n :isPopupOpen=\"showRegularDayModal\" \n @close-popup=\"showRegularDayModal = false\"\n :title=\"editingRegularIndex !== null ? t('workingHours.editRegularDay') : t('workingHours.addRegularDay')\"\n class=\"bg-white pd-semi w-m-33r radius-big\"\n >\n <div class=\"schedule-editor\">\n <Select \n v-model:select=\"currentRegularDay.dayOfWeek\"\n value=\"text\"\n :options=\"availableWeekdays\"\n property=\"value\"\n class=\"pos-relative w-100 mn-b-small bg-light radius-small pd-medium\"\n />\n\n <Checkbox \n :label=\"t('workingHours.isOpen')\"\n name=\"isOpenRegular\"\n :value=\"true\"\n :radio=\"currentRegularDay.isOpen\"\n @update:radio=\"val => currentRegularDay.isOpen = val\"\n class=\"w-100 mn-b-small bg-light radius-small pd-small\"\n />\n \n <div v-if=\"currentRegularDay.isOpen\">\n <div class=\"flex flex-nowrap flex-v-center mn-b-small\">\n <h5 class=\"mn-r-auto\">{{ t('workingHours.periods') }}</h5>\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"addPeriodToRegular\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addPeriod') }}\n </Button>\n </div>\n \n <div v-if=\"validationErrors.overlappingPeriods\" class=\"error-message mn-b-small pd-small radius-small bg-fourth-nano\">\n {{ t('workingHours.errorOverlappingPeriods') }}\n </div>\n \n <div \n v-for=\"(period, pIndex) in currentRegularDay.periods\" \n :key=\"`edit-period-${pIndex}`\"\n class=\"period-row mn-b-small flex flex-nowrap gap-small\"\n >\n <div class=\"flex-child-1 time-inputs cols-2 mobile:cols-1 gap-small\">\n <Field \n v-model:field=\"period.open\"\n :label=\"t('workingHours.opens')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n <Field \n v-model:field=\"period.close\"\n :label=\"t('workingHours.closes')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n </div>\n <Button \n v-if=\"currentRegularDay.periods.length > 1\"\n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeRegularPeriod(pIndex)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n \n <div class=\"button-group flex flex-nowrap gap-small mn-t-medium\">\n <Button \n class=\"w-100 bg-light\"\n :submit=\"() => showRegularDayModal = false\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.cancel') }}\n </Button>\n <Button \n class=\"w-100 bg-main\"\n :submit=\"saveRegularDay\"\n :showSucces=\"false\"\n :disabled=\"!isValidRegularDay\"\n >\n {{ t('workingHours.save') }}\n </Button>\n </div>\n </div>\n </Popup>\n\n <!-- Модальное окно для добавления/редактирования особого дня -->\n <Popup \n :isPopupOpen=\"showSpecialDayModal\" \n @close-popup=\"showSpecialDayModal = false\"\n :title=\"editingSpecialIndex !== null ? t('workingHours.editSpecialDay') : t('workingHours.addSpecialDay')\"\n class=\"bg-white pd-semi w-m-33r radius-big\"\n >\n <div class=\"schedule-editor\">\n <Field \n v-model:field=\"currentSpecialDay.dateInput\"\n :label=\"t('workingHours.date')\"\n type=\"date\"\n class=\"bg-light radius-small pd-medium mn-b-small\"\n @blur=\"validateSpecialDate\"\n />\n \n <div v-if=\"validationErrors.duplicateDate\" class=\"error-message mn-b-small pd-small radius-small bg-fourth-nano\">\n {{ t('workingHours.errorDuplicateDate') }}\n </div>\n \n <Field \n v-model:field=\"currentSpecialDay.description\"\n :label=\"t('workingHours.description')\"\n :placeholder=\"t('workingHours.descriptionPlaceholder')\"\n class=\"bg-light radius-small pd-medium mn-b-small\"\n />\n\n <Checkbox \n :label=\"t('workingHours.isOpen')\"\n name=\"isOpenSpecial\"\n :value=\"true\"\n :radio=\"currentSpecialDay.isOpen\"\n @update:radio=\"val => currentSpecialDay.isOpen = val\"\n class=\"w-100 mn-b-small bg-white radius-small pd-small\"\n />\n \n <div v-if=\"currentSpecialDay.isOpen\">\n <div class=\"flex flex-nowrap flex-v-center mn-b-small\">\n <h5 class=\"mn-r-auto\">{{ t('workingHours.periods') }}</h5>\n <Button \n class=\"pd-micro bg-light\"\n :submit=\"addPeriodToSpecial\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.addPeriod') }}\n </Button>\n </div>\n \n <div v-if=\"validationErrors.overlappingPeriods\" class=\"error-message mn-b-small pd-small radius-small bg-fourth-nano\">\n {{ t('workingHours.errorOverlappingPeriods') }}\n </div>\n \n <div \n v-for=\"(period, pIndex) in currentSpecialDay.periods\" \n :key=\"`edit-special-period-${pIndex}`\"\n class=\"period-row mn-b-small flex flex-nowrap gap-small\"\n >\n <div class=\"flex-child-1 time-inputs cols-2 mobile:cols-1 gap-small\">\n <Field \n v-model:field=\"period.open\"\n :label=\"t('workingHours.opens')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n <Field \n v-model:field=\"period.close\"\n :label=\"t('workingHours.closes')\"\n type=\"time\"\n class=\"bg-light radius-small pd-medium\"\n @blur=\"validatePeriods\"\n />\n </div>\n <Button \n v-if=\"currentSpecialDay.periods.length > 1\"\n class=\"pd-micro bg-fourth-nano\"\n :submit=\"() => removeSpecialPeriod(pIndex)\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.remove') }}\n </Button>\n </div>\n </div>\n \n <div class=\"button-group flex flex-nowrap gap-small mn-t-medium\">\n <Button \n class=\"w-100 bg-light\"\n :submit=\"() => showSpecialDayModal = false\"\n :showSucces=\"false\" \n :showLoader=\"false\"\n >\n {{ t('workingHours.cancel') }}\n </Button>\n <Button \n class=\"w-100 bg-main\"\n :submit=\"saveSpecialDay\"\n :showSucces=\"false\"\n :disabled=\"!isValidSpecialDay\"\n >\n {{ t('workingHours.save') }}\n </Button>\n </div>\n </div>\n </Popup>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nimport Button from '@martyrs/src/components/Button/Button.vue';\nimport Field from '@martyrs/src/components/Field/Field.vue';\nimport Select from '@martyrs/src/components/Select/Select.vue';\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue';\nimport Popup from '@martyrs/src/components/Popup/Popup.vue';\n\nconst worktime = defineModel('worktime')\nconst emit = defineEmits(['update:worktime']);\n\n// i18n\nconst { t, locale } = useI18n({\n messages: {\n en: {\n workingHours: {\n title: 'Working Hours',\n regularSchedule: 'Regular Schedule',\n specialDays: 'Special Days',\n addRegularDay: 'Add Day',\n addSpecialDay: 'Add Day',\n editRegularDay: 'Edit Regular Day',\n editSpecialDay: 'Edit Special Day',\n save: 'Save',\n cancel: 'Cancel',\n edit: 'Edit',\n remove: 'Remove',\n weekday: 'Weekday',\n date: 'Date',\n isOpen: 'Open on this day',\n description: 'Description',\n descriptionPlaceholder: 'Holiday, Special event, etc.',\n periods: 'Operating Hours',\n addPeriod: 'Add Period',\n opens: 'Opens at',\n closes: 'Closes at',\n closed: 'Closed',\n noRegularSchedule: 'No regular schedule set. Add working days to define your regular hours.',\n noSpecialDays: 'No special days set. Add special days for holidays or events.',\n errorDuplicateDate: 'This date already exists in special days.',\n errorOverlappingPeriods: 'Time periods cannot overlap.',\n selectDate: 'Please select a date.',\n errorInvalidPeriod: 'Invalid time period. Closing time must be after opening time.'\n }\n },\n ru: {\n workingHours: {\n title: 'Часы работы',\n regularSchedule: 'Регулярное расписание',\n specialDays: 'Особые дни',\n addRegularDay: 'Добавить день',\n addSpecialDay: 'Добавить особый день',\n editRegularDay: 'Изменить рабочий день',\n editSpecialDay: 'Изменить особый день',\n save: 'Сохранить',\n cancel: 'Отмена',\n edit: 'Изменить',\n remove: 'Удалить',\n weekday: 'День недели',\n date: 'Дата',\n isOpen: 'Открыто в этот день',\n description: 'Описание',\n descriptionPlaceholder: 'Праздник, особое событие и т.д.',\n periods: 'Часы работы',\n addPeriod: 'Добавить период',\n opens: 'Открывается в',\n closes: 'Закрывается в',\n closed: 'Закрыто',\n noRegularSchedule: 'Регулярное расписание не установлено. Добавьте рабочие дни для определения регулярных часов.',\n noSpecialDays: 'Особые дни не установлены. Добавьте особые дни для праздников или событий.',\n errorDuplicateDate: 'Эта дата уже существует в особых днях.',\n errorOverlappingPeriods: 'Временные периоды не могут пересекаться.',\n selectDate: 'Пожалуйста, выберите дату.',\n errorInvalidPeriod: 'Недопустимый временной период. Время закрытия должно быть после времени открытия.'\n }\n }\n }\n});\n\n// Форматирование даты с использованием браузерных API\nconst formatDate = (date) => {\n if (!date) return '';\n const dateObj = new Date(date);\n return new Intl.DateTimeFormat(locale.value, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n }).format(dateObj);\n};\n\n// Получение названия дня недели по номеру\nconst getWeekdayName = (dayNumber) => {\n if (dayNumber === undefined || dayNumber === null) return '';\n \n // Создаем дату с известным начальным днем недели (1 января 2023 - воскресенье)\n const date = new Date(2023, 0, 1 + dayNumber);\n \n return new Intl.DateTimeFormat(locale.value, { weekday: 'long' }).format(date);\n};\n\n// Состояние для модальных окон\nconst showRegularDayModal = ref(false);\nconst showSpecialDayModal = ref(false);\n\n// Индексы для редактирования\nconst editingRegularIndex = ref(null);\nconst editingSpecialIndex = ref(null);\n\n// Валидация\nconst validationErrors = ref({\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n});\n\n// Текущие значения для редактирования\nconst currentRegularDay = ref({\n dayOfWeek: 1, // Понедельник по умолчанию\n isOpen: true,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n});\n\nconst currentSpecialDay = ref({\n dateInput: '', // Для ввода даты в формате YYYY-MM-DD\n date: null,\n description: '',\n isOpen: false,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n});\n\n// Список доступных дней недели (0-6)\nconst weekdays = [0, 1, 2, 3, 4, 5, 6];\n\n// Получаем доступные дни недели (исключая те, которые уже добавлены)\nconst availableWeekdays = computed(() => {\n const usedDays = new Set((worktime.value?.regular || []).map(d => d.dayOfWeek));\n \n // Фильтруем дни, которые еще не добавлены или это текущий редактируемый день\n return weekdays\n .filter(day => \n !usedDays.has(day) || \n (editingRegularIndex.value !== null && \n worktime.value?.regular[editingRegularIndex.value]?.dayOfWeek === day)\n )\n .map(day => ({\n text: getWeekdayName(day),\n value: day\n }));\n});\n\n// Проверка валидности текущего состояния\nconst isValidRegularDay = computed(() => {\n return !validationErrors.value.overlappingPeriods && !validationErrors.value.invalidPeriod;\n});\n\nconst isValidSpecialDay = computed(() => {\n return !validationErrors.value.duplicateDate && \n !validationErrors.value.overlappingPeriods && \n !validationErrors.value.invalidPeriod && \n !!currentSpecialDay.value.dateInput;\n});\n\n// Функции добавления дней\nconst addRegularDay = () => {\n editingRegularIndex.value = null;\n currentRegularDay.value = {\n dayOfWeek: availableWeekdays.value[0]?.value ?? 1,\n isOpen: true,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n };\n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n showRegularDayModal.value = true;\n};\n\nconst addSpecialDay = () => {\n editingSpecialIndex.value = null;\n // Устанавливаем текущую дату по умолчанию\n const today = new Date();\n const todayFormatted = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`;\n \n currentSpecialDay.value = {\n dateInput: todayFormatted,\n date: today,\n description: '',\n isOpen: false,\n periods: [{\n open: '09:00',\n close: '18:00'\n }]\n };\n \n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n \n showSpecialDayModal.value = true;\n \n // Сразу проверяем на дублирование даты\n validateSpecialDate();\n};\n\n// Валидация периодов (проверка на пересечение)\nconst validatePeriods = () => {\n const periods = showRegularDayModal.value ? \n currentRegularDay.value.periods : \n currentSpecialDay.value.periods;\n \n if (!periods || periods.length <= 1) {\n validationErrors.value.overlappingPeriods = false;\n validationErrors.value.invalidPeriod = false;\n return;\n }\n \n // Проверка на недопустимые периоды (конец раньше начала)\n validationErrors.value.invalidPeriod = periods.some(period => \n period.open >= period.close\n );\n \n if (validationErrors.value.invalidPeriod) {\n return;\n }\n \n // Сортируем периоды по времени начала\n const sortedPeriods = [...periods].sort((a, b) => a.open.localeCompare(b.open));\n \n // Проверяем пересечения\n for (let i = 0; i < sortedPeriods.length - 1; i++) {\n if (sortedPeriods[i].close > sortedPeriods[i + 1].open) {\n validationErrors.value.overlappingPeriods = true;\n return;\n }\n }\n \n validationErrors.value.overlappingPeriods = false;\n};\n\n// Валидация даты для особого дня (проверка на дублирование)\nconst validateSpecialDate = () => {\n if (!currentSpecialDay.value.dateInput) {\n validationErrors.value.duplicateDate = false;\n return;\n }\n \n const newDateObj = new Date(currentSpecialDay.value.dateInput);\n newDateObj.setHours(0, 0, 0, 0); // Нормализуем время\n \n const isDuplicate = worktime.value.special.some((specialDay, index) => {\n if (editingSpecialIndex.value === index) return false; // Пропускаем текущий редактируемый день\n \n const existingDate = new Date(specialDay.date);\n existingDate.setHours(0, 0, 0, 0); // Нормализуем время\n \n return existingDate.getTime() === newDateObj.getTime();\n });\n \n validationErrors.value.duplicateDate = isDuplicate;\n};\n\n// Методы для работы с регулярными днями\nconst editRegularDay = (index) => {\n editingRegularIndex.value = index;\n const day = JSON.parse(JSON.stringify(worktime.value.regular[index]));\n \n // Если нет периодов, добавляем пустой\n if (!day.periods || day.periods.length === 0) {\n day.periods = [{\n open: '09:00',\n close: '18:00'\n }];\n }\n \n currentRegularDay.value = day;\n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n showRegularDayModal.value = true;\n \n // Валидируем периоды\n validatePeriods();\n};\n\nconst removeRegularDay = (index) => {\n const updatedWorktime = { ...worktime.value };\n updatedWorktime.regular.splice(index, 1);\n emit('update:worktime', updatedWorktime);\n};\n\nconst saveRegularDay = () => {\n // Проверяем валидность\n validatePeriods();\n if (!isValidRegularDay.value) {\n return;\n }\n \n // Копируем текущее значение модели\n const updatedWorktime = JSON.parse(JSON.stringify(worktime.value));\n \n // Убеждаемся, что regular существует\n if (!updatedWorktime.regular) {\n updatedWorktime.regular = [];\n }\n \n // Копируем текущий день\n const dayToSave = { ...currentRegularDay.value };\n \n // Если день закрыт, удаляем периоды\n if (!dayToSave.isOpen) {\n dayToSave.periods = [];\n }\n \n // Обновляем или добавляем\n if (editingRegularIndex.value !== null) {\n updatedWorktime.regular[editingRegularIndex.value] = dayToSave;\n } else {\n updatedWorktime.regular.push(dayToSave);\n }\n \n // Сортируем по дням недели\n updatedWorktime.regular.sort((a, b) => a.dayOfWeek - b.dayOfWeek);\n \n // Обновляем модель\n worktime.value = updatedWorktime\n emit('update:worktime', updatedWorktime);\n showRegularDayModal.value = false;\n};\n\nconst addPeriodToRegular = () => {\n currentRegularDay.value.periods.push({\n open: '09:00',\n close: '18:00'\n });\n validatePeriods();\n};\n\nconst removeRegularPeriod = (index) => {\n currentRegularDay.value.periods.splice(index, 1);\n validatePeriods();\n};\n\n// Методы для работы с особыми днями\nconst editSpecialDay = (index) => {\n editingSpecialIndex.value = index;\n const day = JSON.parse(JSON.stringify(worktime.value.special[index]));\n \n // Форматируем дату для поля ввода\n const date = new Date(day.date);\n const dateForInput = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n \n // Если нет периодов, добавляем пустой\n if (!day.periods || day.periods.length === 0) {\n day.periods = [{\n open: '09:00',\n close: '18:00'\n }];\n }\n \n currentSpecialDay.value = {\n ...day,\n dateInput: dateForInput\n };\n \n validationErrors.value = {\n overlappingPeriods: false,\n duplicateDate: false,\n invalidPeriod: false\n };\n showSpecialDayModal.value = true;\n \n // Валидируем периоды\n validatePeriods();\n};\n\nconst removeSpecialDay = (index) => {\n const updatedWorktime = { ...worktime.value };\n updatedWorktime.special.splice(index, 1);\n emit('update:worktime', updatedWorktime);\n};\n\nconst saveSpecialDay = () => {\n // Проверяем валидность\n validateSpecialDate();\n validatePeriods();\n \n if (!isValidSpecialDay.value) {\n if (!currentSpecialDay.value.dateInput) {\n alert(t('workingHours.selectDate'));\n }\n return;\n }\n \n // Копируем текущее значение модели\n const updatedWorktime = JSON.parse(JSON.stringify(worktime.value));\n \n // Убеждаемся, что special существует\n if (!updatedWorktime.special) {\n updatedWorktime.special = [];\n }\n \n // Преобразуем дату из input в объект Date\n const dateParts = currentSpecialDay.value.dateInput.split('-');\n const specialDate = new Date(\n parseInt(dateParts[0]), \n parseInt(dateParts[1]) - 1, \n parseInt(dateParts[2])\n );\n \n // Копируем текущий день и обновляем дату\n const dayToSave = { \n ...currentSpecialDay.value,\n date: specialDate\n };\n \n // Удаляем вспомогательное поле\n delete dayToSave.dateInput;\n \n // Если день закрыт, удаляем периоды\n if (!dayToSave.isOpen) {\n dayToSave.periods = [];\n }\n \n // Обновляем или добавляем\n if (editingSpecialIndex.value !== null) {\n updatedWorktime.special[editingSpecialIndex.value] = dayToSave;\n } else {\n updatedWorktime.special.push(dayToSave);\n }\n \n // Сортируем по датам\n updatedWorktime.special.sort((a, b) => new Date(a.date) - new Date(b.date));\n \n // Обновляем модель\n emit('update:worktime', updatedWorktime);\n showSpecialDayModal.value = false;\n};\n\nconst addPeriodToSpecial = () => {\n currentSpecialDay.value.periods.push({\n open: '09:00',\n close: '18:00'\n });\n validatePeriods();\n};\n\nconst removeSpecialPeriod = (index) => {\n currentSpecialDay.value.periods.splice(index, 1);\n validatePeriods();\n};\n\n// Инициализация значений при монтировании\nonMounted(() => {\n // Проверяем, что начальное значение модели имеет правильную структуру\n if (!worktime.value.regular || !worktime.value.special ) worktime.value = {\n regular: [],\n special: []\n }\n // emit('update:worktime', worktime.value);\n});\n</script>\n\n<style scoped>\n.working-hours-editor {\n border-radius: 8px;\n}\n\n.schedule-item {\n transition: all 0.3s ease;\n border-bottom: 1px solid rgba(var(--grey), 0.1);\n}\n\n.schedule-item:last-child {\n border-bottom: none;\n}\n\n.period {\n display: inline-block;\n}\n\n.empty-schedule {\n color: rgba(var(--dark), 0.6);\n}\n\n.period-row {\n align-items: center;\n}\n\n.error-message {\n color: white;\n}\n</style>"],"names":["_useModel"],"mappings":"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"}
@@ -7,7 +7,7 @@ function getRoutes(options = {}) {
7
7
  const routeBackoffice = options.routeBackoffice || "Backoffice Root";
8
8
  const routeOrganizations = options.routeOrganizations || "OrganizationRoot";
9
9
  const routes = [];
10
- routes.push({
10
+ if (!options.contexts || options.contexts.includes("client")) routes.push({
11
11
  parentName: route,
12
12
  config: {
13
13
  basePath: options.basePath || "spots",
@@ -65,7 +65,7 @@ function getRoutes(options = {}) {
65
65
  ]
66
66
  }
67
67
  });
68
- if (!options.withBackoffice) {
68
+ if (!options.contexts || options.contexts.includes("backoffice")) {
69
69
  routes.push({
70
70
  parentName: routeBackoffice,
71
71
  config: {
@@ -160,7 +160,7 @@ function getRoutes(options = {}) {
160
160
  }
161
161
  });
162
162
  }
163
- if (!options.withOrganizationRoutes) {
163
+ if (!options.contexts || options.contexts.includes("organization")) {
164
164
  routes.push({
165
165
  parentName: routeOrganizations,
166
166
  config: {
@@ -1 +1 @@
1
- {"version":3,"file":"spots.router.js","sources":["../../../../../../src/modules/spots/router/spots.router.js"],"sourcesContent":["import * as validationAuth from '@martyrs/src/modules/auth/views/middlewares/auth.validation.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nconst { hasAccess, isAdmin } = useGlobalMixins();\n\nexport function getRoutes(options = {}) {\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n\n const routes = [];\n\n // Home контекст - только карта\n routes.push({\n parentName: route,\n config: {\n basePath: options.basePath || 'spots',\n component: () => import(/* webpackChunkName: \"layout-empty\" */ '@martyrs/src/modules/core/views/components/layouts/Empty.vue'),\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n title_hide: true,\n breadcrumbs: {\n hide: true,\n hidden: true,\n },\n },\n routes: [\n {\n path: ':country?',\n component: () => import(/* webpackChunkName: \"layout-spots\" */ '../components/layouts/Spots.vue'),\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n header_theme: 'dark',\n footer_theme: 'dark',\n },\n children: [\n {\n path: ':state?',\n name: 'Spots State',\n component: () => import(/* webpackChunkName: 'spots-map' */ '../components/pages/Map.vue'),\n children: [\n {\n path: ':city?',\n name: 'Spots City',\n component: () => import(/* webpackChunkName: 'spots-map' */ '../components/pages/Map.vue'),\n },\n ],\n },\n ],\n },\n ],\n }\n });\n\n // Backoffice контекст\n if (!options.withBackoffice) {\n routes.push({\n parentName: routeBackoffice,\n config: {\n basePath: options.backofficeBasePath || 'spots',\n routeNamePrefix: 'Backoffice',\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n context: 'Backoffice',\n },\n routes: [\n {\n path: '',\n name: 'Spots',\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n title_hide: true,\n },\n component: () => import(/* webpackChunkName: 'spots-list' */ '../components/pages/Spots.vue'),\n },\n {\n path: 'create',\n name: 'Create Spot',\n meta: {\n title: {\n en: 'Create Spot',\n ru: 'Создать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n // {\n // path: ':spot',\n // name: 'Spot',\n // meta: {\n // title: {\n // en: 'Spot',\n // ru: 'Место',\n // },\n // title_hide: false,\n // },\n // component: () => import(/* webpackChunkName: 'spot-detail' */ '../components/pages/Spot.vue'),\n // },\n {\n path: ':spot/edit',\n name: 'Edit Spot',\n meta: {\n title: {\n en: 'Edit Spot',\n ru: 'Редактировать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n ],\n },\n });\n }\n\n // Organizations контекст\n if (!options.withOrganizationRoutes) {\n routes.push({\n parentName: routeOrganizations,\n config: {\n basePath: options.organizationBasePath || 'spots',\n routeNamePrefix: 'Organization',\n meta: {\n title: {\n en: 'Organization Spots',\n ru: 'Места Организации',\n },\n context: 'Organization',\n },\n routes: [\n {\n path: '',\n name: 'Spots',\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n title_hide: true,\n },\n component: () => import(/* webpackChunkName: 'spots-list' */ '../components/pages/Spots.vue'),\n },\n {\n path: 'create',\n name: 'Create Spot',\n meta: {\n title: {\n en: 'Create Spot',\n ru: 'Создать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles) || hasAccess(to.params._id, 'spots', 'create', auth.state.accesses, auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n // {\n // path: ':spot',\n // name: 'Spot',\n // meta: {\n // title: {\n // en: 'Spot',\n // ru: 'Место',\n // },\n // title_hide: false,\n // },\n // component: () => import(/* webpackChunkName: 'spot-detail' */ '../components/pages/Spot.vue'),\n // },\n {\n path: ':spot/edit',\n name: 'Edit Spot',\n meta: {\n title: {\n en: 'Edit Spot',\n ru: 'Редактировать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles) || hasAccess(to.params._id, 'spots', 'edit', auth.state.accesses, auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n ],\n }\n });\n }\n\n return routes;\n}\n\nexport default { getRoutes };"],"names":["validationAuth.requiresAuth","auth.state"],"mappings":"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"}
1
+ {"version":3,"file":"spots.router.js","sources":["../../../../../../src/modules/spots/router/spots.router.js"],"sourcesContent":["import * as validationAuth from '@martyrs/src/modules/auth/views/middlewares/auth.validation.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js';\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js';\n\nconst { hasAccess, isAdmin } = useGlobalMixins();\n\nexport function getRoutes(options = {}) {\n const route = options.route || 'Home';\n const routeBackoffice = options.routeBackoffice || 'Backoffice Root';\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n\n const routes = [];\n\n // Home контекст - только карта\n if (!options.contexts || options.contexts.includes('client')) routes.push({\n parentName: route,\n config: {\n basePath: options.basePath || 'spots',\n component: () => import(/* webpackChunkName: \"layout-empty\" */ '@martyrs/src/modules/core/views/components/layouts/Empty.vue'),\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n title_hide: true,\n breadcrumbs: {\n hide: true,\n hidden: true,\n },\n },\n routes: [\n {\n path: ':country?',\n component: () => import(/* webpackChunkName: \"layout-spots\" */ '../components/layouts/Spots.vue'),\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n header_theme: 'dark',\n footer_theme: 'dark',\n },\n children: [\n {\n path: ':state?',\n name: 'Spots State',\n component: () => import(/* webpackChunkName: 'spots-map' */ '../components/pages/Map.vue'),\n children: [\n {\n path: ':city?',\n name: 'Spots City',\n component: () => import(/* webpackChunkName: 'spots-map' */ '../components/pages/Map.vue'),\n },\n ],\n },\n ],\n },\n ],\n }\n });\n\n // Backoffice контекст\n if (!options.contexts || options.contexts.includes('backoffice')) {\n routes.push({\n parentName: routeBackoffice,\n config: {\n basePath: options.backofficeBasePath || 'spots',\n routeNamePrefix: 'Backoffice',\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n context: 'Backoffice',\n },\n routes: [\n {\n path: '',\n name: 'Spots',\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n title_hide: true,\n },\n component: () => import(/* webpackChunkName: 'spots-list' */ '../components/pages/Spots.vue'),\n },\n {\n path: 'create',\n name: 'Create Spot',\n meta: {\n title: {\n en: 'Create Spot',\n ru: 'Создать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n // {\n // path: ':spot',\n // name: 'Spot',\n // meta: {\n // title: {\n // en: 'Spot',\n // ru: 'Место',\n // },\n // title_hide: false,\n // },\n // component: () => import(/* webpackChunkName: 'spot-detail' */ '../components/pages/Spot.vue'),\n // },\n {\n path: ':spot/edit',\n name: 'Edit Spot',\n meta: {\n title: {\n en: 'Edit Spot',\n ru: 'Редактировать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n ],\n },\n });\n }\n\n // Organizations контекст\n if (!options.contexts || options.contexts.includes('organization')) {\n routes.push({\n parentName: routeOrganizations,\n config: {\n basePath: options.organizationBasePath || 'spots',\n routeNamePrefix: 'Organization',\n meta: {\n title: {\n en: 'Organization Spots',\n ru: 'Места Организации',\n },\n context: 'Organization',\n },\n routes: [\n {\n path: '',\n name: 'Spots',\n meta: {\n title: {\n en: 'Spots',\n ru: 'Места',\n },\n title_hide: true,\n },\n component: () => import(/* webpackChunkName: 'spots-list' */ '../components/pages/Spots.vue'),\n },\n {\n path: 'create',\n name: 'Create Spot',\n meta: {\n title: {\n en: 'Create Spot',\n ru: 'Создать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles) || hasAccess(to.params._id, 'spots', 'create', auth.state.accesses, auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n // {\n // path: ':spot',\n // name: 'Spot',\n // meta: {\n // title: {\n // en: 'Spot',\n // ru: 'Место',\n // },\n // title_hide: false,\n // },\n // component: () => import(/* webpackChunkName: 'spot-detail' */ '../components/pages/Spot.vue'),\n // },\n {\n path: ':spot/edit',\n name: 'Edit Spot',\n meta: {\n title: {\n en: 'Edit Spot',\n ru: 'Редактировать Место',\n },\n title_hide: false,\n },\n beforeEnter: [\n validationAuth.requiresAuth,\n (to, from, next) => {\n if (isAdmin(auth.state.access.roles) || hasAccess(to.params._id, 'spots', 'edit', auth.state.accesses, auth.state.access.roles)) {\n next();\n } else {\n next('/401');\n }\n }\n ],\n component: () => import(/* webpackChunkName: 'spot-edit' */ '../components/pages/SpotEdit.vue'),\n },\n ],\n }\n });\n }\n\n return routes;\n}\n\nexport default { getRoutes };"],"names":["validationAuth.requiresAuth","auth.state"],"mappings":"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"}
@@ -138,7 +138,7 @@ const _sfc_main = {
138
138
  }, null, 8, _hoisted_1),
139
139
  createElementVNode("span", _hoisted_2, toDisplayString(unref(t)("connectMetaMask")), 1),
140
140
  createVNode(_sfc_main$1, {
141
- class: "t-transp",
141
+ class: "opacity-50",
142
142
  fill: "rgb(var(--white))"
143
143
  })
144
144
  ])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
@@ -154,7 +154,7 @@ const _sfc_main = {
154
154
  }, null, 8, _hoisted_3),
155
155
  createElementVNode("span", _hoisted_4, toDisplayString(unref(t)("switchToPolygon")), 1),
156
156
  createVNode(_sfc_main$1, {
157
- class: "t-transp",
157
+ class: "opacity-50",
158
158
  fill: "rgb(var(--white))"
159
159
  })
160
160
  ])) : createCommentVNode("", true),
@@ -169,7 +169,7 @@ const _sfc_main = {
169
169
  class: "mn-r-small i-big"
170
170
  }, null, 8, _hoisted_5),
171
171
  createElementVNode("span", _hoisted_6, toDisplayString(unref(t)("addToken")), 1),
172
- createVNode(_sfc_main$1, { class: "hover:fill-black fill-white t-transp" })
172
+ createVNode(_sfc_main$1, { class: "hover:fill-black fill-white opacity-50" })
173
173
  ])) : createCommentVNode("", true)
174
174
  ], 64)),
175
175
  error.value ? (openBlock(), createElementBlock("p", _hoisted_7, toDisplayString(error.value), 1)) : createCommentVNode("", true)
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectMetamask.vue.js","sources":["../../../../../../../../src/modules/wallet/views/components/elements/ConnectMetamask.vue"],"sourcesContent":["<template>\n <div>\n <!-- Connect Metamask -->\n <button \n v-if=\"!isMetaMaskInstalled\"\n @click=\"connectMetaMask\" \n class=\"ease-in-out cursor-pointer bg-black radius-big flex-v-center flex-nowrap flex t-left uppercase w-100 pd-small t-white\"\n >\n <img loading=\"lazy\" :src=\"metamaskIcon\" class=\"mn-r-small i-big\">\n <span class=\"h4 uppercase w-100\">{{ t('connectMetaMask') }}</span>\n <IconAdd class=\"t-transp\" fill=\"rgb(var(--white))\"/>\n </button>\n <template v-else>\n <!-- Switch to Polygon -->\n <button \n v-if=\"!isPolygon\"\n @click=\"switchToPolygon\" \n class=\"ease-in-out cursor-pointer hover:bg-white hover:t-black bg-black t-white radius-big flex-v-center flex-nowrap flex t-left uppercase w-100 pd-small\"\n >\n <img loading=\"lazy\" :src=\"metamaskIcon\" class=\"mn-r-small i-big\">\n <span class=\"h4 uppercase w-100\">{{ t('switchToPolygon') }}</span>\n <IconAdd class=\"t-transp\" fill=\"rgb(var(--white))\"/>\n </button>\n <!-- Add Token to metamask -->\n <button \n v-if=\"isPolygon\"\n @click=\"addToken\" \n class=\"ease-in-out cursor-pointer hover:bg-white hover:t-black bg-black radius-big flex-v-center flex-nowrap flex t-left uppercase w-100 pd-small t-white\"\n >\n <img loading=\"lazy\" :src=\"metamaskIcon\" class=\"mn-r-small i-big\">\n <span class=\"h4 uppercase w-100\">{{ t('addToken') }}</span>\n <IconAdd class=\"hover:fill-black fill-white t-transp\"/>\n </button>\n </template>\n <p class=\"mn-t-small\" v-if=\"error\">{{ error }}</p>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';\n\nconst props = defineProps({\n // Token configuration\n tokenAddress: {\n type: String,\n required: true\n },\n tokenSymbol: {\n type: String,\n required: true\n },\n tokenImage: {\n type: String,\n required: true\n },\n tokenDecimals: {\n type: Number,\n default: 18\n },\n // Chain configuration\n targetChainId: {\n type: String,\n default: '0x89' // Polygon Mainnet by default\n },\n // UI configuration\n metamaskIcon: {\n type: String,\n default: '/icons/metamask.svg'\n },\n content: {\n type: Object,\n default: () => ({\n en: {\n \"connectMetaMask\": \"Connect MetaMask\",\n \"switchToPolygon\": \"Switch to Polygon\",\n \"addToken\": `Add token to MetaMask`,\n }\n })\n }\n});\n\nconst isMetaMaskInstalled = ref(false);\nconst isPolygon = ref(false);\nconst loading = ref(false);\nconst error = ref(null);\nconst buttonStyle = ref({});\n\nconst connectMetaMask = async () => {\n if (typeof window.ethereum !== 'undefined') {\n try {\n await window.ethereum.request({ method: 'eth_requestAccounts' });\n checkMetaMask();\n } catch (err) {\n error.value = err.message;\n console.error('Error connecting to MetaMask:', err);\n }\n } else {\n window.open('https://metamask.io/', '_blank');\n }\n};\n\nconst checkMetaMask = async () => {\n if (typeof window.ethereum !== 'undefined') {\n isMetaMaskInstalled.value = true;\n const chainId = await window.ethereum.request({ method: 'eth_chainId' });\n isPolygon.value = chainId === props.targetChainId;\n } else {\n isMetaMaskInstalled.value = false;\n }\n};\n\nconst switchToPolygon = async () => {\n try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: props.targetChainId }],\n });\n checkMetaMask();\n } catch (err) {\n error.value = err.message;\n console.error('Error switching to Polygon:', err);\n }\n};\n\nconst addToken = async () => {\n buttonStyle.value['pointer-events'] = 'none';\n error.value = null;\n loading.value = true;\n \n try {\n await ethereum.request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: props.tokenAddress,\n symbol: props.tokenSymbol,\n decimals: props.tokenDecimals,\n image: props.tokenImage,\n },\n },\n });\n buttonStyle.value['background-color'] = '#009911';\n loading.value = false;\n } catch (err) {\n error.value = err.message;\n loading.value = false;\n }\n};\n\nconst { t } = useI18n({\n messages: props.content\n});\n\nonMounted(() => {\n checkMetaMask();\n});\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,UAAM,QAAQ;AAwCd,UAAM,sBAAsB,IAAI,KAAK;AACrC,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,cAAc,IAAI,EAAE;AAE1B,UAAM,kBAAkB,YAAY;AAClC,UAAI,OAAO,OAAO,aAAa,aAAa;AAC1C,YAAI;AACF,gBAAM,OAAO,SAAS,QAAQ,EAAE,QAAQ,sBAAqB,CAAE;AAC/D,wBAAa;AAAA,QACf,SAAS,KAAK;AACZ,gBAAM,QAAQ,IAAI;AAClB,kBAAQ,MAAM,iCAAiC,GAAG;AAAA,QACpD;AAAA,MACF,OAAO;AACL,eAAO,KAAK,wBAAwB,QAAQ;AAAA,MAC9C;AAAA,IACF;AAEA,UAAM,gBAAgB,YAAY;AAChC,UAAI,OAAO,OAAO,aAAa,aAAa;AAC1C,4BAAoB,QAAQ;AAC5B,cAAM,UAAU,MAAM,OAAO,SAAS,QAAQ,EAAE,QAAQ,eAAe;AACvE,kBAAU,QAAQ,YAAY,MAAM;AAAA,MACtC,OAAO;AACL,4BAAoB,QAAQ;AAAA,MAC9B;AAAA,IACF;AAEA,UAAM,kBAAkB,YAAY;AAClC,UAAI;AACF,cAAM,OAAO,SAAS,QAAQ;AAAA,UAC5B,QAAQ;AAAA,UACR,QAAQ,CAAC,EAAE,SAAS,MAAM,cAAa,CAAE;AAAA,QAC/C,CAAK;AACD,sBAAa;AAAA,MACf,SAAS,KAAK;AACZ,cAAM,QAAQ,IAAI;AAClB,gBAAQ,MAAM,+BAA+B,GAAG;AAAA,MAClD;AAAA,IACF;AAEA,UAAM,WAAW,YAAY;AAC3B,kBAAY,MAAM,gBAAgB,IAAI;AACtC,YAAM,QAAQ;AACd,cAAQ,QAAQ;AAEhB,UAAI;AACF,cAAM,SAAS,QAAQ;AAAA,UACrB,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,cACP,SAAS,MAAM;AAAA,cACf,QAAQ,MAAM;AAAA,cACd,UAAU,MAAM;AAAA,cAChB,OAAO,MAAM;AAAA,YACvB;AAAA,UACA;AAAA,QACA,CAAK;AACD,oBAAY,MAAM,kBAAkB,IAAI;AACxC,gBAAQ,QAAQ;AAAA,MAClB,SAAS,KAAK;AACZ,cAAM,QAAQ,IAAI;AAClB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAED,cAAU,MAAM;AACd,oBAAa;AAAA,IACf,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ConnectMetamask.vue.js","sources":["../../../../../../../../src/modules/wallet/views/components/elements/ConnectMetamask.vue"],"sourcesContent":["<template>\n <div>\n <!-- Connect Metamask -->\n <button \n v-if=\"!isMetaMaskInstalled\"\n @click=\"connectMetaMask\" \n class=\"ease-in-out cursor-pointer bg-black radius-big flex-v-center flex-nowrap flex t-left uppercase w-100 pd-small t-white\"\n >\n <img loading=\"lazy\" :src=\"metamaskIcon\" class=\"mn-r-small i-big\">\n <span class=\"h4 uppercase w-100\">{{ t('connectMetaMask') }}</span>\n <IconAdd class=\"opacity-50\" fill=\"rgb(var(--white))\"/>\n </button>\n <template v-else>\n <!-- Switch to Polygon -->\n <button \n v-if=\"!isPolygon\"\n @click=\"switchToPolygon\" \n class=\"ease-in-out cursor-pointer hover:bg-white hover:t-black bg-black t-white radius-big flex-v-center flex-nowrap flex t-left uppercase w-100 pd-small\"\n >\n <img loading=\"lazy\" :src=\"metamaskIcon\" class=\"mn-r-small i-big\">\n <span class=\"h4 uppercase w-100\">{{ t('switchToPolygon') }}</span>\n <IconAdd class=\"opacity-50\" fill=\"rgb(var(--white))\"/>\n </button>\n <!-- Add Token to metamask -->\n <button \n v-if=\"isPolygon\"\n @click=\"addToken\" \n class=\"ease-in-out cursor-pointer hover:bg-white hover:t-black bg-black radius-big flex-v-center flex-nowrap flex t-left uppercase w-100 pd-small t-white\"\n >\n <img loading=\"lazy\" :src=\"metamaskIcon\" class=\"mn-r-small i-big\">\n <span class=\"h4 uppercase w-100\">{{ t('addToken') }}</span>\n <IconAdd class=\"hover:fill-black fill-white opacity-50\"/>\n </button>\n </template>\n <p class=\"mn-t-small\" v-if=\"error\">{{ error }}</p>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted, computed } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue';\n\nconst props = defineProps({\n // Token configuration\n tokenAddress: {\n type: String,\n required: true\n },\n tokenSymbol: {\n type: String,\n required: true\n },\n tokenImage: {\n type: String,\n required: true\n },\n tokenDecimals: {\n type: Number,\n default: 18\n },\n // Chain configuration\n targetChainId: {\n type: String,\n default: '0x89' // Polygon Mainnet by default\n },\n // UI configuration\n metamaskIcon: {\n type: String,\n default: '/icons/metamask.svg'\n },\n content: {\n type: Object,\n default: () => ({\n en: {\n \"connectMetaMask\": \"Connect MetaMask\",\n \"switchToPolygon\": \"Switch to Polygon\",\n \"addToken\": `Add token to MetaMask`,\n }\n })\n }\n});\n\nconst isMetaMaskInstalled = ref(false);\nconst isPolygon = ref(false);\nconst loading = ref(false);\nconst error = ref(null);\nconst buttonStyle = ref({});\n\nconst connectMetaMask = async () => {\n if (typeof window.ethereum !== 'undefined') {\n try {\n await window.ethereum.request({ method: 'eth_requestAccounts' });\n checkMetaMask();\n } catch (err) {\n error.value = err.message;\n console.error('Error connecting to MetaMask:', err);\n }\n } else {\n window.open('https://metamask.io/', '_blank');\n }\n};\n\nconst checkMetaMask = async () => {\n if (typeof window.ethereum !== 'undefined') {\n isMetaMaskInstalled.value = true;\n const chainId = await window.ethereum.request({ method: 'eth_chainId' });\n isPolygon.value = chainId === props.targetChainId;\n } else {\n isMetaMaskInstalled.value = false;\n }\n};\n\nconst switchToPolygon = async () => {\n try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: props.targetChainId }],\n });\n checkMetaMask();\n } catch (err) {\n error.value = err.message;\n console.error('Error switching to Polygon:', err);\n }\n};\n\nconst addToken = async () => {\n buttonStyle.value['pointer-events'] = 'none';\n error.value = null;\n loading.value = true;\n \n try {\n await ethereum.request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: props.tokenAddress,\n symbol: props.tokenSymbol,\n decimals: props.tokenDecimals,\n image: props.tokenImage,\n },\n },\n });\n buttonStyle.value['background-color'] = '#009911';\n loading.value = false;\n } catch (err) {\n error.value = err.message;\n loading.value = false;\n }\n};\n\nconst { t } = useI18n({\n messages: props.content\n});\n\nonMounted(() => {\n checkMetaMask();\n});\n</script>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,UAAM,QAAQ;AAwCd,UAAM,sBAAsB,IAAI,KAAK;AACrC,UAAM,YAAY,IAAI,KAAK;AAC3B,UAAM,UAAU,IAAI,KAAK;AACzB,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,cAAc,IAAI,EAAE;AAE1B,UAAM,kBAAkB,YAAY;AAClC,UAAI,OAAO,OAAO,aAAa,aAAa;AAC1C,YAAI;AACF,gBAAM,OAAO,SAAS,QAAQ,EAAE,QAAQ,sBAAqB,CAAE;AAC/D,wBAAa;AAAA,QACf,SAAS,KAAK;AACZ,gBAAM,QAAQ,IAAI;AAClB,kBAAQ,MAAM,iCAAiC,GAAG;AAAA,QACpD;AAAA,MACF,OAAO;AACL,eAAO,KAAK,wBAAwB,QAAQ;AAAA,MAC9C;AAAA,IACF;AAEA,UAAM,gBAAgB,YAAY;AAChC,UAAI,OAAO,OAAO,aAAa,aAAa;AAC1C,4BAAoB,QAAQ;AAC5B,cAAM,UAAU,MAAM,OAAO,SAAS,QAAQ,EAAE,QAAQ,eAAe;AACvE,kBAAU,QAAQ,YAAY,MAAM;AAAA,MACtC,OAAO;AACL,4BAAoB,QAAQ;AAAA,MAC9B;AAAA,IACF;AAEA,UAAM,kBAAkB,YAAY;AAClC,UAAI;AACF,cAAM,OAAO,SAAS,QAAQ;AAAA,UAC5B,QAAQ;AAAA,UACR,QAAQ,CAAC,EAAE,SAAS,MAAM,cAAa,CAAE;AAAA,QAC/C,CAAK;AACD,sBAAa;AAAA,MACf,SAAS,KAAK;AACZ,cAAM,QAAQ,IAAI;AAClB,gBAAQ,MAAM,+BAA+B,GAAG;AAAA,MAClD;AAAA,IACF;AAEA,UAAM,WAAW,YAAY;AAC3B,kBAAY,MAAM,gBAAgB,IAAI;AACtC,YAAM,QAAQ;AACd,cAAQ,QAAQ;AAEhB,UAAI;AACF,cAAM,SAAS,QAAQ;AAAA,UACrB,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,SAAS;AAAA,cACP,SAAS,MAAM;AAAA,cACf,QAAQ,MAAM;AAAA,cACd,UAAU,MAAM;AAAA,cAChB,OAAO,MAAM;AAAA,YACvB;AAAA,UACA;AAAA,QACA,CAAK;AACD,oBAAY,MAAM,kBAAkB,IAAI;AACxC,gBAAQ,QAAQ;AAAA,MAClB,SAAS,KAAK;AACZ,cAAM,QAAQ,IAAI;AAClB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AAEA,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAED,cAAU,MAAM;AACd,oBAAa;AAAA,IACf,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -27,7 +27,7 @@ const _sfc_main = {
27
27
  { name: "Refunded", value: "refunded" }
28
28
  ],
29
29
  actions: [
30
- { to: { name: "PaymentsCreate" }, label: "Create Payment" }
30
+ { to: { name: "PaymentsCreate" }, label: "+ Add Payment" }
31
31
  ],
32
32
  class: "mn-b-small bg-light bg-light radius-big"
33
33
  }, null, 8, ["tabs_current"]),
@@ -1 +1 @@
1
- {"version":3,"file":"Payments.vue.js","sources":["../../../../../../../../src/modules/wallet/views/components/pages/Payments.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n\n <SectionPageTitle\n title=\"Payments\"\n @update:tabs_current=\"(update) => tab = update\"\n :tabs_current=\"tab\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Created', value: 'created' },\n { name: 'Proccesing', value: 'processing' },\n { name: 'Finished', value: 'finished' },\n { name: 'Canceled', value: 'canceled' },\n { name: 'Refunded', value: 'refunded' },\n ]\"\n :actions=\"[\n { to: { name: 'PaymentsCreate'}, label: 'Create Payment' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-big\"\n />\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Payments Found',\n description: 'Currently, there are no payments.'\n }\n }\"\n :store=\"{\n read: (options) => payments.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n owner: route.params._id,\n ...(tab !== 'all' && { type: tab })\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-3 mobile:cols-1\"\n >\n <div\n v-for=\"payment in items\" \n class=\"bg-light pos-relative pd-medium radius-big\"\n >\n {{payment}}\n </div>\n </Feed>\n\n\n</div>\n</template>\n\n\n<script setup>\nimport { ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue'\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport * as payments from '@martyrs/src/modules/wallet/views/store/payments.store'; \n\nconst route = useRoute();\nconst router = useRouter();\n\nconst tab = ref('all')\n</script>\n\n\n<style lang=\"scss\">\n\n.round-stat {\n padding: 1rem;\n border-radius: 5rem;\n width: 3rem;\n height: 3rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border: 1px solid rgba(0,0,0,0.1);\n\n &-tab {\n width: 2rem;\n height: 2rem;\n }\n}\n\n\n\n.order-card {\n border-radius: 0.25rem;\n overflow: hidden;\n box-shadow: 0 8px 8px -8px rgb(36 36 36 / 10%);\n .order-status {\n color: black;\n background: #EEF2F6; \n width: 100%;\n padding: 0.75rem 1.5rem;\n margin: 0;\n }\n\n .new {\n color: white;\n background: #00ff88;\n }\n\n .block {\n border-radius: 0;\n border: 0;\n }\n}\n\n \n</style>\n"],"names":[],"mappings":";;;;;;;;;;;AAgEA,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,MAAM,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Payments.vue.js","sources":["../../../../../../../../src/modules/wallet/views/components/pages/Payments.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin\">\n\n <SectionPageTitle\n title=\"Payments\"\n @update:tabs_current=\"(update) => tab = update\"\n :tabs_current=\"tab\"\n :tabs=\"[\n { name: 'All', value: 'all' },\n { name: 'Created', value: 'created' },\n { name: 'Proccesing', value: 'processing' },\n { name: 'Finished', value: 'finished' },\n { name: 'Canceled', value: 'canceled' },\n { name: 'Refunded', value: 'refunded' },\n ]\"\n :actions=\"[\n { to: { name: 'PaymentsCreate'}, label: '+ Add Payment' }\n ]\"\n class=\"mn-b-small bg-light bg-light radius-big\"\n />\n\n <Feed\n :search=\"true\"\n :states=\"{\n empty: {\n title: 'No Payments Found',\n description: 'Currently, there are no payments.'\n }\n }\"\n :store=\"{\n read: (options) => payments.actions.read(options)\n }\"\n :options=\"{\n limit: 15,\n owner: route.params._id,\n ...(tab !== 'all' && { type: tab })\n }\"\n v-slot=\"{ \n items \n }\"\n class=\"gap-thin cols-3 mobile:cols-1\"\n >\n <div\n v-for=\"payment in items\" \n class=\"bg-light pos-relative pd-medium radius-big\"\n >\n {{payment}}\n </div>\n </Feed>\n\n\n</div>\n</template>\n\n\n<script setup>\nimport { ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport SectionPageTitle from '@martyrs/src/modules/core/views/components/sections/SectionPageTitle.vue'\nimport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\nimport * as payments from '@martyrs/src/modules/wallet/views/store/payments.store'; \n\nconst route = useRoute();\nconst router = useRouter();\n\nconst tab = ref('all')\n</script>\n\n\n<style lang=\"scss\">\n\n.round-stat {\n padding: 1rem;\n border-radius: 5rem;\n width: 3rem;\n height: 3rem;\n display: flex;\n justify-content: center;\n align-items: center;\n border: 1px solid rgba(0,0,0,0.1);\n\n &-tab {\n width: 2rem;\n height: 2rem;\n }\n}\n\n\n\n.order-card {\n border-radius: 0.25rem;\n overflow: hidden;\n box-shadow: 0 8px 8px -8px rgb(36 36 36 / 10%);\n .order-status {\n color: black;\n background: #EEF2F6; \n width: 100%;\n padding: 0.75rem 1.5rem;\n margin: 0;\n }\n\n .new {\n color: white;\n background: #00ff88;\n }\n\n .block {\n border-radius: 0;\n border: 0;\n }\n}\n\n \n</style>\n"],"names":[],"mappings":";;;;;;;;;;;AAgEA,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,MAAM,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  function getRoutes(options = {}) {
2
2
  const routeOrganizations = options.routeOrganizations || "OrganizationRoot";
3
3
  const routes = [];
4
- if (!options.withOrganizationRoutes) {
4
+ if (!options.contexts || options.contexts.includes("organization")) {
5
5
  routes.push({
6
6
  parentName: routeOrganizations,
7
7
  config: {
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.router.js","sources":["../../../../../../../src/modules/wallet/views/router/wallet.router.js"],"sourcesContent":["// wallet.meta.js\n// Meta-файл для регистрации роутов модуля wallet\n\nexport function getRoutes(options = {}) {\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n \n const routes = [];\n \n // Payments в Organizations - управление платежами организации\n if (!options.withOrganizationRoutes) {\n routes.push({\n parentName: routeOrganizations,\n config: {\n basePath: 'payments',\n name: 'Payments',\n meta: {\n title: {\n en: 'Payments',\n ru: 'Платежами',\n },\n authorize: [],\n context: 'organization',\n },\n component: () => import(/* webpackChunkName: 'payments' */ '../components/pages/Payments.vue'),\n routes: [\n {\n path: 'create',\n name: 'PaymentsCreate',\n meta: {\n title: {\n en: 'Create Payment',\n ru: 'Создать платеж',\n },\n authorize: [],\n context: 'organization',\n },\n component: () => import(/* webpackChunkName: 'payments-create' */ '../components/pages/Payments.vue'),\n },\n ],\n }\n });\n }\n \n return routes;\n}"],"names":[],"mappings":"AAGO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,qBAAqB,QAAQ,sBAAsB;AAEzD,QAAM,SAAS,CAAA;AAGf,MAAI,CAAC,QAAQ,wBAAwB;AACnC,WAAO,KAAK;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,QACN,UAAU;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,OAAO;AAAA,YACL,IAAI;AAAA,YACJ,IAAI;AAAA,UAChB;AAAA,UACU,WAAW,CAAA;AAAA,UACX,SAAS;AAAA,QACnB;AAAA,QACQ,WAAW,MAAM;AAAA;AAAA,UAA0C;AAAA,QAAkC;AAAA,QAC7F,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,OAAO;AAAA,gBACL,IAAI;AAAA,gBACJ,IAAI;AAAA,cACpB;AAAA,cACc,WAAW,CAAA;AAAA,cACX,SAAS;AAAA,YACvB;AAAA,YACY,WAAW,MAAM;AAAA;AAAA,cAAiD;AAAA,YAAkC;AAAA,UAChH;AAAA,QACA;AAAA,MACA;AAAA,IACA,CAAK;AAAA,EACH;AAEA,SAAO;AACT;"}
1
+ {"version":3,"file":"wallet.router.js","sources":["../../../../../../../src/modules/wallet/views/router/wallet.router.js"],"sourcesContent":["// wallet.meta.js\n// Meta-файл для регистрации роутов модуля wallet\n\nexport function getRoutes(options = {}) {\n const routeOrganizations = options.routeOrganizations || 'OrganizationRoot';\n \n const routes = [];\n \n // Payments в Organizations - управление платежами организации\n if (!options.contexts || options.contexts.includes('organization')) {\n routes.push({\n parentName: routeOrganizations,\n config: {\n basePath: 'payments',\n name: 'Payments',\n meta: {\n title: {\n en: 'Payments',\n ru: 'Платежами',\n },\n authorize: [],\n context: 'organization',\n },\n component: () => import(/* webpackChunkName: 'payments' */ '../components/pages/Payments.vue'),\n routes: [\n {\n path: 'create',\n name: 'PaymentsCreate',\n meta: {\n title: {\n en: 'Create Payment',\n ru: 'Создать платеж',\n },\n authorize: [],\n context: 'organization',\n },\n component: () => import(/* webpackChunkName: 'payments-create' */ '../components/pages/Payments.vue'),\n },\n ],\n }\n });\n }\n \n return routes;\n}"],"names":[],"mappings":"AAGO,SAAS,UAAU,UAAU,IAAI;AACtC,QAAM,qBAAqB,QAAQ,sBAAsB;AAEzD,QAAM,SAAS,CAAA;AAGf,MAAI,CAAC,QAAQ,YAAY,QAAQ,SAAS,SAAS,cAAc,GAAG;AAClE,WAAO,KAAK;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,QACN,UAAU;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,OAAO;AAAA,YACL,IAAI;AAAA,YACJ,IAAI;AAAA,UAChB;AAAA,UACU,WAAW,CAAA;AAAA,UACX,SAAS;AAAA,QACnB;AAAA,QACQ,WAAW,MAAM;AAAA;AAAA,UAA0C;AAAA,QAAkC;AAAA,QAC7F,QAAQ;AAAA,UACN;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,cACJ,OAAO;AAAA,gBACL,IAAI;AAAA,gBACJ,IAAI;AAAA,cACpB;AAAA,cACc,WAAW,CAAA;AAAA,cACX,SAAS;AAAA,YACvB;AAAA,YACY,WAAW,MAAM;AAAA;AAAA,cAAiD;AAAA,YAAkC;AAAA,UAChH;AAAA,QACA;AAAA,MACA;AAAA,IACA,CAAK;AAAA,EACH;AAEA,SAAO;AACT;"}
@@ -1,8 +1,8 @@
1
- import { ref as y, onMounted as b, watchEffect as w, createElementBlock as v, openBlock as d, createElementVNode as c, createVNode as k, Transition as x, withCtx as M, createBlock as V } from "vue";
2
- import { Loader as E } from "./martyrs.es41.js";
3
- import Z from "./martyrs.es35.js";
1
+ import { ref as L, onMounted as M, watchEffect as _, createElementBlock as b, openBlock as C, createElementVNode as g, createVNode as V, Transition as E, withCtx as Z, createBlock as B } from "vue";
2
+ import { setOptions as G, importLibrary as f } from "./martyrs.es41.js";
3
+ import H from "./martyrs.es35.js";
4
4
  /* empty css */
5
- const B = { class: "pos-relative" }, H = {
5
+ const K = { class: "pos-relative" }, O = {
6
6
  key: 0,
7
7
  class: "i-medium",
8
8
  width: "98",
@@ -10,7 +10,7 @@ const B = { class: "pos-relative" }, H = {
10
10
  viewBox: "0 0 98 98",
11
11
  fill: "none",
12
12
  xmlns: "http://www.w3.org/2000/svg"
13
- }, O = {
13
+ }, U = {
14
14
  __name: "LocationMarker",
15
15
  props: {
16
16
  location: {
@@ -28,88 +28,90 @@ const B = { class: "pos-relative" }, H = {
28
28
  }
29
29
  },
30
30
  emits: ["update:location", "update:address", "update:country", "update:state", "update:city"],
31
- setup(_, { emit: h }) {
32
- const o = _, a = h, u = y(null), r = y(!1);
33
- let s, i;
34
- b(() => {
35
- new E({
36
- apiKey: o.apiKey,
37
- version: "weekly",
38
- libraries: ["places"],
39
- language: o.locale
40
- }).load().then(() => {
41
- s = new google.maps.Map(u.value, {
31
+ setup(h, { emit: k }) {
32
+ const o = h, a = k, y = L(null), l = L(!1);
33
+ let r, u, i, m;
34
+ M(async () => {
35
+ try {
36
+ G({
37
+ apiKey: o.apiKey,
38
+ version: "weekly",
39
+ language: o.locale
40
+ });
41
+ const e = await f("maps"), t = await f("marker"), s = await f("core"), p = await f("geocoding");
42
+ i = s.LatLng, m = p.Geocoder, r = new e.Map(y.value, {
42
43
  center: o.location,
43
44
  zoom: 15,
44
45
  mapTypeControl: !1,
45
46
  fullscreenControl: !1,
46
47
  disableDefaultUI: !0
47
- }), i = new google.maps.Marker({
48
+ }), u = new t.Marker({
48
49
  position: o.location,
49
- map: s,
50
+ map: r,
50
51
  draggable: !0
51
- }), i.addListener("dragend", (e) => {
52
- const n = { lat: e.latLng.lat(), lng: e.latLng.lng() };
53
- a("update:location", n), p(n);
52
+ }), u.addListener("dragend", (c) => {
53
+ const d = { lat: c.latLng.lat(), lng: c.latLng.lng() };
54
+ a("update:location", d), w(d);
54
55
  });
55
- }).catch((e) => {
56
+ } catch (e) {
56
57
  console.error(e);
57
- });
58
- }), w(() => {
59
- o.location && i && i.setPosition(new google.maps.LatLng(o.location.lat, o.location.lng));
60
- }), w(() => {
61
- if (o.location && s) {
62
- const t = new google.maps.LatLng(o.location.lat, o.location.lng);
63
- s.setCenter(t), s.setZoom(15);
58
+ }
59
+ }), _(() => {
60
+ o.location && u && i && u.setPosition(new i(o.location.lat, o.location.lng));
61
+ }), _(() => {
62
+ if (o.location && r && i) {
63
+ const e = new i(o.location.lat, o.location.lng);
64
+ r.setCenter(e), r.setZoom(15);
64
65
  }
65
66
  });
66
- function p(t) {
67
- new google.maps.Geocoder().geocode({ location: t }, (n, g) => {
68
- if (g === "OK")
69
- if (n[0]) {
70
- a("update:address", n[0].formatted_address);
71
- let f = "", m = "", C = "";
72
- n[0].address_components.forEach((l) => {
73
- l.types.includes("country") && (f = l.long_name), l.types.includes("administrative_area_level_1") && (m = l.long_name), l.types.includes("locality") && (C = l.long_name);
74
- }), a("update:country", f), a("update:state", m), a("update:city", C);
67
+ function w(e) {
68
+ if (!m) return;
69
+ new m().geocode({ location: e }, (s, p) => {
70
+ if (p === "OK")
71
+ if (s[0]) {
72
+ a("update:address", s[0].formatted_address);
73
+ let c = "", d = "", v = "";
74
+ s[0].address_components.forEach((n) => {
75
+ n.types.includes("country") && (c = n.long_name), n.types.includes("administrative_area_level_1") && (d = n.long_name), n.types.includes("locality") && (v = n.long_name);
76
+ }), a("update:country", c), a("update:state", d), a("update:city", v);
75
77
  } else
76
78
  console.error("No results found");
77
79
  else
78
- console.error("Geocoder failed due to: " + g);
80
+ console.error("Geocoder failed due to: " + p);
79
81
  });
80
82
  }
81
- async function L() {
82
- r.value = !0, navigator.geolocation ? navigator.geolocation.getCurrentPosition((t) => {
83
- const e = { lat: t.coords.latitude, lng: t.coords.longitude };
84
- a("update:location", e), p(e), r.value = !1;
83
+ async function x() {
84
+ l.value = !0, navigator.geolocation ? navigator.geolocation.getCurrentPosition((e) => {
85
+ const t = { lat: e.coords.latitude, lng: e.coords.longitude };
86
+ a("update:location", t), w(t), l.value = !1;
85
87
  }, () => {
86
- console.error("Error getting location"), r.value = !1;
87
- }) : (console.error("Geolocation is not supported by this browser."), r.value = !1);
88
+ console.error("Error getting location"), l.value = !1;
89
+ }) : (console.error("Geolocation is not supported by this browser."), l.value = !1);
88
90
  }
89
- return (t, e) => (d(), v("div", B, [
90
- c("div", {
91
+ return (e, t) => (C(), b("div", K, [
92
+ g("div", {
91
93
  ref_key: "mapContainer",
92
- ref: u,
94
+ ref: y,
93
95
  class: "w-100 h-100"
94
96
  }, null, 512),
95
- c("button", {
97
+ g("button", {
96
98
  class: "cursor-pointer flex-center flex pos-absolute pos-t-regular pos-r-regular i-medium bg-second pd-nano radius-extra",
97
- onClick: L
99
+ onClick: x
98
100
  }, [
99
- k(x, {
101
+ V(E, {
100
102
  name: "ScaleOut",
101
103
  mode: "out-in"
102
104
  }, {
103
- default: M(() => [
104
- r.value ? (d(), V(Z, {
105
+ default: Z(() => [
106
+ l.value ? (C(), B(H, {
105
107
  key: 1,
106
108
  class: "pos-t-0 pos-l-0 i-small"
107
- })) : (d(), v("svg", H, e[0] || (e[0] = [
108
- c("path", {
109
+ })) : (C(), b("svg", O, t[0] || (t[0] = [
110
+ g("path", {
109
111
  d: "M50.0004 31.4995C39.7996 31.4995 31.5 39.7991 31.5 49.9999C31.5 60.2007 39.7996 68.5003 50.0004 68.5003C60.2012 68.5003 68.5008 60.2007 68.5008 49.9999C68.5008 39.7991 60.2012 31.4995 50.0004 31.4995ZM50.0004 63.7944C42.3941 63.7944 36.2059 57.6062 36.2059 49.9999C36.2059 42.3936 42.3941 36.2054 50.0004 36.2054C57.6067 36.2054 63.7949 42.3936 63.7949 49.9999C63.7949 57.6062 57.6067 63.7944 50.0004 63.7944Z",
110
112
  fill: "rgb(var(--white))"
111
113
  }, null, -1),
112
- c("path", {
114
+ g("path", {
113
115
  d: "M97.6471 47.6471H84.56C83.3977 30.4141 69.5859 16.6024 52.3529 15.44V2.35294C52.3529 1.05255 51.2988 0 50 0C48.6996 0 47.6471 1.05255 47.6471 2.35294V15.44C30.4141 16.6024 16.6024 30.4141 15.44 47.6471H2.35294C1.05255 47.6471 0 48.6996 0 50C0 51.2988 1.05255 52.3529 2.35294 52.3529H15.44C16.6024 69.5859 30.4141 83.3977 47.6471 84.56V97.6471C47.6471 98.9459 48.6996 100 50 100C51.2988 100 52.3529 98.9459 52.3529 97.6471V84.56C69.5859 83.3977 83.3977 69.5859 84.56 52.3529H97.6471C98.9459 52.3529 100 51.2988 100 50C100 48.6996 98.9459 47.6471 97.6471 47.6471ZM50 79.9435C33.4886 79.9435 20.0565 66.5114 20.0565 50C20.0565 33.4886 33.4886 20.0565 50 20.0565C66.5098 20.0565 79.9435 33.4886 79.9435 50C79.9435 66.5098 66.5098 79.9435 50 79.9435Z",
114
116
  fill: "rgb(var(--white))"
115
117
  }, null, -1)
@@ -122,5 +124,5 @@ const B = { class: "pos-relative" }, H = {
122
124
  }
123
125
  };
124
126
  export {
125
- O as default
127
+ U as default
126
128
  };
@@ -1,5 +1,5 @@
1
- import o from "./martyrs.es123.js";
2
- import m from "./martyrs.es124.js";
1
+ import o from "./martyrs.es126.js";
2
+ import m from "./martyrs.es127.js";
3
3
  function u() {
4
4
  var t = o(arguments), e = t.text, r = t.options, a = t.metadata;
5
5
  return m(e, r, a);