@vs-form/vs-form
Version:
A schema-based form generator component for React using material-ui
105 lines (100 loc) • 3.77 kB
JavaScript
'use strict';
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var React = require('react');
var React__default = _interopDefault(React);
require('lodash/capitalize');
require('lodash/cloneDeep');
require('lodash/get');
require('lodash/has');
var isArray = _interopDefault(require('lodash/isArray'));
require('lodash/isDate');
require('lodash/isBoolean');
require('lodash/isEmpty');
require('lodash/isFunction');
require('lodash/isInteger');
require('lodash/isNull');
require('lodash/isNumber');
require('lodash/isObject');
require('lodash/isPlainObject');
require('lodash/isRegExp');
require('lodash/isString');
require('lodash/isUndefined');
require('lodash/merge');
var set = _interopDefault(require('lodash/set'));
require('lodash/toInteger');
require('lodash/toNumber');
require('lodash/trimEnd');
require('lodash/uniq');
require('lodash/debounce');
require('lodash/throttle');
require('./chunk-e8808437.js');
require('@material-ui/core/FormControl');
require('@material-ui/core/FormHelperText');
require('@material-ui/core/FormLabel');
require('@material-ui/core/TextField');
require('@material-ui/core/InputAdornment');
require('./chunk-7581cbb1.js');
require('@material-ui/core/Tooltip');
var __chunk_4 = require('./chunk-364f6801.js');
require('@material-ui/core/styles');
require('classnames');
require('@material-ui/core/Icon');
require('@material-ui/core/SvgIcon');
require('./chunk-41ea4037.js');
require('./chunk-2f21f066.js');
require('date-fns');
require('events');
require('@material-ui/core/Typography');
require('./chunk-819d0a62.js');
require('@material-ui/core/Grid');
require('@material-ui/core/IconButton');
require('./chunk-f9facc49.js');
var Checkbox = _interopDefault(require('@material-ui/core/Checkbox'));
var MenuItem = _interopDefault(require('@material-ui/core/MenuItem'));
class VsSelect extends React.Component {
constructor(props) {
super(props);
this.changeValue = (dataProps) => (evt) => {
const value = evt.target.value;
dataProps.updateValue(value);
};
this.getProps = () => {
set(this.comp, 'props.select', true);
if (__chunk_4.dataTypeIsArray(this.comp.data.dataType)) {
set(this.comp, 'props.SelectProps.multiple', true);
set(this.comp, 'props.SelectProps.renderValue', this.renderValue);
}
};
this.renderValue = (selected) => {
const items = this.comp.data.items;
const findItem = (s) => items.find(i => i.value === s) || { text: '' };
const find = (s) => findItem(s).text;
const res = selected.map(s => find(s));
return res.join(', ');
};
this.getItems = (value) => {
const items = this.comp.data.items;
return items.map((item) => {
return (React.createElement(MenuItem, { key: item.value, value: item.value },
isArray(value) && React.createElement(Checkbox, { checked: value.indexOf(item.value) > -1 }),
item.text));
});
};
this.getProps();
}
get comp() { return this.props.comp; }
render() {
return React.createElement(__chunk_4.VsBaseInput, Object.assign({ value: this.getValue, onChange: this.changeValue, renderItems: this.getItems }, this.props));
}
getValue(dataProps) {
let defaultValue;
if (__chunk_4.dataTypeIsArray(this.comp.data.dataType)) {
defaultValue = [];
}
else {
defaultValue = '';
}
return dataProps.state.value || defaultValue;
}
}
exports.default = VsSelect;