"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;

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

var _popover = _interopRequireDefault(require("maycur-antd/lib/popover"));

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

var _checkbox = _interopRequireDefault(require("maycur-antd/lib/checkbox"));

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"));

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

var _utils = _interopRequireDefault(require("../../utils/utils"));

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 prefix = _utils.default.prefixCls;

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

  var _super = _createSuper(PopContent);

  function PopContent(props) {
    var _this;

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

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

    _this.getValue = function () {
      var _this$state = _this.state,
          options = _this$state.options,
          checkedValues = _this$state.checkedValues;
      ;
      var outValues = [];

      _lodash.default.forEach(options, function (item) {
        if (checkedValues.includes(item.code)) {
          outValues.push(item);
        }
      });

      return outValues;
    };

    _this.setDefaultValue = function () {
      var defaultValue = _this.props.defaultValue;
      var convertValue = [];

      _lodash.default.forEach(defaultValue, function (option) {
        convertValue.push(option.code);
      });

      return convertValue;
    };

    _this.state = {
      options: props.options || [],
      checkedValues: _this.setDefaultValue()
    };
    return _this;
  }

  (0, _createClass2.default)(PopContent, [{
    key: "componentDidUpdate",
    value: function componentDidUpdate(prevProps) {
      var visible = this.props.visible;

      if (prevProps.visible !== visible && visible) {
        this.setState({
          checkedValues: this.setDefaultValue()
        });
      }
    }
  }, {
    key: "render",
    value: function render() {
      var _this$state2 = this.state,
          options = _this$state2.options,
          checkedValues = _this$state2.checkedValues;
      return /*#__PURE__*/_react.default.createElement("div", {
        className: "".concat(prefix, "-popcontent")
      }, /*#__PURE__*/_react.default.createElement(_checkbox.default.Group, {
        value: checkedValues,
        onChange: this.onChange
      }, options.map(function (optionItem) {
        return /*#__PURE__*/_react.default.createElement("div", {
          key: optionItem.code,
          className: "".concat(prefix, "-option-child")
        }, /*#__PURE__*/_react.default.createElement(_checkbox.default, {
          value: optionItem.code
        }, optionItem.name));
      })));
    }
  }]);
  return PopContent;
}(_react.Component);

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

  var _super2 = _createSuper(PopSelect);

  function PopSelect(props) {
    var _this2;

    (0, _classCallCheck2.default)(this, PopSelect);
    _this2 = _super2.call(this, props);

    _this2.onVisibleChange = function (visible) {
      var _this2$props = _this2.props,
          close = _this2$props.close,
          setTableColumns = _this2$props.setTableColumns;

      _this2.setState({
        visible: visible
      });

      if (!visible && _this2.contentRef) {
        if (typeof close === 'function') {
          close(_this2.contentRef.getValue());
        }

        if (setTableColumns) {
          setTableColumns('customColumns', _this2.contentRef.getValue());
        }
      }
    };

    _this2.onValueChange = function () {};

    _this2.state = {
      visible: false
    };
    return _this2;
  }

  (0, _createClass2.default)(PopSelect, [{
    key: "render",
    value: function render() {
      var _this3 = this;

      var _this$props = this.props,
          defaultValue = _this$props.defaultValue,
          children = _this$props.children,
          options = _this$props.options;
      var visible = this.state.visible;

      var popContent = /*#__PURE__*/_react.default.createElement(PopContent, {
        visible: visible,
        ref: function ref(_ref) {
          _this3.contentRef = _ref;
        },
        options: options,
        defaultValue: defaultValue
      });

      return /*#__PURE__*/_react.default.createElement(_popover.default, {
        content: popContent,
        trigger: "click",
        placement: "bottomLeft",
        overlayClassName: "".concat(prefix, "-select-popover"),
        autoAdjustOverflow: true,
        onVisibleChange: this.onVisibleChange
      }, children);
    }
  }]);
  return PopSelect;
}(_react.Component);

var _default = PopSelect;
exports.default = _default;