@utrecht/web-component-library-angular
TypeScript icon, indicating that this package has built-in type declarations

1.0.0-alpha.630 • Public • Published

Web Components in Angular

The @utrecht/web-component-library-stencil package contains the actual implementation of every web component, while the @utrecht/web-component-library-angular only contains wrapper Angular components to help validate all the templates, and some supporting code to support Angular form bindings. The implementation of each component will be loaded separately and on-demand, so including the entire component library will not slow down your application.

Install both packages to use Angular components in your project:

npm install --save-dev --save-exact \
  @utrecht/web-component-library-angular \
  @utrecht/web-component-library-stencil

Include UtrechtWebComponentsModule in the root NgModule of your project:

import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { UtrechtWebComponentsModule } from "@utrecht/web-component-library-angular";

import { AppComponent } from "./app.component";

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, UtrechtWebComponentsModule],
  providers: [],
  bootstrap: [AppComponent],
})
export class AppModule {}

The components are rendered using custom elements, but since we provide a corresponding Angular component for every custom element, you don't need to configure CUSTOM_ELEMENTS_SCHEMA to make use of any of the components.

To make the custom elements work, you also need to call defineCustomElements() once in your page, immediately when it is loaded. Add this to main.ts:

import { defineCustomElements } from "@utrecht/web-component-library-stencil/loader";

defineCustomElements();

After this you can use web components in your templates:

<utrecht-heading level="1">Home</utrecht-heading>

<utrecht-paragraph>Hello world!</utrecht-paragraph>

To use the Utrecht theme for the components, use the utrecht-theme class name and include the design tokens CSS in your angular.json:

{
  "projects": {
    "my-app": {
      "architect": {
        "build": {
          "options": {
            "styles": ["node_modules/@utrecht/design-tokens/dist/index.css", "src/styles.css"]
          }
        }
      }
    }
  }
}

Readme

Keywords

Package Sidebar

Install

npm i @utrecht/web-component-library-angular

Weekly Downloads

804

Version

1.0.0-alpha.630

License

EUPL-1.2

Unpacked Size

2.94 MB

Total Files

28

Last publish

Collaborators

  • littlebobbytabl.es
  • yolijn
  • nl-design-system-ci