@bnorth/components
Version:
bnorth, components, react
172 lines (131 loc) • 7.06 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty2 = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty2(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-properties"));
var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors"));
var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor"));
var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols"));
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties"));
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
require("core-js/modules/es6.number.constructor");
require("core-js/modules/es6.string.ends-with");
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
var _react = _interopRequireDefault(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _reactWindow = require("react-window");
var _BaseComponent2 = _interopRequireDefault(require("./BaseComponent"));
var _Panel = _interopRequireDefault(require("./Panel"));
function ownKeys(object, enumerableOnly) { var keys = (0, _keys.default)(object); if (_getOwnPropertySymbols.default) { var symbols = (0, _getOwnPropertySymbols.default)(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty3.default)(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors.default) { (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source)); } else { ownKeys(source).forEach(function (key) { (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key)); }); } } return target; }
var GridView =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(GridView, _React$Component);
function GridView(props) {
var _this;
(0, _classCallCheck2.default)(this, GridView);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(GridView).call(this, props));
_this.state = {
width: props.width,
height: props.height,
columnWidth: props.columnWidth,
rowHeight: props.rowHeight
};
return _this;
}
(0, _createClass2.default)(GridView, [{
key: "componentDidMount",
value: function componentDidMount() {
var columnCount = this.props.columnCount;
var _this$state = this.state,
width = _this$state.width,
height = _this$state.height,
columnWidth = _this$state.columnWidth,
rowHeight = _this$state.rowHeight;
var state = {};
var dom = _reactDom.default.findDOMNode(this);
var awidth = dom.clientWidth;
if (!width || !height) {
state.width = dom.clientWidth;
state.height = dom.clientHeight;
}
if (!columnWidth) {
state.columnWidth = function () {
return awidth / columnCount;
};
} else if (typeof columnWidth === 'number') {
state.columnWidth = function () {
return columnWidth;
};
} else if (typeof columnWidth === 'string' && columnWidth.endsWith('%')) {
state.columnWidth = function () {
return awidth * Number(columnWidth.slice(0, -1) / 100);
};
} else if ((0, _isArray.default)(columnWidth)) {
state.columnWidth = function (index) {
return (typeof columnWidth[index] === 'string' && columnWidth[index].endsWith('%') ? awidth * Number(columnWidth[index].slice(0, -1) / 100) : columnWidth[index]) || awidth / columnCount;
};
}
if (!rowHeight) {
dom = dom.firstChild;
var size = dom.clientHeight;
state.rowHeight = function () {
return size;
};
}
if (!height || !rowHeight || !rowHeight || !columnWidth) this.setState(state);
}
}, {
key: "render",
value: function render() {
var _BaseComponent = (0, _BaseComponent2.default)(this.props, GridView),
containerProps = _BaseComponent.containerProps,
columnCount = _BaseComponent.columnCount,
rowCount = _BaseComponent.rowCount,
tag = _BaseComponent.tag,
data = _BaseComponent.data,
Item = _BaseComponent.children,
props = (0, _objectWithoutProperties2.default)(_BaseComponent, ["containerProps", "columnCount", "rowCount", "tag", "data", "children"]);
var _this$state2 = this.state,
width = _this$state2.width,
height = _this$state2.height,
columnWidth = _this$state2.columnWidth,
rowHeight = _this$state2.rowHeight;
return _react.default.createElement(_Panel.default, containerProps, !width || !height || !columnWidth || !rowHeight ? _react.default.createElement(Item, {
data: [],
columnIndex: 0,
rowIndex: 0,
style: {}
}) : _react.default.createElement(_reactWindow.VariableSizeGrid, (0, _extends2.default)({
useIsScrolling: true
}, props, {
itemData: tag ? _objectSpread({}, data, {
tag: tag
}) : data,
columnCount: columnCount,
rowCount: rowCount >= 0 ? rowCount : data ? data.length : 0,
columnWidth: columnWidth,
rowHeight: rowHeight,
width: width,
height: height
}), Item));
}
}]);
return GridView;
}(_react.default.Component);
exports.default = GridView;
GridView.defaultProps = {
columnCount: 1
};