react-web-native-sketch
Version:
[TODO: We need an overview of how this can be used via npm vs as a local package]
91 lines • 3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var strings_1 = require("../../utils/strings");
var enums_1 = require("../../utils/enums");
exports.DEFAULT_MAX_DECIMALS = 7;
exports.parseValue = function (textInputType, value) {
switch (textInputType) {
case enums_1.TEXT_INPUT_TYPES.INT:
return parseInt(value);
case enums_1.TEXT_INPUT_TYPES.FLOAT:
return parseFloat(value);
case enums_1.TEXT_INPUT_TYPES.JSON:
try {
return JSON.parse(value || '');
}
catch (err) {
return {};
}
default:
return value;
}
};
exports.getKeyboardType = function (inputType) {
switch (inputType) {
case enums_1.TEXT_INPUT_TYPES.PASSWORD:
return 'password';
case enums_1.TEXT_INPUT_TYPES.EMAIL:
return 'email';
case enums_1.TEXT_INPUT_TYPES.PHONE:
return 'tel';
default:
return 'text';
}
};
exports.defaultGetError = function (textInputType, rawValue, maxDecimals) {
switch (textInputType) {
case enums_1.TEXT_INPUT_TYPES.INT:
if (rawValue.indexOf('.') !== -1) {
return strings_1.FIELD_MUST_BE_NUMBER;
}
return rawValue !== '' && isNaN(+rawValue) ? strings_1.FIELD_MUST_BE_NUMBER : undefined;
case enums_1.TEXT_INPUT_TYPES.FLOAT:
if (rawValue.indexOf('.') !== -1) {
var fractionalPart = rawValue.split('.')[1];
if (!!fractionalPart && !!maxDecimals) {
if (fractionalPart.length > maxDecimals) {
return strings_1.FRACTIONAL_PART_TOO_LONG;
}
}
}
return rawValue !== '' && isNaN(+rawValue) ? strings_1.FIELD_MUST_BE_NUMBER : undefined;
case enums_1.TEXT_INPUT_TYPES.JSON:
try {
JSON.parse(rawValue || '');
break;
}
catch (err) {
return strings_1.INVALID_JSON_STRING;
}
}
return undefined;
};
exports.defaultDbToRaw = function (textInputType, dbValue) {
if (!dbValue) {
return '';
}
switch (textInputType) {
case enums_1.TEXT_INPUT_TYPES.JSON:
return JSON.stringify(dbValue, null, 2);
default:
return dbValue.toString();
}
};
exports.defaultRawToDb = function (textInputType, value) {
switch (textInputType) {
case enums_1.TEXT_INPUT_TYPES.INT:
return parseInt(value);
case enums_1.TEXT_INPUT_TYPES.FLOAT:
return parseFloat(value);
case enums_1.TEXT_INPUT_TYPES.JSON:
try {
return JSON.parse(value || '');
}
catch (err) {
return {};
}
default:
return value;
}
};
//# sourceMappingURL=TextInput.utils.js.map