# 自定义 FormKit 输入组件 ## 原由 目前在 Console 端的所有表单都使用了 FormKit,但 FormKit 内置的 Input 组件并不满足所有的需求,因此需要自定义一些 Input 组件。此外,为了插件和主题能够更加方便的使用系统内的一些数据,所以同样需要自定义一些带数据的选择组件。 ## 使用方式 目前已提供以下类型: - `code`: 代码编辑器 - 参数 1. language: 目前支持 `yaml`, `html`, `css`, `javascript`, `json` 2. height: 编辑器高度,如:`100px` - `attachment`: 附件选择 - `repeater`: 定义一个对象集合,可以让使用者可视化的操作集合。 - `menuCheckbox`:选择一组菜单 - `menuRadio`:选择一个菜单 - `menuItemSelect`:选择菜单项 - `postSelect`:选择文章 - `singlePageSelect`:选择自定义页面 - `categorySelect`:选择分类 - 参数 1. multiple: 是否多选,默认为 `false` - `categoryCheckbox`:选择多个分类 - `tagSelect`:选择标签 - 参数 1. multiple: 是否多选,默认为 `false` - `tagCheckbox`:选择多个标签 在 Vue 单组件中使用: ```vue ``` 在 FormKit Schema 中使用(插件 / 主题设置表单定义): ```yaml - $formkit: menuRadio name: menus label: 底部菜单组 ``` ### Repeater Repeater 是一个集合类型的输入组件,可以让使用者可视化的操作集合。 在 Vue SFC 中以组件形式使用: ```vue ``` 在 FormKit Schema 中使用: ```yaml - $formkit: repeater name: users label: Users items: - $formkit: text name: full_name label: Full Name validation: required - $formkit: email name: email label: Email validation: required|email ``` 最终得到的数据类似于: ```json [ { "full_name": "Jack", "email": "jack@example.com" }, { "full_name": "John", "email": "john@example.com" } ] ```