import React, { Component, useState } from 'react';
import CustomTrigger from './CustomTrigger';
import AutoComplete from '../index';
import { IconSearch } from '@douyinfe/semi-icons';
export default {
  title: 'AutoComplete',
  parameters: {
    chromatic: { disableSnapshot: true },
  },
}
const props = {
  onBlur: (v, e) => {
    console.log('onBlur');
    console.log(v, e);
  },
  onFocus: (v, e) => {
    console.log('onFocus');
    console.log(v, e);
  },
};
class Demo extends React.Component {
  constructor() {
    super();
    this.state = {
      data: [],
      data2: ['mike', 'tony', 'steve'],
    };
    this.acref = React.createRef();
  }
  handleSearch(value) {
    // let data =  !value ? [] : [value, value + value, value + value + value];
    let result; // if (!value || value.indexOf('@') >= 0) {
    //     result = [];
    // } else {
    if (value) {
      result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
    } else {
      result = [];
    } // }
    this.setState({
      data: result,
    });
  }
  handleSearch2(value) {
    // let data2 =  !value ? [] : [value, value + value, value + value + value];
    let result;
    if (!value || value.indexOf('@') >= 0) {
      result = [];
    } else {
      result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
    }
    this.setState({
      data2: result,
    });
  }
  render() {
    const { data, data2 } = this.state;
    return (
      
        }
          showClear
          data={data}
          style={{
            width: 300,
          }}
          onSearch={this.handleSearch.bind(this)}
          onSelect={v => console.log(v)}
          {...props}
          ref={this.acref}
        />
      
 
    );
  }
}
export const BasicUsage = () => ;
class CustomOptionDemo extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: [],
      data2: [],
    };
  }
  search = value => {
    let result;
    if (!value) {
      result = [];
    } else {
      result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
    }
    this.setState({
      data: result,
    });
  };
  renderOption = item => {
    return (
      <>
        
          邮箱
        
        : {item}
      >
    );
  };
  search2 = value => {
    let result;
    if (!value) {
      result = [];
    } else {
      result = ['gmail.com', '163.com', 'qq.com'].map(domain => {
        return {
          email: `${value}@${domain}`,
          time: new Date().valueOf(),
          value: `${value}@${domain}`,
        };
      });
    }
    this.setState({
      data2: result,
    });
  };
  renderObjectOption = item => {
    return (
      
        
          邮箱
        
        : {item.email}
        time: {item.time}
      
    );
  };
  render() {
    return (
      <>
        
        
        
         node.email}
          data={this.state.data2}
          onSearch={this.search2}
        />
      >
    );
  }
}
export const RenderItem = () => ;
class WithDefaultValue extends React.Component {
  constructor() {
    super();
    this.state = {
      data: ['semi@bytedance.com', 'semi@gmail.com', 'semi@163.com'],
    };
    this.onSearch = this.onSearch.bind(this);
  }
  onSearch(value) {
    let result;
    if (!value) {
      result = [];
    } else {
      result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
    }
    this.setState({
      data: result,
    });
  }
  render() {
    let { data } = this.state;
    return (
      <>
        {/*  */}
        
      >
    );
  }
}
export const DefaultValue = () => ;
class ControlledMode extends React.Component {
  constructor() {
    super();
    this.state = {
      data: [],
      dataObject: [],
      value: '',
    };
    this.onSearch = this.onSearch.bind(this);
    this.onChange = this.onChange.bind(this);
  }
  onSearch(value) {
    let result, resultObject;
    if (!value) {
      result = [];
      resultObject = [];
    } else {
      result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
      resultObject = ['gmail.com', '163.com', 'qq.com'].map(domain => ({
        label: `${value}@${domain}`,
        value: `${value}@${domain}`,
      }));
    }
    this.setState({
      data: result,
      dataObject: resultObject,
    });
  }
  onChange(value) {
    this.setState({
      value: value,
    });
  }
  render() {
    let { data, value, dataObject } = this.state;
    return (
      <>
        
        
        
        
        
      >
    );
  }
}
export const EmptyContent = () => {
  let [data, setData] = useState([]);
  const [loading, setLoading] = useState(false);
  const fetchData = v => {
    setLoading(true);
    setTimeout(() => {
      if (!v) {
        setData([]);
        setLoading(false);
        return;
      }
      setData(() => {
        const res = Array.from(Array(5)).map(c => Math.random());
        return res;
      });
      setLoading(false);
    }, 1000);
  };
  return (
    
  );
};
export const AutoFocus = () => {
  return ;
};
export const ControlledValue = () => ;
export const CustomTriggerDemo = () => ;
export const Disabled = () => ;