ManageIQ/manageiq-ui-classic

View on GitHub
app/javascript/components/miq-structured-list/miq-structured-list-header.jsx

Summary

Maintainability
A
0 mins
Test Coverage
import React from 'react';
import PropTypes from 'prop-types';
import {
  StructuredListHead,
  StructuredListRow,
  StructuredListCell,
} from 'carbon-components-react';
import { isObject } from './helpers';

const MiqStructuredListHeader = ({ headers }) => {
  /** Function to render the header which contains sorting feature. */
  /** Usage eg: Compute / Container / Container Builds */
  const renderHeaderObjectItem = (header) => (
    <div className="sortable_header">
      <div className="pull-left">{header.value}</div>
      <div className="pull-right">
        <i className={header.sortable === 'asc' ? 'fa fa-sort-asc' : 'fa fa-sort-desc'} />
      </div>
    </div>
  );

  /** Function to render a header cell. */
  const renderHeaderItem = (header, index) => (
    <StructuredListCell head key={index} className="list_header">
      {isObject(header) ? renderHeaderObjectItem(header) : header}
    </StructuredListCell>
  );

  /** Function to render the headers. */
  return (
    <StructuredListHead>
      <StructuredListRow head tabIndex={0}>
        {
          headers.map((header, index) => renderHeaderItem(header, index))
        }
      </StructuredListRow>
    </StructuredListHead>
  );
};

export default MiqStructuredListHeader;

MiqStructuredListHeader.propTypes = {
  headers: PropTypes.arrayOf(PropTypes.any),
};

MiqStructuredListHeader.defaultProps = {
  headers: [],
};