@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.
- package/dist/addMembersQuantity-3505b6f3.mjs +98 -0
- package/dist/addMembersQuantity-fb552ca0.js +97 -0
- package/dist/auth.server.js +6 -9
- package/dist/auth.server.mjs +6 -9
- package/dist/community.server.js +28 -21
- package/dist/community.server.mjs +28 -21
- package/dist/events.server.js +1 -1
- package/dist/events.server.mjs +1 -1
- package/dist/files.server.js +114 -111
- package/dist/files.server.mjs +114 -111
- package/dist/gallery.server.js +3 -3
- package/dist/gallery.server.mjs +3 -3
- package/dist/globals.server.js +1 -1
- package/dist/globals.server.mjs +1 -1
- package/dist/index-a8dffc0c.js +213 -0
- package/dist/index-d769324d.mjs +214 -0
- package/dist/mailing-37c2ba41.mjs +68 -0
- package/dist/mailing-fe16a26a.js +67 -0
- package/dist/main.css +1 -1
- package/dist/middlewares.server.js +1 -1
- package/dist/middlewares.server.mjs +1 -1
- package/dist/organizations.server.js +125 -25
- package/dist/organizations.server.mjs +125 -25
- package/dist/prometheus-framework.cjs.js +30 -29
- package/dist/prometheus-framework.es.js +2478 -2282
- package/dist/reports.server.js +1 -1
- package/dist/reports.server.mjs +1 -1
- package/dist/users.server.js +1 -1
- package/dist/users.server.mjs +1 -1
- package/package.json +4 -2
- package/src/assets/images/logo.svg +7 -7
- package/src/components/Block/Block.vue +77 -0
- package/src/components/Breadcrumbs/Breadcrumbs.vue +2 -2
- package/src/components/Button/Button.vue +32 -227
- package/src/components/Checkbox/Checkbox.vue +1 -1
- package/src/components/Chips/Chips.vue +8 -8
- package/src/components/DatePicker/DatePicker.vue +3 -4
- package/src/components/EditImages/EditImages.vue +32 -14
- package/src/{modules/globals/components/sections → components/Feed}/Feed.vue +60 -45
- package/src/components/FieldBig/FieldBig.vue +16 -5
- package/src/components/FieldPhone/FieldPhone.vue +2 -1
- package/src/components/Footer/Footer.vue +36 -27
- package/src/components/Header/Header.vue +161 -166
- package/src/components/Loader/Loader.vue +9 -2
- package/src/components/LocationMarker/LocationMarker.vue +38 -12
- package/src/components/LocationSelection/LocationSelection.vue +67 -75
- package/src/components/Magnifier/Magnifier.vue +3 -3
- package/src/components/Navigation/Navigation.vue +16 -16
- package/src/components/Popup/Popup.vue +8 -6
- package/src/components/Select/Select.vue +35 -6
- package/src/components/SelectMulti/SelectMulti.vue +5 -13
- package/src/components/Shader/Shader.vue +128 -0
- package/src/components/Sidebar/Sidebar.vue +71 -35
- package/src/components/Spoiler/Spoiler.vue +1 -1
- package/src/components/Tab/Tab.vue +1 -1
- package/src/components/Tooltip/Tooltip.vue +1 -1
- package/src/components/UploadImage/UploadImage.vue +4 -4
- package/src/components/UploadImageMultiple/UploadImageMultiple.vue +54 -10
- package/src/modules/applications/controllers/applications.controller.js +0 -1
- package/src/modules/auth/components/pages/EnterCode.vue +1 -1
- package/src/modules/auth/components/pages/EnterPassword.vue +3 -3
- package/src/modules/auth/components/pages/ResetPassword.vue +1 -2
- package/src/modules/auth/components/pages/SignIn.vue +26 -10
- package/src/modules/auth/components/pages/SignUp.vue +1 -2
- package/src/modules/auth/controllers/twofa.controller.js +4 -4
- package/src/modules/auth/localization/EnterCode.json +2 -2
- package/src/modules/auth/localization/EnterPassword.json +2 -2
- package/src/modules/auth/localization/ResetPassword.json +2 -2
- package/src/modules/auth/localization/SignIn.json +3 -3
- package/src/modules/auth/localization/SignUp.json +3 -3
- package/src/modules/auth/utils/server/verifyAppleIdToken.js +0 -1
- package/src/modules/backoffice/components/layouts/Backoffice.vue +1 -1
- package/src/modules/backoffice/components/pages/Dashboard.vue +171 -120
- package/src/modules/backoffice/router/backoffice.js +119 -129
- package/src/modules/chats/components/blocks/ChatMessage.vue +25 -0
- package/src/modules/chats/components/pages/ChatPage.vue +50 -0
- package/src/modules/chats/components/sections/ChatWindow.vue +38 -0
- package/src/modules/chats/controllers/chats.controller.js +32 -0
- package/src/modules/chats/models/chat.model.js +26 -0
- package/src/modules/chats/routes/chats.routes.js +53 -0
- package/src/modules/chats/store/chat.store.js +61 -0
- package/src/modules/community/components/blocks/CardBlogpost.vue +19 -4
- package/src/modules/community/components/layouts/Community.vue +96 -39
- package/src/modules/community/components/pages/Blog.vue +4 -3
- package/src/modules/community/components/pages/BlogPost.vue +10 -1
- package/src/modules/community/components/pages/CreateBlogPost.vue +36 -17
- package/src/modules/community/components/sections/HotPosts.vue +3 -3
- package/src/modules/community/components/sections/JoinUs.vue +19 -13
- package/src/modules/community/controllers/blog.controller.js +3 -4
- package/src/modules/community/controllers/utils/queryProcessor.js +16 -17
- package/src/modules/community/models/blogpost.model.js +6 -3
- package/src/modules/community/store/blogposts.js +1 -0
- package/src/modules/constructor/components/elements/Embed.vue +12 -1
- package/src/modules/constructor/components/elements/ImageUpload.vue +2 -2
- package/src/modules/constructor/components/elements/Textarea.vue +6 -1
- package/src/modules/constructor/components/elements/Video.vue +79 -0
- package/src/modules/constructor/components/elements/VideoPlayer.vue +59 -0
- package/src/modules/constructor/components/elements/Youtube.vue +52 -0
- package/src/modules/constructor/components/sections/Constructor.vue +27 -3
- package/src/modules/events/components/layouts/layoutEvents.vue +7 -28
- package/src/modules/files/controllers/files.controller.js +9 -22
- package/src/modules/files/middlewares/server/index.js +2 -2
- package/src/modules/files/middlewares/server/middlewareBusboy.js +137 -0
- package/src/modules/files/routes/files.routes.js +9 -9
- package/src/modules/globals/localization/vue-i18n.js +8 -1
- package/src/modules/globals/mixins/mixins.js +23 -13
- package/src/modules/globals/router/routerGuards.js +2 -2
- package/src/modules/globals/store/globals.js +86 -9
- package/src/modules/globals/utils/mailing.js +24 -3
- package/src/modules/icons/entities/IconCommunity.vue +4 -4
- package/src/modules/icons/entities/IconEvents.vue +1 -1
- package/src/modules/icons/entities/IconGroups.vue +1 -1
- package/src/modules/icons/entities/IconPrice.vue +5 -0
- package/src/modules/icons/entities/IconProfile.vue +5 -0
- package/src/modules/icons/entities/IconShopcart.vue +5 -0
- package/src/modules/icons/entities/IconTime.vue +5 -0
- package/src/modules/icons/icons.client.js +4 -0
- package/src/modules/icons/labels/LabelAppStore.vue +24 -24
- package/src/modules/icons/labels/LabelGooglePlay.vue +9 -9
- package/src/modules/icons/logos/Logotype.vue +20 -0
- package/src/modules/icons/navigation/IconAdd.vue +17 -0
- package/src/modules/icons/navigation/IconChevronBottom.vue +18 -0
- package/src/modules/icons/navigation/IconChevronRight.vue +3 -3
- package/src/modules/icons/navigation/IconDelete.vue +19 -0
- package/src/modules/icons/navigation/IconMinus.vue +15 -0
- package/src/modules/icons/navigation/IconSearch.vue +17 -0
- package/src/modules/icons/navigation/IconUpload.vue +16 -0
- package/src/modules/icons/placeholders/PlaceholderImage.vue +5 -0
- package/src/modules/icons/placeholders/PlaceholderOrganizationPic.vue +20 -0
- package/src/modules/icons/placeholders/PlaceholderUserpic.vue +4 -18
- package/src/modules/icons/socials/instagram.vue +1 -1
- package/src/modules/icons/socials/line.vue +1 -1
- package/src/modules/icons/socials/reddit.vue +1 -1
- package/src/modules/icons/socials/telegram.vue +1 -1
- package/src/modules/icons/socials/twitter.vue +1 -1
- package/src/modules/icons/socials/youtube.vue +1 -1
- package/src/modules/landing/components/sections/Guide.vue +92 -0
- package/src/modules/landing/components/sections/MobileApp.vue +23 -12
- package/src/modules/marketplace/components/layouts/Marketplace.vue +76 -188
- package/src/modules/marketplace/components/pages/Catalog.vue +65 -119
- package/src/modules/marketplace/components/sections/Filters.vue +195 -0
- package/src/modules/marketplace/store/marketplace.js +2 -2
- package/src/modules/middlewares/client/auth.validation.js +0 -6
- package/src/modules/middlewares/client/states.validation.js +2 -8
- package/src/modules/middlewares/server/authJwt.js +1 -1
- package/src/modules/mobile/components/Menu/MenuItem.vue +3 -6
- package/src/modules/openai/controllers/openai.controller.js +0 -1
- package/src/modules/orders/components/blocks/CardOrder.vue +166 -0
- package/src/modules/orders/components/blocks/CardOrderItem.vue +59 -66
- package/src/modules/orders/components/blocks/Positions.vue +4 -4
- package/src/modules/orders/components/pages/EditOrder.vue +78 -142
- package/src/modules/orders/components/pages/FormOrder.vue +192 -0
- package/src/modules/orders/components/pages/Order.vue +326 -120
- package/src/modules/orders/components/pages/Orders.vue +13 -9
- package/src/modules/orders/components/pages/{ViewOrder.vue → Orders_refact.vue} +13 -10
- package/src/modules/orders/components/partials/ShopCart.vue +22 -13
- package/src/modules/orders/components/sections/EmptyState.vue +1 -1
- package/src/modules/orders/components/sections/{Form.vue → FormOrderDetails.vue} +38 -106
- package/src/modules/orders/controllers/orders.controller.js +37 -28
- package/src/modules/orders/models/order.model.js +39 -9
- package/src/modules/orders/router/orders.router.js +23 -2
- package/src/modules/orders/routes/orders.routes.js +14 -17
- package/src/modules/orders/store/orders.js +24 -9
- package/src/modules/orders/store/shopcart.js +20 -19
- package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -1
- package/src/modules/organizations/components/blocks/CardOrganization.vue +98 -46
- package/src/modules/organizations/components/blocks/Rating.vue +1 -1
- package/src/modules/organizations/components/blocks/Socials.vue +11 -3
- package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +1 -1
- package/src/modules/organizations/components/pages/Department.vue +1 -1
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +4 -4
- package/src/modules/organizations/components/pages/Members.vue +6 -4
- package/src/modules/organizations/components/pages/Organization.vue +120 -49
- package/src/modules/organizations/components/pages/OrganizationEdit.vue +8 -1
- package/src/modules/organizations/components/pages/Organizations.vue +27 -6
- package/src/modules/organizations/components/sections/DetailsTab.vue +11 -9
- package/src/modules/organizations/components/sections/Feed.vue +0 -3
- package/src/modules/organizations/components/sections/FeedDepartments.vue +2 -2
- package/src/modules/organizations/controllers/organizations.controller.js +126 -15
- package/src/modules/organizations/controllers/utils/addMembersQuantity.js +19 -9
- package/src/modules/organizations/models/organization.model.js +5 -2
- package/src/modules/organizations/router/members.router.js +1 -3
- package/src/modules/organizations/router/organizations.js +8 -6
- package/src/modules/organizations/router/products.router.js +36 -2
- package/src/modules/organizations/store/organizations.js +38 -84
- package/src/modules/pages/controllers/pages.controller.js +0 -4
- package/src/modules/payments/controller/payments.controller.js +1 -1
- package/src/modules/products/components/blocks/CardLeftover.vue +17 -22
- package/src/modules/products/components/blocks/CardPosition.vue +96 -49
- package/src/modules/products/components/blocks/CardProduct.vue +24 -53
- package/src/modules/products/components/blocks/Images360.vue +4 -4
- package/src/modules/products/components/blocks/ImagesThumbnails.vue +2 -7
- package/src/modules/products/components/blocks/ListPositions.vue +74 -0
- package/src/modules/products/components/elements/Price.vue +11 -5
- package/src/modules/products/components/elements/THC.vue +6 -6
- package/src/modules/products/components/pages/{LeftoverAdd.vue → EditLeftover.vue} +93 -79
- package/src/modules/products/components/pages/Leftovers.vue +74 -70
- package/src/modules/products/components/pages/Product.vue +4 -7
- package/src/modules/products/components/pages/ProductEdit.vue +230 -88
- package/src/modules/products/components/pages/ProductRecommmendation.vue +1 -1
- package/src/modules/products/components/pages/Products.vue +6 -3
- package/src/modules/products/components/pages/ProductsBackoffice.vue +3 -5
- package/src/modules/products/components/sections/EditModifications.vue +3 -3
- package/src/modules/products/components/sections/EditProductInfo.vue +40 -50
- package/src/modules/products/components/sections/FilterProducts.vue +57 -18
- package/src/modules/products/components/sections/HeroRecommendation.vue +233 -99
- package/src/modules/products/components/sections/MenuSection.vue +127 -0
- package/src/modules/products/components/sections/PopularProducts.vue +81 -37
- package/src/modules/products/components/sections/SectionProduct.vue +21 -23
- package/src/modules/products/controllers/leftovers.controller.js +11 -1
- package/src/modules/products/controllers/products.controller.js +100 -97
- package/src/modules/products/models/leftover.model.js +6 -4
- package/src/modules/products/models/product.model.js +13 -1
- package/src/modules/products/routes/products.routes.js +4 -4
- package/src/modules/products/store/leftovers.js +4 -24
- package/src/modules/products/store/products.js +44 -30
- package/src/modules/spots/components/blocks/CardSpot.vue +43 -72
- package/src/modules/spots/components/layouts/Spots.vue +9 -91
- package/src/modules/spots/components/pages/Map.vue +171 -62
- package/src/modules/spots/components/pages/Spot.vue +1 -1
- package/src/modules/spots/components/pages/SpotEdit.vue +131 -174
- package/src/modules/spots/controllers/spots.controller.js +1 -0
- package/src/modules/spots/models/spot.model.js +6 -3
- package/src/modules/spots/store/spots.js +42 -48
- package/src/modules/users/components/pages/Profile.vue +6 -28
- package/src/modules/users/components/pages/ProfileBlogposts.vue +1 -1
- package/src/modules/users/components/pages/ProfileEdit.vue +1 -1
- package/src/modules/users/components/pages/ProfileEvents.vue +1 -1
- package/src/modules/users/components/pages/ProfileOrganizations.vue +1 -1
- package/src/modules/users/router/users.js +1 -1
- package/src/modules/wallet/components/pages/Wallet.vue +105 -109
- package/src/modules/wallet/controllers/crypto.controller.js +129 -0
- package/src/modules/wallet/models/reward.model.js +53 -0
- package/src/modules/wallet/routes/crypto.routes.js +36 -0
- package/src/modules/wallet/store/wallet.js +52 -49
- package/src/styles/base/all.scss +143 -11
- package/src/styles/base/backgrounds.scss +2 -34
- package/src/styles/base/borders.scss +18 -23
- package/src/styles/base/scrolling.scss +97 -29
- package/src/styles/base/{shadows.scss → shadow_transitions_hover_refactor.scss} +55 -2
- package/src/styles/config.scss +69 -17
- package/src/styles/layout.scss +12 -182
- package/src/styles/reset.scss +20 -21
- package/src/styles/responsive.scss +4 -67
- package/src/styles/theme.scss +3 -4
- package/src/styles/typography.scss +15 -17
- package/src/assets/fonts/AvenirNext-Bold.woff2 +0 -0
- package/src/assets/fonts/AvenirNext-DemiBold.woff2 +0 -0
- package/src/assets/fonts/AvenirNext-Heavy.woff2 +0 -0
- package/src/assets/fonts/AvenirNext-Medium.woff2 +0 -0
- package/src/assets/fonts/AvenirNext-Regular.woff2 +0 -0
- package/src/assets/fonts/AvenirNext-UltraLight.woff2 +0 -0
- package/src/modules/files/middlewares/server/md.js +0 -152
- package/src/modules/files/middlewares/server/middlewareMulter.js +0 -121
- package/src/modules/organizations/controllers/organizations.new.controller.js +0 -372
- package/src/modules/products/components/blocks/EditCategories.vue +0 -68
- package/src/modules/products/components/sections/EditParameters.vue +0 -58
- package/src/modules/products/components/sections/EditProductImages.vue +0 -67
- package/src/modules/spots/components/sections/Feed.vue +0 -64
- package/src/styles/base/border-radius.scss +0 -47
- package/src/styles/base/cursors.scss +0 -23
- package/src/styles/base/height.scss +0 -60
- package/src/styles/base/hovers.scss +0 -110
- package/src/styles/base/positions.scss +0 -192
- package/src/styles/base/transitions.scss +0 -137
- package/src/styles/base/width.scss +0 -2
- package/src/styles/components/block.scss +0 -18
- package/src/styles/components/breadcrumbs.scss +0 -0
- package/src/styles/components/input.scss +0 -319
@@ -1,84 +1,94 @@
|
|
1
1
|
<template>
|
2
|
-
<header id="header" class="
|
2
|
+
<header id="header" class="
|
3
|
+
pos-relative
|
4
|
+
pd-thin
|
5
|
+
z-index-2
|
6
|
+
gap-thin
|
7
|
+
flex-center
|
8
|
+
flex-nowrap
|
9
|
+
flex
|
10
|
+
h-4r
|
11
|
+
">
|
12
|
+
<!-- MENU -->
|
13
|
+
<button
|
14
|
+
@click.stop="() => store.globals.state.isOpenSidebar = !store.globals.state.isOpenSidebar"
|
15
|
+
class="menu-btn mobile-only"
|
16
|
+
:class="{
|
17
|
+
'menu-btn_active': store.globals.state.isOpenSidebar
|
18
|
+
}"
|
19
|
+
>
|
20
|
+
<span></span>
|
21
|
+
</button>
|
22
|
+
|
23
|
+
<!-- LOGO -->
|
24
|
+
<Logotype
|
25
|
+
@click="router.push({ path: '/' })"
|
26
|
+
class="
|
27
|
+
h-2r
|
28
|
+
w-auto
|
29
|
+
mn-l-thin
|
30
|
+
cursor-pointer
|
31
|
+
"
|
32
|
+
/>
|
33
|
+
|
34
|
+
<button
|
35
|
+
class="
|
36
|
+
cursor-pointer
|
37
|
+
br-solid br-2px br-black
|
38
|
+
bg-transp
|
39
|
+
pd-l-micro pd-r-micro pd-t-nano pd-b-nano
|
40
|
+
radius-extra
|
41
|
+
uppercase
|
42
|
+
t-semi
|
43
|
+
mn-r-thin
|
44
|
+
"
|
45
|
+
@click="openLocationPopup()"
|
46
|
+
>
|
47
|
+
{{store.globals.state.position?.country ? store.globals.state.position.country : '🌎 World'}}
|
48
|
+
</button>
|
49
|
+
|
50
|
+
<!-- NAGIVATION -->
|
51
|
+
<Navigation class="desktop-only"/>
|
52
|
+
|
53
|
+
<Checkbox
|
54
|
+
:label="'Darkmode'"
|
55
|
+
:radio="store.globals.state.theme.darkmode"
|
56
|
+
@update:radio="event => store.globals.actions.toggleTheme()"
|
57
|
+
name="prices"
|
58
|
+
class="desktop-only t-semi pd-micro br-2px br-solid radius-extra br-black-transp-5"
|
59
|
+
/>
|
60
|
+
<Button
|
61
|
+
:submit="a => store.shopcart.actions.toggleShopcart()"
|
62
|
+
:counter="store.shopcart.getters.cartTotalAmount"
|
63
|
+
class="pd-zero mn-l-auto"
|
64
|
+
>
|
65
|
+
<IconShopcart class="i-semi"/>
|
66
|
+
|
67
|
+
</Button>
|
68
|
+
|
69
|
+
<Button
|
70
|
+
class="pd-zero bg-transp"
|
71
|
+
:submit="
|
72
|
+
store.auth.state.access.status === false
|
73
|
+
?
|
74
|
+
a => router.push({name: 'Sign In'})
|
75
|
+
:
|
76
|
+
a => router.push({ name: 'User Profile', params: { _id: store.auth.state.user._id }})
|
77
|
+
"
|
78
|
+
:showSucces="false"
|
79
|
+
:showLoader="false"
|
80
|
+
>
|
81
|
+
<IconProfile class="i-semi"/>
|
82
|
+
</Button>
|
83
|
+
|
84
|
+
|
85
|
+
<Select
|
86
|
+
v-model:select="$i18n.locale"
|
87
|
+
:options="[{name: '🌎 En', value: 'en'}, {name: '🇷🇺 Ru', value: 'ru'}]"
|
88
|
+
:property="'value'"
|
89
|
+
class="pos-relative uppercase pd-micro t-semi bg-grey radius-thin"
|
90
|
+
/>
|
3
91
|
|
4
|
-
<!-- CONTENT -->
|
5
|
-
<div class="br-solid br-1px br-grey bg-white radius-big bottom-header pd-medium z-index-2">
|
6
|
-
<!-- LOGO AND NAVIGATION -->
|
7
|
-
<div class="mn-r-auto flex-nowrap flex-center flex">
|
8
|
-
|
9
|
-
<!-- Menu -->
|
10
|
-
<div class="mobile-only mn-r-medium menu">
|
11
|
-
<img @click="stateSidebar = !stateSidebar" src="@/assets/images/icons/menu.svg">
|
12
|
-
</div>
|
13
|
-
|
14
|
-
<!-- LOGO -->
|
15
|
-
<div class="flex-nowrap flex-center flex mn-r-small logo-link col">
|
16
|
-
<img @click="router.push({ path: '/' } )" src="@/assets/images/logotype.svg">
|
17
|
-
|
18
|
-
<a
|
19
|
-
class="location-button br-inset-2px-black bg-transp pd-thin radius-thin uppercase t-semi"
|
20
|
-
@click="openLocationPopup()"
|
21
|
-
>
|
22
|
-
{{store.globals.state.position.country ? store.globals.state.position.country : 'World'}}
|
23
|
-
</a>
|
24
|
-
|
25
|
-
<Popup
|
26
|
-
@close-popup="closeLocationPopup"
|
27
|
-
:isPopupOpen="store.globals.state.isLocationPopupOpen"
|
28
|
-
class="t-white bg-black pd-big w-m-33r radius-big"
|
29
|
-
>
|
30
|
-
<LocationSelection />
|
31
|
-
</Popup>
|
32
|
-
</div>
|
33
|
-
|
34
|
-
<!-- NAGIVATION -->
|
35
|
-
<Navigation class="desktop-only"/>
|
36
|
-
|
37
|
-
</div>
|
38
|
-
|
39
|
-
<!-- ACTIONS -->
|
40
|
-
<ul class="actions flex-nowrap flex-v-center flex">
|
41
|
-
|
42
|
-
<!-- Search -->
|
43
|
-
<!-- <label class="desktop-only search">
|
44
|
-
<img src="@/assets/images/icons/search.svg">
|
45
|
-
<input
|
46
|
-
:value="search.current"
|
47
|
-
type="text"
|
48
|
-
>
|
49
|
-
</label> -->
|
50
|
-
|
51
|
-
<ButtonIcon
|
52
|
-
:action="
|
53
|
-
store.auth.state.access.status === false
|
54
|
-
?
|
55
|
-
a => router.push({name: 'Sign In'})
|
56
|
-
:
|
57
|
-
a => router.push({ name: 'User Profile', params: { _id: store.auth.state.user._id }})
|
58
|
-
"
|
59
|
-
class="mn-r-small"
|
60
|
-
:class="{'bg-main radius-small':route.name === 'Profile'}"
|
61
|
-
>
|
62
|
-
<img src="@/assets/images/icons/profile.svg">
|
63
|
-
</ButtonIcon>
|
64
|
-
<ButtonIcon
|
65
|
-
:action="
|
66
|
-
a => store.shopcart.actions.toggleShopcart()"
|
67
|
-
:counter="store.shopcart.getters.cartTotalAmount"
|
68
|
-
class=""
|
69
|
-
>
|
70
|
-
<img src="@/assets/images/icons/cart.svg">
|
71
|
-
</ButtonIcon>
|
72
|
-
|
73
|
-
<Select
|
74
|
-
:options="[{name: '🌎 En', value: 'en'}, {name: '🇷🇺 Ru', value: 'ru'} ]"
|
75
|
-
:prop="$i18n"
|
76
|
-
content="locale"
|
77
|
-
size="small"
|
78
|
-
class="mn-l-medium uppercase t-semi bg-grey radius-thin"
|
79
|
-
/>
|
80
|
-
</ul>
|
81
|
-
</div>
|
82
92
|
|
83
93
|
</header>
|
84
94
|
</template>
|
@@ -95,13 +105,15 @@
|
|
95
105
|
// i18n
|
96
106
|
import { useI18n } from 'vue-i18n'
|
97
107
|
// Weeder Component
|
98
|
-
import Popup from '@pf/src/components/Popup/Popup.vue'
|
99
|
-
|
100
108
|
import Navigation from '@pf/src/components/Navigation/Navigation.vue'
|
101
|
-
import LocationSelection from '@pf/src/components/LocationSelection/LocationSelection.vue'
|
102
109
|
// Prometheus Component
|
103
|
-
import
|
104
|
-
import Select from '
|
110
|
+
import Button from '@pf/src/components/Button/Button.vue'
|
111
|
+
import Select from '@pf/src/components/Select/Select.vue'
|
112
|
+
import Checkbox from '@pf/src/components/Checkbox/Checkbox.vue'
|
113
|
+
// Icons module
|
114
|
+
import Logotype from '@pf/src/modules/icons/logos/Logotype.vue'
|
115
|
+
import IconShopcart from '@pf/src/modules/icons/entities/IconShopcart.vue'
|
116
|
+
import IconProfile from '@pf/src/modules/icons/entities/IconProfile.vue'
|
105
117
|
/////////////////////////////
|
106
118
|
// CREATED
|
107
119
|
/////////////////////////////
|
@@ -114,23 +126,7 @@
|
|
114
126
|
// POPUS
|
115
127
|
/////////////////////////////
|
116
128
|
function openLocationPopup() {
|
117
|
-
store.globals.state.
|
118
|
-
}
|
119
|
-
|
120
|
-
function closeLocationPopup() {
|
121
|
-
store.globals.state.isLocationPopupOpen = false;
|
122
|
-
}
|
123
|
-
/////////////////////////////
|
124
|
-
// SIDEBAR
|
125
|
-
/////////////////////////////
|
126
|
-
const stateSidebar = inject('stateSidebar')
|
127
|
-
|
128
|
-
function openSidebar() {
|
129
|
-
stateSidebar.value = true;
|
130
|
-
}
|
131
|
-
|
132
|
-
function closeSiderbar() {
|
133
|
-
stateSidebar.value = false;
|
129
|
+
store.globals.state.isOpenLocationPopup = true;
|
134
130
|
}
|
135
131
|
/////////////////////////////
|
136
132
|
// LOCALIZATION
|
@@ -158,80 +154,79 @@
|
|
158
154
|
});
|
159
155
|
</script>
|
160
156
|
|
161
|
-
<style lang="scss"
|
162
|
-
.router-link-exact-active, .router-link-exact-active:visited {
|
163
|
-
color: rgb(var(--main));
|
164
|
-
}
|
165
|
-
|
157
|
+
<style lang="scss">
|
166
158
|
.location-button {
|
167
159
|
&:hover {
|
168
160
|
box-shadow: inset 0 0 0 2px rgb(var(--main));
|
169
161
|
}
|
170
162
|
}
|
171
163
|
|
172
|
-
.
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
164
|
+
.menu-btn {
|
165
|
+
display: block;
|
166
|
+
width: 2rem;
|
167
|
+
height: 2rem;
|
168
|
+
border-radius: 50%;
|
169
|
+
position: relative;
|
170
|
+
}
|
171
|
+
.menu-btn span,
|
172
|
+
.menu-btn span::before,
|
173
|
+
.menu-btn span::after {
|
174
|
+
position: absolute;
|
175
|
+
top: 50%; margin-top: -1px;
|
176
|
+
left: 50%; margin-left: -10px;
|
177
|
+
width: 20px;
|
178
|
+
height: 2px;
|
179
|
+
background-color: rgb(var(--black));
|
180
|
+
}
|
181
|
+
.menu-btn span::before,
|
182
|
+
.menu-btn span::after {
|
183
|
+
content: '';
|
184
|
+
display: block;
|
185
|
+
transition: 0.2s;
|
186
|
+
}
|
187
|
+
.menu-btn span::before {
|
188
|
+
transform: translateY(-5px);
|
189
|
+
}
|
190
|
+
.menu-btn span::after {
|
191
|
+
transform: translateY(5px);
|
193
192
|
}
|
194
193
|
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
flex-direction: column;
|
205
|
-
flex-wrap: nowrap;
|
206
|
-
// border-bottom: 1px solid rgba(0,0,0,0.1);
|
207
|
-
|
208
|
-
.bottom-header {
|
209
|
-
display: flex;
|
210
|
-
position: sticky;
|
211
|
-
// justify-content: space-between;
|
212
|
-
align-items: center;
|
213
|
-
|
214
|
-
|
215
|
-
height: 4rem;
|
216
|
-
|
217
|
-
.logo-link {
|
218
|
-
height: 3.5rem;
|
219
|
-
text-align: center;
|
220
|
-
|
221
|
-
img { height: 60%; position: relative; }
|
222
|
-
|
223
|
-
&:hover {
|
224
|
-
cursor: pointer;
|
225
|
-
}
|
226
|
-
}
|
227
|
-
|
228
|
-
.button-icon {
|
229
|
-
width: 1.5rem;
|
230
|
-
height: 1.5rem;
|
231
|
-
}
|
232
|
-
}
|
233
|
-
|
194
|
+
.menu-btn_active span:before {
|
195
|
+
transform: rotate(-35deg);
|
196
|
+
width: 10px;
|
197
|
+
transform-origin: left bottom;
|
198
|
+
}
|
199
|
+
.menu-btn_active span:after {
|
200
|
+
transform: rotate(35deg);
|
201
|
+
width: 10px;
|
202
|
+
transform-origin: left top;
|
234
203
|
}
|
235
204
|
|
205
|
+
.menu-block {
|
206
|
+
display: flex;
|
207
|
+
justify-content: center;
|
208
|
+
align-items: center;
|
209
|
+
}
|
210
|
+
.menu-nav {
|
211
|
+
background-color: #fff;
|
212
|
+
height: 50px;
|
213
|
+
|
214
|
+
}
|
215
|
+
.menu-nav__link {
|
216
|
+
display: inline-block;
|
217
|
+
text-decoration: none;
|
218
|
+
color: #fff;
|
219
|
+
margin-right: 20px;
|
220
|
+
}
|
221
|
+
.menu-nav__link {
|
222
|
+
transition: 0.5s;
|
223
|
+
transform-origin: right center;
|
224
|
+
transform: translateX(50%);
|
225
|
+
opacity: 0;
|
226
|
+
}
|
227
|
+
.menu-nav__link_active {
|
228
|
+
transform: translateX(0%);
|
229
|
+
opacity: 1;
|
230
|
+
}
|
236
231
|
|
237
232
|
</style>
|
@@ -1,7 +1,9 @@
|
|
1
1
|
<template>
|
2
2
|
<div class="circular-loader">
|
3
3
|
<svg viewBox="25 25 50 50">
|
4
|
-
|
4
|
+
<circle class="circular-loader-fill" cx="50" cy="50" r="20" fill="none" stroke-width="4" stroke-miterlimit="10" />
|
5
|
+
<circle class="circular-loader-circle" cx="50" cy="50" r="20" fill="none" stroke-width="4" stroke-miterlimit="10" />
|
6
|
+
|
5
7
|
</svg>
|
6
8
|
<div v-if="progress" class="progress-text">{{ progress }}</div>
|
7
9
|
<div v-if="status" class="uppercase t-semi w-m-10r status-text">{{ status }}</div>
|
@@ -38,7 +40,7 @@ export default {
|
|
38
40
|
animation: rotate 2s linear infinite;
|
39
41
|
}
|
40
42
|
|
41
|
-
.circular-loader
|
43
|
+
.circular-loader-circle {
|
42
44
|
stroke-dasharray: 1, 200;
|
43
45
|
stroke-dashoffset: 0;
|
44
46
|
stroke-linecap: round;
|
@@ -46,6 +48,11 @@ export default {
|
|
46
48
|
animation: dash 1.5s ease-in-out infinite;
|
47
49
|
}
|
48
50
|
|
51
|
+
.circular-loader-fill {
|
52
|
+
stroke-linecap: round;
|
53
|
+
stroke: rgba(var(--black),0.2);
|
54
|
+
}
|
55
|
+
|
49
56
|
.progress-text {
|
50
57
|
position: absolute;
|
51
58
|
top: 50%;
|
@@ -1,10 +1,20 @@
|
|
1
1
|
<template>
|
2
|
-
<div class="pos-relative
|
2
|
+
<div class="pos-relative">
|
3
3
|
<div ref="mapContainer" class="w-100 h-100"></div>
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
|
5
|
+
<button class="cursor-pointer flex-center flex pos-absolute pos-t-regular pos-r-regular i-semi bg-second pd-nano radius-extra" @click="setUserLocation">
|
6
|
+
|
7
|
+
<transition name="ScaleOut" mode="out-in">
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
<svg v-if="!locationLoading" class="i-regular" width="98" height="98" viewBox="0 0 98 98" fill="none" xmlns="http://www.w3.org/2000/svg">
|
12
|
+
<path d="M50.0004 31.4995C39.7996 31.4995 31.5 39.7991 31.5 49.9999C31.5 60.2007 39.7996 68.5003 50.0004 68.5003C60.2012 68.5003 68.5008 60.2007 68.5008 49.9999C68.5008 39.7991 60.2012 31.4995 50.0004 31.4995ZM50.0004 63.7944C42.3941 63.7944 36.2059 57.6062 36.2059 49.9999C36.2059 42.3936 42.3941 36.2054 50.0004 36.2054C57.6067 36.2054 63.7949 42.3936 63.7949 49.9999C63.7949 57.6062 57.6067 63.7944 50.0004 63.7944Z" fill="rgb(var(--white))"/>
|
13
|
+
<path d="M97.6471 47.6471H84.56C83.3977 30.4141 69.5859 16.6024 52.3529 15.44V2.35294C52.3529 1.05255 51.2988 0 50 0C48.6996 0 47.6471 1.05255 47.6471 2.35294V15.44C30.4141 16.6024 16.6024 30.4141 15.44 47.6471H2.35294C1.05255 47.6471 0 48.6996 0 50C0 51.2988 1.05255 52.3529 2.35294 52.3529H15.44C16.6024 69.5859 30.4141 83.3977 47.6471 84.56V97.6471C47.6471 98.9459 48.6996 100 50 100C51.2988 100 52.3529 98.9459 52.3529 97.6471V84.56C69.5859 83.3977 83.3977 69.5859 84.56 52.3529H97.6471C98.9459 52.3529 100 51.2988 100 50C100 48.6996 98.9459 47.6471 97.6471 47.6471ZM50 79.9435C33.4886 79.9435 20.0565 66.5114 20.0565 50C20.0565 33.4886 33.4886 20.0565 50 20.0565C66.5098 20.0565 79.9435 33.4886 79.9435 50C79.9435 66.5098 66.5098 79.9435 50 79.9435Z" fill="rgb(var(--white))"/>
|
14
|
+
</svg>
|
15
|
+
|
16
|
+
<Loader v-else class="pos-t-0 pos-l-0 i-small"/>
|
17
|
+
</transition>
|
8
18
|
|
9
19
|
</button>
|
10
20
|
</div>
|
@@ -13,17 +23,17 @@
|
|
13
23
|
<script setup>
|
14
24
|
import { ref, onMounted, watchEffect } from 'vue';
|
15
25
|
|
16
|
-
import
|
26
|
+
import Loader from '@pf/src/components/Loader/Loader.vue'
|
17
27
|
|
18
28
|
// Добавим новый проп для ключа API
|
19
29
|
const props = defineProps({
|
20
30
|
location: {
|
21
31
|
type: Object,
|
22
|
-
default:
|
32
|
+
default: () => ({ lat: 15.8700, lng: 100.9925 })
|
23
33
|
},
|
24
34
|
address: {
|
25
35
|
type: String,
|
26
|
-
default:
|
36
|
+
default: null
|
27
37
|
},
|
28
38
|
apiKey: String,
|
29
39
|
})
|
@@ -31,15 +41,18 @@ const props = defineProps({
|
|
31
41
|
const emit = defineEmits(['update:location', 'update:address', 'update:country', 'update:state', 'update:city']);
|
32
42
|
|
33
43
|
const mapContainer = ref(null);
|
44
|
+
const locationLoading = ref(false);
|
34
45
|
|
35
46
|
let map, marker;
|
36
47
|
|
37
48
|
onMounted(() => {
|
49
|
+
console.log(props.location)
|
38
50
|
map = new google.maps.Map(mapContainer.value, {
|
39
51
|
center: props.location,
|
40
52
|
zoom: 15,
|
41
53
|
mapTypeControl: false,
|
42
54
|
fullscreenControl: false,
|
55
|
+
disableDefaultUI: true
|
43
56
|
});
|
44
57
|
|
45
58
|
marker = new google.maps.Marker({
|
@@ -50,7 +63,9 @@ onMounted(() => {
|
|
50
63
|
|
51
64
|
marker.addListener("dragend", (e) => {
|
52
65
|
const newLocation = { lat: e.latLng.lat(), lng: e.latLng.lng() };
|
66
|
+
|
53
67
|
emit('update:location', newLocation);
|
68
|
+
|
54
69
|
getAddressFromLocation(newLocation);
|
55
70
|
});
|
56
71
|
});
|
@@ -64,12 +79,16 @@ watchEffect(() => {
|
|
64
79
|
watchEffect(() => {
|
65
80
|
if (props.location && map) {
|
66
81
|
const newCenter = new google.maps.LatLng(props.location.lat, props.location.lng);
|
82
|
+
|
67
83
|
map.setCenter(newCenter);
|
84
|
+
map.setZoom(15);
|
68
85
|
}
|
69
86
|
});
|
70
87
|
|
71
88
|
function getAddressFromLocation(location) {
|
89
|
+
|
72
90
|
const geocoder = new google.maps.Geocoder;
|
91
|
+
|
73
92
|
geocoder.geocode({ 'location': location }, (results, status) => {
|
74
93
|
if (status === 'OK') {
|
75
94
|
if (results[0]) {
|
@@ -103,30 +122,37 @@ function getAddressFromLocation(location) {
|
|
103
122
|
|
104
123
|
// Функция для установки местоположения пользователя
|
105
124
|
async function setUserLocation() {
|
125
|
+
locationLoading.value = true
|
126
|
+
|
106
127
|
if (navigator.geolocation) {
|
107
128
|
navigator.geolocation.getCurrentPosition((position) => {
|
108
129
|
const newLocation = { lat: position.coords.latitude, lng: position.coords.longitude };
|
109
130
|
emit('update:location', newLocation);
|
110
131
|
getAddressFromLocation(newLocation);
|
132
|
+
locationLoading.value = false
|
111
133
|
}, () => {
|
112
134
|
console.error('Error getting location');
|
135
|
+
locationLoading.value = false
|
113
136
|
});
|
114
137
|
} else {
|
115
138
|
console.error('Geolocation is not supported by this browser.');
|
139
|
+
locationLoading.value = false
|
116
140
|
}
|
141
|
+
|
142
|
+
|
117
143
|
}
|
118
144
|
</script>
|
119
145
|
|
120
146
|
|
121
147
|
<style scoped>
|
122
|
-
.map-container {
|
123
|
-
/* height: 400px;*/
|
124
|
-
width: 100%;
|
125
|
-
}
|
126
148
|
.my-location-button {
|
127
149
|
position: absolute;
|
128
150
|
right: 10px;
|
129
151
|
top: 10px;
|
130
152
|
z-index: 99;
|
131
153
|
}
|
154
|
+
|
155
|
+
.gm-style-cc { display:none; }
|
156
|
+
|
157
|
+
|
132
158
|
</style>
|