@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.
Files changed (254) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +34 -0
  3. package/changes.json +22 -0
  4. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.example.js +184 -0
  5. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.jest.js +338 -0
  6. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.js +204 -0
  7. package/dist/commonjs/ArrowKeyStepper/index.js +19 -0
  8. package/dist/commonjs/ArrowKeyStepper/types.js +5 -0
  9. package/dist/commonjs/AutoSizer/AutoSizer.example.js +104 -0
  10. package/dist/commonjs/AutoSizer/AutoSizer.jest.js +341 -0
  11. package/dist/commonjs/AutoSizer/AutoSizer.js +199 -0
  12. package/dist/commonjs/AutoSizer/AutoSizer.ssr.js +25 -0
  13. package/dist/commonjs/AutoSizer/index.js +19 -0
  14. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +100 -0
  15. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +99 -0
  16. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +107 -0
  17. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +102 -0
  18. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +107 -0
  19. package/dist/commonjs/CellMeasurer/CellMeasurer.example.js +129 -0
  20. package/dist/commonjs/CellMeasurer/CellMeasurer.jest.js +345 -0
  21. package/dist/commonjs/CellMeasurer/CellMeasurer.js +195 -0
  22. package/dist/commonjs/CellMeasurer/CellMeasurerCache.jest.js +298 -0
  23. package/dist/commonjs/CellMeasurer/CellMeasurerCache.js +202 -0
  24. package/dist/commonjs/CellMeasurer/index.js +22 -0
  25. package/dist/commonjs/CellMeasurer/types.js +14 -0
  26. package/dist/commonjs/Collection/Collection.example.js +231 -0
  27. package/dist/commonjs/Collection/Collection.jest.js +829 -0
  28. package/dist/commonjs/Collection/Collection.js +266 -0
  29. package/dist/commonjs/Collection/CollectionView.js +553 -0
  30. package/dist/commonjs/Collection/Section.jest.js +63 -0
  31. package/dist/commonjs/Collection/Section.js +57 -0
  32. package/dist/commonjs/Collection/SectionManager.jest.js +121 -0
  33. package/dist/commonjs/Collection/SectionManager.js +134 -0
  34. package/dist/commonjs/Collection/TestData.js +77 -0
  35. package/dist/commonjs/Collection/index.js +15 -0
  36. package/dist/commonjs/Collection/types.js +22 -0
  37. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.jest.js +34 -0
  38. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.js +38 -0
  39. package/dist/commonjs/ColumnSizer/ColumnSizer.example.js +159 -0
  40. package/dist/commonjs/ColumnSizer/ColumnSizer.jest.js +129 -0
  41. package/dist/commonjs/ColumnSizer/ColumnSizer.js +103 -0
  42. package/dist/commonjs/ColumnSizer/index.js +15 -0
  43. package/dist/commonjs/Grid/Grid.example.js +330 -0
  44. package/dist/commonjs/Grid/Grid.jest.js +2561 -0
  45. package/dist/commonjs/Grid/Grid.js +1432 -0
  46. package/dist/commonjs/Grid/Grid.ssr.js +62 -0
  47. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.jest.js +92 -0
  48. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.js +40 -0
  49. package/dist/commonjs/Grid/defaultCellRangeRenderer.js +139 -0
  50. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.jest.js +92 -0
  51. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.js +36 -0
  52. package/dist/commonjs/Grid/index.js +40 -0
  53. package/dist/commonjs/Grid/types.js +8 -0
  54. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.jest.js +375 -0
  55. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.js +296 -0
  56. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +201 -0
  57. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.js +204 -0
  58. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +84 -0
  59. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +59 -0
  60. package/dist/commonjs/Grid/utils/maxElementSize.js +22 -0
  61. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.jest.js +180 -0
  62. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.js +85 -0
  63. package/dist/commonjs/InfiniteLoader/InfiniteLoader.example.js +179 -0
  64. package/dist/commonjs/InfiniteLoader/InfiniteLoader.jest.js +571 -0
  65. package/dist/commonjs/InfiniteLoader/InfiniteLoader.js +274 -0
  66. package/dist/commonjs/InfiniteLoader/index.js +15 -0
  67. package/dist/commonjs/List/List.example.js +236 -0
  68. package/dist/commonjs/List/List.jest.js +517 -0
  69. package/dist/commonjs/List/List.js +318 -0
  70. package/dist/commonjs/List/index.js +19 -0
  71. package/dist/commonjs/List/types.js +6 -0
  72. package/dist/commonjs/Masonry/Masonry.example.js +287 -0
  73. package/dist/commonjs/Masonry/Masonry.jest.js +450 -0
  74. package/dist/commonjs/Masonry/Masonry.js +431 -0
  75. package/dist/commonjs/Masonry/PositionCache.js +88 -0
  76. package/dist/commonjs/Masonry/createCellPositioner.js +59 -0
  77. package/dist/commonjs/Masonry/index.js +22 -0
  78. package/dist/commonjs/MultiGrid/CellMeasurerCacheDecorator.js +106 -0
  79. package/dist/commonjs/MultiGrid/MultiGrid.example.js +131 -0
  80. package/dist/commonjs/MultiGrid/MultiGrid.jest.js +584 -0
  81. package/dist/commonjs/MultiGrid/MultiGrid.js +743 -0
  82. package/dist/commonjs/MultiGrid/index.js +15 -0
  83. package/dist/commonjs/ScrollSync/ScrollSync.example.js +257 -0
  84. package/dist/commonjs/ScrollSync/ScrollSync.jest.js +66 -0
  85. package/dist/commonjs/ScrollSync/ScrollSync.js +88 -0
  86. package/dist/commonjs/ScrollSync/index.js +15 -0
  87. package/dist/commonjs/Table/Column.jest.js +90 -0
  88. package/dist/commonjs/Table/Column.js +93 -0
  89. package/dist/commonjs/Table/SortDirection.js +19 -0
  90. package/dist/commonjs/Table/SortIndicator.js +40 -0
  91. package/dist/commonjs/Table/Table.example.js +325 -0
  92. package/dist/commonjs/Table/Table.jest.js +1257 -0
  93. package/dist/commonjs/Table/Table.js +742 -0
  94. package/dist/commonjs/Table/createMultiSort.jest.js +165 -0
  95. package/dist/commonjs/Table/createMultiSort.js +99 -0
  96. package/dist/commonjs/Table/defaultCellDataGetter.js +21 -0
  97. package/dist/commonjs/Table/defaultCellRenderer.js +19 -0
  98. package/dist/commonjs/Table/defaultHeaderRenderer.js +35 -0
  99. package/dist/commonjs/Table/defaultHeaderRowRenderer.js +21 -0
  100. package/dist/commonjs/Table/defaultRowRenderer.js +87 -0
  101. package/dist/commonjs/Table/index.js +78 -0
  102. package/dist/commonjs/Table/types.js +39 -0
  103. package/dist/commonjs/WindowScroller/WindowScroller.e2e.js +298 -0
  104. package/dist/commonjs/WindowScroller/WindowScroller.example.js +167 -0
  105. package/dist/commonjs/WindowScroller/WindowScroller.header-resize.e2e.js +359 -0
  106. package/dist/commonjs/WindowScroller/WindowScroller.jest.js +536 -0
  107. package/dist/commonjs/WindowScroller/WindowScroller.js +268 -0
  108. package/dist/commonjs/WindowScroller/WindowScroller.ssr.js +25 -0
  109. package/dist/commonjs/WindowScroller/index.js +23 -0
  110. package/dist/commonjs/WindowScroller/utils/dimensions.js +89 -0
  111. package/dist/commonjs/WindowScroller/utils/onScroll.js +70 -0
  112. package/dist/commonjs/index.js +180 -0
  113. package/dist/commonjs/jest-setup.js +7 -0
  114. package/dist/commonjs/utils/TestHelper.js +36 -0
  115. package/dist/commonjs/utils/animationFrame.js +29 -0
  116. package/dist/commonjs/utils/createCallbackMemoizer.jest.js +219 -0
  117. package/dist/commonjs/utils/createCallbackMemoizer.js +31 -0
  118. package/dist/commonjs/utils/getUpdatedOffsetForIndex.jest.js +68 -0
  119. package/dist/commonjs/utils/getUpdatedOffsetForIndex.js +38 -0
  120. package/dist/commonjs/utils/initCellMetadata.js +37 -0
  121. package/dist/commonjs/utils/requestAnimationTimeout.js +38 -0
  122. package/dist/commonjs/vendor/binarySearchBounds.js +200 -0
  123. package/dist/commonjs/vendor/detectElementResize.js +192 -0
  124. package/dist/commonjs/vendor/intervalTree.js +361 -0
  125. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.example.js +176 -0
  126. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.jest.js +332 -0
  127. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.js +197 -0
  128. package/dist/es/ArrowKeyStepper/index.js +3 -0
  129. package/dist/es/ArrowKeyStepper/types.js +4 -0
  130. package/dist/es/AutoSizer/AutoSizer.example.js +96 -0
  131. package/dist/es/AutoSizer/AutoSizer.jest.js +335 -0
  132. package/dist/es/AutoSizer/AutoSizer.js +190 -0
  133. package/dist/es/AutoSizer/AutoSizer.js.flow +200 -0
  134. package/dist/es/AutoSizer/AutoSizer.ssr.js +19 -0
  135. package/dist/es/AutoSizer/index.js +2 -0
  136. package/dist/es/AutoSizer/index.js.flow +4 -0
  137. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +91 -0
  138. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +90 -0
  139. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +98 -0
  140. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +93 -0
  141. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +98 -0
  142. package/dist/es/CellMeasurer/CellMeasurer.example.js +120 -0
  143. package/dist/es/CellMeasurer/CellMeasurer.jest.js +340 -0
  144. package/dist/es/CellMeasurer/CellMeasurer.js +187 -0
  145. package/dist/es/CellMeasurer/CellMeasurerCache.jest.js +293 -0
  146. package/dist/es/CellMeasurer/CellMeasurerCache.js +196 -0
  147. package/dist/es/CellMeasurer/index.js +4 -0
  148. package/dist/es/CellMeasurer/types.js +13 -0
  149. package/dist/es/Collection/Collection.example.js +223 -0
  150. package/dist/es/Collection/Collection.jest.js +824 -0
  151. package/dist/es/Collection/Collection.js +257 -0
  152. package/dist/es/Collection/CollectionView.js +544 -0
  153. package/dist/es/Collection/Section.jest.js +60 -0
  154. package/dist/es/Collection/Section.js +51 -0
  155. package/dist/es/Collection/SectionManager.jest.js +118 -0
  156. package/dist/es/Collection/SectionManager.js +128 -0
  157. package/dist/es/Collection/TestData.js +71 -0
  158. package/dist/es/Collection/index.js +3 -0
  159. package/dist/es/Collection/types.js +21 -0
  160. package/dist/es/Collection/utils/calculateSizeAndPositionData.jest.js +31 -0
  161. package/dist/es/Collection/utils/calculateSizeAndPositionData.js +31 -0
  162. package/dist/es/ColumnSizer/ColumnSizer.example.js +150 -0
  163. package/dist/es/ColumnSizer/ColumnSizer.jest.js +123 -0
  164. package/dist/es/ColumnSizer/ColumnSizer.js +95 -0
  165. package/dist/es/ColumnSizer/index.js +3 -0
  166. package/dist/es/Grid/Grid.example.js +321 -0
  167. package/dist/es/Grid/Grid.jest.js +2555 -0
  168. package/dist/es/Grid/Grid.js +1425 -0
  169. package/dist/es/Grid/Grid.ssr.js +57 -0
  170. package/dist/es/Grid/accessibilityOverscanIndicesGetter.jest.js +87 -0
  171. package/dist/es/Grid/accessibilityOverscanIndicesGetter.js +33 -0
  172. package/dist/es/Grid/defaultCellRangeRenderer.js +134 -0
  173. package/dist/es/Grid/defaultOverscanIndicesGetter.jest.js +87 -0
  174. package/dist/es/Grid/defaultOverscanIndicesGetter.js +29 -0
  175. package/dist/es/Grid/index.js +15 -0
  176. package/dist/es/Grid/types.js +96 -0
  177. package/dist/es/Grid/utils/CellSizeAndPositionManager.jest.js +372 -0
  178. package/dist/es/Grid/utils/CellSizeAndPositionManager.js +290 -0
  179. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +198 -0
  180. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js +198 -0
  181. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +81 -0
  182. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +53 -0
  183. package/dist/es/Grid/utils/maxElementSize.js +16 -0
  184. package/dist/es/Grid/utils/updateScrollIndexHelper.jest.js +174 -0
  185. package/dist/es/Grid/utils/updateScrollIndexHelper.js +79 -0
  186. package/dist/es/InfiniteLoader/InfiniteLoader.example.js +170 -0
  187. package/dist/es/InfiniteLoader/InfiniteLoader.jest.js +565 -0
  188. package/dist/es/InfiniteLoader/InfiniteLoader.js +263 -0
  189. package/dist/es/InfiniteLoader/index.js +3 -0
  190. package/dist/es/List/List.example.js +227 -0
  191. package/dist/es/List/List.jest.js +511 -0
  192. package/dist/es/List/List.js +312 -0
  193. package/dist/es/List/index.js +3 -0
  194. package/dist/es/List/types.js +21 -0
  195. package/dist/es/Masonry/Masonry.example.js +278 -0
  196. package/dist/es/Masonry/Masonry.jest.js +444 -0
  197. package/dist/es/Masonry/Masonry.js +421 -0
  198. package/dist/es/Masonry/PositionCache.js +82 -0
  199. package/dist/es/Masonry/createCellPositioner.js +53 -0
  200. package/dist/es/Masonry/index.js +4 -0
  201. package/dist/es/MultiGrid/CellMeasurerCacheDecorator.js +100 -0
  202. package/dist/es/MultiGrid/MultiGrid.example.js +122 -0
  203. package/dist/es/MultiGrid/MultiGrid.jest.js +579 -0
  204. package/dist/es/MultiGrid/MultiGrid.js +733 -0
  205. package/dist/es/MultiGrid/index.js +3 -0
  206. package/dist/es/ScrollSync/ScrollSync.example.js +248 -0
  207. package/dist/es/ScrollSync/ScrollSync.jest.js +60 -0
  208. package/dist/es/ScrollSync/ScrollSync.js +80 -0
  209. package/dist/es/ScrollSync/index.js +3 -0
  210. package/dist/es/Table/Column.jest.js +84 -0
  211. package/dist/es/Table/Column.js +85 -0
  212. package/dist/es/Table/SortDirection.js +13 -0
  213. package/dist/es/Table/SortIndicator.js +31 -0
  214. package/dist/es/Table/Table.example.js +316 -0
  215. package/dist/es/Table/Table.jest.js +1251 -0
  216. package/dist/es/Table/Table.js +735 -0
  217. package/dist/es/Table/createMultiSort.jest.js +162 -0
  218. package/dist/es/Table/createMultiSort.js +93 -0
  219. package/dist/es/Table/defaultCellDataGetter.js +15 -0
  220. package/dist/es/Table/defaultCellRenderer.js +13 -0
  221. package/dist/es/Table/defaultHeaderRenderer.js +25 -0
  222. package/dist/es/Table/defaultHeaderRowRenderer.js +12 -0
  223. package/dist/es/Table/defaultRowRenderer.js +77 -0
  224. package/dist/es/Table/index.js +12 -0
  225. package/dist/es/Table/types.js +38 -0
  226. package/dist/es/WindowScroller/WindowScroller.e2e.js +295 -0
  227. package/dist/es/WindowScroller/WindowScroller.example.js +158 -0
  228. package/dist/es/WindowScroller/WindowScroller.header-resize.e2e.js +356 -0
  229. package/dist/es/WindowScroller/WindowScroller.jest.js +530 -0
  230. package/dist/es/WindowScroller/WindowScroller.js +259 -0
  231. package/dist/es/WindowScroller/WindowScroller.js.flow +277 -0
  232. package/dist/es/WindowScroller/WindowScroller.ssr.js +19 -0
  233. package/dist/es/WindowScroller/index.js +3 -0
  234. package/dist/es/WindowScroller/index.js.flow +6 -0
  235. package/dist/es/WindowScroller/utils/dimensions.js +81 -0
  236. package/dist/es/WindowScroller/utils/dimensions.js.flow +91 -0
  237. package/dist/es/WindowScroller/utils/onScroll.js +64 -0
  238. package/dist/es/WindowScroller/utils/onScroll.js.flow +94 -0
  239. package/dist/es/index.js +13 -0
  240. package/dist/es/jest-setup.js +5 -0
  241. package/dist/es/utils/TestHelper.js +30 -0
  242. package/dist/es/utils/animationFrame.js +23 -0
  243. package/dist/es/utils/createCallbackMemoizer.jest.js +216 -0
  244. package/dist/es/utils/createCallbackMemoizer.js +25 -0
  245. package/dist/es/utils/getUpdatedOffsetForIndex.jest.js +65 -0
  246. package/dist/es/utils/getUpdatedOffsetForIndex.js +32 -0
  247. package/dist/es/utils/initCellMetadata.js +31 -0
  248. package/dist/es/utils/requestAnimationTimeout.js +32 -0
  249. package/dist/es/vendor/binarySearchBounds.js +194 -0
  250. package/dist/es/vendor/detectElementResize.js +186 -0
  251. package/dist/es/vendor/intervalTree.js +354 -0
  252. package/dist/umd/react-virtualized.js +4638 -0
  253. package/package.json +188 -0
  254. package/styles.css +80 -0
@@ -0,0 +1,162 @@
1
+ import createMultiSort from './createMultiSort';
2
+ describe('createMultiSort', function () {
3
+ function simulate(sort, dataKey) {
4
+ var eventModifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
5
+ var defaultSortDirection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'ASC';
6
+ sort({
7
+ defaultSortDirection: defaultSortDirection,
8
+ event: {
9
+ ctrlKey: eventModifier === 'control',
10
+ metaKey: eventModifier === 'meta',
11
+ shiftKey: eventModifier === 'shift'
12
+ },
13
+ sortBy: dataKey
14
+ });
15
+ }
16
+ it('errors if the user did not specify a sort callback', function () {
17
+ expect(createMultiSort).toThrow();
18
+ });
19
+ it('sets the correct default values', function () {
20
+ var multiSort = createMultiSort(jest.fn(), {
21
+ defaultSortBy: ['a', 'b'],
22
+ defaultSortDirection: {
23
+ a: 'ASC',
24
+ b: 'DESC'
25
+ }
26
+ });
27
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
28
+ expect(multiSort.sortDirection.a).toBe('ASC');
29
+ expect(multiSort.sortDirection.b).toBe('DESC');
30
+ });
31
+ it('sets the correct default sparse values', function () {
32
+ var multiSort = createMultiSort(jest.fn(), {
33
+ defaultSortBy: ['a', 'b']
34
+ });
35
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
36
+ expect(multiSort.sortDirection.a).toBe('ASC');
37
+ expect(multiSort.sortDirection.b).toBe('ASC');
38
+ });
39
+ describe('on click', function () {
40
+ it('sets the correct default value for a field', function () {
41
+ var multiSort = createMultiSort(jest.fn());
42
+ simulate(multiSort.sort, 'a');
43
+ expect(multiSort.sortBy).toEqual(['a']);
44
+ expect(multiSort.sortDirection.a).toBe('ASC');
45
+ simulate(multiSort.sort, 'b', '', 'DESC');
46
+ expect(multiSort.sortBy).toEqual(['b']);
47
+ expect(multiSort.sortDirection.b).toBe('DESC');
48
+ });
49
+ it('toggles a field value', function () {
50
+ var multiSort = createMultiSort(jest.fn());
51
+ simulate(multiSort.sort, 'a');
52
+ expect(multiSort.sortBy).toEqual(['a']);
53
+ expect(multiSort.sortDirection.a).toBe('ASC');
54
+ simulate(multiSort.sort, 'a');
55
+ expect(multiSort.sortBy).toEqual(['a']);
56
+ expect(multiSort.sortDirection.a).toBe('DESC');
57
+ simulate(multiSort.sort, 'b', '', 'DESC');
58
+ expect(multiSort.sortBy).toEqual(['b']);
59
+ expect(multiSort.sortDirection.b).toBe('DESC');
60
+ simulate(multiSort.sort, 'b', '', 'DESC');
61
+ expect(multiSort.sortBy).toEqual(['b']);
62
+ expect(multiSort.sortDirection.b).toBe('ASC');
63
+ });
64
+ it('resets sort-by fields', function () {
65
+ var multiSort = createMultiSort(jest.fn(), {
66
+ defaultSortBy: ['a', 'b']
67
+ });
68
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
69
+ simulate(multiSort.sort, 'a');
70
+ expect(multiSort.sortBy).toEqual(['a']);
71
+ });
72
+ it('resets sort-direction fields', function () {
73
+ var multiSort = createMultiSort(jest.fn(), {
74
+ defaultSortBy: ['a', 'b'],
75
+ defaultSortDirection: {
76
+ a: 'DESC',
77
+ b: 'ASC'
78
+ }
79
+ });
80
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
81
+ expect(multiSort.sortDirection.a).toEqual('DESC');
82
+ expect(multiSort.sortDirection.b).toEqual('ASC');
83
+ simulate(multiSort.sort, 'a');
84
+ expect(multiSort.sortBy).toEqual(['a']);
85
+ expect(multiSort.sortDirection.a).toEqual('ASC');
86
+ expect(multiSort.sortDirection.b).toEqual(undefined);
87
+ simulate(multiSort.sort, 'b');
88
+ expect(multiSort.sortBy).toEqual(['b']);
89
+ expect(multiSort.sortDirection.a).toEqual(undefined);
90
+ expect(multiSort.sortDirection.b).toEqual('ASC');
91
+ });
92
+ });
93
+ describe('on shift click', function () {
94
+ it('appends a field to the sort by list', function () {
95
+ var multiSort = createMultiSort(jest.fn());
96
+ simulate(multiSort.sort, 'a');
97
+ expect(multiSort.sortBy).toEqual(['a']);
98
+ expect(multiSort.sortDirection.a).toBe('ASC');
99
+ simulate(multiSort.sort, 'b', 'shift');
100
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
101
+ expect(multiSort.sortDirection.a).toBe('ASC');
102
+ expect(multiSort.sortDirection.b).toBe('ASC');
103
+ });
104
+ it('toggles an appended field value', function () {
105
+ var multiSort = createMultiSort(jest.fn());
106
+ simulate(multiSort.sort, 'a');
107
+ expect(multiSort.sortBy).toEqual(['a']);
108
+ expect(multiSort.sortDirection.a).toBe('ASC');
109
+ simulate(multiSort.sort, 'b', 'shift');
110
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
111
+ expect(multiSort.sortDirection.a).toBe('ASC');
112
+ expect(multiSort.sortDirection.b).toBe('ASC');
113
+ simulate(multiSort.sort, 'a', 'shift');
114
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
115
+ expect(multiSort.sortDirection.a).toBe('DESC');
116
+ expect(multiSort.sortDirection.b).toBe('ASC');
117
+ simulate(multiSort.sort, 'a', 'shift');
118
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
119
+ expect(multiSort.sortDirection.a).toBe('ASC');
120
+ expect(multiSort.sortDirection.b).toBe('ASC');
121
+ });
122
+ it('able to shift+click more than once', function () {
123
+ var multiSort = createMultiSort(jest.fn());
124
+ simulate(multiSort.sort, 'a');
125
+ expect(multiSort.sortBy).toEqual(['a']);
126
+ expect(multiSort.sortDirection.a).toBe('ASC');
127
+ simulate(multiSort.sort, 'b', 'shift');
128
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
129
+ expect(multiSort.sortDirection.a).toBe('ASC');
130
+ expect(multiSort.sortDirection.b).toBe('ASC');
131
+ simulate(multiSort.sort, 'b');
132
+ expect(multiSort.sortBy).toEqual(['b']);
133
+ expect(multiSort.sortDirection.b).toBe('DESC');
134
+ simulate(multiSort.sort, 'a', 'shift');
135
+ expect(multiSort.sortBy).toEqual(['b', 'a']);
136
+ expect(multiSort.sortDirection.a).toBe('ASC');
137
+ expect(multiSort.sortDirection.b).toBe('DESC');
138
+ });
139
+ });
140
+ ['control', 'meta'].forEach(function (modifier) {
141
+ describe("".concat(modifier, " click"), function () {
142
+ it('removes a field from the sort by list', function () {
143
+ var multiSort = createMultiSort(jest.fn(), {
144
+ defaultSortBy: ['a', 'b']
145
+ });
146
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
147
+ simulate(multiSort.sort, 'a', modifier);
148
+ expect(multiSort.sortBy).toEqual(['b']);
149
+ simulate(multiSort.sort, 'b', modifier);
150
+ expect(multiSort.sortBy).toEqual([]);
151
+ });
152
+ it('ignores fields not in the list on control click', function () {
153
+ var multiSort = createMultiSort(jest.fn(), {
154
+ defaultSortBy: ['a', 'b']
155
+ });
156
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
157
+ simulate(multiSort.sort, 'c', modifier);
158
+ expect(multiSort.sortBy).toEqual(['a', 'b']);
159
+ });
160
+ });
161
+ });
162
+ });
@@ -0,0 +1,93 @@
1
+ /*:: type SortDirection = 'ASC' | 'DESC';*/
2
+ /*:: type SortParams = {
3
+ defaultSortDirection: SortDirection,
4
+ event: MouseEvent,
5
+ sortBy: string,
6
+ };*/
7
+ /*:: type SortDirectionMap = {[string]: SortDirection};*/
8
+ /*:: type MultiSortOptions = {
9
+ defaultSortBy: ?Array<string>,
10
+ defaultSortDirection: ?SortDirectionMap,
11
+ };*/
12
+ /*:: type MultiSortReturn = {
13
+ /**
14
+ * Sort property to be passed to the `Table` component.
15
+ * This function updates `sortBy` and `sortDirection` values.
16
+ *-/
17
+ sort: (params: SortParams) => void,
18
+
19
+ /**
20
+ * Specifies the fields currently responsible for sorting data,
21
+ * In order of importance.
22
+ *-/
23
+ sortBy: Array<string>,
24
+
25
+ /**
26
+ * Specifies the direction a specific field is being sorted in.
27
+ *-/
28
+ sortDirection: SortDirectionMap,
29
+ };*/
30
+ export default function createMultiSort(sortCallback /*: Function*/) /*: MultiSortReturn*/{
31
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
32
+ defaultSortBy = _ref.defaultSortBy,
33
+ _ref$defaultSortDirec = _ref.defaultSortDirection,
34
+ defaultSortDirection = _ref$defaultSortDirec === void 0 ? {} : _ref$defaultSortDirec;
35
+ if (!sortCallback) {
36
+ throw Error("Required parameter \"sortCallback\" not specified");
37
+ }
38
+ var sortBy = defaultSortBy || [];
39
+ var sortDirection = {};
40
+ sortBy.forEach(function (dataKey) {
41
+ sortDirection[dataKey] = defaultSortDirection[dataKey] !== undefined ? defaultSortDirection[dataKey] : 'ASC';
42
+ });
43
+ function sort(_ref2 /*:: */) /*: void*/{
44
+ var defaultSortDirection = _ref2 /*:: */.defaultSortDirection,
45
+ event = _ref2 /*:: */.event,
46
+ dataKey = _ref2 /*:: */.sortBy;
47
+ if (event.shiftKey) {
48
+ // Shift + click appends a column to existing criteria
49
+ if (sortDirection[dataKey] !== undefined) {
50
+ sortDirection[dataKey] = sortDirection[dataKey] === 'ASC' ? 'DESC' : 'ASC';
51
+ } else {
52
+ sortDirection[dataKey] = defaultSortDirection;
53
+ sortBy.push(dataKey);
54
+ }
55
+ } else if (event.ctrlKey || event.metaKey) {
56
+ // Control + click removes column from sort (if pressent)
57
+ var index = sortBy.indexOf(dataKey);
58
+ if (index >= 0) {
59
+ sortBy.splice(index, 1);
60
+ delete sortDirection[dataKey];
61
+ }
62
+ } else {
63
+ // Clear sortBy array of all non-selected keys
64
+ sortBy.length = 0;
65
+ sortBy.push(dataKey);
66
+
67
+ // Clear sortDirection object of all non-selected keys
68
+ var sortDirectionKeys = Object.keys(sortDirection);
69
+ sortDirectionKeys.forEach(function (key) {
70
+ if (key !== dataKey) delete sortDirection[key];
71
+ });
72
+
73
+ // If key is already selected, reverse sort direction.
74
+ // Else, set sort direction to default direction.
75
+ if (sortDirection[dataKey] !== undefined) {
76
+ sortDirection[dataKey] = sortDirection[dataKey] === 'ASC' ? 'DESC' : 'ASC';
77
+ } else {
78
+ sortDirection[dataKey] = defaultSortDirection;
79
+ }
80
+ }
81
+
82
+ // Notify application code
83
+ sortCallback({
84
+ sortBy: sortBy,
85
+ sortDirection: sortDirection
86
+ });
87
+ }
88
+ return {
89
+ sort: sort,
90
+ sortBy: sortBy,
91
+ sortDirection: sortDirection
92
+ };
93
+ }
@@ -0,0 +1,15 @@
1
+ /*:: import type {CellDataGetterParams} from './types';*/
2
+ /**
3
+ * Default accessor for returning a cell value for a given attribute.
4
+ * This function expects to operate on either a vanilla Object or an Immutable Map.
5
+ * You should override the column's cellDataGetter if your data is some other type of object.
6
+ */
7
+ export default function defaultCellDataGetter(_ref /*:: */) {
8
+ var dataKey = _ref /*:: */.dataKey,
9
+ rowData = _ref /*:: */.rowData;
10
+ if (typeof rowData.get === 'function') {
11
+ return rowData.get(dataKey);
12
+ } else {
13
+ return rowData[dataKey];
14
+ }
15
+ }
@@ -0,0 +1,13 @@
1
+ /*:: import type {CellRendererParams} from './types';*/
2
+ /**
3
+ * Default cell renderer that displays an attribute as a simple string
4
+ * You should override the column's cellRenderer if your data is some other type of object.
5
+ */
6
+ export default function defaultCellRenderer(_ref /*:: */) /*: string*/{
7
+ var cellData = _ref /*:: */.cellData;
8
+ if (cellData == null) {
9
+ return '';
10
+ } else {
11
+ return String(cellData);
12
+ }
13
+ }
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+ import SortIndicator from './SortIndicator';
3
+ /*:: import type {HeaderRendererParams} from './types';*/
4
+ /**
5
+ * Default table header renderer.
6
+ */
7
+ export default function defaultHeaderRenderer(_ref /*:: */) {
8
+ var dataKey = _ref /*:: */.dataKey,
9
+ label = _ref /*:: */.label,
10
+ sortBy = _ref /*:: */.sortBy,
11
+ sortDirection = _ref /*:: */.sortDirection;
12
+ var showSortIndicator = sortBy === dataKey;
13
+ var children = [/*#__PURE__*/React.createElement("span", {
14
+ className: "ReactVirtualized__Table__headerTruncatedText",
15
+ key: "label",
16
+ title: typeof label === 'string' ? label : null
17
+ }, label)];
18
+ if (showSortIndicator) {
19
+ children.push(/*#__PURE__*/React.createElement(SortIndicator, {
20
+ key: "SortIndicator",
21
+ sortDirection: sortDirection
22
+ }));
23
+ }
24
+ return children;
25
+ }
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ /*:: import type {HeaderRowRendererParams} from './types';*/
3
+ export default function defaultHeaderRowRenderer(_ref /*:: */) {
4
+ var className = _ref /*:: */.className,
5
+ columns = _ref /*:: */.columns,
6
+ style = _ref /*:: */.style;
7
+ return /*#__PURE__*/React.createElement("div", {
8
+ className: className,
9
+ role: "row",
10
+ style: style
11
+ }, columns);
12
+ }
@@ -0,0 +1,77 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import * as React from 'react';
3
+ /*:: import type {RowRendererParams} from './types';*/
4
+ /**
5
+ * Default row renderer for Table.
6
+ */
7
+ export default function defaultRowRenderer(_ref /*:: */) {
8
+ var className = _ref /*:: */.className,
9
+ columns = _ref /*:: */.columns,
10
+ index = _ref /*:: */.index,
11
+ key = _ref /*:: */.key,
12
+ onRowClick = _ref /*:: */.onRowClick,
13
+ onRowDoubleClick = _ref /*:: */.onRowDoubleClick,
14
+ onRowMouseOut = _ref /*:: */.onRowMouseOut,
15
+ onRowMouseOver = _ref /*:: */.onRowMouseOver,
16
+ onRowRightClick = _ref /*:: */.onRowRightClick,
17
+ rowData = _ref /*:: */.rowData,
18
+ style = _ref /*:: */.style;
19
+ var a11yProps = {
20
+ 'aria-rowindex': index + 1
21
+ };
22
+ if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {
23
+ a11yProps['aria-label'] = 'row';
24
+ a11yProps.tabIndex = 0;
25
+ if (onRowClick) {
26
+ a11yProps.onClick = function (event) {
27
+ return onRowClick({
28
+ event: event,
29
+ index: index,
30
+ rowData: rowData
31
+ });
32
+ };
33
+ }
34
+ if (onRowDoubleClick) {
35
+ a11yProps.onDoubleClick = function (event) {
36
+ return onRowDoubleClick({
37
+ event: event,
38
+ index: index,
39
+ rowData: rowData
40
+ });
41
+ };
42
+ }
43
+ if (onRowMouseOut) {
44
+ a11yProps.onMouseOut = function (event) {
45
+ return onRowMouseOut({
46
+ event: event,
47
+ index: index,
48
+ rowData: rowData
49
+ });
50
+ };
51
+ }
52
+ if (onRowMouseOver) {
53
+ a11yProps.onMouseOver = function (event) {
54
+ return onRowMouseOver({
55
+ event: event,
56
+ index: index,
57
+ rowData: rowData
58
+ });
59
+ };
60
+ }
61
+ if (onRowRightClick) {
62
+ a11yProps.onContextMenu = function (event) {
63
+ return onRowRightClick({
64
+ event: event,
65
+ index: index,
66
+ rowData: rowData
67
+ });
68
+ };
69
+ }
70
+ }
71
+ return /*#__PURE__*/React.createElement("div", _extends({}, a11yProps, {
72
+ className: className,
73
+ key: key,
74
+ role: "row",
75
+ style: style
76
+ }), columns);
77
+ }
@@ -0,0 +1,12 @@
1
+ import createMultiSort from './createMultiSort';
2
+ import defaultCellDataGetter from './defaultCellDataGetter';
3
+ import defaultCellRenderer from './defaultCellRenderer';
4
+ import defaultHeaderRowRenderer from './defaultHeaderRowRenderer.js';
5
+ import defaultHeaderRenderer from './defaultHeaderRenderer';
6
+ import defaultRowRenderer from './defaultRowRenderer';
7
+ import Column from './Column';
8
+ import SortDirection from './SortDirection';
9
+ import SortIndicator from './SortIndicator';
10
+ import Table from './Table';
11
+ export default Table;
12
+ export { createMultiSort, defaultCellDataGetter, defaultCellRenderer, defaultHeaderRowRenderer, defaultHeaderRenderer, defaultRowRenderer, Column, SortDirection, SortIndicator, Table };
@@ -0,0 +1,38 @@
1
+ /*:: export type CellDataGetterParams = {
2
+ columnData: ?any,
3
+ dataKey: string,
4
+ rowData: any,
5
+ };*/
6
+ /*:: export type CellRendererParams = {
7
+ cellData: ?any,
8
+ columnData: ?any,
9
+ dataKey: string,
10
+ rowData: any,
11
+ rowIndex: number,
12
+ };*/
13
+ /*:: export type HeaderRowRendererParams = {
14
+ className: string,
15
+ columns: Array<any>,
16
+ style: any,
17
+ };*/
18
+ /*:: export type HeaderRendererParams = {
19
+ columnData: ?any,
20
+ dataKey: string,
21
+ disableSort: ?boolean,
22
+ label: ?any,
23
+ sortBy: ?string,
24
+ sortDirection: ?string,
25
+ };*/
26
+ /*:: export type RowRendererParams = {
27
+ className: string,
28
+ columns: Array<any>,
29
+ index: number,
30
+ isScrolling: boolean,
31
+ onRowClick: ?Function,
32
+ onRowDoubleClick: ?Function,
33
+ onRowMouseOver: ?Function,
34
+ onRowMouseOut: ?Function,
35
+ rowData: any,
36
+ style: any,
37
+ key: string,
38
+ };*/