@myissue/vue-website-page-builder 3.0.29 → 3.0.31
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/dist/vue-website-page-builder.js +20905 -20846
- package/dist/vue-website-page-builder.umd.cjs +49 -49
- package/package.json +1 -1
- package/src/Components/MediaLibrary/SidebarUnsplash.vue +3 -3
- package/src/Components/MediaLibrary/Unsplash.vue +2 -3
- package/src/Components/Modals/MediaLibraryModal.vue +1 -1
- package/src/Components/Modals/PageBuilderPreviewModal.vue +27 -9
- package/src/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue +3 -5
- package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/DeleteElement.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/ElementEditor.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/ImageEditor.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/LinkEditor.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +1 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +1 -2
- package/src/Components/PageBuilder/NoneCustomMediaLibraryComponent.vue +1 -3
- package/src/Components/PageBuilder/NoneCustomSearchComponent.vue +3 -4
- package/src/Components/TipTap/TipTap.vue +1 -2
- package/src/Components/TipTap/TipTapInput.vue +1 -2
- package/src/PageBuilder/PageBuilder.vue +5 -11
- package/src/composables/PageBuilderClass.ts +8 -12
- package/src/index.ts +1 -3
- package/src/stores/page-builder-state.ts +159 -0
- package/src/types/index.ts +4 -7
- package/src/stores/media-library.ts +0 -30
- package/src/stores/unsplash.ts +0 -107
- package/src/stores/user.ts +0 -32
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myissue/vue-website-page-builder",
|
|
3
|
-
"version": "v3.0.
|
|
3
|
+
"version": "v3.0.31",
|
|
4
4
|
"description": "🚧 DEVELOPMENT VERSION - Vue.js page builder component with drag & drop functionality. Not ready for production use.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/vue-website-page-builder.umd.cjs",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { ref, computed, onMounted, inject } from 'vue'
|
|
3
3
|
|
|
4
|
-
// Get
|
|
5
|
-
const
|
|
4
|
+
// Get consolidated store from parent PageBuilder component
|
|
5
|
+
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
6
6
|
|
|
7
7
|
const getCurrentImage = computed(() => {
|
|
8
|
-
return
|
|
8
|
+
return pageBuilderStateStore.getCurrentImage
|
|
9
9
|
})
|
|
10
10
|
</script>
|
|
11
11
|
|
|
@@ -3,7 +3,6 @@ import { ref, computed, onMounted, inject } from 'vue'
|
|
|
3
3
|
import { useUnsplashStore } from '@/stores/unsplash'
|
|
4
4
|
|
|
5
5
|
// Get stores from parent PageBuilder component
|
|
6
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
7
6
|
const unsplashStore = useUnsplashStore()
|
|
8
7
|
const searchQuery = ref('')
|
|
9
8
|
const currentPage = ref(1)
|
|
@@ -18,8 +17,8 @@ const getUnsplashImages = computed(() => {
|
|
|
18
17
|
})
|
|
19
18
|
|
|
20
19
|
const handleImageClick = function (file) {
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
pageBuilderStateStore.setCurrentImage({ src: file })
|
|
21
|
+
pageBuilderStateStore.setCurrentPreviewImage(null)
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
// search by orientation
|
|
@@ -94,7 +94,7 @@ provide('closeMediaLibraryModal', closeMediaLibraryModal)
|
|
|
94
94
|
leave-to="opacity-0 scale-95"
|
|
95
95
|
>
|
|
96
96
|
<div
|
|
97
|
-
class="relative max-h-[65rem] my-2 inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:align-middle sm:max-w-7xl sm:w-full w-[96%]"
|
|
97
|
+
class="font-sans relative max-h-[65rem] my-2 inline-block align-bottom bg-white rounded-2xl text-left overflow-hidden shadow-xl transform transition-all sm:align-middle sm:max-w-7xl sm:w-full w-[96%]"
|
|
98
98
|
>
|
|
99
99
|
<div
|
|
100
100
|
class="flex gap-2 justify-between items-center border-b border-gray-200 p-4 mb-2"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed, inject } from 'vue'
|
|
3
3
|
import { delay } from '@/composables/delay'
|
|
4
|
+
import { usePageBuilderStateStore } from '@/stores/page-builder-state'
|
|
4
5
|
|
|
5
6
|
import {
|
|
6
7
|
Dialog,
|
|
@@ -11,8 +12,8 @@ import {
|
|
|
11
12
|
} from '@headlessui/vue'
|
|
12
13
|
import { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/vue'
|
|
13
14
|
|
|
14
|
-
// Get
|
|
15
|
-
const
|
|
15
|
+
// Get store from parent PageBuilder component
|
|
16
|
+
const internalPinia = inject('internalPinia')
|
|
16
17
|
|
|
17
18
|
defineProps({
|
|
18
19
|
show: {
|
|
@@ -28,14 +29,20 @@ const emit = defineEmits(['firstPageBuilderPreviewModalButton'])
|
|
|
28
29
|
const firstButton = async function () {
|
|
29
30
|
emit('firstPageBuilderPreviewModalButton')
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
pageBuilderStateStore.setIsLoading(true)
|
|
32
33
|
await delay()
|
|
33
|
-
|
|
34
|
+
pageBuilderStateStore.setIsLoading(false)
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
const handleEscapeKey = function () {
|
|
37
38
|
firstButton()
|
|
38
39
|
}
|
|
40
|
+
|
|
41
|
+
const pageBuilderStateStore = usePageBuilderStateStore(internalPinia)
|
|
42
|
+
|
|
43
|
+
const getPageBuilderLogo = computed(() => {
|
|
44
|
+
return pageBuilderStateStore.getPageBuilderLogo
|
|
45
|
+
})
|
|
39
46
|
</script>
|
|
40
47
|
|
|
41
48
|
<template>
|
|
@@ -48,7 +55,9 @@ const handleEscapeKey = function () {
|
|
|
48
55
|
class="fixed z-30 inset-0 overflow-y-auto focus:outline-none"
|
|
49
56
|
tabindex="0"
|
|
50
57
|
>
|
|
51
|
-
<div
|
|
58
|
+
<div
|
|
59
|
+
class="font-sans flex items-end justify-center pb-20 text-center sm:block sm:p-0 bg-white"
|
|
60
|
+
>
|
|
52
61
|
<TransitionChild
|
|
53
62
|
as="template"
|
|
54
63
|
enter="ease-out duration-100"
|
|
@@ -78,11 +87,20 @@ const handleEscapeKey = function () {
|
|
|
78
87
|
class="bg-red-100 inline-block align-bottom text-left transform transition-all sm:align-middle w-full overflow-hidden h-[100vh] top-0 left-0 right-0 absolute"
|
|
79
88
|
>
|
|
80
89
|
<div
|
|
81
|
-
class="px-4
|
|
90
|
+
class="px-4 lg:h-[10vh] h-[16vh] flex items-center justify-between border-b border-gray-200 bg-white"
|
|
82
91
|
>
|
|
83
|
-
<
|
|
84
|
-
<
|
|
85
|
-
|
|
92
|
+
<div v-if="getPageBuilderLogo" class="flex items-center divide-x divide-gray-200">
|
|
93
|
+
<div class="pr-4">
|
|
94
|
+
<img class="h-6" :src="getPageBuilderLogo" alt="Logo" />
|
|
95
|
+
</div>
|
|
96
|
+
<span class="myPrimaryParagraph font-medium pl-4">Preview mode </span>
|
|
97
|
+
</div>
|
|
98
|
+
<div v-else>
|
|
99
|
+
<div class="pr-6">
|
|
100
|
+
<span class="myPrimaryParagraph font-medium">Preview mode </span>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
86
104
|
<div
|
|
87
105
|
@click="firstButton"
|
|
88
106
|
class="flex items-center justify-center gap-1 cursor-pointer"
|
|
@@ -8,20 +8,18 @@ import SlideOverRight from '@/Components/PageBuilder/Slidebars/SlideOverRight.vu
|
|
|
8
8
|
import PageBuilderSettings from '@/Components/PageBuilder/Settings/PageBuilderSettings.vue'
|
|
9
9
|
import DynamicModal from '@/Components/Modals/DynamicModal.vue'
|
|
10
10
|
|
|
11
|
-
// Get
|
|
11
|
+
// Get consolidated store from parent PageBuilder component
|
|
12
12
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
13
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
14
|
-
const userStore = inject('userStore')
|
|
15
13
|
|
|
16
14
|
const getCurrentUser = computed(() => {
|
|
17
|
-
return
|
|
15
|
+
return pageBuilderStateStore.getCurrentUser
|
|
18
16
|
})
|
|
19
17
|
|
|
20
18
|
const getCurrentResourceData = computed(() => {
|
|
21
19
|
return pageBuilderStateStore.getCurrentResourceData
|
|
22
20
|
})
|
|
23
21
|
|
|
24
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
22
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
25
23
|
const emit = defineEmits(['previewCurrentDesign'])
|
|
26
24
|
|
|
27
25
|
const showModalDeleteAllComponents = ref(false)
|
|
@@ -6,8 +6,7 @@ import tailwindColors from '@/utils/builder/tailwaind-colors'
|
|
|
6
6
|
|
|
7
7
|
// Get stores from parent PageBuilder component
|
|
8
8
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
9
|
-
const
|
|
10
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
|
|
9
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
11
10
|
const backgroundColor = ref(null)
|
|
12
11
|
const getBackgroundColor = computed(() => {
|
|
13
12
|
return pageBuilderStateStore.getBackgroundColor
|
|
@@ -6,9 +6,8 @@ import tailwindBorderRadius from '@/utils/builder/tailwind-border-radius'
|
|
|
6
6
|
|
|
7
7
|
// Get stores from parent PageBuilder component
|
|
8
8
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
9
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
10
9
|
|
|
11
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
10
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
12
11
|
const borderRadiusGlobal = ref(null)
|
|
13
12
|
const borderRadiusTopLeft = ref(null)
|
|
14
13
|
const borderRadiusTopRight = ref(null)
|
|
@@ -8,9 +8,8 @@ import { Listbox, ListboxButton, ListboxOption, ListboxOptions } from '@headless
|
|
|
8
8
|
|
|
9
9
|
// Get stores from parent PageBuilder component
|
|
10
10
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
11
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
12
11
|
|
|
13
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
12
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
14
13
|
const borderStyle = ref(null)
|
|
15
14
|
const borderWidth = ref(null)
|
|
16
15
|
const borderColor = ref(null)
|
|
@@ -5,9 +5,8 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
|
|
|
5
5
|
|
|
6
6
|
// Get stores from parent PageBuilder component
|
|
7
7
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
8
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
9
8
|
|
|
10
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
9
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
11
10
|
const currentClasses = ref(null)
|
|
12
11
|
const getCurrentClasses = computed(() => {
|
|
13
12
|
return pageBuilderStateStore.getCurrentClasses
|
|
@@ -6,7 +6,6 @@ import { ref } from 'vue'
|
|
|
6
6
|
|
|
7
7
|
// Get stores from parent PageBuilder component
|
|
8
8
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
9
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
10
9
|
|
|
11
10
|
const showModalDeleteComponent = ref(false)
|
|
12
11
|
// use dynamic model
|
|
@@ -21,7 +20,7 @@ const thirdButtonModal = ref(null)
|
|
|
21
20
|
const firstModalButtonFunction = ref(null)
|
|
22
21
|
const secondModalButtonFunction = ref(null)
|
|
23
22
|
const thirdModalButtonFunction = ref(null)
|
|
24
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
23
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
25
24
|
|
|
26
25
|
// remove component
|
|
27
26
|
const deleteComponent = function (e) {
|
|
@@ -5,9 +5,8 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
|
|
|
5
5
|
|
|
6
6
|
// Get stores from parent PageBuilder component
|
|
7
7
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
8
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
9
8
|
|
|
10
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
9
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
11
10
|
const getRestoredElement = computed(() => {
|
|
12
11
|
return pageBuilderStateStore.getRestoredElement
|
|
13
12
|
})
|
|
@@ -9,10 +9,9 @@ import BackgroundColorEditor from '@/Components/PageBuilder/EditorMenu/Editables
|
|
|
9
9
|
|
|
10
10
|
// Get stores from parent PageBuilder component
|
|
11
11
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
12
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
13
12
|
const customMediaComponent = inject('CustomMediaComponent')
|
|
14
13
|
|
|
15
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
14
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
16
15
|
|
|
17
16
|
const getElement = computed(() => {
|
|
18
17
|
return pageBuilderStateStore.getElement
|
|
@@ -5,9 +5,8 @@ import EditorAccordion from '@/Components/PageBuilder/EditorMenu/EditorAccordion
|
|
|
5
5
|
|
|
6
6
|
// Get stores from parent PageBuilder component
|
|
7
7
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
8
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
9
8
|
|
|
10
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
9
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
11
10
|
|
|
12
11
|
const getElement = computed(() => {
|
|
13
12
|
return pageBuilderStateStore.getElement
|
|
@@ -6,10 +6,9 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
|
|
|
6
6
|
|
|
7
7
|
// Get stores from parent PageBuilder component
|
|
8
8
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
9
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
10
9
|
const customMediaComponent = inject('CustomMediaComponent')
|
|
11
10
|
|
|
12
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
11
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
13
12
|
const isLoading = ref(false)
|
|
14
13
|
|
|
15
14
|
// use media library
|
|
@@ -6,9 +6,8 @@ import { Switch } from '@headlessui/vue'
|
|
|
6
6
|
|
|
7
7
|
// Get stores from parent PageBuilder component
|
|
8
8
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
9
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
10
9
|
|
|
11
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
10
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
12
11
|
const hyperlinkEnable = ref(false)
|
|
13
12
|
const urlInput = ref(null)
|
|
14
13
|
const openHyperlinkInNewTab = ref(false)
|
|
@@ -13,8 +13,7 @@ import {
|
|
|
13
13
|
|
|
14
14
|
// Get stores from parent PageBuilder component
|
|
15
15
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
16
|
-
const
|
|
17
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
|
|
16
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
18
17
|
const opacityVueModel = ref(null)
|
|
19
18
|
const getBackgroundOpacity = computed(() => {
|
|
20
19
|
return pageBuilderStateStore.getBackgroundOpacity
|
|
@@ -13,8 +13,7 @@ import {
|
|
|
13
13
|
|
|
14
14
|
// Get stores from parent PageBuilder component
|
|
15
15
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
16
|
-
const
|
|
17
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
|
|
16
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
18
17
|
const opacityVueModel = ref(null)
|
|
19
18
|
const getOpacity = computed(() => {
|
|
20
19
|
return pageBuilderStateStore.getOpacity
|
|
@@ -6,9 +6,8 @@ import tailwindPaddingPlusMargin from '@/utils/builder/tailwind-padding-margin'
|
|
|
6
6
|
|
|
7
7
|
// Get stores from parent PageBuilder component
|
|
8
8
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
9
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
10
9
|
|
|
11
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
10
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
12
11
|
const fontVerticalPadding = ref(null)
|
|
13
12
|
const fontHorizontalPadding = ref(null)
|
|
14
13
|
const fontVerticalMargin = ref(null)
|
|
@@ -6,8 +6,7 @@ import tailwindColors from '@/utils/builder/tailwaind-colors'
|
|
|
6
6
|
|
|
7
7
|
// Get stores from parent PageBuilder component
|
|
8
8
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
9
|
-
const
|
|
10
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore, mediaLibraryStore)
|
|
9
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
11
10
|
const textColor = ref(null)
|
|
12
11
|
const getTextColor = computed(() => {
|
|
13
12
|
return pageBuilderStateStore.getTextColor
|
|
@@ -7,9 +7,8 @@ import tailwindFontStyles from '@/utils/builder/tailwind-font-styles'
|
|
|
7
7
|
|
|
8
8
|
// Get stores from parent PageBuilder component
|
|
9
9
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
10
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
11
10
|
|
|
12
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
11
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
13
12
|
const fontBase = ref(null)
|
|
14
13
|
const fontDesktop = ref(null)
|
|
15
14
|
const fontTablet = ref(null)
|
|
@@ -4,18 +4,17 @@ import components from '../../utils/html-elements/component'
|
|
|
4
4
|
import PageBuilderClass from '../../composables/PageBuilderClass'
|
|
5
5
|
import { usePageBuilderModal } from '../../composables/usePageBuilderModal'
|
|
6
6
|
import { generateComponentPreview } from '../../utils/componentPreviews'
|
|
7
|
-
import type { ComponentObject, PageBuilderStateStore
|
|
7
|
+
import type { ComponentObject, PageBuilderStateStore } from '../../types'
|
|
8
8
|
|
|
9
9
|
import { inject, ref } from 'vue'
|
|
10
10
|
|
|
11
11
|
// Get stores from parent PageBuilder component
|
|
12
12
|
const pageBuilderStateStore = inject<PageBuilderStateStore>('pageBuilderStateStore')
|
|
13
|
-
const mediaLibraryStore = inject<MediaLibraryStore>('mediaLibraryStore')
|
|
14
13
|
|
|
15
14
|
// Get modal close function
|
|
16
15
|
const { closeAddComponentModal } = usePageBuilderModal()
|
|
17
16
|
|
|
18
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
17
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore!)
|
|
19
18
|
|
|
20
19
|
// Track image loading states
|
|
21
20
|
const imageLoadingStates = ref<Record<string, boolean>>({})
|
|
@@ -63,7 +62,7 @@ const getSvgPreview = (title: string) => {
|
|
|
63
62
|
</style>
|
|
64
63
|
|
|
65
64
|
<template>
|
|
66
|
-
<div class="
|
|
65
|
+
<div class="p-4">
|
|
67
66
|
<!-- Helper Components Section -->
|
|
68
67
|
<div class="mb-8">
|
|
69
68
|
<h3 class="myQuaternaryHeader mb-4">Helper Components</h3>
|
|
@@ -4,9 +4,8 @@ import PageBuilderClass from '@/composables/PageBuilderClass.ts'
|
|
|
4
4
|
|
|
5
5
|
// Get stores from parent PageBuilder component
|
|
6
6
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
7
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
8
7
|
|
|
9
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
8
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
10
9
|
</script>
|
|
11
10
|
|
|
12
11
|
<template>
|
|
@@ -8,7 +8,6 @@ import DynamicModal from '@/Components/Modals/DynamicModal.vue'
|
|
|
8
8
|
|
|
9
9
|
// Get stores from parent PageBuilder component
|
|
10
10
|
const pageBuilderStateStore = inject('pageBuilderStateStore')
|
|
11
|
-
const mediaLibraryStore = inject('mediaLibraryStore')
|
|
12
11
|
|
|
13
12
|
const showModalUrl = ref(false)
|
|
14
13
|
|
|
@@ -25,7 +24,7 @@ const firstModalButtonFunction = ref(null)
|
|
|
25
24
|
const secondModalButtonFunction = ref(null)
|
|
26
25
|
const thirdModalButtonFunction = ref(null)
|
|
27
26
|
|
|
28
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
27
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
29
28
|
|
|
30
29
|
const getElement = computed(() => {
|
|
31
30
|
return pageBuilderStateStore.getElement
|
|
@@ -11,8 +11,6 @@ import SearchComponents from '@/Components/Search/SearchComponents.vue'
|
|
|
11
11
|
import OptionsDropdown from '@/Components/PageBuilder/DropdownsPlusToggles/OptionsDropdown.vue'
|
|
12
12
|
import RightSidebarEditor from '@/Components/PageBuilder/EditorMenu/RightSidebarEditor.vue'
|
|
13
13
|
import { usePageBuilderStateStore } from '@/stores/page-builder-state'
|
|
14
|
-
import { useMediaLibraryStore } from '@/stores/media-library'
|
|
15
|
-
import { useUserStore } from '@/stores/user'
|
|
16
14
|
|
|
17
15
|
/**
|
|
18
16
|
* Props for PageBuilder component
|
|
@@ -66,9 +64,7 @@ const props = defineProps({
|
|
|
66
64
|
|
|
67
65
|
// Create internal Pinia instance for PageBuilder package
|
|
68
66
|
const internalPinia = createPinia()
|
|
69
|
-
const mediaLibraryStore = useMediaLibraryStore(internalPinia)
|
|
70
67
|
const pageBuilderStateStore = usePageBuilderStateStore(internalPinia)
|
|
71
|
-
const userStore = useUserStore(internalPinia)
|
|
72
68
|
|
|
73
69
|
// Set logo
|
|
74
70
|
if (props.PageBuilderLogo) {
|
|
@@ -85,19 +81,17 @@ if (props.resourceData) {
|
|
|
85
81
|
}
|
|
86
82
|
// Set current user if provided
|
|
87
83
|
if (props.userForPageBuilder) {
|
|
88
|
-
|
|
84
|
+
pageBuilderStateStore.setCurrentUser(props.userForPageBuilder)
|
|
89
85
|
}
|
|
90
86
|
|
|
91
87
|
// Set updateOrCreate in store
|
|
92
88
|
pageBuilderStateStore.setUpdateOrCreate(props.updateOrCreate)
|
|
93
89
|
|
|
94
|
-
// Initialize PageBuilder with
|
|
95
|
-
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore
|
|
90
|
+
// Initialize PageBuilder with store
|
|
91
|
+
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
96
92
|
|
|
97
|
-
// Provide
|
|
93
|
+
// Provide store for child components (all pointing to the same consolidated store)
|
|
98
94
|
provide('pageBuilderStateStore', pageBuilderStateStore)
|
|
99
|
-
provide('mediaLibraryStore', mediaLibraryStore)
|
|
100
|
-
provide('userStore', userStore)
|
|
101
95
|
|
|
102
96
|
// Provide the internal Pinia instance for components that need to create stores
|
|
103
97
|
provide('internalPinia', internalPinia)
|
|
@@ -158,7 +152,7 @@ const getComponents = computed(() => {
|
|
|
158
152
|
})
|
|
159
153
|
|
|
160
154
|
const getCurrentUser = computed(() => {
|
|
161
|
-
return
|
|
155
|
+
return pageBuilderStateStore.getCurrentUser
|
|
162
156
|
})
|
|
163
157
|
|
|
164
158
|
const getCurrentResourceData = computed(() => {
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
import type {
|
|
3
3
|
ComponentObject,
|
|
4
4
|
ImageObject,
|
|
5
|
-
PageBuilderStateStore,
|
|
6
|
-
MediaLibraryStore,
|
|
7
5
|
TimerHandle,
|
|
8
6
|
MutationObserver as MutationObserverType,
|
|
9
7
|
TailwindColors,
|
|
@@ -14,6 +12,7 @@ import type {
|
|
|
14
12
|
TailwindBorderRadius,
|
|
15
13
|
TailwindBorderStyleWidthColor,
|
|
16
14
|
} from '@/types'
|
|
15
|
+
import type { usePageBuilderStateStore } from '@/stores/page-builder-state'
|
|
17
16
|
|
|
18
17
|
import tailwindColors from '@/utils/builder/tailwaind-colors'
|
|
19
18
|
import tailwindOpacities from '@/utils/builder/tailwind-opacities'
|
|
@@ -33,11 +32,10 @@ class PageBuilderClass {
|
|
|
33
32
|
private nextTick: Promise<void>
|
|
34
33
|
private containsPagebuilder: Element | null
|
|
35
34
|
private timer: number | null
|
|
36
|
-
private pageBuilderStateStore:
|
|
37
|
-
private mediaLibraryStore: MediaLibraryStore
|
|
35
|
+
private pageBuilderStateStore: ReturnType<typeof usePageBuilderStateStore>
|
|
38
36
|
private getTextAreaVueModel: ComputedRef<string | null>
|
|
39
37
|
private getLocalStorageItemName: ComputedRef<string | null>
|
|
40
|
-
private getCurrentImage: ComputedRef<ImageObject
|
|
38
|
+
private getCurrentImage: ComputedRef<ImageObject>
|
|
41
39
|
private getHyberlinkEnable: ComputedRef<boolean>
|
|
42
40
|
private getComponents: ComputedRef<ComponentObject[] | null>
|
|
43
41
|
private getComponent: ComputedRef<ComponentObject | null>
|
|
@@ -53,7 +51,7 @@ class PageBuilderClass {
|
|
|
53
51
|
private delay: ReturnType<typeof delay>
|
|
54
52
|
private observer?: MutationObserverType
|
|
55
53
|
|
|
56
|
-
constructor(pageBuilderStateStore:
|
|
54
|
+
constructor(pageBuilderStateStore: ReturnType<typeof usePageBuilderStateStore>) {
|
|
57
55
|
/**
|
|
58
56
|
* Initialize an instance variable 'elementsWithListeners' as a WeakSet.
|
|
59
57
|
*
|
|
@@ -74,16 +72,15 @@ class PageBuilderClass {
|
|
|
74
72
|
|
|
75
73
|
this.timer = null
|
|
76
74
|
|
|
77
|
-
//
|
|
75
|
+
// Store is now required parameter - no fallback to inject
|
|
78
76
|
this.pageBuilderStateStore = pageBuilderStateStore
|
|
79
|
-
this.mediaLibraryStore = mediaLibraryStore
|
|
80
77
|
|
|
81
78
|
this.getTextAreaVueModel = computed(() => this.pageBuilderStateStore.getTextAreaVueModel)
|
|
82
79
|
this.getLocalStorageItemName = computed(
|
|
83
80
|
() => this.pageBuilderStateStore.getLocalStorageItemName,
|
|
84
81
|
)
|
|
85
82
|
|
|
86
|
-
this.getCurrentImage = computed(() => this.
|
|
83
|
+
this.getCurrentImage = computed(() => this.pageBuilderStateStore.getCurrentImage)
|
|
87
84
|
this.getHyberlinkEnable = computed(() => this.pageBuilderStateStore.getHyberlinkEnable)
|
|
88
85
|
this.getComponents = computed(() => this.pageBuilderStateStore.getComponents)
|
|
89
86
|
|
|
@@ -144,9 +141,8 @@ class PageBuilderClass {
|
|
|
144
141
|
})
|
|
145
142
|
|
|
146
143
|
// set to 'none' if undefined
|
|
147
|
-
let elementClass =
|
|
148
|
-
|
|
149
|
-
this.pageBuilderStateStore[mutationName as keyof PageBuilderStateStore](elementClass)
|
|
144
|
+
let elementClass =
|
|
145
|
+
currentCSS || 'none'(this.pageBuilderStateStore as any)[mutationName](elementClass)
|
|
150
146
|
|
|
151
147
|
if (typeof selectedCSS === 'string' && selectedCSS !== 'none') {
|
|
152
148
|
if (elementClass && this.getElement.value?.classList.contains(elementClass)) {
|
package/src/index.ts
CHANGED
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
export { default as PageBuilder } from './PageBuilder/PageBuilder.vue'
|
|
3
3
|
export { default as Preview } from './PageBuilder/Preview.vue'
|
|
4
4
|
|
|
5
|
-
// Export stores
|
|
5
|
+
// Export stores (consolidated into single store)
|
|
6
6
|
export { usePageBuilderStateStore } from './stores/page-builder-state'
|
|
7
|
-
export { useMediaLibraryStore } from './stores/media-library'
|
|
8
|
-
export { useUserStore } from './stores/user'
|
|
9
7
|
|
|
10
8
|
export { default as PageBuilderClass } from './composables/PageBuilderClass'
|
|
11
9
|
|