"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

var _typeof = require("@babel/runtime/helpers/typeof");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));

var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));

var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));

var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));

var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));

require("maycur-antd/lib/select/style/css");

var _select = _interopRequireDefault(require("maycur-antd/lib/select"));

var _react = _interopRequireWildcard(require("react"));

var _lodash = _interopRequireDefault(require("lodash"));

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }

function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }

var Option = _select.default.Option;

var SelectFilter = /*#__PURE__*/function (_Component) {
  (0, _inherits2.default)(SelectFilter, _Component);

  var _super = _createSuper(SelectFilter);

  function SelectFilter(props) {
    var _this;

    (0, _classCallCheck2.default)(this, SelectFilter);
    _this = _super.call(this, props);

    _this.onChange = function (value) {
      _this.setState({
        seletcedValue: value
      });

      var _this$props = _this.props,
          setSelectedKeys = _this$props.setSelectedKeys,
          confirm = _this$props.confirm;
      setSelectedKeys(value);
      confirm();
    };

    _this.onSearch = function (value) {
      _this.searching = true;
      var search = _this.props.search;
      search(value).then(function (filters) {
        _this.setState({
          filters: filters
        });
      });
    };

    _this.onSelect = function () {
      if (!_this.searching) return;
      _this.searching = false;

      _this.setState({
        filters: _this.originalFilters
      });
    };

    _this.setValue = function () {
      var _this$props2 = _this.props,
          columns = _this$props2.columns,
          selectedKeys = _this$props2.selectedKeys,
          filterKey = _this$props2.filterKey,
          dataIndex = _this$props2.dataIndex;

      if (selectedKeys) {
        var column = _lodash.default.find(columns, {
          dataIndex: dataIndex
        });

        if (column) {
          _this.setState({
            seletcedValue: selectedKeys[filterKey] || selectedKeys[dataIndex]
          });
        }
      }
    };

    _this.componentDidMount = function () {
      var _this$props3 = _this.props,
          filtersSync = _this$props3.filtersSync,
          dataIndex = _this$props3.dataIndex;

      if (filtersSync && typeof filtersSync === 'function') {
        // 预算期数特殊处理
        filtersSync().then(function (data) {
          var _data = _lodash.default.clone(data);

          if (dataIndex === 'periodNum' && _data.maxPeriodNum) {
            for (var i = 0; i < _data.maxPeriodNum; i++) {
              _data.push({
                value: i + 1,
                text: "\u7B2C".concat(i + 1, "\u671F")
              });
            }
          }

          _this.originalFilters = _data;

          _this.setState({
            filters: _data
          });

          _this.setValue();
        });
      } else {
        _this.setValue();
      }
    };

    _this.state = {
      filters: props.filters,
      searchKey: null
    };
    return _this;
  }

  (0, _createClass2.default)(SelectFilter, [{
    key: "componentDidUpdate",
    value: function componentDidUpdate(preProps) {
      if (preProps.filters && preProps.filters.length !== this.props.filters.length) {
        this.setState({
          filters: this.props.filters
        });
      }
    }
  }, {
    key: "render",
    value: function render() {
      var _this$props4 = this.props,
          placeholder = _this$props4.placeholder,
          filterMultiple = _this$props4.filterMultiple,
          _this$props4$showSear = _this$props4.showSearch,
          showSearch = _this$props4$showSear === void 0 ? true : _this$props4$showSear,
          search = _this$props4.search;
      var _this$state = this.state,
          filters = _this$state.filters,
          seletcedValue = _this$state.seletcedValue;
      var selectProps = {
        mode: filterMultiple ? 'multiple' : '',
        placeholder: placeholder,
        showSearch: showSearch,
        value: seletcedValue,
        onChange: this.onChange,
        optionFilterProp: 'children',
        className: 'select-comp'
      };

      if (search && typeof search === 'function') {
        selectProps.onSearch = this.onSearch;
        selectProps.onSelect = this.onSelect;
      } else {
        selectProps.filterOption = true;
      }

      return /*#__PURE__*/_react.default.createElement(_select.default, selectProps, !!filters && filters.map(function (filter) {
        return /*#__PURE__*/_react.default.createElement(Option, {
          value: filter.value,
          key: filter.value
        }, filter.text);
      }));
    }
  }]);
  return SelectFilter;
}(_react.Component);

var _default = SelectFilter;
exports.default = _default;