@depup/react-virtualized 9.22.6-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +34 -0
- package/changes.json +22 -0
- package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.example.js +184 -0
- package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.jest.js +338 -0
- package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.js +204 -0
- package/dist/commonjs/ArrowKeyStepper/index.js +19 -0
- package/dist/commonjs/ArrowKeyStepper/types.js +5 -0
- package/dist/commonjs/AutoSizer/AutoSizer.example.js +104 -0
- package/dist/commonjs/AutoSizer/AutoSizer.jest.js +341 -0
- package/dist/commonjs/AutoSizer/AutoSizer.js +199 -0
- package/dist/commonjs/AutoSizer/AutoSizer.ssr.js +25 -0
- package/dist/commonjs/AutoSizer/index.js +19 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +100 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +99 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +107 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +102 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +107 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.example.js +129 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.jest.js +345 -0
- package/dist/commonjs/CellMeasurer/CellMeasurer.js +195 -0
- package/dist/commonjs/CellMeasurer/CellMeasurerCache.jest.js +298 -0
- package/dist/commonjs/CellMeasurer/CellMeasurerCache.js +202 -0
- package/dist/commonjs/CellMeasurer/index.js +22 -0
- package/dist/commonjs/CellMeasurer/types.js +14 -0
- package/dist/commonjs/Collection/Collection.example.js +231 -0
- package/dist/commonjs/Collection/Collection.jest.js +829 -0
- package/dist/commonjs/Collection/Collection.js +266 -0
- package/dist/commonjs/Collection/CollectionView.js +553 -0
- package/dist/commonjs/Collection/Section.jest.js +63 -0
- package/dist/commonjs/Collection/Section.js +57 -0
- package/dist/commonjs/Collection/SectionManager.jest.js +121 -0
- package/dist/commonjs/Collection/SectionManager.js +134 -0
- package/dist/commonjs/Collection/TestData.js +77 -0
- package/dist/commonjs/Collection/index.js +15 -0
- package/dist/commonjs/Collection/types.js +22 -0
- package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.jest.js +34 -0
- package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.js +38 -0
- package/dist/commonjs/ColumnSizer/ColumnSizer.example.js +159 -0
- package/dist/commonjs/ColumnSizer/ColumnSizer.jest.js +129 -0
- package/dist/commonjs/ColumnSizer/ColumnSizer.js +103 -0
- package/dist/commonjs/ColumnSizer/index.js +15 -0
- package/dist/commonjs/Grid/Grid.example.js +330 -0
- package/dist/commonjs/Grid/Grid.jest.js +2561 -0
- package/dist/commonjs/Grid/Grid.js +1432 -0
- package/dist/commonjs/Grid/Grid.ssr.js +62 -0
- package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.jest.js +92 -0
- package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.js +40 -0
- package/dist/commonjs/Grid/defaultCellRangeRenderer.js +139 -0
- package/dist/commonjs/Grid/defaultOverscanIndicesGetter.jest.js +92 -0
- package/dist/commonjs/Grid/defaultOverscanIndicesGetter.js +36 -0
- package/dist/commonjs/Grid/index.js +40 -0
- package/dist/commonjs/Grid/types.js +8 -0
- package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.jest.js +375 -0
- package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.js +296 -0
- package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +201 -0
- package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.js +204 -0
- package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +84 -0
- package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +59 -0
- package/dist/commonjs/Grid/utils/maxElementSize.js +22 -0
- package/dist/commonjs/Grid/utils/updateScrollIndexHelper.jest.js +180 -0
- package/dist/commonjs/Grid/utils/updateScrollIndexHelper.js +85 -0
- package/dist/commonjs/InfiniteLoader/InfiniteLoader.example.js +179 -0
- package/dist/commonjs/InfiniteLoader/InfiniteLoader.jest.js +571 -0
- package/dist/commonjs/InfiniteLoader/InfiniteLoader.js +274 -0
- package/dist/commonjs/InfiniteLoader/index.js +15 -0
- package/dist/commonjs/List/List.example.js +236 -0
- package/dist/commonjs/List/List.jest.js +517 -0
- package/dist/commonjs/List/List.js +318 -0
- package/dist/commonjs/List/index.js +19 -0
- package/dist/commonjs/List/types.js +6 -0
- package/dist/commonjs/Masonry/Masonry.example.js +287 -0
- package/dist/commonjs/Masonry/Masonry.jest.js +450 -0
- package/dist/commonjs/Masonry/Masonry.js +431 -0
- package/dist/commonjs/Masonry/PositionCache.js +88 -0
- package/dist/commonjs/Masonry/createCellPositioner.js +59 -0
- package/dist/commonjs/Masonry/index.js +22 -0
- package/dist/commonjs/MultiGrid/CellMeasurerCacheDecorator.js +106 -0
- package/dist/commonjs/MultiGrid/MultiGrid.example.js +131 -0
- package/dist/commonjs/MultiGrid/MultiGrid.jest.js +584 -0
- package/dist/commonjs/MultiGrid/MultiGrid.js +743 -0
- package/dist/commonjs/MultiGrid/index.js +15 -0
- package/dist/commonjs/ScrollSync/ScrollSync.example.js +257 -0
- package/dist/commonjs/ScrollSync/ScrollSync.jest.js +66 -0
- package/dist/commonjs/ScrollSync/ScrollSync.js +88 -0
- package/dist/commonjs/ScrollSync/index.js +15 -0
- package/dist/commonjs/Table/Column.jest.js +90 -0
- package/dist/commonjs/Table/Column.js +93 -0
- package/dist/commonjs/Table/SortDirection.js +19 -0
- package/dist/commonjs/Table/SortIndicator.js +40 -0
- package/dist/commonjs/Table/Table.example.js +325 -0
- package/dist/commonjs/Table/Table.jest.js +1257 -0
- package/dist/commonjs/Table/Table.js +742 -0
- package/dist/commonjs/Table/createMultiSort.jest.js +165 -0
- package/dist/commonjs/Table/createMultiSort.js +99 -0
- package/dist/commonjs/Table/defaultCellDataGetter.js +21 -0
- package/dist/commonjs/Table/defaultCellRenderer.js +19 -0
- package/dist/commonjs/Table/defaultHeaderRenderer.js +35 -0
- package/dist/commonjs/Table/defaultHeaderRowRenderer.js +21 -0
- package/dist/commonjs/Table/defaultRowRenderer.js +87 -0
- package/dist/commonjs/Table/index.js +78 -0
- package/dist/commonjs/Table/types.js +39 -0
- package/dist/commonjs/WindowScroller/WindowScroller.e2e.js +298 -0
- package/dist/commonjs/WindowScroller/WindowScroller.example.js +167 -0
- package/dist/commonjs/WindowScroller/WindowScroller.header-resize.e2e.js +359 -0
- package/dist/commonjs/WindowScroller/WindowScroller.jest.js +536 -0
- package/dist/commonjs/WindowScroller/WindowScroller.js +268 -0
- package/dist/commonjs/WindowScroller/WindowScroller.ssr.js +25 -0
- package/dist/commonjs/WindowScroller/index.js +23 -0
- package/dist/commonjs/WindowScroller/utils/dimensions.js +89 -0
- package/dist/commonjs/WindowScroller/utils/onScroll.js +70 -0
- package/dist/commonjs/index.js +180 -0
- package/dist/commonjs/jest-setup.js +7 -0
- package/dist/commonjs/utils/TestHelper.js +36 -0
- package/dist/commonjs/utils/animationFrame.js +29 -0
- package/dist/commonjs/utils/createCallbackMemoizer.jest.js +219 -0
- package/dist/commonjs/utils/createCallbackMemoizer.js +31 -0
- package/dist/commonjs/utils/getUpdatedOffsetForIndex.jest.js +68 -0
- package/dist/commonjs/utils/getUpdatedOffsetForIndex.js +38 -0
- package/dist/commonjs/utils/initCellMetadata.js +37 -0
- package/dist/commonjs/utils/requestAnimationTimeout.js +38 -0
- package/dist/commonjs/vendor/binarySearchBounds.js +200 -0
- package/dist/commonjs/vendor/detectElementResize.js +192 -0
- package/dist/commonjs/vendor/intervalTree.js +361 -0
- package/dist/es/ArrowKeyStepper/ArrowKeyStepper.example.js +176 -0
- package/dist/es/ArrowKeyStepper/ArrowKeyStepper.jest.js +332 -0
- package/dist/es/ArrowKeyStepper/ArrowKeyStepper.js +197 -0
- package/dist/es/ArrowKeyStepper/index.js +3 -0
- package/dist/es/ArrowKeyStepper/types.js +4 -0
- package/dist/es/AutoSizer/AutoSizer.example.js +96 -0
- package/dist/es/AutoSizer/AutoSizer.jest.js +335 -0
- package/dist/es/AutoSizer/AutoSizer.js +190 -0
- package/dist/es/AutoSizer/AutoSizer.js.flow +200 -0
- package/dist/es/AutoSizer/AutoSizer.ssr.js +19 -0
- package/dist/es/AutoSizer/index.js +2 -0
- package/dist/es/AutoSizer/index.js.flow +4 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +91 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +90 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +98 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +93 -0
- package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +98 -0
- package/dist/es/CellMeasurer/CellMeasurer.example.js +120 -0
- package/dist/es/CellMeasurer/CellMeasurer.jest.js +340 -0
- package/dist/es/CellMeasurer/CellMeasurer.js +187 -0
- package/dist/es/CellMeasurer/CellMeasurerCache.jest.js +293 -0
- package/dist/es/CellMeasurer/CellMeasurerCache.js +196 -0
- package/dist/es/CellMeasurer/index.js +4 -0
- package/dist/es/CellMeasurer/types.js +13 -0
- package/dist/es/Collection/Collection.example.js +223 -0
- package/dist/es/Collection/Collection.jest.js +824 -0
- package/dist/es/Collection/Collection.js +257 -0
- package/dist/es/Collection/CollectionView.js +544 -0
- package/dist/es/Collection/Section.jest.js +60 -0
- package/dist/es/Collection/Section.js +51 -0
- package/dist/es/Collection/SectionManager.jest.js +118 -0
- package/dist/es/Collection/SectionManager.js +128 -0
- package/dist/es/Collection/TestData.js +71 -0
- package/dist/es/Collection/index.js +3 -0
- package/dist/es/Collection/types.js +21 -0
- package/dist/es/Collection/utils/calculateSizeAndPositionData.jest.js +31 -0
- package/dist/es/Collection/utils/calculateSizeAndPositionData.js +31 -0
- package/dist/es/ColumnSizer/ColumnSizer.example.js +150 -0
- package/dist/es/ColumnSizer/ColumnSizer.jest.js +123 -0
- package/dist/es/ColumnSizer/ColumnSizer.js +95 -0
- package/dist/es/ColumnSizer/index.js +3 -0
- package/dist/es/Grid/Grid.example.js +321 -0
- package/dist/es/Grid/Grid.jest.js +2555 -0
- package/dist/es/Grid/Grid.js +1425 -0
- package/dist/es/Grid/Grid.ssr.js +57 -0
- package/dist/es/Grid/accessibilityOverscanIndicesGetter.jest.js +87 -0
- package/dist/es/Grid/accessibilityOverscanIndicesGetter.js +33 -0
- package/dist/es/Grid/defaultCellRangeRenderer.js +134 -0
- package/dist/es/Grid/defaultOverscanIndicesGetter.jest.js +87 -0
- package/dist/es/Grid/defaultOverscanIndicesGetter.js +29 -0
- package/dist/es/Grid/index.js +15 -0
- package/dist/es/Grid/types.js +96 -0
- package/dist/es/Grid/utils/CellSizeAndPositionManager.jest.js +372 -0
- package/dist/es/Grid/utils/CellSizeAndPositionManager.js +290 -0
- package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +198 -0
- package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js +198 -0
- package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +81 -0
- package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +53 -0
- package/dist/es/Grid/utils/maxElementSize.js +16 -0
- package/dist/es/Grid/utils/updateScrollIndexHelper.jest.js +174 -0
- package/dist/es/Grid/utils/updateScrollIndexHelper.js +79 -0
- package/dist/es/InfiniteLoader/InfiniteLoader.example.js +170 -0
- package/dist/es/InfiniteLoader/InfiniteLoader.jest.js +565 -0
- package/dist/es/InfiniteLoader/InfiniteLoader.js +263 -0
- package/dist/es/InfiniteLoader/index.js +3 -0
- package/dist/es/List/List.example.js +227 -0
- package/dist/es/List/List.jest.js +511 -0
- package/dist/es/List/List.js +312 -0
- package/dist/es/List/index.js +3 -0
- package/dist/es/List/types.js +21 -0
- package/dist/es/Masonry/Masonry.example.js +278 -0
- package/dist/es/Masonry/Masonry.jest.js +444 -0
- package/dist/es/Masonry/Masonry.js +421 -0
- package/dist/es/Masonry/PositionCache.js +82 -0
- package/dist/es/Masonry/createCellPositioner.js +53 -0
- package/dist/es/Masonry/index.js +4 -0
- package/dist/es/MultiGrid/CellMeasurerCacheDecorator.js +100 -0
- package/dist/es/MultiGrid/MultiGrid.example.js +122 -0
- package/dist/es/MultiGrid/MultiGrid.jest.js +579 -0
- package/dist/es/MultiGrid/MultiGrid.js +733 -0
- package/dist/es/MultiGrid/index.js +3 -0
- package/dist/es/ScrollSync/ScrollSync.example.js +248 -0
- package/dist/es/ScrollSync/ScrollSync.jest.js +60 -0
- package/dist/es/ScrollSync/ScrollSync.js +80 -0
- package/dist/es/ScrollSync/index.js +3 -0
- package/dist/es/Table/Column.jest.js +84 -0
- package/dist/es/Table/Column.js +85 -0
- package/dist/es/Table/SortDirection.js +13 -0
- package/dist/es/Table/SortIndicator.js +31 -0
- package/dist/es/Table/Table.example.js +316 -0
- package/dist/es/Table/Table.jest.js +1251 -0
- package/dist/es/Table/Table.js +735 -0
- package/dist/es/Table/createMultiSort.jest.js +162 -0
- package/dist/es/Table/createMultiSort.js +93 -0
- package/dist/es/Table/defaultCellDataGetter.js +15 -0
- package/dist/es/Table/defaultCellRenderer.js +13 -0
- package/dist/es/Table/defaultHeaderRenderer.js +25 -0
- package/dist/es/Table/defaultHeaderRowRenderer.js +12 -0
- package/dist/es/Table/defaultRowRenderer.js +77 -0
- package/dist/es/Table/index.js +12 -0
- package/dist/es/Table/types.js +38 -0
- package/dist/es/WindowScroller/WindowScroller.e2e.js +295 -0
- package/dist/es/WindowScroller/WindowScroller.example.js +158 -0
- package/dist/es/WindowScroller/WindowScroller.header-resize.e2e.js +356 -0
- package/dist/es/WindowScroller/WindowScroller.jest.js +530 -0
- package/dist/es/WindowScroller/WindowScroller.js +259 -0
- package/dist/es/WindowScroller/WindowScroller.js.flow +277 -0
- package/dist/es/WindowScroller/WindowScroller.ssr.js +19 -0
- package/dist/es/WindowScroller/index.js +3 -0
- package/dist/es/WindowScroller/index.js.flow +6 -0
- package/dist/es/WindowScroller/utils/dimensions.js +81 -0
- package/dist/es/WindowScroller/utils/dimensions.js.flow +91 -0
- package/dist/es/WindowScroller/utils/onScroll.js +64 -0
- package/dist/es/WindowScroller/utils/onScroll.js.flow +94 -0
- package/dist/es/index.js +13 -0
- package/dist/es/jest-setup.js +5 -0
- package/dist/es/utils/TestHelper.js +30 -0
- package/dist/es/utils/animationFrame.js +23 -0
- package/dist/es/utils/createCallbackMemoizer.jest.js +216 -0
- package/dist/es/utils/createCallbackMemoizer.js +25 -0
- package/dist/es/utils/getUpdatedOffsetForIndex.jest.js +65 -0
- package/dist/es/utils/getUpdatedOffsetForIndex.js +32 -0
- package/dist/es/utils/initCellMetadata.js +31 -0
- package/dist/es/utils/requestAnimationTimeout.js +32 -0
- package/dist/es/vendor/binarySearchBounds.js +194 -0
- package/dist/es/vendor/detectElementResize.js +186 -0
- package/dist/es/vendor/intervalTree.js +354 -0
- package/dist/umd/react-virtualized.js +4638 -0
- package/package.json +188 -0
- package/styles.css +80 -0
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["headerElements", "documentOffset", "renderFn"];
|
|
4
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { findDOMNode } from 'react-dom';
|
|
7
|
+
import { render } from '../TestUtils';
|
|
8
|
+
import WindowScroller, { IS_SCROLLING_TIMEOUT } from './WindowScroller';
|
|
9
|
+
function mockGetBoundingClientRectForHeader(_ref) {
|
|
10
|
+
var _ref$documentOffset = _ref.documentOffset,
|
|
11
|
+
documentOffset = _ref$documentOffset === void 0 ? 0 : _ref$documentOffset,
|
|
12
|
+
height = _ref.height,
|
|
13
|
+
width = _ref.width;
|
|
14
|
+
// Mock the WindowScroller element and window separately
|
|
15
|
+
// The only way to mock the former (before its created) is globally
|
|
16
|
+
Element.prototype.getBoundingClientRect = jest.fn(function () {
|
|
17
|
+
return {
|
|
18
|
+
top: height,
|
|
19
|
+
left: width
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
document.documentElement.getBoundingClientRect = jest.fn(function () {
|
|
23
|
+
return {
|
|
24
|
+
top: documentOffset,
|
|
25
|
+
left: documentOffset
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function getMarkup() {
|
|
30
|
+
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
31
|
+
headerElements = _ref2.headerElements,
|
|
32
|
+
documentOffset = _ref2.documentOffset,
|
|
33
|
+
renderFn = _ref2.renderFn,
|
|
34
|
+
props = _objectWithoutProperties(_ref2, _excluded);
|
|
35
|
+
var windowScroller = /*#__PURE__*/React.createElement(WindowScroller, props, function (params) {
|
|
36
|
+
return /*#__PURE__*/React.createElement("div", null, renderFn && renderFn(params));
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// JSDome doesn't implement a working getBoundingClientRect()
|
|
40
|
+
// But WindowScroller requires it
|
|
41
|
+
mockGetBoundingClientRectForHeader({
|
|
42
|
+
documentOffset: documentOffset,
|
|
43
|
+
height: headerElements ? headerElements.props.style.height : 0,
|
|
44
|
+
width: headerElements ? headerElements.props.style.width : 0
|
|
45
|
+
});
|
|
46
|
+
if (headerElements) {
|
|
47
|
+
return /*#__PURE__*/React.createElement("div", null, headerElements, windowScroller);
|
|
48
|
+
} else {
|
|
49
|
+
return windowScroller;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function simulateWindowScroll(_ref3) {
|
|
53
|
+
var _ref3$scrollX = _ref3.scrollX,
|
|
54
|
+
scrollX = _ref3$scrollX === void 0 ? 0 : _ref3$scrollX,
|
|
55
|
+
_ref3$scrollY = _ref3.scrollY,
|
|
56
|
+
scrollY = _ref3$scrollY === void 0 ? 0 : _ref3$scrollY;
|
|
57
|
+
document.body.style.height = '10000px';
|
|
58
|
+
window.scrollX = scrollX;
|
|
59
|
+
window.scrollY = scrollY;
|
|
60
|
+
document.dispatchEvent(new window.Event('scroll', {
|
|
61
|
+
bubbles: true
|
|
62
|
+
}));
|
|
63
|
+
document.body.style.height = '';
|
|
64
|
+
}
|
|
65
|
+
function simulateWindowResize(_ref4) {
|
|
66
|
+
var _ref4$height = _ref4.height,
|
|
67
|
+
height = _ref4$height === void 0 ? 0 : _ref4$height,
|
|
68
|
+
_ref4$width = _ref4.width,
|
|
69
|
+
width = _ref4$width === void 0 ? 0 : _ref4$width;
|
|
70
|
+
window.innerHeight = height;
|
|
71
|
+
window.innerWidth = width;
|
|
72
|
+
document.dispatchEvent(new window.Event('resize', {
|
|
73
|
+
bubbles: true
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
describe('WindowScroller', function () {
|
|
77
|
+
// Set default window height and scroll position between tests
|
|
78
|
+
beforeEach(function () {
|
|
79
|
+
window.scrollY = 0;
|
|
80
|
+
window.scrollX = 0;
|
|
81
|
+
window.innerHeight = 500;
|
|
82
|
+
window.innerWidth = 500;
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// Starts updating scrollTop only when the top position is reached
|
|
86
|
+
it('should have correct top and left properties to be defined on :_positionFromTop and :_positionFromLeft', function () {
|
|
87
|
+
var component = render(getMarkup());
|
|
88
|
+
var rendered = findDOMNode(component);
|
|
89
|
+
var _rendered$getBounding = rendered.getBoundingClientRect(),
|
|
90
|
+
top = _rendered$getBounding.top,
|
|
91
|
+
left = _rendered$getBounding.left;
|
|
92
|
+
expect(component._positionFromTop).toEqual(top);
|
|
93
|
+
expect(component._positionFromLeft).toEqual(left);
|
|
94
|
+
});
|
|
95
|
+
it('should allow passing child element with registerChild of children function param', function () {
|
|
96
|
+
var scrollElement = document.createElement('div');
|
|
97
|
+
scrollElement.scrollTop = 100;
|
|
98
|
+
scrollElement.scrollLeft = 150;
|
|
99
|
+
scrollElement.getBoundingClientRect = function () {
|
|
100
|
+
return {
|
|
101
|
+
top: 200,
|
|
102
|
+
left: 250
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
var child = document.createElement('div');
|
|
106
|
+
child.getBoundingClientRect = function () {
|
|
107
|
+
return {
|
|
108
|
+
top: 300,
|
|
109
|
+
left: 350
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
var renderFn = jest.fn();
|
|
113
|
+
var component = render(getMarkup({
|
|
114
|
+
scrollElement: scrollElement,
|
|
115
|
+
renderFn: renderFn
|
|
116
|
+
}));
|
|
117
|
+
renderFn.mock.calls[0][0].registerChild(child);
|
|
118
|
+
expect(component._positionFromTop).toEqual(300 + 100 - 200);
|
|
119
|
+
expect(component._positionFromLeft).toEqual(350 + 150 - 250);
|
|
120
|
+
});
|
|
121
|
+
it('should warn on passing non-element or not null', function () {
|
|
122
|
+
var warnFn = jest.spyOn(console, 'warn');
|
|
123
|
+
var renderFn = jest.fn();
|
|
124
|
+
render(getMarkup({
|
|
125
|
+
renderFn: renderFn
|
|
126
|
+
}));
|
|
127
|
+
renderFn.mock.calls[0][0].registerChild(1);
|
|
128
|
+
renderFn.mock.calls[0][0].registerChild(document.createElement('div'));
|
|
129
|
+
renderFn.mock.calls[0][0].registerChild(null);
|
|
130
|
+
expect(warnFn).toHaveBeenCalledTimes(1);
|
|
131
|
+
warnFn.mockRestore();
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Test edge-case reported in bvaughn/react-virtualized/pull/346
|
|
135
|
+
it('should have correct top and left properties to be defined on :_positionFromTop and :_positionFromLeft if documentElement is scrolled', function () {
|
|
136
|
+
render.unmount();
|
|
137
|
+
|
|
138
|
+
// Simulate scrolled documentElement
|
|
139
|
+
var component = render(getMarkup({
|
|
140
|
+
documentOffset: -100
|
|
141
|
+
}));
|
|
142
|
+
var rendered = findDOMNode(component);
|
|
143
|
+
var _rendered$getBounding2 = rendered.getBoundingClientRect(),
|
|
144
|
+
top = _rendered$getBounding2.top,
|
|
145
|
+
left = _rendered$getBounding2.left;
|
|
146
|
+
expect(component._positionFromTop).toEqual(top + 100);
|
|
147
|
+
expect(component._positionFromLeft).toEqual(left + 100);
|
|
148
|
+
// Reset override
|
|
149
|
+
delete document.documentElement.getBoundingClientRect;
|
|
150
|
+
});
|
|
151
|
+
it('inherits the window height and passes it to child component', function () {
|
|
152
|
+
var renderFn = jest.fn();
|
|
153
|
+
var component = render(getMarkup({
|
|
154
|
+
renderFn: renderFn
|
|
155
|
+
}));
|
|
156
|
+
expect(component.state.height).toEqual(window.innerHeight);
|
|
157
|
+
expect(component.state.height).toEqual(500);
|
|
158
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
159
|
+
height: 500
|
|
160
|
+
}));
|
|
161
|
+
});
|
|
162
|
+
it('should restore pointerEvents on body after IS_SCROLLING_TIMEOUT', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
163
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
164
|
+
while (1) switch (_context.prev = _context.next) {
|
|
165
|
+
case 0:
|
|
166
|
+
render(getMarkup());
|
|
167
|
+
document.body.style.pointerEvents = 'all';
|
|
168
|
+
simulateWindowScroll({
|
|
169
|
+
scrollY: 5000
|
|
170
|
+
});
|
|
171
|
+
expect(document.body.style.pointerEvents).toEqual('none');
|
|
172
|
+
_context.next = 6;
|
|
173
|
+
return new Promise(function (resolve) {
|
|
174
|
+
return setTimeout(resolve, IS_SCROLLING_TIMEOUT + 100);
|
|
175
|
+
});
|
|
176
|
+
case 6:
|
|
177
|
+
expect(document.body.style.pointerEvents).toEqual('all');
|
|
178
|
+
case 7:
|
|
179
|
+
case "end":
|
|
180
|
+
return _context.stop();
|
|
181
|
+
}
|
|
182
|
+
}, _callee);
|
|
183
|
+
})));
|
|
184
|
+
it('should restore pointerEvents on body after unmount', function () {
|
|
185
|
+
render(getMarkup());
|
|
186
|
+
document.body.style.pointerEvents = 'all';
|
|
187
|
+
simulateWindowScroll({
|
|
188
|
+
scrollY: 5000
|
|
189
|
+
});
|
|
190
|
+
expect(document.body.style.pointerEvents).toEqual('none');
|
|
191
|
+
render.unmount();
|
|
192
|
+
expect(document.body.style.pointerEvents).toEqual('all');
|
|
193
|
+
});
|
|
194
|
+
describe('onScroll', function () {
|
|
195
|
+
it('should trigger callback when window scrolls', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
196
|
+
var onScroll;
|
|
197
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
198
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
199
|
+
case 0:
|
|
200
|
+
onScroll = jest.fn();
|
|
201
|
+
render(getMarkup({
|
|
202
|
+
onScroll: onScroll
|
|
203
|
+
}));
|
|
204
|
+
simulateWindowScroll({
|
|
205
|
+
scrollY: 5000
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// Allow scrolling timeout to complete so that the component computes state
|
|
209
|
+
_context2.next = 5;
|
|
210
|
+
return new Promise(function (resolve) {
|
|
211
|
+
return setTimeout(resolve, 150);
|
|
212
|
+
});
|
|
213
|
+
case 5:
|
|
214
|
+
expect(onScroll).toHaveBeenCalledWith({
|
|
215
|
+
scrollLeft: 0,
|
|
216
|
+
scrollTop: 5000
|
|
217
|
+
});
|
|
218
|
+
simulateWindowScroll({
|
|
219
|
+
scrollX: 2500,
|
|
220
|
+
scrollY: 5000
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// Allow scrolling timeout to complete so that the component computes state
|
|
224
|
+
_context2.next = 9;
|
|
225
|
+
return new Promise(function (resolve) {
|
|
226
|
+
return setTimeout(resolve, 150);
|
|
227
|
+
});
|
|
228
|
+
case 9:
|
|
229
|
+
expect(onScroll).toHaveBeenCalledWith({
|
|
230
|
+
scrollLeft: 2500,
|
|
231
|
+
scrollTop: 5000
|
|
232
|
+
});
|
|
233
|
+
case 10:
|
|
234
|
+
case "end":
|
|
235
|
+
return _context2.stop();
|
|
236
|
+
}
|
|
237
|
+
}, _callee2);
|
|
238
|
+
})));
|
|
239
|
+
it('should update :scrollTop when window is scrolled', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
240
|
+
var renderFn, component, componentScrollTop;
|
|
241
|
+
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
242
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
243
|
+
case 0:
|
|
244
|
+
renderFn = jest.fn();
|
|
245
|
+
component = render(getMarkup({
|
|
246
|
+
renderFn: renderFn
|
|
247
|
+
})); // Initial load of the component should have 0 scrollTop
|
|
248
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
249
|
+
scrollTop: 0
|
|
250
|
+
}));
|
|
251
|
+
simulateWindowScroll({
|
|
252
|
+
scrollY: 5000
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
// Allow scrolling timeout to complete so that the component computes state
|
|
256
|
+
_context3.next = 6;
|
|
257
|
+
return new Promise(function (resolve) {
|
|
258
|
+
return setTimeout(resolve, 150);
|
|
259
|
+
});
|
|
260
|
+
case 6:
|
|
261
|
+
componentScrollTop = window.scrollY - component._positionFromTop;
|
|
262
|
+
expect(component.state.scrollTop).toEqual(componentScrollTop);
|
|
263
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
264
|
+
scrollTop: componentScrollTop
|
|
265
|
+
}));
|
|
266
|
+
case 9:
|
|
267
|
+
case "end":
|
|
268
|
+
return _context3.stop();
|
|
269
|
+
}
|
|
270
|
+
}, _callee3);
|
|
271
|
+
})));
|
|
272
|
+
it('should specify :isScrolling when scrolling and reset after scrolling', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
273
|
+
var renderFn;
|
|
274
|
+
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
275
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
276
|
+
case 0:
|
|
277
|
+
renderFn = jest.fn();
|
|
278
|
+
render(getMarkup({
|
|
279
|
+
renderFn: renderFn
|
|
280
|
+
}));
|
|
281
|
+
simulateWindowScroll({
|
|
282
|
+
scrollY: 5000
|
|
283
|
+
});
|
|
284
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
285
|
+
isScrolling: true
|
|
286
|
+
}));
|
|
287
|
+
_context4.next = 6;
|
|
288
|
+
return new Promise(function (resolve) {
|
|
289
|
+
return setTimeout(resolve, 250);
|
|
290
|
+
});
|
|
291
|
+
case 6:
|
|
292
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
293
|
+
isScrolling: false
|
|
294
|
+
}));
|
|
295
|
+
case 7:
|
|
296
|
+
case "end":
|
|
297
|
+
return _context4.stop();
|
|
298
|
+
}
|
|
299
|
+
}, _callee4);
|
|
300
|
+
})));
|
|
301
|
+
it('should support a custom :scrollingResetTimeInterval prop', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
|
|
302
|
+
var renderFn;
|
|
303
|
+
return _regeneratorRuntime.wrap(function _callee5$(_context5) {
|
|
304
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
305
|
+
case 0:
|
|
306
|
+
renderFn = jest.fn();
|
|
307
|
+
render(getMarkup({
|
|
308
|
+
scrollingResetTimeInterval: 500,
|
|
309
|
+
renderFn: renderFn
|
|
310
|
+
}));
|
|
311
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
312
|
+
isScrolling: false
|
|
313
|
+
}));
|
|
314
|
+
simulateWindowScroll({
|
|
315
|
+
scrollY: 5000
|
|
316
|
+
});
|
|
317
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
318
|
+
isScrolling: true
|
|
319
|
+
}));
|
|
320
|
+
_context5.next = 7;
|
|
321
|
+
return new Promise(function (resolve) {
|
|
322
|
+
return setTimeout(resolve, 100);
|
|
323
|
+
});
|
|
324
|
+
case 7:
|
|
325
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
326
|
+
isScrolling: true
|
|
327
|
+
}));
|
|
328
|
+
_context5.next = 10;
|
|
329
|
+
return new Promise(function (resolve) {
|
|
330
|
+
return setTimeout(resolve, 100);
|
|
331
|
+
});
|
|
332
|
+
case 10:
|
|
333
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
334
|
+
isScrolling: true
|
|
335
|
+
}));
|
|
336
|
+
_context5.next = 13;
|
|
337
|
+
return new Promise(function (resolve) {
|
|
338
|
+
return setTimeout(resolve, 400);
|
|
339
|
+
});
|
|
340
|
+
case 13:
|
|
341
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
342
|
+
isScrolling: false
|
|
343
|
+
}));
|
|
344
|
+
case 14:
|
|
345
|
+
case "end":
|
|
346
|
+
return _context5.stop();
|
|
347
|
+
}
|
|
348
|
+
}, _callee5);
|
|
349
|
+
})));
|
|
350
|
+
});
|
|
351
|
+
describe('onResize', function () {
|
|
352
|
+
it('should trigger callback on init and when window resizes', function () {
|
|
353
|
+
var resizeFn = jest.fn();
|
|
354
|
+
render(getMarkup({
|
|
355
|
+
onResize: resizeFn
|
|
356
|
+
}));
|
|
357
|
+
simulateWindowResize({
|
|
358
|
+
height: 1000,
|
|
359
|
+
width: 1024
|
|
360
|
+
});
|
|
361
|
+
expect(resizeFn).toHaveBeenCalledTimes(1);
|
|
362
|
+
expect(resizeFn).lastCalledWith({
|
|
363
|
+
height: 1000,
|
|
364
|
+
width: 1024
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
it('should update height when window resizes', function () {
|
|
368
|
+
var renderFn = jest.fn();
|
|
369
|
+
var component = render(getMarkup({
|
|
370
|
+
renderFn: renderFn
|
|
371
|
+
}));
|
|
372
|
+
|
|
373
|
+
// Initial load of the component should have the same window height = 500
|
|
374
|
+
expect(component.state.height).toEqual(window.innerHeight);
|
|
375
|
+
expect(component.state.height).toEqual(500);
|
|
376
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
377
|
+
height: 500
|
|
378
|
+
}));
|
|
379
|
+
simulateWindowResize({
|
|
380
|
+
height: 1000
|
|
381
|
+
});
|
|
382
|
+
expect(component.state.height).toEqual(window.innerHeight);
|
|
383
|
+
expect(component.state.height).toEqual(1000);
|
|
384
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
385
|
+
height: 1000
|
|
386
|
+
}));
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
describe('updatePosition', function () {
|
|
390
|
+
it('should calculate the initial offset from the top of the page when mounted', function () {
|
|
391
|
+
var windowScroller;
|
|
392
|
+
render(getMarkup({
|
|
393
|
+
headerElements: /*#__PURE__*/React.createElement("div", {
|
|
394
|
+
style: {
|
|
395
|
+
height: 100
|
|
396
|
+
}
|
|
397
|
+
}),
|
|
398
|
+
ref: function ref(_ref10) {
|
|
399
|
+
windowScroller = _ref10;
|
|
400
|
+
}
|
|
401
|
+
}));
|
|
402
|
+
expect(windowScroller._positionFromTop).toBe(100);
|
|
403
|
+
});
|
|
404
|
+
it('should recalculate the offset from the top when the window resizes', function () {
|
|
405
|
+
var windowScroller;
|
|
406
|
+
render(getMarkup({
|
|
407
|
+
headerElements: /*#__PURE__*/React.createElement("div", {
|
|
408
|
+
id: "header",
|
|
409
|
+
style: {
|
|
410
|
+
height: 100,
|
|
411
|
+
width: 150
|
|
412
|
+
}
|
|
413
|
+
}),
|
|
414
|
+
ref: function ref(_ref11) {
|
|
415
|
+
windowScroller = _ref11;
|
|
416
|
+
}
|
|
417
|
+
}));
|
|
418
|
+
expect(windowScroller._positionFromTop).toBe(100);
|
|
419
|
+
expect(windowScroller._positionFromLeft).toBe(150);
|
|
420
|
+
mockGetBoundingClientRectForHeader({
|
|
421
|
+
height: 200,
|
|
422
|
+
width: 300
|
|
423
|
+
});
|
|
424
|
+
expect(windowScroller._positionFromTop).toBe(100);
|
|
425
|
+
expect(windowScroller._positionFromLeft).toBe(150);
|
|
426
|
+
simulateWindowResize({
|
|
427
|
+
height: 1000,
|
|
428
|
+
width: 1000
|
|
429
|
+
});
|
|
430
|
+
expect(windowScroller._positionFromTop).toBe(200);
|
|
431
|
+
expect(windowScroller._positionFromLeft).toBe(300);
|
|
432
|
+
});
|
|
433
|
+
it('should recalculate the offset from the top if called externally', function () {
|
|
434
|
+
var windowScroller;
|
|
435
|
+
render(getMarkup({
|
|
436
|
+
headerElements: /*#__PURE__*/React.createElement("div", {
|
|
437
|
+
id: "header",
|
|
438
|
+
style: {
|
|
439
|
+
height: 100,
|
|
440
|
+
width: 150
|
|
441
|
+
}
|
|
442
|
+
}),
|
|
443
|
+
ref: function ref(_ref12) {
|
|
444
|
+
windowScroller = _ref12;
|
|
445
|
+
}
|
|
446
|
+
}));
|
|
447
|
+
expect(windowScroller._positionFromTop).toBe(100);
|
|
448
|
+
expect(windowScroller._positionFromLeft).toBe(150);
|
|
449
|
+
mockGetBoundingClientRectForHeader({
|
|
450
|
+
height: 200,
|
|
451
|
+
width: 300
|
|
452
|
+
});
|
|
453
|
+
windowScroller.updatePosition();
|
|
454
|
+
expect(windowScroller._positionFromTop).toBe(200);
|
|
455
|
+
expect(windowScroller._positionFromLeft).toBe(300);
|
|
456
|
+
});
|
|
457
|
+
});
|
|
458
|
+
describe('when child scrolls', function () {
|
|
459
|
+
var originalScrollTo;
|
|
460
|
+
beforeEach(function () {
|
|
461
|
+
originalScrollTo = window.scrollTo;
|
|
462
|
+
window.scrollTo = function (scrollX, scrollY) {
|
|
463
|
+
return simulateWindowScroll({
|
|
464
|
+
scrollX: scrollX,
|
|
465
|
+
scrollY: scrollY
|
|
466
|
+
});
|
|
467
|
+
};
|
|
468
|
+
});
|
|
469
|
+
afterEach(function () {
|
|
470
|
+
window.scrollTo = originalScrollTo;
|
|
471
|
+
render.unmount();
|
|
472
|
+
});
|
|
473
|
+
it('should scroll the scrollElement (when it is window) the desired amount', function () {
|
|
474
|
+
var renderFn = jest.fn();
|
|
475
|
+
var windowScroller;
|
|
476
|
+
render(getMarkup({
|
|
477
|
+
ref: function ref(_ref13) {
|
|
478
|
+
windowScroller = _ref13;
|
|
479
|
+
},
|
|
480
|
+
renderFn: renderFn
|
|
481
|
+
}));
|
|
482
|
+
renderFn.mock.calls[0][0].onChildScroll({
|
|
483
|
+
scrollTop: 200
|
|
484
|
+
});
|
|
485
|
+
expect(window.scrollY).toEqual(200 + windowScroller._positionFromTop);
|
|
486
|
+
});
|
|
487
|
+
it('should not scroll the scrollElement if trying to scroll to where we already are', function () {
|
|
488
|
+
var renderFn = jest.fn();
|
|
489
|
+
render(getMarkup({
|
|
490
|
+
renderFn: renderFn
|
|
491
|
+
}));
|
|
492
|
+
simulateWindowScroll({
|
|
493
|
+
scrollY: 200
|
|
494
|
+
});
|
|
495
|
+
window.scrollTo = jest.fn();
|
|
496
|
+
renderFn.mock.calls[0][0].onChildScroll({
|
|
497
|
+
scrollTop: 200
|
|
498
|
+
});
|
|
499
|
+
expect(window.scrollTo).not.toHaveBeenCalled();
|
|
500
|
+
});
|
|
501
|
+
it('should scroll the scrollElement (when it is an element) the desired amount', function () {
|
|
502
|
+
var windowScroller;
|
|
503
|
+
var renderFn = jest.fn();
|
|
504
|
+
var divEl = document.createElement('div');
|
|
505
|
+
render(getMarkup({
|
|
506
|
+
ref: function ref(_ref14) {
|
|
507
|
+
windowScroller = _ref14;
|
|
508
|
+
},
|
|
509
|
+
renderFn: renderFn,
|
|
510
|
+
scrollElement: divEl
|
|
511
|
+
}));
|
|
512
|
+
renderFn.mock.calls[0][0].onChildScroll({
|
|
513
|
+
scrollTop: 200
|
|
514
|
+
});
|
|
515
|
+
expect(divEl.scrollTop).toEqual(200 + windowScroller._positionFromTop);
|
|
516
|
+
});
|
|
517
|
+
it('should update own scrollTop', function () {
|
|
518
|
+
var renderFn = jest.fn();
|
|
519
|
+
render(getMarkup({
|
|
520
|
+
renderFn: renderFn
|
|
521
|
+
}));
|
|
522
|
+
renderFn.mock.calls[0][0].onChildScroll({
|
|
523
|
+
scrollTop: 200
|
|
524
|
+
});
|
|
525
|
+
expect(renderFn).lastCalledWith(expect.objectContaining({
|
|
526
|
+
scrollTop: 200
|
|
527
|
+
}));
|
|
528
|
+
});
|
|
529
|
+
});
|
|
530
|
+
});
|