formor

Formor 是一个基于 JSON Schema 的配置表单生成器,目前只发布到了厂内。 Formor 具备一个可灵活扩展的结构,可方便的扩展并集成到项目中。

Usage no npm install needed!

<script type="module">
  import formor from 'https://cdn.skypack.dev/formor';
</script>

README

Formor

img

简介

Formor 是一个基于 JSON Schema 的配置表单生成器,目前只发布到了厂内。 Formor 具备一个可灵活扩展的结构,可方便的扩展并集成到项目中。

JSON Schema 规范:点击查看 JSON Schema 规范

安装

npm install formor --save

使用

import { Form } from 'formor';

function App() {

  return (<Form 
    //描述数据的 Schema (Root 需是为一个对象)
    schema={schema}  
    //数据 (Root 需是为一个对象)
    value={data}  
    //数据发生改变
    onChange={console.log}  
    //验证被触发
    onValidate={console.log}
  />);

} 

属性说明

  • schema: 表单的 JSON Schema 描述
  • value: 传递给表单的数据
  • onChange: 在数据发生变化时的事件
  • onValidate: 在验证被触发发时的事件,(参数格式 Array{state:bool,message:string}

适配组件库

除了继承 Renderer 基类实现自定义的组件, 还可以实现 6 个方法,将内建的 Renderer 适配到任意的组件库。

import { Renderer, notification } from "formor"

//下方仅是适配示例,
//适配到目标组件库时,需要注意将参数中的 prop 赋值到组件库正确的 prop 上
//其中,onChange 事件方法的 event 需转换为 event.target.value 取值的形式
//适配时不要示实现所有方法,视需要覆盖即可

Renderer.renderTooltip = props => {
  return <Tooltip {...props}>?</Tooltip>;
}

Renderer.renderSelect = props => {
  return <Select {...props} />;
}

Renderer.renderInput = props => {
  return <Input {...props} />;
}

Renderer.renderButton = props => {
  const { children, ...others } = props;
  return <Button {...others}>{children}</Button>;
}

Renderer.renderDialog = props => {
  const { children, ...others } = props;
  return <Dialog {...others}>{children}</Dialog>;
}

Renderer.renderEmpty = message => {
  return <Empty message={message}/>;
}

//也可不实现 notification.confirm
//实现了 renderDialog 会影响 confirm
notification.confirm = async message => {
  return window.confirm(message)
}