@vectoriox/iox-builder 1.6.3 → 1.6.4

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.
@@ -5792,14 +5792,6 @@ class SliderContainerComponent {
5792
5792
  centeredSlides: this.centeredSlides,
5793
5793
  initialSlide: this.initialSlide,
5794
5794
  autoHeight: this.autoHeight,
5795
- // Repeater/data-bound slides are injected into the DOM asynchronously, AFTER
5796
- // Swiper first initializes over the single template slide. Without observers,
5797
- // Swiper never registers those clones — they collapse into the flex wrapper and
5798
- // shrink to fit (flat, non-sliding row). These make Swiper watch for added/removed
5799
- // slides and auto-update its layout.
5800
- observer: true,
5801
- observeParents: true,
5802
- observeSlideChildren: true,
5803
5795
  };
5804
5796
  if (this.isPreview) {
5805
5797
  // Full interactive config for preview
@@ -6314,18 +6306,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
6314
6306
  }] } });
6315
6307
 
6316
6308
  class SliderSlideComponent {
6317
- set style(v) { this._style = v; }
6309
+ set style(v) {
6310
+ if (v === this._style)
6311
+ return;
6312
+ this._style = v;
6313
+ // Strip width constraints; rebuild cached object so ngStyle only updates DOM
6314
+ // when the input actually changed — prevents spurious MutationObserver triggers.
6315
+ const { width, minWidth, maxWidth, ...rest } = v || {};
6316
+ this._slideEditStyle = rest;
6317
+ }
6318
6318
  get style() { return this._style; }
6319
+ get slideEditStyle() { return this._slideEditStyle; }
6319
6320
  constructor(dragEngine, cdr, isPreview) {
6320
6321
  this.dragEngine = dragEngine;
6321
6322
  this.cdr = cdr;
6322
6323
  this.isPreview = isPreview;
6323
6324
  this.children = [];
6324
- // Slide visual styles are applied via the shared `iox-node-<cssId>` CSS class
6325
- // (StyleRegistryService), not inline — so repeated preview clones inherit master
6326
- // style edits. Kept as an @Input so render.directive / style panel can still set it
6327
- // (read internally for CDK orientation) without an NG0303 warning.
6328
6325
  this._style = {};
6326
+ this._slideEditStyle = {};
6329
6327
  this.nodeId = '';
6330
6328
  this.dropListId = '';
6331
6329
  this.childClick = new EventEmitter();
@@ -6344,6 +6342,7 @@ class SliderSlideComponent {
6344
6342
  <div *ngIf="isPreview"
6345
6343
  class="swiper-slide"
6346
6344
  [ngClass]="['iox-node-' + nodeId]"
6345
+ [ngStyle]="style"
6347
6346
  ioxDropzone
6348
6347
  [ioxDropzoneId]="dropListId"
6349
6348
  [ioxDropzoneData]="children"
@@ -6368,13 +6367,14 @@ class SliderSlideComponent {
6368
6367
  </div>
6369
6368
  </div>
6370
6369
 
6371
- <!-- EDIT: plain block. Visual styles come from the shared iox-node-<cssId> CSS
6372
- class (StyleRegistryService), NOT inline — so repeated preview clones inherit
6373
- master-slide style edits through the shared rule. -->
6370
+ <!-- EDIT: plain block so it sits in the horizontal strip.
6371
+ Width/min-width/max-width are stripped from ngStyle here — they belong on the
6372
+ iox-outer-* wrapper (already applied by StyleRegistryService), not on this inner
6373
+ div. Applying them here too would make the content 33% of 33%. -->
6374
6374
  <div *ngIf="!isPreview"
6375
6375
  class="slide-edit-block"
6376
- [class.slide-empty]="!children.length"
6377
6376
  [ngClass]="['iox-node-' + nodeId]"
6377
+ [ngStyle]="slideEditStyle"
6378
6378
  ioxDropzone
6379
6379
  [ioxDropzoneId]="dropListId"
6380
6380
  [ioxDropzoneData]="children"
@@ -6398,7 +6398,7 @@ class SliderSlideComponent {
6398
6398
  </ng-container>
6399
6399
  </div>
6400
6400
  </div>
6401
- `, isInline: true, styles: [".swiper-slide,.slide-edit-block{position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:hidden}.slide-edit-block{width:100%}.slide-edit-block.slide-empty{min-height:120px;background-color:var(--p-surface-300)}.slide-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:1.5px dashed rgba(100,116,139,.35);border-radius:4px;color:#64748b80;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .15s}:host:hover .slide-placeholder,:host.iox-drag-over .slide-placeholder{opacity:1}.slide-placeholder i{font-size:22px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RenderDirective, selector: "[ioxRender]", inputs: ["ioxRender"], outputs: ["onClick", "onMouseEnter", "onMouseLeave"] }, { kind: "directive", type: IoxDraggableDirective, selector: "[ioxDraggable]", inputs: ["ioxDragData", "ioxDragSourceId"] }, { kind: "directive", type: IoxDropzoneDirective, selector: "[ioxDropzone]", inputs: ["ioxDropzoneId", "ioxDropzoneData", "ioxDropzonePostDrop"], outputs: ["ioxDrop"] }] }); }
6401
+ `, isInline: true, styles: [".swiper-slide,.slide-edit-block{position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:hidden;background-color:var(--p-surface-300)}.slide-edit-block{width:100%}.slide-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:1.5px dashed rgba(100,116,139,.35);border-radius:4px;color:#64748b80;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .15s}:host:hover .slide-placeholder,:host.iox-drag-over .slide-placeholder{opacity:1}.slide-placeholder i{font-size:22px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: RenderDirective, selector: "[ioxRender]", inputs: ["ioxRender"], outputs: ["onClick", "onMouseEnter", "onMouseLeave"] }, { kind: "directive", type: IoxDraggableDirective, selector: "[ioxDraggable]", inputs: ["ioxDragData", "ioxDragSourceId"] }, { kind: "directive", type: IoxDropzoneDirective, selector: "[ioxDropzone]", inputs: ["ioxDropzoneId", "ioxDropzoneData", "ioxDropzonePostDrop"], outputs: ["ioxDrop"] }] }); }
6402
6402
  }
6403
6403
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: SliderSlideComponent, decorators: [{
6404
6404
  type: Component,
@@ -6407,6 +6407,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
6407
6407
  <div *ngIf="isPreview"
6408
6408
  class="swiper-slide"
6409
6409
  [ngClass]="['iox-node-' + nodeId]"
6410
+ [ngStyle]="style"
6410
6411
  ioxDropzone
6411
6412
  [ioxDropzoneId]="dropListId"
6412
6413
  [ioxDropzoneData]="children"
@@ -6431,13 +6432,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
6431
6432
  </div>
6432
6433
  </div>
6433
6434
 
6434
- <!-- EDIT: plain block. Visual styles come from the shared iox-node-<cssId> CSS
6435
- class (StyleRegistryService), NOT inline — so repeated preview clones inherit
6436
- master-slide style edits through the shared rule. -->
6435
+ <!-- EDIT: plain block so it sits in the horizontal strip.
6436
+ Width/min-width/max-width are stripped from ngStyle here — they belong on the
6437
+ iox-outer-* wrapper (already applied by StyleRegistryService), not on this inner
6438
+ div. Applying them here too would make the content 33% of 33%. -->
6437
6439
  <div *ngIf="!isPreview"
6438
6440
  class="slide-edit-block"
6439
- [class.slide-empty]="!children.length"
6440
6441
  [ngClass]="['iox-node-' + nodeId]"
6442
+ [ngStyle]="slideEditStyle"
6441
6443
  ioxDropzone
6442
6444
  [ioxDropzoneId]="dropListId"
6443
6445
  [ioxDropzoneData]="children"
@@ -6461,7 +6463,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
6461
6463
  </ng-container>
6462
6464
  </div>
6463
6465
  </div>
6464
- `, standalone: false, styles: [".swiper-slide,.slide-edit-block{position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:hidden}.slide-edit-block{width:100%}.slide-edit-block.slide-empty{min-height:120px;background-color:var(--p-surface-300)}.slide-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:1.5px dashed rgba(100,116,139,.35);border-radius:4px;color:#64748b80;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .15s}:host:hover .slide-placeholder,:host.iox-drag-over .slide-placeholder{opacity:1}.slide-placeholder i{font-size:22px}\n"] }]
6466
+ `, standalone: false, styles: [".swiper-slide,.slide-edit-block{position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:hidden;background-color:var(--p-surface-300)}.slide-edit-block{width:100%}.slide-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:1.5px dashed rgba(100,116,139,.35);border-radius:4px;color:#64748b80;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .15s}:host:hover .slide-placeholder,:host.iox-drag-over .slide-placeholder{opacity:1}.slide-placeholder i{font-size:22px}\n"] }]
6465
6467
  }], ctorParameters: () => [{ type: DragEngineService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
6466
6468
  type: Optional
6467
6469
  }, {