@myissue/vue-website-page-builder 3.0.17 → 3.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -76
- package/dist/page-builder/2-images-text.png +0 -0
- package/dist/page-builder/3-images-text.png +0 -0
- package/dist/page-builder/3-vertical-images.png +0 -0
- package/dist/page-builder/4-images-text.png +0 -0
- package/dist/vue-website-page-builder.css +1 -1
- package/dist/vue-website-page-builder.js +7168 -7261
- package/dist/vue-website-page-builder.umd.cjs +146 -81
- package/package.json +5 -4
- package/src/App.vue +4 -115
- package/src/Components/Homepage/HomeSection.vue +70 -162
- package/src/Components/MediaLibrary/SidebarUnsplash.vue +9 -16
- package/src/Components/MediaLibrary/Unsplash.vue +51 -91
- package/src/Components/Modals/MediaLibraryModal.vue +56 -318
- package/src/Components/Modals/PageBuilderPreviewModal.vue +22 -40
- package/src/Components/PageBuilder/AdvancedPageBuilderSettings.vue +7 -0
- package/src/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue +165 -110
- package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +9 -16
- package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +18 -18
- package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +16 -21
- package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +12 -12
- package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +10 -9
- package/src/Components/PageBuilder/EditorMenu/Editables/DeleteElement.vue +9 -9
- package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +144 -136
- package/src/Components/PageBuilder/EditorMenu/Editables/ElementEditor.vue +9 -10
- package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +31 -27
- package/src/Components/PageBuilder/EditorMenu/Editables/LinkEditor.vue +20 -14
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +9 -10
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +9 -10
- package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +16 -16
- package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +9 -16
- package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +22 -20
- package/src/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue +25 -27
- package/src/Components/PageBuilder/NoneCustomMediaLibraryComponent.vue +3 -0
- package/src/Components/PageBuilder/NoneCustomSearchComponent.vue +91 -0
- package/src/Components/PageBuilder/PageBuilderSettings.vue +8 -0
- package/src/Components/PageBuilder/Settings/AdvancedPageBuilderSettings.vue +31 -72
- package/src/Components/PageBuilder/Settings/PageBuilderSettings.vue +32 -36
- package/src/Components/Search/SearchComponents.vue +11 -199
- package/src/Components/TipTap/TipTap.vue +8 -7
- package/src/Components/TipTap/TipTapInput.vue +136 -134
- package/src/PageBuilder/PageBuilder.vue +220 -32
- package/src/composables/{PageBuilder.ts → PageBuilderClass.ts} +223 -142
- package/src/composables/usePageBuilderModal.ts +25 -0
- package/src/index.ts +8 -2
- package/src/stores/media-library.ts +1 -5
- package/src/stores/page-builder-state.ts +52 -36
- package/src/stores/user.ts +8 -6
- package/src/types/global.d.ts +6 -44
- package/src/types/index.ts +169 -0
- package/src/utils/html-elements/component.ts +88 -0
- package/src/utils/html-elements/componentHelpers.ts +101 -0
- package/src/Components/Modals/PageBuilderModal.vue +0 -233
- package/src/utils/builder/html-elements/componentHelpers.ts +0 -101
|
@@ -1,35 +1,28 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { computed } from 'vue'
|
|
3
|
-
import { useMediaLibraryStore } from '@/stores/media-library';
|
|
2
|
+
import { ref, computed, onMounted, inject } from 'vue'
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
// Get stores from parent PageBuilder component
|
|
5
|
+
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
6
6
|
|
|
7
7
|
const getCurrentImage = computed(() => {
|
|
8
|
-
return mediaLibraryStore.getCurrentImage
|
|
9
|
-
})
|
|
8
|
+
return mediaLibraryStore.getCurrentImage
|
|
9
|
+
})
|
|
10
10
|
</script>
|
|
11
11
|
|
|
12
12
|
<template>
|
|
13
13
|
<!-- Loading # end -->
|
|
14
|
-
<div
|
|
15
|
-
v-if="getCurrentImage && getCurrentImage.file"
|
|
16
|
-
class="pb-6 space-y-6"
|
|
17
|
-
>
|
|
14
|
+
<div v-if="getCurrentImage && getCurrentImage.src" class="pb-6 space-y-6">
|
|
18
15
|
<img
|
|
19
16
|
class="mx-auto block w-full object-cover object-center cursor-pointer"
|
|
20
|
-
:src="`${getCurrentImage.
|
|
17
|
+
:src="`${getCurrentImage.src}`"
|
|
21
18
|
alt="file"
|
|
22
19
|
/>
|
|
23
20
|
|
|
24
21
|
<div class="md:px-3 px-2">
|
|
25
22
|
<div>
|
|
26
23
|
<h3 class="font-normal text-gray-900">Information</h3>
|
|
27
|
-
<dl
|
|
28
|
-
class="
|
|
29
|
-
>
|
|
30
|
-
<div
|
|
31
|
-
class="py-3 flex justify-between text-sm font-normal items-center"
|
|
32
|
-
>
|
|
24
|
+
<dl class="mt-2 border-t border-b border-gray-200 divide-y divide-gray-200">
|
|
25
|
+
<div class="py-3 flex justify-between text-sm font-normal items-center">
|
|
33
26
|
<dt class="text-gray-500">From</dt>
|
|
34
27
|
<dd class="text-gray-900">Unsplash</dd>
|
|
35
28
|
</div>
|
|
@@ -1,48 +1,46 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { ref, computed, onMounted } from 'vue'
|
|
3
|
-
import { useUnsplashStore } from '@/stores/unsplash'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
2
|
+
import { ref, computed, onMounted, inject } from 'vue'
|
|
3
|
+
import { useUnsplashStore } from '@/stores/unsplash'
|
|
4
|
+
|
|
5
|
+
// Get stores from parent PageBuilder component
|
|
6
|
+
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
7
|
+
const unsplashStore = useUnsplashStore()
|
|
8
|
+
const searchQuery = ref('')
|
|
9
|
+
const currentPage = ref(1)
|
|
10
|
+
const orientation = ref(null)
|
|
10
11
|
|
|
11
12
|
const getSearchTerm = computed(() => {
|
|
12
|
-
return unsplashStore.getSearchTerm
|
|
13
|
-
})
|
|
13
|
+
return unsplashStore.getSearchTerm
|
|
14
|
+
})
|
|
14
15
|
// unspalsh images
|
|
15
16
|
const getUnsplashImages = computed(() => {
|
|
16
|
-
return unsplashStore.getUnsplashImages
|
|
17
|
-
})
|
|
17
|
+
return unsplashStore.getUnsplashImages
|
|
18
|
+
})
|
|
18
19
|
|
|
19
20
|
const handleImageClick = function (file) {
|
|
20
|
-
mediaLibraryStore.setCurrentImage({ file })
|
|
21
|
-
mediaLibraryStore.setCurrentPreviewImage(null)
|
|
22
|
-
}
|
|
21
|
+
mediaLibraryStore.setCurrentImage({ src: file })
|
|
22
|
+
mediaLibraryStore.setCurrentPreviewImage(null)
|
|
23
|
+
}
|
|
23
24
|
|
|
24
25
|
// search by orientation
|
|
25
26
|
const searchByOrientation = function (orientationParameter) {
|
|
26
27
|
// check if search term length is more than 0
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
orientation.value = orientationParameter;
|
|
32
|
-
currentPage.value = 1;
|
|
33
|
-
searchUnsplash();
|
|
28
|
+
if (getSearchTerm.value.length > 0 && orientation.value !== orientationParameter) {
|
|
29
|
+
orientation.value = orientationParameter
|
|
30
|
+
currentPage.value = 1
|
|
31
|
+
searchUnsplash()
|
|
34
32
|
}
|
|
35
|
-
}
|
|
33
|
+
}
|
|
36
34
|
//
|
|
37
35
|
// load images for previous page
|
|
38
36
|
const previousPage = function () {
|
|
39
|
-
searchUnsplash()
|
|
40
|
-
}
|
|
37
|
+
searchUnsplash()
|
|
38
|
+
}
|
|
41
39
|
|
|
42
40
|
// load images for next page
|
|
43
41
|
const nextPage = function () {
|
|
44
|
-
searchUnsplash()
|
|
45
|
-
}
|
|
42
|
+
searchUnsplash()
|
|
43
|
+
}
|
|
46
44
|
//
|
|
47
45
|
//
|
|
48
46
|
// search images
|
|
@@ -53,37 +51,34 @@ const searchUnsplash = function () {
|
|
|
53
51
|
Array.isArray(getUnsplashImages.value.fetchedMedia.results) &&
|
|
54
52
|
getUnsplashImages.value.fetchedMedia.results.length === 0
|
|
55
53
|
) {
|
|
56
|
-
currentPage.value = 1
|
|
54
|
+
currentPage.value = 1
|
|
57
55
|
}
|
|
58
56
|
|
|
59
57
|
// set values in store
|
|
60
58
|
|
|
61
|
-
localStorage.setItem('unsplash-query', searchQuery.value)
|
|
59
|
+
localStorage.setItem('unsplash-query', searchQuery.value)
|
|
62
60
|
|
|
63
|
-
unsplashStore.setSearchTerm(searchQuery.value)
|
|
64
|
-
unsplashStore.setCurrentPageNumber(currentPage.value)
|
|
65
|
-
unsplashStore.setOrientationValue(orientation.value)
|
|
61
|
+
unsplashStore.setSearchTerm(searchQuery.value)
|
|
62
|
+
unsplashStore.setCurrentPageNumber(currentPage.value)
|
|
63
|
+
unsplashStore.setOrientationValue(orientation.value)
|
|
66
64
|
unsplashStore.setLoadUnsplashImages({
|
|
67
65
|
searchTerm: getSearchTerm.value,
|
|
68
66
|
currentPage: currentPage.value,
|
|
69
67
|
orientation: orientation.value,
|
|
70
|
-
})
|
|
71
|
-
}
|
|
68
|
+
})
|
|
69
|
+
}
|
|
72
70
|
|
|
73
71
|
// on mounted
|
|
74
72
|
onMounted(() => {
|
|
75
|
-
if (
|
|
76
|
-
localStorage.getItem('unsplash-query')
|
|
77
|
-
localStorage.getItem('unsplash-query')
|
|
78
|
-
|
|
79
|
-
unsplashStore.setSearchTerm(localStorage.getItem('unsplash-query'));
|
|
80
|
-
searchQuery.value = localStorage.getItem('unsplash-query');
|
|
81
|
-
searchUnsplash();
|
|
73
|
+
if (localStorage.getItem('unsplash-query') && localStorage.getItem('unsplash-query').length > 0) {
|
|
74
|
+
unsplashStore.setSearchTerm(localStorage.getItem('unsplash-query'))
|
|
75
|
+
searchQuery.value = localStorage.getItem('unsplash-query')
|
|
76
|
+
searchUnsplash()
|
|
82
77
|
} else {
|
|
83
|
-
searchQuery.value = 'Magazine'
|
|
84
|
-
searchUnsplash()
|
|
78
|
+
searchQuery.value = 'Magazine'
|
|
79
|
+
searchUnsplash()
|
|
85
80
|
}
|
|
86
|
-
})
|
|
81
|
+
})
|
|
87
82
|
</script>
|
|
88
83
|
|
|
89
84
|
<template>
|
|
@@ -97,9 +92,7 @@ onMounted(() => {
|
|
|
97
92
|
|
|
98
93
|
<div class="mysearchBarWithOptions">
|
|
99
94
|
<div class="relative w-full">
|
|
100
|
-
<div
|
|
101
|
-
class="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none"
|
|
102
|
-
>
|
|
95
|
+
<div class="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none">
|
|
103
96
|
<span class="material-symbols-outlined"> search </span>
|
|
104
97
|
</div>
|
|
105
98
|
<input
|
|
@@ -112,12 +105,7 @@ onMounted(() => {
|
|
|
112
105
|
/>
|
|
113
106
|
</div>
|
|
114
107
|
|
|
115
|
-
<button
|
|
116
|
-
type="submit"
|
|
117
|
-
class="myPrimaryButton"
|
|
118
|
-
>
|
|
119
|
-
Search
|
|
120
|
-
</button>
|
|
108
|
+
<button type="submit" class="myPrimaryButton">Search</button>
|
|
121
109
|
</div>
|
|
122
110
|
</form>
|
|
123
111
|
|
|
@@ -142,9 +130,7 @@ onMounted(() => {
|
|
|
142
130
|
"
|
|
143
131
|
class="mt-2"
|
|
144
132
|
>
|
|
145
|
-
<div
|
|
146
|
-
class="flex lg:justify-between justify-end items-center gap-2 py-2 mb-1"
|
|
147
|
-
>
|
|
133
|
+
<div class="flex lg:justify-between justify-end items-center gap-2 py-2 mb-1">
|
|
148
134
|
<div class="lg:flex hidden justify-left items-center gap-2">
|
|
149
135
|
<button
|
|
150
136
|
@click="searchByOrientation('landscape')"
|
|
@@ -189,27 +175,18 @@ onMounted(() => {
|
|
|
189
175
|
stroke="currentColor"
|
|
190
176
|
class="w-4 h-4 cursor-pointer"
|
|
191
177
|
>
|
|
192
|
-
<path
|
|
193
|
-
stroke-linecap="round"
|
|
194
|
-
stroke-linejoin="round"
|
|
195
|
-
d="M6 18L18 6M6 6l12 12"
|
|
196
|
-
/>
|
|
178
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
|
|
197
179
|
</svg>
|
|
198
180
|
</div>
|
|
199
181
|
|
|
200
|
-
<nav
|
|
201
|
-
class="flex items-center gap-2 justify-start"
|
|
202
|
-
aria-label="Pagination"
|
|
203
|
-
>
|
|
182
|
+
<nav class="flex items-center gap-2 justify-start" aria-label="Pagination">
|
|
204
183
|
<p class="myPrimaryParagraph text-xs italic">
|
|
205
184
|
Total pages {{ getUnsplashImages.fetchedMedia.total_pages }}
|
|
206
185
|
</p>
|
|
207
186
|
<p class="myPrimaryParagraph text-xs italic">
|
|
208
187
|
Images {{ getUnsplashImages.fetchedMedia.total }}
|
|
209
188
|
</p>
|
|
210
|
-
<div
|
|
211
|
-
class="flex flex-1 justify-between sm:justify-end items-center gap-2"
|
|
212
|
-
>
|
|
189
|
+
<div class="flex flex-1 justify-between sm:justify-end items-center gap-2">
|
|
213
190
|
<span
|
|
214
191
|
v-if="currentPage !== 1"
|
|
215
192
|
class="myPrimaryParagraph text-xs italic pr-2 pl-1 cursor-pointer underline"
|
|
@@ -231,13 +208,10 @@ onMounted(() => {
|
|
|
231
208
|
{{ currentPage }}
|
|
232
209
|
</span>
|
|
233
210
|
<button
|
|
234
|
-
:disabled="
|
|
235
|
-
currentPage >= getUnsplashImages.fetchedMedia.total_pages
|
|
236
|
-
"
|
|
211
|
+
:disabled="currentPage >= getUnsplashImages.fetchedMedia.total_pages"
|
|
237
212
|
class="myPrimaryButton"
|
|
238
213
|
:class="{
|
|
239
|
-
'opacity-50':
|
|
240
|
-
currentPage >= getUnsplashImages.fetchedMedia.total_pages,
|
|
214
|
+
'opacity-50': currentPage >= getUnsplashImages.fetchedMedia.total_pages,
|
|
241
215
|
}"
|
|
242
216
|
@click="nextPage(currentPage++)"
|
|
243
217
|
>
|
|
@@ -261,22 +235,14 @@ onMounted(() => {
|
|
|
261
235
|
class="group aspect-w-10 aspect-h-7 block w-full overflow-hidden rounded-lg bg-gray-100 focus-within:ring-2 focus-within:ring-myPrimaryBrandColor focus-within:ring-offset-2 focus-within:ring-offset-gray-100 cursor-pointer"
|
|
262
236
|
:src="image.urls.thumb"
|
|
263
237
|
/>
|
|
264
|
-
<p class="myPrimaryParagraph text-xs font-normal mt-2">
|
|
265
|
-
By: {{ image.user.name }}
|
|
266
|
-
</p>
|
|
238
|
+
<p class="myPrimaryParagraph text-xs font-normal mt-2">By: {{ image.user.name }}</p>
|
|
267
239
|
</div>
|
|
268
240
|
</div>
|
|
269
241
|
|
|
270
242
|
<div v-if="getUnsplashImages.fetchedMedia.results.length < 1">
|
|
271
243
|
<p class="myPrimaryParagraph py-4 px-4">
|
|
272
|
-
<span v-if="currentPage === 1">
|
|
273
|
-
|
|
274
|
-
</span>
|
|
275
|
-
<span
|
|
276
|
-
v-if="currentPage > 1"
|
|
277
|
-
@click="nextPage(1)"
|
|
278
|
-
class="myPrimaryLink"
|
|
279
|
-
>
|
|
244
|
+
<span v-if="currentPage === 1"> We did not find any images. Make a new search. </span>
|
|
245
|
+
<span v-if="currentPage > 1" @click="nextPage(1)" class="myPrimaryLink">
|
|
280
246
|
No results on current page. Navigate to First Page.
|
|
281
247
|
</span>
|
|
282
248
|
</p>
|
|
@@ -284,13 +250,7 @@ onMounted(() => {
|
|
|
284
250
|
</div>
|
|
285
251
|
</div>
|
|
286
252
|
|
|
287
|
-
<div
|
|
288
|
-
v-if="
|
|
289
|
-
getUnsplashImages &&
|
|
290
|
-
getUnsplashImages.isLoading &&
|
|
291
|
-
!getUnsplashImages.isError
|
|
292
|
-
"
|
|
293
|
-
>
|
|
253
|
+
<div v-if="getUnsplashImages && getUnsplashImages.isLoading && !getUnsplashImages.isError">
|
|
294
254
|
<div class="flex items-center justify-center mt-4">
|
|
295
255
|
<div
|
|
296
256
|
class="inline-block h-8 w-8 animate-spin rounded-full border-4 border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]"
|