0.9.6 • Published 2 months ago

navuelidate v0.9.6

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Navuelidate

A lib to create form easier with naive-ui and vuelidate and vueuse

Navuelidate 是一个表单生成器库,包含表单生成器组件和对应的 composable 函数、工具类型/函数、表单校验工具函数

Usage

<template>
    <FormCreator v-model="formData" :form-list="formList" :cols="4" :scope="validateScope" />
</template>
import { useFormCreator } from 'navuelidate';
import { FormType } from 'navuelidate';
import { h } from "vue"

const validateScope = Symbol('roleQueryForm');
const { formData, resetForm, createFormListItem, renderFormListItem } = useFormCreator({
    defaultData: {
        roleName: '',
        roleKey: '',
    },
    scope: validateScope,
});

const formList = shallowRef([
    createFormListItem(
        {
            key: 'roleName',
            formType: FormType.Input,
        },
        {
            label: 'roleName',
        },
    ),
    createFormListItem(
        {
            key: 'select',
            formType: FormType.Select,
        },
        {
            label: 'roleKey',
            props: {
                options: []
            }
        },
    ),
    renderFormListItem(
        () => {
            return h("div", "custom render");
        },
        {
            formItemGiProps: {
                suffix: true,
            },
        },
    ),
]);

Component

Component FormCreator

组件用于生成 naive-ui 表单, 需配合 useFormCreator 使用

PropsTypeDefaultDescription
cols?number4表单每行有几个表单项
scopeSymbolundefined必传,表单域名标记
rules?ValidationArgs<Record<string, unknown>>undefined表单验证规则
modelalueRecord<strinng,unkown>undefined必填,表单数据对象
formListArray<FormListItemRender | FormListItem>[]表单项列表

此外,可以接收 NGrid 组件的所有 props

Type FormListItem

PropertyTypeDefaultDescription
labelstring""表单项的 label
modelValuekeyof Data | keyof Data, keyof Dataundefined必填,表单项的双向绑定变量,T 泛型为传入的数据 Model 的类型 (默认是 defaultData的类型)
spannumberundefined表单项占这一行的份额,最大 24 最小 1
formTypeFormTypeFormType.Input必填,表单项类型
propsInstanceType\<typeof formType>'$props'undefined对应表单类型的组件的 props
slots所使用的 naive-ui 表单项的slotsundefined表单项的slots
formItemGiPropsNFormItemGi 的 propsundefined包裹表单控件的 NFormItemGi 的 props
formItemGiSlots{label?:()=>VNodeChild,feedback?:()=>VNodeChild,prefix?:()=>VNodeChild,suffix?:()=>VNodeChild}undefine包裹表单控件的 NFormItemGi 的 slots, 除默认的 label 和 'feedback' 以外,额外添加了 prefixsuffix 以在表单组件前后添加别的内容

Type FormListItemRender

PropertyTypeDefaultDescription
spannumberundefined表单项占这一行的份额,最大 24 最小 1
render() => VNodeundefined自定义渲染函数
formItemGiPropsNFormItemGi 的 propsundefined包裹表单控件的 NFormItemGi 的 props

目前支持的 formType 组件: [Input,Select,TreeSelect,InputNumber, RadioGroup,CheckBoxGroup,DatePicker,NCascader]

对应的组件 props 可参考 naive-ui 文档

Composable

Function useFormCreator

表单生成器组件辅助 composable 函数,需配合 FormCreator 组件使用

Params

PropertyTypeDefaultDescription
defaultDataRecord<string, unknown>undefined必填,表单默认值
scopeSymbolundefined必填,表单域名标记,Vuelidatescope
rulesRef\<Vargs extends ValidationArgs>Vargs表单验证规则
globalFormItemGiPropsFormItemGiProps | (() => FormItemGiProps) | Ref\<FormItemGiProps>undefined全局给表单项的 FormItemGi 传递的 props

表单验证规则参考 Vuelidate 文档

ReturnType

PropertyTypeDescription
v$Ref<Validation<Vargs, unknown>>Vuelidatev$ 对象
formDataRef<Record<string, unknown>>表单数据对象 Ref
resetForm() => void重置表单函数,运行后 formData.value 会被重置为参数的 defaultData
createFormListItemCreateFormListItem表单项注册辅助工具函数

Function createFormListItem

表单项生成辅助函数

Params

PropertyTypeDescription
{ key, formType }{ key: string | string,string, formType: FormType }一个对象,包含 key ,formType, key 为表单数据对象 formData.value 的键名之一, 会由 ts 自动推导,formType 为目前支持的表单类型之一
configFormListItemFormListItem 配置项,会根据第一个参数的 formType 自动收窄类型

ReturnType

FormListItem

Function renderFormListItem

表单项生成辅助函数(自定义渲染)

Params

PropertyTypeDescription
render() => VNode自定义表单项渲染函数
configFormListItemRenderFormListItemRender 配置项

ReturnType

FormListItemRender

全局默认设置

createDefaultSettings

  • 参数:
    • formItemGiProps 传递给 formItemGi 的 props
    • formItemProps 传递给每个表单项的 props,函数,参数为 FormType
0.9.4

2 months ago

0.9.6

2 months ago

0.9.5

2 months ago

0.8.4

9 months ago

0.9.0

9 months ago

0.9.2

9 months ago

0.9.1

9 months ago

0.9.3

9 months ago

0.8.1

10 months ago

0.8.0

10 months ago

0.8.3

10 months ago

0.8.2

10 months ago

0.7.5

1 year ago

0.7.2

1 year ago

0.7.1

1 year ago

0.7.4

1 year ago

0.7.3

1 year ago

0.7.0

1 year ago

0.4.9

1 year ago

0.4.8

1 year ago

0.6.3

1 year ago

0.6.2

1 year ago

0.6.5

1 year ago

0.4.7

1 year ago

0.6.4

1 year ago

0.4.6

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago

0.6.1

1 year ago

0.4.3

1 year ago

0.6.0

1 year ago

0.4.2

1 year ago

0.3.4

1 year ago

0.3.3

1 year ago

0.3.2

1 year ago

0.3.1

1 year ago

0.3.0

1 year ago

0.2.8

1 year ago

0.2.7

1 year ago

0.2.6

1 year ago

0.2.5

1 year ago

0.2.4

1 year ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.4

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago