@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
@@ -1,4 +1,4 @@
1
- import { resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, toDisplayString, unref, withCtx } from "vue";
1
+ import { resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createBlock, toDisplayString, unref, withCtx, createVNode } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
3
  import _sfc_main$1 from "../../../icons/navigation/IconEdit.vue.js";
4
4
  import _sfc_main$2 from "../../../icons/navigation/IconDelete.vue.js";
@@ -10,7 +10,11 @@ const _hoisted_4 = { class: "my-handle word-break t-truncate w-100 w-max-100 mn-
10
10
  const _sfc_main = {
11
11
  __name: "CardCategory",
12
12
  props: {
13
- category: Object
13
+ category: Object,
14
+ access: {
15
+ type: Boolean,
16
+ default: false
17
+ }
14
18
  },
15
19
  emits: ["delete"],
16
20
  setup(__props, { emit: __emit }) {
@@ -30,7 +34,8 @@ const _sfc_main = {
30
34
  src: (_ctx.FILE_SERVER_URL || "") + __props.category.photo
31
35
  }, null, 8, _hoisted_3)) : createCommentVNode("", true),
32
36
  createElementVNode("h4", _hoisted_4, toDisplayString(__props.category.name), 1),
33
- createVNode(_component_router_link, {
37
+ __props.access ? (openBlock(), createBlock(_component_router_link, {
38
+ key: 1,
34
39
  to: {
35
40
  name: "Category Edit",
36
41
  params: {
@@ -47,8 +52,9 @@ const _sfc_main = {
47
52
  })
48
53
  ]),
49
54
  _: 1
50
- }, 8, ["to"]),
51
- createElementVNode("button", {
55
+ }, 8, ["to"])) : createCommentVNode("", true),
56
+ __props.access ? (openBlock(), createElementBlock("button", {
57
+ key: 2,
52
58
  onClick: _cache[0] || (_cache[0] = ($event) => deleteCategory(__props.category)),
53
59
  class: "i-semi cursor-pointer card-page-actions radius-extra pd-micro bg-second flex-child-default"
54
60
  }, [
@@ -56,7 +62,7 @@ const _sfc_main = {
56
62
  class: "w-100 h-100",
57
63
  fill: "white"
58
64
  })
59
- ])
65
+ ])) : createCommentVNode("", true)
60
66
  ])
61
67
  ]);
62
68
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CardCategory.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle word-break t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n :to=\"{\n name: 'Category Edit', \n params: { \n _id: route.params._id,\n category: category._id\n } \n }\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\" \n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n @click=\"deleteCategory(category)\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAwEA,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CardCategory.vue.js","sources":["../../../../../../../src/modules/products/components/blocks/CardCategory.vue"],"sourcesContent":["<template>\n <div class=\"flex-v-center bg-light pd-small radius-small flex-column flex\">\n <div class=\"w-100 flex-v-center flex-nowrap gap-thin flex\">\n <img v-if=\"category.photo\" class=\"i-big radius-small object-fit-contain bg-white\" :src=\"(FILE_SERVER_URL || '') + category.photo\"/>\n <h4 class=\"my-handle word-break t-truncate w-100 w-max-100 mn-r-auto\">{{category.name}}</h4>\n\n <router-link\n v-if=\"access\"\n :to=\"{\n name: 'Category Edit', \n params: { \n _id: route.params._id,\n category: category._id\n } \n }\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconEdit\n class=\"w-100 h-100\" \n classes=\"fill-white\"\n />\n </router-link>\n\n <button\n v-if=\"access\"\n @click=\"deleteCategory(category)\"\n class=\"\n i-semi\n cursor-pointer \n card-page-actions\n radius-extra pd-micro bg-second\n flex-child-default\n \"\n >\n <IconDelete\n class=\"w-100 h-100\"\n :fill=\"'white'\"\n />\n </button>\n </div>\n\n <!-- <p v-if=\" category.children.length > 0\" class=\"w-100\">Subcategories:</p> -->\n <!-- <CardCategory\n v-for=\"(subcategory,index) in category.children\"\n :key=\"subcategory._id\"\n :category=\"subcategory\" \n class=\"pd-l-small bg-white w-100\"\n /> -->\n\n </div>\n</template>\n\n\n<script setup>\nimport { toRef, onMounted, defineEmits } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nimport CardCategory from './CardCategory.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue'\n\n\nconst props = defineProps({\n category: Object,\n access: {\n type: Boolean,\n default: false\n }\n});\n\nconst emits = defineEmits(['delete']);\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst deleteCategory = (category) => {\n emits('delete', category);\n};\n\n</script>\n\n\n\n<style lang=\"scss\">\n.card-title {\n .card-page-actions {\n display: none;\n }\n\n &:hover {\n .card-page-actions {\n display: block;\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA8EA,UAAM,QAAQ;AAEd,UAAM,QAAQ,SAAQ;AACP,cAAS;AAExB,UAAM,iBAAiB,CAAC,aAAa;AACnC,YAAM,UAAU,QAAQ;AAAA,IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,8 +5,9 @@ const vueRouter = require("vue-router");
5
5
  const globals = require("../../../globals/views/store/globals.cjs");
6
6
  const auth = require("../../../auth/views/store/auth.cjs");
7
7
  const categories = require("../../store/categories.cjs");
8
+ const mixins = require("../../../globals/views/mixins/mixins.cjs");
9
+ ;/* empty css */
8
10
  ;/* empty css */
9
- ;/* empty css */
10
11
  const Block = require("../../../../components/Block/Block.vue.cjs");
11
12
  const Feed = require("../../../../components/Feed/Feed.vue.cjs");
12
13
  const Tree = require("../../../../components/Tree/Tree.vue.cjs");
@@ -19,6 +20,7 @@ const _sfc_main = {
19
20
  setup(__props) {
20
21
  const route = vueRouter.useRoute();
21
22
  const router = vueRouter.useRouter();
23
+ const { hasAccess } = mixins.useGlobalMixins();
22
24
  vue.ref(null);
23
25
  let sort = vue.reactive({
24
26
  param: "order",
@@ -174,8 +176,9 @@ const _sfc_main = {
174
176
  default: vue.withCtx(({ item }) => [
175
177
  vue.createVNode(CardCategory.default, {
176
178
  category: item,
179
+ access: vue.unref(hasAccess)(vue.unref(route).params._id, "products", "edit", auth.state.accesses, auth.state.access.roles),
177
180
  onDelete: deleteCategory
178
- }, null, 8, ["category"])
181
+ }, null, 8, ["category", "access"])
179
182
  ]),
180
183
  _: 1
181
184
  }, 8, ["items", "state"])) : vue.createCommentVNode("", true)
@@ -1 +1 @@
1
- {"version":3,"file":"Categories.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n tree: true\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\"\n :parent-id=\"null\"\n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js'; \n\n const route = useRoute();\n const router = useRouter();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\n })\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для сбора затронутых категорий при drag-n-drop\n function collectAffectedCategories(eventData) {\n const result = {\n movedCategory: null,\n affectedCategories: []\n };\n \n console.log('collectAffectedCategories - eventData:', eventData);\n \n // Проверяем, что это объект от Tree компонента с полной информацией\n if (eventData && eventData.movedItem) {\n // Если категория переместилась между уровнями\n if (eventData.movedItem._id) {\n result.movedCategory = {\n _id: eventData.movedItem._id,\n newParent: eventData.parentId // Используем parentId из события (null для корня)\n };\n }\n \n // Собираем все категории текущего уровня с их новым порядком\n const items = eventData.items || [];\n console.log('Level items:', items);\n \n items.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else if (eventData && eventData._id) {\n // Fallback для старого формата (простой объект категории)\n result.movedCategory = {\n _id: eventData._id,\n newParent: eventData.parent || null\n };\n \n // Пытаемся найти категории того же уровня\n const parentId = eventData.parent;\n const sameLevel = parentId \n ? categories.state.all.find(c => c._id === parentId)?.children || []\n : categories.state.all;\n \n sameLevel.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else {\n // Если нет данных о перемещении, собираем корневые категории\n console.log('No event data, collecting root level categories');\n categories.state.all.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n }\n \n console.log('collectAffectedCategories - result:', result);\n \n return result;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n const data = collectAffectedCategories(event);\n \n // ОДИН КОНСОЛЬ ЛОГ НА ФРОНТЕНДЕ - ЧТО ОТПРАВЛЯЕМ\n console.log('📤 FRONTEND SENDING:', JSON.stringify(data, null, 2));\n await categories.actions.updateOrder(data);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["useRoute","useRouter","ref","reactive","globals.state","IconPlus","auth.state","onUnmounted","onMounted","categories.state","categories.actions"],"mappings":"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"}
1
+ {"version":3,"file":"Categories.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n tree: true\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\"\n :parent-id=\"null\"\n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'; \n\n const route = useRoute();\n const router = useRouter();\n const { hasAccess } = useGlobalMixins();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\n })\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для сбора затронутых категорий при drag-n-drop\n function collectAffectedCategories(eventData) {\n const result = {\n movedCategory: null,\n affectedCategories: []\n };\n \n console.log('collectAffectedCategories - eventData:', eventData);\n \n // Проверяем, что это объект от Tree компонента с полной информацией\n if (eventData && eventData.movedItem) {\n // Если категория переместилась между уровнями\n if (eventData.movedItem._id) {\n result.movedCategory = {\n _id: eventData.movedItem._id,\n newParent: eventData.parentId // Используем parentId из события (null для корня)\n };\n }\n \n // Собираем все категории текущего уровня с их новым порядком\n const items = eventData.items || [];\n console.log('Level items:', items);\n \n items.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else if (eventData && eventData._id) {\n // Fallback для старого формата (простой объект категории)\n result.movedCategory = {\n _id: eventData._id,\n newParent: eventData.parent || null\n };\n \n // Пытаемся найти категории того же уровня\n const parentId = eventData.parent;\n const sameLevel = parentId \n ? categories.state.all.find(c => c._id === parentId)?.children || []\n : categories.state.all;\n \n sameLevel.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else {\n // Если нет данных о перемещении, собираем корневые категории\n console.log('No event data, collecting root level categories');\n categories.state.all.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n }\n \n console.log('collectAffectedCategories - result:', result);\n \n return result;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n const data = collectAffectedCategories(event);\n \n // ОДИН КОНСОЛЬ ЛОГ НА ФРОНТЕНДЕ - ЧТО ОТПРАВЛЯЕМ\n console.log('📤 FRONTEND SENDING:', JSON.stringify(data, null, 2));\n await categories.actions.updateOrder(data);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["useRoute","useRouter","useGlobalMixins","ref","reactive","globals.state","IconPlus","auth.state","onUnmounted","onMounted","categories.state","categories.actions"],"mappings":"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"}
@@ -3,8 +3,9 @@ import { useRoute, useRouter } from "vue-router";
3
3
  import { state as state$1 } from "../../../globals/views/store/globals.js";
4
4
  import { state } from "../../../auth/views/store/auth.js";
5
5
  import { state as state$2, actions } from "../../store/categories.js";
6
+ import { useGlobalMixins } from "../../../globals/views/mixins/mixins.js";
7
+ /* empty css */
6
8
  /* empty css */
7
- /* empty css */
8
9
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
9
10
  import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
10
11
  import _sfc_main$4 from "../../../../components/Tree/Tree.vue.js";
@@ -17,6 +18,7 @@ const _sfc_main = {
17
18
  setup(__props) {
18
19
  const route = useRoute();
19
20
  const router = useRouter();
21
+ const { hasAccess } = useGlobalMixins();
20
22
  ref(null);
21
23
  let sort = reactive({
22
24
  param: "order",
@@ -172,8 +174,9 @@ const _sfc_main = {
172
174
  default: withCtx(({ item }) => [
173
175
  createVNode(_sfc_main$5, {
174
176
  category: item,
177
+ access: unref(hasAccess)(unref(route).params._id, "products", "edit", state.accesses, state.access.roles),
175
178
  onDelete: deleteCategory
176
- }, null, 8, ["category"])
179
+ }, null, 8, ["category", "access"])
177
180
  ]),
178
181
  _: 1
179
182
  }, 8, ["items", "state"])) : createCommentVNode("", true)
@@ -1 +1 @@
1
- {"version":3,"file":"Categories.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n tree: true\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\"\n :parent-id=\"null\"\n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js'; \n\n const route = useRoute();\n const router = useRouter();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\n })\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для сбора затронутых категорий при drag-n-drop\n function collectAffectedCategories(eventData) {\n const result = {\n movedCategory: null,\n affectedCategories: []\n };\n \n console.log('collectAffectedCategories - eventData:', eventData);\n \n // Проверяем, что это объект от Tree компонента с полной информацией\n if (eventData && eventData.movedItem) {\n // Если категория переместилась между уровнями\n if (eventData.movedItem._id) {\n result.movedCategory = {\n _id: eventData.movedItem._id,\n newParent: eventData.parentId // Используем parentId из события (null для корня)\n };\n }\n \n // Собираем все категории текущего уровня с их новым порядком\n const items = eventData.items || [];\n console.log('Level items:', items);\n \n items.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else if (eventData && eventData._id) {\n // Fallback для старого формата (простой объект категории)\n result.movedCategory = {\n _id: eventData._id,\n newParent: eventData.parent || null\n };\n \n // Пытаемся найти категории того же уровня\n const parentId = eventData.parent;\n const sameLevel = parentId \n ? categories.state.all.find(c => c._id === parentId)?.children || []\n : categories.state.all;\n \n sameLevel.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else {\n // Если нет данных о перемещении, собираем корневые категории\n console.log('No event data, collecting root level categories');\n categories.state.all.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n }\n \n console.log('collectAffectedCategories - result:', result);\n \n return result;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n const data = collectAffectedCategories(event);\n \n // ОДИН КОНСОЛЬ ЛОГ НА ФРОНТЕНДЕ - ЧТО ОТПРАВЛЯЕМ\n console.log('📤 FRONTEND SENDING:', JSON.stringify(data, null, 2));\n await categories.actions.updateOrder(data);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["globals.state","IconPlus","auth.state","categories.state","categories.actions"],"mappings":"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"}
1
+ {"version":3,"file":"Categories.vue.js","sources":["../../../../../../../src/modules/products/components/pages/Categories.vue"],"sourcesContent":["<template>\n <div class=\"pd-thin bg-white\">\n <Block v-if=\"!MOBILE_APP\" \n class=\"radius-medium mn-b-thin mobile:flex-wrap flex-nowrap flex-v-center flex\"\n >\n <h2 class=\"mn-r-auto\">\n Categories\n </h2>\n\n <router-link \n :to=\"{\n name: 'Category Add', \n params: { \n _id: $route.params._id\n } \n }\"\n class=\"uppercase t-medium pd-small radius-medium bg-white nav-link\"\n >\n Add New\n </router-link>\n </Block>\n\n <div class=\"rows-1\">\n <Feed\n :search=\"true\"\n :showLoadMore=\"false\"\n :states=\"{\n empty: {\n title: 'No Products Found',\n description: 'Currently, there are no products available.'\n }\n }\"\n :store=\"{\n read: (options) => categories.actions.read(options),\n state: categories.state\n }\"\n :options=\"{\n user: auth.state.user._id,\n tree: true\n }\"\n v-model:sort=\"sort\"\n v-model:items=\"categories.state.all\"\n v-slot=\"{ \n items \n }\"\n class=\"rows-1 gap-thin\"\n >\n <Tree \n v-if=\"items\" \n :items=\"categories.state.all\" \n :state=\"categories.state.all\"\n :parent-id=\"null\"\n @update=\"updateCategoriesOrder\" \n v-slot=\"{ item }\"\n >\n <CardCategory \n :category=\"item\" \n :access=\"hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)\"\n @delete=\"deleteCategory\" \n />\n </Tree>\n </Feed>\n </div>\n </div>\n</template>\n\n<script setup>\n import { onMounted, onUnmounted, computed, ref,reactive } from 'vue';\n import { useRoute, useRouter } from 'vue-router';\n\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n import { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js'; \n\n const route = useRoute();\n const router = useRouter();\n const { hasAccess } = useGlobalMixins();\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Block from '@martyrs/src/components/Block/Block.vue';\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n import Tree from \"@martyrs/src/components/Tree/Tree.vue\";\n \n import CardCategory from '@martyrs/src/modules/products/components/blocks/CardCategory.vue';\n\n import IconPlus from '@martyrs/src/modules/icons/navigation/IconPlus.vue'\n\n let search = ref(null)\n\n let sort = reactive({\n param: 'order',\n order: 'asc',\n options: [{\n label: 'Order',\n value: 'order'\n },{\n label: 'Name',\n value: 'name'\n },{\n label: 'Date',\n value: 'createdAt'\n }]\n })\n\n globals.state.navigation_bar.actions = [{\n component: IconPlus,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => route.params._id ? router.push({ name: 'Category Add', params: { _id: route.params._id} }) : router.push({ name: 'Category Add' })\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n onMounted(async () => {\n \n });\n\n // Функция для сбора затронутых категорий при drag-n-drop\n function collectAffectedCategories(eventData) {\n const result = {\n movedCategory: null,\n affectedCategories: []\n };\n \n console.log('collectAffectedCategories - eventData:', eventData);\n \n // Проверяем, что это объект от Tree компонента с полной информацией\n if (eventData && eventData.movedItem) {\n // Если категория переместилась между уровнями\n if (eventData.movedItem._id) {\n result.movedCategory = {\n _id: eventData.movedItem._id,\n newParent: eventData.parentId // Используем parentId из события (null для корня)\n };\n }\n \n // Собираем все категории текущего уровня с их новым порядком\n const items = eventData.items || [];\n console.log('Level items:', items);\n \n items.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else if (eventData && eventData._id) {\n // Fallback для старого формата (простой объект категории)\n result.movedCategory = {\n _id: eventData._id,\n newParent: eventData.parent || null\n };\n \n // Пытаемся найти категории того же уровня\n const parentId = eventData.parent;\n const sameLevel = parentId \n ? categories.state.all.find(c => c._id === parentId)?.children || []\n : categories.state.all;\n \n sameLevel.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n } else {\n // Если нет данных о перемещении, собираем корневые категории\n console.log('No event data, collecting root level categories');\n categories.state.all.forEach((item, index) => {\n result.affectedCategories.push({\n _id: item._id,\n order: index\n });\n });\n }\n \n console.log('collectAffectedCategories - result:', result);\n \n return result;\n }\n\n // Функция для обновления порядка категорий\n async function updateCategoriesOrder(event) {\n console.log('updateCategoriesOrder called with event:', event);\n \n try {\n const data = collectAffectedCategories(event);\n \n // ОДИН КОНСОЛЬ ЛОГ НА ФРОНТЕНДЕ - ЧТО ОТПРАВЛЯЕМ\n console.log('📤 FRONTEND SENDING:', JSON.stringify(data, null, 2));\n await categories.actions.updateOrder(data);\n console.log('Categories order updated successfully');\n } catch (error) {\n console.error('Error updating categories order:', error);\n throw error;\n }\n }\n\n async function deleteCategory(category) {\n // Запрашиваем подтверждение у пользователя\n const isConfirmed = confirm(`Are you sure you want to delete the category \"${category.name}\"?`);\n \n // Если пользователь подтвердил удаление, продолжаем процесс\n if (isConfirmed) {\n await categories.actions.delete(category._id);\n }\n }\n</script>\n\n<style lang=\"scss\">\n</style>"],"names":["globals.state","IconPlus","auth.state","categories.state","categories.actions"],"mappings":"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"}
@@ -3,11 +3,11 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const vue = require("vue");
4
4
  const vueRouter = require("vue-router");
5
5
  const IconDelete = require("../../../icons/navigation/IconDelete.vue.cjs");
6
- const Button = require("../../../../components/Button/Button.vue.cjs");
6
+ const Button = require("../../../../components/Button/Button.vue2.cjs");
7
7
  const Select = require("../../../../components/Select/Select.vue.cjs");
8
- const UploadImage = require("../../../../components/UploadImage/UploadImage.vue.cjs");
8
+ const UploadImage = require("../../../../components/UploadImage/UploadImage.vue2.cjs");
9
9
  const Field = require("../../../../components/Field/Field.vue.cjs");
10
- const FieldTags = require("../../../../components/FieldTags/FieldTags.vue.cjs");
10
+ const FieldTags = require("../../../../components/FieldTags/FieldTags.vue2.cjs");
11
11
  ;/* empty css */
12
12
  ;/* empty css */
13
13
  ;/* empty css */
@@ -15,7 +15,7 @@ const FieldTags = require("../../../../components/FieldTags/FieldTags.vue.cjs");
15
15
  ;/* empty css */
16
16
  const IconCheckmark = require("../../../icons/navigation/IconCheckmark.vue.cjs");
17
17
  ;/* empty css */
18
- ;/* empty css */
18
+ ;/* empty css */
19
19
  ;/* empty css */
20
20
  const Block = require("../../../../components/Block/Block.vue.cjs");
21
21
  const globals = require("../../../globals/views/store/globals.cjs");
@@ -27,7 +27,7 @@ const _hoisted_1 = {
27
27
  class: "rows-auto pd-thin bg-white for-transition w-100"
28
28
  };
29
29
  const _hoisted_2 = { class: "mn-r-auto" };
30
- const _hoisted_3 = { class: "cols-auto-1fr mn-b-thin w-100" };
30
+ const _hoisted_3 = { class: "w-100 mn-b-thin bg-white radius-small pd-medium cols-1" };
31
31
  const _hoisted_4 = { class: "mn-b-thin w-100 flex-nowrap gap-thin flex" };
32
32
  const _hoisted_5 = ["onClick"];
33
33
  const _hoisted_6 = ["onClick"];
@@ -138,59 +138,64 @@ const _sfc_main = {
138
138
  class: "mn-b-thin"
139
139
  }, {
140
140
  default: vue.withCtx(() => [
141
+ vue.createVNode(Select.default, {
142
+ select: categories.state.current.status,
143
+ "onUpdate:select": _cache[0] || (_cache[0] = ($event) => categories.state.current.status = $event),
144
+ label: "Status",
145
+ options: [
146
+ "draft",
147
+ "internal",
148
+ "published",
149
+ "removed"
150
+ ],
151
+ placeholder: "Select category",
152
+ class: "pos-relative mn-b-thin w-100 bg-white radius-small pd-medium"
153
+ }, null, 8, ["select"]),
154
+ vue.createVNode(Field.default, {
155
+ field: categories.state.current.name,
156
+ "onUpdate:field": _cache[1] || (_cache[1] = ($event) => categories.state.current.name = $event),
157
+ label: "Name",
158
+ placeholder: "Enter category name",
159
+ class: "w-100 mn-b-thin bg-white radius-small pd-medium"
160
+ }, null, 8, ["field"]),
141
161
  vue.createElementVNode("div", _hoisted_3, [
142
162
  vue.createVNode(UploadImage.default, {
143
163
  photo: categories.state.current.photo,
144
- "onUpdate:photo": _cache[0] || (_cache[0] = ($event) => categories.state.current.photo = $event),
164
+ "onUpdate:photo": _cache[2] || (_cache[2] = ($event) => categories.state.current.photo = $event),
145
165
  uploadPath: "categories",
146
- class: "aspect-1x1 h-100 o-hidden mn-r-small radius-extra"
147
- }, null, 8, ["photo"]),
148
- vue.createVNode(Field.default, {
149
- field: categories.state.current.name,
150
- "onUpdate:field": _cache[1] || (_cache[1] = ($event) => categories.state.current.name = $event),
151
- label: "Name",
152
- placeholder: "Enter category name",
153
- class: "w-100 bg-white radius-small pd-medium"
154
- }, null, 8, ["field"])
166
+ text: {
167
+ title: "Upload category image",
168
+ subtitle: "Supported: JPG, PNG, GIF. Max size: 5MB",
169
+ buttonText: "Select Image"
170
+ },
171
+ class: "pos-relative"
172
+ }, null, 8, ["photo"])
155
173
  ]),
174
+ vue.unref(route).params.category ? (vue.openBlock(), vue.createBlock(Field.default, {
175
+ key: 0,
176
+ field: categories.state.current.url,
177
+ "onUpdate:field": _cache[3] || (_cache[3] = ($event) => categories.state.current.url = $event),
178
+ label: "URL Path",
179
+ disabled: true,
180
+ class: "w-100 bg-white radius-small pd-medium mn-b-thin"
181
+ }, null, 8, ["field"])) : vue.createCommentVNode("", true),
156
182
  vue.createElementVNode("div", _hoisted_4, [
157
183
  vue.createVNode(Field.default, {
158
184
  field: categories.state.current.order,
159
- "onUpdate:field": _cache[2] || (_cache[2] = ($event) => categories.state.current.order = $event),
185
+ "onUpdate:field": _cache[4] || (_cache[4] = ($event) => categories.state.current.order = $event),
160
186
  label: "Order",
161
187
  disabled: true,
162
188
  class: "w-40 bg-white radius-small pd-medium"
163
189
  }, null, 8, ["field"]),
164
190
  vue.createVNode(Field.default, {
165
191
  field: categories.state.current.slug,
166
- "onUpdate:field": _cache[3] || (_cache[3] = ($event) => categories.state.current.slug = $event),
192
+ "onUpdate:field": _cache[5] || (_cache[5] = ($event) => categories.state.current.slug = $event),
167
193
  label: "Slug",
168
194
  placeholder: "Enter category slug",
169
195
  disabled: vue.unref(route).params.category ? true : false,
170
196
  class: "w-100 bg-white radius-small pd-medium"
171
197
  }, null, 8, ["field", "disabled"])
172
198
  ]),
173
- vue.unref(route).params.category ? (vue.openBlock(), vue.createBlock(Field.default, {
174
- key: 0,
175
- field: categories.state.current.url,
176
- "onUpdate:field": _cache[4] || (_cache[4] = ($event) => categories.state.current.url = $event),
177
- label: "URL Path",
178
- disabled: true,
179
- class: "w-100 bg-white radius-small pd-medium mn-b-thin"
180
- }, null, 8, ["field"])) : vue.createCommentVNode("", true),
181
- vue.createVNode(Select.default, {
182
- select: categories.state.current.status,
183
- "onUpdate:select": _cache[5] || (_cache[5] = ($event) => categories.state.current.status = $event),
184
- label: "Status",
185
- options: [
186
- "draft",
187
- "internal",
188
- "published",
189
- "removed"
190
- ],
191
- placeholder: "Select category",
192
- class: "pos-relative w-100 bg-white radius-small pd-medium"
193
- }, null, 8, ["select"]),
194
199
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(categories.state.current.translations, (item, index) => {
195
200
  return vue.openBlock(), vue.createElementBlock("div", {
196
201
  class: "gap-thin mn-b-thin flex-nowrap flex",
@@ -240,11 +245,14 @@ const _sfc_main = {
240
245
  class: "w-100 bg-white radius-small pd-medium"
241
246
  }, null, 8, ["field", "onUpdate:field"]),
242
247
  vue.createVNode(FieldTags.default, {
243
- tags: item.options,
244
- "onUpdate:tags": ($event) => item.options = $event,
248
+ modelValue: item.options,
249
+ "onUpdate:modelValue": ($event) => item.options = $event,
245
250
  placeholder: "Add filter options",
251
+ separators: [",", ";"],
252
+ "add-on-key": [13, ",", ";"],
253
+ "max-tags": 20,
246
254
  class: "w-100 bg-white radius-small pd-medium"
247
- }, null, 8, ["tags", "onUpdate:tags"]),
255
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
248
256
  vue.createElementVNode("div", {
249
257
  onClick: () => categories.state.current.filters.splice(index, 1),
250
258
  class: "radius-small pd-small flex-center flex aspect-1x1 bg-red"
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryEdit.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/CategoryEdit.vue"],"sourcesContent":["<template>\n <div v-if=\"!isLoading\" class=\"rows-auto pd-thin bg-white for-transition w-100\">\n <Block v-if=\"!MOBILE_APP\" class=\"radius-medium mn-b-thin flex-nowrap flex-v-center flex\">\n <h1 class=\"mn-r-auto\">\n {{route.params.category ? 'Edit Category' : 'Add Category'}}\n </h1>\n\n <Button \n :submit=\"onSubmit\"\n class=\"pd-small radius-medium bg-main t-black uppercase t-medium\"\n >\n Save Category \n </Button>\n </Block>\n \n <Block \n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n <div class=\"cols-auto-1fr mn-b-thin w-100 \">\n <UploadImage \n v-model:photo=\"categories.state.current.photo\"\n :uploadPath=\"'categories'\"\n class=\"aspect-1x1 h-100 o-hidden mn-r-small radius-extra\" \n />\n <Field\n v-model:field=\"categories.state.current.name\"\n label=\"Name\"\n placeholder=\"Enter category name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n </div>\n\n <div class=\"mn-b-thin w-100 flex-nowrap gap-thin flex\">\n <Field\n v-model:field=\"categories.state.current.order\"\n label=\"Order\"\n :disabled=\"true\"\n class=\"w-40 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"categories.state.current.slug\"\n label=\"Slug\"\n placeholder=\"Enter category slug\"\n :disabled=\"route.params.category ? true : false\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n </div>\n \n <Field\n v-if=\"route.params.category\"\n v-model:field=\"categories.state.current.url\"\n label=\"URL Path\"\n :disabled=\"true\"\n class=\"w-100 bg-white radius-small pd-medium mn-b-thin\"\n />\n\n <Select \n v-model:select=\"categories.state.current.status\"\n label=\"Status\"\n :options=\"[\n 'draft', \n 'internal',\n 'published',\n 'removed'\n ]\"\n placeholder=\"Select category\"\n class=\"pos-relative w-100 bg-white radius-small pd-medium\"\n />\n\n <!-- <div class=\"flex-v-center flex-nowrap flex\">\n <h4 class=\"mn-r-thin t-medium\">Localization</h4>\n \n <button \n @click=\"() => categories.state.current.translations.push({locale: '', text: ''})\" \n class=\"i-small pd-thin button-delete button\"\n >\n +\n </button>\n </div> -->\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.translations\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.locale\"\n placeholder=\"Locale\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.text\"\n placeholder=\"Text\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.translations.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n\n \n </Block>\n <!-- Filters -->\n <Block\n title=\"Filters\"\n placeholder=\"No filters added yet\"\n :actions=\"[{\n label: '+',\n function: () => categories.state.current.filters.push({name: '', options: []})\n }]\"\n >\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.filters\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Filter name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <FieldTags\n v-model:tags=\"item.options\"\n placeholder=\"Add filter options\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.filters.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div> \n </Block>\n </div>\n \n</template>\n\n<script setup>\n // Import libs\n import { computed, onUnmounted, onMounted, ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n \n import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Select from \"@martyrs/src/components/Select/Select.vue\";\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Field from \"@martyrs/src/components/Field/Field.vue\";\n import FieldTags from \"@martyrs/src/components/FieldTags/FieldTags.vue\";\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import IconCheckmark from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue'\n\n // Import the new store structure\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n const route = useRoute()\n const router = useRouter()\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n\n // Data prefetching\n const isLoading = ref(true)\n onMounted(async () => {\n emits('page-loading');\n if (route.params.category) {\n await categories.actions.read({_id: route.params.category})\n } else {\n categories.actions.clean() // Adjusted based on the new store's method to reset the category state\n }\n\n emits('page-loaded');\n isLoading.value = false\n })\n\n // Accessing state\n const category = computed(() => categories.state.current)\n const routePath = computed(() => route.name)\n\n // Navigation Bar\n globals.state.navigation_bar.actions = [{\n component: IconCheckmark,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => onSubmit()\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n\n\n // Functions\n async function onSubmit() {\n if (route.params.category) {\n\n categories.state.current.creator = {\n type: categories.state.current.creator.type,\n hidden: categories.state.current.creator.hidden,\n target: typeof categories.state.current.creator.target === 'object' \n ? categories.state.current.creator.target._id \n : categories.state.current.creator.target\n }\n\n categories.state.current.owner = {\n type: categories.state.current.owner.type,\n target: typeof categories.state.current.owner.target === 'object' \n ? categories.state.current.owner.target._id \n : categories.state.current.owner.target\n }\n \n // Очищаем filters от tiClasses перед отправкой\n if (categories.state.current.filters) {\n categories.state.current.filters = categories.state.current.filters.map(filter => ({\n ...filter,\n options: filter.options ? filter.options.map(opt => \n typeof opt === 'string' ? opt : opt.text\n ) : []\n }));\n }\n\n await categories.actions.update(categories.state.current)\n\n redirectTo()\n } else {\n\n categories.state.current.creator = {\n type: 'user',\n hidden: false,\n target: auth.state.user._id\n }\n\n categories.state.current.owner = {\n type: route.params._id ? 'organization' : 'platform',\n hidden: false,\n target: route.params._id ? route.params._id : null\n }\n \n // Очищаем filters от tiClasses перед отправкой\n if (categories.state.current.filters) {\n categories.state.current.filters = categories.state.current.filters.map(filter => ({\n ...filter,\n options: filter.options ? filter.options.map(opt => \n typeof opt === 'string' ? opt : opt.text\n ) : []\n }));\n }\n\n await categories.actions.create(categories.state.current)\n redirectTo()\n }\n }\n\n function redirectTo () {\n router.push({\n name: 'Categories', \n params: { \n _id: route.params._id\n } \n })\n }\n</script>\n\n<style lang=\"scss\">\n.container {\n max-width: 100%;\n margin: auto;\n}\n\n.grid {\n \n}\n\n.square {\n aspect-ratio: 1 / 1;\n height: 100%;\n background: #ccc;\n}\n</style>\n"],"names":["useRoute","useRouter","ref","onMounted","categories.actions","computed","categories.state","globals.state","IconCheckmark","auth.state","onUnmounted"],"mappings":"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"}
1
+ {"version":3,"file":"CategoryEdit.vue.cjs","sources":["../../../../../../../src/modules/products/components/pages/CategoryEdit.vue"],"sourcesContent":["<template>\n <div v-if=\"!isLoading\" class=\"rows-auto pd-thin bg-white for-transition w-100\">\n <Block v-if=\"!MOBILE_APP\" class=\"radius-medium mn-b-thin flex-nowrap flex-v-center flex\">\n <h1 class=\"mn-r-auto\">\n {{route.params.category ? 'Edit Category' : 'Add Category'}}\n </h1>\n\n <Button \n :submit=\"onSubmit\"\n class=\"pd-small radius-medium bg-main t-black uppercase t-medium\"\n >\n Save Category \n </Button>\n </Block>\n \n <Block \n title=\"Profile\"\n class=\"mn-b-thin\"\n >\n\n <Select \n v-model:select=\"categories.state.current.status\"\n label=\"Status\"\n :options=\"[\n 'draft', \n 'internal',\n 'published',\n 'removed'\n ]\"\n placeholder=\"Select category\"\n class=\"pos-relative mn-b-thin w-100 bg-white radius-small pd-medium\"\n />\n\n <Field\n v-model:field=\"categories.state.current.name\"\n label=\"Name\"\n placeholder=\"Enter category name\"\n class=\"w-100 mn-b-thin bg-white radius-small pd-medium\"\n /> \n\n <div class=\"w-100 mn-b-thin bg-white radius-small pd-medium cols-1\">\n <UploadImage \n v-model:photo=\"categories.state.current.photo\"\n :uploadPath=\"'categories'\"\n :text=\"{\n title: 'Upload category image',\n subtitle: 'Supported: JPG, PNG, GIF. Max size: 5MB',\n buttonText: 'Select Image'\n }\"\n class=\"pos-relative\" \n />\n </div>\n\n\n <Field\n v-if=\"route.params.category\"\n v-model:field=\"categories.state.current.url\"\n label=\"URL Path\"\n :disabled=\"true\"\n class=\"w-100 bg-white radius-small pd-medium mn-b-thin\"\n />\n \n\n <div class=\"mn-b-thin w-100 flex-nowrap gap-thin flex\">\n <Field\n v-model:field=\"categories.state.current.order\"\n label=\"Order\"\n :disabled=\"true\"\n class=\"w-40 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"categories.state.current.slug\"\n label=\"Slug\"\n placeholder=\"Enter category slug\"\n :disabled=\"route.params.category ? true : false\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n </div>\n \n \n\n <!-- <div class=\"flex-v-center flex-nowrap flex\">\n <h4 class=\"mn-r-thin t-medium\">Localization</h4>\n \n <button \n @click=\"() => categories.state.current.translations.push({locale: '', text: ''})\" \n class=\"i-small pd-thin button-delete button\"\n >\n +\n </button>\n </div> -->\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.translations\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.locale\"\n placeholder=\"Locale\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <Field\n v-model:field=\"item.text\"\n placeholder=\"Text\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.translations.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div>\n\n \n </Block>\n <!-- Filters -->\n <Block\n title=\"Filters\"\n placeholder=\"No filters added yet\"\n :actions=\"[{\n label: '+',\n function: () => categories.state.current.filters.push({name: '', options: []})\n }]\"\n >\n <div \n class=\"gap-thin mn-b-thin flex-nowrap flex\" \n v-for=\"(item, index) in categories.state.current.filters\" \n :key=\"index\"\n > \n <Field\n v-model:field=\"item.name\"\n placeholder=\"Filter name\"\n class=\"w-100 bg-white radius-small pd-medium\"\n /> \n <FieldTags\n v-model=\"item.options\"\n :placeholder=\"'Add filter options'\"\n :separators=\"[',', ';']\"\n :add-on-key=\"[13, ',', ';']\"\n :max-tags=\"20\"\n class=\"w-100 bg-white radius-small pd-medium\"\n />\n <div\n @click=\"() => categories.state.current.filters.splice(index, 1)\" \n class=\"radius-small pd-small flex-center flex aspect-1x1 bg-red\"\n >\n <IconDelete \n class=\"i-medium\"\n />\n </div>\n </div> \n </Block>\n </div>\n \n</template>\n\n<script setup>\n // Import libs\n import { computed, onUnmounted, onMounted, ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n \n import IconDelete from '@martyrs/src/modules/icons/navigation/IconDelete.vue';\n\n import Button from \"@martyrs/src/components/Button/Button.vue\";\n import Select from \"@martyrs/src/components/Select/Select.vue\";\n import UploadImage from '@martyrs/src/components/UploadImage/UploadImage.vue';\n import Field from \"@martyrs/src/components/Field/Field.vue\";\n import FieldTags from \"@martyrs/src/components/FieldTags/FieldTags.vue\";\n import Feed from '@martyrs/src/components/Feed/Feed.vue'\n\n\n import Block from '@martyrs/src/components/Block/Block.vue';\n\n import IconCheckmark from '@martyrs/src/modules/icons/navigation/IconCheckmark.vue'\n\n // Import the new store structure\n import * as globals from '@martyrs/src/modules/globals/views/store/globals.js';\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'; \n import * as categories from '@martyrs/src/modules/products/store/categories.js';\n\n const route = useRoute()\n const router = useRouter()\n\n const emits = defineEmits(['page-loading', 'page-loaded']);\n\n // Data prefetching\n const isLoading = ref(true)\n onMounted(async () => {\n emits('page-loading');\n if (route.params.category) {\n await categories.actions.read({_id: route.params.category})\n } else {\n categories.actions.clean() // Adjusted based on the new store's method to reset the category state\n }\n\n emits('page-loaded');\n isLoading.value = false\n })\n\n // Accessing state\n const category = computed(() => categories.state.current)\n const routePath = computed(() => route.name)\n\n // Navigation Bar\n globals.state.navigation_bar.actions = [{\n component: IconCheckmark,\n props: {\n fill: \"rgb(var(--main))\" \n },\n condition: () => auth.state.user && auth.state.user._id,\n action: () => onSubmit()\n }],\n\n onUnmounted(() => {\n globals.state.navigation_bar.actions = [];\n });\n\n\n\n // Functions\n async function onSubmit() {\n if (route.params.category) {\n\n categories.state.current.creator = {\n type: categories.state.current.creator.type,\n hidden: categories.state.current.creator.hidden,\n target: typeof categories.state.current.creator.target === 'object' \n ? categories.state.current.creator.target._id \n : categories.state.current.creator.target\n }\n\n categories.state.current.owner = {\n type: categories.state.current.owner.type,\n target: typeof categories.state.current.owner.target === 'object' \n ? categories.state.current.owner.target._id \n : categories.state.current.owner.target\n }\n \n // Очищаем filters от tiClasses перед отправкой\n if (categories.state.current.filters) {\n categories.state.current.filters = categories.state.current.filters.map(filter => ({\n ...filter,\n options: filter.options ? filter.options.map(opt => \n typeof opt === 'string' ? opt : opt.text\n ) : []\n }));\n }\n\n await categories.actions.update(categories.state.current)\n\n redirectTo()\n } else {\n\n categories.state.current.creator = {\n type: 'user',\n hidden: false,\n target: auth.state.user._id\n }\n\n categories.state.current.owner = {\n type: route.params._id ? 'organization' : 'platform',\n hidden: false,\n target: route.params._id ? route.params._id : null\n }\n \n // Очищаем filters от tiClasses перед отправкой\n if (categories.state.current.filters) {\n categories.state.current.filters = categories.state.current.filters.map(filter => ({\n ...filter,\n options: filter.options ? filter.options.map(opt => \n typeof opt === 'string' ? opt : opt.text\n ) : []\n }));\n }\n\n await categories.actions.create(categories.state.current)\n redirectTo()\n }\n }\n\n function redirectTo () {\n router.push({\n name: 'Categories', \n params: { \n _id: route.params._id\n } \n })\n }\n</script>\n\n<style lang=\"scss\">\n.container {\n max-width: 100%;\n margin: auto;\n}\n\n.grid {\n \n}\n\n.square {\n aspect-ratio: 1 / 1;\n height: 100%;\n background: #ccc;\n}\n</style>\n"],"names":["useRoute","useRouter","ref","onMounted","categories.actions","computed","categories.state","globals.state","IconCheckmark","auth.state","onUnmounted"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { ref, onMounted, computed, onUnmounted, createElementBlock, createCommentVNode, openBlock, createBlock, createVNode, withCtx, createElementVNode, toDisplayString, unref, createTextVNode, Fragment, renderList } from "vue";
2
2
  import { useRoute, useRouter } from "vue-router";
3
- import _sfc_main$5 from "../../../icons/navigation/IconDelete.vue.js";
4
- import _sfc_main$3 from "../../../../components/Button/Button.vue.js";
3
+ import _sfc_main$4 from "../../../icons/navigation/IconDelete.vue.js";
4
+ import _sfc_main$3 from "../../../../components/Button/Button.vue2.js";
5
5
  import Select from "../../../../components/Select/Select.vue.js";
6
- import _sfc_main$4 from "../../../../components/UploadImage/UploadImage.vue.js";
6
+ import UploadImage from "../../../../components/UploadImage/UploadImage.vue2.js";
7
7
  import Field from "../../../../components/Field/Field.vue.js";
8
- import _sfc_main$6 from "../../../../components/FieldTags/FieldTags.vue.js";
8
+ import FieldTags from "../../../../components/FieldTags/FieldTags.vue2.js";
9
9
  /* empty css */
10
10
  /* empty css */
11
11
  /* empty css */
@@ -13,7 +13,7 @@ import _sfc_main$6 from "../../../../components/FieldTags/FieldTags.vue.js";
13
13
  /* empty css */
14
14
  import _sfc_main$1 from "../../../icons/navigation/IconCheckmark.vue.js";
15
15
  /* empty css */
16
- /* empty css */
16
+ /* empty css */
17
17
  /* empty css */
18
18
  import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
19
19
  import { state as state$2 } from "../../../globals/views/store/globals.js";
@@ -25,7 +25,7 @@ const _hoisted_1 = {
25
25
  class: "rows-auto pd-thin bg-white for-transition w-100"
26
26
  };
27
27
  const _hoisted_2 = { class: "mn-r-auto" };
28
- const _hoisted_3 = { class: "cols-auto-1fr mn-b-thin w-100" };
28
+ const _hoisted_3 = { class: "w-100 mn-b-thin bg-white radius-small pd-medium cols-1" };
29
29
  const _hoisted_4 = { class: "mn-b-thin w-100 flex-nowrap gap-thin flex" };
30
30
  const _hoisted_5 = ["onClick"];
31
31
  const _hoisted_6 = ["onClick"];
@@ -136,59 +136,64 @@ const _sfc_main = {
136
136
  class: "mn-b-thin"
137
137
  }, {
138
138
  default: withCtx(() => [
139
+ createVNode(Select, {
140
+ select: state.current.status,
141
+ "onUpdate:select": _cache[0] || (_cache[0] = ($event) => state.current.status = $event),
142
+ label: "Status",
143
+ options: [
144
+ "draft",
145
+ "internal",
146
+ "published",
147
+ "removed"
148
+ ],
149
+ placeholder: "Select category",
150
+ class: "pos-relative mn-b-thin w-100 bg-white radius-small pd-medium"
151
+ }, null, 8, ["select"]),
152
+ createVNode(Field, {
153
+ field: state.current.name,
154
+ "onUpdate:field": _cache[1] || (_cache[1] = ($event) => state.current.name = $event),
155
+ label: "Name",
156
+ placeholder: "Enter category name",
157
+ class: "w-100 mn-b-thin bg-white radius-small pd-medium"
158
+ }, null, 8, ["field"]),
139
159
  createElementVNode("div", _hoisted_3, [
140
- createVNode(_sfc_main$4, {
160
+ createVNode(UploadImage, {
141
161
  photo: state.current.photo,
142
- "onUpdate:photo": _cache[0] || (_cache[0] = ($event) => state.current.photo = $event),
162
+ "onUpdate:photo": _cache[2] || (_cache[2] = ($event) => state.current.photo = $event),
143
163
  uploadPath: "categories",
144
- class: "aspect-1x1 h-100 o-hidden mn-r-small radius-extra"
145
- }, null, 8, ["photo"]),
146
- createVNode(Field, {
147
- field: state.current.name,
148
- "onUpdate:field": _cache[1] || (_cache[1] = ($event) => state.current.name = $event),
149
- label: "Name",
150
- placeholder: "Enter category name",
151
- class: "w-100 bg-white radius-small pd-medium"
152
- }, null, 8, ["field"])
164
+ text: {
165
+ title: "Upload category image",
166
+ subtitle: "Supported: JPG, PNG, GIF. Max size: 5MB",
167
+ buttonText: "Select Image"
168
+ },
169
+ class: "pos-relative"
170
+ }, null, 8, ["photo"])
153
171
  ]),
172
+ unref(route).params.category ? (openBlock(), createBlock(Field, {
173
+ key: 0,
174
+ field: state.current.url,
175
+ "onUpdate:field": _cache[3] || (_cache[3] = ($event) => state.current.url = $event),
176
+ label: "URL Path",
177
+ disabled: true,
178
+ class: "w-100 bg-white radius-small pd-medium mn-b-thin"
179
+ }, null, 8, ["field"])) : createCommentVNode("", true),
154
180
  createElementVNode("div", _hoisted_4, [
155
181
  createVNode(Field, {
156
182
  field: state.current.order,
157
- "onUpdate:field": _cache[2] || (_cache[2] = ($event) => state.current.order = $event),
183
+ "onUpdate:field": _cache[4] || (_cache[4] = ($event) => state.current.order = $event),
158
184
  label: "Order",
159
185
  disabled: true,
160
186
  class: "w-40 bg-white radius-small pd-medium"
161
187
  }, null, 8, ["field"]),
162
188
  createVNode(Field, {
163
189
  field: state.current.slug,
164
- "onUpdate:field": _cache[3] || (_cache[3] = ($event) => state.current.slug = $event),
190
+ "onUpdate:field": _cache[5] || (_cache[5] = ($event) => state.current.slug = $event),
165
191
  label: "Slug",
166
192
  placeholder: "Enter category slug",
167
193
  disabled: unref(route).params.category ? true : false,
168
194
  class: "w-100 bg-white radius-small pd-medium"
169
195
  }, null, 8, ["field", "disabled"])
170
196
  ]),
171
- unref(route).params.category ? (openBlock(), createBlock(Field, {
172
- key: 0,
173
- field: state.current.url,
174
- "onUpdate:field": _cache[4] || (_cache[4] = ($event) => state.current.url = $event),
175
- label: "URL Path",
176
- disabled: true,
177
- class: "w-100 bg-white radius-small pd-medium mn-b-thin"
178
- }, null, 8, ["field"])) : createCommentVNode("", true),
179
- createVNode(Select, {
180
- select: state.current.status,
181
- "onUpdate:select": _cache[5] || (_cache[5] = ($event) => state.current.status = $event),
182
- label: "Status",
183
- options: [
184
- "draft",
185
- "internal",
186
- "published",
187
- "removed"
188
- ],
189
- placeholder: "Select category",
190
- class: "pos-relative w-100 bg-white radius-small pd-medium"
191
- }, null, 8, ["select"]),
192
197
  (openBlock(true), createElementBlock(Fragment, null, renderList(state.current.translations, (item, index) => {
193
198
  return openBlock(), createElementBlock("div", {
194
199
  class: "gap-thin mn-b-thin flex-nowrap flex",
@@ -210,7 +215,7 @@ const _sfc_main = {
210
215
  onClick: () => state.current.translations.splice(index, 1),
211
216
  class: "radius-small pd-small flex-center flex aspect-1x1 bg-red"
212
217
  }, [
213
- createVNode(_sfc_main$5, { class: "i-medium" })
218
+ createVNode(_sfc_main$4, { class: "i-medium" })
214
219
  ], 8, _hoisted_5)
215
220
  ]);
216
221
  }), 128))
@@ -237,17 +242,20 @@ const _sfc_main = {
237
242
  placeholder: "Filter name",
238
243
  class: "w-100 bg-white radius-small pd-medium"
239
244
  }, null, 8, ["field", "onUpdate:field"]),
240
- createVNode(_sfc_main$6, {
241
- tags: item.options,
242
- "onUpdate:tags": ($event) => item.options = $event,
245
+ createVNode(FieldTags, {
246
+ modelValue: item.options,
247
+ "onUpdate:modelValue": ($event) => item.options = $event,
243
248
  placeholder: "Add filter options",
249
+ separators: [",", ";"],
250
+ "add-on-key": [13, ",", ";"],
251
+ "max-tags": 20,
244
252
  class: "w-100 bg-white radius-small pd-medium"
245
- }, null, 8, ["tags", "onUpdate:tags"]),
253
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
246
254
  createElementVNode("div", {
247
255
  onClick: () => state.current.filters.splice(index, 1),
248
256
  class: "radius-small pd-small flex-center flex aspect-1x1 bg-red"
249
257
  }, [
250
- createVNode(_sfc_main$5, { class: "i-medium" })
258
+ createVNode(_sfc_main$4, { class: "i-medium" })
251
259
  ], 8, _hoisted_6)
252
260
  ]);
253
261
  }), 128))