New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@reportwright/angular

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@reportwright/angular

ReportWright viewer and designer custom elements for Angular (CUSTOM_ELEMENTS_SCHEMA).

latest
Source
npmnpm
Version
1.0.1
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

@reportwright/angular

<reportwright-viewer> and <reportwright-designer> custom elements: the ReportWright report viewer and drag-and-drop designer in Angular.

npm license Socket

Live demo: mrarun005.github.io/reportwright-demo (Embed it shows the wrapper code; the designer playground is the designer these elements mount).

Custom elements need no Angular compiler step, so they work with any Angular version.

The viewer

Install

npm i @reportwright/angular @reportwright/viewer @reportwright/fonts

Serve the fonts as static assets, e.g. in angular.json under assets: { "glob": "**/*", "input": "node_modules/@reportwright/fonts/public", "output": "pw" }, then pass fontsUrl: '/pw/fonts/'.

Quick start (30 seconds)

// main.ts
import { defineReportWrightElements } from '@reportwright/angular';
defineReportWrightElements();

// orders.component.ts
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import definition from './orders.pw.json';   // the report from @reportwright/engine's README examples (resolveJsonModule)

@Component({
  selector: 'app-orders',
  standalone: true,
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  template: `<reportwright-viewer [options]="options" style="display:block;height:720px"></reportwright-viewer>`,
})
export class OrdersComponent {
  options = {
    definition,
    data: { orders: { rows: [{ customer: 'Asha Rao', amount: 1200.5 }, { customer: 'Ben Ode', amount: 80 }] } },
    fontsUrl: '/pw/fonts/',
  };
}

The elements were verified against this version with Vite 7 in Chromium (created from plain JavaScript, as Angular does).

Examples

Get the handle, re-run with parameters, export:

@Component({
  selector: 'app-orders',
  standalone: true,
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  template: `
    <button (click)="viewer?.setParameters({ minAmount: 100 })">Over 100</button>
    <button (click)="excel()">Excel</button>
    <reportwright-viewer [options]="options" (pw-ready)="viewer = $event.detail"></reportwright-viewer>`,
})
export class OrdersComponent {
  viewer?: ViewerHandle;   // import type { ViewerHandle } from '@reportwright/angular'
  options = { definition, data: { orders }, fontsUrl: '/pw/fonts/' };
  async excel() { open(URL.createObjectURL(await this.viewer!.export('xlsx'))); }
}

Edit a report and save it (without onSave in the options, the designer fires pw-save):

<reportwright-designer [options]="{ definition: def, fontsUrl: '/pw/fonts/' }" (pw-save)="save($event.detail)"></reportwright-designer>

With a self-hosted ReportWright server:

<reportwright-viewer [options]="{ server: 'https://reports.example.com', report: 'invoice', params: { id: id } }"></reportwright-viewer>
<reportwright-designer [options]="{ server: server, definition: def }" (pw-save)="save($event.detail)"></reportwright-designer>

A runnable app is in the repository's examples/angular.

Properties, attributes and events

ElementMeaning
options propertyboththe options of mountViewer / mountDesigner (full table in @reportwright/viewer)
server, report, height, lang attributesboththe same options as attributes
pw-readybothdetail: the ViewerHandle / DesignerHandle
pw-errorbothdetail: the error when the viewer's code did not load
pw-savedesignerdetail: the definition (only when options has no onSave)

Exports: defineReportWrightElements(), and the types ReportWrightViewerElement, ReportWrightDesignerElement, ReportWrightReadyEvent, ViewerHandle, DesignerHandle.

Support

Angular 14 or later (peer @angular/core >= 14). Browsers and limits are the viewer's: see @reportwright/viewer.

No server needed: pass definition, data (JSON by data source name) and fontsUrl (a copy of @reportwright/fonts/public/fonts). server (the self-hosted ReportWright server) is optional: see what works standalone.

@reportwright/viewer (what this wraps), @reportwright/engine, @reportwright/fonts, and the react, vue and svelte wrappers.

MIT.

Keywords

reportwright

FAQs

Package last updated on 19 Oct 2026

Related posts