@praxisui/list 10.0.0-rc.20 → 10.0.0-rc.21

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-10-15T03:52:00.118Z",
3
+ "generatedAt": "2026-10-15T04:35:19.773Z",
4
4
  "packageName": "@praxisui/list",
5
- "packageVersion": "10.0.0-rc.20",
5
+ "packageVersion": "10.0.0-rc.21",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 1,
@@ -36,8 +36,8 @@ import * as i1$1 from '@angular/forms';
36
36
  import { FormControl, ReactiveFormsModule, FormsModule, FormGroup } from '@angular/forms';
37
37
  import * as i15 from '@angular/cdk/scrolling';
38
38
  import { ScrollingModule } from '@angular/cdk/scrolling';
39
- import { BehaviorSubject, combineLatest, of, firstValueFrom, Subject, debounceTime, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, Subscription } from 'rxjs';
40
- import { auditTime, map, distinctUntilChanged, switchMap, catchError, finalize, shareReplay, take, takeUntil, debounceTime as debounceTime$1, tap } from 'rxjs/operators';
39
+ import { BehaviorSubject, combineLatest, of, firstValueFrom, Subject, debounceTime, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, timer, defer, Subscription } from 'rxjs';
40
+ import { auditTime, map, distinctUntilChanged, switchMap, catchError, finalize, shareReplay, take, takeUntil, defaultIfEmpty } from 'rxjs/operators';
41
41
  import { PraxisRichContent } from '@praxisui/rich-content';
42
42
  import { SettingsPanelService, SETTINGS_PANEL_DATA } from '@praxisui/settings-panel';
43
43
  import { BaseAiAdapter, withAuthoringScopePolicy, shouldRoutePromptToGovernedDecision, createPraxisAssistantViewportLayout, AiBackendApiService, PraxisAssistantSessionRegistryService, PraxisAssistantTurnOrchestratorService, PraxisAiAssistantShellComponent } from '@praxisui/ai';
@@ -13540,7 +13540,10 @@ class PraxisListConfigEditor {
13540
13540
  this.lastJson = this.initialJson;
13541
13541
  // Start schema watcher and emit initial value
13542
13542
  this.setupSchemaWatcher();
13543
- this.resourcePathChanges.next(this.working?.dataSource?.resourcePath || '');
13543
+ this.resourcePathChanges.next({
13544
+ path: String(this.working?.dataSource?.resourcePath || '').trim(),
13545
+ immediate: false,
13546
+ });
13544
13547
  }
13545
13548
  ip = inject(IconPickerService);
13546
13549
  tx(text, params) {
@@ -13745,23 +13748,20 @@ class PraxisListConfigEditor {
13745
13748
  this.chipColorMapEntries = [];
13746
13749
  this.chipLabelMapEntries = [];
13747
13750
  }
13748
- // Debounced schema loader for resourcePath
13749
13751
  setupSchemaWatcher() {
13750
13752
  this.resourcePathChanges
13751
- .pipe(debounceTime$1(300), distinctUntilChanged(), tap(() => this.setEditorBusy(true)), switchMap((rp) => {
13752
- const path = (rp || '').trim();
13753
- if (!path || !this.crud) {
13754
- this.fields = [];
13753
+ .pipe(distinctUntilChanged((previous, current) => !current.immediate && previous.path === current.path),
13754
+ // Invalidate the old request before waiting for a text edit to settle.
13755
+ switchMap(({ path, immediate }) => {
13756
+ const crud = this.crud;
13757
+ if (!path || !crud)
13755
13758
  return of([]);
13756
- }
13757
- try {
13758
- this.crud.configure(path);
13759
- return this.crud.getSchema().pipe(catchError(() => of([])));
13760
- }
13761
- catch {
13762
- return of([]);
13763
- }
13764
- }), takeUntilDestroyed())
13759
+ this.setEditorBusy(true);
13760
+ return (immediate ? of(0) : timer(300)).pipe(switchMap(() => defer(() => {
13761
+ crud.configure(path);
13762
+ return crud.getSchema();
13763
+ })), catchError(() => of([])), defaultIfEmpty([]));
13764
+ }), takeUntilDestroyed(this.destroyRef))
13765
13765
  .subscribe((fields) => {
13766
13766
  this.fields = (fields || [])
13767
13767
  .map((f) => f?.name || f?.field || f?.key)
@@ -13771,35 +13771,16 @@ class PraxisListConfigEditor {
13771
13771
  });
13772
13772
  }
13773
13773
  loadFieldsFromResource(resourcePath) {
13774
- const path = String(resourcePath ?? '').trim();
13775
- if (!path || !this.crud) {
13776
- this.fields = [];
13777
- this.setEditorBusy(false);
13778
- this.verify();
13779
- return;
13780
- }
13781
- this.setEditorBusy(true);
13782
- try {
13783
- this.crud.configure(path);
13784
- this.crud
13785
- .getSchema()
13786
- .pipe(catchError(() => of([])))
13787
- .subscribe((fields) => {
13788
- this.fields = (fields || [])
13789
- .map((f) => f?.name || f?.field || f?.key)
13790
- .filter((n) => !!n);
13791
- this.setEditorBusy(false);
13792
- this.verify();
13793
- });
13794
- }
13795
- catch {
13796
- this.fields = [];
13797
- this.setEditorBusy(false);
13798
- this.verify();
13799
- }
13774
+ this.resourcePathChanges.next({
13775
+ path: String(resourcePath ?? '').trim(),
13776
+ immediate: true,
13777
+ });
13800
13778
  }
13801
13779
  onResourcePathChange(value) {
13802
- this.resourcePathChanges.next(value ?? '');
13780
+ this.resourcePathChanges.next({
13781
+ path: String(value ?? '').trim(),
13782
+ immediate: false,
13783
+ });
13803
13784
  this.markDirty();
13804
13785
  this.verify();
13805
13786
  }
@@ -13853,7 +13834,7 @@ class PraxisListConfigEditor {
13853
13834
  });
13854
13835
  this.syncDirtyStateNow();
13855
13836
  this.markDirty();
13856
- this.verify();
13837
+ this.loadFieldsFromResource('');
13857
13838
  }
13858
13839
  getLocalDataRows() {
13859
13840
  const data = this.working?.dataSource?.data;
@@ -14497,7 +14478,9 @@ class PraxisListConfigEditor {
14497
14478
  this.isValid$.next(true);
14498
14479
  }
14499
14480
  finally {
14500
- this.setEditorBusy(false);
14481
+ this.loadFieldsFromResource(this.getActiveDataSourceMode() === 'remote'
14482
+ ? String(this.working?.dataSource?.resourcePath || '')
14483
+ : '');
14501
14484
  }
14502
14485
  }
14503
14486
  onLayoutChanged() {
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@praxisui/list",
3
- "version": "10.0.0-rc.20",
3
+ "version": "10.0.0-rc.21",
4
4
  "description": "List components and helpers for Praxis UI.",
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/dynamic-fields": "^10.0.0-rc.20",
10
+ "@praxisui/dynamic-fields": "^10.0.0-rc.21",
11
11
  "rxjs": ">=7 <9",
12
12
  "@angular/forms": "^21.0.0",
13
13
  "@angular/router": "^21.0.0",
14
- "@praxisui/ai": "^10.0.0-rc.20",
15
- "@praxisui/core": "^10.0.0-rc.20",
16
- "@praxisui/rich-content": "^10.0.0-rc.20",
17
- "@praxisui/settings-panel": "^10.0.0-rc.20"
14
+ "@praxisui/ai": "^10.0.0-rc.21",
15
+ "@praxisui/core": "^10.0.0-rc.21",
16
+ "@praxisui/rich-content": "^10.0.0-rc.21",
17
+ "@praxisui/settings-panel": "^10.0.0-rc.21"
18
18
  },
19
19
  "dependencies": {
20
20
  "tslib": "^2.3.0",