UNPKG

v5gl-form-builder

Version:

Customise form builder from ecsite

199 lines (161 loc) 7.48 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); 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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _formik = require("formik"); var _materialElementLabel = _interopRequireDefault(require("./material-element-label")); var _componentHeader = _interopRequireDefault(require("../form-elements/component-header")); var _core = require("@material-ui/core"); var Yup = _interopRequireWildcard(require("yup")); 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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } var Number = /*#__PURE__*/function (_React$Component) { (0, _inherits2["default"])(Number, _React$Component); var _super = _createSuper(Number); function Number(props) { var _this; (0, _classCallCheck2["default"])(this, Number); _this = _super.call(this, props); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "numberChange", function (event) { if (!event.target.value && _this.props.data.customOptions.required) { _this.setState({ number: "", error: true, requiredMessage: "Please fill out mandatory field" }); return; } _this.setState({ requiredMessage: "" }); var status = _this.validate(event); var fieldResult = _this.state.fieldResult; fieldResult.value = status.number; fieldResult.error = status.error; _this.setState(status); _this.props.collectFieldResults(fieldResult); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "validate", function (e) { var number = e.target.value; if (!number && number == '') { if (_this.props.data.customOptions.required) { return { error: true, helperText: "Please enter a value within range ".concat(_this.props.data.customOptions.min, " and ").concat(_this.props.data.customOptions.max), number: number }; } else { return { error: false, helperText: '', number: number }; } } else { if (_this.state.isNumberLimit != null && _this.state.isNumberLimit && (parseInt(number) < _this.state.min || parseInt(number) > _this.state.max)) { return { error: true, helperText: "Please enter a value within range ".concat(_this.props.data.customOptions.min, " and ").concat(_this.props.data.customOptions.max), number: number }; } else if (!/[0-9]/i.test(number)) { return {}; } } return { error: false, helperText: '', number: number }; }); _this.state = { number: props.result ? props.result.value : '', helperText: '', error: false, min: props.data.customOptions.min, max: props.data.customOptions.max, isNumberLimit: props.data.customOptions.isNumberLimit, fieldResult: { questionId: props.data.id, value: '', error: false }, requiredMessage: "" }; return _this; } (0, _createClass2["default"])(Number, [{ key: "render", value: function render() { var inputProps = {}; if (this.props.data.customOptions.isNumberLimit) { inputProps.min = this.props.data.customOptions.min; inputProps.max = this.props.data.customOptions.max; } var inputWidth = "100%"; if (this.props.data.inputFieldSize == 'large') { inputWidth = "100%"; } else if (this.props.data.inputFieldSize == 'medium') { inputWidth = "50%"; } else if (this.props.data.inputFieldSize == 'small') { inputWidth = "25%"; } var propsData = this.props.data; var fieldVariant = ""; if (this.props.globalStyles) { fieldVariant = !this.props.globalStyles.formDefault && propsData.hasOwnProperty("fieldVariant") ? propsData.fieldVariant : this.props.globalStyles.globalFieldVariant; } else { if (propsData.fieldVariant) fieldVariant = propsData.fieldVariant; } var formPreview = this.props.hasOwnProperty('isFormPreview') ? this.props.isFormPreview : false; var helperText = this.state.helperText == '' && this.props.data.customOptions.isNumberLimit ? 'Choose a number between ' + this.props.data.customOptions.min + ' and ' + this.props.data.customOptions.max : this.state.helperText; var disabled = this.props.read_only || false; return /*#__PURE__*/_react["default"].createElement("div", { className: "SortableItem rfb-item" }, /*#__PURE__*/_react["default"].createElement(_componentHeader["default"], this.props), /*#__PURE__*/_react["default"].createElement("div", { className: "form-group" }, /*#__PURE__*/_react["default"].createElement(_core.TextField, { style: { width: inputWidth }, size: "small", type: "number", error: this.state.error, variant: fieldVariant, id: this.props.id, label: propsData.label, required: propsData.customOptions.required, name: this.props.data.fieldName, value: this.state.number, onChange: this.numberChange, InputProps: { inputProps: inputProps }, helperText: this.state.requiredMessage && this.state.error && propsData.customOptions.required ? this.state.requiredMessage : helperText, onBlur: this.numberChange, disabled: disabled, InputLabelProps: { shrink: true, classes: { asterisk: 'text-error' } }, placeholder: "Number input" }))); } }]); return Number; }(_react["default"].Component); var _default = Number; exports["default"] = _default;