@vectoriox/iox-builder 2.4.0 → 2.6.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-builder",
3
- "version": "2.4.0",
3
+ "version": "2.6.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",
@@ -22,6 +22,9 @@ import * as i27 from 'primeng/dialog';
22
22
 
23
23
  declare enum StyleCategory {
24
24
  Layout = "Layout",
25
+ /** How THIS node participates in its parent's flex/grid flow (align-self, flex-grow, grid-column…).
26
+ * Distinct from Layout, which configures the node as a container for its OWN children. */
27
+ ChildLayout = "Child Layout",
25
28
  Size = "Size",
26
29
  Typography = "Typography",
27
30
  Spacing = "Spacing",
@@ -299,12 +302,18 @@ interface QuadSizeSegment {
299
302
  icon: string;
300
303
  ariaLabel?: string;
301
304
  }
302
- /** Conditional visibility: this trait only shows when the named sibling trait matches one of the given values. */
305
+ /** Conditional visibility: this trait only shows when a controlling trait matches one of the given values.
306
+ * `scope` selects whose trait is inspected:
307
+ * - `'self'` (default): a sibling trait on the SAME node/group (e.g. grid tracks show when this node's display=grid).
308
+ * - `'parent'`: the same-named trait on the node's PARENT (e.g. flex-child props show when the PARENT's display=flex).
309
+ * Parent-scoped conditions are resolved by the style panel, which threads the parent's live value in. */
303
310
  interface TraitShowCondition {
304
- /** name of another trait in the same style group */
311
+ /** name of the controlling trait (a sibling when scope='self'; read off the parent when scope='parent') */
305
312
  trait: string;
306
313
  /** one value or an array of values that make this trait visible */
307
314
  values: string | string[];
315
+ /** whose trait to inspect — defaults to 'self' (a sibling in the same group). */
316
+ scope?: 'self' | 'parent';
308
317
  }
309
318
  interface ComponentTrait {
310
319
  name: string;
@@ -376,6 +385,9 @@ declare class PositionGroupStyleConfig extends GroupStyleConfig {
376
385
  declare class LayoutGroupStyleConfig extends GroupStyleConfig {
377
386
  constructor();
378
387
  }
388
+ declare class ChildLayoutGroupStyleConfig extends GroupStyleConfig {
389
+ constructor();
390
+ }
379
391
  declare class SizeGroupStyleConfig extends GroupStyleConfig {
380
392
  constructor();
381
393
  }
@@ -510,7 +522,8 @@ declare enum ToolbarAction {
510
522
  PasteInteractionPreset = "paste-interaction-preset",
511
523
  Copy = "copy",
512
524
  Paste = "paste",
513
- AddSlide = "add-slide"
525
+ AddSlide = "add-slide",
526
+ Wrap = "wrap"
514
527
  }
515
528
  declare enum NodeAction {
516
529
  Delete = "delete",
@@ -1364,6 +1377,7 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
1364
1377
  entry: OverlayEntry;
1365
1378
  position?: 'before' | 'after';
1366
1379
  interaction?: IoxInteraction;
1380
+ wrapType?: string;
1367
1381
  }): void;
1368
1382
  confirmSaveBlock(): void;
1369
1383
  cancelSaveBlock(): void;
@@ -1387,6 +1401,10 @@ declare class BuilderComponent implements OnInit, AfterViewInit, OnChanges, OnDe
1387
1401
  private findRepeaterAncestorOf;
1388
1402
  /** Emit ELEMENT_SELECT with the ancestors the panels need (symbol + repeater item scope). */
1389
1403
  private _emitElementSelect;
1404
+ /** Read a node's current `display` value. The style panel mutates `styleTraits` in place at edit
1405
+ * time, so that is the live source of truth; fall back to a preset's `styleOverrides` map, then
1406
+ * the CSS initial value. */
1407
+ private readNodeDisplay;
1390
1408
  private handlePanelEvents;
1391
1409
  static ɵfac: i0.ɵɵFactoryDeclaration<BuilderComponent, never>;
1392
1410
  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, ["[builderComponents]", "[builderTokens]", "[builderPanel]"], false, never>;
@@ -1537,7 +1555,16 @@ declare class OverlayComponent implements OnInit, OnDestroy {
1537
1555
  entry: OverlayEntry;
1538
1556
  position?: "before" | "after";
1539
1557
  interaction?: IoxInteraction;
1558
+ wrapType?: string;
1540
1559
  }>;
1560
+ /** Element types the selected node can be wrapped in (Wrap-in submenu). Phase 1: layout containers. */
1561
+ readonly wrapTargets: {
1562
+ type: string;
1563
+ label: string;
1564
+ icon: string;
1565
+ }[];
1566
+ /** Whether the Wrap-in flyout submenu is open (hover-driven). */
1567
+ wrapSubmenuOpen: boolean;
1541
1568
  hoverEntry: OverlayEntry | null;
1542
1569
  selectEntry: OverlayEntry | null;
1543
1570
  hiOutlineStyle: Record<string, string>;
@@ -1569,6 +1596,9 @@ declare class OverlayComponent implements OnInit, OnDestroy {
1569
1596
  onSelectParent(event: MouseEvent): void;
1570
1597
  onDuplicate(event: MouseEvent): void;
1571
1598
  onDelete(event: MouseEvent): void;
1599
+ onWrap(event: MouseEvent, wrapType: string): void;
1600
+ /** Slider slides must stay direct children of the slider container — never wrap them. */
1601
+ get canWrap(): boolean;
1572
1602
  onPlay(event: MouseEvent): void;
1573
1603
  onSaveAsBlock(event: MouseEvent): void;
1574
1604
  onToggleMore(event: MouseEvent): void;
@@ -2188,6 +2218,38 @@ declare class IoxBuilderModule {
2188
2218
  static ɵinj: i0.ɵɵInjectorDeclaration<IoxBuilderModule>;
2189
2219
  }
2190
2220
 
2221
+ /**
2222
+ * Locate a node within a forest (array of root nodes + their descendants) by
2223
+ * reference identity. Returns the parent array holding the node and its index,
2224
+ * or `null` if the node is not present.
2225
+ *
2226
+ * Reference-based to match the rest of the builder tree operations, which pass
2227
+ * the live `ComponentNode` object around (see `findNodeInTree`).
2228
+ */
2229
+ declare function findNodeLocation(roots: ComponentNode[], target: ComponentNode): {
2230
+ parent: ComponentNode[];
2231
+ index: number;
2232
+ } | null;
2233
+ /**
2234
+ * Wrap `target` inside `wrapper`, in place, within the forest it already lives in.
2235
+ *
2236
+ * The wrapper replaces the target at its original position and takes the target
2237
+ * as its only child. **Context is preserved** — the operation never moves the
2238
+ * node between the page and global trees; the caller passes the forest the node
2239
+ * lives in (page layout OR global elements), and the surgery stays inside it.
2240
+ *
2241
+ * Global flags (`isGlobal`/`globalPosition`) are carried ONLY by the top-level
2242
+ * node of the global forest. When wrapping such a node, those flags transfer to
2243
+ * the wrapper — which becomes the new top-level global node — and are cleared on
2244
+ * the now-inner node, so the element keeps rendering in its global slot. Wrapping
2245
+ * anything else (a page node, or a child nested inside a global element) leaves
2246
+ * all global flags untouched.
2247
+ *
2248
+ * @returns the wrapper on success, or `null` if the target was not found (in
2249
+ * which case nothing is mutated).
2250
+ */
2251
+ declare function wrapNode(roots: ComponentNode[], target: ComponentNode, wrapper: ComponentNode): ComponentNode | null;
2252
+
2191
2253
  interface HistoryEntry {
2192
2254
  layout: ComponentNode[];
2193
2255
  timestamp: number;
@@ -2303,5 +2365,5 @@ declare class TextBlockComponentConfig extends ComponentConfig {
2303
2365
  constructor();
2304
2366
  }
2305
2367
 
2306
- export { ACTION_TYPE_OPTIONS, BackgroundGroupStyleConfig, BorderGroupStyleConfig, BuilderButtonBlockComponent, BuilderButtonComponentConfig, BuilderClipboardService, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDataSourceService, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderHistoryService, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderListComponentConfig, BuilderListItemComponentConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, ButtonBlockComponentConfig, CardComponentConfig, ComponentConfig, ComponentRegistryService, DEVICE_OPTIONS, DataSourceRegistryService, DataSourceType, DeviceMode, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS, EffectsGroupStyleConfig, GroupStyleConfig, INTERACTION_STATES, INVERSE_ACTION, IOX_DATA_SOURCE_ENDPOINTS, IOX_FONT_MANAGER, InteractionEngineService, InteractionPresetRegistryService, InteractionsPanelComponent, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, 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, SymbolRegistryService, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, TypographyGroupStyleConfig, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, buildFullStyleTraits, buildPresetStyleTraits, defaultPageSettings, flattenSchemaFields, generateNodeId, resolveTraitControllerType, resolveTraitOptions };
2368
+ export { ACTION_TYPE_OPTIONS, BackgroundGroupStyleConfig, BorderGroupStyleConfig, 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, DEVICE_OPTIONS, DataSourceRegistryService, DataSourceType, DeviceMode, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS, EffectsGroupStyleConfig, GroupStyleConfig, INTERACTION_STATES, INVERSE_ACTION, IOX_DATA_SOURCE_ENDPOINTS, IOX_FONT_MANAGER, InteractionEngineService, InteractionPresetRegistryService, InteractionsPanelComponent, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, 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, SymbolRegistryService, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, TypographyGroupStyleConfig, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, buildFullStyleTraits, buildPresetStyleTraits, defaultPageSettings, findNodeLocation, flattenSchemaFields, generateNodeId, resolveTraitControllerType, resolveTraitOptions, wrapNode };
2307
2369
  export type { BuilderClipboard, ComponentEventDef, ComponentMethodDef, ComponentNode, ComponentTrait, DeviceOption, DragPayload, DsFilterByQueryParam, DsFilterByRouteParam, ElementState, HistoryEntry, InteractionAction, InteractionActionType, InteractionPreset, InteractionTrigger, IoxBinding, IoxDataSource, IoxDropEvent, IoxFontManager, IoxInteraction, IoxSymbol, NodeRef, OverlayBoxModel, OverlayBoxSpacing, OverlayEntry, PageRouteAnimationSettings, PageScrollSettings, PageSettings, PageStyleSettings, PanelEvent, QuadSizeSegment, RouteAnimationPreset, ScreenWidthOption, StylePreset, StyleTrait, StyleTraitGroup, TraitOptionMap, TraitSelectOption, TraitShowCondition, ViewportState, ZoomOption };