Skip to content

Releases: ghiscoding/slickgrid-universal

Lots of new Features & Fixes

24 Mar 23:15
Compare
Choose a tag to compare

This new release brings a few nice new Features the most notable are the following

  • add optional filterTypingDebounce for filters with keyup (mainly default Text Search Input and its Compound version), this will help users dealing with huge dataset, add a debounce/throttle should speed up the search since it will query only after user pauses typing
  • add Pinning (frozen cols/rows) to the Grid State & Grid Presets
    • you can give it a try in the Example 11, you can freeze a column from the Header Menu and then refresh the Page and expect to see the Pinning remain after page reload
  • a new rxjs-observable package to bring support of RxJS Observable in Slickgrid-Universal without cluttering the common package. This new package is basically just a wrapper to avoid adding RxJS as a dependency to the common package (officially the last missing piece for Angular-Slickgrid to use Slickgrid-Universal).
  • ... and a few other changes, check the list below

Enjoy it

Enjoying the lib? Make sure to upvote ⭐ and/or Buy Me a Coffee
... and if you already have, well thank you 😺

Cheers

Features

  • editors: add onSelect callback to Autocomplete Editor (#286) (2d106d4)
  • filters: add new IN_COLLECTION operator to allow searching cell value as Array (#282) (ecce93c)
  • filters: add optional filterTypingDebounce for filters w/keyup (#289) (3aecc89)
  • filters: add optional filterTypingDebounce for keyboard filters (#283) (bb7dcd3)
  • filters: add possibility to filter by text range like "a..e" (#279) (e44145d)
  • filters: display operator into input text filter from Grid Presets (#288) (3fad4fe)
  • resources: add RxJS support into Slickgrid-Universal via external package (#280) (c10fc33)
  • state: add Pinning (frozen) to Grid State & Presets (#292) (ba703d8)

Bug Fixes

  • editors: show all editors as 100% height in their cell container (#277) (3f49aea)
  • filters: rollback a change made in PR #288 causing preset issues (18ffc0c)
  • filters: SearchTerms shouldn't come back after calling clearFilters (04f3d12)
  • filters: string <> should be Not Contains instead of Not Equal (#276) (960884d)
  • firefox: add all missing SVG color filter classes for Firefox/SF (#296) (a07ebdf)
  • lerna: downgrade Lerna to previous version to fix thread leaking (#281) (ffde71c)
  • pinning: reordering cols position freezing cols shouldn't affect (#275) (a30665d)
  • plugin: Grid Menu Clear Frozen Cols shouldn't change cols positions (#291) (4fdab08)
  • presets: Filter & Sorting presets & Footer metrics issues (#285) (3174c86)
  • presets: Multiple Select Filter Grid Presets values should be shown (dd1f231)
  • resizer: allow gridHeight/gridWidth to be passed as string (#284) (20bda50), closes #534
  • sorting: add some unit tests that were previously commented out (#290) (2a91fa6)

Perf, Perf and... Perf

27 Feb 15:31
Compare
Choose a tag to compare

As the title suggest, this new release brings a few improvements in terms of performance. especially in the following 3 areas

  1. there was a contribution, in this PR, done on the SlickGrid (core) lib to improve batch (insert/edit/delete) and so I also made the changes in the Grid Service to take advantage of them in the following methods (addItems, updateItems and deleteItems)
    • the test done in SlickGrid (core) is by inserting 100k rows in a grid (before: 1100ms vs after: 200ms)
  2. date sorting is now 2x times faster (check full test logs in the PR)
    • on 50k rows with sorting 1 date column, before 1981.27ms and after 903.99ms => 2.1x faster
  3. date filtering is now between 4x to 6x times faster (check full test logs in the PR)
    • all type of filters might benefit but the date is the biggest perf boost
    • on 50k rows with filtering 1 single date column, before 1471.19ms and after 246.01ms => 6.1x faster
    • on 50k rows with filtering 1 date range column, before 2695.77ms and after 591.40ms => 4.4x faster

You first reaction might be... how did you gain so much perf boost?
It all started when I was looking at where MomentJS is used in the lib, then I noticed that the Date sorting is actually parsing to a MomentJS object twice (1x for validating the date and 1x for the actual date) but that could be improved to do it in 1 parsing execution (use the same moment object to call momentDate.isValid() and then just use it for the sorting diff)... so with that done, I decided to take a look at date filtering to also avoid double parsing, but what I ended up finding, was that were being double parsed and worst than that, it was re-parsing the search values on every single cell value comparison (in other words if we have 50k rows, it was double-parsing the date in the search value 50k times and double-parsing the cell value 50k as well... so when it was supposed to compare and parse 50k rows + 1 time parsing for search value, it was in fact parsing over 4 times that which was about 200k parsing instead of 50k + 1 row... hence the perf boost between 4-6x faster). You can try it yourself, go over the GitHub demo page on Example2 and/or Example 3 then click on "50k rows" and test it out for yourself. If you are dealing with couple thousand rows, you might not notice the difference but make that 25,000 or 50,000 rows and you will surely notice the boost 🚀

Features

  • demo: add Example 13 Header Button Plugin (f345cd1)
  • editors: add a Clear (X) button to the Autocomplete Editor (#270) (ffbd188)
  • filters: add updateSingleFilter for a single external filter (#265) (20564a3)
  • perf: huge filtering speed improvements (a101ed1)
  • perf: improve date sorting speed (258da22)
  • perf: improve date sorting speed (#259) (a52f4fc)
  • services: add bulk transactions in Grid Service CRUD methods (#256) (03385d9)

Bug Fixes

  • backend: incorrect item count with GraphQL and useLocalFiltering (3996cf4)
  • build: enable tsconfig strict mode tsconfig (#269) (095fc71)
  • filters: don't use indexOf NOT_IN_CONTAINS (#262) (310be30)
  • filters: use defaultFilterOperator in range when none provided (#271) (993675f)
  • helpers: should be able to highlight first row (0) (#268) (a58be17), closes #527
  • plugin: recreate header menu when adding column dynamically (#257) (16c4984)
  • plugins: do not recreate header button plugin after re-render (09d44ec)
  • editors: styling issue found with input group and Bootstrap (18a9d02)

Composite Editor - Clone Item/Row

28 Jan 00:20
Compare
Choose a tag to compare

This new release brings a few fixes and most importantly an addition to the Composite Editor - Clone Item (which allows copying a row with possible edits before cloning). There's also a brand new Composite Editor - Wiki with full details on how to use Composite Editor (which now allows you to do the following 5 actions: create/clone/editor/mass-update/mass-selection)

Final Note

If you like the lib, please upvote ⭐ and/or Buy Me a Coffee

see the changelog of each package below:


Features

  • editors: add Clone functionality to Composite Editor (#236) (df545e4)
  • editors: add Column Editor collectionOverride option (0efb18f)
  • editors: change all private keyword to protected for extensability (#247) (089b6cb)
  • filters: change all private keyword to protected for extensability (#245) (52cc702)
  • formatters: add grid option to auto add custom editor formatter (#248) (db77d46)
  • components: add column definition nameCompositeEditor override for Composite Editor (fcdb2e9)

Bug Fixes

  • comp: empty data warning should work with autoheight grid (#240) (8c9cb84)
  • component: Composite Editor sometime shows empty mass update form (#244) (d3ad4db)
  • components: empty data warning should work with autoheight grid (#234) (16daa36)
  • core: fix types index.d.ts url (a76b3a3)
  • editors: add blank disabled fields in Composite Editor form values (#233) (b634902)
  • editors: add option to skip missing composite editor (#232) (925dba8)
  • editors: fix clear date & blank disabled field w/Composite Editor (#235) (9aac97d)
  • exports: Excel Export custom width applies the width to next column (#242) (146f64f)
  • filters: Grid State filters should always include an operator (#238) (f64ed37)
  • frozen: hiding multiple columns when using pinning gets out of sync (#243) (b255220)
  • lint: add eslint as a pre task when bundling & fix linting errors (#246) (6f7ccd8)
  • pinning: recalculate frozen idx properly when column shown changes (#241) (3b55972)
  • plugins: add missing Row Detail filtering code (#239) (d9cad63)
  • plugins: throw error when Tree Data used with Pagination (#229) (85718e1)
  • tsc: running dev watch was overriding commonjs folder (#249) (e466f62)
  • build: decrease tsc target to es2017 instead of es2020 (2f2e5f4)
  • filter: filter service not returning correct operator (bd30697)

Bootstrap 5 Support & Flatpickr Localization Breaking Change

06 Jan 22:19
Compare
Choose a tag to compare

First big release of the year, this version brings a lot of great features, enhancements and a small (but noteworthy) breaking change, see below. Happy New Year 🚀

Main Changes

  • a new collectionOverride for the Select Editor (single/multiple) and the AutoComplete Editor which allows to change the collection per cell clicked (see Collection Override - Wiki
  • add Bootstrap 5 support
  • OData & GraphQL Services fixes to better handle filter ranges
  • few Tree Shakable enhancements were made
    • external SlickGrid plugins are no longer imported via require(plugin), which was not Tree Shakable, they now are imported the more natural way import(plugin) which is Tree Shakable
    • I also found out that all the Flatpickr Locales were being imported (also because of require(flatpickr/locale), you need to see the breaking change below.

Breaking Change (Flatpickr Localization)

As mentioned in previous paragraph, I found out that all the Flatpickr (date picker) Locales were all being imported (over 60 locales) and ended up in the bundle/build, so in order to fix that we now ask the developer (you) to import whichever Flatpickr Locale you need via your main.ts file (right after AureliaSlickgrid import), if you omit/forget to do this, it will display a console warning and revert to English. I didn't want to do a major release for this small change and there's also a console warning to tell you when you forget to import the locale properly, worst case is that you'll see English being used instead of the expected locale.

Final Note

If you like the lib, please upvote ⭐ and/or Buy Me a Coffee

see the changelog of each package below:

Add Collection Watch

22 Dec 02:55
Compare
Choose a tag to compare

Add AutoComplete, SingleSelect & MultipleSelect Filters collection watch (if an item is pushed or removed from the collection, the filter will re-render its list).

Also fixed a few problems identified by Aurelia with ESM Module imports (converted all load dynamic plugins from require to regular imports).

see the changelog of each package below:

Officially used by Aurelia-Slickgrid

Small Breaking Change - renamed registerExternalServices to registerExternalResources

14 Dec 22:03
Compare
Choose a tag to compare

Fixed a few styling issues with Bootstrap 4 and also renamed registerExternalServices to registerExternalResources which is a small breaking change. The reason is that it can now takes a mix of Services and/or Components which the later is a new feature (we now load the SlickCompositeEditorComponent through it)

see the changelog of each package below:

Extract Composite Editor & Empty Warning Components into separate packages

10 Dec 21:20
Compare
Choose a tag to compare

Get it all working in Aurelia-Slickgrid

07 Dec 23:29
Compare
Choose a tag to compare

In this version we renamed the @slickgrid-universal/file-export to @slickgrid-universal/text-export to be more explicit and also resolve most of the issues to make it fully usable in Aurelia-Slickgrid. There was also new enhancement/feature on the Editors.LongText (textarea) to make it more customizable and more UX friendly.

See the changelog of each packages:

Start using it Aurelia-Slickgrid

02 Dec 22:14
Compare
Choose a tag to compare

This version should resolve most of the issues found while trying to use Slickgrid-Universal within Aurelia-Slickgrid. There's also a few fixes in the @slickgrid-universal/common, see the full list of changes by clicking on the links of each package below

See the changelog of each packages: