slickgrid-react

Slickgrid-React is a wrapper of the lightning fast & customizable SlickGrid datagrid, it also includes multiple Styling Themes

MIT License

Downloads
2.7K
Stars
28

Bot releases are visible (Hide)

slickgrid-react - v5.0.2 Latest Release

Published by github-actions[bot] 6 months ago

5.0.2 (2024-05-12)

Bug Fixes

  • small styling issues & better primary color support w/Dark Mode (#345) (bfaaf21)
slickgrid-react - v5.0.0

Published by github-actions[bot] 6 months ago

5.0.0 (2024-05-10)

New Major 5.0 Release

This new release brings a lot of changes oriented toward better UI/UX, our SVG icons are now pure CSS and can be colorized like any other text via the native CSS color property (which helps a lot to improve the Dark Mode Theme).

Another noticeable UI change is the migration of the date picker from Flatpickr to Vanilla-Calendar-Pro, this library is ESM, it has modern styling and an awesome UI/UX. Another change that is mostly internal but is also indirectly connected to the date picker is the migration from MomentJS to Tempo which is modern and is also packaged as ESM which is great for Tree Shaking.

Follow the Migration to 5.0 for all the changes

⚠ BREAKING CHANGES

  • pure SVG icons, Moment to Tempo, Flatpickr to Vanilla-Calendar (#343)
  • make DOMPurify as optional (#335)
  • migrate from Moment to Tempo (#334)
  • remove Font-Awesome and use new SVG icons (#331)
  • migrate from Flatpickr to Vanilla-Calendar (#333)

Features

  • migrate from Flatpickr to Vanilla-Calendar (#333) (41254f2)
  • make DOMPurify as optional (#335) (41c1c2f)
  • migrate from Moment to Tempo (#334) (da29dd1)
  • pure SVG icons, Moment to Tempo, Flatpickr to Vanilla-Calendar (#343) (a27125c)
  • remove Font-Awesome and use new SVG icons (#331) (7cb3670)

Bug Fixes

  • we shouldn't always commit on focusout/blur (#332) (aab435b)

Installation

Please remember that all packages of @slickgrid-universal (v5.0.0) and Slickgrid-React (v5.0.0) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

also remember that Slickgrid-Universal monorepo is where the biggest portion of the code exists (~90%), so most of the commits are now happening on that side.

  1. review the Slickgrid-Universal changelog
  2. and the Slickgrid-React changelog (above)
slickgrid-react - v4.7.1

Published by github-actions[bot] 6 months ago

4.7.1 (2024-05-10)

Bug Fixes

  • we shouldn't always commit on focusout/blur (#332) (aab435b)
slickgrid-react - v4.7.0

Published by github-actions[bot] 6 months ago

4.7.0 (2024-04-20)

Quick Info

This new release adds 2x new grid options defaultEditorOptions and defaultFilterOptions so that user can define global Editor/Filter options instead of having to duplicate same options on each column editorOptions/filterOptions. An example is shown below.

  • Note: for defaultFilterOptions, we use the same keys as the Editor (date, select, slider, ...) but please note that these 3 filters options have combined options into 1 prop for compound & range filters (e.g. date is for both compoundDate and dateRange filter options).
this.gridOptions = {
  defaultEditorOptions: { 
    autocompleter: { debounceWaitMs: 150 }, // auto-typed as AutocompleterOption
    date: { minDate: 'today' },
    longText: { cols: 50, rows: 5 } 
  }
}

Features

  • add global defaultEditorOptions & defaultFilterOptions (#326) (317e4e0)
slickgrid-react - v4.6.3

Published by github-actions[bot] 7 months ago

4.6.3 (2024-04-01)

Quick Info

This release will now work with multiple tooltips on the same cell (e.g. multiple buttons with icons like the "Action" column in Example 35).

Bug Fixes

  • allow multiple tooltips per grid cell (#318) (99d783a)
  • revisit package exports to pass "are the types wrong" (#314) (62ea969)

Installation

Please remember that all packages of @slickgrid-universal (v4.6.1) and Slickgrid-React (v4.6.1) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

slickgrid-react - v4.6.2

Published by github-actions[bot] 7 months ago

4.6.2 (2024-03-23)

Quick Info

This release upgrades multiple-select-vanilla package, that I also maintained, with a much modern UI with the use of SVG icons. The SVG icons in that new select lib are now also written in pure CSS which helps for Dark Mode. Note however that the SVG icons are not yet pure CSS since that would introduce breaking changes in Slickgrid-Universal (a new major version will be pushed later to address that).

Bug Fixes

  • Filter model is now FilterConstructor and shouldn't be newed (#310) (5f3f765)
  • hide Toggle Dark Mode from Grid Menu by default (#308) (074f07e)

Features

  • rename SG editorClass & deprecate internalColumnEditor (#309) (47ffd2f)

Bug Fixes

slickgrid-react - v4.6.0

Published by github-actions[bot] 7 months ago

4.6.0 (2024-03-23)

Quick Info

This release upgrades multiple-select-vanilla package, that I also maintained, with a much modern UI with the use of SVG icons. The SVG icons in that new select lib are now also written in pure CSS which helps for Dark Mode. Note however that the SVG icons are not yet pure CSS since that would introduce breaking changes in Slickgrid-Universal (a new major version will be pushed later to address that).

Bug Fixes

  • Filter model is now FilterConstructor and shouldn't be newed (#310) (5f3f765)
  • hide Toggle Dark Mode from Grid Menu by default (#308) (074f07e)

Features

  • rename SG editorClass & deprecate internalColumnEditor (#309) (47ffd2f)
slickgrid-react - v4.5.0 - Dark Mode

Published by github-actions[bot] 8 months ago

4.5.0 (2024-03-05)

Dark Mode 🎉

This is probably a UX change that many people will be happy to receive, however there are important things to note as shown below.

  • Dark Mode must be enabled via a darkMode grid option, it will not auto-detect the color scheme from the browser (you can however easily do it yourself). There couple of reasons as to why that is a grid option, it mostly relate to the fact that a few features require creating certain DOM Elements that are appended to the body (e.g. ColumnPicker, GridMenu, LongTextEditor, CompositeEditorModal, ...) and that requires extra code in place that SlickGrid will take care of it for you and for that reason it cannot be simple CSS classes.
  • SVG icon color are using a lighter gray by default, if you're using a Font family for the icons then that won't affect you however keep reading. As mentioned earlier, the SVG icons are using a light gray and that is because the same color must be used for both Light & Dark theme because at the moment the project will create the SVG with a fixed color defined in SASS and once it is set, then it cannot change... oh but can that be fix in the future? The answer is Yes, I did find that we can convert all SVG to pure CSS (using UnoCSS, by AntFu) approach but that will introduce some breaking change and considering that I recently released a major version, I will wait couple more months to proceed. Part of the breaking change will be to drop support for Fonts and keep only SVGs.
  • the Dark Mode Theme was created using CSS variables, you might need to tweak some of these variables depending on your primary color, see Slickgrid-Universal CSS variables
  • for more info read the Dark Mode documentation
  • you can see Dark Mode demo in Example 1, Example 24 and Example 30. All of these examples have a Toggle Light/Dark Mode button and the Example 1 also has the extra browser auto-detect Dark Mode which is then provided to the 1st grid.

Also worth knowing that I also improved multiple-select-vanilla by adding a new feature to replace tabIndex by arrow navigation highlight. This feature will let you use the keyboard (up/down arrows) to navigate the select options and choose any of them (via Enter key) and all of that without losing your current focus (which is tabIndex did not provide). This new feature should be a lot more UX friendly.

Bug Fixes

  • add extra conditions to help strict mode (#302) (8b4d1f6)
  • remove width style on grid container for CSP safe (#306) (529abab)

Features


Installation

Please remember that all packages of @slickgrid-universal (v4.5.0) and Slickgrid-React (v4.5.0) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

slickgrid-react - v4.4.1

Published by github-actions[bot] 9 months ago

4.4.1 (2024-02-13)

Quick Info (Excel Export)

this new release is mainly targeting @slickgrid-universal/excel-export 🚀

We are migrating from excel-builder.js to a new fork Excel-Builder-Vanilla, the approach is a very similar to what I have done previously with multiple-select-vanilla and it is all about modernizing the project. This migration brings a lot of goodies by using this new Excel-Builder-Vanilla, it was rewritten in TypeScript, dropped Q (replaced by regular Promise), dropped Lodash (now uses native code) and finally replaced JSZip with fflate which itself also has an ESM build giving us Tree Shaking and it is also giving us better perf by using Web Workers (when using CSP, you might need to adjust your CSP rules). Why the switch? The reason is mainly to be ESM ready because technologies are evolving and ESM is really the future (the next release of ViteJS is also expected to drop CJS (CommonJS) support). The switch has other benefits too, the most noticeable one being the large build size decrease (that is because we dropped Q and Lodash).

You might be wondering, why not switch to a more popular library like SheetJS or ExcelJS? Well, believe or not, all these projects are still written as CJS with no foreseeable support to ESM builds. For that reason you cannot take advantage of proper Tree Shaking which mean that whoever uses these projects, are in fact downloading their entire (large) library and all their dependencies. We certainly don't need all of these features in here since all we need is to export to Excel and this is what Excel-Builder-Vanilla is giving us in an ESM build and it is also extremely small since it's only targeting Excel file creation. 🏗️

Below are the migrating advantages to Excel-Builder-Vanilla

  • rewritten in TypeScript (providing us with TS Types (d.ts)
  • dropped old dependencies that are no longer necessary (Q and Lodash)
  • switched from JSZip to fflate (has ESM support with Tree Shaking and also better perf by using Web Workers)
  • big decrease in final build size (our standalone build (.zip), used in Salesforce, dropped by 9.9%)

No breaking change, the changes required were all internal and are totally transparent to the developers because the API is exactly the same as before, the only difference will be your build size decrease ;)

For a very customized view of what you can do with Excel-Builder, take a look at the Slickgrid-Universal Example 2, try to group by any column and then Export to Excel to see the very customized Excel output.

Note that if you had a JSZip path defined in your tsconfig.json, you can now remove it. that is because we migrated to fflate and it doesn't require any special config.

{
  "compilerOptions": {
-    "paths": {
-      "jszip": [
-        "node_modules/jszip/dist/jszip.min.js"
-      ]
-    }
  }
}

Bug Fixes

  • update to latest Slickgrid-Universal v4.4.1 (e06f669)
  • demo: change trading demo full screen z-index lower than ms-select (7761265)

Features

  • ExcelExport: migrate to Excel-Builder-Vanilla (ESM) (#297) (87226d0)

Installation

Please remember that all packages of @slickgrid-universal (v4.4.1) and Slickgrid-React (v4.4.1) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

slickgrid-react - v4.4.0

Published by github-actions[bot] 9 months ago

4.4.0 (2024-02-13)

Quick Info (Excel Export)

this new release is mainly targeting @slickgrid-universal/excel-export 🚀

With this release, we are migrating from excel-builder.js to a new fork Excel-Builder-Vanilla, the new repo is a very similar approach to what I have done previously with multiple-select-vanilla and it is all about modernizing the project. This migration brings a lot of goodies by using Excel-Builder-Vanilla, we now have an ESM build, it was rewritten in TypeScript, dropped Q (replaced by regular Promise), dropped Lodash (now uses native code) and finally replaced JSZip with fflate which also has an ESM build giving us Tree Shaking and it is also giving us better perf by using Web Workers (when using CSP, you might need to adjust your CSP rules). Why the switch? The reason is mainly to be ESM ready because technologies are evolving and ESM is really the future (the next release of ViteJS is also expected to drop CJS (CommonJS) support). The switch has other benefits too, the most noticeable one being the large build size decrease (because we dropped Q and Lodash).

You might be wondering, why not switch to a more popular library like SheetJS or ExcelJS? Well believe or not, these projects are still written as CJS with no foreseeable support to ESM builds and for that reason you cannot take advantage of proper Tree Shaking which mean that whoever uses these projects, are in fact downloading their entire (large) library and all their dependencies. We certainly don't need all of these features in here, the only thing we are interested is to create and export an Excel file and our new Excel-Builder-Vanilla is not only ESM ready but is also extremely small since it's only targeting Excel file creation. 🏗️

Below are the migrating advantages to Excel-Builder-Vanilla

  • rewritten in TypeScript (providing us with TS Types (d.ts)
  • dropped old dependencies that are no longer necessary (Q and Lodash)
  • switched from JSZip to fflate (has ESM support with Tree Shaking and also better perf by using Web Workers)
  • big decrease in final build size (our standalone build (.zip), used in Salesforce, dropped by 9.9%)

No breaking change, the changes required were all internal and are totally transparent to the developers because the API is exactly the same as before, the only difference will be your build size decrease ;)

For a very customized view of what you can do with Excel-Builder and Slickgrid-Universal, take a look at the Slickgrid-Universal Example 2, try to group by any column and then Export to Excel to see the very customized Excel output.

Note that if you had a JSZip path defined in your tsconfig.json, you can now remove it. that is because we migrated to fflate and it doesn't require any special config.

{
  "compilerOptions": {
-    "paths": {
-      "jszip": [
-        "node_modules/jszip/dist/jszip.min.js"
-      ]
-    }
  }
}

Bug Fixes

  • demo: change trading demo full screen z-index lower than ms-select (7761265)

Features

  • ExcelExport: migrate to Excel-Builder-Vanilla (ESM) (#297) (87226d0)
slickgrid-react - v4.3.1

Published by github-actions[bot] 9 months ago

4.3.1 (2024-01-27)

Performance Improvements

  • decrease number of calls to translate all extensions only once (#290) (89ddb41)
slickgrid-react - v4.3.0

Published by github-actions[bot] 9 months ago

4.3.0 (2024-01-21)

Quick Info

This release brings some great new features, the most interesting one was contributed by @zewa666 which is a new Row Base Editing. The Row Based Edit plugin allows you to edit either a single or multiple specific rows at a time, while disabling the rest of the grid rows. See our new Example 35

Another great but smaller feature is a new reorderable column option to help lock a column in place (for more info see Slickgrid-Universal PR which include a small animated gif of the feature). Note that this feature is better when used with column position as first or last columns in the grid.

⚠️ Warnings

I did add and set reorderable: false to the following 4 plugins, they can all be overriden when instantiating the plugin via their respective options

  • Checkbox Selector Column (Row Selection)
  • Row Detail
  • Row Move Manager
  • Row Base Editor

Features

Performance Improvements

  • resizer: autosizeColumns is called too many times on page load (#283) (329555f)

Installation

Please remember that all packages of @slickgrid-universal (v4.3.0) and Slickgrid-React (v4.3.0) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

slickgrid-react - v4.2.0

Published by github-actions[bot] 10 months ago

4.2.0 (2023-12-30)

Quick Info

This release brings some perf improvements and also completes the CSP Safe implementation, there was 1 last DataView function that was not yet converted to be CSP Safe and now it is (don't forget to use the new useCSPSafeFilter if you also use the DataView). There is also a new CSP Compliance documentation that you can read.
Lastly a few other small features and fixes were pushed, see below. Happy Holidays 🎁


Features

  • update Slickgrid-Universal with perf improvements (#279) (a157905)

Installation

Please remember that all packages of @slickgrid-universal (v4.2.0) and Slickgrid-React (v4.2.0) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

slickgrid-react - v4.1.0

Published by github-actions[bot] 10 months ago

4.1.0 (2023-12-21)

Bug Fixes

Features

  • reimplement highlight row, node-extend & fix few issues (#275) (e29842a)

Installation

Please remember that all packages of @slickgrid-universal (v4.1.0) and Slickgrid-React (v4.1.0) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

slickgrid-react - v4.0.2

Published by github-actions[bot] 11 months ago

4.0.2 (2023-12-16)

⚠️ BREAKING CHANGES

  • migrate to Slickgrid-Universal v4.0 new major version (#269) (e3b71e7)

Quick Info

This new release is merging SlickGrid into the Slickgrid-Universal project and is dropping the previous external 6pac/slickgrid dependency. The aim of this release is to be standalone, improve best practices & move towards CSP compliance while also making the project leaner. Merging SlickGrid into the Slickgrid-Universal project has a few benefits, the biggest are (easier to troubleshoot, we can drop unused code, deduplicate code like DOM utils, decrease external dependencies usage).

Another great feature in conjunction with this release is a new Documentation website powered by GitBook. This should be more pleasing to read and also easier to receive documentation changes (note that because of the changes from Wiki to GitBook, some of the links might be invalid, please contribute PRs if you find any).

Read the Migration to 4.0 for all the changes

Bug Fixes

  • deps: update all Slickgrid-Universal dependencies (0795026)
  • regression from PR #262, read external resource when required (dcf01e4)

Installation

Please remember that all packages of @slickgrid-universal (v4.0.3) and Slickgrid-React (v4.0.2) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

slickgrid-react - v4.0.1

Published by github-actions[bot] 11 months ago

4.0.1 (2023-12-15)

slickgrid-react - v3.6.5 - invalid version

Published by github-actions[bot] 11 months ago

3.6.5 (2023-12-15)

THIS IS AN INVALID VERSION - Release-it made a totally invalid bump recommendation and thought it was a minor version even though I had a BREAKING CHANGE PR.

Please ignore this version, it was supposed to be v4.0

slickgrid-react - v3.6.4 - deprecated Formatters

Published by github-actions[bot] 11 months ago

3.6.4 (2023-12-13)

Please note that multiple built-in Formatters are now deprecated and will be removed in the next major version (which is coming very soon). Below is the list of Formatters and their alternatives with code sample on what to change. Note that the CSS class may vary depending on which UI framework you use.

Formatter removed cssClass equivalent alternative
Formatters.bold cssClass: 'text-bold' or fw-bold
Formatters.center cssClass: 'text-center'
Formatters.italic cssClass: 'text-italic' or fst-italic
Formatters.alignRight cssClass: 'text-right' or text-end
Formatters.lowercase cssClass: 'text-lowercase'
Formatters.uppercase cssClass: 'text-uppercase'
Formatters.fakeHyperlink cssClass: 'text-underline cursor' cssClass: 'fake-hyperlink'
Formatters.checkbox to be removed use the Formatters.iconBoolean
Formatters.deleteIcon to be removed use the Formatters.icon (see below)
Formatters.editIcon to be removed use the Formatters.icon (see below)
Formatters.infoIcon to be removed use the Formatters.icon (see below)
Formatters.yesNo to be removed create a custom Formatter

The alternative is to use cssClass as shown below

this.columnDefinitions = [
  { 
    id: 'firstName', name: 'First Name', field: 'firstName',
-   formatter: Formatters.bold
+   cssClass: 'text-bold'
  },
  { 
    id: 'lastName', name: 'Last Name', field: 'lastName',
-   formatter: Formatters.multiple, params: { formatters: [Formatters.uppercase, Formatters.bold] },
+   cssClass: 'text-uppercase text-bold'
  },
  {
    id: 'deleteIcon', name: '', field: '',
-   formatter: Formatters.deleteIcon, 
    // NOTE: we previously accepted "icon" and "formatterIcon" property in the past but these props will be removed
+   formatter: Formatters.icon, params: { iconCssClass: 'fa fa-trash pointer' }
  },
];

Installation

Please remember that all packages of @slickgrid-universal (v3.7.2) and Slickgrid-React (v3.6.4) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

please remember that Slickgrid-Universal monorepo contains the biggest portion of the code (~90%), so most of the commits are now happening on that side.

  1. review the Slickgrid-Universal changelog
  2. and the Slickgrid-React changelog (above)

Bug Fixes

  • devMode can be false/object & use !important on text CSS utils (#270) (66576ee)
slickgrid-react - v3.6.3 - deprecated Formatters

Published by github-actions[bot] 11 months ago

3.6.3 (2023-12-08)

Please note that multiple built-in Formatters are now deprecated and will be removed in the next major version (which is coming very soon). Below is the list of Formatters and their alternatives with code sample on what to change. Note that the CSS class may vary depending on which UI framework you use.

Formatter removed cssClass equivalent alternative
Formatters.bold cssClass: 'text-bold' or fw-bold
Formatters.center cssClass: 'text-center'
Formatters.italic cssClass: 'text-italic' or fst-italic
Formatters.alignRight cssClass: 'text-right' or text-end
Formatters.lowercase cssClass: 'text-lowercase'
Formatters.uppercase cssClass: 'text-uppercase'
Formatters.fakeHyperlink cssClass: 'text-underline cursor' cssClass: 'fake-hyperlink'
Formatters.checkbox to be removed use the Formatters.iconBoolean
Formatters.deleteIcon to be removed use the Formatters.icon (see below)
Formatters.editIcon to be removed use the Formatters.icon (see below)
Formatters.infoIcon to be removed use the Formatters.icon (see below)
Formatters.yesNo to be removed create a custom Formatter

The alternative is to use cssClass as shown below

this.columnDefinitions = [
  { 
    id: 'firstName', name: 'First Name', field: 'firstName',
-   formatter: Formatters.bold
+   cssClass: 'text-bold'
  },
  { 
    id: 'lastName', name: 'Last Name', field: 'lastName',
-   formatter: Formatters.multiple, params: { formatters: [Formatters.uppercase, Formatters.bold] },
+   cssClass: 'text-uppercase text-bold'
  },
  {
    id: 'deleteIcon', name: '', field: '',
-   formatter: Formatters.deleteIcon, 
    // NOTE: we previously accepted "icon" and "formatterIcon" property in the past but these props will be removed
+   formatter: Formatters.icon, params: { iconCssClass: 'fa fa-trash pointer' }
  },
];

Bug Fixes

  • registered external resouces should keep singleton ref (#262) (14703df)

Features

  • introduce devMode to support nodejs based unit testing (#267) (fff7e22)

Installation

Please remember that all packages of @slickgrid-universal (v3.7.1) and Slickgrid-React (v3.6.3) must be updated at the same time and they will always get bumped on the same day to avoid any upgrade issues.

please remember that Slickgrid-Universal monorepo contains the biggest portion of the code (~90%), so most of the commits are now happening on that side.

  1. review the Slickgrid-Universal changelog
  2. and the Slickgrid-React changelog (above)
slickgrid-react - v3.6.2

Published by github-actions[bot] 11 months ago

3.6.2 (2023-12-08)

Bug Fixes

  • registered external resouces should keep singleton ref (#262) (14703df)