@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
72 lines (55 loc) • 1.72 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _dataTypes = _interopRequireDefault(require("../data-types"));
/**
* Casts string true/false to boolean
* @param {String} value value
*/
var castToBoolean = function castToBoolean(value) {
if (typeof value === 'boolean') {
return value;
}
return value === 'true';
};
/**
* Check if the value can be converted to number
* @param {Any} value value to be checked
*/
var canBeConvertedToNumber = function canBeConvertedToNumber(value) {
return !isNaN(Number(value)) && value !== '';
};
/**
* Check if the value can be converted to float
* @param {Any} value value to be checked
*/
var canBeConvertedToFloat = function canBeConvertedToFloat(value) {
if (typeof value == 'string' && value.endsWith('.')) {
return false;
}
return canBeConvertedToNumber(value);
};
/**
* Changes the value type
* @param {FieldDataTypes} dataType type for value conversion
* @param {Any} value value to be converted
*/
var convertType = function convertType(dataType, value) {
switch (dataType) {
case _dataTypes["default"].INTEGER:
return canBeConvertedToNumber(value) ? parseInt(value) : value;
case _dataTypes["default"].FLOAT:
return canBeConvertedToFloat(value) ? parseFloat(value) : value;
case _dataTypes["default"].NUMBER:
return canBeConvertedToNumber(value) ? Number(value) : value;
case _dataTypes["default"].BOOLEAN:
return castToBoolean(value);
default:
return value;
}
};
var _default = convertType;
exports["default"] = _default;