UNPKG

23.6 kBMarkdownView Raw
1Changelog
2------------
3
4##### 7.3.0
5`Grid` (and its HOCs `FlexTable` and `VirtualScroll`) now support larger heights and widths than browsers support natively.
6For example, the current version of Chrome will not allow users to scroll pass ~33.5M pixel offset.
7To work around this limitation, `Grid` increases the density of cells, shifting them as a ratio of what the full scrollable size would be to a browser-safe size.
8This should be more or less transparent to users, although in extreme cases it can lead to _really sensitive_ scroll responsiveness.
9
10##### 7.2.0
11Added new method- `measureAllCells`- to `Grid`, `FlexTable`, and `VirtualScroll` to force-measure all cells.
12This supports special use-cases where deferred measuring is not desired.
13
14Added `estimatedRowSize` property to `FlexTable` and `VirtualScroll` to be passed through to the inner `Grid`.
15
16Also added guard to ensure the `onScroll` callback for `Collection`, `Grid`, `FlexTable`, and `VirtualScroll` is never called with a negative number.
17
18##### 7.1.3
19The inner javascript-detect-element-resize library used by `AutoSizer` now passes the proper `useCapture` value when removing listeners as well. This should prevent lingering event listeners in certain cases. Thanks to @cyberxndr for this fix.
20
21##### 7.1.2
22Added "_center_" option for `scrollToAlignment` property of `Collection`, `Grid`, `FlexTable`, and `VirtualScroll`.
23Thanks to @edulan for the contribution!
24
25Also added a check to avoid rendering content frmo `noContentRenderer` if `width` or `height` are 0.
26
27##### 7.1.1
28Resolved edge-case bug that caused the bottom/right cells in a `Grid` or `Collection` to be partially overlapped by a scrollbar.
29Thanks to @anjianshi for reporting this and collaborating on the fix!
30
31##### 7.1.0
32Added `scrollToAlignment` property to `Collection`, `Grid`, `FlexTable`, and `VirtualScroll` to offer finer-grained control of how scrolled-to cells are aligned.
33Default behavior ("_auto_") remains unchanged- the least amount of scrolling will occur to ensure that the specified cell is visible.
34
35##### 7.0.5
36Fixed edge-case bug where `InfiniteLoader` did not respect `minBatchSize` setting when a user was scrolling up.
37
38##### 7.0.4
39Added `scrollLeft` and `scrollTop` parameters to `cellRangeRenderer` callback for `Grid`.
40
41##### 7.0.3
42Added `box-sizing: border-box` rules to `.FlexTable__headerRow` and `.FlexTable__Grid` classes to fix edge-case scrollbar bug experienced by some users.
43
44##### 7.0.2
45Added `recomputeCellSizesAndPositions` method to `Collection` (to pass through to inner `CollectionView`).
46
47##### 7.0.1
48Replaced single occurence of `Number.isNaN` with `isNaN` to avoid IE compatibility issues.
49
50# 7.0.0
51Version 7 changes are described in detail on the [Version 7 Roadmap wiki page](https://github.com/bvaughn/react-virtualized/wiki/Version-7-Roadmap).
52Upgrade instructions and [jscodeshift](https://github.com/facebook/jscodeshift) mods can also be found there.
53
54To run a code mod, check out react-virtualized (or download the codemod) and then...
55```
56jscodeshift -t /path/to/react-virtualized/codemods/6-to-7/rename-properties.js source
57```
58
59##### 6.3.2
60Fixed edge-case bug in `Collection` where initial `scrollLeft` and `scrollTop` would not correctly adjust inner offsets.
61Thanks @edulan for the contribution!
62
63##### 6.3.1
64Added better checks against invalid style properties in `AutoSizer` to protected against the case when it is removed from the DOM immediately after being added.
65
66##### 6.3.0
67Added new `minimumBatchSize` property to `InfiniteLoader` to simplify HTTP request batching.
68Fixed edge-case NPE with `AutoSizer` when it is unmounted immediately after being mounted.
69
70##### 6.2.2
71Fixed off-by-one for `InfiniteLoader` that caused it to request one too many rows when scrolled to the end of the list.
72
73##### 6.2.1
74`FlexTable` supports `true`, `false`, `undefined`, and `null` children now to more easily enable support for dynamic columns (see issue #174).
75Improved edge-case handling for changes to cell counts when scroll-to-index properties have been set.
76
77### 6.2.0
78Added new `Collection` component for rendering non-checkboard data.
79This component's cells can be positioned in any arrangement, even overlapping.
80Note that because it has fewer constraints, `Collection` cannot compute positioning and layout data as fast as `Grid`.
81
82##### 6.1.2
83Moved `react-addons-shallow-compare` from `dependencies` to `peerDependencies`.
84
85##### 6.1.1
86Updated React dependency ranges now that 15.0 has been released.
87
88### 6.1.0
89`Grid` supports a new `renderCellRanges` property for customizing the rendering of a window of cells.
90This function should implement the following signature:
91```js
92function renderCellRanges ({
93 columnMetadata:Array<Object>,
94 columnStartIndex: number,
95 columnStopIndex: number,
96 renderCell: Function,
97 rowMetadata:Array<Object>,
98 rowStartIndex: number,
99 rowStopIndex: number
100}): Array<PropTypes.node>
101```
102
103##### 6.0.8
104Fixed dependency ranges for `react-addons-shallow-compare` and `react-dom`.
105
106##### 6.0.7
107Added key handling to sortable `FlexTable` headers so that ENTER and SPACE keys can be used to toggle sort direction.
108
109##### 6.0.6
110Added conditional checks to when `aria-label`, `role`, and `tabIndex` get attached to `FlexTable` headers and rows.
111These a11y properties are only added when on-click or sort handlers are present.
112
113##### 6.0.5
114Added `aria-label` and `role` attributes to `FlexTable`, `Grid`, and `VirtualScroll` components to fix a11y issues reported by [reactjs/react-a11y](https://github.com/reactjs/react-a11y).
115Thanks to @globexdesigns for the contributions!
116
117##### 6.0.4
118Separated horiontal and vertical `Grid` metadata calculation to avoid unnecessarily recomputing row metadata for `FlexTable`s and `VirtualScroll`s when a browser's window is resized, for example.
119Also replaced `columnWidth` and `rowHeight` getter uses in `Grid.render` in favor of cached cell metadata instead.
120
121##### 6.0.3
122Small update to `FlexTable` to move the `rowGetter` call outside of the column loop to reduce the number of times that method gets called.
123
124##### 6.0.2
125Added [transform-react-inline-elements](http://babeljs.io/docs/plugins/transform-react-inline-elements/) to UMD build for minor runtime performance improvements.
126This change does not effect CommonJS or ES6 module builds because I did not want to remove prop-type checks.
127You should apply this transformation step as part of your own production build pipeline.
128
129##### 6.0.1
130Removed lingering references to `react-pure-render` with with [`shallowCompare`](https://facebook.github.io/react/docs/shallow-compare.html).
131This was meant to be part of the initial 6.0 release but was left out accidentally.
132
133# 6.0.0
134
135Version 6 includes the following changes.
136(For more background information refer to the [Version 6 Roadmap wiki page](https://github.com/bvaughn/react-virtualized/wiki/Version-6-Roadmap).)
137At a high-level the purpose of this release is to improve customization and flexibility with regard to arrow-key event handling.
138
139### Backwards-incompatible changes
140* Refactored `Grid` to remove arrow-key scroll-snapping. Instead this feature is implemented in a HOC, `ArrowKeyStepper`. The upgrade path from React 5.x to 6.x if you want to maintain arrow-key navigation behavior is as follows:
141
142```js
143// Before...
144<Grid {...gridProps}/>
145
146// After...
147<ArrowKeyStepper
148 columnsCount={columnsCount}
149 rowsCount={rowsCount}
150>
151 {({ onSectionRendered, scrollToColumn, scrollToRow }) => (
152 <Grid
153 columnsCount={columnsCount}
154 onSectionRendered={onSectionRendered}
155 rowsCount={rowsCount}
156 scrollToColumn={scrollToColumn}
157 scrollToRow={scrollToRow}
158 {...otherGridProps}
159 />
160 )}
161</ArrowKeyStepper>
162```
163* The following public methods have also be removed from components:
164 * `FlexTable`: `scrollToRow` (use `scrollToIndex` prop instead), `setScrollTop` (use `scrollTop` prop instead)
165 * `Grid`: `scrollToCell` (use `scrollToColumn` and `scrollToRow` props instead), `setScrollPosition` (use `scrollLeft` and `scrollTop` props instead)
166 * `VirtualScroll`: `scrollToRow` (use `scrollToIndex` prop instead), `setScrollTop` (use `scrollTop` prop instead)
167
168### Backwards-compatible changes
169* Replaced (the now unsupported) `react-pure-render` with [`shallowCompare`](https://facebook.github.io/react/docs/shallow-compare.html).
170
171##### 5.5.6
172Max scroll position logic in `Grid` now takes scrollbar size into consideration.
173Also includes a small `render` optimization for null cells.
174This release made possible by @jquense!
175
176##### 5.5.5
177Updated `package.json` to support React `^0.14.0` as well as `^15.0.0-rc.1`.
178Thanks to @opichals for the PR.
179
180##### 5.5.4
181Changed key-down event handler in `VirtualScroll`, `FlexTable`, and `Grid` to no longer call `event.preventDefault()` for arrow-key events.
182This was causing poor user interactions for `<input>` elements within `VirtualScroll` and `FlexTable` components.
183Note that this issue still occurs for `<input>` elements in a `Grid` component.
184
185This release also removes the `outline: 0` default style for `Grid`.
186After consideration I think that's a harmful default behavior.
187
188##### 5.5.3
189Added `will-change` property to `Grid` to work around a Chrome bug(?) that caused the entire grid to be repainted whenever a new row or column was added. This was negatively impacting scrolling performance for Chrome under certain conditions. This change is not expected to impact Firefox, Safari, or IE.
190
191Also trapped scroll events inside of `AutoSizer` so that `sdecima/javascript-detect-element-resize` did not treat them as potential resizes and unnecessarily force a sync DOM layout.
192
193##### 5.5.2
194Removed two unnecessary method calls in `Grid` and replaced them with cached properties. Should offer a minor performance boost.
195Added better bounds-checking to util function `getVisibleCellIndices()`
196
197##### 5.5.1
198Removed unnecessary `setImmediate` in `Grid` initialization code.
199This prevents a possible edge-case runtime error when a `Grid` is mounted and then removed before `setImmediate` is invoked.
200
201### 5.5.0
202`ScrollSync` passes additional parameters to child function in order to enable more complex scroll-driven UI changes.
203
204### 5.4.0
205Added optional `headerRenderer` property to `FlexColumn` to enable custom `FlexTable` header cells.
206
207##### 5.3.2
208Decoupled x/y axes in `Grid` when determining whether or not to enable overflow.
209This results in more robustly handling issues like the one reported in PR #133.
210It also comes with the small cost of partially obscuring a small part of cells (the area used by a scrollbar).
211
212##### 5.3.1
213Fixed edge-case where always-on scrollbars were not hidden once shown (see issue #116).
214
215### 5.3.0
216Separated CommonJS and UMD builds and pointed package.json's `main` target at the CommonJS build.
217Also moved the ES6 modules build from `/es` to `/dist/es` to reduce the amount of clutter in the packaged dir.
218
219##### 5.2.4
220Changed `Grid` child `key` attributes again to reduce the number of elements created as a result of scrolling.
221This dramatically improves perforamance without introducing any known regressions.
222Thanks to @cesarandreu for consulting on this release.
223
224##### 5.2.3
225Reverted `transform: translate` positioning to old `top` / `left` positioning to address performance concerns reported via PR #124 and issue #94.
226
227##### 5.2.2
228Updated ES6 module build to be Rollup-friendly by way of `es2015-rollup` Babel preset.
229Also cleaned up NPM package to suppress unnecessary files (via new `.npmignore`).
230
231##### 5.2.1
232Fixes long-standing slow wheel scrolling issue that affected certain browsers such as Firefox (see issue #2). Big thanks to James Long (@jlongster), Markus Stange ‏(@mstange), and Dan Abramov (@gaearon) ‏for their help with this fix.
233
234### 5.2.0
235Added optional `onResize` callback property to `AutoSizer`. This method is invoked any time the `AutoSizer` detects a resize. It is passed `width` and `height` named parameters.
236
237Added optional `minWidth` and `maxWidth` properties to `FlexColumn` to enable greater flexibility with regard to table-column layout.
238
239##### 5.1.1
240Marked `FlexColumn` `width` property as required since ommitting this property can lead to uneven column layouts.
241
242### 5.1.0
243Added `ColumnSizer` high-order component for auto-calculating column widths for `Grid` cells.
244
245#### 5.0.1
246
247Added `webkit-transform` style to `Grid` cells for iOS 8 support.
248
249# 5.0.0
250
251Version 5 includes the following changes.
252(For more background information refer to the [Version 5 Roadmap wiki page](https://github.com/bvaughn/react-virtualized/wiki/Version-5-Roadmap).)
253At a high-level the purpose of this release is to make HOCs more easily composible in order to support a wider variety of them in the future.
254A secondary goal was to cut redundant code from `VirtualScroll` and rely more heavily on the base `Grid` component.
255
256###### Backwards-incompatible changes
257* Refactored `FlexTable` and `VirtualScroll` to be HOCs that use `Grid` internally. This change makes `width` a required attribute for all virtualized components. A simple upgrade strategy is to use the `AutoSizer` HOC (learn more [here](docs/AutoSizer.md)).
258* Changed globally exported library name (for use with vanilla `<script>` tags) to `window.ReactVirtualized` instead of `window["react-virtualized"]` (see [issue #86](https://github.com/bvaughn/react-virtualized/issues/86)).
259* Removed `horizontalPadding` and `verticalPadding` properties from `FlexTable`. These properties were redundant. Such padding should be the responsibility of the parent container and taken into consideration by the injected `width` and `height`.
260* Refactored `InfiniteLoader` and `AutoSizer` to require function children so as to be more easily composable with each other and new HOCs like `ScrollSync` (learn more [here](docs/usingAutoSizer.md#using-autosizer-with-infiniteloader)).
261* `AutoSizer` no longer supports a `className` property or uses the global 'AutoSizer' class.
262
263###### Backwards-compatible changes
264* Added ES6 module and `jsnext:main` target to enable tree-shaking support.
265* Updated `onScroll` property to specific total scrollable area so that offsets can be converted into percentages if desired (learn more [here](docs/README.md)).
266* Replaced `top` / `left` cell positioning with `transform: translate()` for small performance gains. (This may become configurable in the future if any negative impact on performance is noticed.)
267* Created `ScrollSync` HOC for synchronizing scrolling between two or more virtualized components (learn more [here](docs/ScrollSync.md)).
268
269### 4.10.0
270`FlexTable` and `VirtualScroll` get a new property, `overscanRowsCount`. `Grid` gets `overscanRowsCount` and `overscanColumnsCount`.
271These properties can be used to reduce visual flicker around the sides of virtualized components when quickly scrolling.
272`overscanRowsCount` defaults to 10 and `overscanColumnsCount` defaults to 0; adjust as necessary based on the size of your lists and cells.
273
274`FlexTable` sets a default value of 0 for `headerHeight` to more gracefully support `disableHeader` use case.
275
276### 4.9.0
277`AutoSizer` component now takes padding into consideration before setting the `width` and `height` of its children.
278
279##### 4.8.1
280Updated `InfiniteLoader` to better reflect required properties. (`isRowLoaded`, `rowsCount`, and `threshold` were not marked as required before.)
281
282### 4.8.0
283Updated `InfiniteLoader` to support being composable within an `AutoSizer` HOC. If either a `width` or `height` attribute are specified on `InfiniteLoader` they will be bundled through to the loader's child component.
284
285##### 4.7.1
286Fixed `AutoSizer` bug that caused it to prevent parent flex containers from shrinking in some contexts.
287
288### 4.7.0
289Added `scrollToIndex` property to `FlexTable` to be passed through to inner `Grid`.
290
291##### 4.6.6
292Better gaurd against `NaN` values for `clientWidth` and `offsetWidth` for test environments using `jsdom`.
293
294##### 4.6.5
295Added `react-dom` to the Webpack :externals node to avoid including it in the build.
296This fixes the bad `4.6.3` and `4.6.4` builds. Sorry!
297
298##### 4.6.4
299Moved `react-dom` from `dependencies` to `peerDependencies` to fix bad `4.6.3` build.
300
301##### 4.6.3
302Fixed edge-case sizing bug with `FlexTable` headers and always-on scrollbars (see issue #80 for more info).
303
304##### 4.6.2
305Replaced single occurence of `Number.isNaN` with `isNaN` to avoid IE compatibility issues. Maybe in the future I will add a polyfill dependency but I did not intend to introduce this without a major version bump so I'm removing it.
306
307##### 4.6.1
308Removes `event.stopPropagation` since it was unnecessary to prevent keyboard event bubbling, only to prevent the default browser behavior.
309
310### 4.6.0
311Relocated a couple of static style properties from inline style object to exported CSS file for easier customization.
312Added `Grid__cell` and `VirtualScroll__row` classes.
313
314### 4.5.0
315Added `onScroll` callback to `Grid`, `FlexTable`, and `VirtualScroll`.
316Added `scrollToCell` method to `Grid` and `scrollToRow` to `FlexTable`, and `VirtualScroll`.
317
318##### 4.4.3
319Added `-ms-flex` and `-webkit-flex` browser prefixes to `FlexTable` cells.
320
321##### 4.4.2
322Fixed invalid function reference in `Grid` triggered by specifying an initial `scrollToRow` property.
323
324##### 4.4.1
325Fixed distribution to include new `Grid` component as an export.
326
327### 4.4.0
328Added new `Grid` component for virtualizing rows _and_ columns .
329Updated `AutoSizer` component to support managing _only_ `width` or `height` (in addition to both).
330
331##### 4.3.1
332Fixed small CSS property misnaming issue.
333
334### 4.3.0
335`FlexTable` now supports dynamic row-heights (in the same way as `VirtualScroll`).
336
337##### 4.2.1
338Set `VirtualScroll` default style to `width: 100%` to be more inline with default `FlexTable` behavior.
339
340### 4.2.0
341Replaced `React.cloneElement` with wrapper element in order to:
342* Better support for pure function components; (they were not compatible with inline style positioning).
343* Relax the requirement of `rowRenderer` having to specify a `key`.
344* Support `React.PropTypes.node` children (including plain strings, numbers, etc.) instead of just elements.
345
346### 4.1.0
347Added `-webkit-overflow-scrolling: touch` for smoother inertial scrolling on mobile devices.
348
349##### 4.0.2
350Additional `columnData` parameter passed to `onHeaderClick` callback.
351
352##### 4.0.1
353Removed an unused dependency on 'inline-style-prefixer' from the `package.json`.
354
355# 4.0.0
356CSS styles have been split into their own, separately loaded stylesheet. This simplifies universal/isomorphic use cases without breaking vendor prefixing. This change means that you'll need to import the following additional file. This only needs to be done once (usually during bootstrapping).
357```js
358import 'react-virtualized/styles.css';
359```
360
361In this release the `width` property of the `FlexTable` component was removed. Tables will now grow to fill 100% of the width of their parent container.
362
363The `AutoSizer`'s `ChildComponent` attribute has been removed in favor of using a regular react child. For example:
364```html
365<AutoSizer
366 ChildComponent={VirtualScroll}
367 {...props}
368/>
369```
370Should instead be this:
371```html
372<AutoSizer>
373 <VirtualScroll {...props}/>
374</AutoSizer>
375```
376
377##### 3.1.1
378New `onHeaderClick` property added to `FlexTable`. Thanks to @olslash for the contribution!
379
380### 3.1.0
381Added high-order `InfiniteLoader` component to manage just-in-time fetching of data as a user scrolls up or down in a list.
382For more information about this component refer to the [API docs](https://github.com/bvaughn/react-virtualized/blob/master/docs/InfiniteLoader.md).
383
384##### 3.0.1
385Fixed small NPE when up/down arrow key was used while an empty VirtualScroll was in-focus.
386
387# 3.0.0
388CSS styles have been split into two groups: functional styles (eg. `position`, `overflow`) and presentational styles (eg. `text-transform`, `color`) and both have been converted to inline styles rather than being loaded as CSS. This was done primarily to simplify usage for universal/isomorphic rendering.
389
390For more information on customizing styles refer to the [documentation](https://github.com/bvaughn/react-virtualized/#customizing-styles)...
391
392### 2.8.0
393Changed `Autosizer` component to support a single child instead of the `ChildComponent` property.
394(For backwards compatibility purposes the `ChildComponent` property will continue to be supported.)
395
396##### 2.7.5
397Defer loading of element resize code until `componentDidMount` to avoid undefined `document` and `body` references.
398This was breaking server-side rendering.
399
400##### 2.7.4
401Uglify dist build to remove dead code.
402
403##### 2.7.2 & 2.7.3
404Improved checks for undefined `document` and `window` in hopes of better supporting server-side rendering.
405
406##### 2.7.1
407Replaced invalid `rowHeight instanceof Number` check with `typeof rowHeight === 'number'` in `VirtualScroll`.
408
409### 2.7.0
410Moved `onRowsRendered` to `componentDidUpdate` (instead of `render`) to keep `render` free of side-effects.
411Added tests to ensure that the callback is only invoked once per start/stop index pair (and not again unless the indices change).
412
413##### 2.6.2
414Added check for undefined `document` before accessing `attachEvent` to avoid causing problems with server-side rendering.
415
416##### 2.6.1
417Cell `title` now only set if rendered cell contents are a string. This fixes issue #35.
418
419### 2.6.0
420`VirtualScroll` and `FlexTable` now support dynamic row heights by accepting a function as the `rowHeight` property.
421
422### 2.5.0
423Added `AutoSizer` component for wrapping `FlexTable` or `VirtualScroll` and growing to fill the parent container. This should hopefully simplify usage of these components.
424
425### 2.4.0
426`FlexTable` and `VirtualScroll` offer new callback property `onRowsRendered` to be invoked with a params object `{ startIndex, stopIndex }` after rows have been rendered.
427
428### 2.3.0
429`FlexTable`'s `rowClassName` property can now be either a string or a function in order to support dynamic row classes (eg. alternating colors).
430
431### 2.2.0
432Added `onRowClick` property to `FlexTable`.
433
434##### 2.1.1
435Fixed a few minor FlexTable font styles to use relative sizes instead of custom ones
436
437### 2.1.0
438Added optional `noRowsRenderer` property to `VirtualScroll` and `FlexTable`.
439This property can be used to render loading indicators or placeholder content for empty lists.
440
441# 2.0.0
442Set `shouldPureComponentUpdate` on component prototypes instead of instances.
443Dropped half-ass support for React 0.13. This module has always depended on React 0.14 but it was checking in previous versions and trying to be backwards compatible with 0.13. Since that check is no longer in place, this is a major version bump (even though there is no real new functionality being added).
444
445##### 1.0.4
446Fixed package.json dependencies by moving `classnames`, `raf`, and `react-pure-render` out of `peerDependencies` and into `dependencies`.
447
448##### 1.0.3
449Same as version 1.0.2; published just to update NPM keyword and description.
450
451##### 1.0.2
452Removed default row-border styling from FlexTable and added new :rowClassName property.
453
454##### 1.0.1
455Updated to use ReactDOM.findDOMNode instead of getDOMNode (but added backwards-compatible check for < React v0.14).
456
457# 1.0.0
458Package JSON updated so that "main" entry points to `dist/react-virtualized.js` to provide easier integration for users that don't want Babel/Webpack to have to process their `node_modules` folder.
459
460##### 0.0.4
461Added keypress scrolling support.
462
463##### 0.0.3
464Added "main" entry to package.json.
465
466##### 0.0.2
467Added CSS auto-prefixing to support Safari and other, older browsers.
468
469##### 0.0.1
470Initial release.
471
\No newline at end of file