@ozdao/prometheus-framework 0.1.67 → 0.1.69
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/BackofficeGallery-59a591ab.js +1 -0
- package/dist/BackofficeGallery-be6f69a9.mjs +307 -0
- package/dist/BackofficeReports-06166952.js +1 -0
- package/dist/BackofficeReports-50fd799c.mjs +44 -0
- package/dist/BlockTags-00325fa0.mjs +853 -0
- package/dist/BlockTags-58f95c8a.js +1 -0
- package/dist/ButtonToggleMembership-84d0e018.mjs +90 -0
- package/dist/ButtonToggleMembership-b905812f.js +1 -0
- package/dist/CardBlogpost-1b81b54e.mjs +246 -0
- package/dist/CardBlogpost-7107e04a.js +1 -0
- package/dist/CardOrganization-49ab5190.mjs +234 -0
- package/dist/CardOrganization-e6ac27f1.js +1 -0
- package/dist/CardProduct-4c0cb9a1.js +1 -0
- package/dist/CardProduct-ea0e1f84.mjs +192 -0
- package/dist/Chips-817cf959.js +1 -0
- package/dist/Chips-8c836ba6.mjs +213 -0
- package/dist/Community-8c4e011b.js +1 -0
- package/dist/Community-bd6f0cbb.mjs +131 -0
- package/dist/Dashboard-73b50724.js +1 -0
- package/dist/Dashboard-bc81b5f6.mjs +151 -0
- package/dist/Dropdown-60e3dc6c.js +1 -0
- package/dist/Dropdown-d1c81d45.mjs +169 -0
- package/dist/EditOrder-2b746caf.mjs +221 -0
- package/dist/EditOrder-e632f0cc.js +1 -0
- package/dist/Events-999cc8ed.js +1 -0
- package/dist/Events-ad8bbf27.mjs +134 -0
- package/dist/Feed-35e13c22.mjs +156 -0
- package/dist/Feed-53d96b18.mjs +361 -0
- package/dist/Feed-694a2fad.js +1 -0
- package/dist/Feed-ac4bb6ea.js +1 -0
- package/dist/Feed-d1d01771.js +1 -0
- package/dist/Feed-f7c04014.mjs +124 -0
- package/dist/Image-61cfd52d.js +9 -0
- package/dist/Image-e8be4acc.mjs +480 -0
- package/dist/LeftoverAdd-a268a95c.js +1 -0
- package/dist/LeftoverAdd-e4d93760.mjs +229 -0
- package/dist/Leftovers-6976802d.mjs +135 -0
- package/dist/Leftovers-d8f1d152.js +1 -0
- package/dist/Members-aeb2bca1.mjs +109 -0
- package/dist/Members-b9664e83.js +1 -0
- package/dist/Menu-93d34d9f.js +1 -0
- package/dist/Menu-eaf6b44c.mjs +13 -0
- package/dist/MenuItem-4a5881bd.mjs +85 -0
- package/dist/MenuItem-f35cad93.js +1 -0
- package/dist/Orders-8bc8963c.js +1 -0
- package/dist/Orders-eb262d8c.mjs +75 -0
- package/dist/Organizations-9926aa51.mjs +72 -0
- package/dist/Organizations-c653d814.js +1 -0
- package/dist/Payments-98328000.js +1 -0
- package/dist/Payments-a9066cdf.mjs +11 -0
- package/dist/Popup-0d8e1392.mjs +96 -0
- package/dist/Popup-eb11fa82.js +1 -0
- package/dist/Product-15043af7.mjs +651 -0
- package/dist/Product-82c022a4.js +7 -0
- package/dist/ProductEdit-05da9866.mjs +258 -0
- package/dist/ProductEdit-2f075296.js +1 -0
- package/dist/ProductsBackoffice-8462f626.js +1 -0
- package/dist/ProductsBackoffice-8d0f0ee8.mjs +85 -0
- package/dist/ProfileBlogposts-43855cb9.js +1 -0
- package/dist/ProfileBlogposts-f32170a3.mjs +78 -0
- package/dist/ProfileEvents-54be2d43.mjs +69 -0
- package/dist/ProfileEvents-ab69e27e.js +1 -0
- package/dist/ProfileOrganizations-0787cf34.mjs +72 -0
- package/dist/ProfileOrganizations-eb62dde4.js +1 -0
- package/dist/Publics-8e726d20.mjs +45 -0
- package/dist/Publics-ae589bf1.js +1 -0
- package/dist/Select-95f4701a.js +1 -0
- package/dist/Select-dab17282.mjs +80 -0
- package/dist/Select.vue_vue_type_style_index_0_scoped_dfe03dc2_lang-0ea8fbf8.js +1 -0
- package/dist/Select.vue_vue_type_style_index_0_scoped_dfe03dc2_lang-4ed993c7.mjs +1 -0
- package/dist/Socials-43293869.js +1 -0
- package/dist/Socials-8193477c.mjs +189 -0
- package/dist/UploadImage-0e8e4278.mjs +83 -0
- package/dist/UploadImage-8c71bda6.js +1 -0
- package/dist/UploadImageMultiple-c34a6c6f.mjs +58 -0
- package/dist/UploadImageMultiple-d1316df5.js +1 -0
- package/dist/Wallet-727195d9.mjs +21700 -0
- package/dist/Wallet-f4dda407.js +10 -0
- package/dist/auth-04684a60.js +7 -0
- package/dist/auth-7e39361f.mjs +633 -0
- package/dist/auth.client.cjs +1 -1
- package/dist/auth.client.js +5 -5
- package/dist/auth.server.js +1 -1
- package/dist/auth.server.mjs +1 -1
- package/dist/auth.validation-d614130d.js +1 -0
- package/dist/auth.validation-f4bf1deb.mjs +24 -0
- package/dist/axios-33aeb810.mjs +1435 -0
- package/dist/axios-ceccf20e.js +5 -0
- package/dist/backoffice.client.cjs +1 -1
- package/dist/backoffice.client.js +20 -20
- package/dist/categories-7e17a7eb.js +1 -0
- package/dist/categories-b7f9e8c0.mjs +122 -0
- package/dist/community.client.cjs +1 -1
- package/dist/community.client.js +209 -202
- package/dist/components/Upload/Upload.vue.d.ts.map +1 -1
- package/dist/events.client.cjs +2 -2
- package/dist/events.client.js +24 -27
- package/dist/landing.client.cjs +1 -1
- package/dist/landing.client.js +64 -40
- package/dist/leftovers-86e7d438.mjs +67 -0
- package/dist/leftovers-c9f70579.js +1 -0
- package/dist/legal.client.cjs +1 -1
- package/dist/legal.client.js +6 -7
- package/dist/main.css +1 -1
- package/dist/memberships-559590ad.mjs +68 -0
- package/dist/memberships-58af22e0.js +1 -0
- package/dist/modules/constructor/components/elements/H2.vue.d.ts +1 -1
- package/dist/modules/constructor/components/elements/Textarea.vue.d.ts +1 -1
- package/dist/modules/products/components/sections/EditProductInfo.vue.d.ts +1 -5
- package/dist/orders-1325c51b.js +1 -0
- package/dist/orders-c7cbe706.mjs +85 -0
- package/dist/organizations-71777b32.js +1 -0
- package/dist/organizations-93f7b610.mjs +122 -0
- package/dist/organizations.client-6ca27fb3.js +3 -0
- package/dist/organizations.client-bd63a7b2.mjs +2997 -0
- package/dist/organizations.client.cjs +1 -1
- package/dist/organizations.client.js +56 -61
- package/dist/products-61d83d74.js +1 -0
- package/dist/products-7f1e5a75.mjs +108 -0
- package/dist/prometheus-framework/src/modules/auth/components/pages/SignIn.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/SignIn.vue.js +67 -65
- package/dist/prometheus-framework.cjs.js +21 -21
- package/dist/prometheus-framework.es.js +682 -690
- package/dist/reports-a67b4fb4.js +1 -0
- package/dist/reports-c579b02a.mjs +91 -0
- package/dist/reports.client.cjs +1 -1
- package/dist/reports.client.js +2 -2
- package/dist/states.validation-3b4604bc.mjs +13 -0
- package/dist/states.validation-9b43a097.js +1 -0
- package/dist/style.css +1 -1
- package/dist/users.client.cjs +1 -1
- package/dist/users.client.js +279 -208
- package/package.json +30 -35
- package/src/components/Button/Button.vue +1 -1
- package/src/components/Sidebar/Sidebar.vue +10 -8
- package/src/components/Upload/Upload.vue +8 -28
- package/src/modules/auth/components/pages/SignIn.vue +2 -2
- package/src/modules/auth/controllers/auth.controller.js +1 -1
- package/src/modules/auth/store/auth.js +21 -24
- package/src/modules/backoffice/components/admin/ProductEdit.vue +2 -0
- package/src/modules/constructor/components/sections/Constructor.vue +7 -54
- package/src/modules/gallery/components/pages/Gallery.vue +7 -1
- package/src/modules/gallery/components/sections/GalleryWithCategories.vue +24 -8
- package/src/modules/gallery/gallery.client.js +5 -1
- package/src/modules/marketplace/components/layouts/Marketplace.vue +1 -0
- package/src/modules/organizations/components/pages/Organization.vue +2 -2
- package/src/modules/payments/components/pages/Payments.vue +4 -3
- package/src/modules/products/components/blocks/CardLeftover.vue +0 -1
- package/src/modules/products/components/blocks/CardProduct.vue +15 -1
- package/src/modules/products/components/sections/EditProductInfo.vue +16 -14
- package/src/modules/products/components/sections/FilterProducts.vue +0 -2
- package/src/modules/products/components/sections/SectionProduct.vue +1 -0
- package/src/modules/products/components/sections/SortProducts.vue +2 -0
- package/src/modules/products/store/categories.js +9 -9
- package/src/modules/products/store/leftovers.js +6 -9
- package/src/modules/products/store/products.js +2 -0
- package/src/modules/users/components/pages/Profile.vue +3 -5
- package/src/modules/wallet/components/pages/Wallet.vue +1 -1
- package/src/styles/components/button.scss +253 -0
- package/src/styles/theme.scss +1 -0
- package/src/modules/constructor/components/elements/Audio.vue +0 -82
- package/src/modules/constructor/components/elements/Embed.vue +0 -85
- package/src/modules/globals/mixins/mixins.js +0 -52
- package/src/modules/globals/router/routerGuards.js +0 -28
@@ -1,13 +1,13 @@
|
|
1
1
|
<template>
|
2
|
-
<div class="mn-big flex-column flex">
|
3
|
-
|
2
|
+
<!-- <div class="mn-big flex-column flex">
|
3
|
+
{{
|
4
4
|
store.products.current
|
5
5
|
}}
|
6
6
|
<Select
|
7
7
|
:options="[
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
'unpublished',
|
9
|
+
'published',
|
10
|
+
'archivied'
|
11
11
|
]"
|
12
12
|
v-model:select="store.products.state.current.status"
|
13
13
|
placeholder="Display product"
|
@@ -31,8 +31,8 @@
|
|
31
31
|
placeholder="Введите описание"
|
32
32
|
class="w-100 mn-small bg-white radius-small pd-medium"
|
33
33
|
type="textarea"
|
34
|
-
/>
|
35
|
-
</div>
|
34
|
+
/>
|
35
|
+
</div> -->
|
36
36
|
</template>
|
37
37
|
|
38
38
|
<script setup="props">
|
@@ -49,18 +49,20 @@ import { toRefs } from 'vue';
|
|
49
49
|
/////////////////////////////
|
50
50
|
// HELPERS
|
51
51
|
/////////////////////////////
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
// const store = useStore()
|
53
|
+
|
54
|
+
// function functionReload () {
|
55
|
+
// location.reload()
|
56
|
+
// }
|
55
57
|
|
56
58
|
/////////////////////////////
|
57
59
|
// CREATED
|
58
60
|
/////////////////////////////
|
59
|
-
const props = defineProps({
|
60
|
-
|
61
|
-
});
|
61
|
+
// const props = defineProps({
|
62
|
+
// product: Object,
|
63
|
+
// });
|
62
64
|
|
63
|
-
const { product } = toRefs(props);
|
65
|
+
// const { product } = toRefs(props);
|
64
66
|
|
65
67
|
/////////////////////////////
|
66
68
|
// MOUNTED
|
@@ -82,10 +82,8 @@
|
|
82
82
|
|
83
83
|
<script setup>
|
84
84
|
import { ref, watch } from 'vue'
|
85
|
-
|
86
85
|
import Spoiler from "@pf/src/components/Spoiler/Spoiler.vue"
|
87
86
|
import Checkbox from "@pf/src/components/Checkbox/Checkbox.vue"
|
88
|
-
|
89
87
|
import { useI18n } from 'vue-i18n'
|
90
88
|
|
91
89
|
import * as categories from '@pf/src/modules/products/store/categories';
|
@@ -109,6 +109,7 @@ import ImagesThumbnails from "@pf/src/modules/products/components/blocks/ImagesT
|
|
109
109
|
|
110
110
|
import IconEdit from '@pf/src/modules/icons/navigation/IconEdit.vue'
|
111
111
|
|
112
|
+
|
112
113
|
import THC from '@pf/src/modules/products/components/elements/THC.vue'
|
113
114
|
import Price from '@pf/src/modules/products/components/elements/Price.vue'
|
114
115
|
// import SelectElement from '@/components/elements/SelectElement.vue'
|
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
import
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
const $axios = axios.create({baseURL:
|
1
|
+
import { reactive, watch, computed } from "vue";
|
2
|
+
|
3
|
+
import Cookies from "js-cookie";
|
4
|
+
import axios from "axios";
|
5
|
+
|
6
|
+
import { setError } from "@pf/src/modules/globals/store/globals";
|
7
|
+
|
8
|
+
const clientUrl = process.env.API_URL;
|
9
|
+
const $axios = axios.create({ baseURL: clientUrl, withCredentials: true });
|
10
10
|
|
11
11
|
const state = reactive({
|
12
12
|
all: [],
|
@@ -1,12 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
import { setError } from '@pf/src/modules/globals/store/globals'
|
8
|
-
// Setup Axios
|
9
|
-
const $axios = axios.create({baseURL: process.env.API_URL, withCredentials: true})
|
1
|
+
import { reactive, watch } from "vue";
|
2
|
+
import axios from "axios";
|
3
|
+
import { setError } from "@pf/src/modules/globals/store/globals";
|
4
|
+
|
5
|
+
const clientUrl = process.env.API_URL;
|
6
|
+
const $axios = axios.create({ baseURL: clientUrl, withCredentials: true });
|
10
7
|
|
11
8
|
const state = reactive({
|
12
9
|
all: [],
|
@@ -192,14 +192,11 @@
|
|
192
192
|
|
193
193
|
|
194
194
|
|
195
|
-
|
195
|
+
<Menu class="mn-regular bg-grey">
|
196
196
|
<MenuItem @click="router.push({name: 'User Wallet', params: {_id: route.params._id}})" class="cursor-pointer">
|
197
197
|
<IconGroups class="i-semi" :icon="true"/>
|
198
198
|
<span>Wallet</span>
|
199
199
|
</MenuItem>
|
200
|
-
</Menu> -->
|
201
|
-
|
202
|
-
|
203
200
|
|
204
201
|
<!-- <MenuItem @click="router.push({name: 'User Comments', params: {_id: route.params._id}})" class="cursor-pointer">
|
205
202
|
<span>Comments</span>
|
@@ -207,7 +204,8 @@
|
|
207
204
|
<MenuItem @click="router.push({name: 'User Likes', params: {_id: route.params._id}})" class="cursor-pointer">
|
208
205
|
<span>Likes</span>
|
209
206
|
</MenuItem> -->
|
210
|
-
|
207
|
+
</Menu>
|
208
|
+
|
211
209
|
<Menu
|
212
210
|
v-if="auth.state.user._id === route.params._id"
|
213
211
|
class="bg-grey"
|
@@ -109,9 +109,9 @@
|
|
109
109
|
|
110
110
|
|
111
111
|
<script setup>
|
112
|
+
import { computed, onMounted,reactive, ref,toRefs } from 'vue'
|
112
113
|
import Web3 from 'web3'
|
113
114
|
|
114
|
-
import { computed, onMounted,reactive, ref,toRefs } from 'vue'
|
115
115
|
|
116
116
|
import { useRoute,useRouter } from 'vue-router'
|
117
117
|
|
@@ -0,0 +1,253 @@
|
|
1
|
+
button[disabled] {background: grey; &:hover {background: grey; } }
|
2
|
+
|
3
|
+
.button {
|
4
|
+
display: flex;
|
5
|
+
width: fit-content;
|
6
|
+
|
7
|
+
padding: 1rem 1.75rem;
|
8
|
+
border-radius: 3rem;
|
9
|
+
|
10
|
+
transform: scale(1);
|
11
|
+
opacity: 1;
|
12
|
+
|
13
|
+
align-items: center;
|
14
|
+
justify-content: center;
|
15
|
+
|
16
|
+
text-align: center;
|
17
|
+
text-transform: uppercase;
|
18
|
+
font-size: 1rem;
|
19
|
+
font-weight: 500;
|
20
|
+
letter-spacing: 5%;
|
21
|
+
|
22
|
+
transition: all 0.33s ease;
|
23
|
+
|
24
|
+
&:hover {
|
25
|
+
opacity: 1;
|
26
|
+
cursor: pointer;
|
27
|
+
}
|
28
|
+
|
29
|
+
&:active {
|
30
|
+
transform: scale(0.95);
|
31
|
+
}
|
32
|
+
|
33
|
+
&-small {
|
34
|
+
padding: 0.5rem 0.75rem;
|
35
|
+
border-radius: 0.5rem;
|
36
|
+
height: fit-content;
|
37
|
+
}
|
38
|
+
|
39
|
+
&-square {
|
40
|
+
height: 2.5rem;
|
41
|
+
width: 2.5rem;
|
42
|
+
|
43
|
+
padding: 1rem;
|
44
|
+
border-radius: 0.5rem;
|
45
|
+
font-size: 1.125rem;
|
46
|
+
}
|
47
|
+
|
48
|
+
&-close-popup {
|
49
|
+
position: absolute;
|
50
|
+
|
51
|
+
right: 0;
|
52
|
+
top: 0;
|
53
|
+
|
54
|
+
width: 3rem;
|
55
|
+
height: 3rem;
|
56
|
+
|
57
|
+
background: transparent;
|
58
|
+
|
59
|
+
padding: 0;
|
60
|
+
|
61
|
+
border-radius: 0;
|
62
|
+
|
63
|
+
img {
|
64
|
+
width: 33%;
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
&-delete {
|
69
|
+
&:hover {
|
70
|
+
background: red;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
&-grey {
|
75
|
+
background: rgba(var(--dark), 1);;
|
76
|
+
background-color: #F7F7F7;
|
77
|
+
}
|
78
|
+
|
79
|
+
&-sort {
|
80
|
+
height: 2.5rem;
|
81
|
+
|
82
|
+
padding: 0.5rem 1.25rem;
|
83
|
+
|
84
|
+
text-transform: none;
|
85
|
+
font-size: 1rem;
|
86
|
+
background: rgba(var(--dark), 1);;
|
87
|
+
background-color: #F7F7F7;
|
88
|
+
}
|
89
|
+
|
90
|
+
&-active {
|
91
|
+
background: rgb(var(--main));;
|
92
|
+
color: white;
|
93
|
+
&:hover {
|
94
|
+
background: rgb(var(--main));;
|
95
|
+
color: rgba(255,255,255,0.75);
|
96
|
+
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
&-filter {
|
104
|
+
height: 2.5rem;
|
105
|
+
|
106
|
+
padding: 0;
|
107
|
+
border-radius: 0.5rem;
|
108
|
+
font-size: 1.125rem;
|
109
|
+
|
110
|
+
background: rgba(var(--dark), 1);;
|
111
|
+
background: white;
|
112
|
+
}
|
113
|
+
|
114
|
+
&-disabled {
|
115
|
+
color: rgba(0,0,0,0.5);
|
116
|
+
|
117
|
+
&:hover {
|
118
|
+
color: rgba(0,0,0,0.5);
|
119
|
+
}
|
120
|
+
&:active {
|
121
|
+
pointer-events: none;
|
122
|
+
transform: scale(1,1);
|
123
|
+
}
|
124
|
+
}
|
125
|
+
&-active {
|
126
|
+
background: rgb(var(--main));;
|
127
|
+
color: white;
|
128
|
+
&:hover {
|
129
|
+
background: rgb(var(--main));;
|
130
|
+
color: rgba(255,255,255,0.75);
|
131
|
+
|
132
|
+
}
|
133
|
+
}
|
134
|
+
&-reset-filter {
|
135
|
+
width: 100%;
|
136
|
+
text-transform: uppecase;
|
137
|
+
height: 3.75rem;
|
138
|
+
|
139
|
+
background: transparent;
|
140
|
+
|
141
|
+
&:hover {
|
142
|
+
background: rgb(var(--main));;
|
143
|
+
color: black;
|
144
|
+
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
&-icon {
|
149
|
+
height: 1rem; width: 1rem; background: transparent; img { width: 100%; height: 100%}
|
150
|
+
background: transparent;
|
151
|
+
box-shadow: none;
|
152
|
+
border-radius: 0;
|
153
|
+
padding: 0;
|
154
|
+
|
155
|
+
&:hover {
|
156
|
+
cursor: pointer;
|
157
|
+
}
|
158
|
+
}
|
159
|
+
|
160
|
+
|
161
|
+
&-link {
|
162
|
+
color: rgba(0, 0, 0, 0.5);
|
163
|
+
font-size: 1.125rem;
|
164
|
+
display: flex;
|
165
|
+
align-items: center;
|
166
|
+
font-weight: 600;
|
167
|
+
|
168
|
+
&-blue {color: #2495FF;}
|
169
|
+
|
170
|
+
&-black{color: rgba(0, 0, 0, 0.5);}
|
171
|
+
|
172
|
+
&-cream {color: #DBADAA; text-align: left; font-weight: 600; letter-spacing: 0;}
|
173
|
+
|
174
|
+
}
|
175
|
+
|
176
|
+
&-otr-link {
|
177
|
+
display: inline-flex;
|
178
|
+
margin-top: 0.25rem;
|
179
|
+
align-items: center;
|
180
|
+
color: #000;
|
181
|
+
|
182
|
+
img { margin-right: 0.5rem;}
|
183
|
+
}
|
184
|
+
|
185
|
+
&-cart {
|
186
|
+
display: inline-flex;
|
187
|
+
color: #000;
|
188
|
+
height: 3rem;
|
189
|
+
width: 3rem;
|
190
|
+
font-weight: 700;
|
191
|
+
width: fit-content;
|
192
|
+
font-size: 1.5rem;
|
193
|
+
background: rgb(var(--main));;
|
194
|
+
background: #FAF7F3;
|
195
|
+
text-transform: none;
|
196
|
+
padding: 0.75rem 1rem;
|
197
|
+
border-radius: 4rem;
|
198
|
+
|
199
|
+
&:hover {
|
200
|
+
background: rgb(var(--main));;
|
201
|
+
color: white;
|
202
|
+
opacity: 1;
|
203
|
+
|
204
|
+
cursor: pointer;
|
205
|
+
}
|
206
|
+
}
|
207
|
+
|
208
|
+
&-cart-big {
|
209
|
+
display: inline-flex;
|
210
|
+
color: #000;
|
211
|
+
font-weight: 700;
|
212
|
+
width: fit-content;
|
213
|
+
background: #FFE500;
|
214
|
+
text-transform: none;
|
215
|
+
font-size: 2rme;
|
216
|
+
padding: 1.5rem 2rem;
|
217
|
+
border-radius: 2rem;
|
218
|
+
}
|
219
|
+
|
220
|
+
&-blog {
|
221
|
+
padding: 0.75rem 1rem;
|
222
|
+
background-color: #2495FF;
|
223
|
+
color: #fff;
|
224
|
+
border-radius: 0.375rem;
|
225
|
+
font-size: 1.125rem;
|
226
|
+
text-transform: uppercase;
|
227
|
+
width: fit-content;
|
228
|
+
}
|
229
|
+
|
230
|
+
&-nav-footer{
|
231
|
+
color: #000;
|
232
|
+
font-size: 0.875rem;
|
233
|
+
font-weight: 700; display: flex;
|
234
|
+
align-items: center;
|
235
|
+
svg {margin-right: 0.5rem;}}
|
236
|
+
|
237
|
+
&-inst {
|
238
|
+
background: radial-gradient(179.06% 43.44% at -16.75% 7.2%, #3771C8 0%, #3771C8 12.8%, rgba(102, 0, 255, 0) 100%),
|
239
|
+
radial-gradient(92.18% 99.11% at 26.56% 107.7%, #FFDD55 0%, #FFDD55 10%, #FF543E 50%, #C837AB 100%);
|
240
|
+
color: white;
|
241
|
+
font-size: 1.125rem;
|
242
|
+
font-weight: 700;
|
243
|
+
text-transform: uppercase;
|
244
|
+
padding: 0.75rem 0.75rem;
|
245
|
+
border-radius: 0.5625rem;
|
246
|
+
display: flex;
|
247
|
+
align-items: center;
|
248
|
+
justify-content: center;
|
249
|
+
width: fit-content;
|
250
|
+
box-shadow: 4px 4px 24px -12px rgba(201, 163, 163, 0.5);
|
251
|
+
img {margin-right: 0.5rem}
|
252
|
+
}
|
253
|
+
}
|
package/src/styles/theme.scss
CHANGED
@@ -1,82 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div
|
3
|
-
class="mn-thin w-100 pd-medium bg-white radius-medium">
|
4
|
-
|
5
|
-
<div
|
6
|
-
v-if="prop.content"
|
7
|
-
v-html="prop.content"
|
8
|
-
class="flex-center flex"
|
9
|
-
/>
|
10
|
-
|
11
|
-
<div
|
12
|
-
class=""
|
13
|
-
v-else
|
14
|
-
>
|
15
|
-
<Upload
|
16
|
-
v-model:field="embedCode"
|
17
|
-
@file-change="onComponentClick"
|
18
|
-
type="file"
|
19
|
-
:placeholder="'Enter embed code'"
|
20
|
-
class="
|
21
|
-
w-100
|
22
|
-
br-solid
|
23
|
-
br-1px
|
24
|
-
br-black-transp-10
|
25
|
-
pd-medium
|
26
|
-
radius-small
|
27
|
-
mn-thin
|
28
|
-
"
|
29
|
-
/>
|
30
|
-
<button
|
31
|
-
@click="onComponentClick"
|
32
|
-
class="button-small button"
|
33
|
-
>
|
34
|
-
Save
|
35
|
-
</button>
|
36
|
-
</div>
|
37
|
-
<!-- <button v-if="prop.content" @click="editEmbedCode">Edit Embed Code</button> -->
|
38
|
-
</div>
|
39
|
-
</template>
|
40
|
-
|
41
|
-
<script setup>
|
42
|
-
import { ref } from 'vue';
|
43
|
-
|
44
|
-
import Upload from '@pf/src/components/Upload/Upload.vue'
|
45
|
-
|
46
|
-
const embedCode = ref(null);
|
47
|
-
|
48
|
-
const props = defineProps([
|
49
|
-
'label',
|
50
|
-
'value',
|
51
|
-
'prop'
|
52
|
-
]);
|
53
|
-
|
54
|
-
const emit = defineEmits(['input', 'updateBlock']);
|
55
|
-
|
56
|
-
function isValidEmbedCode(code) {
|
57
|
-
const allowedSources = [/youtube\.com/, /soundcloud\.com/, /vimeo\.com/];
|
58
|
-
return allowedSources.some(pattern => pattern.test(code));
|
59
|
-
}
|
60
|
-
|
61
|
-
function onComponentClick(file) {
|
62
|
-
embedCode.value = file
|
63
|
-
if (embedCode.value && isValidEmbedCode(embedCode.value)) {
|
64
|
-
emit('input', embedCode.value);
|
65
|
-
emit('updateBlock', props.prop, { content: embedCode.value });
|
66
|
-
} else {
|
67
|
-
alert('Invalid embed code or source not allowed.');
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
function editEmbedCode() {
|
72
|
-
let embedInput = prompt('Edit embed code:', prop.content);
|
73
|
-
if (embedInput && isValidEmbedCode(embedInput)) {
|
74
|
-
embedCode.value = embedInput;
|
75
|
-
emit('input', embedCode.value);
|
76
|
-
emit('updateBlock', props.prop, { content: embedCode.value });
|
77
|
-
} else {
|
78
|
-
alert('Invalid embed code or source not allowed.');
|
79
|
-
}
|
80
|
-
}
|
81
|
-
</script>
|
82
|
-
|
@@ -1,85 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<div
|
3
|
-
class="mn-thin w-100 pd-medium bg-white radius-medium">
|
4
|
-
|
5
|
-
<div
|
6
|
-
v-if="prop.content"
|
7
|
-
v-html="prop.content"
|
8
|
-
class="flex-center flex"
|
9
|
-
/>
|
10
|
-
|
11
|
-
<div
|
12
|
-
class=""
|
13
|
-
v-else
|
14
|
-
>
|
15
|
-
<Field
|
16
|
-
v-model:field="embedCode"
|
17
|
-
type="textarea"
|
18
|
-
:placeholder="'Paste your embed code here'"
|
19
|
-
class="
|
20
|
-
w-100
|
21
|
-
br-solid
|
22
|
-
br-1px
|
23
|
-
br-black-transp-10
|
24
|
-
pd-medium
|
25
|
-
radius-small
|
26
|
-
mn-thin
|
27
|
-
"
|
28
|
-
/>
|
29
|
-
<div class="flex-v-center flex-nowrap flex gap-small">
|
30
|
-
|
31
|
-
<p class="t-center">Embeds from youtube.com, vimeo.com, soundcloud.com are allowed</p>
|
32
|
-
<button
|
33
|
-
@click="onComponentClick"
|
34
|
-
class="button-small button"
|
35
|
-
>
|
36
|
-
Save
|
37
|
-
</button>
|
38
|
-
</div>
|
39
|
-
</div>
|
40
|
-
<!-- <button v-if="prop.content" @click="editEmbedCode">Edit Embed Code</button> -->
|
41
|
-
</div>
|
42
|
-
</template>
|
43
|
-
|
44
|
-
<script setup>
|
45
|
-
import { ref } from 'vue';
|
46
|
-
|
47
|
-
import Field from '@pf/src/components/Field/Field.vue'
|
48
|
-
|
49
|
-
const embedCode = ref(null);
|
50
|
-
|
51
|
-
const props = defineProps([
|
52
|
-
'label',
|
53
|
-
'value',
|
54
|
-
'prop'
|
55
|
-
]);
|
56
|
-
|
57
|
-
const emit = defineEmits(['input', 'updateBlock']);
|
58
|
-
|
59
|
-
function isValidEmbedCode(code) {
|
60
|
-
const allowedSources = [/youtube\.com/, /soundcloud\.com/, /vimeo\.com/];
|
61
|
-
return allowedSources.some(pattern => pattern.test(code));
|
62
|
-
}
|
63
|
-
|
64
|
-
function onComponentClick() {
|
65
|
-
|
66
|
-
if (embedCode.value && isValidEmbedCode(embedCode.value)) {
|
67
|
-
emit('input', embedCode.value);
|
68
|
-
emit('updateBlock', props.prop, { content: embedCode.value });
|
69
|
-
} else {
|
70
|
-
alert('Invalid embed code or source not allowed.');
|
71
|
-
}
|
72
|
-
}
|
73
|
-
|
74
|
-
function editEmbedCode() {
|
75
|
-
let embedInput = prompt('Edit embed code:', prop.content);
|
76
|
-
if (embedInput && isValidEmbedCode(embedInput)) {
|
77
|
-
embedCode.value = embedInput;
|
78
|
-
emit('input', embedCode.value);
|
79
|
-
emit('updateBlock', props.prop, { content: embedCode.value });
|
80
|
-
} else {
|
81
|
-
alert('Invalid embed code or source not allowed.');
|
82
|
-
}
|
83
|
-
}
|
84
|
-
</script>
|
85
|
-
|
@@ -1,52 +0,0 @@
|
|
1
|
-
// mixins.js
|
2
|
-
export const globalMixins = {
|
3
|
-
methods: {
|
4
|
-
returnCurrency() {
|
5
|
-
const currency = '฿'
|
6
|
-
return currency
|
7
|
-
},
|
8
|
-
formatPrice(number) {
|
9
|
-
const currency = this.returnCurrency();
|
10
|
-
let formattedNumber = number.toFixed(2).replace('.', ',').replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
|
11
|
-
return `${formattedNumber} ${currency}`;
|
12
|
-
},
|
13
|
-
formatDate(d) {
|
14
|
-
var fixedDate = new Date(d);
|
15
|
-
var yyyy = fixedDate.getFullYear().toString();
|
16
|
-
var mm = (fixedDate.getMonth() + 1).toString();
|
17
|
-
var dd = fixedDate.getDate().toString();
|
18
|
-
var hh = fixedDate.getHours().toString();
|
19
|
-
var minmin = fixedDate.getMinutes().toString();
|
20
|
-
|
21
|
-
return yyyy + '.' + (mm[1] ? mm : "0" + mm[0]) + '.' + (dd[1] ? dd : "0" + dd[0]) + " в " + (hh[1] ? hh : "0" + hh[0]) + ':' + (minmin[1] ? minmin : "0" + minmin[0]);
|
22
|
-
},
|
23
|
-
normalizeUrlParam(param) {
|
24
|
-
if (!param) param = ''
|
25
|
-
|
26
|
-
return param
|
27
|
-
.toLowerCase()
|
28
|
-
.replace(/ /g, '-')
|
29
|
-
.replace(/[^a-z0-9-]/g, '');
|
30
|
-
},
|
31
|
-
getMarketplaceLink(categories, country, state, city) {
|
32
|
-
categories = []
|
33
|
-
|
34
|
-
let country_normalized = this.normalizeUrlParam(country);
|
35
|
-
let state_normalized = this.normalizeUrlParam(state);
|
36
|
-
let city_normalized = this.normalizeUrlParam(city);
|
37
|
-
let base = `/marketplace/${country_normalized || ''}${state_normalized ? `/${state_normalized}` : ''}${city_normalized ? `/${city_normalized}` : ''}`;
|
38
|
-
|
39
|
-
if (categories.length) {
|
40
|
-
base += `?categories=${categories.join(",")}`;
|
41
|
-
}
|
42
|
-
|
43
|
-
return base;
|
44
|
-
},
|
45
|
-
getSpotsLink(country, state, city) {
|
46
|
-
let country_normalized = this.normalizeUrlParam(country);
|
47
|
-
let state_normalized = this.normalizeUrlParam(state);
|
48
|
-
let city_normalized = this.normalizeUrlParam(city);
|
49
|
-
return `/spots/${country_normalized || ''}${state_normalized ? `/${state_normalized}` : ''}${city_normalized ? `/${city_normalized}` : ''}`;
|
50
|
-
},
|
51
|
-
}
|
52
|
-
}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
// routerGuards.js
|
2
|
-
export function setupRouterGuards(router, store, app) {
|
3
|
-
router.beforeEach((to, from, next) => {
|
4
|
-
const { authorize } = to.meta;
|
5
|
-
|
6
|
-
if (authorize) {
|
7
|
-
if (store.auth.state.access.status === false) {
|
8
|
-
return next({ path: '/', query: { returnUrl: to.path } });
|
9
|
-
}
|
10
|
-
|
11
|
-
if (authorize.length && !authorize.some(r => store.auth.state.access.roles.includes(r))) {
|
12
|
-
return next({ path: '/' });
|
13
|
-
}
|
14
|
-
}
|
15
|
-
|
16
|
-
const locale = to.params.locale;
|
17
|
-
if (
|
18
|
-
app.config.globalProperties.$i18n.locale !== locale
|
19
|
-
&& locale
|
20
|
-
&& Object.keys(i18n.global.availableLocales).includes(locale)
|
21
|
-
) {
|
22
|
-
app.config.globalProperties.$i18n.locale = locale;
|
23
|
-
return next();
|
24
|
-
}
|
25
|
-
|
26
|
-
next();
|
27
|
-
});
|
28
|
-
}
|