
import { IPublicTypeComponentMetadata, IPublicTypeSnippet, IPublicModelSettingField } from '@alilc/lowcode-types';

const OadpAttributeReferMeta: IPublicTypeComponentMetadata = {
  "componentName": "OadpAttributeRefer",
  "title": "引用属性",
  "docUrl": "",
  "category": "高级组件",
  "group": "低代码组件",
  "screenshot": "https://alifd.oss-cn-hangzhou.aliyuncs.com/fusion-cool/icons/icon-light/ic_light_select.png",
  "devMode": "proCode",
  "npm": {
    "package": "oadp-material",
    "version": "{{version}}",
    "exportName": "OadpAttributeRefer",
    "main": "src/index.tsx",
    "destructuring": true,
    "subName": ""
  },
  "configure": {
    "props": [
      {
        "name": "DataSetting",
        "title": "数据设置",
        "type": "group",
        "display": "block",
        "items": [   
          {
            "name": "name",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "表单标识",
                "en_US": "Name",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: name | 说明: 表单标识",
                "en_US": "prop: name | description: switch name",
              },
            },
            "setter": "StringSetter", 
            "supportVariable": false,
          }, 
          {
            "name": "id",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "唯一标识",
                "en_US": "ID",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: id | 说明: 唯一标识",
                "en_US": "prop: id | description: switch id",
              },
            },
            "setter": "StringSetter" 
          },
          { 
            "title": {
              "label": {
                "type": "i18n",
                "en-US": "Attribute",
                "zh-CN": "绑定属性"
              },
              "tip":  {
                "type": "i18n",
                "zh_CN": "属性: attribute | 说明:绑定属性",
                "en_US": "prop: attribute | description: Set Attribute.",
              },
            },
            "name": "attribute",
            "description": "绑定属性",
            "setter": "OadpAttributeSetter",
            "supportVariable": true,
          }, 
          {
            "name": "defaultValue",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "默认值",
                "en_US": "Default Value",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: defaultValue | 说明: 默认值",
                "en_US": "prop: defaultValue | description: Default Value",
              },
            },
            "setter": {
              "componentName": "OadpReferValueSetter",
              "props": (target: IPublicModelSettingField) => ({
                "attribute": target.parent.getPropValue('attribute'),
              }),
            },
            "supportVariable": true,
            "description": "默认值",
          },  
          { 
            "name": "field",
            "title": {
              "label": {
                "type": "i18n",
                "en-US": "Field Instacne",
                "zh-CN": "Field实例"
              },
              "tip":  {
                "type": "i18n",
                "zh_CN": "属性: field | 说明:Field实例。传 false 会禁用 field",
                "en_US": "prop: field | description: Field Instacne.",
              },
              "docUrl": "https://fusion.alibaba-inc.com/pc/component/basic/form#%E5%A4%8D%E6%9D%82%E5%8A%9F%E8%83%BD(Field)"
            },
            "description": "数据源",
            "setter": "ExpressionSetter",
            "supportVariable": true,
          },  
          { 
            "name": "filterRule",
            "title": {
              "label": {
                "type": "i18n",
                "en-US": "Filter Rule",
                "zh-CN": "过滤规则"
              },
              "tip":  {
                "type": "i18n",
                "zh_CN": "属性: filterRule | 说明:过滤规则。",
                "en_US": "prop: filterRule | description: Filter Rule.",
              },
              "docUrl": "https://fusion.alibaba-inc.com/pc/component/basic/form#%E5%A4%8D%E6%9D%82%E5%8A%9F%E8%83%BD(Field)"
            },
            "description": "过滤规则",
            "setter": {
              "componentName": "OadpAttributeFilterSetter",
              "props": (target: IPublicModelSettingField) => ({
                "attribute": target.parent.getPropValue('attribute'),
              }),
            },
            "supportVariable": true,
          }, 

        ]
      },
      {
        "name": "DisplaySetting",
        "title": "显示设置",
        "type": "group",
        "display": "block",
        "items": [ 
          {
            "name": "label",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "标题",
                "en_US": "Label",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: label | 说明: 标题",
                "en_US": "prop: label | description: label content",
              },
            },
            "setter": "StringSetter",
            "description": "标题",
          },
          {
            "name": "placeholder",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "提示",
                "en_US": "Placeholder",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: placeholder | 说明: 提示",
                "en_US": "prop: placeholder | description: placeholder",
              },
            },
            "setter": "StringSetter",
            "supportVariable": true,
          }, 
          {
            "name": "size",
            "title": {
              "label": {
                "type": "i18n",
                "en-US": "Size",
                "zh-CN": "尺寸模式"
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: size | 说明: 尺寸模式，可选值:small=紧凑模式, medium=普通模式, large=放大模式。默认为:medium。",
                "en_US": "prop: size | description: Size mode, optional values: small=compact mode, medium=normal mode, large=large mode. The default is: medium.",
              },
            },
            "description": "属性: size | 说明: 尺寸模式，可选值:small=紧凑模式, medium=普通模式, large=放大模式。默认为:medium。",
            "setter": {
              "componentName": "RadioGroupSetter",
              "props": {
                "dataSource": [ 
                  {
                    "label": "普通模式",
                    "value": "medium"
                  },
                  {
                    "label": "紧凑模式",
                    "value": "small"
                  },
                  {
                    "label": "放大模式",
                    "value": "large"
                  }
                ],
                "options": [
                  {
                    "label": "普通模式",
                    "value": "medium"
                  },
                  {
                    "label": "紧凑模式",
                    "value": "small"
                  },
                  {
                    "label": "放大模式",
                    "value": "large"
                  }
                ]
              },
              "initialValue": "medium"
            }
          },  
          {
            "name": "mode",
            "title": {
              "label": {
                "type": "i18n",
                "en-US": "Mode",
                "zh-CN": "选择模式"
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: mode | 说明: 选择模式，可选值:single=单选模式, multiple=多选模式, tag=标签模式。默认为:single。",
                "en_US": "prop: mode | description: Select mode, optional values: single=single selection mode, multiple=multiple selection mode, tag=label mode. The default is: single.",
              },
            },
            "description": "属性: mode | 说明: 选择模式，可选值:single=单选模式, multiple=多选模式, tag=标签模式。默认为:single。",
            "setter": {
              "componentName": "RadioGroupSetter",
              "props": {
                "dataSource": [ 
                  {
                    "label": "单选模式",
                    "value": "single"
                  },
                  {
                    "label": "多选模式",
                    "value": "multiple"
                  },
                  {
                    "label": "标签模式",
                    "value": "tag"
                  }
                ],
                "options": [
                  {
                    "label": "单选模式",
                    "value": "single"
                  },
                  {
                    "label": "多选模式",
                    "value": "multiple"
                  },
                  {
                    "label": "标签模式",
                    "value": "tag"
                  }
                ]
              },
              "initialValue": "single"
            }
          },  
          {
            "name": "hasBorder",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "显示边框",
                "en_US": "hasBorder",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: hasBorder | 说明: 显示边框",
                "en_US": "prop: hasBorder | description: hasBorder",
              },
            },
            "setter": "BoolSetter",
            "supportVariable": false,
            "description": "显示边框",
          },
          {
            "name": "hasArrow",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "显示箭头",
                "en_US": "hasArrow",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: hasArrow | 说明: 显示箭头",
                "en_US": "prop: hasArrow | description: hasArrow",
              },
            },
            "setter": "BoolSetter",
            "supportVariable": false,
            "description": "显示箭头",
          },
          {
            "name": "hasClear",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "显示清除",
                "en_US": "hasClear",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: hasClear | 说明: 显示清除",
                "en_US": "prop: hasClear | description: hasClear",
              },
            },
            "setter": "BoolSetter",
            "supportVariable": false,
            "description": "显示清除",
          },
        ]
      }, 
      {
        "name": "InteractionSetting",
        "title": "交互设置",
        "type": "group",
        "display": "block",
        "items": [ 
          {
            "name": "required",
            "title": {
              "label": {
                "type": "i18n",
                "en-US": "required",
                "zh-CN": "必填"
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: required | 说明: 必填",
                "en_US": "prop: required | description: required",
              },
            },
            "description": "必填",
            "setter": {
              "componentName": "BoolSetter",
              "isRequired": false,
              "initialValue": false
            }
          },
          {
            "name": "readOnly",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "只读",
                "en_US": "readOnly",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: readOnly | 说明: 是否只读，只读模式下可以展开弹层但不能选",
                "en_US": "prop: readOnly | description: Whether it is read-only, read-only mode can expand the pop-up layer but cannot select",
              },
            },
            "setter": "BoolSetter",
            "supportVariable": false,
            "description": "只读",
          },  
          {
            "name": "disabled",
            "title": {
              "label": {
                "type": "i18n",
                "zh_CN": "禁用",
                "en_US": "Disabled",
              },
              "tip": {
                "type": "i18n",
                "zh_CN": "属性: disabled | 说明: 禁用",
                "en_US": "prop: disabled | description: disabled",
              },
            },
            "setter": "BoolSetter",
            "supportVariable": false,
            "description": "禁用",
          },  
        ]
      },
    ],
    "supports": {
      "style": true,
      "events": [
        {
          "name": "onChange",
          "propType": "func",
          "description": "值改变时触发",
        },
        {
          "name": "onFocus",
          "propType": "func",
          "description": "选中焦点时触发",
        },
        {
          "name": "onBlur",
          "propType": "func",
          "description": "失去焦点时触发",
        },
        {
          "name": "onSearch",
          "propType": "func",
          "description": "搜索时触发",
        },
      ],
    },
    "component": {}
  }
};
const snippets: IPublicTypeSnippet[] = [
  {
    "title": "引用属性",
    "screenshot": "https://alifd.oss-cn-hangzhou.aliyuncs.com/fusion-cool/icons/icon-light/ic_light_select.png",
    "schema": {
      "componentName": "OadpAttributeRefer", 

      // "props": {
      //   "name": "referEntity",
      //   "placeholder": "请选择内容",
      //   "required": false,
      //   "disabled": false,
      //   "size": "medium",
      //   "style": {
      //     "width": 256
      //   },
      //   "hasArrow": true,
      //   "hasClear": true,
      //   "hasBorder": true, 
      //   "mode": "single"
      // },
      "props": {    
        "placeholder": "请选择内容",
        "defaultValue": "item1", 
        "required": false, 
        "disabled": false, 
        "size": "medium",
        "style": { 
          "width": 256 
        },
        "hasArrow": true,
        "hasClear": true,
        "hasBorder": true,
        "dataSource": [
          {
            "value": "item1",
            "label": "选项一"
          },
          {
            "value": "item2",
            "label": "选项二"
          },
          {
            "value": "item3",
            "label": "选项三"
          }
        ] 
      },
    }
  }
];

export default {
  ...OadpAttributeReferMeta,
  snippets
};
