From 86878db28880480623c3fda41c6b24ea4472ee12 Mon Sep 17 00:00:00 2001 From: catchonme Date: Tue, 28 May 2019 14:09:00 +0800 Subject: [PATCH 1/4] =?UTF-8?q?video=20=E5=A2=9E=E5=8A=A0=E5=80=8D?= =?UTF-8?q?=E9=80=9F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/renderers/Video.md | 1 + src/components/Select.tsx | 3 --- src/renderers/Carousel.tsx | 20 +++++++------------- src/renderers/Video.tsx | 8 +++++++- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/docs/renderers/Video.md b/docs/renderers/Video.md index 254a9c08c..4c3242030 100644 --- a/docs/renderers/Video.md +++ b/docs/renderers/Video.md @@ -10,6 +10,7 @@ | poster | `string` | | 视频封面地址 | | muted | `boolean` | | 是否静音 | | autoPlay | `boolean` | | 是否自动播放 | +| rates | `array` | | 倍数,格式为`[1.0, 1.5, 2.0]`| ```schema:height="500" scope="body" { diff --git a/src/components/Select.tsx b/src/components/Select.tsx index 78e21572d..a3c89cdfd 100644 --- a/src/components/Select.tsx +++ b/src/components/Select.tsx @@ -312,9 +312,6 @@ export class Select extends React.Component { const checkedAll = optionsValues.every(option => selectionValues.indexOf(option) > -1); selection = checkedAll ? [] : options; - this.setState({ - selection: selection - }); onChange(selection); } diff --git a/src/renderers/Carousel.tsx b/src/renderers/Carousel.tsx index eb9ddeb46..4596eb31b 100644 --- a/src/renderers/Carousel.tsx +++ b/src/renderers/Carousel.tsx @@ -34,7 +34,7 @@ export interface CarouselState { } export class Carousel extends React.Component { - wrapperRef: React.RefObject; + wrapperRef: React.RefObject = React.createRef(); intervalTimeout: number; durationTimeout: number; @@ -51,18 +51,12 @@ export class Carousel extends React.Component { placeholder: '' }; - constructor(props:CarouselProps) { - super(props); - - this.state = { - current: 0, - options: this.props.value ? this.props.value : this.props.options ? this.props.options : [], - showArrows: false, - nextAnimation: '' - }; - - this.wrapperRef = React.createRef(); - } + state = { + current: 0, + options: this.props.value ? this.props.value : this.props.options ? this.props.options : [], + showArrows: false, + nextAnimation: '' + }; componentDidMount() { this.prepareAutoSlide(); diff --git a/src/renderers/Video.tsx b/src/renderers/Video.tsx index fb27193ab..c15720669 100644 --- a/src/renderers/Video.tsx +++ b/src/renderers/Video.tsx @@ -5,7 +5,7 @@ /* eslint fecs-indent: [0, "space", 2, 2] */ import * as React from 'react'; -import {Player, Shortcut, BigPlayButton} from 'video-react'; +import {Player, Shortcut, BigPlayButton, ControlBar, PlaybackRateMenuButton} from 'video-react'; import {padArr} from '../utils/helper'; import * as cx from 'classnames'; import {Renderer, RendererProps} from '../factory'; @@ -396,6 +396,7 @@ export default class Video extends React.Component { playerClassName, classPrefix: ns, aspectRatio, + rates } = this.props; let source = this.props.src || (name && data && (data as any)[name]) || (amisConfig && amisConfig.value); @@ -422,6 +423,11 @@ export default class Video extends React.Component { muted={muted} aspectRatio={aspectRatio} > + {rates && rates.length ? ( + + + + ) : null} {sourceNode} From 3d59be2b3b30837b1bbdd607686ad3c68f7ac62c Mon Sep 17 00:00:00 2001 From: catchonme Date: Tue, 28 May 2019 15:27:31 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=20checkboxes=20=E4=B8=AD?= =?UTF-8?q?options=E9=95=BF=E5=BA=A6=E4=B8=8D=E6=98=AFcolumnsCount?= =?UTF-8?q?=E6=95=B4=E6=95=B0=E5=80=8D=E6=97=B6=E6=9C=80=E5=90=8E=E4=B8=80?= =?UTF-8?q?=E5=88=97=E5=B8=83=E5=B1=80=E4=B8=8D=E4=B8=80=E8=87=B4=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderers/Form/Checkboxes.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderers/Form/Checkboxes.tsx b/src/renderers/Form/Checkboxes.tsx index 16dd9bdfc..4ac185b20 100644 --- a/src/renderers/Form/Checkboxes.tsx +++ b/src/renderers/Form/Checkboxes.tsx @@ -82,8 +82,8 @@ export default class CheckboxesControl extends React.Component (
- {group.map((item, index) => ( -
{item}
+ {Array.from({length: columnsCount as number}).map((_, index) => ( +
{group[index]}
))}
)); From d3af4e0f5d8b80085984a76df0685f787b7d30bb Mon Sep 17 00:00:00 2001 From: liaoxuezhi Date: Tue, 28 May 2019 17:30:48 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20options=20=E4=B8=AD?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=20visibleOn=20hiddenOn=20=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/getting_started.md | 2 +- scraper-config.json | 24 ++++++++++++++++++++++++ src/renderers/Form/Options.tsx | 9 ++++++++- src/store/formItem.ts | 18 +++++++++++++----- 4 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 scraper-config.json diff --git a/docs/getting_started.md b/docs/getting_started.md index 8c6288855..e41ce71b5 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -26,7 +26,7 @@ title: 快速开始 简单说明以上配置信息。 - `$schema` 这个字段可以忽略,他是指定当前 JSON 配置是符合指定路径 https://houtai.baidu.com/v2/schemas/page.json 的 JSON SCHEMA 文件描述的。PS: 编辑器就是靠这个描述文件提示的,可以 hover 到字段上看效果。 -- `type` 指定渲染器类型,这里指定的类型为 `page`。 更多渲染器类型可以去[这里面查看](./renderers)。 +- `type` 指定渲染器类型,这里指定的类型为 `page`。 更多渲染器类型可以去[这里面查看](./renderers.md)。 - `title` 从 title 开始就是对应的渲染模型上的属性了。这里用来指定标题内容。 - `subTitle` 副标题. - `remark` 标题上面的提示信息 diff --git a/scraper-config.json b/scraper-config.json new file mode 100644 index 000000000..96c6a2053 --- /dev/null +++ b/scraper-config.json @@ -0,0 +1,24 @@ +{ + "index_name": "gh_pages", + "start_urls": [ + "https://baidu.github.io/amis/#/docs/getting-started", + "https://baidu.github.io/amis/#/docs/advanced", + "https://baidu.github.io/amis/#/docs/renderers", + "https://baidu.github.io/amis/#/docs/sdk", + "https://baidu.github.io/amis/#/docs/dev", + "https://baidu.github.io/amis/#/docs/style" + ], + "js_render": true, + "js_wait": 2, + "use_anchors": true, + "selectors": { + "lvl0": ".markdown-body h1", + "lvl1": ".markdown-body h2", + "lvl2": ".markdown-body h3", + "lvl3": ".markdown-body h4", + "lvl4": ".markdown-body h5", + "text": ".markdown-body p, .markdown-body li" + }, + "min_indexed_level": 0, + "nb_hits": 838 +} \ No newline at end of file diff --git a/src/renderers/Form/Options.tsx b/src/renderers/Form/Options.tsx index 419c17611..05a496e63 100644 --- a/src/renderers/Form/Options.tsx +++ b/src/renderers/Form/Options.tsx @@ -73,6 +73,7 @@ export function registerOptionsControl(config: OptionsConfig) { this.handleToggle = this.handleToggle.bind(this); this.handleToggleAll = this.handleToggleAll.bind(this); this.setOptions = this.setOptions.bind(this); + this.syncOptions = this.syncOptions.bind(this); this.setLoading = this.setLoading.bind(this); this.inputRef = this.inputRef.bind(this); this.reload = this.reload.bind(this); @@ -167,7 +168,7 @@ export function registerOptionsControl(config: OptionsConfig) { // todo 优化 name 变化情况。 } - if (props.value !== nextProps.value) { + if (props.value !== nextProps.value || formItem.expressionsInOptions) { formItem.syncOptions(); } @@ -352,6 +353,11 @@ export function registerOptionsControl(config: OptionsConfig) { formItem && formItem.setOptions(normalizeOptions(options || [])); } + syncOptions() { + const formItem = this.props.formItem as IFormItemStore; + formItem && formItem.syncOptions(); + } + setLoading(value:boolean) { const formItem = this.props.formItem as IFormItemStore; formItem && formItem.setLoading(value); @@ -374,6 +380,7 @@ export function registerOptionsControl(config: OptionsConfig) { loading={formItem ? formItem.loading : false} setLoading={this.setLoading} setOptions={this.setOptions} + syncOptions={this.syncOptions} /> ) } diff --git a/src/store/formItem.ts b/src/store/formItem.ts index 8077dc2be..9ab7ac5ee 100644 --- a/src/store/formItem.ts +++ b/src/store/formItem.ts @@ -68,6 +68,7 @@ export const FormItemStore = types joinValues: true, extractValue: false, options: types.optional(types.array(types.frozen()), []), + expressionsInOptions: false, selectedOptions: types.optional(types.frozen(), []), filteredOptions: types.optional(types.frozen(), []), }) @@ -393,12 +394,18 @@ export const FormItemStore = types const value = self.value; const selected = Array.isArray(value) ? value.map(item=>item && item.hasOwnProperty(self.valueField || 'value') ? item[self.valueField || 'value'] : item) : typeof value === 'string' ? value.split(self.delimiter || ',') : [value && value.hasOwnProperty(self.valueField || 'value') ? value[self.valueField || 'value'] : value]; + + let expressionsInOptions = false; let filteredOptions = self.options - .filter((item:any) => - item.visibleOn ? evalExpression(item.visibleOn, form.data) !== false - : item.hiddenOn ? evalExpression(item.hiddenOn, form.data) !== true - : (item.visible !== false || item.hidden !== true) - ) + .filter((item:any) => { + if (!expressionsInOptions && (item.visibleOn || item.hiddenOn)) { + expressionsInOptions = true; + } + + return item.visibleOn ? evalExpression(item.visibleOn, form.data) !== false + : item.hiddenOn ? evalExpression(item.hiddenOn, form.data) !== true + : (item.visible !== false || item.hidden !== true); + }) .map((item:any, index) => { const disabled = evalExpression(item.disabledOn, form.data); @@ -416,6 +423,7 @@ export const FormItemStore = types return newItem; }); + self.expressionsInOptions = expressionsInOptions; const flattened:Array = flattenTree(filteredOptions); const selectedOptions:Array = []; From 41f2e750ca2b165d1764c3927f456b0ad22c3011 Mon Sep 17 00:00:00 2001 From: catchonme Date: Tue, 28 May 2019 19:18:49 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/advanced.md | 2 +- docs/renderers.md | 2 +- docs/renderers/Action.md | 4 ++-- docs/renderers/Form/Button.md | 4 ++-- docs/renderers/Form/Datetime.md | 2 +- docs/renderers/Form/FormItem.md | 8 ++++---- docs/renderers/Form/Panel.md | 4 ++-- docs/renderers/Form/Picker.md | 2 +- docs/renderers/Form/Range.md | 1 + docs/renderers/Form/Table.md | 8 ++++---- docs/renderers/Form/Time.md | 2 +- docs/renderers/List.md | 2 +- docs/renderers/Wizard.md | 4 ++-- 13 files changed, 23 insertions(+), 22 deletions(-) diff --git a/docs/advanced.md b/docs/advanced.md index aa4b53108..132ec0437 100644 --- a/docs/advanced.md +++ b/docs/advanced.md @@ -33,7 +33,7 @@ shortname: advanced - form 中弹出则会把 form 中的数据复制份传给 dialog。 - crud 中的批量操作按钮。把整个列表数据复制给 dialog。 - crud 中的某一项中的按钮,则只会把对应的那一条数据拷贝给 dialog。 -- `servcie` +- `service` - 父级 容器中的数据可以直接使用,如 page 容器 - 如果配置了 `api`, `api` 返回的数据可以用。 diff --git a/docs/renderers.md b/docs/renderers.md index ee420703a..392ce1498 100644 --- a/docs/renderers.md +++ b/docs/renderers.md @@ -20,7 +20,6 @@ amis 页面是通过 JSON 配置出来的,是由一个一个渲染模型组成 - [Email](./renderers/Form/Email.md): Email 输入框 - [Password](./renderers/Form/Password.md): 密码输入框 - [Number](./renderers/Form/Number.md): 数字输入框 - - [Divider](./renderers/Form/Divider.md): 分割线 - [Select](./renderers/Form/Select.md): 选项表单 - [Chained-Select](./renderers/Form/Chained-Select.md): 无限级别下拉 - [Checkbox](./renderers/Form/Checkbox.md): 勾选框 @@ -59,6 +58,7 @@ amis 页面是通过 JSON 配置出来的,是由一个一个渲染模型组成 - [Action](./renderers/Action.md): 一种特殊的渲染器,它本身是一个按钮,同时它能触发事件 - [Dialog](./renderers/Dialog.md): Dialog 由 Action 触发。他是一个类似于 Page 的容器模型 - [Drawer](./renderers/Drawer.md): Drawer 由 Action 触发 +- [Divider](./renderers/Divider.md): 分割线 - [CRUD](./renderers/CRUD.md): 增删改查模型,主要用来展现列表 - [CRUD-Table](./renderers/CRUD-Table.md): 请参考 Table - [CRUD-Cards](./renderers/CRUD-Cards.md): 请参考 Cards diff --git a/docs/renderers/Action.md b/docs/renderers/Action.md index 0fd38bbe0..d3be54743 100644 --- a/docs/renderers/Action.md +++ b/docs/renderers/Action.md @@ -8,7 +8,7 @@ Action 是一种特殊的渲染器,它本身是一个按钮,同时它能触 | 属性名 | 类型 | 默认值 | 说明 | | ---------------- | --------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | type | `string` | `action` | 指定为 Page 渲染器。 | -| actionType | `string` | - | 【必填】这是action最核心的配置,来指定该action的作用类型,支持:`ajax`、`link`、`url`、`dawer`、`dialog`、`confirm`、`cancel`、`prev`、`next`、`copy`、`close`。 | +| actionType | `string` | - | 【必填】这是action最核心的配置,来指定该action的作用类型,支持:`ajax`、`link`、`url`、`drawer`、`dialog`、`confirm`、`cancel`、`prev`、`next`、`copy`、`close`。 | | label | `string` | - | 按钮文本。可用 `${xxx}` 取值。 | | level | `string` | `default` | 按钮样式,支持:`link`、`primary`、`secondary`、`info`、`success`、`warning`、`danger`、`light`、`dark`、`default`。 | | size | `string` | - | 按钮大小,支持:`xs`、`sm`、`md`、`lg`。 | @@ -173,7 +173,7 @@ Action 是一种特殊的渲染器,它本身是一个按钮,同时它能触 "type": "button", "level": "primary", "actionType": "drawer", - "drawer": {1 + "drawer": { "title": "表单设置", "body": { "type": "form", diff --git a/docs/renderers/Form/Button.md b/docs/renderers/Form/Button.md index ec288fb64..bd24157b5 100644 --- a/docs/renderers/Form/Button.md +++ b/docs/renderers/Form/Button.md @@ -4,12 +4,12 @@ - `type` 请设置成 `button` - `label` 按钮文字 -- `icon` 按钮图标。可以使用来自 fontawesome 的图标。 +- `icon` 按钮图标。可以使用来自 font-awesome 的图标。 - `level` 按钮级别。 包含: `link`、`primary`、`success`、`info`、`warning`和`danger`。 - `size` 按钮大小。 包含: `xs`、`sm`、`md`和`lg` - `className` 按钮的类名。 -如果按钮是 `button` 类型,则还需要配置 [Action](./Action.md) 中定义的属性,否则,amis 不知道如何响应当前按钮点击。 +如果按钮是 `button` 类型,则还需要配置 [Action](../Action.md) 中定义的属性,否则,amis 不知道如何响应当前按钮点击。 ```schema:height="300" scope="form" [ diff --git a/docs/renderers/Form/Datetime.md b/docs/renderers/Form/Datetime.md index 86e7d2142..89f5d0581 100644 --- a/docs/renderers/Form/Datetime.md +++ b/docs/renderers/Form/Datetime.md @@ -6,7 +6,7 @@ - `format` 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment. - `inputFormat` 默认 `YYYY-MM-DD HH:mm:ss` 用来配置显示的时间格式。 - `placeholder` 默认 `请选择日期` -- `timeConstraints` 请参考: https://github.com/YouCanBookMe/react-datetime +- `timeConstraints` 请参考: [react-datetime](https://github.com/YouCanBookMe/react-datetime) - `value` 这里面 value 需要特殊说明一下,因为支持相对值。如: - `-2mins` 2 分钟前 - `+2days` 2 天后 diff --git a/docs/renderers/Form/FormItem.md b/docs/renderers/Form/FormItem.md index f19340ce6..e23a5ba93 100644 --- a/docs/renderers/Form/FormItem.md +++ b/docs/renderers/Form/FormItem.md @@ -12,15 +12,15 @@ Form 中主要是由各种 FormItem 组成。FormItem 中主要包含这些字 - `submitOnChange` 是否该表单项值发生变化时就提交当前表单。 - `className` 表单最外层类名。 - `disabled` 当前表单项是否是禁用状态。 -- `disabledOn` 通过[表达式](./Types.md#表达式)来配置当前表单项的禁用状态。 +- `disabledOn` 通过[表达式](../Types.md#表达式)来配置当前表单项的禁用状态。 - `visible` 是否可见。 -- `visibleOn` 通过[表达式](./Types.md#表达式)来配置当前表单项是否显示。 +- `visibleOn` 通过[表达式](../Types.md#表达式)来配置当前表单项是否显示。 - `hidden` 是否隐藏,不要跟 `visible` `visibleOn` 同时配置 -- `hiddenOn` 通过[表达式](./Types.md#表达式)来配置当前表单项是否隐藏。 +- `hiddenOn` 通过[表达式](../Types.md#表达式)来配置当前表单项是否隐藏。 - `inputClassName` 表单控制器类名。 - `labelClassName` label 的类名。 - `required` 是否为必填。 -- `requiredOn` 通过[表达式](./Types.md#表达式)来配置当前表单项是否为必填。 +- `requiredOn` 通过[表达式](../Types.md#表达式)来配置当前表单项是否为必填。 - `validations` 格式验证,支持设置多个,多个规则用英文逗号隔开。 - `isEmptyString` 必须是空白字符。 diff --git a/docs/renderers/Form/Panel.md b/docs/renderers/Form/Panel.md index c8fa8c217..a6adf12fc 100644 --- a/docs/renderers/Form/Panel.md +++ b/docs/renderers/Form/Panel.md @@ -3,9 +3,9 @@ 还是为了布局,可以把一部分 [FormItem](./FormItem.md) 合并到一个 panel 里面单独展示。 - `title` panel 标题 -- `body` [Container](./Types.md#container) 可以是其他渲染模型。 +- `body` [Container](../Types.md#container) 可以是其他渲染模型。 - `bodyClassName` body 的 className. -- `footer` [Container](./Types.md#container) 可以是其他渲染模型。 +- `footer` [Container](../Types.md#container) 可以是其他渲染模型。 - `footerClassName` footer 的 className. - `controls` 跟 `body` 二选一,如果设置了 controls 优先显示表单集合。 diff --git a/docs/renderers/Form/Picker.md b/docs/renderers/Form/Picker.md index 12d512058..5eb580440 100644 --- a/docs/renderers/Form/Picker.md +++ b/docs/renderers/Form/Picker.md @@ -14,7 +14,7 @@ - `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。 - `delimiter` 默认为 `,` - `modalMode` 设置 `dialog` 或者 `drawer`,用来配置弹出方式。 -- `pickerSchema` 默认为 `{mode: 'list', listItem: {title: '${label}'}}`, 即用 List 类型的渲染,来展示列表信息。更多的玩法请参考 [CRUD](./CRUD.md) 的配置。 +- `pickerSchema` 默认为 `{mode: 'list', listItem: {title: '${label}'}}`, 即用 List 类型的渲染,来展示列表信息。更多的玩法请参考 [CRUD](../CRUD.md) 的配置。 - 更多配置请参考 [FormItem](./FormItem.md) ```schema:height="300" scope="form-item" diff --git a/docs/renderers/Form/Range.md b/docs/renderers/Form/Range.md index d2be0aa0e..eceaadf79 100644 --- a/docs/renderers/Form/Range.md +++ b/docs/renderers/Form/Range.md @@ -9,6 +9,7 @@ - `multiple` 支持选择范围,默认为`false` - `joinValuse` 默认为 `true`,选择的 `value` 会通过 `delimiter` 连接起来,否则直接将以`{min: 1, max: 100}`的形式提交,开启`multiple`时有效 - `delimiter` 默认为 `,` +- 更多配置请参考 [FormItem](./FormItem.md) ```schema:height="400" scope="form-item" { diff --git a/docs/renderers/Form/Table.md b/docs/renderers/Form/Table.md index 4a3b3b3da..3a8603fd3 100644 --- a/docs/renderers/Form/Table.md +++ b/docs/renderers/Form/Table.md @@ -55,9 +55,9 @@ | editable | `boolean` | false | 是否可编辑 | | removable | `boolean` | false | 是否可删除 | | showAddBtn | `boolean` | true | 是否显示添加按钮 | -| addApi | [api](./Types.md#Api) | - | 新增时提交的 API | -| updateApi | [api](./Types.md#Api) | - | 修改时提交的 API | -| deleteApi | [api](./Types.md#Api) | - | 删除时提交的 API | +| addApi | [api](../Types.md#Api) | - | 新增时提交的 API | +| updateApi | [api](../Types.md#Api) | - | 修改时提交的 API | +| deleteApi | [api](../Types.md#Api) | - | 删除时提交的 API | | addBtnLabel | `string` | | 增加按钮名称 | | addBtnIcon | `string` | `"fa fa-plus"` | 增加按钮图标 | | updateBtnLabel | `string` | `""` | 更新按钮名称 | @@ -73,7 +73,7 @@ | columns[x].quickEditOnUpdate | `boolean` 或者 `object` | - | 可以用来区分新建模式和更新模式的编辑配置 | - 更多配置请参考 [FormItem](./FormItem.md) -- 更多 Demo 详情请参考 [表格编辑](/docs/examples/form/table) +- 更多 Demo 详情请参考 [表格编辑](/amis/#/form/table) ```schema:height="250" scope="form-item" { diff --git a/docs/renderers/Form/Time.md b/docs/renderers/Form/Time.md index 9798cde3b..595eef049 100644 --- a/docs/renderers/Form/Time.md +++ b/docs/renderers/Form/Time.md @@ -6,7 +6,7 @@ - `format` 默认 `X` 即时间戳格式,用来提交的时间格式。更多格式类型请参考 moment. - `inputFormat` 默认 `HH:mm` 用来配置显示的时间格式。 - `placeholder` 默认 `请选择日期` -- `timeConstraints` 请参考: https://github.com/YouCanBookMe/react-datetime +- `timeConstraints` 请参考: [react-datetime](https://github.com/YouCanBookMe/react-datetime) - `value` 这里面 value 需要特殊说明一下,因为支持相对值。如: - `-2mins` 2 分钟前 - `+2days` 2 天后 diff --git a/docs/renderers/List.md b/docs/renderers/List.md index c6b3706e5..c9e7b235a 100644 --- a/docs/renderers/List.md +++ b/docs/renderers/List.md @@ -19,7 +19,7 @@ | listItem.avatarClassName | `string` | `thumb-sm avatar m-r` | 图片 CSS 类名 | | listItem.desc | `string` | | 描述,支持模板语法如: \${xxx} | | listItem.body | `Array` 或者 [Field](./Field.md) | | 内容容器,主要用来放置 [Field](./Field.md) | -| listItem.actions | Array Of [Button](./Button.md) | | 按钮区域 | +| listItem.actions | Array Of [Button](./Form/Button.md) | | 按钮区域 | ```schema:height="400" scope="body" { diff --git a/docs/renderers/Wizard.md b/docs/renderers/Wizard.md index 10e664ce7..3aa03f89a 100644 --- a/docs/renderers/Wizard.md +++ b/docs/renderers/Wizard.md @@ -19,7 +19,7 @@ - `target` 可以把数据提交给别的组件而不是自己保存。请填写目标组件设置的 name 值,如果填写为 `window` 则把数据同步到地址栏上,同时依赖这些数据的组件会自动重新刷新。 - `steps` 数组,配置步骤信息。 - `steps[x].title` 步骤标题。 -- `steps[x].mode` 展示默认,跟 [Form](./Form.md) 中的模式一样,选择: `normal`、`horizontal`或者`inline`。 +- `steps[x].mode` 展示默认,跟 [Form](./Form/Form.md) 中的模式一样,选择: `normal`、`horizontal`或者`inline`。 - `steps[x].horizontal` 当为水平模式时,用来控制左右占比。 - `steps[x].horizontal.label` 左边 label 的宽度占比。 - `steps[x].horizontal.right` 右边控制器的宽度占比。 @@ -28,7 +28,7 @@ - `steps[x].initApi` 当前步骤数据初始化接口。 - `steps[x].initFetch` 当前步骤数据初始化接口是否初始拉取。 - `steps[x].initFetchOn` 当前步骤数据初始化接口是否初始拉取,用表达式来决定。 -- `steps[x].controls` 当前步骤的表单项集合,请参考 [FormItem](./FormItem.md)。 +- `steps[x].controls` 当前步骤的表单项集合,请参考 [FormItem](./Form/FormItem.md)。 ```schema:height="400" scope="body" {