@vectoriox/iox-builder 1.0.9 → 1.1.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": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",
@@ -107,6 +107,17 @@ declare const ACTION_TYPE_OPTIONS: {
107
107
  value: InteractionActionType;
108
108
  label: string;
109
109
  }[];
110
+ /**
111
+ * A named, reusable collection of CSS style properties stored at the org level.
112
+ * Elements reference a preset by `stylePresetId`. At render time the engine
113
+ * merges `preset.styleProps → element.styleOverrides` so local overrides win.
114
+ */
115
+ interface StylePreset {
116
+ id: string;
117
+ name: string;
118
+ /** Flat CSS property map — same shape as IoxLayoutNode.styleProps. */
119
+ styleProps: Record<string, any>;
120
+ }
110
121
  interface ComponentNode {
111
122
  id?: string;
112
123
  /**
@@ -125,7 +136,21 @@ interface ComponentNode {
125
136
  children?: ComponentNode[];
126
137
  isGlobal?: boolean;
127
138
  globalPosition?: 'before' | 'after';
139
+ /** ID of the org-level StylePreset applied to this node. */
140
+ stylePresetId?: string;
141
+ /**
142
+ * CSS properties explicitly overridden by the user after a preset was applied.
143
+ * Serialized to `styleProps` in the page layout JSON when a preset is active.
144
+ * Absent when no preset is applied (full styles stored in styleTraits instead).
145
+ */
146
+ styleOverrides?: Record<string, any>;
128
147
  }
148
+ /**
149
+ * Build a full StyleTraitGroup[] schema populated with values from a flat
150
+ * styleProps map. Used when editing a preset in the Style panel — the panel
151
+ * receives the same `StyleTraitGroup[]` shape regardless of context.
152
+ */
153
+ declare function buildPresetStyleTraits(styleProps: Record<string, any>): StyleTraitGroup[];
129
154
  declare enum TraitInputType {
130
155
  Text = "text",
131
156
  Number = "number",
@@ -266,7 +291,8 @@ declare enum ToolbarAction {
266
291
  Play = "play",
267
292
  SaveAsBlock = "save-as-block",
268
293
  MakeGlobal = "make-global",
269
- RemoveGlobal = "remove-global"
294
+ RemoveGlobal = "remove-global",
295
+ EditPreset = "edit-preset"
270
296
  }
271
297
  declare enum NodeAction {
272
298
  Delete = "delete",
@@ -373,7 +399,11 @@ declare enum PanelEventTypes {
373
399
  PANEL_OPEN = "panelopen",
374
400
  PANEL_CLOSE = "panelclose",
375
401
  BINDING_CHANGED = "bindingchanged",
376
- NODE_RENDERED = "noderendered"
402
+ NODE_RENDERED = "noderendered",
403
+ /** Open the Style panel in preset-edit mode for the given preset ID. */
404
+ PRESET_EDIT = "presetedit",
405
+ /** Fired after a preset is created, updated, or deleted so panels refresh their list. */
406
+ PRESETS_CHANGED = "presetschanged"
377
407
  }
378
408
  interface PanelEvent {
379
409
  type: PanelEventTypes;
@@ -833,9 +863,39 @@ declare class IoxDropzoneDirective implements OnInit, OnDestroy {
833
863
  static ɵdir: i0.ɵɵDirectiveDeclaration<IoxDropzoneDirective, "[ioxDropzone]", never, { "ioxDropzoneId": { "alias": "ioxDropzoneId"; "required": false; }; "ioxDropzoneData": { "alias": "ioxDropzoneData"; "required": false; }; "ioxDropzonePostDrop": { "alias": "ioxDropzonePostDrop"; "required": false; }; }, { "ioxDrop": "ioxDrop"; }, never, never, false, never>;
834
864
  }
835
865
 
866
+ /**
867
+ * PresetRegistryService — in-memory store for org-level style presets.
868
+ *
869
+ * Loaded once per page by PageUiComponent (alongside the page layout) and
870
+ * injected into the overlay (for badge labels) and style panel (for apply /
871
+ * create / edit / detach flows).
872
+ *
873
+ * Scoped to PageUiComponent.providers[] — one registry per builder instance.
874
+ */
875
+ declare class PresetRegistryService {
876
+ private presets;
877
+ setPresets(presets: StylePreset[]): void;
878
+ getPreset(id: string): StylePreset | undefined;
879
+ getAll(): StylePreset[];
880
+ upsert(preset: StylePreset): void;
881
+ remove(id: string): void;
882
+ /**
883
+ * Resolve the effective style map for a node that references a preset.
884
+ * Merges preset base styles with the node's local overrides so that
885
+ * element-level values always win.
886
+ *
887
+ * @param presetId ID of the applied preset.
888
+ * @param overrides The node's `styleOverrides` record (may be empty).
889
+ */
890
+ resolveStyles(presetId: string, overrides: Record<string, any>): Record<string, any>;
891
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresetRegistryService, never>;
892
+ static ɵprov: i0.ɵɵInjectableDeclaration<PresetRegistryService>;
893
+ }
894
+
836
895
  declare class OverlayComponent implements OnInit, OnDestroy {
837
896
  private overlayService;
838
897
  private viewportService;
898
+ private presetRegistry;
839
899
  private cdr;
840
900
  toolbarAction: EventEmitter<{
841
901
  action: ToolbarAction;
@@ -857,7 +917,7 @@ declare class OverlayComponent implements OnInit, OnDestroy {
857
917
  private mutationObserver?;
858
918
  private boundUpdate;
859
919
  private activeScrollContainer;
860
- constructor(overlayService: OverlayService, viewportService: ViewportService, cdr: ChangeDetectorRef);
920
+ constructor(overlayService: OverlayService, viewportService: ViewportService, presetRegistry: PresetRegistryService, cdr: ChangeDetectorRef);
861
921
  ngOnInit(): void;
862
922
  ngOnDestroy(): void;
863
923
  onSelectParent(event: MouseEvent): void;
@@ -874,6 +934,8 @@ declare class OverlayComponent implements OnInit, OnDestroy {
874
934
  closeContextMenu(): void;
875
935
  get hasInteractions(): boolean;
876
936
  get selectedNodeIsGlobal(): boolean;
937
+ get selectedPresetName(): string | null;
938
+ onEditPreset(event: MouseEvent): void;
877
939
  private observeSelectElement;
878
940
  private updateAll;
879
941
  private updateHover;
@@ -1242,5 +1304,5 @@ declare class TextBlockComponentConfig extends ComponentConfig {
1242
1304
  constructor();
1243
1305
  }
1244
1306
 
1245
- export { ACTION_TYPE_OPTIONS, BuilderButtonComponentConfig, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, CardComponentConfig, ComponentConfig, ComponentRegistryService, DEVICE_OPTIONS, DataSourceRegistryService, DeviceMode, DragEngineService, EASING_OPTIONS, GroupStyleConfig, IOX_CONTENT_SERVICE, IOX_FONT_MANAGER, InteractionEngineService, InteractionsPanelComponent, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LayerTreeComponent, NodeAction, OverlayComponent, OverlayService, PanelChildComponent, PanelComponent, PanelEventService, PanelEventTypes, PanelTypes, ROUTE_ANIMATION_OPTIONS, RenderDirective, RepeaterComponentConfig, SCREEN_WIDTH_OPTIONS, SectionComponent, SectionComponentConfig, StyleCategory, StyleRegistryService, TraitConfig as StyleTraitConfig, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, ViewportService, ZOOM_OPTIONS, defaultPageSettings, generateNodeId, resolveTraitControllerType, resolveTraitOptions };
1246
- export type { ComponentNode, ComponentTrait, DeviceOption, DragPayload, DsFilterByQueryParam, DsFilterByRouteParam, InteractionAction, InteractionActionType, InteractionTrigger, IoxBinding, IoxContentService, IoxDataSource, IoxDropEvent, IoxFontManager, IoxInteraction, NodeRef, OverlayBoxModel, OverlayBoxSpacing, OverlayEntry, PageRouteAnimationSettings, PageScrollSettings, PageSettings, PageStyleSettings, PanelEvent, QuadSizeSegment, RouteAnimationPreset, ScreenWidthOption, StyleTrait, StyleTraitGroup, TraitOptionMap, TraitSelectOption, TraitShowCondition, ViewportState, ZoomOption };
1307
+ export { ACTION_TYPE_OPTIONS, BuilderButtonComponentConfig, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, CardComponentConfig, ComponentConfig, ComponentRegistryService, DEVICE_OPTIONS, DataSourceRegistryService, DeviceMode, DragEngineService, EASING_OPTIONS, GroupStyleConfig, IOX_CONTENT_SERVICE, IOX_FONT_MANAGER, InteractionEngineService, InteractionsPanelComponent, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LayerTreeComponent, NodeAction, OverlayComponent, OverlayService, PanelChildComponent, PanelComponent, PanelEventService, PanelEventTypes, PanelTypes, PresetRegistryService, ROUTE_ANIMATION_OPTIONS, RenderDirective, RepeaterComponentConfig, SCREEN_WIDTH_OPTIONS, SectionComponent, SectionComponentConfig, StyleCategory, StyleRegistryService, TraitConfig as StyleTraitConfig, TRIGGER_OPTIONS, TextBlockComponentConfig, ToolbarAction, ToolbarComponent, TraitConfig, TraitInputType, UNITS_ALL, UNITS_DEG, UNITS_FIXED, UNITS_NO_VW, ViewportService, ZOOM_OPTIONS, buildPresetStyleTraits, defaultPageSettings, generateNodeId, resolveTraitControllerType, resolveTraitOptions };
1308
+ export type { ComponentNode, ComponentTrait, DeviceOption, DragPayload, DsFilterByQueryParam, DsFilterByRouteParam, InteractionAction, InteractionActionType, InteractionTrigger, IoxBinding, IoxContentService, IoxDataSource, IoxDropEvent, IoxFontManager, IoxInteraction, NodeRef, OverlayBoxModel, OverlayBoxSpacing, OverlayEntry, PageRouteAnimationSettings, PageScrollSettings, PageSettings, PageStyleSettings, PanelEvent, QuadSizeSegment, RouteAnimationPreset, ScreenWidthOption, StylePreset, StyleTrait, StyleTraitGroup, TraitOptionMap, TraitSelectOption, TraitShowCondition, ViewportState, ZoomOption };