@geist-ui/core
Version:
Modern and minimalist React UI library.
58 lines (55 loc) • 5.31 kB
JavaScript
import _JSXStyle from "../styled-jsx.es.js";
import React, { useMemo } from 'react';
import useTheme from '../use-theme';
var defaultProps = {
className: ''
};
var makeColgroup = function makeColgroup(width, columns) {
var unsetWidthCount = columns.filter(function (c) {
return !c.width;
}).length;
var customWidthTotal = columns.reduce(function (pre, current) {
return current.width ? pre + current.width : pre;
}, 0);
var averageWidth = (width - customWidthTotal) / unsetWidthCount;
if (averageWidth <= 0) return /*#__PURE__*/React.createElement("colgroup", null);
return /*#__PURE__*/React.createElement("colgroup", null, columns.map(function (column, index) {
return /*#__PURE__*/React.createElement("col", {
key: "colgroup-".concat(index),
width: column.width || averageWidth
});
}));
};
var TableHead = function TableHead(props) {
var theme = useTheme();
var _ref = props,
columns = _ref.columns,
width = _ref.width;
var isScalableWidth = useMemo(function () {
return columns.find(function (item) {
return !!item.width;
});
}, [columns]);
var colgroup = useMemo(function () {
if (!isScalableWidth) return /*#__PURE__*/React.createElement("colgroup", null);
return makeColgroup(width, columns);
}, [isScalableWidth, width]);
return /*#__PURE__*/React.createElement(React.Fragment, null, colgroup, /*#__PURE__*/React.createElement("thead", {
className: _JSXStyle.dynamic([["134865897", [theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]])
}, /*#__PURE__*/React.createElement("tr", {
className: _JSXStyle.dynamic([["134865897", [theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]])
}, columns.map(function (column, index) {
return /*#__PURE__*/React.createElement("th", {
key: "table-th-".concat(column.prop, "-").concat(index),
className: _JSXStyle.dynamic([["134865897", [theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]]) + " " + (column.className || "")
}, /*#__PURE__*/React.createElement("div", {
className: _JSXStyle.dynamic([["134865897", [theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]]]) + " " + "thead-box"
}, column.label));
}))), /*#__PURE__*/React.createElement(_JSXStyle, {
id: "134865897",
dynamic: [theme.palette.accents_5, theme.palette.accents_1, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius, theme.palette.border, theme.palette.border, theme.palette.border, theme.layout.radius, theme.layout.radius]
}, "thead.__jsx-style-dynamic-selector{border-collapse:separate;border-spacing:0;font-size:inherit;}th.__jsx-style-dynamic-selector{padding:0 0.5em;font-size:calc(0.75 * var(--table-font-size));font-weight:normal;text-align:left;-webkit-letter-spacing:0;-moz-letter-spacing:0;-ms-letter-spacing:0;letter-spacing:0;vertical-align:middle;min-height:calc(2.5 * var(--table-font-size));color:".concat(theme.palette.accents_5, ";background:").concat(theme.palette.accents_1, ";border-bottom:1px solid ").concat(theme.palette.border, ";border-top:1px solid ").concat(theme.palette.border, ";border-radius:0;}th.__jsx-style-dynamic-selector:nth-child(1){border-bottom:1px solid ").concat(theme.palette.border, ";border-left:1px solid ").concat(theme.palette.border, ";border-top:1px solid ").concat(theme.palette.border, ";border-top-left-radius:").concat(theme.layout.radius, ";border-bottom-left-radius:").concat(theme.layout.radius, ";}th.__jsx-style-dynamic-selector:last-child{border-bottom:1px solid ").concat(theme.palette.border, ";border-right:1px solid ").concat(theme.palette.border, ";border-top:1px solid ").concat(theme.palette.border, ";border-top-right-radius:").concat(theme.layout.radius, ";border-bottom-right-radius:").concat(theme.layout.radius, ";}.thead-box.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-align:center;min-height:calc(2.5 * var(--table-font-size));text-transform:uppercase;}")));
};
TableHead.defaultProps = defaultProps;
TableHead.displayName = 'GeistTableHead';
export default TableHead;