pouncejs
Version:
A collection of UI components from Panther labs
68 lines (54 loc) • 2.79 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = exports.useTable = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _react = _interopRequireDefault(require("react"));
var _Box = _interopRequireDefault(require("../Box"));
var TableContext = /*#__PURE__*/_react.default.createContext({});
var useTable = function useTable() {
return _react.default.useContext(TableContext);
};
exports.useTable = useTable;
var Table = /*#__PURE__*/_react.default.forwardRef(function Table(_ref, ref) {
var _ref$layout = _ref.layout,
layout = _ref$layout === void 0 ? 'auto' : _ref$layout,
_ref$size = _ref.size,
size = _ref$size === void 0 ? 'medium' : _ref$size,
_ref$stickyHeader = _ref.stickyHeader,
stickyHeader = _ref$stickyHeader === void 0 ? false : _ref$stickyHeader,
_ref$hoverable = _ref.hoverable,
hoverable = _ref$hoverable === void 0 ? false : _ref$hoverable,
_ref$rowSeparationStr = _ref.rowSeparationStrategy,
rowSeparationStrategy = _ref$rowSeparationStr === void 0 ? 'background' : _ref$rowSeparationStr,
_ref$backgroundColor = _ref.backgroundColor,
backgroundColor = _ref$backgroundColor === void 0 ? 'inherit' : _ref$backgroundColor,
_ref$backgroundColorO = _ref.backgroundColorOddRows,
backgroundColorOddRows = _ref$backgroundColorO === void 0 ? 'navyblue-500' : _ref$backgroundColorO,
rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["layout", "size", "stickyHeader", "hoverable", "rowSeparationStrategy", "backgroundColor", "backgroundColorOddRows"]);
var contextValue = _react.default.useMemo(function () {
return {
size: size,
hoverable: hoverable,
rowSeparationStrategy: rowSeparationStrategy,
stickyHeader: stickyHeader,
backgroundColor: backgroundColor,
backgroundColorOddRows: backgroundColorOddRows
};
}, [size, rowSeparationStrategy, hoverable, stickyHeader, backgroundColor, backgroundColorOddRows]);
return /*#__PURE__*/_react.default.createElement(TableContext.Provider, {
value: contextValue
}, /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
as: "table",
tableLayout: layout,
ref: ref,
width: 1 // Make a new "stacking context" so that any absolute- / sticky-positioned
// items (like header rows) will not pollute the global z-index space.
,
position: "relative",
zIndex: 0
}, rest)));
});
var _default = /*#__PURE__*/_react.default.memo(Table);
exports.default = _default;