export default {
  mode: ['pc', 'mobile-first'],
  apis: [
    {
      name: 'dropdown',
      type: 'component',
      props: [
        {
          name: 'border',
          type: 'Boolean',
          defaultValue: '',
          desc: {
            'zh-CN': '是否展示边框。默认为 false。在 split-button 属性为 false 时生效',
            'en-US': ''
          },
          mode: ['mobile-first'],
          mfDemo: ''
        },
        {
          name: 'disabled',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '是否禁用',
            'en-US': 'Is it disabled'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'disabled',
          mfDemo: ''
        },
        {
          name: 'hide-on-click',
          type: 'boolean',
          defaultValue: 'true',
          desc: {
            'zh-CN': '点击菜单项后是否收起菜单。默认点击后收起',
            'en-US': 'Whether to collapse the menu after clicking on the menu item. Collapse after clicking by default'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'hide-on-click',
          mfDemo: ''
        },
        {
          name: 'hide-timeout',
          type: 'number',
          defaultValue: '150',
          desc: {
            'zh-CN': '延时多久收起下拉菜单,单位毫秒。注意:仅在 trigger 为 hover 时有效',
            'en-US':
              'How long is the delay in retracting the pull-down menu, in milliseconds. Note: Only valid when trigger is hover'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'trigger',
          mfDemo: ''
        },
        {
          name: 'inherit-width',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '下拉弹框的最小宽度是否继承触发源的宽度,默认不继承',
            'en-US':
              'Whether the minimum width of the dropdown pop-up inherit the width of the trigger source.It is not inherited by default'
          },
          mode: ['pc'],
          pcDemo: 'inherit-width'
        },
        {
          name: 'menu-options',
          typeAnchorName: 'IMenuOption',
          type: 'IMenuOption',
          defaultValue:
            '<pre>\n{\n  options:[],\n  textField:"label",\n  popperClass:"",\n  placement:"bottom-end"\n}\n</pre>',
          desc: {
            'zh-CN': '配置式且只使用 tiny-dropdown 组件时使用',
            'en-US': 'Used when configuring and only using the tiny dropdown component'
          },
          mode: ['pc'],
          pcDemo: 'options'
        },
        {
          name: 'round',
          type: 'Boolean',
          defaultValue: '',
          desc: {
            'zh-CN': '是否展示圆角。默认为 false。在 border 属性为 true 时生效',
            'en-US': ''
          },
          mode: ['mobile-first'],
          mfDemo: ''
        },
        {
          name: 'show-icon',
          type: 'boolean',
          defaultValue: 'true',
          desc: {
            'zh-CN': '是否显示下拉触发源图标',
            'en-US': 'Is the dropdown trigger source icon displayed'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'show-icon',
          mfDemo: ''
        },
        {
          name: 'show-self-icon',
          type: 'Boolean',
          defaultValue: '',
          desc: {
            'zh-CN': '更多图标下拉菜单。默认值:false',
            'en-US': ''
          },
          mode: ['mobile-first'],
          mfDemo: ''
        },
        {
          name: 'show-timeout',
          type: 'number',
          defaultValue: '250',
          desc: {
            'zh-CN': '延时多久展开下拉菜单,单位毫秒。注意:仅在 trigger 为 hover 时有效',
            'en-US':
              'How long is the delay to expand the drop-down menu, in milliseconds. Note: Only valid when trigger is hover'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'trigger',
          mfDemo: ''
        },
        {
          name: 'single-button',
          type: 'Boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '下拉触发元素呈现为按钮组。',
            'en-US': 'The drop-down trigger element is rendered as a button group.'
          },
          mode: ['mobile-first'],
          mfDemo: 'button-dropdown'
        },
        {
          name: 'size',
          type: '"medium" | "small" | "mini"',
          defaultValue: '',
          desc: {
            'zh-CN': '菜单尺寸。注意:只在 split-button为 true 的情况下生效',
            'en-US': 'Menu size. Note: Only takes effect when split-button is true'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'size',
          mfDemo: ''
        },
        {
          name: 'split-button',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '下拉触发元素呈现为按钮',
            'en-US': 'Dropdown trigger elements are presented as button groups'
          },
          mode: ['pc'],
          pcDemo: 'split-button'
        },
        {
          name: 'suffix-icon',
          type: 'Component',
          defaultValue: '',
          desc: {
            'zh-CN': '下拉触发源图标',
            'en-US': 'Dropdown trigger source icon'
          },
          mode: ['pc'],
          pcDemo: 'show-icon'
        },
        {
          name: 'tabindex',
          type: 'number',
          defaultValue: '0',
          desc: {
            'zh-CN': '初始化触发元素的原生属性 tabindex',
            'en-US': 'Initialize the native attribute tabindex of the triggering element'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: '',
          mfDemo: ''
        },
        {
          name: 'title',
          type: 'string',
          defaultValue: "'下拉菜单'",
          desc: {
            'zh-CN': '自定义触发源的文本',
            'en-US': 'Text for custom trigger source'
          },
          mode: ['pc'],
          pcDemo: 'options'
        },
        {
          name: 'trigger',
          type: "'hover' | 'click' | 'contextmenu'",
          defaultValue: "'hover'",
          desc: {
            'zh-CN': '触发下拉的方式',
            'en-US': 'Trigger the dropdown method'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'trigger',
          mfDemo: '',
          meta: {
            stable: '3.28.0'
          }
        },

        {
          name: 'type',
          typeAnchorName: 'IButtonType',
          type: 'IButtonType',
          defaultValue: '',
          desc: {
            'zh-CN': '按钮类型。注意:只在 split-button 为 true 的情况下有效',
            'en-US': 'Button type. Note: Only valid if split button is true'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'split-button',
          mfDemo: ''
        },
        {
          name: 'v-model:visible',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '手动控制下拉弹框显隐,优先级高于trigger',
            'en-US': 'Manually control the display and hide of the dropdown menu, with priority higher than the trigger'
          },
          mode: ['pc'],
          pcDemo: 'visible'
        },
        {
          name: 'visible-arrow',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '下拉弹框是否显示箭头,默认不显示',
            'en-US': 'Indicates whether to display arrows. The default value is not displayed'
          },
          mode: ['pc'],
          pcDemo: 'visible-arrow'
        },
        {
          name: 'lazy-show-popper',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '是否懒加载下拉菜单及内部的项,以优化性能,默认初始全加载菜单及内部项。',
            'en-US':
              'Indicates whether to lazily load the drop-down menu and internal items to optimize performance. The default value is false. The menu and internal items are loaded initially.'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'lazy-show-popper',
          mfDemo: '',
          meta: {
            experimental: '3.18.0'
          }
        }
      ],
      events: [
        {
          name: 'button-click',
          type: '() => void',
          defaultValue: '',
          desc: {
            'zh-CN': '监听左侧按钮点击事件,仅 split-button 为 true 时生效',
            'en-US': 'Listen for the left button click event, only effective when split-button is true'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'events',
          mfDemo: ''
        },
        {
          name: 'item-click',
          typeAnchorName: 'IItemClickParam',
          type: '(data:IItemClickParam) => void',
          defaultValue: '',
          desc: {
            'zh-CN': '监听点击菜单项事件',
            'en-US': 'Listen for menu item click events'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'events',
          mfDemo: ''
        },
        {
          name: 'visible-change',
          type: '(status:boolean) => void',
          defaultValue: '',
          desc: {
            'zh-CN': '监听下拉框的显示或隐藏状态',
            'en-US': 'Monitor the display or hidden status of the dropdown box'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'events',
          mfDemo: ''
        }
      ],
      methods: [],
      slots: [
        {
          name: 'default',
          type: '',
          defaultValue: '',
          desc: {
            'zh-CN': '自定义触发源文本区域。 注意: 必须是一个元素或者或者组件',
            'en-US': 'Customize the trigger source text area. Note: must be an element or component'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'basic-usage',
          mfDemo: ''
        },
        {
          name: 'dropdown',
          type: '',
          defaultValue: '',
          desc: {
            'zh-CN': '自定义下拉列表区域,通常使用 tiny-dropdown-menu 组件',
            'en-US': 'Customize the dropdown list area, usually using the tiny dropdown menu component'
          },
          mode: ['pc', 'mobile-first'],
          pcDemo: 'basic-usage',
          mfDemo: ''
        }
      ]
    },
    {
      name: 'dropdown-menu',
      type: 'component',
      props: [
        {
          name: 'custom-class',
          type: 'String',
          defaultValue: '',
          desc: {
            'zh-CN': '设置弹出下拉自定义样式。',
            'en-US': 'Set the custom style of the pop-up drop-down list.'
          },
          mode: ['mobile-first']
        },
        {
          name: 'max-height',
          type: 'Number | String',
          defaultValue: '400',
          desc: {
            'zh-CN': '设置下拉最大高度。',
            'en-US': 'Sets the maximum pull-down height. '
          },
          mode: ['mobile-first'],
          mfDemo: 'max-height'
        },
        {
          name: 'multi-stage',
          type: 'Boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '设置二级下拉菜单。',
            'en-US': 'Sets the level-2 drop-down list. '
          },
          mode: ['mobile-first'],
          mfDemo: 'multi-stage'
        },
        {
          name: 'options',
          typeAnchorName: 'IItemData',
          type: 'IItemData []',
          defaultValue: '[]',
          desc: {
            'zh-CN': '通过配置式设置菜单项的属性',
            'en-US': 'Setting menu item properties through configuration'
          },
          mode: ['pc'],
          pcDemo: 'options'
        },
        {
          name: 'placement',
          typeAnchorName: 'IPlacementType',
          type: 'IPlacementType',
          defaultValue: "'bottom-end'",
          desc: {
            'zh-CN': '菜单弹出位置',
            'en-US': 'Menu pop-up location '
          },
          mode: ['pc'],
          pcDemo: 'placement',
          meta: {
            experimental: '3.21.0'
          }
        },
        {
          name: 'popper-class',
          type: 'string',
          defaultValue: '',
          desc: {
            'zh-CN': '下拉弹框的类名,用于自定义样式',
            'en-US': 'The class name of the dropdown pop-up box, used for customizing styles'
          },
          mode: ['pc'],
          pcDemo: 'basic-usage'
        },
        {
          name: 'text-field',
          type: 'string',
          defaultValue: "'label'",
          desc: {
            'zh-CN': '菜单项文本的字段,结合 options 属性使用',
            'en-US': 'The field of menu item text, used in conjunction with the options attribute'
          },
          mode: ['pc'],
          pcDemo: 'options'
        }
      ],
      events: [],
      methods: [],
      slots: [
        {
          name: 'default',
          defaultValue: '',
          desc: {
            'zh-CN': '下拉弹框区域,通常使用 tiny-dropdown-item 组件',
            'en-US': 'Dropdown the pop-up area, usually using the tiny-dropdown item component'
          },
          mode: ['pc'],
          pcDemo: 'basic-usage'
        }
      ]
    },
    {
      name: 'dropdown-item',
      type: 'component',
      props: [
        {
          name: 'disabled',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '是否禁用',
            'en-US': 'Is it disabled'
          },
          mode: ['pc'],
          pcDemo: 'disabled'
        },
        {
          name: 'divided',
          type: 'boolean',
          defaultValue: 'false',
          desc: {
            'zh-CN': '是否显示分割线',
            'en-US': 'Show split lines'
          },
          mode: ['pc'],
          pcDemo: 'events'
        },
        {
          name: 'icon',
          type: 'Component',
          defaultValue: '',
          desc: {
            'zh-CN': '内嵌图标',
            'en-US': 'Embedded icon'
          },
          mode: ['pc'],
          pcDemo: 'events'
        },
        {
          name: 'item-data',
          typeAnchorName: 'IItemData',
          type: 'IItemData',
          defaultValue: '',
          desc: {
            'zh-CN': '菜单项的配置信息',
            'en-US': 'Configuration information for menu items'
          },
          mode: ['pc'],
          pcDemo: 'events'
        },
        {
          name: 'label',
          type: 'string',
          defaultValue: '',
          desc: {
            'zh-CN': '菜单项的文本',
            'en-US': 'Text for menu items'
          },
          mode: ['pc'],
          pcDemo: 'events'
        },
        {
          name: 'level',
          type: 'String',
          defaultValue: '',
          desc: {
            'zh-CN': '设置二级下拉菜单标志',
            'en-US': 'Sets the level-2 drop-down menu flag.'
          },
          mode: ['mobile-first']
        },
        {
          name: 'tip',
          type: 'string | Function',
          defaultValue: '',
          desc: {
            'zh-CN': '提示信息内容,支持字符串或函数。函数接收参数 { itemData, vm }',
            'en-US': 'Tooltip content, supports string or function. Function receives parameters { itemData, vm }'
          },
          mode: ['pc'],
          pcDemo: 'tip'
        },
        {
          name: 'tip-position',
          type: 'string',
          defaultValue: "'right'",
          desc: {
            'zh-CN': '提示信息的位置,可选值:top / right / bottom / left',
            'en-US': 'Position of tooltip, optional values: top / right / bottom / left'
          },
          mode: ['pc'],
          pcDemo: 'tip'
        },
        {
          name: 'tip-effect',
          type: 'string',
          defaultValue: "'light'",
          desc: {
            'zh-CN': '提示信息的主题,可选值:light(浅色)/ dark(深色)',
            'en-US': 'Theme of tooltip, optional values: light / dark'
          },
          mode: ['pc'],
          pcDemo: 'tip'
        },
      ],
      events: [],
      methods: [],
      slots: [
        {
          name: 'default',
          defaultValue: '',
          desc: {
            'zh-CN': '菜单项文本区域',
            'en-US': 'Menu item text area'
          },
          mode: ['pc'],
          pcDemo: 'basic-usage'
        }
      ]
    }
  ],
  types: [
    {
      name: 'IMenuOption',
      type: 'interface',
      depTypes: ['IItemData'],
      code: `
interface IMenuOption {
  options: IItemData[]
  textField?: string
  popperClass?: string
  placement?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end'
}        
`
    },
    {
      name: 'IItemClickParam',
      type: 'interface',
      depTypes: ['IItemData'],
      code: `        
interface IItemClickParam {
  itemData: IItemData
  // dropdownItem 组件的实例
  vm: {
    selected: boolean
    textField: string
    tipPosition: string
    $el: HTMLElement
  }
}
`
    },
    {
      name: 'IItemData',
      type: 'interface',
      code: `        
interface IItemData {
  label?: string
  disabled?: boolean
  divided?: boolean
  tip?: string | ((params: { itemData: IItemData, vm: any }) => string)
  tipPosition?: 'top' | 'right' | 'bottom' | 'left'
  tipEffect?: 'light' | 'dark'
  children?: IItemData[]
  icon?: Component
}
`
    },
    {
      name: 'IButtonType',
      type: 'type',
      code: `        
type IButtonType = 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'
`
    },
    {
      name: 'IPlacementType',
      type: 'type',
      code: `        
type IPlacementType =  'bottom-start' | 'bottom-end'
`
    }
  ]
}