responsive-dash is a layout library for Vue.js to create a responsive, draggable, resizable grid system on the app.
Basic Usage:
1. Install and import the vue-responsive-dash.
import { Dashboard, DashLayout, DashItem } from "vue-responsive-dash";
2. Create a grid layout in your template.
<template> <div id="app"> <dashboard :id="'dashExample'"> <dash-layout v-for="layout in dlayouts" v-bind="layout" :debug="true" :key="layout.breakpoint"> <dash-item v-for="item in layout.items" v-bind.sync="item" :key="item.id"> <div class="content"></div> <template v-slot:resizeBottomRight> <svg width="1em" height="1em" viewBox="0 0 20 20" focusable="false" role="img" alt="icon" xmlns="http://www.w3.org/2000/svg" fill="#42b983" class="b-icon bi bi-arrow-down-right mx-auto" data-v-11c9e491 > <g data-v-11c9e491> <path fill-rule="evenodd" d="M14 9.5a.5.5 0 01.5.5v5a.5.5 0 01-.5.5H9a.5.5 0 010-1h4.5V10a.5.5 0 01.5-.5z" clip-rule="evenodd" ></path> <path fill-rule="evenodd" d="M4.646 5.646a.5.5 0 01.708 0l9 9a.5.5 0 01-.708.708l-9-9a.5.5 0 010-.708z" clip-rule="evenodd" ></path> </g> </svg> </template> </dash-item> </dash-layout> </dashboard> </div> </template>
3. Register the components and config the layout as follows:
export default { name: "App", components: { Dashboard, DashLayout, DashItem }, data() { return { dlayouts: [ { breakpoint: "xl", numberOfCols: 12, items: [ { id: "1", x: 0, y: 0, width: 1, height: 1 }, { id: "2", x: 1, y: 0, width: 2, height: 1 }, { id: "3", x: 0, y: 1, width: 2, height: 1 }, { id: "4", x: 3, y: 0, width: 2, height: 2 }, { id: "5", x: 5, y: 0, width: 1, height: 2 }, { id: "6", x: 6, y: 0, width: 2, height: 1 }, { id: "7", x: 7, y: 1, width: 5, height: 1 } ] }, { breakpoint: "lg", breakpointWidth: 1200, numberOfCols: 10, items: [ { id: "1", x: 0, y: 0, width: 1, height: 1 }, { id: "2", x: 1, y: 0, width: 2, height: 1 }, { id: "3", x: 0, y: 1, width: 2, height: 1 }, { id: "4", x: 3, y: 0, width: 2, height: 2 }, { id: "5", x: 5, y: 0, width: 1, height: 2 }, { id: "6", x: 6, y: 0, width: 2, height: 1 }, { id: "7", x: 7, y: 1, width: 3, height: 1 } ] }, { breakpoint: "md", breakpointWidth: 996, numberOfCols: 8, items: [ { id: "1", x: 0, y: 0, width: 1, height: 1 }, { id: "2", x: 1, y: 0, width: 2, height: 1 }, { id: "3", x: 0, y: 1, width: 2, height: 1 }, { id: "4", x: 3, y: 0, width: 2, height: 2 }, { id: "5", x: 5, y: 0, width: 1, height: 2 }, { id: "6", x: 6, y: 0, width: 2, height: 1 }, { id: "7", x: 7, y: 1, width: 1, height: 1 } ] }, { breakpoint: "sm", breakpointWidth: 768, numberOfCols: 4, items: [ { id: "1", x: 0, y: 0, width: 1, height: 1 }, { id: "2", x: 1, y: 0, width: 2, height: 1 }, { id: "3", x: 0, y: 1, width: 2, height: 1 }, { id: "4", x: 3, y: 0, width: 1, height: 2 }, { id: "5", x: 2, y: 1, width: 1, height: 1 } ] }, { breakpoint: "xs", breakpointWidth: 480, numberOfCols: 2, items: [ { id: "1", x: 0, y: 0, width: 1, height: 1 }, { id: "2", x: 1, y: 0, width: 1, height: 1 }, { id: "3", x: 0, y: 1, width: 2, height: 1 } ] }, { breakpoint: "xxs", breakpointWidth: 0, numberOfCols: 1, items: [ { id: "1", x: 0, y: 0, width: 1, height: 1 }, { id: "2", x: 0, y: 1, width: 1, height: 1 } ] } ] }; } };
Preview:
Changelog:
v0.5.0 (08/19/2020)
- Update
v0.4.3 (07/18/2020)
- Update
v0.4.2 (06/24/2020)
- Update
v0.4.00 (06/01/2020)
- Two new props: moveHold, resizeHold.
Download Details:
Author: bensladden
Live Demo: https://codesandbox.io/s/vue-responsive-dash-eggbc?fontsize=14&hidenavigation=1&theme=dark
Download Link: https://github.com/bensladden/vue-responsive-dash/archive/master.zip
Official Website: https://github.com/bensladden/vue-responsive-dash
Install & Download:
# NPM
$ npm install vue-responsive-dash --save