UNPKG

grommet

Version:

focus on the essential experience

69 lines 3.37 kB
import styled, { css } from 'styled-components'; import { backgroundStyle, borderStyle, edgeStyle, genericStyles, styledComponentsConfig } from '../../utils'; var SIZE_MAP = { '1/2': '50%', '1/4': '25%', '2/4': '50%', '3/4': '75%', '1/3': '33.33%', '2/3': '66.66%' }; var sizeStyle = css(["width:", ";max-width:", ";overflow:hidden;"], function (props) { return props.size === 'auto' ? // setting width to a small value will allow // the cell to fit width of its content. this // is a commonly implemented CSS pattern to // allow an auto-width behavior on fixed table // layouts (which is what DataTable applies) // https://stackoverflow.com/questions/4757844/css-table-column-autowidth?noredirect=1&lq=1 '1px' : SIZE_MAP[props.size] || props.theme.global.size[props.size] || props.size; }, function (props) { return props.size !== 'auto' ? SIZE_MAP[props.size] || props.theme.global.size[props.size] || props.size : undefined; }); var StyledTableCell = styled.td.withConfig(styledComponentsConfig).withConfig({ displayName: "StyledTable__StyledTableCell", componentId: "sc-1m3u5g-0" })(["margin:0;padding:0;font-weight:inherit;text-align:inherit;", " ", " ", " ", " ", " ", " ", ""], function (props) { return props.size && sizeStyle; }, function (props) { return props.verticalAlign && "vertical-align: " + props.verticalAlign + ";"; }, function (props) { return props.align && "text-align: " + props.align + ";"; }, function (props) { return props.background && backgroundStyle(props.background, props.theme); }, function (props) { return props.border && borderStyle(props.border, props.responsive, props.theme); }, function (props) { return props.pad && edgeStyle('padding', props.pad, props.responsive, props.theme.box.responsiveBreakpoint, props.theme); }, function (props) { return props.tableContextTheme && props.tableContextTheme.extend; }); var StyledTableDataCaption = styled.caption.withConfig(styledComponentsConfig).withConfig({ displayName: "StyledTable__StyledTableDataCaption", componentId: "sc-1m3u5g-1" })(["", ""], function (props) { return edgeStyle('margin', props.theme.table.caption.margin, false, props.theme.global.edgeSize.responsiveBreakpoint, props.theme); }); var StyledTableRow = styled.tr.withConfig(styledComponentsConfig).withConfig({ displayName: "StyledTable__StyledTableRow", componentId: "sc-1m3u5g-2" })([""]); var StyledTableBody = styled.tbody.withConfig(styledComponentsConfig).withConfig({ displayName: "StyledTable__StyledTableBody", componentId: "sc-1m3u5g-3" })([""]); var StyledTableHeader = styled.thead.withConfig(styledComponentsConfig).withConfig({ displayName: "StyledTable__StyledTableHeader", componentId: "sc-1m3u5g-4" })([""]); var StyledTableFooter = styled.tfoot.withConfig(styledComponentsConfig).withConfig({ displayName: "StyledTable__StyledTableFooter", componentId: "sc-1m3u5g-5" })([""]); var StyledTable = styled.table.withConfig(styledComponentsConfig).withConfig({ displayName: "StyledTable", componentId: "sc-1m3u5g-6" })(["border-spacing:0;border-collapse:collapse;width:inherit;", " ", ";"], genericStyles, function (props) { return props.theme.table && props.theme.table.extend; }); export { StyledTableCell, StyledTableDataCaption, StyledTableRow, StyledTableBody, StyledTableHeader, StyledTableFooter, StyledTable };