UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

212 lines (182 loc) 7.92 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "TableRow", { enumerable: true, get: function get() { return _TableRow.default; } }); Object.defineProperty(exports, "TableCell", { enumerable: true, get: function get() { return _TableCell.default; } }); Object.defineProperty(exports, "TableBody", { enumerable: true, get: function get() { return _TableBody.default; } }); Object.defineProperty(exports, "TableHead", { enumerable: true, get: function get() { return _TableHead.default; } }); Object.defineProperty(exports, "TableFooter", { enumerable: true, get: function get() { return _TableFooter.default; } }); exports.default = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var React = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _TableRow = _interopRequireWildcard(require("./TableRow")); var _TableCell = _interopRequireWildcard(require("./TableCell")); var _TableBody = _interopRequireWildcard(require("./TableBody")); var _consts = _interopRequireDefault(require("./consts")); var _defaultTheme = _interopRequireDefault(require("../defaultTheme")); var _TableHead = _interopRequireDefault(require("./TableHead")); var _TableFooter = _interopRequireDefault(require("./TableFooter")); var StyledTableOuter = _styledComponents.default.div.withConfig({ displayName: "Table__StyledTableOuter", componentId: "sc-156ovmd-0" })(["max-width:100%;width:100%;position:relative;&::after,&::before{content:\" \";display:", ";position:absolute;width:16px;height:100%;top:0;transition:opacity ", " ease-in-out;}&::after{opacity:", ";background-image:", ";right:0;}&::before{opacity:", ";left:0;background-image:", ";}"], function (_ref) { var showShadows = _ref.showShadows; return showShadows ? "block" : "none"; }, function (_ref2) { var theme = _ref2.theme; return theme.orbit.durationNormal; }, function (_ref3) { var showRight = _ref3.showRight; return showRight ? "1" : "0"; }, function (_ref4) { var theme = _ref4.theme; return theme.orbit.backgroundTableShadowRight; }, function (_ref5) { var showLeft = _ref5.showLeft; return showLeft ? "1" : "0"; }, function (_ref6) { var theme = _ref6.theme; return theme.orbit.backgroundTableShadowLeft; }); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledTableOuter.defaultProps = { theme: _defaultTheme.default }; var StyledTableInner = _styledComponents.default.div.withConfig({ displayName: "Table__StyledTableInner", componentId: "sc-156ovmd-1" })(["width:100%;", ";"], function (_ref7) { var showShadows = _ref7.showShadows; return showShadows && (0, _styledComponents.css)(["overflow-x:auto;-webkit-overflow-scrolling:touch;"]); }); var StyledTable = _styledComponents.default.table.withConfig({ displayName: "Table__StyledTable", componentId: "sc-156ovmd-2" })(["display:table;border-collapse:collapse;border-spacing:0;width:100%;white-space:nowrap;& ", " > ", "{background-color:", ";border-bottom:1px solid ", ";transition:background-color ", " ease-in-out;", " &:last-child{border:0;}&:hover{background-color:", ";}}& ", "{height:", ";padding:", ";line-height:", ";color:", ";}"], _TableBody.StyledTableBody, _TableRow.StyledTableRow, function (_ref8) { var theme = _ref8.theme; return theme.orbit.backgroundTable; }, function (_ref9) { var theme = _ref9.theme; return theme.orbit.borderColorTable; }, function (_ref10) { var theme = _ref10.theme; return theme.orbit.durationFast; }, function (_ref11) { var striped = _ref11.striped, theme = _ref11.theme; return striped && (0, _styledComponents.css)(["&:nth-of-type(even){background-color:", ";}"], theme.orbit.backgroundTableEven); }, function (_ref12) { var theme = _ref12.theme; return theme.orbit.backgroundTableHover; }, _TableCell.StyledTableCell, function (_ref13) { var compact = _ref13.compact, theme = _ref13.theme; return compact ? theme.orbit.spaceXLarge : theme.orbit.spaceXXLarge; }, function (_ref14) { var theme = _ref14.theme, compact = _ref14.compact; return compact ? "6px ".concat(theme.orbit.spaceSmall) : "10px ".concat(theme.orbit.spaceSmall); }, function (_ref15) { var theme = _ref15.theme; return theme.orbit.lineHeightTextNormal; }, function (_ref16) { var type = _ref16.type, theme = _ref16.theme; return type === _consts.default.SECONDARY && theme.orbit.paletteInkLight; }); // $FlowFixMe: https://github.com/flow-typed/flow-typed/issues/3653#issuecomment-568539198 StyledTable.defaultProps = { theme: _defaultTheme.default }; var Table = function Table(_ref17) { var children = _ref17.children, _ref17$striped = _ref17.striped, striped = _ref17$striped === void 0 ? true : _ref17$striped, _ref17$compact = _ref17.compact, compact = _ref17$compact === void 0 ? false : _ref17$compact, dataTest = _ref17.dataTest, _ref17$type = _ref17.type, type = _ref17$type === void 0 ? _consts.default.PRIMARY : _ref17$type; var _React$useState = React.useState(false), _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2), shadows = _React$useState2[0], setShadows = _React$useState2[1]; var _React$useState3 = React.useState(false), _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2), right = _React$useState4[0], setRight = _React$useState4[1]; var _React$useState5 = React.useState(false), _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2), left = _React$useState6[0], setLeft = _React$useState6[1]; var outer = React.useRef(null); var inner = React.useRef(null); var table = React.useRef(null); var handleScroll = function handleScroll() { if (shadows && inner && table && outer) { var _inner$current, _inner$current2, _outer$current, _table$current; setLeft(((_inner$current = inner.current) === null || _inner$current === void 0 ? void 0 : _inner$current.scrollLeft) >= 5); setRight(((_inner$current2 = inner.current) === null || _inner$current2 === void 0 ? void 0 : _inner$current2.scrollLeft) + ((_outer$current = outer.current) === null || _outer$current === void 0 ? void 0 : _outer$current.clientWidth) <= ((_table$current = table.current) === null || _table$current === void 0 ? void 0 : _table$current.clientWidth)); } }; var handleResize = React.useCallback(function () { if (table && outer) { var _table$current2, _outer$current2; var showShadows = ((_table$current2 = table.current) === null || _table$current2 === void 0 ? void 0 : _table$current2.clientWidth) > ((_outer$current2 = outer.current) === null || _outer$current2 === void 0 ? void 0 : _outer$current2.clientWidth); setShadows(showShadows); setRight(showShadows); } }, []); React.useEffect(function () { window.addEventListener("resize", handleResize); handleResize(); return function () { window.removeEventListener("resize", handleResize); }; }, [handleResize]); return /*#__PURE__*/React.createElement(StyledTableOuter, { ref: outer, showShadows: shadows, showLeft: left, showRight: right, "data-test": dataTest }, /*#__PURE__*/React.createElement(StyledTableInner, { ref: inner, onScroll: handleScroll, showShadows: shadows }, /*#__PURE__*/React.createElement(StyledTable, { striped: striped, compact: compact, type: type, ref: table }, children))); }; var _default = Table; exports.default = _default;