@praxisui/page-builder 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/page-builder",
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,
@@ -14257,18 +14257,26 @@ class DynamicPageConfigEditorComponent {
14257
14257
  }, 50);
14258
14258
  }
14259
14259
  switchBlockedWidgetsToAutoHeight() {
14260
+ this.refreshPanelState();
14260
14261
  const preserved = [...this.previousAdjustableHeights()];
14261
- let changed = false;
14262
- for (const [index, target] of this.canvasLimits.targets.entries()) {
14262
+ const processed = new Set();
14263
+ // Validation reports one blocking target at a time. Revalidate each change
14264
+ // so another affected height can surface without guessing from a global error.
14265
+ while (processed.size < this.canvasLimits.targets.length) {
14266
+ const index = this.canvasLimits.targets.findIndex((_, candidateIndex) => {
14267
+ if (processed.has(candidateIndex))
14268
+ return false;
14269
+ const controls = this.canvasLimits.form.at(candidateIndex)?.controls;
14270
+ return !!controls && controls.heightMode.value !== 'auto'
14271
+ && (!!controls.heightPx.getError('canvasLimit') || !!controls.offsetTopPx.getError('canvasLimit'));
14272
+ });
14273
+ if (index < 0)
14274
+ break;
14275
+ processed.add(index);
14276
+ const target = this.canvasLimits.targets[index];
14263
14277
  const group = this.canvasLimits.form.at(index);
14264
- if (!group)
14265
- continue;
14266
- const hasHeightError = !!group.controls.heightPx.getError('canvasLimit') || !!group.controls.offsetTopPx.getError('canvasLimit');
14267
- const isFixedWithActiveError = !!this.limitsError() && group.controls.heightMode.value === 'fixed';
14268
- if (!hasHeightError && !isFixedWithActiveError)
14269
- continue;
14270
14278
  const currentHeight = group.controls.heightPx.value;
14271
- if (typeof currentHeight === 'number') {
14279
+ if (typeof currentHeight === 'number' && Number.isFinite(currentHeight)) {
14272
14280
  const scopeLabel = target.scope === 'base' ? this.tx('editor.limits.base', 'Base layout') : this.deviceLabels[target.scope];
14273
14281
  const existingIndex = preserved.findIndex(item => item.key === target.key && item.scope === target.scope);
14274
14282
  const entry = { key: target.key, title: target.title, scope: target.scope, scopeLabel, heightPx: currentHeight };
@@ -14278,12 +14286,10 @@ class DynamicPageConfigEditorComponent {
14278
14286
  preserved.push(entry);
14279
14287
  }
14280
14288
  group.patchValue({ heightMode: 'auto', heightPx: null, offsetTopPx: null }, { emitEvent: false });
14281
- changed = true;
14282
- }
14283
- if (changed) {
14284
- this.previousAdjustableHeights.set(preserved);
14285
14289
  this.refreshPanelState();
14286
14290
  }
14291
+ if (processed.size)
14292
+ this.previousAdjustableHeights.set(preserved);
14287
14293
  }
14288
14294
  get selectedLayoutPresetLabel() { return this.tx('editor.summary.layout', 'Layout: {{label}}').replace('{{label}}', this.lookupPresetLabel(this.layoutPresetEntries, this.layoutPresetControl.value, this.tx('editor.fallback.manual', 'manual'))); }
14289
14295
  get selectedThemePresetLabel() { return this.tx('editor.summary.theme', 'Theme: {{label}}').replace('{{label}}', this.lookupPresetLabel(this.themePresetEntries, this.themePresetControl.value, this.tx('editor.layout.layoutDefault', 'Layout default'))); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/page-builder",
3
- "version": "10.0.0-rc.20",
3
+ "version": "10.0.0-rc.21",
4
4
  "description": "Page and widget builder utilities for Praxis UI (grid, dynamic widgets, editors).",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
@@ -8,9 +8,9 @@
8
8
  "@angular/forms": "^21.0.0",
9
9
  "@angular/cdk": "^21.0.0",
10
10
  "@angular/material": "^21.0.0",
11
- "@praxisui/ai": "^10.0.0-rc.20",
12
- "@praxisui/core": "^10.0.0-rc.20",
13
- "@praxisui/settings-panel": "^10.0.0-rc.20",
11
+ "@praxisui/ai": "^10.0.0-rc.21",
12
+ "@praxisui/core": "^10.0.0-rc.21",
13
+ "@praxisui/settings-panel": "^10.0.0-rc.21",
14
14
  "rxjs": "~7.8.0"
15
15
  },
16
16
  "dependencies": {