@ozdao/prometheus-framework 0.2.29 → 0.2.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (326) hide show
  1. package/dist/addMembersQuantity-3505b6f3.mjs +98 -0
  2. package/dist/addMembersQuantity-fb552ca0.js +97 -0
  3. package/dist/auth.server.js +6 -9
  4. package/dist/auth.server.mjs +6 -9
  5. package/dist/community.server.js +28 -21
  6. package/dist/community.server.mjs +28 -21
  7. package/dist/events.server.js +1 -1
  8. package/dist/events.server.mjs +1 -1
  9. package/dist/files.server.js +114 -111
  10. package/dist/files.server.mjs +114 -111
  11. package/dist/gallery.server.js +3 -3
  12. package/dist/gallery.server.mjs +3 -3
  13. package/dist/globals.server.js +1 -1
  14. package/dist/globals.server.mjs +1 -1
  15. package/dist/index-a8dffc0c.js +213 -0
  16. package/dist/index-d769324d.mjs +214 -0
  17. package/dist/mailing-37c2ba41.mjs +68 -0
  18. package/dist/mailing-fe16a26a.js +67 -0
  19. package/dist/main.css +1 -1
  20. package/dist/middlewares.server.js +1 -1
  21. package/dist/middlewares.server.mjs +1 -1
  22. package/dist/organizations.server.js +125 -25
  23. package/dist/organizations.server.mjs +125 -25
  24. package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue.cjs +1 -1
  25. package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue.js +49 -2
  26. package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue2.cjs +1 -1
  27. package/dist/prometheus-framework/src/components/Dropdown/Dropdown.vue2.js +2 -49
  28. package/dist/prometheus-framework/src/components/Select/Select.vue.cjs +1 -1
  29. package/dist/prometheus-framework/src/components/Select/Select.vue.js +78 -2
  30. package/dist/prometheus-framework/src/components/Select/Select.vue2.cjs +1 -1
  31. package/dist/prometheus-framework/src/components/Select/Select.vue2.js +2 -78
  32. package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -1
  33. package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -1
  34. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.cjs +1 -1
  35. package/dist/prometheus-framework/src/modules/community/components/layouts/Community.vue.js +1 -1
  36. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  37. package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  38. package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue.cjs +4 -1
  39. package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue.js +62 -2
  40. package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue2.cjs +1 -4
  41. package/dist/prometheus-framework/src/modules/constructor/components/elements/Textarea.vue2.js +2 -62
  42. package/dist/prometheus-framework/src/modules/constructor/components/sections/Constructor.vue.cjs +1 -1
  43. package/dist/prometheus-framework/src/modules/constructor/components/sections/Constructor.vue.js +1 -1
  44. package/dist/prometheus-framework/src/modules/events/components/layouts/layoutEvents.vue.cjs +1 -1
  45. package/dist/prometheus-framework/src/modules/events/components/layouts/layoutEvents.vue.js +1 -1
  46. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
  47. package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.js +1 -1
  48. package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.cjs +1 -1
  49. package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.js +2 -2
  50. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
  51. package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
  52. package/dist/prometheus-framework/src/modules/gallery/components/sections/GalleryWithCategories.vue.cjs +1 -1
  53. package/dist/prometheus-framework/src/modules/gallery/components/sections/GalleryWithCategories.vue.js +1 -1
  54. package/dist/prometheus-framework/src/modules/globals/components/blocks/CardHeader.vue.cjs +1 -1
  55. package/dist/prometheus-framework/src/modules/globals/components/blocks/CardHeader.vue.js +1 -1
  56. package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.cjs +1 -1
  57. package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.js +1 -1
  58. package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue.cjs +1 -1
  59. package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue.js +11 -2
  60. package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue2.cjs +1 -1
  61. package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue2.js +2 -11
  62. package/dist/prometheus-framework/src/modules/organizations/components/blocks/DepartmentMemberModify.vue.cjs +1 -1
  63. package/dist/prometheus-framework/src/modules/organizations/components/blocks/DepartmentMemberModify.vue.js +1 -1
  64. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
  65. package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
  66. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
  67. package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js +2 -2
  68. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  69. package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +1 -1
  70. package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.cjs +1 -1
  71. package/dist/prometheus-framework/src/modules/organizations/components/sections/DetailsTab.vue.js +1 -1
  72. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  73. package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  74. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
  75. package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  76. package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  77. package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  78. package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.cjs +1 -1
  79. package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.js +2 -2
  80. package/dist/prometheus-framework.cjs.js +30 -29
  81. package/dist/prometheus-framework.es.js +2478 -2282
  82. package/dist/reports.server.js +1 -1
  83. package/dist/reports.server.mjs +1 -1
  84. package/dist/style.css +1 -1
  85. package/dist/users.server.js +1 -1
  86. package/dist/users.server.mjs +1 -1
  87. package/package.json +4 -2
  88. package/src/assets/images/logo.svg +7 -7
  89. package/src/components/Block/Block.vue +77 -0
  90. package/src/components/Breadcrumbs/Breadcrumbs.vue +2 -2
  91. package/src/components/Button/Button.vue +32 -227
  92. package/src/components/Checkbox/Checkbox.vue +1 -1
  93. package/src/components/Chips/Chips.vue +8 -8
  94. package/src/components/DatePicker/DatePicker.vue +3 -4
  95. package/src/components/EditImages/EditImages.vue +32 -14
  96. package/src/{modules/globals/components/sections → components/Feed}/Feed.vue +60 -45
  97. package/src/components/FieldBig/FieldBig.vue +16 -5
  98. package/src/components/FieldPhone/FieldPhone.vue +2 -1
  99. package/src/components/Footer/Footer.vue +36 -27
  100. package/src/components/Header/Header.vue +161 -166
  101. package/src/components/Loader/Loader.vue +9 -2
  102. package/src/components/LocationMarker/LocationMarker.vue +38 -12
  103. package/src/components/LocationSelection/LocationSelection.vue +67 -75
  104. package/src/components/Magnifier/Magnifier.vue +3 -3
  105. package/src/components/Navigation/Navigation.vue +16 -16
  106. package/src/components/Popup/Popup.vue +8 -6
  107. package/src/components/Select/Select.vue +35 -6
  108. package/src/components/SelectMulti/SelectMulti.vue +5 -13
  109. package/src/components/Shader/Shader.vue +128 -0
  110. package/src/components/Sidebar/Sidebar.vue +71 -35
  111. package/src/components/Spoiler/Spoiler.vue +1 -1
  112. package/src/components/Tab/Tab.vue +1 -1
  113. package/src/components/Tooltip/Tooltip.vue +1 -1
  114. package/src/components/UploadImage/UploadImage.vue +4 -4
  115. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +54 -10
  116. package/src/modules/applications/controllers/applications.controller.js +0 -1
  117. package/src/modules/auth/components/pages/EnterCode.vue +1 -1
  118. package/src/modules/auth/components/pages/EnterPassword.vue +3 -3
  119. package/src/modules/auth/components/pages/ResetPassword.vue +1 -2
  120. package/src/modules/auth/components/pages/SignIn.vue +26 -10
  121. package/src/modules/auth/components/pages/SignUp.vue +1 -2
  122. package/src/modules/auth/controllers/twofa.controller.js +4 -4
  123. package/src/modules/auth/localization/EnterCode.json +2 -2
  124. package/src/modules/auth/localization/EnterPassword.json +2 -2
  125. package/src/modules/auth/localization/ResetPassword.json +2 -2
  126. package/src/modules/auth/localization/SignIn.json +3 -3
  127. package/src/modules/auth/localization/SignUp.json +3 -3
  128. package/src/modules/auth/utils/server/verifyAppleIdToken.js +0 -1
  129. package/src/modules/backoffice/components/layouts/Backoffice.vue +1 -1
  130. package/src/modules/backoffice/components/pages/Dashboard.vue +171 -120
  131. package/src/modules/backoffice/router/backoffice.js +119 -129
  132. package/src/modules/chats/components/blocks/ChatMessage.vue +25 -0
  133. package/src/modules/chats/components/pages/ChatPage.vue +50 -0
  134. package/src/modules/chats/components/sections/ChatWindow.vue +38 -0
  135. package/src/modules/chats/controllers/chats.controller.js +32 -0
  136. package/src/modules/chats/models/chat.model.js +26 -0
  137. package/src/modules/chats/routes/chats.routes.js +53 -0
  138. package/src/modules/chats/store/chat.store.js +61 -0
  139. package/src/modules/community/components/blocks/CardBlogpost.vue +19 -4
  140. package/src/modules/community/components/layouts/Community.vue +96 -39
  141. package/src/modules/community/components/pages/Blog.vue +4 -3
  142. package/src/modules/community/components/pages/BlogPost.vue +10 -1
  143. package/src/modules/community/components/pages/CreateBlogPost.vue +36 -17
  144. package/src/modules/community/components/sections/HotPosts.vue +3 -3
  145. package/src/modules/community/components/sections/JoinUs.vue +19 -13
  146. package/src/modules/community/controllers/blog.controller.js +3 -4
  147. package/src/modules/community/controllers/utils/queryProcessor.js +16 -17
  148. package/src/modules/community/models/blogpost.model.js +6 -3
  149. package/src/modules/community/store/blogposts.js +1 -0
  150. package/src/modules/constructor/components/elements/Embed.vue +12 -1
  151. package/src/modules/constructor/components/elements/ImageUpload.vue +2 -2
  152. package/src/modules/constructor/components/elements/Textarea.vue +6 -1
  153. package/src/modules/constructor/components/elements/Video.vue +79 -0
  154. package/src/modules/constructor/components/elements/VideoPlayer.vue +59 -0
  155. package/src/modules/constructor/components/elements/Youtube.vue +52 -0
  156. package/src/modules/constructor/components/sections/Constructor.vue +27 -3
  157. package/src/modules/events/components/layouts/layoutEvents.vue +7 -28
  158. package/src/modules/files/controllers/files.controller.js +9 -22
  159. package/src/modules/files/middlewares/server/index.js +2 -2
  160. package/src/modules/files/middlewares/server/middlewareBusboy.js +137 -0
  161. package/src/modules/files/routes/files.routes.js +9 -9
  162. package/src/modules/globals/localization/vue-i18n.js +8 -1
  163. package/src/modules/globals/mixins/mixins.js +23 -13
  164. package/src/modules/globals/router/routerGuards.js +2 -2
  165. package/src/modules/globals/store/globals.js +86 -9
  166. package/src/modules/globals/utils/mailing.js +24 -3
  167. package/src/modules/icons/entities/IconCommunity.vue +4 -4
  168. package/src/modules/icons/entities/IconEvents.vue +1 -1
  169. package/src/modules/icons/entities/IconGroups.vue +1 -1
  170. package/src/modules/icons/entities/IconPrice.vue +5 -0
  171. package/src/modules/icons/entities/IconProfile.vue +5 -0
  172. package/src/modules/icons/entities/IconShopcart.vue +5 -0
  173. package/src/modules/icons/entities/IconTime.vue +5 -0
  174. package/src/modules/icons/icons.client.js +4 -0
  175. package/src/modules/icons/labels/LabelAppStore.vue +24 -24
  176. package/src/modules/icons/labels/LabelGooglePlay.vue +9 -9
  177. package/src/modules/icons/logos/Logotype.vue +20 -0
  178. package/src/modules/icons/navigation/IconAdd.vue +17 -0
  179. package/src/modules/icons/navigation/IconChevronBottom.vue +18 -0
  180. package/src/modules/icons/navigation/IconChevronRight.vue +3 -3
  181. package/src/modules/icons/navigation/IconDelete.vue +19 -0
  182. package/src/modules/icons/navigation/IconMinus.vue +15 -0
  183. package/src/modules/icons/navigation/IconSearch.vue +17 -0
  184. package/src/modules/icons/navigation/IconUpload.vue +16 -0
  185. package/src/modules/icons/placeholders/PlaceholderImage.vue +5 -0
  186. package/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue +20 -0
  187. package/src/modules/icons/placeholders/PlaceholderUserpic.vue +4 -18
  188. package/src/modules/icons/socials/instagram.vue +1 -1
  189. package/src/modules/icons/socials/line.vue +1 -1
  190. package/src/modules/icons/socials/reddit.vue +1 -1
  191. package/src/modules/icons/socials/telegram.vue +1 -1
  192. package/src/modules/icons/socials/twitter.vue +1 -1
  193. package/src/modules/icons/socials/youtube.vue +1 -1
  194. package/src/modules/landing/components/sections/Guide.vue +92 -0
  195. package/src/modules/landing/components/sections/MobileApp.vue +23 -12
  196. package/src/modules/marketplace/components/layouts/Marketplace.vue +76 -188
  197. package/src/modules/marketplace/components/pages/Catalog.vue +65 -119
  198. package/src/modules/marketplace/components/sections/Filters.vue +195 -0
  199. package/src/modules/marketplace/store/marketplace.js +2 -2
  200. package/src/modules/middlewares/client/auth.validation.js +0 -6
  201. package/src/modules/middlewares/client/states.validation.js +2 -8
  202. package/src/modules/middlewares/server/authJwt.js +1 -1
  203. package/src/modules/mobile/components/Menu/MenuItem.vue +3 -6
  204. package/src/modules/openai/controllers/openai.controller.js +0 -1
  205. package/src/modules/orders/components/blocks/CardOrder.vue +166 -0
  206. package/src/modules/orders/components/blocks/CardOrderItem.vue +59 -66
  207. package/src/modules/orders/components/blocks/Positions.vue +4 -4
  208. package/src/modules/orders/components/pages/EditOrder.vue +78 -142
  209. package/src/modules/orders/components/pages/FormOrder.vue +192 -0
  210. package/src/modules/orders/components/pages/Order.vue +326 -120
  211. package/src/modules/orders/components/pages/Orders.vue +13 -9
  212. package/src/modules/orders/components/pages/{ViewOrder.vue → Orders_refact.vue} +13 -10
  213. package/src/modules/orders/components/partials/ShopCart.vue +22 -13
  214. package/src/modules/orders/components/sections/EmptyState.vue +1 -1
  215. package/src/modules/orders/components/sections/{Form.vue → FormOrderDetails.vue} +38 -106
  216. package/src/modules/orders/controllers/orders.controller.js +37 -28
  217. package/src/modules/orders/models/order.model.js +39 -9
  218. package/src/modules/orders/router/orders.router.js +23 -2
  219. package/src/modules/orders/routes/orders.routes.js +14 -17
  220. package/src/modules/orders/store/orders.js +24 -9
  221. package/src/modules/orders/store/shopcart.js +20 -19
  222. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  223. package/src/modules/organizations/components/blocks/CardOrganization.vue +98 -46
  224. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  225. package/src/modules/organizations/components/blocks/Socials.vue +11 -3
  226. package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +1 -1
  227. package/src/modules/organizations/components/pages/Department.vue +1 -1
  228. package/src/modules/organizations/components/pages/DepartmentEdit.vue +4 -4
  229. package/src/modules/organizations/components/pages/Members.vue +6 -4
  230. package/src/modules/organizations/components/pages/Organization.vue +120 -49
  231. package/src/modules/organizations/components/pages/OrganizationEdit.vue +8 -1
  232. package/src/modules/organizations/components/pages/Organizations.vue +27 -6
  233. package/src/modules/organizations/components/sections/DetailsTab.vue +11 -9
  234. package/src/modules/organizations/components/sections/Feed.vue +0 -3
  235. package/src/modules/organizations/components/sections/FeedDepartments.vue +2 -2
  236. package/src/modules/organizations/controllers/organizations.controller.js +126 -15
  237. package/src/modules/organizations/controllers/utils/addMembersQuantity.js +19 -9
  238. package/src/modules/organizations/models/organization.model.js +5 -2
  239. package/src/modules/organizations/router/members.router.js +1 -3
  240. package/src/modules/organizations/router/organizations.js +8 -6
  241. package/src/modules/organizations/router/products.router.js +36 -2
  242. package/src/modules/organizations/store/organizations.js +38 -84
  243. package/src/modules/pages/controllers/pages.controller.js +0 -4
  244. package/src/modules/payments/controller/payments.controller.js +1 -1
  245. package/src/modules/products/components/blocks/CardLeftover.vue +17 -22
  246. package/src/modules/products/components/blocks/CardPosition.vue +96 -49
  247. package/src/modules/products/components/blocks/CardProduct.vue +24 -53
  248. package/src/modules/products/components/blocks/Images360.vue +4 -4
  249. package/src/modules/products/components/blocks/ImagesThumbnails.vue +2 -7
  250. package/src/modules/products/components/blocks/ListPositions.vue +74 -0
  251. package/src/modules/products/components/elements/Price.vue +11 -5
  252. package/src/modules/products/components/elements/THC.vue +6 -6
  253. package/src/modules/products/components/pages/{LeftoverAdd.vue → EditLeftover.vue} +93 -79
  254. package/src/modules/products/components/pages/Leftovers.vue +74 -70
  255. package/src/modules/products/components/pages/Product.vue +4 -7
  256. package/src/modules/products/components/pages/ProductEdit.vue +230 -88
  257. package/src/modules/products/components/pages/ProductRecommmendation.vue +1 -1
  258. package/src/modules/products/components/pages/Products.vue +6 -3
  259. package/src/modules/products/components/pages/ProductsBackoffice.vue +3 -5
  260. package/src/modules/products/components/sections/EditModifications.vue +3 -3
  261. package/src/modules/products/components/sections/EditProductInfo.vue +40 -50
  262. package/src/modules/products/components/sections/FilterProducts.vue +57 -18
  263. package/src/modules/products/components/sections/HeroRecommendation.vue +233 -99
  264. package/src/modules/products/components/sections/MenuSection.vue +127 -0
  265. package/src/modules/products/components/sections/PopularProducts.vue +81 -37
  266. package/src/modules/products/components/sections/SectionProduct.vue +21 -23
  267. package/src/modules/products/controllers/leftovers.controller.js +11 -1
  268. package/src/modules/products/controllers/products.controller.js +100 -97
  269. package/src/modules/products/models/leftover.model.js +6 -4
  270. package/src/modules/products/models/product.model.js +13 -1
  271. package/src/modules/products/routes/products.routes.js +4 -4
  272. package/src/modules/products/store/leftovers.js +4 -24
  273. package/src/modules/products/store/products.js +44 -30
  274. package/src/modules/spots/components/blocks/CardSpot.vue +43 -72
  275. package/src/modules/spots/components/layouts/Spots.vue +9 -91
  276. package/src/modules/spots/components/pages/Map.vue +171 -62
  277. package/src/modules/spots/components/pages/Spot.vue +1 -1
  278. package/src/modules/spots/components/pages/SpotEdit.vue +131 -174
  279. package/src/modules/spots/controllers/spots.controller.js +1 -0
  280. package/src/modules/spots/models/spot.model.js +6 -3
  281. package/src/modules/spots/store/spots.js +42 -48
  282. package/src/modules/users/components/pages/Profile.vue +6 -28
  283. package/src/modules/users/components/pages/ProfileBlogposts.vue +1 -1
  284. package/src/modules/users/components/pages/ProfileEdit.vue +1 -1
  285. package/src/modules/users/components/pages/ProfileEvents.vue +1 -1
  286. package/src/modules/users/components/pages/ProfileOrganizations.vue +1 -1
  287. package/src/modules/users/router/users.js +1 -1
  288. package/src/modules/wallet/components/pages/Wallet.vue +105 -109
  289. package/src/modules/wallet/controllers/crypto.controller.js +129 -0
  290. package/src/modules/wallet/models/reward.model.js +53 -0
  291. package/src/modules/wallet/routes/crypto.routes.js +36 -0
  292. package/src/modules/wallet/store/wallet.js +52 -49
  293. package/src/styles/base/all.scss +144 -12
  294. package/src/styles/base/backgrounds.scss +2 -34
  295. package/src/styles/base/borders.scss +18 -23
  296. package/src/styles/base/scrolling.scss +97 -29
  297. package/src/styles/base/{shadows.scss → shadow_transitions_hover_refactor.scss} +55 -2
  298. package/src/styles/config.scss +69 -17
  299. package/src/styles/layout.scss +12 -182
  300. package/src/styles/reset.scss +20 -21
  301. package/src/styles/responsive.scss +4 -67
  302. package/src/styles/theme.scss +3 -4
  303. package/src/styles/typography.scss +15 -17
  304. package/src/assets/fonts/AvenirNext-Bold.woff2 +0 -0
  305. package/src/assets/fonts/AvenirNext-DemiBold.woff2 +0 -0
  306. package/src/assets/fonts/AvenirNext-Heavy.woff2 +0 -0
  307. package/src/assets/fonts/AvenirNext-Medium.woff2 +0 -0
  308. package/src/assets/fonts/AvenirNext-Regular.woff2 +0 -0
  309. package/src/assets/fonts/AvenirNext-UltraLight.woff2 +0 -0
  310. package/src/modules/files/middlewares/server/md.js +0 -152
  311. package/src/modules/files/middlewares/server/middlewareMulter.js +0 -121
  312. package/src/modules/organizations/controllers/organizations.new.controller.js +0 -372
  313. package/src/modules/products/components/blocks/EditCategories.vue +0 -68
  314. package/src/modules/products/components/sections/EditParameters.vue +0 -58
  315. package/src/modules/products/components/sections/EditProductImages.vue +0 -67
  316. package/src/modules/spots/components/sections/Feed.vue +0 -64
  317. package/src/styles/base/border-radius.scss +0 -47
  318. package/src/styles/base/cursors.scss +0 -23
  319. package/src/styles/base/height.scss +0 -60
  320. package/src/styles/base/hovers.scss +0 -110
  321. package/src/styles/base/positions.scss +0 -192
  322. package/src/styles/base/transitions.scss +0 -137
  323. package/src/styles/base/width.scss +0 -2
  324. package/src/styles/components/block.scss +0 -18
  325. package/src/styles/components/breadcrumbs.scss +0 -0
  326. package/src/styles/components/input.scss +0 -319
@@ -49,7 +49,7 @@ const controllerFactory = (db) => {
49
49
  ),
50
50
  ...queryProcessorGlobals.getPaginationOptions(
51
51
  req.query.skip,
52
- req.query.limit
52
+ req.query.limit
53
53
  ),
54
54
  // For creator
55
55
  queryProcessorGlobals.getCreatorUserLookupStage(),
@@ -58,18 +58,16 @@ const controllerFactory = (db) => {
58
58
  queryProcessorGlobals.getOwnerUserLookupStage(),
59
59
  queryProcessorGlobals.getOwnerOrganizationLookupStage(),
60
60
  queryProcessorGlobals.getAddFieldsCreatorOwnerStage(),
61
+ { $sample: { size: Number(req.query.limit) } }
61
62
  ]
62
63
 
63
64
  try {
64
- console.log(stages)
65
65
  const posts = await Blogpost.aggregate(stages).exec();
66
66
 
67
67
  if (posts.length === 0) {
68
68
  return res.status(200).send([]);
69
69
  }
70
70
 
71
- // console.log(posts)
72
-
73
71
  res.status(200).send(posts);
74
72
  } catch (err) {
75
73
  console.log(err);
@@ -85,6 +83,7 @@ const controllerFactory = (db) => {
85
83
  status: req.body.status,
86
84
  tags: req.body.tags ? req.body.tags : ['All'],
87
85
  owner: req.body.owner,
86
+ source: req.body.source,
88
87
  creator: req.body.creator,
89
88
  content: req.body.content,
90
89
  views: 1
@@ -1,29 +1,32 @@
1
1
  function getPeriodConditions(period) {
2
- const date = new Date();
3
- const matchStage = [];
2
+ const currentDate = new Date();
3
+ const startDate = new Date();
4
4
 
5
5
  switch (period) {
6
6
  case 'today':
7
- date.setDate(date.getDate() - 1);
7
+ startDate.setDate(currentDate.getDate() - 1);
8
8
  break;
9
9
  case 'week':
10
- date.setDate(date.getDate() - 7);
10
+ startDate.setDate(currentDate.getDate() - 7);
11
11
  break;
12
12
  case 'month':
13
- date.setMonth(date.getMonth() - 1);
13
+ startDate.setMonth(currentDate.getMonth() - 1);
14
14
  break;
15
15
  case 'year':
16
- date.setFullYear(date.getFullYear() - 1);
16
+ startDate.setFullYear(currentDate.getFullYear() - 1);
17
17
  break;
18
18
  default:
19
- date.setFullYear(date.getFullYear() - 1);
19
+ startDate.setFullYear(currentDate.getFullYear() - 1);
20
20
  }
21
21
 
22
- if (date) {
23
- return [{ $match: { createdAt: { $gte: date } } }];
24
- } else {
25
- return []
26
- };
22
+ return [{
23
+ $match: {
24
+ createdAt: {
25
+ $gte: startDate,
26
+ $lte: currentDate // Добавлено условие, чтобы исключить будущие записи
27
+ }
28
+ }
29
+ }];
27
30
  }
28
31
 
29
32
  async function getCategoryConditions(category, user) {
@@ -38,13 +41,10 @@ async function getCategoryConditions(category, user) {
38
41
  aggregationStages.push({ $sort: { views: -1, likes: -1 } });
39
42
  break;
40
43
  case 'new':
41
- aggregationStages.push({ $sort: { createdAt: -1 } });
44
+ aggregationStages.push({ $sort: { createdAt: 1 } });
42
45
  break;
43
46
  }
44
47
  }
45
-
46
- // Возвращаем накопленные этапы агрегации.
47
- console.log(aggregationStages)
48
48
  return aggregationStages;
49
49
  }
50
50
 
@@ -52,5 +52,4 @@ async function getCategoryConditions(category, user) {
52
52
  module.exports = {
53
53
  getPeriodConditions,
54
54
  getCategoryConditions,
55
- // ... other functions that you might want to export
56
55
  };
@@ -12,9 +12,12 @@ module.exports = (db) => {
12
12
  content: {
13
13
  type: Array
14
14
  },
15
- }, {
16
- timestamps: {
17
- currentTime: () => Date.now()
15
+ source: {
16
+ type: String
17
+ },
18
+ createdAt: {
19
+ type: Date,
20
+ default: Date.now
18
21
  }
19
22
  },{
20
23
  strict: false
@@ -31,6 +31,7 @@ const state = reactive({
31
31
  name: "",
32
32
  tags: [],
33
33
  owner: {},
34
+ source: null,
34
35
  date: "",
35
36
  views: 0,
36
37
  content: [],
@@ -57,7 +57,18 @@ const props = defineProps([
57
57
  const emit = defineEmits(['input', 'updateBlock']);
58
58
 
59
59
  function isValidEmbedCode(code) {
60
- const allowedSources = [/youtube\.com/, /soundcloud\.com/, /vimeo\.com/];
60
+ const allowedSources = [
61
+ /youtube\.com/,
62
+ /facebook\.com/,
63
+ /instagram\.com/,
64
+ /twitter\.com/,
65
+ /tiktok\.com/,
66
+ /soundcloud\.com/,
67
+ /vimeo\.com/,
68
+ /reddit\.com/,
69
+ /linkedin\.com/,
70
+ /medium\.com/,
71
+ ];
61
72
  return allowedSources.some(pattern => pattern.test(code));
62
73
  }
63
74
 
@@ -48,12 +48,12 @@ async function onFileChange(e) {
48
48
  try {
49
49
  const $axios = axios.create({baseURL: process.env.API_URL, withCredentials: true})
50
50
 
51
- let response = await $axios.post(`/api/upload/file?folderName=${encodeURIComponent(uploadPath)}`, formData, {
51
+ let response = await $axios.post(`/api/upload/multiple?folderName=${encodeURIComponent(props.uploadPath)}`, formData, {
52
52
  headers: {
53
53
  "Content-Type": "multipart/form-data"
54
54
  }
55
55
  });
56
- imageUrl.value = response.data.filepath;
56
+ imageUrl.value = response.data[0].filepath;
57
57
  console.log(imageUrl.value)
58
58
  emit('input', imageUrl.value);
59
59
  emit('updateBlock', props.prop, { content: imageUrl.value });
@@ -8,7 +8,12 @@
8
8
  @keyup="handleKeyUp"
9
9
  ref="textarea"
10
10
  tabindex="-1"
11
- class="text-area mn-b-thin">
11
+ class="text-area mn-b-thin"
12
+ :class="{
13
+ 't-main t-semi': prop.type === 'Link'
14
+ }"
15
+ >
16
+
12
17
  </textarea>
13
18
  </div>
14
19
  </template>
@@ -0,0 +1,79 @@
1
+ <template>
2
+ <div
3
+ class="mn-b-thin w-100 pd-medium bg-white radius-medium"
4
+ >
5
+
6
+ <div v-if="prop.content" class="flex-center flex">
7
+ <video controls class="w-100">
8
+ <source :src="prop.content" type="video/mp4">
9
+ Your browser does not support the video tag.
10
+ </video>
11
+ </div>
12
+
13
+ <div
14
+ v-else
15
+ >
16
+ <Upload
17
+ v-model:field="imageUrl"
18
+ @file-change="onComponentSave"
19
+ type="file"
20
+ :placeholder="'Enter embed code'"
21
+ class="
22
+ w-100
23
+ br-solid
24
+ br-1px
25
+ br-black-transp-10
26
+ pd-medium
27
+ radius-small
28
+ mn-b-thin
29
+ "
30
+ />
31
+ </div>
32
+ </div>
33
+ </template>
34
+
35
+ <script setup>
36
+ import { ref } from 'vue';
37
+
38
+ import Upload from '@pf/src/components/Upload/Upload.vue'
39
+
40
+ const imageUrl = ref(null);
41
+ const fileInput = ref(null);
42
+
43
+ const props = defineProps([
44
+ 'label',
45
+ 'value',
46
+ 'prop'
47
+ ]);
48
+
49
+ const emit = defineEmits(['input', 'updateBlock']);
50
+
51
+ function isValidEmbedCode(code) {
52
+ const allowedSources = [/youtube\.com/, /soundcloud\.com/, /vimeo\.com/];
53
+ return allowedSources.some(pattern => pattern.test(code));
54
+ }
55
+
56
+
57
+ function updateBlock(updatedBlock) {
58
+ const index = post.value.content.findIndex(block => block === updatedBlock);
59
+ if (index !== -1) {
60
+ post.value.content.splice(index, 1, updatedBlock);
61
+ }
62
+ }
63
+
64
+
65
+ function onComponentSave(url) {
66
+ console.log(imageUrl.value )
67
+
68
+ imageUrl.value = url
69
+
70
+ if (imageUrl.value ) {
71
+ emit('input', imageUrl.value);
72
+ emit('updateBlock', props.prop, { content: imageUrl.value });
73
+ } else {
74
+ alert('Invalid embed code or source not allowed.');
75
+ }
76
+ }
77
+
78
+ </script>
79
+
@@ -0,0 +1,59 @@
1
+ <template>
2
+ <div
3
+ class="mn-b-thin w-100 pd-medium bg-white radius-medium"
4
+ >
5
+
6
+ <div v-if="prop.content" class="flex-center flex">
7
+ <video controls class="w-100">
8
+ <source :src="prop.content" type="video/mp4">
9
+ Your browser does not support the video tag.
10
+ </video>
11
+ </div>
12
+ </div>
13
+ </template>
14
+
15
+ <script setup>
16
+ import { ref } from 'vue';
17
+
18
+ import Upload from '@pf/src/components/Upload/Upload.vue'
19
+
20
+ const imageUrl = ref(null);
21
+ const fileInput = ref(null);
22
+
23
+ const props = defineProps([
24
+ 'label',
25
+ 'value',
26
+ 'prop'
27
+ ]);
28
+
29
+ const emit = defineEmits(['input', 'updateBlock']);
30
+
31
+ function isValidEmbedCode(code) {
32
+ const allowedSources = [/youtube\.com/, /soundcloud\.com/, /vimeo\.com/];
33
+ return allowedSources.some(pattern => pattern.test(code));
34
+ }
35
+
36
+
37
+ function updateBlock(updatedBlock) {
38
+ const index = post.value.content.findIndex(block => block === updatedBlock);
39
+ if (index !== -1) {
40
+ post.value.content.splice(index, 1, updatedBlock);
41
+ }
42
+ }
43
+
44
+
45
+ function onComponentSave(url) {
46
+ console.log(imageUrl.value )
47
+
48
+ imageUrl.value = url
49
+
50
+ if (imageUrl.value ) {
51
+ emit('input', imageUrl.value);
52
+ emit('updateBlock', props.prop, { content: imageUrl.value });
53
+ } else {
54
+ alert('Invalid embed code or source not allowed.');
55
+ }
56
+ }
57
+
58
+ </script>
59
+
@@ -0,0 +1,52 @@
1
+ <template>
2
+ <div class="mn-b-thin w-100 pd-medium bg-white radius-medium">
3
+ <!-- <VueYoutube v-if="prop.content" :video-id="prop.content" />
4
+
5
+
6
+ <div v-else class="flex-v-center flex-nowrap flex gap-small">
7
+ <Field
8
+ v-model:field="embedCode"
9
+ type="textarea"
10
+ :placeholder="'Paste your embed code here'"
11
+ class="
12
+ w-100
13
+ br-solid
14
+ br-1px
15
+ br-black-transp-10
16
+ pd-medium
17
+ radius-small
18
+ mn-b-thin
19
+ "
20
+ />
21
+
22
+ <p class="t-center">Embeds from youtube.com, vimeo.com, soundcloud.com are allowed</p>
23
+ <button @click="onComponentClick" class="button-small button">Save</button>
24
+ </div> -->
25
+ </div>
26
+ </template>
27
+
28
+ <script setup>
29
+ import { ref } from 'vue';
30
+ // import VueYoutube from 'vue-youtube-vue-3'
31
+ import Field from '@pf/src/components/Field/Field.vue'
32
+
33
+ const embedCode = ref(null);
34
+
35
+ const props = defineProps(['label', 'value', 'prop']);
36
+
37
+ const emit = defineEmits(['input', 'updateBlock']);
38
+
39
+ function isValidEmbedCode(code) {
40
+ const allowedSources = [/youtube\.com/,/youtu\.be/,/soundcloud\.com/, /vimeo\.com/];
41
+ return allowedSources.some(pattern => pattern.test(code));
42
+ }
43
+
44
+ function onComponentClick() {
45
+ if (embedCode.value) {
46
+ emit('input', embedCode.value);
47
+ emit('updateBlock', props.prop, { content: embedCode.value });
48
+ } else {
49
+ alert('Invalid embed code or source not allowed.');
50
+ }
51
+ }
52
+ </script>
@@ -75,12 +75,30 @@ a<template>
75
75
  >
76
76
  Add Embed
77
77
  </span>
78
- <!-- <span
78
+ <span
79
79
  @click="handleAddBlock('Audio', '', index)"
80
80
  class="w-max button-small t-black bg-white button"
81
81
  >
82
82
  Add Audio
83
- </span> -->
83
+ </span>
84
+ <span
85
+ @click="handleAddBlock('Video', '', index)"
86
+ class="w-max button-small t-black bg-white button"
87
+ >
88
+ Add Video
89
+ </span>
90
+ <span
91
+ @click="handleAddBlock('Youtube', '', index)"
92
+ class="w-max button-small t-black bg-white button"
93
+ >
94
+ Add Youtube
95
+ </span>
96
+ <span
97
+ @click="handleAddBlock('Link', '', index)"
98
+ class="w-max button-small t-black bg-white button"
99
+ >
100
+ Add Link
101
+ </span>
84
102
 
85
103
  </div>
86
104
 
@@ -104,6 +122,9 @@ import Bullets from '../elements/Bullets.vue';
104
122
  import ImageUpload from '../elements/ImageUpload.vue';
105
123
  import Embed from '../elements/Embed.vue';
106
124
  import Audio from '../elements/Audio.vue';
125
+ import Video from '../elements/Video.vue';
126
+ import Youtube from '../elements/Youtube.vue';
127
+
107
128
 
108
129
  import { ref, watchEffect, computed } from 'vue';
109
130
  import { VueDraggableNext } from 'vue-draggable-next';
@@ -119,11 +140,14 @@ post.value = { content: props.content }
119
140
  const ComponentMap = {
120
141
  'Textarea': Textarea,
121
142
  'H2': H2,
143
+ 'Link': Textarea,
122
144
  'Bullets': Bullets,
123
145
  'Caption': Caption,
124
146
  'ImageUpload': ImageUpload,
125
147
  'Embed': Embed,
126
- 'Audio': Audio
148
+ 'Audio': Audio,
149
+ 'Video': Video,
150
+ 'Youtube': Youtube
127
151
  };
128
152
 
129
153
  function handleAddBlock(type = 'Textarea', content = '', index, data) {
@@ -1,38 +1,17 @@
1
1
  <template>
2
2
 
3
- <div class="pd-thin min-h-100vh">
3
+ <div class="pd-thin h-min-100">
4
4
  <DatePicker
5
5
  v-model:date="events.state.filter.date"
6
6
  :locale="$i18n.locale"
7
- class="radius-small bg-grey pd-l-zero pd-r-zero pd-medium"
7
+ class="radius-semi o-hidden bg-grey mn-b-thin pd-l-zero pd-r-zero pd-medium"
8
8
  />
9
- <div class="mn-b-thin br-solid br-1px br-grey bg-grey radius-big">
10
9
 
11
- <!-- <section class="radius-bl-big radius-br-big pd-medium bg-black t-white">
12
- <ul class="flex-nowrap flex">
13
- <li
14
- :class="{'t-black bg-white': !route.params.category }"
15
- @click="router.push({name: 'EventList'})"
16
- class="mn-r-small t-medium pd-small radius-small">Featured</li>
17
- <li
18
- :class="{'t-black bg-white': route.params.category === 'new'}"
19
- @click="router.push({name: 'EventList', params: { category: 'new' } })"
20
- class="mn-r-small t-medium pd-small radius-small">No More Snow</li>
21
- <li
22
- :class="{'t-black bg-white': route.params.category === 'following'}"
23
- @click="router.push({name: 'EventList', params: { category: 'following' } })"
24
- class="t-medium pd-small radius-small">Partners</li>
25
- </ul>
26
- </section> -->
27
- </div>
28
-
29
- <section class="">
30
- <router-view v-slot="{ Component, route }">
31
- <transition name="scaleIn" mode="out-in">
32
- <component ref="page" :key="route.query" :is="Component" />
33
- </transition>
34
- </router-view>
35
- </section>
10
+ <router-view v-slot="{ Component, route }">
11
+ <transition name="scaleIn" mode="out-in">
12
+ <component ref="page" :key="route.query" :is="Component" />
13
+ </transition>
14
+ </router-view>
36
15
  </div>
37
16
  </template>
38
17
 
@@ -1,36 +1,24 @@
1
- const controllerFactory = (db, publicPath) => {
2
-
3
- const uploadFileController = async (req, res, next) => {
4
- if (!req.file) {
5
- return res.status(400).send({ message: 'No file uploaded.' });
6
- }
1
+ const path = require('path');
7
2
 
8
- try {
9
- res.status(200).send({
10
- message: 'File uploaded successfully.',
11
- filename: req.file.filename,
12
- filepath: `/${req.query.folderName || 'unsorted'}/${req.file.filename}`
13
- });
14
- } catch (error) {
15
- console.error('Error in uploadFileController:', error);
16
- return res.status(500).send({ message: 'Error during file processing.' });
17
- }
18
- };
3
+ const controllerFactory = (db, publicPath) => {
19
4
 
20
5
  const uploadMultipleFileController = async (req, res, next) => {
21
6
  if (!req.files || req.files.length === 0) {
22
7
  return res.status(400).send({ message: 'No files uploaded.' });
23
8
  }
24
9
 
10
+ const convertToRelativePath = (absolutePath, publicPath) => {
11
+ return '/' + path.relative(publicPath, absolutePath);
12
+ };
13
+
14
+ req.files = req.files.map(file => convertToRelativePath(file, publicPath));
15
+
25
16
  try {
26
17
  const fileResponses = req.files.map(file => ({
27
18
  message: 'File uploaded successfully.',
28
- filename: file.filename,
29
- filepath: `/${req.query.folderName || 'unsorted'}/${file.filename}`
19
+ filepath: file
30
20
  }));
31
21
 
32
- // Your logic related to the DB or further processing can be here.
33
-
34
22
  res.status(200).send(fileResponses);
35
23
  } catch (error) {
36
24
  console.error('Error in uploadMultipleFileController:', error);
@@ -39,7 +27,6 @@ const controllerFactory = (db, publicPath) => {
39
27
  };
40
28
 
41
29
  return {
42
- uploadFileController,
43
30
  uploadMultipleFileController
44
31
  };
45
32
  };
@@ -1,9 +1,9 @@
1
1
  // middlewareIndexFactory.js
2
2
  const middlewareIndexFactory = (db, publicPath) => {
3
- const middlewareMulter = require("./middlewareMulter")(db, publicPath);
3
+ const middlewareBusboy = require("./middlewareBusboy")(db, publicPath);
4
4
 
5
5
  return {
6
- middlewareMulter
6
+ middlewareBusboy
7
7
  };
8
8
  };
9
9
 
@@ -0,0 +1,137 @@
1
+ // middlewareFactory.js
2
+ const sharp = require('sharp');
3
+ const fs = require('fs');
4
+ const fsp = require('fs/promises');
5
+ const os = require('os');
6
+ const path = require('path');
7
+ const busboy = require('busboy');
8
+
9
+ const createThumbnail = async (originalPath) => {
10
+ const thumbnailPath = path.join(
11
+ path.dirname(originalPath),
12
+ 'thumbnail_' + path.basename(originalPath)
13
+ );
14
+ try {
15
+ await sharp(originalPath)
16
+ .rotate()
17
+ .resize({ width: 800 })
18
+ .toFile(thumbnailPath);
19
+ } catch (error) {
20
+ console.error("Error creating thumbnail:", error);
21
+ }
22
+ };
23
+
24
+
25
+ const middlewareFactory = (db, publicPath) => {
26
+
27
+ const generatePreviewMiddleware = async (req, res, next) => {
28
+ const files = req.file ? [req.file] : req.files;
29
+
30
+ try {
31
+ await Promise.all(files.map(file => createThumbnail(file)));
32
+ } catch (error) {
33
+ console.error('Error generating previews:', error);
34
+ }
35
+ next();
36
+ };
37
+
38
+ const uploadMultipleFilesMiddleware = (req, res, next) => {
39
+ let folderName = req.query.folderName || 'unsorted';
40
+
41
+ if (!folderName.startsWith('/')) {
42
+ folderName = '/' + folderName;
43
+ }
44
+
45
+ let files = [];
46
+ let filesWrongSize = [];
47
+ let filesWrongType = [];
48
+
49
+ let filePath = path.join(publicPath, folderName);
50
+ let filePromise;
51
+
52
+ try {
53
+ const bb = busboy({
54
+ headers: req.headers,
55
+ limits: {
56
+ fileSize: 10*1024*1024
57
+ }
58
+ });
59
+
60
+ bb.on('error', err => {
61
+ next(err);
62
+ });
63
+
64
+ let fileFullPath
65
+
66
+ bb.on('file', (name, file, info) => {
67
+ if(info.filename.length > 0) {
68
+ file.resume();
69
+ }
70
+
71
+ if(info.mimeType != 'image/png' && info.mimeType != 'image/jpeg' && info.mimeType != 'image/gif') {
72
+ filesWrongType.push(info.filename);
73
+ file.resume();
74
+ }
75
+
76
+ let fileName = `${Math.floor(Math.random() * 10000)}-${info.filename}`;
77
+
78
+ fileFullPath = path.join(filePath, fileName);
79
+ fileRelativePath = path.join(folderName, fileName);
80
+
81
+ filePromise = new Promise((resolve, reject) => {
82
+ const writeStream = fs.createWriteStream(fileFullPath).on('error', reject).on('finish', resolve);
83
+ file.on('error', reject);
84
+ file.pipe(writeStream);
85
+ });
86
+
87
+ files.push(fileFullPath)
88
+
89
+ file.on('limit', () => {
90
+ filesWrongSize.push(info.filename);
91
+
92
+ fsp.unlink(fileFullPath);
93
+
94
+ const index = files.indexOf(fileFullPath);
95
+
96
+ if (index !== -1) {
97
+ files.splice(index, 1);
98
+ }
99
+
100
+ file.resume();
101
+ });
102
+
103
+ });
104
+
105
+ bb.on('close', async () => {
106
+ try {
107
+ if (!filePromise) {
108
+ res.status(400).json({ message: `Uploaded file '${name}' is missing` });
109
+ return;
110
+ }
111
+
112
+ await filePromise
113
+
114
+ req.files = files
115
+
116
+ next()
117
+ } catch (err) {
118
+ next(err);
119
+
120
+ } finally {
121
+ bb.removeAllListeners();
122
+ }
123
+ });
124
+
125
+ req.pipe(bb);
126
+ } catch (err) {
127
+ res.status(400).json({ message: `Could not retrieve file from request - ${err.message}`});
128
+ }
129
+ };
130
+
131
+ return {
132
+ uploadMultipleFilesMiddleware,
133
+ generatePreviewMiddleware
134
+ };
135
+ };
136
+
137
+ module.exports = middlewareFactory;