@praxisui/charts 9.0.36 → 9.0.38

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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-29T20:24:51.350Z",
3
+ "generatedAt": "2026-08-30T02:26:55.462Z",
4
4
  "packageName": "@praxisui/charts",
5
- "packageVersion": "9.0.36",
5
+ "packageVersion": "9.0.38",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 3,
@@ -1870,6 +1870,7 @@ class PraxisChartComponent {
1870
1870
  shellObserver = signal(null, ...(ngDevMode ? [{ debugName: "shellObserver" }] : /* istanbul ignore next */ []));
1871
1871
  themeObserver = signal(null, ...(ngDevMode ? [{ debugName: "themeObserver" }] : /* istanbul ignore next */ []));
1872
1872
  inheritedTheme = signal(null, ...(ngDevMode ? [{ debugName: "inheritedTheme" }] : /* istanbul ignore next */ []));
1873
+ inheritedHostTextColor = signal(undefined, ...(ngDevMode ? [{ debugName: "inheritedHostTextColor" }] : /* istanbul ignore next */ []));
1873
1874
  currentLoadState = signal('idle', ...(ngDevMode ? [{ debugName: "currentLoadState" }] : /* istanbul ignore next */ []));
1874
1875
  remoteResolvedData = signal(null, ...(ngDevMode ? [{ debugName: "remoteResolvedData" }] : /* istanbul ignore next */ []));
1875
1876
  remoteRuntimeState = signal('idle', ...(ngDevMode ? [{ debugName: "remoteRuntimeState" }] : /* istanbul ignore next */ []));
@@ -1892,7 +1893,7 @@ class PraxisChartComponent {
1892
1893
  remoteRequestSequence = 0;
1893
1894
  previousSelectionScopeSignature = null;
1894
1895
  effectiveConfig = computed(() => {
1895
- const base = this.applyInheritedTheme(this.mappedRuntimeConfig() ?? this.config(), this.inheritedTheme());
1896
+ const base = this.applyInheritedTheme(this.mappedRuntimeConfig() ?? this.config(), this.inheritedTheme(), this.inheritedHostTextColor());
1896
1897
  const runtimeQueryContext = normalizePraxisDataQueryContext(this.queryContext());
1897
1898
  const runtimeFilters = resolvePraxisFilterCriteria(this.filterCriteria(), runtimeQueryContext);
1898
1899
  if (!runtimeQueryContext
@@ -2401,8 +2402,6 @@ class PraxisChartComponent {
2401
2402
  .sort(([left], [right]) => left.localeCompare(right));
2402
2403
  return JSON.stringify({
2403
2404
  chartId: config.id ?? event.chartId,
2404
- seriesId: event.seriesId,
2405
- seriesName: event.seriesName,
2406
2405
  category: event.category,
2407
2406
  sourceValues,
2408
2407
  });
@@ -2596,6 +2595,7 @@ class PraxisChartComponent {
2596
2595
  ? this.cloneTheme(PRAXIS_CHART_THEME_VARIANTS[chartThemePresetId])
2597
2596
  : {};
2598
2597
  const hostTextColor = getComputedStyle(host).color.trim();
2598
+ this.inheritedHostTextColor.set(hostTextColor || undefined);
2599
2599
  const theme = {
2600
2600
  ...preset,
2601
2601
  textColor: preset.textColor || hostTextColor || undefined,
@@ -2613,17 +2613,22 @@ class PraxisChartComponent {
2613
2613
  isThemeVariant(value) {
2614
2614
  return Object.prototype.hasOwnProperty.call(PRAXIS_CHART_THEME_VARIANTS, value);
2615
2615
  }
2616
- applyInheritedTheme(config, inherited) {
2616
+ applyInheritedTheme(config, inherited, hostTextColor) {
2617
2617
  if (!inherited) {
2618
2618
  return config;
2619
2619
  }
2620
2620
  const explicit = config.theme;
2621
+ const explicitSurface = explicit?.surface;
2622
+ const usesHostSurface = explicitSurface?.mode === 'embedded'
2623
+ || explicitSurface?.background?.trim().toLowerCase() === 'transparent';
2621
2624
  return {
2622
2625
  ...config,
2623
2626
  theme: {
2624
2627
  palette: explicit?.palette ?? inherited.palette,
2625
- backgroundColor: explicit?.backgroundColor ?? inherited.backgroundColor,
2626
- textColor: explicit?.textColor ?? inherited.textColor,
2628
+ backgroundColor: explicit?.backgroundColor
2629
+ ?? (usesHostSurface ? undefined : inherited.backgroundColor),
2630
+ textColor: explicit?.textColor
2631
+ ?? (usesHostSurface ? hostTextColor : inherited.textColor),
2627
2632
  borderRadius: explicit?.borderRadius ?? inherited.borderRadius,
2628
2633
  legend: this.mergeOptionalThemeObject(inherited.legend, explicit?.legend),
2629
2634
  tooltip: this.mergeOptionalThemeObject(inherited.tooltip, explicit?.tooltip),
@@ -5265,17 +5270,19 @@ class EChartsEngineAdapter {
5265
5270
  });
5266
5271
  const zrender = chart?.getZr?.();
5267
5272
  this.zrenderClickHandler = (event) => {
5273
+ const occurredAt = Date.now();
5268
5274
  window.setTimeout(() => {
5269
- if (Date.now() - this.lastSeriesClickAt < 80) {
5275
+ if (this.isSeriesFallbackDuplicate(occurredAt)) {
5270
5276
  return;
5271
5277
  }
5272
- this.emitCategoryClickFromGrid(event, payload);
5278
+ this.emitCategoryClickFromGrid(event, payload, occurredAt);
5273
5279
  }, 0);
5274
5280
  };
5275
5281
  zrender?.on?.('click', this.zrenderClickHandler);
5276
5282
  this.domClickHandler = (event) => {
5283
+ const occurredAt = Date.now();
5277
5284
  window.setTimeout(() => {
5278
- if (Date.now() - this.lastSeriesClickAt < 80) {
5285
+ if (this.isSeriesFallbackDuplicate(occurredAt)) {
5279
5286
  return;
5280
5287
  }
5281
5288
  const rect = host.getBoundingClientRect();
@@ -5284,7 +5291,7 @@ class EChartsEngineAdapter {
5284
5291
  this.emitCategoryClickFromGrid({
5285
5292
  offsetX,
5286
5293
  offsetY,
5287
- }, payload);
5294
+ }, payload, occurredAt);
5288
5295
  }, 0);
5289
5296
  };
5290
5297
  host.addEventListener('click', this.domClickHandler, true);
@@ -5340,7 +5347,7 @@ class EChartsEngineAdapter {
5340
5347
  ? undefined
5341
5348
  : String(candidate);
5342
5349
  }
5343
- emitCategoryClickFromGrid(event, payload) {
5350
+ emitCategoryClickFromGrid(event, payload, occurredAt) {
5344
5351
  const chart = this.chart;
5345
5352
  if (!chart || typeof chart.containPixel !== 'function' || typeof chart.convertFromPixel !== 'function') {
5346
5353
  return;
@@ -5375,7 +5382,7 @@ class EChartsEngineAdapter {
5375
5382
  horizontal,
5376
5383
  categoryIndex,
5377
5384
  });
5378
- if (this.isDuplicateGridClick(signature)) {
5385
+ if (this.isDuplicateGridClick(signature, occurredAt)) {
5379
5386
  return;
5380
5387
  }
5381
5388
  const usesCanonicalStatsRows = payload.config.dataSource?.kind === 'remote'
@@ -5401,11 +5408,14 @@ class EChartsEngineAdapter {
5401
5408
  data,
5402
5409
  });
5403
5410
  }
5404
- isDuplicateGridClick(signature) {
5405
- const now = Date.now();
5411
+ isSeriesFallbackDuplicate(occurredAt) {
5412
+ return this.lastSeriesClickAt > 0
5413
+ && Math.abs(occurredAt - this.lastSeriesClickAt) < 80;
5414
+ }
5415
+ isDuplicateGridClick(signature, occurredAt) {
5406
5416
  const duplicate = this.lastGridClick?.signature === signature
5407
- && now - this.lastGridClick.at < 80;
5408
- this.lastGridClick = { signature, at: now };
5417
+ && Math.abs(occurredAt - this.lastGridClick.at) < 80;
5418
+ this.lastGridClick = { signature, at: occurredAt };
5409
5419
  return duplicate;
5410
5420
  }
5411
5421
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EChartsEngineAdapter, deps: [{ token: EChartsOptionBuilderService }], target: i0.ɵɵFactoryTarget.Injectable });
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@praxisui/charts",
3
- "version": "9.0.36",
3
+ "version": "9.0.38",
4
4
  "description": "Metadata-driven charts library for Praxis UI Angular with engine adapters and Apache ECharts as the initial renderer.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
- "@praxisui/core": "^9.0.36",
8
+ "@praxisui/core": "^9.0.38",
9
9
  "@angular/forms": "^21.0.0",
10
10
  "@angular/material": "^21.0.0",
11
- "@praxisui/table": "^9.0.36",
11
+ "@praxisui/table": "^9.0.38",
12
12
  "rxjs": "~7.8.0"
13
13
  },
14
14
  "dependencies": {
@@ -583,6 +583,7 @@ declare class PraxisChartComponent {
583
583
  private readonly shellObserver;
584
584
  private readonly themeObserver;
585
585
  private readonly inheritedTheme;
586
+ private readonly inheritedHostTextColor;
586
587
  private readonly currentLoadState;
587
588
  private readonly remoteResolvedData;
588
589
  private readonly remoteRuntimeState;