@ozdao/martyrs 0.2.541 → 0.2.543

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 (324) hide show
  1. package/dist/_virtual/index.cjs +4 -4
  2. package/dist/_virtual/index.js +4 -4
  3. package/dist/_virtual/index2.cjs +3 -6
  4. package/dist/_virtual/index2.cjs.map +1 -1
  5. package/dist/_virtual/index2.js +2 -5
  6. package/dist/_virtual/index2.js.map +1 -1
  7. package/dist/main-BNdv8Ji-.cjs +11 -0
  8. package/dist/{main-BpBtIUcJ.js → main-DUwlesGq.js} +3135 -3555
  9. package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
  10. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
  11. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  12. package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
  13. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +93 -0
  14. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  15. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +94 -1
  16. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  17. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +0 -93
  18. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  19. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +1 -94
  20. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  21. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +4 -2
  22. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -1
  23. package/dist/martyrs/src/components/Feed/Carousel.vue.js +5 -3
  24. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
  25. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +5 -3
  26. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  27. package/dist/martyrs/src/components/Feed/Feed.vue.js +5 -3
  28. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  29. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  30. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  31. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.cjs +30 -21
  32. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.cjs.map +1 -1
  33. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +32 -23
  34. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +1 -1
  35. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.cjs +235 -0
  36. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.cjs.map +1 -0
  37. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.js +235 -0
  38. package/dist/martyrs/src/components/FieldTags/FieldTags.vue2.js.map +1 -0
  39. package/dist/martyrs/src/components/Marquee/Marquee.vue.cjs +17 -8
  40. package/dist/martyrs/src/components/Marquee/Marquee.vue.cjs.map +1 -1
  41. package/dist/martyrs/src/components/Marquee/Marquee.vue.js +17 -8
  42. package/dist/martyrs/src/components/Marquee/Marquee.vue.js.map +1 -1
  43. package/dist/martyrs/src/components/Tab/Tab.vue.cjs +3 -1
  44. package/dist/martyrs/src/components/Tab/Tab.vue.cjs.map +1 -1
  45. package/dist/martyrs/src/components/Tab/Tab.vue.js +4 -2
  46. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +1 -1
  47. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs +219 -0
  48. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs.map +1 -0
  49. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js +219 -0
  50. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js.map +1 -0
  51. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +2 -2
  60. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +4 -4
  61. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  62. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  63. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  64. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  65. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  66. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  68. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  69. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +2 -7
  70. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  71. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +2 -7
  72. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  73. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +2 -13
  74. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  75. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +2 -13
  76. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  77. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  78. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  79. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -4
  80. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs.map +1 -1
  81. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -4
  82. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  83. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +1 -1
  84. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +2 -2
  85. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +3 -3
  90. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +22 -22
  91. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  93. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  95. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  96. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  97. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.cjs +1 -1
  98. package/dist/martyrs/src/modules/globals/views/classes/globals.i18n.js +1 -1
  99. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  100. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  101. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
  102. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
  103. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  105. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  107. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  109. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  111. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue2.cjs → Filters.vue.cjs} +2 -2
  112. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue2.js.map → Filters.vue.cjs.map} +1 -1
  113. package/dist/martyrs/src/modules/globals/views/components/sections/{Filters.vue2.js → Filters.vue.js} +2 -2
  114. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue.js.map +1 -0
  115. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +1 -0
  116. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
  117. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  118. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
  119. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
  120. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  121. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.cjs +1 -1
  122. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  123. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  125. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
  126. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  127. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  129. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  131. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  135. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
  136. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  137. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +2 -2
  138. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +11 -11
  139. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  140. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +12 -12
  141. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +2 -2
  142. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +16 -16
  143. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  145. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +2 -2
  146. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +16 -16
  147. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +1 -1
  148. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +1 -1
  149. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  151. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  152. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  153. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +1 -1
  154. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +1 -1
  155. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  157. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +1 -1
  159. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  160. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  161. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +1 -1
  162. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  163. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  165. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
  166. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  167. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  169. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  170. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  171. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  173. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -1
  174. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  175. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +1 -1
  176. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  177. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +1 -1
  178. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  179. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  180. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  181. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +3 -4
  182. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +3 -4
  184. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
  185. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  186. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  187. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  189. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +2 -2
  190. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +20 -20
  191. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +1 -1
  192. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  193. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +3 -4
  194. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  195. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +3 -4
  196. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +4 -5
  198. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
  199. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +4 -5
  200. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +3 -4
  202. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  203. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +3 -4
  204. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  206. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +6 -6
  207. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  208. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  209. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  211. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  212. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  213. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  215. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  217. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  218. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  219. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
  220. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
  222. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +5 -2
  224. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  225. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +5 -2
  226. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  227. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +49 -41
  228. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +54 -46
  230. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -1
  233. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  234. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  235. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +5 -5
  236. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  237. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +5 -5
  238. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  240. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  241. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  242. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  243. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
  244. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  245. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  246. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  247. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +1 -1
  248. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  249. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  250. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  251. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  252. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  253. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  254. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  255. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  256. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  257. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  258. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +11 -11
  259. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  260. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  261. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  262. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  263. package/dist/martyrs.cjs.js +1 -1
  264. package/dist/martyrs.css +1 -1
  265. package/dist/martyrs.es.js +1 -1
  266. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.cjs +1 -1
  267. package/dist/node_modules/.pnpm/lodash.merge@4.6.2/node_modules/lodash.merge/index.js +1 -1
  268. package/dist/style.css +133 -133
  269. package/dist/{web-DsdyXC8n.js → web-C6njYH1C.js} +1 -1
  270. package/dist/{web-C9bVm6Nw.cjs → web-CVdyxtLD.cjs} +1 -1
  271. package/package.json +1 -1
  272. package/src/components/Feed/Carousel.vue +3 -0
  273. package/src/components/Feed/Feed.vue +3 -0
  274. package/src/components/FieldTags/BlockTags.vue +28 -16
  275. package/src/components/FieldTags/FieldTags.vue +327 -508
  276. package/src/components/Marquee/Marquee.vue +25 -14
  277. package/src/components/Tab/Tab.vue +2 -0
  278. package/src/components/UploadImage/UploadImage.vue +192 -18
  279. package/src/modules/community/components/blocks/CardBlogpost.vue +2 -7
  280. package/src/modules/community/components/blocks/FooterBlogpost.vue +2 -13
  281. package/src/modules/community/components/pages/CreateBlogPost.vue +0 -1
  282. package/src/modules/globals/TASK.MD +105 -1
  283. package/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  284. package/src/modules/products/components/blocks/CardCategory.vue +6 -0
  285. package/src/modules/products/components/pages/Categories.vue +4 -1
  286. package/src/modules/products/components/pages/CategoryEdit.vue +53 -39
  287. package/src/modules/products/components/pages/Products.vue +1 -1
  288. package/dist/_virtual/index3.cjs +0 -5
  289. package/dist/_virtual/index3.cjs.map +0 -1
  290. package/dist/_virtual/index3.js +0 -5
  291. package/dist/_virtual/index3.js.map +0 -1
  292. package/dist/main-7IA3UHca.cjs +0 -11
  293. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  294. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +0 -480
  295. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs.map +0 -1
  296. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +0 -480
  297. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js.map +0 -1
  298. package/dist/martyrs/src/components/FieldTags/create-tags.cjs +0 -52
  299. package/dist/martyrs/src/components/FieldTags/create-tags.cjs.map +0 -1
  300. package/dist/martyrs/src/components/FieldTags/create-tags.js +0 -52
  301. package/dist/martyrs/src/components/FieldTags/create-tags.js.map +0 -1
  302. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.cjs +0 -32
  303. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.cjs.map +0 -1
  304. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.js +0 -32
  305. package/dist/martyrs/src/components/FieldTags/tag-input.vue2.js.map +0 -1
  306. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs +0 -329
  307. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs.map +0 -1
  308. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js +0 -329
  309. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js.map +0 -1
  310. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs +0 -100
  311. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +0 -1
  312. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +0 -100
  313. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +0 -1
  314. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +0 -1
  315. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs +0 -39
  316. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs.map +0 -1
  317. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +0 -39
  318. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +0 -1
  319. package/src/components/FieldTags/FieldTagsNew.vue +0 -366
  320. package/src/components/FieldTags/README.md +0 -513
  321. package/src/components/FieldTags/create-tags.js +0 -97
  322. package/src/components/FieldTags/tag-input.vue +0 -55
  323. package/src/components/FieldTags/vue-tags-input.props.js +0 -342
  324. package/src/components/FieldTags/vue-tags-input.scss +0 -149
@@ -69,6 +69,7 @@ const loopInterval = ref(null)
69
69
  const resizeObserver = ref(null)
70
70
  const checkInterval = ref(null)
71
71
  const resizeTimeout = ref(null)
72
+ const previousSize = ref({ width: 0, height: 0 })
72
73
 
73
74
  const widthMin = ref('100%')
74
75
  const widthContainer = ref(0)
@@ -152,11 +153,22 @@ const checkForClone = async () => {
152
153
  resizeObserver.value.disconnect()
153
154
  }
154
155
 
155
- resizeObserver.value = new ResizeObserver(() => {
156
- clearTimeout(resizeTimeout.value)
157
- resizeTimeout.value = setTimeout(() => {
158
- calculateClones()
159
- }, 150)
156
+ resizeObserver.value = new ResizeObserver((entries) => {
157
+ const entry = entries[0]
158
+ const newWidth = entry.contentRect.width
159
+ const newHeight = entry.contentRect.height
160
+
161
+ // Only recalculate if size changed significantly (more than 1px)
162
+ const widthChanged = Math.abs(newWidth - previousSize.value.width) > 1
163
+ const heightChanged = Math.abs(newHeight - previousSize.value.height) > 1
164
+
165
+ if (widthChanged || heightChanged) {
166
+ previousSize.value = { width: newWidth, height: newHeight }
167
+ clearTimeout(resizeTimeout.value)
168
+ resizeTimeout.value = setTimeout(() => {
169
+ calculateClones()
170
+ }, 300)
171
+ }
160
172
  })
161
173
 
162
174
  resizeObserver.value.observe(marqueeOverlayContainer.value)
@@ -188,7 +200,7 @@ const getCurrentStyle = computed(() => {
188
200
  '--pauseOnHover': `${props.pauseOnHover ? 'paused' : 'running'}`,
189
201
  '--pauseOnClick': `${props.pauseOnClick ? 'paused' : 'running'}`,
190
202
  '--pauseAnimation': `${(props.vertical && verticalAnimationPause.value) || props.pause ? 'paused' : 'running'}`,
191
- '--gradient-color': `rgba(${props.gradientColor}, 1), rgba(${props.gradientColor}, 0)`,
203
+ '--gradient-color': props.gradientColor,
192
204
  '--gradient-length': `${gradientLength.value}`,
193
205
  '--min-width': `${widthMin.value}`,
194
206
  '--min-height': `${heightMin.value}`,
@@ -258,9 +270,9 @@ watch(
258
270
  (newVal, oldVal) => {
259
271
  if (newVal !== oldVal) {
260
272
  if (newVal) {
261
- emits('onResume')
262
- } else {
263
273
  emits('onPause')
274
+ } else {
275
+ emits('onResume')
264
276
  }
265
277
  }
266
278
  }
@@ -271,20 +283,19 @@ watch(
271
283
  .vue3-marquee {
272
284
  display: flex !important;
273
285
  position: relative;
286
+ will-change: transform;
287
+ transform: translateZ(0);
288
+ backface-visibility: hidden;
274
289
 
275
290
  .marquee {
276
291
  flex: 0 0 auto;
277
292
  min-width: var(--min-width);
278
293
  min-height: var(--min-height);
279
294
  z-index: 1;
280
- will-change: transform;
281
- transform: translateZ(0);
282
- backface-visibility: hidden;
283
295
 
284
296
  animation: var(--orientation) var(--duration) linear var(--delay) var(--loops);
285
297
  animation-play-state: var(--pauseAnimation);
286
298
  animation-direction: var(--direction);
287
- contain: layout style paint;
288
299
  }
289
300
 
290
301
  .overlay {
@@ -325,7 +336,7 @@ watch(
325
336
  }
326
337
 
327
338
  .overlay::before,.overlay::after {
328
- background: linear-gradient(to right, var(--gradient-color));
339
+ background: linear-gradient(to right, var(--gradient-color), transparent);
329
340
  height: 100%;
330
341
  width: var(--gradient-length);
331
342
  }
@@ -351,7 +362,7 @@ watch(
351
362
  }
352
363
 
353
364
  .overlay::before, .overlay::after {
354
- background: linear-gradient(to bottom, var(--gradient-color));
365
+ background: linear-gradient(to bottom, var(--gradient-color), transparent);
355
366
  height: var(--gradient-length);
356
367
  width: 100%;
357
368
  }
@@ -18,7 +18,9 @@
18
18
 
19
19
  <script setup>
20
20
  import { ref, computed, watch } from 'vue'
21
+ import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';
21
22
 
23
+ const { replaceClasses } = useGlobalMixins();
22
24
  const emit = defineEmits(['update:selected', 'tab-click']);
23
25
 
24
26
  const props = defineProps({
@@ -1,40 +1,116 @@
1
1
  <template>
2
- <div
3
- @click="onComponentClick"
4
- @drop="onDrop"
5
- @dragover.prevent
6
- class="image-upload-area flex-v-center flex-h-center flex">
2
+ <div class="upload-image-wrapper flex-v-center flex-nowrap flex gap-small" :class="{'with-text': text}">
3
+ <div
4
+ @click="onComponentClick"
5
+ @drop="onDrop"
6
+ @dragover.prevent
7
+ class="pos-relative radius-small br-solid br-1px br-black-transp-10 h-100 aspect-1x1 flex-v-center flex-h-center flex cursor-pointer"
8
+ >
7
9
  <img loading="lazy"
8
- v-if="imageUrl || photo"
9
- :src="(FILE_SERVER_URL || '') + (imageUrl || photo)"
10
+ v-if="imageUrl || photo || previewUrl"
11
+ :src="previewUrl || (FILE_SERVER_URL || '') + (imageUrl || photo)"
10
12
  alt="Uploaded image"
11
- class="w-100 h-100 object-fit-cover"
12
- />
13
+ class="pos-absolute radius-small o-hidden z-index-1 w-100 h-100 object-fit-cover"
14
+ />
13
15
 
14
- <div v-else class="flex-v-center flex-h-center flex w-100 h-100 bg-second" >
15
- <svg class="i-medium" width="104" height="104" viewBox="0 0 104 104" fill="none" xmlns="http://www.w3.org/2000/svg">
16
- <path fill="rgb(var(--white))" d="M21.2784 37.2973C18.8466 34.6628 18.8466 30.6098 21.2784 27.9753L47.2179 2.03584C48.6364 0.81993 50.2577 0.211974 51.8789 0.211974C53.5001 0.211974 55.1213 0.81993 56.5399 2.03584L82.4793 27.9753C84.9111 30.6098 84.9111 34.6628 82.4793 37.2973C79.8448 39.7291 75.7918 39.7291 73.1573 37.2973L58.3637 22.301V71.5454C58.3637 75.1932 55.5266 78.0303 51.8789 78.0303C48.2311 78.0303 45.394 75.1932 45.394 71.5454V22.301L30.6004 37.2973C27.966 39.7291 23.9129 39.7291 21.2784 37.2973ZM97.2729 71.5454C100.921 71.5454 103.758 74.3825 103.758 78.0303V97.4849C103.758 101.133 100.921 103.97 97.2729 103.97H6.48486C2.83713 103.97 0 101.133 0 97.4849V78.0303C0 74.3825 2.83713 71.5454 6.48486 71.5454H38.9092C38.9092 78.6382 44.7861 84.5151 51.8789 84.5151C58.9717 84.5151 64.8486 78.6382 64.8486 71.5454H97.2729ZM87.5456 92.6212C90.1801 92.6212 92.4092 90.392 92.4092 87.7576C92.4092 85.1231 90.1801 82.8939 87.5456 82.8939C84.9111 82.8939 82.682 85.1231 82.682 87.7576C82.682 90.392 84.9111 92.6212 87.5456 92.6212Z"/>
17
- </svg>
16
+ <div v-else class="flex-v-center pos-relative z-index-2 flex-h-center flex w-100 h-100 radius-small bg-second" >
17
+ <IconUpload class="i-medium upload-icon" fill="rgb(var(--white))" />
18
+ </div>
19
+
20
+ <!-- Hover controls -->
21
+ <div class="z-index-2 pos-relative hover-controls pos-absolute w-100 h-100 flex-v-center flex-h-center flex">
22
+ <div v-if="!imageUrl && !photo && !previewUrl" class="hover-upload-icon">
23
+ <IconUpload class="i-medium" fill="rgb(var(--white))" />
24
+ </div>
25
+ <div v-else class="hover-buttons flex gap-small">
26
+ <button @click.stop="onComponentClick" class="hover-button radius-small pd-thin bg-main t-white br-none cursor-pointer">
27
+ <IconUpload class="i-semi" fill="rgb(var(--white))" />
28
+ </button>
29
+ <button @click.stop="deleteImage" class="hover-button radius-small pd-thin bg-danger t-white br-none cursor-pointer">
30
+ <IconDelete class="i-semi" fill="rgb(var(--white))" />
31
+ </button>
32
+ </div>
33
+ </div>
34
+
35
+ <!-- Loading overlay -->
36
+ <div v-if="loading" class="z-index-2 loading-overlay pos-absolute w-100 h-100 flex-v-center flex-h-center flex">
37
+ <Loader :centered="false" />
18
38
  </div>
19
39
 
20
40
  <input type="file" name="file" ref="fileInput" @change="onFileChange" style="display: none"/>
41
+ </div>
42
+
43
+ <!-- Text block -->
44
+ <div v-if="text" class="upload-text-block flex flex-column">
45
+ <span class="mn-b-small t-medium">{{ textConfig.title }}</span>
46
+ <span class="mn-b-medium t-transp">{{ textConfig.subtitle }}</span>
47
+ <div v-if="!imageUrl && !photo && !previewUrl">
48
+ <button @click="onComponentClick" class="button button-small w-max bg-main t-black cursor-pointer">
49
+ {{ textConfig.buttonText }}
50
+ </button>
51
+ </div>
52
+ <div v-else class="flex gap-thin">
53
+ <button @click="onComponentClick" class="button button-small w-max bg-second t-white cursor-pointer">
54
+ Upload
55
+ </button>
56
+ <button @click="deleteImage" class="button button-small w-max bg-red t-white cursor-pointer">
57
+ Delete
58
+ </button>
59
+ </div>
60
+ </div>
21
61
  </div>
22
62
  </template>
23
63
 
24
64
  <script setup>
25
- import { ref, watch } from 'vue';
65
+ import { ref, watch, computed } from 'vue';
26
66
  import axios from 'axios';
67
+ import Loader from '@martyrs/src/components/Loader/Loader.vue';
68
+ import IconUpload from '@martyrs/src/modules/icons/navigation/IconUpload.vue';
69
+ import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';
27
70
 
28
71
  const imageUrl = ref(null);
29
72
  const fileInput = ref(null);
73
+ const previewUrl = ref(null);
74
+ const loading = ref(false);
30
75
 
31
- const props = defineProps([
32
- 'uploadPath', // only necessary prop
33
- 'photo' // new prop for holding the image url
34
- ]);
76
+ const props = defineProps({
77
+ uploadPath: {
78
+ type: String,
79
+ required: true
80
+ },
81
+ photo: {
82
+ type: String,
83
+ default: null
84
+ },
85
+ text: {
86
+ type: [Object, Boolean],
87
+ default: null
88
+ }
89
+ });
35
90
 
36
91
  const emit = defineEmits(['update:photo', 'error']);
37
92
 
93
+ // Text configuration with defaults
94
+ const textConfig = computed(() => {
95
+ const defaults = {
96
+ title: 'Upload Image',
97
+ subtitle: 'Drag & drop your image here or click button. Supported: JPG, PNG, GIF. Max size: 2MB',
98
+ buttonText: 'Choose Image'
99
+ };
100
+
101
+ if (props.text === true) {
102
+ return defaults;
103
+ } else if (typeof props.text === 'object' && props.text !== null) {
104
+ return {
105
+ title: props.text.title || defaults.title,
106
+ subtitle: props.text.subtitle || defaults.subtitle,
107
+ buttonText: props.text.buttonText || defaults.buttonText
108
+ };
109
+ }
110
+
111
+ return defaults;
112
+ });
113
+
38
114
  watch(props, ({photo}) => {
39
115
  if(photo) imageUrl.value = photo;
40
116
  });
@@ -50,10 +126,19 @@ async function onFileChange(e) {
50
126
  return;
51
127
  }
52
128
 
129
+ // Create preview from file
130
+ const reader = new FileReader();
131
+ reader.onload = (e) => {
132
+ previewUrl.value = e.target.result;
133
+ };
134
+ reader.readAsDataURL(file);
135
+
53
136
  let formData = new FormData();
54
137
  formData.append("file", file);
55
138
 
56
139
  console.log("Sending file:", file.name); // Логируем имя файла перед отправкой
140
+
141
+ loading.value = true;
57
142
 
58
143
  try {
59
144
  const $axios = axios.create({ baseURL: process.env.API_URL, withCredentials: true });
@@ -61,10 +146,14 @@ async function onFileChange(e) {
61
146
  let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData);
62
147
  console.log("Upload response:", response); // Логируем ответ сервера
63
148
  imageUrl.value = response.data[0].filepath;
149
+ previewUrl.value = null; // Clear preview after successful upload
64
150
  emit('update:photo', imageUrl.value);
65
151
  } catch (error) {
66
152
  emit('error', error);
67
153
  console.error("Upload error:", error); // Логируем ошибку
154
+ previewUrl.value = null; // Clear preview on error
155
+ } finally {
156
+ loading.value = false;
68
157
  }
69
158
  }
70
159
 
@@ -77,4 +166,89 @@ function onDrop(e) {
77
166
  }
78
167
  });
79
168
  }
169
+
170
+ function deleteImage() {
171
+ imageUrl.value = null;
172
+ previewUrl.value = null;
173
+ emit('update:photo', null);
174
+ // Reset file input
175
+ if (fileInput.value) {
176
+ fileInput.value.value = '';
177
+ }
178
+ }
80
179
  </script>
180
+
181
+ <style scoped>
182
+ .image-upload-area {
183
+ overflow: hidden;
184
+ transition: all 0.3s ease;
185
+ }
186
+
187
+ .image-upload-area:hover {
188
+ opacity: 0.95;
189
+ }
190
+
191
+ /* Hover controls */
192
+ .hover-controls {
193
+ top: 0;
194
+ left: 0;
195
+ background: rgba(0, 0, 0, 0.7);
196
+ opacity: 0;
197
+ transition: opacity 0.3s ease;
198
+ pointer-events: none;
199
+ }
200
+
201
+ .image-upload-area:hover .hover-controls {
202
+ opacity: 1;
203
+ pointer-events: all;
204
+ }
205
+
206
+ .hover-upload-icon {
207
+ animation: pulse 1.5s infinite;
208
+ }
209
+
210
+ .hover-button {
211
+ transition: transform 0.2s ease, background-color 0.2s ease;
212
+ }
213
+
214
+ .hover-button:hover {
215
+ transform: scale(1.1);
216
+ }
217
+
218
+ .hover-button:active {
219
+ transform: scale(0.95);
220
+ }
221
+
222
+ /* Loading overlay */
223
+ .loading-overlay {
224
+ top: 0;
225
+ left: 0;
226
+ background: rgba(255, 255, 255, 0.9);
227
+ z-index: 10;
228
+ }
229
+
230
+ /* Animations */
231
+ @keyframes pulse {
232
+ 0% {
233
+ transform: scale(1);
234
+ opacity: 1;
235
+ }
236
+ 50% {
237
+ transform: scale(1.05);
238
+ opacity: 0.8;
239
+ }
240
+ 100% {
241
+ transform: scale(1);
242
+ opacity: 1;
243
+ }
244
+ }
245
+
246
+ /* Upload icon in empty state */
247
+ .upload-icon {
248
+ transition: transform 0.3s ease;
249
+ }
250
+
251
+ .image-upload-area:hover .upload-icon {
252
+ transform: scale(1.1);
253
+ }
254
+ </style>
@@ -14,7 +14,7 @@
14
14
  :creator="blogpost.creator"
15
15
  :date="blogpost.createdAt"
16
16
  :actions="user && user === blogpost.creator.target._id ? [
17
- { to: { name: 'Edit BlogPost', params: {url: blogpost.url } }, label: 'Edit' }
17
+ { to: `/community/posts/${blogpost.url}/edit`, label: 'Edit' }
18
18
  ]: null"
19
19
  />
20
20
 
@@ -30,12 +30,7 @@
30
30
  :text="blogpost.name || ''"
31
31
  :maxLen="80"
32
32
  class="h3 d-block"
33
- @click="router.push({
34
- name: 'BlogPost',
35
- params: {
36
- url: blogpost.url
37
- }
38
- })"
33
+ @click="router.push(`/community/posts/${blogpost.url}`)"
39
34
  />
40
35
 
41
36
  <div
@@ -1,11 +1,6 @@
1
1
  <template>
2
2
  <footer class="t-semi br-top-dark flex-nowrap flex-nojustify flex">
3
- <router-link :to="{
4
- name: 'BlogPost',
5
- params: {
6
- url: blogpost.url
7
- }
8
- }"
3
+ <router-link :to="`/community/posts/${blogpost.url}`"
9
4
  class="font-second cursor-pointer hover-bg-white pd-l-thin pd-r-thin radius-big">
10
5
  👁️ {{blogpost.views}}
11
6
  </router-link>
@@ -18,13 +13,7 @@
18
13
  👍 {{reactionsCount }}
19
14
  </div>
20
15
  </div>
21
- <router-link :to="{
22
- name: 'BlogPost',
23
- hash: '#comments',
24
- params: {
25
- url: blogpost.url
26
- }
27
- }"
16
+ <router-link :to="`/community/posts/${blogpost.url}#comments`"
28
17
  class="font-second cursor-pointer hover-bg-white pd-l-thin pd-r-thin radius-big">
29
18
  💬 {{ blogpost.numberOfComments }}
30
19
  </router-link>
@@ -130,7 +130,6 @@ import Textarea from '@martyrs/src/modules/constructor/components/elements/Texta
130
130
  import Constructor from '@martyrs/src/modules/constructor/components/sections/Constructor.vue';
131
131
 
132
132
  import Popup from '@martyrs/src/components/Popup/Popup.vue'
133
- import FieldTags from '@martyrs/src/components/FieldTags/FieldTags.vue'
134
133
  import BlockTags from '@martyrs/src/components/FieldTags/BlockTags.vue'
135
134
  import Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'
136
135
  import Field from '@martyrs/src/components/Field/Field.vue'
@@ -1 +1,105 @@
1
- TASK.MD
1
+ # Проблема с отображением лоадера при загрузке модулей
2
+
3
+ ## Описание проблемы
4
+ При переходе на роут, который требует загрузки нового модуля:
5
+ 1. После клика на ссылку UI полностью блокируется
6
+ 2. Начинается загрузка модуля (2-3 секунды)
7
+ 3. Лоадер показывается только ПОСЛЕ загрузки модуля на мгновение
8
+ 4. Затем происходит переход на новый роут
9
+
10
+ **Ожидаемое поведение:** Лоадер должен показываться СРАЗУ после клика, до начала загрузки модулей.
11
+
12
+ ## Технические детали
13
+
14
+ ### Архитектура загрузки модулей
15
+ - **Файл:** `globals.app.js:89-119`
16
+ - Модули загружаются динамически в `router.beforeEach` guard
17
+ - Модули регистрируют роуты через `router.addRoute()` после загрузки
18
+ - После загрузки возвращается `to.fullPath` для повторной навигации
19
+
20
+ ### Условие показа лоадера
21
+ - **Файл:** `Client.vue:16`
22
+ - Условие: `v-if="!page || globals.state.loading"`
23
+ - `page` - ref на текущий компонент страницы
24
+ - `globals.state.loading` - глобальный флаг загрузки
25
+
26
+ ## Корень проблемы
27
+ Vue Router `beforeEach` guard блокирует все обновления DOM до своего завершения:
28
+ - Guards выполняются синхронно и блокируют навигацию
29
+ - Vue не может обновить DOM пока `beforeEach` не завершится
30
+ - Даже установка `globals.state.loading = true` не приводит к рендерингу
31
+
32
+ **Подтверждение из документации Vue Router:**
33
+ > "Guards may be resolved asynchronously, and the navigation is considered pending before all hooks have been resolved"
34
+
35
+ **GitHub issue vuejs/vue #9200:**
36
+ > "Vue.nextTick doesn't seem to cover browser re-render"
37
+
38
+ ## Что пробовали и не сработало
39
+
40
+ ### 1. nextTick после установки loading флага
41
+ ```javascript
42
+ store.globals.state.loading = true;
43
+ await nextTick();
44
+ ```
45
+ **Результат:** Не работает, т.к. nextTick работает с микротасками, которые выполняются ДО отрисовки браузером
46
+
47
+ ### 2. requestAnimationFrame
48
+ ```javascript
49
+ store.globals.state.loading = true;
50
+ await new Promise(resolve => requestAnimationFrame(resolve));
51
+ ```
52
+ **Результат:** Не работает, beforeEach все равно блокирует рендеринг
53
+
54
+ ### 3. setTimeout с return false
55
+ ```javascript
56
+ setTimeout(async () => {
57
+ // загрузка модулей
58
+ router.push(to.fullPath);
59
+ }, 0);
60
+ return false;
61
+ ```
62
+ **Результат:** Приводит к 404, т.к. роуты еще не зарегистрированы
63
+
64
+ ### 4. Watch на route.path в Client.vue
65
+ ```javascript
66
+ watch(() => route.path, () => {
67
+ page.value = null;
68
+ });
69
+ ```
70
+ **Результат:** Не работает, т.к. route.path меняется только ПОСЛЕ завершения beforeEach
71
+
72
+ ### 5. Свой beforeEach в Client.vue
73
+ ```javascript
74
+ router.beforeEach((to, from) => {
75
+ page.value = null;
76
+ });
77
+ ```
78
+ **Результат:** Не работает, все beforeEach выполняются синхронно и блокируют рендеринг
79
+
80
+ ### 6. Создание DOM элемента напрямую
81
+ ```javascript
82
+ const loader = document.createElement('div');
83
+ document.body.appendChild(loader);
84
+ ```
85
+ **Результат:** Работает, но это хак, обходящий Vue реактивность
86
+
87
+ ## Ограничения
88
+ 1. **Нельзя загружать модули после навигации** - модули регистрируют роуты, без них будет 404
89
+ 2. **Нельзя загружать модули вне beforeEach** - нужно гарантировать загрузку ДО навигации
90
+ 3. **return to.fullPath необходим** - для повторной навигации с новыми роутами
91
+
92
+ ## Возможные решения
93
+
94
+ ### 1. Использовать HTML лоадер (не Vue компонент)
95
+ Добавить лоадер прямо в index.html, показывать/скрывать через классы
96
+
97
+ ### 2. Изменить архитектуру загрузки
98
+ - Предзагружать все возможные роуты
99
+ - Использовать другой подход к динамической регистрации
100
+
101
+ ### 3. Использовать Web Workers
102
+ Загружать модули в воркере, но это потребует полного рефакторинга
103
+
104
+ ## Вывод
105
+ Проблема фундаментальная: Vue Router beforeEach блокирует рендеринг, а мы обязаны загружать модули именно там из-за динамической регистрации роутов. Единственное рабочее решение - создавать лоадер в обход Vue (прямой DOM манипуляцией).
@@ -60,6 +60,7 @@ export default {
60
60
  const container = document.createElement('div');
61
61
  document.body.appendChild(container);
62
62
  const vnode = h(AlertDialog, { alertState, handleAction, closeAlert });
63
+ vnode.appContext = app._context;
63
64
  render(vnode, container);
64
65
  }
65
66
  },
@@ -5,6 +5,7 @@
5
5
  <h4 class="my-handle word-break t-truncate w-100 w-max-100 mn-r-auto">{{category.name}}</h4>
6
6
 
7
7
  <router-link
8
+ v-if="access"
8
9
  :to="{
9
10
  name: 'Category Edit',
10
11
  params: {
@@ -27,6 +28,7 @@
27
28
  </router-link>
28
29
 
29
30
  <button
31
+ v-if="access"
30
32
  @click="deleteCategory(category)"
31
33
  class="
32
34
  i-semi
@@ -68,6 +70,10 @@ import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'
68
70
 
69
71
  const props = defineProps({
70
72
  category: Object,
73
+ access: {
74
+ type: Boolean,
75
+ default: false
76
+ }
71
77
  });
72
78
 
73
79
  const emits = defineEmits(['delete']);
@@ -55,6 +55,7 @@
55
55
  >
56
56
  <CardCategory
57
57
  :category="item"
58
+ :access="hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)"
58
59
  @delete="deleteCategory"
59
60
  />
60
61
  </Tree>
@@ -69,10 +70,12 @@
69
70
 
70
71
  import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';
71
72
  import * as auth from '@martyrs/src/modules/auth/views/store/auth.js';
72
- import * as categories from '@martyrs/src/modules/products/store/categories.js';
73
+ import * as categories from '@martyrs/src/modules/products/store/categories.js';
74
+ import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';
73
75
 
74
76
  const route = useRoute();
75
77
  const router = useRouter();
78
+ const { hasAccess } = useGlobalMixins();
76
79
 
77
80
  import Button from "@martyrs/src/components/Button/Button.vue";
78
81
  import Block from '@martyrs/src/components/Block/Block.vue';