import * as React from 'react'; import styled from 'styled-components'; import { Sizes, Colors } from '../index'; import { getChildrenOfClass } from '../utils/elementsHelper'; import { styledByMediaQuery } from '../utils/styles'; interface IProps { data?: Object[]; defaultHeader?: boolean; header?: Object; children: any; isActive?: boolean; } const DataTableWrapper = styled.div` max-height: 367px; overflow-y: scroll; margin-bottom: 25px; `; const DataHeader = styled.div` font-size: ${Sizes.s2}px; padding-bottom: ${Sizes.s1}px; padding-left: ${Sizes.s1}px; border-bottom: 1px solid ${Colors.line}; min-width: 25%; display: flex; ${styledByMediaQuery(`padding-left: ${Sizes.s4}px;`)} `; const TableLine = styled.div<{isActive?: boolean; onClick?: any}>` padding: ${Sizes.s3 + 1}px ${Sizes.s1}px; border-bottom: 1px solid ${Colors.line}; display: flex; align-items: center; justify-content: flex-start; transition: all 0.3s; position: relative; ${styledByMediaQuery(`padding: ${Sizes.s3 + 1}px ${Sizes.s4}px;`)} &:hover { background-color: ${Colors.heaven}; } `; export default class DataTable extends React.PureComponent { static Header = DataHeader; static Line = TableLine; render () { const { children } = this.props; const isHeader = getChildrenOfClass(DataHeader, children); const isContent = getChildrenOfClass(TableLine, children); return ( {isHeader} {isContent} ); } }