-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Support Angular 20 #2244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Support Angular 20 #2244
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Co-authored-by: Fabio Huser <[email protected]>
Co-authored-by: Fabio Huser <[email protected]>
Co-authored-by: Fabio Huser <[email protected]>
Co-authored-by: Fabio Huser <[email protected]>
* 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]>
Co-authored-by: Fabio Huser <[email protected]>
Co-authored-by: Fabio Huser <[email protected]>
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.
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.
…ular 17 and earlier versions
steveblue
approved these changes
Jun 27, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
DOCUMENTfrom@angular/commonto@angular/core.What kind of change does this PR introduce? (check one with "x")
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")
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: