// 默认自定义表单组件


/**
 * 模块模板
 */
export const subfieldModuleTemplate = {
  defaultSubfieldModuleName: "",
  subfieldModuleName: "",
  subfieldModuleNameRules: {
    trigger: ["blur"],
    validator: (rule, value, callback) => {
      if (!value && !value?.toString()?.trim()) {
        return callback(new Error("请输入分栏名称"));
      }
      callback();
    }
  },
  subfieldModulePlaceholder: "请输入分栏标题",
  edit: false,
  children: []
};

export const defaultComOptions = [
  // 单行文本
  {
    // 组件类型
    comType: "text",
    // 组件展示图标
    comShowIcon: "icon_single_line_text@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {},
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "单行文本",
      // 组件宽度
      width: 100,
      isError: false,
      allowDefaultValue: true
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: "",
      // 输入值为空提示
      placeholder: "请输入"
    }
  },
  // 多行文本
  {
    // 组件类型
    comType: "textarea",
    // 组件展示图标
    comShowIcon: "icon_multiline_text@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {},
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "多行文本",
      // 组件宽度
      width: 100,
      isError: false,
      allowDefaultValue: true
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: "",
      // 输入值为空提示
      placeholder: "请输入"
    }
  },
  // 下拉选项
  {
    // 组件类型
    comType: "select",
    // 组件展示图标
    comShowIcon: "icon_drop_down@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {
        validator: (rules, value, callback) => {
          const type = Object.prototype.toString.call(value);
          if (type == "[object String]" || type == "[object Array]") {
            callback();
          }
          callback(new Error("类型错误"));
        }
      },
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "下拉选项",
      // 组件宽度
      width: 50,
      selectOptions: [],
      // 是否多选
      isMultiple: false,
      isError: false,
      allowDefaultValue: false
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: "",
      // 输入值为空提示
      placeholder: "请选择"
    }
  },
  // 日期时间
  {
    // 组件类型
    comType: "date",
    // 组件展示图标
    comShowIcon: "icon_data_time@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {},
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "日期/时间",
      // 组件宽度
      width: 50,
      isError: false,
      allowDefaultValue: false
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: "",
      // 输入值为空提示
      placeholder: "请选择"
    }
  },
  // 电话
  {
    // 组件类型
    comType: "phone",
    // 组件展示图标
    comShowIcon: "icon_phone@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {
        trigger: ["blur"],
        validator: (rule, value, callback) => {
          const phoneReg = /^1[3-9]\d{9}$/;
          if (value && !phoneReg.test(value)) {
            return callback(new Error(`请输入正确的联系电话`));
          }
          return callback();
        }
      },
      requiredRules: {
        trigger: ["blur"],
        validator: (rule, value, callback) => {
          const phoneReg = /^1[3-9]\d{9}$/;
          if (!value && !value?.toString()?.trim()) {
            return callback(new Error(`请输入联系电话`));
          }
          if (!phoneReg.test(value)) {
            return callback(new Error(`请输入正确的联系电话`));
          }
          return callback();
        }
      },
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "电话",
      // 组件宽度
      width: 50,
      isError: false,
      allowDefaultValue: false
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: "",
      // 输入值为空提示
      placeholder: "请输入"
    }
  },
  // 电子邮箱
  {
    // 组件类型
    comType: "email",
    // 组件展示图标
    comShowIcon: "icon_email@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {
        trigger: ["blur"],
        validator: (rule, value, callback) => {
          const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
          if (value && !reg.test(value)) {
            return callback(new Error(`请输入正确的电子邮箱`));
          }
          return callback();
        }
      },
      requiredRules: {
        trigger: ["blur"],
        validator: (rule, value, callback) => {
          const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
          if (!value && !value?.toString()?.trim()) {
            return callback(new Error("请输入邮箱"));
          }
          if (!reg.test(value)) {
            return callback(new Error("请输入正确的邮箱"));
          }
          return callback();
        }
      },
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "电子邮箱",
      // 组件宽度
      width: 50,
      isError: false,
      allowDefaultValue: false
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: "",
      // 输入值为空提示
      placeholder: "请输入"
    }
  },
  {
    // 图片类型
    comType: "photo",
    // 组件展示图标
    comShowIcon: "icon_img@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {},
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "图片",
      // 组件宽度
      width: 100,
      limit: -1,
      astrict: false,
      isError: false,
      allowDefaultValue: false
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: [],
      // 输入值为空提示
      placeholder: "请选择"
    }
  },
  {
    // 文件类型
    comType: "file",
    // 组件展示图标
    comShowIcon: "icon_attachments@2x.png",
    // 验证通过
    checkedAllow: false,
    // 表单属性
    formAttribute: {
      // 验证规则
      rules: {},
      // 是否必填
      required: false,
      // 字段名称
      fieldName: "",
      // 展示label
      label: "附件",
      // 组件宽度
      width: 100,
      limit: -1,
      astrict: false,
      isError: false,
      allowDefaultValue: false
    },
    // 组件属性
    componentAttribute: {
      // 绑定的值
      value: [],
      // 输入值为空提示
      placeholder: "请选择"
    }
  },
];