@vectoriox/iox-builder 5.2.0 → 5.3.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.
|
@@ -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,34 @@ 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
|
+
// Panels hold the selected node's ref untyped; anything without a component type has no inputs.
|
|
4637
|
+
if (!ref?.componentType || !declaredInputNames(ref.componentType).has(EMPTY_SRC_INPUT))
|
|
4638
|
+
return;
|
|
4639
|
+
ref.setInput(EMPTY_SRC_INPUT, emptyImagePlaceholder(node, emptyLabel));
|
|
4640
|
+
}
|
|
4641
|
+
/**
|
|
4642
|
+
* Everything a node's element style / colour scheme decides on its rendered host, in ONE call: the
|
|
4643
|
+
* design classes (marker + scheme) and the empty-image placeholder. Every place that switches or
|
|
4644
|
+
* resets a node's style on the canvas calls this, so an adopted Image gains its placeholder at once
|
|
4645
|
+
* instead of after a reload (DS3 D2).
|
|
4646
|
+
*/
|
|
4647
|
+
function syncNodeDesign(ref, node, emptyLabel) {
|
|
4648
|
+
syncNodeDesignClasses(ref?.location?.nativeElement ?? null, node);
|
|
4649
|
+
syncEmptyImagePlaceholder(ref, node, emptyLabel);
|
|
4650
|
+
}
|
|
4651
|
+
|
|
4614
4652
|
// Module-level counter — unique drop-list ID per Section instance across the whole app session.
|
|
4615
4653
|
let dropListCounter = 0;
|
|
4616
4654
|
/**
|
|
@@ -4823,14 +4861,11 @@ class RenderDirective {
|
|
|
4823
4861
|
// safeSetInput for every component that does not declare it.
|
|
4824
4862
|
if (node.responsive)
|
|
4825
4863
|
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
|
-
}
|
|
4864
|
+
// Empty images (DS3): a MARKED Image shows the shared placeholder whenever its source is empty —
|
|
4865
|
+
// the "Add image" label on the editing canvas, the bare blank anywhere else (Preview), which is
|
|
4866
|
+
// what the live site shows. An unmarked Image gets null and renders exactly as before. Set from
|
|
4867
|
+
// the marker alone, so a source cleared later (Bindings) shows it with no re-render.
|
|
4868
|
+
syncEmptyImagePlaceholder(componentRef, node, this.onCanvas ? canvasEmptyImageLabel(this.labels) : null);
|
|
4834
4869
|
// Build initial style map from styleTraits defaults.
|
|
4835
4870
|
const initialStyle = {};
|
|
4836
4871
|
if (node.styleTraits?.length) {
|
|
@@ -7671,7 +7706,7 @@ class SectionComponent {
|
|
|
7671
7706
|
}
|
|
7672
7707
|
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
7708
|
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">
|
|
7709
|
+
<div *ngIf="!children.length" class="section-placeholder" data-iox-chrome>
|
|
7675
7710
|
<i class="ph-thin ph-rows"></i>
|
|
7676
7711
|
<span>Drop components here</span>
|
|
7677
7712
|
</div>
|
|
@@ -7689,7 +7724,7 @@ class SectionComponent {
|
|
|
7689
7724
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: SectionComponent, decorators: [{
|
|
7690
7725
|
type: Component,
|
|
7691
7726
|
args: [{ selector: 'section[iox-section]', template: `
|
|
7692
|
-
<div *ngIf="!children.length" class="section-placeholder">
|
|
7727
|
+
<div *ngIf="!children.length" class="section-placeholder" data-iox-chrome>
|
|
7693
7728
|
<i class="ph-thin ph-rows"></i>
|
|
7694
7729
|
<span>Drop components here</span>
|
|
7695
7730
|
</div>
|
|
@@ -7777,7 +7812,7 @@ class BuilderContainerComponent {
|
|
|
7777
7812
|
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
7813
|
<!-- Empty-container slot (B2). pointer-events:none, so a click falls through and SELECTS
|
|
7779
7814
|
this container — and the components panel then inserts INSIDE it. -->
|
|
7780
|
-
<div *ngIf="!children.length" class="container-placeholder">
|
|
7815
|
+
<div *ngIf="!children.length" class="container-placeholder" data-iox-chrome>
|
|
7781
7816
|
<i class="ph-thin ph-plus"></i>
|
|
7782
7817
|
<span>Click to select, then add an element</span>
|
|
7783
7818
|
</div>
|
|
@@ -7800,7 +7835,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
7800
7835
|
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
7836
|
<!-- Empty-container slot (B2). pointer-events:none, so a click falls through and SELECTS
|
|
7802
7837
|
this container — and the components panel then inserts INSIDE it. -->
|
|
7803
|
-
<div *ngIf="!children.length" class="container-placeholder">
|
|
7838
|
+
<div *ngIf="!children.length" class="container-placeholder" data-iox-chrome>
|
|
7804
7839
|
<i class="ph-thin ph-plus"></i>
|
|
7805
7840
|
<span>Click to select, then add an element</span>
|
|
7806
7841
|
</div>
|
|
@@ -7884,6 +7919,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
7884
7919
|
type: Output
|
|
7885
7920
|
}] } });
|
|
7886
7921
|
|
|
7922
|
+
/** `click` covers plain and modified clicks; a middle click opens a tab through `auxclick` alone. */
|
|
7923
|
+
const NAVIGATING_CLICKS = ['click', 'auxclick'];
|
|
7887
7924
|
class BuilderLinkedContainerComponent {
|
|
7888
7925
|
constructor(dragEngine, cdr, elRef, isPreview) {
|
|
7889
7926
|
this.dragEngine = dragEngine;
|
|
@@ -7905,12 +7942,14 @@ class BuilderLinkedContainerComponent {
|
|
|
7905
7942
|
}
|
|
7906
7943
|
ngOnInit() {
|
|
7907
7944
|
if (!this.isPreview) {
|
|
7908
|
-
|
|
7945
|
+
for (const type of NAVIGATING_CLICKS)
|
|
7946
|
+
this.elRef.nativeElement.addEventListener(type, this.capturePreventDefault, true);
|
|
7909
7947
|
}
|
|
7910
7948
|
}
|
|
7911
7949
|
ngOnDestroy() {
|
|
7912
7950
|
if (!this.isPreview) {
|
|
7913
|
-
|
|
7951
|
+
for (const type of NAVIGATING_CLICKS)
|
|
7952
|
+
this.elRef.nativeElement.removeEventListener(type, this.capturePreventDefault, true);
|
|
7914
7953
|
}
|
|
7915
7954
|
}
|
|
7916
7955
|
get resolvedHref() {
|
|
@@ -7941,7 +7980,7 @@ class BuilderLinkedContainerComponent {
|
|
|
7941
7980
|
[ioxDropzoneData]="children"
|
|
7942
7981
|
(ioxDrop)="onDrop($event)">
|
|
7943
7982
|
|
|
7944
|
-
<div *ngIf="!children.length" class="linked-container-placeholder">
|
|
7983
|
+
<div *ngIf="!children.length" class="linked-container-placeholder" data-iox-chrome>
|
|
7945
7984
|
<i class="ph-thin ph-link"></i>
|
|
7946
7985
|
<span>Drop components here</span>
|
|
7947
7986
|
</div>
|
|
@@ -7970,7 +8009,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
7970
8009
|
[ioxDropzoneData]="children"
|
|
7971
8010
|
(ioxDrop)="onDrop($event)">
|
|
7972
8011
|
|
|
7973
|
-
<div *ngIf="!children.length" class="linked-container-placeholder">
|
|
8012
|
+
<div *ngIf="!children.length" class="linked-container-placeholder" data-iox-chrome>
|
|
7974
8013
|
<i class="ph-thin ph-link"></i>
|
|
7975
8014
|
<span>Drop components here</span>
|
|
7976
8015
|
</div>
|
|
@@ -8370,7 +8409,7 @@ class BuilderRepeaterComponent {
|
|
|
8370
8409
|
<div class="repeater-wrapper" [class.has-children]="children.length > 0">
|
|
8371
8410
|
|
|
8372
8411
|
<!-- HAS-CHILDREN: badge outside root, absolute over wrapper -->
|
|
8373
|
-
<div *ngIf="children.length > 0" class="repeater-badge">
|
|
8412
|
+
<div *ngIf="children.length > 0" class="repeater-badge" data-iox-chrome>
|
|
8374
8413
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8375
8414
|
</div>
|
|
8376
8415
|
|
|
@@ -8384,10 +8423,10 @@ class BuilderRepeaterComponent {
|
|
|
8384
8423
|
|
|
8385
8424
|
<!-- EMPTY STATE: badge + placeholder inside root -->
|
|
8386
8425
|
<ng-container *ngIf="!children.length">
|
|
8387
|
-
<div class="repeater-badge">
|
|
8426
|
+
<div class="repeater-badge" data-iox-chrome>
|
|
8388
8427
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8389
8428
|
</div>
|
|
8390
|
-
<div class="repeater-placeholder">
|
|
8429
|
+
<div class="repeater-placeholder" data-iox-chrome>
|
|
8391
8430
|
<i class="ph-thin ph-rows"></i>
|
|
8392
8431
|
<span>Drop a component here as the item template</span>
|
|
8393
8432
|
</div>
|
|
@@ -8452,7 +8491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
8452
8491
|
<div class="repeater-wrapper" [class.has-children]="children.length > 0">
|
|
8453
8492
|
|
|
8454
8493
|
<!-- HAS-CHILDREN: badge outside root, absolute over wrapper -->
|
|
8455
|
-
<div *ngIf="children.length > 0" class="repeater-badge">
|
|
8494
|
+
<div *ngIf="children.length > 0" class="repeater-badge" data-iox-chrome>
|
|
8456
8495
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8457
8496
|
</div>
|
|
8458
8497
|
|
|
@@ -8466,10 +8505,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
8466
8505
|
|
|
8467
8506
|
<!-- EMPTY STATE: badge + placeholder inside root -->
|
|
8468
8507
|
<ng-container *ngIf="!children.length">
|
|
8469
|
-
<div class="repeater-badge">
|
|
8508
|
+
<div class="repeater-badge" data-iox-chrome>
|
|
8470
8509
|
<ng-container *ngTemplateOutlet="badgeContent"></ng-container>
|
|
8471
8510
|
</div>
|
|
8472
|
-
<div class="repeater-placeholder">
|
|
8511
|
+
<div class="repeater-placeholder" data-iox-chrome>
|
|
8473
8512
|
<i class="ph-thin ph-rows"></i>
|
|
8474
8513
|
<span>Drop a component here as the item template</span>
|
|
8475
8514
|
</div>
|
|
@@ -8575,7 +8614,7 @@ class BuilderButtonBlockComponent {
|
|
|
8575
8614
|
}
|
|
8576
8615
|
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
8616
|
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>
|
|
8617
|
+
<span *ngIf="!children.length" class="button-block-placeholder" data-iox-chrome>Button</span>
|
|
8579
8618
|
|
|
8580
8619
|
<!-- WRAPPER COLLAPSE (task 9c): render children directly into the host; iox-outer + drag land
|
|
8581
8620
|
on each child's host (via ioxDragSourceId), matching the SSR engine. -->
|
|
@@ -8591,7 +8630,7 @@ class BuilderButtonBlockComponent {
|
|
|
8591
8630
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderButtonBlockComponent, decorators: [{
|
|
8592
8631
|
type: Component,
|
|
8593
8632
|
args: [{ selector: 'button[iox-button-block],a[iox-button-block]', template: `
|
|
8594
|
-
<span *ngIf="!children.length" class="button-block-placeholder">Button</span>
|
|
8633
|
+
<span *ngIf="!children.length" class="button-block-placeholder" data-iox-chrome>Button</span>
|
|
8595
8634
|
|
|
8596
8635
|
<!-- WRAPPER COLLAPSE (task 9c): render children directly into the host; iox-outer + drag land
|
|
8597
8636
|
on each child's host (via ioxDragSourceId), matching the SSR engine. -->
|
|
@@ -8742,7 +8781,7 @@ class BuilderDialogComponent {
|
|
|
8742
8781
|
<i class="ph-thin ph-x"></i>
|
|
8743
8782
|
</button>
|
|
8744
8783
|
|
|
8745
|
-
<div *ngIf="!children.length" class="dialog-placeholder">
|
|
8784
|
+
<div *ngIf="!children.length" class="dialog-placeholder" data-iox-chrome>
|
|
8746
8785
|
<i class="ph-thin ph-browser"></i>
|
|
8747
8786
|
<span>Drop components here</span>
|
|
8748
8787
|
</div>
|
|
@@ -8778,7 +8817,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
8778
8817
|
<i class="ph-thin ph-x"></i>
|
|
8779
8818
|
</button>
|
|
8780
8819
|
|
|
8781
|
-
<div *ngIf="!children.length" class="dialog-placeholder">
|
|
8820
|
+
<div *ngIf="!children.length" class="dialog-placeholder" data-iox-chrome>
|
|
8782
8821
|
<i class="ph-thin ph-browser"></i>
|
|
8783
8822
|
<span>Drop components here</span>
|
|
8784
8823
|
</div>
|
|
@@ -9218,7 +9257,7 @@ class SliderContainerComponent {
|
|
|
9218
9257
|
(ioxDrop)="onDrop($event)">
|
|
9219
9258
|
|
|
9220
9259
|
<!-- Repeat badge: hover-only, anchored top-left of shell -->
|
|
9221
|
-
<div *ngIf="source" class="slider-repeat-badge">
|
|
9260
|
+
<div *ngIf="source" class="slider-repeat-badge" data-iox-chrome>
|
|
9222
9261
|
<i class="ph-thin ph-repeat"></i>
|
|
9223
9262
|
<span>{{ source }}</span>
|
|
9224
9263
|
<span *ngIf="items.length" class="slider-repeat-badge-count">× {{ items.length }}</span>
|
|
@@ -9276,7 +9315,7 @@ class SliderContainerComponent {
|
|
|
9276
9315
|
|
|
9277
9316
|
</div>
|
|
9278
9317
|
|
|
9279
|
-
<div *ngIf="!source && !children.length" class="slider-edit-placeholder">
|
|
9318
|
+
<div *ngIf="!source && !children.length" class="slider-edit-placeholder" data-iox-chrome>
|
|
9280
9319
|
<i class="ph-thin ph-sliders-horizontal"></i>
|
|
9281
9320
|
<span>Click + in toolbar to add a slide</span>
|
|
9282
9321
|
</div>
|
|
@@ -9369,7 +9408,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9369
9408
|
(ioxDrop)="onDrop($event)">
|
|
9370
9409
|
|
|
9371
9410
|
<!-- Repeat badge: hover-only, anchored top-left of shell -->
|
|
9372
|
-
<div *ngIf="source" class="slider-repeat-badge">
|
|
9411
|
+
<div *ngIf="source" class="slider-repeat-badge" data-iox-chrome>
|
|
9373
9412
|
<i class="ph-thin ph-repeat"></i>
|
|
9374
9413
|
<span>{{ source }}</span>
|
|
9375
9414
|
<span *ngIf="items.length" class="slider-repeat-badge-count">× {{ items.length }}</span>
|
|
@@ -9427,7 +9466,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9427
9466
|
|
|
9428
9467
|
</div>
|
|
9429
9468
|
|
|
9430
|
-
<div *ngIf="!source && !children.length" class="slider-edit-placeholder">
|
|
9469
|
+
<div *ngIf="!source && !children.length" class="slider-edit-placeholder" data-iox-chrome>
|
|
9431
9470
|
<i class="ph-thin ph-sliders-horizontal"></i>
|
|
9432
9471
|
<span>Click + in toolbar to add a slide</span>
|
|
9433
9472
|
</div>
|
|
@@ -9613,24 +9652,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9613
9652
|
}] } });
|
|
9614
9653
|
|
|
9615
9654
|
class SliderSlideComponent {
|
|
9616
|
-
constructor(dragEngine, cdr
|
|
9655
|
+
constructor(dragEngine, cdr) {
|
|
9617
9656
|
this.dragEngine = dragEngine;
|
|
9618
9657
|
this.cdr = cdr;
|
|
9619
|
-
this.isPreview = isPreview;
|
|
9620
9658
|
this.children = [];
|
|
9621
9659
|
this.nodeId = '';
|
|
9622
9660
|
this.dropListId = '';
|
|
9623
9661
|
this.childClick = new EventEmitter();
|
|
9624
9662
|
this.childMouseEnter = new EventEmitter();
|
|
9625
9663
|
this.childMouseLeave = new EventEmitter();
|
|
9626
|
-
this.isPreview = !!isPreview;
|
|
9627
9664
|
}
|
|
9628
9665
|
ngOnInit() { }
|
|
9629
9666
|
ngOnDestroy() { }
|
|
9630
9667
|
onDrop(event) {
|
|
9631
9668
|
this.dragEngine.handleDrop(this.children, event, this.dropListId, this.cdr);
|
|
9632
9669
|
}
|
|
9633
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: SliderSlideComponent, deps: [{ token: DragEngineService }, { token: i0.ChangeDetectorRef }
|
|
9670
|
+
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
9671
|
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
9672
|
<!-- The .swiper-slide wrapper (with the iox-outer-* class) is provided by SliderContainer —
|
|
9636
9673
|
Swiper needs it as a direct child of .swiper-wrapper — and the SLIDE'S size lands there
|
|
@@ -9645,7 +9682,7 @@ class SliderSlideComponent {
|
|
|
9645
9682
|
[ioxDropzoneData]="children"
|
|
9646
9683
|
(ioxDrop)="onDrop($event)">
|
|
9647
9684
|
|
|
9648
|
-
<div *ngIf="!children.length" class="slide-placeholder">
|
|
9685
|
+
<div *ngIf="!children.length" class="slide-placeholder" data-iox-chrome>
|
|
9649
9686
|
<i class="ph-thin ph-image"></i>
|
|
9650
9687
|
<span>Drop components here</span>
|
|
9651
9688
|
</div>
|
|
@@ -9681,7 +9718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9681
9718
|
[ioxDropzoneData]="children"
|
|
9682
9719
|
(ioxDrop)="onDrop($event)">
|
|
9683
9720
|
|
|
9684
|
-
<div *ngIf="!children.length" class="slide-placeholder">
|
|
9721
|
+
<div *ngIf="!children.length" class="slide-placeholder" data-iox-chrome>
|
|
9685
9722
|
<i class="ph-thin ph-image"></i>
|
|
9686
9723
|
<span>Drop components here</span>
|
|
9687
9724
|
</div>
|
|
@@ -9700,12 +9737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
9700
9737
|
</div>
|
|
9701
9738
|
</div>
|
|
9702
9739
|
`, 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: [{
|
|
9740
|
+
}], ctorParameters: () => [{ type: DragEngineService }, { type: i0.ChangeDetectorRef }], propDecorators: { children: [{
|
|
9709
9741
|
type: Input
|
|
9710
9742
|
}], nodeId: [{
|
|
9711
9743
|
type: Input
|
|
@@ -11456,5 +11488,5 @@ class BuilderSpacerComponentConfig extends ComponentConfig {
|
|
|
11456
11488
|
* Generated bundle index. Do not edit.
|
|
11457
11489
|
*/
|
|
11458
11490
|
|
|
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 };
|
|
11491
|
+
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
11492
|
//# sourceMappingURL=vectoriox-iox-builder.mjs.map
|