slickgrid-universal

Slickgrid-Universal is a monorepo which includes all Editors, Filters, Extensions, Services and is also Framework Agnostic to take full advantage of SlickGrid core lib.

MIT License

Downloads
102K
Stars
73
Committers
19

Bot releases are hidden (Show)

slickgrid-universal - v1.2.6

Published by ghiscoding over 2 years ago

1.2.6 (2022-03-19)

Bug Fixes

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

Published by ghiscoding over 2 years ago

1.2.5 (2022-03-06)

Bug Fixes

  • utilities: check if the normalize function exists (00c1c92)
slickgrid-universal - v1.2.4

Published by ghiscoding over 2 years ago

1.2.4 (2022-02-15)

Bug Fixes

  • core: rollback node/npm minimum engine versions (7fcaecd)
slickgrid-universal - v1.2.3

Published by ghiscoding over 2 years ago

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)
slickgrid-universal - Selection Auto-Scroll, OData select/expand and Filters Modal

Published by ghiscoding almost 3 years ago

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

  • All-in-one Filters Modal contribution by @mcallegario
  • OData contribution by @jr01

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)
slickgrid-universal - BREAKING CHANGE - Official 1.x Release

Published by ghiscoding almost 3 years ago

⚠ 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)
slickgrid-universal - new Custom Tooltip (plugin)

Published by ghiscoding almost 3 years ago

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)
slickgrid-universal - Tree Data improvements & more...

Published by ghiscoding about 3 years ago

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)
slickgrid-universal - Backend Error Handling Improvements & Cancellable Events

Published by ghiscoding about 3 years ago

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)
slickgrid-universal - new CSS Variables feature

Published by ghiscoding over 3 years ago

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)
slickgrid-universal - Tree Data Grid State & Presets

Published by ghiscoding over 3 years ago

Tree Data

this new version adds the Tree Data into the Grid State & Presets (when enabled), so you could reload the grid by saving & reapplying the same Grid State and Presets (toggled items) that it was before refreshing the page. There's also some more enhancements and fixes which you can see from the list below.

Others

in this version, we converted a few of the Filters/Editors from jQuery to native. That does not mean we can drop jQuery, but it's a start, SlickGrid uses jQuery heavily so I'm not even sure if it will ever be possible to drop jQuery completely (there's also a few external libs that are jQuery libs: multiple-select.js, jQueryUI autocomplete & slider range). On the other end, this conversion might bring better performance in some areas, at least I would imagine, on single/multiple Filter & Editors with large collection.

There are also a few Components that were decoupled as new monorepo packages so that they could be used in Aurelia-Slickgrid/Angular-Slickgrid (Binding, EventPubSubService, CustomFooterComponent, PaginationComponent). This new version will also be the first version to be used by Angular-Slickgrid for its upcoming major version and so Slickgrid-Universal will soon be used by 2 separate libs (Aurelia-Slickgrid & Angular-Slickgrid) 🚀🥳

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

  • components: extract Custom Footer to be an external component (1794c27)
  • editors: convert jQuery to native element on slider editor (3181cf0)
  • editors: replace jQuery with native element on date editor (062f1f9)
  • editors: use class inheritance to extend main input editor (ad3e696)
  • filters: build multiple-select options from native dom elements (aa548a9)
  • filters: convert jQuery to native element on more filters (b46eb5e)
  • filters: convert jQuery to native elements on multiple filters (3a80996)
  • footer: add option to customize right footer text (2ea41cc)
  • formatters: add Bootstrap Dropdown Formatter (5ba9423)
  • Pagination: decouple the Pagination Component to separate package (606795b)
  • services: convert jQuery to native elements (4da0a20)
  • services: decouple the EventPubSubService to separate package (9f51665)
  • services: move Resizer Service w/common services folder for reuse (d127ac7)
  • styling: add a new color-disabled-dark (55c3062)
  • styling: add a new color-disabled (7151198)
  • styling: add extra material icons & new color (4205b66)
  • tree: add getItemCount method with optional tree level (b3f8f94)
  • tree: add Tree Collapse Grid State/Preset (998b01a)
  • tree: add ways to reapply Tree Collapse previous state (3702ed3)
  • editors: add new Input Password Editor which uses common inputEditor (87e547c)
  • filters: convert jQuery to native element on few more filters (7d5e1e8)

Bug Fixes

  • addon: providing columnIndexPosition should always work (42c8cff)
  • build: the "files" property should be included in pkg.json (3d8f12e)
  • demo: we should be able to move row(s) and keep selections (d5669a1)
  • editors: longText Editor (textarea) was scrolling to page bottom (a4e37a0)
  • editors: select dropdown value is undefined it shouldn't call save (015294b)
  • export: expanded Row Detail shouldn't be exported, fixes #390 (cef826c)
  • filters: filtering with IN_CONTAINS should also work with spaces (ab54724)
  • formatters: shouldn't auto-add editor formatter multiple times (177b8d4)
  • frozen: in some occasion column pinning changes column positions (70cb74e)
  • menu: toggle filter bar could be out of sync w/horizontal scroll (ab7f589)
  • pagination: able to change translate pubsub event name in component (4745063)
  • pagination: should be able to toggle Pagination (c0367c2)
  • Pagination: the Pagination wasn't showing when using dataset setter (ac3f933)
  • plugin: row move shouldn't go further when onBefore returns false (e9bfb5c)
  • resizer: few fixes & adjustments after trying in SF (32e80ec)
  • resizer: tweak resize check to stop much earlier (ea35b08)
  • services: toggle pagination was not displaying all row selection (e51ccb4)
  • state: changeColumnsArrangement should work w/columnIndexPosition (7c1e9d3)
  • state: Grid View/Columns dynamically should work w/row move (a7cf1df)
  • state: Grid View/Columns dynamically should work w/row selection (865944f)
  • styling: address latest dart-sass math division deprecation warning (b7317d8)
  • styling: header title should show ellipsis if too long (607e14d)
  • tree: calling updateItems should not lose the Tree collapsing icon (45b9622)
  • tree: using initiallyCollapsed change internal toggled state (380f2f9)
slickgrid-universal - Tree Data Optimizations/Fixes and Single Column Resize

Published by ghiscoding over 3 years ago

This new version brings a lot of Tree Data Optimizations and Fixes. We now also have single column resize by content (enabled in all grids)

Tree Data

  • refactor flat to tree structure and vice versa to optimize speed, it seems to be ~40-50x faster 😮🚀
    • yes it is incredibly faster, especially on first page load (previous implementation of converting from flat to tree structure was quite slow, there are specific npm libs that do a much better job at doing that than my own implementation), it wasn't working with 100k rows before but now it does 💯
  • there's a lot of fixes and new features, you can see all features in the new Tree Data - Wiki and demos Example 5 / Example 6
  • for a complete list of all features/enhancements (30+ changes), you can take a look at these 2 PRs #326 / #336 which have checklist of all the changes

Single Column Resize (double-click / header menu)

This new feature is enabled in all grids by default (and as any other feature of the lib, there's flag to disable it too). This new action is very similar to Excel column resize, it will read through the entire dataset (max at 5k rows) and calculate what width it requires to display all the text (it's not an autofit, it's really a resize by content calculation). The feature comes from a reuse of the code that was put in place to handle an entire Grid Resize by Content that was shipped in previous version except that now we also have a single column resize (the default grid resize will always be autofit in viewport).

  • available via a double-click on the resize icon handle (between 2 columns), this is quite similar to how you can resize a column in Excel
  • available via a new column header menu action ("Resize by Content")
  • the single column resize uses the same options as the full grid resize by content, see all the available option below (just a hint, column resizeMaxWidthThreshold is an option I often use)
  • a new Resize by Content - Wiki

Resize by Content Option - Small Breaking Change

Because there were many resize options ending up in the Grid Option, I moved all of them into a new ResizeByContentOption, you can see all info in the new Resize by Content - Wiki

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

  • addon: provide grid menu labels for all built-in commands (44c72d3)
  • editors: add compositeEditorFormOrder option (03f2d66)
  • editors: add ways to preload date without closing date picker (3088038)
  • resizer: add resizeByContentOnlyOnFirstLoad grid option (ffe7dc4)
  • resizer: add single Column Resize by Content dblClick & headerMenu (683389f)
  • services: add onBeforeResizeByContent (onAfter) (3e99fab)
  • styling: add new marker material icons for project (9b386fa)
  • tree: improve Tree Data speed considerably (5487798)
  • editors: replace jQuery with native elements (d6e8f4e)

Bug Fixes

  • backend: able to preset filters on hidden columns & all queried (f1d92cd)
  • backend: able to preset filters on hidden columns & all queried (c610979)
  • editors: select editor inline blur save before destroy (0e591b1)
  • formatters: Tree Data use nullish coallescing w/optional chaining (f6cf14c)
  • frozen: rollback previous commit since the issue was found in SlickGrid (core) (780bcd7)
  • presets: loading columns presets should only be done once (4273aa9), closes #341
  • resizer: fix a regression bug caused by previous PR #341 (462e330)
  • resizer: remove delay to call resize by content to avoid flickering (961efe6)
  • services: fix couple of issues found with custom grid views (db06736)
  • sorting: multi-column sort shouldn't work when option is disabled (bfc8651)
  • styling: add a better search filter magnify glass icon as placeholder (5464824)
  • styling: center horizontally checkbox selector in column header (bb5aebc)
  • styling: dart-sass deprecation warnings use math utils instead (b5d8103)
  • tree: Tree Data export should also include correct indentation (f1e06c1)
  • tree: couple of issues found in Tree Data, fixes #307 (e684d1a)
  • editors: revert to jquery element for aurelia-slickgrid to work (4d6c358)
slickgrid-universal - Resize Columns by their Content

Published by ghiscoding over 3 years ago

The biggest feature is this release is probably the Resize Columns by their Content (that is an opt-in feature since it requires cpu cycle to parse through the dataset to calculate width of each column).

There's also Row Selection Count that is now showing in the Custom Footer (unless you already have left footer text, if so it won't override it). The grids with colspan were also not exporting correctly and now they do (that is related to reading the item metadata)... there's a few other things, just see the full list below. You can also now filter empty values on the single/multipleSelect Filter (see Wiki)

Direct Link to Example Components

Also note, every Example now have a direct link to each Component TypeScript file, the link will be on the far right. This will be much quicker to find the associated code of the Example Component you're looking at.

image

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 onBeforeOpen optional callback to Composite Editor (#306) (a642482)
  • editors: add target to onBeforeEditCell w/called by composite (#301) (7440ff5)
  • filters: add option to filter empty values for select filter (#310) (c58a92a)
  • filters: option to add custom compound operator list (3e8d2cb)
  • footer: add row selection count to the footer component (8ba146c)
  • resize: add column resize by cell content (#309) (515a072)
  • services: remove deprecated hideColumnByIndex form Grid Service (#312) (b00c64d)
  • styling: switch from node-sass to dart-sass (sass) (81f8d9f)
  • typing: add missing item metadata interface (#299) (7cf0a21)

Bug Fixes

  • demo: call scrollColumnIntoView after changing view (b751151)
  • editors: Composite Editor modal component should work w/complex objects (#298) (721a6c5)
  • exports: grid with colspan should be exported accordingly (#311) (e899fbb)
  • footer: add correct implementation of locale usage in custom footer (6e18bf9)
  • observables: http cancellable Subject should be unsubscribed (cbc951b)
  • resize: columns reposition not coming back after grid setOptions (f2027e6)
  • selection: full row selection should be selected w/show hidden row (f76e30c)
  • tests: try setting fixed TZ while running Jest (d316db9)
slickgrid-universal - Lots of new Features & Fixes

Published by ghiscoding over 3 years ago

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)
slickgrid-universal - Perf, Perf and... Perf

Published by ghiscoding over 3 years ago

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)
slickgrid-universal - Composite Editor - Clone Item/Row

Published by ghiscoding over 3 years ago

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)
slickgrid-universal - Bootstrap 5 Support & Flatpickr Localization Breaking Change

Published by ghiscoding almost 4 years ago

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:

slickgrid-universal - Add Collection Watch

Published by ghiscoding almost 4 years ago

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:

slickgrid-universal - Officially used by Aurelia-Slickgrid

Published by ghiscoding almost 4 years ago

slickgrid-universal - Small Breaking Change - renamed registerExternalServices to registerExternalResources

Published by ghiscoding almost 4 years ago

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:

Package Rankings
Top 3.67% on Npmjs.org
Badges
Extracted from project README
License: MIT TypeScript lerna--lite NPM downloads npm Actions Status Cypress Vitest codecov npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size npm NPM downloads npm bundle size
Related Projects