react-form-data
Version:
React mixin to get form data in nice javascript object format.
73 lines (67 loc) • 1.67 kB
JavaScript
// Generated by CoffeeScript 1.12.6
var getValue, isCheckbox, isMultiChoice, toggleValue;
isCheckbox = function(el) {
return el.getAttribute('type') === 'checkbox';
};
isMultiChoice = function(checkbox) {
return checkbox.getAttribute('value') != null;
};
toggleValue = function(arr, val) {
var valueIndex;
valueIndex = arr.indexOf(val);
if (valueIndex !== -1) {
arr.splice(valueIndex, 1);
} else {
arr.push(val);
}
return arr;
};
getValue = function(el, currentValue) {
if (!isCheckbox(el)) {
return el.value;
} else {
if (isMultiChoice(el)) {
if (currentValue == null) {
currentValue = [];
}
return toggleValue(currentValue, el.value);
} else {
return el.checked;
}
}
};
module.exports = {
UNSAFE_componentWillMount: function() {
if (this.getInitialFormData != null) {
return this.formData = this.getInitialFormData();
} else {
return this.formData = {};
}
},
updateFormData: function(e) {
var key, newValue, t;
t = e.target;
key = t.getAttribute('name');
if (key != null) {
newValue = getValue(t, this.formData[key]);
this.setFormData(key, newValue);
if (this.formDataDidChange != null) {
return this.formDataDidChange();
}
}
},
setFormData: function(key, value) {
return this.formData[key] = value;
},
clearFormData: function() {
return this.formData = {};
},
resetFormData: function(obj) {
this.clearFormData();
return Object.keys(obj).forEach((function(_this) {
return function(key) {
return _this.formData[key] = obj[key];
};
})(this));
}
};