Releases: ghiscoding/slickgrid-universal
v5.3.0
5.3.0 (2024-06-28)
Features
- grouping: add onPreHeaderContextMenu for Column Picker usage (#1580) (c742a83) - by @ghiscoding
Bug Fixes
- deps: update all non-major dependencies (#1581) (e89d1ad) - by @renovate-bot
- filters: setting date picker should always work, fixes #1582 (#1583) (92f6164) - by @ghiscoding
- styling: Column Header should always be on top of grid container (#1578) (2f97dbb) - by @ghiscoding
- tooltip: Slider Filter should auto update tooltip whenever sliding (#1584) (4d56dfb) - by @ghiscoding
v5.2.0 - Filter Shortcuts
5.2.0 (2024-06-18)
New Release Info
This new release brings Filter Shortcuts that once defined will be added as sub-menus the Column Header Menu. These shortcuts are nothing new in terms of what you can already do with Column Filters, however the main reason to use them is to define some filters with simple logic, for example give me all the Blanks or Non-Blanks Values or even better filter the last 6 months data. For more info and demo, take a look at:
- Example 10 - Filter "Next 20 days" with Date Range
- Example 11 - Filter "Country" Blanks/Non-Blanks and "Finish" Until Now/Future
- Read the Filter Shortcuts docs on how to use it
Lastly there's also a new Example 24 which is showing Column Totals in the grid Footer (the code was taken from an old SlickGrid example).
Features
- Date editor/filter improvements (#1551) (7c61846) - by @zewa666
- filters: add
setValues()
optional flag to trigger query (#1574) (025888d) - by @ghiscoding - filters: add new optional
filterShortcuts
to Column Filter (#1575) (cbd6ae4) - by @ghiscoding - footer: add Footer Totals Row and fix footer styling (#1576) (809903a) - by @ghiscoding
- paste multiline content as single cell (#1563) (4398f1d) - by @zewa666
Bug Fixes
- common: Header Menu missing columnDef in sub-menu action callback (#1572) (55d77d0) - by @ghiscoding
- filters: filters with
!=
(not empty) should return non-blanks (#1570) (9837ef1), closes #1569 - by @ghiscoding - filters: GraphQL Custom Filter Operator could be anything (#1562) (5430486) - by @ghiscoding
- filters: skipCompoundOperatorFilterWithNullInput skip empty string (#1566) (4d69bc0) - by @ghiscoding
- filters: skipCompoundOperatorFilterWithNullInput skip undefined (#1568) (711b03e), closes #1566 - by @ghiscoding
- GraphQL: filter
<>
isNot_Contains
instead ofNot_Equal
(#1571) (c6f1cf3), closes #1569 - by @ghiscoding - styling: add missing btn-default text color & border color (bfdec1e) - by @ghiscoding
- styling: Grid Menu, Col Picker labels should take full width (#1564) (e942539) - by @ghiscoding
v5.1.0 - Filter Predicates
5.1.0 (2024-06-07)
New Release Info
This new release brings a ton of new features and most of the new feature ideas came from this great Stack Overflow question Angular Slickgrid - Custom Filter which the user asked if it was possible to create a custom filter as SQL LIKE
. So, from this idea in mind and considering that we already had a sortComparer
for custom Sorting but no ways to customize Filtering, now let's work around this idea shall we?
filterPredicate
for local JSON dataset (see Example 14 forSQL LIKE
demo)- new
filterQueryOverride
which is the filter override for Backend Services (OData / GraphQL) - new
OperatorType.custom
that can be used with above custom filter predicate/override - new Operator
a*z
(StartsWith & EndsWith combo) available for local JSON dataset and Backend Services - new Top-Header panel which now allows the user to use both Draggable Grouping and Header Grouping together, this just wasn't possible before (see Example 3)
This new release also brings a lot of improvements to the Excel Export with a new Example 23 which demos how to dynamically use Excel Formulas (e.g. Sums), you can even use Excel Formulas with Grouping to do Sums, isn't it awesome!? Let's just say that pretty much everything you can do in excel-builder-vanilla, you can probably do in Slickgrid-Universal.
A huge thanks to @zewa666 and @jr01 for their contributions & feedback to add some of these new features and fixes. 🚀
Features
- core: add new
preventDragFromKeys
grid option, fixes #1537 (#1538) (803fbee) - by @ghiscoding - core: add optional Top-Header for Drag Grouping & Header Grouping (#1556) (7d4a769) - by @ghiscoding
- export: add missing
valueParserCallback
dataContext & new demo (#1543) (884b6e0) - by @ghiscoding - filters: add
OperatorType.custom
for custom backend service (#1526) (4284d58) - by @ghiscoding - filters: add a
filterPredicate
option for user customization (#1528) (cbf64d8) - by @ghiscoding - filters: add StartsWith/EndsWith (
a*z
) filter combo (#1530) (51560aa) - by @ghiscoding - filters: add StartsWith/EndsWith (
a*z
) to OData/GraphQL (#1532) (237d6a8) - by @ghiscoding - GraphQL: add
filterQueryOverride
to GraphQL Service (#1549) (2c0a493) - by @ghiscoding - OData: add
filterQueryOverride
to OData Service (#1536) (e8ffffe) - by @zewa666
Bug Fixes
- filter: Date Filter should trigger Grid State change with Backspace (#1545) (0c10410) - by @ghiscoding
- filters: Compound Operator alt texts should work with custom list (#1541) (02d5d2b) - by @ghiscoding
- filters: new
filterPredicate
shouldn't break other column filters (#1531) (27777ef) - by @ghiscoding - Grouping: Draggable Grouping cols reorder missing
impactedColumns
(#1557) (69125c2) - by @ghiscoding - pagination: out of boundaries page Grid Preset should be unset (#1534) (b800da3) - by @ghiscoding
- TreeData: addItem should keep current sorted column (#1558) (dc2a002) - by @ghiscoding
v5.0.1
5.0.1 (2024-05-11)
Bug Fixes
- deps: update all non-major dependencies (#1519) (90a5e26) - by @renovate-bot
- editors: only open ms-select drop when exists (#1525) (247daba) - by @ghiscoding
- plugin: Draggable Grouping drop zone should always be 100% wide (#1524) (a6dbf2c) - by @ghiscoding
- plugin: Grid Menu shouldn't be displayed in preheader by default (#1523) (7e0cdc9) - by @ghiscoding
- styling: add missing Dark Mode SASS vars to configure primary color (dc5d402) - by @ghiscoding
v5.0.0 - Modern UI
5.0.0 (2024-05-10)
New Major 5.0 Release
This new release brings a lot of changes oriented toward better UI/UX, our SVG icons are now pure CSS and can be colorized like any other text via the native CSS color
property (which helped a lot improving the Dark Mode Theme).
Another noticeable UI change is the migration of the date picker from Flatpickr
to Vanilla-Calendar-Pro, this new library has ESM support, it has modern styling and an awesome UI/UX. Another change that is mostly internal but is also indirectly connected to the date picker is the migration from MomentJS
to Tempo which is a new modern lib and is also packaged as ESM which is great for Tree Shaking. Lastly DOMPurify
is now optional, giving you the choice to install it or to use something else like isomorphic-dompurify
for SSR support... Please note that even if it is now optional, we strongly suggest that you install it nonetheless that is if you want to stay secure and CSP compliant (see migration below for more info).
I believe that with all of these recent changes, the project is pretty much feature complete and you should not expect any new major releases for a long time (hopefully).
Note
Follow the Migration to 5.0 for all the changes
⚠ BREAKING CHANGES
- pure SVG icons, Moment to Tempo, Flatpickr to Vanilla-Calendar (#1518)
Features
- pure SVG icons, Moment to Tempo, Flatpickr to Vanilla-Calendar (#1518) (21e50db) - by @ghiscoding
Bug Fixes
- core: col name from HTML shouldn't disappear in picker, fixes #1475 (#1476) (15a590b) - by @ghiscoding
- styling: small UI fixes for Salesforce Theme (f9bfb3d) - by @ghiscoding-SE
- tweak setupColumnSort() to fix exception when col no longer exists (#1477) (094d760) - by @ghiscoding
v5.0.0-beta.3
5.0.0-beta.3 (2024-05-09)
5.0 Beta Release, please follow the Migration Guide v5 for all info.
Bug Fixes
- common: consider target size when auto-position picker/modal (#1517) (e3a70b8) - by @ghiscoding
- common: Select Editor should always close with Escape key (#1512) (e37bb28) - by @ghiscoding
- core: tweak setupColumnSort() to fix exception with hidden col (#1509) (94b836a) - by @ghiscoding
- editors: body click or Escape key should cancel Select Editor (#1513) (3d765a9) - by @ghiscoding
- make some more cleanup with now optional DOMPurify (#1508) (7fafbcc) - by @ghiscoding
- plugins: clicking a grid cell should close any open menu (#1515) (383792d) - by @ghiscoding
- styling: improve UI & fix small issues found after testing upstream (#1510) (a4ef70f) - by @ghiscoding
- tooltip: only show tooltip that has value (#1511) (2ff15da) - by @ghiscoding
v5.0.0-beta.2
5.0.0-beta.2 (2024-05-07)
5.0 Beta Release, please follow the Migration Guide v5 for all info.
⚠ BREAKING CHANGES
- migrate from Moment to Tempo (#1507)
- common: make DOMPurify as optional sanitizer grid option (#1503)
- styling: delete "bare" Themes but keep "lite" & add to Bootstrap (#1493)
- common: migrate from
moment
tomoment-tiny
(#1456) - filters: remove native
Filters.select
(#1485) - styling: delete
checkmarkFormatter
and any Font-Awesome related (#1484) - common: migrate from Flatpickr to Vanilla-Calendar (#1466)
- styling: remove SASS
math.div
polyfill (#1483) - styling: convert SVG icons to pure CSS (#1474)
Features
- common: make DOMPurify as optional sanitizer grid option (#1503) (0aa0859) - by @ghiscoding
- common: migrate from
moment
tomoment-tiny
(#1456) (90690f4) - by @ghiscoding - common: migrate from Flatpickr to Vanilla-Calendar (#1466) (fb6e950) - by @ghiscoding
- filters: remove native
Filters.select
(#1485) (fae4c4a) - by @ghiscoding - migrate from Moment to Tempo (#1507) (adef47f) - by @ghiscoding
- styling: convert SVG icons to pure CSS (#1474) (70cda8a) - by @ghiscoding
- styling: delete "bare" Themes but keep "lite" & add to Bootstrap (#1493) (ca5ac06) - by @ghiscoding
- styling: delete
checkmarkFormatter
and any Font-Awesome related (#1484) (2de3fe2) - by @ghiscoding - styling: remove SASS
math.div
polyfill (#1483) (12661a3) - by @ghiscoding
Bug Fixes
- core: col name from HTML shouldn't disappear in picker, fixes #1475 (#1476) (15a590b) - by @ghiscoding
- editor: autocomplete should only save empty when val is null (#1500) (8de1340) - by @ghiscoding
- editor: input editor should call save on focusout or blur of input (#1497) (ccd344e) - by @ghiscoding
- editor: new Date Editor input clear button wasn't working (#1487) (4ac34ee) - by @ghiscoding
- styling: couple of small alignment issues when using flex (#1496) (2188242) - by @ghiscoding
- styling: empty warning should separate icon & text (#1491) (240cbd3) - by @ghiscoding
- styling: properly import Vanilla-Calendar CSS and only once (#1492) (75dce74) - by @ghiscoding
- styling: Row Move icon shouldn't show extra dot (69f7bfc) - by @ghiscoding-SE
- tooltip: don't sanitize empty text, fixes empty tooltip being shown (#1495) (dcc693b) - by @ghiscoding
- tweak setupColumnSort() to fix exception when col no longer exists (#1477) (094d760) - by @ghiscoding
v4.7.0
4.7.0 (2024-04-20)
Quick Info
This new release adds 2x new grid options defaultEditorOptions
and defaultFilterOptions
so that user can define global Editor/Filter options instead of having to duplicate same options on each column editorOptions
/filterOptions
. An example is shown below.
- Note: for
defaultFilterOptions
, we use the same keys as the Editor (date
,select
,slider
, ...) but please note that these 3 filters options have combined options into 1 prop for compound & range filters (e.g.date
is for bothcompoundDate
anddateRange
filter options).
this.gridOptions = {
defaultEditorOptions: {
autocompleter: { debounceWaitMs: 150 }, // auto-typed as AutocompleterOption
date: { minDate: 'today' },
longText: { cols: 50, rows: 5 }
}
}
Bug Fixes
- common: don't try to strip tags on object input to calc cell width (#1453) (5ab671b) - by @ghiscoding
- common: switch back to
autocompleter
with ESM build (#1450) (ad66a12) - by @ghiscoding - core: Editor.keyCaptureList is an array of numbers (#1458) (62a686e) - by @ghiscoding
- OData: sorting columns via
id
instead of field property name, fixes #1467 (#1469) (0a4d402) - by @zewa666 - styling: improve button & text colors for Dark Mode (9414ab4) - by @ghiscoding-SE
- wrong operator comparison (#1461) (abe772b) - by @zewa666
Features
- common: add global
defaultEditorOptions
&defaultFilterOptions
(#1470) (0462f17) - by @ghiscoding - core: add
getFilterArgs()
toSlickDataView
(#1457) (7563126) - by @ghiscoding - notify onValidationError on paste if validation failed (#1462) (38b465c) - by @zewa666
v4.6.1
4.6.1 (2024-03-31)
Quick Info
This release will now work with multiple tooltips on the same cell (e.g. multiple buttons with icons like the "Action" column in Example 22
Bug Fixes
- common: move DOMPurify/SortableJS @types as dependencies (51eaec7) - by @ghiscoding
- common: switch to
autocompleter-es
to get ESM build (#1449) (aa59334) - by @ghiscoding - improve Dark Mode styling for icons barely visible in dark (16b1a6e) - by @ghiscoding
- pubsub: externalize PubSub event to SlickEventData to stop bubbling (#1444) (973d0ab) - by @ghiscoding
- revisit package
exports
to pass "are the types wrong" (#1440) (20229f7) - by @ghiscoding - styling: missing/too many borders compound filters w/group addon (#1446) (863933f) - by @ghiscoding
- tooltip: allow multiple tooltips per grid cell (#1448) (061c4a0) - by @ghiscoding
v4.6.0
4.6.0 (2024-03-23)
Quick Info
This release upgrades multiple-select-vanilla
package, that I also maintained, with a much more modern UI with the use of SVG icons. The SVG icons in that external lib are now also written in pure CSS which helps for Dark Mode (in that mode, the primary color for checked icon is a lighter version of the primary color). Note however that the SVG icons in Slickgrid-Universal are not yet pure CSS since that would introduce breaking changes in Slickgrid-Universal (a new major version will be pushed later on to address that).
⚠️ internalColumnEditor
is deprecated and no longer needed
Note that in the past, SlickGrid and Slickgrid-Universal were using 2 different references for editor
. The original SlickGrid was using editor
as a Class to be later instantiated (e.g. Editors.longText
) but that wasn't very convenient for the end users (you). For that reason I decided a long time ago to take this editor
and reassign to another ref named internalEditor
and then SlickGrid kept using editor
(read from editor.model
) and whenever the user wanted to read the SlickGrid editor after the grid was initialized, the user would have to get it from column.internalEditor
(because after the initialization editor
is SlickGrid's internal editor class not the one provided by the user), but that was so damn confusing... but now that Slickgrid-Universal is a standalone (no longer relying on 6pac/slickgrid
) I decided to get rid of this confusion, so with this new release the editor
remains the same to the user but the one used by SlickGrid just got renamed to editorClass
. So in summary, editor
is the same for the end user and editorClass
is what is defined by model: Editors.longText
and the internal ref swap that Slickgrid-Universal was previously doing is no longer needed internally. Below is an example of when that would be in use
// previously, to add an item to the editor/filter collection
this.columnDefinitions = [{ id: 'complexity', editor: { model: Editors.singleSelect, collection: [{ value: 1, label: 'Simple' }, /*...*/ ]; }];
// then adding an item would require to read `internalColumnEditor`
// after grid init, our `editor` became `internalColumnEditor
- const complexityEditor = this.columnDefinitions[0].internalColumnEditor;
// BUT with this new release, adding a new item to the collection is as simple as
+ const complexityEditor = this.columnDefinitions[0].editor;
complexityEditor.collection.push({ value: 9, label: 'Hard' });
// and if you want to read the SlickGrid editor, you would now use
this.columnDefinitions[0].editorClass; // which is the same as `editor.model`
Bug Fixes
column.editor
andgridOptions.editorFactory
type changed (#1428) (bf8c5b9) - by @ghiscoding- build: add ESLint-TS rules to enforce
type
imports and exports (#1432) (cce4693) - by @ghiscoding - build: add ESLint-TS rules to enforce
type
imports and exports (#1437) (324c4fe) - by @ghiscoding - common: add missing Filter
model
Type ofFilterConstructor
(#1430) (3f3e952) - by @ghiscoding - common: bump ms-select to fix compatibility problem in Salesforce (#1425) (d3d2d39) - by @ghiscoding
- common: Select All checkbox shouldn't disappear w/Dark Mode toggle (#1421) (5fab179) - by @ghiscoding
- Join type (#1427) (21c76cc) - by @zewa666
- styling: add border & box-shadow to Flatpickr in Dark Mode (fdbb6ae) - by @ghiscoding
- styling: add missing orange border for Salesforce modified inputs (e830dd3) - by @ghiscoding
- styling: add more visual cue for column picker uncheck row select (b4712e9) - by @ghiscoding
- styling: don't add filled border all side for group-addon btn (30be835) - by @ghiscoding-SE
- styling: small Composite Editor fixes for Dark Mode (#1417) (7e00087) - by @ghiscoding
Features
- common: add optional "Toggle Dark Mode" in Grid Menu (#1418) (990c1df) - by @ghiscoding
- core: rename SG
editorClass
& deprecateinternalColumnEditor
(#1429) (409115c) - by @ghiscoding - upgrade to ms-select-vanilla v3.x (#1439) (8f2378e) - by @ghiscoding