Domo UI
This component library is built using Stencil. The purpose is to provide a standard set of Domo components for use by anyone internal or external to Domo.
Stencil
Stencil is a compiler for building fast web apps using Web Components.
Stencil combines the best concepts of the most popular frontend frameworks into a compile-time rather than run-time tool. Stencil takes TypeScript, JSX, a tiny virtual DOM layer, efficient one-way data binding, an asynchronous rendering pipeline (similar to React Fiber), and lazy-loading out of the box, and generates 100% standards-based Web Components that run in any browser supporting the Custom Elements v1 spec.
Stencil components are just Web Components, so they work in any major framework or with no framework at all.
Getting Started
There are a number of ways you can use this library:
Script tag
- Put a script tag similar to this
<script src='https://unpkg.com/@domoinc/domo-ui@{LATEST_VERSION}/dist/domo-ui.js'></script>
, replacing {LATEST_VERSION}
with the latest released version of the library, in the head of your index.html - Then you can use the elements anywhere in your template, JSX, html etc
In an Angular CLI app
- Run
npm install @domoinc/domo-ui --save
or yarn add @domoinc/domo-ui
- In your
AppModule
, import the CUSTOM_ELEMENTS_SCHEMA
from @angular/core
and add that to your schemas
array, like so:
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule],
providers: [],
bootstrap: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule {}
- Import the
defineCustomElements
function from the library and include it in your main.ts
file, like so:
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { defineCustomElements } from '@domoinc/domo-ui';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.log(err));
defineCustomElements(window);
- Then you can use the elements anywhere in your HTML, templates, etc.
More instructions coming soon