doiforms
Version:
A generalized tool for building formatted forms on multiple platforms
44 lines • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var __1 = require("..");
var containsFieldState_1 = require("./containsFieldState");
var matchFieldState_1 = require("./matchFieldState");
function FormUpdate(prevFieldStates, newFieldStates) {
if (prevFieldStates.length === 0) {
return {};
}
return {
FieldStates: (prevFieldStates.map(function (fieldState) {
var field = fieldState.Field;
if (containsFieldState_1.containsFieldState(field.Id, newFieldStates)) {
var fieldStateValue = matchFieldState_1.matchFieldState(field.Id, newFieldStates).Value;
var isRequiredError = field.Required ?
((null === fieldStateValue) || (undefined === fieldStateValue) || ("" === fieldStateValue)) : false;
var validationResults = field.Validation ? field.Validation(fieldStateValue) : {
IsError: isRequiredError,
Message: isRequiredError ? (field.DisplayName + " is required") : undefined
};
var status_1 = validationResults.IsError ? __1.EnumFieldStatus.Error : __1.EnumFieldStatus.Modified;
if (field.Required && isRequiredError) {
status_1 = __1.EnumFieldStatus.Empty;
}
return {
ErrorMessage: validationResults.Message,
Field: fieldState.Field,
Status: status_1,
Value: fieldStateValue
};
}
else {
return {
ErrorMessage: fieldState.ErrorMessage,
Field: fieldState.Field,
Status: fieldState.Status,
Value: fieldState.Value
};
}
}))
};
}
exports.FormUpdate = FormUpdate;
//# sourceMappingURL=FormUpdate.js.map