Migrate to angular 14
Support angular v14 from current supported angular version (12).
It includes a refactor of the build system to nx 14 (from nx 12)
This is a huge change since it include multiple monorepo management system changes (nx 14) as well as internal angular changes in it's own build process.
Since we are using fancy code to generate the documentation the code is refactored so the dev server documentation app works.
Additional changes:
- TS language breaking changes
- CDK breaking changes
- Build uitils changes (nx-build-plux, angular package format changes, etc...)
Upgrade process done in steps:
Step | From Commit | To Commit |
---|---|---|
Current to nx@13 | 60ebd31 | 599fac5 |
nx@13 to [email protected] | e32e17d | 5b61c6f |
[email protected] to [email protected] | 5cac67d | a5cba17 |
Fix Docs App | 962fe17 | 88b5c36 |
Fix Unit & E2E tests | a2edbeb | f3d9831 |
Fix Lib Packaging | d9de8e4, 0eddaa5 | |
Fix SSR + GH Pages | fd06369, 53394eb |
bug fix | core: fix issue with TypeScript DOM library update (db0b8ca93c526c5604b28c56dff8c6457c3d38f5) |
bug fix | support header & footer background colors in theming (e825e4fe16ef07093ef41b665dbf596f305f614c) |
bug fix | target-events: expose mouseUp & mouseDown events in target events plugin (c460d3bd1ce7cb7f026712c2f3d5baac84eab50c) |
bug fix | remove tilde from use rule (66a48ad11c814f17d332d4c4e1e7261ea92122e3) |
bug fix | revert to using ViewEngine package (3a1fe8f3202f4760d53085874279b26cfd902e88) |
bug fix | scss bundles proper export (c86b9b5140e584971aeeaf50223a03a72e014e36) |
bug fix | force export augmenting d.ts files (f2c60ab) |
Sass theming API has been reworked so that clients can take advantage of @use. This includes:
- A single entry point into
@pebula/ngrid
,@pebula/ngrid-material
and@pebula/ngrid-bootstrap
- Renamed functions, mixins, and variables to be a better reflection of what they do
- Applications still using node-sass will need to switch to the sass package For more information, check out the new material theming guide and ngrid's theming docs.
- For convinience, legacy theming API is still availavle at
@pebula/ngrid/theming
,@pebula/ngrid-material/theming
and@pebula/ngrid-bootstrap/theming
. The legacy API will be removed in v5.0.0
Starting from version 4 of nGrid, the library is packaged using the new IVY Angular Pacakge Format (v12).
Compilation is done in ViewEngine
mode.
While angular recommends compiling in partial-ivy mode, it has several limitations:
- Support is still not wide-spread so several tools will not load nGrid (StackBlitz, CodeSandbox, etc...)
- Applcations still running in
ViewEnginge
will not be able to run nGrid while IVY application can use NGCC - NGCC in v12 is still fully operational, so why limit?
@angular/components
(material) is also publishing v12 libaraies inViewEngine
However, as part of the CI process we still compile with partial-ivy mode enabled to catch errors since it is still new and has it's quirks which required some shellow API changes to work around it's issues. There should be no effect and used to ensure futute competability, however, if you experience strange behaviour please report.
In addition, symboles exposes in public modules are now required to be exposed in the public API as well. This resulted in multiple symboles which were previously private now exposed.
Library is now on par with version 12 of angular
, @angular/cdk
and @angular/components
(material).
Since nGrid@v4
is IVY compiled and the CDK does not support previous versions, v4 of nGrid will only run on angular version 12 and up.
bug fix | sort: support empty strings when sorting (6a1023e066a297f6b87c8a37554fc73ac723e114) |
- ngrid/sticky: refactor sticky columns to work again (bacd12a), closes #160
- proper boolean template type for strict type checking (9a29552)
- rebuild all cells context instead of only the visible upon onInvalidateHeaders event (5779d94)
- ngrid: wrong tracking of removed columns (c75334d)
- ngrid: refactor to support CDK & Material breaking changes (f3eba68), closes #161
- ngrid: value and col args in transform function (fbe95e4)
- ngrid: don't attach global templates to the root registry (0494678)
- ngrid: fix group logic (e75e493)
- ngrid: fix virtual page height (633a37d)
- ngrid: pagination reset when filter is on (468de4f), closes #78
- ngrid: column header sticky rows index is wrong (c122e9d)
- ngrid/drag: support column & row reorder on the same host (c1312c9)
- ngrid/drag: support row reordering in virtual scroll (5a24eec)
- ngrid/infinite-scroll: scroll page init without reason (54a1b65)
- ngrid: do not auto-clear context on source changing (e49d4ff)
- ngrid: missed a row when measuring virtual height (cf9ebfe)
- ngrid: rtl not working with live changes in direction (2956192), closes #141
- ngrid: workaround virtual scroll height limitation in browsers (233e3b2)
- ngrid: wrong ds index reference in context when using multirow setup (58ab268)
- ngrid/block-ui: allow BooleanInput for strict mode (2a9770a)
- ngrid/block-ui: wait for grid init before creating view (b9d1ea3)
- ngrid/infinite-scroll: proper reflection of refresh trigger state vs infitie scroll trigger state (3340bc9)
- ngrid/target-events: keyboard focus does not sync when virtual scrolling (b488d91), closes #117
- ngrid-bootstrap: selection column (ab09209)
- ngrid: add schematics support (1d7814c)
- ngrid-bootstrap: initial bootstrap support (80d6a85)
- ngrid: 3rd party storage for context api (#132) (0c9ca4c), closes #10 #127
- ngrid: allow minimum height based on row count (296fe5d)
- ngrid: cache when rendering rows (170c2d4)
- ngrid: custom row override (fec9445)
- ngrid: implement dynamic virtual scroll strategy (30117a3)
- ngrid: new api to add/remove columns (7a79b2e)
- ngrid: use intersection observer (161371b)
- ngrid-cypress: new package with cypress helpers (similar to harnesses) (e33d638)
- ngrid/detail-row: implement global detail row instance manager (f30c335)
- ngrid/testing: add test harnesses for ngrid, columns and data rows/cells (19bbba6)
- ngrid: support tree-shakable errors (0fa90ff)
- ngrid: disable wheel mode when virtual scroll paging is active (25d269e)
- ngrid: rebuild columns/cells inside rows when invalidating (35bbea8)
- ngrid: use internal row context (f7f8367)
- ngrid: move column (some) and datasource symbols to core package (33d2bca)
- ngrid: move configuration symbols to core package (fc259ba)
- ngrid: move most of utils to
@pebula/ngrid/core
(2990511) - ngrid: move registry to core package (55e8f31)
- ngrid: moved pagination types to core (cad0f5b)
- ngrid: refactor the cell rendering engine and refactor the group definitions (4882e4a), closes #123 #131
- ngrid: simplify working with rows (a81b1af)
- ngrid: To reduce clutter in the main packge the configuration symbols moved to
@pebula/ngrid/core
. At this point all symbols were re-exported from the main module so this no effect there. However, if you've extended on of the symbols using augmentation you will need to update the augmentation module path. - ngrid: To reduce clutter in the main packge the datasource symbols (all) and some of the column model symbols moved to
@pebula/ngrid/core
. At this point all symbols we're re-exported from the main module so this no effect there. However, if you've extended on of the symbols using augmentation you will need to update the augmentation module path. - ngrid: Since the registry and it's type mapping symbols are for intenral or plugin use they are now part of the core pacakge. Currently the single/multi directives are still in the main package but they might also be moved in a later phase
- ngrid: If you've used
unrx
in your code, it is not located in@pebula/ngrid/core
since it is not for used by "regular" users, only required for plugin authoring. - ngrid: Pagination types have moved from
@pebula/ngrid
to@pebula/ngrid/core
as part of the cleanup process to simplify the main package.@pebula/ngrid
re-exports the interfaces and types but the concrete implementations forPblPagingPaginator
andPblTokenPaginator
are now in the core pacakge as they are not intended to be used by "regular" users, only plugin authors. - ngrid: Binding
[grid]
and[row]
is no longer required. Same fordetailRow
andinfiniteRow
- ngrid:
resize-observer-polyfill
is no longer a peerDependency and is not required by the library. If you want polyfill support please import the polyfill using polyfill.ts - ngrid:
prop
andspan
are deprecated fromPblColumnGroupDefinition
and will be removed from version 4.0.0prop
andspan
are removed fromPblColumnGroup
and instread columnIds list is used - ngrid: If you used the hideColumns property (setter only) via code and not via html binding it will no longer work. Instead, use the new api to add/remove columns. If you used it via bindings, it will still work but it is not recommended because other plugins that use the API will override values from the array provided.
- ngrid: don't attach global templates to the root registry (0494678)
- ngrid: fix group logic (e75e493)
- ngrid: fix virtual page height (633a37d)
- ngrid: pagination reset when filter is on (468de4f), closes #78
- ngrid-bootstrap: initial bootstrap support (80d6a85)
- ngrid: support tree-shakable errors (0fa90ff)
- ngrid: PblNgridRegistryService back to main package (9a194e8)
- ngrid: column header sticky rows index is wrong (c122e9d)
- ngrid/drag: support column & row reorder on the same host (c1312c9)
- ngrid/drag: support row reordering in virtual scroll (5a24eec)
- ngrid/infinite-scroll: scroll page init without reason (54a1b65)
- ngrid: move column (some) and datasource symbols to core package (33d2bca)
- ngrid: move configuration symbols to core package (fc259ba)
- ngrid: move most of utils to
@pebula/ngrid/core
(2990511) - ngrid: move registry to core package (55e8f31)
- ngrid: moved pagination types to core (cad0f5b)
- ngrid: disable wheel mode when virtual scroll paging is active (25d269e)
- ngrid: To reduce clutter in the main packge the configuration symbols moved to
@pebula/ngrid/core
. At this point all symbols were re-exported from the main module so this no effect there. However, if you've extended on of the symbols using augmentation you will need to update the augmentation module path. - ngrid: To reduce clutter in the main packge the datasource symbols (all) and some of the column model symbols moved to
@pebula/ngrid/core
. At this point all symbols we're re-exported from the main module so this no effect there. However, if you've extended on of the symbols using augmentation you will need to update the augmentation module path. - ngrid: Since the registry and it's type mapping symbols are for intenral or plugin use they are now part of the core pacakge. Currently the single/multi directives are still in the main package but they might also be moved in a later phase
- ngrid: If you've used
unrx
in your code, it is not located in@pebula/ngrid/core
since it is not for used by "regular" users, only required for plugin authoring. - ngrid: Pagination types have moved from
@pebula/ngrid
to@pebula/ngrid/core
as part of the cleanup process to simplify the main package.@pebula/ngrid
re-exports the interfaces and types but the concrete implementations forPblPagingPaginator
andPblTokenPaginator
are now in the core pacakge as they are not intended to be used by "regular" users, only plugin authors.
- ngrid: do not auto-clear context on source changing (e49d4ff)
- ngrid: missed a row when measuring virtual height (cf9ebfe)
- ngrid: rtl not working with live changes in direction (2956192), closes #141
- ngrid: workaround virtual scroll height limitation in browsers (233e3b2)
- ngrid: wrong ds index reference in context when using multirow setup (58ab268)
- ngrid/block-ui: allow BooleanInput for strict mode (2a9770a)
- ngrid/block-ui: wait for grid init before creating view (b9d1ea3)
- ngrid/infinite-scroll: proper reflection of refresh trigger state vs infitie scroll trigger state (3340bc9)
- ngrid/target-events: keyboard focus does not sync when virtual scrolling (b488d91), closes #117
- ngrid: refactor the cell rendering engine and refactor the group definitions (4882e4a), closes #123 #131
- ngrid: simplify working with rows (a81b1af)
- ngrid: 3rd party storage for context api (#132) (0c9ca4c), closes #10 #127
- ngrid: allow minimum height based on row count (296fe5d)
- ngrid: cache when rendering rows (170c2d4)
- ngrid: custom row override (fec9445)
- ngrid: implement dynamic virtual scroll strategy (30117a3)
- ngrid: new api to add/remove columns (7a79b2e)
- ngrid: use intersection observer (161371b)
- ngrid-cypress: new package with cypress helpers (similar to harnesses) (e33d638)
- ngrid/detail-row: implement global detail row instance manager (f30c335)
- ngrid/testing: add test harnesses for ngrid, columns and data rows/cells (19bbba6)
- ngrid: rebuild columns/cells inside rows when invalidating (35bbea8)
- ngrid: use internal row context (f7f8367)
- ngrid: Binding
[grid]
and[row]
is no longer required. Same fordetailRow
andinfiniteRow
- ngrid:
resize-observer-polyfill
is no longer a peerDependency and is not required by the library. If you want polyfill support please import the polyfill using polyfill.ts - ngrid:
prop
andspan
are deprecated fromPblColumnGroupDefinition
and will be removed from version 4.0.0
prop
and span
are removed from PblColumnGroup
and instread columnIds list is used
- ngrid: If you used the hideColumns property (setter only) via code and not via html binding it will no longer work. Instead, use the new api to add/remove columns. If you used it via bindings, it will still work but it is not recommended because other plugins that use the API will override values from the array provided.
- ngrid: support dynamic RTL layout change (1520f29)
- ngrid/overlay-panel: change detection is disconnected when opening panels (b95eb50), closes #95
- ngrid: add RTL support (5488ad9)
- ngrid: remove deep covariance generic constraint (110ccd4), closes #121
- ngrid: remove duplicate rendering of header cells (be9036d)
- ngrid/infinite-scroll: handle partial range results (c104069), closes #125
- ngrid/infinite-scroll: proper handling of custom triggers (0e32499), closes #124
- ngrid-material/selection-column: disable animation to prevent flickering (7b45329)
- ngrid-material/selection-column: reset listeners when bulk mode changes (e802997)
- ngrid columnDef override error (e6dbf9c), closes #118
- ngrid: detect edge case where row index might be out of sync (5ac6496)
- ngrid: fix memory leak when registering for create (db003dd)
- ngrid/infinite-scroll: implement infinite scroll (a08c977)
- ngrid: align with CDK changes (ebd7aa9)
- ngrid: upgrade to angular 10, cdk 10 and material 10 (40c091e)
- ngrid: remove UnRx as decorator (fixes #92) (733cf71)
- ngrid: dont use decorators for NgridPlugin (fixes #92) (703b4b3)
- ngrid: If you created a custom plugin which required registration, registration is not longer supported using decorators. Instead, register using the ngridPlugin method.
- ngrid: allow running in ViewEngine mode (fixes #84) (#86) (fad8409)
- ngrid/drag: fully implement interface (66f896b)
- ngrid: support angular 9 (#79) (9f80f9e)
- ngrid/drag: sneaky issue with PblDragDrop and AOT (5eb6929)
- ngrid/clipboard: copy rows in logical order (be53250)
- ngrid: document.contains fails on IE (bdc4b10)
- ngrid: breaking change in cdk/drag (7c9e4fe)
-
ngrid: terminology, change from 'table' to 'grid' (4ca1a1e)
-
ngrid: refactor(ngrid): width in isolation (a6d9290)
- ngrid: This refactor changes the terminology used by the library from legacy "table" references to "grid" references.
This refactor addressed filenames and property names but did not include literal string names, and property names of configuration objects (e.g. configs...) so functions that accepted 'table' will still accept it.
Filenames change should not have any effect unless you are extending the types using TS augmentation so any
declare module '@pebula/ngrid/lib/table/...
will have to change. For property names, all private/protected references totable
are nowgrid
and also all public references, however is most public ref's a getter was added to support thetable
property, with a@deprecated
JSDoc annotation
- ngrid: refactor width change detection (4ba3ae0)
- ngrid: vScrollAuto and vScrollFix are not working when used with binding (d7c7a5a)
- ngrid: proper property descriptors (0f0aabb)
- ngrid/drag: fix row ordering issues (2ec8dca)
This fix allows proper move on scroll operations and in addition proper handling of row move when used in virtual scroll mode. However, the UI placeholder in virtual scroll mode is not working properly due to lack of support in the cdk drag package.
- ngrid: consider hz scroll on height calc in vScrollNone (9d16a5a)
- ngrid: handle height properly with vScrollNone (fe83e5f)
- ngrid: deprecate
identityProp
in favor ofpIndex
(a3edfbd)
- ngrid/clipboard: add separator options (b126951)
- ngrid: The
identityProp
input on the grid host (pbl-ngrid
) is now deprecated in favor of thepIndex
property on the column definitions. For more information, read this docidentityProp
will be removed in version 1.0.0
- ngrid: get data item from cell reference (cf5506b)
- ngrid/clipboard: new plugin copy to clipboard (1c52069)
- ngrid: bump angular to version 8.2.2 (8f82092)
ngrid:
-
This bump included a bump in TS as well, to 3.5.3. TS 3.5.3 introduces a breaking change which was fixed in this release.
-
Moving from
@angular/cli 8.0.3
introduces a breaking change. The package@ngtools/[email protected]
is now addingctorParameters
property to all classes with ctor params, even the non-injectable ones which now will have a hard reference leading to a circular dependency error. This release includes a refactor of the code to fit this paradigm until someone in angular understands this and push a fix...
- docs: docs indicate using an invalid columns format (9e7b30f), closes #31
- docs: handle entire link-item click (73b1d36)
- ngrid-material/context-menu: lower trigger z-index (4e1fb92)
- ngrid/detail-row: dont access extApi to get grid (d9ea126)
- ngrid: can not invalidate column if split header group exist (7db5a39)
- ngrid: fixed row container should show all content (5dec91b)
- ngrid: fixed virtual scroll wrong offset on filter (56ff95f), closes #11
- ngrid: parent cell-syle update on initial load (bfc2251)
- ngrid/detail-row: detail row template outside grid scope (c6ca3e5), closes #1
- ngrid: remove multi box-model support (6bf2544)
- ngrid: add new event - beforeInvalidateHeaders (ecab8d1)
- ngrid: allow ad-hoc generic header extensions via templates (b224c95)
- ngrid-material/context-menu: new plugin for context menus (4826c72)
- ngrid/overlay-panel: plugin that helps poping up overlay panels (cedd949)
- ngrid:
PblNgridComponent.boxSpaceModel
was used to set the box-model strategy of the cells, either margin or padding. Padding was the deault, when switching to margin a lot of CSS overwrites were applied and different width logic was used for column calculations. This was the case at the very start but as more and more features were added it got very hard to maintain and only padding strategy was updated and margin was not working properly, especially when used with group headers. For this reason I've decided to deprecate it as it is probably not used by anyone and adds unwanted complaxity. If it will be requried in future versions we can apply it through a plugin.
- This release is not backward compatible with angular v7 due to breaking changes in the angular compiler in v8
- ngrid: Beacuse angular 8 has a new implementation for
ngStyle
andngClass
a new directive is needed which replacesparentNgStyle
andparentNgClass
that are not longer used, usengridCellClass
andngridCellStyle
instead.
- ngrid: enhance sorting and filtering APIs (#19) (9961314)
- ngrid/state: workaround tree shakable expression in ngrid/state (abae5a5)
- ngrid: workaround tree shakable expression in extending plugins (c602bd9)
- ngrid/drag: workaround inheritance limit to a depth of 1 (e2d9960)
- ngrid: new default-dark and default-light themes bundled (cc0e10c)
- ngrid-material: new themes bundled matching the material bundled themes (cc0e10c)
- ngrid-material: removed SCSS theming helpers (cc0e10c)
- ngrid: bundle SCSS theme into a single file (cc0e10c)
- The ngrid-material package does not have SCSS theming helper any more. All SCSS theme files are now located in the core package (@pebula/ngrid)