Skip to content

feat: Upgraded component-library-angular to Angular 20 and added a new Angular app to example-project#652

Merged
christian-bromann merged 19 commits intostenciljs:mainfrom
gratzl-dev:feature/ng-consumer-app
Jun 13, 2025
Merged

feat: Upgraded component-library-angular to Angular 20 and added a new Angular app to example-project#652
christian-bromann merged 19 commits intostenciljs:mainfrom
gratzl-dev:feature/ng-consumer-app

Conversation

@gratzl-dev
Copy link
Copy Markdown
Contributor

Pull request checklist

Please check if your PR fulfills the following requirements:

  • Tests for the changes have been added (for bug fixes / features)
  • Docs have been reviewed and added / updated if needed (for bug fixes / features)
  • Build (npm run build) was run locally for affected output targets
    ^On this note, the build only works if ng-app is run last, this is accounted for in the build script.. But the solution is not pretty. Maybe somebody has a better idea
  • Tests (npm test) were run locally and passed
  • Prettier (npm run prettier) was run locally and passed

Pull request type

Please check the type of change your PR introduces:

  • Bugfix
  • Feature
  • Code style update (formatting, renaming)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • Documentation content changes
  • Other (please describe):

What is the current behavior?

example-project's component-library-angular uses angular 16 and relies heavily on Angular Modules instead of standalone components, which are the default way to go since Angular 17.

Furthermore, there is no current angular demo application, making it difficult to debug angular output issues, for other bug fixes, such as #54 in my case

What is the new behavior?

  • replaced existing component-library-angular with newly generated angular library (read more here: https://angular.dev/tools/libraries/creating-libraries)
  • the angular library now uses ng-packagr instead of ngc to build the bundle
    • this is the default for current libraries (see link above)
  • set the stencil.config angular outputType to standalone, since that should be the default for most cases
  • migrated existing jest tests to use standalone testbed fixture components
  • created ng-app, a angular 20 application using the minimal create option
  • fixed typescript errors for ValueAccessors
    • target could be null and .checked is not a known type of InputEvent

Does this introduce a breaking change?

  • Yes
  • No

This PR (almost) only affects the example-project, except the typescript fix, which does not affect the functionality

Other information

It is a big jump from angular 16 to angular 20, but this PR would allow future modifications and fixes to the angular output package.

If you have any questions or concerns about this PR, feel free to ping me on discord @gratzl

@gratzl-dev gratzl-dev changed the base branch from next to main June 12, 2025 14:11
@gratzl-dev gratzl-dev requested a review from a team as a code owner June 12, 2025 14:11
Copy link
Copy Markdown
Member

@christian-bromann christian-bromann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First off, thanks a ton 🫶 I've never used Angular so I always pushed this to the back burner. This is super helpful, thanks a lot!

Aside from the inline comments, I have a more general questions:

In the example-project/component-library-angular project, is there any advantage of using Angular's multiple project file structure? I am sure this makes sense when building a large scale Angular project but for this context I wonder if it creates complexity - I am asking also because it is currently how we have setup our designsystem-boilerplate and I wonder if this makes sense there too

multi: true
}
]
],standalone: true
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we update the template to put this into a new line?

Suggested change
],standalone: true
],
standalone: true

Copy link
Copy Markdown
Contributor Author

@gratzl-dev gratzl-dev Jun 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was contemplating to change it, but didn't want to bloat up the PR with unrelated stuff.
I think it would be wise to clean up the template generators when implementing this: #648

</div>
</form>

{{ formGroup.getRawValue() | json }}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this just printing out the raw value as text?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, to show that the form properties are updated correctly

gratzl-dev and others added 3 commits June 13, 2025 10:09
…checkbox-tests.html

Co-authored-by: Christian Bromann <git@bromann.dev>
…ests/complex-props-tests.ts

Co-authored-by: Christian Bromann <git@bromann.dev>
…t/my-range.spec.ts

Co-authored-by: Christian Bromann <git@bromann.dev>
@gratzl-dev
Copy link
Copy Markdown
Contributor Author

First off, thanks a ton 🫶 I've never used Angular so I always pushed this to the back burner. This is super helpful, thanks a lot!

Aside from the inline comments, I have a more general questions:

In the example-project/component-library-angular project, is there any advantage of using Angular's multiple project file structure? I am sure this makes sense when building a large scale Angular project but for this context I wonder if it creates complexity - I am asking also because it is currently how we have setup our designsystem-boilerplate and I wonder if this makes sense there too

Thank you for taking the time to review my pull request!

The way the angular workspace is set up now, is simply how the angular team defines libraries to be set up.
Other than, let's say react, angular has a stricter eco-system where there are standards which the developers should follow.
This PR ensures that this project now also follows the angular convention.

Also, looking at the designsystem-boilerplate, this "modernized" project structure is already in place there, so that's good.
But a version upgrade would not hurt there aswell, since it's still on angular 15 😄

@gratzl-dev
Copy link
Copy Markdown
Contributor Author

Also I just had a idea to consider...

Would it be possible to use the designsystem-boilerplate repo as a submodule in place of the example-project?

Then there would only be one example repo which needs to be maintained

Copy link
Copy Markdown
Member

@christian-bromann christian-bromann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

@christian-bromann
Copy link
Copy Markdown
Member

Then there would only be one example repo which needs to be maintained

I did consider that but recognised that the example projects we have here are straight for testing, e.g. for React I created a little testbed to run validations for all React variations easily. I don't want to bloat up the boilerplate with that and rather keep it basic.

@christian-bromann
Copy link
Copy Markdown
Member

Let me investigate the build issue:

Failed downloading chromedriver v137.0.7151.55 using {"cacheDir":"/tmp","buildId":"137.0.7151.55","platform":"linux","browser":"chromedriver","unpack":true}: The browser folder (/tmp/chromedriver/linux-137.0.7151.55) exists but the executable (/tmp/chromedriver/linux-137.0.7151.55/chromedriver-linux64/chromedriver) is missing

This seems unrelated to your change. I will go ahead and merge this and then fix it on main.

@christian-bromann christian-bromann merged commit a6fefb6 into stenciljs:main Jun 13, 2025
1 of 3 checks passed
github-actions bot pushed a commit that referenced this pull request Jan 3, 2026
## [0.2.0](https://github.com/stenciljs/output-targets/compare/@stencil/ssr@0.1.0...@stencil/ssr@0.2.0) (2026-01-03)

### 🚀 Enhancement

* **react:** enhance React output target with unified server/client imports and improved SSR property serialization ([132f9d9](132f9d9))
* Upgraded component-library-angular to Angular 20 and added a new Angular app to example-project ([#652](#652)) ([a6fefb6](a6fefb6)), closes [#643](#643)
* **vue:** implement custom event property as source for v-model ([#689](#689)) ([bc385bb](bc385bb))

### 🐛 Bug Fix

* **#646:** react create components.ts file ([#647](#647)) ([7524cbf](7524cbf)), closes [#646](#646) [#646](#646)
* **angular:** include outputs in angular component definition ([#688](#688)) ([16f1fd1](16f1fd1)), closes [#643](#643) [#643](#643)
* **angular:** prettify code ([69e1cba](69e1cba))
* **angular:** use forwardRef in control value accessor directives. ([#697](#697)) ([dcb4bd2](dcb4bd2))
* **ci:** run in macos environment ([0631306](0631306))
* **dependabot:** don't run updates based on projects ([3d43687](3d43687))
* **dependabot:** group updates of minor and patch versions in a single PR ([47bdb20](47bdb20))
* **dependabot:** optimize configuration ([ce29757](ce29757))
* **internal:** update changelog ([4bb6cfc](4bb6cfc))
* nuxt ssr mismatch class errors ([#651](#651)) ([be797b1](be797b1))
* **react:** always use per-component CustomEvent types for event props ([#716](#716)) ([8ebba85](8ebba85)), closes [#531](#531)
* **react:** better style to css transformation ([ccc76a7](ccc76a7))
* **react:** fixed wording in component wrapper ([a83bb4b](a83bb4b))
* **react:** forward ref to underlying web component ([#655](#655)) ([9f20ee0](9f20ee0))
* **react:** improved SSR for Next.js ([#683](#683)) ([c49a3b5](c49a3b5))
* **react:** make types compatible with v18 and v19 ([f887ae7](f887ae7))
* **react:** properly type generated component files ([3e7cc0c](3e7cc0c))
* **react:** revive esModules option ([d98df24](d98df24))
* revert model update event renaming ([#649](#649)) ([5c67692](5c67692))
* **ssr:** improved SSR handling in Next.js ([#641](#641)) ([22e075f](22e075f))
* **vue:** remove unnecessary vue patch ([34f7ce2](34f7ce2))

### 📝 Documentation

* **internal:** link release workflow ([0e69d0e](0e69d0e))
* **internal:** update contributing guidelines ([08c96fd](08c96fd))
github-actions bot pushed a commit that referenced this pull request Jan 3, 2026
## [0.2.0](https://github.com/stenciljs/output-targets/compare/@stencil/ssr@0.1.0...@stencil/ssr@0.2.0) (2026-01-03)

### 🚀 Enhancement

* **react:** enhance React output target with unified server/client imports and improved SSR property serialization ([132f9d9](132f9d9))
* Upgraded component-library-angular to Angular 20 and added a new Angular app to example-project ([#652](#652)) ([a6fefb6](a6fefb6)), closes [#643](#643)
* **vue:** implement custom event property as source for v-model ([#689](#689)) ([bc385bb](bc385bb))

### 🐛 Bug Fix

* **#646:** react create components.ts file ([#647](#647)) ([7524cbf](7524cbf)), closes [#646](#646) [#646](#646)
* **angular:** include outputs in angular component definition ([#688](#688)) ([16f1fd1](16f1fd1)), closes [#643](#643) [#643](#643)
* **angular:** prettify code ([69e1cba](69e1cba))
* **angular:** use forwardRef in control value accessor directives. ([#697](#697)) ([dcb4bd2](dcb4bd2))
* **ci:** run in macos environment ([0631306](0631306))
* **dependabot:** don't run updates based on projects ([3d43687](3d43687))
* **dependabot:** group updates of minor and patch versions in a single PR ([47bdb20](47bdb20))
* **dependabot:** optimize configuration ([ce29757](ce29757))
* **internal:** update changelog ([4bb6cfc](4bb6cfc))
* nuxt ssr mismatch class errors ([#651](#651)) ([be797b1](be797b1))
* **react:** always use per-component CustomEvent types for event props ([#716](#716)) ([8ebba85](8ebba85)), closes [#531](#531)
* **react:** better style to css transformation ([ccc76a7](ccc76a7))
* **react:** fixed wording in component wrapper ([a83bb4b](a83bb4b))
* **react:** forward ref to underlying web component ([#655](#655)) ([9f20ee0](9f20ee0))
* **react:** improved SSR for Next.js ([#683](#683)) ([c49a3b5](c49a3b5))
* **react:** make types compatible with v18 and v19 ([f887ae7](f887ae7))
* **react:** properly type generated component files ([3e7cc0c](3e7cc0c))
* **react:** revive esModules option ([d98df24](d98df24))
* revert model update event renaming ([#649](#649)) ([5c67692](5c67692))
* **ssr:** improved SSR handling in Next.js ([#641](#641)) ([22e075f](22e075f))
* **vue:** remove unnecessary vue patch ([34f7ce2](34f7ce2))

### 📝 Documentation

* **internal:** link release workflow ([0e69d0e](0e69d0e))
* **internal:** update contributing guidelines ([08c96fd](08c96fd))
johnjenkins pushed a commit that referenced this pull request Jan 3, 2026
## [0.2.0](https://github.com/stenciljs/output-targets/compare/@stencil/ssr@0.1.0...@stencil/ssr@0.2.0) (2026-01-03)

### 🚀 Enhancement

* **react:** enhance React output target with unified server/client imports and improved SSR property serialization ([132f9d9](132f9d9))
* Upgraded component-library-angular to Angular 20 and added a new Angular app to example-project ([#652](#652)) ([a6fefb6](a6fefb6)), closes [#643](#643)
* **vue:** implement custom event property as source for v-model ([#689](#689)) ([bc385bb](bc385bb))

### 🐛 Bug Fix

* **#646:** react create components.ts file ([#647](#647)) ([7524cbf](7524cbf)), closes [#646](#646) [#646](#646)
* **angular:** include outputs in angular component definition ([#688](#688)) ([16f1fd1](16f1fd1)), closes [#643](#643) [#643](#643)
* **angular:** prettify code ([69e1cba](69e1cba))
* **angular:** use forwardRef in control value accessor directives. ([#697](#697)) ([dcb4bd2](dcb4bd2))
* **ci:** run in macos environment ([0631306](0631306))
* **dependabot:** don't run updates based on projects ([3d43687](3d43687))
* **dependabot:** group updates of minor and patch versions in a single PR ([47bdb20](47bdb20))
* **dependabot:** optimize configuration ([ce29757](ce29757))
* **internal:** update changelog ([4bb6cfc](4bb6cfc))
* nuxt ssr mismatch class errors ([#651](#651)) ([be797b1](be797b1))
* **react:** always use per-component CustomEvent types for event props ([#716](#716)) ([8ebba85](8ebba85)), closes [#531](#531)
* **react:** better style to css transformation ([ccc76a7](ccc76a7))
* **react:** fixed wording in component wrapper ([a83bb4b](a83bb4b))
* **react:** forward ref to underlying web component ([#655](#655)) ([9f20ee0](9f20ee0))
* **react:** improved SSR for Next.js ([#683](#683)) ([c49a3b5](c49a3b5))
* **react:** make types compatible with v18 and v19 ([f887ae7](f887ae7))
* **react:** properly type generated component files ([3e7cc0c](3e7cc0c))
* **react:** revive esModules option ([d98df24](d98df24))
* revert model update event renaming ([#649](#649)) ([5c67692](5c67692))
* **ssr:** improved SSR handling in Next.js ([#641](#641)) ([22e075f](22e075f))
* **vue:** remove unnecessary vue patch ([34f7ce2](34f7ce2))

### 📝 Documentation

* **internal:** link release workflow ([0e69d0e](0e69d0e))
* **internal:** update contributing guidelines ([08c96fd](08c96fd))
johnjenkins added a commit that referenced this pull request Jan 3, 2026
* chore(release): @stencil/vue-output-target@0.11.0 [skip ci]

## [0.11.0](https://github.com/stenciljs/output-targets/compare/@stencil/vue-output-target@0.10.8...@stencil/vue-output-target@0.11.0) (2026-01-03)

### 🚀 Enhancement

* **react:** enhance React output target with unified server/client imports and improved SSR property serialization ([132f9d9](132f9d9))
* **vue:** implement custom event property as source for v-model ([#689](#689)) ([bc385bb](bc385bb))

### 🐛 Bug Fix

* **angular:** include outputs in angular component definition ([#688](#688)) ([16f1fd1](16f1fd1)), closes [#643](#643) [#643](#643)
* **angular:** prettify code ([69e1cba](69e1cba))
* **angular:** use forwardRef in control value accessor directives. ([#697](#697)) ([dcb4bd2](dcb4bd2))
* **dependabot:** don't run updates based on projects ([3d43687](3d43687))
* **dependabot:** group updates of minor and patch versions in a single PR ([47bdb20](47bdb20))
* **dependabot:** optimize configuration ([ce29757](ce29757))
* **internal:** update changelog ([4bb6cfc](4bb6cfc))
* **react:** always use per-component CustomEvent types for event props ([#716](#716)) ([8ebba85](8ebba85)), closes [#531](#531)
* **react:** better style to css transformation ([ccc76a7](ccc76a7))
* **react:** forward ref to underlying web component ([#655](#655)) ([9f20ee0](9f20ee0))
* **react:** improved SSR for Next.js ([#683](#683)) ([c49a3b5](c49a3b5))
* **react:** properly type generated component files ([3e7cc0c](3e7cc0c))
* **vue:** remove unnecessary vue patch ([34f7ce2](34f7ce2))

### 📝 Documentation

* **internal:** link release workflow ([0e69d0e](0e69d0e))
* **internal:** update contributing guidelines ([08c96fd](08c96fd))

* chore(release): @stencil/react-output-target@1.2.1 [skip ci]

## [1.2.1](https://github.com/stenciljs/output-targets/compare/@stencil/react-output-target@1.2.0...@stencil/react-output-target@1.2.1) (2026-01-03)

### 🚀 Enhancement

* **vue:** implement custom event property as source for v-model ([#689](#689)) ([bc385bb](bc385bb))

### 🐛 Bug Fix

* **angular:** include outputs in angular component definition ([#688](#688)) ([16f1fd1](16f1fd1)), closes [#643](#643) [#643](#643)
* **angular:** use forwardRef in control value accessor directives. ([#697](#697)) ([dcb4bd2](dcb4bd2))
* **react:** always use per-component CustomEvent types for event props ([#716](#716)) ([8ebba85](8ebba85)), closes [#531](#531)

### 📝 Documentation

* **internal:** link release workflow ([0e69d0e](0e69d0e))
* **internal:** update contributing guidelines ([08c96fd](08c96fd))

* chore(release): @stencil/ssr@0.2.0 [skip ci]

## [0.2.0](https://github.com/stenciljs/output-targets/compare/@stencil/ssr@0.1.0...@stencil/ssr@0.2.0) (2026-01-03)

### 🚀 Enhancement

* **react:** enhance React output target with unified server/client imports and improved SSR property serialization ([132f9d9](132f9d9))
* Upgraded component-library-angular to Angular 20 and added a new Angular app to example-project ([#652](#652)) ([a6fefb6](a6fefb6)), closes [#643](#643)
* **vue:** implement custom event property as source for v-model ([#689](#689)) ([bc385bb](bc385bb))

### 🐛 Bug Fix

* **#646:** react create components.ts file ([#647](#647)) ([7524cbf](7524cbf)), closes [#646](#646) [#646](#646)
* **angular:** include outputs in angular component definition ([#688](#688)) ([16f1fd1](16f1fd1)), closes [#643](#643) [#643](#643)
* **angular:** prettify code ([69e1cba](69e1cba))
* **angular:** use forwardRef in control value accessor directives. ([#697](#697)) ([dcb4bd2](dcb4bd2))
* **ci:** run in macos environment ([0631306](0631306))
* **dependabot:** don't run updates based on projects ([3d43687](3d43687))
* **dependabot:** group updates of minor and patch versions in a single PR ([47bdb20](47bdb20))
* **dependabot:** optimize configuration ([ce29757](ce29757))
* **internal:** update changelog ([4bb6cfc](4bb6cfc))
* nuxt ssr mismatch class errors ([#651](#651)) ([be797b1](be797b1))
* **react:** always use per-component CustomEvent types for event props ([#716](#716)) ([8ebba85](8ebba85)), closes [#531](#531)
* **react:** better style to css transformation ([ccc76a7](ccc76a7))
* **react:** fixed wording in component wrapper ([a83bb4b](a83bb4b))
* **react:** forward ref to underlying web component ([#655](#655)) ([9f20ee0](9f20ee0))
* **react:** improved SSR for Next.js ([#683](#683)) ([c49a3b5](c49a3b5))
* **react:** make types compatible with v18 and v19 ([f887ae7](f887ae7))
* **react:** properly type generated component files ([3e7cc0c](3e7cc0c))
* **react:** revive esModules option ([d98df24](d98df24))
* revert model update event renaming ([#649](#649)) ([5c67692](5c67692))
* **ssr:** improved SSR handling in Next.js ([#641](#641)) ([22e075f](22e075f))
* **vue:** remove unnecessary vue patch ([34f7ce2](34f7ce2))

### 📝 Documentation

* **internal:** link release workflow ([0e69d0e](0e69d0e))
* **internal:** update contributing guidelines ([08c96fd](08c96fd))

* chore:

* Update CHANGELOG.md

---------

Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: John Jenkins <johnljenkins@Hotmail.com>
Co-authored-by: John Jenkins <john.jenkins@nanoporetech.com>
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.

2 participants