@myissue/vue-website-page-builder 3.2.81 → 3.2.83
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 +14 -14
- package/dist/vue-website-page-builder.js +7105 -7106
- package/dist/vue-website-page-builder.umd.cjs +47 -47
- package/package.json +1 -1
- package/src/Components/PageBuilder/EditorMenu/Editables/BackgroundColorEditor.vue +1 -1
- package/src/Components/PageBuilder/EditorMenu/Editables/BorderRadius.vue +5 -5
- package/src/Components/PageBuilder/EditorMenu/Editables/Borders.vue +3 -3
- package/src/Components/PageBuilder/EditorMenu/Editables/ClassEditor.vue +2 -2
- package/src/Components/PageBuilder/EditorMenu/Editables/ComponentTopMenu.vue +5 -5
- package/src/Components/PageBuilder/EditorMenu/Editables/EditGetElement.vue +1 -1
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageBackgroundOpacity.vue +1 -1
- package/src/Components/PageBuilder/EditorMenu/Editables/ManageOpacity.vue +1 -1
- package/src/Components/PageBuilder/EditorMenu/Editables/PaddingPlusMargin.vue +4 -4
- package/src/Components/PageBuilder/EditorMenu/Editables/TextColorEditor.vue +1 -1
- package/src/Components/PageBuilder/EditorMenu/Editables/Typography.vue +7 -7
- package/src/Components/TipTap/TipTap.vue +1 -1
- package/src/Components/TipTap/TipTapInput.vue +3 -3
- package/src/DemoComponents/DemoUnsplash.vue +2 -11
- package/src/DemoComponents/HomeSection.vue +6 -6
- package/src/PageBuilder/PageBuilder.vue +4 -6
- package/src/composables/PageBuilderClass.ts +19 -22
- package/src/helpers/passedPageBuilderConfig.ts +3 -3
- package/src/stores/page-builder-state.ts +1 -1
package/package.json
CHANGED
|
@@ -34,7 +34,7 @@ watch(
|
|
|
34
34
|
getBorderRadiusGlobal,
|
|
35
35
|
async (newValue) => {
|
|
36
36
|
borderRadiusGlobal.value = newValue
|
|
37
|
-
await pageBuilderClass.
|
|
37
|
+
await pageBuilderClass.initializeElementStyles()
|
|
38
38
|
},
|
|
39
39
|
{ immediate: true },
|
|
40
40
|
)
|
|
@@ -42,7 +42,7 @@ watch(
|
|
|
42
42
|
getBorderRadiusTopLeft,
|
|
43
43
|
async (newValue) => {
|
|
44
44
|
borderRadiusTopLeft.value = newValue
|
|
45
|
-
await pageBuilderClass.
|
|
45
|
+
await pageBuilderClass.initializeElementStyles()
|
|
46
46
|
},
|
|
47
47
|
{ immediate: true },
|
|
48
48
|
)
|
|
@@ -50,7 +50,7 @@ watch(
|
|
|
50
50
|
getBorderRadiusTopRight,
|
|
51
51
|
async (newValue) => {
|
|
52
52
|
borderRadiusTopRight.value = newValue
|
|
53
|
-
await pageBuilderClass.
|
|
53
|
+
await pageBuilderClass.initializeElementStyles()
|
|
54
54
|
},
|
|
55
55
|
{ immediate: true },
|
|
56
56
|
)
|
|
@@ -58,7 +58,7 @@ watch(
|
|
|
58
58
|
getBorderRadiusBottomleft,
|
|
59
59
|
async (newValue) => {
|
|
60
60
|
borderRadiusBottomleft.value = newValue
|
|
61
|
-
await pageBuilderClass.
|
|
61
|
+
await pageBuilderClass.initializeElementStyles()
|
|
62
62
|
},
|
|
63
63
|
{ immediate: true },
|
|
64
64
|
)
|
|
@@ -66,7 +66,7 @@ watch(
|
|
|
66
66
|
getBorderRadiusBottomRight,
|
|
67
67
|
async (newValue) => {
|
|
68
68
|
borderRadiusBottomRight.value = newValue
|
|
69
|
-
await pageBuilderClass.
|
|
69
|
+
await pageBuilderClass.initializeElementStyles()
|
|
70
70
|
},
|
|
71
71
|
{ immediate: true },
|
|
72
72
|
)
|
|
@@ -28,7 +28,7 @@ watch(
|
|
|
28
28
|
getBorderStyle,
|
|
29
29
|
async (newValue) => {
|
|
30
30
|
borderStyle.value = newValue
|
|
31
|
-
await pageBuilderClass.
|
|
31
|
+
await pageBuilderClass.initializeElementStyles()
|
|
32
32
|
},
|
|
33
33
|
{ immediate: true },
|
|
34
34
|
)
|
|
@@ -36,7 +36,7 @@ watch(
|
|
|
36
36
|
getBorderWidth,
|
|
37
37
|
async (newValue) => {
|
|
38
38
|
borderWidth.value = newValue
|
|
39
|
-
await pageBuilderClass.
|
|
39
|
+
await pageBuilderClass.initializeElementStyles()
|
|
40
40
|
},
|
|
41
41
|
{ immediate: true },
|
|
42
42
|
)
|
|
@@ -44,7 +44,7 @@ watch(
|
|
|
44
44
|
getBorderColor,
|
|
45
45
|
async (newValue) => {
|
|
46
46
|
borderColor.value = newValue
|
|
47
|
-
await pageBuilderClass.
|
|
47
|
+
await pageBuilderClass.initializeElementStyles()
|
|
48
48
|
},
|
|
49
49
|
{ immediate: true },
|
|
50
50
|
)
|
|
@@ -25,7 +25,7 @@ const inputClass = ref('')
|
|
|
25
25
|
|
|
26
26
|
const handleAddClasses = async function () {
|
|
27
27
|
pageBuilderClass.handleAddClasses(inputClass.value)
|
|
28
|
-
await pageBuilderClass.
|
|
28
|
+
await pageBuilderClass.initializeElementStyles()
|
|
29
29
|
|
|
30
30
|
inputClass.value = ''
|
|
31
31
|
}
|
|
@@ -43,7 +43,7 @@ const handleAddClasses = async function () {
|
|
|
43
43
|
@click="
|
|
44
44
|
async () => {
|
|
45
45
|
pageBuilderClass.handleRemoveClasses(className)
|
|
46
|
-
await pageBuilderClass.
|
|
46
|
+
await pageBuilderClass.initializeElementStyles()
|
|
47
47
|
}
|
|
48
48
|
"
|
|
49
49
|
>
|
|
@@ -23,7 +23,7 @@ const thirdModalButtonFunctionDynamicModalBuilder = ref(null)
|
|
|
23
23
|
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
24
24
|
|
|
25
25
|
// remove component
|
|
26
|
-
const
|
|
26
|
+
const deleteSelectedComponent = function (e) {
|
|
27
27
|
showModalDeleteComponent.value = true
|
|
28
28
|
typeModal.value = 'delete'
|
|
29
29
|
gridColumnModal.value = 2
|
|
@@ -40,7 +40,7 @@ const deleteComponent = function (e) {
|
|
|
40
40
|
//
|
|
41
41
|
// handle click
|
|
42
42
|
thirdModalButtonFunctionDynamicModalBuilder.value = function () {
|
|
43
|
-
pageBuilderClass.
|
|
43
|
+
pageBuilderClass.deleteSelectedComponent()
|
|
44
44
|
|
|
45
45
|
showModalDeleteComponent.value = false
|
|
46
46
|
}
|
|
@@ -68,7 +68,7 @@ const deleteComponent = function (e) {
|
|
|
68
68
|
<div class="flex flex-col items-center justify-center myPrimaryGap">
|
|
69
69
|
<div class="flex gap-2 items-center justify-center">
|
|
70
70
|
<div
|
|
71
|
-
@click="
|
|
71
|
+
@click="deleteSelectedComponent()"
|
|
72
72
|
class="h-10 w-10 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryErrorColor hover:text-white text-myPrimaryErrorColor"
|
|
73
73
|
>
|
|
74
74
|
<span class="material-symbols-outlined"> delete_forever </span>
|
|
@@ -77,14 +77,14 @@ const deleteComponent = function (e) {
|
|
|
77
77
|
|
|
78
78
|
<button
|
|
79
79
|
type="button"
|
|
80
|
-
@click="pageBuilderClass.
|
|
80
|
+
@click="pageBuilderClass.reorderComponent(-1)"
|
|
81
81
|
class="h-10 w-10 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
|
|
82
82
|
>
|
|
83
83
|
<span class="material-symbols-outlined"> move_up </span>
|
|
84
84
|
</button>
|
|
85
85
|
<button
|
|
86
86
|
type="button"
|
|
87
|
-
@click="pageBuilderClass.
|
|
87
|
+
@click="pageBuilderClass.reorderComponent(1)"
|
|
88
88
|
class="h-10 w-10 cursor-pointer rounded-full flex items-center border-none justify-center bg-gray-50 aspect-square hover:bg-myPrimaryLinkColor hover:text-white focus-visible:ring-0"
|
|
89
89
|
>
|
|
90
90
|
<span class="material-symbols-outlined"> move_down </span>
|
|
@@ -30,7 +30,7 @@ watch(
|
|
|
30
30
|
getFontVerticalPadding,
|
|
31
31
|
async (newValue) => {
|
|
32
32
|
fontVerticalPadding.value = newValue
|
|
33
|
-
await pageBuilderClass.
|
|
33
|
+
await pageBuilderClass.initializeElementStyles()
|
|
34
34
|
},
|
|
35
35
|
{ immediate: true },
|
|
36
36
|
)
|
|
@@ -38,7 +38,7 @@ watch(
|
|
|
38
38
|
getFontHorizontalPadding,
|
|
39
39
|
async (newValue) => {
|
|
40
40
|
fontHorizontalPadding.value = newValue
|
|
41
|
-
await pageBuilderClass.
|
|
41
|
+
await pageBuilderClass.initializeElementStyles()
|
|
42
42
|
},
|
|
43
43
|
{ immediate: true },
|
|
44
44
|
)
|
|
@@ -46,7 +46,7 @@ watch(
|
|
|
46
46
|
getFontVerticalMargin,
|
|
47
47
|
async (newValue) => {
|
|
48
48
|
fontVerticalMargin.value = newValue
|
|
49
|
-
await pageBuilderClass.
|
|
49
|
+
await pageBuilderClass.initializeElementStyles()
|
|
50
50
|
},
|
|
51
51
|
{ immediate: true },
|
|
52
52
|
)
|
|
@@ -54,7 +54,7 @@ watch(
|
|
|
54
54
|
getFontHorizontalMargin,
|
|
55
55
|
async (newValue) => {
|
|
56
56
|
fontHorizontalMargin.value = newValue
|
|
57
|
-
await pageBuilderClass.
|
|
57
|
+
await pageBuilderClass.initializeElementStyles()
|
|
58
58
|
},
|
|
59
59
|
{ immediate: true },
|
|
60
60
|
)
|
|
@@ -43,7 +43,7 @@ watch(
|
|
|
43
43
|
getFontBase,
|
|
44
44
|
async (newValue) => {
|
|
45
45
|
fontBase.value = newValue
|
|
46
|
-
await pageBuilderClass.
|
|
46
|
+
await pageBuilderClass.initializeElementStyles()
|
|
47
47
|
},
|
|
48
48
|
{ immediate: true },
|
|
49
49
|
)
|
|
@@ -51,7 +51,7 @@ watch(
|
|
|
51
51
|
getFontDesktop,
|
|
52
52
|
async (newValue) => {
|
|
53
53
|
fontDesktop.value = newValue
|
|
54
|
-
await pageBuilderClass.
|
|
54
|
+
await pageBuilderClass.initializeElementStyles()
|
|
55
55
|
},
|
|
56
56
|
{ immediate: true },
|
|
57
57
|
)
|
|
@@ -59,7 +59,7 @@ watch(
|
|
|
59
59
|
getFontTablet,
|
|
60
60
|
async (newValue) => {
|
|
61
61
|
fontTablet.value = newValue
|
|
62
|
-
await pageBuilderClass.
|
|
62
|
+
await pageBuilderClass.initializeElementStyles()
|
|
63
63
|
},
|
|
64
64
|
{ immediate: true },
|
|
65
65
|
)
|
|
@@ -67,7 +67,7 @@ watch(
|
|
|
67
67
|
getFontMobile,
|
|
68
68
|
async (newValue) => {
|
|
69
69
|
fontMobile.value = newValue
|
|
70
|
-
await pageBuilderClass.
|
|
70
|
+
await pageBuilderClass.initializeElementStyles()
|
|
71
71
|
},
|
|
72
72
|
{ immediate: true },
|
|
73
73
|
)
|
|
@@ -75,7 +75,7 @@ watch(
|
|
|
75
75
|
getFontWeight,
|
|
76
76
|
async (newValue) => {
|
|
77
77
|
fontWeight.value = newValue
|
|
78
|
-
await pageBuilderClass.
|
|
78
|
+
await pageBuilderClass.initializeElementStyles()
|
|
79
79
|
},
|
|
80
80
|
{ immediate: true },
|
|
81
81
|
)
|
|
@@ -83,7 +83,7 @@ watch(
|
|
|
83
83
|
getFontFamily,
|
|
84
84
|
async (newValue) => {
|
|
85
85
|
fontFamily.value = newValue
|
|
86
|
-
await pageBuilderClass.
|
|
86
|
+
await pageBuilderClass.initializeElementStyles()
|
|
87
87
|
},
|
|
88
88
|
{ immediate: true },
|
|
89
89
|
)
|
|
@@ -91,7 +91,7 @@ watch(
|
|
|
91
91
|
getFontStyle,
|
|
92
92
|
async (newValue) => {
|
|
93
93
|
fontStyle.value = newValue
|
|
94
|
-
await pageBuilderClass.
|
|
94
|
+
await pageBuilderClass.initializeElementStyles()
|
|
95
95
|
},
|
|
96
96
|
{ immediate: true },
|
|
97
97
|
)
|
|
@@ -11,7 +11,7 @@ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
|
11
11
|
<template>
|
|
12
12
|
<div>
|
|
13
13
|
<div class="blockease-linear duration-200 block ease-linear">
|
|
14
|
-
<template v-if="pageBuilderClass.
|
|
14
|
+
<template v-if="pageBuilderClass.isSelectedElementValidText()">
|
|
15
15
|
<div class="flex items-center justify-center mb-6">
|
|
16
16
|
<div class="px-2 flex items-center justify-start gap-2 w-max">
|
|
17
17
|
<button
|
|
@@ -69,7 +69,7 @@ const editor = useEditor({
|
|
|
69
69
|
|
|
70
70
|
// watch for changes in textContent and update store and textContentVueModel
|
|
71
71
|
watch(textContent, async (newValue) => {
|
|
72
|
-
if (!pageBuilderClass.
|
|
72
|
+
if (!pageBuilderClass.isSelectedElementValidText()) return
|
|
73
73
|
|
|
74
74
|
if (getElement.value) {
|
|
75
75
|
pageBuilderStateStore.setTextAreaVueModel(newValue)
|
|
@@ -81,7 +81,7 @@ watch(textContent, async (newValue) => {
|
|
|
81
81
|
})
|
|
82
82
|
|
|
83
83
|
const TipTapSetContent = function () {
|
|
84
|
-
if (!pageBuilderClass.
|
|
84
|
+
if (!pageBuilderClass.isSelectedElementValidText()) return
|
|
85
85
|
|
|
86
86
|
if (editor.value) {
|
|
87
87
|
editor.value.commands.setContent(getElement.value.innerHTML)
|
|
@@ -208,7 +208,7 @@ onMounted(() => {
|
|
|
208
208
|
</DynamicModalBuilder>
|
|
209
209
|
|
|
210
210
|
<div class="blockease-linear duration-200 block ease-linear">
|
|
211
|
-
<div v-if="pageBuilderClass.
|
|
211
|
+
<div v-if="pageBuilderClass.isSelectedElementValidText() && editor">
|
|
212
212
|
<div class="relative rounded-lg">
|
|
213
213
|
<div
|
|
214
214
|
class="flex justify-between myPrimaryGap items-center py-4 px-4 overflow-x-auto border-b border-gray-200"
|
|
@@ -112,17 +112,8 @@ const applySelectedImage = async function (imageURL) {
|
|
|
112
112
|
|
|
113
113
|
// on mounted
|
|
114
114
|
onMounted(async () => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (localStorage.getItem('unsplash-query') && localStorage.getItem('unsplash-query').length > 0) {
|
|
118
|
-
term = getSearchTerm.value = localStorage.getItem('unsplash-query')
|
|
119
|
-
page = getCurrentPageNumber.value = localStorage.getItem('unsplash-page')
|
|
120
|
-
fetchUnsplash()
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
term ? getSearchTerm.value : 'Magazine'
|
|
124
|
-
page ? getCurrentPageNumber.value : 1
|
|
125
|
-
fetchUnsplash()
|
|
115
|
+
getSearchTerm.value = localStorage.getItem('unsplash-query') || 'Magazine'
|
|
116
|
+
getCurrentPageNumber.value = Number(localStorage.getItem('unsplash-page')) || 1
|
|
126
117
|
|
|
127
118
|
await fetchUnsplash()
|
|
128
119
|
})
|
|
@@ -71,7 +71,7 @@ const configPageBuilder = {
|
|
|
71
71
|
image: '/jane_doe.jpg',
|
|
72
72
|
},
|
|
73
73
|
updateOrCreate: {
|
|
74
|
-
formType: '
|
|
74
|
+
formType: 'create' as 'create',
|
|
75
75
|
formName: 'news',
|
|
76
76
|
},
|
|
77
77
|
pageBuilderLogo: {
|
|
@@ -91,18 +91,18 @@ const configPageBuilder = {
|
|
|
91
91
|
},
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
pageBuilderClass.
|
|
94
|
+
pageBuilderClass.applyPageBuilderConfig(configPageBuilder)
|
|
95
95
|
|
|
96
96
|
onMounted(async () => {
|
|
97
97
|
if (typeof getLocalStorageItemName.value === 'string' && getLocalStorageItemName.value) {
|
|
98
98
|
const value = localStorage.getItem(getLocalStorageItemName.value)
|
|
99
99
|
|
|
100
100
|
if (value) {
|
|
101
|
-
pageBuilderClass.
|
|
101
|
+
pageBuilderClass.mountComponentsToDOM(JSON.stringify(value))
|
|
102
102
|
} else {
|
|
103
|
-
pageBuilderClass.
|
|
104
|
-
// pageBuilderClass.
|
|
105
|
-
// pageBuilderClass.
|
|
103
|
+
pageBuilderClass.mountComponentsToDOM(JSON.stringify(html), true)
|
|
104
|
+
// pageBuilderClass.mountComponentsToDOM(rawHTML, true)
|
|
105
|
+
// pageBuilderClass.mountComponentsToDOM(JSON.stringify(oldhtmlfromdb), true)
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
})
|
|
@@ -132,7 +132,6 @@ const getElementAttributes = computed(() => {
|
|
|
132
132
|
})
|
|
133
133
|
|
|
134
134
|
const debounce = useDebounce()
|
|
135
|
-
const debounceManual = useDebounce()
|
|
136
135
|
|
|
137
136
|
watch(getElementAttributes, async (newAttributes, oldAttributes) => {
|
|
138
137
|
// Only run if attributes actually changed
|
|
@@ -145,8 +144,7 @@ watch(getElementAttributes, async (newAttributes, oldAttributes) => {
|
|
|
145
144
|
) {
|
|
146
145
|
debounce(async () => {
|
|
147
146
|
await pageBuilderClass.handleAutoSave()
|
|
148
|
-
await pageBuilderClass.
|
|
149
|
-
// await pageBuilderClass.setEventListenersForElements()
|
|
147
|
+
await pageBuilderClass.initializeElementStyles()
|
|
150
148
|
}, 200)
|
|
151
149
|
}
|
|
152
150
|
})
|
|
@@ -171,7 +169,7 @@ const handleConfig = function (config) {
|
|
|
171
169
|
config === undefined ||
|
|
172
170
|
(config && Object.keys(config).length === 0 && config.constructor === Object)
|
|
173
171
|
) {
|
|
174
|
-
pageBuilderClass.
|
|
172
|
+
pageBuilderClass.applyPageBuilderConfig(defaultConfigValues)
|
|
175
173
|
return
|
|
176
174
|
}
|
|
177
175
|
|
|
@@ -188,7 +186,7 @@ watch(
|
|
|
188
186
|
pageBuilderClass.updateLocalStorageItemName()
|
|
189
187
|
|
|
190
188
|
if (config && config.updateOrCreate && config.updateOrCreate.formType === 'create') {
|
|
191
|
-
pageBuilderClass.
|
|
189
|
+
pageBuilderClass.mountComponentsToDOM()
|
|
192
190
|
}
|
|
193
191
|
},
|
|
194
192
|
{ immediate: true },
|
|
@@ -245,7 +243,7 @@ onMounted(async () => {
|
|
|
245
243
|
|
|
246
244
|
await pageBuilderClass.clearHtmlSelection()
|
|
247
245
|
|
|
248
|
-
await pageBuilderClass.
|
|
246
|
+
await pageBuilderClass.addListenersToEditableElements()
|
|
249
247
|
|
|
250
248
|
if (await pageBuilderClass.hasLocalDraftForUpdate()) {
|
|
251
249
|
handlerRumeEditingForUpdate()
|
|
@@ -108,8 +108,8 @@ class PageBuilderClass {
|
|
|
108
108
|
await this.#removeHoveredAndSelected()
|
|
109
109
|
}
|
|
110
110
|
// Load existing content from HTML when in update mode
|
|
111
|
-
|
|
112
|
-
this.pageBuilderStateStore.
|
|
111
|
+
applyPageBuilderConfig(data: PageBuilderConfig): void {
|
|
112
|
+
this.pageBuilderStateStore.applyPageBuilderConfig(data)
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
#applyElementClassChanges(
|
|
@@ -248,7 +248,7 @@ class PageBuilderClass {
|
|
|
248
248
|
* The function is used to
|
|
249
249
|
* attach event listeners to each element within a 'section'
|
|
250
250
|
*/
|
|
251
|
-
|
|
251
|
+
addListenersToEditableElements = async () => {
|
|
252
252
|
const elementsWithListeners = new WeakSet<Element>()
|
|
253
253
|
|
|
254
254
|
const pagebuilder = document.querySelector('#pagebuilder')
|
|
@@ -400,9 +400,6 @@ class PageBuilderClass {
|
|
|
400
400
|
section.setAttribute('data-component-title', clonedComponent.title)
|
|
401
401
|
}
|
|
402
402
|
|
|
403
|
-
// Find all images within elements with "flex" or "grid" classes inside the section
|
|
404
|
-
const images = section.querySelectorAll('img')
|
|
405
|
-
|
|
406
403
|
// Update the clonedComponent id with the newly generated unique ID
|
|
407
404
|
clonedComponent.id = section.dataset.componentid
|
|
408
405
|
|
|
@@ -433,7 +430,7 @@ class PageBuilderClass {
|
|
|
433
430
|
}
|
|
434
431
|
}
|
|
435
432
|
|
|
436
|
-
async
|
|
433
|
+
async #syncCurrentClasses() {
|
|
437
434
|
await new Promise((resolve) => requestAnimationFrame(resolve))
|
|
438
435
|
|
|
439
436
|
// convert classList to array
|
|
@@ -498,7 +495,7 @@ class PageBuilderClass {
|
|
|
498
495
|
|
|
499
496
|
// if parent element tag is section remove the hole component
|
|
500
497
|
if (element.parentElement?.tagName === 'SECTION') {
|
|
501
|
-
this.
|
|
498
|
+
this.deleteSelectedComponent()
|
|
502
499
|
}
|
|
503
500
|
|
|
504
501
|
// Remove the element from the DOM
|
|
@@ -530,7 +527,7 @@ class PageBuilderClass {
|
|
|
530
527
|
this.pageBuilderStateStore.setComponent(null)
|
|
531
528
|
this.pageBuilderStateStore.setElement(null)
|
|
532
529
|
|
|
533
|
-
await this.
|
|
530
|
+
await this.addListenersToEditableElements()
|
|
534
531
|
}
|
|
535
532
|
|
|
536
533
|
handleFontWeight(userSelectedFontWeight?: string): void {
|
|
@@ -773,7 +770,7 @@ class PageBuilderClass {
|
|
|
773
770
|
this.pageBuilderStateStore.setComponents([])
|
|
774
771
|
}
|
|
775
772
|
|
|
776
|
-
|
|
773
|
+
deleteSelectedComponent() {
|
|
777
774
|
if (!this.getComponents.value || !this.getComponent.value) return
|
|
778
775
|
|
|
779
776
|
// Find the index of the component to delete
|
|
@@ -796,7 +793,7 @@ class PageBuilderClass {
|
|
|
796
793
|
|
|
797
794
|
// move component
|
|
798
795
|
// runs when html components are rearranged
|
|
799
|
-
|
|
796
|
+
reorderComponent(direction: number): void {
|
|
800
797
|
if (!this.getComponents.value || !this.getComponent.value) return
|
|
801
798
|
|
|
802
799
|
if (this.getComponents.value.length <= 1) return
|
|
@@ -884,7 +881,7 @@ class PageBuilderClass {
|
|
|
884
881
|
//
|
|
885
882
|
//
|
|
886
883
|
//
|
|
887
|
-
|
|
884
|
+
isSelectedElementValidText() {
|
|
888
885
|
let reachedElseStatement = false
|
|
889
886
|
|
|
890
887
|
// Get all child elements of the parentDiv
|
|
@@ -1269,7 +1266,7 @@ class PageBuilderClass {
|
|
|
1269
1266
|
this.pageBuilderStateStore.setComponents(parsed.components)
|
|
1270
1267
|
localStorage.removeItem(key)
|
|
1271
1268
|
await nextTick()
|
|
1272
|
-
await this.
|
|
1269
|
+
await this.addListenersToEditableElements()
|
|
1273
1270
|
await this.handleAutoSave()
|
|
1274
1271
|
}
|
|
1275
1272
|
} catch (e) {
|
|
@@ -1283,7 +1280,7 @@ class PageBuilderClass {
|
|
|
1283
1280
|
getStorageItemNameForResource(): string | null {
|
|
1284
1281
|
return this.getLocalStorageItemName.value
|
|
1285
1282
|
}
|
|
1286
|
-
|
|
1283
|
+
loadStoredComponentsFromStorage() {
|
|
1287
1284
|
if (!this.getLocalStorageItemName.value) return false
|
|
1288
1285
|
|
|
1289
1286
|
if (
|
|
@@ -1302,7 +1299,7 @@ class PageBuilderClass {
|
|
|
1302
1299
|
}
|
|
1303
1300
|
//
|
|
1304
1301
|
//
|
|
1305
|
-
async updateBasePrimaryImage(
|
|
1302
|
+
async updateBasePrimaryImage(): Promise<void> {
|
|
1306
1303
|
if (!this.getElement.value) return
|
|
1307
1304
|
|
|
1308
1305
|
// If no data provided, apply current image if available (new simplified usage)
|
|
@@ -1313,7 +1310,7 @@ class PageBuilderClass {
|
|
|
1313
1310
|
}
|
|
1314
1311
|
}
|
|
1315
1312
|
|
|
1316
|
-
|
|
1313
|
+
setBasePrimaryImageFromCurrent() {
|
|
1317
1314
|
if (!this.getElement.value) return
|
|
1318
1315
|
|
|
1319
1316
|
const currentImageContainer = document.createElement('div')
|
|
@@ -1521,7 +1518,7 @@ class PageBuilderClass {
|
|
|
1521
1518
|
|
|
1522
1519
|
// Wait for the DOM to update before setting event listeners
|
|
1523
1520
|
await nextTick()
|
|
1524
|
-
await this.
|
|
1521
|
+
await this.addListenersToEditableElements()
|
|
1525
1522
|
await this.handleAutoSave()
|
|
1526
1523
|
} catch (error) {
|
|
1527
1524
|
console.error('Error adding component:', error)
|
|
@@ -1663,7 +1660,7 @@ class PageBuilderClass {
|
|
|
1663
1660
|
}
|
|
1664
1661
|
|
|
1665
1662
|
// Load existing content from HTML when in update mode
|
|
1666
|
-
|
|
1663
|
+
mountComponentsToDOM(data?: string, injectCustomHTMLSections?: boolean): void {
|
|
1667
1664
|
this.pageBuilderStateStore.setComponents([])
|
|
1668
1665
|
|
|
1669
1666
|
if (!this.pageBuilderStateStore.getConfigPageBuilder) return
|
|
@@ -1672,7 +1669,7 @@ class PageBuilderClass {
|
|
|
1672
1669
|
this.setComponentsFromData(data)
|
|
1673
1670
|
}
|
|
1674
1671
|
|
|
1675
|
-
const storedData = this.
|
|
1672
|
+
const storedData = this.loadStoredComponentsFromStorage()
|
|
1676
1673
|
|
|
1677
1674
|
if (
|
|
1678
1675
|
this.pageBuilderStateStore.getConfigPageBuilder &&
|
|
@@ -1705,7 +1702,7 @@ class PageBuilderClass {
|
|
|
1705
1702
|
}
|
|
1706
1703
|
}
|
|
1707
1704
|
|
|
1708
|
-
async
|
|
1705
|
+
async initializeElementStyles(): Promise<void> {
|
|
1709
1706
|
await new Promise((resolve) => requestAnimationFrame(resolve))
|
|
1710
1707
|
|
|
1711
1708
|
// handle custom URL
|
|
@@ -1715,7 +1712,7 @@ class PageBuilderClass {
|
|
|
1715
1712
|
// handle BG opacity
|
|
1716
1713
|
this.handleBackgroundOpacity(undefined)
|
|
1717
1714
|
// displayed image
|
|
1718
|
-
this.
|
|
1715
|
+
this.setBasePrimaryImageFromCurrent()
|
|
1719
1716
|
// border style
|
|
1720
1717
|
this.handleBorderStyle(undefined)
|
|
1721
1718
|
// border width
|
|
@@ -1753,7 +1750,7 @@ class PageBuilderClass {
|
|
|
1753
1750
|
// handle text color
|
|
1754
1751
|
this.handleTextColor(undefined)
|
|
1755
1752
|
// handle classes
|
|
1756
|
-
await this
|
|
1753
|
+
await this.#syncCurrentClasses()
|
|
1757
1754
|
}
|
|
1758
1755
|
}
|
|
1759
1756
|
|
|
@@ -23,7 +23,7 @@ export const updateOrCreateIsFalsy = function (config: PageBuilderConfig) {
|
|
|
23
23
|
},
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
pageBuilderClass.
|
|
26
|
+
pageBuilderClass.applyPageBuilderConfig(updatedConfig)
|
|
27
27
|
return true
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -43,7 +43,7 @@ export const updateOrCreateIsFalsy = function (config: PageBuilderConfig) {
|
|
|
43
43
|
},
|
|
44
44
|
} as const
|
|
45
45
|
|
|
46
|
-
pageBuilderClass.
|
|
46
|
+
pageBuilderClass.applyPageBuilderConfig(updatedConfig)
|
|
47
47
|
return true
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -65,7 +65,7 @@ export const updateOrCreateIsFalsy = function (config: PageBuilderConfig) {
|
|
|
65
65
|
},
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
pageBuilderClass.
|
|
68
|
+
pageBuilderClass.applyPageBuilderConfig(updatedConfig)
|
|
69
69
|
return true
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -436,7 +436,7 @@ export const usePageBuilderStateStore = defineStore('pageBuilderState', {
|
|
|
436
436
|
localStorage.setItem('preview', payload)
|
|
437
437
|
},
|
|
438
438
|
|
|
439
|
-
|
|
439
|
+
applyPageBuilderConfig(payload: PageBuilderConfig | null): void {
|
|
440
440
|
this.configPageBuilder = payload
|
|
441
441
|
},
|
|
442
442
|
|