Releases: ghiscoding/Angular-Slickgrid
v2.10.1
chore(release): 2.10.0
More Unit Tests and some minor fixes
There are now over 1300+ unit tests and the lib is now over 70% coverage, the unit test portion is almost finished (only 1 export service left to test), the next phase would be integration tests (editors, filters, pagination & angular-slickgrid entry file). Some of the Services required some code refactoring which is also why we released this under a minor
(semver) version.
EDIT
As of version 2.9.5
, all Services and all Unit Tests are done, the only major testing left to do would be Integration Tests (editors, filters, pagination & angular-slickgrid entry file). This also means that all major pieces, all the mechanic if we could say, of the library are now fully tested and a few small issues were detected and fixed while doing all of these nearly 1400 tests and we have now achieve 75% coverage (also worth to know, there are 7000 lines of code to test). 🎉 😸
Features
- (tests): add AngularUtilService full test suite
- (tests): add all Filter Conditions full test suite
- (tests): add GroupingAndColspanService full test suite
- (tests): add GridEventService full test suite
- (tests): add SortService full test suite
- (tests): add FilterService full test suite
- (tests): add ExportService full test suite
- (tests): add more ResizerService tests
- (cypress): add Cypress E2E tests to CircleCI build
Fixes
- (backend): regression from previous commit in both backend services using GridState
- (filter): regression, small issue detected when using compound filter
- that version was only out for a day
- (export): exporting null or undefined should replace by empty string
- (menu): Column Picker & Grid Menu not updated dynamically, closes #233 (PR #234)
- (export): fixed a few small issues detected in ExportService while adding unit tests
- (slickgrid): use previous version of Slickgrid to fix column autosize
- (gridMenu): external grid menu was not triggering
- (backend): clear empty filter by header menu not stopping spinner
- (gridMenu): adding user customItems in GridMenu was no longer showing
- (selection): selected row should be none after filtering, closes #249
Multiple Grids in Tabs Example, some fixes and more unit tests
There are now over 1000+ unit tests and we just passed 60% coverage. Also added an Example 24 to demo grids in Bootstrap Tabs (with ngx-bootstrap
) and 1 of the tab is to show loading the data from a JSON file with HttpClient
. Some users from were confused on how to use HttpClient
instead of mock data (which is what all demos are using). So hopefully this might help more users.
Features
- (tests): add missing sorterUtilities test
- (tests): add GraphqlQueryBuilder unit tests
- (tests): add GraphqlService full tests & refactor few piece of code
- (tests): add GridODataService & OdataQueryBuilder full test suite
- (examples): add ngx-bootstrap tabs example, closes #219
Fixes
- (queryField):
queryFieldFilter
andqueryFieldSorter
should have precedence overqueryField
- (odata): add presets to GridOdata Service, closes #206
Grid Service new CRUD methods
Quick Summary
This version introduce a lot of refactoring on the CRUD methods (with an extra newly added upsert
method) available in the Grid Service (which is now fully tested). New method names are replacing the older methods (which will be deprecated in the future). The biggest change is that instead of passing true, false, true
(which is not very explanatory), was converted to an object with the flag properties, see below). All option flags still have their own defaults when no flag are provided (highlightRow: false, selectRow: true, triggerEvent: true
), for example:
Before
this.angularGrid.gridService.updateDataGridItem(item, false, true);
After
this.angularGrid.gridService.updateItem(item, { highlightRow: false, selectRow: true });
- All the flags in the 2nd argument are optional, they do come with their own defaults, see the Uncyclo to know them.
Features
- (gridService); change all CRUD methods to options argument
- (gridService): add "selectRow" flag to all CRUD methods
- (tests): add Grid Service full unit test suite
- (demo): add custom formatter with onCellClick, closes #213
- (resizer): change onGridBeforeResize to return event, issue #215 (PR #216)
Fixes
- (highlight): should do just that without doing any row selection
- using the new CRUD methods, the row won't be selected after the action, it will only be highlighted like it should
- (highlight): add highlight fade out animation
- fix(core): previous core version broke column resize, closes #207
Formatter Grid Options & other small Features, lots of Tests and few fixes
Quick Summary
New issue templates were added, please choose & fill them in with all information (when possible), it helps in resolving the issues. New formatterOptions
added to the Grid Options. A lot more Tests were added (now over 600+ tests) and coverage is rising slowly but surely (it's a big library after all).
Features
- (editor): added option for user to select the length of autocomplete (PR #183), thanks to @loonix
- (formatter): add grid
formatterOptions
to all Formatters (PR #187) - (formatter): add grid
formatterOptions
to all Grouping Formatters (PR #187)- both Formatters & Grouping Formatters now support negative number (
displayNegativeNumberWithParentheses
) wrapped in parentheses commonly used in Finance, example:-$15
can be shown as($15)
- the
formatterOptions
allows you to set a few options, in the Grid Options, that are common to a few Formatters/GroupingFormatters - Uncyclo
- both Formatters & Grouping Formatters now support negative number (
- (formatters): add
dateSeparator
Formatter Option - (euro): add Euro Formatters and Sorters (day/month/year) format, (PR #190)
- (formatters): consolidate all Date Formatters into 1 method call DRY, smaller lib footprint (PR #193)
- (tests): add full Test Suites
- Grouping Formatters
- Sorters
- Collection, GridState, Resizer Services
- (menu): add options to exclude column titles from Menus, closes #189 (PR #203)
- (rowDetail): add option to limit expanded row to only 1 at time, closes #194 (PR #204)
- (copy): add
excelCopyBufferOptions
to grid option, ref #198 (PR #205) - (gridService): add "upsertItem" method to Grid Service (PR #208)
Fixes
- (selection): syncGridSelection and preserveHidden, fixes #191 (PR #196)
- (gridState): columnPicker & gridMenu not triggering gridState change (PR #196)
- (rowDetail): update to latest SlickGrid version to fix scrolling (PR #202)
- (resize): use latest Github SlickGrid version, temp fix for #207
- (editor): dynamically adding editor column throws error, fixes #195 (PR #212)
- (editor): integer editor was always showing invalid when null value (PR #209)
Few Fixes and Full CI integration
This new release adds a few new small features, but the biggest change is probably the new CI tools that you might have noticed. The library is now built with CircleCI and since we recently started adding Jest unit tests, we also added the code coverage via Codecov, these are 2 great tools that are available freely for Open Source projects like this library. So you can now feel safe knowing there is now a build process with CircleCI
that includes Jest unit tests as well. 🎁🎉
You might find that the code coverage is a little bit low, but hey, it's better than 2 months ago which was 0% and it keeps increasing slowly but surely, Formatters and Sorters are now 100% covered and more test are added continuously.
If you would like to contribute on unit tests or anything else, please do, PRs are certainly welcome!!!
You can see some of the tasks in the queue under in the Project planning.
... and don't forget to up vote ⭐️ Cheers!
Features
- (editor): add option to force user input in
autocomplete
Editor, closes #174 (PR #176) - (tests): add more Formatters tests and fix minor issues detected
- (formatter): add new generic icon Formatter & tests
- (resizer): add
calculateAvailableSizeBy
container option, closes #175 (PR #179)- add full test suite to ResizerService
- (tests): add missing Formatter unit tests
Fixes
- (formatters): fixed small issues found in some formatters while writing unit tests
Single Search Filter and few fixes
Features
- (filter): add demo of single search filter
- (tests): add Jest (Unit & Integration Tests) & Cypress (E2E)
- (filter): add demo of single search filter
- example | component | Uncyclo | animated gif
- (build): add Cypress CI & Jest to build plan
Fixes
- (formatter): rewrite Bold Formatter do what it was supposed to do
- (input): remove autocomplete from all Editors & Filters
- (select): multiple-select was always tricky with click outside event
- (dateEditor): allow backspace for deleting a date, close #166
- (height): should throw error when no height or
enableAutoResize
- (selection): styling of row selection is incorrect when adding rows
- (formatters): while adding Jest unit tests, fix few Formatters output
- (formatter): changed
arrayObjectToCsvFormatter
behavior - (copy): copy+paste cells was not working with correctly with
enableExcelCopyBuffer
, closes #164 - (formatters): update some Formatter behaviors and add unit testing
- (editors): not allow grid paste of invalid values, issue #171
AutoHeight Features and few fixes
Also reworked the demo sample CSS so that the sidebar left menu works better. Are you using Angular-Slickgrid? You can now add your company/site/project to the Used by Who list.
Features
- (gridMenu): demo Grid Menu button can be added anywhere
- see it in the Example - Grid Menu | component
- (autoHeight): add missing Grid Option
autoHeight
feature- new demo Example - Grid AutoHeight | component
- (extension): add simpler method
getSlickgridAddonInstance
to get Slickgrid control/plugin instance - (e2e): add Cypress to the lib, E2E tests
- (rowDetail): user can override expand icon logic, closes #140
- (rowSelection): user can override row selection checkbox logic
- (filters): add flag to optionally trim filter white spaces
- (editor): add title attribute to all Editors, closes #158
- (filters): add enableFilterTrimWhiteSpace flag to grid options
Fixes
- (resizer): minHeight, minWidth not working correctly, closes #133
- (editor): allow all Editors to work with complex objects
- (rowDetail): clear Row Detail content when recreating it, closes #136
- (backend): add Filter
shouldTriggerQuery
to know when to call a query or not - (backend): regression after doing clearFilter, filter stop working
- (flatpickr): add filterOptions & editorOptions, closes #142
- (mapDateFormat): add missing date format in map utility, closes #141
- (rowDetail): add missing disposeAllView while destroying plugin
- (autocomplete): user might see auto suggestion
- (core): update Slickgrid to latest version, fixes #143, #149
- (pageSizes): setting different sizes gets extended with global sizes
- (backend): Filter presets is getting removed when calling sort
- (rowDetail): use latest Github SlickGrid code, temporary fix #160
- (headerMenu): calling "Clear Filter" was calling incorrect grid state
Angular Components everywhere
News
Good news, previous release brought the Row Detail and that helped with this new release (Angular Component everywhere). We can now use Angular Components with Custom Editors, Custom Filters and Custom AsyncPostRender (similar to a Formatter but in an async way, that is the only available solution that works with SlickGrid).
More info about Formatters vs AsyncPostRender
So what about Formatter then, why can't we use Angular Component with Formatter? Because of how Angular is built, it requires a full cycle for the component to be rendered with data, however SlickGrid Formatter requires only string output and it must be right away (synchronous) and Angular Component can only be returned in an async fashion (you could return it right away but the data won't be populated). That is the reason that it's not doable with a Formatter, however SlickGrid AsyncPostRender is similar and works in an async fashion. So that works, but it has some drawback, it's slightly slower to render (you can visually see it rendering on the screen). All that to say, regular Formatters with jQuery and/or HTML is still the preferable way... but hey, if you really wish to use Angular Component, well then it's now possible, but I won't personally use it though.
Features
- (editor): add Custom Editor with Angular Component, closes #77, #84 (PR #129)
- (filter): add Custom Filter with Angular Component (PR #131)
- (PostRender): use AsyncPostRender to render an Angular Component, closes #7 (PR #130)
- similar to Formatter though it has some drawback (visually slower)
- Example 22 | Component | animated gif
- (editors): add "required" and "alwaysSaveOnEnterKey" options (PR #132)
Fixes
- (filter): regression bug filtering data doesn't always refresh grid
- (backend): perf, clear filters was calling too many queries (1x/filter)
- (formatters): some formatters were not considering empty string
- (editors): small regression bug causing infinite loop in rare occasion
- (backend): Clear Filter from Header Menu was not working correctly
Refactoring
- Updated Bootstrap 3 Demo to Angular 7
Vote
If you haven't already done so, please up vote ⭐️
Let's make the lib more popular 😃
Row Detail View (new feature)
Features
- (RowDetail): add new Row Detail View feature, closes #118
- (event): add
onExtensionRegistered
to a few of the Extensions
Fixes
- (select): again related to commit cdcc979 which was that using multiple select filter and clicking anywhere beside wasn't triggering an Angular event detection
- (select): when destroying Select Filter/Editor, need to escape dot "." in name
- a column definition with "id" that included a dot within it's text was throwing an error
- (FilterService): fix a regression, missing an event
- (updateItem): call
grid.updateRow
instead ofgrid.invalidateRow
- when updating a row, the previous code was calling
invalidateRow
which destroy the entire row and recreates it, it's better to useupdateRow
since that will only re-render the necessary DOM elements instead of destroying/recreating them. - this fixes an issue we had in our App were we updated the item and we had focus on an opened Editor and we were losing the focus since the entire row was being destroying (including the Editor). With the new code, our opened Editor remains open and our row data still gets updated
- when updating a row, the previous code was calling