@myissue/vue-website-page-builder 3.5.64 → 3.5.66

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
@@ -1,12 +1,14 @@
1
1
  <p align="center" dir="auto">
2
- <img width="200" style="max-width: 100%;" src="./public/logo/logo.svg" alt="Vue Website Page Builder Logo" />
2
+ <img width="200" style="max-width: 100%;" src="./public/logo/logo.svg" alt="Vue Website Page Builder Logo — open source Vue 3 page builder by MyBuilder" />
3
3
  </p>
4
4
 
5
- # Vue 3 Page Builder — Free, Self-Hosted, Integration-First
5
+ # Vue 3 Page Builder — Free Open-Source Visual Editor for Ecommerce Admin, SaaS & Headless CMS
6
6
 
7
- **The Vue page builder for ecommerce admin panels, multi-tenant SaaS, and API-backed CMS dashboards.** Embed a visual editor in your product, connect your own media library and product catalog, and save portable HTML to your backend.
7
+ **[MyBuilder](https://mybuilder.dev)** is a **free, open-source, self-hosted Vue 3 page builder** you embed in your own product — not a locked hosted CMS. Use it as a **drag-and-drop visual editor** for **ecommerce admin panels**, **multi-tenant SaaS**, and **API-backed headless CMS** dashboards. Connect your media library and product catalog, then save portable HTML to your backend.
8
8
 
9
- - [Vue 3 Page Builder Free, Self-Hosted, Integration-First](#vue-3-page-builder--free-self-hosted-integration-first)
9
+ Search-friendly aliases: Vue page builder · Vue website builder · open source page builder · self-hosted page builder · drag and drop editor for Vue · ecommerce page builder · headless CMS visual editor · Builder.io alternative for Vue · GrapesJS alternative for Vue 3.
10
+
11
+ - [Vue 3 Page Builder — Free Open-Source Visual Editor for Ecommerce Admin, SaaS \& Headless CMS](#vue-3-page-builder--free-open-source-visual-editor-for-ecommerce-admin-saas--headless-cms)
10
12
  - [Demo](#demo)
11
13
  - [Guide \& Documentation](#guide--documentation)
12
14
  - [Built for Ecommerce Admin \& Multi-Tenant SaaS](#built-for-ecommerce-admin--multi-tenant-saas)
@@ -14,6 +16,7 @@
14
16
  - [Who This Is For](#who-this-is-for)
15
17
  - [Backend and CMS Integration](#backend-and-cms-integration)
16
18
  - [Why Choose This Vue Page Builder](#why-choose-this-vue-page-builder)
19
+ - [Open-Source Vue Page Builder vs Hosted Platforms](#open-source-vue-page-builder-vs-hosted-platforms)
17
20
  - [Overview](#overview)
18
21
  - [Get Started in Minutes](#get-started-in-minutes)
19
22
  - [About](#about)
@@ -192,6 +195,27 @@ Many page builders are heavy, opinionated, or tied to one CMS. This project focu
192
195
 
193
196
  This is a general-purpose builder by design. It does not try to replace your backend, authentication, permissions, CDN, or publishing workflow. It gives your product a visual editor while letting your platform stay in charge of data, scale, security, and deployment.
194
197
 
198
+ ## Open-Source Vue Page Builder vs Hosted Platforms
199
+
200
+ Large vendors win on brand recognition and sales teams. This project wins when you need a **Vue-native, self-hosted page builder** inside software you already own. If you are comparing an open-source Vue page builder to hosted visual CMS platforms, this is the honest fit:
201
+
202
+ | Concern | How this builder addresses it |
203
+ |--------|--------------------------------|
204
+ | **Vendor lock-in** | MIT-licensed, npm package, runs in **your** Vue/Nuxt/Laravel admin. You keep HTML, auth, and hosting. |
205
+ | **Data, GDPR & compliance** | Content never has to leave your infrastructure. You apply **your** policies, audit trail, and region hosting — not a third-party editor cloud. |
206
+ | **Roles & collaboration** | Permissions, SSO, and multi-user workflows stay in **your** product (where enterprises already invest). The builder is the visual layer. |
207
+ | **Support & SLAs** | Community + docs for the editor; **your** team owns production SLAs for the full stack — or hire [customization support](https://mybuilder.dev). |
208
+ | **Ecosystem & integrations** | Integration-first hooks: `:CustomMediaLibraryComponent`, `:DisplayProducts`, TypeScript APIs, portable HTML — plug Shopify, WooCommerce, S3, Cloudinary, Strapi, Directus, or custom APIs. |
209
+ | **Scale & traffic** | The builder is for **authoring**. Public traffic hits **your** CDN, storefront, and database — the same pattern used by serious headless setups. |
210
+ | **Bundle & performance** | Ship the editor to admin users only; publish lean HTML to the public site. Tree-shake and lazy-load the builder where needed. |
211
+ | **Long-term ownership** | You can fork, patch, and extend. No forced plan upgrades or “editor disappeared from the marketplace” risk. |
212
+
213
+ **Best alternative when:** you want a **Builder.io-style or GrapesJS-style experience**, but as an **embeddable Vue 3 component** with ecommerce product sections, custom media, draft autosave, SEO checks, and HTML you store yourself.
214
+
215
+ **Not a replacement for:** a full hosted CMS with built-in A/B testing, managed CDN, and enterprise procurement packs out of the box — and that is intentional. Pair this open-source page builder with the platform you already trust for those jobs.
216
+
217
+ Live product: [mybuilder.dev](https://mybuilder.dev) · Docs: [Guides](https://myissue-studio.github.io/vue-website-page-builder/) · npm: `@myissue/vue-website-page-builder`
218
+
195
219
  ## Overview
196
220
 
197
221
  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, company logo, and autosave preferences, making it a personalized experience for every user.
@@ -217,40 +241,51 @@ A Page Builder designed for growth. Build your website pages with ready-made com
217
241
 
218
242
  ## Real-World Application Example
219
243
 
220
- From solo freelancers to fast-growing startups and established enterprises, the Page Builder is trusted by teams everywhere. With its intuitive click-and-drop editor, real-time visual editing, and a rich library of reusable components, you can turn ideas into polished pages in minutes. Built for merchants, brands, and agencies, it empowers anyone to create high-impact content.
244
+ The Vue Website Page Builder is built for production admin products: merchants and editors design landing pages, collection pages, and campaign blocks while your platform owns catalog, checkout, auth, and hosting.
245
+
246
+ A live reference implementation is **[myself.ae](https://myself.ae)** / **[mybuilder.dev](https://mybuilder.dev)** — a Vue-based visual editor with product sections, media integration, responsive components, and HTML persistence suitable for ecommerce and multi-tenant SaaS.
247
+
248
+ **Typical production shape:**
221
249
 
222
- Discover how the Vue Website Page Builder is empowering businesses to create dynamic and responsive web pages. Used by teams at myself.ae, Zara, H&M, Chanel, BOSS, DKNY, Aldo, Bershka, Furla, Pandora, The New York Times, and Pentagram — the builder powers engaging, user-friendly pages across fashion, retail, media, and design.
250
+ 1. Embed `PageBuilder` in your Vue or Nuxt admin
251
+ 2. Inject your media library and product catalog
252
+ 3. Autosave drafts locally; publish full HTML to your API
253
+ 4. Serve that HTML on your storefront or marketing site behind your CDN
254
+
255
+ That model gives medium and large product teams what procurement usually asks for — **control of data, security boundaries, and deployment** — without replacing your existing CMS or commerce stack.
223
256
 
224
257
  <br>
225
258
 
226
- <h3 align="center">Teams from top companies building using this page builder</h3>
259
+ <h3 align="center">Built for retail, fashion, media, and brand content workflows</h3>
227
260
 
228
261
  <p align="center">
229
- <img src="./public/logo/top-companies/myself.ae.jpg" width="80" height="80" alt="myself.ae" title="myself.ae" />
262
+ <img src="./public/logo/top-companies/myself.ae.jpg" width="80" height="80" alt="myself.ae — Vue page builder product example" title="myself.ae" />
230
263
  &nbsp;&nbsp;
231
- <img src="./public/logo/top-companies/zara.jpg" width="80" height="80" alt="Zara" title="Zara" />
264
+ <img src="./public/logo/top-companies/zara.jpg" width="80" height="80" alt="Fashion retail landing page use case" title="Fashion retail" />
232
265
  &nbsp;&nbsp;
233
- <img src="./public/logo/top-companies/hm.png" width="80" height="80" alt="H&amp;M" title="H&amp;M" />
266
+ <img src="./public/logo/top-companies/hm.png" width="80" height="80" alt="Retail campaign page use case" title="Retail campaigns" />
234
267
  &nbsp;&nbsp;
235
- <img src="./public/logo/top-companies/chanel.avif" width="80" height="80" alt="Chanel" title="Chanel" />
268
+ <img src="./public/logo/top-companies/chanel.avif" width="80" height="80" alt="Luxury brand content page use case" title="Brand content" />
236
269
  <br><br>
237
- <img src="./public/logo/top-companies/boss.jpg" width="80" height="80" alt="BOSS" title="BOSS" />
270
+ <img src="./public/logo/top-companies/boss.jpg" width="80" height="80" alt="Apparel ecommerce page use case" title="Apparel ecommerce" />
238
271
  &nbsp;&nbsp;
239
- <img src="./public/logo/top-companies/dkny.jpg" width="80" height="80" alt="DKNY" title="DKNY" />
272
+ <img src="./public/logo/top-companies/dkny.jpg" width="80" height="80" alt="Lifestyle brand page use case" title="Lifestyle brands" />
240
273
  &nbsp;&nbsp;
241
- <img src="./public/logo/top-companies/aldo.jpg" width="80" height="80" alt="Aldo" title="Aldo" />
274
+ <img src="./public/logo/top-companies/aldo.jpg" width="80" height="80" alt="Product collection page use case" title="Collection pages" />
242
275
  &nbsp;&nbsp;
243
- <img src="./public/logo/top-companies/bershka.jpg" width="80" height="80" alt="Bershka" title="Bershka" />
276
+ <img src="./public/logo/top-companies/bershka.jpg" width="80" height="80" alt="Youth retail marketing page use case" title="Marketing pages" />
244
277
  <br><br>
245
- <img src="./public/logo/top-companies/furla.jpg" width="80" height="80" alt="Furla" title="Furla" />
278
+ <img src="./public/logo/top-companies/furla.jpg" width="80" height="80" alt="Accessories brand page use case" title="Brand pages" />
246
279
  &nbsp;&nbsp;
247
- <img src="./public/logo/top-companies/pandora.jpg" width="80" height="80" alt="Pandora" title="Pandora" />
280
+ <img src="./public/logo/top-companies/pandora.jpg" width="80" height="80" alt="Jewelry ecommerce content use case" title="Ecommerce content" />
248
281
  &nbsp;&nbsp;
249
- <img src="./public/logo/top-companies/bottega_veneta.png" width="80" height="80" alt="Bottega Veneta" title="Bottega Veneta" />
282
+ <img src="./public/logo/top-companies/bottega_veneta.png" width="80" height="80" alt="Premium retail page use case" title="Premium retail" />
250
283
  &nbsp;&nbsp;
251
- <img src="./public/logo/top-companies/charles_keith.jpg" width="80" height="80" alt="Charles & Keith" title="Charles & Keith" />
284
+ <img src="./public/logo/top-companies/charles_keith.jpg" width="80" height="80" alt="Storefront editorial page use case" title="Editorial pages" />
252
285
  </p>
253
286
 
287
+ <p align="center"><em>Industry examples of the page types teams build — fashion, retail, and brand landing pages — using a self-hosted Vue visual editor connected to their own catalog and CMS.</em></p>
288
+
254
289
  <br>
255
290
 
256
291
  ## Reviews, Ratings, and User Testimonials
package/dist/index.d.ts CHANGED
@@ -861,6 +861,11 @@ export declare class PageBuilderService {
861
861
  * after it in the DOM, then syncs the change to the store.
862
862
  */
863
863
  duplicateElementInDOM(): Promise<void>;
864
+ /**
865
+ * When duplicating an element under a sibling (e.g. stacking images in a slide),
866
+ * ensure the copy has top spacing so it doesn't sit flush against the original.
867
+ */
868
+ private ensureVerticalGapOnStackedDuplicate;
864
869
  /**
865
870
  * Deletes the currently selected element from the DOM and stores it for potential restoration.
866
871
  * @returns {Promise<void>}
@@ -915,7 +920,7 @@ export declare class PageBuilderService {
915
920
  /**
916
921
  * Generates a preview of the current page design.
917
922
  */
918
- previewCurrentDesign(): void;
923
+ previewCurrentDesign(): Promise<void>;
919
924
  /**
920
925
  * Sanitizes a string to be used as a key in local storage.
921
926
  * @param {string} input - The string to sanitize.
@@ -1043,6 +1048,8 @@ export declare class PageBuilderService {
1043
1048
  * @returns {Promise<void>}
1044
1049
  */
1045
1050
  applySelectedImage(image: ImageObject): Promise<void>;
1051
+ /** After v-html remount, select the slider image we just updated (same src + active slide). */
1052
+ private reselectSliderImageAfterRemount;
1046
1053
  /**
1047
1054
  * Sets the base primary image from the currently selected element if it's an image.
1048
1055
  * @private