import { defineComponent } from 'vue';
/* eslint-disable no-console */

import Select, { Option } from '..';
import '../assets/index.less';
import './single.less';

const Test = defineComponent({
  data() {
    return {
      destroy: false,
      value: '9',
    };
  },
  methods: {
    onChange(e) {
      let value;
      if (e && e.target) {
        ({ value } = e.target);
      } else {
        value = e;
      }
      console.log('onChange', value);

      this.value = value;
    },

    onDestroy() {
      this.destroy = 1;
    },

    onBlur(v) {
      console.log('onBlur', v);
    },

    onFocus() {
      console.log('onFocus');
    },

    onSearch(val) {
      console.log('Search:', val);
    },
  },

  render() {
    const { value, destroy } = this;
    if (destroy) {
      return null;
    }

    return (
      <div style={{ margin: '20px' }}>
        <div
          style={{ height: '150px', background: 'rgba(0, 255, 0, 0.1)' }}
          onMousedown={e => {
            e.preventDefault();
          }}
        >
          Prevent Default
        </div>

        <h2>Single Select</h2>

        <div style={{ width: '300px' }}>
          <Select
            autofocus
            id="my-select"
            value={value}
            placeholder="placeholder"
            showSearch
            style={{ width: '500px' }}
            onBlur={this.onBlur}
            onFocus={this.onFocus}
            onSearch={this.onSearch}
            allowClear
            optionFilterProp="text"
            onChange={this.onChange}
            onPopupScroll={() => {
              console.log('Scroll!');
            }}
          >
            <Option value={null}>不选择</Option>,
            <Option value="01" text="jack" title="jack">
              <b
                style={{
                  color: 'red',
                }}
              >
                jack
              </b>
            </Option>
            ,
            <Option value="11" text="lucy">
              <span>lucy</span>
            </Option>
            ,
            <Option value="21" disabled text="disabled">
              disabled
            </Option>
            ,
            <Option value="31" text="yiminghe" class="test-option" style={{ background: 'yellow' }}>
              yiminghe
            </Option>
            ,
            {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(i => (
              <Option key={i} value={String(i)} text={String(i)}>
                {i}-text
              </Option>
            ))}
          </Select>
        </div>
        <h2>native select</h2>
        <select value={value} style={{ width: '500px' }} onChange={this.onChange}>
          <option value="01">jack</option>
          <option value="11">lucy</option>
          <option value="21" disabled>
            disabled
          </option>
          <option value="31">yiminghe</option>
          {[1, 2, 3, 4, 5, 6, 7, 8, 9].map(i => (
            <option value={i} key={i}>
              {i}
            </option>
          ))}
        </select>

        <h2>RTL Select</h2>

        <div style={{ width: '300px' }}>
          <Select
            id="my-select-rtl"
            placeholder="rtl"
            direction="rtl"
            dropdownMatchSelectWidth={300}
            dropdownStyle={{ minWidth: '300px' }}
            style={{ width: '500px' }}
          >
            <Option value="1">1</Option>
            <Option value="2">2</Option>
          </Select>
        </div>

        <p>
          <button type="button" onClick={this.onDestroy}>
            destroy
          </button>
        </p>
      </div>
    );
  },
});

export default Test;
/* eslint-enable */