UNPKG

@eccenca/gui-elements

Version:

Collection of low-level GUI elements like Buttons, Icons or Alerts. Also includes core styles for those elements.

95 lines (85 loc) 2.61 kB
import React from 'react'; import Proptypes from 'prop-types'; import classNames from 'classnames'; /** Provides table cell element that can be enriched by sub elements. ```js import {TableCell} from '@eccenca/gui-elements'; class Page extends React.Component { // ... // template rendering // use it inside the correct Table elements render() { return ( <TableCell isHead={true} // boolean, if the table cell contains a table head for the column or row (optional, default: false) likeHead={true} // boolean, if a normal table cell should be look like a head element (optional, default: false) multiline={false} // boolean true or false, allow linebreaks and multilined content in table cells (optional, default: false) preventCellOverflow={true} // boolean true or false, prevent overflowing content in table cells (optional, default: false) className="my-own-class" // string, used for additional CSS class descriptions > <!-- content --> </TableCell> ) }, // ... }; ``` */ const TableCell = props => { const { isHead, likeHead, className, children, multiline, preventCellOverflow, ...otherProps } = props; const TableCellType = isHead === true ? 'th' : 'td'; const cellClassNames = classNames( { 'mdl-data-table__header': isHead === false && likeHead === true, 'mdl-data-table--multiline': multiline === true, 'mdl-data-table--preventoverflow': preventCellOverflow === true, }, className ); return ( <TableCellType className={cellClassNames} {...otherProps}> {children} </TableCellType> ); }; TableCell.propTypes = { children: Proptypes.oneOfType([Proptypes.node]), /** * optional CSS class */ className: Proptypes.string, /** * table cell is head for column or row */ isHead: Proptypes.bool, /** * table cell looks like header cell */ likeHead: Proptypes.bool, /** * allow linebreaks and multilined content in table cells */ multiline: Proptypes.bool, /** * prevent overflowing content in table cells */ preventCellOverflow: Proptypes.bool, }; TableCell.defaultProps = { isHead: false, likeHead: false, className: '', multiline: false, preventCellOverflow: false, }; TableCell.displayName = 'Table cell'; export default TableCell;