@praxisui/crud 9.0.0-beta.51 → 9.0.0-beta.52

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-07-08T19:26:37.325Z",
3
+ "generatedAt": "2026-07-08T20:10:39.446Z",
4
4
  "packageName": "@praxisui/crud",
5
- "packageVersion": "9.0.0-beta.51",
5
+ "packageVersion": "9.0.0-beta.52",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 2,
@@ -5125,11 +5125,29 @@ class DynamicFormDialogHostComponent {
5125
5125
  return config && typeof config === 'object' ? config : {};
5126
5126
  }
5127
5127
  get dialogTitle() {
5128
- return stringOrUndefined(this.data.action?.label) ||
5128
+ const actionLabel = this.resolveActionDialogTitle();
5129
+ return actionLabel ||
5129
5130
  stringOrUndefined(this.formConfig['title']) ||
5130
5131
  deriveModeTitle(this.mode, this.resolveResourceTitle()) ||
5131
5132
  this.texts.title;
5132
5133
  }
5134
+ resolveActionDialogTitle() {
5135
+ const actionLabel = stringOrUndefined(this.data.action?.label);
5136
+ if (!actionLabel) {
5137
+ return undefined;
5138
+ }
5139
+ const resource = this.data.metadata?.resource ?? {};
5140
+ const table = this.data.metadata?.table ?? {};
5141
+ const businessTitle = stringOrUndefined(resource.formTitle ??
5142
+ resource.title ??
5143
+ resource.label ??
5144
+ table.title ??
5145
+ table.label);
5146
+ const routeFallbackTitle = deriveModeTitle(this.mode, titleFromResourcePath(this.resourcePath));
5147
+ return businessTitle && routeFallbackTitle && sameTitle(actionLabel, routeFallbackTitle)
5148
+ ? undefined
5149
+ : actionLabel;
5150
+ }
5133
5151
  resolveResourceTitle() {
5134
5152
  const resource = this.data.metadata?.resource ?? {};
5135
5153
  const table = this.data.metadata?.table ?? {};
@@ -5458,6 +5476,17 @@ function stringOrUndefined(value) {
5458
5476
  const text = String(value ?? '').trim();
5459
5477
  return text || undefined;
5460
5478
  }
5479
+ function sameTitle(left, right) {
5480
+ return normalizeTitle(left) === normalizeTitle(right);
5481
+ }
5482
+ function normalizeTitle(value) {
5483
+ return value
5484
+ .normalize('NFD')
5485
+ .replace(/[\u0300-\u036f]/g, '')
5486
+ .replace(/\s+/g, ' ')
5487
+ .trim()
5488
+ .toLocaleLowerCase('pt-BR');
5489
+ }
5461
5490
  function deriveCreateSubmitLabel(actionLabel) {
5462
5491
  if (!actionLabel) {
5463
5492
  return 'Criar';
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@praxisui/crud",
3
- "version": "9.0.0-beta.51",
3
+ "version": "9.0.0-beta.52",
4
4
  "description": "CRUD building blocks for Praxis UI: integrates dynamic forms and tables with unified configuration and services.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
- "@praxisui/dynamic-form": "^9.0.0-beta.51",
9
- "@praxisui/table": "^9.0.0-beta.51",
10
- "@praxisui/core": "^9.0.0-beta.51",
11
- "@praxisui/dynamic-fields": "^9.0.0-beta.51",
12
- "@praxisui/settings-panel": "^9.0.0-beta.51",
8
+ "@praxisui/dynamic-form": "^9.0.0-beta.52",
9
+ "@praxisui/table": "^9.0.0-beta.52",
10
+ "@praxisui/core": "^9.0.0-beta.52",
11
+ "@praxisui/dynamic-fields": "^9.0.0-beta.52",
12
+ "@praxisui/settings-panel": "^9.0.0-beta.52",
13
13
  "@angular/cdk": "^21.0.0",
14
14
  "@angular/forms": "^21.0.0",
15
15
  "@angular/material": "^21.0.0",
16
16
  "@angular/router": "^21.0.0",
17
- "@praxisui/ai": "^9.0.0-beta.51",
17
+ "@praxisui/ai": "^9.0.0-beta.52",
18
18
  "rxjs": "~7.8.0"
19
19
  },
20
20
  "dependencies": {
@@ -381,6 +381,7 @@ declare class DynamicFormDialogHostComponent implements OnInit {
381
381
  private extractInitialValue;
382
382
  private resolveFormConfig;
383
383
  get dialogTitle(): string;
384
+ private resolveActionDialogTitle;
384
385
  private resolveResourceTitle;
385
386
  private resolveFormActions;
386
387
  private resolveLayoutPolicy;