@myissue/vue-website-page-builder 3.2.67 → 3.2.69

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 CHANGED
@@ -8,6 +8,13 @@
8
8
 
9
9
  A Vue 3 page builder component with drag & drop functionality for creating dynamic web pages.
10
10
 
11
+ Tailored for Vue Developers
12
+ If you're a Vue 3 developer, this builder feels right at home. It installs quickly via npm and supports full customization through props and configuration objects. You can even set specific user settings like image, name, theme, language, and autosave preferences, making it a personalized experience for every user.
13
+
14
+ Integration is easy, and content is safely auto stored in the browser's local storage. You can retrieve HTML content when you're ready to publish, giving you total control over content output.
15
+
16
+ Want to include your company logo in the editor toolbar or reflect your brand's color scheme throughout the builder interface? Done. With robust configuration options, branding the builder to match your product or client identity is quick and effortless.
17
+
11
18
  ## Installation
12
19
 
13
20
  The web builder for stunning pages. Enable users to design and publish modern pages at any scale.
@@ -54,6 +61,7 @@ The Page Builder is packed with features:
54
61
  - **Reordering**: Change the order of your content without hassle.
55
62
  - **True Visual Editing**: See your changes in real-time as you make them.
56
63
  - **Media Library**: Access and manage your media files.
64
+ - **Local Storage & Auto-Save**: Never lose your work - changes are saved as you go.
57
65
  - **Unsplash**: Unsplash Integration.
58
66
  - **Responsive Editing**: Ensure your site looks great on all devices.
59
67
  - **Text Editing:** Edit text content live and in real-time.
@@ -251,6 +259,21 @@ To use the builder’s saved data in your form submission, you may want both the
251
259
 
252
260
  You should call this logic when you want to submit or save the builder’s output, for example, when the user clicks a “Save” or “Publish” button. The code safely parses the local storage data, handles errors, and assigns the results to your form fields.
253
261
 
262
+ **Important:**
263
+ To retrieve the correct content from local storage, you must pass the same resourceData (such as formType and formName) to the Page Builder that was used when the content was originally saved. If the resource data does not match, the Page Builder will look for a different local storage key and may not find the expected content.
264
+ Example:
265
+
266
+ ```js
267
+ const configPageBuilder = {
268
+ updateOrCreate: {
269
+ formType: 'create',
270
+ formName: 'article',
271
+ },
272
+ }
273
+ ```
274
+
275
+ Example Getting HTML Content from Local Storage for Form Submission
276
+
254
277
  ```js
255
278
  <script setup>
256
279
  import {
@@ -264,12 +287,23 @@ import "@myissue/vue-website-page-builder/style.css";
264
287
  const pageBuilderStateStore = sharedPageBuilderStore;
265
288
  const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore);
266
289
 
290
+
291
+ const configPageBuilder = {
292
+ updateOrCreate: {
293
+ formType: 'create',
294
+ formName: 'article',
295
+ },
296
+ };
297
+
298
+ pageBuilderClass.setConfigPageBuilder(configPageBuilder);
299
+
300
+
267
301
  let storedComponents = pageBuilderClass.areComponentsStoredInLocalStorage();
268
- let content = "";
302
+ let contentFromPageBuilder = "";
269
303
 
270
304
  try {
271
305
  storedComponents = JSON.parse(storedComponents);
272
- content = Array.isArray(storedComponents)
306
+ contentFromPageBuilder = Array.isArray(storedComponents)
273
307
  ? storedComponents.map((component) => component.html_code).join("")
274
308
  : "";
275
309
  } catch (e) {
@@ -277,13 +311,84 @@ try {
277
311
  "Unable to parse storedComponents from localStorage:",
278
312
  e
279
313
  );
280
- content = "";
314
+ contentFromPageBuilder = "";
281
315
  } finally {
282
- postForm.content = content;
316
+ yourForm.content = contentFromPageBuilder;
283
317
  }
284
318
  <script>
285
319
  ```
286
320
 
321
+ #### Resetting the Builder After Successful Resource Creation
322
+
323
+ After you have successfully created a new resource (such as a post, article, or listing) using the Page Builder with formType: 'create', it is important to clear the builder’s draft state and remove the corresponding local storage entry. This ensures that old drafts do not appear the next time the builder is opened for a new resource.
324
+
325
+ Always call these methods after a successful post or resource creation to ensure users start with a fresh builder the next time they create a new resource.
326
+
327
+ ```js
328
+ <script setup>
329
+ import {
330
+ PageBuilder,
331
+ PageBuilderClass,
332
+ sharedPageBuilderStore,
333
+ } from "@myissue/vue-website-page-builder";
334
+ import "@myissue/vue-website-page-builder/style.css";
335
+
336
+ // Make sure to initialize these before using
337
+ const pageBuilderStateStore = sharedPageBuilderStore;
338
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore);
339
+
340
+
341
+ const configPageBuilder = {
342
+ updateOrCreate: {
343
+ formType: 'create',
344
+ formName: 'article',
345
+ },
346
+ };
347
+
348
+ pageBuilderClass.setConfigPageBuilder(configPageBuilder);
349
+
350
+ const createResource = async function(){
351
+ pageBuilderClass.deleteAllComponents();
352
+ await pageBuilderClass.removeItemComponentsLocalStorage();
353
+ };
354
+ <script>
355
+ ```
356
+
357
+ #### Resetting the Builder After Successful Resource Update
358
+
359
+ After you have successfully updated an existing resource (such as a post, article, or listing) using the Page Builder with formType: 'update', you should clear the builder’s state and remove the corresponding local storage entry. This prevents outdated drafts from being loaded the next time you edit the same resource.
360
+
361
+ ```js
362
+ <script setup>
363
+ import {
364
+ PageBuilder,
365
+ PageBuilderClass,
366
+ sharedPageBuilderStore,
367
+ } from "@myissue/vue-website-page-builder";
368
+ import "@myissue/vue-website-page-builder/style.css";
369
+
370
+ // Make sure to initialize these before using
371
+ const pageBuilderStateStore = sharedPageBuilderStore;
372
+ const pageBuilderClass = new PageBuilderClass(pageBuilderStateStore);
373
+
374
+
375
+ const configPageBuilder = {
376
+ updateOrCreate: {
377
+ formType: 'update',
378
+ formName: 'article',
379
+ },
380
+ };
381
+
382
+ pageBuilderClass.setConfigPageBuilder(configPageBuilder);
383
+
384
+ const updateResource = async function() {
385
+ pageBuilderClass.deleteAllComponents();
386
+ await pageBuilderClass.removeItemComponentsLocalStorage();
387
+ };
388
+
389
+ <script>
390
+ ```
391
+
287
392
  #### Resource-Specific Storage Keys
288
393
 
289
394
  Each save is stored in local storage using a unique key. The key is determined by whether you are creating a new resource or updating an existing one:
@@ -1478,11 +1478,11 @@ class Se {
1478
1478
  async saveComponentsLocalStorage() {
1479
1479
  await this.nextTick, await Go(this, Os).call(this);
1480
1480
  }
1481
- async removeItemComponentsLocalStorageCreate() {
1481
+ async removeItemComponentsLocalStorage() {
1482
1482
  await this.nextTick, this.getLocalStorageItemName.value && localStorage.removeItem(this.getLocalStorageItemName.value);
1483
1483
  }
1484
- async removeItemComponentsLocalStorageUpdate() {
1485
- this.getLocalStorageItemName.value && localStorage.removeItem(this.getLocalStorageItemName.value);
1484
+ getStorageItemNameForResource() {
1485
+ return this.getLocalStorageItemName.value;
1486
1486
  }
1487
1487
  areComponentsStoredInLocalStorage() {
1488
1488
  if (!this.getLocalStorageItemName.value) return !1;
@@ -23000,7 +23000,7 @@ const k3 = ["src"], S3 = {
23000
23000
  }, Xk = { class: "overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg" }, Zk = { class: "overflow-x-auto" }, e6 = { class: "w-max" }, t6 = { class: "bg-white divide-y divide-gray-200" }, r6 = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, o6 = { class: "min-w-[30rem] w-max" }, n6 = { key: 0 }, i6 = { key: 1 }, s6 = { key: 0 }, a6 = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, l6 = { class: "min-w-[30rem] w-max" }, d6 = { class: "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium" }, c6 = { class: "mt-4 mb-4 py-8 border-b border-myPrimbryLightGrayColor" }, p6 = { class: "mt-4 whitespace-pre-wrap text-white overflow-hidden bg-gray-900" }, u6 = { class: "px-4 pb-8 pt-4 text-white text-xs break-all" }, m6 = { class: "myPrimaryParagraph text-xs text-white" }, h6 = {
23001
23001
  __name: "PageBuilderSettings",
23002
23002
  setup(r) {
23003
- const e = "v3.2.67", t = be;
23003
+ const e = "v3.2.69", t = be;
23004
23004
  new Se(t);
23005
23005
  const o = O(null), n = $(() => t.getConfigPageBuilder), i = $(() => t.getComponents), s = function(l, d) {
23006
23006
  const c = document.createElement("a");
@@ -23620,7 +23620,7 @@ const k3 = ["src"], S3 = {
23620
23620
  n.value = !0, i.value = "delete", s.value = 2, a.value = "Remove all Components", l.value = "Are you sure you want to remove all Components?", d.value = "Close", c.value = null, p.value = "Delete", m.value = function() {
23621
23621
  n.value = !1;
23622
23622
  }, g.value = async function() {
23623
- o.deleteAllComponents(), await o.clearHtmlSelection(), t.value.updateOrCreate && typeof t.value.updateOrCreate.formType == "string" && (t.value.updateOrCreate.formType === "create" && await o.removeItemComponentsLocalStorageCreate(), t.value.updateOrCreate.formType === "update" && await o.removeItemComponentsLocalStorageUpdate()), n.value = !1;
23623
+ o.deleteAllComponents(), await o.clearHtmlSelection(), t.value.updateOrCreate && typeof t.value.updateOrCreate.formType == "string" && (t.value.updateOrCreate.formType === "create" && await o.removeItemComponentsLocalStorage(), t.value.updateOrCreate.formType === "update" && await o.removeItemComponentsLocalStorage()), n.value = !1;
23624
23624
  };
23625
23625
  }, b = O(!1), w = function() {
23626
23626
  b.value = !1;