diff --git a/packages/demo/public/assets.json b/packages/demo/public/assets.json index fbd210c09..715468d7c 100644 --- a/packages/demo/public/assets.json +++ b/packages/demo/public/assets.json @@ -4509,7 +4509,13 @@ }, { "name": "visible", - "propType": "JSExpression", + "propType": { + "type": "oneOfType", + "value": [ + "JSExpression", + "bool" + ] + }, "description": "是否显示", "defaultValue": false }, @@ -4979,12 +4985,6 @@ "subName": "" }, "props": [ - { - "name": "prefix", - "propType": "string", - "description": "样式前缀", - "defaultValue": "next-" - }, { "name": "inline", "propType": "bool", @@ -4992,6 +4992,10 @@ }, { "name": "size", + "title": { + "label": "Size", + "tip": "单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。\n@enumdesc 大, 中, 小" + }, "propType": { "type": "oneOf", "value": [ @@ -5010,6 +5014,10 @@ }, { "name": "labelAlign", + "title": { + "label": "标签的位置", + "tip": "上, 左, 内" + }, "propType": { "type": "oneOf", "value": [ @@ -5032,74 +5040,11 @@ }, "description": "标签的左右对齐方式\n@enumdesc 左, 右" }, - { - "name": "field", - "propType": "any", - "description": "field 实例, 传 false 会禁用 field" - }, - { - "name": "saveField", - "propType": "func", - "description": "保存 Form 自动生成的 field 对象" - }, - { - "name": "labelCol", - "propType": { - "type": "shape", - "value": [{ - "name": "span", - "description": "fixedSpan", - "propType": "number" - },{ - "name": "fixedSpan", - "description": "fixedSpan", - "propType": "number" - },{ - "name": "offset", - "description": "offset", - "propType": "number" - },{ - "name": "fixedOffset", - "description": "fixedOffset", - "propType": "number" - }] - }, - "description": "控制第一级 Item 的 labelCol" - }, - { - "name": "wrapperCol", - "propType": { - "type": "shape", - "value": [{ - "name": "span", - "description": "fixedSpan", - "propType": "number" - },{ - "name": "fixedSpan", - "description": "fixedSpan", - "propType": "number" - },{ - "name": "offset", - "description": "offset", - "propType": "number" - },{ - "name": "fixedOffset", - "description": "fixedOffset", - "propType": "number" - }] - }, - "description": "控制第一级 Item 的 wrapperCol" - }, { "name": "onSubmit", "propType": "func", "description": "form内有 `htmlType=\"submit\"` 的元素的时候会触发" }, - { - "name": "children", - "propType": "any", - "description": "子元素" - }, { "name": "className", "propType": "string", @@ -5112,7 +5057,13 @@ }, { "name": "value", - "propType": "object", + "propType": { + "type": "oneOfType", + "value": [ + "Json", + "JSExpression" + ] + }, "description": "表单数值" }, { @@ -5120,22 +5071,6 @@ "propType": "func", "description": "表单变化回调\n@param {Object} values 表单数据\n@param {Object} item 详细\n@param {String} item.name 变化的组件名\n@param {String} item.value 变化的数据\n@param {Object} item.field field 实例" }, - { - "name": "component", - "propType": { - "type": "oneOfType", - "value": [ - "string", - "func" - ] - }, - "description": "设置标签类型", - "defaultValue": "form" - }, - { - "name": "fieldOptions", - "propType": "object" - }, { "name": "rtl", "propType": "bool" @@ -5163,11 +5098,16 @@ "propType": "bool", "description": "是否开启预览态" } - ] + ], + "configure": { + "component": { + "isContainer": true + } + } }, { - "componentName": "Form.Item", - "title": "Form.Item", + "componentName": "FormItem", + "title": "FormItem", "docUrl": "", "screenshot": "", "npm": { @@ -5180,10 +5120,8 @@ }, "props": [ { - "name": "prefix", - "propType": "string", - "description": "样式前缀", - "defaultValue": "next-" + "name": "id", + "propType": "string" }, { "name": "rtl", @@ -5196,32 +5134,60 @@ }, { "name": "labelCol", - "propType": "object", + "propType": { + "type": "shape", + "value": [{ + "name": "span", + "description": "span", + "propType": "number" + },{ + "name": "offset", + "description": "offset", + "propType": "number" + }] + }, "description": "label 标签布局,通 `` 组件,设置 span offset 值,如 {span: 8, offset: 16},该项仅在垂直表单有效" }, { "name": "wrapperCol", - "propType": "object", + "propType": { + "type": "shape", + "value": [{ + "name": "span", + "description": "span", + "propType": "number" + },{ + "name": "offset", + "description": "offset", + "propType": "number" + }] + }, "description": "需要为输入控件设置布局样式时,使用该属性,用法同 labelCol" }, { "name": "help", - "propType": { - "type": "instanceOf", - "value": "node" + "title": { + "label": "自定义提示信息", + "tip": "如不设置,则会根据校验规则自动生成." }, + "propType": "string", "description": "自定义提示信息,如不设置,则会根据校验规则自动生成." }, { "name": "extra", - "propType": { - "type": "instanceOf", - "value": "node" + "title": { + "label": "额外的提示信息", + "tip": "和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 位于错误信息后面" }, + "propType": "string", "description": "额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。 位于错误信息后面" }, { "name": "validateState", + "title": { + "label": "校验状态", + "tip": "如不设置,则会根据校验规则自动生成\n@enumdesc 失败, 成功, 校验中, 警告" + }, "propType": { "type": "oneOf", "value": [ @@ -5233,37 +5199,17 @@ }, "description": "校验状态,如不设置,则会根据校验规则自动生成\n@enumdesc 失败, 成功, 校验中, 警告" }, - { - "name": "hasFeedback", - "propType": "bool", - "description": "配合 validateState 属性使用,是否展示 success/loading 的校验状态图标, 目前只有Input支持", - "defaultValue": false - }, { "name": "style", "propType": "object", "description": "自定义内联样式" }, - { - "name": "id", - "propType": "string" - }, - { - "name": "children", - "propType": { - "type": "oneOfType", - "value": [ - { - "type": "instanceOf", - "value": "node" - }, - "func" - ] - }, - "description": "node 或者 function(values)" - }, { "name": "size", + "title": { + "label": "Size", + "tip": "单个 Item 的 size 自定义,优先级高于 Form 的 size, 并且当组件与 Item 一起使用时,组件自身设置 size 属性无效。" + }, "propType": { "type": "oneOf", "value": [ @@ -5276,11 +5222,19 @@ }, { "name": "fullWidth", + "title": { + "label": "fullWidth", + "tip": "单个 Item 中表单类组件宽度是否是100%" + }, "propType": "bool", "description": "单个 Item 中表单类组件宽度是否是100%" }, { "name": "labelAlign", + "title": { + "label": "标签的位置", + "tip": "上, 左, 内" + }, "propType": { "type": "oneOf", "value": [ @@ -5293,6 +5247,10 @@ }, { "name": "labelTextAlign", + "title": { + "label": "标签的左右对齐方式", + "tip": "左, 右" + }, "propType": { "type": "oneOf", "value": [ @@ -5309,141 +5267,118 @@ }, { "name": "required", + "title": { + "label": "不能为空", + "tip": "[表单校验] 不能为空" + }, "propType": "bool", "description": "[表单校验] 不能为空" }, - { - "name": "asterisk", - "propType": "bool", - "description": "required 的星号是否显示" - }, { "name": "requiredMessage", + "title": { + "label": "自定义错误信息", + "tip": "[表单校验]为空时自定义错误信息" + }, "propType": "string", "description": "required 自定义错误信息" }, - { - "name": "requiredTrigger", - "propType": { - "type": "oneOfType", - "value": [ - "string", - { - "type": "instanceOf", - "value": "array" - } - ] - }, - "description": "required 自定义触发方式" - }, { "name": "min", + "title": { + "label": "最小值", + "tip": "[表单校验] 最小值" + }, "propType": "number", "description": "[表单校验] 最小值" }, { "name": "max", + "title": { + "label": "最大值", + "tip": "[表单校验] 最大值" + }, "propType": "number", "description": "[表单校验] 最大值" }, { "name": "minmaxMessage", + "title": { + "label": "min/max message", + "tip": "[表单校验] min/max 自定义错误信息" + }, "propType": "string", "description": "min/max 自定义错误信息" }, - { - "name": "minmaxTrigger", - "propType": { - "type": "oneOfType", - "value": [ - "string", - { - "type": "instanceOf", - "value": "array" - } - ] - }, - "description": "min/max 自定义触发方式" - }, { "name": "minLength", + "title": { + "label": "最小长度", + "tip": "[表单校验] 字符串最小长度 / 数组最小个数" + }, "propType": "number", "description": "[表单校验] 字符串最小长度 / 数组最小个数" }, { "name": "maxLength", + "title": { + "label": "最大长度", + "tip": "[表单校验] 字符串最大长度 / 数组最大个数" + }, "propType": "number", "description": "[表单校验] 字符串最大长度 / 数组最大个数" }, { "name": "minmaxLengthMessage", + "title": { + "label": "max|min length error message", + "tip": "[表单校验] minLength/maxLength 自定义错误信息" + }, "propType": "string", "description": "minLength/maxLength 自定义错误信息" }, - { - "name": "minmaxLengthTrigger", - "propType": { - "type": "oneOfType", - "value": [ - "string", - { - "type": "instanceOf", - "value": "array" - } - ] - }, - "description": "minLength/maxLength 自定义触发方式" - }, { "name": "length", + "title": { + "label": "长度", + "tip": "[表单校验] 字符串精确长度 / 数组精确个数" + }, "propType": "number", "description": "[表单校验] 字符串精确长度 / 数组精确个数" }, { "name": "lengthMessage", + "title": { + "label": "length error message", + "tip": "[表单校验] minLength/maxLength 自定义错误信息" + }, "propType": "string", "description": "length 自定义错误信息" }, - { - "name": "lengthTrigger", - "propType": { - "type": "oneOfType", - "value": [ - "string", - { - "type": "instanceOf", - "value": "array" - } - ] - }, - "description": "length 自定义触发方式" - }, { "name": "pattern", - "propType": "any", + "title": { + "label": "正则", + "tip": "[表单校验] 正则校验" + }, + "propType": "string", "description": "正则校验" }, { "name": "patternMessage", + "title": { + "label": "pattern error message", + "tip": "[表单校验] pattern 自定义错误信息" + }, "propType": "string", "description": "pattern 自定义错误信息" }, - { - "name": "patternTrigger", - "propType": { - "type": "oneOfType", - "value": [ - "string", - { - "type": "instanceOf", - "value": "array" - } - ] - }, - "description": "pattern 自定义触发方式" - }, { "name": "format", + "title": { + "label": "format", + "tip": "[表单校验] 四种常用的 pattern" + }, "propType": { "type": "oneOf", "value": [ @@ -5457,42 +5392,18 @@ }, { "name": "formatMessage", + "title": { + "label": "format error message", + "tip": "[表单校验] format 自定义错误信息" + }, "propType": "string", "description": "format 自定义错误信息" }, - { - "name": "formatTrigger", - "propType": { - "type": "oneOfType", - "value": [ - "string", - { - "type": "instanceOf", - "value": "array" - } - ] - }, - "description": "format 自定义触发方式" - }, { "name": "validator", "propType": "func", "description": "[表单校验] 自定义校验函数" }, - { - "name": "validatorTrigger", - "propType": { - "type": "oneOfType", - "value": [ - "string", - { - "type": "instanceOf", - "value": "array" - } - ] - }, - "description": "validator 自定义触发方式" - }, { "name": "autoValidate", "propType": "bool", @@ -5535,11 +5446,6 @@ "name": "isPreview", "propType": "bool", "description": "是否开启预览态" - }, - { - "name": "renderPreview", - "propType": "func", - "description": "预览态模式下渲染的内容\n@param {any} value 根据包裹的组件的 value 类型而决定" } ], "configure": { @@ -5801,6 +5707,10 @@ "title":"标签文案", "description": "label" }, + { + "name": "name", + "propType": "string" + }, { "name": "hasClear", "propType": "bool", @@ -12528,6 +12438,26 @@ } ] }, + { + "componentName": "Field", + "title": "Field", + "docUrl": "", + "screenshot": "", + "npm": { + "package": "@alifd/next", + "version": "1.19.18", + "exportName": "Field", + "main": "src/index.js", + "destructuring": true, + "subName": "" + }, + "props": [ + { + "name": "this", + "propType": "any" + } + ] + }, { "componentName": "Avatar", "title": "Avatar", @@ -14181,18 +14111,24 @@ "schema": { "componentName": "Form", "props": { - "labelCol": 4 + "labelCol": { + "span": 2, + "labelAlign": "left" + }, + "role": "grid" }, "children": [ { - "componentName": "Form.Item", + "componentName": "FormItem", "props": { - "name": "email" + "label": "Email: ", + "required": true }, "children": [ { "componentName": "Input", "props": { + "name": "email", "size": "medium", "placeholder": "用户名" } @@ -14200,80 +14136,48 @@ ] }, { - "componentName": "Form.Item", + "componentName": "FormItem", "props": { - "name": "pwd2" + "label": "Password: ", + "required": true }, "children": [ { "componentName": "Input.Password", "props": { - "placeholder": "密码", - "size": "medium", - "innerAfter": { - "componentName": "Icon", - "props": { - "size": "large", - "style": { - "marginRight": 10, - "color": "#9b9b9b" - }, - "type": "help" - } - } + "name": "password", + "placeholder": "请输入密码", + "size": "medium" } } ] }, { - "componentName": "Box", + "componentName": "FormItem", "props": { - "direction": "column", - "wrap": true, - "style": { - "margin": "5px 0 5px 0" + "wrapperCol": { + "offset": 7 } }, "children": [ { - "componentName": "Radio.Group", + "componentName": "Form.Submit", "props": { - "dataSource": [ - { - "label": "自动登录", - "value": "auto" - } - ] - } - }, - { - "componentName": "Button.Group", - "props": { - "style": { - "margin": "10px 0 10px 0" + "type": "primary", + "validate": true, + "onClick": { + "type": "JSFunction", + "value": "(v, e) => { console.log(v, e) }" } }, - "children": [ - { - "componentName": "Button", - "props": { - "type": "normal", - "htmlType": "submit", - "children": "注册" - } - }, - { - "componentName": "Button", - "props": { - "type": "primary", - "htmlType": "submit", - "children": "登录", - "style": { - "margin": "0 5px 0 5px" - } - } - } - ] + "children": "Submit" + }, + { + "componentName": "Form.Reset", + "props": { + "style": {"marginLeft": 10} + }, + "children": "Reset" } ] } @@ -14283,17 +14187,17 @@ ] }, { - "componentName": "Form.Item", + "componentName": "FormItem", "title": "表单项", "icon": "https://img.alicdn.com/tfs/TB1nYqOuW61gK0jSZFlXXXDKFXa-112-64.png", "package": "@alifd/next", "library": "Next", "snippets": [ { - "title": "Form.Item", + "title": "FormItem", "screenshot": "https://img.alicdn.com/tfs/TB1nYqOuW61gK0jSZFlXXXDKFXa-112-64.png", "schema": { - "componentName": "Form.Item", + "componentName": "FormItem", "props": { "placeholder": "拖动组件到这里" } @@ -14312,7 +14216,7 @@ "title": "输入框", "screenshot": "https://img.alicdn.com/tfs/TB1ysp3u8v0gK0jSZKbXXbK2FXa-112-64.png", "schema": { - "componentName": "Form.Item", + "componentName": "FormItem", "props": { "label": "标签", "labelAlign": "top", diff --git a/packages/editor-setters/src/icon-setter/index.tsx b/packages/editor-setters/src/icon-setter/index.tsx index f327b868a..0762b9ff3 100644 --- a/packages/editor-setters/src/icon-setter/index.tsx +++ b/packages/editor-setters/src/icon-setter/index.tsx @@ -112,10 +112,12 @@ export default class IconSetter extends PureComponent { const { icons, value, defaultValue, onChange, placeholder, hasClear, type } = this.props; const { firstLoad } = this.state; const _value = typeof value === 'object' ? value?.props?.type : value; - if (firstLoad && defaultValue && typeof value === 'undefined') onChange(defaultValue); - this.setState({ - firstLoad: false, - }); + if (firstLoad && defaultValue && typeof value === 'undefined') { + onChange(defaultValue); + this.setState({ + firstLoad: false, + }); + } const currentIcon = ; const clearIcon = hasClear && ( { >
    {icons.map((icon) => ( -
  • this.onSelectIcon(icon)}> +
  • this.onSelectIcon(icon)}>
  • ))} diff --git a/packages/editor-skeleton/src/transducers/parse-props.ts b/packages/editor-skeleton/src/transducers/parse-props.ts index 7548732fc..b26765fe8 100644 --- a/packages/editor-skeleton/src/transducers/parse-props.ts +++ b/packages/editor-skeleton/src/transducers/parse-props.ts @@ -48,6 +48,12 @@ function propTypeToSetter(propType: PropType): SetterType { isRequired, initialValue: '', }; + case 'Json': + return { + componentName: 'JsonSetter', + isRequired, + initialValue: '', + }; case 'color': return { componentName: 'ColorSetter',