6.3.6 • Published 3 years ago

uxcore-form v6.3.6

Weekly downloads
19
License
MIT
Repository
github
Last release
3 years ago

React Form

NPM version build status Test Coverage Dependency Status devDependency Status NPM downloads

Sauce Test Status

setup develop environment

$ git clone https://github.com/uxcore/uxcore-form
$ cd uxcore-form
$ npm install
$ npm start

Usage

see demo/FormDemo.js for details 每一个 field 需要按照 Form -> FormRow -> FormField 的方式进行嵌套,允许 Form -> FormField 的嵌套,会自动增加 FormRow 这一层,并默认占一整行。

API

Form

  • getValues(force) 获取目前的 values 和 pass(是否通过检测)。 参数: * force Boolean: 强制校验或不校验,undefined 时则忽略此配置。

  • resetValues() 重置所有的 FormField,如果有默认值则重置为默认值。

  • setValues(data) 手动设置各个 FormField 的值,在表单联动时可能会用得到。 参数: * data Object: 和 jsxvalues 的格式相同。

  • isDirty() 获取目前的表单是否没有通过检测,返回 true 或 false。

  • doValidate(force, always) 获取目前的表单是否通过检测,返回 true 或者 false。

    • force:是否强制校验,无视不校验的规则。
    • always:强制校验通过或者失败,通常可以用于清空出错状态。
  • doValidateAndScroll(force, always) 获取目前的表单是否通过检测并滚动至第一个出错的 field,参数同上。

Form.createFormField(options)

NameTypeRequireDefaultSince Ver.Note
options.componentReact Elementyesinput1.8.12被包裹的组件,需要提供 value 和 onChange,或相同功能的 API
options.valuePropNamestringNovalue1.8.12与 value 对应的 prop 名字
options.changePropNamestringNoonChange1.8.12与 onChange 对应的 prop 名字
options.processValuefunc(value, ...other)No-1.8.12针对 value(editKey 对应字段)的处理函数
options.renderViewfunc(value)Noval => JSON.stringify(val)1.8.12定制化渲染 view 状态

props

Form

配置项类型必填默认值功能/备注
classNamestringoptional""加入额外的类名,在使用 kuma 的基础上进行适当的定制时会用得到
jsxprefixClsstringoptional"kuma-form"默认类名,用户可以通过修改此项来完成样式的定制
jsxmodestringoptional"EDIT"Form 编辑和只读模式,传值方式见 demo
jsxvaluesobjectoptional-传入表单的初始值,格式见 Usage,每一个 key 与 formField 中的 jsxname 相对应,注意是初始值,不要把 onChange 中的变化同步到这里
jsxonChangefunction(values, name, pass)optionalnoop当表单中值有变化时触发,传回 values,格式同 jsxvalues,同时传回发生变化的表单域的 name,以及该表单域是否通过校验
instantValidatebooleanoptionaltrue是否开启即时校验
asyncValidatebooleanoptionalfalse是否开启异步校验模式,目前仅支持全局配置
verticalAlignbooleanoptionalfalse表单域是否竖排
sizestringoptionallarge尺寸,支持 large、middle、small

jsxvalues 的格式

{
    jsxname1: value1,
    jsxname2: value2
}

FormRow

配置项类型必填默认值功能/备注
classNamestringoptional""加入额外的类名,在使用 kuma 的基础上进行适当的定制时会用得到
jsxprefixClsstringoptional"kuma-form-row"默认类名,用户可以通过修改此项来完成样式的定制

FormField 通用配置

配置项类型必填默认值功能/备注
classNamestringoptional""加入额外的类名,在使用 kuma 的基础上进行适当的定制时会用得到
jsxshowbooloptionaltrue是否显示该表单域,不显示的表单域将不占宽度
jsxmodestringoptional"EDIT"FormField 的编辑和只读模式,优先级高于 Form,传值方式见 demo
jsxshowLabelbooloptionaltrue是否显示 label
jsxnamestringrequired-表单字段,返回值时该字段将作为 key
jsxlabelstringrequired-左侧的说明文字,不写即为留白
jsxprefixClsstringoptional"kuma-form-field"默认类名,用户可以通过修改此项来完成样式的定制
jsxflexnumberoptional1占 FormRow 宽的比例,类似于 css3 中的 flex-box
jsxtipsstringoptional""说明文字
jsxrulesobject/arrayoptional-validators,具体用法和格式见 Usage,Form 已经提供了一些现成的 validator 供使用。也可以自己编写
instantValidatebooleanoptionaltrue是否开启即时校验
verticalAlignbooleanoptionalfalse表单域是否竖排
inputBoxMaxWidthstringoptional-泛指的输入框的最大宽度,通常用于较宽页面

Validators

Form 提供了一些通用的 validator,通过 Form.Validators 来引入。用法还是见 Usage 和 demo/formDemo.js 包括: 所有的 validator 返回 true,表示通过。 validator 也可以自己定义,会传入相应的表单值,根据判断,返回 true,表示通过。

  • isNotEmpty
  • isNum
  • isInt: 是否是整数
  • isDecimal: 是否是小数
  • isArray
  • isRegExp
  • isObject
  • isFunc
  • isEmail
  • isUrl
  • isHex
  • isIdCard: 是否是中国身份证。
  • isCNMobile: 是否是中国手机号。

FormField 专属配置

所有的 FormField 都共享通用配置,所有的专属配置在 demo/formDemo.js,均有体现。

InputFormField

配置项类型必填默认值功能/备注版本
jsxplaceholderstringoptional""占位符-
jsxdisabledbooleanoptionalfalsedisable 状态-
validateOnBlurbooleanoptionalfalse验证是否是在 blur 的时候出发,默认情况是在 change 时触发,此项为 true 后,onChange 的 pass 永远为 true,相对应的 onBlur 的 pass 会随之变化1.2.10
onKeyDownfunction(e)optionalnoop监听键盘事件
onBlurfunction(e, pass)optionalnoop输入框 blur 时触发,第二个参数为验证是否通过,若 validateOnBlur 为 false,则 pass 永远为 true1.2.10
onFocusfunction(e)optionalnoop输入框获取焦点时触发1.2.10
renderViewfunction(value)optionalnoop自定义渲染 view 状态,参数是默认渲染的值1.6.0
autoTrimbooleanoptional-自动去除值两端的空格1.2.12
inputTypestringoptional'text'input 的 type,目前支持 "text" 和 "password"1.2.23
  • 插件:

    • Count,通过 InputFormField.Count 取得,一个内置的计数器,用法如下:

      <InputFormField>
          <Count total="20">
      </InputFormField>
    • LeftAddon/RightAddon,通过 InputFormField.LeftAddon/InputFormField.RightAddon 取得,给 input 左侧加入自定义的图标或文字,用法如下:

      <InputFormField>
          <LeftAddon>
              <i className="kuma-icon kuma-icon-phone"></i>
          </LeftAddon>
          <RightAddon>
              <span>元</span>
          </RightAddon>
      </InputFormField>

TextAreaFormField

配置项类型必填默认值功能/备注
jsxplaceholderstringoptional""占位符
validateOnBlurbooleanoptionalfalse验证是否是在 blur 的时候出发,默认情况是在 change 时触发,此项为 true 后,onChange 的 pass 永远为 true,相对应的 onBlur 的 pass 会随之变化1.2.11
onKeyDownfunction(e)optionalnoop监听键盘事件
onBlurfunction(e, pass)optionalnoop输入框 blur 时触发,第二个参数为验证是否通过,若 validateOnBlur 为 false,则 pass 永远为 true1.2.11
onFocusfunction(e)optionalnoop输入框获取焦点时触发1.2.11
autoTrimbooleanoptional-自动去除值两端的空格1.2.12
autosizebooleanoptionaltrue根据内容自动撑开(IE8 下无效)1.3.10

配置 autosize 的同时,还可以通过样式指定 min-height 和 max-height

  • 插件:

    • Count,通过 TextAreaFormField.TextAreaCount 取得,一个内置的计数器,用法如下:

      <TextAreaFormField>
          <TextAreaCount total={100}>
      </TextAreaFormField>

RadioGroupFormField

配置项类型必填默认值功能/备注
jsxdisabledbooleanoptionalfalsedisable 状态
  • Item:通过 RadioGroupFormField.Item 取得,有两个 props
    • value
    • text:显示的值
  • 使用方式:
<RadioGroupFormField>
    <Item value="1" text="a">
    <Item value="2" text="b">
    <Item value="3" text="c">
</RadioGroupFormField>

SelectFormField

配置项类型必填默认值功能/备注
jsxdataobjectoptional-传入用于生成列表的数据,格式为{value: text}
jsxfetchUrlstringoptional-如果 Select 是通过搜索异步获取选项,则需要填入此项
jsxstyleobjoptional-与 react 传入 style 的方式相同,修改选择框的样式
beforeFetchfuncoptional-会传入 {q: value}, value 为搜索框中变化的值,在发出 ajax 请求之前,将数据处理为应该发送的格式,并需返回该数据。
afterFetchfuncoptional-会传入返回的数据, 将其处理为 jsxdata 的格式并返回
dataTypestringoptional'json'发送 ajax 请求的类型

jsxdata 的格式

jsxdata 目前支持两种格式

// Object
{
    a: "A",
    b: "B"
}
// Array
[
    {
        value: 'a',
        text: 'A'
    }
]

配置 jsxfetchUrl 后,会在组件渲染后立刻以空搜索值发起一次请求,我们强烈建议服务端完善空值搜索的请求处理逻辑,返回热点数据和用户关联数据,以提供更好的选择体验。

此外,SelectFormField 还支持 uxcore-select2 除 onSelect/onDeselect 外的全部属性。

SearchFormField

配置项类型必填默认值功能/备注
advancedOptionsarrayoptional-右侧高级选项的选择项:格式为[{value: xxx, text: xxx}]
advancedConfigobjectoptional-右侧高级选项的配置,同 uxcore-select2
classOptionsarrayoptional-左侧类别选项的选择项:格式为[{value: xxx, text: xxx}]
classConfigobjectoptional-左侧类别选项的配置,同 uxcore-select2
tidybooloptional-精简模式
onIconClickfunction(e)optional-点击搜索图标触发回调

该组件继承自 SelectFormField,支持 SelectFormField 的全部 props。

CheckboxGroupFormField

配置项类型必填默认值功能/备注
jsxdisabledbooleanoptionalfalsedisable 状态
  • Item:通过 CheckboxGroupFormField.Item 取的,有两个 props
    • value
    • text:显示的值
    • disabled:该 Item 的 disable 状态。
    • addon: 额外指定的信息,例如tips
  • 使用方式:
<CheckboxGroupFormField>
    <Item value="1" text="a" disabled={true} />
    <Item value="2" text="b" />
    <Item value="3" text="c"
        addon={
            <Tooltip overlay={<div>提示</div>}>
                <i className='kuma-icon kuma-icon-caution' style={{color: 'blue', fontSize: '12px', 'marginLeft': '3px'}} />
            </Tooltip>
        }
    />
</CheckboxGroupFormField>

DateFormField

配置项类型必填默认值功能/备注
jsxtypestringoptionalsinglesingle/cascade 单独、级联
jsxfromstringoptional-开始日期
jsxtostringoptional-结束日期
panelstringoptional"day"何种面板,枚举值为"month","year"和"day"
autoMatchWidthbooleanoptionalfalse从 1.8.11 版本支持,在级联状态下输入框自动匹配宽度

除此之外,支持除 onSelect,uxcore-calendar 的所有 props。

NumberInputFormField

配置项类型必填默认值功能/备注
jsxplaceholderstringoptional""占位符
jsxtypestringoptional""目前支持 "money", "cnmobile" 和 "card", 提供三种格式化显示的方法。"money"的格式为123 121 121.213 121,"cnmobile"的格式为 86 1565 7263 8223, "card" 的格式为 3321 3123 3243 4343
fixedNumnumberoptional-锁定小数位
delimiterstringoptional' '分隔符
formatOnBlurbooloptionalfalse在失焦时进行格式化(6.2.0 后支持)

CascadeSelectFormField

配置项类型必填默认值功能/备注
jsxdataobjectrequired-级联选择框,只支持直接传入 data 初始化,格式见 Usage 中的 casData,length 为必须传的 key,告诉 field 有几层级联。
jsxplaceholderstringoptional"请下拉选择"占位符
jsxstyleobjectoptional-与 react 传入 style 的方式相同,修改选择框的样式
getPopupContainerfunction():React Elementoptional-弹出的菜单渲染在哪个容器中,需返回一个 DOM Node

PickableFormField

配置项类型必填默认值功能/备注
multiplebooleanoptionaltrue是否支持多选
valuestring/numberrequired-pickable Item 对应的值
typestringoptionalnormal样式风格,可选值为normal,simple,hook
maxnumberoptional99最大显示的数字,超过 max,显示 max+

EditorFormField

配置项类型必填默认值功能/备注
placeholderstringoptional""占位符
jsxcontentstringoptional""已废弃,默认值直接通过 Form 的 jsxvalues 即可传递
jsxconfigobjectoptional{}用户自定义的配置项,tinyMCE 的配置项,官方文档中所有 init 部分的配置在这里完成,详细见 http://www.tinymce.com/wiki.php/Configuration

API

setContent(content):设置 EditorFormField 的值,很不幸,EditorFormField 无法做成完全受控的组件,因为 setContent 操作会导致搜狗等中文输入法使用障碍,因此 EditorFormField 的值重置通过这个 API 来完成,或者也可以使用 Form 的 setValues 方法。

OtherFormField

OtherFormField 是一个特殊的 FormField,它用来和其他 FormField 一起完成布局(比如在一行排列等),如果需要一些装饰类的东西,可以以子元素的形式传入到这个 Field 里。 他也可以用于布局中的占位。

ButtonGroupFormField

ButtonGroupFormField 是一个特殊的 FormField,它用来生成一些特定的表单按钮,这是为了与 Grid 相结合而准备的。如果需要自定义一些按钮,请使用 OtherFormField 和 uxcore-button 相结合来使用。 你可以像这样使用它:

var Button = require('uxcore-button');
<ButtonGroupFormField>
    {// handleClick 会被传入一个参数 data,取得的值和 API getValues() 相同}
    <Button action="submit" onClick={this.handleClick.bind(this)}/>
    {// 目前只支持 submit 和 reset 两种 action}
    <Button action="reset"/>
</ButtonGroupFormField>
6.3.6

3 years ago

7.5.1

3 years ago

7.5.0

5 years ago

7.4.0

5 years ago

7.3.1

5 years ago

6.3.5

5 years ago

7.3.0

5 years ago

7.2.6

5 years ago

7.2.5

5 years ago

7.2.4

5 years ago

7.2.3

5 years ago

7.2.2

6 years ago

7.2.1

6 years ago

7.2.0

6 years ago

7.1.1

6 years ago

7.1.0

6 years ago

7.0.3

6 years ago

7.0.2

6 years ago

7.0.1

6 years ago

7.0.0

6 years ago

6.3.4

6 years ago

6.3.3

6 years ago

6.3.2

6 years ago

6.3.1

6 years ago

6.3.0

6 years ago

6.2.2

6 years ago

6.2.1

6 years ago

6.2.0

6 years ago

6.1.1

6 years ago

6.1.0

6 years ago

6.0.0

6 years ago

5.5.0

7 years ago

5.4.0

7 years ago

5.3.4

7 years ago

5.3.3

7 years ago

5.3.2

7 years ago

5.3.1

7 years ago

5.3.0

7 years ago

5.2.0

7 years ago

5.1.1

7 years ago

5.1.0

7 years ago

5.0.0

7 years ago

4.0.0

7 years ago

3.3.0

7 years ago

3.2.0

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

3.1.1

7 years ago

3.1.0

7 years ago

3.0.0

7 years ago

2.0.0

7 years ago

1.10.8

7 years ago

1.10.7

7 years ago

1.10.6

7 years ago

1.10.5

7 years ago

1.10.4

7 years ago

1.10.3

7 years ago

1.10.2

7 years ago

1.10.1

7 years ago

1.10.0

7 years ago

1.9.2

7 years ago

1.9.1

7 years ago

1.8.14

7 years ago

1.9.0

7 years ago

1.8.13

7 years ago

1.8.12

7 years ago

1.8.11

7 years ago

1.8.10

7 years ago

1.8.9

7 years ago

1.8.8

7 years ago

1.8.7

7 years ago

1.8.6

7 years ago

1.8.5

7 years ago

1.8.4

7 years ago

1.8.3

7 years ago

1.8.2

8 years ago

1.8.1

8 years ago

1.8.0

8 years ago

1.7.5

8 years ago

1.7.4

8 years ago

1.7.3

8 years ago

1.7.2

8 years ago

1.7.1

8 years ago

1.7.0

8 years ago

1.6.3

8 years ago

1.6.2

8 years ago

1.6.1

8 years ago

1.6.0

8 years ago

1.5.1

8 years ago

1.5.0

8 years ago

1.4.5

8 years ago

1.4.4

8 years ago

1.4.3

8 years ago

1.3.15

8 years ago

1.4.2

8 years ago

1.4.1

8 years ago

1.3.14

8 years ago

1.4.0

8 years ago

1.3.13

8 years ago

1.3.12

8 years ago

1.3.11

8 years ago

1.3.10

8 years ago

1.3.9

8 years ago

1.3.8

8 years ago

1.3.7

8 years ago

1.3.6

8 years ago

1.3.5

8 years ago

1.3.4

8 years ago

1.3.3

8 years ago

1.3.2

8 years ago

1.2.26

8 years ago

1.2.25

8 years ago

1.3.1

8 years ago

1.3.0

8 years ago

1.2.24

8 years ago

1.2.23

8 years ago

1.2.22

8 years ago

1.2.21

8 years ago

1.2.20

8 years ago

1.2.19

8 years ago

1.2.18

8 years ago

1.2.17

8 years ago

1.2.16

8 years ago

1.2.15

8 years ago

1.2.14

8 years ago

1.2.13

8 years ago

1.2.12

8 years ago

1.2.11

8 years ago

1.2.10

8 years ago

1.2.9

8 years ago

1.2.8

8 years ago

1.2.7

8 years ago

1.2.6

8 years ago

1.2.4

8 years ago

1.2.3

8 years ago

1.2.2

8 years ago

1.2.1

9 years ago

1.2.0

9 years ago

1.1.0

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago