UNPKG

@atlaskit/table-tree

Version:

A table tree is an expandable table for showing nested hierarchies of information.

143 lines (140 loc) • 6.78 kB
/* row.tsx generated by @compiled/babel-plugin v3.0.2 */ "use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("./row.compiled.css"); var _runtime = require("@compiled/react/runtime"); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _usePlatformLeafEventHandler = require("@atlaskit/analytics-next/usePlatformLeafEventHandler"); var _toItemId = _interopRequireDefault(require("../utils/to-item-id")); var _chevron = _interopRequireDefault(require("./internal/chevron")); var _treeRowContainer = require("./internal/tree-row-container"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var treeRowClickableStyles = null; var getExtendedLabel = function getExtendedLabel(cellContent, cellIndex, mainColumnForExpandCollapseLabel) { /** * First condition - when we pass data via `items` property in `<TableTree />` * Second condition - when we pass data via `<Rows />` as children in `<TableTree />`. */ if (cellContent.hasOwnProperty('props')) { return cellContent === null || cellContent === void 0 ? void 0 : cellContent.props[mainColumnForExpandCollapseLabel === null || mainColumnForExpandCollapseLabel === void 0 ? void 0 : mainColumnForExpandCollapseLabel.toLowerCase()]; } else if (cellIndex === mainColumnForExpandCollapseLabel) { return cellContent; } return undefined; }; function Row(_ref) { var shouldExpandOnClick = _ref.shouldExpandOnClick, hasChildren = _ref.hasChildren, depth = _ref.depth, renderChildren = _ref.renderChildren, isDefaultExpanded = _ref.isDefaultExpanded, data = _ref.data, providedOnExpand = _ref.onExpand, providedOnCollapse = _ref.onCollapse, mainColumnForExpandCollapseLabel = _ref.mainColumnForExpandCollapseLabel, expandLabel = _ref.expandLabel, collapseLabel = _ref.collapseLabel, itemId = _ref.itemId, children = _ref.children, isProvidedExpanded = _ref.isExpanded; var _useState = (0, _react.useState)(isDefaultExpanded || false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), isExpandedState = _useState2[0], setIsExpandedState = _useState2[1]; (0, _react.useEffect)(function () { if (isProvidedExpanded === undefined && isDefaultExpanded !== undefined) { setIsExpandedState(isDefaultExpanded); } }, [isDefaultExpanded, isProvidedExpanded]); var onExpand = (0, _usePlatformLeafEventHandler.usePlatformLeafEventHandler)({ fn: function fn(value) { return providedOnExpand && providedOnExpand(value); }, action: 'expanded', actionSubject: 'tableTree', componentName: 'row', packageName: "@atlaskit/table-tree", packageVersion: "13.3.3" }); var onCollapse = (0, _usePlatformLeafEventHandler.usePlatformLeafEventHandler)({ fn: function fn(value) { return providedOnCollapse && providedOnCollapse(value); }, action: 'collapsed', actionSubject: 'tableTree', componentName: 'row', packageName: "@atlaskit/table-tree", packageVersion: "13.3.3" }); /** * This ensures a user won't trigger a click event and expand the accordion * when making a text selection. */ var onClickHandler = function onClickHandler(e) { var _window$getSelection; var selection = ((_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.toString()) || ''; if ((selection === null || selection === void 0 ? void 0 : selection.length) === 0) { onExpandToggle(e); } }; var onExpandStateChange = function onExpandStateChange(isExpanded) { if (data) { if (isExpanded && onExpand) { onExpand(data); } else if (!isExpanded && onCollapse) { onCollapse(data); } } }; var onExpandToggle = function onExpandToggle(e) { e.stopPropagation(); if (isProvidedExpanded !== undefined) { onExpandStateChange(!isProvidedExpanded); } else { setIsExpandedState(function (prevState) { onExpandStateChange(!prevState); return !prevState; }); } }; var renderCell = function renderCell(cell, cellIndex) { var isFirstCell = cellIndex === 0; var indentLevel = isFirstCell ? depth : 0; var cellContent = cell.props.children || []; var extendedLabel = getExtendedLabel(cellContent, cellIndex, mainColumnForExpandCollapseLabel); if (isFirstCell && hasChildren) { cellContent = [/*#__PURE__*/_react.default.createElement(_chevron.default, { key: "chevron", expandLabel: expandLabel, collapseLabel: collapseLabel, extendedLabel: extendedLabel, isExpanded: isProvidedExpanded !== undefined ? isProvidedExpanded : isExpandedState, onExpandToggle: onExpandToggle, ariaControls: !!itemId ? (0, _toItemId.default)(itemId) : undefined, rowId: !!itemId ? itemId : '' })].concat(cellContent); } // eslint-disable-next-line @repo/internal/react/no-clone-element return /*#__PURE__*/_react.default.cloneElement(cell, { key: cellIndex, columnIndex: cellIndex, indentLevel: indentLevel }, cellContent); }; return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_treeRowContainer.TreeRowContainer, { onClick: hasChildren && shouldExpandOnClick ? onClickHandler : undefined, "aria-expanded": hasChildren ? isExpandedState : undefined, "aria-level": depth ? depth : undefined, className: (0, _runtime.ax)([hasChildren && shouldExpandOnClick && "_80omtlke"]) }, _react.default.Children.map(children, function (cell, index) { return renderCell(cell, index); })), hasChildren && (isProvidedExpanded !== undefined ? isProvidedExpanded : isExpandedState) && renderChildren && renderChildren()); } // eslint-disable-next-line @repo/internal/react/require-jsdoc var _default = exports.default = Row;