@praxisui/dynamic-form 9.0.0-beta.39 → 9.0.0-beta.40

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-06T14:21:26.432Z",
3
+ "generatedAt": "2026-07-06T15:31:28.393Z",
4
4
  "packageName": "@praxisui/dynamic-form",
5
- "packageVersion": "9.0.0-beta.39",
5
+ "packageVersion": "9.0.0-beta.40",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 2,
@@ -340,6 +340,7 @@ Core surface action materializers must stop injecting local `config.sections` fo
340
340
  - Dynamic Form and surface action materialization share the same grouping and width algorithm.
341
341
  - CRUD dialog forms can opt into `groupedCommand`.
342
342
  - Generated section ids are stable.
343
+ - Runtime and presentation mode suppress generated or authored sections/rows/columns that do not contain any visible field or visible rich content block; customization mode still exposes empty containers for authoring.
343
344
  - Documentation explains when to use authored config versus schema materialization.
344
345
  - Ergon reference screens can remove repeated local layout sections without losing grouping quality.
345
346
  - Detail layout has consistent label/value hierarchy, readable null and long-value states, no horizontal scroll on narrow viewports and no editable controls.
@@ -13331,7 +13331,7 @@ class PraxisDynamicForm {
13331
13331
  if (Array.isArray(section.rows) && section.rows.length > 0) {
13332
13332
  return section.rows.some((row) => this.isRowVisible(row));
13333
13333
  }
13334
- return true;
13334
+ return false;
13335
13335
  }
13336
13336
  getSectionTitle(section) {
13337
13337
  const props = this.getSectionRuleProps(section);
@@ -13525,13 +13525,9 @@ class PraxisDynamicForm {
13525
13525
  return true;
13526
13526
  }
13527
13527
  if (Array.isArray(row.columns) && row.columns.length > 0) {
13528
- const columnsWithFields = row.columns.filter((column) => getFormColumnFieldNames(column).length > 0);
13529
- if (columnsWithFields.length === 0) {
13530
- return true;
13531
- }
13532
13528
  return row.columns.some((column) => this.isColumnVisible(column));
13533
13529
  }
13534
- return true;
13530
+ return false;
13535
13531
  }
13536
13532
  getRowGap(row) {
13537
13533
  const props = this.getRowRuleProps(row);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/dynamic-form",
3
- "version": "9.0.0-beta.39",
3
+ "version": "9.0.0-beta.40",
4
4
  "description": "Angular dynamic form engine for Praxis UI: metadata-driven forms, hooks, and services integrating @praxisui/* packages.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
@@ -9,13 +9,13 @@
9
9
  "@angular/forms": "^21.0.0",
10
10
  "@angular/material": "^21.0.0",
11
11
  "@angular/router": "^21.0.0",
12
- "@praxisui/ai": "^9.0.0-beta.39",
13
- "@praxisui/dynamic-fields": "^9.0.0-beta.39",
14
- "@praxisui/metadata-editor": "^9.0.0-beta.39",
15
- "@praxisui/rich-content": "^9.0.0-beta.39",
16
- "@praxisui/settings-panel": "^9.0.0-beta.39",
17
- "@praxisui/visual-builder": "^9.0.0-beta.39",
18
- "@praxisui/core": "^9.0.0-beta.39",
12
+ "@praxisui/ai": "^9.0.0-beta.40",
13
+ "@praxisui/dynamic-fields": "^9.0.0-beta.40",
14
+ "@praxisui/metadata-editor": "^9.0.0-beta.40",
15
+ "@praxisui/rich-content": "^9.0.0-beta.40",
16
+ "@praxisui/settings-panel": "^9.0.0-beta.40",
17
+ "@praxisui/visual-builder": "^9.0.0-beta.40",
18
+ "@praxisui/core": "^9.0.0-beta.40",
19
19
  "rxjs": "^7.8.0"
20
20
  },
21
21
  "dependencies": {