grommet
Version:
focus on the essential experience
69 lines • 3.37 kB
JavaScript
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 };