@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
|
|
302
|
+
let contentFromPageBuilder = "";
|
|
269
303
|
|
|
270
304
|
try {
|
|
271
305
|
storedComponents = JSON.parse(storedComponents);
|
|
272
|
-
|
|
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
|
-
|
|
314
|
+
contentFromPageBuilder = "";
|
|
281
315
|
} finally {
|
|
282
|
-
|
|
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
|
|
1481
|
+
async removeItemComponentsLocalStorage() {
|
|
1482
1482
|
await this.nextTick, this.getLocalStorageItemName.value && localStorage.removeItem(this.getLocalStorageItemName.value);
|
|
1483
1483
|
}
|
|
1484
|
-
|
|
1485
|
-
|
|
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.
|
|
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.
|
|
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;
|