forked from p96170835/amis
commit
874dfa1c23
2470
docs/renderers.md
2470
docs/renderers.md
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,124 @@
|
|||
### Action
|
||||
|
||||
Action 是一种特殊的渲染器,它本身是一个按钮,同时它能触发事件。
|
||||
|
||||
- `type` 指定为 `button`。
|
||||
- `actionType` 【必填】 选项:`ajax`、`link`、`url`、`dawer`、`dialog`、`confirm`、`cancel`、`prev`、`next`、`copy` 或者 `close`。
|
||||
- `api` 当 `actionType` 为 `ajax` 时,必须指定,参考 [api](#api) 格式说明。
|
||||
- `link` 当 `actionType` 为 `link` 时必须指定,用来指定跳转地址,跟 url 不同的是,这是单页跳转方式,不会渲染浏览器,请指定 AMis 平台内的页面。
|
||||
- `url` 当 `actionType` 为 `url` 时必须指定,按钮点击后,会打开指定页面。
|
||||
- `blank` 当 `actionType` 为 `url` 时可选,如果为 false 将在本页面打开。
|
||||
- `dialog` 当 `actionType` 为 `dialog` 时用来指定弹框内容。
|
||||
- `dawer` 当 `actionType` 为 `drawer` 时用来指定抽出式弹框内容。
|
||||
- `copy` 当 `actionType` 为 `copy` 时用来指定复制的内容。
|
||||
- `nextCondition` 当 `actionType` 为 `dialog` 时可以用来设置下一条数据的条件,默认为 `true`。详情请见 [Demo](/docs/demo/crud/next)。
|
||||
- `confirmText` 当设置 `confirmText` 后,操作在开始前会询问用户。
|
||||
- `reload` 指定此次操作完后,需要刷新的目标组件名字(组件的 name 指,自己配置的),多个请用 `,` 号隔开。
|
||||
- `feedback` 如果 ajax 类型的,当 ajax 返回正常后,还能接着弹出一个 dialog 做其他交互。返回的数据可用于这个 dialog 中。
|
||||
- `messages`,actionType 为 `ajax` 时才有用。
|
||||
- `success` ajax 操作成功后提示,可以不指定,不指定时以 api 返回为准。
|
||||
- `failed` ajax 操作失败提示。
|
||||
|
||||
示例:
|
||||
|
||||
- `ajax` 当按钮点击时,发送 ajax 请求,发送的数据取决于所在的容器里面。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"data": {
|
||||
"user": "no one"
|
||||
},
|
||||
"body": {
|
||||
"label": "Post",
|
||||
"type": "button",
|
||||
"actionType": "ajax",
|
||||
"confirmText": "确定?",
|
||||
"api": "/api/mock2/form/saveForm",
|
||||
"messages": {
|
||||
"success": "发送成功"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `link` 当按钮点击后,无刷新进入 AMis 内部某个页面。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"label": "进入简介页面",
|
||||
"type": "button",
|
||||
"level": "info",
|
||||
"actionType": "link",
|
||||
"link": "/docs/index"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `url` 当按钮点击后,新窗口打开指定页面。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"label": "打开 Baidu",
|
||||
"type": "button",
|
||||
"level": "success",
|
||||
"actionType": "url",
|
||||
"url": "raw:http://www.baidu.com"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `dialog` 当按钮点击后,弹出一个对话框。 关于 dialog 配置,请查看 [Dialog 模型](#dialog)。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"label": "Dialog Form",
|
||||
"type": "button",
|
||||
"level": "primary",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"title": "表单设置",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"api": "/api/mock2/form/saveForm?waitSeconds=1",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text",
|
||||
"label": "文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `drawer` 当按钮点击后,弹出一个抽出式对话框。 关于 drawer 配置,请查看 [Drawer 模型](#drawer)。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"label": "Drawer Form",
|
||||
"type": "button",
|
||||
"level": "primary",
|
||||
"actionType": "drawer",
|
||||
"drawer": {1
|
||||
"title": "表单设置",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"api": "/api/mock2/form/saveForm?waitSeconds=1",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text",
|
||||
"label": "文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,37 @@
|
|||
### Array
|
||||
|
||||
数组输入框配置
|
||||
|
||||
其实就是 [Combo](#combo) 的一个 flat 用法。
|
||||
|
||||
- `type` 请设置成 `array`
|
||||
- `items` 配置单项表单类型
|
||||
- `addable` 是否可新增。
|
||||
- `removable` 是否可删除
|
||||
- `draggable` 默认为 `false`, 是否可以拖动排序, 需要注意的是当启用拖动排序的时候,会多一个\$id 字段
|
||||
- `draggableTip` 可拖拽的提示文字,默认为:`"可通过拖动每行中的【交换】按钮进行顺序调整"`
|
||||
- `addButtonText` 新增按钮文字,默认为 `"新增"`。
|
||||
- `minLength` 限制最小长度。
|
||||
- `maxLength` 限制最大长度。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="450" scope="form"
|
||||
[
|
||||
{
|
||||
"name": "array",
|
||||
"label": "颜色集合",
|
||||
"type": "array",
|
||||
"value": ["red"],
|
||||
"inline": true,
|
||||
"items": {
|
||||
"type": "color"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "array",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,22 @@
|
|||
### Audio
|
||||
|
||||
音频播放器
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| --------- | --------- | ------------------------------------------------ | ------------------- |
|
||||
| type | `string` | `"audio"` | 指定为 audio 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| inline | `boolean` | true | 是否是内联模式 |
|
||||
| src | `string` | | 音频地址 |
|
||||
| loop | `boolean` | false | 是否循环播放 |
|
||||
| autoPlay | `boolean` | false | 是否自动播放 |
|
||||
| rates | `array` | `[]` | 加速播放 |
|
||||
| controls | `array` | `['rates', 'play', 'time', 'process', 'volume']` | 内部模块定制化 |
|
||||
|
||||
```schema:height="200" scope="body"
|
||||
{
|
||||
"type": "audio",
|
||||
"autoPlay": false,
|
||||
"src": "http://www.ytmp3.cn/down/32791.mp3"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,49 @@
|
|||
## Button-Group
|
||||
|
||||
按钮集合。
|
||||
|
||||
- `type` 请设置成 `button-group`
|
||||
- `buttons` 配置按钮集合。
|
||||
|
||||
```schema:height="200" scope="body"
|
||||
{
|
||||
"type": "button-toolbar",
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button-group",
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Button",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "submit",
|
||||
"label": "Submit"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "reset",
|
||||
"label": "Reset"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "submit",
|
||||
"icon": "fa fa-check text-success"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "reset",
|
||||
"icon": "fa fa-times text-danger"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,42 @@
|
|||
### Button-Toolbar
|
||||
|
||||
从上面的例子可以看出,当按钮独立配置的时候,是独占一行的,如果想让多个按钮在一起放置,可以利用 button-toolbar
|
||||
|
||||
- `type` 请设置成 `button-toolbar`
|
||||
- `buttons` 按钮集合。
|
||||
|
||||
```schema:height="200" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test",
|
||||
"label": "Text"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "button-toolbar",
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Button",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "submit",
|
||||
"label": "Submit"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "reset",
|
||||
"label": "Reset"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,45 @@
|
|||
### Button
|
||||
|
||||
按钮, 包含 `button`、`submit` 和 `reset`。 字段说明。
|
||||
|
||||
- `type` 请设置成 `button`
|
||||
- `label` 按钮文字
|
||||
- `icon` 按钮图标。可以使用来自 fontawesome 的图标。
|
||||
- `level` 按钮级别。 包含: `link`、`primary`、`success`、`info`、`warning`和`danger`。
|
||||
- `size` 按钮大小。 包含: `xs`、`sm`、`md`和`lg`
|
||||
- `className` 按钮的类名。
|
||||
|
||||
如果按钮是 `button` 类型,则还需要配置 [Action](#action) 中定义的属性,否则,AMis 不知道如何响应当前按钮点击。
|
||||
|
||||
```schema:height="300" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test",
|
||||
"label": "Text"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Button",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "submit",
|
||||
"level": "primary",
|
||||
"label": "Submit"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "reset",
|
||||
"label": "Reset",
|
||||
"level": "danger"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,97 @@
|
|||
### Cards(CRUD)
|
||||
|
||||
请参考[Cards](#cards)
|
||||
|
||||
```schema:height="800" scope="body"
|
||||
{
|
||||
"type": "crud",
|
||||
"api": "/api/mock2/crud/users",
|
||||
"syncLocation": false,
|
||||
"mode": "cards",
|
||||
"defaultParams": {
|
||||
"perPage": 6
|
||||
},
|
||||
"switchPerPage": false,
|
||||
"placeholder": "没有用户信息",
|
||||
"columnsCount": 2,
|
||||
"card": {
|
||||
"header": {
|
||||
"className": "bg-white",
|
||||
"title": "$name",
|
||||
"subTitle": "$realName",
|
||||
"description": "$email",
|
||||
"avatar": "${avatar | raw}",
|
||||
"highlight": "$isSuperAdmin",
|
||||
"avatarClassName": "pull-left thumb-md avatar b-3x m-r"
|
||||
},
|
||||
"bodyClassName": "padder",
|
||||
"body": "\n <% if (data.roles && data.roles.length) { %>\n <% data.roles.map(function(role) { %>\n <span class=\"label label-default\"><%- role.name %></span>\n <% }) %>\n <% } else { %>\n <p class=\"text-muted\">没有分配角色</p>\n <% } %>\n ",
|
||||
"actions": [
|
||||
{
|
||||
"label": "编辑",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"title": null,
|
||||
"body": {
|
||||
"api": "",
|
||||
"type": "form",
|
||||
"tabs": [
|
||||
{
|
||||
"title": "基本信息",
|
||||
"controls": [
|
||||
{
|
||||
"type": "hidden",
|
||||
"name": "id"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"label": "帐号",
|
||||
"disabled": true,
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"name": "email",
|
||||
"label": "邮箱",
|
||||
"type": "text",
|
||||
"disabled": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"name": "isAmisOwner",
|
||||
"label": "管理员",
|
||||
"description": "设置是否为超级管理",
|
||||
"type": "switch"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "角色信息",
|
||||
"controls": [
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "设置权限",
|
||||
"controls": [
|
||||
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "移除",
|
||||
"confirmText": "您确定要移除该用户?",
|
||||
"actionType": "ajax",
|
||||
"api": "delete:/api/mock2/notFound"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,59 @@
|
|||
### List(CRUD)
|
||||
|
||||
请参考[List](#list)
|
||||
|
||||
```schema:height="800" scope="body"
|
||||
{
|
||||
"type": "crud",
|
||||
"api": "/api/mock2/crud/permissions",
|
||||
"mode": "list",
|
||||
"placeholder": "当前组内, 还没有配置任何权限.",
|
||||
"syncLocation": false,
|
||||
"title": null,
|
||||
"listItem": {
|
||||
"title": "$name",
|
||||
"subTitle": "$description",
|
||||
"actions": [
|
||||
{
|
||||
"icon": "fa fa-edit",
|
||||
"tooltip": "编辑",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"title": "编辑能力(权限)",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"controls": [
|
||||
{
|
||||
"type": "hidden",
|
||||
"name": "id"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"label": "权限名称",
|
||||
"type": "text",
|
||||
"disabled": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"label": "描述",
|
||||
"type": "textarea"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"tooltip": "删除",
|
||||
"disabledOn": "~[\"admin:permission\", \"admin:user\", \"admin:role\", \"admin:acl\", \"admin:page\", \"page:readAll\", \"admin:settings\"].indexOf(name)",
|
||||
"icon": "fa fa-times",
|
||||
"confirmText": "您确定要移除该权限?",
|
||||
"actionType": "ajax",
|
||||
"api": "delete:/api/mock2/notFound"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,46 @@
|
|||
### Table(CRUD)
|
||||
|
||||
在 CRUD 中的 Table 主要增加了 Column 里面的以下配置功能,更多参数,请参考[Table](#table)
|
||||
|
||||
- `sortable` 开启后可以根据当前列排序(后端排序)。
|
||||
|
||||
```schema:height="800" scope="body"
|
||||
{
|
||||
"type": "crud",
|
||||
"api": "/api/sample",
|
||||
"syncLocation": false,
|
||||
"title": null,
|
||||
"perPageField":"rn",
|
||||
"defaultParams":{
|
||||
"rn": 10
|
||||
},
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"label": "ID",
|
||||
"width": 20,
|
||||
"sortable": true
|
||||
},
|
||||
{
|
||||
"name": "engine",
|
||||
"label": "Rendering engine",
|
||||
"sortable": true,
|
||||
"toggled": false
|
||||
},
|
||||
{
|
||||
"name": "browser",
|
||||
"label": "Browser",
|
||||
"sortable": true
|
||||
},
|
||||
{
|
||||
"name": "platform",
|
||||
"label": "Platform(s)",
|
||||
"sortable": true
|
||||
},
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,39 @@
|
|||
### CRUD
|
||||
|
||||
增删改查模型,主要用来展现列表,并支持各类【增】【删】【改】【查】的操作。复杂示例请前往 [Demo](/docs/demo/crud/table)。
|
||||
|
||||
CRUD 支持三种模式:`table`、`cards`、`list`,默认为 `table`。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ------------------------- | -------------------------- | ------------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| type | `string` | | `"crud"` 指定为 CRUD 渲染器 |
|
||||
| mode | `string` | `"table"` | `"table" 、 "cards" 或者 "list"` |
|
||||
| title | `string` | `""` | 可设置成空,当设置成空时,没有标题栏 |
|
||||
| className | `string` | | 表格外层 Dom 的类名 |
|
||||
| api | [Api](#api) | | CRUD 用来获取列表数据的 api。[详情](/docs/api#crud) |
|
||||
| filter | [Form](#form) | | 设置过滤器,当该表单提交后,会把数据带给当前 crud 刷新列表。 |
|
||||
| initFetch | `boolean` | `true` | 是否初始化的时候拉取数据, 只针对有 filter 的情况, 没有 filter 初始都会拉取数据 |
|
||||
| interval | `number` | `3000` | 刷新时间(最低 3000) |
|
||||
| silentPolling | `boolean` | `false` | 配置刷新时是否显示加载动画 |
|
||||
| stopAutoRefreshWhen | `string` | `""` | 通过[表达式](#表达式)来配置停止刷新的条件 |
|
||||
| syncLocation | `boolean` | `true` | 是否将过滤条件的参数同步到地址栏 |
|
||||
| draggable | `boolean` | `false` | 是否可通过拖拽排序 |
|
||||
| itemDraggableOn | `boolean` | | 用[表达式](#表达式)来配置是否可拖拽排序 |
|
||||
| saveOrderApi | [Api](#api) | | 保存排序的 api。[详情](/docs/api#crud) |
|
||||
| quickSaveApi | [Api](#api) | | 快速编辑后用来批量保存的 API。[详情](/docs/api#crud) |
|
||||
| quickSaveItemApi | [Api](#api) | | 快速编辑配置成及时保存时使用的 API。[详情](/docs/api#crud) |
|
||||
| bulkActions | Array Of [Action](#action) | | 批量操作列表,配置后,表格可进行选中操作。 |
|
||||
| defaultChecked | `boolean` | `false` | 当可批量操作时,默认是否全部勾选。 |
|
||||
| messages | `Object` | | 覆盖消息提示,如果不指定,将采用 api 返回的 message |
|
||||
| messages.fetchFailed | `string` | | 获取失败时提示 |
|
||||
| messages.saveOrderFailed | `string` | | 保存顺序失败提示 |
|
||||
| messages.saveOrderSuccess | `string` | | 保存顺序成功提示 |
|
||||
| messages.quickSaveFailed | `string` | | 快速保存失败提示 |
|
||||
| messages.quickSaveSuccess | `string` | | 快速保存成功提示 |
|
||||
| primaryField | `string` | `"id"` | 设置 ID 字段名。 |
|
||||
| defaultParams | `Object` | | 设置默认 filter 默认参数,会在查询的时候一起发给后端 |
|
||||
| pageField | `string` | `"page"` | 设置分页页码字段名。 |
|
||||
| perPageField | `string` | `"perPage"` | 设置分页一页显示的多少条数据的字段名。注意:最好与 defaultParams 一起使用,请看下面例子。 |
|
||||
| orderField | `string` | | 设置用来确定位置的字段名,设置后新的顺序将被赋值到该字段中。 |
|
||||
| headerToolbar | Array | `['bulkActions', 'pagination']` | 顶部工具栏配置 |
|
||||
| footerToolbar | Array | `['statistics', 'pagination']` | 顶部工具栏配置 |
|
|
@ -0,0 +1,56 @@
|
|||
## Card
|
||||
|
||||
卡片的展示形式。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ---------------------- | ---------------------------- | ----------------------------------- | -------------------------------------- |
|
||||
| type | `string` | `"card"` | 指定为 Card 渲染器 |
|
||||
| className | `string` | `"panel-default"` | 外层 Dom 的类名 |
|
||||
| header | `Object` | | Card 头部内容设置 |
|
||||
| header.className | `string` | | 头部类名 |
|
||||
| header.title | `string` | | 标题 |
|
||||
| header.subTitle | `string` | | 副标题 |
|
||||
| header.desc | `string` | | 描述 |
|
||||
| header.avatar | `string` | | 图片 |
|
||||
| header.highlight | `boolean` | | 是否点亮 |
|
||||
| header.avatarClassName | `string` | `"pull-left thumb avatar b-3x m-r"` | 图片类名 |
|
||||
| body | `Array` 或者 [Field](#field) | | 内容容器,主要用来放置 [Field](#field) |
|
||||
| bodyClassName | `string` | `"padder m-t-sm m-b-sm"` | 内容区域类名 |
|
||||
| actions | Array Of [Button](#button) | | 按钮区域 |
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "card",
|
||||
"header": {
|
||||
"title": "Title",
|
||||
"subTitle": "Sub Title",
|
||||
"description": "description",
|
||||
"avatarClassName": "pull-left thumb-md avatar b-3x m-r",
|
||||
"avatar": "raw:http://hiphotos.baidu.com/fex/%70%69%63/item/c9fcc3cec3fdfc03ccabb38edd3f8794a4c22630.jpg"
|
||||
},
|
||||
"body": "Body",
|
||||
"actions": [
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Action 1",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Action 2",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,73 @@
|
|||
## Cards
|
||||
|
||||
卡片集合。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| --------------- | ------------- | ------------------- | -------------------------- |
|
||||
| type | `string` | | `"cards"` 指定为卡片集合。 |
|
||||
| title | `string` | | 标题 |
|
||||
| source | `string` | `${items}` | 数据源, 绑定当前环境变量 |
|
||||
| placeholder | string | ‘暂无数据’ | 当没数据的时候的文字提示 |
|
||||
| className | `string` | | 外层 CSS 类名 |
|
||||
| headerClassName | `string` | `amis-grid-header` | 顶部外层 CSS 类名 |
|
||||
| footerClassName | `string` | `amis-grid-footer` | 底部外层 CSS 类名 |
|
||||
| itemClassName | `string` | `col-sm-4 col-md-3` | 卡片 CSS 类名 |
|
||||
| card | [Card](#card) | | 配置卡片信息 |
|
||||
|
||||
```schema:height="450" scope="body"
|
||||
{
|
||||
"type": "service",
|
||||
"api": "/api/sample?perPage=8",
|
||||
"body": [
|
||||
{
|
||||
"type": "panel",
|
||||
"title": "简单 Cards 示例",
|
||||
"body": {
|
||||
"type": "cards",
|
||||
"source": "$rows",
|
||||
"card": {
|
||||
"body": [
|
||||
{
|
||||
"label": "Engine",
|
||||
"name": "engine"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Version"
|
||||
}
|
||||
],
|
||||
|
||||
"actions": [
|
||||
{
|
||||
"type": "button",
|
||||
"level": "link",
|
||||
"icon": "fa fa-eye",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"title": "查看详情",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"controls": [
|
||||
{
|
||||
"label": "Engine",
|
||||
"name": "engine",
|
||||
"type": "static"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Version",
|
||||
"type": "static"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,21 @@
|
|||
### Chained-Select
|
||||
|
||||
无限级别下拉,只支持单选,且必须和 `source` 搭配,通过 API 拉取数据,只要 API 有返回结果,就能一直无限级别下拉下去。
|
||||
|
||||
- `type` 请设置成 `chained-select`
|
||||
- `options` 选项配置,类型为数组,成员格式如下。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#select) 另外也可以用 `$xxxx` 来获取当前作用域中的变量。
|
||||
更多配置请参考 [FormItem](#FormItem)。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="300" scope="form-item"
|
||||
{
|
||||
"name": "select3",
|
||||
"type": "chained-select",
|
||||
"label": "级联下拉",
|
||||
"source": "/api/mock2/options/chainedOptions?waitSeconds=1&parentId=$parentId&level=$level&maxLevel=4&waiSeconds=1",
|
||||
"value": "a,b"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,22 @@
|
|||
### Chart
|
||||
|
||||
图表渲染器,采用 echarts 渲染,配置格式跟 echarts 相同,配置文档[文档](http://echarts.baidu.com/option.html#title)
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| --------- | ----------------------- | --------- | ------------------------------------------------------------------ |
|
||||
| type | `string` | `"chart"` | 指定为 chart 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| body | [Container](#container) | | 内容容器 |
|
||||
| api | [api](#api) | | 配置项远程地址 |
|
||||
| initFetch | `boolean` | | 是否默认拉取 |
|
||||
| interval | `number` | | 刷新时间(最低 3000) |
|
||||
| config | `object/string` | | 设置 eschars 的配置项,当为`string`的时候可以设置 function 等配置项 |
|
||||
| style | `object` | | 设置根元素的 style |
|
||||
|
||||
```schema:height="350" scope="body"
|
||||
{
|
||||
"type": "chart",
|
||||
"api": "/api/mock2/chart/chart",
|
||||
"interval": 5000
|
||||
}
|
||||
```
|
|
@ -0,0 +1,18 @@
|
|||
### Checkbox
|
||||
|
||||
勾选框
|
||||
|
||||
- `type` 请设置成 `checkbox`
|
||||
- `option` 选项说明
|
||||
- `trueValue` 默认 `true`
|
||||
- `falseValue` 默认 `false`
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"name": "checkbox",
|
||||
"type": "checkbox",
|
||||
"label": "Checkbox",
|
||||
"option": "选项说明"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,48 @@
|
|||
### Checkboxes
|
||||
|
||||
复选框
|
||||
|
||||
- `type` 请设置成 `checkboxes`
|
||||
- `options` 选项配置,类型为数组,成员格式如下。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#select)
|
||||
- `joinValues` 默认为 `true` 选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- `columnsCount` 默认为 `1` 可以配置成一行显示多个。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="330" scope="form"
|
||||
[
|
||||
{
|
||||
"name": "checkboxes",
|
||||
"type": "checkboxes",
|
||||
"label": "Checkboxes",
|
||||
"options": [
|
||||
{
|
||||
"label": "OptionA",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "OptionB",
|
||||
"value": "b"
|
||||
},
|
||||
{
|
||||
"label": "OptionC",
|
||||
"value": "c"
|
||||
},
|
||||
{
|
||||
"label": "OptionD",
|
||||
"value": "d"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "checkboxes",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,18 @@
|
|||
### Collapse
|
||||
|
||||
折叠器
|
||||
|
||||
- `type` 请设置成 `collapse`
|
||||
- `title` 标题
|
||||
- `collapsed` 默认是否要收起。
|
||||
- `className` CSS 类名,默认:`bg-white wrapper`。
|
||||
- `headingClassName` 标题 CSS 类名,默认:`font-thin b-b b-light text-lg p-b-xs`。
|
||||
- `bodyClassName` 内容 CSS 类名。
|
||||
|
||||
```schema:height="350" scope="body"
|
||||
{
|
||||
"type": "collapse",
|
||||
"title": "标题",
|
||||
"body": "内容。。。"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,15 @@
|
|||
### Color
|
||||
|
||||
颜色选择器。
|
||||
|
||||
- `type` 请设置成 `color`
|
||||
- `format` 请选择 `hex`、`hls`、`rgb`或者`rgba`。默认为 `hex`。
|
||||
- `clearable` 是否显示清除按钮。
|
||||
|
||||
```schema:height="400" scope="form-item"
|
||||
{
|
||||
"type": "color",
|
||||
"name": "color",
|
||||
"label": "颜色"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,12 @@
|
|||
### Column
|
||||
|
||||
表格中的列配置
|
||||
|
||||
- `type` 默认为 `text`,支持: `text`、`html`、`tpl`、`image`、`progress`、`status`、`date`、`datetime`、`time`、`json`、`mapping`参考 [Field 说明](#field)和[Operation](#operation)。
|
||||
- `name` 用来关联列表数据中的变量 `key`。
|
||||
- `label` 列标题。
|
||||
- `copyable` 开启后,会支持内容点击复制。
|
||||
- `width` 列宽度。
|
||||
- `popOver` 是否支持点击查看详情。当内容较长时,可以开启此配置。
|
||||
- `quickEdit` 配置后在内容区增加一个编辑按钮,点击后弹出一个编辑框。
|
||||
- `toggled` 控制默认是展示还是不展示,只有 Table 的 `columnsTogglable` 开启了才有效。
|
|
@ -0,0 +1,135 @@
|
|||
### Combo
|
||||
|
||||
组合模式,支持自由组合多个表单项。
|
||||
|
||||
- `type` 请设置成 `combo`
|
||||
- `multiple` 默认为 `false` 配置是否为多选模式
|
||||
- `controls` 配置组合成员,所有成员都是横向展示,可以是任意 [FormItem](#FormItem)
|
||||
- `controls[x].columnClassName` 列的类名,可以用它配置列宽度。默认平均分配。
|
||||
- `controls[x].unique` 设置当前列值是否唯一,即不允许重复选择。
|
||||
- `maxLength` 当 multiple 为 true 的时候启用,设置可以最大项数。
|
||||
- `flat` 默认为 `false`, 是否将结果扁平化(去掉 name),只有当 controls 的 length 为 1 且 multiple 为 true 的时候才有效。
|
||||
- `joinValues` 默认为 `true` 当扁平化开启的时候,是否用分隔符的形式发送给后端,否则采用 array 的方式。
|
||||
- `delimiter` 当扁平化开启并且 joinValues 为 true 时,用什么分隔符。
|
||||
- `multiLine` 默认是横着展示一排,设置以后竖着展示
|
||||
- `addable` 是否可新增。
|
||||
- `removable` 是否可删除
|
||||
- `deleteApi` 如果配置了,则删除前会发送一个 api,请求成功才完成删除!
|
||||
- `deleteConfirmText` 默认为 `确认要删除?`,当配置 `deleteApi` 才生效!删除时用来做用户确认!
|
||||
- `draggable` 默认为 `false`, 是否可以拖动排序, 需要注意的是当启用拖动排序的时候,会多一个\$id 字段
|
||||
- `draggableTip` 可拖拽的提示文字,默认为:`"可通过拖动每行中的【交换】按钮进行顺序调整"`
|
||||
- `addButtonText` 新增按钮文字,默认为 `"新增"`。
|
||||
- `minLength` 限制最小长度。
|
||||
- `maxLength` 限制最大长度。
|
||||
- `scaffold` 单条初始值。默认为 `{}`。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="450" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "combo",
|
||||
"name": "combo",
|
||||
"label": "单选组合项",
|
||||
"controls": [
|
||||
{
|
||||
"name": "a",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"type": "select",
|
||||
"options": ["a", "b", "c"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "combo",
|
||||
"label": "当前值"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "combo",
|
||||
"name": "combo2",
|
||||
"label": "多选组合项",
|
||||
"multiple": true,
|
||||
"draggable": true,
|
||||
"controls": [
|
||||
{
|
||||
"label": "字段1",
|
||||
"name": "a",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"label": "字段2",
|
||||
"name": "b",
|
||||
"type": "select",
|
||||
"options": ["a", "b", "c"],
|
||||
"unique": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "combo2",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
combo 多行模式。
|
||||
|
||||
```schema:height="450" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "combo",
|
||||
"name": "combo",
|
||||
"label": "多选组合form",
|
||||
"multiple": true,
|
||||
"multiLine": true,
|
||||
"controls": [
|
||||
{
|
||||
"label": "字段1",
|
||||
"name": "a",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"label": "字段2",
|
||||
"name": "b",
|
||||
"type": "select",
|
||||
"options": ["a", "b", "c"]
|
||||
}
|
||||
]
|
||||
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "combo",
|
||||
"label": "当前值"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "combo",
|
||||
"name": "xxx",
|
||||
"label": "单选组合form",
|
||||
"multiLine": true,
|
||||
"controls": [
|
||||
{
|
||||
"name": "a",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"type": "select",
|
||||
"options": ["a", "b", "c"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "xxx",
|
||||
"label": "当前值"
|
||||
}
|
||||
|
||||
]
|
||||
```
|
|
@ -0,0 +1,56 @@
|
|||
### Date-Range
|
||||
|
||||
日期范围类型。
|
||||
|
||||
- `type` 请设置成 `date-range`
|
||||
- `format` 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.
|
||||
- `inputFormat` 默认 `HH:mm` 用来配置显示的时间格式。
|
||||
- `minDate` 限制最小日期,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
- `maxDate` 限制最小日期,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "date-range",
|
||||
"name": "select",
|
||||
"label": "日期范围"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
考虑到大家都习惯用两个字段来存储,那么就用 date 来代替吧。
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
[
|
||||
{
|
||||
"type": "date",
|
||||
"name": "start",
|
||||
"label": "开始日期",
|
||||
"maxDate": "$end"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "date",
|
||||
"name": "end",
|
||||
"label": "结束日期",
|
||||
"minDate": "$start"
|
||||
}
|
||||
],
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值",
|
||||
"description": "包含开始日期和结束日期",
|
||||
"tpl": "$start - $end"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,34 @@
|
|||
### Date
|
||||
|
||||
日期类型。
|
||||
|
||||
- `type` 请设置成 `date`
|
||||
- `format` 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.
|
||||
- `inputFormat` 默认 `YYYY-MM-DD` 用来配置显示的时间格式。
|
||||
- `placeholder` 默认 `请选择日期`
|
||||
- `value` 这里面 value 需要特殊说明一下,因为支持相对值。如:
|
||||
- `-2mins` 2 分钟前
|
||||
- `+2days` 2 天后
|
||||
- `-10week` 十周前
|
||||
- `minDate` 限制最小日期,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
- `maxDate` 限制最小日期,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
|
||||
可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。
|
||||
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "date",
|
||||
"name": "select",
|
||||
"label": "日期"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,37 @@
|
|||
### Datetime
|
||||
|
||||
日期时间类型。
|
||||
|
||||
- `type` 请设置成 `datetime`
|
||||
- `format` 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.
|
||||
- `inputFormat` 默认 `YYYY-MM-DD HH:mm:ss` 用来配置显示的时间格式。
|
||||
- `placeholder` 默认 `请选择日期`
|
||||
- `timeConstraints` 请参考: https://github.com/YouCanBookMe/react-datetime
|
||||
- `value` 这里面 value 需要特殊说明一下,因为支持相对值。如:
|
||||
- `-2mins` 2 分钟前
|
||||
- `+2days` 2 天后
|
||||
- `-10week` 十周前
|
||||
- `minDate` 限制最小日期,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
- `maxDate` 限制最小日期,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
- `minTime` 限制最小时间,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
- `maxTime` 限制最大时间,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
|
||||
可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。
|
||||
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "datetime",
|
||||
"name": "select",
|
||||
"label": "日期"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,39 @@
|
|||
### Dialog
|
||||
|
||||
Dialog 由 [Action](#action) 触发。他是一个类似于 [Page](#page) 的容器模型。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ------------- | ------------------------------------- | ------------ | ------------------------------------------------ |
|
||||
| type | `string` | | `"dialog"` 指定为 Dialog 渲染器 |
|
||||
| title | `string` 或者 [Container](#Container) | | 弹出层标题 |
|
||||
| body | [Container](#Container) | | 往 Dialog 内容区加内容 |
|
||||
| size | `string` | | 指定 dialog 大小,支持: `xs`、`sm`、`md`、`lg` |
|
||||
| bodyClassName | `string` | `modal-body` | Dialog body 区域的样式类名 |
|
||||
| closeOnEsc | `boolean` | `false` | 是否支持按 `Esc` 关闭 Dialog |
|
||||
| disabled | `boolean` | `false` | 如果设置此属性,则该 Dialog 只读没有提交操作。 |
|
||||
| actions | Array Of [Action](#action) | | 可以不设置,默认只有【确认】和【取消】两个按钮。 |
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"label": "弹出",
|
||||
"type": "button",
|
||||
"level": "primary",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"title": "表单设置",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"api": "/api/mock2/form/saveForm?waitSeconds=1",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text",
|
||||
"label": "文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,11 @@
|
|||
### Divider
|
||||
|
||||
分割线
|
||||
|
||||
- `type` 请设置成 `divider`
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "divider"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,40 @@
|
|||
### Drawer
|
||||
|
||||
Drawer 由 [Action](#action) 触发。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ------------- | ------------------------------------- | ------------ | ------------------------------------------------ |
|
||||
| type | `string` | | `"drawer"` 指定为 Drawer 渲染器 |
|
||||
| title | `string` 或者 [Container](#Container) | | 弹出层标题 |
|
||||
| body | [Container](#Container) | | 往 Dialog 内容区加内容 |
|
||||
| size | `string` | | 指定 dialog 大小,支持: `xs`、`sm`、`md`、`lg` |
|
||||
| bodyClassName | `string` | `modal-body` | Dialog body 区域的样式类名 |
|
||||
| closeOnEsc | `boolean` | `false` | 是否支持按 `Esc` 关闭 Dialog |
|
||||
| overlay | `boolean` | `true` | 是否显示蒙层 |
|
||||
| resizable | `boolean` | `false` | 是否可通过拖拽改变 Drawer 大小 |
|
||||
| actions | Array Of [Action](#action) | | 可以不设置,默认只有【确认】和【取消】两个按钮。 |
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"label": "弹出",
|
||||
"type": "button",
|
||||
"level": "primary",
|
||||
"actionType": "drawer",
|
||||
"drawer": {
|
||||
"title": "表单设置",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"api": "/api/mock2/form/saveForm?waitSeconds=1",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text",
|
||||
"label": "文本"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,34 @@
|
|||
### Editor
|
||||
|
||||
### XXX-Editor
|
||||
|
||||
- `type` 请设置成 `editor` 或者 `bat-editor`、`c-editor`、`coffeescript-editor`、`cpp-editor`、`csharp-editor`、`css-editor`、`dockerfile-editor`、`fsharp-editor`、`go-editor`、`handlebars-editor`、`html-editor`、`ini-editor`、`java-editor`、`javascript-editor`、`json-editor`、`less-editor`、`lua-editor`、`markdown-editor`、`msdax-editor`、`objective-c-editor`、`php-editor`、`plaintext-editor`、`postiats-editor`、`powershell-editor`、`pug-editor`、`python-editor`、`r-editor`、`razor-editor`、`ruby-editor`、`sb-editor`、`scss-editor`、`sol-editor`、`sql-editor`、`swift-editor`、`typescript-editor`、`vb-editor`、`xml-editor`、`yaml-editor`。
|
||||
- `language` 默认为 `javascript` 当 `type` 为 `editor` 的时候有用。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="350" scope="form-item"
|
||||
{
|
||||
"type": "json-editor",
|
||||
"name": "json",
|
||||
"label": "Json Editor"
|
||||
}
|
||||
```
|
||||
|
||||
### Diff-Editor
|
||||
|
||||
- `type` 请设置成 `diff-editor`
|
||||
- `language` 默认为 `javascript` 当 `type` 为 `diff-editor` 的时候有用
|
||||
- `diffValue` 设置左侧编辑器的值,支持`${xxx}`获取变量
|
||||
- `disabled` 配置 **右侧编辑器** 是否可编辑,**左侧编辑器**始终不可编辑
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
PS: 当用作纯展示时,可以通过`value`配置项,设置右侧编辑器的值
|
||||
|
||||
```schema:height="350" scope="form-item"
|
||||
{
|
||||
"type": "diff-editor",
|
||||
"name": "diff",
|
||||
"diffValue": "hello world",
|
||||
"label": "Diff-Editor"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,27 @@
|
|||
### Email
|
||||
|
||||
Email 输入框。
|
||||
|
||||
- `type` 请设置成 `email`
|
||||
- `addOn` 输入框附加组件,比如附带一个提示文字,或者附带一个提交按钮。
|
||||
- `addOn.type` 请选择 `text` 、`button` 或者 `submit`。
|
||||
- `addOn.label` 文字说明
|
||||
- `addOn.xxx` 其他参数请参考按钮配置部分。
|
||||
- `clearable` 在有值的时候是否显示一个删除图标在右侧。
|
||||
- `resetValue` 默认为 `""`, 删除后设置此配置项给定的值。
|
||||
- `options` 可选,选项配置,类型为数组,成员格式如下,配置后用户输入内容时会作为选项提示辅助输入。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` 通过 options 只能配置静态数据,如果设置了 source 则会从接口拉取,实现动态效果。
|
||||
- `autoComplete` 跟 source 不同的是,每次用户输入都会去接口获取提示。
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "email",
|
||||
"name": "text",
|
||||
"validateOnChange": true,
|
||||
"label": "Email"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,216 @@
|
|||
## Field
|
||||
|
||||
主要用在 [Table](#table) 的列配置 Column、[List](#list) 的内容、[Card](#card) 卡片的内容和表单的[Static-XXX](#static-xxx) 中。它主要用来展示数据。
|
||||
|
||||
```schema:height="450" scope="body"
|
||||
{
|
||||
"type": "crud",
|
||||
"api": "/api/mock2/crud/list",
|
||||
"affixHeader": false,
|
||||
"syncLocation": false,
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"label": "ID",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"name": "text",
|
||||
"label": "文本",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"type": "image",
|
||||
"label": "图片",
|
||||
"name": "image",
|
||||
"popOver": {
|
||||
"title": "查看大图",
|
||||
"body": "<div class=\"w-xxl\"><img class=\"w-full\" src=\"${image}\"/></div>"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "date",
|
||||
"type": "date",
|
||||
"label": "日期"
|
||||
},
|
||||
{
|
||||
"name": "progress",
|
||||
"label": "进度",
|
||||
"type": "progress"
|
||||
},
|
||||
{
|
||||
"name": "boolean",
|
||||
"label": "状态",
|
||||
"type": "status"
|
||||
},
|
||||
{
|
||||
"name": "boolean",
|
||||
"label": "开关",
|
||||
"type": "switch"
|
||||
},
|
||||
{
|
||||
"name": "type",
|
||||
"label": "映射",
|
||||
"type": "mapping",
|
||||
"map": {
|
||||
"1": "<span class='label label-info'>漂亮</span>",
|
||||
"2": "<span class='label label-success'>开心</span>",
|
||||
"3": "<span class='label label-danger'>惊吓</span>",
|
||||
"4": "<span class='label label-warning'>紧张</span>",
|
||||
"*": "其他:${type}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "list",
|
||||
"type": "list",
|
||||
"label": "List",
|
||||
"placeholder": "-",
|
||||
"listItem": {
|
||||
"title": "${title}",
|
||||
"subTitle": "${description}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Field 通用配置
|
||||
|
||||
- `name` 绑定变量名。
|
||||
- `placeholder` 当没有值时的展示内容。
|
||||
- `popOver` 配置后在内容区增加一个放大按钮,点击后弹出一个详情弹框。
|
||||
`boolean` 简单的开启或者关闭
|
||||
`Object` 弹出的内容配置。请参考 [Dialog](#dialog) 配置说明。
|
||||
- `quickEdit` 配置后在内容区增加一个编辑按钮,点击后弹出一个编辑框。
|
||||
`boolean` 简单的开启或者关闭
|
||||
`Object` 快速编辑详情,请参考 [FormItem](#formitem) 配置。
|
||||
`.mode` 模式如果设置为 `inline` 模式,则直接展示输入框,而不需要点击按钮后展示。
|
||||
`.saveImmediately` 开启后,直接保存,而不是等全部操作完后批量保存。
|
||||
- `copyable` 配置后会在内容区增加一个复制按钮,点击后把内容复制到剪切板。
|
||||
todo
|
||||
|
||||
### Tpl(Field)
|
||||
|
||||
请参考[tpl](#tpl)
|
||||
|
||||
### Plain(Field)
|
||||
|
||||
请参考[Plain](#plain)
|
||||
|
||||
### Json(Field)
|
||||
|
||||
todo
|
||||
|
||||
### Date(Field)
|
||||
|
||||
用来显示日期。
|
||||
|
||||
- `type` 请设置为 `date`。
|
||||
- `format` 默认为 `YYYY-MM-DD`,时间格式,请参考 moment 中的格式用法。
|
||||
- `valueFormat` 默认为 `X`,时间格式,请参考 moment 中的格式用法。
|
||||
|
||||
### Mapping(Field)
|
||||
|
||||
用来对值做映射显示。
|
||||
|
||||
- `type` 请设置为 `date`。
|
||||
- `map` 映射表, 比如
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "mapping",
|
||||
"name": "flag",
|
||||
"map": {
|
||||
"1": "<span class='label label-default'>One</span>",
|
||||
"*": "其他 ${flag}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
当值为 1 时,显示 One, 当值为其他时会命中 `*` 所以显示 `其他 flag的值`。
|
||||
|
||||
### Image(Field)
|
||||
|
||||
用来展示图片。
|
||||
|
||||
- `type` 请设置为 `image`。
|
||||
- `description` 图片描述。
|
||||
- `defaultImage` 默认图片地址。
|
||||
- `className` CSS 类名。
|
||||
- `src` 图片地址,支持变量。如果想动态显示,请勿配置。
|
||||
|
||||
### Progress(Field)
|
||||
|
||||
用来展示进度条。
|
||||
|
||||
- `type` 请设置为 `progress`。
|
||||
- `showLabel` 是否显示文字
|
||||
- `map` 等级配置
|
||||
默认
|
||||
|
||||
```json
|
||||
["bg-danger", "bg-warning", "bg-info", "bg-success", "bg-success"]
|
||||
```
|
||||
|
||||
展示的样式取决于当前值在什么区间段,比如以上的配置,把 100 切成了 5 分,前 1/5, 即 25 以前显示 `bg-danger` 背景。50 ~ 75 显示 `bg-info` 背景。
|
||||
|
||||
- `progressClassName` 进度外层 CSS 类名 默认为: `progress-xs progress-striped active m-t-xs m-b-none`
|
||||
- `progressBarClassName` 进度条 CSS 类名。
|
||||
|
||||
### Status(Field)
|
||||
|
||||
用来显示状态,用图表展示。
|
||||
|
||||
- `type` 请设置为 `status`。
|
||||
- `map` 图标配置
|
||||
|
||||
默认:
|
||||
|
||||
```json
|
||||
["fa fa-times text-danger", "fa fa-check text-success"]
|
||||
```
|
||||
|
||||
即如果值 `value % map.length` 等于 0 则显示第一个图标。`value % map.length` 等于 1 则显示第二个图标,无限类推。所以说 map 其实不只是支持 2 个,可以任意个。
|
||||
|
||||
这个例子,当值为 0 、2、4 ... 时显示红 `X`, 当值为 1, 3, 5 ... 绿 `√`
|
||||
|
||||
### Switch(Field)
|
||||
|
||||
用来占一个开关。
|
||||
|
||||
- `type` 请设置为 `switch`。
|
||||
- `option` 选项说明
|
||||
- `trueValue` 勾选后的值
|
||||
- `falseValue` 未勾选的值
|
||||
|
||||
## Tabs
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ----------------- | ----------------------- | ----------------------------------- | -------------------------------------------------------- |
|
||||
| type | `string` | `"tabs"` | 指定为 Tabs 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| tabsClassName | `string` | | Tabs Dom 的类名 |
|
||||
| tabs | `Array` | | tabs 内容 |
|
||||
| tabs[x].title | `string` | | Tab 标题 |
|
||||
| tabs[x].icon | `icon` | | Tab 的图标 |
|
||||
| tabs[x].tab | [Container](#container) | | 内容区 |
|
||||
| tabs[x].hash | `string` | | 设置以后将跟 url 的 hash 对应 |
|
||||
| tabs[x].reload | `boolean` | | 设置以后内容每次都会重新渲染,对于 crud 的重新拉取很有用 |
|
||||
| tabs[x].className | `string` | `"bg-white b-l b-r b-b wrapper-md"` | Tab 区域样式 |
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "tabs",
|
||||
"tabs": [
|
||||
{
|
||||
"title": "Tab 1",
|
||||
"tab": "Content 1"
|
||||
},
|
||||
|
||||
{
|
||||
"title": "Tab 2",
|
||||
"tab": "Content 2"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,58 @@
|
|||
### FieldSet
|
||||
|
||||
多个输入框可以通过 fieldSet 捆绑在一起。
|
||||
|
||||
- `type` 请设置成 `fieldSet`
|
||||
- `title` 标题
|
||||
- `controls` 表单项集合。
|
||||
- `mode` 展示默认,跟 [Form](#form) 中的模式一样,选择: `normal`、`horizontal`或者`inline`。
|
||||
- `horizontal` 当为水平模式时,用来控制左右占比。
|
||||
- `horizontal.label` 左边 label 的宽度占比。
|
||||
- `horizontal.right` 右边控制器的宽度占比。
|
||||
- `horizontal.offset` 当没有设置 label 时,右边控制器的偏移量。
|
||||
- `collapsable` 配置是否可折叠,默认为 `true`。
|
||||
- `collapsed` 默认是否折叠。
|
||||
- `className` CSS 类名
|
||||
- `headingClassName` 标题 CSS 类名
|
||||
- `bodyClassName` 内容区域 CSS 类名
|
||||
|
||||
```schema:height="500" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "fieldSet",
|
||||
"title": "基本配置",
|
||||
"controls": [
|
||||
{
|
||||
"name": "a",
|
||||
"type": "text",
|
||||
"label": "文本1"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "a",
|
||||
"type": "text",
|
||||
"label": "文本2"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "fieldSet",
|
||||
"title": "其他配置",
|
||||
"collapsed": true,
|
||||
"controls": [
|
||||
{
|
||||
"name": "c",
|
||||
"type": "text",
|
||||
"label": "文本3"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "d",
|
||||
"type": "text",
|
||||
"label": "文本4"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,31 @@
|
|||
### File
|
||||
|
||||
文件输入,AMis 也默认处理了图片存储,提交给 API 的是文件的下载地址。
|
||||
|
||||
- `type` 请设置成 `file`
|
||||
- `reciever` 默认 `/api/upload/file` 如果想自己存储,请设置此选项。(PS: 如果想存自己的 bos, 系统配置中可以直接填写自己的 bos 配置。)
|
||||
- `accept` 默认 `text/plain` 默认只支持纯文本,要支持其他类型,请配置此属性。
|
||||
- `maxSize` 默认没有限制,当设置后,文件大小大于此值将不允许上传。
|
||||
- `multiple` 是否多选。
|
||||
- `maxLength` 默认没有限制,当设置后,一次只允许上传指定数量文件。
|
||||
- `joinValues` 多选时是否将多个值用 `delimiter` 连接起来。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 链接符
|
||||
- `autoUpload` 是否选择完就自动开始上传?默认为 `true`
|
||||
- `fileField` 默认 `file`, 如果你不想自己存储,则可以忽略此属性。
|
||||
- `downloadUrl` 默认显示文件路径的时候会支持直接下载,可以支持加前缀如:`http://xx.dom/filename=` ,如果不希望这样,可以把当前配置项设置为 `false`。
|
||||
- `useChunk` 默认为 'auto' amis 所在服务器,限制了文件上传大小不得超出 10M,所以 amis 在用户选择大文件的时候,自动会改成分块上传模式。
|
||||
- `chunkSize` 分块大小,默认为 5M.
|
||||
- `startChunkApi` 默认 `/api/upload/startChunk` 想自己存储时才需要关注。
|
||||
- `chunkApi` 默认 `/api/upload/chunk` 想自己存储时才需要关注。
|
||||
- `finishChunkApi` 默认 `/api/upload/finishChunk` 想自己存储时才需要关注。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form-item"
|
||||
{
|
||||
"type": "file",
|
||||
"name": "file",
|
||||
"label": "File",
|
||||
"maxSize": 1048576
|
||||
}
|
||||
```
|
|
@ -0,0 +1,196 @@
|
|||
## Form
|
||||
|
||||
表单渲染器,主要用来展示或者接收用户输入后将数据提交给后端或者其他组件。
|
||||
|
||||
```schema:height="360"
|
||||
{
|
||||
"type": "page",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"name": "sample1",
|
||||
"api": "/api/mock2/form/saveForm?waitSeconds=1",
|
||||
"controls": [
|
||||
{
|
||||
"name": "email",
|
||||
"label": "Email",
|
||||
"type": "email",
|
||||
"description": "描述文字"
|
||||
},
|
||||
{
|
||||
"name": "text",
|
||||
"type": "text",
|
||||
"label": "Text"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| --------------------- | -------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| type | `string` | | `"form"` 指定为 Form 渲染器 |
|
||||
| mode | `string` | `normal` | 表单展示方式,可以是:`normal`、`horizontal` 或者 `inline` [示例](/docs/demo/forms/mode) |
|
||||
| horizontal | `Object` | `{"left":"col-sm-2", "right":"col-sm-10", "offset":"col-sm-offset-2"}` | 当 mode 为 `horizontal` 时有用,用来控制 label |
|
||||
| title | `string` | `"表单"` | Form 的标题 |
|
||||
| submitText | `String` | `"提交"` | 默认的提交按钮名称,如果设置成空,则可以把默认按钮去掉。 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| controls | `Array` of [FormItem](#FormItem) | | Form 表单项集合 [详情](#controls) |
|
||||
| actions | `Array` of [Action](#action) | | Form 提交按钮,成员为 Action [详情](#action) |
|
||||
| messages | `Object` | | 消息提示覆写,默认消息读取的是 API 返回的消息,但是在此可以覆写它。 |
|
||||
| messages.fetchSuccess | `string` | | 获取成功时提示 |
|
||||
| messages.fetchFailed | `string` | | 获取失败时提示 |
|
||||
| messages.saveFailed | `string` | | 保存成功时提示 |
|
||||
| messages.saveSuccess | `string` | | 保存失败时提示 |
|
||||
| wrapWithPanel | `boolean` | `true` | 是否让 Form 用 panel 包起来,设置为 false 后,actions 将无效。 |
|
||||
| api | [Api](#api) | | Form 用来保存数据的 api。[详情](/docs/api#form) |
|
||||
| initApi | [Api](#api) | | Form 用来获取初始数据的 api。[详情](/docs/api#form) |
|
||||
| interval | `number` | `3000` | 刷新时间(最低 3000) |
|
||||
| silentPolling | `boolean` | `false` | 配置刷新时是否显示加载动画 |
|
||||
| stopAutoRefreshWhen | `string` | `""` | 通过[表达式](#表达式)来配置停止刷新的条件 |
|
||||
| initAsyncApi | [Api](#api) | | Form 用来获取初始数据的 api,与 initApi 不同的是,会一直轮训请求该接口,直到返回 finished 属性为 true 才 结束。[详情](/docs/api#form) |
|
||||
| initFetch | `boolean` | `true` | 设置了 initApi 或者 initAsyncApi 后,默认会开始就发请求,设置为 false 后就不会起始就请求接口 |
|
||||
| initFetchOn | `string` | | 用表达式来配置 |
|
||||
| initFinishedField | `string` | `finished` | 设置了 initAsyncApi 后,默认会从返回数据的 data.finished 来判断是否完成,也可以设置成其他的 xxx,就会从 data.xxx 中获取 |
|
||||
| initCheckInterval | `number` | `3000` | 设置了 initAsyncApi 以后,默认拉取的时间间隔 |
|
||||
| schemaApi | [Api](#api) | | `已不支持`,请改用 controls 里面放置 Service 渲染器实现 |
|
||||
| asyncApi | [Api](#api) | | 设置此属性后,表单提交发送保存接口后,还会继续轮训请求该接口,直到返回 `finished` 属性为 `true` 才 结束。[详情](/docs/api#form) |
|
||||
| checkInterval | `number` | 3000 | 轮训请求的时间间隔,默认为 3 秒。设置 `asyncApi` 才有效 |
|
||||
| finishedField | `string` | `"finished"` | 如果决定结束的字段名不是 `finished` 请设置此属性,比如 `is_success` |
|
||||
| submitOnChange | `boolean` | `false` | 表单修改即提交 |
|
||||
| primaryField | `string` | `"id"` | 设置主键 id, 当设置后,检测表单是否完成时(asyncApi),只会携带此数据。 |
|
||||
| target | `string` | | 默认表单提交自己会通过发送 api 保存数据,但是也可以设定另外一个 form 的 name 值,或者另外一个 `CRUD` 模型的 name 值。 如果 target 目标是一个 `Form` ,则目标 `Form` 会重新触发 `initApi`,api 可以拿到当前 form 数据。如果目标是一个 `CRUD` 模型,则目标模型会重新触发搜索,参数为当前 Form 数据。当目标是 `window` 时,会把当前表单的数据附带到页面地址上。 |
|
||||
| redirect | `string` | | 设置此属性后,Form 保存成功后,自动跳转到指定页面。支持相对地址,和绝对地址(相对于组内的)。 |
|
||||
| reload | `string` | | 操作完后刷新目标对象。请填写目标组件设置的 name 值,如果填写为 `window` 则让当前页面整体刷新。 |
|
||||
| autoFocus | `boolean` | `false` | 是否自动聚焦。 |
|
||||
| name | `string` | | 设置一个名字后,方便其他组件与其通信 |
|
||||
|
||||
表单项都是通过 controls 设置的,类型是数组,成员主要是[FormItem](#FormItem),默认一行一个(当然 form 是 inline 模式时例外),如果想一行多个,可以将多个[FormItem](#FormItem)放在一个 [Group](#Group) 里面。
|
||||
|
||||
```schema:height="360" scope="body"
|
||||
{
|
||||
"type": "form",
|
||||
"name": "sample2",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "group",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test1",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test2",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
水平模式的 Form 也支持 [Group](#Group) 展现。
|
||||
|
||||
```schema:height="430" scope="body"
|
||||
{
|
||||
"type": "form",
|
||||
"mode": "horizontal",
|
||||
"name": "sample3",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "group",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test1",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test2",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "group",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test3",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"inline": true,
|
||||
"type": "text",
|
||||
"name": "test4",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "group",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test3",
|
||||
"label": "Label",
|
||||
"inline": true,
|
||||
"labelClassName": "col-sm-2",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"inline": true,
|
||||
"type": "text",
|
||||
"name": "test4",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,100 @@
|
|||
### Button-Group(FormItem)
|
||||
|
||||
按钮集合,直接看示例吧。
|
||||
|
||||
- `type` 请设置成 `button-group`
|
||||
- `buttons` 配置按钮集合。
|
||||
|
||||
```schema:height="200" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test",
|
||||
"label": "Text"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "button-toolbar",
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button-group",
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Button",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "submit",
|
||||
"label": "Submit"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "reset",
|
||||
"label": "Reset"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "submit",
|
||||
"icon": "fa fa-check text-success"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "reset",
|
||||
"icon": "fa fa-times text-danger"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
button-group 有两种模式,除了能让按钮组合在一起,还能做类似于单选功能。
|
||||
|
||||
当不配置 buttons 属性时,就可以当复选框用。
|
||||
|
||||
- `options` 选项配置,类型为数组,成员格式如下。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `image` 图片的 http 地址。
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#select)
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- `joinValues` 默认为 `true`
|
||||
- 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。
|
||||
- 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- `clearable` 默认为 `true`, 表示可以取消选中。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "button-group",
|
||||
"name": "select",
|
||||
"label": "单选",
|
||||
"options": [
|
||||
{
|
||||
"label": "Option A",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "Option B",
|
||||
"value": "b"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,53 @@
|
|||
### Grid(FormItem)
|
||||
|
||||
支持 form 内部再用 grid 布局。
|
||||
|
||||
- `type` 请设置成 `grid`
|
||||
- `columns` 数据,用来配置列内容。每个 column 又一个独立的渲染器。
|
||||
- `columns[x].columnClassName` 配置列的 `className`。
|
||||
- `columns[x].controls` 如果配置了表单集合,同时没有指定 type 类型,则优先展示表单集合。
|
||||
- `columns[x].xs` 设置极小屏幕宽度占比 1 - 12。
|
||||
- `columns[x].xsHidden` 设置极小屏幕是否隐藏。
|
||||
- `columns[x].xsOffset` 设置极小屏幕偏移量 1 - 12。
|
||||
- `columns[x].xsPull` 设置极小屏幕靠左的距离占比:1 - 12 。
|
||||
- `columns[x].xsPush` 设置极小屏幕靠右的距离占比:1 - 12 。
|
||||
- `columns[x].sm` 设置小屏幕宽度占比 1 - 12。
|
||||
- `columns[x].smHidden` 设置小屏幕是否隐藏。
|
||||
- `columns[x].smOffset` 设置小屏幕偏移量 1 - 12。
|
||||
- `columns[x].smPull` 设置小屏幕靠左的距离占比:1 - 12 。
|
||||
- `columns[x].smPush` 设置小屏幕靠右的距离占比:1 - 12 。
|
||||
- `columns[x].md` 设置平板屏幕宽度占比 1 - 12。
|
||||
- `columns[x].mdHidden` 设置平板屏幕是否隐藏。
|
||||
- `columns[x].mdOffset` 设置平板屏幕偏移量 1 - 12。
|
||||
- `columns[x].mdPull` 设置平板屏幕靠左的距离占比:1 - 12 。
|
||||
- `columns[x].mdPush` 设置平板屏幕靠右的距离占比:1 - 12 。
|
||||
- `columns[x].lg` 设置 PC 屏幕宽度占比 1 - 12。
|
||||
- `columns[x].lgHidden` 设置 PC 屏幕是否隐藏。
|
||||
- `columns[x].lgOffset` 设置 PC 屏幕偏移量 1 - 12。
|
||||
- `columns[x].lgPull` 设置 PC 屏幕靠左的距离占比:1 - 12 。
|
||||
- `columns[x].lgPush` 设置 PC 屏幕靠右的距离占比:1 - 12 。
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "grid",
|
||||
"columns": [
|
||||
{
|
||||
"md": 3,
|
||||
"controls": [
|
||||
{
|
||||
"name": "text",
|
||||
"type": "text",
|
||||
"label": false,
|
||||
"placeholder": "Text"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"md": 9,
|
||||
"type": "tpl",
|
||||
"tpl": "其他渲染器类型"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,32 @@
|
|||
### HBox(FormItem)
|
||||
|
||||
支持 form 内部再用 HBox 布局,实现左右排列。没错用 [Group](#group) 也能实现,所以还是推荐用 [Group](#group)。
|
||||
|
||||
- `type` 请设置成 `hbox`
|
||||
- `columns` 数据,用来配置列内容。每个 column 又一个独立的渲染器。
|
||||
- `columns[x].columnClassName` 配置列的 `className`。
|
||||
- `columns[x].controls` 如果配置了表单集合,同时没有指定 type 类型,则优先展示表单集合。
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "hbox",
|
||||
"columns": [
|
||||
{
|
||||
"columnClassName": "w-sm",
|
||||
"controls": [
|
||||
{
|
||||
"name": "text",
|
||||
"type": "text",
|
||||
"label": false,
|
||||
"placeholder": "Text"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "tpl",
|
||||
"tpl": "其他类型的渲染器"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,125 @@
|
|||
### List(FormItem)
|
||||
|
||||
简单的列表选择框。
|
||||
|
||||
- `type` 请设置成 `list`
|
||||
- `options` 选项配置,类型为数组,成员格式如下。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `image` 图片的 http 地址。
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#select)
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- `joinValues` 默认为 `true`
|
||||
- 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。
|
||||
- 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- `clearable` 默认为 `true`, 表示可以取消选中。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
单选
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "list",
|
||||
"name": "select",
|
||||
"label": "单选",
|
||||
"clearable": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "Option A",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "Option B",
|
||||
"value": "b"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
多选
|
||||
|
||||
```schema:height="280" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "list",
|
||||
"name": "select",
|
||||
"label": "多选",
|
||||
"clearable": true,
|
||||
"multiple": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "OptionA",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "OptionB",
|
||||
"value": "b"
|
||||
},
|
||||
{
|
||||
"label": "OptionC",
|
||||
"value": "c"
|
||||
},
|
||||
{
|
||||
"label": "OptionD",
|
||||
"value": "d"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
选项带图片
|
||||
|
||||
```schema:height="280" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "list",
|
||||
"name": "select",
|
||||
"label": "图片",
|
||||
"clearable": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "OptionA",
|
||||
"value": "a",
|
||||
"image": "raw:https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg"
|
||||
},
|
||||
{
|
||||
"label": "OptionB",
|
||||
"value": "b",
|
||||
"image": "raw:https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg"
|
||||
},
|
||||
{
|
||||
"label": "OptionC",
|
||||
"value": "c",
|
||||
"image": "raw:https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg"
|
||||
},
|
||||
{
|
||||
"label": "OptionD",
|
||||
"value": "d",
|
||||
"image": "raw:https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3893101144,2877209892&fm=23&gp=0.jpg"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,54 @@
|
|||
### Panel(FormItem)
|
||||
|
||||
还是为了布局,可以把一部分 [FormItem](#formItem) 合并到一个 panel 里面单独展示。
|
||||
|
||||
- `title` panel 标题
|
||||
- `body` [Container](#container) 可以是其他渲染模型。
|
||||
- `bodyClassName` body 的 className.
|
||||
- `footer` [Container](#container) 可以是其他渲染模型。
|
||||
- `footerClassName` footer 的 className.
|
||||
- `controls` 跟 `body` 二选一,如果设置了 controls 优先显示表单集合。
|
||||
|
||||
```schema:height="400" scope="form-item"
|
||||
{
|
||||
"type": "hbox",
|
||||
"columns": [
|
||||
{
|
||||
"controls": [
|
||||
{
|
||||
"name": "text",
|
||||
"type": "text",
|
||||
"label": false,
|
||||
"placeholder": "Text"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"columnClassName": "w-xl",
|
||||
"controls": [
|
||||
{
|
||||
"type": "panel",
|
||||
"title": "bla bla",
|
||||
"controls": [
|
||||
{
|
||||
"name": "text",
|
||||
"type": "text",
|
||||
"label": false,
|
||||
"placeholder": "Text 1"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "text2",
|
||||
"type": "text",
|
||||
"label": false,
|
||||
"placeholder": "Text 2"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
```
|
|
@ -0,0 +1,63 @@
|
|||
### Service(FormItem)
|
||||
|
||||
目前看到的配置方式都是静态配置,如果你想动态配置,即配置项由接口决定,那么就使用此渲染器。
|
||||
|
||||
- `type` 请设置成 `service`。
|
||||
- `api` 数据接口
|
||||
- `initFetch` 初始是否拉取
|
||||
- `schemaApi` 配置接口,即由接口返回内容区的配置信息。
|
||||
正常期待返回是一个渲染器的配置如:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "tpl",
|
||||
"tpl": "这是内容。"
|
||||
}
|
||||
```
|
||||
|
||||
但是,由于是在 form 里面,支持返回
|
||||
|
||||
```json
|
||||
{
|
||||
"controls": [
|
||||
// 表单项配置
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
- `initFetchSchema` 是否初始拉取配置接口。
|
||||
- `name` 取个名字方便别的组件与之交互。比如某个按钮的 target 设置成次 name, 则会触发重新拉取。
|
||||
- `body` 内容容器,如果配置 schemaApi 则不需要配置,否则不配置的话,就没有内容展现。
|
||||
|
||||
```schema:height="300" scope="form"
|
||||
[
|
||||
{
|
||||
"name": "tpl",
|
||||
"type": "select",
|
||||
"label": "模板",
|
||||
"inline": true,
|
||||
"required": true,
|
||||
"value": "tpl1",
|
||||
"options": [
|
||||
{
|
||||
"label": "模板1",
|
||||
"value": "tpl1"
|
||||
},
|
||||
{
|
||||
"label": "模板2",
|
||||
"value": "tpl2"
|
||||
},
|
||||
{
|
||||
"label": "模板3",
|
||||
"value": "tpl3"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "service",
|
||||
"className": "m-t",
|
||||
"initFetchSchemaOn": "data.tpl",
|
||||
"schemaApi": "/api/mock2/service/form?tpl=$tpl"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,109 @@
|
|||
### Table(FormItem)
|
||||
|
||||
可以用来展现数据的,可以用来展示数组类型的数据,比如 multiple 的[子 form](#SubForm)。
|
||||
|
||||
- `type` 请设置成 `table`
|
||||
- `columns` 数组类型,用来定义列信息。
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "form",
|
||||
"name": "form",
|
||||
"label": "子Form",
|
||||
"btnLabel": "设置子表单",
|
||||
"multiple": true,
|
||||
"form": {
|
||||
"title": "配置子表单",
|
||||
"controls": [
|
||||
{
|
||||
"name": "a",
|
||||
"label": "A",
|
||||
"type": "text"
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"label": "B",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type":"table",
|
||||
"name":"form",
|
||||
"columns":[
|
||||
{
|
||||
"name": "a",
|
||||
"label": "A"
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"label": "B"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
当然也可以用来作为表单输入。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ---------------------------- | ----------------------- | ---------------- | ---------------------------------------- |
|
||||
| type | `string` | `"table"` | 指定为 Table 渲染器 |
|
||||
| addable | `boolean` | false | 是否可增加一行 |
|
||||
| editable | `boolean` | false | 是否可编辑 |
|
||||
| removable | `boolean` | false | 是否可删除 |
|
||||
| addApi | [api](#api) | - | 新增时提交的 API |
|
||||
| updateApi | [api](#api) | - | 修改时提交的 API |
|
||||
| deleteApi | [api](#api) | - | 删除时提交的 API |
|
||||
| addBtnLabel | `string` | | 增加按钮名称 |
|
||||
| addBtnIcon | `string` | `"fa fa-plus"` | 增加按钮图标 |
|
||||
| updateBtnLabel | `string` | `""` | 更新按钮名称 |
|
||||
| updateBtnIcon | `string` | `"fa fa-pencil"` | 更新按钮图标 |
|
||||
| deleteBtnLabel | `string` | `""` | 删除按钮名称 |
|
||||
| deleteBtnIcon | `string` | `"fa fa-minus"` | 删除按钮图标 |
|
||||
| confirmBtnLabel | `string` | `""` | 确认编辑按钮名称 |
|
||||
| confirmBtnIcon | `string` | `"fa fa-check"` | 确认编辑按钮图标 |
|
||||
| cancelBtnLabel | `string` | `""` | 取消编辑按钮名称 |
|
||||
| cancelBtnIcon | `string` | `"fa fa-times"` | 取消编辑按钮图标 |
|
||||
| columns | `array` | [] | 列信息 |
|
||||
| columns[x].quickEdit | `boolean` 或者 `object` | - | 配合 editable 为 true 一起使用 |
|
||||
| columns[x].quickEditOnUpdate | `boolean` 或者 `object` | - | 可以用来区分新建模式和更新模式的编辑配置 |
|
||||
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
- 更多 Demo 详情请参考 [表格编辑](/docs/examples/form/table)
|
||||
|
||||
```schema:height="250" scope="form-item"
|
||||
{
|
||||
"type":"table",
|
||||
"name":"form",
|
||||
"editable": true,
|
||||
"addable": true,
|
||||
"removable": true,
|
||||
"label": "表格输入",
|
||||
"columns":[
|
||||
{
|
||||
"name": "a",
|
||||
"label": "A"
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"label": "B",
|
||||
"quickEdit": {
|
||||
"type": "select",
|
||||
"options": [
|
||||
{
|
||||
"label": "A",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "B",
|
||||
"value": "b"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,51 @@
|
|||
### Tabs(FormItem)
|
||||
|
||||
多个输入框也可以通过选项卡来分组。
|
||||
|
||||
- `type` 请设置成 `tabs`
|
||||
- `tabs` 选项卡数组
|
||||
- `tabs[x].title` 标题
|
||||
- `tabs[x].controls` 表单项集合。
|
||||
- `tabs[x].body` 内容容器,跟 `controls` 二选一。
|
||||
- `tabClassName` 选项卡 CSS 类名。
|
||||
|
||||
```schema:height="500" scope="form-item"
|
||||
{
|
||||
"type": "tabs",
|
||||
"tabs": [
|
||||
{
|
||||
"title": "基本配置",
|
||||
"controls": [
|
||||
{
|
||||
"name": "a",
|
||||
"type": "text",
|
||||
"label": "文本1"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "a",
|
||||
"type": "text",
|
||||
"label": "文本2"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"title": "其他配置",
|
||||
"controls": [
|
||||
{
|
||||
"name": "c",
|
||||
"type": "text",
|
||||
"label": "文本3"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "d",
|
||||
"type": "text",
|
||||
"label": "文本4"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,90 @@
|
|||
### FormItem
|
||||
|
||||
Form 中主要是由各种 FormItem 组成。FormItem 中主要包含这些字段。
|
||||
|
||||
- `name` 字段名,表单提交时的 key。
|
||||
- `value` 值,可以通过它设置默认值。
|
||||
- `label` 描述标题,当表单为水平布局时,左边即便是不设置 label 为了保持对齐也会留空,如果想要去掉空白,请设置成 `false`。
|
||||
- `description` 描述内容。
|
||||
- `placeholder` 占位内容。
|
||||
- `type` 指定表单类型,如: `text`、`textarea`、`date`、`email`等等
|
||||
- `inline` 是否为 inline 模式。
|
||||
- `submitOnChange` 是否该表单项值发生变化时就提交当前表单。
|
||||
- `className` 表单最外层类名。
|
||||
- `disabled` 当前表单项是否是禁用状态。
|
||||
- `disabledOn` 通过[表达式](#表达式)来配置当前表单项的禁用状态。
|
||||
- `visible` 是否可见。
|
||||
- `visibleOn` 通过[表达式](#表达式)来配置当前表单项是否显示。
|
||||
- `hidden` 是否隐藏,不要跟 `visible` `visibleOn` 同时配置
|
||||
- `hiddenOn` 通过[表达式](#表达式)来配置当前表单项是否隐藏。
|
||||
- `inputClassName` 表单控制器类名。
|
||||
- `labelClassName` label 的类名。
|
||||
- `required` 是否为必填。
|
||||
- `requiredOn` 通过[表达式](#表达式)来配置当前表单项是否为必填。
|
||||
- `validations` 格式验证,支持设置多个,多个规则用英文逗号隔开。
|
||||
|
||||
- `isEmptyString` 必须是空白字符。
|
||||
- `isEmail` 必须是 Email。
|
||||
- `isUrl` 必须是 Url。
|
||||
- `isNumeric` 必须是 数值。
|
||||
- `isAlpha` 必须是 字母。
|
||||
- `isAlphanumeric` 必须是 字母或者数字。
|
||||
- `isInt` 必须是 整形。
|
||||
- `isFloat` 必须是 浮点形。
|
||||
- `isLength:length` 是否长度正好等于设定值。
|
||||
- `minLength:length` 最小长度。
|
||||
- `maxLength:length` 最大长度。
|
||||
- `maximum:length` 最大值。
|
||||
- `minimum:length` 最小值。
|
||||
- `equals:xxx` 当前值必须完全等于 xxx。
|
||||
- `equalsField:xxx` 当前值必须与 xxx 变量值一致。
|
||||
- `isJson` 是否是合法的 Json 字符串。
|
||||
- `notEmptyString` 要求输入内容不是空白。
|
||||
- `isUrlPath` 是 url 路径。
|
||||
- `matchRegexp:/foo/` 必须命中某个正则。
|
||||
- `matchRegexp1:/foo/` 必须命中某个正则。
|
||||
- `matchRegexp2:/foo/` 必须命中某个正则。
|
||||
- `matchRegexp3:/foo/` 必须命中某个正则。
|
||||
- `matchRegexp4:/foo/` 必须命中某个正则。
|
||||
如:
|
||||
|
||||
```js
|
||||
{
|
||||
"validations": "isNumeric,minimum:10",
|
||||
|
||||
// 或者对象配置方式, 推荐
|
||||
"validations": {
|
||||
"isNumeric": true,
|
||||
"minimum": 10
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `validationErrors` 自定义错误提示, 配置为对象, key 为规则名, value 为错误提示字符串(提示:其中`$1`表示输入)
|
||||
如:
|
||||
```json
|
||||
{
|
||||
"validationErrors": {
|
||||
"isEmail": "请输入正确的邮箱地址"
|
||||
}
|
||||
}
|
||||
```
|
||||
- `validateOnChange` 是否修改就验证数值,默认当表单提交过就会每次修改验证,如果要关闭请设置为 `false`,即便是关了,表单提交前还是会验证的。
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test1",
|
||||
"label": "Label",
|
||||
"description": "Description...",
|
||||
"placeholder": "Placeholder",
|
||||
"validateOnChange": true,
|
||||
"validations": "matchRegexp: /^a/, minLength:3,maxLength:5",
|
||||
"validationErrors": {
|
||||
"matchRegexp": "必须为a开头",
|
||||
"minLength": "小伙伴,最低为$1个字符!"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
不同类型的表单,可配置项还有更多,具体请看下面对应的类型。
|
|
@ -0,0 +1,43 @@
|
|||
### Formula
|
||||
|
||||
公式类型,可以设置公式,并将结果设置给目标值。
|
||||
|
||||
- `type` 请设置成 `formula`
|
||||
- `name` 这是变量名,公式结果将作用到此处指定的变量中去。
|
||||
- `formula` 公式。如: `data.var_a + 2`,其实就是 JS 表达式。
|
||||
- `condition` 作用条件。有两种写法
|
||||
- 用 tpl 语法,把关联的字段写上如: `${xxx} ${yyy}` 意思是当 xxx 和 yyy 的取值结果变化了就再应用一次公式结果。
|
||||
- 自己写判断如: `data.xxx == "a" && data.xxx !== data.__prev.xxx` 当 xxx 变化了,且新的值是字符 "a" 时应用,可以写更加复杂的判断。
|
||||
- `initSet` 初始化时是否设置。默认是 `true`
|
||||
- `autoSet` 观察公式结果,如果计算结果有变化,则自动应用到变量上。默认为 `true`。
|
||||
- `id` 定义个名字,当某个按钮的目标指定为此值后,会触发一次公式应用。这个机制可以在 `autoSet` 为 false 时用来手动触发。
|
||||
> 为什么不是设置 `name`?
|
||||
> 因为 name 值已经用来设置目标变量名了,这个表单项肯定已经存在了,所以不是唯一了,不能够被按钮指定。
|
||||
|
||||
```schema:height="300" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "number",
|
||||
"name": "a",
|
||||
"label": "A"
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"name": "b",
|
||||
"label": "B"
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"name": "sum",
|
||||
"label": "和",
|
||||
"disabled": true,
|
||||
"description": "自动计算 A + B"
|
||||
},
|
||||
{
|
||||
"type": "formula",
|
||||
"name": "sum",
|
||||
"value": 0,
|
||||
"formula": "a + b"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,65 @@
|
|||
## Grid
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ------------------- | ----------------------- | -------- | ----------------------- |
|
||||
| type | `string` | `"grid"` | 指定为 Grid 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| columns | `Array` | | 列集合 |
|
||||
| columns[x] | [Container](#Container) | | 成员可以是其他渲染器 |
|
||||
| columns[x].xs | `int` | | 宽度占比: 1 - 12 |
|
||||
| columns[x].xsHidden | `boolean` | | 是否隐藏 |
|
||||
| columns[x].xsOffset | `int` | | 偏移量 1 - 12 |
|
||||
| columns[x].xsPull | `int` | | 靠左的距离占比:1 - 12 |
|
||||
| columns[x].xsPush | `int` | | 靠右的距离占比: 1 - 12 |
|
||||
| columns[x].sm | `int` | | 宽度占比: 1 - 12 |
|
||||
| columns[x].smHidden | `boolean` | | 是否隐藏 |
|
||||
| columns[x].smOffset | `int` | | 偏移量 1 - 12 |
|
||||
| columns[x].smPull | `int` | | 靠左的距离占比:1 - 12 |
|
||||
| columns[x].smPush | `int` | | 靠右的距离占比: 1 - 12 |
|
||||
| columns[x].md | `int` | | 宽度占比: 1 - 12 |
|
||||
| columns[x].mdHidden | `boolean` | | 是否隐藏 |
|
||||
| columns[x].mdOffset | `int` | | 偏移量 1 - 12 |
|
||||
| columns[x].mdPull | `int` | | 靠左的距离占比:1 - 12 |
|
||||
| columns[x].mdPush | `int` | | 靠右的距离占比: 1 - 12 |
|
||||
| columns[x].lg | `int` | | 宽度占比: 1 - 12 |
|
||||
| columns[x].lgHidden | `boolean` | | 是否隐藏 |
|
||||
| columns[x].lgOffset | `int` | | 偏移量 1 - 12 |
|
||||
| columns[x].lgPull | `int` | | 靠左的距离占比:1 - 12 |
|
||||
| columns[x].lgPush | `int` | | 靠右的距离占比: 1 - 12 |
|
||||
|
||||
更多使用说明,请参看 [Grid Props](https://react-bootstrap.github.io/components.html#grid-props-col)
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
[
|
||||
{
|
||||
"type": "grid",
|
||||
"className": "b-a bg-dark lter",
|
||||
"columns": [
|
||||
{
|
||||
"type": "plain",
|
||||
"text": "md: 3",
|
||||
"md": 3,
|
||||
"className": "b-r"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "plain",
|
||||
"text": "md: 9",
|
||||
"md": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "grid",
|
||||
"className": "b-a m-t bg-dark lter",
|
||||
"columns": [
|
||||
{
|
||||
"type": "plain",
|
||||
"text": "mdOffset: 3",
|
||||
"mdOffset": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,50 @@
|
|||
### Group
|
||||
|
||||
表单项集合中,默认都是一行一个,如果想要一行多个,请用 Group 包裹起来。
|
||||
|
||||
- `type` 请设置成 `group`
|
||||
- `controls` 表单项集合。
|
||||
- `mode` 展示默认,跟 [Form](#form) 中的模式一样,选择: `normal`、`horizontal`或者`inline`。
|
||||
- `horizontal` 当为水平模式时,用来控制左右占比。
|
||||
- `horizontal.label` 左边 label 的宽度占比。
|
||||
- `horizontal.right` 右边控制器的宽度占比。
|
||||
- `horizontal.offset` 当没有设置 label 时,右边控制器的偏移量。
|
||||
- `className` CSS 类名。
|
||||
|
||||
```schema:height="360" scope="body"
|
||||
{
|
||||
"type": "form",
|
||||
"name": "sample2",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "group",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test1",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "text",
|
||||
"name": "test2",
|
||||
"label": "Label",
|
||||
"placeholder": "Placeholder"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,40 @@
|
|||
## HBox
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| -------------------------- | ----------------------- | -------------- | -------------------- |
|
||||
| type | `string` | `"hbox"` | 指定为 HBox 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| columns | `Array` | | 列集合 |
|
||||
| columns[x] | [Container](#Container) | | 成员可以是其他渲染器 |
|
||||
| columns[x].columnClassName | `string` | `"wrapper-xs"` | 列上类名 |
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
[
|
||||
{
|
||||
"type": "hbox",
|
||||
"className": "b-a bg-dark lter",
|
||||
"columns": [
|
||||
{
|
||||
"type": "plain",
|
||||
"text": "Col A",
|
||||
"columnClassName": "wrapper-xs b-r"
|
||||
},
|
||||
|
||||
"Col B"
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "hbox",
|
||||
"className": "b-a m-t bg-dark lter",
|
||||
"columns": [
|
||||
{
|
||||
"type": "plain",
|
||||
"text": "w-md",
|
||||
"columnClassName": "w-md wrapper-xs bg-primary b-r"
|
||||
},
|
||||
"..."
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,5 @@
|
|||
### Hidden
|
||||
|
||||
隐藏字段类型,默认表单提交,只会发送 controls 里面的这些成员,对于隐藏的字段同时又希望提交表单的时候带过去,请把表单项配置成 `hidden` 类型。
|
||||
|
||||
- `type` 请设置成 `hidden`
|
|
@ -0,0 +1,12 @@
|
|||
### Html
|
||||
|
||||
html, 当需要用到变量时,请用 [Tpl](#tpl) 代替。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"type": "html",
|
||||
"html": "支持 Html <code>Html</code>"
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,36 @@
|
|||
### Image
|
||||
|
||||
图片格式输入,默认 AMis 会直接存储在 FEX 的 hiphoto 里面,提交到 form 是直接的图片 url。
|
||||
|
||||
- `type` 请设置成 `image`
|
||||
- `reciever` 默认 `/api/upload` 如果想自己存储,请设置此选项。
|
||||
- `multiple` 是否多选。
|
||||
- `maxLength` 默认没有限制,当设置后,一次只允许上传指定数量文件。
|
||||
- `joinValues` 多选时是否将多个值用 `delimiter` 连接起来。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 连接符,默认是 `,`, 多选时且 `joinValues` 为 `true` 时用来连接值。
|
||||
- `autoUpload` 是否选择完就自动开始上传?默认为 `true`
|
||||
- `compress` 默认 `true` 如果想默认压缩请开启。
|
||||
- `compressOptions`
|
||||
- `maxWidth` 设置最大宽度。
|
||||
- `maxHeight` 设置最大高度。
|
||||
- `showCompressOptions` 默认为 false, 开启后,允许用户输入压缩选项。
|
||||
- `crop` 用来设置是否支持裁剪。
|
||||
- `aspectRatio` 浮点型,默认 `1` 即 `1:1`,如果要设置 `16:9` 请设置 `1.7777777777777777` 即 `16 / 9`。
|
||||
- `allowInput` 默认都是通过用户选择图片后上传返回图片地址,如果开启此选项,则可以允许用户图片地址。
|
||||
- `limit` 限制图片大小,超出不让上传。
|
||||
- `width` 限制图片宽度。
|
||||
- `height` 限制图片高度。
|
||||
- `minWidth` 限制图片最小宽度。
|
||||
- `minHeight` 限制图片最小高度。
|
||||
- `maxWidth` 限制图片最大宽度。
|
||||
- `maxHeight` 限制图片最大高度。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form-item"
|
||||
{
|
||||
"type": "image",
|
||||
"name": "image",
|
||||
"label": "Images"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,85 @@
|
|||
## List
|
||||
|
||||
列表展示。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ------------------------ | ---------------------------- | --------------------- | -------------------------------------- |
|
||||
| type | `string` | | `"list"` 指定为列表展示。 |
|
||||
| title | `string` | | 标题 |
|
||||
| source | `string` | `${items}` | 数据源, 绑定当前环境变量 |
|
||||
| placeholder | string | ‘暂无数据’ | 当没数据的时候的文字提示 |
|
||||
| className | `string` | | 外层 CSS 类名 |
|
||||
| headerClassName | `string` | `amis-list-header` | 顶部外层 CSS 类名 |
|
||||
| footerClassName | `string` | `amis-list-footer` | 底部外层 CSS 类名 |
|
||||
| listItem | `Array` | | 配置单条信息 |
|
||||
| listItem.title | `string` | | 标题,支持模板语法如: \${xxx} |
|
||||
| listItem.titleClassName | `string` | `h5` | 标题 CSS 类名 |
|
||||
| listItem.subTitle | `string` | | 副标题,支持模板语法如: \${xxx} |
|
||||
| listItem.avatar | `string` | | 图片地址,支持模板语法如: \${xxx} |
|
||||
| listItem.avatarClassName | `string` | `thumb-sm avatar m-r` | 图片 CSS 类名 |
|
||||
| listItem.desc | `string` | | 描述,支持模板语法如: \${xxx} |
|
||||
| listItem.body | `Array` 或者 [Field](#field) | | 内容容器,主要用来放置 [Field](#field) |
|
||||
| listItem.actions | Array Of [Button](#button) | | 按钮区域 |
|
||||
|
||||
```schema:height="400" scope="body"
|
||||
{
|
||||
"type": "service",
|
||||
"api": "/api/sample?perPage=5",
|
||||
"body": [
|
||||
{
|
||||
"type": "panel",
|
||||
"title": "简单 List 示例",
|
||||
"body": {
|
||||
"type": "list",
|
||||
"source": "$rows",
|
||||
"listItem": {
|
||||
"body": [
|
||||
{
|
||||
"type": "hbox",
|
||||
"columns": [
|
||||
{
|
||||
"label": "Engine",
|
||||
"name": "engine"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Version"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
"actions": [
|
||||
{
|
||||
"type": "button",
|
||||
"level": "link",
|
||||
"icon": "fa fa-eye",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"title": "查看详情",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"controls": [
|
||||
{
|
||||
"label": "Engine",
|
||||
"name": "engine",
|
||||
"type": "static"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Version",
|
||||
"type": "static"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,35 @@
|
|||
### Matrix
|
||||
|
||||
矩阵类型的输入框。
|
||||
|
||||
- `type` 请设置成 `matrix`
|
||||
- `columns` 列信息, 数组中 `label` 字段是必须给出的
|
||||
- `rows` 行信息, 数组中 `label` 字段是必须给出的
|
||||
- `rowLabel` 行标题说明
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#matrix)
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form-item"
|
||||
{
|
||||
"type": "matrix",
|
||||
"name": "matrix",
|
||||
"label": "Matrix",
|
||||
"rowLabel": "行标题说明",
|
||||
"columns": [
|
||||
{
|
||||
"label": "列1"
|
||||
},
|
||||
{
|
||||
"label": "列2"
|
||||
}
|
||||
],
|
||||
"rows": [
|
||||
{
|
||||
"label": "行1"
|
||||
},
|
||||
{
|
||||
"label": "行2"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,63 @@
|
|||
## Nav
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| -------------- | --------- | -------- | ----------------------------------- |
|
||||
| type | `string` | `"tabs"` | 指定为 Nav 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| stacked | `boolean` | `true` | 设置成 false 可以以 tabs 的形式展示 |
|
||||
| links | `Array` | | 链接集合 |
|
||||
| links[x].label | `string` | | 名称 |
|
||||
| links[x].to | `string` | | 链接地址 |
|
||||
| links[x].icon | `string` | | 图标 |
|
||||
|
||||
链接集合。
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "nav",
|
||||
"stacked": true,
|
||||
"className": "w-md",
|
||||
"links": [
|
||||
{
|
||||
"label": "Nav 1",
|
||||
"to": "/docs/index",
|
||||
"icon": "fa fa-user",
|
||||
"active": true
|
||||
},
|
||||
|
||||
{
|
||||
"label": "Nav 2",
|
||||
"to": "/docs/api"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "Nav 3",
|
||||
"to": "/docs/renderers"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "nav",
|
||||
"stacked": false,
|
||||
"links": [
|
||||
{
|
||||
"label": "Nav 1",
|
||||
"to": "/docs/index",
|
||||
"icon": "fa fa-user"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "Nav 2",
|
||||
"to": "/docs/api"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "Nav 3",
|
||||
"to": "/docs/renderers"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,51 @@
|
|||
### NestedSelect
|
||||
|
||||
树形结构选择框。
|
||||
|
||||
- `type` 请设置成 `nested-select`
|
||||
- `options` 类似于 [select](#select) 中 `options`, 并且支持通过 `children` 无限嵌套。
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#tree)
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- `joinValues` 默认为 `true`
|
||||
- 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。
|
||||
- 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="300" scope="form-item"
|
||||
{
|
||||
"type": "nested-select",
|
||||
"name": "nestedSelect",
|
||||
"label": "级联选择器",
|
||||
"size": "sm",
|
||||
"options": [
|
||||
{
|
||||
"label": "A",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "B",
|
||||
"value": "b",
|
||||
"children": [
|
||||
{
|
||||
"label": "B-1",
|
||||
"value": "b-1"
|
||||
},
|
||||
{
|
||||
"label": "B-2",
|
||||
"value": "b-2"
|
||||
},
|
||||
{
|
||||
"label": "B-3",
|
||||
"value": "b-3"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "C",
|
||||
"value": "c"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,20 @@
|
|||
### Number
|
||||
|
||||
数字输入框。
|
||||
|
||||
- `type` 请设置成 `number`
|
||||
- `min` 最小值
|
||||
- `step` 步长
|
||||
- `max` 最大值
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "number",
|
||||
"name": "text",
|
||||
"label": "数字",
|
||||
"min": 1,
|
||||
"max": 10,
|
||||
"step": 1
|
||||
}
|
||||
```
|
|
@ -0,0 +1,7 @@
|
|||
### Operation
|
||||
|
||||
表格列中的操作栏,用来放置按钮集合,只能放在 table 的列配置中。
|
||||
|
||||
- `type` 请设置成 `operation`。
|
||||
- `label` 列标题。
|
||||
- `buttons` 按钮集合,请参考[Button](#button) 按钮配置说明。
|
|
@ -0,0 +1,38 @@
|
|||
## Page
|
||||
|
||||
Json 配置最外层是一个 `Page` 渲染器。他主要包含标题,副标题,提示信息等设置,需要注意的是,他有三个容器区域分别是:内容区、边栏区和工具条区,在容器里面放不同的渲染器,就能配置出不同的页面来。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"type": "page",
|
||||
"title": "Title",
|
||||
"subTitle": "SubTitle",
|
||||
"remark": "Remark",
|
||||
"aside": "Aside",
|
||||
"body": "Body",
|
||||
"toolbar": "Toolbar"
|
||||
}
|
||||
```
|
||||
|
||||
> PS: 代码支持及时编辑预览
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ------------------- | ----------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------- |
|
||||
| type | `string` | `"page"` | 指定为 Page 渲染器。 |
|
||||
| title | `string` | | 页面标题 |
|
||||
| subTitle | `string` | | 页面副标题 |
|
||||
| remark | `string` | | 标题附近会出现一个提示图标,鼠标放上去会提示该内容。 |
|
||||
| aside | [Container](#Container) | | 往页面的边栏区域加内容 |
|
||||
| toolbar | [Container](#Container) | | 往页面的右上角加内容,需要注意的是,当有 Title 是,区域在右上角,没有时区域就在顶部 |
|
||||
| body | [Container](#Container) | | 往页面的内容区域加内容 |
|
||||
| className | `string` | | 外层 dom 类名 |
|
||||
| toolbarClassName | `string` | `v-middle wrapper text-right bg-light b-b` | Toolbar dom 类名 |
|
||||
| bodyClassName | `string` | `wrapper` | Body dom 类名 |
|
||||
| asideClassName | `string` | `w page-aside-region bg-auto` | Aside dom 类名 |
|
||||
| headerClassName | `string` | `bg-light b-b wrapper` | Header 区域 dom 类名 |
|
||||
| initApi | [Api](#api) | | Page 用来获取初始数据的 api。返回的数据可以整个 page 级别使用。[详情](/docs/api#page) |
|
||||
| initFetch | `boolean` | `true` | 是否起始拉取 initApi |
|
||||
| initFetchOn | `string` | | 是否起始拉取 initApi, 通过表达式配置 |
|
||||
| interval | `number` | `3000` | 刷新时间(最低 3000) |
|
||||
| silentPolling | `boolean` | `false` | 配置刷新时是否显示加载动画 |
|
||||
| stopAutoRefreshWhen | `string` | `""` | 通过[表达式](#表达式)来配置停止刷新的条件 |
|
|
@ -0,0 +1,48 @@
|
|||
### Panel
|
||||
|
||||
可以把相关信息以盒子的形式展示到一块。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ---------------- | -------------------------- | -------------------------------------- | ------------------- |
|
||||
| type | `string` | `"panel"` | 指定为 Panel 渲染器 |
|
||||
| className | `string` | `"panel-default"` | 外层 Dom 的类名 |
|
||||
| headerClassName | `string` | `"panel-heading"` | header 区域的类名 |
|
||||
| footerClassName | `string` | `"panel-footer bg-light lter wrapper"` | footer 区域的类名 |
|
||||
| actionsClassName | `string` | `"panel-footer"` | actions 区域的类名 |
|
||||
| bodyClassName | `string` | `"panel-body"` | body 区域的类名 |
|
||||
| title | `string` | | 标题 |
|
||||
| header | [Container](#container) | | 顶部容器 |
|
||||
| body | [Container](#container) | | 内容容器 |
|
||||
| footer | [Container](#container) | | 底部容器 |
|
||||
| actions | Array Of [Button](#button) | | 按钮区域 |
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "panel",
|
||||
"title": "Panel Heading",
|
||||
"body": "Panel Body",
|
||||
"actions": [
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Action 1",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "button",
|
||||
"label": "Action 2",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"confirmMode": false,
|
||||
"title": "提示",
|
||||
"body": "对,你刚点击了!"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,12 @@
|
|||
### Password
|
||||
|
||||
密码输入框。
|
||||
|
||||
- `type` 请设置成 `password`
|
||||
- `addOn` 输入框附加组件,比如附带一个提示文字,或者附带一个提交按钮。
|
||||
- `addOn.type` 请选择 `text` 、`button` 或者 `submit`。
|
||||
- `addOn.label` 文字说明
|
||||
- `addOn.xxx` 其他参数请参考按钮配置部分。
|
||||
- `clearable` 在有值的时候是否显示一个删除图标在右侧。
|
||||
- `resetValue` 默认为 `""`, 删除后设置此配置项给定的值。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
|
@ -0,0 +1,244 @@
|
|||
### Picker
|
||||
|
||||
列表选取。可以静态数据,或者通过接口拉取动态数据。
|
||||
|
||||
- `type` 请设置成 `picker`
|
||||
- `multiple` 是否为多选。
|
||||
- `options` 选项配置,类型为数组,成员格式如下。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#select) 另外也可以用 `$xxxx` 来获取当前作用域中的变量。
|
||||
- `joinValues` 默认为 `true`
|
||||
- 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。
|
||||
- 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- `modalMode` 设置 `dialog` 或者 `drawer`,用来配置弹出方式。
|
||||
- `pickerSchema` 默认为 `{mode: 'list', listItem: {title: '${label}'}}`, 即用 List 类型的渲染,来展示列表信息。更多的玩法请参考 [CRUD](#crud) 的配置。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="300" scope="form-item"
|
||||
{
|
||||
"type": "picker",
|
||||
"name": "type4",
|
||||
"joinValues": true,
|
||||
"valueField": "id",
|
||||
"labelField": "engine",
|
||||
"label": "多选",
|
||||
"source": "/api/sample",
|
||||
"size": "lg",
|
||||
"value": "4,5",
|
||||
"multiple": true,
|
||||
"pickerSchema": {
|
||||
"mode": "table",
|
||||
"name": "thelist",
|
||||
"quickSaveApi": "/api/sample/bulkUpdate",
|
||||
"quickSaveItemApi": "/api/sample/$id",
|
||||
"draggable": true,
|
||||
"headerToolbar": {
|
||||
"wrapWithPanel": false,
|
||||
"type": "form",
|
||||
"className": "text-right",
|
||||
"target": "thelist",
|
||||
"mode": "inline",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "keywords",
|
||||
"addOn": {
|
||||
"type": "submit",
|
||||
"label": "搜索",
|
||||
"level": "primary",
|
||||
"icon": "fa fa-search pull-left"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"columns": [
|
||||
{
|
||||
"name": "engine",
|
||||
"label": "Rendering engine",
|
||||
"sortable": true,
|
||||
"searchable": true,
|
||||
"type": "text",
|
||||
"toggled": true
|
||||
},
|
||||
{
|
||||
"name": "browser",
|
||||
"label": "Browser",
|
||||
"sortable": true,
|
||||
"type": "text",
|
||||
"toggled": true
|
||||
},
|
||||
{
|
||||
"name": "platform",
|
||||
"label": "Platform(s)",
|
||||
"sortable": true,
|
||||
"type": "text",
|
||||
"toggled": true
|
||||
},
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Engine version",
|
||||
"quickEdit": true,
|
||||
"type": "text",
|
||||
"toggled": true
|
||||
},
|
||||
{
|
||||
"name": "grade",
|
||||
"label": "CSS grade",
|
||||
"quickEdit": {
|
||||
"mode": "inline",
|
||||
"type": "select",
|
||||
"options": [
|
||||
"A",
|
||||
"B",
|
||||
"C",
|
||||
"D",
|
||||
"X"
|
||||
],
|
||||
"saveImmediately": true
|
||||
},
|
||||
"type": "text",
|
||||
"toggled": true
|
||||
},
|
||||
{
|
||||
"type": "operation",
|
||||
"label": "操作",
|
||||
"width": 100,
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button",
|
||||
"icon": "fa fa-eye",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"title": "查看",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"controls": [
|
||||
{
|
||||
"type": "static",
|
||||
"name": "engine",
|
||||
"label": "Engine"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "browser",
|
||||
"label": "Browser"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "platform",
|
||||
"label": "Platform(s)"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "grade",
|
||||
"label": "CSS grade"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "html",
|
||||
"html": "<p>添加其他 <span>Html 片段</span> 需要支持变量替换(todo).</p>"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"icon": "fa fa-pencil",
|
||||
"actionType": "dialog",
|
||||
"dialog": {
|
||||
"position": "left",
|
||||
"size": "lg",
|
||||
"title": "编辑",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"name": "sample-edit-form",
|
||||
"api": "/api/sample/$id",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "engine",
|
||||
"label": "Engine",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "browser",
|
||||
"label": "Browser",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "platform",
|
||||
"label": "Platform(s)",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "select",
|
||||
"name": "grade",
|
||||
"label": "CSS grade",
|
||||
"options": [
|
||||
"A",
|
||||
"B",
|
||||
"C",
|
||||
"D",
|
||||
"X"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"icon": "fa fa-times text-danger",
|
||||
"actionType": "ajax",
|
||||
"confirmText": "您确认要删除?",
|
||||
"api": "delete:/api/sample/$id"
|
||||
}
|
||||
],
|
||||
"toggled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,12 @@
|
|||
### Plain
|
||||
|
||||
plain, 单纯的文字输出来。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"body": {
|
||||
"type": "plain",
|
||||
"text": "Pure Text <html>"
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,24 @@
|
|||
## QRCode
|
||||
|
||||
二维码显示组件
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| --------------- | -------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
||||
| type | `string` | `"qr-code"` | 指定为 QRCode 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| codeSize | `number` | `128` | 二维码的宽高大小 |
|
||||
| backgroundColor | `string` | `"#fff"` | 二维码背景色 |
|
||||
| foregroundColor | `string` | `"#000"` | 二维码前景色 |
|
||||
| level | `string` | `"L"` | 二维码复杂级别,有('L' 'M' 'Q' 'H')四种 |
|
||||
| value | `string` | `"https://www.baidu.com"` | 扫描二维码后显示的文本,如果要显示某个页面请输入完整 url(`"http://..."`或`"https://..."`开头),支持使用 `${xxx}` 来获取变量 |
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "qr-code",
|
||||
"codeSize": 128,
|
||||
"backgroundColor": "#fff",
|
||||
"foregroundColor": "#000",
|
||||
"level": "L",
|
||||
"value": "https://www.baidu.com"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,45 @@
|
|||
### Radios
|
||||
|
||||
单选框
|
||||
|
||||
- `type` 请设置成 `radios`
|
||||
- `options` 选项配置,类型为数组,成员格式如下。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#select)
|
||||
- `columnsCount` 默认为 `1` 可以配置成一行显示多个。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="330" scope="form"
|
||||
[
|
||||
{
|
||||
"name": "radios",
|
||||
"type": "radios",
|
||||
"label": "Radios",
|
||||
"options": [
|
||||
{
|
||||
"label": "OptionA",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "OptionB",
|
||||
"value": "b"
|
||||
},
|
||||
{
|
||||
"label": "OptionC",
|
||||
"value": "c"
|
||||
},
|
||||
{
|
||||
"label": "OptionD",
|
||||
"value": "d"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "radios",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,19 @@
|
|||
### Range
|
||||
|
||||
范围输入框。
|
||||
|
||||
- `type` 请设置成 `range`
|
||||
- `min` 最小值
|
||||
- `max` 最大值
|
||||
- `step` 步长
|
||||
|
||||
```schema:height="400" scope="form-item"
|
||||
{
|
||||
"type": "range",
|
||||
"name": "range",
|
||||
"label": "数字范围",
|
||||
"min": 0,
|
||||
"max": 20,
|
||||
"step": 2
|
||||
}
|
||||
```
|
|
@ -0,0 +1,16 @@
|
|||
### Repeat
|
||||
|
||||
可用来设置重复频率
|
||||
|
||||
- `type` 请设置成 `repeat`
|
||||
- `options` 默认: `hourly,daily,weekly,monthly`, 可用配置 `secondly,minutely,hourly,daily,weekdays,weekly,monthly,yearly`
|
||||
- `placeholder` 默认为 `不重复`, 当不指定值时的说明。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="300" scope="form-item"
|
||||
{
|
||||
"type": "repeat",
|
||||
"name": "repeat",
|
||||
"label": "重复频率"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,45 @@
|
|||
### Rich-Text
|
||||
|
||||
富文本编辑器
|
||||
|
||||
- `type` 请设置成 `rich-text`
|
||||
- `saveAsUbb` 是否保存为 ubb 格式
|
||||
- `reciever` 默认的图片保存 API `/api/upload/image`
|
||||
- `size` 框的大小,可以设置成 `md` 或者 `lg` 来增大输入框。
|
||||
- `buttons` 默认为
|
||||
|
||||
```js
|
||||
[
|
||||
'paragraphFormat',
|
||||
'quote',
|
||||
'color',
|
||||
'|',
|
||||
'bold',
|
||||
'italic',
|
||||
'underline',
|
||||
'strikeThrough',
|
||||
'|',
|
||||
'formatOL',
|
||||
'formatUL',
|
||||
'align',
|
||||
'|',
|
||||
'insertLink',
|
||||
'insertImage',
|
||||
'insertTable',
|
||||
'|',
|
||||
'undo',
|
||||
'redo',
|
||||
'html',
|
||||
];
|
||||
```
|
||||
|
||||
- `options` Object 类型,给富文本的配置信息。请参考 https://www.froala.com/wysiwyg-editor/docs/options
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="350" scope="form-item"
|
||||
{
|
||||
"type": "rich-text",
|
||||
"name": "html",
|
||||
"label": "Rich Text"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,86 @@
|
|||
### Select
|
||||
|
||||
选项表单。
|
||||
|
||||
- `type` 请设置成 `select`
|
||||
- `options` 选项配置,类型为数组,成员格式如下。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#select) 另外也可以用 `$xxxx` 来获取当前作用域中的变量。
|
||||
- `autoComplete` 跟 source 不同的是,每次用户输入都会去接口获取提示。
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- `joinValues` 默认为 `true`
|
||||
- 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。
|
||||
- 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- `clearable` 默认为 `false`, 当设置为 `true` 时,已选中的选项右侧会有个小 `X` 用来取消设置。
|
||||
- `searchable` 默认为 `false`,表示可以通过输入部分内容检索出选项。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
单选
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "select",
|
||||
"name": "select",
|
||||
"label": "单选",
|
||||
"clearable": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "Option A",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "Option B",
|
||||
"value": "b"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
多选
|
||||
|
||||
```schema:height="280" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "select",
|
||||
"name": "select",
|
||||
"label": "多选",
|
||||
"clearable": true,
|
||||
"multiple": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "OptionA",
|
||||
"value": "a"
|
||||
},
|
||||
{
|
||||
"label": "OptionB",
|
||||
"value": "b"
|
||||
},
|
||||
{
|
||||
"label": "OptionC",
|
||||
"value": "c"
|
||||
},
|
||||
{
|
||||
"label": "OptionD",
|
||||
"value": "d"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,30 @@
|
|||
## Service
|
||||
|
||||
功能型容器,自身不负责展示内容,主要职责在于通过配置的 api 拉取数据,数据可用于子组件。
|
||||
该组件初始化时就会自动拉取一次数据,后续如果需要刷新,请结合 Action 实现,可以把 Action 的 actionType 设置为 reload, target 为该组件的 name 值。
|
||||
同时该组件,还支持 api 数值自动监听,比如 `getData?type=$type` 只要当前环境 type 值发生变化,就会自动重新拉取。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ------------------- | ----------------------- | ----------- | ----------------------------------------- |
|
||||
| type | `string` | `"service"` | 指定为 service 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| body | [Container](#container) | | 内容容器 |
|
||||
| api | [api](#api) | | 数据源 API 地址 |
|
||||
| initFetch | `boolean` | | 是否默认拉取 |
|
||||
| schemaApi | [api](#api) | | 用来获取远程 Schema 的 api |
|
||||
| initFetchSchema | `boolean` | | 是否默认拉取 Schema |
|
||||
| interval | `number` | `3000` | 刷新时间(最低 3000) |
|
||||
| silentPolling | `boolean` | `false` | 配置刷新时是否显示加载动画 |
|
||||
| stopAutoRefreshWhen | `string` | `""` | 通过[表达式](#表达式)来配置停止刷新的条件 |
|
||||
|
||||
```schema:height="200" scope="body"
|
||||
{
|
||||
"type": "service",
|
||||
"api": "/api/mock2/page/initData",
|
||||
"body": {
|
||||
"type": "panel",
|
||||
"title": "$title",
|
||||
"body": "现在是:${date}"
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,46 @@
|
|||
### Static
|
||||
|
||||
纯用来展现数据的。
|
||||
|
||||
- `type` 请设置成 `static`
|
||||
- `name` 变量名。
|
||||
- `value` 值,可以通过它设置默认值。
|
||||
- `label` 描述标题,当表单为水平布局时,左边即便是不设置 label 为了保持对齐也会留空,如果想要去掉空白,请设置成 `false`。
|
||||
- `description` 描述内容。
|
||||
- `placeholder` 占位内容,默认 `-`。
|
||||
- `inline` 是否为 inline 模式。
|
||||
- `className` 表单最外层类名。
|
||||
- `visible` 是否可见。
|
||||
- `visibleOn` 通过[表达式](#表达式)来配置当前表单项是否显示。
|
||||
- `hidden` 是否隐藏,不要跟 `visible` `visibleOn` 同时配置
|
||||
- `hiddenOn` 通过[表达式](#表达式)来配置当前表单项是否隐藏。
|
||||
- `inputClassName` 表单控制器类名。
|
||||
- `labelClassName` label 的类名。
|
||||
- `tpl` 如果想一次展示多条数据,可以考虑用 `tpl`,模板引擎是 lodash template,同时你还可以简单用 `$` 取值。 具体请查看 [tpl](#tpl)
|
||||
|
||||
```schema:height="250" scope="form-item"
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "Label",
|
||||
"value": "A"
|
||||
}
|
||||
```
|
||||
|
||||
### Static-XXX
|
||||
|
||||
- `type` 请设置成 `static-tpl`、`static-plain`、`static-json`、`static-date`、`static-datetime`、`static-time`、`static-mapping`、`static-image`、`static-progress`、`static-status`或者`static-switch`
|
||||
|
||||
纯用来展示数据的,用法跟 crud 里面的[Column](#column)一样, 且支持 quickEdit 和 popOver 功能。
|
||||
|
||||
```schema:height="250" scope="form-item"
|
||||
{
|
||||
"type": "static-json",
|
||||
"name": "json",
|
||||
"label": "Label",
|
||||
"value": {
|
||||
"a":"dd",
|
||||
"b":"asdasd"
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,77 @@
|
|||
### SubForm
|
||||
|
||||
formItem 还可以是子表单类型。
|
||||
|
||||
- `type` 请设置成 `form`
|
||||
- `multiple` 默认为 `false` 配置是否为多选模式
|
||||
- `labelField` 当值中存在这个字段,则按钮名称将使用此字段的值来展示。
|
||||
- `btnLabel` 按钮默认名称
|
||||
- `minLength` 限制最小长度。
|
||||
- `maxLength` 限制最大长度。
|
||||
- `addButtonClassName` 新增按钮 CSS 类名 默认:`btn-success btn-sm`。
|
||||
- `editButtonClassName` 修改按钮 CSS 类名 默认:`btn-info btn-addon btn-sm`。
|
||||
- `form` 字表单的配置
|
||||
`title` 标题
|
||||
`controls` 请参考 [Form](#/form) 中的配置说明。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="400" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "form",
|
||||
"name": "form",
|
||||
"label": "子Form",
|
||||
"btnLabel": "设置子表单",
|
||||
"form": {
|
||||
"title": "配置子表单",
|
||||
"controls": [
|
||||
{
|
||||
"name": "a",
|
||||
"label": "A",
|
||||
"type": "text"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "b",
|
||||
"label": "B",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "form",
|
||||
"label": "当前值"
|
||||
},
|
||||
{
|
||||
"type": "form",
|
||||
"name": "form2",
|
||||
"label": "多选",
|
||||
"multiple": true,
|
||||
"maxLength":3,
|
||||
"btnLabel": "设置子表单",
|
||||
"form": {
|
||||
"title": "配置子表单",
|
||||
"controls": [
|
||||
{
|
||||
"name": "a",
|
||||
"label": "A",
|
||||
"type": "text"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "b",
|
||||
"label": "B",
|
||||
"type": "text"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "form2",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,18 @@
|
|||
### Switch
|
||||
|
||||
可选框,和 checkbox 完全等价。
|
||||
|
||||
- `type` 请设置成 `switch`
|
||||
- `option` 选项说明
|
||||
- `trueValue` 默认 `true`
|
||||
- `falseValue` 默认 `false`
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"name": "switch",
|
||||
"type": "switch",
|
||||
"label": "Switch",
|
||||
"option": "开关说明"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,66 @@
|
|||
### Table
|
||||
|
||||
表格展示。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ---------------- | -------------------------- | ------------------------ | ------------------------------------------------------- |
|
||||
| type | `string` | | `"table"` 指定为 table 渲染器 |
|
||||
| title | `string` | | 标题 |
|
||||
| source | `string` | `${items}` | 数据源, 绑定当前环境变量 |
|
||||
| affixHeader | `boolean` | `true` | 是否固定表头 |
|
||||
| columnsTogglable | `auto` 或者 `boolean` | `auto` | 展示列显示开关, 自动即:列数量大于或等于 5 个时自动开启 |
|
||||
| placeholder | string | ‘暂无数据’ | 当没数据的时候的文字提示 |
|
||||
| className | `string` | `panel-default` | 外层 CSS 类名 |
|
||||
| tableClassName | `string` | `table-db table-striped` | 表格 CSS 类名 |
|
||||
| headerClassName | `string` | `crud-table-header` | 顶部外层 CSS 类名 |
|
||||
| footerClassName | `string` | `crud-table-footer` | 底部外层 CSS 类名 |
|
||||
| toolbarClassName | `string` | `crud-table-toolbar` | 工具栏 CSS 类名 |
|
||||
| columns | Array of [Column](#column) | | 用来设置列信息 |
|
||||
|
||||
```schema:height="700" scope="body"
|
||||
{
|
||||
"type": "service",
|
||||
"api": "/api/sample?perPage=5",
|
||||
"body": [
|
||||
{
|
||||
"type": "panel",
|
||||
"title": "简单表格示例1",
|
||||
"body": {
|
||||
"type": "table",
|
||||
"source": "$rows",
|
||||
"columns": [
|
||||
{
|
||||
"name": "engine",
|
||||
"label": "Engine"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Version"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "panel",
|
||||
"title": "简单表格示例2",
|
||||
"body": {
|
||||
"type": "table",
|
||||
"source": "$rows",
|
||||
"columns": [
|
||||
{
|
||||
"name": "engine",
|
||||
"label": "Engine"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Version"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,64 @@
|
|||
## Tasks
|
||||
|
||||
任务操作集合,类似于 orp 上线。
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "tasks",
|
||||
"name": "tasks",
|
||||
"items": [
|
||||
{
|
||||
"label": "hive 任务",
|
||||
"key": "hive",
|
||||
"status": 4,
|
||||
"remark": "查看详情<a target=\"_blank\" href=\"http://www.baidu.com\">日志</a>。"
|
||||
},
|
||||
{
|
||||
"label": "小流量",
|
||||
"key": "partial",
|
||||
"status": 4
|
||||
},
|
||||
{
|
||||
"label": "全量",
|
||||
"key": "full",
|
||||
"status": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| ----------------- | ----------- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| type | `string` | `"tasks"` | 指定为 Tasks 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| tableClassName | `string` | | table Dom 的类名 |
|
||||
| items | `Array` | | 任务列表 |
|
||||
| items[x].label | `string` | | 任务名称 |
|
||||
| items[x].key | `string` | | 任务键值,请唯一区分 |
|
||||
| items[x].remark | `string` | | 当前任务状态,支持 html |
|
||||
| items[x].status | `string` | | 任务状态: 0: 初始状态,不可操作。1: 就绪,可操作状态。2: 进行中,还没有结束。3:有错误,不可重试。4: 已正常结束。5:有错误,且可以重试。 |
|
||||
| checkApi | [api](#api) | | 返回任务列表,返回的数据请参考 items。 |
|
||||
| submitApi | [api](#api) | | 提交任务使用的 API |
|
||||
| reSubmitApi | [api](#api) | | 如果任务失败,且可以重试,提交的时候会使用此 API |
|
||||
| interval | `number` | `3000` | 当有任务进行中,会每隔一段时间再次检测,而时间间隔就是通过此项配置,默认 3s。 |
|
||||
| taskNameLabel | `string` | 任务名称 | 任务名称列说明 |
|
||||
| operationLabel | `string` | 操作 | 操作列说明 |
|
||||
| statusLabel | `string` | 状态 | 状态列说明 |
|
||||
| remarkLabel | `string` | 备注 | 备注列说明 |
|
||||
| btnText | `string` | 上线 | 操作按钮文字 |
|
||||
| retryBtnText | `string` | 重试 | 重试操作按钮文字 |
|
||||
| btnClassName | `string` | `btn-sm btn-default` | 配置容器按钮 className |
|
||||
| retryBtnClassName | `string` | `btn-sm btn-danger` | 配置容器重试按钮 className |
|
||||
| statusLabelMap | `array` | `["label-warning", "label-info", "label-success", "label-danger", "label-default", "label-danger"]` | 状态显示对应的类名配置 |
|
||||
| statusTextMap | `array` | `["未开始", "就绪", "进行中", "出错", "已完成", "出错"]` | 状态显示对应的文字显示配置 |
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
[
|
||||
{
|
||||
"type": "tasks",
|
||||
"name": "tasks",
|
||||
"checkApi": "/api/mock2/task"
|
||||
},
|
||||
|
||||
"为了演示,目前获取的状态都是随机出现的。"]
|
||||
```
|
|
@ -0,0 +1,48 @@
|
|||
### Text
|
||||
|
||||
普通的文本输入框。
|
||||
|
||||
- `type` 请设置成 `text`
|
||||
- `addOn` 输入框附加组件,比如附带一个提示文字,或者附带一个提交按钮。
|
||||
- `addOn.type` 请选择 `text` 、`button` 或者 `submit`。
|
||||
- `addOn.label` 文字说明
|
||||
- `addOn.xxx` 其他参数请参考按钮配置部分。
|
||||
- `clearable` 在有值的时候是否显示一个删除图标在右侧。
|
||||
- `resetValue` 默认为 `""`, 删除后设置此配置项给定的值。
|
||||
- `options` 可选,选项配置,类型为数组,成员格式如下,配置后用户输入内容时会作为选项提示辅助输入。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` 通过 options 只能配置静态数据,如果设置了 source 则会从接口拉取,实现动态效果。
|
||||
- `autoComplete` 跟 source 不同的是,每次用户输入都会去接口获取提示。
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text",
|
||||
"label": "文本"
|
||||
}
|
||||
```
|
||||
|
||||
带提示功能
|
||||
|
||||
```schema:height="240" scope="form-item"
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text",
|
||||
"label": "文本",
|
||||
"clearable": true,
|
||||
"addOn": {
|
||||
"type": "submit",
|
||||
"icon": "fa fa-search",
|
||||
"level": "primary"
|
||||
},
|
||||
"options": [
|
||||
"wangzhaojun",
|
||||
"libai",
|
||||
"luna",
|
||||
"zhongkui"
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,14 @@
|
|||
### Textarea
|
||||
|
||||
多行文本输入框。
|
||||
|
||||
- `type` 请设置成 `textarea`
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "textarea",
|
||||
"name": "text",
|
||||
"label": "多行文本"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,35 @@
|
|||
### Time
|
||||
|
||||
时间类型。
|
||||
|
||||
- `type` 请设置成 `time`
|
||||
- `format` 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment.
|
||||
- `inputFormat` 默认 `HH:mm` 用来配置显示的时间格式。
|
||||
- `placeholder` 默认 `请选择日期`
|
||||
- `timeConstraints` 请参考: https://github.com/YouCanBookMe/react-datetime
|
||||
- `value` 这里面 value 需要特殊说明一下,因为支持相对值。如:
|
||||
- `-2mins` 2 分钟前
|
||||
- `+2days` 2 天后
|
||||
- `-10week` 十周前
|
||||
- `minTime` 限制最小时间,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
- `maxTime` 限制最大时间,可用 `${xxx}` 取值,或者输入相对时间,或者时间戳。如:`${start}`、`+3days`、`+3days+2hours`或者 `${start|default:-2days}+3days`
|
||||
|
||||
可用单位: `min`、`hour`、`day`、`week`、`month`、`year`。所有单位支持复数形式。
|
||||
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="250" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "time",
|
||||
"name": "select",
|
||||
"label": "日期"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "static",
|
||||
"name": "select",
|
||||
"label": "当前值"
|
||||
}
|
||||
]
|
||||
```
|
|
@ -0,0 +1,90 @@
|
|||
### Tpl
|
||||
|
||||
tpl 类型的渲染器支持用 JS 模板引擎来组织输出,采用的 lodash 的 [template](https://lodash.com/docs/4.15.0#template),关于语法部分,请前往 lodash 文档页面。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"data": {
|
||||
"user": "no one"
|
||||
},
|
||||
"body": {
|
||||
"type": "tpl",
|
||||
"tpl": "User: <%= data.user%>"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
可用 js 方法。
|
||||
|
||||
- `formatDate(value, format='LLL', inputFormat='')` 格式化时间格式,关于 format 请前往 [moment](http://momentjs.com/) 文档页面。
|
||||
- `formatTimeStamp(value, format='LLL')` 格式化时间戳为字符串。
|
||||
- `formatNumber(number)` 格式化数字格式,加上千分位。
|
||||
- `countDown(value)` 倒计时,显示离指定时间还剩下多少天,只支持时间戳。
|
||||
- 下面 filters 中的方法也可以使用如: `<%= date(data.xxx, 'YYYY-MM-DD')%>`
|
||||
- 可以联系我们添加更多公用方法。
|
||||
|
||||
如:
|
||||
|
||||
```json
|
||||
{
|
||||
"data": {
|
||||
"user": "no one"
|
||||
},
|
||||
"body": {
|
||||
"type": "tpl",
|
||||
"tpl": "User: <%= formatDate(data.time, 'YYYY-MM-DD') %>"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
如果只想简单取下变量,可以用 `$xxx` 或者 `${xxx}`。同时如果不指定类型,默认就是 `tpl`, 所以以上示例可以简化为。
|
||||
|
||||
> 取值支持多级,如果层级比较深可以用 `.` 来分割如: `${xx.xxx.xx}`
|
||||
> 另外 `$&` 表示直接获取当前的 `data`。
|
||||
|
||||
```schema:height="200"
|
||||
{
|
||||
"data": {
|
||||
"user": "no one"
|
||||
},
|
||||
"body": "User: $user"
|
||||
}
|
||||
```
|
||||
|
||||
通过 `$xxx` 取到的值,默认是不做任何处理,如果希望把 html 转义了的,请使用:`${xxx | html}`。
|
||||
|
||||
从上面的语法可以看出来,取值时是支持指定 filter 的,那么有哪些 filter 呢?
|
||||
|
||||
- `html` 转义 html 如:`${xxx|html}`。
|
||||
- `json` json stringify。
|
||||
- `raw` 表示不转换, 原样输出。
|
||||
- `date` 做日期转换如: `${xxx | date:YYYY-MM-DD}`
|
||||
- `number` 自动给数字加千分位。`${xxx | number}` `9999` => `9,999`
|
||||
- `trim` 把前后多余的空格去掉。
|
||||
- `percent` 格式化成百分比。`${xxx | percent}` `0.8232343` => `82.32%`
|
||||
- `round` 四舍五入取整。
|
||||
- `truncate` 切除, 当超出 200 个字符时,后面的部分直接显示 ...。 `${desc | truncate:500:...}`
|
||||
- `url_encode` 做 url encode 转换。
|
||||
- `url_decode` 做 url decode 转换。
|
||||
- `default` 当值为空时,显示其他值代替。 `${xxx | default:-}` 当为空时显示 `-`
|
||||
- `join` 当值是 array 时,可以把内容连起来。\${xxx | join:,}
|
||||
- `first` 获取数组的第一个成员。
|
||||
- `last` 获取数组的最后一个成员。
|
||||
- `pick` 如果是对象则从当前值中再次查找值如: `${xxx|pick:yyy}` 等价于 `${xxx.yyy}`。如果是数组,则做 map 操作,操作完后还是数组,不过成员已经变成了你选择的东西。
|
||||
- `ubb2html` 我想你应该不需要,贴吧定制的 ubb 格式。
|
||||
- `html2ubb` 我想你应该不需要,贴吧定制的 ubb 格式。
|
||||
- `split` 可以将字符传通过分隔符分离成数组,默认分隔符为 `,` 如: `${ids|split|last}` 即取一段用逗号分割的数值中的最后一个。
|
||||
- `nth` 取数组中的第 n 个成员。如: `${ids|split|nth:1}`
|
||||
- `str2date` 请参考 [date](#date) 中日期默认值的设置格式。
|
||||
- `duration` 格式化成时间端如:`2` -=> `2秒` `67` => `1分7秒` `1111111` => `13天21时39分31秒`
|
||||
- `asArray` 将数据包成数组如: `a` => `[a]`
|
||||
- `lowerCase` 转小写
|
||||
- `upperCase` 转大写
|
||||
- `base64Encode` base64 转码
|
||||
- `base64Decode` base64 解码
|
||||
|
||||
组合使用。
|
||||
|
||||
- `${&|json|html}` 把当前可用的数据全部打印出来。\$& 取当前值,json 做 json stringify,然后 html 转义。
|
||||
- `${rows:first|pick:id}` 把 rows 中的第一条数据中的 id 取到。
|
||||
- `${rows|pick:id|join:,}`
|
|
@ -0,0 +1,52 @@
|
|||
### Tree
|
||||
|
||||
树形结构输入框。
|
||||
|
||||
- `type` 请设置成 `tree`
|
||||
- `options` 类似于 [select](#select) 中 `options`, 并且支持通过 `children` 无限嵌套。
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#tree)
|
||||
- `hideRoot` 默认是会显示一个顶级,如果不想显示,请设置 `false`
|
||||
- `rootLabel` 默认为 `顶级`,当 hideRoot 不为 `false` 时有用,用来设置顶级节点的文字。
|
||||
- `showIcon` 是否显示投标,默认为 `true`。
|
||||
- `showRadio` 是否显示单选按钮,multiple 为 `false` 是有效。
|
||||
- `cascade` 设置成 `true` 时当选中父节点时不自动选择子节点。
|
||||
- `withChildren` 是指成 `true`,选中父节点时,值里面将包含子节点的值,否则只会保留父节点的值。
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- `joinValues` 默认为 `true`
|
||||
- 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。
|
||||
- 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="300" scope="form-item"
|
||||
{
|
||||
"type": "tree",
|
||||
"name": "tree",
|
||||
"label": "Tree",
|
||||
"options": [
|
||||
{
|
||||
"label": "Folder A",
|
||||
"value": 1,
|
||||
"children": [
|
||||
{
|
||||
"label": "file A",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"label": "file B",
|
||||
"value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "file C",
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"label": "file D",
|
||||
"value": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,52 @@
|
|||
### TreeSelect
|
||||
|
||||
树形结构选择框。
|
||||
|
||||
- `type` 请设置成 `tree-select`
|
||||
- `options` 类似于 [select](#select) 中 `options`, 并且支持通过 `children` 无限嵌套。
|
||||
- `source` Api 地址,如果选项不固定,可以通过配置 `source` 动态拉取。[详情](/docs/api#tree)
|
||||
- `hideRoot` 默认是会显示一个顶级,如果不想显示,请设置 `false`
|
||||
- `rootLabel` 默认为 `顶级`,当 hideRoot 不为 `false` 时有用,用来设置顶级节点的文字。
|
||||
- `showIcon` 是否显示投标,默认为 `true`。
|
||||
- `showRadio` 是否显示单选按钮,multiple 为 `false` 是有效。
|
||||
- `cascade` 设置成 `true` 时当选中父节点时不自动选择子节点。
|
||||
- `withChildren` 是指成 `true`,选中父节点时,值里面将包含子节点的值,否则只会保留父节点的值。
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- `joinValues` 默认为 `true`
|
||||
- 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。
|
||||
- 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。
|
||||
- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。
|
||||
- `delimiter` 默认为 `,`
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="300" scope="form-item"
|
||||
{
|
||||
"type": "tree-select",
|
||||
"name": "tree",
|
||||
"label": "Tree",
|
||||
"options": [
|
||||
{
|
||||
"label": "Folder A",
|
||||
"value": 1,
|
||||
"children": [
|
||||
{
|
||||
"label": "file A",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"label": "file B",
|
||||
"value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "file C",
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"label": "file D",
|
||||
"value": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,27 @@
|
|||
### Url
|
||||
|
||||
URL 输入框。
|
||||
|
||||
- `type` 请设置成 `url`
|
||||
- `addOn` 输入框附加组件,比如附带一个提示文字,或者附带一个提交按钮。
|
||||
- `addOn.type` 请选择 `text` 、`button` 或者 `submit`。
|
||||
- `addOn.label` 文字说明
|
||||
- `addOn.xxx` 其他参数请参考按钮配置部分。
|
||||
- `clearable` 在有值的时候是否显示一个删除图标在右侧。
|
||||
- `resetValue` 默认为 `""`, 删除后设置此配置项给定的值。
|
||||
- `options` 可选,选项配置,类型为数组,成员格式如下,配置后用户输入内容时会作为选项提示辅助输入。
|
||||
- `label` 文字
|
||||
- `value` 值
|
||||
- `source` 通过 options 只能配置静态数据,如果设置了 source 则会从接口拉取,实现动态效果。
|
||||
- `autoComplete` 跟 source 不同的是,每次用户输入都会去接口获取提示。
|
||||
- `multiple` 默认为 `false`, 设置成 `true` 表示可多选。
|
||||
- 更多配置请参考 [FormItem](#FormItem)
|
||||
|
||||
```schema:height="200" scope="form-item"
|
||||
{
|
||||
"type": "url",
|
||||
"name": "text",
|
||||
"validateOnChange": true,
|
||||
"label": "Url"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,21 @@
|
|||
### Video
|
||||
|
||||
视频播放器。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| --------- | --------- | --------- | ------------------- |
|
||||
| type | `string` | `"video"` | 指定为 video 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| src | `string` | | 视频地址 |
|
||||
| poster | `string` | | 视频封面地址 |
|
||||
| muted | `boolean` | | 是否静音 |
|
||||
| autoPlay | `boolean` | | 是否自动播放 |
|
||||
|
||||
```schema:height="500" scope="body"
|
||||
{
|
||||
"type": "video",
|
||||
"autoPlay": false,
|
||||
"src": "raw:https://media.w3.org/2010/05/sintel/trailer_hd.mp4",
|
||||
"poster": "raw:https://video-react.js.org/assets/poster.png"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,75 @@
|
|||
### Wizard
|
||||
|
||||
表单向导,能够配置多个步骤引导用户一步一步完成表单提交。
|
||||
|
||||
- `type` 请设置 `wizard`。
|
||||
- `mode` 展示模式,请选择:`horizontal` 或者 `vertical`,默认为 `horizontal`。
|
||||
- `api` 最后一步保存的接口。
|
||||
- `initApi` 初始化数据接口。
|
||||
- `initFetch` 初始是否拉取数据。
|
||||
- `initFetchOn` 初始是否拉取数据,通过表达式来配置。
|
||||
- `actionPrevLabel` 上一步按钮名称,默认:`上一步`。
|
||||
- `actionNextLabel` 下一步按钮名称`下一步`。
|
||||
- `actionNextSaveLabel` 保存并下一步按钮名称,默认:`保存并下一步`。
|
||||
- `actionFinishLabel` 完成按钮名称,默认:`完成`。
|
||||
- `className` 外层 CSS 类名。
|
||||
- `actionClassName` 按钮 CSS 类名,默认:`btn-sm btn-default`。
|
||||
- `reload` 操作完后刷新目标对象。请填写目标组件设置的 name 值,如果填写为 `window` 则让当前页面整体刷新。
|
||||
- `redirect` 操作完后跳转。
|
||||
- `target` 可以把数据提交给别的组件而不是自己保存。请填写目标组件设置的 name 值,如果填写为 `window` 则把数据同步到地址栏上,同时依赖这些数据的组件会自动重新刷新。
|
||||
- `steps` 数组,配置步骤信息。
|
||||
- `steps[x].title` 步骤标题。
|
||||
- `steps[x].mode` 展示默认,跟 [Form](#form) 中的模式一样,选择: `normal`、`horizontal`或者`inline`。
|
||||
- `steps[x].horizontal` 当为水平模式时,用来控制左右占比。
|
||||
- `steps[x].horizontal.label` 左边 label 的宽度占比。
|
||||
- `steps[x].horizontal.right` 右边控制器的宽度占比。
|
||||
- `steps[x].horizontal.offset` 当没有设置 label 时,右边控制器的偏移量。
|
||||
- `steps[x].api` 当前步骤保存接口,可以不配置。
|
||||
- `steps[x].initApi` 当前步骤数据初始化接口。
|
||||
- `steps[x].initFetch` 当前步骤数据初始化接口是否初始拉取。
|
||||
- `steps[x].initFetchOn` 当前步骤数据初始化接口是否初始拉取,用表达式来决定。
|
||||
- `steps[x].controls` 当前步骤的表单项集合,请参考 [FormItem](#formitem)。
|
||||
|
||||
```schema:height="400" scope="body"
|
||||
{
|
||||
"type": "wizard",
|
||||
"api": "/api/mock2/form/saveForm?waitSeconds=2",
|
||||
"mode": "vertical",
|
||||
"steps": [
|
||||
{
|
||||
"title": "第一步",
|
||||
"controls": [
|
||||
{
|
||||
"name": "website",
|
||||
"label": "网址",
|
||||
"type": "url",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "email",
|
||||
"label": "邮箱",
|
||||
"type": "email",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Step 2",
|
||||
"controls": [
|
||||
{
|
||||
"name": "email2",
|
||||
"label": "邮箱",
|
||||
"type": "email",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Step 3",
|
||||
"controls": [
|
||||
"这是最后一步了"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
|
@ -0,0 +1,18 @@
|
|||
### Wrapper
|
||||
|
||||
简单的一个容器。
|
||||
|
||||
| 属性名 | 类型 | 默认值 | 说明 |
|
||||
| --------- | ----------------------- | ----------- | ---------------------------- |
|
||||
| type | `string` | `"wrapper"` | 指定为 Wrapper 渲染器 |
|
||||
| className | `string` | | 外层 Dom 的类名 |
|
||||
| size | `string` | | 支持: `xs`、`sm`、`md`和`lg` |
|
||||
| body | [Container](#container) | | 内容容器 |
|
||||
|
||||
```schema:height="200" scope="body"
|
||||
{
|
||||
"type": "wrapper",
|
||||
"body": "Wrapped Body",
|
||||
"className": "bg-white wrapper"
|
||||
}
|
||||
```
|
|
@ -0,0 +1,13 @@
|
|||
## iFrame
|
||||
|
||||
如果需要内嵌外部站点,可用 iframe 来实现。
|
||||
|
||||
```schema:height="300" scope="body"
|
||||
{
|
||||
"type": "iframe",
|
||||
"src": "raw:http://www.baidu.com",
|
||||
"style": {
|
||||
"height": 260
|
||||
}
|
||||
}
|
||||
```
|
|
@ -0,0 +1,182 @@
|
|||
## 类型说明
|
||||
|
||||
### Container
|
||||
|
||||
Container 不是一个特定的渲染器,而是 AMis 中一个特殊类型,它是以下类型的任何一种。
|
||||
|
||||
- `String` 字符串,可以包含 `html` 片段。
|
||||
- `Object` 指定一个渲染器如: `{"type": "button", "label": "按钮"}`
|
||||
- `Array` 还可以是一个数组,数组的成员可以就是一个 `Container`.
|
||||
|
||||
示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"container": "普通一段字符串"
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"container": {
|
||||
"type": "button",
|
||||
"label": "按钮"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"container": [
|
||||
"普通一段字符串",
|
||||
|
||||
{
|
||||
"type": "button",
|
||||
"label": "按钮"
|
||||
},
|
||||
|
||||
["普通一段字符串", "普通一段字符串"]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### API
|
||||
|
||||
Api 类型可以是字符串或者对象。API 中可以直接设置数据发送结构,注意看示例。
|
||||
|
||||
- `String` `[<type>:]<url>`
|
||||
|
||||
- `<type>` 可以是: `get`、`post`、`put`、`delete`或者`raw`
|
||||
- `<url>` 即 api 地址,支持通过 `$key` 取变量。
|
||||
|
||||
如:
|
||||
|
||||
* `get:http://imis.tieba.baidu.com/yule/list?start=$startTime&end=$endTime`
|
||||
* `get:http://imis.tieba.baidu.com/yule/list?$$` 拿所有可用数据。
|
||||
* `get:http://imis.tieba.baidu.com/yule/list?data=$$` 拿所有可用数据。
|
||||
|
||||
- `Object`
|
||||
|
||||
- `url` api 地址
|
||||
- `method` 可以是:`get`、`post`、`put`或者`delete`
|
||||
- `data` 数据体
|
||||
- `headers` 头部,配置方式和 data 配置一样,下面不详讲。如果要使用,请前往群组系统配置中,添加允许。
|
||||
|
||||
如:
|
||||
|
||||
取某个变量。
|
||||
|
||||
```json
|
||||
{
|
||||
"url": "http://imis.tieba.baidu.com/yule/list",
|
||||
"method": "post",
|
||||
"data": {
|
||||
"start": "$startTime"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
直接将所有可用数据映射给 all 变量。
|
||||
|
||||
```json
|
||||
{
|
||||
"url": "http://imis.tieba.baidu.com/yule/list",
|
||||
"method": "post",
|
||||
"data": {
|
||||
"all": "$$"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
正常如果指定了 data,则只会发送 data 指定的数据了,如果想要保留原有数据,只定制修改一部分。
|
||||
|
||||
```json
|
||||
{
|
||||
"url": "http://imis.tieba.baidu.com/yule/list",
|
||||
"method": "post",
|
||||
"data": {
|
||||
"&": "$$", // 原来的数据先 copy 过来。
|
||||
"a": "123",
|
||||
"b": "${b}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
如果目标变量是数组,而发送的数据,有不希望把成员全部发送过去,可以这样配置。
|
||||
|
||||
```json
|
||||
{
|
||||
"url": "http://imis.tieba.baidu.com/yule/list",
|
||||
"method": "post",
|
||||
"data": {
|
||||
"all": {
|
||||
"$rows": {
|
||||
"a": "$a",
|
||||
"b": "$b"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
如果 \$rows 的结构为 `[{a: 1, b: 2, c: 3, d: 4}, {a: 1, b: 2, c: 3, d: 4}]`, 经过上述映射后,实际发送的数据为 `{all: [{a: 1, b:2}, {a: 1, b: 2}]}`
|
||||
|
||||
** 注意 **
|
||||
|
||||
AMis 所有值为 url 的如: `"http://www.baidu.com"` 都会被替换成 proxy 代理,如果不希望这么做,请明确指示如: `"raw:http://www.baidu.com"`。还有为了安全,AMis 默认只能转发公司内部 API 接口,如果您的接口在外网环境,也请明确指示如:`"external:http://www.baidu.com"`
|
||||
|
||||
### 表达式
|
||||
|
||||
配置项中,所有 `boolean` 类型的配置,都可以用 JS 表达式来配置。所有`boolean` 配置项,后面加个 `On` 则是表达式配置方式,可以用 js 语法来根据当前模型中的数据来决定是否启用。
|
||||
如:[FormItem](#FormItem) 中的 `disabledOn`、`hiddenOn`、`visibleOn`、[CRUD](#CRUD) 中的 `itemDraggableOn` 等等。
|
||||
|
||||
```schema:height="300" scope="form"
|
||||
[
|
||||
{
|
||||
"type": "radios",
|
||||
"name": "foo",
|
||||
"inline": true,
|
||||
"label": " ",
|
||||
"options": [
|
||||
{
|
||||
"label": "类型1",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"label": "类型2",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"label": "类型3",
|
||||
"value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text",
|
||||
"placeholder": "类型1 可见",
|
||||
"visibleOn": "data.foo == 1"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "text",
|
||||
"name": "text2",
|
||||
"placeholder": "类型2 不可点",
|
||||
"disabledOn": "data.foo == 2"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "button",
|
||||
"label": "类型三不能提交",
|
||||
"level": "primary",
|
||||
"disabledOn": "data.foo == 3"
|
||||
}
|
||||
|
||||
]
|
||||
```
|
||||
|
||||
为了能加入权限控制,表达是中允许可以用 `acl.can` 方法来检测当前用户是否拥有某个权限。
|
||||
如: `{"disabledOn": "!can('some-resource')"}`。权限能力部分,请前往[能力管理](/docs/manual#%E8%83%BD%E5%8A%9B%E7%AE%A1%E7%90%86),
|
||||
权限配置请前往[权限配置](/docs/manual#%E6%9D%83%E9%99%90%E9%85%8D%E7%BD%AE)管理。
|
|
@ -0,0 +1,87 @@
|
|||
## AMis 渲染器手册
|
||||
|
||||
- [Page](./renderers/Page.md): JSON 配置最外层的 Page 渲染器
|
||||
- [Form](./renderers/Form.md): 表单渲染器
|
||||
|
||||
- [FormItem](./renderers/FormItem.md): Form 中主要是由各种 FormItem 组成
|
||||
- [FormItem-List](./renderers/FormItem-List.md): 简单的列表选择框
|
||||
- [FormItem-Button-Group](./renderers/FormItem-Button-Group.md): 按钮集合
|
||||
- [FormItem-Service](./renderers/FormItem-Service.md): 动态配置,配置项由接口决定
|
||||
- [FormItem-Tabs](./renderers/FormItem-Tabs.md): 多个输入框通过选项卡来分组
|
||||
- [FormItem-Table](./renderers/FormItem-Table.md): 可以用来展示数组类型的数据
|
||||
- [FormItem-HBox](./renderers/FormItem-HBox.md): 支持 form 内部再用 HBox 布局
|
||||
- [FormItem-Grid](./renderers/FormItem-Grid.md): 支持 form 内部再用 grid 布局
|
||||
- [FormItem-Panel](./renderers/FormItem-Panel.md): 还是为了布局,可以把一部分 FormItem 合并到一个 panel 里面单独展示
|
||||
- [Hidden](./renderers/Hidden.md): 隐藏字段类型
|
||||
- [Text](./renderers/Text.md): 普通的文本输入框
|
||||
- [Textarea](./renderers/Textarea.md): 多行文本输入框
|
||||
- [Url](./renderers/Url.md): URL 输入框
|
||||
- [Email](./renderers/Email.md): Email 输入框
|
||||
- [Password](./renderers/Password.md): 密码输入框
|
||||
- [Number](./renderers/Number.md): 数字输入框
|
||||
- [Divider](./renderers/Divider.md): 分割线
|
||||
- [Select](./renderers/Select.md): 选项表单
|
||||
- [Chained-Select](./renderers/Chained-Select.md): 无限级别下拉
|
||||
- [Checkbox](./renderers/Checkbox.md): 勾选框
|
||||
- [Checkboxes](./renderers/Checkboxes.md): 复选框
|
||||
- [Radios](./renderers/Radios.md): 单选框
|
||||
- [Switch](./renderers/Switch.md): 可选框,和 checkbox 完全等价
|
||||
- [Date](./renderers/Date.md): 日期类型
|
||||
- [Datetime](./renderers/Datetime.md): 日期时间类型
|
||||
- [Time](./renderers/Time.md): 时间类型
|
||||
- [Date-Range](./renderers/Date-Range.md): 日期范围类型
|
||||
- [Color](./renderers/Color.md): 颜色选择器
|
||||
- [Range](./renderers/Range.md): 范围输入框
|
||||
- [Image](./renderers/Image.md): 图片格式输
|
||||
- [File](./renderers/File.md): 文件输入
|
||||
- [Matrix](./renderers/Matrix.md): 矩阵类型的输入框
|
||||
- [Tree](./renderers/Tree.md): 树形结构输入框
|
||||
- [TreeSelect](./renderers/TreeSelect.md): 树形结构选择框
|
||||
- [NestedSelect](./renderers/NestedSelect.md): 树形结构选择框
|
||||
- [Button](./renderers/Button.md): 按钮, 包含 button、submit 和 reset
|
||||
- [Button-Toolbar](./renderers/Button-Toolbar.md): 让多个按钮在一起放置
|
||||
- [Combo](./renderers/Combo.md): 组合模式
|
||||
- [Array](./renderers/Array.md): 数组输入框配置
|
||||
- [SubForm](./renderers/SubForm.md): formItem 还可以是子表单类型
|
||||
- [Picker](./renderers/Picker.md): 列表选取
|
||||
- [Formula](./renderers/Formula.md): 公式类型
|
||||
- [Group](./renderers/Group.md): 表单项集合
|
||||
- [FieldSet](./renderers/FieldSet.md): 多个输入框可以通过 fieldSet 捆绑在一起
|
||||
- [Repeat](./renderers/Repeat.md): 可用来设置重复频率
|
||||
- [Rich-Text](./renderers/Rich-Text.md): 富文本编辑器
|
||||
- [Editor](./renderers/Editor.md): 编辑器
|
||||
- [Static](./renderers/Static.md): 纯用来展现数据的
|
||||
|
||||
- [Wizard](./renderers/Wizard.md): 表单向导
|
||||
- [Tpl](./renderers/Tpl.md): 支持用 JS 模板引擎来组织输出
|
||||
- [Plain](./renderers/Plain.md): 单纯的文字输出
|
||||
- [Html](./renderers/Html.md): html, 当需要用到变量时,请用 Tpl 代替
|
||||
- [Action](./renderers/Action.md): 一种特殊的渲染器,它本身是一个按钮,同时它能触发事件
|
||||
- [Dialog](./renderers/Dialog.md): Dialog 由 Action 触发。他是一个类似于 Page 的容器模型
|
||||
- [Drawer](./renderers/Drawer.md): Drawer 由 Action 触发
|
||||
- [CRUD](./renderers/CRUD.md): 增删改查模型,主要用来展现列表
|
||||
- [CRUD-Table](./renderers/CRUD-Table.md): 请参考 Table
|
||||
- [CRUD-Cards](./renderers/CRUD-Cards.md): 请参考 Cards
|
||||
- [CRUD-List](./renderers/CRUD-List.md): 请参考 List
|
||||
- [Panel](./renderers/Panel.md): 可以把相关信息以盒子的形式展示到一块。
|
||||
- [Wrapper](./renderers/Wrapper.md): 简单的一个容器。
|
||||
- [Service](./renderers/Service.md): 功能型容器,自身不负责展示内容,主要职责在于通过配置的 api 拉取数据
|
||||
- [Chart](./renderers/Chart.md): 图表渲染器
|
||||
- [Collapse](./renderers/Collapse.md): 折叠器
|
||||
- [Audio](./renderers/Audio.md): 音频播放器
|
||||
- [Video](./renderers/Video.md): 视频播放器
|
||||
- [Table](./renderers/Table.md): 表格展示
|
||||
- [Column](./renderers/Column.md): 表格中的列配置
|
||||
- [List](./renderers/List.md): 列表展示
|
||||
- [Card](./renderers/Card.md): 卡片的展示形式
|
||||
- [Cards](./renderers/Cards.md): 卡片集合
|
||||
- [Field](./renderers/Field.md): 主要用在 Table 的列配置 Column、List 的内容、Card 卡片的内容和表单的 Static-XXX 中
|
||||
- [Tabs](./renderers/Tabs.md): 标签页
|
||||
- [Grid](./renderers/Grid.md): Grid 布局
|
||||
- [HBox](./renderers/HBox.md): HBox 布局
|
||||
- [Button-Group](./renderers/Button-Group.md): 按钮集合
|
||||
- [iFrame](./renderers/iFrame.md): 如果需要内嵌外部站点,可用 iframe 来实现
|
||||
- [Nav](./renderers/Nav.md): 菜单栏
|
||||
- [Tasks](./renderers/Tasks.md): 任务操作集合,类似于 orp 上线
|
||||
- [QRCode](./renderers/QRCode.md): 二维码显示组件
|
||||
- [类型说明](./renderers/类型说明.md): 类型说明文档
|
Loading…
Reference in New Issue