@coreui/angular-chartjs 5.7.16 → 5.7.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,7 +14,7 @@ class ChartjsComponent {
14
14
  changeDetectorRef = inject(ChangeDetectorRef);
15
15
  /**
16
16
  * Enables custom html based tooltips instead of standard tooltips.
17
- * @return boolean
17
+ * @returns boolean
18
18
  * @default true
19
19
  */
20
20
  customTooltips = input(true, { ...(ngDevMode ? { debugName: "customTooltips" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -31,7 +31,7 @@ class ChartjsComponent {
31
31
  // @Input() fallbackContent?: TemplateRef<any>;
32
32
  /**
33
33
  * Height attribute applied to the rendered canvas.
34
- * @return number | undefined
34
+ * @returns number | undefined
35
35
  * @default null
36
36
  */
37
37
  height = input(null, { ...(ngDevMode ? { debugName: "height" } : /* istanbul ignore next */ {}), transform: (value) => numberAttribute(value, undefined) });
@@ -74,13 +74,13 @@ class ChartjsComponent {
74
74
  ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
75
75
  /**
76
76
  * Width attribute applied to the rendered canvas.
77
- * @return number | undefined
77
+ * @returns number | undefined
78
78
  * @default null
79
79
  */
80
80
  width = input(null, { ...(ngDevMode ? { debugName: "width" } : /* istanbul ignore next */ {}), transform: (value) => numberAttribute(value, undefined) });
81
81
  /**
82
82
  * Put the chart into the wrapper div element.
83
- * @return boolean
83
+ * @returns boolean
84
84
  * @default true
85
85
  */
86
86
  wrapper = input(true, { ...(ngDevMode ? { debugName: "wrapper" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -265,10 +265,10 @@ class ChartjsComponent {
265
265
  }));
266
266
  });
267
267
  }
268
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: ChartjsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
269
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.1", type: ChartjsComponent, isStandalone: true, selector: "c-chart", inputs: { customTooltips: { classPropertyName: "customTooltips", publicName: "customTooltips", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, optionsInput: { classPropertyName: "optionsInput", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, plugins: { classPropertyName: "plugins", publicName: "plugins", isSignal: true, isRequired: false, transformFunction: null }, redraw: { classPropertyName: "redraw", publicName: "redraw", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, wrapper: { classPropertyName: "wrapper", publicName: "wrapper", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { getDatasetAtEvent: "getDatasetAtEvent", getElementAtEvent: "getElementAtEvent", getElementsAtEvent: "getElementsAtEvent", chartRef: "chartRef" }, host: { properties: { "class.chart-wrapper": "wrapper()", "style.height.px": "height()", "style.width.px": "width()" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true, isSignal: true }], exportAs: ["cChart"], ngImport: i0, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height() || null\"\n [id]=\"id\"\n [width]=\"width() || null\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n", styles: [":host.chart-wrapper{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
268
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ChartjsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
269
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.3", type: ChartjsComponent, isStandalone: true, selector: "c-chart", inputs: { customTooltips: { classPropertyName: "customTooltips", publicName: "customTooltips", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, idInput: { classPropertyName: "idInput", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, optionsInput: { classPropertyName: "optionsInput", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, plugins: { classPropertyName: "plugins", publicName: "plugins", isSignal: true, isRequired: false, transformFunction: null }, redraw: { classPropertyName: "redraw", publicName: "redraw", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, wrapper: { classPropertyName: "wrapper", publicName: "wrapper", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { getDatasetAtEvent: "getDatasetAtEvent", getElementAtEvent: "getElementAtEvent", getElementsAtEvent: "getElementsAtEvent", chartRef: "chartRef" }, host: { properties: { "class.chart-wrapper": "wrapper()", "style.height.px": "height()", "style.width.px": "width()" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true, isSignal: true }], exportAs: ["cChart"], ngImport: i0, template: "<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height() || null\"\n [id]=\"id\"\n [width]=\"width() || null\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n", styles: [":host.chart-wrapper{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
270
270
  }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: ChartjsComponent, decorators: [{
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ChartjsComponent, decorators: [{
272
272
  type: Component,
273
273
  args: [{ selector: 'c-chart', exportAs: 'cChart', changeDetection: ChangeDetectionStrategy.OnPush, host: {
274
274
  '[class.chart-wrapper]': 'wrapper()',
@@ -278,11 +278,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
278
278
  }], ctorParameters: () => [], propDecorators: { customTooltips: [{ type: i0.Input, args: [{ isSignal: true, alias: "customTooltips", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], idInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], optionsInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], plugins: [{ type: i0.Input, args: [{ isSignal: true, alias: "plugins", required: false }] }], redraw: [{ type: i0.Input, args: [{ isSignal: true, alias: "redraw", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], wrapper: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapper", required: false }] }], getDatasetAtEvent: [{ type: i0.Output, args: ["getDatasetAtEvent"] }], getElementAtEvent: [{ type: i0.Output, args: ["getElementAtEvent"] }], getElementsAtEvent: [{ type: i0.Output, args: ["getElementsAtEvent"] }], chartRef: [{ type: i0.Output, args: ["chartRef"] }], canvasElement: [{ type: i0.ViewChild, args: ['canvasElement', { isSignal: true }] }] } });
279
279
 
280
280
  class ChartjsModule {
281
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: ChartjsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
282
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: ChartjsModule, imports: [ChartjsComponent], exports: [ChartjsComponent] });
283
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: ChartjsModule });
281
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ChartjsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
282
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: ChartjsModule, imports: [ChartjsComponent], exports: [ChartjsComponent] });
283
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ChartjsModule });
284
284
  }
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: ChartjsModule, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ChartjsModule, decorators: [{
286
286
  type: NgModule,
287
287
  args: [{
288
288
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"coreui-angular-chartjs.mjs","sources":["../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.ts","../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.html","../../../projects/coreui-angular-chartjs/src/lib/chartjs.module.ts","../../../projects/coreui-angular-chartjs/src/public-api.ts","../../../projects/coreui-angular-chartjs/src/coreui-angular-chartjs.ts"],"sourcesContent":["import {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n linkedSignal,\n NgZone,\n numberAttribute,\n OnDestroy,\n output,\n Renderer2,\n Signal,\n untracked,\n viewChild,\n WritableSignal\n} from '@angular/core';\n\nimport { merge } from 'lodash-es';\n\nimport type { ChartConfiguration, ChartData, ChartOptions, ChartType, InteractionItem, Plugin } from 'chart.js';\nimport { Chart as ChartJS, registerables } from 'chart.js';\nimport { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';\nimport { BooleanInput } from './chartjs.interface';\n\nChartJS.register(...registerables);\n\nlet nextId = 0;\n\n@Component({\n selector: 'c-chart',\n templateUrl: './chartjs.component.html',\n styleUrls: ['./chartjs.component.scss'],\n exportAs: 'cChart',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.chart-wrapper]': 'wrapper()',\n '[style.height.px]': 'height()',\n '[style.width.px]': 'width()'\n }\n})\nexport class ChartjsComponent implements OnDestroy {\n //\n static ngAcceptInputType_redraw: BooleanInput;\n\n private readonly ngZone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Enables custom html based tooltips instead of standard tooltips.\n * @return boolean\n * @default true\n */\n readonly customTooltips = input(true, { transform: booleanAttribute });\n\n /**\n * The data object that is passed into the Chart.js chart (more info).\n * @returns ChartData\n * @default { labels: [], datasets: [] }\n */\n readonly data = input<ChartData>();\n\n /**\n * A fallback when the canvas cannot be rendered. Can be used for accessible chart descriptions.\n */\n // @Input() fallbackContent?: TemplateRef<any>;\n\n /**\n * Height attribute applied to the rendered canvas.\n * @return number | undefined\n * @default null\n */\n readonly height = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * ID attribute applied to the rendered canvas.\n * @returns string\n * @default 'c-chartjs-' + nextId\n */\n readonly idInput = input<string>(`c-chartjs-${nextId++}`, { alias: 'id' });\n\n get id() {\n return this.idInput();\n }\n\n /**\n * The options object that is passed into the Chart.js chart.\n * @returns ChartOptions | undefined\n * @default {}\n */\n readonly optionsInput: InputSignal<ChartOptions | undefined> = input<ChartOptions | undefined>(\n {},\n { alias: 'options' }\n );\n\n readonly options: WritableSignal<ChartOptions | undefined> = linkedSignal(this.optionsInput);\n\n /**\n * The plugins array that is passed into the Chart.js chart\n * @returns Plugin[]\n * @default []\n */\n readonly plugins: InputSignal<Plugin[]> = input<Plugin[]>([]);\n\n /**\n * If true, will tear down and redraw chart on all updates.\n * @returns boolean\n * @default false\n */\n readonly redraw = input(false, { transform: booleanAttribute });\n\n /**\n * Chart.js chart type.\n * @returns {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}\n * @default 'bar'\n */\n readonly type = input<ChartType>('bar');\n\n /**\n * Width attribute applied to the rendered canvas.\n * @return number | undefined\n * @default null\n */\n readonly width = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * Put the chart into the wrapper div element.\n * @return boolean\n * @default true\n */\n readonly wrapper = input(true, { transform: booleanAttribute });\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getDatasetAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked element.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementsAtEvent = output<InteractionItem[]>();\n\n /** Emits the Chart.js chart instance after it is created. Can be used to access Chart.js directly on the chart instance.\n * @returns ChartJS | undefined\n * @see https://www.chartjs.org/docs/latest/developers/api.html#chart-instance-methods\n */\n readonly chartRef = output<ChartJS | undefined>();\n\n readonly canvasElement = viewChild.required<ElementRef<HTMLCanvasElement>>('canvasElement');\n\n chart: ChartJS | undefined;\n readonly ctx = computed(() => this.canvasElement()?.nativeElement.getContext('2d'));\n\n constructor() {\n afterRenderEffect({\n read: () => {\n const ctx = this.ctx();\n if (ctx && !this.chart) {\n this.chartRender();\n }\n }\n });\n\n effect(() => {\n const data = this.data();\n untracked(() => {\n if (this.chart && data) {\n this.chartUpdate();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.chartDestroy();\n }\n\n public handleClick($event: MouseEvent): void {\n if (!this.chart) {\n return;\n }\n\n this.emitDatasetAtEvent($event);\n this.emitElementAtEvent($event);\n this.emitElementsAtEvent($event);\n }\n\n private emitDatasetAtEvent($event: MouseEvent): void {\n const datasetAtEvent = this.chart?.getElementsAtEventForMode($event, 'dataset', { intersect: true }, false);\n if (datasetAtEvent) {\n this.getDatasetAtEvent.emit(datasetAtEvent);\n }\n }\n\n private emitElementAtEvent($event: MouseEvent): void {\n const elementAtEvent = this.chart?.getElementsAtEventForMode($event, 'nearest', { intersect: true }, false);\n if (elementAtEvent) {\n this.getElementAtEvent.emit(elementAtEvent);\n }\n }\n\n private emitElementsAtEvent($event: MouseEvent): void {\n const elementsAtEvent = this.chart?.getElementsAtEventForMode($event, 'index', { intersect: true }, false);\n if (elementsAtEvent) {\n this.getElementsAtEvent.emit(elementsAtEvent);\n }\n }\n\n public chartDestroy() {\n this.chart?.destroy();\n this.chartRef.emit(undefined);\n }\n\n public chartRender() {\n const canvasElement = this.canvasElement();\n if (!canvasElement?.nativeElement || !this.ctx() || this.chart) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const config = this.chartConfig();\n const ctx = this.ctx();\n if (config && ctx) {\n this.chart = new ChartJS(ctx, config);\n this.ngZone.run(() => {\n this.renderer.setStyle(canvasElement.nativeElement, 'display', 'block');\n this.changeDetectorRef.markForCheck();\n this.chartRef.emit(this.chart);\n });\n }\n });\n }\n\n public chartUpdate() {\n if (!this.chart) {\n return;\n }\n\n if (this.redraw()) {\n this.chartDestroy();\n this.chartRender();\n return;\n }\n\n const config: ChartConfiguration = this.chartConfig();\n\n if (this.options()) {\n Object.assign(this.chart.options ?? {}, config.options ?? {});\n }\n\n if (!this.chart.config.data) {\n this.chart.config.data = { ...config.data };\n this.chartUpdateOutsideAngular();\n }\n\n if (this.chart) {\n Object.assign(this.chart.config.options ?? {}, config.options ?? {});\n Object.assign(this.chart.config.plugins ?? [], config.plugins ?? []);\n Object.assign(this.chart.config.data, config.data);\n }\n\n this.chartUpdateOutsideAngular();\n }\n\n private chartUpdateOutsideAngular() {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n try {\n if (this.chart?.canvas) {\n this.chart?.update();\n }\n } catch (error) {\n console.warn('Error on chart.update():', error);\n }\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n public chartToBase64Image(): string | undefined {\n return this.chart?.toBase64Image();\n }\n\n readonly chartDataConfig = computed<ChartData>(() => {\n const { labels, datasets } = { ...this.data() };\n return {\n labels: labels ?? [],\n datasets: datasets ?? []\n };\n });\n\n readonly chartOptions: Signal<ChartOptions> = computed<ChartOptions>(() => this.options() ?? {});\n\n readonly chartConfig = computed<ChartConfiguration>(() => {\n this.chartCustomTooltips();\n return {\n data: this.chartDataConfig(),\n options: this.chartOptions(),\n plugins: this.plugins(),\n type: this.type()\n };\n });\n\n private chartCustomTooltips() {\n if (!this.customTooltips()) {\n return;\n }\n const options = this.options();\n const plugins = options?.plugins;\n const tooltip = options?.plugins?.tooltip;\n untracked(() => {\n this.options.set(\n merge({\n ...options,\n plugins: {\n ...plugins,\n tooltip: {\n ...tooltip,\n enabled: false,\n mode: 'index',\n position: 'nearest',\n external: cuiCustomTooltips\n }\n }\n })\n );\n });\n }\n}\n","<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height() || null\"\n [id]=\"id\"\n [width]=\"width() || null\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n","import { NgModule } from '@angular/core';\nimport { ChartjsComponent } from './chartjs.component';\n\n@NgModule({\n imports: [\n ChartjsComponent\n ],\n exports: [\n ChartjsComponent\n ]\n})\nexport class ChartjsModule {}\n","/*\n * Public API Surface of coreui-angular-chartjs\n */\n\nexport * from './lib/chartjs.component';\nexport * from './lib/chartjs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ChartJS","cuiCustomTooltips"],"mappings":"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"}
1
+ {"version":3,"file":"coreui-angular-chartjs.mjs","sources":["../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.ts","../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.html","../../../projects/coreui-angular-chartjs/src/lib/chartjs.module.ts","../../../projects/coreui-angular-chartjs/src/public-api.ts","../../../projects/coreui-angular-chartjs/src/coreui-angular-chartjs.ts"],"sourcesContent":["import {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n linkedSignal,\n NgZone,\n numberAttribute,\n OnDestroy,\n output,\n Renderer2,\n Signal,\n untracked,\n viewChild,\n WritableSignal\n} from '@angular/core';\n\nimport { merge } from 'lodash-es';\n\nimport type { ChartConfiguration, ChartData, ChartOptions, ChartType, InteractionItem, Plugin } from 'chart.js';\nimport { Chart as ChartJS, registerables } from 'chart.js';\nimport { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';\nimport { BooleanInput } from './chartjs.interface';\n\nChartJS.register(...registerables);\n\nlet nextId = 0;\n\n@Component({\n selector: 'c-chart',\n templateUrl: './chartjs.component.html',\n styleUrls: ['./chartjs.component.scss'],\n exportAs: 'cChart',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.chart-wrapper]': 'wrapper()',\n '[style.height.px]': 'height()',\n '[style.width.px]': 'width()'\n }\n})\nexport class ChartjsComponent implements OnDestroy {\n //\n static ngAcceptInputType_redraw: BooleanInput;\n\n private readonly ngZone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Enables custom html based tooltips instead of standard tooltips.\n * @returns boolean\n * @default true\n */\n readonly customTooltips = input(true, { transform: booleanAttribute });\n\n /**\n * The data object that is passed into the Chart.js chart (more info).\n * @returns ChartData\n * @default { labels: [], datasets: [] }\n */\n readonly data = input<ChartData>();\n\n /**\n * A fallback when the canvas cannot be rendered. Can be used for accessible chart descriptions.\n */\n // @Input() fallbackContent?: TemplateRef<any>;\n\n /**\n * Height attribute applied to the rendered canvas.\n * @returns number | undefined\n * @default null\n */\n readonly height = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * ID attribute applied to the rendered canvas.\n * @returns string\n * @default 'c-chartjs-' + nextId\n */\n readonly idInput = input<string>(`c-chartjs-${nextId++}`, { alias: 'id' });\n\n get id() {\n return this.idInput();\n }\n\n /**\n * The options object that is passed into the Chart.js chart.\n * @returns ChartOptions | undefined\n * @default {}\n */\n readonly optionsInput: InputSignal<ChartOptions | undefined> = input<ChartOptions | undefined>(\n {},\n { alias: 'options' }\n );\n\n readonly options: WritableSignal<ChartOptions | undefined> = linkedSignal(this.optionsInput);\n\n /**\n * The plugins array that is passed into the Chart.js chart\n * @returns Plugin[]\n * @default []\n */\n readonly plugins: InputSignal<Plugin[]> = input<Plugin[]>([]);\n\n /**\n * If true, will tear down and redraw chart on all updates.\n * @returns boolean\n * @default false\n */\n readonly redraw = input(false, { transform: booleanAttribute });\n\n /**\n * Chart.js chart type.\n * @returns {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}\n * @default 'bar'\n */\n readonly type = input<ChartType>('bar');\n\n /**\n * Width attribute applied to the rendered canvas.\n * @returns number | undefined\n * @default null\n */\n readonly width = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * Put the chart into the wrapper div element.\n * @returns boolean\n * @default true\n */\n readonly wrapper = input(true, { transform: booleanAttribute });\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getDatasetAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked element.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementsAtEvent = output<InteractionItem[]>();\n\n /** Emits the Chart.js chart instance after it is created. Can be used to access Chart.js directly on the chart instance.\n * @returns ChartJS | undefined\n * @see https://www.chartjs.org/docs/latest/developers/api.html#chart-instance-methods\n */\n readonly chartRef = output<ChartJS | undefined>();\n\n readonly canvasElement = viewChild.required<ElementRef<HTMLCanvasElement>>('canvasElement');\n\n chart: ChartJS | undefined;\n readonly ctx = computed(() => this.canvasElement()?.nativeElement.getContext('2d'));\n\n constructor() {\n afterRenderEffect({\n read: () => {\n const ctx = this.ctx();\n if (ctx && !this.chart) {\n this.chartRender();\n }\n }\n });\n\n effect(() => {\n const data = this.data();\n untracked(() => {\n if (this.chart && data) {\n this.chartUpdate();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.chartDestroy();\n }\n\n public handleClick($event: MouseEvent): void {\n if (!this.chart) {\n return;\n }\n\n this.emitDatasetAtEvent($event);\n this.emitElementAtEvent($event);\n this.emitElementsAtEvent($event);\n }\n\n private emitDatasetAtEvent($event: MouseEvent): void {\n const datasetAtEvent = this.chart?.getElementsAtEventForMode($event, 'dataset', { intersect: true }, false);\n if (datasetAtEvent) {\n this.getDatasetAtEvent.emit(datasetAtEvent);\n }\n }\n\n private emitElementAtEvent($event: MouseEvent): void {\n const elementAtEvent = this.chart?.getElementsAtEventForMode($event, 'nearest', { intersect: true }, false);\n if (elementAtEvent) {\n this.getElementAtEvent.emit(elementAtEvent);\n }\n }\n\n private emitElementsAtEvent($event: MouseEvent): void {\n const elementsAtEvent = this.chart?.getElementsAtEventForMode($event, 'index', { intersect: true }, false);\n if (elementsAtEvent) {\n this.getElementsAtEvent.emit(elementsAtEvent);\n }\n }\n\n public chartDestroy() {\n this.chart?.destroy();\n this.chartRef.emit(undefined);\n }\n\n public chartRender() {\n const canvasElement = this.canvasElement();\n if (!canvasElement?.nativeElement || !this.ctx() || this.chart) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const config = this.chartConfig();\n const ctx = this.ctx();\n if (config && ctx) {\n this.chart = new ChartJS(ctx, config);\n this.ngZone.run(() => {\n this.renderer.setStyle(canvasElement.nativeElement, 'display', 'block');\n this.changeDetectorRef.markForCheck();\n this.chartRef.emit(this.chart);\n });\n }\n });\n }\n\n public chartUpdate() {\n if (!this.chart) {\n return;\n }\n\n if (this.redraw()) {\n this.chartDestroy();\n this.chartRender();\n return;\n }\n\n const config: ChartConfiguration = this.chartConfig();\n\n if (this.options()) {\n Object.assign(this.chart.options ?? {}, config.options ?? {});\n }\n\n if (!this.chart.config.data) {\n this.chart.config.data = { ...config.data };\n this.chartUpdateOutsideAngular();\n }\n\n if (this.chart) {\n Object.assign(this.chart.config.options ?? {}, config.options ?? {});\n Object.assign(this.chart.config.plugins ?? [], config.plugins ?? []);\n Object.assign(this.chart.config.data, config.data);\n }\n\n this.chartUpdateOutsideAngular();\n }\n\n private chartUpdateOutsideAngular() {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n try {\n if (this.chart?.canvas) {\n this.chart?.update();\n }\n } catch (error) {\n console.warn('Error on chart.update():', error);\n }\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n public chartToBase64Image(): string | undefined {\n return this.chart?.toBase64Image();\n }\n\n readonly chartDataConfig = computed<ChartData>(() => {\n const { labels, datasets } = { ...this.data() };\n return {\n labels: labels ?? [],\n datasets: datasets ?? []\n };\n });\n\n readonly chartOptions: Signal<ChartOptions> = computed<ChartOptions>(() => this.options() ?? {});\n\n readonly chartConfig = computed<ChartConfiguration>(() => {\n this.chartCustomTooltips();\n return {\n data: this.chartDataConfig(),\n options: this.chartOptions(),\n plugins: this.plugins(),\n type: this.type()\n };\n });\n\n private chartCustomTooltips() {\n if (!this.customTooltips()) {\n return;\n }\n const options = this.options();\n const plugins = options?.plugins;\n const tooltip = options?.plugins?.tooltip;\n untracked(() => {\n this.options.set(\n merge({\n ...options,\n plugins: {\n ...plugins,\n tooltip: {\n ...tooltip,\n enabled: false,\n mode: 'index',\n position: 'nearest',\n external: cuiCustomTooltips\n }\n }\n })\n );\n });\n }\n}\n","<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height() || null\"\n [id]=\"id\"\n [width]=\"width() || null\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n","import { NgModule } from '@angular/core';\nimport { ChartjsComponent } from './chartjs.component';\n\n@NgModule({\n imports: [\n ChartjsComponent\n ],\n exports: [\n ChartjsComponent\n ]\n})\nexport class ChartjsModule {}\n","/*\n * Public API Surface of coreui-angular-chartjs\n */\n\nexport * from './lib/chartjs.component';\nexport * from './lib/chartjs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ChartJS","cuiCustomTooltips"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreui/angular-chartjs",
3
- "version": "5.7.16",
3
+ "version": "5.7.19",
4
4
  "description": "Angular wrapper component for Chart.js",
5
5
  "copyright": "Copyright 2026 creativeLabs Łukasz Holeczek",
6
6
  "license": "MIT",
@@ -12,7 +12,7 @@ declare class ChartjsComponent implements OnDestroy {
12
12
  private readonly changeDetectorRef;
13
13
  /**
14
14
  * Enables custom html based tooltips instead of standard tooltips.
15
- * @return boolean
15
+ * @returns boolean
16
16
  * @default true
17
17
  */
18
18
  readonly customTooltips: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -27,7 +27,7 @@ declare class ChartjsComponent implements OnDestroy {
27
27
  */
28
28
  /**
29
29
  * Height attribute applied to the rendered canvas.
30
- * @return number | undefined
30
+ * @returns number | undefined
31
31
  * @default null
32
32
  */
33
33
  readonly height: _angular_core.InputSignalWithTransform<number | null, unknown>;
@@ -65,13 +65,13 @@ declare class ChartjsComponent implements OnDestroy {
65
65
  readonly type: InputSignal<keyof chart_js.ChartTypeRegistry>;
66
66
  /**
67
67
  * Width attribute applied to the rendered canvas.
68
- * @return number | undefined
68
+ * @returns number | undefined
69
69
  * @default null
70
70
  */
71
71
  readonly width: _angular_core.InputSignalWithTransform<number | null, unknown>;
72
72
  /**
73
73
  * Put the chart into the wrapper div element.
74
- * @return boolean
74
+ * @returns boolean
75
75
  * @default true
76
76
  */
77
77
  readonly wrapper: _angular_core.InputSignalWithTransform<boolean, unknown>;