@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myissue/vue-website-page-builder",
3
- "version": "v3.1.24",
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 v-if="getConfigPageBuilder.updateOrCreate.formType === 'create'">
347
+ <span
348
+ v-if="
349
+ getConfigPageBuilder &&
350
+ getConfigPageBuilder.updateOrCreate.formType === 'create'
351
+ "
352
+ >
348
353
  {{ getConfigPageBuilder.updateOrCreate.formType }}
349
354
  </span>
350
- <span v-if="getConfigPageBuilder.updateOrCreate.formType === 'update'">
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 (getConfigPageBuilder.value.updateOrCreate.formType === 'create') {
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 (updateOrCreate === 'update') {
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
- // Create mode: Load from localStorage (drafts)
1650
+ console.log('hvad med nuuuuuuu')
1573
1651
  const storedData = this.areComponentsStoredInLocalStorage()
1574
1652
  if (storedData) {
1575
1653
  this.setComponentsFromData(storedData)