@praxisui/settings-panel 9.0.31 → 9.0.33

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-28T17:36:46.890Z",
3
+ "generatedAt": "2026-08-28T21:43:09.330Z",
4
4
  "packageName": "@praxisui/settings-panel",
5
- "packageVersion": "9.0.31",
5
+ "packageVersion": "9.0.33",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 1,
@@ -1705,6 +1705,7 @@ class SettingsPanelService {
1705
1705
  currentRef;
1706
1706
  currentPanelInstance;
1707
1707
  currentScope;
1708
+ currentContentParentInjector;
1708
1709
  childSequence = 0;
1709
1710
  i18n = inject(PraxisI18nService);
1710
1711
  layerScale = inject(PraxisLayerScaleStyleService);
@@ -1717,7 +1718,7 @@ class SettingsPanelService {
1717
1718
  * closed before the new one is created. Future improvements may reuse the
1718
1719
  * same overlay when the provided id matches.
1719
1720
  */
1720
- open(config) {
1721
+ open(config, contentParentInjector = this.injector) {
1721
1722
  if (this.currentRef && this.currentPanelInstance) {
1722
1723
  const deferredRef = new DeferredSettingsPanelRef();
1723
1724
  const currentRef = this.currentRef;
@@ -1731,36 +1732,38 @@ class SettingsPanelService {
1731
1732
  return;
1732
1733
  }
1733
1734
  currentRef.close('cancel');
1734
- deferredRef.resolve(this.openFresh(config));
1735
+ deferredRef.resolve(this.openFresh(config, contentParentInjector));
1735
1736
  });
1736
1737
  return deferredRef;
1737
1738
  }
1738
- return this.openFresh(config);
1739
+ return this.openFresh(config, contentParentInjector);
1739
1740
  }
1740
1741
  /**
1741
1742
  * Opens an authoring editor above the current settings panel without
1742
1743
  * destroying the parent editor and its draft state.
1743
1744
  */
1744
- openChild(config) {
1745
+ openChild(config, contentParentInjector = this.currentContentParentInjector ??
1746
+ this.injector) {
1745
1747
  if (!this.currentRef || !this.currentPanelInstance) {
1746
- return this.openFresh(config);
1748
+ return this.openFresh(config, contentParentInjector);
1747
1749
  }
1748
1750
  const parent = {
1749
1751
  ref: this.currentRef,
1750
1752
  panel: this.currentPanelInstance,
1751
1753
  scope: this.currentScope ?? 'settings-panel',
1754
+ contentParentInjector: this.currentContentParentInjector ?? this.injector,
1752
1755
  };
1753
1756
  parent.panel.setInteractionActive(false);
1754
1757
  const scope = `settings-panel-child-${++this.childSequence}`;
1755
1758
  try {
1756
- return this.openFresh(config, scope, parent);
1759
+ return this.openFresh(config, contentParentInjector, scope, parent);
1757
1760
  }
1758
1761
  catch (error) {
1759
1762
  parent.panel.setInteractionActive(true);
1760
1763
  throw error;
1761
1764
  }
1762
1765
  }
1763
- openFresh(config, scope = 'settings-panel', parent) {
1766
+ openFresh(config, contentParentInjector, scope = 'settings-panel', parent) {
1764
1767
  this.layerScale.ensureInstalled();
1765
1768
  const ref = this.baseSidePanelService.openHost({
1766
1769
  component: SettingsPanelComponent,
@@ -1790,7 +1793,7 @@ class SettingsPanelService {
1790
1793
  minWidth: resolvedConfig.minWidth,
1791
1794
  maxWidth: resolvedConfig.maxWidth,
1792
1795
  })
1793
- : resolvedConfig.width ?? '720px',
1796
+ : (resolvedConfig.width ?? '720px'),
1794
1797
  createRef: (overlayRef) => new SettingsPanelRef(overlayRef),
1795
1798
  attach: (panelRef, panelServiceRef, resolvedConfig) => {
1796
1799
  panelRef.instance.title = config.title?.trim()
@@ -1808,13 +1811,14 @@ class SettingsPanelService {
1808
1811
  panelRef.instance.configureDiagnostics(config.diagnostics);
1809
1812
  this.currentPanelInstance = panelRef.instance;
1810
1813
  this.currentScope = scope;
1814
+ this.currentContentParentInjector = contentParentInjector;
1811
1815
  const inputs = config.content.inputs;
1812
1816
  const injector = Injector.create({
1813
1817
  providers: [
1814
1818
  { provide: SETTINGS_PANEL_DATA, useValue: inputs },
1815
1819
  { provide: SETTINGS_PANEL_REF, useValue: panelServiceRef },
1816
1820
  ],
1817
- parent: this.injector,
1821
+ parent: contentParentInjector,
1818
1822
  });
1819
1823
  panelRef.instance.attachContent(config.content.component, injector, panelServiceRef, inputs);
1820
1824
  panelRef.changeDetectorRef.detectChanges();
@@ -1828,6 +1832,7 @@ class SettingsPanelService {
1828
1832
  this.currentRef = parent?.ref;
1829
1833
  this.currentPanelInstance = parent?.panel;
1830
1834
  this.currentScope = parent?.scope;
1835
+ this.currentContentParentInjector = parent?.contentParentInjector;
1831
1836
  parent?.panel.setInteractionActive(true);
1832
1837
  }
1833
1838
  });
@@ -1850,7 +1855,7 @@ function providePraxisSettingsPanelBridge() {
1850
1855
  providePraxisSettingsPanelI18n(),
1851
1856
  {
1852
1857
  provide: SETTINGS_PANEL_BRIDGE,
1853
- useFactory: (service) => ({
1858
+ useFactory: (service, injector) => ({
1854
1859
  open: (opts) => service.open({
1855
1860
  id: opts.id,
1856
1861
  title: opts.title,
@@ -1859,9 +1864,9 @@ function providePraxisSettingsPanelBridge() {
1859
1864
  component: opts.content.component,
1860
1865
  inputs: (opts.content.inputs || undefined),
1861
1866
  },
1862
- }),
1867
+ }, injector),
1863
1868
  }),
1864
- deps: [SettingsPanelService],
1869
+ deps: [SettingsPanelService, Injector],
1865
1870
  },
1866
1871
  ];
1867
1872
  }
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@praxisui/settings-panel",
3
- "version": "9.0.31",
3
+ "version": "9.0.33",
4
4
  "description": "Settings panel for Praxis UI libraries: open editors for configuration at runtime and persist settings.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
8
  "@angular/cdk": "^21.0.0",
9
9
  "@angular/material": "^21.0.0",
10
- "@praxisui/ai": "^9.0.31",
11
- "@praxisui/core": "^9.0.31",
12
- "@praxisui/dynamic-fields": "^9.0.31",
10
+ "@praxisui/ai": "^9.0.33",
11
+ "@praxisui/core": "^9.0.33",
12
+ "@praxisui/dynamic-fields": "^9.0.33",
13
13
  "rxjs": "~7.8.0"
14
14
  },
15
15
  "dependencies": {
@@ -335,6 +335,7 @@ declare class SettingsPanelService {
335
335
  private currentRef?;
336
336
  private currentPanelInstance?;
337
337
  private currentScope?;
338
+ private currentContentParentInjector?;
338
339
  private childSequence;
339
340
  private readonly i18n;
340
341
  private readonly layerScale;
@@ -344,12 +345,12 @@ declare class SettingsPanelService {
344
345
  * closed before the new one is created. Future improvements may reuse the
345
346
  * same overlay when the provided id matches.
346
347
  */
347
- open(config: SettingsPanelConfig): SettingsPanelRef;
348
+ open(config: SettingsPanelConfig, contentParentInjector?: Injector): SettingsPanelRef;
348
349
  /**
349
350
  * Opens an authoring editor above the current settings panel without
350
351
  * destroying the parent editor and its draft state.
351
352
  */
352
- openChild(config: SettingsPanelConfig): SettingsPanelRef;
353
+ openChild(config: SettingsPanelConfig, contentParentInjector?: Injector): SettingsPanelRef;
353
354
  private openFresh;
354
355
  close(reason?: SettingsPanelCloseReason): void;
355
356
  static ɵfac: i0.ɵɵFactoryDeclaration<SettingsPanelService, never>;