# vue-page-designer

> A vue component for drag-and-drop to design and build mobile website.

Latest version **1.1.1** (published 2021-03-22) · WTFPL license · 0 weekly downloads

## Install

```sh
npm install vue-page-designer
pnpm add vue-page-designer
yarn add vue-page-designer
bun add vue-page-designer
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2021-03-22 |
| First published | 2017-12-15 |
| Weekly downloads | 0 |
| License | WTFPL |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >= 4.0.0 |
| Dependencies | 5 |
| Unpacked size | 421.1 KB |
| Known vulnerabilities | 0 (+5 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 908 |
| Author | fireyy |
| Maintainers | fireyy |

## Links

- npm: https://www.npmjs.com/package/vue-page-designer
- Repository: https://github.com/fireyy/vue-page-designer
- Homepage: https://github.com/fireyy/vue-page-designer#readme
- Issues: https://github.com/fireyy/vue-page-designer/issues
- npm.io page: https://npm.io/package/vue-page-designer

## Dependencies (5)

- [vue](https://npm.io/package/vue.md) ^2.5.22
- [nanoid](https://npm.io/package/nanoid.md) ^1.0.1
- [spectre.css](https://npm.io/package/spectre.css.md) ^0.5.0
- [vue-server-renderer](https://npm.io/package/vue-server-renderer.md) ^2.5.17
- [vue-page-designer-widgets](https://npm.io/package/vue-page-designer-widgets.md) ^0.1.4

## Recent versions

- 1.1.1 (latest) — 2021-03-22
- 1.1.0 — 2020-09-09
- 1.0.1 — 2019-01-22
- 1.0.0 — 2019-01-22
- 0.7.1 — 2018-01-03
- 0.7.0 — 2017-12-29
- 0.6.0 — 2017-12-27
- 0.5.4 — 2017-12-26
- 0.5.3 — 2017-12-26
- 0.5.2 — 2017-12-26
- 0.4.0 — 2017-12-22
- 0.3.0 — 2017-12-22
- 0.2.0 — 2017-12-21
- 0.1.0 — 2017-12-21
- 0.0.1 — 2017-12-15

## README

# vue-page-designer

<p align="center">
  <a href="https://fireyy.github.io/vue-page-designer/" target="_blank">
    <img src="screen.png" width="700px">
    <br>
    Live Demo
  </a>
</p>

A drag-and-drop mobile website builder base on Vue.

## Install

```bash
yarn add vue-page-designer
```

You can start it quickly, in main.js:

```js
import Vue from 'vue';
import vuePageDesigner from 'vue-page-designer'
import 'vue-page-designer/dist/vue-page-designer.css'
import App from './App.vue';

Vue.use(vuePageDesigner);

new Vue({
  el: '#app',
  render: h => h(App)
});
```

Next, use it:

```html
<template>
  <div id="app">
    <vue-page-designer />
  </div>
</template>

<style>
#app {
  height: 100%;
}
</style>
```

A [example](https://fireyy.github.io/vue-page-designer/) ▶️, and [source](./example/). Also a [custom widget source](./example/widgets)

# Options

You can add custom components, save callback.

| Props | Type | Description |
| -------- | -------- | -------- |
| value | `Object` | Editor initial value, you can pass the value of the save callback and resume the draft |
| locale | `String` | Editor default locale. Now support 'cn' and 'en', default 'cn'. |
| widgets | `Object` | Vue Components. Custom components for editor. see [Example](https://github.com/fireyy/vue-page-designer-widgets/blob/master/src/index.js) |
| save | `(data) => void` | When you click the Save button, feed back to you to save the data |
| upload | `(files) => Promise` | Editor upload function, allowing you to implement your own upload-file's request |

## Parameter: `value`

The `value` came from `save`.

```html
<template>
  <div id="app">
    <vue-page-designer :value="value" />
  </div>
</template>
```

## Parameter: `widgets`

You can install default widget in `vue-page-designer-widgets`

```bash
yarn add vue-page-designer-widgets
```

Import and use it

```html
<template>
  <div id="app">
    <vue-page-designer :widgets="widgets" />
  </div>
</template>
<script>
import widgets from './widgets'

export default {
  data () {
    return {
      widgets
    }
  }
}
</script>
```

Set locale to EN

```html
<template>
  <div id="app">
    <vue-page-designer locale="en" />
  </div>
</template>
```

## Parameter: `save`

```html
<template>
  <div id="app">
    <vue-page-designer @save="(data) => { console.log('send the value data to your server', data) }" />
  </div>
</template>
```

## Parameter: `upload`

```html
<template>
  <div id="app">
    <vue-page-designer :upload="upload" />
  </div>
</template>
<script>
export default {
  methods: {
    upload (files) {
      return yourApiUpload(files).then(res => {
        return res.data
      }).catch(err => {
        console.log(err)
      })
    }
  }
}
</script>
```

---
_Source: https://npm.io/package/vue-page-designer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
