@ozdao/prometheus-framework 0.2.30 → 0.2.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (269) 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.cjs.js +30 -29
  25. package/dist/prometheus-framework.es.js +2478 -2282
  26. package/dist/reports.server.js +1 -1
  27. package/dist/reports.server.mjs +1 -1
  28. package/dist/users.server.js +1 -1
  29. package/dist/users.server.mjs +1 -1
  30. package/package.json +4 -2
  31. package/src/assets/images/logo.svg +7 -7
  32. package/src/components/Block/Block.vue +77 -0
  33. package/src/components/Breadcrumbs/Breadcrumbs.vue +2 -2
  34. package/src/components/Button/Button.vue +32 -227
  35. package/src/components/Checkbox/Checkbox.vue +1 -1
  36. package/src/components/Chips/Chips.vue +8 -8
  37. package/src/components/DatePicker/DatePicker.vue +3 -4
  38. package/src/components/EditImages/EditImages.vue +32 -14
  39. package/src/{modules/globals/components/sections → components/Feed}/Feed.vue +60 -45
  40. package/src/components/FieldBig/FieldBig.vue +16 -5
  41. package/src/components/FieldPhone/FieldPhone.vue +2 -1
  42. package/src/components/Footer/Footer.vue +36 -27
  43. package/src/components/Header/Header.vue +161 -166
  44. package/src/components/Loader/Loader.vue +9 -2
  45. package/src/components/LocationMarker/LocationMarker.vue +38 -12
  46. package/src/components/LocationSelection/LocationSelection.vue +67 -75
  47. package/src/components/Magnifier/Magnifier.vue +3 -3
  48. package/src/components/Navigation/Navigation.vue +16 -16
  49. package/src/components/Popup/Popup.vue +8 -6
  50. package/src/components/Select/Select.vue +35 -6
  51. package/src/components/SelectMulti/SelectMulti.vue +5 -13
  52. package/src/components/Shader/Shader.vue +128 -0
  53. package/src/components/Sidebar/Sidebar.vue +71 -35
  54. package/src/components/Spoiler/Spoiler.vue +1 -1
  55. package/src/components/Tab/Tab.vue +1 -1
  56. package/src/components/Tooltip/Tooltip.vue +1 -1
  57. package/src/components/UploadImage/UploadImage.vue +4 -4
  58. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +54 -10
  59. package/src/modules/applications/controllers/applications.controller.js +0 -1
  60. package/src/modules/auth/components/pages/EnterCode.vue +1 -1
  61. package/src/modules/auth/components/pages/EnterPassword.vue +3 -3
  62. package/src/modules/auth/components/pages/ResetPassword.vue +1 -2
  63. package/src/modules/auth/components/pages/SignIn.vue +26 -10
  64. package/src/modules/auth/components/pages/SignUp.vue +1 -2
  65. package/src/modules/auth/controllers/twofa.controller.js +4 -4
  66. package/src/modules/auth/localization/EnterCode.json +2 -2
  67. package/src/modules/auth/localization/EnterPassword.json +2 -2
  68. package/src/modules/auth/localization/ResetPassword.json +2 -2
  69. package/src/modules/auth/localization/SignIn.json +3 -3
  70. package/src/modules/auth/localization/SignUp.json +3 -3
  71. package/src/modules/auth/utils/server/verifyAppleIdToken.js +0 -1
  72. package/src/modules/backoffice/components/layouts/Backoffice.vue +1 -1
  73. package/src/modules/backoffice/components/pages/Dashboard.vue +171 -120
  74. package/src/modules/backoffice/router/backoffice.js +119 -129
  75. package/src/modules/chats/components/blocks/ChatMessage.vue +25 -0
  76. package/src/modules/chats/components/pages/ChatPage.vue +50 -0
  77. package/src/modules/chats/components/sections/ChatWindow.vue +38 -0
  78. package/src/modules/chats/controllers/chats.controller.js +32 -0
  79. package/src/modules/chats/models/chat.model.js +26 -0
  80. package/src/modules/chats/routes/chats.routes.js +53 -0
  81. package/src/modules/chats/store/chat.store.js +61 -0
  82. package/src/modules/community/components/blocks/CardBlogpost.vue +19 -4
  83. package/src/modules/community/components/layouts/Community.vue +96 -39
  84. package/src/modules/community/components/pages/Blog.vue +4 -3
  85. package/src/modules/community/components/pages/BlogPost.vue +10 -1
  86. package/src/modules/community/components/pages/CreateBlogPost.vue +36 -17
  87. package/src/modules/community/components/sections/HotPosts.vue +3 -3
  88. package/src/modules/community/components/sections/JoinUs.vue +19 -13
  89. package/src/modules/community/controllers/blog.controller.js +3 -4
  90. package/src/modules/community/controllers/utils/queryProcessor.js +16 -17
  91. package/src/modules/community/models/blogpost.model.js +6 -3
  92. package/src/modules/community/store/blogposts.js +1 -0
  93. package/src/modules/constructor/components/elements/Embed.vue +12 -1
  94. package/src/modules/constructor/components/elements/ImageUpload.vue +2 -2
  95. package/src/modules/constructor/components/elements/Textarea.vue +6 -1
  96. package/src/modules/constructor/components/elements/Video.vue +79 -0
  97. package/src/modules/constructor/components/elements/VideoPlayer.vue +59 -0
  98. package/src/modules/constructor/components/elements/Youtube.vue +52 -0
  99. package/src/modules/constructor/components/sections/Constructor.vue +27 -3
  100. package/src/modules/events/components/layouts/layoutEvents.vue +7 -28
  101. package/src/modules/files/controllers/files.controller.js +9 -22
  102. package/src/modules/files/middlewares/server/index.js +2 -2
  103. package/src/modules/files/middlewares/server/middlewareBusboy.js +137 -0
  104. package/src/modules/files/routes/files.routes.js +9 -9
  105. package/src/modules/globals/localization/vue-i18n.js +8 -1
  106. package/src/modules/globals/mixins/mixins.js +23 -13
  107. package/src/modules/globals/router/routerGuards.js +2 -2
  108. package/src/modules/globals/store/globals.js +86 -9
  109. package/src/modules/globals/utils/mailing.js +24 -3
  110. package/src/modules/icons/entities/IconCommunity.vue +4 -4
  111. package/src/modules/icons/entities/IconEvents.vue +1 -1
  112. package/src/modules/icons/entities/IconGroups.vue +1 -1
  113. package/src/modules/icons/entities/IconPrice.vue +5 -0
  114. package/src/modules/icons/entities/IconProfile.vue +5 -0
  115. package/src/modules/icons/entities/IconShopcart.vue +5 -0
  116. package/src/modules/icons/entities/IconTime.vue +5 -0
  117. package/src/modules/icons/icons.client.js +4 -0
  118. package/src/modules/icons/labels/LabelAppStore.vue +24 -24
  119. package/src/modules/icons/labels/LabelGooglePlay.vue +9 -9
  120. package/src/modules/icons/logos/Logotype.vue +20 -0
  121. package/src/modules/icons/navigation/IconAdd.vue +17 -0
  122. package/src/modules/icons/navigation/IconChevronBottom.vue +18 -0
  123. package/src/modules/icons/navigation/IconChevronRight.vue +3 -3
  124. package/src/modules/icons/navigation/IconDelete.vue +19 -0
  125. package/src/modules/icons/navigation/IconMinus.vue +15 -0
  126. package/src/modules/icons/navigation/IconSearch.vue +17 -0
  127. package/src/modules/icons/navigation/IconUpload.vue +16 -0
  128. package/src/modules/icons/placeholders/PlaceholderImage.vue +5 -0
  129. package/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue +20 -0
  130. package/src/modules/icons/placeholders/PlaceholderUserpic.vue +4 -18
  131. package/src/modules/icons/socials/instagram.vue +1 -1
  132. package/src/modules/icons/socials/line.vue +1 -1
  133. package/src/modules/icons/socials/reddit.vue +1 -1
  134. package/src/modules/icons/socials/telegram.vue +1 -1
  135. package/src/modules/icons/socials/twitter.vue +1 -1
  136. package/src/modules/icons/socials/youtube.vue +1 -1
  137. package/src/modules/landing/components/sections/Guide.vue +92 -0
  138. package/src/modules/landing/components/sections/MobileApp.vue +23 -12
  139. package/src/modules/marketplace/components/layouts/Marketplace.vue +76 -188
  140. package/src/modules/marketplace/components/pages/Catalog.vue +65 -119
  141. package/src/modules/marketplace/components/sections/Filters.vue +195 -0
  142. package/src/modules/marketplace/store/marketplace.js +2 -2
  143. package/src/modules/middlewares/client/auth.validation.js +0 -6
  144. package/src/modules/middlewares/client/states.validation.js +2 -8
  145. package/src/modules/middlewares/server/authJwt.js +1 -1
  146. package/src/modules/mobile/components/Menu/MenuItem.vue +3 -6
  147. package/src/modules/openai/controllers/openai.controller.js +0 -1
  148. package/src/modules/orders/components/blocks/CardOrder.vue +166 -0
  149. package/src/modules/orders/components/blocks/CardOrderItem.vue +59 -66
  150. package/src/modules/orders/components/blocks/Positions.vue +4 -4
  151. package/src/modules/orders/components/pages/EditOrder.vue +78 -142
  152. package/src/modules/orders/components/pages/FormOrder.vue +192 -0
  153. package/src/modules/orders/components/pages/Order.vue +326 -120
  154. package/src/modules/orders/components/pages/Orders.vue +13 -9
  155. package/src/modules/orders/components/pages/{ViewOrder.vue → Orders_refact.vue} +13 -10
  156. package/src/modules/orders/components/partials/ShopCart.vue +22 -13
  157. package/src/modules/orders/components/sections/EmptyState.vue +1 -1
  158. package/src/modules/orders/components/sections/{Form.vue → FormOrderDetails.vue} +38 -106
  159. package/src/modules/orders/controllers/orders.controller.js +37 -28
  160. package/src/modules/orders/models/order.model.js +39 -9
  161. package/src/modules/orders/router/orders.router.js +23 -2
  162. package/src/modules/orders/routes/orders.routes.js +14 -17
  163. package/src/modules/orders/store/orders.js +24 -9
  164. package/src/modules/orders/store/shopcart.js +20 -19
  165. package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
  166. package/src/modules/organizations/components/blocks/CardOrganization.vue +98 -46
  167. package/src/modules/organizations/components/blocks/Rating.vue +1 -1
  168. package/src/modules/organizations/components/blocks/Socials.vue +11 -3
  169. package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +1 -1
  170. package/src/modules/organizations/components/pages/Department.vue +1 -1
  171. package/src/modules/organizations/components/pages/DepartmentEdit.vue +4 -4
  172. package/src/modules/organizations/components/pages/Members.vue +6 -4
  173. package/src/modules/organizations/components/pages/Organization.vue +120 -49
  174. package/src/modules/organizations/components/pages/OrganizationEdit.vue +8 -1
  175. package/src/modules/organizations/components/pages/Organizations.vue +27 -6
  176. package/src/modules/organizations/components/sections/DetailsTab.vue +11 -9
  177. package/src/modules/organizations/components/sections/Feed.vue +0 -3
  178. package/src/modules/organizations/components/sections/FeedDepartments.vue +2 -2
  179. package/src/modules/organizations/controllers/organizations.controller.js +126 -15
  180. package/src/modules/organizations/controllers/utils/addMembersQuantity.js +19 -9
  181. package/src/modules/organizations/models/organization.model.js +5 -2
  182. package/src/modules/organizations/router/members.router.js +1 -3
  183. package/src/modules/organizations/router/organizations.js +8 -6
  184. package/src/modules/organizations/router/products.router.js +36 -2
  185. package/src/modules/organizations/store/organizations.js +38 -84
  186. package/src/modules/pages/controllers/pages.controller.js +0 -4
  187. package/src/modules/payments/controller/payments.controller.js +1 -1
  188. package/src/modules/products/components/blocks/CardLeftover.vue +17 -22
  189. package/src/modules/products/components/blocks/CardPosition.vue +96 -49
  190. package/src/modules/products/components/blocks/CardProduct.vue +24 -53
  191. package/src/modules/products/components/blocks/Images360.vue +4 -4
  192. package/src/modules/products/components/blocks/ImagesThumbnails.vue +2 -7
  193. package/src/modules/products/components/blocks/ListPositions.vue +74 -0
  194. package/src/modules/products/components/elements/Price.vue +11 -5
  195. package/src/modules/products/components/elements/THC.vue +6 -6
  196. package/src/modules/products/components/pages/{LeftoverAdd.vue → EditLeftover.vue} +93 -79
  197. package/src/modules/products/components/pages/Leftovers.vue +74 -70
  198. package/src/modules/products/components/pages/Product.vue +4 -7
  199. package/src/modules/products/components/pages/ProductEdit.vue +230 -88
  200. package/src/modules/products/components/pages/ProductRecommmendation.vue +1 -1
  201. package/src/modules/products/components/pages/Products.vue +6 -3
  202. package/src/modules/products/components/pages/ProductsBackoffice.vue +3 -5
  203. package/src/modules/products/components/sections/EditModifications.vue +3 -3
  204. package/src/modules/products/components/sections/EditProductInfo.vue +40 -50
  205. package/src/modules/products/components/sections/FilterProducts.vue +57 -18
  206. package/src/modules/products/components/sections/HeroRecommendation.vue +233 -99
  207. package/src/modules/products/components/sections/MenuSection.vue +127 -0
  208. package/src/modules/products/components/sections/PopularProducts.vue +81 -37
  209. package/src/modules/products/components/sections/SectionProduct.vue +21 -23
  210. package/src/modules/products/controllers/leftovers.controller.js +11 -1
  211. package/src/modules/products/controllers/products.controller.js +100 -97
  212. package/src/modules/products/models/leftover.model.js +6 -4
  213. package/src/modules/products/models/product.model.js +13 -1
  214. package/src/modules/products/routes/products.routes.js +4 -4
  215. package/src/modules/products/store/leftovers.js +4 -24
  216. package/src/modules/products/store/products.js +44 -30
  217. package/src/modules/spots/components/blocks/CardSpot.vue +43 -72
  218. package/src/modules/spots/components/layouts/Spots.vue +9 -91
  219. package/src/modules/spots/components/pages/Map.vue +171 -62
  220. package/src/modules/spots/components/pages/Spot.vue +1 -1
  221. package/src/modules/spots/components/pages/SpotEdit.vue +131 -174
  222. package/src/modules/spots/controllers/spots.controller.js +1 -0
  223. package/src/modules/spots/models/spot.model.js +6 -3
  224. package/src/modules/spots/store/spots.js +42 -48
  225. package/src/modules/users/components/pages/Profile.vue +6 -28
  226. package/src/modules/users/components/pages/ProfileBlogposts.vue +1 -1
  227. package/src/modules/users/components/pages/ProfileEdit.vue +1 -1
  228. package/src/modules/users/components/pages/ProfileEvents.vue +1 -1
  229. package/src/modules/users/components/pages/ProfileOrganizations.vue +1 -1
  230. package/src/modules/users/router/users.js +1 -1
  231. package/src/modules/wallet/components/pages/Wallet.vue +105 -109
  232. package/src/modules/wallet/controllers/crypto.controller.js +129 -0
  233. package/src/modules/wallet/models/reward.model.js +53 -0
  234. package/src/modules/wallet/routes/crypto.routes.js +36 -0
  235. package/src/modules/wallet/store/wallet.js +52 -49
  236. package/src/styles/base/all.scss +143 -11
  237. package/src/styles/base/backgrounds.scss +2 -34
  238. package/src/styles/base/borders.scss +18 -23
  239. package/src/styles/base/scrolling.scss +97 -29
  240. package/src/styles/base/{shadows.scss → shadow_transitions_hover_refactor.scss} +55 -2
  241. package/src/styles/config.scss +69 -17
  242. package/src/styles/layout.scss +12 -182
  243. package/src/styles/reset.scss +20 -21
  244. package/src/styles/responsive.scss +4 -67
  245. package/src/styles/theme.scss +3 -4
  246. package/src/styles/typography.scss +15 -17
  247. package/src/assets/fonts/AvenirNext-Bold.woff2 +0 -0
  248. package/src/assets/fonts/AvenirNext-DemiBold.woff2 +0 -0
  249. package/src/assets/fonts/AvenirNext-Heavy.woff2 +0 -0
  250. package/src/assets/fonts/AvenirNext-Medium.woff2 +0 -0
  251. package/src/assets/fonts/AvenirNext-Regular.woff2 +0 -0
  252. package/src/assets/fonts/AvenirNext-UltraLight.woff2 +0 -0
  253. package/src/modules/files/middlewares/server/md.js +0 -152
  254. package/src/modules/files/middlewares/server/middlewareMulter.js +0 -121
  255. package/src/modules/organizations/controllers/organizations.new.controller.js +0 -372
  256. package/src/modules/products/components/blocks/EditCategories.vue +0 -68
  257. package/src/modules/products/components/sections/EditParameters.vue +0 -58
  258. package/src/modules/products/components/sections/EditProductImages.vue +0 -67
  259. package/src/modules/spots/components/sections/Feed.vue +0 -64
  260. package/src/styles/base/border-radius.scss +0 -47
  261. package/src/styles/base/cursors.scss +0 -23
  262. package/src/styles/base/height.scss +0 -60
  263. package/src/styles/base/hovers.scss +0 -110
  264. package/src/styles/base/positions.scss +0 -192
  265. package/src/styles/base/transitions.scss +0 -137
  266. package/src/styles/base/width.scss +0 -2
  267. package/src/styles/components/block.scss +0 -18
  268. package/src/styles/components/breadcrumbs.scss +0 -0
  269. package/src/styles/components/input.scss +0 -319
@@ -0,0 +1,195 @@
1
+ <template>
2
+ <div class="z-index-1 pos-relative radius-big bg-black t-white pd-medium flex-v-center flex-nowrap flex">
3
+ <!-- <p class="t-semi radius-extra uppercase p-medium mn-r-thin">Filter by</p> -->
4
+ <Dropdown
5
+ :label="t('categoriesTitle')"
6
+ class="cursor-pointer mn-r-small br-solid br-2px br-white pd-thin t-semi radius-extra uppercase p-medium"
7
+ :class="[
8
+ store.marketplace.state.filter.categories.length > 0 ? 'bg-white t-black' : ''
9
+ ]"
10
+ >
11
+ <div class="w-100 h-100 radius-semi o-hidden bg-black">
12
+ <Checkbox
13
+ v-for="(category, index) in categories"
14
+ :label="category.name"
15
+ name="categories"
16
+ :value="category.url"
17
+ class="cursor-pointer w-100 bg-black t-white radius-small pd-small"
18
+ :radio="store.marketplace.state.filter.categories"
19
+ @update:radio="event => store.marketplace.state.filter.categories = event"
20
+ />
21
+ </div>
22
+ </Dropdown>
23
+
24
+ <Dropdown
25
+ :label="t('filters.price.title')"
26
+ class="cursor-pointer mn-r-small br-solid br-2px br-white pd-thin t-semi radius-extra uppercase p-medium"
27
+ :class="[
28
+ store.marketplace.state.filter.prices.length > 0 ? 'bg-white t-black' : ''
29
+ ]"
30
+ >
31
+ <div class="w-100 h-100 radius-semi o-hidden bg-black">
32
+ <Checkbox
33
+ v-for="(price, index) in prices"
34
+ :label="price.label"
35
+ name="prices"
36
+ :value="price.value"
37
+ class="cursor-pointer w-100 mn-t-small bg-black t-white radius-small pd-small"
38
+ :radio="store.marketplace.state.filter.prices"
39
+ @update:radio="event => store.marketplace.state.filter.prices = event"
40
+ />
41
+ </div>
42
+ </Dropdown>
43
+
44
+ <Dropdown
45
+ label="Delivery"
46
+ class="cursor-pointer mn-r-auto br-solid br-2px br-white pd-thin t-semi radius-extra uppercase p-medium"
47
+ :class="[
48
+ store.marketplace.state.filter.delivery.length > 0 ? 'bg-white t-black' : ''
49
+ ]"
50
+ >
51
+ <div class="w-100 h-100 radius-semi o-hidden bg-black">
52
+ <Checkbox
53
+ v-for="(delivery, index) in delivery"
54
+ :label="delivery.label"
55
+ name="prices"
56
+ :value="delivery.value"
57
+ class="cursor-pointer w-100 mn-t-small bg-black t-white radius-small pd-small"
58
+ :radio="store.marketplace.state.filter.delivery"
59
+ @update:radio="event => store.marketplace.state.filter.delivery = event"
60
+ />
61
+ </div>
62
+ </Dropdown>
63
+ <!-- Reset filter -->
64
+ <p class="t-semi radius-extra uppercase p-medium mn-r-thin">Sort by</p>
65
+
66
+ <div class="flex-stretch flex-nowrap gap-thin flex">
67
+ <Select
68
+ :options="['products','distance','popularity']"
69
+ v-model:select="store.marketplace.state.sort.param"
70
+ placeholder="Select type"
71
+ class="
72
+ bg-white
73
+ cursor-pointer
74
+ radius-small
75
+ pd-thin t-semi uppercase p-medium
76
+ w-8r
77
+ t-center
78
+ t-black
79
+ "
80
+ />
81
+ <div
82
+ @click="() => {
83
+ if (store.marketplace.state.sort.order === 'desc') {
84
+ store.marketplace.state.sort.order = 'asc'
85
+ }
86
+ else {
87
+ store.marketplace.state.sort.order = 'desc'
88
+ }
89
+ }"
90
+ class="
91
+ bg-white
92
+ cursor-pointer
93
+ pd-thin
94
+ w-2r
95
+ t-center
96
+ t-black
97
+ radius-small
98
+ flex-justify-between
99
+ flex-column
100
+ flex
101
+ aspect-1x1
102
+ "
103
+ >
104
+ <div v-for="i in 4" :style="`height: 0.2rem; width: ${store.marketplace.state.sort.order === 'desc' ? 100 / i : 25 * i }%;`" class="transition-linear radius-small bg-black"/>
105
+ </div>
106
+ </div>
107
+ </div>
108
+
109
+ </template>
110
+
111
+ <script setup>
112
+ import { computed, onMounted, ref } from 'vue'
113
+
114
+
115
+ import Checkbox from "@pf/src/components/Checkbox/Checkbox.vue";
116
+ import Select from "@pf/src/components/Select/Select.vue";
117
+ import Dropdown from "@pf/src/components/Dropdown/Dropdown.vue";
118
+
119
+ import { useStore } from '@/store'
120
+ import { useI18n } from 'vue-i18n'
121
+
122
+ const store = useStore()
123
+
124
+ const categories = computed(() => store.categories.state.all)
125
+
126
+ const delivery = [
127
+ { label: 'Pickup', value: 'pickup' },
128
+ { label: 'Courier', value: 'courier' },
129
+ { label: 'Post', value: 'post' }
130
+ ]
131
+
132
+ const prices = [
133
+ { label: 'Under 300฿', value: '<300' },
134
+ { label: '300฿ to 600฿', value: '300-600' },
135
+ { label: '600฿ to 1200฿', value: '600-1200' },
136
+ { label: '$1200 and above', value: '>1200' }
137
+ ]
138
+
139
+ const text = {
140
+ locale: 'en',
141
+ messages: {
142
+ en: {
143
+ categoriesTitle: 'Category',
144
+ categories: [],
145
+ sort: {
146
+ price: 'By price',
147
+ newest: 'By newest',
148
+ popularity: 'By popularity'
149
+ },
150
+ filters: {
151
+ title: 'Filters',
152
+ price: {
153
+ title: 'Price',
154
+ from: 'From',
155
+ to: 'To'
156
+ },
157
+ filters: [],
158
+ reset: 'Reset Filters'
159
+ }
160
+ },
161
+ ru: {
162
+ categoriesTitle: 'Категория',
163
+ sort: {
164
+ price: 'По цене',
165
+ newest: 'По новизне',
166
+ popularity: 'По популярности'
167
+ },
168
+ filters: {
169
+ title: 'Фильтры',
170
+ price: {
171
+ title: 'Цена',
172
+ from: 'От',
173
+ to: 'До'
174
+ },
175
+ filters: [],
176
+ reset: 'Сбросить фильтры',
177
+ }
178
+ }
179
+ }
180
+ }
181
+
182
+ const { t } = useI18n(text)
183
+
184
+ onMounted(async () => {
185
+ await store.categories.actions.fetchCategories()
186
+
187
+ store.categories.state.all.forEach( category => {
188
+ category.localization.forEach( localization => {
189
+ text.messages[localization.locale].categories.push(localization.text)
190
+ })
191
+ })
192
+ })
193
+
194
+
195
+ </script>
@@ -24,8 +24,8 @@ const state = reactive({
24
24
  extra: []
25
25
  },
26
26
  sort: {
27
- current: 'popularity',
28
- ascending: false
27
+ param: 'distance',
28
+ order: 'asc'
29
29
  },
30
30
  search: {
31
31
  active: false,
@@ -1,9 +1,5 @@
1
- import { useRoute, useRouter } from 'vue-router'
2
-
3
1
  import * as auth from '../../../modules/auth/store/auth'
4
2
 
5
- const router = useRouter()
6
-
7
3
  function requiresAuth(to, from, next) {
8
4
 
9
5
  const isLogin = auth.state.access.status;
@@ -26,8 +22,6 @@ function requiresAdmin(to, from, next) {
26
22
  next();
27
23
  }
28
24
 
29
-
30
-
31
25
  function requiresNoAuth(to, from, next) {
32
26
  const isLogin = auth.state.access.status;
33
27
  // to.meta.requiresNoAuth
@@ -1,10 +1,6 @@
1
- import { useRoute, useRouter } from 'vue-router'
2
-
3
1
  import * as auth from '../../../modules/auth/store/auth'
4
2
 
5
- const router = useRouter()
6
-
7
- function resetUser(to, from,next) {
3
+ function resetUser(to, from, next) {
8
4
  next()
9
5
  auth.state.user.phone = ''
10
6
  auth.state.user.email = ''
@@ -13,12 +9,10 @@ function resetUser(to, from,next) {
13
9
  }
14
10
 
15
11
  // Check state before open
16
- function checkUser(to, from,next) {
17
- console.log(auth.state.user)
12
+ function checkUser(to, from, next) {
18
13
  if (auth.state.user.phone === '' && auth.state.user.email === '') {
19
14
  next('/auth/signin')
20
15
  } else {
21
- // Allow the user to access the route
22
16
  next()
23
17
  }
24
18
  }
@@ -16,7 +16,7 @@ const middlewareFactory = (db) => {
16
16
  }
17
17
 
18
18
  const decoded = jwt.verify(token, process.env.SECRET_KEY);
19
- req.userId = decoded.id;
19
+ req.userId = decoded._id;
20
20
 
21
21
  console.log('success');
22
22
  next();
@@ -1,13 +1,10 @@
1
1
  <script>
2
2
  import { h, ref, inject, defineComponent } from 'vue';
3
- import IconChevronRight from '@pf/src/modules/icons/navigation/IconChevronRight.vue'; // Importing the IconChevronRight component
3
+
4
+ import IconChevronRight from '@pf/src/modules/icons/navigation/IconChevronRight.vue';
4
5
 
5
6
  export default defineComponent({
6
7
  props: {
7
- theme: {
8
- type: String,
9
- default: 'black' // Значение по умолчанию
10
- }
11
8
  },
12
9
  setup(props, { slots }) {
13
10
  return () => {
@@ -65,7 +62,7 @@
65
62
  )
66
63
  ]
67
64
  ),
68
- h(IconChevronRight, { class: "i-medium mn-r-medium", type: "chevron", theme: props.theme })
65
+ h(IconChevronRight, { class: "i-medium mn-r-medium", type: "chevron"})
69
66
  ]
70
67
  );
71
68
  };
@@ -1,4 +1,3 @@
1
- const fetch = require('node-fetch')
2
1
  const path = require('path');
3
2
  const {v1: uuidv1, v4: uuidv4, } = require('uuid');
4
3
  // Factory
@@ -0,0 +1,166 @@
1
+ <template>
2
+ <div class="pd-big mn-regular order-client-card col">
3
+ <p class="mn-regular flex-center flex-nowrap flex w-100">
4
+ <img v-if="order.status === 'Created'" class="mn-r-small" src="@/assets/icons/status/created.svg"/>
5
+ <img v-if="order.status === 'Confirmed'" class="mn-r-small" src="@/assets/icons/status/confirmed.svg"/>
6
+ <img v-if="order.status === 'Awaiting shipment'" class="mn-r-small" src="@/assets/icons/status/paid.svg"/>
7
+ <img v-if="order.status === 'In delivery'" class="mn-r-small" src="@/assets/icons/status/finished.svg"/>
8
+ <img v-if="order.status === 'Finished'" class="mn-r-small" src="@/assets/icons/status/finished.svg"/>
9
+ <span class="w-100 t-medium p-big">{{order.status}}</span>
10
+ </p>
11
+
12
+ <div class="flex-nowrap flex">
13
+ <div class="mn-r-bold pd-r-big br-right-dark w-66">
14
+ <ul class="mn-semi">
15
+ <!-- <li v-for="(product, index) in orderProducts(order.items.slice(0,2))" :key="product.id" class="shop-cart-item">
16
+ <img v-if="product.images" :src="require( `@/assets/images/products/${product.images[0]}`)">
17
+ <img v-if="!(product.images)" :src="require( `@/assets/icons/photo.svg`)">
18
+
19
+ <div class="text-left">
20
+ <p class="name">{{ product.name }}</p>
21
+
22
+ <div class="flex">
23
+ <div class="small-underline variant">
24
+ <span v-if="!product.size && !product.color" class="">One-size</span>
25
+ <span v-if="product.size" class="">{{ product.size}}</span>
26
+ <span v-if="product.color && product.size" class="">, </span>
27
+ <span v-if="product.color" class="">{{ product.color}}</span>
28
+ </div>
29
+
30
+ <p class="t-demi">$ {{product.quantity}} x {{product.price}}</p>
31
+ </div>
32
+
33
+ </div>
34
+
35
+ </li> -->
36
+ </ul>
37
+ <p class="mn-small t-medium p-big">
38
+ Adress and delivery
39
+ </p>
40
+ <p class="mn-small">
41
+ {{order.delivery.adress}}
42
+ </p>
43
+ <p v-if="order.delivery.type === 'Post'" class="w-">
44
+ You have chosen delivery using the courier service CDEK. Estimated delivery date {{DateToFormattedString(order.createdAt)}}.
45
+ </p>
46
+
47
+ <p v-if="order.delivery.type === 'Courier'" class="w-">
48
+ You have chosen delivery by courier. Estimated delivery date {{DateToFormattedString2(order.createdAt)}}.
49
+ </p>
50
+
51
+ <p v-if="order.delivery.type === 'Pickup'" class="w-">
52
+ You have chosen to receive the order in the Moscow store.
53
+ </p>
54
+ </div>
55
+
56
+
57
+ <div class="w-40">
58
+ <p class="mn-small w-100 t-medium p-big">
59
+ <span class="t-transp">Order:</span> №{{order._id.slice(0,8)}}
60
+ </p>
61
+ <p v-if="order.delivery.type === 'Post'" class="mn-medium w-100">
62
+ <span class="t-transp">Estimated shipping date:</span><br>{{DateToFormattedString(order.createdAt)}}
63
+ </p>
64
+ <p v-if="order.delivery.type === 'Courier'" class="mn-medium w-100">
65
+ <span class="t-transp">Shipping date:</span><br>{{DateToFormattedString2(order.createdAt)}}
66
+ </p>
67
+ <p v-if="order.delivery.type === 'Pickup'" class="mn-medium w-100">
68
+ <span class="t-transp">Type of delivery:</span><br>Pickup
69
+ </p>
70
+ <hr class="mn-medium">
71
+
72
+ <div :class="{'mn-semi': order.delivery.type == ''}" class="flex">
73
+ <p class="t-transp">In total</p>
74
+ <p>$ {{ cartTotalPrice }}</p>
75
+ </div>
76
+ <div v-if="order.delivery.type !== ''" class="mn-semi flex">
77
+ <p class="t-transp">Delivery</p>
78
+ <p v-if="order.delivery.type === 'Pickup'">Free</p>
79
+ <p v-if="order.delivery.type === 'Post'">$ 10</p>
80
+ <p v-if="order.delivery.type === 'Courier'">$ 20</p>
81
+ </div>
82
+ <div class="mn-semi intotal flex-bottom flex">
83
+ <p class="t-transp">In total to pay</p>
84
+ <p v-if="order.delivery.type === ''" class="p-big t-semi">$ {{ cartTotalPrice }}</p>
85
+ <p v-if="order.delivery.type === 'Pickup'" class="p-big t-semi">$ {{ cartTotalPrice}} ₽</p>
86
+ <p v-if="order.delivery.type === 'Courier'" class="p-big t-semi">$ {{ cartTotalPrice + 20 }}</p>
87
+ <p v-if="order.delivery.type === 'Post'" class="p-big t-semi">$ {{ cartTotalPrice + 10 }}</p>
88
+ </div>
89
+ <hr v-if="order.status === 'Confirmed'" class="mn-semi" >
90
+ <!-- <button
91
+ @click="requestPayment(order)"
92
+ v-if="
93
+ order.status === 'Подтвержден'
94
+ && order.payment.type === 'Online'
95
+ && payment.Status !== 'CONFIRMED'
96
+ && payment.Status !== 'REFUNDED'
97
+ "
98
+ class='w-100 button'>Оплатить заказ</button> -->
99
+ <span class="t-transp" v-if="payment && payment.Status === 'CONFIRMED'">Paid</span>
100
+ </div>
101
+ </div>
102
+ </div>
103
+
104
+ </template>
105
+
106
+
107
+ <script setup="props">
108
+ import { defineProps,computed } from 'vue'
109
+ import { useRouter } from 'vue-router'
110
+
111
+ const router = useRouter()
112
+
113
+ const props = defineProps({
114
+ order: Object,
115
+ });
116
+
117
+
118
+
119
+ // await store.dispatch('payments/getStatus', props.order._id)
120
+
121
+ // const payment = computed(() => store.state.payments.current)
122
+ // const cartTotalPrice = computed(() => store.getters['orders/orderTotalPrice'])
123
+
124
+ function requestPayment(order) {
125
+ // store.dispatch("payments/newPayment", order);
126
+ }
127
+
128
+ function DateToFormattedString(d) {
129
+ var fixedDate = new Date(d);
130
+ var mm = (fixedDate.getMonth()+1).toString(); // getMonth() is zero-based
131
+ var dd = (fixedDate.getDate() + 6).toString();
132
+
133
+ return (dd[1]?dd:"0"+dd[0]) + '/' + (mm[1]?mm:"0"+mm[0]);
134
+ }
135
+
136
+ function DateToFormattedString2(d) {
137
+ var fixedDate = new Date(d);
138
+ var mm = (fixedDate.getMonth() + 1).toString(); // getMonth() is zero-based
139
+ var dd = (fixedDate.getDate() + 1).toString();
140
+
141
+ return (dd[1]?dd:"0"+dd[0]) + '/' + (mm[1]?mm:"0"+mm[0]);
142
+ }
143
+
144
+ // function orderProducts (items) {
145
+ // return items.map(({ id, size, color, quantity }) => {
146
+ // const product = store.state.products.all.find(product => product.id === id)
147
+ // return {
148
+ // name: product.name,
149
+ // images: product.images[0],
150
+ // color,
151
+ // size,
152
+ // price: product.price,
153
+ // id: product.id,
154
+ // quantity
155
+ // }
156
+ // })
157
+ // }
158
+
159
+ </script>
160
+
161
+ <style lang="scss" scoped>
162
+ .shop-cart-item {
163
+ &:first-of-type { padding-top: 0;}
164
+ }
165
+
166
+ </style>
@@ -1,45 +1,57 @@
1
1
  <template>
2
- <div class="flex-stretch flex-nojustify flex-nowrap flex shop-cart-item">
3
- <!-- Item Image -->
4
- <img class="bg-grey aspect-1x1 " v-if="product.images[0]" :src="(FILE_SERVER_URL || '') + product.images[0]">
5
- <svg
6
- width="524"
7
- height="345"
8
- viewBox="0 0 524 345"
9
- fill="none"
10
- xmlns="http://www.w3.org/2000/svg"
11
- v-if="!product.images[0]"
12
- class="i-extra"
13
- >
14
- <rect width="524" height="345" fill="white"/>
15
- <rect width="524" height="345" fill="white" />
16
- <circle cx="262" cy="172" r="56" fill="#00ff88" fill-opacity="0.1"/>
17
- <path
18
- fill="#00ff88"
19
- d="M229.348 186.819C230.243 191.884 233.393 194.231 238.458 193.273V193.644C238.458 198.832 241.206 201.581 246.364 201.581H291.545C296.733 201.581 299.481 198.74 299.481 193.644V162.576C299.481 157.481 296.733 154.64 291.545 154.64H285.677L284.071 145.653C283.175 140.619 279.995 138.303 274.899 139.198L230.398 147.043C225.302 147.969 223.048 151.15 223.943 156.246L229.348 186.819ZM230.83 186.479L225.456 156.06C224.715 151.86 226.537 149.266 230.737 148.525L275.084 140.712C279.13 140.001 281.848 141.762 282.62 145.993L284.102 154.64H246.364C241.206 154.64 238.458 157.419 238.458 162.576V191.729L238.365 191.76C234.165 192.532 231.571 190.679 230.83 186.479ZM239.971 162.669C239.971 158.376 242.164 156.153 246.456 156.153H291.483C295.59 156.153 297.968 158.376 297.968 162.669V190.093L284.565 177.894C283.145 176.597 281.662 175.856 279.809 175.856C277.987 175.856 276.628 176.566 275.146 177.863L262.052 189.073L257.142 184.565C255.875 183.36 254.764 182.743 253.158 182.743C251.675 182.743 250.656 183.36 249.39 184.503L239.971 193.212V162.669ZM257.636 178.419C261.373 178.419 264.43 175.3 264.43 171.471C264.43 167.734 261.373 164.584 257.636 164.584C253.806 164.584 250.718 167.734 250.718 171.471C250.718 175.3 253.806 178.419 257.636 178.419Z"
20
- />
21
- </svg>
22
-
23
- <!-- Item Description -->
24
- <div class="text-left">
25
- <!-- Name -->
26
- <p class="name">{{ product.name }}
27
- <!-- Modifications -->
28
- <span v-if="product.size" class="t-transp">, {{ product.size}}</span>
29
- <span v-if="typeof product.color === 'string' && product.size" class="t-transp">, </span>
30
- <span v-if="typeof product.color === 'string' " class="t-transp">{{product.color}}</span>
31
- </p>
32
- <!-- Price -->
33
- <p class="t-main t-demi price mn-b-small"><span v-if="editable" >{{ product.quantity }} x </span>{{product.price}} {{returnCurrency()}}</p>
34
- <!-- Quantity -->
35
- <div v-if="editable" class="flex-nojustify flex">
36
- <div class="flex-nowrap flex">
37
- <button @click="decrease(product)" class="mn-r-thin bg-grey button-square button">-</button>
38
- <button @click="increase(product)" class="mn-r-thin bg-grey button-square button">+</button>
2
+ <div
3
+ class="gap-small pos-relative cols-1"
4
+ style="box-sizing: content-box;"
5
+ >
6
+
7
+ <div class="pos-relative w-100 gap-thin flex-stretch flex-nowrap flex">
8
+ <div class="bg-grey h-100 o-hidden pos-relative radius-small aspect-1x1"
9
+ style="flex: 1 0 auto"
10
+ >
11
+ <!-- Item Image -->
12
+ <img
13
+ class="w-100 object-fit-cover pos-absolute h-100"
14
+ v-if="product.images[0]"
15
+ :src="(FILE_SERVER_URL || '') + product.images[0]"
16
+ >
17
+ <PlaceholderImage
18
+ v-if="!product.images[0]"
19
+ class="bg-grey pos-absolute radius-small w-100 h-100"
20
+ />
21
+ </div>
22
+
23
+
24
+ <!-- Item Description -->
25
+ <div class="w-100 pos-relative">
26
+ <!-- Name -->
27
+ <p class="t-truncate t-medium">{{ product.name }}
28
+ <span v-if="product.size" class="t-transp">, {{ product.size}}</span>
29
+ <span v-if="typeof product.color === 'string' && product.size" class="t-transp">, </span>
30
+ <span v-if="typeof product.color === 'string' " class="t-transp">{{product.color}}</span>
31
+ </p>
32
+ <!-- Price -->
33
+ <p
34
+ class="t-main t-demi"
35
+ >
36
+ <span v-if="product.quantity">{{ product.quantity }} x </span>{{product.price}} {{returnCurrency()}}
37
+ <span v-if="product.sale" class="pd-r-small t-transp t-transp p-medium line-through price">{{(product.price / 100) * (100 + product.sale) }} {{returnCurrency()}} </span>
38
+ </p>
39
+ <!-- Quantity -->
40
+ <div v-if="editable" class="mn-t-thin gap-thin flex-nojustify flex">
41
+ <IconAdd
42
+ @click="increase(product)"
43
+ class="hover-scale-1 cursor-pointer bg-grey i-big pd-thin radius-small"
44
+ />
45
+ <IconMinus
46
+ @click="decrease(product)"
47
+ class="hover-scale-1 cursor-pointer bg-grey i-big pd-thin radius-small"
48
+ />
49
+ <IconDelete
50
+ @click="remove(product)"
51
+ class="hover-scale-1 cursor-pointer bg-grey i-big pd-thin radius-small"
52
+ />
39
53
  </div>
40
- <button @click="remove(product)" class="hover_br-transp hover_br-l-dark bg-transp button-square button">
41
- <svg fill="none" height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="m7.27124 0h5.45456c1.0041 0 1.8182.814027 1.8182 1.81818v.90899h2.7278c1.0042 0 1.8182.81402 1.8182 1.81818v1.81818c0 1.00415-.814 1.81818-1.8182 1.81818h-.0735l-.8363 10.00009c0 1.0042-.814 1.8182-1.8182 1.8182h-9.09087c-1.00416 0-1.81818-.814-1.81504-1.7427l-.83964-10.07559h-.07187c-1.00415 0-1.818177-.81403-1.818177-1.81818v-1.81818c0-1.00416.814027-1.81818 1.818177-1.81818h2.72668v-.90899c0-1.004153.81402-1.81818 1.81818-1.81818zm-1.81889 18.1819-.83047-10h10.75152l-.827 9.9245-.0031.0755zm-2.72612-11.81799v-1.81818h14.54547v1.81818zm10.00137-4.54571v.90909h-5.45456v-.90909z" fill="#8a8a8a" fill-rule="evenodd"/></svg>
42
- </button>
54
+
43
55
  </div>
44
56
  </div>
45
57
  </div>
@@ -51,6 +63,13 @@
51
63
  import { computed } from 'vue'
52
64
  import { useRouter } from 'vue-router'
53
65
 
66
+ import IconAdd from '@pf/src/modules/icons/navigation/IconAdd.vue'
67
+ import IconMinus from '@pf/src/modules/icons/navigation/IconMinus.vue'
68
+ import IconDelete from '@pf/src/modules/icons/navigation/IconDelete.vue'
69
+
70
+
71
+ import PlaceholderImage from '@pf/src/modules/icons/placeholders/PlaceholderImage.vue'
72
+
54
73
  const router = useRouter()
55
74
 
56
75
  const props = defineProps({
@@ -65,32 +84,6 @@
65
84
  </script>
66
85
 
67
86
  <style lang="scss">
68
- .shop-cart-item {
69
- width: 100%;
70
-
71
- // flex: 1 0 auto;
72
- padding-top: 1.5rem;
73
- padding-bottom: 1.5rem;
74
- border-bottom: 1px solid #f7f7f7 ;
75
-
76
- .name {
77
- overflow: hidden; /* Скрывает все, что выходит за пределы блока */
78
- text-overflow: ellipsis; /* Добавляет многоточие, если текст обрезается */
79
- display: -webkit-box; /* Устанавливает элемент как блочный контейнер */
80
- -webkit-line-clamp: 1; /* Ограничивает количество строк до 3 */
81
- -webkit-box-orient: vertical; /* Устанавливает вертикальное направление расположения строк */
82
- }
83
-
84
- > img {
85
- width: 5rem;
86
- aspect-ratio: 1 / 1;
87
- margin-right: 1.25rem;
88
-
89
- object-fit: cover;
90
-
91
- border-radius: 1rem;
92
- }
93
- }
94
87
  </style>
95
88
 
96
89
 
@@ -43,7 +43,7 @@
43
43
  <div v-if="data[index]" class="flex-nowrap flex w-100">
44
44
  <select
45
45
  v-if="product.size"
46
- @input="updateInputText('orders', 'current.items[' + index + '].size', $event)"
46
+ @input="updateInputText('orders', 'current.positions[' + index + '].size', $event)"
47
47
  :value="product.size"
48
48
  placeholder="hello@example.com"
49
49
  class="mn-r-small mn-b-small input-text input"
@@ -54,7 +54,7 @@
54
54
  <select
55
55
  v-if="product.color"
56
56
 
57
- @input="updateInputText('orders', 'current.items[' + index + '].color', $event)"
57
+ @input="updateInputText('orders', 'current.positions[' + index + '].color', $event)"
58
58
  placeholder="hello@example.com"
59
59
  class="mn-r-small mn-b-small input-text input"
60
60
  >
@@ -65,7 +65,7 @@
65
65
 
66
66
 
67
67
  <input
68
- @input="updateInputText('orders', 'current.items[' + index + '].quantity', $event)"
68
+ @input="updateInputText('orders', 'current.positions[' + index + '].quantity', $event)"
69
69
  :value="product.quantity"
70
70
  placeholder="Маргарита"
71
71
  class="mn-b-small input-text input"
@@ -135,7 +135,7 @@
135
135
  }
136
136
 
137
137
  function saveItemList () {
138
- store.dispatch('orders/updateOrderItems', route.params._id)
138
+ store.dispatch('orders/updateOrderpositions', route.params._id)
139
139
  }
140
140
 
141
141