UNPKG

@atlaskit/dynamic-table

Version:

A dynamic table displays rows of data with built-in pagination, sorting, and re-ordering functionality.

120 lines (119 loc) 5.83 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.RankableBody = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _pragmaticDragAndDropReactBeautifulDndMigration = require("@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration"); var _tableRow = _interopRequireDefault(require("./table-row")); function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // computes destination of ranking // - if drag was cancelled returns undefined // - if drag was finished, returns new position and after/before key var computeRankDestination = function computeRankDestination(result, pageRows) { var sourceIndex = result.source.index, destination = result.destination; if (destination) { var index = destination.index; var keyIndex = index < sourceIndex ? index - 1 : index; var afterKey = keyIndex !== -1 ? pageRows[keyIndex].key : undefined; var beforeIndex = keyIndex === -1 ? 0 : keyIndex + 1; var beforeKey = beforeIndex < pageRows.length ? pageRows[beforeIndex].key : undefined; return { index: index, afterKey: afterKey, beforeKey: beforeKey }; } return undefined; }; // eslint-disable-next-line @repo/internal/react/no-class-components var RankableBody = exports.RankableBody = /*#__PURE__*/function (_React$Component) { function RankableBody() { var _this; (0, _classCallCheck2.default)(this, RankableBody); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, RankableBody, [].concat(args)); (0, _defineProperty2.default)(_this, "onBeforeDragStart", function (dragStart) { var key = dragStart.draggableId, index = dragStart.source.index; var rankStartProps = { index: index, key: key }; _this.props.onRankStart(rankStartProps); }); (0, _defineProperty2.default)(_this, "onDragEnd", function (result) { var _this$props = _this.props, pageRows = _this$props.pageRows, onRankEnd = _this$props.onRankEnd; var sourceKey = result.draggableId, sourceIndex = result.source.index; var destination = computeRankDestination(result, pageRows); var rankEndProps = { sourceIndex: sourceIndex, sourceKey: sourceKey, destination: destination }; onRankEnd(rankEndProps); }); return _this; } (0, _inherits2.default)(RankableBody, _React$Component); return (0, _createClass2.default)(RankableBody, [{ key: "render", value: function render() { var _this$props2 = this.props, highlightedRowIndex = _this$props2.highlightedRowIndex, pageRows = _this$props2.pageRows, head = _this$props2.head, isFixedSize = _this$props2.isFixedSize, isRanking = _this$props2.isRanking, isRankingDisabled = _this$props2.isRankingDisabled, testId = _this$props2.testId, forwardedRef = _this$props2.forwardedRef; return /*#__PURE__*/_react.default.createElement(_pragmaticDragAndDropReactBeautifulDndMigration.DragDropContext, { onBeforeDragStart: this.onBeforeDragStart, onDragEnd: this.onDragEnd }, /*#__PURE__*/_react.default.createElement(_pragmaticDragAndDropReactBeautifulDndMigration.Droppable, { droppableId: "dynamic-table-droppable", isDropDisabled: isRankingDisabled }, function (provided) { return /*#__PURE__*/_react.default.createElement("tbody", (0, _extends2.default)({ "data-testid": testId, ref: function ref(_ref) { if (provided && typeof provided.innerRef === 'function') { provided.innerRef(_ref); } if (forwardedRef) { forwardedRef.current = _ref; } } }, provided.droppableProps), pageRows.map(function (row, rowIndex) { return /*#__PURE__*/_react.default.createElement(_tableRow.default, { head: head, isRanking: isRanking, isFixedSize: isFixedSize, key: row.key, rowIndex: rowIndex, row: row, isRankingDisabled: isRankingDisabled, isHighlighted: highlightedRowIndex !== undefined && (typeof highlightedRowIndex === 'number' ? highlightedRowIndex === rowIndex : highlightedRowIndex.indexOf(rowIndex) > -1), testId: testId && "".concat(testId, "--").concat(row.key, "--rankable--table--row") }); }), provided.placeholder); })); } }]); }(_react.default.Component);