UNPKG

react-jsf

Version:

JSF Compliant React Components

341 lines (261 loc) 12.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _FValidateRegex = require('../components/FValidateRegex'); var _FValidateRegex2 = _interopRequireDefault(_FValidateRegex); var _lodash = require('lodash'); var _ = _interopRequireWildcard(_lodash); var _Output2 = require('./Output'); var _Output3 = _interopRequireDefault(_Output2); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Input = function (_Output) { _inherits(Input, _Output); function Input(props, context) { _classCallCheck(this, Input); var _this = _possibleConstructorReturn(this, (Input.__proto__ || Object.getPrototypeOf(Input)).call(this, props, context)); _this.hasError = false; _this.errorMessage = ''; _this.handleChange = _this.handleChange.bind(_this); _this.validate = _this.validate.bind(_this); context.registerInput(_this); return _this; } /** * @return {object| number | string} */ _createClass(Input, [{ key: 'componentDidMount', value: function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (_.isEmpty(this.value)) { this.value = ''; } case 1: case 'end': return _context.stop(); } } }, _callee, this); })); function componentDidMount() { return _ref.apply(this, arguments); } return componentDidMount; }() }, { key: 'jsfOnRender', value: function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return _get(Input.prototype.__proto__ || Object.getPrototypeOf(Input.prototype), 'jsfOnRender', this).call(this); case 2: _context2.next = 4; return this.validate(); case 4: case 'end': return _context2.stop(); } } }, _callee2, this); })); function jsfOnRender() { return _ref2.apply(this, arguments); } return jsfOnRender; }() /** * handle input change * @param {Event} event * @return {Promise<void>} */ }, { key: 'handleChange', value: function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(event) { return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: this.value = event.target.value; if (!this.ajax('change')) { _context3.next = 4; break; } _context3.next = 4; return this.ajax('change').call(this); case 4: if (!this.props.hasOwnProperty('onchange')) { _context3.next = 7; break; } _context3.next = 7; return this.props.onchange(); case 7: case 'end': return _context3.stop(); } } }, _callee3, this); })); function handleChange(_x) { return _ref3.apply(this, arguments); } return handleChange; }() /** * checks correctness of input * @return {Promise<{hasError: boolean, errorMessage: string}>} */ }, { key: 'validate', value: function () { var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { var hasError, message, currentValue, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, child, response; return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: hasError = false; message = 'Error in the input field!'; currentValue = this.value; if (this.converterError()) { hasError = true; message = this.props.converterMessage; } // check for validation children if (hasError) { _context4.next = 24; break; } _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context4.prev = 8; for (_iterator = this.validators[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { child = _step.value; if (child instanceof _FValidateRegex2.default) { // do regexp validation if (!child.validate(currentValue)) { hasError = true; message = this.props.validatorMessage; } } } _context4.next = 16; break; case 12: _context4.prev = 12; _context4.t0 = _context4['catch'](8); _didIteratorError = true; _iteratorError = _context4.t0; case 16: _context4.prev = 16; _context4.prev = 17; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 19: _context4.prev = 19; if (!_didIteratorError) { _context4.next = 22; break; } throw _iteratorError; case 22: return _context4.finish(19); case 23: return _context4.finish(16); case 24: // check for validation props if (this.props.required && !hasError) { if (_.isEmpty(currentValue)) { hasError = true; message = this.props.requiredMessage; } } if (this.props.maxLength && !hasError) { if (currentValue && currentValue.length > this.props.maxLength) { hasError = true; message = 'Max ' + this.props.maxLength + ' Characters allowed'; } } if (!(this.props.validator && !hasError)) { _context4.next = 31; break; } _context4.next = 29; return this.props.validator(this); case 29: response = _context4.sent; if (response.error) { hasError = true; message = response.message; } case 31: this.hasError = hasError; this.errorMessage = hasError ? message : ''; this.context.registerInput(this); return _context4.abrupt('return', { hasError: this.hasError, errorMessage: this.errorMessage }); case 35: case 'end': return _context4.stop(); } } }, _callee4, this, [[8, 12, 16, 24], [17,, 19, 23]]); })); function validate() { return _ref4.apply(this, arguments); } return validate; }() }, { key: 'value', get: function get() { // only inputs write back to form element via prop notation var value = typeof this.props.value === 'string' ? this.context.property(this.props.value) : this.props.value; // only convert if requested input not empty value = this.converter && typeof value !== 'string' ? this.converter.getAsString(value) : value; return value; } /** * * @param {object| number | string} o */ , set: function set(o) { var value = o; try { value = this.converter && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) !== 'object' ? this.converter.getAsObject(o) : o; } catch (e) {} finally { // only a property annotation has to write into the context object (e.g.: bla.blub) if (typeof this.props.value === 'string') { this.context.property(this.props.value, value); } } } }]); return Input; }(_Output3.default); exports.default = Input;