/* eslint-disable no-console */

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

interface ControlledState {
  destroy: boolean;
  value: string | number;
  open: boolean;
}

const Controlled = {
  data: () => ({
    destroy: false,
    value: 9,
    open: true,
  }),
  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 = true;
    },

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

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

    onDropdownVisibleChange(open) {
      this.open = open;
    },
    getPopupContainer(node) {
      return node.parentNode;
    },
  },

  render() {
    const { open, destroy, value } = this;
    if (destroy) {
      return null;
    }
    return (
      <div style={{ margin: '20px' }}>
        <h2>controlled Select</h2>
        <div style={{ width: '300px' }}>
          <Select
            id="my-select"
            value={value}
            placeholder="placeholder"
            listHeight={200}
            style={{ width: '500px' }}
            onBlur={this.onBlur}
            onFocus={this.onFocus}
            open={open}
            optionLabelProp="children"
            optionFilterProp="text"
            onChange={this.onChange}
            onDropdownVisibleChange={this.onDropdownVisibleChange}
            //getPopupContainer={this.getPopupContainer}
          >
            <Option value="01" text="jack" title="jack">
              <b
                style={{
                  color: 'red',
                }}
              >
                jack
              </b>
            </Option>
            <Option value="11" text="lucy">
              lucy
            </Option>
            <Option value="21" disabled text="disabled">
              disabled
            </Option>
            <Option value="31" text="yiminghe">
              yiminghe
            </Option>
            {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(i => (
              <Option key={i} value={i} text={String(i)}>
                {i}-text
              </Option>
            ))}
          </Select>
        </div>
      </div>
    );
  },
};

export default Controlled;
/* eslint-enable */
