Skip to content

Conversation

@GCHQDev01001010
Copy link

Summary of the changes

Set up new output targets in the stencil config to output native angular wrapper components in a similar vein to the react components. Versions have been included that will allow the integrating developers to import the components as standalone items one-by-one at need or as a whole module. This also required the addition/alteration of the custom-elements-dist output to create an internal package for the web-components that the angular output plugin could use.

The package is included in the pack all script and other checks. Also includes an Angular schematic in the package so users can install simply with "ng add".

Documentation has been updated to indicate installation and useage of the new package and components and to provide clarity that this is a community-developed and supported addition as per the ICDS team's request.

(This is a rebuild of #4054 )

Related issue

closes #3933
& ic-design-system 850

Checklist

General

  • Changes to docs package checked and committed.
  • All acceptance criteria reviewed and met.

Testing

  • Relevant unit tests and visual regression tests added.
  • Visual testing against Figma component specification completed.
  • [-] Playground stories in React Storybook up to date, with any prop changes and additions addressed. - not needed, see 850 issue comments
  • [-] Compare performance of modified components against develop using Performance addon in React Storybook. - not needed, see 850 issue comments

Accessibility

  • Accessibility Insights FastPass performed.
  • A11y unit test added and yields no issues.
  • [-] A11y plug-in on Storybook yields no issues. - not including Storybook
  • Manual screen reader testing performed using NVDA and VoiceOver.
  • Manual keyboard testing for keyboard controls and logical focus order.
  • Correct roles used and ARIA attributes used correctly where required.
  • Logical heading structure is maintained, and the HTML elements used for headings can be changed to fit within the wider page structure.

Resize/zoom behaviour

  • Page can be zoomed to 400% with no loss of content.
  • Screen magnifier used with no issues.
  • Text resized to 200% with no loss of content.
  • Text spacing increased as per the WCAG 1.4.12 success criterion with no loss of content.

System modes

  • Browser setting 'prefers reduced motion' tested. No animations or motion visible whilst this setting is on.
  • Windows High Contrast mode tested with no loss of content.
  • System light and dark mode tested with no loss of content.
  • Browser support tested (Chrome, Safari, Firefox and Edge).

Testing content extremes

  • Min/max content examples tested with no loss of content or overflow.
  • All prop combinations work without issue.
  • Tested for FOUC (Flash of Unstyled Content) in both SSR (Server-Side Rendering) and SSG (Static Site Generation) settings.
  • Controlled and uncontrolled input components tested.
  • Props/slots can be updated after initial render.

Copy link
Contributor

@evenstensberg evenstensberg left a comment

Choose a reason for hiding this comment

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

A few more comments. Good work here so far!

@@ -0,0 +1,77 @@
/* eslint-disable */
/* tslint:disable */
Copy link
Contributor

Choose a reason for hiding this comment

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

any way to enable ts/eslint here when the pr is mature enough?

Copy link
Author

Choose a reason for hiding this comment

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

not that I know of, this is a file generated by the stencil output target so if we change it here it will just add it in again when the package is built next.
There also aren't any other config options for the library to omit generating these lines that I know of.

defineCustomElementFn();
}

if (inputs) {
Copy link
Contributor

Choose a reason for hiding this comment

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

inline proxyInputs(cls, inputs);

Copy link
Contributor

Choose a reason for hiding this comment

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

(if(cond) inline();)

Copy link
Author

Choose a reason for hiding this comment

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

Similarly, this is a generated file. With these single line conditionals I would agree with the styling, but again it's not something I know how to or even if it can be controlled.

import { ValueAccessor } from "./value-accessor";

@Directive({
/* tslint:disable-next-line:directive-selector */
Copy link
Contributor

Choose a reason for hiding this comment

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

possible to enable lint again?

Copy link
Author

Choose a reason for hiding this comment

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

See my previous comments

import { ValueAccessor } from "./value-accessor";

@Directive({
/* tslint:disable-next-line:directive-selector */
Copy link
Contributor

Choose a reason for hiding this comment

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

,--,

Copy link
Author

Choose a reason for hiding this comment

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

See my previous comments

import { ValueAccessor } from "./value-accessor";

@Directive({
/* tslint:disable-next-line:directive-selector */
Copy link
Contributor

Choose a reason for hiding this comment

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

,--,

Copy link
Author

Choose a reason for hiding this comment

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

See my previous comments

import { ValueAccessor } from "./value-accessor";

@Directive({
/* tslint:disable-next-line:directive-selector */
Copy link
Contributor

Choose a reason for hiding this comment

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

,--,

Copy link
Author

Choose a reason for hiding this comment

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

See my previous comments

@GCHQDev01001010 GCHQDev01001010 force-pushed the 3933-angular-wrappers branch 4 times, most recently from 743255b to 492581a Compare January 21, 2026 12:15
…arget for native components

Set up new output targets in the stencil config to output native angular wrapper components in a
similar vein to the react components. Versions have been included that will allow the integrating
developers to import the components as standalone items one-by-one at need or as a whole module.
This also required the addition/alteration of the custom-elements-dist output to create an internal
package for the web-components that the angular output plugin could use.

The package is included in the pack all script and other checks. Also includes an Angular schematic
in the package so users can install simply with "ng add".

Documentation has been updated to indicate installation and useage of the new package and
components and to provide clarity that this is a community-developed and supported addition as
per the ICDS team's request.

closes mi6#3933
pushed with no-verify as commitizen was undoing the prettier fixes
…i's dependencies

Vulnerability recently added for the hono package which is a dependency
of a dependency for @angular/cli. Tried updating cli to latest version but
this hasn't puhed hono onto a patched version.
@GCHQDev01001010
Copy link
Author

This has been moved to a fresh branch: #4206

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