UNPKG

primeng

Version:

PrimeNG is a premium UI library for Angular featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock,

1 lines 13 kB
{"version":3,"file":"primeng-chart.mjs","sources":["../../src/chart/style/chartstyle.ts","../../src/chart/chart.ts","../../src/chart/primeng-chart.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst inlineStyles = {\n root: ({ instance }) => ({ display: 'block', position: 'relative', width: instance.width(), height: instance.height() })\n};\n\nconst classes = {\n root: 'p-chart'\n};\n\n@Injectable()\nexport class ChartStyle extends BaseStyle {\n name = 'chart';\n\n classes = classes;\n\n inlineStyles = inlineStyles;\n}\n\n/**\n *\n * Chart groups a collection of contents in tabs.\n *\n * [Live Demo](https://www.primeng.org/chart/)\n *\n * @module chartstyle\n *\n */\nexport enum ChartClasses {\n /**\n * Class name of the root element\n */\n root = 'p-chart'\n}\n\nexport interface ChartStyle extends BaseStyle {}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, effect, inject, InjectionToken, input, NgModule, output, ViewEncapsulation } from '@angular/core';\nimport Chart from 'chart.js/auto';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { ChartStyle } from './style/chartstyle';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { ChartData, ChartDataSelectEvent, ChartOptions, ChartPassThrough, ChartPlugin, ChartType } from 'primeng/types/chart';\n\nconst CHART_INSTANCE = new InjectionToken<UIChart>('CHART_INSTANCE');\n\n/**\n * Chart groups a collection of contents in tabs.\n * @group Components\n * @deprecated Charts will be removed in a future release in favor of PrimeUI PRO Charts.\n */\n@Component({\n selector: 'p-chart',\n standalone: true,\n imports: [SharedModule, BindModule],\n template: ` <canvas role=\"img\" [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.width]=\"canvasWidth()\" [attr.height]=\"canvasHeight()\" (click)=\"onCanvasClick($event)\" [pBind]=\"ptm('canvas')\"></canvas> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': \"cx('root')\",\n '[style]': \"sx('root')\"\n },\n providers: [ChartStyle, { provide: CHART_INSTANCE, useExisting: UIChart }],\n hostDirectives: [Bind]\n})\nexport class UIChart extends BaseComponent<ChartPassThrough> {\n componentName = 'Chart';\n\n $pcChart: UIChart | undefined = inject(CHART_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n /**\n * Type of the chart.\n * @group Props\n */\n type = input<ChartType>();\n /**\n * Array of per-chart plugins to customize the chart behaviour.\n * @group Props\n */\n plugins = input<ChartPlugin[]>([]);\n /**\n * Width of the chart.\n * @group Props\n */\n width = input<string>();\n /**\n * Height of the chart.\n * @group Props\n */\n height = input<string>();\n /**\n * Whether the chart is redrawn on screen size change.\n * @group Props\n */\n responsive = input(true, { transform: booleanAttribute });\n /**\n * Used to define a string that autocomplete attribute the current element.\n * @group Props\n */\n ariaLabel = input<string>();\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy = input<string>();\n /**\n * Data to display.\n * @group Props\n */\n data = input<ChartData>();\n /**\n * Options to customize the chart.\n * @group Props\n */\n options = input<ChartOptions>({});\n /**\n * Callback to execute when an element on chart is clicked.\n * @group Emits\n */\n onDataSelect = output<ChartDataSelectEvent>();\n\n _componentStyle = inject(ChartStyle);\n\n initialized = false;\n\n chart: Chart | null = null;\n\n constructor() {\n super();\n\n effect(() => {\n const data = this.data();\n const options = this.options();\n if (this.initialized && (data || options)) {\n this.reinit();\n }\n });\n }\n\n canvasWidth() {\n return this.responsive() && !this.width() ? null : this.width();\n }\n\n canvasHeight() {\n return this.responsive() && !this.height() ? null : this.height();\n }\n\n onAfterViewInit() {\n this.initChart();\n this.initialized = true;\n }\n\n onCanvasClick(event: Event) {\n if (this.chart) {\n const element = this.chart.getElementsAtEventForMode(event as unknown as globalThis.Event, 'nearest', { intersect: true }, false);\n const dataset = this.chart.getElementsAtEventForMode(event as unknown as globalThis.Event, 'dataset', { intersect: true }, false);\n\n if (element && element[0] && dataset) {\n this.onDataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset });\n }\n }\n }\n\n initChart() {\n if (isPlatformBrowser(this.platformId)) {\n const opts = this.options() || {};\n opts.responsive = this.responsive();\n\n // allows chart to resize in responsive mode\n if (opts.responsive && (this.height() || this.width())) {\n opts.maintainAspectRatio = false;\n }\n\n const type = this.type();\n const data = this.data();\n if (!type || !data) return;\n\n this.chart = new Chart(this.el.nativeElement.children[0] as HTMLCanvasElement, {\n type,\n data,\n options: this.options(),\n plugins: this.plugins()\n });\n }\n }\n\n getCanvas(): HTMLCanvasElement {\n return this.el.nativeElement.children[0];\n }\n\n getBase64Image(): string {\n return this.chart?.toBase64Image() ?? '';\n }\n\n generateLegend() {\n if (this.chart) {\n return (this.chart as any).generateLegend();\n }\n return undefined;\n }\n\n refresh() {\n if (this.chart) {\n this.chart.update();\n }\n }\n\n reinit() {\n if (this.chart) {\n this.chart.destroy();\n this.initChart();\n }\n }\n\n onDestroy() {\n if (this.chart) {\n this.chart.destroy();\n this.initialized = false;\n this.chart = null;\n }\n }\n}\n\n@NgModule({\n imports: [UIChart, SharedModule],\n exports: [UIChart, SharedModule]\n})\nexport class ChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}