12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import type {
- VbenFormSchema as FormSchema,
- VbenFormProps,
- } from '@vben/common-ui';
- import type { ComponentType } from './component';
- import { setupVbenForm, useVbenForm as useForm, z } from '@vben/common-ui';
- import { $t } from '@vben/locales';
- import { initComponentAdapter } from './component';
- initComponentAdapter();
- setupVbenForm<ComponentType>({
- config: {
- baseModelPropName: 'value',
- // naive-ui组件不接受onChang事件,所以需要禁用
- disabledOnChangeListener: true,
- // naive-ui组件的空值为null,不能是undefined,否则重置表单时不生效
- emptyStateValue: null,
- modelPropNameMap: {
- Checkbox: 'checked',
- Radio: 'checked',
- Switch: 'checked',
- Upload: 'fileList',
- },
- },
- defineRules: {
- required: (value, _params, ctx) => {
- if (value === undefined || value === null || value.length === 0) {
- return $t('ui.formRules.required', [ctx.label]);
- }
- return true;
- },
- selectRequired: (value, _params, ctx) => {
- if (value === undefined || value === null) {
- return $t('ui.formRules.selectRequired', [ctx.label]);
- }
- return true;
- },
- },
- });
- const useVbenForm = useForm<ComponentType>;
- export { useVbenForm, z };
- export type VbenFormSchema = FormSchema<ComponentType>;
- export type { VbenFormProps };
|