romagny13-react-form-validation
Version:
React Form Binding and Validation
164 lines (138 loc) • 5.12 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* Allows resolving form element value (on change, on blur, etc.).
*/
var DOMFormHelper = exports.DOMFormHelper = function () {
function DOMFormHelper() {
_classCallCheck(this, DOMFormHelper);
}
_createClass(DOMFormHelper, null, [{
key: 'isInput',
/**
* Checks if the element is an "input".
* @param {Object} element
* @return {boolean}
*/
value: function isInput(element) {
return element.tagName === 'INPUT';
}
/**
* Checks if the element is a "textarea".
* @param {Object} element
* @return {boolean}
*/
}, {
key: 'isTextarea',
value: function isTextarea(element) {
return element.tagName === 'TEXTAREA';
}
/**
* Checks if the element is a "select" element.
* @param {Object} element
* @return {boolean}
*/
}, {
key: 'isSelect',
value: function isSelect(element) {
return element.tagName === 'SELECT';
}
/**
* Checks if the element is an input with the type "checkbox".
* @param {Object} element
* @return {boolean}
*/
}, {
key: 'isCheckbox',
value: function isCheckbox(element) {
return element.type && element.type === 'checkbox';
}
/**
* Checks if the element is an input with the type "radio".
* @param {Object} element
* @return {boolean}
*/
}, {
key: 'isRadio',
value: function isRadio(element) {
return element.type && element.type === 'radio';
}
/**
* Checks if the element is an input with the type "number" or "range".
* @param {Object} element
* @return {boolean}
*/
}, {
key: 'isNumberElement',
value: function isNumberElement(element) {
return element.type && (element.type === 'number' || element.type === 'range');
}
/**
* Returns checked or the checkbox value.
* @param {Object} checkbox
* @return {string|boolean}
*/
}, {
key: 'getCheckboxValue',
value: function getCheckboxValue(checkbox) {
return checkbox.value && checkbox.value !== 'on' ? checkbox.value : checkbox.checked;
}
/**
* Returns the input value.
* @param {Object} element
* @return {string}
*/
}, {
key: 'getInputValue',
value: function getInputValue(element) {
if (DOMFormHelper.isCheckbox(element)) {
return DOMFormHelper.getCheckboxValue(element);
} else {
return element.value;
}
}
/**
* Returns the selected value(s) (multiple supported).
* @param {Object} select
* @return {string|Array}
*/
}, {
key: 'getSelectValue',
value: function getSelectValue(select) {
if (select.multiple) {
var values = [];
var options = select.options;
for (var i = 0; i < options.length; i++) {
var option = options[i];
if (option.selected) {
values.push(option.value);
}
}
return values;
} else {
return select.options[select.selectedIndex].value;
}
}
/**
* Checks the element type (input, checbox, select, textarea) and returns the value.
* @param {Object} element
* @return {Object|Array|string|boolean}
*/
}, {
key: 'getElementValue',
value: function getElementValue(element) {
if (DOMFormHelper.isInput(element)) {
return DOMFormHelper.getInputValue(element);
} else if (DOMFormHelper.isTextarea(element)) {
return element.value;
} else if (DOMFormHelper.isSelect(element)) {
return DOMFormHelper.getSelectValue(element);
}
}
}]);
return DOMFormHelper;
}();
;