1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 'use strict';
- var textField = require('./TextInputEntryFactory');
- /**
- * This function is a wrapper around TextInputEntryFactory.
- * It adds functionality to cache an invalid value entered in the
- * text input, instead of setting it on the business object.
- */
- var validationAwareTextField = function(options, defaultParameters) {
- var modelProperty = options.modelProperty;
- defaultParameters.get = function(element, node) {
- var value = this.__lastInvalidValue;
- delete this.__lastInvalidValue;
- var properties = {};
- properties[modelProperty] = value !== undefined ? value : options.getProperty(element, node);
- return properties;
- };
- defaultParameters.set = function(element, values, node) {
- var validationErrors = validate.apply(this, [ element, values, node ]),
- propertyValue = values[modelProperty];
- // make sure we do not update the id
- if (validationErrors && validationErrors[modelProperty]) {
- this.__lastInvalidValue = propertyValue;
- return options.setProperty(element, {}, node);
- } else {
- var properties = {};
- properties[modelProperty] = propertyValue;
- return options.setProperty(element, properties, node);
- }
- };
- var validate = defaultParameters.validate = function(element, values, node) {
- var value = values[modelProperty] || this.__lastInvalidValue;
- var property = {};
- property[modelProperty] = value;
- return options.validate(element, property, node);
- };
- return textField(options, defaultParameters);
- };
- module.exports = validationAwareTextField;
|