@myissue/vue-website-page-builder 3.1.24 → 3.1.26
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 +78 -8
- package/dist/vue-website-page-builder.js +404 -381
- package/dist/vue-website-page-builder.umd.cjs +21 -21
- package/package.json +1 -1
- package/src/Components/PageBuilder/Settings/PageBuilderSettings.vue +12 -2
- package/src/PageBuilder/PageBuilder.vue +5 -35
- package/src/composables/PageBuilderClass.ts +80 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myissue/vue-website-page-builder",
|
|
3
|
-
"version": "v3.1.
|
|
3
|
+
"version": "v3.1.26",
|
|
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",
|
|
@@ -344,10 +344,20 @@ const handleDownloadHTML = function () {
|
|
|
344
344
|
: 'bg-blue-100 text-blue-800'
|
|
345
345
|
"
|
|
346
346
|
>
|
|
347
|
-
<span
|
|
347
|
+
<span
|
|
348
|
+
v-if="
|
|
349
|
+
getConfigPageBuilder &&
|
|
350
|
+
getConfigPageBuilder.updateOrCreate.formType === 'create'
|
|
351
|
+
"
|
|
352
|
+
>
|
|
348
353
|
{{ getConfigPageBuilder.updateOrCreate.formType }}
|
|
349
354
|
</span>
|
|
350
|
-
<span
|
|
355
|
+
<span
|
|
356
|
+
v-if="
|
|
357
|
+
getConfigPageBuilder &&
|
|
358
|
+
getConfigPageBuilder.updateOrCreate.formType === 'update'
|
|
359
|
+
"
|
|
360
|
+
>
|
|
351
361
|
{{ getConfigPageBuilder.updateOrCreate.formType }}
|
|
352
362
|
</span>
|
|
353
363
|
</span>
|
|
@@ -26,45 +26,12 @@ const props = defineProps({
|
|
|
26
26
|
type: Object,
|
|
27
27
|
default: null,
|
|
28
28
|
},
|
|
29
|
-
configPageBuilder: {
|
|
30
|
-
type: Object,
|
|
31
|
-
default: () => ({ updateOrCreate: 'create' }),
|
|
32
|
-
required: false,
|
|
33
|
-
},
|
|
34
29
|
})
|
|
35
30
|
|
|
36
31
|
// Use shared Pinia instance for PageBuilder package (THIS IS THE KEY CHANGE!)
|
|
37
32
|
const internalPinia = sharedPageBuilderPinia
|
|
38
33
|
const pageBuilderStateStore = sharedPageBuilderStore
|
|
39
34
|
|
|
40
|
-
// Set configPageBuilder in store (this will be the single source of truth)
|
|
41
|
-
if (props.configPageBuilder) {
|
|
42
|
-
// Ensure updateOrCreate defaults with proper deep merge
|
|
43
|
-
const defaultUpdateOrCreate = {
|
|
44
|
-
formType: 'create',
|
|
45
|
-
createNewResourceFormName: 'post',
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const defaultUserSettings = {
|
|
49
|
-
theme: 'light',
|
|
50
|
-
language: 'en',
|
|
51
|
-
autoSave: true,
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const configWithDefaults = {
|
|
55
|
-
...props.configPageBuilder,
|
|
56
|
-
updateOrCreate: {
|
|
57
|
-
...defaultUpdateOrCreate,
|
|
58
|
-
...props.configPageBuilder.updateOrCreate,
|
|
59
|
-
},
|
|
60
|
-
userSettings: {
|
|
61
|
-
...defaultUserSettings,
|
|
62
|
-
...props.configPageBuilder.userSettings,
|
|
63
|
-
},
|
|
64
|
-
}
|
|
65
|
-
pageBuilderStateStore.setConfigPageBuilder(configWithDefaults)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
35
|
// Initialize PageBuilder with store
|
|
69
36
|
const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore)
|
|
70
37
|
|
|
@@ -178,10 +145,13 @@ const draggableZone = ref(null)
|
|
|
178
145
|
|
|
179
146
|
onMounted(async () => {
|
|
180
147
|
pageBuilderClass.updateLocalStorageItemName()
|
|
181
|
-
// Set up event listeners
|
|
182
148
|
await pageBuilderClass.setEventListenersForElements()
|
|
183
149
|
|
|
184
|
-
if (
|
|
150
|
+
if (
|
|
151
|
+
getConfigPageBuilder.value &&
|
|
152
|
+
getConfigPageBuilder.value.updateOrCreate &&
|
|
153
|
+
getConfigPageBuilder.value.updateOrCreate.formType === 'create'
|
|
154
|
+
) {
|
|
185
155
|
pageBuilderClass.loadExistingContent()
|
|
186
156
|
}
|
|
187
157
|
|
|
@@ -11,6 +11,7 @@ import type {
|
|
|
11
11
|
TailwindPaddingAndMargin,
|
|
12
12
|
TailwindBorderRadius,
|
|
13
13
|
TailwindBorderStyleWidthColor,
|
|
14
|
+
PageBuilderConfig,
|
|
14
15
|
} from '../types'
|
|
15
16
|
import type { usePageBuilderStateStore } from '../stores/page-builder-state'
|
|
16
17
|
|
|
@@ -126,6 +127,34 @@ class PageBuilderClass {
|
|
|
126
127
|
this.delay = delay()
|
|
127
128
|
}
|
|
128
129
|
|
|
130
|
+
// Load existing content from HTML when in update mode
|
|
131
|
+
setConfigPageBuilder(data: PageBuilderConfig): void {
|
|
132
|
+
const defaultUpdateOrCreate = {
|
|
133
|
+
formType: 'create',
|
|
134
|
+
createNewResourceFormName: 'post',
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const defaultUserSettings = {
|
|
138
|
+
theme: 'light',
|
|
139
|
+
language: 'en',
|
|
140
|
+
autoSave: true,
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const configWithDefaults = {
|
|
144
|
+
...data,
|
|
145
|
+
updateOrCreate: {
|
|
146
|
+
...defaultUpdateOrCreate,
|
|
147
|
+
...data.updateOrCreate,
|
|
148
|
+
},
|
|
149
|
+
userSettings: {
|
|
150
|
+
...defaultUserSettings,
|
|
151
|
+
...data.userSettings,
|
|
152
|
+
},
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
this.pageBuilderStateStore.setConfigPageBuilder(configWithDefaults)
|
|
156
|
+
}
|
|
157
|
+
|
|
129
158
|
#applyElementClassChanges(
|
|
130
159
|
selectedCSS: string | undefined,
|
|
131
160
|
CSSArray: string[],
|
|
@@ -1121,7 +1150,10 @@ class PageBuilderClass {
|
|
|
1121
1150
|
}
|
|
1122
1151
|
|
|
1123
1152
|
// Logic for update
|
|
1124
|
-
if (
|
|
1153
|
+
if (
|
|
1154
|
+
(updateOrCreate === 'update' && typeof resourceFormName !== 'string') ||
|
|
1155
|
+
(typeof resourceFormName === 'string' && resourceFormName?.length < 1)
|
|
1156
|
+
) {
|
|
1125
1157
|
// if resource data is null
|
|
1126
1158
|
if (resourceData === null) {
|
|
1127
1159
|
this.pageBuilderStateStore.setLocalStorageItemName(`page-builder-update-resource`)
|
|
@@ -1159,6 +1191,49 @@ class PageBuilderClass {
|
|
|
1159
1191
|
return
|
|
1160
1192
|
}
|
|
1161
1193
|
}
|
|
1194
|
+
// Logic for update and with resource form name
|
|
1195
|
+
if (
|
|
1196
|
+
updateOrCreate === 'update' &&
|
|
1197
|
+
typeof resourceFormName === 'string' &&
|
|
1198
|
+
resourceFormName.length > 0
|
|
1199
|
+
) {
|
|
1200
|
+
// if resource data is null
|
|
1201
|
+
if (resourceData === null) {
|
|
1202
|
+
this.pageBuilderStateStore.setLocalStorageItemName(`page-builder-update-resource`)
|
|
1203
|
+
return
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
// If resource is present
|
|
1207
|
+
|
|
1208
|
+
// Runs when resourceData has id but no title
|
|
1209
|
+
if (typeof resourceData === 'object' && 'id' in resourceData && !('title' in resourceData)) {
|
|
1210
|
+
const sanitizedId = this.sanitizeForLocalStorage(String(resourceData['id']))
|
|
1211
|
+
this.pageBuilderStateStore.setLocalStorageItemName(
|
|
1212
|
+
`page-builder-update-resource-${sanitizedId}-${this.sanitizeForLocalStorage(resourceFormName)}`,
|
|
1213
|
+
)
|
|
1214
|
+
return
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
// Runs when resourceData has title but no id
|
|
1218
|
+
if (typeof resourceData === 'object' && 'title' in resourceData && !('id' in resourceData)) {
|
|
1219
|
+
const sanitizedTitle = this.sanitizeForLocalStorage(String(resourceData['title']))
|
|
1220
|
+
this.pageBuilderStateStore.setLocalStorageItemName(
|
|
1221
|
+
`page-builder-update-resource-${sanitizedTitle}-${this.sanitizeForLocalStorage(resourceFormName)}`,
|
|
1222
|
+
)
|
|
1223
|
+
return
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
// Runs when resourceData has both title and id
|
|
1227
|
+
if (typeof resourceData === 'object' && 'title' in resourceData && 'id' in resourceData) {
|
|
1228
|
+
const sanitizedId = this.sanitizeForLocalStorage(String(resourceData['id']))
|
|
1229
|
+
const sanitizedTitle = this.sanitizeForLocalStorage(String(resourceData['title']))
|
|
1230
|
+
|
|
1231
|
+
this.pageBuilderStateStore.setLocalStorageItemName(
|
|
1232
|
+
`page-builder-update-resource-${sanitizedTitle}-${this.sanitizeForLocalStorage(resourceFormName)}-${sanitizedId}`,
|
|
1233
|
+
)
|
|
1234
|
+
return
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1162
1237
|
}
|
|
1163
1238
|
|
|
1164
1239
|
async saveComponentsLocalStorage() {
|
|
@@ -1500,12 +1575,15 @@ class PageBuilderClass {
|
|
|
1500
1575
|
const trimmedData = data.trim()
|
|
1501
1576
|
|
|
1502
1577
|
if (trimmedData.startsWith('[') || trimmedData.startsWith('{')) {
|
|
1578
|
+
console.log('Using JSON method..............1:', trimmedData)
|
|
1503
1579
|
// Looks like JSON - parse as JSON
|
|
1504
1580
|
this.#parseJSONComponents(trimmedData)
|
|
1505
1581
|
} else if (trimmedData.startsWith('<')) {
|
|
1582
|
+
console.log('Using HTML method..............2:', trimmedData)
|
|
1506
1583
|
// Looks like HTML - parse as HTML
|
|
1507
1584
|
this.#parseHTMLComponents(trimmedData)
|
|
1508
1585
|
} else {
|
|
1586
|
+
console.log('Using JSON method..............3:', trimmedData)
|
|
1509
1587
|
this.#parseJSONComponents(trimmedData)
|
|
1510
1588
|
}
|
|
1511
1589
|
}
|
|
@@ -1569,7 +1647,7 @@ class PageBuilderClass {
|
|
|
1569
1647
|
if (!this.pageBuilderStateStore.getConfigPageBuilder) return
|
|
1570
1648
|
|
|
1571
1649
|
if (this.pageBuilderStateStore.getConfigPageBuilder?.updateOrCreate?.formType === 'create') {
|
|
1572
|
-
|
|
1650
|
+
console.log('hvad med nuuuuuuu')
|
|
1573
1651
|
const storedData = this.areComponentsStoredInLocalStorage()
|
|
1574
1652
|
if (storedData) {
|
|
1575
1653
|
this.setComponentsFromData(storedData)
|