Skip to content

BREAKING CHANGE - Official 1.x Release

Compare
Choose a tag to compare
@ghiscoding ghiscoding released this 11 Dec 00:33
· 1831 commits to master since this release

⚠ BREAKING CHANGES - First Official Stable Release 🚀🎉🎁🎄

Follow the Migration Guide 1.x

Breaking Changes

This new release has some Breaking Changes but should be transparent for must developers if you use 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 1.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 13

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 👨‍💻


Features

  • build: create salesforce-vanilla-bundle standalone package (214d8e7)
  • controls: add minHeight option to ColumnPicker/GridMenu (cfcfc85)
  • controls: convert and add ColumnPicker into Slickgrid-Universal (1f937b9)
  • controls: move external Grid Menu into Slickgrid-Universal (40adff4)
  • core: add TS utility to infer extension instance by name (3f4f65f)
  • plugins: add all Cell Range/Selection plugins into Universal (3b4ddca)
  • plugins: add extra callback methods to checkbox selector (#570) (a9245f9)
  • plugins: add Row Detail plugin final code & tests (045ea6d)
  • plugins: make it possible to use both Header Button/Menu together (965bd58)
  • plugins: move Checkbox and Row Selection plugins to universal (06f0ab1)
  • plugins: move external Cell Menu into Slickgrid-Universal (6f34c10)
  • plugins: move external cell related plugins to universal (11e15d8)
  • plugins: move external Context Menu into Slickgrid-Universal (2170bb4)
  • plugins: move external Draggable Grouping into Slickgrid-Universal (8e6eb48)
  • plugins: move external GroupItemMetataProvider into Universal (8f18c7d)
  • plugins: move external Header Button into Slickgrid-Universal (69711ad)
  • plugins: move external Header Menu into Slickgrid-Universal (aeba480)
  • plugins: move Row Detail View plugin to universal (9700ff4 / fb327a6)
  • plugins: move Row Move Manager plugin to universal (b19b2ed)
  • plugins: replace AutoTooltips Extension by plugin (80df14d)
  • plugins: show bullet when command menu icon missing (cbe580a)
  • selection: add caller property to onSelectedRowsChanged event (cc5f4ae)
  • utils: replace ext lib assign-deep by local deepMerge util (2f56bd3)

Bug Fixes

  • build: add DOM purify optional default import to fix rollup builds (73bc3c0)
  • build: DOMPurify import fix for all framework (c551d0c)
  • comp: replace prepend not supported in IE/Salesforce (b210f9d)
  • comp: replace prepend not supported in IE/Salesforce (13bd9a4)
  • context: remove fixed width on ContextMenu use auto instead (403679b)
  • context: strip hidden special chars on context menu Copy command (5d81644)
  • context: strip hidden special chars on context menu Copy command (f94ca83)
  • docs: fix a typo in readme to force push a release (00eba2e)
  • filters: remove Filters from DOM after header row gets destroyed (3f08162)
  • locales: add missing text & remove global config texts fix Locales (655a872)
  • plugin: Copy command from Context Menu should work with numbers (9d36491)
  • plugin: providing usability override via grid option should work (6446a10), closes #555
  • plugins: remove invalid export for build to work (9353022)
  • styling: better support of auto width on drop menu (8a48dd2)
  • styling: Grid Menu Title not aligned correctly with Bootstrap (e2b991f)
  • styling: slightly off Autocomplete position (cd03f67)
  • styling: tweak & fix all styling with Salesforce & other frameworks (86dbb76)
  • tree: reset to initial tree sort when calling "Clear all Sorting" (8bd3f4f)
  • treeGrid: Bug in onCellClick event (42155af)