Home Reference Source

src/components/controls/ControlFactory.jsx

/**
 * Created by emamoshin on 29.05.2017.
 */
import React from 'react';
import PropTypes from 'prop-types';
import Controls from './index';

/**
 * Фабрика контролов
 * @reactProps {string} src - src контрола
 * @example
 * <ControlFactory src='./path/to/control' className='my-control-class'/>
 */
class ControlFactory extends React.Component {
  /**
   * Базовый рендер
   */
  render() {
    const { src, ...props } = this.props;
    return React.createElement(Controls[src], props, this.props.children);
  }
}

ControlFactory.propTypes = {
  src: PropTypes.string.isRequired,
};

export default ControlFactory;