Home Reference Source

src/components/widgets/AdvancedTable/AdvancedTableFilterPopup.jsx

import React from 'react';
import { pure } from 'recompose';
import PropTypes from 'prop-types';
import InputText from '../../controls/InputText/InputText';
import { Button } from 'reactstrap';

/**
 * Компонент overlay для фильтра
 * @param value - значение фильтра
 * @param onChange - callback на изменение
 * @param onResetFilter - callback на сброс фильтра
 * @param onSetFilter - callback на поиск
 * @param component - компонент контрол фильтра
 * @returns {*}
 * @constructor
 */
function AdvancedTableFilterPopup({
  value,
  onChange,
  onResetFilter,
  onSetFilter,
  component,
}) {
  const childProps = {
    value,
    onChange,
  };

  return (
    <React.Fragment>
      <div className="n2o-advanced-table-filter-dropdown-popup">
        {component ? (
          React.createElement(component, childProps)
        ) : (
          <InputText value={value} onChange={onChange} />
        )}
      </div>
      <div className="n2o-advanced-table-filter-dropdown-buttons">
        <Button color={'primary'} size={'sm'} onClick={onSetFilter}>
          Искать
        </Button>
        <Button size={'sm'} onClick={onResetFilter}>
          Сбросить
        </Button>
      </div>
    </React.Fragment>
  );
}

AdvancedTableFilterPopup.propTypes = {
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
  onChange: PropTypes.func,
  onResetFilter: PropTypes.func,
  onSetFilter: PropTypes.func,
};

AdvancedTableFilterPopup.defaultProps = {
  onChange: () => {},
  onResetFilter: () => {},
  onSetFilter: () => {},
};

export default pure(AdvancedTableFilterPopup);