Skip to content

Conversation

@MarkColeman1
Copy link
Contributor

@MarkColeman1 MarkColeman1 commented Jun 26, 2025

  • Upgraded Angular dependencies to v20.
  • Upgraded Node.js to v22.16.0.
  • Upgraded TypeScript to v5.8.3.
  • Upgraded Yarn to v4.9.2.
  • (automated) Migrated all imports of DOCUMENT from @angular/common to @angular/core.
  • Removed support for Angular 17 and earlier versions. Angular 17 and earlier versions are no longer supported by the Angular team.

What kind of change does this PR introduce? (check one with "x")

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Other... Please describe:

What is the current behavior? (You can also link to an open issue here)

What is the new behavior?

Does this PR introduce a breaking change? (check one with "x")

  • Yes
  • No

If this PR contains a breaking change, please describe the impact and migration path for existing applications:

Support for Angular 17 and earlier versions has been removed.

Other information:

spike-rabbit and others added 30 commits June 26, 2025 10:58
BREAKING CHANGE: Removed several symbols from the public API that were intended to be internal.
This never made any sense. `cellTemplate` and `ghostLoaderTemplate` were never defined.
We previously ran `disableRowCheck` on groups instead of each row
if rows were grouped.
With this change, we only run the check on rows.
Besides this, the uncommon `disableRow$` subject was removed from template
contexts and replaced with a proper `disabled` field.
This simplifies the usage and prevents wrong expectations.
Although even shown in our example, calling `next` on the subject works
but the value will be overridden on the next CD cycle, so it was pointless.
Replacing the subject with a normal boolean resolves this problem.

Being able to subscribe to the subject is also not needed.
An application always knows whether a row was disabled
because they set it.

BREAKING CHANGE: The row detail context (`RowDetailContext`) no longer contains `disableRow$?: Observable<boolean>`.
Use the new `disabled: boolean` value instead.

BREAKING CHANGE: The cell context (`CellContext`) no longer contains `disableRow$?: Observable<boolean>`.
Use the new `disabled: boolean` value instead.

BREAKING CHANGE: `disableRowCheck` will only be called with actual rows.
Although documented otherwise, in the case of groups, the `disableRowCheck`
was only called for groups instead of each row inside that group.
This allows disabling single rows inside a group and not only entire groups.

To update the disabled state of a row just update the row itself instead of using the previous `disableRow$` subject.
The overall goal is to enable TypeScript strict mode.
To achieve this, we need to enable each subset first.
Replacing direct use of XMLHttpRequest with HttpClient.
This indirectly also improves typing, as the previous
code was using implicit any.
This will help us to enable noImplicitAny in the future.
* refactor: disable type check around detail height

---------

Co-authored-by: Fabio Huser <[email protected]>
…ps (#176)

This is a refactoring as we never released typing yet.

Co-authored-by: Fabio Huser <[email protected]>
…ernal properties from public API (#163)

* refactor: consolidate internal column creation

* refactor: introduce new `TableColumnInternal` interface to remove internal properties from public API

The datable already always "converted" (setting defaults) columns to an internal column definition.
Previously, the same interface was used for application provided columns and internal columns.

With this change, the interface is split. This brings two main benefits:
1. We can remove internal properties from the public interface (like `$$id`).
2. We can define internal properties that get defaulted as non-optional.

This change is relevant to enable strict null checks.
spike-rabbit and others added 25 commits June 26, 2025 14:16
Since ES2019 Array.sort is guaranteed to be stable.
* refactor: allow undefined on internal prop

* refactor: add missing Row type

* refactor: add new internal type for sortable rows

Sortable rows require a prop attribute. This should be reflected in the type to avoid unnecessary casting.
* refactor: mark all inputs on the table-column directive as optional

The interface should be assignable to directive.
Every field in the interface is optional,
so it has to be in the directive as well.

* refactor: mark row param of rowHeight function as always defined
* refactor: improve typing related to null checks

* docs: improve typing related to null checks

* test: improve typing related to null checks

* build: enable strict null checks
BREAKING CHANGE: All inputs except `template` of `DatatableFooterDirective` have been dropped.

Those were unused. Remove any usages without replacement.
* refactor: improve typing related to strict property init checks

* docs: improve typing related to strict property init checks

* test: improve typing related to strict property init checks

* build: enable strict mode
BREAKING CHANGE: Previously the datatable
applied `box-sizing: border-box` to all its elements.
This is no longer the case.

Custom themes that depend on this must set this behavior manually, using:

 ```css
   *,
   *:before,
   *:after {
     box-sizing: border-box;
   }
 ```
…ay to configure the datatable. (#259)

This also removes the previous breaking change of requiring new messages.
Since all messages are now optional.
We accidentally removed the flex container on column groups for pinning.
Please note that we have the same in body rows where we kept the container as flex.
The number of potentially rendered rows should be based on the `rowCount`
property which can be supplied externally for server paging.
This is needed for ghost loading as apps may provide rows
which are shorter than the `rowCount` and thus than the rendered rows.
By filling up the internal rows with `undefined` the ghost loading
works even though the rows provided are too short.
@MarkColeman1 MarkColeman1 requested a review from steveblue June 26, 2025 20:18
@MarkColeman1 MarkColeman1 marked this pull request as ready for review June 26, 2025 20:18
@MarkColeman1 MarkColeman1 merged commit f352a4c into master Jun 27, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants