canner
Version:
Build CMS in few lines of code for different data sources
188 lines (158 loc) • 6 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
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 _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
require("antd/lib/input/style");
var _input = _interopRequireDefault(require("antd/lib/input"));
require("antd/lib/select/style");
var _select = _interopRequireDefault(require("antd/lib/select"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _antd = require("antd");
var _isNaN = _interopRequireDefault(require("lodash/isNaN"));
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
var _reactIntl = require("react-intl");
var _class, _class2, _temp;
var Option = _select.default.Option;
var InputGroup = _input.default.Group;
var operators = [{
symbol: '>',
value: 'gt'
}, {
symbol: '<',
value: 'lt'
}, {
symbol: '=',
value: 'eq'
}, {
symbol: '≥',
value: 'gte'
}, {
symbol: '≤',
value: 'lte'
}];
var NumberRangeFilter = (0, _reactIntl.injectIntl)(_class = (_temp = _class2 =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(NumberRangeFilter, _Component);
function NumberRangeFilter(props) {
var _this;
(0, _classCallCheck2.default)(this, NumberRangeFilter);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(NumberRangeFilter).call(this, props));
_this.state = {
input: '',
lowInput: '',
operator: 'gt'
};
_this.onInputLow = _this.onInputLow.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.onInput = _this.onInput.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.changeOperator = _this.changeOperator.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.onChange = _this.onChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
return _this;
}
(0, _createClass2.default)(NumberRangeFilter, [{
key: "onInputLow",
value: function onInputLow(e) {
var value = e.target.value;
var reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/;
if (!(0, _isNaN.default)(value) && reg.test(value) || value === '' || value === '-') {
this.setState({
lowInput: value
}, this.onChange);
}
}
}, {
key: "onInput",
value: function onInput(e) {
var value = e.target.value;
var reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/;
if (!(0, _isNaN.default)(value) && reg.test(value) || value === '' || value === '-') {
this.setState({
input: value
}, this.onChange);
}
}
}, {
key: "changeOperator",
value: function changeOperator(val) {
this.setState({
operator: val
}, this.onChange);
}
}, {
key: "onChange",
value: function onChange() {
var _this$state = this.state,
lowInput = _this$state.lowInput,
input = _this$state.input,
operator = _this$state.operator;
var _this$props = this.props,
name = _this$props.name,
onChange = _this$props.onChange;
if (operator === '$between') {
onChange({
name: {
$gt: (0, _isEmpty.default)(lowInput) ? -Infinity : Number(lowInput),
$lt: (0, _isEmpty.default)(input) ? Infinity : Number(input)
}
});
} else {
onChange((0, _isEmpty.default)(input) ? undefined : (0, _defineProperty2.default)({}, name, (0, _defineProperty2.default)({}, operator, Number(input))));
}
}
}, {
key: "render",
value: function render() {
var _this$props2 = this.props,
intl = _this$props2.intl,
index = _this$props2.index;
var _this$state2 = this.state,
operator = _this$state2.operator,
input = _this$state2.input;
var placeholder = intl.formatMessage({
id: 'query.numberRange.placeholder'
});
return _react.default.createElement(InputGroup, {
compact: true
}, _react.default.createElement(_select.default, {
style: {
width: 60
},
value: operator,
onChange: this.changeOperator,
"data-testid": "number-filter-".concat(index, "-select")
}, operators.map(function (operator) {
return _react.default.createElement(Option, {
key: operator.value,
value: operator.value
}, operator.symbol);
})), _react.default.createElement(_input.default, {
style: {
width: 120
},
"data-testid": "number-filter-".concat(index, "-input"),
placeholder: placeholder,
value: input,
onChange: this.onInput
}));
}
}]);
return NumberRangeFilter;
}(_react.Component), (0, _defineProperty2.default)(_class2, "propTypes", {
onChange: _propTypes.default.func,
name: _propTypes.default.string,
label: _propTypes.default.string,
intl: _propTypes.default.object,
index: _propTypes.default.number
}), _temp)) || _class;
exports.default = NumberRangeFilter;