Skip to content

Releases: ghiscoding/slickgrid-universal

v1.2.6

19 Mar 05:46
Compare
Choose a tag to compare

1.2.6 (2022-03-19)

Bug Fixes

  • core: use latest Flatpickr version to fix leak in it (0f68f51)

v1.2.5

06 Mar 04:03
Compare
Choose a tag to compare

1.2.5 (2022-03-06)

Bug Fixes

  • utilities: check if the normalize function exists (00c1c92)

v1.2.4

15 Feb 00:03
Compare
Choose a tag to compare

1.2.4 (2022-02-15)

Bug Fixes

  • core: rollback node/npm minimum engine versions (7fcaecd)

v1.2.3

14 Feb 23:01
Compare
Choose a tag to compare

1.2.3 (2022-02-14)

Bug Fixes

  • core: deleting Slicker object caused issue with cache (3f3e261), closes #606
  • editors: select editor should call save only once (d111c2f)
  • resizer: use default resize when resizeByContent has no data (8499b61)
  • selections: selected rows doesn't update when hidden column shown (0d1cf29), closes #661
  • styling: add pointer cursor on ms-filter, avoid Bootstrap override (11e1e12)

Selection Auto-Scroll, OData select/expand and Filters Modal

06 Jan 21:55
Compare
Choose a tag to compare

This new version brings a few new features and contributions, the main ones are:

  • Cell/Row Selection Auto-Scroll, a new live Example 17 to demo the feature

  • Row Dragging Auto-Scroll, check Example 7 for a demo (make sure to clear all filters to test this though)

  • All-in-one Filters Modal, see a live demo on Example 7
    image <-- this is just a gif, the real button is in the Example 7 😉

  • OData new $select and $expand options & other OData fixes, see live demo Example 9 and consult updated OData Wiki

  • new Example 18 that demos a Real-Time Trading Platform, it also shows how fast SlickGrid really is.

Big Thanks to Contributors

Huge thanks for the following contributions

Thanks a lot guys 🚀

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

Bug Fixes

  • build: optimize dev watch (ab7d405)
  • demo: latest change with Filter container breaks other demos (129cc78)
  • dev: optimize webpack dev watch (1340c51)
  • filter: add the "filled" class for styling purposes (ea7974a, 4a650cd, abe481e, fc8c899)
  • filter: update multiple-select to fix select filtering (63dcd08), closes #865
  • plugins: Draggable Grouping Toggle All should follow collapsed (7fedfa1)
  • services: unsubscribe shouldn't remove when poping out of array (e841da9)
    • memory: clear & dispose of grid to avoid mem leaks & detached elm (7035db5)
  • graphql: fix range filtering with ".." (b07af88)
  • odata: fix range filtering with ".." (d14d3e9)

BREAKING CHANGE - Official 1.x Release

11 Dec 00:33
Compare
Choose a tag to compare

⚠ 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](https://github.co...
Read more

new Custom Tooltip (plugin)

28 Oct 16:20
Compare
Choose a tag to compare

new Custom Tooltip plugin

This new release brings a new Custom Tooltip plugin (opt-in), it can parse [title] attributes to create regular tooltip or create your own Custom Tooltip via a Custom Formatter. You can also create Custom Tooltip for Column Headers and Column Header-Row (filters).

new Row Move shadow item

When using the Row Move feature, we often forget which row we started the drag/move, so by adding a shadow item (it's simply a clone of the row you're dragging with absolute position that follows the mouse position) and this makes it easier to remind the user which row exactly is being moved. This is a new flag option hideRowMoveShadow that is enabled by default (if you want to use it, then change it to false).

A reminder to everyone, this is an Open Source project and everyone is welcome to contribute (even as small as fixing a typo in a Wiki is welcome). We all gain from contributions.

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

  • plugin: add row move shadow item while moving/dragging row (c665ec8)
  • plugin: create new Custom Tooltip plugin (4c8c4f6)

Bug Fixes

  • make it work with AutoTooltip and extra option to skip it (2f7e4c5)
  • frozen: calling setPinning with empty object/null should clear it (48b11f7)
  • style: remove unnecessary css source map (4e6fc08)
  • styling: cleanup CSS files to ship smaller bundle (69b18bf)
  • tree: Grid State should have Tree Data initial sort (b24ce40)
  • tree: use previous state when refreshing dataset afterward (0982474)

version 0.19.1

  • build: typo on script package name to rename (76cee09)
  • context: strip hidden special chars on context menu Copy command (221c05d)
  • context: when copying use opacity 0 on temp element (3f0896f)
  • export: sanitize any html that could exist in header titles (abdae52)
  • subscriptions: unsubscribe every subscriptions while disposing comp (bf0dcd4)
  • tree: reset to initial tree sort when calling "Clear all Sorting" (984e3a7)

version 0.19.2

  • build: add DOM purify optional default import to fix rollup builds (3bd335d)
  • resizer: use autosize width when total width smaller than viewport (555fb0c)
  • translation: add new UNFREEZE_COLUMNS to fix translation (0010861 / 22ed231)

Tree Data improvements & more...

29 Sep 18:15
Compare
Choose a tag to compare

Tree Data improvements

Tree Data filtering will now include children when the parent item passes its filter criteria, please note that this is different compare to previous version where it would not include children and if you still want the same behavior as before then you can use the new flag excludeChildrenWhenFilteringTree.

2x new options (flags) were created

  • excludeChildrenWhenFilteringTree
  • autoApproveParentItemWhenTreeColumnIsValid (which only work with excludeChildrenWhenFilteringTree: false which is default)
  • animated gif demo

See the update Tree Data - Wiki for these new options and Example 6 for a live demo of all options.

New Grid Option

new grid option ignoreAccentOnStringFilterAndSort to ignore text with accent (like any Latin language) while Filtering/Sorting, see Wiki

Big Thanks for Contributions

A big thanks to

  • @mcallegario for contributing ignoreAccentOnStringFilterAndSort grid option to ignore text with accent (like any Latin language)
  • @jr01 for his contribution to the auto-resize feature which can optionally use the Resizer Observer instead of (or in addition to) the window resize. This auto-resize - Wiki section shows you how to use this technique.

A reminder to everyone, this is an Open Source project and everyone is welcome to contribute (even as small as fixing a typo in a Wiki is welcome). We all gain from contributions.

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

  • context: expose 3 events for Tree/Grouping clear/collapse/expand (317f3ad)
  • pagination: rewrite in vanilla JS make it usable in any framework (0211181)
  • Resizer: add useResizeObserver option (bb33cdd)
  • sorts: option to ignore accent while sorting text (1b4fe81)
  • styling: increase highlight of filters that are filled w/values (8f93534)
  • tree: new excludeChildrenWhenFilteringTree set as new default (47df943)

Bug Fixes

  • comp: replace prepend not supported in IE/Salesforce (f183115)
  • context: Copy Cell via Context Menu shouldn't include Tree symbols (f710084)
  • filters: css "filled" class on filters should also work w/Grid View (e8edae7)
  • resizer: clear pending resizeGrid on dispose (07ed6a0)
  • resizer: only bind autoresize when enabled (ca894c0)
  • styling: List bullets shouldn't show in any frameworks, fixes #487 (53ea537)
  • tree: when Tree Data is filtered then Sort, footer count is invalid (4f5fc44)

Backend Error Handling Improvements & Cancellable Events

09 Sep 20:02
Compare
Choose a tag to compare

Better Backend Error Handling for Filtering, Sorting & Pagination 🚀

As the title says, this new version brings better error handling of error thrown by backend, the biggest change is that if the backend server throws an error the grid will now rollback any changes in the grid (whether it's a Sort, Filter or Pagination change). So the lib now keep a reference of the last successful change and rollback that last status and the backend query string is also rolled back if any error is thrown, so you won't be left out with an unfinished activity.

  • see Example 9 / Example 15 for a demo of that, the last column will always throw while Sorting/Filtering & there's also an extra button to test pagination error.

Cancellable Events for Filtering, Sorting & Pagination

Also in tandem with the previous paragraph, we now also have access to cancellable events (whether it's a Sort, Filter or Pagination change).
See the list below of all 3 possible events with their associated onBeforeX event:

  • Filtering (onBeforeSearchChange)
  • Sorting (onBeforeSort)
  • Pagination (2 events are available depending on the grid type)
    • onBeforePaginationChange (with Backend Service API)
    • onBeforePagingInfoChanged (with Local In-Memory grid)

For example

gridContainerElm.addEventListener('onBeforeSort', (e) => {
  e.preventDefault();
  return false;
});

Enjoying the lib?

Make sure to upvote ⭐ and/or Buy Me a Coffee ☕ ... and if you already have, well thanks 😺

Cheers and Happy Coding


Features

  • aggregators: add better TS typing for all Aggregators (1518d6a)
  • backend: add cancellable onBeforeSearchChange & revert on error (b26a53d)
  • backend: add cancellable onBeforeSort & revert sort on error (958f823)
  • backend: add cancellable Pagination change & revert on error (7a8d903)
  • composite: move SlickGrid Composite Editor factory into universal (c813cea)
  • editors: add Ctrl+S combo to enhance LongText (textarea) Editor (5116bbd)
  • filters: option to ignore accent while filtering text, closes #470 (cba9a4e)
  • sanitize: make sure any string sent to innerHtml are sanitized (fe55046)
  • styling: only show header menu caret when hovering (41e7856)
  • tree: add dynamicallyToggledItemState method to toggle parent(s) (26369f9)

Bug Fixes

  • bundle: don't assume slickgrid/dataview are always defined (0505713)
  • composite: calling Edit change shouldn't affect Mass-Update (0ae2a90)
  • core: potential event binding leaks not all removed when disposing (3e61712)
  • filters: IN_CONTAINS should be sanitized when used with html (961d8fd)
  • filters: remove Filters from DOM after header row gets destroyed (b08d4ba)
  • footer: use getFilteredItemCount to show correct count, fix #469 (963235c)
  • grouping: Draggable Grouping should clear preheader when called (37811a5)
  • resizer: regression introduced by #462 for the grid resize in SF (f34d8b9)
  • resizer: resizer not always triggered in SF and show broken UI (89fc62e)
  • state: don't use previous columns ref when getting current cols (f312c60)
  • styling: add ms-select placeholder bg-color to fix Bootstrap 5 (2c34d12), (5d6454e)

new CSS Variables feature

16 Jul 18:10
Compare
Choose a tag to compare

Small Release Intro

This new release adds CSS Variables (see Wiki) and few more fixes to get Angular-Slickgrid to finally use Slickgrid-Universal, so you now have the choice to use SASS and/or CSS Variables. There's a few more changes that you can see below, including aria-label for assistive screen reader (it's not perfect, it's just a start and if anyone want to contribute please do so).

Enjoying the lib?

Make sure to upvote ⭐ and/or Buy Me a Coffee ☕ ... and if you already have, well thanks 😺

Cheers and Happy Coding


Features

  • aria: add aria-label to all Editors/Filters & other html templates (1a4f8f7)
  • services: make constructor arguments as readonly (a4588ea)
  • services: make everything extendable by using protected (ecbb93a)
  • styling: add support for CSS Variables (674dd1a)

Bug Fixes

  • events: use nullish coalescing in slickgrid event prefix (6ff551b)
  • examples: onBeforeEditCell should return bool true/false (382bfc8)
  • filter: refreshTreeDataFilters only when Tree is enabled (07c70d5)
  • filters: always find locale even without TranslaterService (c4b17c4)
  • styling: remove css variable on width causing UX problem (df69f9c)
  • tree: same dataset length but w/different prop should refresh Tree (549008a)
  • filters: startsWith/endsWith operator should work (f99f1c5)
  • formatters: Complex Object Formatter shouldn't throw with null data (3421465)
  • tree: exclude the correct type from interface argument (af51784)