0.7.2 • Published 4 years ago

xy-form v0.7.2

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago
IEChromeFirefoxOperaSafari
IE 10+ ✔Chrome 31.0+ ✔Firefox 31.0+ ✔Opera 30.0+ ✔Safari 7.0+ ✔

NPM version node version npm download

xy-form

xy-form

表单组件, 提供了表单样式, 数据存储

安装

# yarn
yarn add xy-form

使用例子

import React from "react";
import ReactDOM from "react-dom";
import { Form, Separator, FormBlock, FormItem, FormItemField, FormSubmitButton } from "xy-form";
ReactDOM.render(
    <Form onSubmitBefore={onSubmitBefore} onSubmit={onSubmit}>
        <FormItem label="姓名" prop="name">
            <input type="text" />
        </FormItem>
        <FormItem label="手机号" prop="phone">
            <input type="text" />
        </FormItem>
        <FormSubmitButton>
            <button>提交</button>
        </FormSubmitButton>
        <input type="reset" value="重置" />
    </Form>,
    container,
);

API

Form

属性说明类型默认值
disabled是否禁用表单booleanfalse
trigger默认触发事件ValidateTriggerValidateTrigger.change
labelPosition标签对齐位置"right"/"left"/"top""left"
labelWidth标签宽度string"85px"
inline是否内联模式booleanfalse
action与原生表单一样string
enctype与原生表单一样string
method与原生表单一样string
name与原生表单一样string
target与原生表单一样string
defaultModel默认对象, 用于提供默认值any
validConfig验证配置ValidateConfig
getFormMethods获取表单方法(methods: FormMethods) => void
onFieldChange字段值改变事件(prop: string, value: any) => void
onFieldValidate字段需要验证事件(value: any, configs: FieldConfig[], params: ValidateParams) => Promise
onSubmitBefore开始点击提交按钮(data: any) => void
onFormValidate表单需要验证事件(fieldMapper: React.MutableRefObject<Map<string, FormItemState>>) => Promise
onValidateFail表单验证失败事件(error: Error, data: any) => void
onSubmit表单提交事件(data: any) => void

FormBlock

属性说明类型默认值
prop字段域名称string

FormItemField

属性说明类型默认值
prop代理字段名string
valueKey代理值的 keystring"value"
converValue如何从 onChange 转换值(val: any) => any
label中文标签名string
children代理输入组件React.ReactNode
trigger默认触发事件ValidateTrigger
defaultValue默认值any
normalize规范化函数, 比如绑定的是 Date 类型,form 最后同步时可以是日期字符串(value: T) => NormalizeResult
disabledValidate是否禁用验证boolean
onValidate执行验证事件(value: T, validateResult: ValidateResult, input: HTMLElement, normalize?: (value: T) => NormalizeResult) => void

FormItem

属性说明类型默认值
labelPosition标签对齐位置"right"/"left"/"top""left"
prop代理字段名string
valueKey代理值的 keystring"value"
converValue如何从 onChange 转换值(val: any) => any
label中文标签名React.ReactNode
children代理输入组件React.ReactNode
trigger默认触发事件ValidateTrigger
defaultValue默认值any
normalize规范化函数, 比如绑定的是 Date 类型,form 最后同步时可以是日期字符串(value: T) => NormalizeResult
serialization序列化函数, 将外部设置的值,(比如默认值和 getFieldValue 的值进行转换然后设置)(value: T) => any
disabledValidate是否禁用验证boolean
onValidate执行验证事件(value: T, validateResult: ValidateResult, input: HTMLElement, normalize?: (value: T) => NormalizeResult) => void

Form

  • 顶级就能控制所有输入框的 disabled 状态
  • 提供通用的默认配置, 详细看FormContext
  • 提供很多事件钩子, 比如字段值改变, 比如字段验证状态改变, 比如表单验证完毕等
  • 挂接原生 submit,rest 事件
  • 表单样式
  • 提供表单方法, 详细看FormMethods

FormBlock

  • 用于嵌套数据

FormItem

  • 提供表单段落样式
  • 显示错误信息文本
  • 指定某个字段验证状态改变后, 再次判断是否验证失败
  • 提供了prop则默认自带FormItemField组件

FormItemField

  • 代理包裹组件的value, onChange, disabled属性
  • 内部有验证是否失败状态, 和失败原因
  • 初始化时候保留当前组件初始值, initialValue, 在 form.resetFields()时候以重置输入框的值
  • normalize, 可选规范化函数, 比如绑定的是 Date 类型,form 最后同步时可以是日期字符串

FormContext

提供整体通过默认状态

  • disabled 是否全部默认禁用
  • trigger 全部默认触发事件
  • labelPosition 标签对齐位置 "right" | "left" | "top"
  • labelWidth 标签宽度
  • inline 是否内陆模式

FormMehhods

提供表单操作功能

export interface FormMethods {
    /**
     * 设置模型值
     * @description 快速设置整个模型的值
     */
    setModel: (model: any) => any;
    /**
     * 获取字段值
     */
    getFieldValue: (prop: string) => any;
    /**
     * 设置字段值
     */
    setFieldValue: (prop: string, value: any) => void;
    /**
     * 获取字段验证结果
     */
    getFieldValidateResult: (props: string) => ValidateResult;
    /**
     * 重置字段到初始值
     */
    resetField: (prop: string) => void;
    /**
     * 重置所有字段到初始值
     */
    resetFields: () => void;
    /**
     * 验证指定字段
     */
    validateField: (prop: string) => Promise<any>;
    /**
     * 验证所有字段
     */
    validateFields: () => Promise<any>;
    /**
     * 获取对应标签
     */
    getFieldLabel: (prop: string) => React.ReactNode;
    /**
     * 表单提交
     */
    submit: (uncaught?: boolean) => Promise<any>;
    /**
     * 获取数据
     */
    toData: () => any;
}

开发

yarn run start

例子

http://localhost:6006

测试

yarn run test

开源许可

xy-form is released under the MIT license.

0.7.2

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago

0.6.0

4 years ago

0.5.0

4 years ago

0.4.0

4 years ago

0.3.5

5 years ago

0.3.4

5 years ago

0.3.3

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.0.1

5 years ago

0.0.997

5 years ago

0.0.996

5 years ago

0.0.995

5 years ago

0.0.994

5 years ago

0.0.993

5 years ago

0.0.992

5 years ago

0.0.991

5 years ago

0.0.99

5 years ago

0.0.98

5 years ago

0.0.97

5 years ago

0.0.96

5 years ago

0.0.95

5 years ago

0.0.94

5 years ago

0.0.93

5 years ago

0.0.92

5 years ago

0.0.91

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago