Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

6.0.0 #810

Merged
merged 236 commits into from
Jan 13, 2024
Merged

6.0.0 #810

merged 236 commits into from
Jan 13, 2024

Conversation

jassmith
Copy link
Contributor

@jassmith jassmith commented Nov 26, 2023

🚧 These release notes are under construction. They may contain misinformation, partial truths, and damned lies.

🚨 Breaking Changes

New dependency

  • canvas-hypertxt bumped to 1.0.3
  • @linaria/react now added as dep (extremely tiny)

✌️ Farewell create react app 4

CRA 4 is no longer officially supported. While it is definitely possible to make it work, it may require extra work. CRA 5 works fine.

🚢 Better exports

Exports for Glide Data Grid are now done in a more standard esm compliant manner. This should enable better tree shaking.

🧼 Cell API cleanup

Some cells have had minor tweaks to their API to bring them in line with standard conventions. The ImageCell and all the cells in the cells package now uses the standard readonly flag.

👋 Minimap removed

The minimap was awesome, and largely unused. It has been removed from this version of Glide Data Grid in the service of smaller packages and a more maintainable surface area. We appreciate your service 🫡

🎨 drawCell callback improved.

The drawCell callback now receives a callback argument which paints the standard cell. This allows dramatically more flexibility with custom under and overdrawing of cells. It is also now a void method eliminating a source of confusion.

const drawCell: DrawCellCallback = React.useCallback(
    (args, draw) => {
      // Draw something below the cell drawing
      draw()
      // Draw something on top of the cell drawing
}, [])

🎉 New Features

💪 Kinetic super scroll on iOS

Are you the one person presenting data grids to your mobile users? This feature is for you. GDG will now artificially boost the framerate during kinetic scroll on iOS to maintain a smooth experience. This is still experimental, but if feedback goes well we intend to promote this to stable.

    return (
        <DataEditor
            {...otherProps}
            experimental={{
                kineticScrollPerfHack: true,
            }}
        />
    );

🏁 Performance improvements when updating lots of data at once

Damage rendering now is 2x faster than the 5.0 series. This is enabled by reducing the amount of clipping during a damage pass. This improvement is what has made the DOOM easter egg on the main site possible. The easter egg may also be the reason for the improvement...

CleanShot 2024-01-10 at 22 43 12@2x

🌐 UriCell improvements

CleanShot 2024-01-10 at 22 41 10@2x

The URI cell supports drawing an underscore on hovering a URI value via the hoverEffect property. It also supports click events (e.g., to open the URL) via the onUriClick property and uses the displayData within the cell rendering.

⚽️ Add support for rounding radius in the theme

image

Configure the rounding radii of checkboxes, bubbles, skeletons, images, buttons, and other rounded elements via the optional roundingRadius theming property.

🤕 Header menu icons can now be configured

image

Customize the header menu icon via the menuIcon property in GridColumn. It supports triangle for the default menu icon, dots for the three-dots menu icon, or a key of one of the icons passed to the headerIcons prop.

📈 Sparkline cell now supports even more charts

CleanShot 2024-01-10 at 22 37 25@2x

The line graphKind got renamed to area. The new line chart now renders just a simple line chart. Additionally, the x-axis can be hidden via hideAxis.

🥶 Freeze trailing rows

CleanShot 2024-01-10 at 22 36 58@2x

Get going by specifying the number of freeze trailing rows you want.

    return (
        <DataEditor
            {...otherProps}
            freezeTrailingRows={2}
        />
    );

💀 LoadingCell skeletons

CleanShot 2024-01-10 at 22 34 25@2x

The loading cell can be configured to show skeletons when skeletonWidth is set to a value > 0. The height can be configured via the optional skeletonHeight property, and it also supports a randomized variability applied to the width via skeletonWidthVariability.

⌨️ Fully remappable keybindings

Keybindings can now be remapped instead of just turned off and on. More details here.

🪤 Focus trapping

There is now a trapFocus prop that will cause the grid to prevent focus leaving the grid during caret browsing or pressing tab.

🙅‍♀️ Prevent column reordering

Reordering of columns can now be prevented as new column locations are proposed using the new onColumnProposeMove callback. This allows for greater control over where users are allowed to drag columns.

💾 Copy and paste methods now available

The copy and paste functionality of the data grid is now exposed for direct usage by developers.

🌲 Tree view cell

image

This cell represents the basic building block required to make collapsable and groupable rows. We will continue to improve support for row grouping in the rest of the 6.0.0 series.

⬇️ Dropdown cell improvements

Allow specifying label and value independently in dropdown cell and some other visual improvements.

🚀 Improvements

💍 Improved drawing of highlight and selection rings

When the selection ring or a highlight ring is at the right or bottom edge of the grid it will no longer be clipped out.

🦏 Safari performance improvements

Safari now renders around 2 to 5 times faster on mobile devices. Less hitching, better grids, papa johns.

🔦 Large highlight region support

Prior to 6.0.0 large highlight regions could cause excessively slow drawing performance. This is no longer a problem.

🔍 Search no longer renders eagerly

Don't use the search? No problem. You no longer pay the penalty for something you don't need.

🏁 Mouse hover render reduction

Hovering with the mouse no longer results in excessive react rendering.

👓 Hover interactions now can discern blank spots of grid from outside of grid

More details here: #811

↔️ Resize column indicator

image

There is a new column resize indicator. It can be configured via the resizeIndicatorColor theme property.

☕️ Fill handle improvements

  • Controllable selection behavior
  • FillPattern support
  • Larger fill handle click region
  • New visual representation

CleanShot 2024-01-10 at 23 10 57@2x

🔲 Get the bounds of the entire scroll area

If getBounds get called with col and row as undefined, the bounding box of the entire data grid scroll area is returned.

🔚 Odds and ends

  • GDG now prefixes most of the css classes it uses to avoid conflicting with commonly used names.
  • Page up and down keybindings are now on by default

🐞 Bug Fixes

  • onDelete now properly called when doing a cut operation.
  • Fixed a crasher caused by attemping to draw negative radius arcs.
  • Fix a bug where getBounds would compute for the wrong cell.
  • Fixed multiple bugs where strict mode would be violated
  • Horizontally center bubble cell editor to align with cell rendering.
  • Fix copy escaping for array values.
  • Fix issues with paste logic.
  • Fix text cell editor color in Safari.
  • Fix jittering issue with grow columns.
  • Use the configured padding for measuring of number, row-id, dropdown and date-picker cells.
  • Fix sparkline chart error related to arrays with less than 3 values.

Merge blockers

jassmith and others added 7 commits January 9, 2024 21:50
* Make menu icon configurable

* Cleanup

* More cleanup

* Changed order

* Add to story

* Add to story

* Remove icons
* Add rounding radius theme property

* Fix button cell

* More updates

* Fix drilldown radius

* Cleanup cell
lukasmasuch and others added 2 commits January 11, 2024 09:43
* Use accentLight color for resize indicator

* Blend with bgCell
* Fix sparkline cell with two values

* Minor change
@lukasmasuch
Copy link
Collaborator

@jassmith I did another round of testing, and only came across one aspect that is a bit unexpected:

Screen.Recording.2024-01-12.at.01.32.41.mov

These borders when updating or changing cells are probably not expected? But not sure why this happens, I'm not able to reproduce this in the glide-data-grid storyboard

Copy link
Collaborator

@lukasmasuch lukasmasuch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything else looks great 👍

@jassmith
Copy link
Contributor Author

It is reproducable on the Small Editable Grid story

@jassmith
Copy link
Contributor Author

Fixed

@jassmith jassmith merged commit 131deae into main Jan 13, 2024
6 checks passed
lukasmasuch added a commit to streamlit/streamlit that referenced this pull request Mar 1, 2024
## Describe your changes

Glide-data-grid had a [major update](glideapps/glide-data-grid#810).
This PR updates to this version and adapts the implementation for all the
breaking/updated features. This update fixes a variety of issues (see list below).
 
## GitHub Issue Link (if applicable)

Closes #6900
Closes #7032
Closes #7727
Closes #6810
Closes #7930
Closes #7949
Closes #7831
Closes #8168

## Testing Plan

- Updated tests

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
zyxue pushed a commit to zyxue/streamlit that referenced this pull request Apr 16, 2024
## Describe your changes

Glide-data-grid had a [major update](glideapps/glide-data-grid#810).
This PR updates to this version and adapts the implementation for all the
breaking/updated features. This update fixes a variety of issues (see list below).
 
## GitHub Issue Link (if applicable)

Closes streamlit#6900
Closes streamlit#7032
Closes streamlit#7727
Closes streamlit#6810
Closes streamlit#7930
Closes streamlit#7949
Closes streamlit#7831
Closes streamlit#8168

## Testing Plan

- Updated tests

---

**Contribution License Agreement**

By submitting this pull request you agree that all contributions to this
project are made under the Apache 2.0 license.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants