当前位置: 首页 > article >正文

开源项目低代码表单设计器FcDesigner扩展自定义的容器组件.例如col

开源项目低代码表单设计器FcDesigner中的容器组件可以帮助您实现更灵活的布局设计。在这里,我们以一个简单的 Col 容器组件为例,来演示如何定义和使用它。

源码地址: Github | Gitee | 文档
在这里插入图片描述

定义组件

首先,我们创建一个 Col 组件,该组件可以容纳其他组件,并显示说明信息。

<template>
  <div class="col">
    <div>
      <slot></slot>
    </div>
    <span>slot是拖入组件的回显区域</span>
  </div>
</template>

<script setup>
import { defineProps } from 'vue';

const props = defineProps({
  span: { type: Number, default: 12 }
});
</script>

<style scoped>
.col {
  border: 1px solid #ddd;
  padding: 10px;
  box-sizing: border-box;
  position: relative;
}
</style>
  • <slot></slot>: 插槽用于放置拖入的组件。
  • props: span: 控制容器的宽度。

导入并挂载自定义组件

接下来需要将自定义的 Col 组件导入到 formCreateDesigner,并进行挂载。

// 导入自定义组件
import Col from './Col.vue';
import FcDesigner from '@form-create/designer';

// 挂载自定义组件
FcDesigner.component('Col', Col); // 在 FcDesigner 中注册
// 或者全局挂载到 Vue 实例
// app.component('Col', Col);

定义组件的拖拽规则

Col 容器组件定义拖拽规则,以便能够在设计器中被拖拽和配置。

const colRule = {
  menu: 'layout', // 插入菜单位置
  icon: 'icon-col', // 图标
  label: '格子', // 名称
  name: 'col', // 唯一ID
  drag: true, // 允许拖拽
  inside: true, // 操作按钮显示在内部
  mask: false, // 容器组件不显示遮罩
  rule() {
    return {
      type: 'Col',
      props: { span: 12 },
      children: [] // 包含的子组件
    };
  },
  props(_, { t }) {
    return [
      {
        type: 'slider',
        title: '宽度',
        field: 'span',
        value: 12,
        props: { min: 0, max: 24 } // Span 的取值范围
      }
    ];
  }
};

配置说明:

  • menu: 将组件放置在布局菜单中。
  • icon: 菜单中的组件图标。
  • label: 组件的显示名称。
  • name: 组件的唯一标识符。
  • drag: 允许组件在设计器中被拖动。
  • inside: 操作按钮在组件内部显示。
  • mask: 禁用遮罩显示。
  • rule: 定义组件的基础规则及其内部子组件。
  • props: 用于配置组件属性,使用滑块来调整宽度。

挂载组件的拖拽规则

将拖拽规则添加至设计器中,以启用组件的拖拽功能。

// 在您的组件生命周期中,常见于 mounted() 方法中挂载规则
this.$refs.designer.addComponent(colRule);

通过这些步骤,您可以创建一个灵活的容器组件,并将其集成到设计器中。这使得组件的管理和布局更加高效和有序。如果需要,可以进一步扩展组件功能或样式,以适应复杂的业务需求。


http://www.kler.cn/a/394478.html

相关文章:

  • golang , chan学习
  • vue3封装而成的APP ,在版本更新后,页面显示空白
  • window安装TradingView
  • JAVA开发入门学习七- 数组
  • sqlite3,一个轻量级的 C++ 数据库库!
  • PingCAP TiDB数据库专员PCTA认证笔记
  • 电动工具中的扭矩调节系统:原理与优化
  • [每日一氵] PySpark 的 log GC 部分是什么意思
  • 控制中心应该如何选择控制台
  • LeetCode题解:5.最长回文子串【Python题解超详细,中心拓展、动态规划、暴力解法】
  • WPF Prism中的区域(Region)管理
  • 腾讯云双11最强攻略:如何选购优惠产品,薅最划算的羊毛
  • ssm117网络教学平台的设计与实现+vue(论文+源码)_kaic
  • 安卓aab包的安装教程,附带adb环境的配置
  • 电脑局域网内让其他电脑通过IP访问配置
  • ssh远程连接和nfs共享文件系统
  • 不安全 Rust
  • Linux 抓包工具 --- tcpdump
  • 安全见闻六:通讯协议安全问题剖析
  • Innovus Flexible H-tree and Multi-tap Clock Flow Lab实操系列教程(Day1)
  • jdk8 有哪些新特性?
  • 用 Python 从零开始创建神经网络(六):优化(Optimization)介绍
  • 【数字图像处理+MATLAB】将图像转换为二值图像(Binary Image):使用 imbinarize 函数进行二值化运算(Binarize)
  • 算法--解决熄灯问题
  • libigl 基于射线选择面片
  • 从JVM的角度,来分析为什么Java中是值传递?