import PropTypes from 'ant-design-vue/es/_util/vue-types'

export var filterDropdownColumn = {
  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
  key: PropTypes.string.def,
  fixed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
  onReset: PropTypes.func,
  onSave: PropTypes.func
}

export default (obj = {}) => {
  return {
    ...obj,
    editorRowTable: PropTypes.bool.def(false),
    delayTime: PropTypes.number.def(500),
    dataSource: PropTypes.array,
    footing: PropTypes.oneOfType([PropTypes.array]),
    remoteUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]),
    remoteParams: PropTypes.oneOfType([PropTypes.string,PropTypes.array, PropTypes.object]),
    remoteData: PropTypes.oneOfType([PropTypes.string,PropTypes.array, PropTypes.object]),
    remoteBefore: PropTypes.func,
    remoteForItem: PropTypes.func,
    done: PropTypes.func,
    activeKey: PropTypes.any,
    doneBefore: PropTypes.func,
    autoLoad: PropTypes.bool.def(true),
    hideDefaultSelections: PropTypes.bool.def(true),
    rowDrag: PropTypes.bool.def(false),
    autoColWidth: PropTypes.bool.def(false),
    doneError: PropTypes.func,
    tableLayout: PropTypes.string.def('fixed'),
    dragle: PropTypes.bool.def(false),
    autoWidth: PropTypes.bool.def(false),
    hasRowCount: PropTypes.bool.def(true), //是否显示序号
    hasResetBtn: PropTypes.bool.def(true),//是否显示刷新按钮
    rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).def('_row_count'),
    bodyStyle: PropTypes.any,
    rowSelectFixed: PropTypes.bool.def(true),
    showHeader: PropTypes.bool.def(true),
    defaultCountKey:PropTypes.string.def('_row_count'),
    filterDropdownColumn: PropTypes.oneOfType([PropTypes.object, PropTypes.bool, PropTypes.func]).def({
      width: 40,
      fixed: false
    }),
    pagination: PropTypes.oneOfType([PropTypes.number, PropTypes.bool, PropTypes.object,PropTypes.func]).def(15),
    selectedRowKeys: PropTypes.array,
    customCell: PropTypes.func,
    rowSelectType: PropTypes.oneOf(['radio', 'checkbox', 1, 2, 0, false]).def(2),
    hasRowSelectCheck: PropTypes.bool.def(false),
    tree: PropTypes.bool.def(false),
    getCheckboxProps: PropTypes.func,
    attachFooter: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
    customScrollbar: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]).def(true),
    //横向虚拟滚动配置
    vScrollY: PropTypes.shape({
      //是否启用
      enabled: PropTypes.bool,
      /**指定大于指定行时自动启动纵向虚拟滚动，如果为 0 则总是启用；如果需要关闭，可以设置 enabled 为 false（注：启用纵向虚拟滚动之后将不能支持动态行高） */
      gt: PropTypes.number,
       /** 指定每次渲染的数据偏移量，偏移量越大渲染次数就越少，但每次渲染耗时就越久（对于低性能浏览器可以设置大一点，减低渲染次数）*/
      oSize: PropTypes.number,
      /**可见行数**/
      rows: PropTypes.number,
    }),

    vScrollX: PropTypes.shape({
      //是否启用
      enabled: PropTypes.bool,
      /**指定大于指定行时自动启动纵向虚拟滚动，如果为 0 则总是启用；如果需要关闭，可以设置 enabled 为 false（注：启用纵向虚拟滚动之后将不能支持动态行高） */
      gt: PropTypes.number,
       /** 指定每次渲染的数据偏移量，偏移量越大渲染次数就越少，但每次渲染耗时就越久（对于低性能浏览器可以设置大一点，减低渲染次数）*/
      oSize: PropTypes.number,
    })

  }
  // formProps: {
  //   gutter: PropTypes.number,
  //   itemHeight: PropTypes.string.def('40px'),
  //   span: PropTypes.number.def(24),
  //   loading: PropTypes.bool.def(false),
  //   labelAlign: PropTypes.string.def('right'),
  //   labelCol: PropTypes.object.def({ span: 4 }),
  //   wrapperCol: PropTypes.object.def({ span: 16 }),
  //   items: PropTypes.array
  // },
  //align: PropTypes.oneOf(['left', 'right', 'center']),

  // itemProps: {
  //   ...map,
  //   list: PropTypes.array,
  //   offset: PropTypes.number,
  //   push: PropTypes.number,
  //   pull: PropTypes.number,

  //   autoLoad: PropTypes.bool.def(true),
  //   type: PropTypes.string.def('input'),
  //   span: PropTypes.number.def(24),
  //   itemHeight: PropTypes.string.def('40px'),
  //   name: PropTypes.string,
  //   self: PropTypes.object.def({}),
  //   value: PropTypes.any.def(''),
  //   label: PropTypes.any,
  //   title: PropTypes.any,
  //   placeholder: PropTypes.string,
  //   className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
  //   rows: PropTypes.number.def(5),
  //   labelAlign: PropTypes.string,
  //   labelCol: PropTypes.object.def({ span: 8 }),
  //   wrapperCol: PropTypes.object.def({ span: 16 }),
  //   hasFeedback: PropTypes.bool.def(false),
  //   clear: PropTypes.bool.def(true),
  //   hidden: PropTypes.bool.def(false),
  //   disabled: PropTypes.bool.def(false),
  //   required: PropTypes.bool.def(false),
  //   message: PropTypes.string.def(function() {
  //     if (this.label) {
  //       return '请输入' + this.label
  //     } else {
  //       return '该项不能为空'
  //     }
  //   }),
  //   options: PropTypes.array,
  //   rules: PropTypes.array,
  //   format: PropTypes.string.def('YYYY-MM-DD hh:mm:ss'),
  //   on: PropTypes.object.def({}),
  //   tStyle: PropTypes.object.any
  // }
}
