@react-awesome-query-builder/antd
Version:
User-friendly query builder for React. AntDesign widgets
110 lines • 3.33 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["width"];
import React, { PureComponent, useCallback, useMemo } from "react";
import PropTypes from "prop-types";
import { Slider, InputNumber, Col } from "antd";
var SliderWidget = /*#__PURE__*/React.memo(function (_ref) {
var setValue = _ref.setValue,
placeholder = _ref.placeholder,
config = _ref.config,
field = _ref.field,
value = _ref.value,
customProps = _ref.customProps,
fieldDefinition = _ref.fieldDefinition,
readonly = _ref.readonly,
errorMessage = _ref.errorMessage,
min = _ref.min,
max = _ref.max,
step = _ref.step,
marks = _ref.marks;
var _config$settings = config.settings,
renderSize = _config$settings.renderSize,
showErrorMessage = _config$settings.showErrorMessage,
defaultSliderWidth = _config$settings.defaultSliderWidth;
var _ref2 = customProps || {},
width = _ref2.width,
rest = _objectWithoutProperties(_ref2, _excluded);
var customInputProps = useMemo(function () {
return rest.input || {};
}, [customProps]);
var customSliderProps = useMemo(function () {
return rest.slider || rest;
}, [customProps]);
var tooltipFormatter = useCallback(function (val) {
return val != undefined ? val.toString() : undefined;
}, []);
var tooltip = useMemo(function () {
return {
formatter: tooltipFormatter
};
}, [tooltipFormatter]);
var handleChange = useCallback(function (val) {
if (val === "") val = undefined;
setValue(val);
}, [setValue]);
var aValue = value;
if (aValue == undefined) aValue = null;
var sliderValue = aValue == null && min ? min : aValue;
return /*#__PURE__*/React.createElement(Col, {
style: {
display: "inline-flex",
flexWrap: "wrap"
}
}, /*#__PURE__*/React.createElement(Col, {
key: "col-number",
style: {
"float": "left",
marginRight: "5px"
}
}, /*#__PURE__*/React.createElement(InputNumber, _extends({
key: "input-number",
disabled: readonly,
size: renderSize,
value: aValue,
min: min,
max: max,
step: step,
placeholder: placeholder,
onChange: handleChange
}, customInputProps))), /*#__PURE__*/React.createElement(Col, {
key: "col-slider",
style: {
"float": "left",
width: width || defaultSliderWidth
}
}, /*#__PURE__*/React.createElement(Slider, _extends({
key: "input-slider",
disabled: readonly,
value: sliderValue,
tooltip: tooltip,
min: min,
max: max,
included: true,
step: step,
marks: marks,
onChange: handleChange
}, customSliderProps))), /*#__PURE__*/React.createElement(Col, {
key: "col-clear",
style: {
clear: "both"
}
}));
});
SliderWidget.displayName = "SliderWidget";
SliderWidget.propTypes = {
setValue: PropTypes.func.isRequired,
placeholder: PropTypes.string,
config: PropTypes.object.isRequired,
field: PropTypes.any,
value: PropTypes.number,
customProps: PropTypes.object,
fieldDefinition: PropTypes.object,
readonly: PropTypes.bool,
// from fieldSettings:
min: PropTypes.number,
max: PropTypes.number,
step: PropTypes.number,
marks: PropTypes.object
};
export default SliderWidget;