@myissue/vue-website-page-builder 3.4.16 → 3.4.17

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
@@ -162,7 +162,7 @@ The Page Builder is packed with features:
162
162
  - **YouTube Videos**: Integrate video content smoothly.
163
163
  - **Download HTML**: Export the entire page as a standalone HTML file.
164
164
  - **Global Page Styling**: Instantly define, update, or clear global styles for the main page wrapper at initialization or dynamically at runtime. Gain full control over fonts, colors, backgrounds, and more for a dynamic user experience.
165
- - **Tailwind Support**: Fully compatible with Tailwind CSS (with automatic class prefixing to avoid conflicts).
165
+ - **Tailwind Support**: Fully compatible with Tailwind CSS (with automatic class prefixing to avoid conflicts). Tailwind installation is not required for the Page Builder to work.
166
166
  - **Scoped Styles**: To ensure clean and predictable styling, the builder uses scoped style isolation. There is no risk of style conflicts between the builder and your app.
167
167
  - **HTML Editor**: Access and edit raw HTML directly for full customization and developer-level control.
168
168
 
@@ -311,6 +311,8 @@ This prevents global styles from leaking into the builder and vice versa, which
311
311
 
312
312
  When a user adds a component into the page builder, all classes from that component are automatically prefixed with `pbx-` (e.g., `pbx-button`, `pbx-container`) to ensure style isolation and avoid conflicts.
313
313
 
314
+ Tailwind installation is not required. The page builder ships with prefixed utility classes to ensure there are no naming conflicts. If you wish to use Tailwind in your own application, you may install and configure it as usual without interfering with the page builder.
315
+
314
316
  > **Note:**
315
317
  > Simply import the builder’s CSS file once in your project. All builder styles are namespaced, so there is no risk of style conflicts.
316
318
 
@@ -2403,8 +2403,8 @@ class cb {
2403
2403
  }
2404
2404
  const t = e.closest("section");
2405
2405
  if (e.tagName === "SECTION")
2406
- this.deleteComponentFromDOM();
2407
- else if (e.remove(), t && this.isSectionEmpty(t)) {
2406
+ await this.deleteComponentFromDOM();
2407
+ else if (e.remove(), this.syncDomToStoreOnly(), t && this.isSectionEmpty(t)) {
2408
2408
  const r = t.getAttribute("data-componentid");
2409
2409
  if (r) {
2410
2410
  const i = this.pageBuilderStateStore.getComponents;
@@ -2415,7 +2415,7 @@ class cb {
2415
2415
  ...i.slice(0, s),
2416
2416
  ...i.slice(s + 1)
2417
2417
  ];
2418
- this.pageBuilderStateStore.setComponents(o), t.remove();
2418
+ this.pageBuilderStateStore.setComponents(o), t.remove(), this.syncDomToStoreOnly(), this.saveDomComponentsToLocalStorage();
2419
2419
  }
2420
2420
  }
2421
2421
  }
@@ -2436,12 +2436,13 @@ class cb {
2436
2436
  o,
2437
2437
  ...i.slice(s + 1)
2438
2438
  ];
2439
- this.pageBuilderStateStore.setComponents(l);
2439
+ this.pageBuilderStateStore.setComponents(l), this.syncDomToStoreOnly(), this.saveDomComponentsToLocalStorage();
2440
2440
  }
2441
2441
  }
2442
2442
  }
2443
- }
2444
- this.handleAutoSave(), this.pageBuilderStateStore.setComponent(null), this.pageBuilderStateStore.setElement(null), await this.clearHtmlSelection(), await oe(), await this.addListenersToEditableElements();
2443
+ } else
2444
+ this.syncDomToStoreOnly(), this.saveDomComponentsToLocalStorage();
2445
+ this.pageBuilderStateStore.setComponent(null), this.pageBuilderStateStore.setElement(null), await this.clearHtmlSelection(), await oe(), await this.addListenersToEditableElements();
2445
2446
  }
2446
2447
  /**
2447
2448
  * Removes a CSS class from the currently selected element.
@@ -2609,7 +2610,7 @@ class cb {
2609
2610
  if (o) {
2610
2611
  const l = localStorage.getItem(o);
2611
2612
  if (l || localStorage.setItem(o, JSON.stringify(s)), l) {
2612
- const a = JSON.parse(l), p = a.components || [], d = (s.components || []).some((h, b) => {
2613
+ const a = JSON.parse(l), p = a.components || [], c = s.components || [], d = c.length !== p.length || c.some((h, b) => {
2613
2614
  const x = p[b];
2614
2615
  return (
2615
2616
  // New component added
@@ -24992,7 +24993,7 @@ const Wk = ["src"], Kk = {
24992
24993
  }, RT = { class: "pbx-overflow-hidden pbx-shadow pbx-ring-1 pbx-ring-black pbx-ring-opacity-5 md:pbx-rounded-lg" }, HT = { class: "pbx-overflow-x-auto" }, FT = { class: "pbx-w-max" }, jT = { class: "pbx-bg-white pbx-divide-y pbx-divide-gray-200" }, zT = { class: "pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500" }, VT = { class: "pbx-min-w-[30rem] pbx-w-max" }, qT = { key: 0 }, UT = { key: 1 }, WT = { key: 0 }, KT = { class: "pbx-px-6 pbx-py-4 pbx-whitespace-nowrap pbx-text-sm pbx-text-gray-500" }, GT = { class: "pbx-min-w-[30rem] pbx-w-max" }, JT = { class: "pbx-inline-flex pbx-items-center pbx-px-2.5 pbx-py-0.5 pbx-rounded-full pbx-text-xs pbx-font-medium" }, YT = { class: "pbx-mt-4 pbx-mb-4 pbx-py-8 pbx-px-2 pbx-border pbx-border-solid pbx-border-gray-600 pbx-rounded-xl" }, QT = { class: "pbx-mt-4 pbx-whitespace-pre-wrap pbx-text-white pbx-overflow-hidden pbx-bg-gray-900" }, XT = { class: "pbx-px-4 pbx-pb-8 pbx-pt-4 pbx-text-white pbx-text-xs pbx-break-all" }, ZT = { class: "pbx-myPrimaryParagraph pbx-text-xs pbx-text-white" }, e3 = {
24993
24994
  __name: "PageBuilderSettings",
24994
24995
  setup(n) {
24995
- const e = "3.4.16", t = Se, r = N(() => t.getPageBuilderConfig);
24996
+ const e = "3.4.17", t = Se, r = N(() => t.getPageBuilderConfig);
24996
24997
  return (i, s) => {
24997
24998
  var o, l, a, p, c, d, f, h, b, x, m, v, S, k, g, O;
24998
24999
  return w(), M("div", CE, [