@vectoriox/iox-ui 4.0.6 → 4.0.8

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { AfterViewInit, EventEmitter, ElementRef, SimpleChanges, OnDestroy, OnInit, Renderer2, ModuleWithProviders, InjectionToken } from '@angular/core';
2
+ import { AfterViewInit, EventEmitter, ElementRef, SimpleChanges, OnDestroy, OnInit, Renderer2, ModuleWithProviders, NgZone, InjectionToken, ChangeDetectorRef, ViewContainerRef, Type } from '@angular/core';
3
3
  import { AnimationPlayer, AnimationBuilder } from '@angular/animations';
4
4
  import { Observable, Subject } from 'rxjs';
5
5
  import * as i3 from '@angular/platform-browser/animations';
@@ -152,10 +152,11 @@ declare class IoxMasonryModule {
152
152
  }
153
153
 
154
154
  declare class PageScrollProvider {
155
+ private zone;
155
156
  private platformId;
156
157
  private lenis?;
157
158
  private rafId?;
158
- constructor(platformId: object);
159
+ constructor(zone: NgZone, platformId: object);
159
160
  init(options?: ConstructorParameters<typeof Lenis>[0]): void;
160
161
  scrollTo(y: number, options?: {
161
162
  duration?: number;
@@ -172,11 +173,19 @@ declare class PageScrollProvider {
172
173
  static ɵprov: i0.ɵɵInjectableDeclaration<PageScrollProvider>;
173
174
  }
174
175
 
176
+ interface IoxScrollOptions {
177
+ lerp?: number;
178
+ wheelMultiplier?: number;
179
+ touchMultiplier?: number;
180
+ orientation?: 'vertical' | 'horizontal';
181
+ infinite?: boolean;
182
+ }
175
183
  declare class IoxPageComponent implements AfterViewInit, OnDestroy {
176
184
  private pageScrollProvider;
177
185
  private platformId;
178
186
  class: string;
179
187
  scrollEnabled: boolean;
188
+ scrollOptions: IoxScrollOptions;
180
189
  page: ElementRef<HTMLDivElement>;
181
190
  scrollEvent: EventEmitter<{
182
191
  scrollTop: number;
@@ -191,7 +200,7 @@ declare class IoxPageComponent implements AfterViewInit, OnDestroy {
191
200
  ngAfterViewInit(): void;
192
201
  ngOnDestroy(): void;
193
202
  static ɵfac: i0.ɵɵFactoryDeclaration<IoxPageComponent, never>;
194
- static ɵcmp: i0.ɵɵComponentDeclaration<IoxPageComponent, "iox-page-component", never, { "class": { "alias": "class"; "required": false; }; "scrollEnabled": { "alias": "scrollEnabled"; "required": false; }; }, { "scrollEvent": "scrollEvent"; }, never, ["*"], false, never>;
203
+ static ɵcmp: i0.ɵɵComponentDeclaration<IoxPageComponent, "iox-page-component", never, { "class": { "alias": "class"; "required": false; }; "scrollEnabled": { "alias": "scrollEnabled"; "required": false; }; "scrollOptions": { "alias": "scrollOptions"; "required": false; }; }, { "scrollEvent": "scrollEvent"; }, never, ["*"], false, never>;
195
204
  }
196
205
 
197
206
  declare class IoxPageModule {
@@ -291,5 +300,228 @@ declare class AnalyticsService {
291
300
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsService>;
292
301
  }
293
302
 
294
- export { AOSService, AnalyticsService, CMSClientInfraModule, ConsentService, ContentService, ENVIRONMENT, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxMasonryComponent, IoxMasonryItemDirective, IoxMasonryModule, IoxMasonryService, IoxPageComponent, IoxPageModule, IoxUiModule, PageScrollProvider, PrivacyModalComponent, PrivacyModalService, PrivacyModelEvent, ViewPositionDirective, ViewPositionModule, WebSettingsService };
295
- export type { IoxMasonryOptions };
303
+ declare const IS_PREVIEW: InjectionToken<boolean>;
304
+ interface IBuilderEventEmitter {
305
+ emit(type: string, data?: any): void;
306
+ }
307
+ declare const IOX_BUILDER_EVENTS: InjectionToken<IBuilderEventEmitter>;
308
+
309
+ declare class BuilderImageComponent {
310
+ src: string;
311
+ alt: string;
312
+ objectFit: 'cover' | 'contain' | 'fill' | 'none';
313
+ nodeId: string;
314
+ static ɵfac: i0.ɵɵFactoryDeclaration<BuilderImageComponent, never>;
315
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderImageComponent, "app-builder-image", never, { "src": { "alias": "src"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "objectFit": { "alias": "objectFit"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
316
+ }
317
+
318
+ declare class BuilderSpacerComponent {
319
+ nodeId: string;
320
+ static ɵfac: i0.ɵɵFactoryDeclaration<BuilderSpacerComponent, never>;
321
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderSpacerComponent, "app-builder-spacer", never, { "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
322
+ }
323
+
324
+ declare class CardComponent {
325
+ title: string;
326
+ image: string;
327
+ description: string;
328
+ nodeId: string;
329
+ static ɵfac: i0.ɵɵFactoryDeclaration<CardComponent, never>;
330
+ static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "app-card", never, { "title": { "alias": "title"; "required": false; }; "image": { "alias": "image"; "required": false; }; "description": { "alias": "description"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
331
+ }
332
+
333
+ declare class BuilderDividerComponent {
334
+ nodeId: string;
335
+ static ɵfac: i0.ɵɵFactoryDeclaration<BuilderDividerComponent, never>;
336
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderDividerComponent, "app-builder-divider", never, { "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
337
+ }
338
+
339
+ declare class BuilderIconComponent {
340
+ /** Full Phosphor icon CSS class string, e.g. "ph-thin ph-star" */
341
+ iconClass: string;
342
+ nodeId: string;
343
+ static ɵfac: i0.ɵɵFactoryDeclaration<BuilderIconComponent, never>;
344
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderIconComponent, "app-builder-icon", never, { "iconClass": { "alias": "iconClass"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
345
+ }
346
+
347
+ declare class BuilderLinkComponent {
348
+ isPreview: boolean;
349
+ label: string;
350
+ linkType: 'external' | 'page';
351
+ url: string;
352
+ pageRoute: string;
353
+ target: '_self' | '_blank' | '_parent' | '_top';
354
+ style: {
355
+ [key: string]: any;
356
+ };
357
+ constructor(isPreview: boolean);
358
+ get resolvedHref(): string;
359
+ onLinkClick(event: MouseEvent): void;
360
+ static ɵfac: i0.ɵɵFactoryDeclaration<BuilderLinkComponent, [{ optional: true; }]>;
361
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderLinkComponent, "app-builder-link", never, { "label": { "alias": "label"; "required": false; }; "linkType": { "alias": "linkType"; "required": false; }; "url": { "alias": "url"; "required": false; }; "pageRoute": { "alias": "pageRoute"; "required": false; }; "target": { "alias": "target"; "required": false; }; "style": { "alias": "style"; "required": false; }; }, {}, never, never, false, never>;
362
+ }
363
+
364
+ interface EditableNode$2 {
365
+ bindings?: Array<{
366
+ prop: string;
367
+ }>;
368
+ traits?: Array<{
369
+ name: string;
370
+ default: any;
371
+ }>;
372
+ }
373
+ declare class BuilderButtonComponent implements OnInit {
374
+ private events;
375
+ label: string;
376
+ link: string;
377
+ variant: 'primary' | 'outlined' | 'text';
378
+ nodeId: string;
379
+ node: EditableNode$2 | null;
380
+ editing: boolean;
381
+ constructor(events: IBuilderEventEmitter | null);
382
+ ngOnInit(): void;
383
+ startEdit(event: MouseEvent): void;
384
+ commitEdit(event: FocusEvent): void;
385
+ onKeyDown(event: KeyboardEvent): void;
386
+ private isBound;
387
+ private syncTraitToPanel;
388
+ static ɵfac: i0.ɵɵFactoryDeclaration<BuilderButtonComponent, [{ optional: true; }]>;
389
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderButtonComponent, "app-builder-button", never, { "label": { "alias": "label"; "required": false; }; "link": { "alias": "link"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; "node": { "alias": "node"; "required": false; }; }, {}, never, never, false, never>;
390
+ }
391
+
392
+ interface EditableNode$1 {
393
+ bindings?: Array<{
394
+ prop: string;
395
+ }>;
396
+ traits?: Array<{
397
+ name: string;
398
+ default: any;
399
+ }>;
400
+ }
401
+ declare class BuilderHeadingComponent implements OnInit {
402
+ private events;
403
+ private cdr;
404
+ content: string;
405
+ level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
406
+ nodeId: string;
407
+ node: EditableNode$1 | null;
408
+ editing: boolean;
409
+ constructor(events: IBuilderEventEmitter | null, cdr: ChangeDetectorRef);
410
+ ngOnInit(): void;
411
+ onMouseDown(event: MouseEvent): void;
412
+ startEdit(event: MouseEvent): void;
413
+ commitEdit(event: FocusEvent): void;
414
+ onKeyDown(event: KeyboardEvent): void;
415
+ private isBound;
416
+ private syncTraitToPanel;
417
+ static ɵfac: i0.ɵɵFactoryDeclaration<BuilderHeadingComponent, [{ optional: true; }, null]>;
418
+ static ɵcmp: i0.ɵɵComponentDeclaration<BuilderHeadingComponent, "app-builder-heading", never, { "content": { "alias": "content"; "required": false; }; "level": { "alias": "level"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; "node": { "alias": "node"; "required": false; }; }, {}, never, never, false, never>;
419
+ }
420
+
421
+ interface EditableNode {
422
+ bindings?: Array<{
423
+ prop: string;
424
+ }>;
425
+ traits?: Array<{
426
+ name: string;
427
+ default: any;
428
+ }>;
429
+ }
430
+ declare class TextBlockComponent implements OnInit {
431
+ private events;
432
+ private cdr;
433
+ content: string;
434
+ tag: 'p' | 'span';
435
+ style: {
436
+ [key: string]: any;
437
+ };
438
+ nodeId: string;
439
+ node: EditableNode | null;
440
+ editing: boolean;
441
+ constructor(events: IBuilderEventEmitter | null, cdr: ChangeDetectorRef);
442
+ ngOnInit(): void;
443
+ onMouseDown(event: MouseEvent): void;
444
+ startEdit(event: MouseEvent): void;
445
+ commitEdit(event: FocusEvent): void;
446
+ onKeyDown(event: KeyboardEvent): void;
447
+ private isBound;
448
+ private syncTraitToPanel;
449
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextBlockComponent, [{ optional: true; }, null]>;
450
+ static ɵcmp: i0.ɵɵComponentDeclaration<TextBlockComponent, "app-text-block", never, { "content": { "alias": "content"; "required": false; }; "tag": { "alias": "tag"; "required": false; }; "style": { "alias": "style"; "required": false; }; "nodeId": { "alias": "nodeId"; "required": false; }; "node": { "alias": "node"; "required": false; }; }, {}, never, never, false, never>;
451
+ }
452
+
453
+ declare class SectionComponent {
454
+ nodeId: string;
455
+ childrenHost: ViewContainerRef;
456
+ static ɵfac: i0.ɵɵFactoryDeclaration<SectionComponent, never>;
457
+ static ɵcmp: i0.ɵɵComponentDeclaration<SectionComponent, "iox-section", never, { "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
458
+ }
459
+
460
+ declare class ContainerComponent {
461
+ nodeId: string;
462
+ childrenHost: ViewContainerRef;
463
+ static ɵfac: i0.ɵɵFactoryDeclaration<ContainerComponent, never>;
464
+ static ɵcmp: i0.ɵɵComponentDeclaration<ContainerComponent, "iox-container", never, { "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
465
+ }
466
+
467
+ declare class LinkedContainerComponent implements OnInit, OnDestroy {
468
+ private elRef;
469
+ private isPreview;
470
+ nodeId: string;
471
+ linkType: 'external' | 'page';
472
+ url: string;
473
+ pageRoute: string;
474
+ target: '_self' | '_blank' | '_parent' | '_top';
475
+ childrenHost: ViewContainerRef;
476
+ private capturePreventDefault;
477
+ constructor(elRef: ElementRef<HTMLElement>, isPreview: boolean);
478
+ ngOnInit(): void;
479
+ ngOnDestroy(): void;
480
+ get resolvedHref(): string;
481
+ static ɵfac: i0.ɵɵFactoryDeclaration<LinkedContainerComponent, [null, { optional: true; }]>;
482
+ static ɵcmp: i0.ɵɵComponentDeclaration<LinkedContainerComponent, "iox-linked-container", never, { "nodeId": { "alias": "nodeId"; "required": false; }; "linkType": { "alias": "linkType"; "required": false; }; "url": { "alias": "url"; "required": false; }; "pageRoute": { "alias": "pageRoute"; "required": false; }; "target": { "alias": "target"; "required": false; }; }, {}, never, never, false, never>;
483
+ }
484
+
485
+ /**
486
+ * Client-engine repeater shell. Data fetching and item expansion are handled
487
+ * by DataSourceResolverService + BindingApplicatorService in the PageResolver
488
+ * before this component is rendered. ClientRenderDirective inserts one child
489
+ * per resolved item into childrenHost.
490
+ */
491
+ declare class ClientRepeaterComponent {
492
+ nodeId: string;
493
+ childrenHost: ViewContainerRef;
494
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClientRepeaterComponent, never>;
495
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClientRepeaterComponent, "iox-repeater", never, { "nodeId": { "alias": "nodeId"; "required": false; }; }, {}, never, never, false, never>;
496
+ }
497
+
498
+ declare class IoxBuilderComponentsModule {
499
+ static ɵfac: i0.ɵɵFactoryDeclaration<IoxBuilderComponentsModule, never>;
500
+ static ɵmod: i0.ɵɵNgModuleDeclaration<IoxBuilderComponentsModule, [typeof BuilderImageComponent, typeof BuilderSpacerComponent, typeof CardComponent, typeof BuilderDividerComponent, typeof BuilderIconComponent, typeof BuilderLinkComponent, typeof BuilderButtonComponent, typeof BuilderHeadingComponent, typeof TextBlockComponent, typeof SectionComponent, typeof ContainerComponent, typeof LinkedContainerComponent, typeof ClientRepeaterComponent], [typeof i2.CommonModule], [typeof BuilderImageComponent, typeof BuilderSpacerComponent, typeof CardComponent, typeof BuilderDividerComponent, typeof BuilderIconComponent, typeof BuilderLinkComponent, typeof BuilderButtonComponent, typeof BuilderHeadingComponent, typeof TextBlockComponent, typeof SectionComponent, typeof ContainerComponent, typeof LinkedContainerComponent, typeof ClientRepeaterComponent]>;
501
+ static ɵinj: i0.ɵɵInjectorDeclaration<IoxBuilderComponentsModule>;
502
+ }
503
+
504
+ /**
505
+ * Single source of truth for the IOX component type → Angular class mapping.
506
+ * Used by the client engine (iox-client-engine) to resolve component classes
507
+ * from IoxLayoutNode.type strings at render time.
508
+ *
509
+ * All 13 builder components are registered here:
510
+ * - Leaf (Phase 2a): Image, Spacer, Card, Divider, Icon
511
+ * - Inline-editable (Phase 2b): Link, Button, Heading, Text
512
+ * - Layout shells (Phase 2c): Section, Container, LinkedContainer
513
+ * - Repeater (Phase 2d): ClientRepeaterComponent
514
+ *
515
+ * Section/Container/LinkedContainer/Repeater expose childrenHost: ViewContainerRef
516
+ * for ClientRenderDirective to insert child components into.
517
+ */
518
+ declare class IoxComponentRegistryService {
519
+ private readonly map;
520
+ getComponent(type: string): Type<any> | undefined;
521
+ hasComponent(type: string): boolean;
522
+ static ɵfac: i0.ɵɵFactoryDeclaration<IoxComponentRegistryService, never>;
523
+ static ɵprov: i0.ɵɵInjectableDeclaration<IoxComponentRegistryService>;
524
+ }
525
+
526
+ export { AOSService, AnalyticsService, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, CMSClientInfraModule, CardComponent, ClientRepeaterComponent, ConsentService, ContainerComponent, ContentService, ENVIRONMENT, IOX_BUILDER_EVENTS, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxMasonryComponent, IoxMasonryItemDirective, IoxMasonryModule, IoxMasonryService, IoxPageComponent, IoxPageModule, IoxUiModule, LinkedContainerComponent, PageScrollProvider, PrivacyModalComponent, PrivacyModalService, PrivacyModelEvent, SectionComponent, TextBlockComponent, ViewPositionDirective, ViewPositionModule, WebSettingsService };
527
+ export type { IBuilderEventEmitter, IoxMasonryOptions, IoxScrollOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-ui",
3
- "version": "4.0.6",
3
+ "version": "4.0.8",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0",
6
6
  "@fristys/masonry": "^1.1.7",