ruoyi-vue-nocode/ruoyi-ui/ruoyi-bpmnjs/resources/properties-panel/factory/ValidationAwareTextInput.js

57 lines
1.5 KiB
JavaScript
Raw Normal View History

2022-08-11 16:10:41 +08:00
'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;