| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import type { VbenFormProps as CoreFormProps } from '@vben/common-ui';
- import type { ComponentType } from './component';
- import type { VbenFormSchema } from './form-schema';
- import { setupVbenForm, useVbenForm as useForm, z } from '@vben/common-ui';
- import { $t } from '@vben/locales';
- async function initSetupVbenForm() {
- setupVbenForm<ComponentType>({
- config: {
- // ant design vue组件库默认都是 v-model:value
- baseModelPropName: 'value',
- // 一些组件是 v-model:checked 或者 v-model:fileList
- 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;
- },
- },
- });
- }
- type VbenFormProps = Omit<CoreFormProps<ComponentType>, 'schema'> & {
- schema?: VbenFormSchema[];
- };
- function useVbenForm(options: VbenFormProps) {
- return useForm<ComponentType>(options as CoreFormProps<ComponentType>);
- }
- export { initSetupVbenForm, useVbenForm, z };
- export type { VbenFormProps, VbenFormSchema };
|