/* eslint-disable no-console,func-names,react/no-multi-comp */
import Table from '../index';
import '../assets/index.less';
import Menu from '../../menu';
const Item = Menu.Item;
const Divider = Menu.Divider;
import DropDown from '../../dropdown';

const data = [];
for (let i = 0; i < 10; i++) {
  data.push({
    key: i,
    a: `a${i}`,
    b: `b${i}`,
    c: `c${i}`,
  });
}

export default {
  data() {
    this.filters = [];
    return {
      visible: false,
    };
  },
  methods: {
    handleVisibleChange(visible) {
      this.visible = visible;
    },

    handleSelect(selected) {
      this.filters.push(selected);
    },

    handleDeselect(key) {
      const index = this.filters.indexOf(key);
      if (index !== -1) {
        this.filters.splice(index, 1);
      }
    },

    confirmFilter() {
      console.log(this.filters.join(','));
      this.visible = false;
    },
  },

  render() {
    const menu = (
      <Menu
        style={{ width: '200px' }}
        multiple
        selectable
        onSelect={this.handleSelect}
        onDeselect={this.handleDeselect}
      >
        <Item key="1">one</Item>
        <Item key="2">two</Item>
        <Item key="3">three</Item>
        <Divider />
        <Item disabled>
          <button
            style={{
              cursor: 'pointer',
              color: '#000',
              pointerEvents: 'visible',
            }}
            onClick={this.confirmFilter}
          >
            确定
          </button>
        </Item>
      </Menu>
    );

    const columns = [
      {
        title: (
          <div>
            title1
            <DropDown
              trigger={['click']}
              onVisibleChange={this.handleVisibleChange}
              visible={this.visible}
            >
              <template slot="overlay">{menu}</template>
              <a href="#">filter</a>
            </DropDown>
          </div>
        ),
        key: 'a',
        dataIndex: 'a',
        width: 100,
      },
      { title: 'title2', key: 'b', dataIndex: 'b', width: 100 },
      { title: 'title3', key: 'c', dataIndex: 'c', width: 200 },
    ];

    return (
      <div>
        <h2>use dropdown</h2>
        <Table columns={columns} data={data} rowKey={record => record.key} />
      </div>
    );
  },
};