feat: add function support for formItemClass prop (#6511)
* feat: add function support for formItemClass prop * feat: add try-catch to formItemClass function * fix: formItemClass function ts error --------- Co-authored-by: sqchen <chenshiqi@sshlx.com>pull/176/head
							parent
							
								
									1bc5d2986b
								
							
						
					
					
						commit
						07b64ad384
					
				| 
						 | 
				
			
			@ -395,7 +395,7 @@ export interface FormCommonConfig {
 | 
			
		|||
   * 所有表单项的栅格布局
 | 
			
		||||
   * @default ""
 | 
			
		||||
   */
 | 
			
		||||
  formItemClass?: string;
 | 
			
		||||
  formItemClass?: (() => string) | string;
 | 
			
		||||
  /**
 | 
			
		||||
   * 隐藏所有表单项label
 | 
			
		||||
   * @default false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,12 @@ import type {
 | 
			
		|||
import { computed } from 'vue';
 | 
			
		||||
 | 
			
		||||
import { Form } from '@vben-core/shadcn-ui';
 | 
			
		||||
import { cn, isString, mergeWithArrayOverride } from '@vben-core/shared/utils';
 | 
			
		||||
import {
 | 
			
		||||
  cn,
 | 
			
		||||
  isFunction,
 | 
			
		||||
  isString,
 | 
			
		||||
  mergeWithArrayOverride,
 | 
			
		||||
} from '@vben-core/shared/utils';
 | 
			
		||||
 | 
			
		||||
import { provideFormRenderProps } from './context';
 | 
			
		||||
import { useExpandable } from './expandable';
 | 
			
		||||
| 
						 | 
				
			
			@ -110,6 +115,17 @@ const computedSchema = computed(
 | 
			
		|||
          ? keepIndex <= index
 | 
			
		||||
          : false;
 | 
			
		||||
 | 
			
		||||
      // 处理函数形式的formItemClass
 | 
			
		||||
      let resolvedSchemaFormItemClass = schema.formItemClass;
 | 
			
		||||
      if (isFunction(schema.formItemClass)) {
 | 
			
		||||
        try {
 | 
			
		||||
          resolvedSchemaFormItemClass = schema.formItemClass();
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
          console.error('Error calling formItemClass function:', error);
 | 
			
		||||
          resolvedSchemaFormItemClass = '';
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return {
 | 
			
		||||
        colon,
 | 
			
		||||
        disabled,
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +149,7 @@ const computedSchema = computed(
 | 
			
		|||
          'flex-shrink-0',
 | 
			
		||||
          { hidden },
 | 
			
		||||
          formItemClass,
 | 
			
		||||
          schema.formItemClass,
 | 
			
		||||
          resolvedSchemaFormItemClass,
 | 
			
		||||
        ),
 | 
			
		||||
        labelClass: cn(labelClass, schema.labelClass),
 | 
			
		||||
      };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -174,10 +174,10 @@ export interface FormCommonConfig {
 | 
			
		|||
   */
 | 
			
		||||
  formFieldProps?: FormFieldOptions;
 | 
			
		||||
  /**
 | 
			
		||||
   * 所有表单项的栅格布局
 | 
			
		||||
   * 所有表单项的栅格布局,支持函数形式
 | 
			
		||||
   * @default ""
 | 
			
		||||
   */
 | 
			
		||||
  formItemClass?: string;
 | 
			
		||||
  formItemClass?: (() => string) | string;
 | 
			
		||||
  /**
 | 
			
		||||
   * 隐藏所有表单项label
 | 
			
		||||
   * @default false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue