import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { intlShape } from 'meteor/vulcan:i18n';
import { Components, registerComponent, instantiateComponent } from 'meteor/vulcan:core';
import classNames from 'classnames';
class FormComponentInner extends PureComponent {
renderClear = () => {
if (['datetime', 'time', 'select', 'radiogroup'].includes(this.props.input)) {
return (
✕
);
}
};
getProperties = () => {
const { name, options, label, onChange, value } = this.props;
// these properties are whitelisted so that they can be safely passed to the actual form input
// and avoid https://facebook.github.io/react/warnings/unknown-prop.html warnings
const inputProperties = {
name,
options,
label,
onChange,
value,
...this.props.inputProperties,
};
return {
...this.props,
inputProperties,
};
};
render() {
const {
inputClassName,
name,
input,
beforeComponent,
afterComponent,
errors,
showCharsRemaining,
charsRemaining,
renderComponent,
intlInput,
} = this.props;
const hasErrors = errors && errors.length;
const inputName = typeof input === 'function' ? input.name : input;
const inputClass = classNames(
'form-input',
inputClassName,
`input-${name}`,
`form-component-${inputName || 'default'}`,
{ 'input-error': hasErrors }
);
const properties = this.getProperties();
const FormInput = this.props.formInput;
if (intlInput) {
return