import type { MetaContainerItem } from 'open-data-v/base'
import { ComponentGroup, CustomComponent, DataMode, FormType } from 'open-data-v/base'
import { h, shallowRef } from 'vue'

import ScrollTableForm from './Form.vue'

export const componentName = 'ScrollTable'
class ScrollTableComponent extends CustomComponent {
  constructor(id?: string, name?: string, icon?: string) {
    super({
      component: componentName,
      group: ComponentGroup.TABLE,
      name: name ? name : '滚动表格',
      id,
      width: 400,
      height: 100,
      icon,
      dataMode: DataMode.UNIVERSAL
    })
  }

  _prop: MetaContainerItem[] = [
    {
      label: '表头',
      prop: 'header',
      children: [
        {
          prop: 'header',
          label: '表头数据',
          type: FormType.ARRAY,
          props: {
            type: 'dynamic',
            defaultValue: ['姓名', '年龄', '性别']
          }
        },
        {
          prop: 'headerBGC',
          label: '背景色',
          type: FormType.COLOR,
          props: {
            defaultValue: '#00BAFF'
          }
        },
        {
          prop: 'headerHeight',
          label: '高度',
          type: FormType.NUMBER,
          props: {
            defaultValue: 35,
            suffix: () => h('span', {}, 'px')
          }
        },
        {
          prop: 'index',
          label: '是否显示索引',
          type: FormType.SWITCH,
          props: {
            defaultValue: false
          }
        },
        {
          prop: 'indexHeader',
          label: '索引显示',
          type: FormType.TEXT,
          props: {
            defaultValue: '#'
          }
        }
      ]
    },
    {
      label: '行设置',
      prop: 'rows',
      children: [
        {
          prop: 'data',
          label: '行配置',
          type: FormType.CUSTOM,
          showLabel: false,
          props: {
            componentType: shallowRef(ScrollTableForm),
            defaultValue: {
              height: 30,
              oddRowBGC: '#003B51',
              evenRowBGC: '#0A2732'
            }
          }
        }
      ]
    }
  ]

  get exampleData() {
    return [
      {
        name: '张三',
        age: 23,
        sex: '男'
      },
      {
        name: '张三',
        age: 23,
        sex: '男'
      },
      {
        name: '张三',
        age: 23,
        sex: '男'
      },
      {
        name: '张三',
        age: 23,
        sex: '男'
      },
      {
        name: '张三',
        age: 23,
        sex: '男'
      }
    ]
  }
}

export default ScrollTableComponent
