UNPKG

@netdata/netdata-ui

Version:

netdata UI kit

131 lines 4.57 kB
var _excluded = ["id", "headers", "testPrefix", "rowReverse"], _excluded2 = ["groups", "size", "side", "flex"], _excluded3 = ["table", "testPrefix"]; function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } import React, { memo } from "react"; import styled from "styled-components"; import Flex from "../../../templates/flex"; import { useTableState } from "../../provider"; import Cell from "./cell"; import { Handler } from "./resizeHandler"; var rerenderSelector = function rerenderSelector(state) { var columns = state.allColumns || []; return { sizing: state.columnSizing, expanded: state.expanded, columnVisibility: state.columnVisibility, selectedRows: state.selectedRows, grouping: state.grouping, columnsCount: columns.length, columnsFilters: columns.map(function (_ref) { var _columnDef$meta; var columnDef = _ref.columnDef; return columnDef == null || (_columnDef$meta = columnDef.meta) == null || (_columnDef$meta = _columnDef$meta.filter) == null ? void 0 : _columnDef$meta.options; }) }; }; var _HeaderGroup = function HeaderGroup(_ref2) { var id = _ref2.id, headers = _ref2.headers, testPrefix = _ref2.testPrefix, rowReverse = _ref2.rowReverse, rest = _objectWithoutPropertiesLoose(_ref2, _excluded); return /*#__PURE__*/React.createElement(Flex, { id: id, "data-testid": "netdata-table-headRow" + testPrefix, flex: true, background: "tableRowBg", rowReverse: rowReverse }, headers.map(function (header, index) { return /*#__PURE__*/React.createElement(Cell, _extends({ key: header.id, index: index }, rest, { header: header, testPrefix: testPrefix, hasSubheaders: !!header.subHeaders.length }), !!header.subHeaders.length && /*#__PURE__*/React.createElement(_HeaderGroup, _extends({ headers: header.subHeaders, id: header.id, key: header.id }, rest, { isSubheader: true }))); })); }; var HeaderGroups = function HeaderGroups(_ref3) { var groups = _ref3.groups, size = _ref3.size, side = _ref3.side, _ref3$flex = _ref3.flex, flex = _ref3$flex === void 0 ? "grow" : _ref3$flex, rest = _objectWithoutPropertiesLoose(_ref3, _excluded2); if (!groups[0].headers.length) return null; return /*#__PURE__*/React.createElement(Flex, _extends({ position: side ? "sticky" : "relative" }, side === "right" ? { right: 0, border: { side: "left" } } : { left: 0, border: { side: "right" } }, { zIndex: side ? 11 : undefined, width: size + "px", flex: flex, column: true }), /*#__PURE__*/React.createElement(_HeaderGroup, _extends({ headers: groups[0].headers, id: groups[0].id, key: groups[0].id }, rest))); }; var HeaderRow = styled(Flex).withConfig({ displayName: "header__HeaderRow", componentId: "sc-7c5nnc-0" })(["", "{display:none;}&:hover ", "{display:block;}"], Handler, Handler); var BodyHeader = /*#__PURE__*/memo(function (_ref4) { var table = _ref4.table, testPrefix = _ref4.testPrefix, rest = _objectWithoutPropertiesLoose(_ref4, _excluded3); useTableState(rerenderSelector); return /*#__PURE__*/React.createElement(HeaderRow, { "data-testid": "netdata-table-head" + testPrefix, flex: true, border: { size: "1px", type: "solid", side: "bottom", color: "border" } }, /*#__PURE__*/React.createElement(HeaderGroups, _extends({ groups: table.getLeftHeaderGroups(), side: "left", size: table.getLeftTotalSize(), testPrefix: testPrefix }, rest, { flex: false, table: table })), /*#__PURE__*/React.createElement(HeaderGroups, _extends({ groups: table.getCenterHeaderGroups(), size: table.getCenterTotalSize(), testPrefix: testPrefix }, rest, { table: table })), /*#__PURE__*/React.createElement(HeaderGroups, _extends({ groups: table.getRightHeaderGroups(), side: "right", size: table.getRightTotalSize(), testPrefix: testPrefix }, rest, { flex: false, table: table, rowReverse: true }))); }); export default BodyHeader;