BREAKING CHANGE - 4.0.0 major version (Ivy only)
⚠ BREAKING CHANGES (Ivy only & Slickgrid-Universal 1.x)
Follow the Migration Guide 4.x
Breaking Changes
- Ivy only build with Angular 13+ (no more UMD bundle, IE is officially out of the picture)
- Slickgrid-Universal 1.x major (and stable) release, it has some Breaking Changes but should be transparent for must developers that is if you are using the default CSS theme.
If however, you use a lot of SlickGrid SASS variables (all of them were renamed to add a $slick-
prefix). If you also use a lot of the SlickGrid CSS classes directly for any of the menu plugins then you will also be impacted. in any case please review the Migration Guide 4.x
Biggest Internal Change (full SlickGrid controls/plugins rewrite)
The biggest internal change made in the lib for this version was to rewrite all of the SlickGrid controls/plugins into Slickgrid-Universal and that took a few months. Prior to this release, all of these controls/plugins were using what we can call bridges or wrappers (e.g. we had gridMenuExtension.ts
for the Grid Menu that was pointing to the 6pac/SlickGrid/controls/slick.gridmenu.js
with a bridge so that the lib could add our custom list of commands like "Clear Filters, "Clear Sorting", etc... that didn't exist in the core repo) now with the rewrite we can say goodbye to the bridges and we now only have 1 file which got renamed to common/extensions/slickGridMenu.ts
. So what I did was to move them all into the lib but also rewrite all the jQuery code as plain JavaScript (or I should say TypeScript) and add proper unit tests for all of that.
You might ask... Does that mean we can get rid of jQuery? The answer is unfortunately still No, but we are closer than before (I would say about 60% of SlickGrid is now in plain JS code, prior to this release it was probably around 30%). What is coded in plain JS at this point are: all Editors, Filters, Controls & Plugins (there are some exceptions like AutoComplete Editor & DraggableGrouping which require jQueryUI). SlickGrid itself (and its DataView) are also still written in jQuery and that will take a lot of effort to convert.
Also with the rewrite comes a full set of new unit test suites (over 500+ new tests) and a bunch of new E2E tests (Cypress). This will now be a lot easier to maintain and we won't need to wait for a new release in both SlickGrid repo and this repo to take advantage of plugin changes & extra features. Another great thing about the rewrite is that there were a lot of duplicate code in SlickGrid plugins because every plugins had to be written as standalone (e.g. CellMenu and ContextMenu are to a very high proportion the same 1000 lines of code with the only small difference of what event is triggered to open the menu, the rest is the same), but with the rewrite in here, I removed all the duplicate code and merged a lot of independent CSS classes (that is the change that might impact you if you're using the default theme, so keep reading).
Some of the main changes
- full controls/plugins rewrite in plain JS/TS with full unit test suites
- reconciled a lot of duplicate code for all menu plugins
- reconciled all the menu plugins CSS classes, (headerMenu, cellMenu, contextMenu, ...)
- if you use SASS variables or CSS directly this might impact you
- I imagine that we probably also have a smaller bundle size (but untested, see for yourself)
- there are also styling & features improvements with all the rewrite
- you can now use both HeaderMenu and HeaderButtons on the same grid, see Example 7
Minimum Requirement Changes
- Angular-Slickgrid
>= 13.0.0
- ngx-translate
>= 14.0.0
- TypeScript
>= 4.4.5
- RxJS
>=7.4.0
Installation
Please remember that all packages of @slickgrid-universal
(v1.1.x
) must be updated at the same time as Angular-Slickgrid
(v4.0.0
), they will always get bumped on the same day to avoid any upgrade issues.
Enjoying the lib?
Make sure to upvote ⭐ and/or Buy Me a Coffee ☕ ... and if you already have, well thank you 😺
Cheers and Happy Coding 👨💻
Changelog 📜
For a complete picture, you should take a look at both lib change logs
please remember that Slickgrid-Universal monorepo now contains the biggest portion of the code (~90%), so most of the commits are now happening on that side.
- review the Slickgrid-Universal changelog
- and the Angular-Slickgrid changelog (below)
⚠ BREAKING CHANGES
- upgrade to Slickgrid-Universal official 1.x major version
- upgrade Angular 13 using Ivy build without UMD bundles
Features
- plugins: use new internal slickgrid-universal plugins (9ef4651)