拖拽式仪表盘 - 组件配置文档

Dashboard Widgets

注意
本文最后更新于 2023-12-08,文中内容可能已过时。

本文将对 Dashboard 组件的使用方法进行介绍。

1 A note on terminology

“Widget(小部件)”和“Component(组件)”都是计算机科学中常见的术语,用于描述可重复使用的用户界面元素。Widget 通常更简单,具有预定义的样式和功能,而 Component 可以更灵活、可定制,并具有更丰富的行为和交互性。Widget 更倾向于描述独立的、自包含的小型组件,而 Component 则更倾向于描述较大规模的、可组合的用户界面元素。

Vue 项目通常选用 Component,与之相比仪表盘组件功能更加局限,使用 Widget 来描述显然更符合实际情况。

2 Widget Example

完整例子详见 @/components/Dashboard/widgets/example.vue 组件。

3 Inject

dashboard 组件及其后代组件可以通过注入 $dashboard 访问容器中的属性或方法。

  • $dashboard (Object): 当前 dashboard 容器实例

例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<script>
export default {
  name: 'ExampleWidget',
  widget: { /* ... */ },
  inject: ['$dashboard'],
  mounted() {
    // 组件通过 this.$dashboard 访问容器中的属性或方法
    this.$dashboard.notify('example widget mounted')
  },
  /* ... */
}
</script>

4 Props

容器中的组件可以接收一些上层传递的参数,如下:

参数类型说明
itemObject组件实例数据
paramsObject组件参数,用于接收用户已配置的参数,支持 .sync 修饰符

5 Widget Properties

属性类型必填说明
nameStringY组件名称,必须且唯一(同 Vue 组件 name 属性)
widgetObjectY组件配置信息,参考文档

widget 配置如下:

属性类型必填说明
nameStringY组件名称,用于在组件列表中显示组件名称
iconStringY组件图标,用于在组件列表中显示组件图标,支持 el-iconiconfontsvg-icon
paramsObjectN组件参数,一般搭配 setting 钩子函数使用
disabledBooleanN是否禁用组件,设置为 true 则不会被注册(组件弃用时可设置为 true
hiddenBooleanN是否隐藏组件,设置为 true 则不会在组件列表中显示(组件即将弃用时可设置为 true
wNumberY组件宽度
hNumberY组件高度
minWNumberN组件最小宽度
minHNumberN组件最小高度
maxWNumberN组件最大宽度
maxHNumberN组件最大高度
isResizableBooleanN是否可调整大小

6 Widget Events

事件名类型说明回调参数
refreshFunctionhook for refresh widget itemitem
settingFunctionhook for setting widget itemitem
moveFunctionhook for moving widget itemitem, …args
movedFunctionhook for moved widget itemitem, …args
resizeFunctionhook for resizing widget itemitem, …args
resizedFunctionhook for resized widget itemitem, …args
containerResizedFunctionhook for resized grid containeritem, …args

参数说明:

7 Widget Styles

组件默认含有 box-shadowbackground-color 等样式,可在组件根节点通过以下样式调整或根据实际情况自行覆盖。

名称类型说明
shadowprop组件阴影,可选值:alwayshovernever,默认值:always
.bg-transparentclass组件背景透明

8 Widget Directory

dashboard 组件统一存放目录:

  • 通用组件:@/components/Dashboard/widgets/
  • 模块组件:@/views/{module_name}/widgets/

相关内容

Buy me a coffee~
Lruihao 支付宝支付宝
Lruihao 微信微信
0%