package com.qqchen.deploy.backend.framework.annotation.formily;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FormilyField {
    /**
     * 字段标题
     */
    String title();

    /**
     * 字段描述
     */
    String description() default "";

    /**
     * 字段类型
     */
    String type() default "string";

    /**
     * 默认值
     */
    String defaultValue() default "";

    /**
     * 组件类型
     */
    String component() default "Input";

    /**
     * 装饰器类型
     */
    String decorator() default "FormItem";

    /**
     * 字段顺序
     */
    int order() default 0;

    /**
     * 组件属性配置
     */
    FormilyComponentProps props() default @FormilyComponentProps;

    /**
     * 装饰器属性配置
     */
    FormilyDecoratorProps decoratorProps() default @FormilyDecoratorProps;

    /**
     * 验证规则
     */
    FormilyValidator[] validators() default {};

    /**
     * 联动配置
     */
    FormilyReaction[] reactions() default {};

    /**
     * Map类型配置
     */
    FormilyMapConfig mapConfig() default @FormilyMapConfig;

    /**
     * 编辑模式
     */
    String pattern() default "editable";

    /**
     * 展示模式
     */
    String display() default "visible";

    /**
     * 是否隐藏
     */
    boolean hidden() default false;

    /**
     * 提示信息
     */
    String tooltip() default "";

    /**
     * 是否必填
     */
    boolean required() default false;

    /**
     * 栅格跨度
     */
    int gridSpan() default 1;
} 