@vectoriox/iox-builder 4.16.0 → 4.17.1

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,8 +1,8 @@
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 i29 from '@vectoriox/iox-ui';
4
- import { ResponsiveOverrides, RelativeSourceSpec, Breakpoint, FormRenderState, DataSourceEndpoints } from '@vectoriox/iox-ui';
5
- export { ComponentInstanceRegistryService, IoxContextSlot, SetContextParams, VIRTUAL_TRAIT_KEYS, composeVirtualTraits } from '@vectoriox/iox-ui';
4
+ import { ResponsiveOverrides, RelativeSourceSpec, Breakpoint, PageStyleSettings, FormRenderState, DataSourceEndpoints } from '@vectoriox/iox-ui';
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';
8
8
  import * as _vectoriox_iox_builder from '@vectoriox/iox-builder';
@@ -544,15 +544,6 @@ declare const ROUTE_ANIMATION_OPTIONS: {
544
544
  value: RouteAnimationPreset;
545
545
  description: string;
546
546
  }[];
547
- interface PageStyleSettings {
548
- backgroundColor: string;
549
- backgroundType: 'solid' | 'gradient' | 'image';
550
- backgroundGradient: string;
551
- backgroundImage: string;
552
- fontFamily: string;
553
- textColor: string;
554
- maxWidth: string;
555
- }
556
547
  interface PageScrollSettings {
557
548
  enabled: boolean;
558
549
  lerp: number;
@@ -1696,6 +1687,10 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
1696
1687
  isPanning: boolean;
1697
1688
  panX: number;
1698
1689
  panY: number;
1690
+ /** Compiled `pageSettings.style` for the canvas surface — the SAME declarations the SSR
1691
+ * engine puts on <body> (compilePageStyle in @vectoriox/iox-ui). A FIELD, recomputed in
1692
+ * ngOnChanges: a getter would hand [ngStyle] a fresh object every CD pass. */
1693
+ pageStyleCss: Record<string, string>;
1699
1694
  /** Canvas frame height in canvas-space pixels (= previewScroll.clientHeight / scale).
1700
1695
  * Used as iox-page-component's height so position:fixed top:0;bottom:0 fills the
1701
1696
  * same area as height:100vh (both resolve to this value). */
@@ -1794,6 +1789,14 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
1794
1789
  handleCanvasClick(): void;
1795
1790
  /** Breadcrumb crumb clicked — select that ancestor. Mirrors a layer-tree click. */
1796
1791
  onCrumbSelect(node: ComponentNode): void;
1792
+ /**
1793
+ * Body crumb clicked — the page surface itself, which is not a node in the layout tree.
1794
+ * Clears the element selection and opens the Page panel, where the page's background and
1795
+ * typography are edited. Deliberately NOT a pseudo-selection: `selectedItem` stays null,
1796
+ * so nothing downstream has to special-case a node that cannot be moved, styled per
1797
+ * breakpoint, duplicated or deleted.
1798
+ */
1799
+ onCrumbRootSelect(): void;
1797
1800
  /** Breadcrumb crumb hovered (or `null` on leave) — outline it on the canvas so the chain
1798
1801
  * is readable without clicking through it. */
1799
1802
  onCrumbPeek(node: ComponentNode | null): void;
@@ -2704,12 +2707,17 @@ declare class LayerTreeComponent implements OnInit, OnDestroy {
2704
2707
  static ɵcmp: i0.ɵɵComponentDeclaration<LayerTreeComponent, "app-layer-tree", never, { "layout": { "alias": "layout"; "required": false; }; "globalElements": { "alias": "globalElements"; "required": false; }; }, { "nodeSelect": "nodeSelect"; "nodeAction": "nodeAction"; "nodeMove": "nodeMove"; }, never, never, false, never>;
2705
2708
  }
2706
2709
 
2710
+ /** Label of the always-present root crumb. The page surface itself, not a layout node. */
2711
+ declare const BODY_CRUMB_LABEL = "Body";
2707
2712
  /** One rendered crumb — precomputed so the template binds fields, never method calls. */
2708
2713
  interface Crumb {
2709
- node: ComponentNode;
2714
+ /** `null` for the Body crumb: the page root is not a node in the layout tree. */
2715
+ node: ComponentNode | null;
2710
2716
  label: string;
2711
- /** True for the last crumb (the selected node itself). */
2717
+ /** True for the last crumb (the selected node, or Body when nothing is selected). */
2712
2718
  isCurrent: boolean;
2719
+ /** Stable track key — nodes are tracked by reference, Body by its label. */
2720
+ key: ComponentNode | string;
2713
2721
  }
2714
2722
  /** A state badge shown on the right of the bar for the selected node. */
2715
2723
  interface SelectionBadge {
@@ -2728,15 +2736,23 @@ interface SelectionBadge {
2728
2736
  * See iox-ai-guidance `architecture/builder/builder-usability-plan.md` (B1).
2729
2737
  */
2730
2738
  declare class BreadcrumbBarComponent {
2731
- /** Root → selected node. Empty when nothing is selected. */
2739
+ /**
2740
+ * Root → selected node. Empty when nothing is selected.
2741
+ *
2742
+ * The rendered chain always begins with Body — the page surface every layout sits on —
2743
+ * so the path is never empty and the page itself is one click away from any depth.
2744
+ */
2732
2745
  set path(value: ComponentNode[] | null | undefined);
2733
2746
  /** Emitted when a crumb is clicked — the builder selects that node. */
2734
2747
  nodeSelect: EventEmitter<ComponentNode>;
2748
+ /** Emitted when the Body crumb is clicked — the builder clears the selection and opens
2749
+ * the Page panel, where the page's own background and typography are edited. */
2750
+ rootSelect: EventEmitter<void>;
2735
2751
  /** Emitted on crumb hover (and `null` on leave) — the builder outlines it on canvas. */
2736
2752
  nodePeek: EventEmitter<ComponentNode | null>;
2737
2753
  crumbs: Crumb[];
2738
2754
  badges: SelectionBadge[];
2739
- trackCrumb(_index: number, crumb: Crumb): ComponentNode;
2755
+ trackCrumb(_index: number, crumb: Crumb): ComponentNode | string;
2740
2756
  trackBadge(_index: number, badge: SelectionBadge): string;
2741
2757
  onSelect(crumb: Crumb): void;
2742
2758
  onPeek(crumb: Crumb): void;
@@ -2747,7 +2763,7 @@ declare class BreadcrumbBarComponent {
2747
2763
  */
2748
2764
  private buildBadges;
2749
2765
  static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbBarComponent, never>;
2750
- static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbBarComponent, "app-breadcrumb-bar", never, { "path": { "alias": "path"; "required": false; }; }, { "nodeSelect": "nodeSelect"; "nodePeek": "nodePeek"; }, never, never, false, never>;
2766
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbBarComponent, "app-breadcrumb-bar", never, { "path": { "alias": "path"; "required": false; }; }, { "nodeSelect": "nodeSelect"; "rootSelect": "rootSelect"; "nodePeek": "nodePeek"; }, never, never, false, never>;
2751
2767
  }
2752
2768
 
2753
2769
  /**
@@ -3125,5 +3141,5 @@ declare class TextBlockComponentConfig extends ComponentConfig {
3125
3141
  constructor();
3126
3142
  }
3127
3143
 
3128
- export { ACTION_TYPE_OPTIONS, AuditCode, AuditPanelComponent, AuditSeverity, BREAKPOINT_PRESENTATION, BUILDER_CANVAS_CONTAINER, BUILDER_CHROME_EN, BackgroundGroupStyleConfig, BorderGroupStyleConfig, BreadcrumbBarComponent, BuilderButtonBlockComponent, BuilderButtonComponentConfig, BuilderClipboardService, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDataSourceService, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderHistoryService, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderListComponentConfig, BuilderListItemComponentConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, ButtonBlockComponentConfig, CardComponentConfig, ChildLayoutGroupStyleConfig, ComponentConfig, ComponentRegistryService, DEFAULT_ESSENTIAL_TRAITS, DRAG_HANDLE_ATTR, DataSourceRegistryService, DataSourceType, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS, ESSENTIAL_TRAITS_BY_TYPE, EffectsGroupStyleConfig, FORM_PRESETS, FORM_TYPE, FieldComponentConfig, FieldGroupComponentConfig, FormComponentConfig, FormErrorComponentConfig, FormSuccessComponentConfig, GalleryConfig, GroupStyleConfig, INTERACTION_STATES, INVERSE_ACTION, IOX_BUILDER_LABELS, IOX_DATA_SOURCE_ENDPOINTS, IOX_FONT_MANAGER, InteractionEngineService, InteractionPresetRegistryService, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LAYOUT_PRESETS, LayerTreeComponent, LayoutGroupStyleConfig, ListGroupStyleConfig, NodeAction, OverlayComponent, OverlayService, PanelChildComponent, PanelComponent, PanelEventService, PanelEventTypes, PanelTypes, PositionGroupStyleConfig, PresetRegistryService, RELATIONAL_STATES, RELATIONAL_STATE_BASE, ROUTE_ANIMATION_OPTIONS, RenderDirective, RepeaterComponentConfig, SCREEN_WIDTH_OPTIONS, STRUCTURAL_STATES, SUPPORTED_STATES, SectionComponent, SectionComponentConfig, SizeGroupStyleConfig, SliderContainerComponent, SliderContainerConfig, SliderSlideComponent, SliderSlideConfig, SpacingGroupStyleConfig, StyleCategory, StyleRegistryService, TraitConfig as StyleTraitConfig, SubmitButtonComponentConfig, SymbolRegistryService, TARGETED_STATES, TARGETED_STATE_BASE, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, TypographyGroupStyleConfig, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, auditNodes, buildFormPreset, buildFullStyleTraits, buildLayoutPreset, buildPresetStyleTraits, canFluidise, collapseColumnsProps, columnCountOf, defaultBuilderLabels, defaultPageSettings, dropTargetLabel, essentialTraitsFor, findNodeLocation, findParentOf, flattenSchemaFields, fluidiseProps, generateNodeId, isHiddenAt, matchesControlSearch, nearestFormNode, nodeAncestorPath, nodeAncestorPathInEither, reorderProps, resolveInsertTarget, resolveTraitControllerType, resolveTraitOptions, setStyleTrait, stackChildrenProps, summarise, visibilityProps, wrapNode };
3129
- export type { AuditFinding, AuditNode, BreakpointPresentation, BuilderClipboard, BuilderLabelResolver, ComponentEventDef, ComponentMethodDef, ComponentNode, ComponentTrait, CreateConfig, Crumb, DragPayload, DsFilterByQueryParam, DsFilterByRouteParam, ElementState, FormPresetDef, FormPresetField, HistoryEntry, InsertTarget, InteractionAction, InteractionActionType, InteractionPreset, InteractionTrigger, IoxBinding, IoxDataSource, IoxDropEvent, IoxFontManager, IoxInteraction, IoxSymbol, LayoutPresetChildStyles, LayoutPresetDef, NodeRef, OverlayBoxModel, OverlayBoxSpacing, OverlayEntry, PageRouteAnimationSettings, PageScrollSettings, PageSettings, PageStyleSettings, PanelEvent, QuadSizeSegment, RouteAnimationPreset, ScreenWidthOption, SelectionBadge, StyleMap, StylePreset, StyleTrait, StyleTraitGroup, TraitOptionMap, TraitSelectOption, TraitShowCondition, TreePathNode, ViewportState, ZoomOption };
3144
+ export { ACTION_TYPE_OPTIONS, AuditCode, AuditPanelComponent, AuditSeverity, BODY_CRUMB_LABEL, BREAKPOINT_PRESENTATION, BUILDER_CANVAS_CONTAINER, BUILDER_CHROME_EN, BackgroundGroupStyleConfig, BorderGroupStyleConfig, BreadcrumbBarComponent, BuilderButtonBlockComponent, BuilderButtonComponentConfig, BuilderClipboardService, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDataSourceService, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderHistoryService, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderListComponentConfig, BuilderListItemComponentConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, ButtonBlockComponentConfig, CardComponentConfig, ChildLayoutGroupStyleConfig, ComponentConfig, ComponentRegistryService, DEFAULT_ESSENTIAL_TRAITS, DRAG_HANDLE_ATTR, DataSourceRegistryService, DataSourceType, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS, ESSENTIAL_TRAITS_BY_TYPE, EffectsGroupStyleConfig, FORM_PRESETS, FORM_TYPE, FieldComponentConfig, FieldGroupComponentConfig, FormComponentConfig, FormErrorComponentConfig, FormSuccessComponentConfig, GalleryConfig, GroupStyleConfig, INTERACTION_STATES, INVERSE_ACTION, IOX_BUILDER_LABELS, IOX_DATA_SOURCE_ENDPOINTS, IOX_FONT_MANAGER, InteractionEngineService, InteractionPresetRegistryService, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LAYOUT_PRESETS, LayerTreeComponent, LayoutGroupStyleConfig, ListGroupStyleConfig, NodeAction, OverlayComponent, OverlayService, PanelChildComponent, PanelComponent, PanelEventService, PanelEventTypes, PanelTypes, PositionGroupStyleConfig, PresetRegistryService, RELATIONAL_STATES, RELATIONAL_STATE_BASE, ROUTE_ANIMATION_OPTIONS, RenderDirective, RepeaterComponentConfig, SCREEN_WIDTH_OPTIONS, STRUCTURAL_STATES, SUPPORTED_STATES, SectionComponent, SectionComponentConfig, SizeGroupStyleConfig, SliderContainerComponent, SliderContainerConfig, SliderSlideComponent, SliderSlideConfig, SpacingGroupStyleConfig, StyleCategory, StyleRegistryService, TraitConfig as StyleTraitConfig, SubmitButtonComponentConfig, SymbolRegistryService, TARGETED_STATES, TARGETED_STATE_BASE, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, TypographyGroupStyleConfig, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, auditNodes, buildFormPreset, buildFullStyleTraits, buildLayoutPreset, buildPresetStyleTraits, canFluidise, collapseColumnsProps, columnCountOf, defaultBuilderLabels, defaultPageSettings, dropTargetLabel, essentialTraitsFor, findNodeLocation, findParentOf, flattenSchemaFields, fluidiseProps, generateNodeId, isHiddenAt, matchesControlSearch, nearestFormNode, nodeAncestorPath, nodeAncestorPathInEither, reorderProps, resolveInsertTarget, resolveTraitControllerType, resolveTraitOptions, setStyleTrait, stackChildrenProps, summarise, visibilityProps, wrapNode };
3145
+ export type { AuditFinding, AuditNode, BreakpointPresentation, BuilderClipboard, BuilderLabelResolver, ComponentEventDef, ComponentMethodDef, ComponentNode, ComponentTrait, CreateConfig, Crumb, DragPayload, DsFilterByQueryParam, DsFilterByRouteParam, ElementState, FormPresetDef, FormPresetField, HistoryEntry, InsertTarget, InteractionAction, InteractionActionType, InteractionPreset, InteractionTrigger, IoxBinding, IoxDataSource, IoxDropEvent, IoxFontManager, IoxInteraction, IoxSymbol, LayoutPresetChildStyles, LayoutPresetDef, NodeRef, OverlayBoxModel, OverlayBoxSpacing, OverlayEntry, PageRouteAnimationSettings, PageScrollSettings, PageSettings, PanelEvent, QuadSizeSegment, RouteAnimationPreset, ScreenWidthOption, SelectionBadge, StyleMap, StylePreset, StyleTrait, StyleTraitGroup, TraitOptionMap, TraitSelectOption, TraitShowCondition, TreePathNode, ViewportState, ZoomOption };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-builder",
3
- "version": "4.16.0",
3
+ "version": "4.17.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",