@vectoriox/iox-builder 4.29.0 → 4.31.0

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.
package/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { ComponentRef, Type, ChangeDetectorRef, OnInit, AfterViewInit, OnChanges, OnDestroy, EventEmitter, ElementRef, ApplicationRef, SimpleChanges, ViewContainerRef, Injector, EnvironmentInjector, InjectionToken, TemplateRef, AfterContentInit, QueryList } from '@angular/core';
3
3
  import * as i30 from '@vectoriox/iox-ui';
4
- import { ResponsiveOverrides, RelativeSourceSpec, Breakpoint, PageStyleSettings, FormRenderState, DataSourceEndpoints, ComponentInstanceRegistryService } from '@vectoriox/iox-ui';
4
+ import { ResponsiveOverrides, RelativeSourceSpec, Breakpoint, PageStyleSettings, FormRenderState, ComponentInstanceRegistryService, DataSourceEndpoints } from '@vectoriox/iox-ui';
5
5
  export { ComponentInstanceRegistryService, IoxContextSlot, PageStyleSettings, SetContextParams, VIRTUAL_TRAIT_KEYS, composeVirtualTraits } from '@vectoriox/iox-ui';
6
6
  import * as rxjs from 'rxjs';
7
7
  import { Subject, Subscription, BehaviorSubject, Observable } from 'rxjs';
@@ -1979,7 +1979,7 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
1979
1979
  private readNodeDisplay;
1980
1980
  private handlePanelEvents;
1981
1981
  static ɵfac: i0.ɵɵFactoryDeclaration<BuilderComponent, never>;
1982
- static ɵcmp: i0.ɵɵComponentDeclaration<BuilderComponent, "app-builder", never, { "layout": { "alias": "layout"; "required": false; }; "dataSources": { "alias": "dataSources"; "required": false; }; "orgId": { "alias": "orgId"; "required": false; }; "routeParams": { "alias": "routeParams"; "required": false; }; "pageName": { "alias": "pageName"; "required": false; }; "isSaving": { "alias": "isSaving"; "required": false; }; "pageStatus": { "alias": "pageStatus"; "required": false; }; "pageSettings": { "alias": "pageSettings"; "required": false; }; "globalElements": { "alias": "globalElements"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "moveableMode": { "alias": "moveableMode"; "required": false; }; }, { "save": "save"; "undo": "undo"; "redo": "redo"; "back": "back"; "preview": "preview"; "publishToggle": "publishToggle"; "pageSettingsChange": "pageSettingsChange"; "applyAnimationToAll": "applyAnimationToAll"; "saveBlock": "saveBlock"; "globalElementsChange": "globalElementsChange"; }, never, ["[builderPages]", "[builderComponents]", "[builderTokens]", "[builderPanel]"], false, never>;
1982
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderComponent, "app-builder", never, { "layout": { "alias": "layout"; "required": false; }; "dataSources": { "alias": "dataSources"; "required": false; }; "orgId": { "alias": "orgId"; "required": false; }; "routeParams": { "alias": "routeParams"; "required": false; }; "pageName": { "alias": "pageName"; "required": false; }; "isSaving": { "alias": "isSaving"; "required": false; }; "pageStatus": { "alias": "pageStatus"; "required": false; }; "pageSettings": { "alias": "pageSettings"; "required": false; }; "globalElements": { "alias": "globalElements"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "moveableMode": { "alias": "moveableMode"; "required": false; }; }, { "save": "save"; "undo": "undo"; "redo": "redo"; "back": "back"; "preview": "preview"; "publishToggle": "publishToggle"; "pageSettingsChange": "pageSettingsChange"; "applyAnimationToAll": "applyAnimationToAll"; "saveBlock": "saveBlock"; "globalElementsChange": "globalElementsChange"; }, never, ["[builderToolbarActions]", "[builderPages]", "[builderComponents]", "[builderTokens]", "[builderPanel]"], false, never>;
1983
1983
  }
1984
1984
 
1985
1985
  /**
@@ -2119,6 +2119,8 @@ declare class PresetRegistryService {
2119
2119
  }
2120
2120
 
2121
2121
  declare class OverlayComponent implements OnInit, OnDestroy {
2122
+ private elRef;
2123
+ private instanceRegistry;
2122
2124
  private overlayService;
2123
2125
  private viewportService;
2124
2126
  private presetRegistry;
@@ -2151,6 +2153,9 @@ declare class OverlayComponent implements OnInit, OnDestroy {
2151
2153
  hiMarginStyle: Record<string, string>;
2152
2154
  hiPaddingStyle: Record<string, string>;
2153
2155
  selectOutlineStyle: Record<string, string>;
2156
+ /** Toolbar flips INSIDE the outline near the canvas top — it must never sit on the
2157
+ * breadcrumb band (builder chrome never overlaps builder chrome; live find 2026-10-09). */
2158
+ toolbarInside: boolean;
2154
2159
  moreMenuVisible: boolean;
2155
2160
  moreMenuStyle: Record<string, string>;
2156
2161
  badgeMenuVisible: boolean;
@@ -2170,7 +2175,7 @@ declare class OverlayComponent implements OnInit, OnDestroy {
2170
2175
  private boundUpdate;
2171
2176
  private boundScrollUpdate;
2172
2177
  private activeScrollContainer;
2173
- constructor(overlayService: OverlayService, viewportService: ViewportService, presetRegistry: PresetRegistryService, symbolRegistry: SymbolRegistryService, interactionPresetRegistry: InteractionPresetRegistryService, interactionEngine: InteractionEngineService, clipboard: BuilderClipboardService, styleRegistry: StyleRegistryService, panelEventService: PanelEventService, cdr: ChangeDetectorRef, dragEngine: DragEngineService);
2178
+ constructor(elRef: ElementRef<HTMLElement>, instanceRegistry: ComponentInstanceRegistryService, overlayService: OverlayService, viewportService: ViewportService, presetRegistry: PresetRegistryService, symbolRegistry: SymbolRegistryService, interactionPresetRegistry: InteractionPresetRegistryService, interactionEngine: InteractionEngineService, clipboard: BuilderClipboardService, styleRegistry: StyleRegistryService, panelEventService: PanelEventService, cdr: ChangeDetectorRef, dragEngine: DragEngineService);
2174
2179
  /** Resolves the selected node's OWNING dropzone id dynamically — the drag-handle isn't
2175
2180
  * rendered inside any container (it's overlay chrome), so it has no source id of its own. */
2176
2181
  get dragHandleSourceId(): string | null;
@@ -2227,6 +2232,11 @@ declare class OverlayComponent implements OnInit, OnDestroy {
2227
2232
  onCopyInteractionPreset(event: MouseEvent): void;
2228
2233
  onPasteInteractionPreset(event: MouseEvent): void;
2229
2234
  get isSliderContainer(): boolean;
2235
+ /** Boards A4/A5: a closed dialog has NO canvas presence — this toolbar eye (and the layer
2236
+ * tree row) is how an author opens and closes it for design. */
2237
+ get isDialog(): boolean;
2238
+ get dialogDesignOpen(): boolean;
2239
+ onToggleDialogOpen(event: MouseEvent): void;
2230
2240
  onAddSlide(event: MouseEvent): void;
2231
2241
  onDetachSymbol(event: MouseEvent): void;
2232
2242
  onResyncSymbol(event: MouseEvent): void;
@@ -2342,7 +2352,7 @@ declare class ToolbarComponent {
2342
2352
  toggleZoomPopover(event: Event): void;
2343
2353
  selectZoom(value: number | 'fit'): void;
2344
2354
  static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, never>;
2345
- static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "app-toolbar", never, { "activeMode": { "alias": "activeMode"; "required": false; }; "activeBreakpoint": { "alias": "activeBreakpoint"; "required": false; }; "breakpointCounts": { "alias": "breakpointCounts"; "required": false; }; "auditCount": { "alias": "auditCount"; "required": false; }; "auditOpen": { "alias": "auditOpen"; "required": false; }; "activeZoom": { "alias": "activeZoom"; "required": false; }; "activeScreenWidth": { "alias": "activeScreenWidth"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "isSaving": { "alias": "isSaving"; "required": false; }; "pageStatus": { "alias": "pageStatus"; "required": false; }; }, { "modeChange": "modeChange"; "breakpointChange": "breakpointChange"; "auditToggle": "auditToggle"; "zoomChange": "zoomChange"; "screenWidthChange": "screenWidthChange"; "undo": "undo"; "redo": "redo"; "save": "save"; "preview": "preview"; "publishToggle": "publishToggle"; }, never, never, false, never>;
2355
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "app-toolbar", never, { "activeMode": { "alias": "activeMode"; "required": false; }; "activeBreakpoint": { "alias": "activeBreakpoint"; "required": false; }; "breakpointCounts": { "alias": "breakpointCounts"; "required": false; }; "auditCount": { "alias": "auditCount"; "required": false; }; "auditOpen": { "alias": "auditOpen"; "required": false; }; "activeZoom": { "alias": "activeZoom"; "required": false; }; "activeScreenWidth": { "alias": "activeScreenWidth"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "isSaving": { "alias": "isSaving"; "required": false; }; "pageStatus": { "alias": "pageStatus"; "required": false; }; }, { "modeChange": "modeChange"; "breakpointChange": "breakpointChange"; "auditToggle": "auditToggle"; "zoomChange": "zoomChange"; "screenWidthChange": "screenWidthChange"; "undo": "undo"; "redo": "redo"; "save": "save"; "preview": "preview"; "publishToggle": "publishToggle"; }, never, ["*"], false, never>;
2346
2356
  }
2347
2357
 
2348
2358
  /**
@@ -2613,13 +2623,17 @@ declare class BuilderButtonBlockComponent implements OnInit, OnDestroy {
2613
2623
  * The Dialog's CANVAS twin (actions plan A1b / boards A4–A5). Two render strategies, one model:
2614
2624
  * the live site uses a real `<dialog>` (top layer); here the overlay is `position: fixed`, which
2615
2625
  * a transformed ancestor CONTAINS — so it fills the page frame, not the admin viewport, at every
2616
- * zoom. Closed it renders as a compact chip in flow (A4's "closed later? reopen from the chip"),
2617
- * and a freshly dropped EMPTY dialog opens itself — you land designing it, not hunting it.
2626
+ * zoom. CLOSED IT RENDERS NOTHING (board A4): the dialog's handles are the LAYER TREE row and
2627
+ * the selection toolbar's eye — a chip in the page flow was a live-test deviation (2026-10-09)
2628
+ * that polluted the canvas and hid the node's name. Selecting the node (tree, breadcrumb)
2629
+ * reopens it; a freshly dropped EMPTY dialog opens itself — you land designing it, not hunting
2630
+ * it. `placement` (A5: "placement is a style choice") positions the surface on both twins.
2618
2631
  * Open/close/toggle actions reach it through the instance registry, same as Swiper's methods.
2619
2632
  */
2620
2633
  declare class BuilderDialogComponent implements OnInit, OnDestroy {
2621
2634
  private dragEngine;
2622
2635
  private instanceRegistry;
2636
+ private overlayService;
2623
2637
  private cdr;
2624
2638
  children: ComponentNode[];
2625
2639
  style: {
@@ -2629,18 +2643,21 @@ declare class BuilderDialogComponent implements OnInit, OnDestroy {
2629
2643
  dropListId: string;
2630
2644
  closeOnBackdrop: boolean | string;
2631
2645
  showCloseButton: boolean | string;
2646
+ placement: string;
2632
2647
  childClick: EventEmitter<any>;
2633
2648
  childMouseEnter: EventEmitter<any>;
2634
2649
  childMouseLeave: EventEmitter<void>;
2635
2650
  /** Canvas-only visibility. Never serialised; the live site always starts closed. */
2636
2651
  designOpen: boolean;
2637
- constructor(dragEngine: DragEngineService, instanceRegistry: ComponentInstanceRegistryService, cdr: ChangeDetectorRef);
2652
+ get placementValue(): string;
2653
+ private selectSub?;
2654
+ constructor(dragEngine: DragEngineService, instanceRegistry: ComponentInstanceRegistryService, overlayService: OverlayService, cdr: ChangeDetectorRef);
2638
2655
  ngOnInit(): void;
2639
2656
  ngOnDestroy(): void;
2640
2657
  onBackdrop(): void;
2641
2658
  onDrop(event: IoxDropEvent): void;
2642
2659
  static ɵfac: i0.ɵɵFactoryDeclaration<BuilderDialogComponent, never>;
2643
- static ɵcmp: i0.ɵɵComponentDeclaration<BuilderDialogComponent, "app-builder-dialog", never, { "children": { "alias": "children"; "required": false; }; "style": { "alias": "style"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; "dropListId": { "alias": "dropListId"; "required": false; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; }; }, { "childClick": "childClick"; "childMouseEnter": "childMouseEnter"; "childMouseLeave": "childMouseLeave"; }, never, never, false, never>;
2660
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderDialogComponent, "app-builder-dialog", never, { "children": { "alias": "children"; "required": false; }; "style": { "alias": "style"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; "dropListId": { "alias": "dropListId"; "required": false; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; }, { "childClick": "childClick"; "childMouseEnter": "childMouseEnter"; "childMouseLeave": "childMouseLeave"; }, never, never, false, never>;
2644
2661
  }
2645
2662
 
2646
2663
  declare class SliderContainerComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-builder",
3
- "version": "4.29.0",
3
+ "version": "4.31.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",