mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2026-01-04 20:19:15 +00:00
33 lines
902 B
JavaScript
33 lines
902 B
JavaScript
var _ = require('lodash');
|
|
|
|
|
|
module.exports = {
|
|
id : function(){
|
|
if(this.props.id) return this.props.id;
|
|
if(this.props.label) return _.snakeCase(this.props.label);
|
|
if(this.props.title) return _.snakeCase(this.props.title);
|
|
return this.props.name;
|
|
},
|
|
data : function(){
|
|
if(!this.id()) return this.props.data || this.props.defaultData;
|
|
if(this.props.data && this.props.data[this.id()]) return this.props.data[this.id()];
|
|
return this.props.defaultData;
|
|
},
|
|
updateData : function(val){
|
|
if(typeof this.props.onChange !== 'function') throw "No onChange handler set";
|
|
|
|
var newVal = val;
|
|
|
|
//Clone the data if it's an object to avoid mutation bugs
|
|
if(_.isObject(val)) newVal = _.extend({}, this.data(), val);
|
|
|
|
if(this.id()){
|
|
this.props.onChange({
|
|
[this.id()] : newVal
|
|
});
|
|
}else{
|
|
//If the box has no id, don't add it to the chain
|
|
this.props.onChange(newVal)
|
|
}
|
|
}
|
|
} |