@vectoriox/iox-builder 5.2.0 → 5.3.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.
|
@@ -16,7 +16,7 @@ import { SelectModule } from 'primeng/select';
|
|
|
16
16
|
import { TooltipModule } from 'primeng/tooltip';
|
|
17
17
|
import { DialogModule } from 'primeng/dialog';
|
|
18
18
|
import * as i1 from '@vectoriox/iox-ui';
|
|
19
|
-
import { VALIDATION_STATES as VALIDATION_STATES$1, VALIDATION_STATE_CLASS as VALIDATION_STATE_CLASS$1, DEFAULT_WIDTH_BY_TYPE, COLOR_SCHEME_TRAIT, COLOR_SCHEMES, ColorScheme, Breakpoint, BREAKPOINTS, countOverrides, setOverride, defaultElementStyleFor, applyElementStyle, stripSuppressedProps, DeclarationContext, buildPartSelector, planResponsiveRules, resolveStyleProps, buildTargetedStateSelector, statePseudoClass, compileTokenCssBlocks, fontsForTokens, GOOGLE_FONTS_FILE_ORIGIN, googleFontHref, compileDeclarations, wrapInBreakpointQuery, BreakpointQueryKind, breakpointDef, breakpointForWidth, FormRenderState, safeSetInput, ContextStore, ComponentInstanceRegistryService, isActionEnabled, isContextAction, contextActionEffect, resolveContextValue,
|
|
19
|
+
import { VALIDATION_STATES as VALIDATION_STATES$1, VALIDATION_STATE_CLASS as VALIDATION_STATE_CLASS$1, DEFAULT_WIDTH_BY_TYPE, COLOR_SCHEME_TRAIT, COLOR_SCHEMES, ColorScheme, Breakpoint, BREAKPOINTS, countOverrides, setOverride, defaultElementStyleFor, applyElementStyle, stripSuppressedProps, DeclarationContext, buildPartSelector, planResponsiveRules, resolveStyleProps, buildTargetedStateSelector, statePseudoClass, compileTokenCssBlocks, fontsForTokens, GOOGLE_FONTS_FILE_ORIGIN, googleFontHref, compileDeclarations, wrapInBreakpointQuery, BreakpointQueryKind, breakpointDef, breakpointForWidth, FormRenderState, safeSetInput, ContextStore, ComponentInstanceRegistryService, isActionEnabled, isContextAction, contextActionEffect, resolveContextValue, declaredInputNames, emptyImagePlaceholder, syncNodeDesignClasses, composeVirtualTraits, withDefaultHoverTransition, stateNamesIn, partClassName, resolveInputs, setInputOverride, collectContextSlotKeys, withContextSlots, compilePageStyle, nodeUsesContext, resolveBoundValue, IS_PREVIEW, planDataSource, dataSourcePlanToRequest, normalizeCollectionResult, resolveRepeaterItems, getByPath, computeRelative, IoxPageModule, PALETTE_PRESETS, PART_CLASS_NAMES } from '@vectoriox/iox-ui';
|
|
20
20
|
export { ComponentInstanceRegistryService, VIRTUAL_TRAIT_KEYS, composeVirtualTraits } from '@vectoriox/iox-ui';
|
|
21
21
|
import Lenis from 'lenis';
|
|
22
22
|
import { Subject, BehaviorSubject, of, forkJoin } from 'rxjs';
|
|
@@ -1558,8 +1558,10 @@ function buildLayoutPreset(def, createNode) {
|
|
|
1558
1558
|
/**
|
|
1559
1559
|
* True for nodes rendered on the EDITING canvas — provided by `BuilderComponent` at component level,
|
|
1560
1560
|
* so it reaches every `[ioxRender]` under `<app-builder>` and nothing else (Preview renders the same
|
|
1561
|
-
* directive outside it).
|
|
1562
|
-
*
|
|
1561
|
+
* directive outside it). It answers "is this the editor?" — the canvas-only "Add image" label hangs off
|
|
1562
|
+
* it. `IS_PREVIEW` answers the other question, "is this a preview/live render?" (links navigate,
|
|
1563
|
+
* sliders run live), and is provided ONLY by Preview (component level) and the engine; neither token
|
|
1564
|
+
* implies the other — a design sampler, for one, is neither.
|
|
1563
1565
|
*/
|
|
1564
1566
|
const IOX_BUILDER_CANVAS = new InjectionToken('IOX_BUILDER_CANVAS');
|
|
1565
1567
|
/** Optional font manager. Provide from the host app to populate the fontFamily dropdown. */
|
|
@@ -1602,6 +1604,14 @@ const BUILDER_CHROME_EN = Object.freeze({
|
|
|
1602
1604
|
'builder.chrome.preview': 'Preview',
|
|
1603
1605
|
'builder.chrome.addImage': 'Add image',
|
|
1604
1606
|
});
|
|
1607
|
+
const CANVAS_EMPTY_IMAGE_LABEL_KEY = 'builder.chrome.addImage';
|
|
1608
|
+
const CANVAS_EMPTY_IMAGE_LABEL_EN = BUILDER_CHROME_EN[CANVAS_EMPTY_IMAGE_LABEL_KEY];
|
|
1609
|
+
/**
|
|
1610
|
+
* Marks an element the builder draws on the canvas that the live site never has — drop placeholders,
|
|
1611
|
+
* repeat badges, the empty slider hint. A page thumbnail is a picture of the SITE, so its capture
|
|
1612
|
+
* leaves every marked element out.
|
|
1613
|
+
*/
|
|
1614
|
+
const EDITOR_CHROME_ATTRIBUTE = 'data-iox-chrome';
|
|
1605
1615
|
|
|
1606
1616
|
class ComponentRegistryService {
|
|
1607
1617
|
constructor() {
|
|
@@ -4611,6 +4621,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
4611
4621
|
args: [{ providedIn: 'root' }]
|
|
4612
4622
|
}] });
|
|
4613
4623
|
|
|
4624
|
+
/** The input a component declares to receive its empty-image placeholder (the Image). */
|
|
4625
|
+
const EMPTY_SRC_INPUT = 'emptySrc';
|
|
4626
|
+
/** The editing canvas's "Add image" label, through the host's i18n. */
|
|
4627
|
+
function canvasEmptyImageLabel(labels) {
|
|
4628
|
+
return labels(CANVAS_EMPTY_IMAGE_LABEL_KEY, CANVAS_EMPTY_IMAGE_LABEL_EN);
|
|
4629
|
+
}
|
|
4630
|
+
/**
|
|
4631
|
+
* Push a node's empty-image placeholder (design-system DS3) to its rendered component — a no-op for
|
|
4632
|
+
* a component that declares no `emptySrc`. The placeholder depends on the MARKER only, never on the
|
|
4633
|
+
* source, so it is set once at render and again whenever the node's element style changes.
|
|
4634
|
+
*/
|
|
4635
|
+
function syncEmptyImagePlaceholder(ref, node, emptyLabel) {
|
|
4636
|
+
if (!ref || !declaredInputNames(ref.componentType).has(EMPTY_SRC_INPUT))
|
|
4637
|
+
return;
|
|
4638
|
+
ref.setInput(EMPTY_SRC_INPUT, emptyImagePlaceholder(node, emptyLabel));
|
|
4639
|
+
}
|
|
4640
|
+
/**
|
|
4641
|
+
* Everything a node's element style / colour scheme decides on its rendered host, in ONE call: the
|
|
4642
|
+
* design classes (marker + scheme) and the empty-image placeholder. Every place that switches or
|
|
4643
|
+
* resets a node's style on the canvas calls this, so an adopted Image gains its placeholder at once
|
|
4644
|
+
* instead of after a reload (DS3 D2).
|
|
4645
|
+
*/
|
|
4646
|
+
function syncNodeDesign(ref, node, emptyLabel) {
|
|
4647
|
+
syncNodeDesignClasses(ref?.location?.nativeElement ?? null, node);
|
|
4648
|
+
syncEmptyImagePlaceholder(ref, node, emptyLabel);
|
|
4649
|
+
}
|
|
4650
|
+
|
|
4614
4651
|
// Module-level counter — unique drop-list ID per Section instance across the whole app session.
|
|
4615
4652
|
let dropListCounter = 0;
|
|
4616
4653
|
/**
|
|
@@ -4823,14 +4860,11 @@ class RenderDirective {
|
|
|
4823
4860
|
// safeSetInput for every component that does not declare it.
|
|
4824
4861
|
if (node.responsive)
|
|
4825
4862
|
safeSetInput(componentRef, 'responsive', node.responsive);
|
|
4826
|
-
// Empty images (DS3): a MARKED Image
|
|
4827
|
-
// "Add image" label on the editing canvas, the bare blank anywhere else (Preview), which is
|
|
4828
|
-
// what the live site shows. An unmarked Image gets null and renders exactly as before.
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
const label = this.onCanvas ? this.labels('builder.chrome.addImage', 'Add image') : null;
|
|
4832
|
-
safeSetInput(componentRef, 'emptySrc', emptyImageSrc(node, src, label));
|
|
4833
|
-
}
|
|
4863
|
+
// Empty images (DS3): a MARKED Image shows the shared placeholder whenever its source is empty —
|
|
4864
|
+
// the "Add image" label on the editing canvas, the bare blank anywhere else (Preview), which is
|
|
4865
|
+
// what the live site shows. An unmarked Image gets null and renders exactly as before. Set from
|
|
4866
|
+
// the marker alone, so a source cleared later (Bindings) shows it with no re-render.
|
|
4867
|
+
syncEmptyImagePlaceholder(componentRef, node, this.onCanvas ? canvasEmptyImageLabel(this.labels) : null);
|
|
4834
4868
|
// Build initial style map from styleTraits defaults.
|
|
4835
4869
|
const initialStyle = {};
|
|
4836
4870
|
if (node.styleTraits?.length) {
|
|
@@ -7671,7 +7705,7 @@ class SectionComponent {
|
|
|
7671
7705
|
}
|
|
7672
7706
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: SectionComponent, deps: [{ token: i0.ElementRef }, { token: DragEngineService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7673
7707
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: SectionComponent, isStandalone: false, selector: "section[iox-section]", inputs: { children: "children", style: "style", nodeId: "nodeId", dropListId: "dropListId" }, outputs: { childClick: "childClick", childMouseEnter: "childMouseEnter", childMouseLeave: "childMouseLeave" }, host: { properties: { "class": "'section-root iox-node-' + nodeId + (listOrientation === 'horizontal' ? ' is-horizontal' : '')" } }, ngImport: i0, template: `
|
|
7674
|
-
<div *ngIf="!children.length" class="section-placeholder">
|
|
7708
|
+
<div *ngIf="!children.length" class="section-placeholder" data-iox-chrome>
|
|
7675
7709
|
<i class="ph-thin ph-rows"></i>
|
|
7676
7710
|
<span>Drop components here</span>
|
|
7677
7711
|
</div>
|
|
@@ -7689,7 +7723,7 @@ class SectionComponent {
|
|
|
7689
7723
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: SectionComponent, decorators: [{
|
|
7690
7724
|
type: Component,
|
|
7691
7725
|
args: [{ selector: 'section[iox-section]', template: `
|
|
7692
|
-
<div *ngIf="!children.length" class="section-placeholder">
|
|
7726
|
+
<div *ngIf="!children.length" class="section-placeholder" data-iox-chrome>
|
|
7693
7727
|
<i class="ph-thin ph-rows"></i>
|
|
7694
7728
|
<span>Drop components here</span>
|
|
7695
7729
|
</div>
|
|
@@ -7777,7 +7811,7 @@ class BuilderContainerComponent {
|
|
|
7777
7811
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: BuilderContainerComponent, isStandalone: false, selector: "div[iox-container],section[iox-container],article[iox-container],header[iox-container],footer[iox-container],main[iox-container],nav[iox-container],ul[iox-container],ol[iox-container],li[iox-container],form[iox-container]", inputs: { children: "children", style: "style", nodeId: "nodeId", dropListId: "dropListId", htmlTag: "htmlTag", start: "start", reversed: "reversed", formClass: "formClass", formState: "formState" }, outputs: { childClick: "childClick", childMouseEnter: "childMouseEnter", childMouseLeave: "childMouseLeave" }, host: { properties: { "class": "'container-root iox-node-' + nodeId + (listOrientation === 'horizontal' ? ' is-horizontal' : '') + (formClass ? ' ' + formClass : '')", "attr.data-iox-state": "formClass === \"iox-form\" ? formState : null", "attr.start": "htmlTag === 'ol' && start !== 1 ? start : null", "attr.reversed": "htmlTag === 'ol' && reversed ? '' : null" } }, ngImport: i0, template: `
|
|
7778
7812
|
<!-- Empty-container slot (B2). pointer-events:none, so a click falls through and SELECTS
|
|
7779
7813
|
this container — and the components panel then inserts INSIDE it. -->
|
|
7780
|
-
<div *ngIf="!children.length" class="container-placeholder">
|
|
7814
|
+
<div *ngIf="!children.length" class="container-placeholder" data-iox-chrome>
|
|
7781
7815
|
<i class="ph-thin ph-plus"></i>
|
|
7782
7816
|
<span>Click to select, then add an element</span>
|
|
7783
7817
|
</div>
|
|
@@ -7800,7 +7834,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
7800
7834
|
args: [{ selector: 'div[iox-container],section[iox-container],article[iox-container],header[iox-container],footer[iox-container],main[iox-container],nav[iox-container],ul[iox-container],ol[iox-container],li[iox-container],form[iox-container]', template: `
|
|
7801
7835
|
<!-- Empty-container slot (B2). pointer-events:none, so a click falls through and SELECTS
|
|
7802
7836
|
this container — and the components panel then inserts INSIDE it. -->
|
|
7803
|
-
<div *ngIf="!children.length" class="container-placeholder">
|
|
7837
|
+
<div *ngIf="!children.length" class="container-placeholder" data-iox-chrome>
|
|
7804
7838
|
<i class="ph-thin ph-plus"></i>
|
|
7805
7839
|
<span>Click to select, then add an element</span>
|
|
7806
7840
|
</div>
|
|
@@ -7884,6 +7918,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
7884
7918
|
type: Output
|
|
7885
7919
|
}] } });
|
|
7886
7920
|
|
|
7921
|
+
/** `click` covers plain and modified clicks; a middle click opens a tab through `auxclick` alone. */
|
|
7922
|
+
const NAVIGATING_CLICKS = ['click', 'auxclick'];
|
|
7887
7923
|
class BuilderLinkedContainerComponent {
|
|
7888
7924
|
constructor(dragEngine, cdr, elRef, isPreview) {
|
|
7889
7925
|
this.dragEngine = dragEngine;
|
|
@@ -7905,12 +7941,14 @@ class BuilderLinkedContainerComponent {
|
|
|
7905
7941
|
}
|
|
7906
7942
|
ngOnInit() {
|
|
7907
7943
|
if (!this.isPreview) {
|
|
7908
|
-
|
|
7944
|
+
for (const type of NAVIGATING_CLICKS)
|
|
7945
|
+
this.elRef.nativeElement.addEventListener(type, this.capturePreventDefault, true);
|
|
7909
7946
|
}
|
|
7910
7947
|
}
|
|
7911
7948
|
ngOnDestroy() {
|
|
7912
7949
|
if (!this.isPreview) {
|
|
7913
|
-
|
|
7950
|
+
for (const type of NAVIGATING_CLICKS)
|
|
7951
|
+
this.elRef.nativeElement.removeEventListener(type, this.capturePreventDefault, true);
|
|
7914
7952
|
}
|
|
7915
7953
|
}
|
|
7916
7954
|
get resolvedHref() {
|
|
@@ -7941,7 +7979,7 @@ class BuilderLinkedContainerComponent {
|
|
|
7941
7979
|
[ioxDropzoneData]="children"
|
|
7942
7980
|
(ioxDrop)="onDrop($event)">
|
|
7943
7981
|
|
|
7944
|
-
<div *ngIf="!children.length" class="linked-container-placeholder">
|
|
7982
|
+
<div *ngIf="!children.length" class="linked-container-placeholder" data-iox-chrome>
|
|
7945
7983
|
<i class="ph-thin ph-link"></i>
|
|
7946
7984
|
<span>Drop components here</span>
|
|
7947
7985
|
</div>
|
|
@@ -7970,7 +8008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
7970
8008
|
[ioxDropzoneData]="children"
|
|
7971
8009
|
(ioxDrop)="onDrop($event)">
|
|
7972
8010
|
|
|
7973
|
-
<div *ngIf="!children.length" class="linked-container-placeholder">
|
|
8011
|
+
<div *ngIf="!children.length" class="linked-container-placeholder" data-iox-chrome>
|
|
7974
8012
|
<i class="ph-thin ph-link"></i>
|
|
7975
8013
|
<span>Drop components here</span>
|
|
7976
8014
|
</div>
|
|
@@ -8370,7 +8408,7 @@ class BuilderRepeaterComponent {
|
|
|
8370
8408
|
<div class="repeater-wrapper" [class.has-children]="children.length > 0">
|
|
8371
8409
|
|
|
8372
8410
|
<!-- HAS-CHILDREN: badge outside root, absolute over wrapper -->
|
|
8373
|
-
<div *ngIf="children.length > 0" class="repeater-badge">
|
|
8411
|
+
<div *ngIf="children.length > 0" class="repeater-badge" data-iox-chrome>
|
|
8374
8412
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8375
8413
|
</div>
|
|
8376
8414
|
|
|
@@ -8384,10 +8422,10 @@ class BuilderRepeaterComponent {
|
|
|
8384
8422
|
|
|
8385
8423
|
<!-- EMPTY STATE: badge + placeholder inside root -->
|
|
8386
8424
|
<ng-container *ngIf="!children.length">
|
|
8387
|
-
<div class="repeater-badge">
|
|
8425
|
+
<div class="repeater-badge" data-iox-chrome>
|
|
8388
8426
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8389
8427
|
</div>
|
|
8390
|
-
<div class="repeater-placeholder">
|
|
8428
|
+
<div class="repeater-placeholder" data-iox-chrome>
|
|
8391
8429
|
<i class="ph-thin ph-rows"></i>
|
|
8392
8430
|
<span>Drop a component here as the item template</span>
|
|
8393
8431
|
</div>
|
|
@@ -8452,7 +8490,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
8452
8490
|
<div class="repeater-wrapper" [class.has-children]="children.length > 0">
|
|
8453
8491
|
|
|
8454
8492
|
<!-- HAS-CHILDREN: badge outside root, absolute over wrapper -->
|
|
8455
|
-
<div *ngIf="children.length > 0" class="repeater-badge">
|
|
8493
|
+
<div *ngIf="children.length > 0" class="repeater-badge" data-iox-chrome>
|
|
8456
8494
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8457
8495
|
</div>
|
|
8458
8496
|
|
|
@@ -8466,10 +8504,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
8466
8504
|
|
|
8467
8505
|
<!-- EMPTY STATE: badge + placeholder inside root -->
|
|
8468
8506
|
<ng-container *ngIf="!children.length">
|
|
8469
|
-
<div class="repeater-badge">
|
|
8507
|
+
<div class="repeater-badge" data-iox-chrome>
|
|
8470
8508
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8471
8509
|
</div>
|
|
8472
|
-
<div class="repeater-placeholder">
|
|
8510
|
+
<div class="repeater-placeholder" data-iox-chrome>
|
|
8473
8511
|
<i class="ph-thin ph-rows"></i>
|
|
8474
8512
|
<span>Drop a component here as the item template</span>
|
|
8475
8513
|
</div>
|
|
@@ -8575,7 +8613,7 @@ class BuilderButtonBlockComponent {
|
|
|
8575
8613
|
}
|
|
8576
8614
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderButtonBlockComponent, deps: [{ token: i0.ElementRef }, { token: DragEngineService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8577
8615
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: BuilderButtonBlockComponent, isStandalone: false, selector: "button[iox-button-block],a[iox-button-block]", inputs: { children: "children", style: "style", tag: "tag", href: "href", target: "target", type: "type", nodeId: "nodeId", dropListId: "dropListId" }, outputs: { childClick: "childClick", childMouseEnter: "childMouseEnter", childMouseLeave: "childMouseLeave" }, host: { properties: { "class": "'button-block-root iox-node-' + nodeId", "attr.href": "tag === 'a' ? (href || null) : null", "attr.target": "tag === 'a' ? (target || null) : null", "attr.type": "tag === 'a' ? null : type" } }, ngImport: i0, template: `
|
|
8578
|
-
<span *ngIf="!children.length" class="button-block-placeholder">Button</span>
|
|
8616
|
+
<span *ngIf="!children.length" class="button-block-placeholder" data-iox-chrome>Button</span>
|
|
8579
8617
|
|
|
8580
8618
|
<!-- WRAPPER COLLAPSE (task 9c): render children directly into the host; iox-outer + drag land
|
|
8581
8619
|
on each child's host (via ioxDragSourceId), matching the SSR engine. -->
|
|
@@ -8591,7 +8629,7 @@ class BuilderButtonBlockComponent {
|
|
|
8591
8629
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderButtonBlockComponent, decorators: [{
|
|
8592
8630
|
type: Component,
|
|
8593
8631
|
args: [{ selector: 'button[iox-button-block],a[iox-button-block]', template: `
|
|
8594
|
-
<span *ngIf="!children.length" class="button-block-placeholder">Button</span>
|
|
8632
|
+
<span *ngIf="!children.length" class="button-block-placeholder" data-iox-chrome>Button</span>
|
|
8595
8633
|
|
|
8596
8634
|
<!-- WRAPPER COLLAPSE (task 9c): render children directly into the host; iox-outer + drag land
|
|
8597
8635
|
on each child's host (via ioxDragSourceId), matching the SSR engine. -->
|
|
@@ -8742,7 +8780,7 @@ class BuilderDialogComponent {
|
|
|
8742
8780
|
<i class="ph-thin ph-x"></i>
|
|
8743
8781
|
</button>
|
|
8744
8782
|
|
|
8745
|
-
<div *ngIf="!children.length" class="dialog-placeholder">
|
|
8783
|
+
<div *ngIf="!children.length" class="dialog-placeholder" data-iox-chrome>
|
|
8746
8784
|
<i class="ph-thin ph-browser"></i>
|
|
8747
8785
|
<span>Drop components here</span>
|
|
8748
8786
|
</div>
|
|
@@ -8778,7 +8816,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
8778
8816
|
<i class="ph-thin ph-x"></i>
|
|
8779
8817
|
</button>
|
|
8780
8818
|
|
|
8781
|
-
<div *ngIf="!children.length" class="dialog-placeholder">
|
|
8819
|
+
<div *ngIf="!children.length" class="dialog-placeholder" data-iox-chrome>
|
|
8782
8820
|
<i class="ph-thin ph-browser"></i>
|
|
8783
8821
|
<span>Drop components here</span>
|
|
8784
8822
|
</div>
|
|
@@ -9218,7 +9256,7 @@ class SliderContainerComponent {
|
|
|
9218
9256
|
(ioxDrop)="onDrop($event)">
|
|
9219
9257
|
|
|
9220
9258
|
<!-- Repeat badge: hover-only, anchored top-left of shell -->
|
|
9221
|
-
<div *ngIf="source" class="slider-repeat-badge">
|
|
9259
|
+
<div *ngIf="source" class="slider-repeat-badge" data-iox-chrome>
|
|
9222
9260
|
<i class="ph-thin ph-repeat"></i>
|
|
9223
9261
|
<span>{{ source }}</span>
|
|
9224
9262
|
<span *ngIf="items.length" class="slider-repeat-badge-count">× {{ items.length }}</span>
|
|
@@ -9276,7 +9314,7 @@ class SliderContainerComponent {
|
|
|
9276
9314
|
|
|
9277
9315
|
</div>
|
|
9278
9316
|
|
|
9279
|
-
<div *ngIf="!source && !children.length" class="slider-edit-placeholder">
|
|
9317
|
+
<div *ngIf="!source && !children.length" class="slider-edit-placeholder" data-iox-chrome>
|
|
9280
9318
|
<i class="ph-thin ph-sliders-horizontal"></i>
|
|
9281
9319
|
<span>Click + in toolbar to add a slide</span>
|
|
9282
9320
|
</div>
|
|
@@ -9369,7 +9407,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9369
9407
|
(ioxDrop)="onDrop($event)">
|
|
9370
9408
|
|
|
9371
9409
|
<!-- Repeat badge: hover-only, anchored top-left of shell -->
|
|
9372
|
-
<div *ngIf="source" class="slider-repeat-badge">
|
|
9410
|
+
<div *ngIf="source" class="slider-repeat-badge" data-iox-chrome>
|
|
9373
9411
|
<i class="ph-thin ph-repeat"></i>
|
|
9374
9412
|
<span>{{ source }}</span>
|
|
9375
9413
|
<span *ngIf="items.length" class="slider-repeat-badge-count">× {{ items.length }}</span>
|
|
@@ -9427,7 +9465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9427
9465
|
|
|
9428
9466
|
</div>
|
|
9429
9467
|
|
|
9430
|
-
<div *ngIf="!source && !children.length" class="slider-edit-placeholder">
|
|
9468
|
+
<div *ngIf="!source && !children.length" class="slider-edit-placeholder" data-iox-chrome>
|
|
9431
9469
|
<i class="ph-thin ph-sliders-horizontal"></i>
|
|
9432
9470
|
<span>Click + in toolbar to add a slide</span>
|
|
9433
9471
|
</div>
|
|
@@ -9613,24 +9651,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9613
9651
|
}] } });
|
|
9614
9652
|
|
|
9615
9653
|
class SliderSlideComponent {
|
|
9616
|
-
constructor(dragEngine, cdr
|
|
9654
|
+
constructor(dragEngine, cdr) {
|
|
9617
9655
|
this.dragEngine = dragEngine;
|
|
9618
9656
|
this.cdr = cdr;
|
|
9619
|
-
this.isPreview = isPreview;
|
|
9620
9657
|
this.children = [];
|
|
9621
9658
|
this.nodeId = '';
|
|
9622
9659
|
this.dropListId = '';
|
|
9623
9660
|
this.childClick = new EventEmitter();
|
|
9624
9661
|
this.childMouseEnter = new EventEmitter();
|
|
9625
9662
|
this.childMouseLeave = new EventEmitter();
|
|
9626
|
-
this.isPreview = !!isPreview;
|
|
9627
9663
|
}
|
|
9628
9664
|
ngOnInit() { }
|
|
9629
9665
|
ngOnDestroy() { }
|
|
9630
9666
|
onDrop(event) {
|
|
9631
9667
|
this.dragEngine.handleDrop(this.children, event, this.dropListId, this.cdr);
|
|
9632
9668
|
}
|
|
9633
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: SliderSlideComponent, deps: [{ token: DragEngineService }, { token: i0.ChangeDetectorRef }
|
|
9669
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: SliderSlideComponent, deps: [{ token: DragEngineService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9634
9670
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: SliderSlideComponent, isStandalone: false, selector: "app-slider-slide", inputs: { children: "children", nodeId: "nodeId", dropListId: "dropListId" }, outputs: { childClick: "childClick", childMouseEnter: "childMouseEnter", childMouseLeave: "childMouseLeave" }, ngImport: i0, template: `
|
|
9635
9671
|
<!-- The .swiper-slide wrapper (with the iox-outer-* class) is provided by SliderContainer —
|
|
9636
9672
|
Swiper needs it as a direct child of .swiper-wrapper — and the SLIDE'S size lands there
|
|
@@ -9645,7 +9681,7 @@ class SliderSlideComponent {
|
|
|
9645
9681
|
[ioxDropzoneData]="children"
|
|
9646
9682
|
(ioxDrop)="onDrop($event)">
|
|
9647
9683
|
|
|
9648
|
-
<div *ngIf="!children.length" class="slide-placeholder">
|
|
9684
|
+
<div *ngIf="!children.length" class="slide-placeholder" data-iox-chrome>
|
|
9649
9685
|
<i class="ph-thin ph-image"></i>
|
|
9650
9686
|
<span>Drop components here</span>
|
|
9651
9687
|
</div>
|
|
@@ -9681,7 +9717,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9681
9717
|
[ioxDropzoneData]="children"
|
|
9682
9718
|
(ioxDrop)="onDrop($event)">
|
|
9683
9719
|
|
|
9684
|
-
<div *ngIf="!children.length" class="slide-placeholder">
|
|
9720
|
+
<div *ngIf="!children.length" class="slide-placeholder" data-iox-chrome>
|
|
9685
9721
|
<i class="ph-thin ph-image"></i>
|
|
9686
9722
|
<span>Drop components here</span>
|
|
9687
9723
|
</div>
|
|
@@ -9700,12 +9736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9700
9736
|
</div>
|
|
9701
9737
|
</div>
|
|
9702
9738
|
`, standalone: false, styles: [":where(.slide-edit-block){position:relative;box-sizing:border-box;display:flex;align-items:center;justify-content:center;overflow:hidden;width:100%;background-color:var(--p-surface-300)}.slide-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border:1.5px dashed rgba(100,116,139,.35);border-radius:4px;color:#64748b80;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity .15s}:host:hover .slide-placeholder,:host.iox-drag-over .slide-placeholder{opacity:1}.slide-placeholder i{font-size:22px}\n"] }]
|
|
9703
|
-
}], ctorParameters: () => [{ type: DragEngineService }, { type: i0.ChangeDetectorRef },
|
|
9704
|
-
type: Optional
|
|
9705
|
-
}, {
|
|
9706
|
-
type: Inject,
|
|
9707
|
-
args: [IS_PREVIEW]
|
|
9708
|
-
}] }], propDecorators: { children: [{
|
|
9739
|
+
}], ctorParameters: () => [{ type: DragEngineService }, { type: i0.ChangeDetectorRef }], propDecorators: { children: [{
|
|
9709
9740
|
type: Input
|
|
9710
9741
|
}], nodeId: [{
|
|
9711
9742
|
type: Input
|
|
@@ -11456,5 +11487,5 @@ class BuilderSpacerComponentConfig extends ComponentConfig {
|
|
|
11456
11487
|
* Generated bundle index. Do not edit.
|
|
11457
11488
|
*/
|
|
11458
11489
|
|
|
11459
|
-
export { ACTION_TYPE_OPTIONS, AuditCode, AuditPanelComponent, AuditSeverity, BODY_CRUMB_LABEL, BREAKPOINT_PRESENTATION, BUILDER_CANVAS_CONTAINER, BUILDER_CHROME_EN, BUILDER_FONT_LINK_ATTR, BUILDER_TOKEN_SCOPE_CLASS, BackgroundGroupStyleConfig, BorderGroupStyleConfig, BreadcrumbBarComponent, BuilderButtonBlockComponent, BuilderButtonComponentConfig, BuilderClipboardService, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDataSourceService, BuilderDialogComponent, 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, DialogComponentConfig, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS$1 as EASING_OPTIONS, ESSENTIAL_TRAITS_BY_TYPE, EffectsGroupStyleConfig, FIELD_KIND_PRESETS, FIELD_PARTS, FORM_PRESETS, FORM_TYPE, FieldComponentConfig, FieldGroupComponentConfig, FormComponentConfig, FormErrorComponentConfig, FormStateService, FormSuccessComponentConfig, GalleryConfig, GroupStyleConfig, INTERACTION_STATES, INVERSE_ACTION, IOX_BUILDER_CANVAS, IOX_BUILDER_LABELS, IOX_DATA_SOURCE_ENDPOINTS, IOX_FONT_MANAGER, InteractionEngineService, InteractionPresetRegistryService, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LAYOUT_PRESETS, LayerTreeComponent, LayoutGroupStyleConfig, ListGroupStyleConfig, NodeAction, OverlayComponent, OverlayService, PALETTE_PRESET_DEFS, 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, VALIDATION_STATES, VALIDATION_STATE_CLASS, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, auditNodes, buildConsentPreset, buildFieldKindPreset, buildFlavorSampler, buildFormPreset, buildFullStyleTraits, buildLayoutPreset, buildPalettePreset, buildPresetStyleTraits, canFluidise, collapseColumnsProps, columnCountOf, defaultBuilderLabels, defaultPageSettings, dropTargetLabel, essentialTraitsFor, findNodeLocation, findParentOf, flattenSchemaFields, fluidiseProps, generateNodeId, isHiddenAt, matchesControlSearch, nearestFormNode, nodeAncestorPath, nodeAncestorPathInEither, reorderProps, resolveInsertTarget, resolveTraitControllerType, resolveTraitOptions, setStyleTrait, setTrait, stackChildrenProps, summarise, textNode, visibilityProps, wrapNode };
|
|
11490
|
+
export { ACTION_TYPE_OPTIONS, AuditCode, AuditPanelComponent, AuditSeverity, BODY_CRUMB_LABEL, BREAKPOINT_PRESENTATION, BUILDER_CANVAS_CONTAINER, BUILDER_CHROME_EN, BUILDER_FONT_LINK_ATTR, BUILDER_TOKEN_SCOPE_CLASS, BackgroundGroupStyleConfig, BorderGroupStyleConfig, BreadcrumbBarComponent, BuilderButtonBlockComponent, BuilderButtonComponentConfig, BuilderClipboardService, BuilderComponent, BuilderContainerComponent, BuilderContainerComponentConfig, BuilderDataSourceService, BuilderDialogComponent, BuilderDividerComponentConfig, BuilderHeadingComponentConfig, BuilderHistoryService, BuilderIconComponentConfig, BuilderImageComponentConfig, BuilderLinkComponentConfig, BuilderLinkedContainerComponent, BuilderLinkedContainerConfig, BuilderListComponentConfig, BuilderListItemComponentConfig, BuilderMode, BuilderRepeaterComponent, BuilderSpacerComponentConfig, ButtonBlockComponentConfig, CANVAS_EMPTY_IMAGE_LABEL_EN, CANVAS_EMPTY_IMAGE_LABEL_KEY, CardComponentConfig, ChildLayoutGroupStyleConfig, ComponentConfig, ComponentRegistryService, DEFAULT_ESSENTIAL_TRAITS, DRAG_HANDLE_ATTR, DataSourceRegistryService, DataSourceType, DialogComponentConfig, DimensionsGroupStyleConfig, DragEngineService, EASING_OPTIONS$1 as EASING_OPTIONS, EDITOR_CHROME_ATTRIBUTE, ESSENTIAL_TRAITS_BY_TYPE, EffectsGroupStyleConfig, FIELD_KIND_PRESETS, FIELD_PARTS, FORM_PRESETS, FORM_TYPE, FieldComponentConfig, FieldGroupComponentConfig, FormComponentConfig, FormErrorComponentConfig, FormStateService, FormSuccessComponentConfig, GalleryConfig, GroupStyleConfig, INTERACTION_STATES, INVERSE_ACTION, IOX_BUILDER_CANVAS, IOX_BUILDER_LABELS, IOX_DATA_SOURCE_ENDPOINTS, IOX_FONT_MANAGER, InteractionEngineService, InteractionPresetRegistryService, IoxBuilderModule, IoxDraggableDirective, IoxDropzoneDirective, LAYOUT_PRESETS, LayerTreeComponent, LayoutGroupStyleConfig, ListGroupStyleConfig, NodeAction, OverlayComponent, OverlayService, PALETTE_PRESET_DEFS, 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, VALIDATION_STATES, VALIDATION_STATE_CLASS, ViewportService, ZOOM_OPTIONS, arrayItemSchemaFields, arraySchemaFields, auditNodes, buildConsentPreset, buildFieldKindPreset, buildFlavorSampler, buildFormPreset, buildFullStyleTraits, buildLayoutPreset, buildPalettePreset, buildPresetStyleTraits, canFluidise, canvasEmptyImageLabel, collapseColumnsProps, columnCountOf, defaultBuilderLabels, defaultPageSettings, dropTargetLabel, essentialTraitsFor, findNodeLocation, findParentOf, flattenSchemaFields, fluidiseProps, generateNodeId, isHiddenAt, matchesControlSearch, nearestFormNode, nodeAncestorPath, nodeAncestorPathInEither, reorderProps, resolveInsertTarget, resolveTraitControllerType, resolveTraitOptions, setStyleTrait, setTrait, stackChildrenProps, summarise, syncEmptyImagePlaceholder, syncNodeDesign, textNode, visibilityProps, wrapNode };
|
|
11460
11491
|
//# sourceMappingURL=vectoriox-iox-builder.mjs.map
|