@ozdao/martyrs 0.2.542 → 0.2.544

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 (346) hide show
  1. package/dist/builder.cjs +10 -2
  2. package/dist/builder.js +10 -2
  3. package/dist/{main-Czyu-VcC.cjs → main-8f945Ngn.cjs} +7 -7
  4. package/dist/{main-ByKkD9qa.js → main-d9n_ibdE.js} +2621 -2622
  5. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.cjs → Dropdown.vue.cjs} +2 -2
  6. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js.map → Dropdown.vue.cjs.map} +1 -1
  7. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue2.js → Dropdown.vue.js} +2 -2
  8. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +1 -0
  9. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs +4 -2
  10. package/dist/martyrs/src/components/Feed/Carousel.vue.cjs.map +1 -1
  11. package/dist/martyrs/src/components/Feed/Carousel.vue.js +5 -3
  12. package/dist/martyrs/src/components/Feed/Carousel.vue.js.map +1 -1
  13. package/dist/martyrs/src/components/Feed/{Feed.vue.cjs → Feed.vue2.cjs} +7 -5
  14. package/dist/martyrs/src/components/Feed/Feed.vue2.cjs.map +1 -0
  15. package/dist/martyrs/src/components/Feed/{Feed.vue.js → Feed.vue2.js} +7 -5
  16. package/dist/martyrs/src/components/Feed/Feed.vue2.js.map +1 -0
  17. package/dist/martyrs/src/components/Field/{Field.vue.cjs → Field.vue2.cjs} +2 -2
  18. package/dist/martyrs/src/components/Field/Field.vue2.cjs.map +1 -0
  19. package/dist/martyrs/src/components/Field/{Field.vue.js → Field.vue2.js} +2 -2
  20. package/dist/martyrs/src/components/Field/{Field.vue.cjs.map → Field.vue2.js.map} +1 -1
  21. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +1 -1
  22. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  23. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs → BlockTags.vue2.cjs} +2 -2
  24. package/dist/martyrs/src/components/FieldTags/BlockTags.vue2.cjs.map +1 -0
  25. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.js → BlockTags.vue2.js} +2 -2
  26. package/dist/martyrs/src/components/FieldTags/{BlockTags.vue.cjs.map → BlockTags.vue2.js.map} +1 -1
  27. package/dist/martyrs/src/components/Menu/{Menu.vue2.cjs → Menu.vue.cjs} +2 -2
  28. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +1 -0
  29. package/dist/martyrs/src/components/Menu/{Menu.vue2.js → Menu.vue.js} +2 -2
  30. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +1 -0
  31. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs +3 -1
  32. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -1
  33. package/dist/martyrs/src/components/Tab/Tab.vue2.js +4 -2
  34. package/dist/martyrs/src/components/Tab/Tab.vue2.js.map +1 -1
  35. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.cjs → UploadImage.vue2.cjs} +7 -7
  36. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.cjs.map +1 -0
  37. package/dist/martyrs/src/components/UploadImage/{UploadImage.vue.js → UploadImage.vue2.js} +7 -7
  38. package/dist/martyrs/src/components/UploadImage/UploadImage.vue2.js.map +1 -0
  39. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs +1 -1
  40. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +3 -3
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +1 -1
  54. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +1 -1
  55. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +1 -1
  56. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +1 -1
  57. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  58. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  59. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -1
  60. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -1
  61. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +2 -7
  62. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs.map +1 -1
  63. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +2 -7
  64. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js.map +1 -1
  65. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs +2 -13
  66. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  67. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js +2 -13
  68. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  69. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +1 -1
  70. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  71. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs +1 -1
  72. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js +1 -1
  73. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +3 -3
  74. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +3 -3
  75. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +1 -1
  76. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +1 -1
  77. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.cjs +2 -2
  78. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +2 -2
  79. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
  80. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  81. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +4 -4
  82. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  83. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +2 -2
  84. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  85. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +7 -5
  86. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +7 -5
  88. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +1 -1
  90. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +1 -1
  91. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  93. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js +1 -1
  95. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs +1 -1
  96. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +3 -3
  98. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +3 -3
  99. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs +38 -30
  100. package/dist/martyrs/src/modules/globals/views/classes/globals.app.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js +39 -31
  102. package/dist/martyrs/src/modules/globals/views/classes/globals.app.js.map +1 -1
  103. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +1 -1
  105. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue.js +1 -1
  107. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  108. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  109. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +3 -1
  110. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs.map +1 -1
  111. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +3 -1
  112. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  114. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  115. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +7 -7
  116. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -1
  117. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +8 -8
  118. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -1
  119. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +1 -0
  120. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  122. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
  123. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +21 -1
  124. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  125. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +21 -1
  126. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  127. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.cjs +1 -1
  128. package/dist/martyrs/src/modules/icons/components/IconSearchPopup.vue.js +1 -1
  129. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
  131. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
  133. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.cjs +3 -3
  134. package/dist/martyrs/src/modules/inventory/components/pages/Inventory.vue.js +2 -2
  135. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +3 -3
  136. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +3 -3
  137. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +2 -2
  138. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs.map +1 -1
  139. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +2 -2
  140. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +1 -1
  143. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js +1 -1
  145. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +2 -2
  146. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  147. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +2 -2
  148. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +2 -2
  149. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +2 -2
  150. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  151. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +2 -2
  152. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  153. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +2 -2
  154. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  155. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.cjs +1 -1
  156. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +1 -1
  157. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  158. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  159. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +2 -2
  160. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  161. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +2 -2
  162. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs +7 -5
  164. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.cjs.map +1 -1
  165. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js +8 -6
  166. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderItem.vue.js.map +1 -1
  167. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
  168. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
  169. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
  170. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
  171. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +1 -1
  172. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -1
  173. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +1 -1
  174. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +1 -1
  175. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +1 -1
  176. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +1 -1
  177. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +5 -3
  178. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  179. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +5 -3
  180. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  181. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +4 -4
  182. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  183. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +4 -4
  184. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  185. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +8 -6
  186. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs.map +1 -1
  187. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +8 -6
  188. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs +3 -1
  190. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  191. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js +3 -1
  192. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  193. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +3 -3
  194. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +3 -3
  195. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +7 -7
  196. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +7 -7
  197. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +1 -1
  198. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  199. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +3 -3
  200. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +3 -3
  201. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +1 -1
  202. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  203. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +7 -7
  204. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +7 -7
  205. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +7 -7
  206. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +7 -7
  207. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +6 -6
  208. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +6 -6
  209. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  211. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +3 -3
  212. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  213. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  215. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  216. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  217. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +2 -2
  218. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  219. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  220. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
  221. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +1 -1
  222. package/dist/martyrs/src/modules/organizations/router/organizations.js +1 -1
  223. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  224. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  225. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  226. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  227. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +11 -5
  228. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +12 -6
  230. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +1 -1
  233. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +4 -2
  234. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -1
  235. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +5 -3
  236. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -1
  237. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +4 -2
  238. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  239. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +5 -3
  240. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  241. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.cjs → THC.vue2.cjs} +2 -2
  242. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.cjs.map +1 -0
  243. package/dist/martyrs/src/modules/products/components/elements/{THC.vue.js → THC.vue2.js} +2 -2
  244. package/dist/martyrs/src/modules/products/components/elements/THC.vue2.js.map +1 -0
  245. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +5 -2
  246. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  247. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +5 -2
  248. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +4 -4
  250. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +4 -4
  251. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
  252. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
  253. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +8 -8
  254. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  255. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +8 -8
  256. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  257. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  258. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  259. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  260. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  261. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +1 -1
  262. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +1 -1
  263. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.cjs +1 -1
  264. package/dist/martyrs/src/modules/products/components/sections/EditRecommended.vue.js +1 -1
  265. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +5 -3
  266. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -1
  267. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +5 -3
  268. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -1
  269. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
  270. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  271. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +1 -1
  272. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  273. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  274. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  275. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +2 -2
  276. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +2 -2
  277. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
  278. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  279. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +2 -2
  280. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +2 -2
  281. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  282. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  283. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +1 -1
  284. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +1 -1
  285. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  286. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  287. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.cjs +1 -1
  288. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  289. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
  290. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
  291. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.cjs +1 -1
  292. package/dist/martyrs/src/modules/wallet/views/components/pages/Payments.vue.js +1 -1
  293. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  294. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  295. package/dist/martyrs.cjs.js +1 -1
  296. package/dist/martyrs.css +1 -1
  297. package/dist/martyrs.es.js +1 -1
  298. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.cjs +1 -1
  299. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
  300. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.cjs +1 -1
  301. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
  302. package/dist/style.css +23 -23
  303. package/dist/{web-BklgIiYr.js → web-BkaOiiSn.js} +1 -1
  304. package/dist/{web-CQBm7C6L.cjs → web-CROHFHoW.cjs} +1 -1
  305. package/package.json +1 -1
  306. package/src/builder/modes/ssr.prod.js +2 -0
  307. package/src/builder/modes/ssr.rspack.dev.js +2 -0
  308. package/src/builder/templates/page.js +4 -0
  309. package/src/builder/templates/screen.js +4 -0
  310. package/src/components/Feed/Carousel.vue +3 -0
  311. package/src/components/Feed/Feed.vue +3 -0
  312. package/src/components/Tab/Tab.vue +2 -0
  313. package/src/components/UploadImage/UploadImage.vue +4 -4
  314. package/src/modules/community/components/blocks/CardBlogpost.vue +2 -7
  315. package/src/modules/community/components/blocks/FooterBlogpost.vue +2 -13
  316. package/src/modules/events/components/pages/Event.vue +2 -0
  317. package/src/modules/globals/TASK.MD +105 -1
  318. package/src/modules/globals/views/classes/globals.app.js +76 -48
  319. package/src/modules/globals/views/components/blocks/PopupDateSelector.vue +2 -0
  320. package/src/modules/globals/views/components/sections/Filters.vue +1 -1
  321. package/src/modules/globals/views/plugins/alert.plugin.js +1 -0
  322. package/src/modules/globals/views/utils/vue-app-renderer.js +25 -1
  323. package/src/modules/landing/components/sections/SectionGuide.vue +2 -2
  324. package/src/modules/orders/components/blocks/CardOrderItem.vue +2 -0
  325. package/src/modules/orders/components/blocks/CardOrderVar1.vue +12 -1
  326. package/src/modules/orders/components/pages/OrderBackoffice.vue +2 -0
  327. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +1 -1
  328. package/src/modules/orders/components/pages/Orders.vue +2 -0
  329. package/src/modules/orders/components/partials/ShopCart.vue +2 -0
  330. package/src/modules/products/components/blocks/CardCategory.vue +6 -0
  331. package/src/modules/products/components/blocks/ProductDiscounts.vue +3 -0
  332. package/src/modules/products/components/elements/Price.vue +3 -0
  333. package/src/modules/products/components/pages/Categories.vue +4 -1
  334. package/src/modules/products/components/pages/Products.vue +1 -1
  335. package/src/modules/products/components/sections/EditVariants.vue +2 -0
  336. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +0 -1
  337. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +0 -1
  338. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +0 -1
  339. package/dist/martyrs/src/components/Field/Field.vue.js.map +0 -1
  340. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js.map +0 -1
  341. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +0 -1
  342. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +0 -1
  343. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.cjs.map +0 -1
  344. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js.map +0 -1
  345. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs.map +0 -1
  346. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const clickOutside = require("../FieldPhone/click-outside.cjs");
5
- ;/* empty css */
5
+ ;/* empty css */
6
6
  const _hoisted_1 = {
7
7
  key: 0,
8
8
  class: "w-100 h-100 flex-center flex"
@@ -61,4 +61,4 @@ const _sfc_main = {
61
61
  }
62
62
  };
63
63
  exports.default = _sfc_main;
64
- //# sourceMappingURL=Dropdown.vue2.cjs.map
64
+ //# sourceMappingURL=Dropdown.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.vue2.js","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div class=\"dropdown pos-relative\" v-click-outside=\"clickedOutside\" @click.stop=\"isOpen = !isOpen\">\n <div v-if=\"isComponentLabel\" class=\"w-100 h-100 flex-center flex\">\n <component :is=\"label.component\" v-bind=\"label.props\" :class=\"label.class\"></component>\n </div>\n <div v-else>\n {{ label }}\n </div>\n <transition name=\"TransitionTranslateY\" mode=\"out-in\">\n <div \n v-show=\"isOpen\" \n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\" \n class=\"dropdown-content radius-big\" \n >\n <slot></slot>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport clickOutside from '../FieldPhone/click-outside.js';\n\nlet vClickOutside = clickOutside\n\nconst props = defineProps({\n label: {\n type: [String, Object],\n default: 'Open'\n },\n align: {\n type: String,\n default: 'left'\n }\n})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nfunction clickedOutside () {\n isOpen.value = false\n}\n</script>\n\n<style >\n.dropdown-content {\n display: block;\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n}\n\n/*.dropdown:hover .dropdown-content {\n display: block;\n}*/\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,QAAI,gBAAgB;AAEpB,UAAM,QAAQ;AAWd,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,mBAAmB,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,aAAS,iBAAkB;AACzB,aAAO,QAAQ;AAAA,IACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Dropdown.vue.cjs","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div class=\"dropdown pos-relative\" v-click-outside=\"clickedOutside\" @click.stop=\"isOpen = !isOpen\">\n <div v-if=\"isComponentLabel\" class=\"w-100 h-100 flex-center flex\">\n <component :is=\"label.component\" v-bind=\"label.props\" :class=\"label.class\"></component>\n </div>\n <div v-else>\n {{ label }}\n </div>\n <transition name=\"TransitionTranslateY\" mode=\"out-in\">\n <div \n v-show=\"isOpen\" \n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\" \n class=\"dropdown-content radius-big\" \n >\n <slot></slot>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport clickOutside from '../FieldPhone/click-outside.js';\n\nlet vClickOutside = clickOutside\n\nconst props = defineProps({\n label: {\n type: [String, Object],\n default: 'Open'\n },\n align: {\n type: String,\n default: 'left'\n }\n})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nfunction clickedOutside () {\n isOpen.value = false\n}\n</script>\n\n<style >\n.dropdown-content {\n display: block;\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n}\n\n/*.dropdown:hover .dropdown-content {\n display: block;\n}*/\n</style>\n"],"names":["clickOutside","ref","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAwBA,QAAI,gBAAgBA,aAAAA;AAEpB,UAAM,QAAQ;AAWd,UAAM,SAASC,IAAAA,IAAI,KAAK;AACxB,UAAM,mBAAmBC,IAAAA,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,aAAS,iBAAkB;AACzB,aAAO,QAAQ;AAAA,IACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, withDirectives, createElementBlock, openBlock, withModifiers, createVNode, createBlock, resolveDynamicComponent, mergeProps, toDisplayString, Transition, withCtx, createElementVNode, normalizeStyle, renderSlot, vShow, unref } from "vue";
2
2
  import clickOutside from "../FieldPhone/click-outside.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  const _hoisted_1 = {
5
5
  key: 0,
6
6
  class: "w-100 h-100 flex-center flex"
@@ -61,4 +61,4 @@ const _sfc_main = {
61
61
  export {
62
62
  _sfc_main as default
63
63
  };
64
- //# sourceMappingURL=Dropdown.vue2.js.map
64
+ //# sourceMappingURL=Dropdown.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.vue.js","sources":["../../../../../src/components/Dropdown/Dropdown.vue"],"sourcesContent":["<template>\n <div class=\"dropdown pos-relative\" v-click-outside=\"clickedOutside\" @click.stop=\"isOpen = !isOpen\">\n <div v-if=\"isComponentLabel\" class=\"w-100 h-100 flex-center flex\">\n <component :is=\"label.component\" v-bind=\"label.props\" :class=\"label.class\"></component>\n </div>\n <div v-else>\n {{ label }}\n </div>\n <transition name=\"TransitionTranslateY\" mode=\"out-in\">\n <div \n v-show=\"isOpen\" \n :style=\"{ left: align === 'left' ? '0' : 'auto', right: align === 'right' ? '0' : 'auto' }\" \n class=\"dropdown-content radius-big\" \n >\n <slot></slot>\n </div>\n </transition>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed } from 'vue';\nimport clickOutside from '../FieldPhone/click-outside.js';\n\nlet vClickOutside = clickOutside\n\nconst props = defineProps({\n label: {\n type: [String, Object],\n default: 'Open'\n },\n align: {\n type: String,\n default: 'left'\n }\n})\n\nconst isOpen = ref(false);\nconst isComponentLabel = computed(() => typeof props.label === 'object');\n\nfunction clickedOutside () {\n isOpen.value = false\n}\n</script>\n\n<style >\n.dropdown-content {\n display: block;\n position: absolute;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n}\n\n/*.dropdown:hover .dropdown-content {\n display: block;\n}*/\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,QAAI,gBAAgB;AAEpB,UAAM,QAAQ;AAWd,UAAM,SAAS,IAAI,KAAK;AACxB,UAAM,mBAAmB,SAAS,MAAM,OAAO,MAAM,UAAU,QAAQ;AAEvE,aAAS,iBAAkB;AACzB,aAAO,QAAQ;AAAA,IACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const vueI18n = require("vue-i18n");
5
+ const mixins = require("../../modules/globals/views/mixins/mixins.cjs");
5
6
  const Loader = require("../Loader/Loader.vue2.cjs");
6
7
  const Slider = require("../Slider/Slider.vue.cjs");
7
8
  const EmptyState = require("../EmptyState/EmptyState.vue.cjs");
@@ -31,6 +32,7 @@ const _sfc_main = {
31
32
  user: Object
32
33
  },
33
34
  setup(__props) {
35
+ const { replaceClasses } = mixins.useGlobalMixins();
34
36
  const props = __props;
35
37
  const entities = vue.ref([]);
36
38
  const isLoading = vue.ref(true);
@@ -59,7 +61,7 @@ const _sfc_main = {
59
61
  description: __props.states.empty.description,
60
62
  action: __props.states.empty.action,
61
63
  callback: __props.states.empty.callback,
62
- class: vue.normalizeClass(_ctx.replaceClasses("pd-medium bg-light radius-medium", __props.states.empty.class))
64
+ class: vue.normalizeClass(vue.unref(replaceClasses)("pd-medium bg-light radius-medium", __props.states.empty.class))
63
65
  }, null, 8, ["title", "description", "action", "callback", "class"])) : (vue.openBlock(), vue.createBlock(Slider.default, {
64
66
  key: 2,
65
67
  showDots: __props.showDots
@@ -92,6 +94,6 @@ const _sfc_main = {
92
94
  };
93
95
  }
94
96
  };
95
- const Carousel = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-c1b1de8c"]]);
97
+ const Carousel = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-92c9eb06"]]);
96
98
  exports.default = Carousel;
97
99
  //# sourceMappingURL=Carousel.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.vue.cjs","sources":["../../../../../src/components/Feed/Carousel.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader />\n </div>\n <!-- Empty State -->\n <EmptyState\n v-else-if=\"entities.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n <!-- Slider with loaded entities -->\n <Slider v-else :showDots=\"showDots\">\n <div \n v-for=\"(entity, key) in entities\" \n :key=\"key\"\n class=\"carousel__slide pd-nano\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </Slider>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Slider from '@martyrs/src/components/Slider/Slider.vue'\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nconst props = defineProps({\n showDots: Boolean,\n store: Object,\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n options: Object,\n text: Object,\n user: Object\n})\n\nconst entities = ref([])\nconst isLoading = ref(true)\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entities.value = await props.store.read(props.options)\n isLoading.value = false\n } catch (error) {\n console.error('Error loading entities:', error)\n entities.value = []\n isLoading.value = false\n } finally {\n isLoading.value = false\n }\n})\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":["ref","useI18n","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,UAAM,QAAQ;AAiBd,UAAM,WAAWA,IAAAA,IAAI,CAAA,CAAE;AACvB,UAAM,YAAYA,IAAAA,IAAI,IAAI;AAE1B,UAAM,EAAE,EAAC,IAAKC,gBAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAEDC,QAAAA,UAAU,YAAW;AACnB,UAAI;AACF,iBAAS,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AACrD,kBAAU,QAAQ;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,iBAAS,QAAQ,CAAA;AACjB,kBAAU,QAAQ;AAAA,MACpB,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Carousel.vue.cjs","sources":["../../../../../src/components/Feed/Carousel.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader />\n </div>\n <!-- Empty State -->\n <EmptyState\n v-else-if=\"entities.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n <!-- Slider with loaded entities -->\n <Slider v-else :showDots=\"showDots\">\n <div \n v-for=\"(entity, key) in entities\" \n :key=\"key\"\n class=\"carousel__slide pd-nano\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </Slider>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Slider from '@martyrs/src/components/Slider/Slider.vue'\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst props = defineProps({\n showDots: Boolean,\n store: Object,\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n options: Object,\n text: Object,\n user: Object\n})\n\nconst entities = ref([])\nconst isLoading = ref(true)\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entities.value = await props.store.read(props.options)\n isLoading.value = false\n } catch (error) {\n console.error('Error loading entities:', error)\n entities.value = []\n isLoading.value = false\n } finally {\n isLoading.value = false\n }\n})\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":["useGlobalMixins","ref","useI18n","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,EAAE,eAAc,IAAKA,uBAAe;AAE1C,UAAM,QAAQ;AAiBd,UAAM,WAAWC,IAAAA,IAAI,CAAA,CAAE;AACvB,UAAM,YAAYA,IAAAA,IAAI,IAAI;AAE1B,UAAM,EAAE,EAAC,IAAKC,gBAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAEDC,QAAAA,UAAU,YAAW;AACnB,UAAI;AACF,iBAAS,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AACrD,kBAAU,QAAQ;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,iBAAS,QAAQ,CAAA;AACjB,kBAAU,QAAQ;AAAA,MACpB,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
- import { ref, onMounted, createElementBlock, openBlock, createBlock, createVNode, normalizeClass, withCtx, Fragment, renderList, Transition, renderSlot } from "vue";
1
+ import { ref, onMounted, createElementBlock, openBlock, createBlock, createVNode, normalizeClass, unref, withCtx, Fragment, renderList, Transition, renderSlot } from "vue";
2
2
  import { useI18n } from "vue-i18n";
3
+ import { useGlobalMixins } from "../../modules/globals/views/mixins/mixins.js";
3
4
  import Loader from "../Loader/Loader.vue2.js";
4
5
  import _sfc_main$2 from "../Slider/Slider.vue.js";
5
6
  import _sfc_main$1 from "../EmptyState/EmptyState.vue.js";
@@ -29,6 +30,7 @@ const _sfc_main = {
29
30
  user: Object
30
31
  },
31
32
  setup(__props) {
33
+ const { replaceClasses } = useGlobalMixins();
32
34
  const props = __props;
33
35
  const entities = ref([]);
34
36
  const isLoading = ref(true);
@@ -57,7 +59,7 @@ const _sfc_main = {
57
59
  description: __props.states.empty.description,
58
60
  action: __props.states.empty.action,
59
61
  callback: __props.states.empty.callback,
60
- class: normalizeClass(_ctx.replaceClasses("pd-medium bg-light radius-medium", __props.states.empty.class))
62
+ class: normalizeClass(unref(replaceClasses)("pd-medium bg-light radius-medium", __props.states.empty.class))
61
63
  }, null, 8, ["title", "description", "action", "callback", "class"])) : (openBlock(), createBlock(_sfc_main$2, {
62
64
  key: 2,
63
65
  showDots: __props.showDots
@@ -90,7 +92,7 @@ const _sfc_main = {
90
92
  };
91
93
  }
92
94
  };
93
- const Carousel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c1b1de8c"]]);
95
+ const Carousel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-92c9eb06"]]);
94
96
  export {
95
97
  Carousel as default
96
98
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.vue.js","sources":["../../../../../src/components/Feed/Carousel.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader />\n </div>\n <!-- Empty State -->\n <EmptyState\n v-else-if=\"entities.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n <!-- Slider with loaded entities -->\n <Slider v-else :showDots=\"showDots\">\n <div \n v-for=\"(entity, key) in entities\" \n :key=\"key\"\n class=\"carousel__slide pd-nano\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </Slider>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Slider from '@martyrs/src/components/Slider/Slider.vue'\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nconst props = defineProps({\n showDots: Boolean,\n store: Object,\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n options: Object,\n text: Object,\n user: Object\n})\n\nconst entities = ref([])\nconst isLoading = ref(true)\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entities.value = await props.store.read(props.options)\n isLoading.value = false\n } catch (error) {\n console.error('Error loading entities:', error)\n entities.value = []\n isLoading.value = false\n } finally {\n isLoading.value = false\n }\n})\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,UAAM,QAAQ;AAiBd,UAAM,WAAW,IAAI,CAAA,CAAE;AACvB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI;AACF,iBAAS,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AACrD,kBAAU,QAAQ;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,iBAAS,QAAQ,CAAA;AACjB,kBAAU,QAAQ;AAAA,MACpB,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Carousel.vue.js","sources":["../../../../../src/components/Feed/Carousel.vue"],"sourcesContent":["<template>\n <div class=\"pos-relative\">\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"h-20r radius-semi pos-relative w-100 bg-light\">\n <Loader />\n </div>\n <!-- Empty State -->\n <EmptyState\n v-else-if=\"entities.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n <!-- Slider with loaded entities -->\n <Slider v-else :showDots=\"showDots\">\n <div \n v-for=\"(entity, key) in entities\" \n :key=\"key\"\n class=\"carousel__slide pd-nano\"\n >\n <transition name=\"fade\" mode=\"out-in\" appear>\n <slot\n :item=\"entity\"\n :user=\"user\"\n ></slot>\n </transition>\n </div>\n </Slider>\n </div>\n</template>\n\n<script setup>\nimport { ref, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\nimport Loader from '@martyrs/src/components/Loader/Loader.vue'\nimport Slider from '@martyrs/src/components/Slider/Slider.vue'\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst props = defineProps({\n showDots: Boolean,\n store: Object,\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n options: Object,\n text: Object,\n user: Object\n})\n\nconst entities = ref([])\nconst isLoading = ref(true)\n\nconst { t } = useI18n({\n messages: props.text\n})\n\nonMounted(async() => {\n try {\n entities.value = await props.store.read(props.options)\n isLoading.value = false\n } catch (error) {\n console.error('Error loading entities:', error)\n entities.value = []\n isLoading.value = false\n } finally {\n isLoading.value = false\n }\n})\n</script>\n\n<style scoped>\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,EAAE,eAAc,IAAK,gBAAe;AAE1C,UAAM,QAAQ;AAiBd,UAAM,WAAW,IAAI,CAAA,CAAE;AACvB,UAAM,YAAY,IAAI,IAAI;AAE1B,UAAM,EAAE,EAAC,IAAK,QAAQ;AAAA,MACpB,UAAU,MAAM;AAAA,IAClB,CAAC;AAED,cAAU,YAAW;AACnB,UAAI;AACF,iBAAS,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,OAAO;AACrD,kBAAU,QAAQ;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,2BAA2B,KAAK;AAC9C,iBAAS,QAAQ,CAAA;AACjB,kBAAU,QAAQ;AAAA,MACpB,UAAC;AACC,kBAAU,QAAQ;AAAA,MACpB;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,17 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
+ const mixins = require("../../modules/globals/views/mixins/mixins.cjs");
4
5
  const Loader = require("../Loader/Loader.vue2.cjs");
5
6
  const Skeleton = require("../Skeleton/Skeleton.vue2.cjs");
6
7
  const EmptyState = require("../EmptyState/EmptyState.vue.cjs");
7
- const Dropdown = require("../Dropdown/Dropdown.vue2.cjs");
8
+ const Dropdown = require("../Dropdown/Dropdown.vue.cjs");
8
9
  const Calendar = require("../Calendar/Calendar.vue2.cjs");
9
10
  const BlockSearch = require("../../modules/globals/views/components/blocks/BlockSearch.vue.cjs");
10
11
  const BlockSorting = require("../../modules/globals/views/components/blocks/BlockSorting.vue.cjs");
11
12
  const Filters = require("../../modules/globals/views/components/sections/Filters.vue2.cjs");
12
13
  const ButtonSort = require("../../modules/globals/views/components/elements/ButtonSort.vue.cjs");
13
14
  const ButtonDate = require("../../modules/globals/views/components/elements/ButtonDate.vue.cjs");
14
- ;/* empty css */
15
+ ;/* empty css */
15
16
  const _hoisted_1 = {
16
17
  key: 0,
17
18
  style: { "transform": "scale(1)" },
@@ -113,6 +114,7 @@ const _sfc_main = {
113
114
  }),
114
115
  emits: ["update:search", "update:sort", "update:filter", "update:date", "update:items"],
115
116
  setup(__props) {
117
+ const { replaceClasses } = mixins.useGlobalMixins();
116
118
  const search = vue.useModel(__props, "search");
117
119
  const sort = vue.useModel(__props, "sort");
118
120
  const filter = vue.useModel(__props, "filter");
@@ -360,7 +362,7 @@ const _sfc_main = {
360
362
  horizontal: __props.skeleton.horizontal,
361
363
  loading: __props.skeleton.apply_to_slot,
362
364
  key: "skeleton-" + i,
363
- class: vue.normalizeClass(_ctx.replaceClasses("radius-medium bg-light pd-thin flex-child-default o-hidden d-block", __props.skeleton.class))
365
+ class: vue.normalizeClass(vue.unref(replaceClasses)("radius-medium bg-light pd-thin flex-child-default o-hidden d-block", __props.skeleton.class))
364
366
  }, null, 8, ["structure", "horizontal", "loading", "class"]);
365
367
  }), 128)) : vue.createCommentVNode("", true),
366
368
  vue.unref(isLoading) && __props.skeleton?.hide ? (vue.openBlock(), vue.createBlock(Loader.default, { key: 1 })) : vue.createCommentVNode("", true)
@@ -378,7 +380,7 @@ const _sfc_main = {
378
380
  description: __props.states.empty.description,
379
381
  action: __props.states.empty.action,
380
382
  callback: __props.states.empty.callback,
381
- class: vue.normalizeClass(_ctx.replaceClasses("pd-medium bg-light radius-medium", __props.states.empty.class))
383
+ class: vue.normalizeClass(vue.unref(replaceClasses)("pd-medium bg-light radius-medium", __props.states.empty.class))
382
384
  }, null, 8, ["title", "description", "action", "callback", "class"])) : vue.createCommentVNode("", true)
383
385
  ]),
384
386
  _: 1
@@ -425,4 +427,4 @@ const _sfc_main = {
425
427
  }
426
428
  };
427
429
  exports.default = _sfc_main;
428
- //# sourceMappingURL=Feed.vue.cjs.map
430
+ //# sourceMappingURL=Feed.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Feed.vue2.cjs","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n <div v-if=\"search || date || (sort && !sort.hideButton)\" style=\"transform: scale(1);\" class=\"mn-b-thin pos-relative z-index-2 pos-relative flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n :autofocus=\"search.autofocus\"\n />\n\n <FiltersBar\n v-if=\"filter\"\n v-model=\"filter.selected\"\n :filters=\"filterConfig\"\n :class=\"filter.class || 'mobile-only'\"\n />\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-medium\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-medium w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-medium aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-medium t-white bg-black\"\n />\n </Dropdown> \n\n <!-- Actions -->\n <template\n v-if=\"actions.length\"\n >\n <template v-for=\"action in actions\" :key=\"action.key\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-medium aspect-1x1 h-100\"\n >\n <component\n :is=\"action.component\"\n @click=\"action.handler\"\n class=\"w-1r h-auto\"\n >\n </component>\n\n </div>\n </template>\n </template>\n </div>\n\n <TransitionGroup \n v-if=\"isLoading && !keepSlotVisible\"\n tag=\"ul\" \n name=\"scaleTransition\" \n class=\"pos-relative z-index-1\"\n :class=\"$attrs.class\"\n >\n <Skeleton\n v-if=\"isLoading && !skeleton?.hide\"\n v-for=\"i in currentLimit\" \n :structure=\"skeleton.structure\"\n :horizontal=\"skeleton.horizontal\"\n :loading=\"skeleton.apply_to_slot\"\n :key=\"'skeleton-' + i\"\n :class=\"replaceClasses('radius-medium bg-light pd-thin flex-child-default o-hidden d-block', skeleton.class)\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-else-if=\"itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n v-else-if=\"!keepSlotVisible || !isLoading\"\n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <!-- Slot visible with overlay loader -->\n <div v-else class=\"pos-relative\">\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n \n <!-- Overlay loader -->\n <div \n v-if=\"isLoading && keepSlotVisible\"\n class=\"pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center bg-white-transp-90 z-index-10\"\n >\n <Loader />\n </div>\n </div>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 t-black bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\nimport SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Skeleton from '@martyrs/src/components/Skeleton/Skeleton.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@martyrs/src/modules/globals/views/components/blocks/BlockSorting.vue'\n\nimport FiltersBar from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n\nimport ButtonSort from '@martyrs/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@martyrs/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Внутреннее хранилище для случая, когда v-model:items не передан\nconst internalItems = ref([])\n\n// Элегантное решение через computed\nconst itemsList = computed({\n get: () => items.value ?? internalItems.value,\n set: (val) => {\n if (items.value !== undefined) {\n items.value = val\n } else {\n internalItems.value = val\n }\n }\n})\n\nconst filterConfig = computed(() => {\n if (!filter.value?.options) return []\n \n return filter.value.options.map(opt => ({\n key: opt.value,\n title: opt.title,\n type: 'options',\n options: opt.options || [],\n defaultValue: null\n }))\n})\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n LoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n actions: {\n type: Array,\n default: () => []\n },\n skeleton: {\n type: Object,\n default: () => ({\n hide: false,\n horizontal: false,\n structure: [\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'large' },\n { block: 'button', size: 'small' }\n ]\n }),\n \n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 10, \n skip: 0 ,\n owner: null,\n creator: null,\n customer: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n keepSlotVisible: {\n type: Boolean,\n default: false\n },\n});\n \nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\nlet currentSearch = ref('');\nlet isSearching = ref(false);\n\nlet requestId = 0;\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((value) => {\n isSearching.value = true;\n currentSearch.value = value;\n currentSkip.value = 0;\n currentLimit.value = 10;\n fetchItems();\n}, 500);\n\nfunction updateSearch(search) {\n debouncedSearch(search);\n}\n\nconst removeNullValues = (obj) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value != null)\n );\n};\n\nconst loadMoreItems = async () => {\n if (!hasMoreItems.value || isLoadingExtra.value) {\n return;\n }\n \n isLoadingExtra.value = true;\n \n const currentRequestId = ++requestId;\n\n currentSkip.value += currentLimit.value;\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = [...itemsList.value, ...data];\n \n } catch (error) {\n console.error('Load more error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoadingExtra.value = false;\n }\n }\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n \n const currentRequestId = ++requestId;\n \n if (isSearching.value) {\n itemsList.value = [];\n isSearching.value = false;\n }\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = data;\n \n } catch (error) {\n console.error('Fetch error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n};\n\nwatch(\n [() => props.external, () => date.value, () => ({...sort.value}), () => ({...props.options})],\n ([newExternal, newDate, newSort, newOptions], [oldExternal, oldDate, oldSort, oldOptions]) => {\n if (\n newExternal !== oldExternal ||\n newDate !== oldDate ||\n newSort?.order !== oldSort?.order ||\n newSort?.param !== oldSort?.param ||\n JSON.stringify(newOptions) !== JSON.stringify(oldOptions)\n ) {\n currentSkip.value = 0;\n fetchItems();\n }\n },\n { deep: true }\n);\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore && props.LoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n<style>\n.feed-move,\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["useGlobalMixins","_useModel","ref","computed","search","watch","onMounted","onUnmounted"],"mappings":"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"}
@@ -1,15 +1,16 @@
1
1
  import { mergeModels, useModel, ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, Fragment, createCommentVNode, createBlock, normalizeClass, withCtx, createVNode, renderList, resolveDynamicComponent, unref, TransitionGroup, renderSlot } from "vue";
2
+ import { useGlobalMixins } from "../../modules/globals/views/mixins/mixins.js";
2
3
  import Loader from "../Loader/Loader.vue2.js";
3
4
  import Skeleton from "../Skeleton/Skeleton.vue2.js";
4
5
  import _sfc_main$6 from "../EmptyState/EmptyState.vue.js";
5
- import _sfc_main$2 from "../Dropdown/Dropdown.vue2.js";
6
+ import _sfc_main$2 from "../Dropdown/Dropdown.vue.js";
6
7
  import Calendar from "../Calendar/Calendar.vue2.js";
7
8
  import _sfc_main$1 from "../../modules/globals/views/components/blocks/BlockSearch.vue.js";
8
9
  import _sfc_main$5 from "../../modules/globals/views/components/blocks/BlockSorting.vue.js";
9
10
  import Filters from "../../modules/globals/views/components/sections/Filters.vue2.js";
10
11
  import _sfc_main$4 from "../../modules/globals/views/components/elements/ButtonSort.vue.js";
11
12
  import _sfc_main$3 from "../../modules/globals/views/components/elements/ButtonDate.vue.js";
12
- /* empty css */
13
+ /* empty css */
13
14
  const _hoisted_1 = {
14
15
  key: 0,
15
16
  style: { "transform": "scale(1)" },
@@ -111,6 +112,7 @@ const _sfc_main = {
111
112
  }),
112
113
  emits: ["update:search", "update:sort", "update:filter", "update:date", "update:items"],
113
114
  setup(__props) {
115
+ const { replaceClasses } = useGlobalMixins();
114
116
  const search = useModel(__props, "search");
115
117
  const sort = useModel(__props, "sort");
116
118
  const filter = useModel(__props, "filter");
@@ -358,7 +360,7 @@ const _sfc_main = {
358
360
  horizontal: __props.skeleton.horizontal,
359
361
  loading: __props.skeleton.apply_to_slot,
360
362
  key: "skeleton-" + i,
361
- class: normalizeClass(_ctx.replaceClasses("radius-medium bg-light pd-thin flex-child-default o-hidden d-block", __props.skeleton.class))
363
+ class: normalizeClass(unref(replaceClasses)("radius-medium bg-light pd-thin flex-child-default o-hidden d-block", __props.skeleton.class))
362
364
  }, null, 8, ["structure", "horizontal", "loading", "class"]);
363
365
  }), 128)) : createCommentVNode("", true),
364
366
  unref(isLoading) && __props.skeleton?.hide ? (openBlock(), createBlock(Loader, { key: 1 })) : createCommentVNode("", true)
@@ -376,7 +378,7 @@ const _sfc_main = {
376
378
  description: __props.states.empty.description,
377
379
  action: __props.states.empty.action,
378
380
  callback: __props.states.empty.callback,
379
- class: normalizeClass(_ctx.replaceClasses("pd-medium bg-light radius-medium", __props.states.empty.class))
381
+ class: normalizeClass(unref(replaceClasses)("pd-medium bg-light radius-medium", __props.states.empty.class))
380
382
  }, null, 8, ["title", "description", "action", "callback", "class"])) : createCommentVNode("", true)
381
383
  ]),
382
384
  _: 1
@@ -425,4 +427,4 @@ const _sfc_main = {
425
427
  export {
426
428
  _sfc_main as default
427
429
  };
428
- //# sourceMappingURL=Feed.vue.js.map
430
+ //# sourceMappingURL=Feed.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Feed.vue2.js","sources":["../../../../../src/components/Feed/Feed.vue"],"sourcesContent":["<template>\n <div v-if=\"search || date || (sort && !sort.hideButton)\" style=\"transform: scale(1);\" class=\"mn-b-thin pos-relative z-index-2 pos-relative flex-nowrap flex gap-thin\">\n\n <BlockSearch \n v-if=\"search\"\n :placeholder=\"search.placeholder || 'Search...'\"\n :class=\"search.class || 'bg-light'\"\n @search=\"updateSearch\"\n :autofocus=\"search.autofocus\"\n />\n\n <FiltersBar\n v-if=\"filter\"\n v-model=\"filter.selected\"\n :filters=\"filterConfig\"\n :class=\"filter.class || 'mobile-only'\"\n />\n\n <Dropdown \n v-if=\"date\"\n :label=\"{\n component: ButtonDate,\n props: { date: date }\n }\" \n :class=\"date.class || 'bg-light'\"\n class=\"flex-child flex-child-shrink-0 pd-r-small pd-l-small pd-thin bg-light radius-medium\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <Calendar\n v-model:date=\"date\"\n :locale=\"$i18n.locale\"\n :allowRange=\"true\"\n class=\"radius-medium w-100 o-hidden bg-light\"\n />\n </Dropdown> \n\n <Dropdown \n v-if=\"sort && !sort.hideButton\"\n :label=\"{\n component: ButtonSort,\n props: { order: sort.order },\n class: 'w-1r'\n }\" \n :class=\"sort.class || 'bg-light'\"\n class=\"radius-medium aspect-1x1 h-100\"\n :align=\"search ? 'right' : 'left'\"\n >\n\n <BlockSorting\n v-model:param=\"sort.param\"\n v-model:order=\"sort.order\"\n :options=\"sort.options\"\n class=\"h-100 pd-small radius-medium t-white bg-black\"\n />\n </Dropdown> \n\n <!-- Actions -->\n <template\n v-if=\"actions.length\"\n >\n <template v-for=\"action in actions\" :key=\"action.key\">\n <div \n :class=\"action.class || 'bg-light'\"\n class=\"flex-center flex pd-thin bg-light radius-medium aspect-1x1 h-100\"\n >\n <component\n :is=\"action.component\"\n @click=\"action.handler\"\n class=\"w-1r h-auto\"\n >\n </component>\n\n </div>\n </template>\n </template>\n </div>\n\n <TransitionGroup \n v-if=\"isLoading && !keepSlotVisible\"\n tag=\"ul\" \n name=\"scaleTransition\" \n class=\"pos-relative z-index-1\"\n :class=\"$attrs.class\"\n >\n <Skeleton\n v-if=\"isLoading && !skeleton?.hide\"\n v-for=\"i in currentLimit\" \n :structure=\"skeleton.structure\"\n :horizontal=\"skeleton.horizontal\"\n :loading=\"skeleton.apply_to_slot\"\n :key=\"'skeleton-' + i\"\n :class=\"replaceClasses('radius-medium bg-light pd-thin flex-child-default o-hidden d-block', skeleton.class)\"\n />\n <Loader v-if=\"isLoading && skeleton?.hide\"/>\n </TransitionGroup>\n\n <TransitionGroup \n tag=\"ul\" \n v-else-if=\"itemsList.length < 1\"\n name=\"feed\"\n >\n <EmptyState\n v-if=\"!isLoading && itemsList.length < 1\"\n :title=\"states.empty.title\"\n :description=\"states.empty.description\"\n :action=\"states.empty.action\"\n :callback=\"states.empty.callback\"\n :class=\"replaceClasses('pd-medium bg-light radius-medium', states.empty.class)\"\n />\n </TransitionGroup>\n\n <TransitionGroup \n v-else-if=\"!keepSlotVisible || !isLoading\"\n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n\n <!-- Slot visible with overlay loader -->\n <div v-else class=\"pos-relative\">\n <TransitionGroup \n tag=\"ul\" \n name=\"feed\"\n :class=\"$attrs.class\"\n >\n <slot\n :items=\"itemsList\"\n >\n </slot>\n </TransitionGroup>\n \n <!-- Overlay loader -->\n <div \n v-if=\"isLoading && keepSlotVisible\"\n class=\"pos-absolute pos-t-0 pos-l-0 w-100 h-100 flex-center bg-white-transp-90 z-index-10\"\n >\n <Loader />\n </div>\n </div>\n\n <button\n v-if=\"showLoadMore && hasMoreItems && itemsList.length > 0 && !isLoadingExtra\"\n @click=\"loadMoreItems\"\n class=\"col-w-100 mn-t-thin w-100 t-black bg-main button\"\n >\n Load More\n </button>\n\n <div v-else key=\"sentinel\" ref=\"sentinel\" class=\"sentinel\"></div> \n\n <div\n v-if=\"isLoadingExtra\"\n class=\"col-w-100 w-100 pos-relative\"\n >\n <Loader/>\n </div>\n \n\n</template>\n\n<script setup>\nimport { ref, computed, onMounted, onUnmounted, watch } from 'vue';\nimport { useGlobalMixins } from '@martyrs/src/modules/globals/views/mixins/mixins.js';\n\nimport SkeletonEvent from '@martyrs/src/modules/icons/skeletons/SkeletonEvent.vue'\n\nimport Loader from '@martyrs/src/components/Loader/Loader.vue';\nimport Skeleton from '@martyrs/src/components/Skeleton/Skeleton.vue';\nimport EmptyState from '@martyrs/src/components/EmptyState/EmptyState.vue';\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Calendar from '@martyrs/src/components/Calendar/Calendar.vue'\nimport BottomSheet from '@martyrs/src/components/BottomSheet/BottomSheet.vue';\n\nimport BlockSearch from '@martyrs/src/modules/globals/views/components/blocks/BlockSearch.vue'\nimport BlockSorting from '@martyrs/src/modules/globals/views/components/blocks/BlockSorting.vue'\n\nimport FiltersBar from '@martyrs/src/modules/globals/views/components/sections/Filters.vue'\n\nimport ButtonSort from '@martyrs/src/modules/globals/views/components/elements/ButtonSort.vue'\nimport ButtonDate from '@martyrs/src/modules/globals/views/components/elements/ButtonDate.vue'\n\nimport IconFilter from '@martyrs/src/modules/icons/navigation/IconFilter.vue'\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\n\nconst { replaceClasses } = useGlobalMixins();\n\nconst search = defineModel('search')\nconst sort = defineModel('sort')\nconst filter = defineModel('filter')\nconst date = defineModel('date')\nconst items = defineModel('items')\n\n// Внутреннее хранилище для случая, когда v-model:items не передан\nconst internalItems = ref([])\n\n// Элегантное решение через computed\nconst itemsList = computed({\n get: () => items.value ?? internalItems.value,\n set: (val) => {\n if (items.value !== undefined) {\n items.value = val\n } else {\n internalItems.value = val\n }\n }\n})\n\nconst filterConfig = computed(() => {\n if (!filter.value?.options) return []\n \n return filter.value.options.map(opt => ({\n key: opt.value,\n title: opt.title,\n type: 'options',\n options: opt.options || [],\n defaultValue: null\n }))\n})\n\n// Пропсы\nconst props = defineProps({\n showLoadMore: {\n type: Boolean,\n default: true\n },\n LoadMore: {\n type: Boolean,\n default: true\n },\n search: {\n type: [Boolean, Object],\n default: false\n },\n states: {\n type: Object,\n default: () => ({\n empty: {\n title: 'Nothing found',\n description: 'Sorry, nothing found',\n },\n }),\n },\n actions: {\n type: Array,\n default: () => []\n },\n skeleton: {\n type: Object,\n default: () => ({\n hide: false,\n horizontal: false,\n structure: [\n { block: 'text', size: 'medium' },\n { block: 'text', size: 'large' },\n { block: 'button', size: 'small' }\n ]\n }),\n \n },\n store: {\n type: Object,\n default: () => ({\n read: Function,\n state: Object,\n }),\n },\n external: {\n type: Boolean,\n default: false\n },\n options: {\n type: Object,\n default: () => ({\n category: null,\n limit: 10, \n skip: 0 ,\n owner: null,\n creator: null,\n customer: null,\n user: null,\n status: null,\n period: null,\n contain: null,\n }),\n },\n keepSlotVisible: {\n type: Boolean,\n default: false\n },\n});\n \nconst hasMoreItems = ref(false);\n\nlet isLoading = ref(true);\nlet isLoadingExtra = ref(false);\nlet sentinel = ref(null)\n\nlet currentSkip = ref(props.options.skip ? props.options.skip : 0);\nlet currentLimit = ref(props.options.limit ? props.options.limit : 10);\n\nlet currentSearch = ref('');\nlet isSearching = ref(false);\n\nlet requestId = 0;\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n return (...args) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n}\n\nconst debouncedSearch = debounce((value) => {\n isSearching.value = true;\n currentSearch.value = value;\n currentSkip.value = 0;\n currentLimit.value = 10;\n fetchItems();\n}, 500);\n\nfunction updateSearch(search) {\n debouncedSearch(search);\n}\n\nconst removeNullValues = (obj) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => value != null)\n );\n};\n\nconst loadMoreItems = async () => {\n if (!hasMoreItems.value || isLoadingExtra.value) {\n return;\n }\n \n isLoadingExtra.value = true;\n \n const currentRequestId = ++requestId;\n\n currentSkip.value += currentLimit.value;\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = [...itemsList.value, ...data];\n \n } catch (error) {\n console.error('Load more error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoadingExtra.value = false;\n }\n }\n};\n\nconst fetchItems = async () => {\n isLoading.value = true;\n \n const currentRequestId = ++requestId;\n \n if (isSearching.value) {\n itemsList.value = [];\n isSearching.value = false;\n }\n \n try {\n const allParams = {\n skip: currentSkip.value,\n limit: currentLimit.value,\n search: currentSearch.value,\n dateStart: date.value?.start,\n dateEnd: date.value?.end,\n sortParam: sort.value?.param,\n sortOrder: sort.value?.order,\n ...props.options\n };\n\n const params = removeNullValues(allParams);\n\n const data = await props.store.read(params);\n\n if (currentRequestId !== requestId) {\n return;\n }\n\n if (data.length === 0) {\n hasMoreItems.value = false;\n } else if (data.length < currentLimit.value) {\n hasMoreItems.value = false;\n } else {\n hasMoreItems.value = true;\n }\n\n // Элегантное обновление через computed setter\n itemsList.value = data;\n \n } catch (error) {\n console.error('Fetch error:', error);\n } finally {\n if (currentRequestId === requestId) {\n isLoading.value = false;\n }\n }\n};\n\nwatch(\n [() => props.external, () => date.value, () => ({...sort.value}), () => ({...props.options})],\n ([newExternal, newDate, newSort, newOptions], [oldExternal, oldDate, oldSort, oldOptions]) => {\n if (\n newExternal !== oldExternal ||\n newDate !== oldDate ||\n newSort?.order !== oldSort?.order ||\n newSort?.param !== oldSort?.param ||\n JSON.stringify(newOptions) !== JSON.stringify(oldOptions)\n ) {\n currentSkip.value = 0;\n fetchItems();\n }\n },\n { deep: true }\n);\n\nlet observer = null\n\nonMounted(async () => {\n await fetchItems()\n\n if (typeof window !== 'undefined' && !props.showLoadMore && props.LoadMore) {\n observer = new IntersectionObserver(entries => {\n if (entries.some(entry => entry.isIntersecting)) {\n loadMoreItems()\n }\n })\n\n if (sentinel.value) observer.observe(sentinel.value)\n }\n});\n\nonUnmounted(() => {\n if (observer) {\n observer.disconnect();\n }\n});\n</script>\n\n<style>\n.feed-move,\n.feed-enter-active,\n.feed-leave-active {\n transition: all 0.5s ease;\n}\n\n.feed-enter-from,\n.feed-leave-to {\n opacity: 0;\n transform: translateY(30px);\n}\n\n.feed-leave-active {\n position: absolute;\n}\n</style>"],"names":["_useModel","search"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const IconShow = require("../../modules/icons/actions/IconShow.vue.cjs");
5
- ;/* empty css */
5
+ ;/* empty css */
6
6
  const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.cjs");
7
7
  const _hoisted_1 = {
8
8
  key: 2,
@@ -158,4 +158,4 @@ const _sfc_main = {
158
158
  };
159
159
  const Field = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-36998019"]]);
160
160
  exports.default = Field;
161
- //# sourceMappingURL=Field.vue.cjs.map
161
+ //# sourceMappingURL=Field.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.vue2.cjs","sources":["../../../../../src/components/Field/Field.vue"],"sourcesContent":["<script setup>\nimport { ref, onMounted, nextTick, watch } from 'vue'\nimport IconShow from '@martyrs/src/modules/icons/actions/IconShow.vue';\nconst emit = defineEmits(['update:field', 'focus', 'blur']);\nconst props = defineProps({\n label: null,\n symbol: null,\n type: 'text',\n placeholder: 'Enter something here',\n field: null,\n value: null,\n validation: false,\n disabled: null,\n tabindex: -1,\n autofocus: false,\n icon: null, // Добавлен пропс для иконки\n name: null, // Имя поля для автозаполнения\n id: null // ID поля\n});\nif (props.value) {\n emit('update:field', props.value)\n}\nconst textarea = ref(null);\nconst input = ref(null);\nconst showPassword = ref(false);\n\nfunction resize() {\n if (!textarea.value) {\n return;\n }\n const el = textarea.value;\n el.style.height = '';\n const scrollHeight = el.scrollHeight;\n if (scrollHeight > 33) {\n el.style.height = scrollHeight + 'px';\n } else {\n el.style.height = '';\n }\n}\nfunction focus() {\n if (props.autofocus) {\n if (props.type === 'textarea' && textarea.value) {\n textarea.value.focus();\n } else if (input.value) {\n input.value.focus();\n }\n }\n}\nwatch(() => props.field, () => {\n if (props.type === 'textarea') {\n nextTick(resize);\n }\n});\nwatch(() => props.autofocus, (newVal) => {\n if (newVal) {\n nextTick(focus);\n }\n});\nonMounted(() => {\n nextTick(focus);\n nextTick(resize);\n});\nconst text = ref(props.field);\n</script>\n<template>\n <div\n :class=\"[\n $attrs.class,\n { 'bg-fourth-nano': validation }\n ]\"\n class=\"field-wrapper flex-center flex-nowrap flex\"\n >\n <!-- Слот для иконки -->\n <slot name=\"icon\" v-if=\"$slots.icon\" />\n <!-- Или компонент иконки через пропс -->\n <component :is=\"icon\" v-else-if=\"icon\" class=\"i-medium t-transp mn-r-thin\" />\n \n <div\n v-if=\"label\"\n class=\"t-transp mn-r-small\"\n >\n <span class=\"t-nowrap\">\n {{label}}\n </span>\n </div>\n <div class=\"w-100 pos-relative\">\n <input\n v-if=\"type !== 'textarea'\"\n ref=\"input\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n :type=\"type === 'password' && !showPassword ? 'password' : type === 'password' ? 'text' : type\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :autofocus=\"autofocus\"\n :name=\"name\"\n :id=\"id\"\n />\n <textarea\n v-else\n ref=\"textarea\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :name=\"name\"\n :id=\"id\"\n />\n </div>\n <IconShow\n v-if=\"type === 'password'\"\n :show=\"!showPassword\"\n @click=\"showPassword = !showPassword\"\n class=\"i-medium cursor-pointer\"\n />\n <slot></slot>\n <div\n v-if=\"symbol\"\n class=\"t-transp mn-l-small\"\n >\n <span>\n {{symbol}}\n </span>\n </div>\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<style scoped>\ninput,\ntextarea,\nspan {\n color: inherit;\n line-height: 1;\n}\ntextarea {\n resize: none;\n overflow: hidden; \n height: 1rem;\n}\n\ninput {\n height: 1rem;\n}\n\ninput[type=\"date\"]::-webkit-calendar-picker-indicator,\ninput[type=\"time\"]::-webkit-calendar-picker-indicator {\n filter: invert(1);\n opacity: 1;\n color: inherit;\n}\n</style>"],"names":["ref","watch","nextTick","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,UAAM,OAAO;AACb,UAAM,QAAQ;AAed,QAAI,MAAM,OAAO;AACf,WAAK,gBAAgB,MAAM,KAAK;AAAA,IAClC;AACA,UAAM,WAAWA,IAAAA,IAAI,IAAI;AACzB,UAAM,QAAQA,IAAAA,IAAI,IAAI;AACtB,UAAM,eAAeA,IAAAA,IAAI,KAAK;AAE9B,aAAS,SAAS;AAChB,UAAI,CAAC,SAAS,OAAO;AACnB;AAAA,MACF;AACA,YAAM,KAAK,SAAS;AACpB,SAAG,MAAM,SAAS;AAClB,YAAM,eAAe,GAAG;AACxB,UAAI,eAAe,IAAI;AACrB,WAAG,MAAM,SAAS,eAAe;AAAA,MACnC,OAAO;AACL,WAAG,MAAM,SAAS;AAAA,MACpB;AAAA,IACF;AACA,aAAS,QAAQ;AACf,UAAI,MAAM,WAAW;AACnB,YAAI,MAAM,SAAS,cAAc,SAAS,OAAO;AAC/C,mBAAS,MAAM,MAAK;AAAA,QACtB,WAAW,MAAM,OAAO;AACtB,gBAAM,MAAM,MAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACAC,QAAAA,MAAM,MAAM,MAAM,OAAO,MAAM;AAC7B,UAAI,MAAM,SAAS,YAAY;AAC7BC,YAAAA,SAAS,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AACDD,QAAAA,MAAM,MAAM,MAAM,WAAW,CAAC,WAAW;AACvC,UAAI,QAAQ;AACVC,YAAAA,SAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AACDC,QAAAA,UAAU,MAAM;AACdD,UAAAA,SAAS,KAAK;AACdA,UAAAA,SAAS,MAAM;AAAA,IACjB,CAAC;AACD,UAAM,OAAOF,IAAAA,IAAI,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, watch, nextTick, onMounted, createElementBlock, openBlock, Fragment, createElementVNode, createVNode, normalizeClass, renderSlot, createBlock, createCommentVNode, resolveDynamicComponent, toDisplayString, Transition, withCtx } from "vue";
2
2
  import _sfc_main$1 from "../../modules/icons/actions/IconShow.vue.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
5
5
  const _hoisted_1 = {
6
6
  key: 2,
@@ -158,4 +158,4 @@ const Field = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3699
158
158
  export {
159
159
  Field as default
160
160
  };
161
- //# sourceMappingURL=Field.vue.js.map
161
+ //# sourceMappingURL=Field.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Field.vue.cjs","sources":["../../../../../src/components/Field/Field.vue"],"sourcesContent":["<script setup>\nimport { ref, onMounted, nextTick, watch } from 'vue'\nimport IconShow from '@martyrs/src/modules/icons/actions/IconShow.vue';\nconst emit = defineEmits(['update:field', 'focus', 'blur']);\nconst props = defineProps({\n label: null,\n symbol: null,\n type: 'text',\n placeholder: 'Enter something here',\n field: null,\n value: null,\n validation: false,\n disabled: null,\n tabindex: -1,\n autofocus: false,\n icon: null, // Добавлен пропс для иконки\n name: null, // Имя поля для автозаполнения\n id: null // ID поля\n});\nif (props.value) {\n emit('update:field', props.value)\n}\nconst textarea = ref(null);\nconst input = ref(null);\nconst showPassword = ref(false);\n\nfunction resize() {\n if (!textarea.value) {\n return;\n }\n const el = textarea.value;\n el.style.height = '';\n const scrollHeight = el.scrollHeight;\n if (scrollHeight > 33) {\n el.style.height = scrollHeight + 'px';\n } else {\n el.style.height = '';\n }\n}\nfunction focus() {\n if (props.autofocus) {\n if (props.type === 'textarea' && textarea.value) {\n textarea.value.focus();\n } else if (input.value) {\n input.value.focus();\n }\n }\n}\nwatch(() => props.field, () => {\n if (props.type === 'textarea') {\n nextTick(resize);\n }\n});\nwatch(() => props.autofocus, (newVal) => {\n if (newVal) {\n nextTick(focus);\n }\n});\nonMounted(() => {\n nextTick(focus);\n nextTick(resize);\n});\nconst text = ref(props.field);\n</script>\n<template>\n <div\n :class=\"[\n $attrs.class,\n { 'bg-fourth-nano': validation }\n ]\"\n class=\"field-wrapper flex-center flex-nowrap flex\"\n >\n <!-- Слот для иконки -->\n <slot name=\"icon\" v-if=\"$slots.icon\" />\n <!-- Или компонент иконки через пропс -->\n <component :is=\"icon\" v-else-if=\"icon\" class=\"i-medium t-transp mn-r-thin\" />\n \n <div\n v-if=\"label\"\n class=\"t-transp mn-r-small\"\n >\n <span class=\"t-nowrap\">\n {{label}}\n </span>\n </div>\n <div class=\"w-100 pos-relative\">\n <input\n v-if=\"type !== 'textarea'\"\n ref=\"input\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n :type=\"type === 'password' && !showPassword ? 'password' : type === 'password' ? 'text' : type\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :autofocus=\"autofocus\"\n :name=\"name\"\n :id=\"id\"\n />\n <textarea\n v-else\n ref=\"textarea\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :name=\"name\"\n :id=\"id\"\n />\n </div>\n <IconShow\n v-if=\"type === 'password'\"\n :show=\"!showPassword\"\n @click=\"showPassword = !showPassword\"\n class=\"i-medium cursor-pointer\"\n />\n <slot></slot>\n <div\n v-if=\"symbol\"\n class=\"t-transp mn-l-small\"\n >\n <span>\n {{symbol}}\n </span>\n </div>\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<style scoped>\ninput,\ntextarea,\nspan {\n color: inherit;\n line-height: 1;\n}\ntextarea {\n resize: none;\n overflow: hidden; \n height: 1rem;\n}\n\ninput {\n height: 1rem;\n}\n\ninput[type=\"date\"]::-webkit-calendar-picker-indicator,\ninput[type=\"time\"]::-webkit-calendar-picker-indicator {\n filter: invert(1);\n opacity: 1;\n color: inherit;\n}\n</style>"],"names":["ref","watch","nextTick","onMounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,UAAM,OAAO;AACb,UAAM,QAAQ;AAed,QAAI,MAAM,OAAO;AACf,WAAK,gBAAgB,MAAM,KAAK;AAAA,IAClC;AACA,UAAM,WAAWA,IAAAA,IAAI,IAAI;AACzB,UAAM,QAAQA,IAAAA,IAAI,IAAI;AACtB,UAAM,eAAeA,IAAAA,IAAI,KAAK;AAE9B,aAAS,SAAS;AAChB,UAAI,CAAC,SAAS,OAAO;AACnB;AAAA,MACF;AACA,YAAM,KAAK,SAAS;AACpB,SAAG,MAAM,SAAS;AAClB,YAAM,eAAe,GAAG;AACxB,UAAI,eAAe,IAAI;AACrB,WAAG,MAAM,SAAS,eAAe;AAAA,MACnC,OAAO;AACL,WAAG,MAAM,SAAS;AAAA,MACpB;AAAA,IACF;AACA,aAAS,QAAQ;AACf,UAAI,MAAM,WAAW;AACnB,YAAI,MAAM,SAAS,cAAc,SAAS,OAAO;AAC/C,mBAAS,MAAM,MAAK;AAAA,QACtB,WAAW,MAAM,OAAO;AACtB,gBAAM,MAAM,MAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACAC,QAAAA,MAAM,MAAM,MAAM,OAAO,MAAM;AAC7B,UAAI,MAAM,SAAS,YAAY;AAC7BC,YAAAA,SAAS,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AACDD,QAAAA,MAAM,MAAM,MAAM,WAAW,CAAC,WAAW;AACvC,UAAI,QAAQ;AACVC,YAAAA,SAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AACDC,QAAAA,UAAU,MAAM;AACdD,UAAAA,SAAS,KAAK;AACdA,UAAAA,SAAS,MAAM;AAAA,IACjB,CAAC;AACD,UAAM,OAAOF,IAAAA,IAAI,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Field.vue2.js","sources":["../../../../../src/components/Field/Field.vue"],"sourcesContent":["<script setup>\nimport { ref, onMounted, nextTick, watch } from 'vue'\nimport IconShow from '@martyrs/src/modules/icons/actions/IconShow.vue';\nconst emit = defineEmits(['update:field', 'focus', 'blur']);\nconst props = defineProps({\n label: null,\n symbol: null,\n type: 'text',\n placeholder: 'Enter something here',\n field: null,\n value: null,\n validation: false,\n disabled: null,\n tabindex: -1,\n autofocus: false,\n icon: null, // Добавлен пропс для иконки\n name: null, // Имя поля для автозаполнения\n id: null // ID поля\n});\nif (props.value) {\n emit('update:field', props.value)\n}\nconst textarea = ref(null);\nconst input = ref(null);\nconst showPassword = ref(false);\n\nfunction resize() {\n if (!textarea.value) {\n return;\n }\n const el = textarea.value;\n el.style.height = '';\n const scrollHeight = el.scrollHeight;\n if (scrollHeight > 33) {\n el.style.height = scrollHeight + 'px';\n } else {\n el.style.height = '';\n }\n}\nfunction focus() {\n if (props.autofocus) {\n if (props.type === 'textarea' && textarea.value) {\n textarea.value.focus();\n } else if (input.value) {\n input.value.focus();\n }\n }\n}\nwatch(() => props.field, () => {\n if (props.type === 'textarea') {\n nextTick(resize);\n }\n});\nwatch(() => props.autofocus, (newVal) => {\n if (newVal) {\n nextTick(focus);\n }\n});\nonMounted(() => {\n nextTick(focus);\n nextTick(resize);\n});\nconst text = ref(props.field);\n</script>\n<template>\n <div\n :class=\"[\n $attrs.class,\n { 'bg-fourth-nano': validation }\n ]\"\n class=\"field-wrapper flex-center flex-nowrap flex\"\n >\n <!-- Слот для иконки -->\n <slot name=\"icon\" v-if=\"$slots.icon\" />\n <!-- Или компонент иконки через пропс -->\n <component :is=\"icon\" v-else-if=\"icon\" class=\"i-medium t-transp mn-r-thin\" />\n \n <div\n v-if=\"label\"\n class=\"t-transp mn-r-small\"\n >\n <span class=\"t-nowrap\">\n {{label}}\n </span>\n </div>\n <div class=\"w-100 pos-relative\">\n <input\n v-if=\"type !== 'textarea'\"\n ref=\"input\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n :type=\"type === 'password' && !showPassword ? 'password' : type === 'password' ? 'text' : type\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :autofocus=\"autofocus\"\n :name=\"name\"\n :id=\"id\"\n />\n <textarea\n v-else\n ref=\"textarea\"\n @input=\"event => text = emit('update:field', event.target.value)\"\n @focus=\"event => emit('focus', event)\"\n @blur=\"event => emit('blur', event)\"\n class=\"w-100\"\n :value=\"field\"\n :placeholder=\"placeholder\"\n :tabindex=\"tabindex\"\n :disabled=\"disabled\"\n :name=\"name\"\n :id=\"id\"\n />\n </div>\n <IconShow\n v-if=\"type === 'password'\"\n :show=\"!showPassword\"\n @click=\"showPassword = !showPassword\"\n class=\"i-medium cursor-pointer\"\n />\n <slot></slot>\n <div\n v-if=\"symbol\"\n class=\"t-transp mn-l-small\"\n >\n <span>\n {{symbol}}\n </span>\n </div>\n </div>\n <!-- Validation -->\n <transition name=\"fade\">\n <div v-if=\"validation\" class=\"mn-t-thin mn-b-thin mn-b-thin invalid-feedback\">\n * {{validation.message}}\n </div>\n </transition>\n</template>\n<style scoped>\ninput,\ntextarea,\nspan {\n color: inherit;\n line-height: 1;\n}\ntextarea {\n resize: none;\n overflow: hidden; \n height: 1rem;\n}\n\ninput {\n height: 1rem;\n}\n\ninput[type=\"date\"]::-webkit-calendar-picker-indicator,\ninput[type=\"time\"]::-webkit-calendar-picker-indicator {\n filter: invert(1);\n opacity: 1;\n color: inherit;\n}\n</style>"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,UAAM,OAAO;AACb,UAAM,QAAQ;AAed,QAAI,MAAM,OAAO;AACf,WAAK,gBAAgB,MAAM,KAAK;AAAA,IAClC;AACA,UAAM,WAAW,IAAI,IAAI;AACzB,UAAM,QAAQ,IAAI,IAAI;AACtB,UAAM,eAAe,IAAI,KAAK;AAE9B,aAAS,SAAS;AAChB,UAAI,CAAC,SAAS,OAAO;AACnB;AAAA,MACF;AACA,YAAM,KAAK,SAAS;AACpB,SAAG,MAAM,SAAS;AAClB,YAAM,eAAe,GAAG;AACxB,UAAI,eAAe,IAAI;AACrB,WAAG,MAAM,SAAS,eAAe;AAAA,MACnC,OAAO;AACL,WAAG,MAAM,SAAS;AAAA,MACpB;AAAA,IACF;AACA,aAAS,QAAQ;AACf,UAAI,MAAM,WAAW;AACnB,YAAI,MAAM,SAAS,cAAc,SAAS,OAAO;AAC/C,mBAAS,MAAM,MAAK;AAAA,QACtB,WAAW,MAAM,OAAO;AACtB,gBAAM,MAAM,MAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACA,UAAM,MAAM,MAAM,OAAO,MAAM;AAC7B,UAAI,MAAM,SAAS,YAAY;AAC7B,iBAAS,MAAM;AAAA,MACjB;AAAA,IACF,CAAC;AACD,UAAM,MAAM,MAAM,WAAW,CAAC,WAAW;AACvC,UAAI,QAAQ;AACV,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AACD,cAAU,MAAM;AACd,eAAS,KAAK;AACd,eAAS,MAAM;AAAA,IACjB,CAAC;AACD,UAAM,OAAO,IAAI,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- const Field = require("../Field/Field.vue.cjs");
4
+ const Field = require("../Field/Field.vue2.cjs");
5
5
  const Button = require("../Button/Button.vue.cjs");
6
6
  const IconArrow = require("../../modules/icons/navigation/IconArrow.vue.cjs");
7
7
  const vueI18n = require("vue-i18n");
@@ -1,5 +1,5 @@
1
1
  import { ref, onMounted, watchEffect, createBlock, openBlock, unref, isRef, withCtx, renderSlot, createVNode, createElementBlock, createCommentVNode, toDisplayString } from "vue";
2
- import Field from "../Field/Field.vue.js";
2
+ import Field from "../Field/Field.vue2.js";
3
3
  import _sfc_main$1 from "../Button/Button.vue.js";
4
4
  import _sfc_main$2 from "../../modules/icons/navigation/IconArrow.vue.js";
5
5
  import { useI18n } from "vue-i18n";
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
4
  const FieldTags = require("./FieldTags.vue2.cjs");
5
- ;/* empty css */
5
+ ;/* empty css */
6
6
  const _hoisted_1 = ["onClick"];
7
7
  const _hoisted_2 = { key: 1 };
8
8
  const _sfc_main = {
@@ -91,4 +91,4 @@ const _sfc_main = {
91
91
  }
92
92
  };
93
93
  exports.default = _sfc_main;
94
- //# sourceMappingURL=BlockTags.vue.cjs.map
94
+ //# sourceMappingURL=BlockTags.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockTags.vue2.cjs","sources":["../../../../../src/components/FieldTags/BlockTags.vue"],"sourcesContent":["<template>\n <div>\n <FieldTags\n v-model=\"selectedTags\"\n :autocomplete-items=\"filteredItems\"\n :add-on-key=\"[13, ':', ';', ',']\"\n :separators=\"[';', ',']\"\n :max-tags=\"20\"\n :maxlength=\"20\"\n :placeholder=\"'Please add tags'\"\n @tags-changed=\"handleTagsChanged\"\n class=\"mn-b-thin bg-light radius-medium pd-small\"\n />\n \n <input\n v-model=\"tag\"\n @keydown.enter=\"addTagFromInput\"\n placeholder=\"Type to filter suggestions\"\n class=\"hidden-input\"\n style=\"position: absolute; left: -9999px;\"\n />\n\n <p class=\"p-small mn-b-thin\">Suggested:</p>\n\n <span \n v-if=\"filteredSuggestedItems.length > 0\" \n v-for=\"(tag,index) in filteredSuggestedItems\" \n @click=\"addTag(tag)\"\n class=\"cursor-pointer t-medium ti-tag-toDefactor\"\n :class=\"{'mn-r-micro':index !== filteredSuggestedItems.length - 1}\"\n >\n {{ tag.text }}\n </span>\n <span v-else>You added all suggested tags</span> \n </div>\n</template>\n\n<script setup>\nimport FieldTags from '@martyrs/src/components/FieldTags/FieldTags.vue'\nimport { ref, computed, onMounted } from 'vue';\n\nconst emits = defineEmits(['tags-changed']);\nconst props = defineProps({\n tags: {\n type: Array\n },\n tagsSuggested: {\n type: Array,\n default: [\n { text: 'story' },\n { text: 'news' },\n { text: 'guide' },\n { text: 'discussion' },\n { text: 'photos' },\n ]\n }\n});\n\nconst tag = ref('');\nconst selectedTags = ref([]);\nconst autocompleteItems = ref(props.tagsSuggested);\n\n// Initialize tags\nif (props.tags) {\n selectedTags.value = props.tags.map(tag => \n typeof tag === 'string' ? { text: tag } : tag\n );\n}\n\n// Filter autocomplete items based on current input\nconst filteredItems = computed(() => {\n return autocompleteItems.value;\n});\n\nconst filteredSuggestedItems = computed(() => {\n return autocompleteItems.value.filter(item => {\n return !selectedTags.value.some(tag => tag.text === item.text);\n });\n })\n\nfunction addTag (tagToAdd) {\n selectedTags.value.push(tagToAdd)\n emits('tags-changed', selectedTags.value.map(t => t.text));\n}\n\nfunction addTagFromInput() {\n if (tag.value) {\n addTag({ text: tag.value });\n tag.value = '';\n }\n}\n\nfunction handleTagsChanged(newTags) {\n selectedTags.value = newTags;\n emits('tags-changed', newTags.map(t => typeof t === 'string' ? t : t.text));\n}\n\n\n\n</script>\n\n<style>\n .ti-tag-toDefactor {\n background-color: rgb(var(--main));\n color: rgb(var(--black));\n border-radius: 4rem;\n padding: 1px 8px 2px;\n margin: 2px;\n font-size: .85em;\n }\n</style>"],"names":["ref","tag","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,QAAQ;AACd,UAAM,QAAQ;AAgBd,UAAM,MAAMA,IAAAA,IAAI,EAAE;AAClB,UAAM,eAAeA,IAAAA,IAAI,EAAE;AAC3B,UAAM,oBAAoBA,IAAAA,IAAI,MAAM,aAAa;AAGjD,QAAI,MAAM,MAAM;AACd,mBAAa,QAAQ,MAAM,KAAK;AAAA,QAAI,CAAAC,SAClC,OAAOA,SAAQ,WAAW,EAAE,MAAMA,KAAG,IAAKA;AAAA,MAC9C;AAAA,IACA;AAGA,UAAM,gBAAgBC,IAAAA,SAAS,MAAM;AACnC,aAAO,kBAAkB;AAAA,IAC3B,CAAC;AAED,UAAM,yBAAyBA,IAAAA,SAAS,MAAM;AAC1C,aAAO,kBAAkB,MAAM,OAAO,UAAQ;AAC5C,eAAO,CAAC,aAAa,MAAM,KAAK,CAAAD,SAAOA,KAAI,SAAS,KAAK,IAAI;AAAA,MAC/D,CAAC;AAAA,IACH,CAAC;AAEH,aAAS,OAAQ,UAAU;AACzB,mBAAa,MAAM,KAAK,QAAQ;AAChC,YAAM,gBAAgB,aAAa,MAAM,IAAI,OAAK,EAAE,IAAI,CAAC;AAAA,IAC3D;AAEA,aAAS,kBAAkB;AACzB,UAAI,IAAI,OAAO;AACb,eAAO,EAAE,MAAM,IAAI,MAAK,CAAE;AAC1B,YAAI,QAAQ;AAAA,MACd;AAAA,IACF;AAEA,aAAS,kBAAkB,SAAS;AAClC,mBAAa,QAAQ;AACrB,YAAM,gBAAgB,QAAQ,IAAI,OAAK,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,CAAC;AAAA,IAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, createElementBlock, openBlock, createVNode, withDirectives, createElementVNode, withKeys, vModelText, Fragment, renderList, normalizeClass, toDisplayString } from "vue";
2
2
  import FieldTags from "./FieldTags.vue2.js";
3
- /* empty css */
3
+ /* empty css */
4
4
  const _hoisted_1 = ["onClick"];
5
5
  const _hoisted_2 = { key: 1 };
6
6
  const _sfc_main = {
@@ -91,4 +91,4 @@ const _sfc_main = {
91
91
  export {
92
92
  _sfc_main as default
93
93
  };
94
- //# sourceMappingURL=BlockTags.vue.js.map
94
+ //# sourceMappingURL=BlockTags.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockTags.vue.cjs","sources":["../../../../../src/components/FieldTags/BlockTags.vue"],"sourcesContent":["<template>\n <div>\n <FieldTags\n v-model=\"selectedTags\"\n :autocomplete-items=\"filteredItems\"\n :add-on-key=\"[13, ':', ';', ',']\"\n :separators=\"[';', ',']\"\n :max-tags=\"20\"\n :maxlength=\"20\"\n :placeholder=\"'Please add tags'\"\n @tags-changed=\"handleTagsChanged\"\n class=\"mn-b-thin bg-light radius-medium pd-small\"\n />\n \n <input\n v-model=\"tag\"\n @keydown.enter=\"addTagFromInput\"\n placeholder=\"Type to filter suggestions\"\n class=\"hidden-input\"\n style=\"position: absolute; left: -9999px;\"\n />\n\n <p class=\"p-small mn-b-thin\">Suggested:</p>\n\n <span \n v-if=\"filteredSuggestedItems.length > 0\" \n v-for=\"(tag,index) in filteredSuggestedItems\" \n @click=\"addTag(tag)\"\n class=\"cursor-pointer t-medium ti-tag-toDefactor\"\n :class=\"{'mn-r-micro':index !== filteredSuggestedItems.length - 1}\"\n >\n {{ tag.text }}\n </span>\n <span v-else>You added all suggested tags</span> \n </div>\n</template>\n\n<script setup>\nimport FieldTags from '@martyrs/src/components/FieldTags/FieldTags.vue'\nimport { ref, computed, onMounted } from 'vue';\n\nconst emits = defineEmits(['tags-changed']);\nconst props = defineProps({\n tags: {\n type: Array\n },\n tagsSuggested: {\n type: Array,\n default: [\n { text: 'story' },\n { text: 'news' },\n { text: 'guide' },\n { text: 'discussion' },\n { text: 'photos' },\n ]\n }\n});\n\nconst tag = ref('');\nconst selectedTags = ref([]);\nconst autocompleteItems = ref(props.tagsSuggested);\n\n// Initialize tags\nif (props.tags) {\n selectedTags.value = props.tags.map(tag => \n typeof tag === 'string' ? { text: tag } : tag\n );\n}\n\n// Filter autocomplete items based on current input\nconst filteredItems = computed(() => {\n return autocompleteItems.value;\n});\n\nconst filteredSuggestedItems = computed(() => {\n return autocompleteItems.value.filter(item => {\n return !selectedTags.value.some(tag => tag.text === item.text);\n });\n })\n\nfunction addTag (tagToAdd) {\n selectedTags.value.push(tagToAdd)\n emits('tags-changed', selectedTags.value.map(t => t.text));\n}\n\nfunction addTagFromInput() {\n if (tag.value) {\n addTag({ text: tag.value });\n tag.value = '';\n }\n}\n\nfunction handleTagsChanged(newTags) {\n selectedTags.value = newTags;\n emits('tags-changed', newTags.map(t => typeof t === 'string' ? t : t.text));\n}\n\n\n\n</script>\n\n<style>\n .ti-tag-toDefactor {\n background-color: rgb(var(--main));\n color: rgb(var(--black));\n border-radius: 4rem;\n padding: 1px 8px 2px;\n margin: 2px;\n font-size: .85em;\n }\n</style>"],"names":["ref","tag","computed"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,QAAQ;AACd,UAAM,QAAQ;AAgBd,UAAM,MAAMA,IAAAA,IAAI,EAAE;AAClB,UAAM,eAAeA,IAAAA,IAAI,EAAE;AAC3B,UAAM,oBAAoBA,IAAAA,IAAI,MAAM,aAAa;AAGjD,QAAI,MAAM,MAAM;AACd,mBAAa,QAAQ,MAAM,KAAK;AAAA,QAAI,CAAAC,SAClC,OAAOA,SAAQ,WAAW,EAAE,MAAMA,KAAG,IAAKA;AAAA,MAC9C;AAAA,IACA;AAGA,UAAM,gBAAgBC,IAAAA,SAAS,MAAM;AACnC,aAAO,kBAAkB;AAAA,IAC3B,CAAC;AAED,UAAM,yBAAyBA,IAAAA,SAAS,MAAM;AAC1C,aAAO,kBAAkB,MAAM,OAAO,UAAQ;AAC5C,eAAO,CAAC,aAAa,MAAM,KAAK,CAAAD,SAAOA,KAAI,SAAS,KAAK,IAAI;AAAA,MAC/D,CAAC;AAAA,IACH,CAAC;AAEH,aAAS,OAAQ,UAAU;AACzB,mBAAa,MAAM,KAAK,QAAQ;AAChC,YAAM,gBAAgB,aAAa,MAAM,IAAI,OAAK,EAAE,IAAI,CAAC;AAAA,IAC3D;AAEA,aAAS,kBAAkB;AACzB,UAAI,IAAI,OAAO;AACb,eAAO,EAAE,MAAM,IAAI,MAAK,CAAE;AAC1B,YAAI,QAAQ;AAAA,MACd;AAAA,IACF;AAEA,aAAS,kBAAkB,SAAS;AAClC,mBAAa,QAAQ;AACrB,YAAM,gBAAgB,QAAQ,IAAI,OAAK,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,CAAC;AAAA,IAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlockTags.vue2.js","sources":["../../../../../src/components/FieldTags/BlockTags.vue"],"sourcesContent":["<template>\n <div>\n <FieldTags\n v-model=\"selectedTags\"\n :autocomplete-items=\"filteredItems\"\n :add-on-key=\"[13, ':', ';', ',']\"\n :separators=\"[';', ',']\"\n :max-tags=\"20\"\n :maxlength=\"20\"\n :placeholder=\"'Please add tags'\"\n @tags-changed=\"handleTagsChanged\"\n class=\"mn-b-thin bg-light radius-medium pd-small\"\n />\n \n <input\n v-model=\"tag\"\n @keydown.enter=\"addTagFromInput\"\n placeholder=\"Type to filter suggestions\"\n class=\"hidden-input\"\n style=\"position: absolute; left: -9999px;\"\n />\n\n <p class=\"p-small mn-b-thin\">Suggested:</p>\n\n <span \n v-if=\"filteredSuggestedItems.length > 0\" \n v-for=\"(tag,index) in filteredSuggestedItems\" \n @click=\"addTag(tag)\"\n class=\"cursor-pointer t-medium ti-tag-toDefactor\"\n :class=\"{'mn-r-micro':index !== filteredSuggestedItems.length - 1}\"\n >\n {{ tag.text }}\n </span>\n <span v-else>You added all suggested tags</span> \n </div>\n</template>\n\n<script setup>\nimport FieldTags from '@martyrs/src/components/FieldTags/FieldTags.vue'\nimport { ref, computed, onMounted } from 'vue';\n\nconst emits = defineEmits(['tags-changed']);\nconst props = defineProps({\n tags: {\n type: Array\n },\n tagsSuggested: {\n type: Array,\n default: [\n { text: 'story' },\n { text: 'news' },\n { text: 'guide' },\n { text: 'discussion' },\n { text: 'photos' },\n ]\n }\n});\n\nconst tag = ref('');\nconst selectedTags = ref([]);\nconst autocompleteItems = ref(props.tagsSuggested);\n\n// Initialize tags\nif (props.tags) {\n selectedTags.value = props.tags.map(tag => \n typeof tag === 'string' ? { text: tag } : tag\n );\n}\n\n// Filter autocomplete items based on current input\nconst filteredItems = computed(() => {\n return autocompleteItems.value;\n});\n\nconst filteredSuggestedItems = computed(() => {\n return autocompleteItems.value.filter(item => {\n return !selectedTags.value.some(tag => tag.text === item.text);\n });\n })\n\nfunction addTag (tagToAdd) {\n selectedTags.value.push(tagToAdd)\n emits('tags-changed', selectedTags.value.map(t => t.text));\n}\n\nfunction addTagFromInput() {\n if (tag.value) {\n addTag({ text: tag.value });\n tag.value = '';\n }\n}\n\nfunction handleTagsChanged(newTags) {\n selectedTags.value = newTags;\n emits('tags-changed', newTags.map(t => typeof t === 'string' ? t : t.text));\n}\n\n\n\n</script>\n\n<style>\n .ti-tag-toDefactor {\n background-color: rgb(var(--main));\n color: rgb(var(--black));\n border-radius: 4rem;\n padding: 1px 8px 2px;\n margin: 2px;\n font-size: .85em;\n }\n</style>"],"names":["tag"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyCA,UAAM,QAAQ;AACd,UAAM,QAAQ;AAgBd,UAAM,MAAM,IAAI,EAAE;AAClB,UAAM,eAAe,IAAI,EAAE;AAC3B,UAAM,oBAAoB,IAAI,MAAM,aAAa;AAGjD,QAAI,MAAM,MAAM;AACd,mBAAa,QAAQ,MAAM,KAAK;AAAA,QAAI,CAAAA,SAClC,OAAOA,SAAQ,WAAW,EAAE,MAAMA,KAAG,IAAKA;AAAA,MAC9C;AAAA,IACA;AAGA,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,kBAAkB;AAAA,IAC3B,CAAC;AAED,UAAM,yBAAyB,SAAS,MAAM;AAC1C,aAAO,kBAAkB,MAAM,OAAO,UAAQ;AAC5C,eAAO,CAAC,aAAa,MAAM,KAAK,CAAAA,SAAOA,KAAI,SAAS,KAAK,IAAI;AAAA,MAC/D,CAAC;AAAA,IACH,CAAC;AAEH,aAAS,OAAQ,UAAU;AACzB,mBAAa,MAAM,KAAK,QAAQ;AAChC,YAAM,gBAAgB,aAAa,MAAM,IAAI,OAAK,EAAE,IAAI,CAAC;AAAA,IAC3D;AAEA,aAAS,kBAAkB;AACzB,UAAI,IAAI,OAAO;AACb,eAAO,EAAE,MAAM,IAAI,MAAK,CAAE;AAC1B,YAAI,QAAQ;AAAA,MACd;AAAA,IACF;AAEA,aAAS,kBAAkB,SAAS;AAClC,mBAAa,QAAQ;AACrB,YAAM,gBAAgB,QAAQ,IAAI,OAAK,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,CAAC;AAAA,IAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
- ;/* empty css */
4
+ ;/* empty css */
5
5
  const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
6
6
  const _sfc_main = {
7
7
  __name: "Menu",
@@ -14,4 +14,4 @@ const _sfc_main = {
14
14
  }
15
15
  };
16
16
  exports.default = _sfc_main;
17
- //# sourceMappingURL=Menu.vue2.cjs.map
17
+ //# sourceMappingURL=Menu.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock, openBlock, renderSlot } from "vue";
2
- /* empty css */
2
+ /* empty css */
3
3
  const _hoisted_1 = { class: "mobile-menu-section pd-r-zero pd-t-thin pd-b-thin pd-medium radius-medium" };
4
4
  const _sfc_main = {
5
5
  __name: "Menu",
@@ -14,4 +14,4 @@ const _sfc_main = {
14
14
  export {
15
15
  _sfc_main as default
16
16
  };
17
- //# sourceMappingURL=Menu.vue2.js.map
17
+ //# sourceMappingURL=Menu.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
+ const mixins = require("../../modules/globals/views/mixins/mixins.cjs");
4
5
  ;/* empty css */
5
6
  const _hoisted_1 = { class: "flex-nowrap flex-v-center flex pos-relative" };
6
7
  const _hoisted_2 = ["onClick"];
@@ -15,6 +16,7 @@ const _sfc_main = {
15
16
  },
16
17
  emits: ["update:selected", "tab-click"],
17
18
  setup(__props, { emit: __emit }) {
19
+ const { replaceClasses } = mixins.useGlobalMixins();
18
20
  const emit = __emit;
19
21
  const props = __props;
20
22
  const selectedTab = vue.ref(0);
@@ -59,7 +61,7 @@ const _sfc_main = {
59
61
  onClick: ($event) => handleTabClick(index, tab),
60
62
  class: vue.normalizeClass(["z-index-1 t-center cursor-pointer", [
61
63
  isSelected(index, tab) ? "bg-main" : "",
62
- _ctx.replaceClasses("pd-small pd-r-medium pd-l-medium w-max pd-small radius-small", __props.classTab)
64
+ vue.unref(replaceClasses)("pd-small pd-r-medium pd-l-medium w-max pd-small radius-small", __props.classTab)
63
65
  ]]),
64
66
  style: vue.normalizeStyle(isSelected(index, tab) ? "background: rgb(var(--main)) !important" : "")
65
67
  }, vue.toDisplayString(tab.name || tab.label), 15, _hoisted_2);