1.0.0 • Published 3 years ago

vue-smart-widget-pro v1.0.0

Weekly downloads
2
License
MIT
Repository
-
Last release
3 years ago

vue-smart-widget

Smart widget is a flexible and extensible content container component. It includes header and body part, and widget body includes editboxcontentfooter. If you use with grid, it also have a draggable and resizable grid layout, base on Vue2.5.+ & vue-grid-layout.

Installation

npm i vue-smart-widget -S

Import

Install all the components:

import Vue from 'vue'
import VueSmartWidget from 'vue-smart-widget'

Vue.use(VueSmartWidget)

Use widget only:

import Vue from 'vue'
import { SmartWidget } from 'vue-smart-widget'

Vue.component('SmartWidget', SmartWidget)

Usage

The SmartWidget is heavily base on vue-grid-layout, you can know about vue-grid-layout first, maybe you already use in your project.

Use widget only

Html

<smart-widget title="Default Widget">
  <p>
    It's default widget.
  </p>
</smart-widget>

Use widget with grid

import Vue from 'vue'
import { SmartWidgetGrid } from 'vue-smart-widget'

Vue.component('SmartWidgetGrid', SmartWidgetGrid)

Script

new Vue({
  data () {
    return {
      layout: [
        { x: 0, y: 0, w: 4, h: 4, i: '0' },
        { x: 4, y: 0, w: 4, h: 4, i: '1' },
        { x: 8, y: 0, w: 4, h: 4, i: '2' }
      ]
    }
  }
})

Html

<smart-widget-grid :layout="layout">
  <smart-widget slot="0" simple>
    <div class="layout-center">
      <h3>Simple Widget Without Header</h3>
    </div>
  </smart-widget>
  <smart-widget slot="1" title="Default Widget">
    <div class="layout-center">
      <h3>Default Widget With Header</h3>
    </div>
  </smart-widget>
  <smart-widget slot="2" title="Full Screen" fullscreen>
    <div class="layout-center">
      <h3>Make any widget full screen</h3>
    </div>
  </smart-widget>
</smart-widget-grid>

SmartWidget Props

AttributeDescriptionTypeAccepted valuesDefault
slotWidget slot, the unique identifier of the widget. refer to SmartWidgetGrid PropsString--
titleWidget Header TitleString--
subTitleWidget Header Sub TitleString--
paddingpadding in Widget BodyNumber, Array-[12, 20]
simpleWidget without HeaderBooleantrue or falsefalse
loadingdetermine whether it's loadingBooleantrue or falsefalse
fullscreendetermine whether have fullscreen buttonBooleantrue or falsefalse
collapsedetermine whether have collapse button, only support smart-widgetBooleantrue or falsefalse
refreshdetermine whether have refresh buttonBooleantrue or falsefalse
fixedHeightdetermine whether widget body's height is fixed, only support smart-widgetBooleantrue or falsefalse
shadowwhen to show card shadowsStringalwayshoverneveralways
translateYthe length of vertically transformNumber-0
isActiveddetermine whether widget is activedBooleantrue or falsefalse
activedColorthe actived widget box-shadow color, usually used with isActived attributeStringhex color#0076db
headerHeightWidget Header Height(px)Number-48

SmartWidget Methods

NameDescriptionParameters
moveEvery time an item is being moved and changes position(i, newX, newY)
movedEvery time an item is finished being moved and changes position(i, newX, newY)
resizeEvery time an item is being resized and changes size(i, newH, newW, newHPx, newWPx)
resizedEvery time an item is finished being moved and changes position(i, newH, newW, newHPx, newWPx)
container-resizedEvery time the grid item/layout container changes size (browser window or other)(i, newH, newW, newHPx, newWPx)
on-refreshUsed when the widget need fetching data from ajax methods, usually used with loading attribute-
before-fullscreenUsed when the widget before fullscreen, usually used with fullscreen attributetrue or false
on-fullscreenUsed when the widget is already fullscreen, usually used with fullscreen attributetrue or false

CSS Selector in SmartWidget

NameDescription
.smartwidgetThe main selector in SmartWidget
.is-activedThe state of widget is actived

SmartWidgetGrid Props

it's similar with vue-grid-layout. Care about the attribute layout, The value of layout must be an Array of Object items. Each item must have i, x, y, w and h proprties. especially, the i proprties, it's the unique identifier of the widget item, euqal with widget slot.

AttributeDescriptionTypeAccepted valuesDefault
layoutThis is the initial layout of the grid.Array-required
colNumSays how many columns the grid has.Number-12
rowHeightSays what is a height of a single row in pixels.Number-48
marginSays what are the margins of elements inside the grid.Array-[10, 10]
draggableSays if the grids items are draggable.Booleantrue or falsetrue
resizableSays if the grids items are resizable.Booleantrue or falsetrue
isStaticControl all widgets won't be draggable, resizable or movedBooleantrue or falsefalse

Slot scopes

Each widget in the grid is resizable, slot-scope provide the widget attribute to the children component.

NameDescriptionType
contentHProvide the widget body content(widget-body__content) heightNumber

SmartWidgetGrid Methods

NameDescriptionParameters
layout-createdEmited on the component created lifecycle hooknewLayout
layout-before-mountEmited on the component beforeMount lifecycle hooknewLayout
layout-mountedEmited on the component mounted lifecycle hooknewLayout
layout-readyEmited when all the operations on the mount hook finishnewLayout
layout-updatedEvery time the layout has finished updating and positions of all grid-items are recalculatednewLayout

License

MIT